<?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>103959</bug_id>
          
          <creation_ts>2012-12-03 18:33:45 -0800</creation_ts>
          <short_desc>Coordinated Graphics: Refactor TiledBackingStore code in CoordinatedGraphicsLayer.</short_desc>
          <delta_ts>2012-12-19 09:41:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>104518</dependson>
    
    <dependson>104798</dependson>
    
    <dependson>104880</dependson>
          <blocked>103854</blocked>
    
    <blocked>104990</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>d.nomiyama</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yoon</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>782118</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-03 18:33:45 -0800</bug_when>
    <thetext>CoordinatedGraphicsLayer uses TiledBackingStore and the code is a bit hard to understand.
Several patches will clean up the complexity in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782247</commentid>
    <comment_count>1</comment_count>
      <attachid>177422</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-03 23:09:40 -0800</bug_when>
    <thetext>Created attachment 177422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782251</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-03 23:17:25 -0800</bug_when>
    <thetext>I have run layout tests on WK2 debug and tests various pages. This patch endured all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782257</commentid>
    <comment_count>3</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-03 23:25:56 -0800</bug_when>
    <thetext>This bug physically, not logically, depends on Bug 103843.
If anyone reviews this bug, I can resolve the conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782270</commentid>
    <comment_count>4</comment_count>
      <attachid>177422</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-03 23:37:22 -0800</bug_when>
    <thetext>Comment on attachment 177422
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h:212
&gt; +    bool m_inCoordinateMode : 1;

actually, this flag is only for debugging. But I think it must exist. We can easily break this invariant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782331</commentid>
    <comment_count>5</comment_count>
      <attachid>177422</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-04 00:40:31 -0800</bug_when>
    <thetext>Comment on attachment 177422
Patch

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

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:531
&gt; +    if (!m_hasOwnTimers)
&gt; +        return;

It is a bit hard to understand what this means, maybe we could name it differently

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:-680
&gt; -bool CoordinatedGraphicsLayer::tiledBackingStoreUpdatesAllowed() const

I think this method was pretty much to the point

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:843
&gt; +    setNeedsAdjustVisibleRect();

bad english, no better suggestions right now

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:720
&gt; +                (*it)-&gt;setNeedsAdjustVisibleRect();

setNeedsVisibleRectAdjustment ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782359</commentid>
    <comment_count>6</comment_count>
      <attachid>177422</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-04 01:24:41 -0800</bug_when>
    <thetext>Comment on attachment 177422
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=177422&amp;action=review
Thank you for review!

&gt;&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:531
&gt;&gt; +        return;
&gt; 
&gt; It is a bit hard to understand what this means, maybe we could name it differently

how about m_shouldUseTimersToCommit?

&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:-680
&gt;&gt; -bool CoordinatedGraphicsLayer::tiledBackingStoreUpdatesAllowed() const
&gt; 
&gt; I think this method was pretty much to the point

I think this method is something like hacking.
I think it is more obvious for CoordinatedGraphicsLayer to call methods causing TBS updates when it is possible.
Moreover, we need to block CreateTile and RemoveTile messages as well as UpdateTile message. Currently, we send CreateTile and RemoveTile messages to UI Process at any time regardless of flushing, and it is ok now, but it is vulnerable. (In addition, it is blocker to implement actor model in Bug 103854)
This patch changes that CoordinatedGraphicsLayer calls methods of TBS causing CreateTile, UpdateTile and RemoveTile only during flushing. I think this explicit usage is easier to understand.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:843
&gt;&gt; +    setNeedsAdjustVisibleRect();
&gt; 
&gt; bad english, no better suggestions right now

setNeedsVisibleRectAdjustment is cool. thx for suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782380</commentid>
    <comment_count>7</comment_count>
      <attachid>177449</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-04 01:46:24 -0800</bug_when>
    <thetext>Created attachment 177449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782382</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-04 01:47:12 -0800</bug_when>
    <thetext> 
&gt; &gt; It is a bit hard to understand what this means, maybe we could name it differently
&gt; 
&gt; how about m_shouldUseTimersToCommit?

I think it is better to understand in what cases it needs that and when it doesn&apos;t. That makes the code easier to understand for someone who hasn&apos;t dealt with it before</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782383</commentid>
    <comment_count>9</comment_count>
      <attachid>177422</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-04 01:47:16 -0800</bug_when>
    <thetext>Comment on attachment 177422
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:531
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; It is a bit hard to understand what this means, maybe we could name it differently
&gt; 
&gt; how about m_shouldUseTimersToCommit?

I changed m_allowInternalCommit in next patch. How about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782385</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-04 01:51:26 -0800</bug_when>
    <thetext>
&gt; &gt; how about m_shouldUseTimersToCommit?
&gt; 
&gt; I changed m_allowInternalCommit in next patch. How about?

I don&apos;t think that is more clear

Can you explain me when it is used instead? and when it is not used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782392</commentid>
    <comment_count>11</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-04 02:06:08 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; &gt; how about m_shouldUseTimersToCommit?
&gt; &gt; 
&gt; &gt; I changed m_allowInternalCommit in next patch. How about?
&gt; 
&gt; I don&apos;t think that is more clear
&gt; 
&gt; Can you explain me when it is used instead? and when it is not used?

Yes, my explanation was a bit vague. sorry.

CoordinatedGraphicsLayer does not want TiledBackingStore to use timers, because the timers will fire at any time and then TiledBackingStore causes calling createTile, updateTile and removeTile in CoordinatedGraphicsLayer.

For example, when CoordinatedGraphicsLayer calls TiledBackingStore::invalidate(), invalidate() start one shot of update timer. It causes calling updateTile regardless of CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly.
void TiledBackingStore::invalidate(const IntRect&amp; contentsDirtyRect)
{
    ...
    startTileBufferUpdateTimer();
}

Another example, createTile can start one shot of create tile timer. It causes calling createTile and removeTile regardless of CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly.
void TiledBackingStore::createTiles()
{
    ....
    if (requiredTileCount)
        startBackingStoreUpdateTimer(m_tileCreationDelay);
}

so currently CoordinatedGraphicsLayer::createTile checks where m_coordinator is created. It makes us confused.
void CoordinatedGraphicsLayer::createTile(int tileID, const SurfaceUpdateInfo&amp; updateInfo, const WebCore::IntRect&amp; tileRect)
{
    if (m_coordinator)
        m_coordinator-&gt;createTile(id(), tileID, updateInfo, tileRect);
}

Even, createTile can be sent to UI Process even if the holder layer is not created yet.

m_allowInternalCommit plays a role as preventing TiledBackintStore from using Timer, because CoordinatedGraphicsLayer explicitly handles TiledBackingStore&apos;s all updates.
My bad English produces bad name continuously. Please suggest me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782402</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-04 02:21:38 -0800</bug_when>
    <thetext>ah so that explains it better.

I believe the commit code is due to the tiled backing store support in Qt / WebKit1 which is sync in nature.

This sounds like something that should be fixed in the TiledBackingStore instead, or potentially be removed from the TiledBackingStore and have the user do it instead.

Temporaly maybe we could add a 

class TiledBackingStore {
    // Used when class methods cannot be called asynchronously by client.
    // Changes are committed as soon as all the events in event queue have
    // been processed.
    setCommitOnIdleEventLoop(bool enable)
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782422</commentid>
    <comment_count>13</comment_count>
      <attachid>177449</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-04 02:50:23 -0800</bug_when>
    <thetext>Comment on attachment 177449
Patch

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

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:546
&gt; +    if (!m_allowInternalCommit)
&gt; +        return;

createTiles() currently do the work in more than one step. It first creates all the tiles with the same manhatan distance to the viewport center, then start a timer and do the next distance, etc. This is done so that the user can see the rendered content for the viewport before we start rendering out-of-screen tiles.
By disabling the timer completely this will have the effect of bypassing the next timer and the cover rect will never be completely covered.
Ideally what we want is that tiles get created, that this schedules a layer flush, and that the next tile distance tiles are rendered in a new frame.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:766
&gt; +        m_trajectoryVector = FloatPoint();

Maybe it would be better to set it explicitely on the TiledBackingStore and let coverWithTilesIfNeeded read the member instead of getting it through a parameter. Else please name it something like m_pendingTrajectoryVector to suggest that this is used temporarily.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h:210
&gt; -    bool m_inUpdateMode : 1;
&gt; +    bool m_inCoordinateMode : 1;

Update is much clearer IMO

Please be careful when refactoring this kind of code as it is covered by almost no automated test. I personally don&apos;t see the value of this kind of change if it is going to cause more problems than it fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782433</commentid>
    <comment_count>14</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-04 03:13:10 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Please be careful when refactoring this kind of code as it is covered by almost no automated test. I personally don&apos;t see the value of this kind of change if it is going to cause more problems than it fixes.

Maybe this sounds rude so I&apos;d like to clarify my thoughts. We usually try to do refactoring only when doing so is going to be helpful for another change.

In other words, the behavior of the code is more important than how it looks (though the look is still important).

This has been frustrating since some of this kind of refactoring has been done lately, at the same time that we are trying to get our first WebKit2 release out with Qt 5.0 and I&apos;m worried that some regressions might not have been noticed due to our lack of automated tests in this area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782435</commentid>
    <comment_count>15</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-04 03:17:43 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; ah so that explains it better.
&gt; 
&gt; I believe the commit code is due to the tiled backing store support in Qt / WebKit1 which is sync in nature.
&gt; 
&gt; This sounds like something that should be fixed in the TiledBackingStore instead, or potentially be removed from the TiledBackingStore and have the user do it instead.
&gt; 
&gt; Temporaly maybe we could add a 
&gt; 
&gt; class TiledBackingStore {
&gt;     // Used when class methods cannot be called asynchronously by client.
&gt;     // Changes are committed as soon as all the events in event queue have
&gt;     // been processed.
&gt;     setCommitOnIdleEventLoop(bool enable)
&gt; }

Thank you. I&apos;ll use it :)


(In reply to comment #13)
&gt; (From update of attachment 177449 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177449&amp;action=review

Thank you for review. Your concern is very reasonable.

&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:546
&gt; &gt; +    if (!m_allowInternalCommit)
&gt; &gt; +        return;
&gt; 
&gt; createTiles() currently do the work in more than one step. It first creates all the tiles with the same manhatan distance to the viewport center, then start a timer and do the next distance, etc. This is done so that the user can see the rendered content for the viewport before we start rendering out-of-screen tiles.
&gt; By disabling the timer completely this will have the effect of bypassing the next timer and the cover rect will never be completely covered.
&gt; Ideally what we want is that tiles get created, that this schedules a layer flush, and that the next tile distance tiles are rendered in a new frame.

I did not catch yet. I&apos;ll change that TiledBackingStore::createTile can notify needToCreateMoreTile to client, and then CoordinatedGraphicsLayer schedules flushing one more time. This change can make the next tile distance tiles rendered in a new frame.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:766
&gt; &gt; +        m_trajectoryVector = FloatPoint();
&gt; 
&gt; Maybe it would be better to set it explicitely on the TiledBackingStore and let coverWithTilesIfNeeded read the member instead of getting it through a parameter. Else please name it something like m_pendingTrajectoryVector to suggest that this is used temporarily.

Good suggestion! I&apos;ll put coverWithTilesIfNeeded into TiledBackingStore.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h:210
&gt; &gt; -    bool m_inUpdateMode : 1;
&gt; &gt; +    bool m_inCoordinateMode : 1;
&gt; 
&gt; Update is much clearer IMO
&gt; 
(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Please be careful when refactoring this kind of code as it is covered by almost no automated test. I personally don&apos;t see the value of this kind of change if it is going to cause more problems than it fixes.
&gt; 
&gt; Maybe this sounds rude so I&apos;d like to clarify my thoughts. We usually try to do refactoring only when doing so is going to be helpful for another change.
&gt; 
&gt; In other words, the behavior of the code is more important than how it looks (though the look is still important).
&gt; 
&gt; This has been frustrating since some of this kind of refactoring has been done lately, at the same time that we are trying to get our first WebKit2 release out with Qt 5.0 and I&apos;m worried that some regressions might not have been noticed due to our lack of automated tests in this area.

Very reasonable concern. I&apos;ll test more extensively.

I made this bug not for only readability. This is in preparation for refactoring TextureMapper to work in an actor model (Bug 103854).
You can see more detail in https://bugs.webkit.org/show_bug.cgi?id=103843#c12

I&apos;ll remove GraphicsLayerTextureMapper in WK2, specifically in Coordinated Graphics. Before that, I need LayerTreeCoordinator to pass message to UI Process by the RIGHT order.
This patch is necessary for that. I&apos;ll make the next patch carefully.

When will you close revision for release? I plan huge refactoring. I wish make it after your release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782457</commentid>
    <comment_count>16</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-12-04 03:46:41 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I made this bug not for only readability. This is in preparation for refactoring TextureMapper to work in an actor model (Bug 103854).

I am sorry to ask this naive question, but I still do not understand the real benefit of all that.
As Jocelyn just mentioned before, code readability is important but not the main goal here. Not breaking existing code and keep things running without causing a lot of disruptions are much more important in my opinion.
Unless of course, this is a topic that has been discussed before on the mailing list and a consensus for such deep going changes has been reached. - But maybe i missed that.

&gt; You can see more detail in https://bugs.webkit.org/show_bug.cgi?id=103843#c12

As far as i see, you are listing two benefits. Readability (see above) and avoid potential bugs.
I personally don&apos;t think that avoidance of potential bugs outweighs the risk of introducing a lot of new bugs for several ports by rewriting/refactoring an integral part of our infrastructure.

&gt; 
&gt; I&apos;ll remove GraphicsLayerTextureMapper in WK2, specifically in Coordinated Graphics. Before that, I need LayerTreeCoordinator to pass message to UI Process by the RIGHT order.
&gt; This patch is necessary for that. I&apos;ll make the next patch carefully.
&gt; 
&gt; When will you close revision for release? I plan huge refactoring. I wish make it after your release.

Could you please let us know about such plans in advance and may be discuss that upfront on the mailing list? I am sure that you are planning on making valuable contributions that are very welcome.
But to be able to understand why you are making such changes it would be very helpful to understand the exact need for a change as well as the significance etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782486</commentid>
    <comment_count>17</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-04 05:36:59 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; createTiles() currently do the work in more than one step. It first creates all the tiles with the same manhatan distance to the viewport center, then start a timer and do the next distance, etc. This is done so that the user can see the rendered content for the viewport before we start rendering out-of-screen tiles.
&gt; &gt; By disabling the timer completely this will have the effect of bypassing the next timer and the cover rect will never be completely covered.
&gt; &gt; Ideally what we want is that tiles get created, that this schedules a layer flush, and that the next tile distance tiles are rendered in a new frame.
&gt; 
&gt; I did not catch yet. I&apos;ll change that TiledBackingStore::createTile can notify needToCreateMoreTile to client, and then CoordinatedGraphicsLayer schedules flushing one more time. This change can make the next tile distance tiles rendered in a new frame.

That sounds like a reasonable aproach.

&gt; I made this bug not for only readability. This is in preparation for refactoring TextureMapper to work in an actor model (Bug 103854).
&gt; You can see more detail in https://bugs.webkit.org/show_bug.cgi?id=103843#c12

&gt; &gt; 
&gt; &gt; I&apos;ll remove GraphicsLayerTextureMapper in WK2, specifically in Coordinated Graphics. Before that, I need LayerTreeCoordinator to pass message to UI Process by the RIGHT order.
&gt; &gt; This patch is necessary for that. I&apos;ll make the next patch carefully.
&gt; &gt; 
&gt; &gt; When will you close revision for release? I plan huge refactoring. I wish make it after your release.
&gt; 
&gt; Could you please let us know about such plans in advance and may be discuss that upfront on the mailing list? I am sure that you are planning on making valuable contributions that are very welcome.
&gt; But to be able to understand why you are making such changes it would be very helpful to understand the exact need for a change as well as the significance etc.

I agree with it, this sounds like a nice project but I didn&apos;t hear about it yet, maybe Noam did.
Do you have a prototype already of it working on a branch somewhere? What performance gain were you or think you will be able to achieve? How can I know that this is a good way forward and that it is worth investing the stability of the code we share for your researchs? What is the benefit for the Qt and EFL ports?
I&apos;m asking because there is nothing justifying a &quot;huge refactoring&quot; right now, at least not with the information that I have.

The branch has been created this weekend. We are going to be cherry-picking patches intensively for the next few weeks so if you can hold it until the end of December it would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782548</commentid>
    <comment_count>18</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-04 08:03:34 -0800</bug_when>
    <thetext>&gt; I agree with it, this sounds like a nice project but I didn&apos;t hear about it yet, maybe Noam did.
&gt; Do you have a prototype already of it working on a branch somewhere? What performance gain were you or think you will be able to achieve? How can I know that this is a good way forward and that it is worth investing the stability of the code we share for your researchs? What is the benefit for the Qt and EFL ports?
&gt; I&apos;m asking because there is nothing justifying a &quot;huge refactoring&quot; right now, at least not with the information that I have.

From my understanding there are three benefits for this project:
1. allowing threaded composition in WebKit1
2. sharing more code between the WebKit1 implementation and the WebKit2 implementation
3. Enabling GTK to use coordinated graphics (though, only in a threaded way).

Those to me look like reasonable goals, though not what I&apos;m currently focusing on outside of reviews, plus I saw the research done on company100&apos;s branch and it looked pretty sane, also they have sent an email to webkit-dev and there was not much response/opposition.
I suggested that refactoring TextureMapper+CoordinatedGraphics to act as one unit would make more sense than creating a huge ThreadedCoordinatedGraphics parallel universe.

However of course this is not my personal decision to make and so far I felt like the patches I reviewed took the code forward in other ways regardless of the suggested refactor, which I hope people give more comments about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782561</commentid>
    <comment_count>19</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-04 08:21:49 -0800</bug_when>
    <thetext>(In reply to comment #18)
Thanks, this is the information I wanted, I agree that this sounds like a valuable effort.
I&apos;m not paying so much attention to webkit-dev :)

Sorry for adding noise to this bug report, this is only indirectly related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782977</commentid>
    <comment_count>20</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-04 14:49:20 -0800</bug_when>
    <thetext>Thanks for your valuable feedback!
Thank noam for explanation. And sorry Jocelyn and Zeno for not enough sharing the plan.

I&apos;ll share updated plan in webkit-dev again.

Bug 100341 is Thread Coordinated Graphics meta bug.
Bug 102994 is Thread Coordinated Graphics on Qt WK1 meta bug.

This bug is under Bug 102994.

I have asked noam about this project in #qtwekit IRC. I should share before running.

Before implementing threaded coordinated graphics, I need two kinds of refactoring.

1. Separate LayerTreeCoordinator into LayerTreeHost role and other roles (i.e. GraphicsLayerClient, CoordinatedGraphicsLayerClient, CoordinatedImageBacking::Coordinator, UpdateAtlasClient, GraphicsLayerFactory, WebCustomFilterProgramProxyClient).
Could you suggest good name? LayerTreeCoordinator and CompositingCoordinator? TextureMapperCoordinator? CoordinatedGraphicsCoordinator? 

2. Refactor TextureMapperLayer to work in an actor model. It will remove GraphicsLayerTextureMapper in coordinated graphics.
After refactoring, TextureMapperLayer does not know GraphicsLayerTextureMapper. GraphicsLayerTextureMapper and LayerTreeRender will use TextureMapperLayer in the same way: message passing (actor model)
Also coordinated graphics has only one GraphicsLayer implementaion: CoordinatedGraphicsLayer.
In addition, LayerTreeRenderer does not need control logic to handle layer tree. LayerTreeRenderer will redirect messages from CoordinatedGraphicsLayer to TextureMapperLayer.
For example, LayerTreeRenderer needs to traverse layer tree one more time although LayerTreeCoordinator traverses layer tree earlier in that LayerTreeRenderer::flushLayerChanges() calls GraphicsLayerTextureMapper::flushCompositingState().
After refactoring, above redundant tree traversing is not needed.

This bug prepares for #2.
Before refactor actor model, I need LayerTreeCoordinator to send messages to UI Process by RIGHT order. And I expect some bugs can be fixed, which occur only in WK2 in spite of well in WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783573</commentid>
    <comment_count>21</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-05 02:46:17 -0800</bug_when>
    <thetext>Hi, folks.
https://bugs.webkit.org/show_bug.cgi?id=102994#c1
In above comment, I explained how we will refactor coordinated graphics.
Any comments/concerns are appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784521</commentid>
    <comment_count>22</comment_count>
      <attachid>177915</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-05 20:21:01 -0800</bug_when>
    <thetext>Created attachment 177915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784522</commentid>
    <comment_count>23</comment_count>
      <attachid>177449</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-05 20:22:58 -0800</bug_when>
    <thetext>Comment on attachment 177449
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:546
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; createTiles() currently do the work in more than one step. It first creates all the tiles with the same manhatan distance to the viewport center, then start a timer and do the next distance, etc. This is done so that the user can see the rendered content for the viewport before we start rendering out-of-screen tiles.
&gt;&gt; By disabling the timer completely this will have the effect of bypassing the next timer and the cover rect will never be completely covered.
&gt;&gt; Ideally what we want is that tiles get created, that this schedules a layer flush, and that the next tile distance tiles are rendered in a new frame.
&gt; 
&gt; I did not catch yet. I&apos;ll change that TiledBackingStore::createTile can notify needToCreateMoreTile to client, and then CoordinatedGraphicsLayer schedules flushing one more time. This change can make the next tile distance tiles rendered in a new frame.

Done. I added TiledBackingStoreClient::tiledBackingStoreNeedToCreateNextTiles()

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:766
&gt;&gt;&gt; +        m_trajectoryVector = FloatPoint();
&gt;&gt; 
&gt;&gt; Maybe it would be better to set it explicitely on the TiledBackingStore and let coverWithTilesIfNeeded read the member instead of getting it through a parameter. Else please name it something like m_pendingTrajectoryVector to suggest that this is used temporarily.
&gt; 
&gt; Good suggestion! I&apos;ll put coverWithTilesIfNeeded into TiledBackingStore.

Done. I made TiledBackingStore::setTrajectoryVector.

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h:210
&gt;&gt;&gt; +    bool m_inCoordinateMode : 1;
&gt;&gt; 
&gt;&gt; Update is much clearer IMO
&gt;&gt; 
&gt;&gt; Please be careful when refactoring this kind of code as it is covered by almost no automated test. I personally don&apos;t see the value of this kind of change if it is going to cause more problems than it fixes.
&gt; 
&gt; (In reply to comment #14)

I rollbacked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784527</commentid>
    <comment_count>24</comment_count>
      <attachid>177917</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-05 20:27:45 -0800</bug_when>
    <thetext>Created attachment 177917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784528</commentid>
    <comment_count>25</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-05 20:28:16 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=177917) [details]
&gt; Patch

Rebase to upstream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784739</commentid>
    <comment_count>26</comment_count>
      <attachid>177917</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-06 01:12:00 -0800</bug_when>
    <thetext>Comment on attachment 177917
Patch

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

&gt; Source/WebCore/page/Frame.cpp:824
&gt; +    // Changes are committed by TiledBackingStore
&gt; +    m_tiledBackingStore-&gt;setCommitOnIdleEventLoop(true);

im not sure that needs a comment, anyway, dot at end

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:75
&gt; +    bool geometryUpdated = m_trajectoryVector != m_pendingTrajectoryVector || m_visibleRect != visibleRect || m_rect != rect;

didChange ?

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:333
&gt; +void TiledBackingStore::needToCreateNextTiles()

create next tiles sounds weird to me

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:788
&gt; +        bool forceCreateTiles = m_shouldCreateNextTiles;

forceTileCreation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784809</commentid>
    <comment_count>27</comment_count>
      <attachid>177983</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 03:04:46 -0800</bug_when>
    <thetext>Created attachment 177983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784811</commentid>
    <comment_count>28</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 03:06:58 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 177917 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177917&amp;action=review

Thank you for review!!

&gt; &gt; Source/WebCore/page/Frame.cpp:824
&gt; &gt; +    // Changes are committed by TiledBackingStore
&gt; &gt; +    m_tiledBackingStore-&gt;setCommitOnIdleEventLoop(true);
&gt; 
&gt; im not sure that needs a comment, anyway, dot at end

I think so. I removed redundant comment :)

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:75
&gt; &gt; +    bool geometryUpdated = m_trajectoryVector != m_pendingTrajectoryVector || m_visibleRect != visibleRect || m_rect != rect;
&gt; 
&gt; didChange ?

Done.

&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:333
&gt; &gt; +void TiledBackingStore::needToCreateNextTiles()
&gt; 
&gt; create next tiles sounds weird to me

Changed needToCreateTiles. Also Change all code from [XXX]CreateNextTiles to [XXX]CreateTiles.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:788
&gt; &gt; +        bool forceCreateTiles = m_shouldCreateNextTiles;
&gt; 
&gt; forceTileCreation

Thx!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784854</commentid>
    <comment_count>29</comment_count>
      <attachid>177983</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-06 04:46:33 -0800</bug_when>
    <thetext>Comment on attachment 177983
Patch

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

&gt; Source/WebKit2/ChangeLog:23
&gt; +        In addition, the purpose of CoordinatedGraphicsLayer::m_inUpdateMode is
&gt; +        changed. Currently, we set m_inUpdateMode to true when updating a
&gt; +        backing store. After this patch, we set m_inUpdateMode to true when
&gt; +        sending messages via LayerTreeCoordinator to UI Process.

I guess that explains why you wanted to rename it.
I don&apos;t see where you read that variable, I only see it in assert. What is it used for?
If you are only going to use it in a subsequent patch, then please just remove m_inUpdateMode in this patch and add the new variable once you need it (with a new name if that fits better the new purpose).

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:70
&gt; +void TiledBackingStore::createTilesIfNeeded(bool forceTileCreation)

I think it would be better to keep a flag under &quot;if (requiredTileCount)&quot; in TiledBackingStore::createTiles to know if we need a &quot;next run&quot; and improve encapsulation. The calling code shouldn&apos;t have to worry about this.

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:534
&gt; +    if (!m_commitOnIdleEventLoop)
&gt; +        return;

You could also put an ASSERT(m_commitOnIdleEventLoop); in startTileBufferUpdateTimer and tileBufferUpdateTimerFired.

&gt; Source/WebCore/platform/graphics/TiledBackingStore.h:52
&gt; +    // Used when class methods cannot be called asynchronously by client.
&gt; +    // Changes are committed as soon as all the events in event queue have
&gt; +    // been processed.
&gt; +    void setCommitOnIdleEventLoop(bool enable) { m_commitOnIdleEventLoop = enable; }

I&apos;m still not convinced about that name, what does &quot;commit&quot; mean?
How about something like triggerTileUpdatesAutomatically, or set it reverse with delegateTileUpdatesToClient?
Anyway I guess it doesn&apos;t matter so much, so setCommitOnIdleEventLoop might be fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784855</commentid>
    <comment_count>30</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-06 04:47:43 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; You could also put an ASSERT(m_commitOnIdleEventLoop); in startTileBufferUpdateTimer and tileBufferUpdateTimerFired.

Sorry, I meant backingStoreUpdateTimerFired and tileBufferUpdateTimerFired, not startTileBufferUpdateTimer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785523</commentid>
    <comment_count>31</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 18:33:21 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 177983 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177983&amp;action=review

Thanks for review :)

&gt; &gt; Source/WebKit2/ChangeLog:23
&gt; &gt; +        In addition, the purpose of CoordinatedGraphicsLayer::m_inUpdateMode is
&gt; &gt; +        changed. Currently, we set m_inUpdateMode to true when updating a
&gt; &gt; +        backing store. After this patch, we set m_inUpdateMode to true when
&gt; &gt; +        sending messages via LayerTreeCoordinator to UI Process.
&gt; 
&gt; I guess that explains why you wanted to rename it.
&gt; I don&apos;t see where you read that variable, I only see it in assert. What is it used for?
Yes, only debug purpose now. Is it better to put #ifndef NDEBUG ?
&gt; If you are only going to use it in a subsequent patch, then please just remove m_inUpdateMode in this patch and add the new variable once you need it (with a new name if that fits better the new purpose).
I have no plan to post subsequent patch.
But ASSETION check is very important, because of telling other developers what is invariant. I can not remove ASSETIONs :)

&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:70
&gt; &gt; +void TiledBackingStore::createTilesIfNeeded(bool forceTileCreation)
&gt; 
&gt; I think it would be better to keep a flag under &quot;if (requiredTileCount)&quot; in TiledBackingStore::createTiles to know if we need a &quot;next run&quot; and improve encapsulation. The calling code shouldn&apos;t have to worry about this.

Good suggestion! I&apos;ll do that!

&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:534
&gt; &gt; +    if (!m_commitOnIdleEventLoop)
&gt; &gt; +        return;
&gt; 
&gt; You could also put an ASSERT(m_commitOnIdleEventLoop); in startTileBufferUpdateTimer and tileBufferUpdateTimerFired.

Good suggestion too!

&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.h:52
&gt; &gt; +    // Used when class methods cannot be called asynchronously by client.
&gt; &gt; +    // Changes are committed as soon as all the events in event queue have
&gt; &gt; +    // been processed.
&gt; &gt; +    void setCommitOnIdleEventLoop(bool enable) { m_commitOnIdleEventLoop = enable; }
&gt; 
&gt; I&apos;m still not convinced about that name, what does &quot;commit&quot; mean?
&gt; How about something like triggerTileUpdatesAutomatically, or set it reverse with delegateTileUpdatesToClient?
&gt; Anyway I guess it doesn&apos;t matter so much, so setCommitOnIdleEventLoop might be fine too.

kenneth suggested setCommitOnIdleEventLoop because my naming is bad: shouldUseTimersToCommit
I choose now among three: setCommitOnIdleEventLoop, triggerTileUpdatesAutomatically, delegateTileUpdatesToClient.
triggerTileUpdatesAutomatically is selected :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785602</commentid>
    <comment_count>32</comment_count>
      <attachid>178153</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 21:05:50 -0800</bug_when>
    <thetext>Created attachment 178153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785768</commentid>
    <comment_count>33</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 02:40:01 -0800</bug_when>
    <thetext>
&gt; &gt; I&apos;m still not convinced about that name, what does &quot;commit&quot; mean?
&gt; &gt; How about something like triggerTileUpdatesAutomatically, or set it reverse with delegateTileUpdatesToClient?
&gt; &gt; Anyway I guess it doesn&apos;t matter so much, so setCommitOnIdleEventLoop might be fine too.
&gt; 
&gt; kenneth suggested setCommitOnIdleEventLoop because my naming is bad: shouldUseTimersToCommit
&gt; I choose now among three: setCommitOnIdleEventLoop, triggerTileUpdatesAutomatically, delegateTileUpdatesToClient.
&gt; triggerTileUpdatesAutomatically is selected :)

But then it is not so obvious what it does. It is not just triggering automatically. The idea is that it doesn&apos;t &quot;commit&quot; the changes immediately but first when the event loop is idle. setCommitTileUpdatesOnIdleEventLoop() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786429</commentid>
    <comment_count>34</comment_count>
      <attachid>178337</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 22:21:03 -0800</bug_when>
    <thetext>Created attachment 178337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786430</commentid>
    <comment_count>35</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 22:22:21 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; But then it is not so obvious what it does. It is not just triggering automatically. The idea is that it doesn&apos;t &quot;commit&quot; the changes immediately but first when the event loop is idle. setCommitTileUpdatesOnIdleEventLoop() ?

setCommitTileUpdatesOnIdleEventLoop is good! I reposted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786432</commentid>
    <comment_count>36</comment_count>
      <attachid>178338</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 22:46:03 -0800</bug_when>
    <thetext>Created attachment 178338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786437</commentid>
    <comment_count>37</comment_count>
      <attachid>178340</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 22:59:32 -0800</bug_when>
    <thetext>Created attachment 178340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788148</commentid>
    <comment_count>38</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 01:08:52 -0800</bug_when>
    <thetext>I&apos;m looking forward a folk reviewing this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788153</commentid>
    <comment_count>39</comment_count>
      <attachid>178340</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-11 01:16:09 -0800</bug_when>
    <thetext>Comment on attachment 178340
Patch

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

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:50
&gt; +    , m_needToCreateNextTiles(false)

I dont understand this variable

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:191
&gt; -    coverWithTilesIfNeeded();
&gt; +    createTilesIfNeeded();

why this rename, it doesnt delete tiles anymore?

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:330
&gt; +    m_needToCreateNextTiles = requiredTileCount;

m_pendingTileCreation ?

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:333
&gt; +    if (m_needToCreateNextTiles)
&gt; +        needToCreateTiles();
&gt; +}

it is only called here. Why have the method?

&gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:338
&gt; +        m_client-&gt;tiledBackingStoreNeedToCreateTiles();

pendingTileCreation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788183</commentid>
    <comment_count>40</comment_count>
      <attachid>178749</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 01:43:18 -0800</bug_when>
    <thetext>Created attachment 178749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788190</commentid>
    <comment_count>41</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 01:45:08 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 178340 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178340&amp;action=review

Thank you for review!

&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:50
&gt; &gt; +    , m_needToCreateNextTiles(false)
&gt; 
&gt; I dont understand this variable

It is m_pendingTileCreation now!

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:191
&gt; &gt; -    coverWithTilesIfNeeded();
&gt; &gt; +    createTilesIfNeeded();
&gt; 
&gt; why this rename, it doesnt delete tiles anymore?

rollbacked the name because ti still delete tiles.

&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:330
&gt; &gt; +    m_needToCreateNextTiles = requiredTileCount;
&gt; 
&gt; m_pendingTileCreation ?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:333
&gt; &gt; +    if (m_needToCreateNextTiles)
&gt; &gt; +        needToCreateTiles();
&gt; &gt; +}
&gt; 
&gt; it is only called here. Why have the method?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/TiledBackingStore.cpp:338
&gt; &gt; +        m_client-&gt;tiledBackingStoreNeedToCreateTiles();
&gt; 
&gt; pendingTileCreation?

Renamed tiledBackingStoreHasPendingTileCreation()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788199</commentid>
    <comment_count>42</comment_count>
      <attachid>178749</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-11 01:55:12 -0800</bug_when>
    <thetext>Comment on attachment 178749
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:664
&gt; +        m_shouldAdjustContentsScale = true;

is this really a should? or a m_pendingContentsScaleChange ?

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:774
&gt; +    ASSERT(m_inUpdateMode);

do we want to commit this inUpdateMode debugging? If so we need a better name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788211</commentid>
    <comment_count>43</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 02:04:05 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (From update of attachment 178749 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178749&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:664
&gt; &gt; +        m_shouldAdjustContentsScale = true;
&gt; 
&gt; is this really a should? or a m_pendingContentsScaleChange ?

m_pendingContentsScaleChange is right.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:774
&gt; &gt; +    ASSERT(m_inUpdateMode);
&gt; 
&gt; do we want to commit this inUpdateMode debugging? If so we need a better name

only for debugging. How about m_inUpdateModeForDebugging?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788225</commentid>
    <comment_count>44</comment_count>
      <attachid>178755</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 02:24:16 -0800</bug_when>
    <thetext>Created attachment 178755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788237</commentid>
    <comment_count>45</comment_count>
      <attachid>178755</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-11 02:42:48 -0800</bug_when>
    <thetext>Comment on attachment 178755
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:798
&gt; +    if (m_shouldAdjustVisibleRect) {
&gt; +        m_shouldAdjustVisibleRect = false;

Then this should also be m_pendingVisibleRectChange</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788250</commentid>
    <comment_count>46</comment_count>
      <attachid>178755</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 03:00:59 -0800</bug_when>
    <thetext>Comment on attachment 178755
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:129
&gt; +    , m_shouldAdjustVisibleRect(false)

If we change m_pendingVisibleRectChange, it is confused with existing m_shouldUpdateVisibleRect member.
How about m_pendingVisibleRectChangeOfBackingStore?
If so, we need to change setNeedsVisibleRectAdjustment() also. maybe setNeedsVisibleRectChangeOfBackingStore()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788253</commentid>
    <comment_count>47</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 03:02:05 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (From update of attachment 178755 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178755&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:129
&gt; &gt; +    , m_shouldAdjustVisibleRect(false)
&gt; 
&gt; If we change m_pendingVisibleRectChange, it is confused with existing m_shouldUpdateVisibleRect member.
&gt; How about m_pendingVisibleRectChangeOfBackingStore?
&gt; If so, we need to change setNeedsVisibleRectAdjustment() also. maybe setNeedsVisibleRectChangeOfBackingStore()?

m_pendingContentsScaleChange is not for only backingstore, so we don&apos;t need to change m_pendingContentsScaleChangeOfBackingStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788296</commentid>
    <comment_count>48</comment_count>
      <attachid>178755</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-11 04:03:14 -0800</bug_when>
    <thetext>Comment on attachment 178755
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:118
&gt;      , m_shouldUpdateVisibleRect(true)

Maybe this is more like m_pendingVisibleRectChangeForChildren ?

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:129
&gt;&gt;&gt; +    , m_shouldAdjustVisibleRect(false)
&gt;&gt; 
&gt;&gt; If we change m_pendingVisibleRectChange, it is confused with existing m_shouldUpdateVisibleRect member.
&gt;&gt; How about m_pendingVisibleRectChangeOfBackingStore?
&gt;&gt; If so, we need to change setNeedsVisibleRectAdjustment() also. maybe setNeedsVisibleRectChangeOfBackingStore()?
&gt; 
&gt; m_pendingContentsScaleChange is not for only backingstore, so we don&apos;t need to change m_pendingContentsScaleChangeOfBackingStore.

Both are quite confusing today.

First of all, are the contents scale and visible rect ever used independently? if not we could use m_pendingBackingStoreChange

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:934
&gt;      // The combined transform will be used in tiledBackingStoreVisibleRect.
&gt; -    adjustVisibleRect();
&gt; -    adjustContentsScale();
&gt; +    setNeedsVisibleRectAdjustment();
&gt;  }

This code here is checked for shouldUpdateVisibleContentsRect, maybe we dont need that anymore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789078</commentid>
    <comment_count>49</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 18:12:04 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 178755 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178755&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:118
&gt; &gt;      , m_shouldUpdateVisibleRect(true)
&gt; 
&gt; Maybe this is more like m_pendingVisibleRectChangeForChildren ?

m_shouldUpdateVisibleRect exists not for only children. I think m_shouldUpdateVisibleRect should be remained to match &apos;should&apos; prefix of other members:
    bool m_shouldSyncLayerState: 1;
    bool m_shouldSyncChildren: 1;
    bool m_shouldSyncFilters: 1;
    bool m_shouldSyncImageBacking: 1;
    bool m_shouldSyncAnimations: 1;

&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:129
&gt; &gt;&gt;&gt; +    , m_shouldAdjustVisibleRect(false)
&gt; &gt;&gt; 
&gt; &gt;&gt; If we change m_pendingVisibleRectChange, it is confused with existing m_shouldUpdateVisibleRect member.
&gt; &gt;&gt; How about m_pendingVisibleRectChangeOfBackingStore?
&gt; &gt;&gt; If so, we need to change setNeedsVisibleRectAdjustment() also. maybe setNeedsVisibleRectChangeOfBackingStore()?
&gt; &gt; 
&gt; &gt; m_pendingContentsScaleChange is not for only backingstore, so we don&apos;t need to change m_pendingContentsScaleChangeOfBackingStore.
&gt; 
&gt; Both are quite confusing today.
&gt; 
&gt; First of all, are the contents scale and visible rect ever used independently? if not we could use m_pendingBackingStoreChange

We must use independently. m_pendingContentsScaleChange affects m_previousBackingStore.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:934
&gt; &gt;      // The combined transform will be used in tiledBackingStoreVisibleRect.
&gt; &gt; -    adjustVisibleRect();
&gt; &gt; -    adjustContentsScale();
&gt; &gt; +    setNeedsVisibleRectAdjustment();
&gt; &gt;  }
&gt; 
&gt; This code here is checked for shouldUpdateVisibleContentsRect, maybe we dont need that anymore
We still need. setNeedsVisibleRectAdjustment() set m_shouldAdjustVisibleRect, not m_shouldUpdateVisibleRect.


In conclusion, I&apos;ll change from m_pendingContentsScaleChange and m_shouldAdjustVisibleRect to m_pendingContentsScaleAdjustment and m_pendingVisibleRectAdjustment respectively.
We have used adjustment term to manipulate backing store and both rhymes with &apos;pending&apos; prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789080</commentid>
    <comment_count>50</comment_count>
      <attachid>178939</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-11 18:14:15 -0800</bug_when>
    <thetext>Created attachment 178939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789316</commentid>
    <comment_count>51</comment_count>
      <attachid>178939</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-12 01:17:35 -0800</bug_when>
    <thetext>Comment on attachment 178939
Patch

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

r=me with the change suggested

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:814
&gt; +    TemporaryChange&lt;bool&gt; updateModeProtector(m_isFlushingLayerChanges, true);

just call this protector please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789327</commentid>
    <comment_count>52</comment_count>
      <attachid>178997</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-12 01:35:52 -0800</bug_when>
    <thetext>Created attachment 178997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789328</commentid>
    <comment_count>53</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-12 01:36:30 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; (From update of attachment 178939 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178939&amp;action=review
&gt; 
&gt; r=me with the change suggested
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:814
&gt; &gt; +    TemporaryChange&lt;bool&gt; updateModeProtector(m_isFlushingLayerChanges, true);
&gt; 
&gt; just call this protector please

Oops, I missed. Done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789371</commentid>
    <comment_count>54</comment_count>
      <attachid>178997</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 02:24:52 -0800</bug_when>
    <thetext>Comment on attachment 178997
Patch

Clearing flags on attachment: 178997

Committed r137438: &lt;http://trac.webkit.org/changeset/137438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789372</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 02:25:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789458</commentid>
    <comment_count>56</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-12-12 04:51:29 -0800</bug_when>
    <thetext>This patch is asserting on EFL Debug bots. 400+ new failures.

crash log for WebProcess (pid &lt;unknown&gt;):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: m_isFlushingLayerChanges
STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp(774) : virtual void WebCore::CoordinatedGraphicsLayer::removeTile(uint32_t)
STDERR: 1   0x7ff1f68d87d8 WebCore::CoordinatedGraphicsLayer::removeTile(unsigned int)
STDERR: 2   0x7ff1f68dd00b WebKit::CoordinatedTile::~CoordinatedTile()
STDERR: 3   0x7ff1f68dd05a WebKit::CoordinatedTile::~CoordinatedTile()
STDERR: 4   0x7ff1f68ddb6e WTF::RefCounted&lt;WebCore::Tile&gt;::deref()
STDERR: 5   0x7ff1f2823761 void WTF::derefIfNotNull&lt;WebCore::Tile&gt;(WebCore::Tile*)
STDERR: 6   0x7ff1f2822e6b WTF::RefPtr&lt;WebCore::Tile&gt;::~RefPtr()
STDERR: 7   0x7ff1f28236c6 WTF::KeyValuePair&lt;WebCore::IntPoint, WTF::RefPtr&lt;WebCore::Tile&gt; &gt;::~KeyValuePair()
STDERR: 8   0x7ff1f282368b WTF::HashTable&lt;WebCore::IntPoint, WTF::KeyValuePair&lt;WebCore::IntPoint, WTF::RefPtr&lt;WebCore::Tile&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::IntPoint, WTF::RefPtr&lt;WebCore::Tile&gt; &gt; &gt;, WTF::IntPointHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::IntPoint&gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Tile&gt; &gt; &gt;, WTF::HashTraits&lt;WebCore::IntPoint&gt; &gt;::deallocateTable(WTF::KeyValuePair&lt;WebCore::IntPoint, WTF::RefPtr&lt;WebCore::Tile&gt; &gt;*, int)
STDERR: 9   0x7ff1f2822d72 WTF::HashTable&lt;WebCore::IntPoint, WTF::KeyValuePair&lt;WebCore::IntPoint, WTF::RefPtr&lt;WebCore::Tile&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::IntPoint, WTF::RefPtr&lt;WebCore::Tile&gt; &gt; &gt;, WTF::IntPointHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::IntPoint&gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Tile&gt; &gt; &gt;, WTF::HashTraits&lt;WebCore::IntPoint&gt; &gt;::~HashTable()
STDERR: 10  0x7ff1f2822b74 WTF::HashMap&lt;WebCore::IntPoint, WTF::RefPtr&lt;WebCore::Tile&gt;, WTF::IntPointHash, WTF::HashTraits&lt;WebCore::IntPoint&gt;, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::Tile&gt; &gt; &gt;::~HashMap()
STDERR: 11  0x7ff1f282025c WebCore::TiledBackingStore::~TiledBackingStore()
STDERR: 12  0x7ff1f68db36e void WTF::deleteOwnedPtr&lt;WebCore::TiledBackingStore&gt;(WebCore::TiledBackingStore*)
STDERR: 13  0x7ff1f68dac69 WTF::OwnPtr&lt;WebCore::TiledBackingStore&gt;::~OwnPtr()
STDERR: 14  0x7ff1f68d614e WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer()
STDERR: 15  0x7ff1f68d61c2 WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer()
STDERR: 16  0x7ff1f67baaee void WTF::deleteOwnedPtr&lt;WebCore::GraphicsLayer&gt;(WebCore::GraphicsLayer*)
STDERR: 17  0x7ff1f67b86ef WTF::OwnPtr&lt;WebCore::GraphicsLayer&gt;::~OwnPtr()
STDERR: 18  0x7ff1f68dde79 WebKit::CoordinatedLayerTreeHost::~CoordinatedLayerTreeHost()
STDERR: 19  0x7ff1f68ddf02 WebKit::CoordinatedLayerTreeHost::~CoordinatedLayerTreeHost()
STDERR: 20  0x7ff1f68a44f6 WTF::RefCounted&lt;WebKit::LayerTreeHost&gt;::deref()
STDERR: 21  0x7ff1f68a3e71 void WTF::derefIfNotNull&lt;WebKit::LayerTreeHost&gt;(WebKit::LayerTreeHost*)
STDERR: 22  0x7ff1f68a3b29 WTF::RefPtr&lt;WebKit::LayerTreeHost&gt;::~RefPtr()
STDERR: 23  0x7ff1f68a06fe WebKit::DrawingAreaImpl::~DrawingAreaImpl()
STDERR: 24  0x7ff1f68a0778 WebKit::DrawingAreaImpl::~DrawingAreaImpl()
STDERR: 25  0x7ff1f68c9725 void WTF::deleteOwnedPtr&lt;WebKit::DrawingArea&gt;(WebKit::DrawingArea*)
STDERR: 26  0x7ff1f68ca404 WTF::OwnPtr&lt;WebKit::DrawingArea&gt;::clear()
STDERR: 27  0x7ff1f68c7d88 WTF::OwnPtr&lt;WebKit::DrawingArea&gt;::operator=(std::nullptr_t)
STDERR: 28  0x7ff1f68ba6ac WebKit::WebPage::close()
STDERR: 29  0x7ff1f698ae8b void CoreIPC::callMemberFunction&lt;WebKit::WebPage, void (WebKit::WebPage::*)()&gt;(CoreIPC::Arguments0 const&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)())
STDERR: 30  0x7ff1f698970f void CoreIPC::handleMessage&lt;Messages::WebPage::Close, WebKit::WebPage, void (WebKit::WebPage::*)()&gt;(CoreIPC::MessageDecoder&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)())
STDERR: 31  0x7ff1f6985423 WebKit::WebPage::didReceiveWebPageMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789463</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 04:58:01 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 104798</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789468</commentid>
    <comment_count>58</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 05:06:42 -0800</bug_when>
    <thetext>It caused many crashes on Qt-WK2 pixel tester bot too:
http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Pixel%20Tests%29/r137446%20%28875%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790142</commentid>
    <comment_count>59</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-12 17:56:25 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; It caused many crashes on Qt-WK2 pixel tester bot too:
&gt; http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Pixel%20Tests%29/r137446%20%28875%29/results.html

Thank you for reporting. This crash origins from what period CoordinatedGraphicsLayer can communicate via CoordinatedLayerTreeHost.
CoordinatedGraphicsLayer&apos;s constructing time and destructing time is vulnerable now.
It is related to Bug 104518.

I&apos;ll fix the timing vulnerability and then post this patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790150</commentid>
    <comment_count>60</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-12 18:04:39 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; It caused many crashes on Qt-WK2 pixel tester bot too:
&gt; http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Pixel%20Tests%29/r137446%20%28875%29/results.html

I think qt crash list is not related to this bug. I also tested qt layout test with debug build before posting this patch. And I also encountered many crash like your list.
notoriously,
crash log for WebKitTestRunner (pid 26230):
STDOUT: &lt;empty&gt;
STDERR: &lt;empty&gt;

(In reply to comment #56)
&gt; This patch is asserting on EFL Debug bots. 400+ new failures.
&gt; 
&gt; crash log for WebProcess (pid &lt;unknown&gt;):
&gt; STDOUT: &lt;empty&gt;
&gt; STDERR: ASSERTION FAILED: m_isFlushingLayerChanges
&gt; STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp(774) : virtual void WebCore::CoordinatedGraphicsLayer::removeTile(uint32_t)
&gt; STDERR: 1   0x7ff1f68d87d8 WebCore::CoordinatedGraphicsLayer::removeTile(unsigned int)

But I absolutely created EFL crash. I don&apos;t understand why QT Debug WK2 did not crash like this.

As I mentioned in comment #59, first of all, I remove timing vulnerability in Bug 104518.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790374</commentid>
    <comment_count>61</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-12-13 00:41:51 -0800</bug_when>
    <thetext>(In reply to comment #60)
&gt; (In reply to comment #58)
&gt; &gt; It caused many crashes on Qt-WK2 pixel tester bot too:
&gt; &gt; http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Pixel%20Tests%29/r137446%20%28875%29/results.html
&gt; 
&gt; I think qt crash list is not related to this bug. I also tested qt layout test with debug build before posting this patch. And I also encountered many crash like your list.
&gt; notoriously,
&gt; crash log for WebKitTestRunner (pid 26230):
&gt; STDOUT: &lt;empty&gt;
&gt; STDERR: &lt;empty&gt;
&gt; 
&gt; (In reply to comment #56)
&gt; &gt; This patch is asserting on EFL Debug bots. 400+ new failures.
&gt; &gt; 
&gt; &gt; crash log for WebProcess (pid &lt;unknown&gt;):
&gt; &gt; STDOUT: &lt;empty&gt;
&gt; &gt; STDERR: ASSERTION FAILED: m_isFlushingLayerChanges
&gt; &gt; STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp(774) : virtual void WebCore::CoordinatedGraphicsLayer::removeTile(uint32_t)
&gt; &gt; STDERR: 1   0x7ff1f68d87d8 WebCore::CoordinatedGraphicsLayer::removeTile(unsigned int)
&gt; 
&gt; But I absolutely created EFL crash. I don&apos;t understand why QT Debug WK2 did not crash like this.
&gt; 

AFAIK Qt doesn&apos;t have a WK2 Debug bot. The crashes on the release bot won&apos;t be assertions but likely to be SEGV&apos;s caused by memory corruption.

&gt; As I mentioned in comment #59, first of all, I remove timing vulnerability in Bug 104518.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790378</commentid>
    <comment_count>62</comment_count>
      <attachid>179223</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-13 00:47:08 -0800</bug_when>
    <thetext>Created attachment 179223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790384</commentid>
    <comment_count>63</comment_count>
      <attachid>179223</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-13 00:59:38 -0800</bug_when>
    <thetext>Comment on attachment 179223
Patch

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

I re-post this patch because Bug 104798 rolled out this patch, because this patch caused crash.
I tested many sites and layout test with WK2 EFL Debug.

I missed handling ~CoordinatedGraphicsLayer().

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:777
&gt; +    ASSERT(m_coordinator-&gt;isFlushingLayerChanges() || m_isPurging);

removeTile can be called during purging also. 

Bug 104880 ensures ~CoordinatedGraphicsLayer() or ~CoordinatedLayerTreeHost() calls purgeBackingStores().
It means removeTile can be called only during flushing or purging.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h:222
&gt; +    bool m_isPurging;

We only check m_isPurging instead of m_isFlushingCompositingLayer because CoordinatedLayerTreeHost now checks m_isFlushingCompositingLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790390</commentid>
    <comment_count>64</comment_count>
      <attachid>179223</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 01:05:31 -0800</bug_when>
    <thetext>Comment on attachment 179223
Patch

Rejecting attachment 179223 from commit-queue.

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

Last 500 characters of output:
tedLayerTreeHost.cpp
Hunk #1 succeeded at 614 (offset -4 lines).
Hunk #2 succeeded at 638 (offset -4 lines).
Hunk #3 succeeded at 720 (offset -4 lines).
Hunk #4 succeeded at 760 (offset -4 lines).
patching file Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h
Hunk #1 succeeded at 85 (offset -1 lines).

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

Full output: http://queues.webkit.org/results/15319166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790420</commentid>
    <comment_count>65</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-13 02:01:36 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; (From update of attachment 179223 [details])
&gt; Rejecting attachment 179223 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; tedLayerTreeHost.cpp
&gt; Hunk #1 succeeded at 614 (offset -4 lines).
&gt; Hunk #2 succeeded at 638 (offset -4 lines).
&gt; Hunk #3 succeeded at 720 (offset -4 lines).
&gt; Hunk #4 succeeded at 760 (offset -4 lines).
&gt; patching file Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h
&gt; Hunk #1 succeeded at 85 (offset -1 lines).
&gt; 
&gt; Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Kenneth Ro...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue
&gt; 
&gt; Full output: http://queues.webkit.org/results/15319166

Thank you for review.

This bug depends on Bug 104518 and Bug 104880.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793151</commentid>
    <comment_count>66</comment_count>
      <attachid>179831</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 16:34:43 -0800</bug_when>
    <thetext>Created attachment 179831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793153</commentid>
    <comment_count>67</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 16:37:06 -0800</bug_when>
    <thetext>thx for light speed cq+ :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793232</commentid>
    <comment_count>68</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 18:26:04 -0800</bug_when>
    <thetext>I obsoleted patch because layout test hang up when I rebuilt, although I had tested this patch well.
But I verified this patch does not related to hang up.
So I request cq+ again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793244</commentid>
    <comment_count>69</comment_count>
      <attachid>179831</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 18:39:16 -0800</bug_when>
    <thetext>Comment on attachment 179831
Patch

Clearing flags on attachment: 179831

Committed r137968: &lt;http://trac.webkit.org/changeset/137968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793246</commentid>
    <comment_count>70</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 18:39:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177422</attachid>
            <date>2012-12-03 23:09:40 -0800</date>
            <delta_ts>2012-12-04 01:47:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121204160644.patch</filename>
            <type>text/plain</type>
            <size>20741</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNlNzJmNGIzNzYwYTlj
MGZkNjUwZGQxNWI0Yjc2M2ViYTkwYjk2MC4uMWFhYTk1MWRhMTdkOTRlMDYzNWFmYTAwY2E2NjY3
ZWFhNWVlYWQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEyLTAzICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0SGFzT3duVGltZXJzIHRvIHR1cm4g
b2ZmIHRpbWVycyBvZgorICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBiZWNhdXNlIENvb3JkaW5h
dGVkIEdyYXBoaWNzIGRvbid0IHdhbnQgdGhlIHRpbWVycyB0bworICAgICAgICBmaXJlIGF0IGFu
eSB0aW1lLgorCisgICAgICAgIEluIGFkZGl0aW9uLCByZW1vdmUgVGlsZWRCYWNraW5nU3RvcmVD
bGllbnQ6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKQorICAgICAgICB3aGljaCB3
YXMgaW50cm9kdWNlZCBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgUmVmYWN0
b3JpbmcgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjppc1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkQmFja2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1l
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRIYXNPd25UaW1lcnMpOgorICAg
ICAgICAoVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZUNsaWVu
dCk6CisKIDIwMTItMTItMDIgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgog
CiAgICAgICAgIEltYWdlT3JpZW50YXRpb246OnRyYW5zZm9ybUZyb21EZWZhdWx0KCkgY2FzZSBs
YWJlbHMgc2hvdWxkIGJlIGluIG51bWVyaWNhbCBvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM1YjllMWZl
NjgzYThmODg4YjA5ZjQzZGU1NmU0ZTg4MTBjNWVhMDAuLjcyMmYwOGYzOGM3MTUwM2I2ZmMwZmIx
OTA0NWI3ZDQyNTQ4OGNjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0xMi0w
MyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBD
b29yZGluYXRlZCBHcmFwaGljczogUmVmYWN0b3IgVGlsZWRCYWNraW5nU3RvcmUgY29kZSBpbiBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDdXJyZW50bHksIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBoYXMg
Y29tcGxleCBjb2RlIHJlbGF0ZWQgdG8gVGlsZWRCYWNraW5nU3RvcmUuCisgICAgICAgIEl0IGhh
cyB0d28gcHJvYmxlbS4KKyAgICAgICAgMS4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhY2tz
IFRpbGVkQmFja2luZ1N0b3JlIHRvIHByZXZlbnQgdGltZXJzIG9mCisgICAgICAgIFRpbGVkQmFj
a2luZ1N0b3JlIGZyb20gc2VuZGluZyBVcGRhdGVUaWxlIG1lc3NhZ2UgdG8gVUkgUHJvY2VzcyBh
dCBhbnkgdGltZS4KKyAgICAgICAgMi4gQ3JlYXRlVGlsZSBhbmQgUmVtb3ZlVGlsZSBtZXNzYWdl
IGNhbiBiZSBzZW50IHRvIFVJIFByb2Nlc3MgYXQgYW55IHRpbWUuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlIFRpbGVkQmFja2luZ1N0b3Jl
IG1vcmUgZXhwbGljaXRseS4KKyAgICAgICAgMS4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHR1
cm5zIG9mZiB0aW1lcnMgb2YgVGlsZWRCYWNraW5nU3RvcmUuCisgICAgICAgIDIuIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllciBjYWxscyBtZXRob2RzIG9mIFRpbGVkQmFja2luZ1N0b3JlIG9ubHkg
ZHVyaW5nCisgICAgICAgIGZsdXNoaW5nIGxheWVyIHN0YXRlcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJl
Y3RUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnB1cmdlQmFj
a2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldE5lZWRzQWRqdXN0VmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgor
ICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVHcmFwaGljc0xheWVy
KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVDb250
ZW50c1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisKIDIwMTItMTItMDIgIEh1YW5nIERvbmdzdW5n
ICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3M6IFJlb3JkZXIgbWVzc2FnZXMgdG8gTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IDlhMzdhOTZmYWIyZWI2N2EyNTE3MzVlZjlkZWMwZmE4ZjhiNGYyYTguLjIzNzU1
OWE2N2RlMWEzN2FjMTliZjM4YWIyYzA3YjQzN2ZlMmQ0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAgVGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHIKICAgICAsIG1fY292ZXJBcmVhTXVs
dGlwbGllcigyLjBmKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKICAgICAsIG1fcGVuZGlu
Z1NjYWxlKDApCisgICAgLCBtX2hhc093blRpbWVycyh0cnVlKQogICAgICwgbV9jb250ZW50c0Zy
b3plbihmYWxzZSkKICAgICAsIG1fc3VwcG9ydHNBbHBoYShmYWxzZSkKIHsKQEAgLTEwOCw3ICsx
MDksNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzRGlydHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxl
QnVmZmVycygpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVz
QWxsb3dlZCgpIHx8IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1fY29udGVudHNGcm96ZW4p
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50
QmVnaW4oKTsKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVh
dGVUaWxlcygpCiAKICAgICAvLyBSZS1jYWxsIGNyZWF0ZVRpbGVzIG9uIGEgdGltZXIgdG8gY292
ZXIgdGhlIHZpc2libGUgYXJlYSB3aXRoIHRoZSBuZXdlc3Qgc2hvcnRlc3QgZGlzdGFuY2UuCiAg
ICAgaWYgKHJlcXVpcmVkVGlsZUNvdW50KQotICAgICAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRp
bWVyLnN0YXJ0T25lU2hvdChtX3RpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICAgICAgc3RhcnRCYWNr
aW5nU3RvcmVVcGRhdGVUaW1lcihtX3RpbGVDcmVhdGlvbkRlbGF5KTsKIH0KIAogdm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6YWRqdXN0Rm9yQ29udGVudHNSZWN0KEludFJlY3QmIHJlY3QpIGNvbnN0
CkBAIC00MjMsNyArNDI0LDcgQEAgYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNCYWNraW5nU3Rv
cmVVcGRhdGVzU3VzcGVuZGVkKCkgY29uc3QKIAogYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNU
aWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVu
dHNGcm96ZW4gfHwgIW1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCk7
CisgICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW47CiB9CiAKIGJvb2wgVGlsZWRCYWNraW5nU3Rv
cmU6OnJlc2l6ZUVkZ2VUaWxlcygpCkBAIC01MjYsNiArNTI3LDkgQEAgVGlsZTo6Q29vcmRpbmF0
ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnQKIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRl
VGltZXIoKQogeworICAgIGlmICghbV9oYXNPd25UaW1lcnMpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmIChtX3RpbGVCdWZmZXJVcGRhdGVUaW1lci5pc0FjdGl2ZSgpIHx8IGlzVGlsZUJ1ZmZl
clVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdGlsZUJ1ZmZlclVw
ZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUzNiwxMSArNTQwLDE0IEBAIHZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OnRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFj
a2luZ1N0b3JlPiopCiAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBUaWxlZEJh
Y2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpCit2b2lkIFRpbGVkQmFj
a2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSBpbnRlcnZhbCkK
IHsKKyAgICBpZiAoIW1faGFzT3duVGltZXJzKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAo
bV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5pc0FjdGl2ZSgpIHx8IGlzQmFja2luZ1N0b3JlVXBk
YXRlc1N1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9iYWNraW5nU3RvcmVVcGRh
dGVUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5z
dGFydE9uZVNob3QoaW50ZXJ2YWwpOwogfQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpiYWNr
aW5nU3RvcmVVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUu
aAppbmRleCAwODJiZTcwYzhlYjI3NTE3OTBiN2FiODc3NTY5NDliYWM4MWE2ZDI4Li43OTlmM2Q2
YmFlZGE2YTg3MThlODE2MTkxZTNlNmUyNDgwNGY2OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgcHVibGljOgogCiAgICAgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CiAKKyAgICB2b2lkIHNldEhhc093blRpbWVycyhib29sIGIpIHsg
bV9oYXNPd25UaW1lcnMgPSBiOyB9CiAgICAgdm9pZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNv
bnN0IEZsb2F0UG9pbnQmIHBhbm5pbmdUcmFqZWN0b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpKTsK
IAogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0K
QEAgLTgxLDcgKzgyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaWxl
QnVmZmVyVXBkYXRlVGltZXIoKTsKLSAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIoKTsKKyAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlID0gMCk7
CiAKICAgICB2b2lkIHRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2lu
Z1N0b3JlPiopOwogICAgIHZvaWQgYmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxU
aWxlZEJhY2tpbmdTdG9yZT4qKTsKQEAgLTEzMyw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGZs
b2F0IG1fY29udGVudHNTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKIAorICAgIGJv
b2wgbV9oYXNPd25UaW1lcnM7CiAgICAgYm9vbCBtX2NvbnRlbnRzRnJvemVuOwogICAgIGJvb2wg
bV9zdXBwb3J0c0FscGhhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAppbmRleCAwZTAyMTQ3NzczMzBl
MjVmMWZjODQzODcxZjQ1YTVhMDk4ZjljZDFkLi5lYzMwZmQ0NWNhNmE4ZGJiNmIxN2Q1OTczM2U3
M2JmOTA2MGM1MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3Rv
cmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhaW50ZWRBcmVhKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29udGVu
dHNSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2li
bGVSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA3OGY1NGJmNDBhYmM1OWE4MTVi
Y2EyYmQ2ZWUxMWVjODIyYzEzNTEzLi5jNWNkMDk3ZmU3NTA2NWZmNWRjZGM4N2JjY2NkZDA4YTJk
Y2YyNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlR2VvbWV0cnkoKQogCiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGll
bnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKLSAgICAsIG1faW5VcGRhdGVNb2RlKGZh
bHNlKQorICAgICwgbV9pbkNvb3JkaW5hdGVNb2RlKGZhbHNlKQogICAgICwgbV9zaG91bGRVcGRh
dGVWaXNpYmxlUmVjdCh0cnVlKQogICAgICwgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSh0cnVlKQog
ICAgICwgbV9zaG91bGRTeW5jQ2hpbGRyZW4odHJ1ZSkKQEAgLTExOCw2ICsxMTgsOCBAQCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xh
eWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NhbnZhc05lZWRzRGlzcGxheShmYWxzZSkKICAg
ICAsIG1fY2FudmFzTmVlZHNDcmVhdGUoZmFsc2UpCiAgICAgLCBtX2NhbnZhc05lZWRzRGVzdHJv
eShmYWxzZSkKKyAgICAsIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2FsZShmYWxzZSkKKyAgICAs
IG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDAp
CiAgICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
UHRyKDApCkBAIC01ODUsNiArNTg3LDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGlmICghbV9jb29y
ZGluYXRvci0+cmVhZHlUb0Nvb3JkaW5hdGUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNT
RVJUKCFtX2luQ29vcmRpbmF0ZU1vZGUpOworICAgIG1faW5Db29yZGluYXRlTW9kZSA9IHRydWU7
CiAgICAgc3luY0ltYWdlQmFja2luZygpOwogICAgIHN5bmNMYXllclN0YXRlKCk7CiAgICAgc3lu
Y0FuaW1hdGlvbnMoKTsKQEAgLTU5NSw2ICs1OTksNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAjZW5kaWYK
ICAgICB1cGRhdGVDb250ZW50QnVmZmVycygpOwogICAgIHN5bmNDYW52YXMoKTsKKyAgICBtX2lu
Q29vcmRpbmF0ZU1vZGUgPSBmYWxzZTsKIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmltYWdlQmFja2luZ1Zpc2libGUoKQpAQCAtNjI2LDE0ICs2MzEsMTQgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFJvb3RMYXllcihib29sIGlzUm9vdCkKIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlW
ZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBpZiAobV9t
YWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNvdmVyV2l0aFRp
bGVzSWZOZWVkZWQodHJhamVjdG9yeVZlY3Rvcik7CisgICAgc2V0TmVlZHNBZGp1c3RWaXNpYmxl
UmVjdCgpOworICAgIG1fdHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CiB9CiAK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNj
YWxlKQogewogICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwotICAgIGFkanVzdENvbnRlbnRz
U2NhbGUoKTsKKyAgICBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUgPSB0cnVlOwogfQogCiBm
bG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQpA
QCAtNjQzLDkgKzY0OCw3IEBAIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0
aXZlQ29udGVudHNTY2FsZSgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1
c3RDb250ZW50c1NjYWxlKCkKIHsKLSAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkK
LSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSk7
CiAgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUgfHwgbV9tYWluQmFja2luZ1N0b3JlLT5jb250
ZW50c1NjYWxlKCkgPT0gZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTY2Miw2ICs2NjUsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRq
dXN0Q29udGVudHNTY2FsZSgpCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRl
QmFja2luZ1N0b3JlKCkKIHsKICAgICBtX21haW5CYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcg
VGlsZWRCYWNraW5nU3RvcmUodGhpcywgQ29vcmRpbmF0ZWRUaWxlQmFja2VuZDo6Y3JlYXRlKHRo
aXMpKSk7CisgICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRIYXNPd25UaW1lcnMoZmFsc2UpOwog
ICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0U3VwcG9ydHNBbHBoYSghY29udGVudHNPcGFxdWUo
KSk7CiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRDb250ZW50c1NjYWxlKGVmZmVjdGl2ZUNv
bnRlbnRzU2NhbGUoKSk7CiB9CkBAIC02NzcsMTMgKzY4MSw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYKIHsKIH0KIAotYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2lu
Z1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAotewotICAgIGlmICghbV9pblVwZGF0ZU1vZGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jb29yZGluYXRvci0+bGF5ZXJU
cmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCk7Ci19Ci0KIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpCiB7CiAgICAgcmV0dXJuIElu
dFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSk7CkBAIC03MzIsMjAg
KzcyOSwyMyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSQogCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5m
byYgdXBkYXRlSW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZVJlY3QpCiB7Ci0gICAg
aWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVRpbGUoaWQo
KSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNTRVJUKG1faW5Db29yZGlu
YXRlTW9kZSk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3It
PmNyZWF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0
IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkK
IHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+dXBkYXRl
VGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKKyAgICBBU1NFUlQobV9p
bkNvb3JkaW5hdGVNb2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29y
ZGluYXRvci0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsK
IH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUoaW50IHRpbGVJ
RCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+cmVt
b3ZlVGlsZShpZCgpLCB0aWxlSUQpOworICAgIEFTU0VSVChtX2luQ29vcmRpbmF0ZU1vZGUpOwor
ICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT5yZW1vdmVUaWxl
KGlkKCksIHRpbGVJRCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRh
dGVDb250ZW50QnVmZmVycygpCkBAIC03NTYsMTMgKzc1NiwyMyBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOworICAgIGlmIChtX3Nob3VsZEFkanVz
dENvbnRlbnRzU2NhbGUpIHsKKyAgICAgICAgYWRqdXN0Q29udGVudHNTY2FsZSgpOworICAgICAg
ICBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUgPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBU
aGlzIGlzIHRoZSBvbmx5IHBsYWNlIHdlIChyZSljcmVhdGUgdGhlIG1haW4gdGlsZWQgYmFja2lu
ZyBzdG9yZSwgb25jZSB3ZQogICAgIC8vIGhhdmUgYSByZW1vdGUgY2xpZW50IGFuZCB3ZSBhcmUg
cmVhZHkgdG8gc2VuZCBvdXIgZGF0YSB0byB0aGUgVUkgcHJvY2Vzcy4KICAgICBpZiAoIW1fbWFp
bkJhY2tpbmdTdG9yZSkKICAgICAgICAgY3JlYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBpZiAo
bV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCkgeworICAgICAgICBtX21haW5CYWNraW5nU3RvcmUt
PmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQobV90cmFqZWN0b3J5VmVjdG9yKTsKKyAgICAgICAgbV90
cmFqZWN0b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpOworICAgICAgICBtX3Nob3VsZEFkanVzdFZp
c2libGVSZWN0ID0gZmFsc2U7CisgICAgfQorCiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT51cGRh
dGVUaWxlQnVmZmVycygpOwotICAgIG1faW5VcGRhdGVNb2RlID0gZmFsc2U7CiAKICAgICAvLyBU
aGUgcHJldmlvdXMgYmFja2luZyBzdG9yZSBpcyBrZXB0IGFyb3VuZCB0byBhdm9pZCBmbGlja2Vy
aW5nIGJldHdlZW4KICAgICAvLyByZW1vdmluZyB0aGUgZXhpc3RpbmcgdGlsZXMgYW5kIHBhaW50
aW5nIHRoZSBuZXcgb25lcy4gVGhlIGZpcnN0IHRpbWUKQEAgLTc3MywxMiArNzgzLDE0IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogeworICAg
IG1faW5Db29yZGluYXRlTW9kZSA9IHRydWU7CiAgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFy
KCk7CiAgICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwogCiAgICAgcmVsZWFzZUlt
YWdlQmFja2luZ0lmTmVlZGVkKCk7CiAKICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAg
bV9pbkNvb3JkaW5hdGVNb2RlID0gZmFsc2U7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNs
aWVudCogY29vcmRpbmF0b3IpCkBAIC03ODYsMTAgKzc5OCw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllckNsCiAgICAgbV9jb29yZGluYXRvciA9IGNvb3JkaW5hdG9yOwogfQogCi12b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0VmlzaWJsZVJlY3QoKQordm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzQWRqdXN0VmlzaWJsZVJlY3QoKQogewotICAgIGlmICht
X21haW5CYWNraW5nU3RvcmUpCi0gICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRo
VGlsZXNJZk5lZWRlZCgpOworICAgIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QgPSB0cnVlOwog
fQogCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aGFzUGVuZGluZ1Zpc2libGVDaGFu
Z2VzKCkKQEAgLTgyOSw4ICs4NDAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5z
Zm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCk7CiAKICAgICAvLyBU
aGUgY29tYmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZp
c2libGVSZWN0LgotICAgIGFkanVzdFZpc2libGVSZWN0KCk7Ci0gICAgYWRqdXN0Q29udGVudHNT
Y2FsZSgpOworICAgIHNldE5lZWRzQWRqdXN0VmlzaWJsZVJlY3QoKTsKIH0KIAogc3RhdGljIFBh
c3NPd25QdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNWNiMTU5NDkwMjUzN2Q4MGNh
NGY2ODZjZWYxNGE5MzI0NmI4NzJjNy4uOWQ3ZDNmNWNhZThkNWI4ZWJlYmE4Y2M5OThiN2UzYTE2
OWExZjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQpID0gMDsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFn
ZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY0xheWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8
V2ViTGF5ZXJJRD4mKSA9IDA7CkBAIC0xNDgsNyArMTQ3LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFp
bnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIHRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3Qo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxl
UmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklERTsKQEAgLTE2MSw3ICsxNTksNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CisgICAgdm9pZCBz
ZXROZWVkc0FkanVzdFZpc2libGVSZWN0KCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMo
KTsKICAgICBib29sIGhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpOwogCkBAIC0yMTEsNyArMjA5
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYkxheWVySW5mbyBtX2xheWVySW5mbzsKICAg
ICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fbGF5ZXJUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtOwotICAgIGJvb2wgbV9pblVwZGF0
ZU1vZGUgOiAxOworICAgIGJvb2wgbV9pbkNvb3JkaW5hdGVNb2RlIDogMTsKICAgICBib29sIG1f
c2hvdWxkVXBkYXRlVmlzaWJsZVJlY3Q6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNMYXllclN0
YXRlOiAxOwogICAgIGJvb2wgbV9zaG91bGRTeW5jQ2hpbGRyZW46IDE7CkBAIC0yMjIsMTEgKzIy
MCwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW52YXNOZWVkc0Rpc3BsYXkgOiAxOwogICAg
IGJvb2wgbV9jYW52YXNOZWVkc0NyZWF0ZSA6IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzRGVz
dHJveSA6IDE7CisgICAgYm9vbCBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUgOiAxOworICAg
IGJvb2wgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCA6IDE7CiAKICAgICBXZWJLaXQ6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCogbV9jb29yZGluYXRvcjsKICAgICBPd25QdHI8VGls
ZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tpbmdTdG9yZTsKICAgICBPd25QdHI8VGlsZWRCYWNr
aW5nU3RvcmU+IG1fcHJldmlvdXNCYWNraW5nU3RvcmU7CiAgICAgZmxvYXQgbV9jb250ZW50c1Nj
YWxlOworICAgIEZsb2F0UG9pbnQgbV90cmFqZWN0b3J5VmVjdG9yOwogCiAgICAgUmVmUHRyPElt
YWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKICAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmNwcAppbmRleCBhZWFhODlkM2NkNTQyZTM4MmIyZGI0YjJlNTQzMTU5ZmU0
YWQ5NjZmLi5kYThjMGIwOWQxOWVkZTU1MTQxYjJlZGEwYzYxYThhYzg1OWMwZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBA
IC02MzUsNyArNjM1LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBMYXllclRyZWVDb29y
ZGluYXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWUKICAgICBsYXllci0+c2V0
Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CiAg
ICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKLSAgICBsYXllci0+
YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICBsYXllci0+c2V0TmVlZHNBZGp1c3RWaXNpYmxlUmVj
dCgpOwogICAgIHJldHVybiBhZG9wdFB0cihsYXllcik7CiB9CiAKQEAgLTcxNyw3ICs3MTcsNyBA
QCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QsIGZsb2F0IHNjYQogICAgICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGVE
aWRDaGFuZ2UpCiAgICAgICAgICAgICAgICAgKCppdCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUp
OwogICAgICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkKLSAgICAgICAgICAgICAg
ICAoKml0KS0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICAgICAgICAgICAgICAoKml0KS0+c2V0
TmVlZHNBZGp1c3RWaXNpYmxlUmVjdCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03NTMsMTEg
Kzc1Myw2IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbmRlck5leHRGcmFtZSgpCiAg
ICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlkU3dhcEJ1ZmZlcnMoKTsKIH0KIAotYm9vbCBM
YXllclRyZWVDb29yZGluYXRvcjo6bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ0ZvclVJUHJvY2VzczsK
LX0KLQogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsK
ICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1RvZ2dsZShtX2lzUHVyZ2luZywgdHJ1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3Iu
aAppbmRleCA0OWU3OGY5MjA5Y2YzMjZjYmMwZDRkNjA4ZjE4OTdhODI5OTUwOGI2Li40MGJhZmVi
OTkwNTZlYmIxOTY2YTVhYWZkNGU4NDVhYmI5ZTgyOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTg1LDcgKzg1LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwogICAgIHZpcnR1YWwg
dm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKLSAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGls
ZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250
ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVD
b29yZGluYXRvck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177449</attachid>
            <date>2012-12-04 01:46:24 -0800</date>
            <delta_ts>2012-12-05 20:22:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121204184327.patch</filename>
            <type>text/plain</type>
            <size>20654</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdmYmUwYTM4NjllMGM0
NmFmYWYyMzVmZjk4ZmY3YWQ4MTBjMGRlZC4uN2RlY2RlOTdkODEwNjE3NGZiZGFhZjcyZDUzNTAz
ZWJhY2E4OTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEyLTA0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0QWxsb3dJbnRlcm5hbENvbW1pdCB0
byB0dXJuIG9mZiB0aW1lcnMgb2YKKyAgICAgICAgVGlsZWRCYWNraW5nU3RvcmUgYmVjYXVzZSBD
b29yZGluYXRlZCBHcmFwaGljcyBkb24ndCB3YW50IHRoZSB0aW1lcnMgdG8KKyAgICAgICAgZmly
ZSBhdCBhbnkgdGltZS4KKworICAgICAgICBJbiBhZGRpdGlvbiwgcmVtb3ZlIFRpbGVkQmFja2lu
Z1N0b3JlQ2xpZW50Ojp0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkKKyAgICAgICAg
d2hpY2ggd2FzIGludHJvZHVjZWQgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAg
IFJlZmFjdG9yaW5nIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBk
YXRlVGltZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0QWxsb3dJbnRlcm5h
bENvbW1pdCk6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaDoKKyAgICAgICAgKFRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50KToKKwogMjAxMi0xMi0wMyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZs
b3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtSRUdSRVNTSU9OXSBb
U3R5bGVzXSBSdWxlIGRpc2FwcGVhcnMgaWYgZWRpdGVkIHNlbGVjdG9yIGRvZXMgbm90IGFmZmVj
dCBzZWxlY3RlZCBub2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDEwOWM3ZjU3MGI4YzlmZDFjZmI3NDY0MWE1
ZTI1MmJlODBjYjZlZS4uZDg1ZmNkNmNkYmE1YmQ3YzgzMTNjODhlMDY4OTZlOTk1NDc2OGRhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDEyLTEyLTA0ICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNz
OiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
Mzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhcyBjb21wbGV4IGNvZGUgcmVsYXRl
ZCB0byBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAgICAgSXQgaGFzIHR3byBwcm9ibGVtLgorICAg
ICAgICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFja3MgVGlsZWRCYWNraW5nU3RvcmUg
dG8gcHJldmVudCB0aW1lcnMgb2YKKyAgICAgICAgVGlsZWRCYWNraW5nU3RvcmUgZnJvbSBzZW5k
aW5nIFVwZGF0ZVRpbGUgbWVzc2FnZSB0byBVSSBQcm9jZXNzIGF0IGFueSB0aW1lLgorICAgICAg
ICAyLiBDcmVhdGVUaWxlIGFuZCBSZW1vdmVUaWxlIG1lc3NhZ2UgY2FuIGJlIHNlbnQgdG8gVUkg
UHJvY2VzcyBhdCBhbnkgdGltZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllciB1c2UgVGlsZWRCYWNraW5nU3RvcmUgbW9yZSBleHBsaWNpdGx5Lgor
ICAgICAgICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdHVybnMgb2ZmIHRpbWVycyBvZiBU
aWxlZEJhY2tpbmdTdG9yZS4KKyAgICAgICAgMi4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGNh
bGxzIG1ldGhvZHMgb2YgVGlsZWRCYWNraW5nU3RvcmUgb25seSBkdXJpbmcKKyAgICAgICAgZmx1
c2hpbmcgbGF5ZXIgc3RhdGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRq
dXN0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVj
dEFkanVzdG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmg6CisgICAgICAgIChMYXllclRyZWVDb29yZGluYXRvcik6CisKKzIwMTItMTIt
MDQgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAg
Q29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlb3JkZXIgbWVzc2FnZXMgdG8gTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzODQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA5YTM3YTk2ZmFiMmViNjdhMjUxNzM1ZWY5ZGVj
MGZhOGY4YjRmMmE4Li45OGU4YjBhODc0YjMxODY0ZGM2Y2JkMjBiMjkwMWNlODgxM2NhY2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmUuY3BwCkBAIC00NSw2ICs0NSw3IEBAIFRpbGVkQmFja2luZ1N0b3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3duUHRyCiAg
ICAgLCBtX2NvdmVyQXJlYU11bHRpcGxpZXIoMi4wZikKICAgICAsIG1fY29udGVudHNTY2FsZSgx
LmYpCiAgICAgLCBtX3BlbmRpbmdTY2FsZSgwKQorICAgICwgbV9hbGxvd0ludGVybmFsQ29tbWl0
KHRydWUpCiAgICAgLCBtX2NvbnRlbnRzRnJvemVuKGZhbHNlKQogICAgICwgbV9zdXBwb3J0c0Fs
cGhhKGZhbHNlKQogewpAQCAtMTA4LDcgKzEwOSw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OmludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudHNEaXJ0eVJlY3QpCiAKIHZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKIHsKLSAgICBpZiAoIW1fY2xpZW50
LT50aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgfHwgbV9jb250ZW50c0Zyb3plbikK
KyAgICBpZiAobV9jb250ZW50c0Zyb3plbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOwpAQCAtMzM0LDcgKzMzNSw3IEBAIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKIAogICAgIC8vIFJlLWNhbGwgY3Jl
YXRlVGlsZXMgb24gYSB0aW1lciB0byBjb3ZlciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhlIG5l
d2VzdCBzaG9ydGVzdCBkaXN0YW5jZS4KICAgICBpZiAocmVxdWlyZWRUaWxlQ291bnQpCi0gICAg
ICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KG1fdGlsZUNyZWF0aW9u
RGVsYXkpOworICAgICAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKG1fdGlsZUNyZWF0
aW9uRGVsYXkpOwogfQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjphZGp1c3RGb3JDb250ZW50
c1JlY3QoSW50UmVjdCYgcmVjdCkgY29uc3QKQEAgLTQyMyw3ICs0MjQsNyBAQCBib29sIFRpbGVk
QmFja2luZ1N0b3JlOjppc0JhY2tpbmdTdG9yZVVwZGF0ZXNTdXNwZW5kZWQoKSBjb25zdAogCiBi
b29sIFRpbGVkQmFja2luZ1N0b3JlOjppc1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9jb250ZW50c0Zyb3plbiB8fCAhbV9jbGllbnQtPnRpbGVkQmFj
a2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKTsKKyAgICByZXR1cm4gbV9jb250ZW50c0Zyb3plbjsK
IH0KIAogYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRnZVRpbGVzKCkKQEAgLTUyNiw2
ICs1MjcsOSBAQCBUaWxlOjpDb29yZGluYXRlIFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQ29vcmRp
bmF0ZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludAogCiB2b2lkIFRpbGVkQmFja2luZ1N0
b3JlOjpzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcigpCiB7CisgICAgaWYgKCFtX2FsbG93SW50
ZXJuYWxDb21taXQpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3RpbGVCdWZmZXJVcGRh
dGVUaW1lci5pc0FjdGl2ZSgpIHx8IGlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKQEAgLTUzNiwxMSArNTQwLDE0IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVCdWZm
ZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopCiAgICAgdXBkYXRl
VGlsZUJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5n
U3RvcmVVcGRhdGVUaW1lcigpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdT
dG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSBpbnRlcnZhbCkKIHsKKyAgICBpZiAoIW1fYWxsb3dJbnRl
cm5hbENvbW1pdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlVXBk
YXRlVGltZXIuaXNBY3RpdmUoKSB8fCBpc0JhY2tpbmdTdG9yZVVwZGF0ZXNTdXNwZW5kZWQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVT
aG90KDApOworICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KGludGVy
dmFsKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggMDgyYmU3MGM4
ZWIyNzUxNzkwYjdhYjg3NzU2OTQ5YmFjODFhNmQyOC4uM2UxNjQ1MTk3ZWQzY2RmNTU4NDA1NGUy
YjQ5YTRiOTZhZDI0MjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsg
fQogCisgICAgdm9pZCBzZXRBbGxvd0ludGVybmFsQ29tbWl0KGJvb2wgYikgeyBtX2FsbG93SW50
ZXJuYWxDb21taXQgPSBiOyB9CiAgICAgdm9pZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0
IEZsb2F0UG9pbnQmIHBhbm5pbmdUcmFqZWN0b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpKTsKIAog
ICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KQEAg
LTgxLDcgKzgyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaWxlQnVm
ZmVyVXBkYXRlVGltZXIoKTsKLSAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIo
KTsKKyAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlID0gMCk7CiAK
ICAgICB2b2lkIHRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0
b3JlPiopOwogICAgIHZvaWQgYmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxl
ZEJhY2tpbmdTdG9yZT4qKTsKQEAgLTEzMyw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0
IG1fY29udGVudHNTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKIAorICAgIGJvb2wg
bV9hbGxvd0ludGVybmFsQ29tbWl0OwogICAgIGJvb2wgbV9jb250ZW50c0Zyb3plbjsKICAgICBi
b29sIG1fc3VwcG9ydHNBbHBoYTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKaW5kZXggMGUwMjE0Nzc3
MzMwZTI1ZjFmYzg0Mzg3MWY0NWE1YTA5OGY5Y2QxZC4uZWMzMGZkNDVjYTZhOGRiYjZiMTdkNTk3
MzNlNzNiZjkwNjBjNTEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0zMyw3ICszMyw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2lu
Z1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZUNv
bnRlbnRzUmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIENvbG9yIHRpbGVkQmFja2luZ1N0b3JlQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMzk5MDEyNzFiODQ0NmI5
NDI1OWEwMTFmYmE3MWJmYjM0OTU3NDhhNC4uZTIzMDc5NDYzMDc4Yjc5YmY4YWUzODcyYzlkYTA2
Yjk1NmEyNDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmRpZENoYW5nZUdlb21ldHJ5KCkKIAogQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCog
Y2xpZW50KQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCi0gICAgLCBtX2luVXBkYXRlTW9k
ZShmYWxzZSkKKyAgICAsIG1faW5Db29yZGluYXRlTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxk
VXBkYXRlVmlzaWJsZVJlY3QodHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0xheWVyU3RhdGUodHJ1
ZSkKICAgICAsIG1fc2hvdWxkU3luY0NoaWxkcmVuKHRydWUpCkBAIC0xMTgsNiArMTE4LDggQEAg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXkoZmFsc2Up
CiAgICAgLCBtX2NhbnZhc05lZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0Rl
c3Ryb3koZmFsc2UpCisgICAgLCBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUoZmFsc2UpCisg
ICAgLCBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0KGZhbHNlKQogICAgICwgbV9jb29yZGluYXRv
cigwKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0cigwKQpAQCAtNTkyLDYgKzU5NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICNlbmRpZgogICAg
IHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7CiAgICAgc3luY0NhbnZhcygpOworICAgIG1faW5Db29y
ZGluYXRlTW9kZSA9IGZhbHNlOwogfQogCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
aW1hZ2VCYWNraW5nVmlzaWJsZSgpCkBAIC02MjMsMTQgKzYyNiwxNCBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0Um9vdExheWVyKGJvb2wgaXNSb290KQogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rv
cihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIGlmIChtX21haW5C
YWNraW5nU3RvcmUpCi0gICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCh0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0
bWVudCgpOworICAgIG1fdHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CiB9CiAK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNj
YWxlKQogewogICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwotICAgIGFkanVzdENvbnRlbnRz
U2NhbGUoKTsKKyAgICBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUgPSB0cnVlOwogfQogCiBm
bG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQpA
QCAtNjQwLDkgKzY0Myw3IEBAIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0
aXZlQ29udGVudHNTY2FsZSgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1
c3RDb250ZW50c1NjYWxlKCkKIHsKLSAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkK
LSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSk7
CiAgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUgfHwgbV9tYWluQmFja2luZ1N0b3JlLT5jb250
ZW50c1NjYWxlKCkgPT0gZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTY1OSw2ICs2NjAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRq
dXN0Q29udGVudHNTY2FsZSgpCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRl
QmFja2luZ1N0b3JlKCkKIHsKICAgICBtX21haW5CYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcg
VGlsZWRCYWNraW5nU3RvcmUodGhpcywgQ29vcmRpbmF0ZWRUaWxlQmFja2VuZDo6Y3JlYXRlKHRo
aXMpKSk7CisgICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRBbGxvd0ludGVybmFsQ29tbWl0KGZh
bHNlKTsKICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFN1cHBvcnRzQWxwaGEoIWNvbnRlbnRz
T3BhcXVlKCkpOwogICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHNTY2FsZShlZmZl
Y3RpdmVDb250ZW50c1NjYWxlKCkpOwogfQpAQCAtNjc0LDEzICs2NzYsNiBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0
b3I8SW50UmVjdD4mCiB7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxl
ZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1faW5VcGRh
dGVNb2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY29vcmRpbmF0b3It
PmxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpOwotfQotCiBJbnRSZWN0IENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKQogewogICAgIHJl
dHVybiBJbnRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpOwpAQCAt
NzI5LDIwICs3MjQsMjMgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEkKIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVw
ZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQog
ewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVU
aWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VSVChtX2lu
Q29vcmRpbmF0ZU1vZGUpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3Jk
aW5hdG9yLT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOwog
fQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZShpbnQgdGlsZUlE
LCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGls
ZVJlY3QpCiB7Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3It
PnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNT
RVJUKG1faW5Db29yZGluYXRlTW9kZSk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAg
IG1fY29vcmRpbmF0b3ItPnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxl
UmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKGlu
dCB0aWxlSUQpCiB7Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0
b3ItPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKKyAgICBBU1NFUlQobV9pbkNvb3JkaW5hdGVN
b2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGluYXRvci0+cmVt
b3ZlVGlsZShpZCgpLCB0aWxlSUQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQpAQCAtNzUzLDEzICs3NTEsMjMgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1faW5VcGRhdGVNb2RlID0gdHJ1ZTsKKyAgICBpZiAobV9zaG91
bGRBZGp1c3RDb250ZW50c1NjYWxlKSB7CisgICAgICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsK
KyAgICAgICAgbV9zaG91bGRBZGp1c3RDb250ZW50c1NjYWxlID0gZmFsc2U7CisgICAgfQorCiAg
ICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3JlYXRlIHRoZSBtYWluIHRpbGVk
IGJhY2tpbmcgc3RvcmUsIG9uY2Ugd2UKICAgICAvLyBoYXZlIGEgcmVtb3RlIGNsaWVudCBhbmQg
d2UgYXJlIHJlYWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3MuCiAgICAgaWYg
KCFtX21haW5CYWNraW5nU3RvcmUpCiAgICAgICAgIGNyZWF0ZUJhY2tpbmdTdG9yZSgpOworCisg
ICAgaWYgKG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QpIHsKKyAgICAgICAgbV9tYWluQmFja2lu
Z1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKG1fdHJhamVjdG9yeVZlY3Rvcik7CisgICAg
ICAgIG1fdHJhamVjdG9yeVZlY3RvciA9IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgbV9zaG91bGRB
ZGp1c3RWaXNpYmxlUmVjdCA9IGZhbHNlOworICAgIH0KKwogICAgIG1fbWFpbkJhY2tpbmdTdG9y
ZS0+dXBkYXRlVGlsZUJ1ZmZlcnMoKTsKLSAgICBtX2luVXBkYXRlTW9kZSA9IGZhbHNlOwogCiAg
ICAgLy8gVGhlIHByZXZpb3VzIGJhY2tpbmcgc3RvcmUgaXMga2VwdCBhcm91bmQgdG8gYXZvaWQg
ZmxpY2tlcmluZyBiZXR3ZWVuCiAgICAgLy8gcmVtb3ZpbmcgdGhlIGV4aXN0aW5nIHRpbGVzIGFu
ZCBwYWludGluZyB0aGUgbmV3IG9uZXMuIFRoZSBmaXJzdCB0aW1lCkBAIC03NzAsMTIgKzc3OCwx
NCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMo
KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkK
IHsKKyAgICBtX2luQ29vcmRpbmF0ZU1vZGUgPSB0cnVlOwogICAgIG1fbWFpbkJhY2tpbmdTdG9y
ZS5jbGVhcigpOwogICAgIG1fcHJldmlvdXNCYWNraW5nU3RvcmUuY2xlYXIoKTsKIAogICAgIHJl
bGVhc2VJbWFnZUJhY2tpbmdJZk5lZWRlZCgpOwogCiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgp
OworICAgIG1faW5Db29yZGluYXRlTW9kZSA9IGZhbHNlOwogfQogCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJDbGllbnQqIGNvb3JkaW5hdG9yKQpAQCAtNzgzLDEwICs3OTMsOSBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJDbAogICAgIG1fY29vcmRpbmF0b3IgPSBjb29yZGluYXRvcjsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdFZpc2libGVSZWN0KCkKK3ZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpCiB7
Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3Jl
LT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVj
dCA9IHRydWU7CiB9CiAKIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpoYXNQZW5kaW5n
VmlzaWJsZUNoYW5nZXMoKQpAQCAtODI2LDggKzgzNSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgbV9jYWNoZWRJ
bnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsK
IAogICAgIC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFj
a2luZ1N0b3JlVmlzaWJsZVJlY3QuCi0gICAgYWRqdXN0VmlzaWJsZVJlY3QoKTsKLSAgICBhZGp1
c3RDb250ZW50c1NjYWxlKCk7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsK
IH0KIAogc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggODIw
ZGI5YjNjYjc4ZTA3MzJhNDZjNTM2MDU2ZDhkYzFkMDU3NGU4MS4uZGYxNDNhZjUwNTg2ZmQ3MTdl
MTJkMjQ0M2EwYTliYTAyNWQzZDFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQpID0g
MDsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJ
bmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklE
LCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4mKSA9IDA7CkBAIC0xNDYsNyArMTQ1LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVk
QmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93
ZWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3Rv
cmVDb250ZW50c1JlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNr
aW5nU3RvcmVWaXNpYmxlUmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRC
YWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklERTsKQEAgLTE1OSw3ICsx
NTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0
KCk7CisgICAgdm9pZCBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHZvaWQg
cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMo
KTsKIApAQCAtMjA5LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJMYXllcklu
Zm8gbV9sYXllckluZm87CiAgICAgR3JhcGhpY3NMYXllclRyYW5zZm9ybSBtX2xheWVyVHJhbnNm
b3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybTsK
LSAgICBib29sIG1faW5VcGRhdGVNb2RlIDogMTsKKyAgICBib29sIG1faW5Db29yZGluYXRlTW9k
ZSA6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAxOwogICAgIGJvb2wg
bV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKICAgICBib29sIG1fc2hvdWxkU3luY0NoaWxkcmVu
OiAxOwpAQCAtMjIwLDExICsyMTgsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FudmFzTmVl
ZHNEaXNwbGF5IDogMTsKICAgICBib29sIG1fY2FudmFzTmVlZHNDcmVhdGUgOiAxOwogICAgIGJv
b2wgbV9jYW52YXNOZWVkc0Rlc3Ryb3kgOiAxOworICAgIGJvb2wgbV9zaG91bGRBZGp1c3RDb250
ZW50c1NjYWxlIDogMTsKKyAgICBib29sIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QgOiAxOwog
CiAgICAgV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqIG1fY29vcmRpbmF0
b3I7CiAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CiAg
ICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX3ByZXZpb3VzQmFja2luZ1N0b3JlOwogICAg
IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBGbG9hdFBvaW50IG1fdHJhamVjdG9yeVZlY3Rv
cjsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgTmF0aXZlSW1h
Z2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggYzQzMjQ3OTVlOTUyYTJl
N2I4ODMxYWEwMjk5M2Y4NmZiNTg5MzI1NS4uMGZiNzE3Y2M2YTI1ZWM0MTlhOTg3ZjI1ODY0MjAw
YTIyOTQ1NmYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmNwcApAQCAtNjMwLDcgKzYzMCw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NM
YXllcj4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NM
YXllCiAgICAgbGF5ZXItPnNldENvb3JkaW5hdG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExh
eWVycy5hZGQobGF5ZXIpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNT
Y2FsZSk7Ci0gICAgbGF5ZXItPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgbGF5ZXItPnNldE5l
ZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsK
IH0KIApAQCAtNzEyLDcgKzcxMiw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZp
c2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgc2NhCiAgICAgICAg
ICAgICBpZiAoY29udGVudHNTY2FsZURpZENoYW5nZSkKICAgICAgICAgICAgICAgICAoKml0KS0+
c2V0Q29udGVudHNTY2FsZShzY2FsZSk7CiAgICAgICAgICAgICBpZiAoY29udGVudHNSZWN0RGlk
Q2hhbmdlKQotICAgICAgICAgICAgICAgICgqaXQpLT5hZGp1c3RWaXNpYmxlUmVjdCgpOworICAg
ICAgICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC03NDgsMTEgKzc0OCw2IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OnJlbmRlck5leHRGcmFtZSgpCiAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlk
U3dhcEJ1ZmZlcnMoKTsKIH0KIAotYm9vbCBMYXllclRyZWVDb29yZGluYXRvcjo6bGF5ZXJUcmVl
VGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1faXNTdXNwZW5kZWQg
JiYgIW1fd2FpdGluZ0ZvclVJUHJvY2VzczsKLX0KLQogdm9pZCBMYXllclRyZWVDb29yZGluYXRv
cjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVy
Z2luZ1RvZ2dsZShtX2lzUHVyZ2luZywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAppbmRleCAyZjA2YTczZDIyNjY0NjVmN2IyYzYy
ODQzMGIxMGJjN2VlMjcxMDcxLi4zNThlYmQ4ZGM3NDkyNTljZGQyYTVlMTc1YTQ3Y2Q1NjhiOWVl
N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yLmgKQEAgLTg0LDcgKzg0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRl
ck5leHRGcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvck1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVy
RmFjdG9yeSgpIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177915</attachid>
            <date>2012-12-05 20:21:01 -0800</date>
            <delta_ts>2012-12-05 20:27:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121206131823.patch</filename>
            <type>text/plain</type>
            <size>30159</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUyYWRiYmZjY2E2MzJj
MTJkNzI0ZDhmOTQzNzQzZDgwMTg4ZjE0OS4uZDE3MGIwYWI2ZGQ4M2NiOTEzYzAxNGViNjI5MDUy
MWI2MjAzZmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTA1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRPbklkbGVFdmVudExvb3AoKSBp
cyB1c2VkIHdoZW4gY2xhc3MgbWV0aG9kcworICAgICAgICBjYW5ub3QgYmUgY2FsbGVkIGFzeW5j
aHJvbm91c2x5IGJ5IGNsaWVudC4gQ2hhbmdlcyBhcmUgY29tbWl0dGVkIGFzCisgICAgICAgIHNv
b24gYXMgYWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4g
QWZ0ZXIgdGhpcworICAgICAgICBwYXRjaCBGcmFtZSBzZXRzIG1fY29tbWl0T25JZGxlRXZlbnRM
b29wIHRvIHRydWUuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHJlbW92ZSBUaWxlZEJhY2tpbmdT
dG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpCisgICAgICAgIHdo
aWNoIHdhcyBpbnRyb2R1Y2VkIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBS
ZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlW
ZWN0b3IpOgorICAgICAgICAgICAgU2VwYXJhdGUgc2V0dGluZyBhIHRyYWplY3RvcnkgdmVjdG9y
IGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpLgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzSWZOZWVkZWQpOgorICAgICAgICAgICAgUmVuYW1lZCBm
cm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om5lZWRUb0NyZWF0ZU5leHRUaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3Bl
bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVm
ZmVyVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0
YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29tbWl0T25JZGxlRXZlbnRMb29w
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRpbGVkQmFja2lu
Z1N0b3JlTmVlZFRvQ3JlYXRlTmV4dFRpbGVzKToKKyAgICAgICAgICAgIElmIFRpbGVkQmFja2lu
Z1N0b3JlIGRvZXMgbm90IGNyZWF0ZSBhbGwgdGlsZXMsIFRpbGVkQmFja2luZ1N0b3JlCisgICAg
ICAgICAgICBub3RpZmllcyBhIGNsaWVudCBvZiBuZWVkaW5nIHRvIGNyZWF0ZSBuZXh0IHRpbGVz
LCB3aGVuCisgICAgICAgICAgICBtX2NvbW1pdE9uSWRsZUV2ZW50TG9vcCBpcyBmYWxzZS4KKwog
MjAxMi0xMi0wNSAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KIAogICAgICAgICBb
Q1NTIEV4Y2x1c2lvbnNdIEV4Y2x1c2lvblNoYXBlIGlubGluZXMgc2hvdWxkIHVzZSBpc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggN2E0NmE0N2QzOGU2Mzcx
MTA2YmZhMGE5M2QyZDQ5N2I5NTk3YjA3OS4uODFkMjYxNTBmYjQ4ODU1OTNjODgxMTAwYjAxZjYy
ZGZlODI4YWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTA1
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENv
b3JkaW5hdGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyBmcm9tIGNvdmVyV2l0aFRpbGVzSWZO
ZWVkZWQoKSB0byBjcmVhdGVUaWxlc0lmTmVlZGVkKCkKKyAgICAgICAgaW4gVGlsZWRCYWNraW5n
U3RvcmUsIHNvIGEgY2xpZW50IG11c3QgYmUgYW1lbmRlZC4KKworICAgICAgICAqIGV3ay9ld2tf
dmlld19zaW5nbGUuY3BwOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50
c19wcm9jZXNzKToKKwogMjAxMi0xMS0zMCAgTWloYWkgTWFlcmVhbiAgPG1tYWVyZWFuQGFkb2Jl
LmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gd2hlbiBXZWJLaXQgdXNlcyBWOCwgdGhlcmUg
c2hvdWxkIGJlIGEgc2luZ2xlIHZhcmlhYmxlIHRvIHN0b3JlIGlmIHRoZSBDU1MgUmVnaW9ucyBm
ZWF0dXJlIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZWIwOTc1NWVhY2FhNGViMmFkNzM3
YzYzOWI2MDY4MTQ2ODQ1MThlNy4uZjY5NTFjMDY1MzhhOTVhZjgwMGE5OWE3ZjA0Yjc2Zjg0ZGRk
NTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0wNSAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGluYXRl
ZCBHcmFwaGljczogUmVmYWN0b3IgVGlsZWRCYWNraW5nU3RvcmUgY29kZSBpbiBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDM5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCkg
dG8gY3JlYXRlVGlsZXNJZk5lZWRlZCgpCisgICAgICAgIGluIFRpbGVkQmFja2luZ1N0b3JlLCBz
byBhIGNsaWVudCBtdXN0IGJlIGFtZW5kZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9R
V2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnJlbmRlckZy
b21UaWxlZEJhY2tpbmdTdG9yZSk6CisKIDIwMTItMTItMDQgIFBpZXJyZSBSb3NzaSAgPHBpZXJy
ZS5yb3NzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBZZXQgYW5vdGhlciB1bnJldmlld2Vk
IHNwZWN1bGF0aXZlIHdpbmRvd3MgYnVpbGQgZml4LiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3NTgzYTlmMTUw
OGNlOTIxYzMxNTMyOTg3ZTcyYzdjMGE4NmM5NmY5Li42ZTZjZDM2ZTAwMGUxZjZhZWExZDI2MTRk
MTU4ODQxYmE1ZTExODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMTItMDUg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29v
cmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4gQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFzIGNv
bXBsZXggY29kZSByZWxhdGVkIHRvIFRpbGVkQmFja2luZ1N0b3JlLgorICAgICAgICBJdCBoYXMg
dHdvIHByb2JsZW0uCisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBoYWNrcyBU
aWxlZEJhY2tpbmdTdG9yZSB0byBwcmV2ZW50CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlIGZy
b20gYXN5bmNocm9ub3VzbHkgc2VuZGluZyBVcGRhdGVUaWxlIG1lc3NhZ2UgdG8gVUkKKyAgICAg
ICAgUHJvY2Vzcy4KKyAgICAgICAgMi4gQ3JlYXRlVGlsZSBhbmQgUmVtb3ZlVGlsZSBtZXNzYWdl
IGNhbiBiZSBzZW50IHRvIFVJIFByb2Nlc3MgYXQgYW55IHRpbWUuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlIFRpbGVkQmFja2luZ1N0b3Jl
IG1vcmUgZXhwbGljaXRseS4KKyAgICAgICAgSXQgbWVhbnMgb25seSBkdXJpbmcgZmx1c2hpbmcg
bGF5ZXIgc3RhdGVzLCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgY2FsbHMgbWV0
aG9kcyBvZiBUaWxlZEJhY2tpbmdTdG9yZSwgd2hpY2ggaW5kaXJlY3RseSBjYWxsIGNyZWF0ZVRp
bGUoKSwKKyAgICAgICAgdXBkYXRlVGlsZSgpIGFuZCByZW1vdmVUaWxlKCkuCisKKyAgICAgICAg
SW4gYWRkaXRpb24sIHRoZSBwdXJwb3NlIG9mIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6bV9p
blVwZGF0ZU1vZGUgaXMKKyAgICAgICAgY2hhbmdlZC4gQ3VycmVudGx5LCB3ZSBzZXQgbV9pblVw
ZGF0ZU1vZGUgdG8gdHJ1ZSB3aGVuIHVwZGF0aW5nIGEKKyAgICAgICAgYmFja2luZyBzdG9yZS4g
QWZ0ZXIgdGhpcyBwYXRjaCwgd2Ugc2V0IG1faW5VcGRhdGVNb2RlIHRvIHRydWUgd2hlbgorICAg
ICAgICBzZW5kaW5nIG1lc3NhZ2VzIHZpYSBMYXllclRyZWVDb29yZGluYXRvciB0byBVSSBQcm9j
ZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2Fs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFj
a2luZ1N0b3JlTmVlZFRvQ3JlYXRlTmV4dFRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVkc1Zpc2li
bGVSZWN0QWRqdXN0bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3IpOgor
CiAyMDEyLTEyLTA0ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgog
CiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW9yZGVyIG1lc3NhZ2VzIHRvIExheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYWM3OTQ2OTFkNzU0
MTM0MDVjZDBkNjU2N2UxOWIwNDFhYzI4MTdlYy4uNjI1YzMyMmY0ZjI1OTQxMDU1MmE0Y2QwNzMz
MGZhNzRlODBlNmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgyMCw2ICs4MjAsOCBAQCB2
b2lkIEZyYW1lOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IGlmIChtX3RpbGVkQmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxlZEJh
Y2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7CisgICAg
Ly8gQ2hhbmdlcyBhcmUgY29tbWl0dGVkIGJ5IFRpbGVkQmFja2luZ1N0b3JlCisgICAgbV90aWxl
ZEJhY2tpbmdTdG9yZS0+c2V0Q29tbWl0T25JZGxlRXZlbnRMb29wKHRydWUpOwogICAgIGlmICht
X3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVudHModHJ1ZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggOWEzN2E5NmZhYjJlYjY3YTI1MTczNWVmOWRlYzBmYThmOGI0ZjJh
OC4uNzYwN2VkYTYzY2ExNjY4NDEzM2I4ZjI1ZDRiZGZkN2IyMTZlOWQyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNw
cApAQCAtNDEsMTAgKzQxLDEwIEBAIFRpbGVkQmFja2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9y
ZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3duUHRyCiAgICAgLCBtX3Rp
bGVCdWZmZXJVcGRhdGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVCdWZmZXJV
cGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcih0aGlzLCAm
VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBt
X3RpbGVTaXplKGRlZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURpbWVuc2lvbikKLSAg
ICAsIG1fdGlsZUNyZWF0aW9uRGVsYXkoMC4wMSkKICAgICAsIG1fY292ZXJBcmVhTXVsdGlwbGll
cigyLjBmKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKICAgICAsIG1fcGVuZGluZ1NjYWxl
KDApCisgICAgLCBtX2NvbW1pdE9uSWRsZUV2ZW50TG9vcChmYWxzZSkKICAgICAsIG1fY29udGVu
dHNGcm96ZW4oZmFsc2UpCiAgICAgLCBtX3N1cHBvcnRzQWxwaGEoZmFsc2UpCiB7CkBAIC02MSwy
NiArNjEsMjAgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZVNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CiB9CiAKLXZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSkK
K3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBtX3RpbGVDcmVhdGlvbkRlbGF5ID0gZGVs
YXk7CisgICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7Cisg
ICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3Rvci5ub3JtYWxpemUoKTsKIH0KIAotdm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiB0
cmFqZWN0b3J5VmVjdG9yKQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXNJZk5l
ZWRlZChib29sIGZvcmNlQ3JlYXRlVGlsZXMpCiB7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9
IHRoaXMtPnZpc2libGVSZWN0KCk7CiAgICAgSW50UmVjdCByZWN0ID0gbWFwRnJvbUNvbnRlbnRz
KG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKIAotICAgIEZsb2F0
UG9pbnQgbm9ybWFsaXplZFZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7Ci0gICAgbm9ybWFsaXpl
ZFZlY3Rvci5ub3JtYWxpemUoKTsKLQotICAgIGlmIChtX3RyYWplY3RvcnlWZWN0b3IgPT0gbm9y
bWFsaXplZFZlY3RvciAmJiBtX3Zpc2libGVSZWN0ID09IHZpc2libGVSZWN0ICYmIG1fcmVjdCA9
PSByZWN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RyYWplY3RvcnlWZWN0b3IgPSBub3Jt
YWxpemVkVmVjdG9yOwotICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdDsKLQotICAgIGNy
ZWF0ZVRpbGVzKCk7CisgICAgYm9vbCBnZW9tZXRyeVVwZGF0ZWQgPSBtX3RyYWplY3RvcnlWZWN0
b3IgIT0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciB8fCBtX3Zpc2libGVSZWN0ICE9IHZpc2li
bGVSZWN0IHx8IG1fcmVjdCAhPSByZWN0OworICAgIGlmIChnZW9tZXRyeVVwZGF0ZWQgfHwgZm9y
Y2VDcmVhdGVUaWxlcykKKyAgICAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIAogdm9pZCBUaWxlZEJh
Y2tpbmdTdG9yZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkK
QEAgLTEwOCw3ICsxMDIsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRzRGlydHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3Jl
Ojp1cGRhdGVUaWxlQnVmZmVycygpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNraW5n
U3RvcmVVcGRhdGVzQWxsb3dlZCgpIHx8IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1fY29u
dGVudHNGcm96ZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJhY2tp
bmdTdG9yZVBhaW50QmVnaW4oKTsKQEAgLTE5Myw3ICsxODcsNyBAQCB2b2lkIFRpbGVkQmFja2lu
Z1N0b3JlOjpjb21taXRTY2FsZUNoYW5nZSgpCiAgICAgbV9jb250ZW50c1NjYWxlID0gbV9wZW5k
aW5nU2NhbGU7CiAgICAgbV9wZW5kaW5nU2NhbGUgPSAwOwogICAgIG1fdGlsZXMuY2xlYXIoKTsK
LSAgICBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgY3JlYXRlVGlsZXNJZk5lZWRlZCgp
OwogfQogCiBkb3VibGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVEaXN0YW5jZShjb25zdCBJbnRS
ZWN0JiB2aWV3cG9ydCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpIGNv
bnN0CkBAIC0yNDUsNiArMjM5LDggQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGls
ZXMoKQogICAgIC8vIFVwZGF0ZSBvdXIgYmFja2luZyBzdG9yZSBnZW9tZXRyeS4KICAgICBjb25z
dCBJbnRSZWN0IHByZXZpb3VzUmVjdCA9IG1fcmVjdDsKICAgICBtX3JlY3QgPSBtYXBGcm9tQ29u
dGVudHMobV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOworICAgIG1f
dHJhamVjdG9yeVZlY3RvciA9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CisgICAgbV92aXNp
YmxlUmVjdCA9IHZpc2libGVSZWN0KCk7CiAKICAgICBpZiAobV9yZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICBzZXRDb3ZlclJlY3QoSW50UmVjdCgpKTsKQEAgLTI3MywxMiArMjY5LDkgQEAgdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAqIFdlIG11c3QgY3JlYXRl
IG9yIGtlZXAgdGhlIHRpbGVzIGluIHRoZSBIRVJFIHJlZ2lvbi4KICAgICAgKi8KIAotICAgIGNv
bnN0IEludFJlY3QgdmlzaWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVjdCgpOwotICAgIG1fdmlz
aWJsZVJlY3QgPSB2aXNpYmxlUmVjdDsKLQogICAgIEludFJlY3QgY292ZXJSZWN0OwogICAgIElu
dFJlY3Qga2VlcFJlY3Q7Ci0gICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QodmlzaWJsZVJlY3Qs
IGNvdmVyUmVjdCwga2VlcFJlY3QpOworICAgIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KG1fdmlz
aWJsZVJlY3QsIGNvdmVyUmVjdCwga2VlcFJlY3QpOwogCiAgICAgc2V0Q292ZXJSZWN0KGNvdmVy
UmVjdCk7CiAgICAgc2V0S2VlcFJlY3Qoa2VlcFJlY3QpOwpAQCAtMzA5LDcgKzMwMiw3IEBAIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAgICAgICAgIGlmICh0aWxl
QXQoY3VycmVudENvb3JkaW5hdGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgKytyZXF1aXJlZFRpbGVDb3VudDsKLSAgICAgICAgICAgIGRvdWJsZSBkaXN0YW5jZSA9
IHRpbGVEaXN0YW5jZSh2aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5hdGUpOworICAgICAgICAg
ICAgZG91YmxlIGRpc3RhbmNlID0gdGlsZURpc3RhbmNlKG1fdmlzaWJsZVJlY3QsIGN1cnJlbnRD
b29yZGluYXRlKTsKICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHNob3J0ZXN0RGlzdGFuY2Up
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBz
aG9ydGVzdERpc3RhbmNlKSB7CkBAIC0zMzQsNyArMzI3LDE4IEBAIHZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZVRpbGVzKCkKIAogICAgIC8vIFJlLWNhbGwgY3JlYXRlVGlsZXMgb24gYSB0
aW1lciB0byBjb3ZlciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhlIG5ld2VzdCBzaG9ydGVzdCBk
aXN0YW5jZS4KICAgICBpZiAocmVxdWlyZWRUaWxlQ291bnQpCi0gICAgICAgIG1fYmFja2luZ1N0
b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KG1fdGlsZUNyZWF0aW9uRGVsYXkpOworICAgICAg
ICBuZWVkVG9DcmVhdGVOZXh0VGlsZXMoKTsKK30KKwordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
bmVlZFRvQ3JlYXRlTmV4dFRpbGVzKCkKK3sKKyAgICBpZiAoIW1fY29tbWl0T25JZGxlRXZlbnRM
b29wKSB7CisgICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZU5l
eHRUaWxlcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSB0aWxlQ3JlYXRpb25EZWxheSA9IDAuMDE7CisgICAgc3RhcnRCYWNraW5nU3RvcmVVcGRh
dGVUaW1lcih0aWxlQ3JlYXRpb25EZWxheSk7CiB9CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtNDIzLDcgKzQy
Nyw3IEBAIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzQmFja2luZ1N0b3JlVXBkYXRlc1N1c3Bl
bmRlZCgpIGNvbnN0CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzVGlsZUJ1ZmZlclVwZGF0
ZXNTdXNwZW5kZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRzRnJvemVuIHx8ICFt
X2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpOworICAgIHJldHVybiBt
X2NvbnRlbnRzRnJvemVuOwogfQogCiBib29sIFRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdl
VGlsZXMoKQpAQCAtNTI2LDYgKzUzMCw5IEBAIFRpbGU6OkNvb3JkaW5hdGUgVGlsZWRCYWNraW5n
U3RvcmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50CiAKIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCkKIHsKKyAg
ICBpZiAoIW1fY29tbWl0T25JZGxlRXZlbnRMb29wKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAobV90aWxlQnVmZmVyVXBkYXRlVGltZXIuaXNBY3RpdmUoKSB8fCBpc1RpbGVCdWZmZXJVcGRh
dGVzU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3RpbGVCdWZmZXJVcGRhdGVU
aW1lci5zdGFydE9uZVNob3QoMCk7CkBAIC01MzYsMTEgKzU0MywxNCBAQCB2b2lkIFRpbGVkQmFj
a2luZ1N0b3JlOjp0aWxlQnVmZmVyVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdT
dG9yZT4qKQogICAgIHVwZGF0ZVRpbGVCdWZmZXJzKCk7CiB9CiAKLXZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoKQordm9pZCBUaWxlZEJhY2tpbmdT
dG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcihkb3VibGUgaW50ZXJ2YWwpCiB7Cisg
ICAgaWYgKCFtX2NvbW1pdE9uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuaXNBY3RpdmUoKSB8fCBpc0JhY2tpbmdTdG9y
ZVVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fYmFja2luZ1N0b3Jl
VXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
YmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0
b3JlLmgKaW5kZXggMDgyYmU3MGM4ZWIyNzUxNzkwYjdhYjg3NzU2OTQ5YmFjODFhNmQyOC4uYTRl
ZDIwNWJjODc5ZWExNzU3MjdmYjc2NjAyNTc4NDBlYjJjMjY0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00Niw3
ICs0NiwxMyBAQCBwdWJsaWM6CiAKICAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgIHZvaWQgY292ZXJXaXRoVGlsZXNJZk5lZWRl
ZChjb25zdCBGbG9hdFBvaW50JiBwYW5uaW5nVHJhamVjdG9yeVZlY3RvciA9IEZsb2F0UG9pbnQo
KSk7CisgICAgLy8gVXNlZCB3aGVuIGNsYXNzIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxlZCBhc3lu
Y2hyb25vdXNseSBieSBjbGllbnQuCisgICAgLy8gQ2hhbmdlcyBhcmUgY29tbWl0dGVkIGFzIHNv
b24gYXMgYWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZQorICAgIC8vIGJlZW4gcHJv
Y2Vzc2VkLgorICAgIHZvaWQgc2V0Q29tbWl0T25JZGxlRXZlbnRMb29wKGJvb2wgZW5hYmxlKSB7
IG1fY29tbWl0T25JZGxlRXZlbnRMb29wID0gZW5hYmxlOyB9CisKKyAgICB2b2lkIHNldFRyYWpl
Y3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYpOworICAgIHZvaWQgY3JlYXRlVGlsZXNJZk5l
ZWRlZChib29sIGZvcmNlQ3JlYXRlVGlsZXMgPSBmYWxzZSk7CiAKICAgICBmbG9hdCBjb250ZW50
c1NjYWxlKCkgeyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50
c1NjYWxlKGZsb2F0KTsKQEAgLTYyLDkgKzY4LDYgQEAgcHVibGljOgogICAgIEludFNpemUgdGls
ZVNpemUoKSB7IHJldHVybiBtX3RpbGVTaXplOyB9CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25z
dCBJbnRTaXplJik7CiAKLSAgICBkb3VibGUgdGlsZUNyZWF0aW9uRGVsYXkoKSBjb25zdCB7IHJl
dHVybiBtX3RpbGVDcmVhdGlvbkRlbGF5OyB9Ci0gICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxh
eShkb3VibGUgZGVsYXkpOwotCiAgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKICAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CiAKQEAgLTgxLDExICs4NCwxMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcigpOwotICAgIHZvaWQgc3RhcnRCYWNraW5nU3Rv
cmVVcGRhdGVUaW1lcigpOworICAgIHZvaWQgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcihk
b3VibGUgPSAwKTsKIAogICAgIHZvaWQgdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8
VGlsZWRCYWNraW5nU3RvcmU+Kik7CiAgICAgdm9pZCBiYWNraW5nU3RvcmVVcGRhdGVUaW1lckZp
cmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopOwogCisgICAgdm9pZCBuZWVkVG9DcmVhdGVO
ZXh0VGlsZXMoKTsKICAgICB2b2lkIGNyZWF0ZVRpbGVzKCk7CiAgICAgdm9pZCBjb21wdXRlQ292
ZXJBbmRLZWVwUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgSW50UmVjdCYgY292ZXJS
ZWN0LCBJbnRSZWN0JiBrZWVwUmVjdCkgY29uc3Q7CiAKQEAgLTEyMCwxMCArMTI0LDEwIEBAIHBy
aXZhdGU6CiAgICAgVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlVXBkYXRl
VGltZXI7CiAKICAgICBJbnRTaXplIG1fdGlsZVNpemU7Ci0gICAgZG91YmxlIG1fdGlsZUNyZWF0
aW9uRGVsYXk7CiAgICAgZmxvYXQgbV9jb3ZlckFyZWFNdWx0aXBsaWVyOwogCiAgICAgRmxvYXRQ
b2ludCBtX3RyYWplY3RvcnlWZWN0b3I7CisgICAgRmxvYXRQb2ludCBtX3BlbmRpbmdUcmFqZWN0
b3J5VmVjdG9yOwogICAgIEludFJlY3QgbV92aXNpYmxlUmVjdDsKIAogICAgIEludFJlY3QgbV9j
b3ZlclJlY3Q7CkBAIC0xMzMsNiArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2NvbnRl
bnRzU2NhbGU7CiAgICAgZmxvYXQgbV9wZW5kaW5nU2NhbGU7CiAKKyAgICBib29sIG1fY29tbWl0
T25JZGxlRXZlbnRMb29wOwogICAgIGJvb2wgbV9jb250ZW50c0Zyb3plbjsKICAgICBib29sIG1f
c3VwcG9ydHNBbHBoYTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKaW5kZXggMGUwMjE0Nzc3MzMwZTI1
ZjFmYzg0Mzg3MWY0NWE1YTA5OGY5Y2QxZC4uYTIwMTFlYzI1MDdhNTZhNmJlYjJhYzhkZjM1YWE1
M2NlYjY1YzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3Jl
UGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0
ZU5leHRUaWxlcygpIHsgfQogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZUNv
bnRlbnRzUmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIENvbG9yIHRpbGVkQmFja2luZ1N0b3JlQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
c2luZ2xlLmNwcAppbmRleCBjNTc3OWFiM2Y5MzdiZjhhMTUxMDgyNGQyYzk5ZWE3YTA3N2EzMWMw
Li44NWUzNGQ1MWQ5OTQ4NjkwMjhmZGU4YjliMGI2MDg5MmI5ODA5MTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2Vi
Q29yZTo6RnJhbWUqIG1haW5GcmFtZSA9IEVXS1ByaXZhdGU6OmNvcmVGcmFtZShzbWFydERhdGEt
Pm1haW5fZnJhbWUpOwogICAgIGlmIChtYWluRnJhbWUgJiYgbWFpbkZyYW1lLT50aWxlZEJhY2tp
bmdTdG9yZSgpKQotICAgICAgICBtYWluRnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmNvdmVy
V2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICAgICAgbWFpbkZyYW1lLT50aWxlZEJhY2tpbmdTdG9y
ZSgpLT5jcmVhdGVUaWxlc0lmTmVlZGVkKCk7CiAjZW5kaWYKIAogICAgIEV3a19QYWludF9Db250
ZXh0KiBjb250ZXh0ID0gZXdrX3BhaW50X2NvbnRleHRfZnJvbV9pbWFnZV9uZXcoc21hcnREYXRh
LT5iYWNraW5nX3N0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCmluZGV4IDdmNTVkYTM2MmU4MWQ4ZTFmOTUzZmI3NDYy
MjNmNzAyYjAwMGQwZDQuLmM0N2E5OWZkZmRiODQxZmNhY2UyOTUwYWVlMDU4ZmE3ZTY5MWUyZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRh
cHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVB
ZGFwdGVyLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBAIGJvb2wgUVdlYkZyYW1lQWRhcHRlcjo6cmVu
ZGVyRnJvbVRpbGVkQmFja2luZ1N0b3JlKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVnCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2V0IHRoZSBi
YWNraW5nIHN0b3JlIHZpZXdwb3J0IGVhcmxpZXIgdGhhbiBpbiBwYWludAotICAgIGZyYW1lLT50
aWxlZEJhY2tpbmdTdG9yZSgpLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgZnJhbWUt
PnRpbGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZVRpbGVzSWZOZWVkZWQoKTsKIAogICAgIGlmICgh
ZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDM5OTAxMjcxYjg0NDZiOTQyNTlhMDExZmJhNzFiZmIz
NDk1NzQ4YTQuLjg1OGRkZGRkMjU0MmExNzVlZjQyY2E3MzlmZWFhMjU1Y2Q1YmRiNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcApAQCAtMTE4LDYgKzExOCw5IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAs
IG1fY2FudmFzTmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0NyZWF0ZShm
YWxzZSkKICAgICAsIG1fY2FudmFzTmVlZHNEZXN0cm95KGZhbHNlKQorICAgICwgbV9zaG91bGRB
ZGp1c3RDb250ZW50c1NjYWxlKGZhbHNlKQorICAgICwgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVj
dChmYWxzZSkKKyAgICAsIG1fc2hvdWxkQ3JlYXRlTmV4dFRpbGVzKGZhbHNlKQogICAgICwgbV9j
b29yZGluYXRvcigwKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEpCiAgICAgLCBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZVB0cigwKQpAQCAtNTgyLDYgKzU4NSw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpjcmVhdGVDYW52YXNJZk5lZWRlZCgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsK
KyAgICBBU1NFUlQoIW1faW5VcGRhdGVNb2RlKTsKKyAgICBtX2luVXBkYXRlTW9kZSA9IHRydWU7
CiAgICAgc3luY0ltYWdlQmFja2luZygpOwogICAgIHN5bmNMYXllclN0YXRlKCk7CiAgICAgc3lu
Y0FuaW1hdGlvbnMoKTsKQEAgLTU5Miw2ICs1OTcsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAjZW5kaWYK
ICAgICB1cGRhdGVDb250ZW50QnVmZmVycygpOwogICAgIHN5bmNDYW52YXMoKTsKKyAgICBtX2lu
VXBkYXRlTW9kZSA9IGZhbHNlOwogfQogCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
aW1hZ2VCYWNraW5nVmlzaWJsZSgpCkBAIC02MjMsMTQgKzYyOSwxOCBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0Um9vdExheWVyKGJvb2wgaXNSb290KQogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rv
cihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIGlmIChtX21haW5C
YWNraW5nU3RvcmUpCi0gICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCh0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRUcmFqZWN0b3J5
VmVjdG9yKHRyYWplY3RvcnlWZWN0b3IpOworICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3Rt
ZW50KCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1Nj
YWxlKGZsb2F0IHNjYWxlKQogewogICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwotICAgIGFk
anVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICBpZiAoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQor
ICAgICAgICBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUgPSB0cnVlOwogfQogCiBmbG9hdCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQpAQCAtNjQw
LDkgKzY1MCw3IEBAIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0aXZlQ29u
dGVudHNTY2FsZSgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RDb250
ZW50c1NjYWxlKCkKIHsKLSAgICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCisgICAgQVNTRVJUKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSk7CiAgICAg
aWYgKCFtX21haW5CYWNraW5nU3RvcmUgfHwgbV9tYWluQmFja2luZ1N0b3JlLT5jb250ZW50c1Nj
YWxlKCkgPT0gZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTY3NCwxMSArNjgyLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJh
Y2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYKIHsKIH0KIAotYm9vbCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQo
KSBjb25zdAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3Jl
TmVlZFRvQ3JlYXRlTmV4dFRpbGVzKCkKIHsKLSAgICBpZiAoIW1faW5VcGRhdGVNb2RlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmxheWVyVHJlZVRp
bGVVcGRhdGVzQWxsb3dlZCgpOworICAgIG1fc2hvdWxkQ3JlYXRlTmV4dFRpbGVzID0gdHJ1ZTsK
KyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5ub3RpZnlGbHVzaFJlcXVpcmVk
KHRoaXMpOwogfQogCiBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNr
aW5nU3RvcmVDb250ZW50c1JlY3QoKQpAQCAtNzI5LDIwICs3MzcsMjMgQEAgUGFzc093blB0cjxH
cmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBk
YXRlKGNvbnN0IEkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUo
aW50IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAg
ICAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywg
dGlsZVJlY3QpOworICAgIEFTU0VSVChtX2luVXBkYXRlTW9kZSk7CisgICAgQVNTRVJUKG1fY29v
cmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1
cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJ
bmZvLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikK
LSAgICAgICAgbV9jb29yZGluYXRvci0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUlu
Zm8sIHRpbGVSZWN0KTsKKyAgICBBU1NFUlQobV9pblVwZGF0ZU1vZGUpOworICAgIEFTU0VSVCht
X2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT51cGRhdGVUaWxlKGlkKCksIHRpbGVJ
RCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6cmVtb3ZlVGlsZShpbnQgdGlsZUlEKQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQot
ICAgICAgICBtX2Nvb3JkaW5hdG9yLT5yZW1vdmVUaWxlKGlkKCksIHRpbGVJRCk7CisgICAgQVNT
RVJUKG1faW5VcGRhdGVNb2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9j
b29yZGluYXRvci0+cmVtb3ZlVGlsZShpZCgpLCB0aWxlSUQpOwogfQogCiB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQpAQCAtNzUzLDEzICs3NjQs
MjQgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJz
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5VcGRhdGVNb2RlID0gdHJ1ZTsK
KyAgICBpZiAobV9zaG91bGRBZGp1c3RDb250ZW50c1NjYWxlKSB7CisgICAgICAgIGFkanVzdENv
bnRlbnRzU2NhbGUoKTsKKyAgICAgICAgbV9zaG91bGRBZGp1c3RDb250ZW50c1NjYWxlID0gZmFs
c2U7CisgICAgfQorCiAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3JlYXRl
IHRoZSBtYWluIHRpbGVkIGJhY2tpbmcgc3RvcmUsIG9uY2Ugd2UKICAgICAvLyBoYXZlIGEgcmVt
b3RlIGNsaWVudCBhbmQgd2UgYXJlIHJlYWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJIHBy
b2Nlc3MuCiAgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUpCiAgICAgICAgIGNyZWF0ZUJhY2tp
bmdTdG9yZSgpOworCisgICAgaWYgKG1fc2hvdWxkQ3JlYXRlTmV4dFRpbGVzIHx8IG1fc2hvdWxk
QWRqdXN0VmlzaWJsZVJlY3QpIHsKKyAgICAgICAgYm9vbCBmb3JjZUNyZWF0ZVRpbGVzID0gbV9z
aG91bGRDcmVhdGVOZXh0VGlsZXM7CisgICAgICAgIG1fc2hvdWxkQ3JlYXRlTmV4dFRpbGVzID0g
ZmFsc2U7CisgICAgICAgIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QgPSBmYWxzZTsKKyAgICAg
ICAgbV9tYWluQmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlc0lmTmVlZGVkKGZvcmNlQ3JlYXRlVGls
ZXMpOworICAgIH0KKwogICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZUJ1ZmZlcnMo
KTsKLSAgICBtX2luVXBkYXRlTW9kZSA9IGZhbHNlOwogCiAgICAgLy8gVGhlIHByZXZpb3VzIGJh
Y2tpbmcgc3RvcmUgaXMga2VwdCBhcm91bmQgdG8gYXZvaWQgZmxpY2tlcmluZyBiZXR3ZWVuCiAg
ICAgLy8gcmVtb3ZpbmcgdGhlIGV4aXN0aW5nIHRpbGVzIGFuZCBwYWludGluZyB0aGUgbmV3IG9u
ZXMuIFRoZSBmaXJzdCB0aW1lCkBAIC03NzAsMTIgKzc5MiwxNCBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKKyAgICBtX2luVXBkYXRlTW9k
ZSA9IHRydWU7CiAgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAgICAgbV9wcmV2aW91
c0JhY2tpbmdTdG9yZS5jbGVhcigpOwogCiAgICAgcmVsZWFzZUltYWdlQmFja2luZ0lmTmVlZGVk
KCk7CiAKICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAgbV9pblVwZGF0ZU1vZGUgPSBm
YWxzZTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvb3JkaW5hdG9y
KFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBjb29yZGluYXRvcikKQEAg
LTc4MywxMCArODA3LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb29y
ZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsCiAgICAgbV9jb29yZGlu
YXRvciA9IGNvb3JkaW5hdG9yOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
YWRqdXN0VmlzaWJsZVJlY3QoKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldE5l
ZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCkKIHsKLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3Jl
KQotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsK
KyAgICBpZiAoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQorICAgICAgICBtX3Nob3VsZEFkanVz
dFZpc2libGVSZWN0ID0gdHJ1ZTsKIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
Omhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpCkBAIC04MjYsOCArODUwLDcgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAg
ICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCku
aW52ZXJzZSgpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQg
aW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KLSAgICBhZGp1c3RWaXNpYmxlUmVjdCgp
OwotICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRq
dXN0bWVudCgpOwogfQogCiBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aAppbmRleCA4MjBkYjliM2NiNzhlMDczMmE0NmM1MzYwNTZkOGRjMWQwNTc0ZTgxLi5jM2EyNGU4
MDA0ZGZjYjRkODZlOGZiNTZiNzQwNGVkOTkyMDM1NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNTgsNyArNTgs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50
IHRpbGVJRCkgPSAwOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250
ZW50c1JlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRh
dGVzQWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdl
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25z
dCBXZWJMYXllckluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllckNoaWxkcmVu
KFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYpID0gMDsKQEAgLTE0Niw3ICsx
NDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRC
ZWdpbigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBh
aW50ZWRBcmVhKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdGlsZWRCYWNraW5nU3RvcmVV
cGRhdGVzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJh
Y2tpbmdTdG9yZU5lZWRUb0NyZWF0ZU5leHRUaWxlcygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
SW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0
IE9WRVJSSURFOwpAQCAtMTU5LDcgKzE1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29v
cmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKIAotICAg
IHZvaWQgYWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICB2b2lkIHNldE5lZWRzVmlzaWJsZVJlY3RB
ZGp1c3RtZW50KCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBib29sIGhh
c1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpOwogCkBAIC0yMjAsNiArMjE5LDkgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fY2FudmFzTmVlZHNEaXNwbGF5IDogMTsKICAgICBib29sIG1fY2FudmFzTmVl
ZHNDcmVhdGUgOiAxOwogICAgIGJvb2wgbV9jYW52YXNOZWVkc0Rlc3Ryb3kgOiAxOworICAgIGJv
b2wgbV9zaG91bGRBZGp1c3RDb250ZW50c1NjYWxlIDogMTsKKyAgICBib29sIG1fc2hvdWxkQWRq
dXN0VmlzaWJsZVJlY3QgOiAxOworICAgIGJvb2wgbV9zaG91bGRDcmVhdGVOZXh0VGlsZXMgOiAx
OwogCiAgICAgV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqIG1fY29vcmRp
bmF0b3I7CiAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHAKaW5kZXggYzQzMjQ3OTVlOTUyYTJlN2I4ODMxYWEwMjk5M2Y4NmZiNTg5MzI1NS4uYTliNWZm
OTJlNjY4OGY3YjQ2OTdiNzYxMDM2NTg2YjY1NmEzNDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtNjA3LDYgKzYwNyw3
IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosCiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6
Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiB7Cisg
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
ciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVj
dCkKQEAgLTYzMCw3ICs2MzEsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IExheWVyVHJl
ZUNvb3JkaW5hdG9yOjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZQogICAgIGxheWVy
LT5zZXRDb29yZGluYXRvcih0aGlzKTsKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVy
KTsKICAgICBsYXllci0+c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOwotICAgIGxh
eWVyLT5hZGp1c3RWaXNpYmxlUmVjdCgpOworICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0
QWRqdXN0bWVudCgpOwogICAgIHJldHVybiBhZG9wdFB0cihsYXllcik7CiB9CiAKQEAgLTcxMiw3
ICs3MTMsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGZsb2F0IHNjYQogICAgICAgICAgICAgaWYgKGNvbnRl
bnRzU2NhbGVEaWRDaGFuZ2UpCiAgICAgICAgICAgICAgICAgKCppdCktPnNldENvbnRlbnRzU2Nh
bGUoc2NhbGUpOwogICAgICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkKLSAgICAg
ICAgICAgICAgICAoKml0KS0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICAgICAgICAgICAgICAo
Kml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNzQ4LDExICs3NDksNiBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW5kZXJO
ZXh0RnJhbWUoKQogICAgICAgICBtX3VwZGF0ZUF0bGFzZXNbaV0tPmRpZFN3YXBCdWZmZXJzKCk7
CiB9CiAKLWJvb2wgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmxheWVyVHJlZVRpbGVVcGRhdGVzQWxs
b3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2lzU3VzcGVuZGVkICYmICFtX3dhaXRpbmdG
b3JVSVByb2Nlc3M7Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnB1cmdlQmFja2lu
Z1N0b3JlcygpCiB7CiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHB1cmdpbmdUb2dnbGUobV9p
c1B1cmdpbmcsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmgKaW5kZXggMmYwNmE3M2QyMjY2NDY1ZjdiMmM2Mjg0MzBiMTBiYzdlZTI3
MTA3MS4uMzU4ZWJkOGRjNzQ5MjU5Y2RkMmE1ZTE3NWE0N2NkNTY4YjllZTdhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC04NCw3
ICs4NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNv
bnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdmlydHVhbCBib29s
IGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2Fs
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBPVkVS
UklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177917</attachid>
            <date>2012-12-05 20:27:45 -0800</date>
            <delta_ts>2012-12-06 03:04:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121206132507.patch</filename>
            <type>text/plain</type>
            <size>30094</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk4ZDIzNDA3N2M2NGJh
ODk2ODVlZGRkNmJhMzc1OTNjZjcyMDFjZC4uYmY0NjBkYTViMjQzNjdhMGZkNzRmZTJhZDI3OTI2
NTZhNjM2OTUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTA1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRPbklkbGVFdmVudExvb3AoKSBp
cyB1c2VkIHdoZW4gY2xhc3MgbWV0aG9kcworICAgICAgICBjYW5ub3QgYmUgY2FsbGVkIGFzeW5j
aHJvbm91c2x5IGJ5IGNsaWVudC4gQ2hhbmdlcyBhcmUgY29tbWl0dGVkIGFzCisgICAgICAgIHNv
b24gYXMgYWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4g
QWZ0ZXIgdGhpcworICAgICAgICBwYXRjaCBGcmFtZSBzZXRzIG1fY29tbWl0T25JZGxlRXZlbnRM
b29wIHRvIHRydWUuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHJlbW92ZSBUaWxlZEJhY2tpbmdT
dG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpCisgICAgICAgIHdo
aWNoIHdhcyBpbnRyb2R1Y2VkIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBS
ZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlW
ZWN0b3IpOgorICAgICAgICAgICAgU2VwYXJhdGUgc2V0dGluZyBhIHRyYWplY3RvcnkgdmVjdG9y
IGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpLgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzSWZOZWVkZWQpOgorICAgICAgICAgICAgUmVuYW1lZCBm
cm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om5lZWRUb0NyZWF0ZU5leHRUaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3Bl
bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVm
ZmVyVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0
YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29tbWl0T25JZGxlRXZlbnRMb29w
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRpbGVkQmFja2lu
Z1N0b3JlTmVlZFRvQ3JlYXRlTmV4dFRpbGVzKToKKyAgICAgICAgICAgIElmIFRpbGVkQmFja2lu
Z1N0b3JlIGRvZXMgbm90IGNyZWF0ZSBhbGwgdGlsZXMsIFRpbGVkQmFja2luZ1N0b3JlCisgICAg
ICAgICAgICBub3RpZmllcyBhIGNsaWVudCBvZiBuZWVkaW5nIHRvIGNyZWF0ZSBuZXh0IHRpbGVz
LCB3aGVuCisgICAgICAgICAgICBtX2NvbW1pdE9uSWRsZUV2ZW50TG9vcCBpcyBmYWxzZS4KKwog
MjAxMi0xMi0wNSAgQW5kcmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2JlLmNvbT4KIAogICAgICAgICBb
Q1NTIFJlZ2lvbnNdIEJsb2NrcyBkb24ndCByZWxheW91dCBjaGlsZHJlbiBpZiB0aGUgd2lkdGgg
b2YgYSByZWdpb24gY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDAzY2NhZGQyZTUyZWQ3ZDFm
ODM3MGY5Njc3M2FhZGVkN2M3ZjljNGIuLjc1NzFiYjg0Yzc5NjI3MGI0NDAwM2U4NTEzMzQzN2Vm
NzQ0YjgyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0wNSAg
SHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29y
ZGluYXRlZCBHcmFwaGljczogUmVmYWN0b3IgVGlsZWRCYWNraW5nU3RvcmUgY29kZSBpbiBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVl
ZGVkKCkgdG8gY3JlYXRlVGlsZXNJZk5lZWRlZCgpCisgICAgICAgIGluIFRpbGVkQmFja2luZ1N0
b3JlLCBzbyBhIGNsaWVudCBtdXN0IGJlIGFtZW5kZWQuCisKKyAgICAgICAgKiBld2svZXdrX3Zp
ZXdfc2luZ2xlLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNf
cHJvY2Vzcyk6CisKIDIwMTItMTItMDUgIEhhbHRvbiBIdW8gIDxoYWx0b24uaHVvQGludGVsLmNv
bT4KIAogICAgICAgICBbQ01ha2VdIFVuaWZ5IGNvZGluZyBzdHlsZSBmb3IgQ01ha2UgZmlsZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZjc3YTdhZDg4ZTg3MTQyYjQxNWEwZDBkZGQwNDg5MDRjMzM2ODRi
OC4uOGE4YWUyNzI0YTgzYzAzYzBhZTY1ODY2ZjM5OTRjMGM3NTQ1ZjYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0wNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVmYWN0
b3IgVGlsZWRCYWNraW5nU3RvcmUgY29kZSBpbiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5NTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IHJlbmFtZXMgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCkgdG8gY3JlYXRlVGlsZXNJZk5l
ZWRlZCgpCisgICAgICAgIGluIFRpbGVkQmFja2luZ1N0b3JlLCBzbyBhIGNsaWVudCBtdXN0IGJl
IGFtZW5kZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNw
cDoKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnJlbmRlckZyb21UaWxlZEJhY2tpbmdTdG9y
ZSk6CisKIDIwMTItMTItMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1F0XVtNYWNdIFFXZWJWaWV3IGRpc2FwcGVhcnMgd2hlbiB0aGUgc3lzdGVtIHRyaWVz
IHRvIGhpZGUgdGhlIHNjcm9sbGJhcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWM3OTI1NTRiZTFjYTJiMTMw
MzMwNzA1YjVlMDIzNGM3ZDMzM2IwMi4uNmMyZDc3Zjg4NWFjNjViYjRmYzRlYTU3NjcwMjM5YmFh
YTVjYWNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTA1ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVk
IEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEN1cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhcyBjb21wbGV4IGNv
ZGUgcmVsYXRlZCB0byBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAgICAgSXQgaGFzIHR3byBwcm9i
bGVtLgorICAgICAgICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFja3MgVGlsZWRCYWNr
aW5nU3RvcmUgdG8gcHJldmVudAorICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBmcm9tIGFzeW5j
aHJvbm91c2x5IHNlbmRpbmcgVXBkYXRlVGlsZSBtZXNzYWdlIHRvIFVJCisgICAgICAgIFByb2Nl
c3MuCisgICAgICAgIDIuIENyZWF0ZVRpbGUgYW5kIFJlbW92ZVRpbGUgbWVzc2FnZSBjYW4gYmUg
c2VudCB0byBVSSBQcm9jZXNzIGF0IGFueSB0aW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHVzZSBUaWxlZEJhY2tpbmdTdG9yZSBtb3JlIGV4
cGxpY2l0bHkuCisgICAgICAgIEl0IG1lYW5zIG9ubHkgZHVyaW5nIGZsdXNoaW5nIGxheWVyIHN0
YXRlcywgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyCisgICAgICAgIGNhbGxzIG1ldGhvZHMgb2Yg
VGlsZWRCYWNraW5nU3RvcmUsIHdoaWNoIGluZGlyZWN0bHkgY2FsbCBjcmVhdGVUaWxlKCksCisg
ICAgICAgIHVwZGF0ZVRpbGUoKSBhbmQgcmVtb3ZlVGlsZSgpLgorCisgICAgICAgIEluIGFkZGl0
aW9uLCB0aGUgcHVycG9zZSBvZiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6Om1faW5VcGRhdGVN
b2RlIGlzCisgICAgICAgIGNoYW5nZWQuIEN1cnJlbnRseSwgd2Ugc2V0IG1faW5VcGRhdGVNb2Rl
IHRvIHRydWUgd2hlbiB1cGRhdGluZyBhCisgICAgICAgIGJhY2tpbmcgc3RvcmUuIEFmdGVyIHRo
aXMgcGF0Y2gsIHdlIHNldCBtX2luVXBkYXRlTW9kZSB0byB0cnVlIHdoZW4KKyAgICAgICAgc2Vu
ZGluZyBtZXNzYWdlcyB2aWEgTGF5ZXJUcmVlQ29vcmRpbmF0b3IgdG8gVUkgUHJvY2Vzcy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXll
ck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRW
aXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9y
ZU5lZWRUb0NyZWF0ZU5leHRUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVjdEFk
anVzdG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
b21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAg
ICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUNvb3JkaW5hdG9yOjpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKwogMjAxMi0x
Mi0wNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dp
bmRvd3MsIFdpbkNhaXJvXSBSZWdlbmVyYXRlIC5kZWYgZmlsZXMgb24gY2hhbmdlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAppbmRleCBhYzc5NDY5MWQ3NTQxMzQwNWNkMGQ2NTY3ZTE5YjA0MWFjMjgxN2Vj
Li42MjVjMzIyZjRmMjU5NDEwNTUyYTRjZDA3MzMwZmE3NGU4MGU2ZDIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtODIwLDYgKzgyMCw4IEBAIHZvaWQgRnJhbWU6OnNldFRpbGVkQmFja2luZ1N0
b3JlRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgaWYgKG1fdGlsZWRCYWNraW5nU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX3RpbGVkQmFja2luZ1N0b3JlID0gYWRvcHRQdHIobmV3IFRp
bGVkQmFja2luZ1N0b3JlKHRoaXMpKTsKKyAgICAvLyBDaGFuZ2VzIGFyZSBjb21taXR0ZWQgYnkg
VGlsZWRCYWNraW5nU3RvcmUKKyAgICBtX3RpbGVkQmFja2luZ1N0b3JlLT5zZXRDb21taXRPbklk
bGVFdmVudExvb3AodHJ1ZSk7CiAgICAgaWYgKG1fdmlldykKICAgICAgICAgbV92aWV3LT5zZXRQ
YWludHNFbnRpcmVDb250ZW50cyh0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA5YTM3YTk2ZmFi
MmViNjdhMjUxNzM1ZWY5ZGVjMGZhOGY4YjRmMmE4Li43NjA3ZWRhNjNjYTE2Njg0MTMzYjhmMjVk
NGJkZmQ3YjIxNmU5ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC00MSwxMCArNDEsMTAgQEAgVGlsZWRC
YWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBj
bGllbnQsIFBhc3NPd25QdHIKICAgICAsIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKHRoaXMsICZU
aWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX2Jh
Y2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0
b3JlVXBkYXRlVGltZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVEaW1lbnNp
b24sIGRlZmF1bHRUaWxlRGltZW5zaW9uKQotICAgICwgbV90aWxlQ3JlYXRpb25EZWxheSgwLjAx
KQogICAgICwgbV9jb3ZlckFyZWFNdWx0aXBsaWVyKDIuMGYpCiAgICAgLCBtX2NvbnRlbnRzU2Nh
bGUoMS5mKQogICAgICwgbV9wZW5kaW5nU2NhbGUoMCkKKyAgICAsIG1fY29tbWl0T25JZGxlRXZl
bnRMb29wKGZhbHNlKQogICAgICwgbV9jb250ZW50c0Zyb3plbihmYWxzZSkKICAgICAsIG1fc3Vw
cG9ydHNBbHBoYShmYWxzZSkKIHsKQEAgLTYxLDI2ICs2MSwyMCBAQCB2b2lkIFRpbGVkQmFja2lu
Z1N0b3JlOjpzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHN0YXJ0QmFja2lu
Z1N0b3JlVXBkYXRlVGltZXIoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGls
ZUNyZWF0aW9uRGVsYXkoZG91YmxlIGRlbGF5KQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0
VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewot
ICAgIG1fdGlsZUNyZWF0aW9uRGVsYXkgPSBkZWxheTsKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5
VmVjdG9yID0gdHJhamVjdG9yeVZlY3RvcjsKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9y
Lm5vcm1hbGl6ZSgpOwogfQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcldpdGhUaWxl
c0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIFRpbGVk
QmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlc0lmTmVlZGVkKGJvb2wgZm9yY2VDcmVhdGVUaWxlcykK
IHsKICAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJlY3QoKTsKICAgICBJ
bnRSZWN0IHJlY3QgPSBtYXBGcm9tQ29udGVudHMobV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3Jl
Q29udGVudHNSZWN0KCkpOwogCi0gICAgRmxvYXRQb2ludCBub3JtYWxpemVkVmVjdG9yID0gdHJh
amVjdG9yeVZlY3RvcjsKLSAgICBub3JtYWxpemVkVmVjdG9yLm5vcm1hbGl6ZSgpOwotCi0gICAg
aWYgKG1fdHJhamVjdG9yeVZlY3RvciA9PSBub3JtYWxpemVkVmVjdG9yICYmIG1fdmlzaWJsZVJl
Y3QgPT0gdmlzaWJsZVJlY3QgJiYgbV9yZWN0ID09IHJlY3QpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fdHJhamVjdG9yeVZlY3RvciA9IG5vcm1hbGl6ZWRWZWN0b3I7Ci0gICAgbV92aXNpYmxl
UmVjdCA9IHZpc2libGVSZWN0OwotCi0gICAgY3JlYXRlVGlsZXMoKTsKKyAgICBib29sIGdlb21l
dHJ5VXBkYXRlZCA9IG1fdHJhamVjdG9yeVZlY3RvciAhPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVj
dG9yIHx8IG1fdmlzaWJsZVJlY3QgIT0gdmlzaWJsZVJlY3QgfHwgbV9yZWN0ICE9IHJlY3Q7Cisg
ICAgaWYgKGdlb21ldHJ5VXBkYXRlZCB8fCBmb3JjZUNyZWF0ZVRpbGVzKQorICAgICAgICBjcmVh
dGVUaWxlcygpOwogfQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRzRGlydHlSZWN0KQpAQCAtMTA4LDcgKzEwMiw3IEBAIHZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudHNEaXJ0eVJl
Y3QpCiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKIHsKLSAg
ICBpZiAoIW1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgfHwgbV9j
b250ZW50c0Zyb3plbikKKyAgICBpZiAobV9jb250ZW50c0Zyb3plbikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOwpAQCAtMTkz
LDcgKzE4Nyw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvbW1pdFNjYWxlQ2hhbmdlKCkK
ICAgICBtX2NvbnRlbnRzU2NhbGUgPSBtX3BlbmRpbmdTY2FsZTsKICAgICBtX3BlbmRpbmdTY2Fs
ZSA9IDA7CiAgICAgbV90aWxlcy5jbGVhcigpOwotICAgIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQo
KTsKKyAgICBjcmVhdGVUaWxlc0lmTmVlZGVkKCk7CiB9CiAKIGRvdWJsZSBUaWxlZEJhY2tpbmdT
dG9yZTo6dGlsZURpc3RhbmNlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0LCBjb25zdCBUaWxlOjpD
b29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkgY29uc3QKQEAgLTI0NSw2ICsyMzksOCBAQCB2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgLy8gVXBkYXRlIG91ciBiYWNr
aW5nIHN0b3JlIGdlb21ldHJ5LgogICAgIGNvbnN0IEludFJlY3QgcHJldmlvdXNSZWN0ID0gbV9y
ZWN0OwogICAgIG1fcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5n
U3RvcmVDb250ZW50c1JlY3QoKSk7CisgICAgbV90cmFqZWN0b3J5VmVjdG9yID0gbV9wZW5kaW5n
VHJhamVjdG9yeVZlY3RvcjsKKyAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3QoKTsKIAog
ICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNldENvdmVyUmVjdChJbnRSZWN0
KCkpOwpAQCAtMjczLDEyICsyNjksOSBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVU
aWxlcygpCiAgICAgICogV2UgbXVzdCBjcmVhdGUgb3Iga2VlcCB0aGUgdGlsZXMgaW4gdGhlIEhF
UkUgcmVnaW9uLgogICAgICAqLwogCi0gICAgY29uc3QgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRo
aXMtPnZpc2libGVSZWN0KCk7Ci0gICAgbV92aXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OwotCiAg
ICAgSW50UmVjdCBjb3ZlclJlY3Q7CiAgICAgSW50UmVjdCBrZWVwUmVjdDsKLSAgICBjb21wdXRl
Q292ZXJBbmRLZWVwUmVjdCh2aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CisgICAg
Y29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QobV92aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVj
dCk7CiAKICAgICBzZXRDb3ZlclJlY3QoY292ZXJSZWN0KTsKICAgICBzZXRLZWVwUmVjdChrZWVw
UmVjdCk7CkBAIC0zMDksNyArMzAyLDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRl
VGlsZXMoKQogICAgICAgICAgICAgaWYgKHRpbGVBdChjdXJyZW50Q29vcmRpbmF0ZSkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICArK3JlcXVpcmVkVGlsZUNvdW50Owot
ICAgICAgICAgICAgZG91YmxlIGRpc3RhbmNlID0gdGlsZURpc3RhbmNlKHZpc2libGVSZWN0LCBj
dXJyZW50Q29vcmRpbmF0ZSk7CisgICAgICAgICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlz
dGFuY2UobV92aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5hdGUpOwogICAgICAgICAgICAgaWYg
KGRpc3RhbmNlID4gc2hvcnRlc3REaXN0YW5jZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IHNob3J0ZXN0RGlzdGFuY2UpIHsKQEAgLTMzNCw3
ICszMjcsMTggQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogCiAgICAg
Ly8gUmUtY2FsbCBjcmVhdGVUaWxlcyBvbiBhIHRpbWVyIHRvIGNvdmVyIHRoZSB2aXNpYmxlIGFy
ZWEgd2l0aCB0aGUgbmV3ZXN0IHNob3J0ZXN0IGRpc3RhbmNlLgogICAgIGlmIChyZXF1aXJlZFRp
bGVDb3VudCkKLSAgICAgICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qo
bV90aWxlQ3JlYXRpb25EZWxheSk7CisgICAgICAgIG5lZWRUb0NyZWF0ZU5leHRUaWxlcygpOwor
fQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpuZWVkVG9DcmVhdGVOZXh0VGlsZXMoKQorewor
ICAgIGlmICghbV9jb21taXRPbklkbGVFdmVudExvb3ApIHsKKyAgICAgICAgbV9jbGllbnQtPnRp
bGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlTmV4dFRpbGVzKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRpbGVDcmVhdGlvbkRlbGF5ID0gMC4w
MTsKKyAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRpbGVDcmVhdGlvbkRlbGF5KTsK
IH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0Rm9yQ29udGVudHNSZWN0KEludFJl
Y3QmIHJlY3QpIGNvbnN0CkBAIC00MjMsNyArNDI3LDcgQEAgYm9vbCBUaWxlZEJhY2tpbmdTdG9y
ZTo6aXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkgY29uc3QKIAogYm9vbCBUaWxlZEJh
Y2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fY29udGVudHNGcm96ZW4gfHwgIW1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVVw
ZGF0ZXNBbGxvd2VkKCk7CisgICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW47CiB9CiAKIGJvb2wg
VGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpCkBAIC01MjYsNiArNTMwLDkgQEAg
VGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2lu
dChjb25zdCBJbnRQb2ludCYgcG9pbnQKIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRU
aWxlQnVmZmVyVXBkYXRlVGltZXIoKQogeworICAgIGlmICghbV9jb21taXRPbklkbGVFdmVudExv
b3ApCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3RpbGVCdWZmZXJVcGRhdGVUaW1lci5p
c0FjdGl2ZSgpIHx8IGlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUz
NiwxMSArNTQzLDE0IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVCdWZmZXJVcGRhdGVU
aW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopCiAgICAgdXBkYXRlVGlsZUJ1ZmZl
cnMoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRh
dGVUaW1lcigpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0
ZVRpbWVyKGRvdWJsZSBpbnRlcnZhbCkKIHsKKyAgICBpZiAoIW1fY29tbWl0T25JZGxlRXZlbnRM
b29wKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9iYWNraW5nU3RvcmVVcGRhdGVUaW1l
ci5pc0FjdGl2ZSgpIHx8IGlzQmFja2luZ1N0b3JlVXBkYXRlc1N1c3BlbmRlZCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7
CisgICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwog
fQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVVcGRhdGVUaW1lckZpcmVk
KFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCAwODJiZTcwYzhlYjI3NTE3
OTBiN2FiODc3NTY5NDliYWM4MWE2ZDI4Li5hNGVkMjA1YmM4NzllYTE3NTcyN2ZiNzY2MDI1Nzg0
MGViMmMyNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ2LDcgKzQ2LDEzIEBAIHB1YmxpYzoKIAogICAgIFRp
bGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0g
ICAgdm9pZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIHBhbm5pbmdU
cmFqZWN0b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpKTsKKyAgICAvLyBVc2VkIHdoZW4gY2xhc3Mg
bWV0aG9kcyBjYW5ub3QgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IGNsaWVudC4KKyAgICAv
LyBDaGFuZ2VzIGFyZSBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBldmVu
dCBxdWV1ZSBoYXZlCisgICAgLy8gYmVlbiBwcm9jZXNzZWQuCisgICAgdm9pZCBzZXRDb21taXRP
bklkbGVFdmVudExvb3AoYm9vbCBlbmFibGUpIHsgbV9jb21taXRPbklkbGVFdmVudExvb3AgPSBl
bmFibGU7IH0KKworICAgIHZvaWQgc2V0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50
Jik7CisgICAgdm9pZCBjcmVhdGVUaWxlc0lmTmVlZGVkKGJvb2wgZm9yY2VDcmVhdGVUaWxlcyA9
IGZhbHNlKTsKIAogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRz
U2NhbGU7IH0KICAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwpAQCAtNjIsOSArNjgs
NiBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGlsZVNpemU7
IH0KICAgICB2b2lkIHNldFRpbGVTaXplKGNvbnN0IEludFNpemUmKTsKIAotICAgIGRvdWJsZSB0
aWxlQ3JlYXRpb25EZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUNyZWF0aW9uRGVsYXk7IH0K
LSAgICB2b2lkIHNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSk7Ci0KICAgICBJbnRS
ZWN0IG1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEludFJlY3QgbWFw
RnJvbUNvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKIApAQCAtODEsMTEgKzg0LDEyIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVy
KCk7Ci0gICAgdm9pZCBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CisgICAgdm9pZCBz
dGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSA9IDApOwogCiAgICAgdm9pZCB0aWxl
QnVmZmVyVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKTsKICAgICB2
b2lkIGJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+
Kik7CiAKKyAgICB2b2lkIG5lZWRUb0NyZWF0ZU5leHRUaWxlcygpOwogICAgIHZvaWQgY3JlYXRl
VGlsZXMoKTsKICAgICB2b2lkIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0LCBJbnRSZWN0JiBjb3ZlclJlY3QsIEludFJlY3QmIGtlZXBSZWN0KSBjb25z
dDsKIApAQCAtMTIwLDEwICsxMjQsMTAgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxUaWxlZEJhY2tp
bmdTdG9yZT4gbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcjsKIAogICAgIEludFNpemUgbV90aWxl
U2l6ZTsKLSAgICBkb3VibGUgbV90aWxlQ3JlYXRpb25EZWxheTsKICAgICBmbG9hdCBtX2NvdmVy
QXJlYU11bHRpcGxpZXI7CiAKICAgICBGbG9hdFBvaW50IG1fdHJhamVjdG9yeVZlY3RvcjsKKyAg
ICBGbG9hdFBvaW50IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CiAgICAgSW50UmVjdCBtX3Zp
c2libGVSZWN0OwogCiAgICAgSW50UmVjdCBtX2NvdmVyUmVjdDsKQEAgLTEzMyw2ICsxMzcsNyBA
QCBwcml2YXRlOgogICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRp
bmdTY2FsZTsKIAorICAgIGJvb2wgbV9jb21taXRPbklkbGVFdmVudExvb3A7CiAgICAgYm9vbCBt
X2NvbnRlbnRzRnJvemVuOwogICAgIGJvb2wgbV9zdXBwb3J0c0FscGhhOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVD
bGllbnQuaAppbmRleCAwZTAyMTQ3NzczMzBlMjVmMWZjODQzODcxZjQ1YTVhMDk4ZjljZDFkLi5h
MjAxMWVjMjUwN2E1NmE2YmViMmFjOGRmMzVhYTUzY2ViNjVjNjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xp
ZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJh
Y2tpbmdTdG9yZVBhaW50QmVnaW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2lu
Z1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhaW50ZWRBcmVhKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHRpbGVkQmFja2luZ1N0b3Jl
VXBkYXRlc0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lk
IHRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlTmV4dFRpbGVzKCkgeyB9CiAgICAgdmlydHVh
bCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkgPSAwOwogICAgIHZpcnR1
YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkgPSAwOwogICAgIHZpcnR1
YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCmluZGV4IGM1Nzc5YWIzZjkz
N2JmOGExNTEwODI0ZDJjOTllYTdhMDc3YTMxYzAuLjg1ZTM0ZDUxZDk5NDg2OTAyOGZkZThiOWIw
YjYwODkyYjk4MDkxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d19zaW5nbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUu
Y3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc20KICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lID0gRVdL
UHJpdmF0ZTo6Y29yZUZyYW1lKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiAgICAgaWYgKG1haW5G
cmFtZSAmJiBtYWluRnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCkpCi0gICAgICAgIG1haW5GcmFt
ZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgICAg
ICBtYWluRnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZVRpbGVzSWZOZWVkZWQoKTsK
ICNlbmRpZgogCiAgICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tfcGFpbnRfY29u
dGV4dF9mcm9tX2ltYWdlX25ldyhzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKaW5k
ZXggN2Y1NWRhMzYyZTgxZDhlMWY5NTNmYjc0NjIyM2Y3MDJiMDAwZDBkNC4uYzQ3YTk5ZmRmZGI4
NDFmY2FjZTI5NTBhZWUwNThmYTdlNjkxZTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCkBAIC02MTYsNyArNjE2LDcg
QEAgYm9vbCBRV2ViRnJhbWVBZGFwdGVyOjpyZW5kZXJGcm9tVGlsZWRCYWNraW5nU3RvcmUoUVBh
aW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBzZXQgdGhlIGJhY2tpbmcgc3RvcmUgdmlld3BvcnQgZWFybGll
ciB0aGFuIGluIHBhaW50Ci0gICAgZnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmNvdmVyV2l0
aFRpbGVzSWZOZWVkZWQoKTsKKyAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+Y3JlYXRl
VGlsZXNJZk5lZWRlZCgpOwogCiAgICAgaWYgKCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTg1
NmY1MWY0NTA1NjBjYWE0MTZkZDgxZjk4ZjkxYzIyY2U3NjQ3ZS4uNDNhOTViYjM1MjU0NjU1MmY2
OTk1YzJmY2I0ZGRhZWZkZGU5MWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMTgsNiArMTE4LDkgQEAg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXkoZmFsc2Up
CiAgICAgLCBtX2NhbnZhc05lZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0Rl
c3Ryb3koZmFsc2UpCisgICAgLCBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUoZmFsc2UpCisg
ICAgLCBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0KGZhbHNlKQorICAgICwgbV9zaG91bGRDcmVh
dGVOZXh0VGlsZXMoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCiAgICAgLCBtX2NvbnRl
bnRzU2NhbGUoMSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCkBAIC01OTIs
NiArNTk1LDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZUNhbnZhc0lm
TmVlZGVkKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogeworICAgIEFTU0VSVCghbV9pblVwZGF0ZU1vZGUp
OworICAgIG1faW5VcGRhdGVNb2RlID0gdHJ1ZTsKICAgICBzeW5jSW1hZ2VCYWNraW5nKCk7CiAg
ICAgc3luY0xheWVyU3RhdGUoKTsKICAgICBzeW5jQW5pbWF0aW9ucygpOwpAQCAtNjAyLDYgKzYw
Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KCkKICNlbmRpZgogICAgIHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7
CiAgICAgc3luY0NhbnZhcygpOworICAgIG1faW5VcGRhdGVNb2RlID0gZmFsc2U7CiB9CiAKIGJv
b2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjppbWFnZUJhY2tpbmdWaXNpYmxlKCkKQEAgLTYz
MywxNCArNjM5LDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRSb290TGF5
ZXIoYm9vbCBpc1Jvb3QpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNp
YmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3Rv
cnlWZWN0b3IpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9tYWlu
QmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKHRyYWplY3RvcnlWZWN0b3IpOwor
ICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21h
aW5CYWNraW5nU3RvcmUtPnNldFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7Cisg
ICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0KIAogdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiB7CiAgICAgbV9j
b250ZW50c1NjYWxlID0gc2NhbGU7Ci0gICAgYWRqdXN0Q29udGVudHNTY2FsZSgpOworICAgIGlm
IChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCisgICAgICAgIG1fc2hvdWxkQWRqdXN0Q29udGVu
dHNTY2FsZSA9IHRydWU7CiB9CiAKIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZm
ZWN0aXZlQ29udGVudHNTY2FsZSgpCkBAIC02NTAsOSArNjYwLDcgQEAgZmxvYXQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUoKQogewotICAgIGlmICghc2hv
dWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQoc2hv
dWxkSGF2ZUJhY2tpbmdTdG9yZSgpKTsKICAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSB8fCBt
X21haW5CYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSA9PSBlZmZlY3RpdmVDb250ZW50c1Nj
YWxlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjg0LDExICs2OTIsMTEgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVj
dG9yPEludFJlY3Q+JgogewogfQogCi1ib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGls
ZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0Cit2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVOZWVkVG9DcmVhdGVOZXh0VGlsZXMoKQogewot
ICAgIGlmICghbV9pblVwZGF0ZU1vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gbV9jb29yZGluYXRvci0+bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAgbV9z
aG91bGRDcmVhdGVOZXh0VGlsZXMgPSB0cnVlOworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAg
Y2xpZW50KCktPm5vdGlmeUZsdXNoUmVxdWlyZWQodGhpcyk7CiB9CiAKIEludFJlY3QgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpCkBAIC03
MzksMjAgKzc0NywyMyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSQogCiB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZh
Y2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVj
dCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+Y3Jl
YXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKKyAgICBBU1NFUlQo
bV9pblVwZGF0ZU1vZGUpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3Jk
aW5hdG9yLT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOwog
fQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSh1aW50MzJfdCB0
aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGlu
YXRvci0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKKyAg
ICBBU1NFUlQobV9pblVwZGF0ZU1vZGUpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAg
ICBtX2Nvb3JkaW5hdG9yLT51cGRhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGls
ZVJlY3QpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVtb3ZlVGlsZSh1
aW50MzJfdCB0aWxlSUQpCiB7Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29v
cmRpbmF0b3ItPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKKyAgICBBU1NFUlQobV9pblVwZGF0
ZU1vZGUpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT5y
ZW1vdmVUaWxlKGlkKCksIHRpbGVJRCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCkBAIC03NjMsMTMgKzc3NCwyNCBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOworICAgIGlmIChtX3No
b3VsZEFkanVzdENvbnRlbnRzU2NhbGUpIHsKKyAgICAgICAgYWRqdXN0Q29udGVudHNTY2FsZSgp
OworICAgICAgICBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUgPSBmYWxzZTsKKyAgICB9CisK
ICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHdlIChyZSljcmVhdGUgdGhlIG1haW4gdGls
ZWQgYmFja2luZyBzdG9yZSwgb25jZSB3ZQogICAgIC8vIGhhdmUgYSByZW1vdGUgY2xpZW50IGFu
ZCB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBvdXIgZGF0YSB0byB0aGUgVUkgcHJvY2Vzcy4KICAgICBp
ZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkKICAgICAgICAgY3JlYXRlQmFja2luZ1N0b3JlKCk7CisK
KyAgICBpZiAobV9zaG91bGRDcmVhdGVOZXh0VGlsZXMgfHwgbV9zaG91bGRBZGp1c3RWaXNpYmxl
UmVjdCkgeworICAgICAgICBib29sIGZvcmNlQ3JlYXRlVGlsZXMgPSBtX3Nob3VsZENyZWF0ZU5l
eHRUaWxlczsKKyAgICAgICAgbV9zaG91bGRDcmVhdGVOZXh0VGlsZXMgPSBmYWxzZTsKKyAgICAg
ICAgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCA9IGZhbHNlOworICAgICAgICBtX21haW5CYWNr
aW5nU3RvcmUtPmNyZWF0ZVRpbGVzSWZOZWVkZWQoZm9yY2VDcmVhdGVUaWxlcyk7CisgICAgfQor
CiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT51cGRhdGVUaWxlQnVmZmVycygpOwotICAgIG1faW5V
cGRhdGVNb2RlID0gZmFsc2U7CiAKICAgICAvLyBUaGUgcHJldmlvdXMgYmFja2luZyBzdG9yZSBp
cyBrZXB0IGFyb3VuZCB0byBhdm9pZCBmbGlja2VyaW5nIGJldHdlZW4KICAgICAvLyByZW1vdmlu
ZyB0aGUgZXhpc3RpbmcgdGlsZXMgYW5kIHBhaW50aW5nIHRoZSBuZXcgb25lcy4gVGhlIGZpcnN0
IHRpbWUKQEAgLTc4MCwxMiArODAyLDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogeworICAgIG1faW5VcGRhdGVNb2RlID0gdHJ1ZTsKICAg
ICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICBtX3ByZXZpb3VzQmFja2luZ1N0b3Jl
LmNsZWFyKCk7CiAKICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsKIAogICAgIGRp
ZENoYW5nZUxheWVyU3RhdGUoKTsKKyAgICBtX2luVXBkYXRlTW9kZSA9IGZhbHNlOwogfQogCiB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNvb3JkaW5hdG9yKQpAQCAtNzkzLDEwICs4MTcs
MTAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvb3JkaW5hdG9yKFdlYktp
dDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2wKICAgICBtX2Nvb3JkaW5hdG9yID0gY29vcmRp
bmF0b3I7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RWaXNpYmxl
UmVjdCgpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVj
dEFkanVzdG1lbnQoKQogewotICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCi0gICAgICAgIG1f
bWFpbkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgIGlmIChzaG91
bGRIYXZlQmFja2luZ1N0b3JlKCkpCisgICAgICAgIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3Qg
PSB0cnVlOwogfQogCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aGFzUGVuZGluZ1Zp
c2libGVDaGFuZ2VzKCkKQEAgLTgzNiw4ICs4NjAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1fY2FjaGVkSW52
ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCk7CiAK
ICAgICAvLyBUaGUgY29tYmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tp
bmdTdG9yZVZpc2libGVSZWN0LgotICAgIGFkanVzdFZpc2libGVSZWN0KCk7Ci0gICAgYWRqdXN0
Q29udGVudHNTY2FsZSgpOworICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiB9
CiAKIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDMwZmI4
N2RkZDZkMDYwNmU2OGM1NTVjOTE4YjM0YmNjOGViYTYwNTQuLjk0OWVhYjA5NmYxMzFmMjkxZDkx
YWQyYThlYTU4MTA4MGMyNWRmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC01OCw3ICs1OCw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCB1aW50MzJfdCB0aWxlSUQp
ID0gMDsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93
ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5
ZXJJbmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXll
cklELCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4mKSA9IDA7CkBAIC0xNDcsNyArMTQ2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRp
bGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJl
YSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0Fs
bG93ZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3Rv
cmVOZWVkVG9DcmVhdGVOZXh0VGlsZXMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3Qg
dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIElu
dFJlY3QgdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklE
RTsKQEAgLTE2MCw3ICsxNTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9y
KFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFk
anVzdFZpc2libGVSZWN0KCk7CisgICAgdm9pZCBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVu
dCgpOwogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5n
VmlzaWJsZUNoYW5nZXMoKTsKIApAQCAtMjIxLDYgKzIyMCw5IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2NhbnZhc05lZWRzRGlzcGxheSA6IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzQ3JlYXRl
IDogMTsKICAgICBib29sIG1fY2FudmFzTmVlZHNEZXN0cm95IDogMTsKKyAgICBib29sIG1fc2hv
dWxkQWRqdXN0Q29udGVudHNTY2FsZSA6IDE7CisgICAgYm9vbCBtX3Nob3VsZEFkanVzdFZpc2li
bGVSZWN0IDogMTsKKyAgICBib29sIG1fc2hvdWxkQ3JlYXRlTmV4dFRpbGVzIDogMTsKIAogICAg
IFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwog
ICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4
IDUwM2ZkMDE2MjE5YjZiNjA3NzkwNTdiM2YyOTZiNzljOWUzOTNkYTIuLjE1OWU0MDFiNzA1NTRk
ZGVjZDExZjQ2YmU2ZTM0OTU3ODIwODRjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTYwNyw2ICs2MDcsNyBAQCB2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqLAogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpub3RpZnlG
bHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogeworICAgIHNjaGVk
dWxlTGF5ZXJGbHVzaCgpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwYWludENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpCkBAIC02
MzAsNyArNjMxLDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBMYXllclRyZWVDb29yZGlu
YXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWUKICAgICBsYXllci0+c2V0Q29v
cmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CiAgICAg
bGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKLSAgICBsYXllci0+YWRq
dXN0VmlzaWJsZVJlY3QoKTsKKyAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1l
bnQoKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQogCkBAIC03MTIsNyArNzEzLDcg
QEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2EKICAgICAgICAgICAgIGlmIChjb250ZW50c1NjYWxl
RGlkQ2hhbmdlKQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRDb250ZW50c1NjYWxlKHNjYWxl
KTsKICAgICAgICAgICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpCi0gICAgICAgICAgICAg
ICAgKCppdCktPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgICAgICAgICAgICAgKCppdCktPnNl
dE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc0
OCwxMSArNzQ5LDYgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVuZGVyTmV4dEZyYW1l
KCkKICAgICAgICAgbV91cGRhdGVBdGxhc2VzW2ldLT5kaWRTd2FwQnVmZmVycygpOwogfQogCi1i
b29sIExheWVyVHJlZUNvb3JkaW5hdG9yOjpsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBj
b25zdAotewotICAgIHJldHVybiAhbV9pc1N1c3BlbmRlZCAmJiAhbV93YWl0aW5nRm9yVUlQcm9j
ZXNzOwotfQotCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMo
KQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBwdXJnaW5nVG9nZ2xlKG1faXNQdXJnaW5n
LCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5oCmluZGV4IGUwOWZlM2FiYTdhZmVlMDY1NjY0NTFjNGY0OTg4NjY1MmFlY2Q4MTQuLjE4
NGNkNWY4ZjI1YjI5MjBkMzc2ZDg2ZDkyNDU3YWEwOWU3OGY0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtODQsNyArODQsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1Jl
Y3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmly
dHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRy
ZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUxheWVy
VHJlZUNvb3JkaW5hdG9yTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177983</attachid>
            <date>2012-12-06 03:04:46 -0800</date>
            <delta_ts>2012-12-06 21:05:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121206200207.patch</filename>
            <type>text/plain</type>
            <size>30018</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIwNWMxODZlM2I1MGU2
ZjVhNmM2N2U1OGU5MjJmYWIxYTc3OTg0MC4uMTQ5ZDI4MmU2YjM1OWJiZjk5ZjE3ZjYyNDdhYzcz
YjQ2NTRhNjg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTA2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRPbklkbGVFdmVudExvb3AoKSBp
cyB1c2VkIHdoZW4gY2xhc3MgbWV0aG9kcworICAgICAgICBjYW5ub3QgYmUgY2FsbGVkIGFzeW5j
aHJvbm91c2x5IGJ5IGNsaWVudC4gQ2hhbmdlcyBhcmUgY29tbWl0dGVkIGFzCisgICAgICAgIHNv
b24gYXMgYWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4g
QWZ0ZXIgdGhpcworICAgICAgICBwYXRjaCBGcmFtZSBzZXRzIG1fY29tbWl0T25JZGxlRXZlbnRM
b29wIHRvIHRydWUuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHJlbW92ZSBUaWxlZEJhY2tpbmdT
dG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpCisgICAgICAgIHdo
aWNoIHdhcyBpbnRyb2R1Y2VkIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBS
ZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlW
ZWN0b3IpOgorICAgICAgICAgICAgU2VwYXJhdGUgc2V0dGluZyBhIHRyYWplY3RvcnkgdmVjdG9y
IGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpLgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzSWZOZWVkZWQpOgorICAgICAgICAgICAgUmVuYW1lZCBm
cm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om5lZWRUb0NyZWF0ZVRpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjppc1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJV
cGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRC
YWNraW5nU3RvcmVVcGRhdGVUaW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGls
ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRPbklkbGVFdmVudExvb3ApOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3Rv
cmVOZWVkVG9DcmVhdGVUaWxlcyk6CisgICAgICAgICAgICBJZiBUaWxlZEJhY2tpbmdTdG9yZSBk
b2VzIG5vdCBjcmVhdGUgYWxsIHRpbGVzLCBUaWxlZEJhY2tpbmdTdG9yZQorICAgICAgICAgICAg
bm90aWZpZXMgYSBjbGllbnQgb2YgbmVlZGluZyB0byBjcmVhdGUgdGlsZXMgbW9yZSwgd2hlbgor
ICAgICAgICAgICAgbV9jb21taXRPbklkbGVFdmVudExvb3AgaXMgZmFsc2UuCisKIDIwMTItMTIt
MDUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIElOUFVUX01V
TFRJUExFX0ZJRUxEU19VSTogVGhlIGhvdXIsIGFtL3BtLCBtaWxsaXNlY29uZCBmaWVsZHMgc2hv
dWxkIHN1cHBvcnQgcmVhZC1vbmx5IHN0YXRlIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IDAzY2NhZGQyZTUyZWQ3ZDFmODM3MGY5Njc3M2FhZGVkN2M3ZjljNGIuLjMyOGQ4NmUxMDM1MDM1
OGIzMjJjN2M4N2ViZDcxMTJkYTYwNTBmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMi0xMi0wNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5l
dD4KKworICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVmYWN0b3IgVGlsZWRCYWNraW5n
U3RvcmUgY29kZSBpbiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5NTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgZnJvbSBj
b3ZlcldpdGhUaWxlc0lmTmVlZGVkKCkgdG8gY3JlYXRlVGlsZXNJZk5lZWRlZCgpCisgICAgICAg
IGluIFRpbGVkQmFja2luZ1N0b3JlLCBzbyBhIGNsaWVudCBtdXN0IGJlIGFtZW5kZWQuCisKKyAg
ICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zaW5n
bGVfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6CisKIDIwMTItMTItMDUgIEhhbHRvbiBIdW8gIDxo
YWx0b24uaHVvQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVuaWZ5IGNvZGluZyBzdHls
ZSBmb3IgQ01ha2UgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZjc3YTdhZDg4ZTg3MTQyYjQxNWEw
ZDBkZGQwNDg5MDRjMzM2ODRiOC4uMDZkZGM1YTczMjNkNGZmNzc4MjU1ZTAwNTZlMWUzMzNlMjk5
YjY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0wNiAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGluYXRl
ZCBHcmFwaGljczogUmVmYWN0b3IgVGlsZWRCYWNraW5nU3RvcmUgY29kZSBpbiBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDM5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCkg
dG8gY3JlYXRlVGlsZXNJZk5lZWRlZCgpCisgICAgICAgIGluIFRpbGVkQmFja2luZ1N0b3JlLCBz
byBhIGNsaWVudCBtdXN0IGJlIGFtZW5kZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9R
V2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnJlbmRlckZy
b21UaWxlZEJhY2tpbmdTdG9yZSk6CisKIDIwMTItMTItMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5v
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtNYWNdIFFXZWJWaWV3IGRpc2FwcGVhcnMgd2hl
biB0aGUgc3lzdGVtIHRyaWVzIHRvIGhpZGUgdGhlIHNjcm9sbGJhcnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
Y2MyNmFiMDk3MDVkNTViOWExNmUyNzlhMjM5ZWU3ODRhNjFhMjA4Ny4uMmEzNGI4MGM5YmFlNDc0
NTZkNWZmZjA4ZjdiZDI3NjA1ZTNkNGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisy
MDEyLTEyLTA2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisg
ICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBj
b2RlIGluIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyIGhhcyBjb21wbGV4IGNvZGUgcmVsYXRlZCB0byBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAg
ICAgSXQgaGFzIHR3byBwcm9ibGVtLgorICAgICAgICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIgaGFja3MgVGlsZWRCYWNraW5nU3RvcmUgdG8gcHJldmVudAorICAgICAgICBUaWxlZEJhY2tp
bmdTdG9yZSBmcm9tIGFzeW5jaHJvbm91c2x5IHNlbmRpbmcgVXBkYXRlVGlsZSBtZXNzYWdlIHRv
IFVJCisgICAgICAgIFByb2Nlc3MuCisgICAgICAgIDIuIENyZWF0ZVRpbGUgYW5kIFJlbW92ZVRp
bGUgbWVzc2FnZSBjYW4gYmUgc2VudCB0byBVSSBQcm9jZXNzIGF0IGFueSB0aW1lLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbWFrZXMgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHVzZSBUaWxlZEJh
Y2tpbmdTdG9yZSBtb3JlIGV4cGxpY2l0bHkuCisgICAgICAgIEl0IG1lYW5zIG9ubHkgZHVyaW5n
IGZsdXNoaW5nIGxheWVyIHN0YXRlcywgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyCisgICAgICAg
IGNhbGxzIG1ldGhvZHMgb2YgVGlsZWRCYWNraW5nU3RvcmUsIHdoaWNoIGluZGlyZWN0bHkgY2Fs
bCBjcmVhdGVUaWxlKCksCisgICAgICAgIHVwZGF0ZVRpbGUoKSBhbmQgcmVtb3ZlVGlsZSgpLgor
CisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgcHVycG9zZSBvZiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6Om1faW5VcGRhdGVNb2RlIGlzCisgICAgICAgIGNoYW5nZWQuIEN1cnJlbnRseSwgd2Ug
c2V0IG1faW5VcGRhdGVNb2RlIHRvIHRydWUgd2hlbiB1cGRhdGluZyBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUuIEFmdGVyIHRoaXMgcGF0Y2gsIHdlIHNldCBtX2luVXBkYXRlTW9kZSB0byB0cnVl
IHdoZW4KKyAgICAgICAgc2VuZGluZyBtZXNzYWdlcyB2aWEgTGF5ZXJUcmVlQ29vcmRpbmF0b3Ig
dG8gVUkgUHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2Fs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENv
bnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9y
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVk
c1Zpc2libGVSZWN0QWRqdXN0bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAg
ICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0
b3IpOgorCiAyMDEyLTEyLTA1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW9yZGVyIG1lc3NhZ2VzIHRv
IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYWM3OTQ2
OTFkNzU0MTM0MDVjZDBkNjU2N2UxOWIwNDFhYzI4MTdlYy4uYzY4NGY0ODQ3MjU2N2Y1NzdhZjY4
OGU2NGQ1Y2Q5MzIyMjYxMDY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgyMCw2ICs4MjAs
NyBAQCB2b2lkIEZyYW1lOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVk
KQogICAgIGlmIChtX3RpbGVkQmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgbV90
aWxlZEJhY2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7
CisgICAgbV90aWxlZEJhY2tpbmdTdG9yZS0+c2V0Q29tbWl0T25JZGxlRXZlbnRMb29wKHRydWUp
OwogICAgIGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVu
dHModHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggOWEzN2E5NmZhYjJlYjY3YTI1MTczNWVmOWRl
YzBmYThmOGI0ZjJhOC4uMzU1YWI5NjJiYTA0NDUzMzcyZGQxZGQ2MTJiMWNhMzc0NTNiMjFiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZ1N0b3JlLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIFRpbGVkQmFja2luZ1N0b3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3duUHRy
CiAgICAgLCBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6
OnRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9iYWNraW5nU3RvcmVVcGRhdGVU
aW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmly
ZWQpCiAgICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURp
bWVuc2lvbikKLSAgICAsIG1fdGlsZUNyZWF0aW9uRGVsYXkoMC4wMSkKICAgICAsIG1fY292ZXJB
cmVhTXVsdGlwbGllcigyLjBmKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKICAgICAsIG1f
cGVuZGluZ1NjYWxlKDApCisgICAgLCBtX2NvbW1pdE9uSWRsZUV2ZW50TG9vcChmYWxzZSkKICAg
ICAsIG1fY29udGVudHNGcm96ZW4oZmFsc2UpCiAgICAgLCBtX3N1cHBvcnRzQWxwaGEoZmFsc2Up
CiB7CkBAIC02MSwyNiArNjEsMjAgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZVNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVy
KCk7CiB9CiAKLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVDcmVhdGlvbkRlbGF5KGRv
dWJsZSBkZWxheSkKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3Io
Y29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBtX3RpbGVDcmVhdGlv
bkRlbGF5ID0gZGVsYXk7CisgICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3Rv
cnlWZWN0b3I7CisgICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3Rvci5ub3JtYWxpemUoKTsKIH0K
IAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBG
bG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3Jl
YXRlVGlsZXNJZk5lZWRlZChib29sIGZvcmNlVGlsZUNyZWF0aW9uKQogewogICAgIEludFJlY3Qg
dmlzaWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVjdCgpOwogICAgIEludFJlY3QgcmVjdCA9IG1h
cEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7
CiAKLSAgICBGbG9hdFBvaW50IG5vcm1hbGl6ZWRWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwot
ICAgIG5vcm1hbGl6ZWRWZWN0b3Iubm9ybWFsaXplKCk7Ci0KLSAgICBpZiAobV90cmFqZWN0b3J5
VmVjdG9yID09IG5vcm1hbGl6ZWRWZWN0b3IgJiYgbV92aXNpYmxlUmVjdCA9PSB2aXNpYmxlUmVj
dCAmJiBtX3JlY3QgPT0gcmVjdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90cmFqZWN0b3J5
VmVjdG9yID0gbm9ybWFsaXplZFZlY3RvcjsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJl
Y3Q7Ci0KLSAgICBjcmVhdGVUaWxlcygpOworICAgIGJvb2wgZGlkQ2hhbmdlID0gbV90cmFqZWN0
b3J5VmVjdG9yICE9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgfHwgbV92aXNpYmxlUmVjdCAh
PSB2aXNpYmxlUmVjdCB8fCBtX3JlY3QgIT0gcmVjdDsKKyAgICBpZiAoZGlkQ2hhbmdlIHx8IGZv
cmNlVGlsZUNyZWF0aW9uKQorICAgICAgICBjcmVhdGVUaWxlcygpOwogfQogCiB2b2lkIFRpbGVk
QmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRzRGlydHlSZWN0
KQpAQCAtMTA4LDcgKzEwMiw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudHNEaXJ0eVJlY3QpCiAKIHZvaWQgVGlsZWRCYWNraW5nU3Rv
cmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKIHsKLSAgICBpZiAoIW1fY2xpZW50LT50aWxlZEJhY2tp
bmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgfHwgbV9jb250ZW50c0Zyb3plbikKKyAgICBpZiAobV9j
b250ZW50c0Zyb3plbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jbGllbnQtPnRpbGVkQmFj
a2luZ1N0b3JlUGFpbnRCZWdpbigpOwpAQCAtMTkzLDcgKzE4Nyw3IEBAIHZvaWQgVGlsZWRCYWNr
aW5nU3RvcmU6OmNvbW1pdFNjYWxlQ2hhbmdlKCkKICAgICBtX2NvbnRlbnRzU2NhbGUgPSBtX3Bl
bmRpbmdTY2FsZTsKICAgICBtX3BlbmRpbmdTY2FsZSA9IDA7CiAgICAgbV90aWxlcy5jbGVhcigp
OwotICAgIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICBjcmVhdGVUaWxlc0lmTmVlZGVk
KCk7CiB9CiAKIGRvdWJsZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZURpc3RhbmNlKGNvbnN0IElu
dFJlY3QmIHZpZXdwb3J0LCBjb25zdCBUaWxlOjpDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkg
Y29uc3QKQEAgLTI0NSw2ICsyMzksOCBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVU
aWxlcygpCiAgICAgLy8gVXBkYXRlIG91ciBiYWNraW5nIHN0b3JlIGdlb21ldHJ5LgogICAgIGNv
bnN0IEludFJlY3QgcHJldmlvdXNSZWN0ID0gbV9yZWN0OwogICAgIG1fcmVjdCA9IG1hcEZyb21D
b250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CisgICAg
bV90cmFqZWN0b3J5VmVjdG9yID0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKKyAgICBtX3Zp
c2libGVSZWN0ID0gdmlzaWJsZVJlY3QoKTsKIAogICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7
CiAgICAgICAgIHNldENvdmVyUmVjdChJbnRSZWN0KCkpOwpAQCAtMjczLDEyICsyNjksOSBAQCB2
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICogV2UgbXVzdCBjcmVh
dGUgb3Iga2VlcCB0aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgogICAgICAqLwogCi0gICAg
Y29uc3QgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7Ci0gICAgbV92
aXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OwotCiAgICAgSW50UmVjdCBjb3ZlclJlY3Q7CiAgICAg
SW50UmVjdCBrZWVwUmVjdDsKLSAgICBjb21wdXRlQ292ZXJBbmRLZWVwUmVjdCh2aXNpYmxlUmVj
dCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CisgICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QobV92
aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CiAKICAgICBzZXRDb3ZlclJlY3QoY292
ZXJSZWN0KTsKICAgICBzZXRLZWVwUmVjdChrZWVwUmVjdCk7CkBAIC0zMDksNyArMzAyLDcgQEAg
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICAgICAgaWYgKHRp
bGVBdChjdXJyZW50Q29vcmRpbmF0ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICArK3JlcXVpcmVkVGlsZUNvdW50OwotICAgICAgICAgICAgZG91YmxlIGRpc3RhbmNl
ID0gdGlsZURpc3RhbmNlKHZpc2libGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0ZSk7CisgICAgICAg
ICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxlUmVjdCwgY3VycmVu
dENvb3JkaW5hdGUpOwogICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hvcnRlc3REaXN0YW5j
ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8
IHNob3J0ZXN0RGlzdGFuY2UpIHsKQEAgLTMzNCw3ICszMjcsMTggQEAgdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogCiAgICAgLy8gUmUtY2FsbCBjcmVhdGVUaWxlcyBvbiBh
IHRpbWVyIHRvIGNvdmVyIHRoZSB2aXNpYmxlIGFyZWEgd2l0aCB0aGUgbmV3ZXN0IHNob3J0ZXN0
IGRpc3RhbmNlLgogICAgIGlmIChyZXF1aXJlZFRpbGVDb3VudCkKLSAgICAgICAgbV9iYWNraW5n
U3RvcmVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QobV90aWxlQ3JlYXRpb25EZWxheSk7CisgICAg
ICAgIG5lZWRUb0NyZWF0ZVRpbGVzKCk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6Om5l
ZWRUb0NyZWF0ZVRpbGVzKCkKK3sKKyAgICBpZiAoIW1fY29tbWl0T25JZGxlRXZlbnRMb29wKSB7
CisgICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRpbGVD
cmVhdGlvbkRlbGF5ID0gMC4wMTsKKyAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRp
bGVDcmVhdGlvbkRlbGF5KTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0Rm9y
Q29udGVudHNSZWN0KEludFJlY3QmIHJlY3QpIGNvbnN0CkBAIC00MjMsNyArNDI3LDcgQEAgYm9v
bCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkgY29u
c3QKIAogYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRl
ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW4gfHwgIW1fY2xpZW50LT50
aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAgcmV0dXJuIG1fY29udGVudHNG
cm96ZW47CiB9CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpCkBA
IC01MjYsNiArNTMwLDkgQEAgVGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGls
ZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQKIAogdm9pZCBUaWxlZEJh
Y2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogeworICAgIGlmICghbV9j
b21taXRPbklkbGVFdmVudExvb3ApCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3RpbGVC
dWZmZXJVcGRhdGVUaW1lci5pc0FjdGl2ZSgpIHx8IGlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5k
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKQEAgLTUzNiwxMSArNTQzLDE0IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OnRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopCiAg
ICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3Rh
cnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFy
dEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSBpbnRlcnZhbCkKIHsKKyAgICBpZiAoIW1f
Y29tbWl0T25JZGxlRXZlbnRMb29wKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9iYWNr
aW5nU3RvcmVVcGRhdGVUaW1lci5pc0FjdGl2ZSgpIHx8IGlzQmFja2luZ1N0b3JlVXBkYXRlc1N1
c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1l
ci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5zdGFydE9u
ZVNob3QoaW50ZXJ2YWwpOwogfQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpiYWNraW5nU3Rv
cmVVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAppbmRl
eCAwODJiZTcwYzhlYjI3NTE3OTBiN2FiODc3NTY5NDliYWM4MWE2ZDI4Li40NWM1YzI5MDA5MjM0
OTFkMmM2YjY2NzA2Y2E1MDk2ODdjYzY1N2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ2LDcgKzQ2LDEzIEBA
IHB1YmxpYzoKIAogICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVy
biBtX2NsaWVudDsgfQogCi0gICAgdm9pZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0IEZs
b2F0UG9pbnQmIHBhbm5pbmdUcmFqZWN0b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpKTsKKyAgICAv
LyBVc2VkIHdoZW4gY2xhc3MgbWV0aG9kcyBjYW5ub3QgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5
IGJ5IGNsaWVudC4KKyAgICAvLyBDaGFuZ2VzIGFyZSBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwg
dGhlIGV2ZW50cyBpbiBldmVudCBxdWV1ZSBoYXZlCisgICAgLy8gYmVlbiBwcm9jZXNzZWQuCisg
ICAgdm9pZCBzZXRDb21taXRPbklkbGVFdmVudExvb3AoYm9vbCBlbmFibGUpIHsgbV9jb21taXRP
bklkbGVFdmVudExvb3AgPSBlbmFibGU7IH0KKworICAgIHZvaWQgc2V0VHJhamVjdG9yeVZlY3Rv
cihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBjcmVhdGVUaWxlc0lmTmVlZGVkKGJvb2wg
Zm9yY2VUaWxlQ3JlYXRpb24gPSBmYWxzZSk7CiAKICAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkg
eyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZs
b2F0KTsKQEAgLTYyLDkgKzY4LDYgQEAgcHVibGljOgogICAgIEludFNpemUgdGlsZVNpemUoKSB7
IHJldHVybiBtX3RpbGVTaXplOyB9CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXpl
Jik7CiAKLSAgICBkb3VibGUgdGlsZUNyZWF0aW9uRGVsYXkoKSBjb25zdCB7IHJldHVybiBtX3Rp
bGVDcmVhdGlvbkRlbGF5OyB9Ci0gICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxheShkb3VibGUg
ZGVsYXkpOwotCiAgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25z
dDsKICAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAK
QEAgLTgxLDExICs4NCwxMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFRp
bGVCdWZmZXJVcGRhdGVUaW1lcigpOwotICAgIHZvaWQgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVU
aW1lcigpOworICAgIHZvaWQgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcihkb3VibGUgPSAw
KTsKIAogICAgIHZvaWQgdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNr
aW5nU3RvcmU+Kik7CiAgICAgdm9pZCBiYWNraW5nU3RvcmVVcGRhdGVUaW1lckZpcmVkKFRpbWVy
PFRpbGVkQmFja2luZ1N0b3JlPiopOwogCisgICAgdm9pZCBuZWVkVG9DcmVhdGVUaWxlcygpOwog
ICAgIHZvaWQgY3JlYXRlVGlsZXMoKTsKICAgICB2b2lkIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBJbnRSZWN0JiBjb3ZlclJlY3QsIEludFJlY3Qm
IGtlZXBSZWN0KSBjb25zdDsKIApAQCAtMTIwLDEwICsxMjQsMTAgQEAgcHJpdmF0ZToKICAgICBU
aW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcjsKIAogICAg
IEludFNpemUgbV90aWxlU2l6ZTsKLSAgICBkb3VibGUgbV90aWxlQ3JlYXRpb25EZWxheTsKICAg
ICBmbG9hdCBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CiAKICAgICBGbG9hdFBvaW50IG1fdHJhamVj
dG9yeVZlY3RvcjsKKyAgICBGbG9hdFBvaW50IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CiAg
ICAgSW50UmVjdCBtX3Zpc2libGVSZWN0OwogCiAgICAgSW50UmVjdCBtX2NvdmVyUmVjdDsKQEAg
LTEzMyw2ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKICAg
ICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKIAorICAgIGJvb2wgbV9jb21taXRPbklkbGVFdmVudExv
b3A7CiAgICAgYm9vbCBtX2NvbnRlbnRzRnJvemVuOwogICAgIGJvb2wgbV9zdXBwb3J0c0FscGhh
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaAppbmRleCAwZTAyMTQ3NzczMzBlMjVmMWZjODQzODcxZjQ1
YTVhMDk4ZjljZDFkLi4wNzc4NGZlNzQ5OTY4ZWU4MWExM2YwY2Q3Mjg0Y2NjZDJkNWNiMTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdT
dG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZ1N0b3JlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25z
dCBWZWN0b3I8SW50UmVjdD4mIHBhaW50ZWRBcmVhKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHRp
bGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlVGlsZXMoKSB7IH0K
ICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSA9IDA7
CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSA9IDA7
CiAgICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5n
bGUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKaW5kZXgg
YzU3NzlhYjNmOTM3YmY4YTE1MTA4MjRkMmM5OWVhN2EwNzdhMzFjMC4uODVlMzRkNTFkOTk0ODY5
MDI4ZmRlOGI5YjBiNjA4OTJiOTgwOTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3X3NpbmdsZS5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBz
bQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYkNvcmU6OkZyYW1lKiBtYWlu
RnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlRnJhbWUoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKICAg
ICBpZiAobWFpbkZyYW1lICYmIG1haW5GcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKSkKLSAgICAg
ICAgbWFpbkZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVk
KCk7CisgICAgICAgIG1haW5GcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+Y3JlYXRlVGlsZXNJ
Zk5lZWRlZCgpOwogI2VuZGlmCiAKICAgICBFd2tfUGFpbnRfQ29udGV4dCogY29udGV4dCA9IGV3
a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFk
YXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFw
dGVyLmNwcAppbmRleCA3ZjU1ZGEzNjJlODFkOGUxZjk1M2ZiNzQ2MjIzZjcwMmIwMDBkMGQ0Li5j
NDdhOTlmZGZkYjg0MWZjYWNlMjk1MGFlZTA1OGZhN2U2OTFlMmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKQEAgLTYx
Niw3ICs2MTYsNyBAQCBib29sIFFXZWJGcmFtZUFkYXB0ZXI6OnJlbmRlckZyb21UaWxlZEJhY2tp
bmdTdG9yZShRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlZwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNldCB0aGUgYmFja2luZyBzdG9yZSB2aWV3
cG9ydCBlYXJsaWVyIHRoYW4gaW4gcGFpbnQKLSAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUo
KS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgIGZyYW1lLT50aWxlZEJhY2tpbmdTdG9y
ZSgpLT5jcmVhdGVUaWxlc0lmTmVlZGVkKCk7CiAKICAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwg
IWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAppbmRleCA5ODU2ZjUxZjQ1MDU2MGNhYTQxNmRkODFmOThmOTFjMjJjZTc2NDdlLi5jMzUxNWYw
YzBhZTM0MmFkMmIxZThhNWIyN2FiNWQyYjFkMDQxN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTExOCw2
ICsxMTgsOSBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NhbnZhc05lZWRzRGlz
cGxheShmYWxzZSkKICAgICAsIG1fY2FudmFzTmVlZHNDcmVhdGUoZmFsc2UpCiAgICAgLCBtX2Nh
bnZhc05lZWRzRGVzdHJveShmYWxzZSkKKyAgICAsIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2Fs
ZShmYWxzZSkKKyAgICAsIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QoZmFsc2UpCisgICAgLCBt
X3Nob3VsZENyZWF0ZVRpbGVzKGZhbHNlKQogICAgICwgbV9jb29yZGluYXRvcigwKQogICAgICwg
bV9jb250ZW50c1NjYWxlKDEpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQpA
QCAtNTkyLDYgKzU5NSw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVD
YW52YXNJZk5lZWRlZCgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKKyAgICBBU1NFUlQoIW1faW5VcGRh
dGVNb2RlKTsKKyAgICBtX2luVXBkYXRlTW9kZSA9IHRydWU7CiAgICAgc3luY0ltYWdlQmFja2lu
ZygpOwogICAgIHN5bmNMYXllclN0YXRlKCk7CiAgICAgc3luY0FuaW1hdGlvbnMoKTsKQEAgLTYw
Miw2ICs2MDcsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAjZW5kaWYKICAgICB1cGRhdGVDb250ZW50QnVm
ZmVycygpOwogICAgIHN5bmNDYW52YXMoKTsKKyAgICBtX2luVXBkYXRlTW9kZSA9IGZhbHNlOwog
fQogCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aW1hZ2VCYWNraW5nVmlzaWJsZSgp
CkBAIC02MzMsMTQgKzYzOSwxOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
Um9vdExheWVyKGJvb2wgaXNSb290KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50JiB0
cmFqZWN0b3J5VmVjdG9yKQogewotICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCi0gICAgICAg
IG1fbWFpbkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCh0cmFqZWN0b3J5VmVj
dG9yKTsKKyAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0
b3IpOworICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogewog
ICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwotICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsK
KyAgICBpZiAoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQorICAgICAgICBtX3Nob3VsZEFkanVz
dENvbnRlbnRzU2NhbGUgPSB0cnVlOwogfQogCiBmbG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQpAQCAtNjUwLDkgKzY2MCw3IEBAIGZsb2F0IENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCiAKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RDb250ZW50c1NjYWxlKCkKIHsKLSAgICBp
ZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgQVNT
RVJUKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSk7CiAgICAgaWYgKCFtX21haW5CYWNraW5nU3Rv
cmUgfHwgbV9tYWluQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkgPT0gZWZmZWN0aXZlQ29u
dGVudHNTY2FsZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTY4NCwxMSArNjkyLDExIEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYKIHsKIH0KIAotYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAordm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlVGlsZXMoKQog
ewotICAgIGlmICghbV9pblVwZGF0ZU1vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gbV9jb29yZGluYXRvci0+bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAg
bV9zaG91bGRDcmVhdGVUaWxlcyA9IHRydWU7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBj
bGllbnQoKS0+bm90aWZ5Rmx1c2hSZXF1aXJlZCh0aGlzKTsKIH0KIAogSW50UmVjdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkKQEAgLTcz
OSwyMCArNzQ3LDIzIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJCiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFj
ZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0
KQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5jcmVh
dGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VSVCht
X2luVXBkYXRlTW9kZSk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRp
bmF0b3ItPmNyZWF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKHVpbnQzMl90IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3Qm
IHRpbGVSZWN0KQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5h
dG9yLT51cGRhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAg
IEFTU0VSVChtX2luVXBkYXRlTW9kZSk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAg
IG1fY29vcmRpbmF0b3ItPnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxl
UmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKHVp
bnQzMl90IHRpbGVJRCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29y
ZGluYXRvci0+cmVtb3ZlVGlsZShpZCgpLCB0aWxlSUQpOworICAgIEFTU0VSVChtX2luVXBkYXRl
TW9kZSk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPnJl
bW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKQEAgLTc2MywxMyArNzc0LDI0IEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2luVXBkYXRlTW9kZSA9IHRydWU7CisgICAgaWYgKG1fc2hv
dWxkQWRqdXN0Q29udGVudHNTY2FsZSkgeworICAgICAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7
CisgICAgICAgIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2FsZSA9IGZhbHNlOworICAgIH0KKwog
ICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2Ugd2UgKHJlKWNyZWF0ZSB0aGUgbWFpbiB0aWxl
ZCBiYWNraW5nIHN0b3JlLCBvbmNlIHdlCiAgICAgLy8gaGF2ZSBhIHJlbW90ZSBjbGllbnQgYW5k
IHdlIGFyZSByZWFkeSB0byBzZW5kIG91ciBkYXRhIHRvIHRoZSBVSSBwcm9jZXNzLgogICAgIGlm
ICghbV9tYWluQmFja2luZ1N0b3JlKQogICAgICAgICBjcmVhdGVCYWNraW5nU3RvcmUoKTsKKwor
ICAgIGlmIChtX3Nob3VsZENyZWF0ZVRpbGVzIHx8IG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3Qp
IHsKKyAgICAgICAgYm9vbCBmb3JjZVRpbGVDcmVhdGlvbiA9IG1fc2hvdWxkQ3JlYXRlVGlsZXM7
CisgICAgICAgIG1fc2hvdWxkQ3JlYXRlVGlsZXMgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRB
ZGp1c3RWaXNpYmxlUmVjdCA9IGZhbHNlOworICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNy
ZWF0ZVRpbGVzSWZOZWVkZWQoZm9yY2VUaWxlQ3JlYXRpb24pOworICAgIH0KKwogICAgIG1fbWFp
bkJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZUJ1ZmZlcnMoKTsKLSAgICBtX2luVXBkYXRlTW9kZSA9
IGZhbHNlOwogCiAgICAgLy8gVGhlIHByZXZpb3VzIGJhY2tpbmcgc3RvcmUgaXMga2VwdCBhcm91
bmQgdG8gYXZvaWQgZmxpY2tlcmluZyBiZXR3ZWVuCiAgICAgLy8gcmVtb3ZpbmcgdGhlIGV4aXN0
aW5nIHRpbGVzIGFuZCBwYWludGluZyB0aGUgbmV3IG9uZXMuIFRoZSBmaXJzdCB0aW1lCkBAIC03
ODAsMTIgKzgwMiwxNCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29u
dGVudEJ1ZmZlcnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNr
aW5nU3RvcmVzKCkKIHsKKyAgICBtX2luVXBkYXRlTW9kZSA9IHRydWU7CiAgICAgbV9tYWluQmFj
a2luZ1N0b3JlLmNsZWFyKCk7CiAgICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwog
CiAgICAgcmVsZWFzZUltYWdlQmFja2luZ0lmTmVlZGVkKCk7CiAKICAgICBkaWRDaGFuZ2VMYXll
clN0YXRlKCk7CisgICAgbV9pblVwZGF0ZU1vZGUgPSBmYWxzZTsKIH0KIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2xpZW50KiBjb29yZGluYXRvcikKQEAgLTc5MywxMCArODE3LDEwIEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsCiAgICAgbV9jb29yZGluYXRvciA9IGNvb3JkaW5hdG9yOwogfQog
Ci12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0VmlzaWJsZVJlY3QoKQordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50
KCkKIHsKLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21haW5CYWNraW5n
U3RvcmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICBpZiAoc2hvdWxkSGF2ZUJhY2tp
bmdTdG9yZSgpKQorICAgICAgICBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0ID0gdHJ1ZTsKIH0K
IAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6Omhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdl
cygpCkBAIC04MzYsOCArODYwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNv
bXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zv
cm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOwogCiAgICAgLy8gVGhl
IGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNp
YmxlUmVjdC4KLSAgICBhZGp1c3RWaXNpYmxlUmVjdCgpOwotICAgIGFkanVzdENvbnRlbnRzU2Nh
bGUoKTsKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiBzdGF0aWMg
UGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCAzMGZiODdkZGQ2ZDA2MDZl
NjhjNTU1YzkxOGIzNGJjYzhlYmE2MDU0Li41NzE3NDNmYTllZDZhOWJmZWE2ZDk5YTA2ZTg5OGRj
ODRhNWIxYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNTgsNyArNTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3Jl
YXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3Qg
VmVjdG9yPFdlYkxheWVySUQ+JikgPSAwOwpAQCAtMTQ3LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdT
dG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFyZWEpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3Jl
YXRlVGlsZXMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3Rv
cmVDb250ZW50c1JlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNr
aW5nU3RvcmVWaXNpYmxlUmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRC
YWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklERTsKQEAgLTE2MCw3ICsx
NTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0
KCk7CisgICAgdm9pZCBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHZvaWQg
cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMo
KTsKIApAQCAtMjIxLDYgKzIyMCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbnZhc05lZWRz
RGlzcGxheSA6IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzQ3JlYXRlIDogMTsKICAgICBib29s
IG1fY2FudmFzTmVlZHNEZXN0cm95IDogMTsKKyAgICBib29sIG1fc2hvdWxkQWRqdXN0Q29udGVu
dHNTY2FsZSA6IDE7CisgICAgYm9vbCBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0IDogMTsKKyAg
ICBib29sIG1fc2hvdWxkQ3JlYXRlVGlsZXMgOiAxOwogCiAgICAgV2ViS2l0OjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJDbGllbnQqIG1fY29vcmRpbmF0b3I7CiAgICAgT3duUHRyPFRpbGVkQmFj
a2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggNTAzZmQwMTYyMTliNmI2MDc3
OTA1N2IzZjI5NmI3OWM5ZTM5M2RhMi4uMTU5ZTQwMWI3MDU1NGRkZWNkMTFmNDZiZTZlMzQ5NTc4
MjA4NGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0
b3I6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcios
CiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiB7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9
CiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCkKQEAgLTYzMCw3ICs2MzEsNyBAQCBQYXNz
T3duUHRyPEdyYXBoaWNzTGF5ZXI+IExheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVHcmFwaGlj
c0xheWVyKEdyYXBoaWNzTGF5ZQogICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKICAg
ICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyKTsKICAgICBsYXllci0+c2V0Q29udGVudHNT
Y2FsZShtX2NvbnRlbnRzU2NhbGUpOwotICAgIGxheWVyLT5hZGp1c3RWaXNpYmxlUmVjdCgpOwor
ICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHJldHVybiBh
ZG9wdFB0cihsYXllcik7CiB9CiAKQEAgLTcxMiw3ICs3MTMsNyBAQCB2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGZs
b2F0IHNjYQogICAgICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpCiAgICAgICAg
ICAgICAgICAgKCppdCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOwogICAgICAgICAgICAgaWYg
KGNvbnRlbnRzUmVjdERpZENoYW5nZSkKLSAgICAgICAgICAgICAgICAoKml0KS0+YWRqdXN0Vmlz
aWJsZVJlY3QoKTsKKyAgICAgICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFk
anVzdG1lbnQoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzQ4LDExICs3NDksNiBAQCB2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW5kZXJOZXh0RnJhbWUoKQogICAgICAgICBtX3VwZGF0
ZUF0bGFzZXNbaV0tPmRpZFN3YXBCdWZmZXJzKCk7CiB9CiAKLWJvb2wgTGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICFtX2lzU3VzcGVuZGVkICYmICFtX3dhaXRpbmdGb3JVSVByb2Nlc3M7Ci19Ci0KIHZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgVGVtcG9yYXJ5
Q2hhbmdlPGJvb2w+IHB1cmdpbmdUb2dnbGUobV9pc1B1cmdpbmcsIHRydWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggZTA5ZmUz
YWJhN2FmZWUwNjU2NjQ1MWM0ZjQ5ODg2NjUyYWVjZDgxNC4uMTg0Y2Q1ZjhmMjViMjkyMGQzNzZk
ODZkOTI0NTdhYTA5ZTc4ZjQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5oCkBAIC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNr
aW5nU3RvcmVzKCk7Ci0gICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dl
ZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9y
eSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBPVkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178153</attachid>
            <date>2012-12-06 21:05:50 -0800</date>
            <delta_ts>2012-12-07 22:20:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121207140308.patch</filename>
            <type>text/plain</type>
            <size>31492</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0MDg0YmZkYWZkZjlj
NDU4ZmZmMDY5Y2RhMzk5NDFiZTQ0YjlkZS4uYTBjNDU0OTUwMzVhNDI2ZDM2ZmU5YWNjNTMyM2I1
NzU5MGZlMTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTA2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjp0cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNh
bGx5KCkgaXMgdXNlZCB3aGVuIGNsYXNzCisgICAgICAgIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxl
ZCBhc3luY2hyb25vdXNseSBieSBjbGllbnQuIFRpbGVzIGFyZSBjcmVhdGVkLAorICAgICAgICB1
cGRhdGVkIGFuZCByZW1vdmVkIHdoZW4gaXRzIG93biB0aW1lcnMgYXJlIGZpcmVkLiBBZnRlciB0
aGlzIHBhdGNoCisgICAgICAgIEZyYW1lIHNldHMgbV90cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0
aWNhbGx5IHRvIHRydWUuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHJlbW92ZSBUaWxlZEJhY2tp
bmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpCisgICAgICAg
IHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAg
ICBSZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGFn
ZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3Rv
cmVFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5n
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3Rv
cnlWZWN0b3IpOgorICAgICAgICAgICAgU2VwYXJhdGUgc2V0dGluZyBhIHRyYWplY3RvcnkgdmVj
dG9yIGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpLgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzSWZOZWVkZWQpOgorICAgICAgICAgICAgUmVuYW1l
ZCBmcm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om5lZWRUb0NyZWF0ZVRpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjppc1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVu
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzdGFydFRpbGVCdWZm
ZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGls
ZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5n
U3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUaWxl
ZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dHJp
Z2dlclRpbGVVcGRhdGVzQXV0b21hdGljYWxseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50Ojp0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKToKKyAg
ICAgICAgICAgIElmIFRpbGVkQmFja2luZ1N0b3JlIGRvZXMgbm90IGNyZWF0ZSBhbGwgdGlsZXMs
IFRpbGVkQmFja2luZ1N0b3JlCisgICAgICAgICAgICBub3RpZmllcyBhIGNsaWVudCBvZiBuZWVk
aW5nIHRvIGNyZWF0ZSB0aWxlcyBtb3JlLCB3aGVuCisgICAgICAgICAgICBtX3RyaWdnZXJUaWxl
VXBkYXRlc0F1dG9tYXRpY2FsbHkgaXMgZmFsc2UuCisKIDIwMTItMTItMDYgIEFuZHJlaSBCdWN1
ciAgPGFidWN1ckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdpb25zXSBSZW1vdmUgdGhl
IHNhbml0aXplIG1lY2hhbmlzbSBmcm9tIExpbmVGcmFnbWVudGF0aW9uRGF0YQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCmluZGV4IDAzY2NhZGQyZTUyZWQ3ZDFmODM3MGY5Njc3M2FhZGVkN2M3ZjljNGIuLjMyOGQ4
NmUxMDM1MDM1OGIzMjJjN2M4N2ViZDcxMTJkYTYwNTBmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMi0xMi0wNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVmYWN0b3IgVGls
ZWRCYWNraW5nU3RvcmUgY29kZSBpbiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbmFt
ZXMgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCkgdG8gY3JlYXRlVGlsZXNJZk5lZWRlZCgp
CisgICAgICAgIGluIFRpbGVkQmFja2luZ1N0b3JlLCBzbyBhIGNsaWVudCBtdXN0IGJlIGFtZW5k
ZWQuCisKKyAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKKyAgICAgICAgKF9ld2tf
dmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6CisKIDIwMTItMTItMDUgIEhhbHRv
biBIdW8gIDxoYWx0b24uaHVvQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVuaWZ5IGNv
ZGluZyBzdHlsZSBmb3IgQ01ha2UgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMzk1MDM0YzIzNzIy
YjMxNTEwNGQ3ZTlmOTc2N2NkYWQ2NjZhZmIxYy4uODdjMWNhYWJlN2E5NDMyYjcwMTQxMzcyZjZl
ZGQ3ZDFlOTIyMDI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0w
NiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBD
b29yZGluYXRlZCBHcmFwaGljczogUmVmYWN0b3IgVGlsZWRCYWNraW5nU3RvcmUgY29kZSBpbiBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgZnJvbSBjb3ZlcldpdGhUaWxlc0lm
TmVlZGVkKCkgdG8gY3JlYXRlVGlsZXNJZk5lZWRlZCgpCisgICAgICAgIGluIFRpbGVkQmFja2lu
Z1N0b3JlLCBzbyBhIGNsaWVudCBtdXN0IGJlIGFtZW5kZWQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6
OnJlbmRlckZyb21UaWxlZEJhY2tpbmdTdG9yZSk6CisKIDIwMTItMTItMDYgIFBpZXJyZSBSb3Nz
aSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAKICAgICAgICAgW1F0XSBRV2ViVmlldyB1c2Vz
IHRoZSBtb2JpbGUgc3R5bGUgYW5kIGRvZXNuJ3QgZm9sbG93IFF0J3Mgc3R5bGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmNzkzYTBhODAyZWJiN2RhYTY3ODE3NTA2NTgyOTVkZWE3YWM3Mjk3Li41NzJlMDIzZDRh
MTdmMmI4ZDRjNTJlOTg3MzU3MmJjZWY0YzVhODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTItMTItMDYgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0
b3JlIGNvZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIgaGFzIGNvbXBsZXggY29kZSByZWxhdGVkIHRvIFRpbGVkQmFja2luZ1N0b3JlLgor
ICAgICAgICBJdCBoYXMgdHdvIHByb2JsZW0uCisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciBoYWNrcyBUaWxlZEJhY2tpbmdTdG9yZSB0byBwcmV2ZW50CisgICAgICAgIFRpbGVk
QmFja2luZ1N0b3JlIGZyb20gYXN5bmNocm9ub3VzbHkgc2VuZGluZyBVcGRhdGVUaWxlIG1lc3Nh
Z2UgdG8gVUkKKyAgICAgICAgUHJvY2Vzcy4KKyAgICAgICAgMi4gQ3JlYXRlVGlsZSBhbmQgUmVt
b3ZlVGlsZSBtZXNzYWdlIGNhbiBiZSBzZW50IHRvIFVJIFByb2Nlc3MgYXQgYW55IHRpbWUuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlIFRp
bGVkQmFja2luZ1N0b3JlIG1vcmUgZXhwbGljaXRseS4KKyAgICAgICAgSXQgbWVhbnMgb25seSBk
dXJpbmcgZmx1c2hpbmcgbGF5ZXIgc3RhdGVzLCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgY2FsbHMgbWV0aG9kcyBvZiBUaWxlZEJhY2tpbmdTdG9yZSwgd2hpY2ggaW5kaXJlY3Rs
eSBjYWxsIGNyZWF0ZVRpbGUoKSwKKyAgICAgICAgdXBkYXRlVGlsZSgpIGFuZCByZW1vdmVUaWxl
KCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBwdXJwb3NlIG9mIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6bV9pblVwZGF0ZU1vZGUgaXMKKyAgICAgICAgY2hhbmdlZC4gQ3VycmVudGx5
LCB3ZSBzZXQgbV9pblVwZGF0ZU1vZGUgdG8gdHJ1ZSB3aGVuIHVwZGF0aW5nIGEKKyAgICAgICAg
YmFja2luZyBzdG9yZS4gQWZ0ZXIgdGhpcyBwYXRjaCwgd2Ugc2V0IG1faW5VcGRhdGVNb2RlIHRv
IHRydWUgd2hlbgorICAgICAgICBzZW5kaW5nIG1lc3NhZ2VzIHZpYSBMYXllclRyZWVDb29yZGlu
YXRvciB0byBVSSBQcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRq
dXN0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlVGlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50
QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnB1
cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Q2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6bm90aWZ5Rmx1
c2hSZXF1aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVh
dGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXll
clRyZWVDb29yZGluYXRvcik6CisKIDIwMTItMTItMDYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MzY5MDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGFjNzk0NjkxZDc1NDEzNDA1Y2QwZDY1Njdl
MTliMDQxYWMyODE3ZWMuLjhmNzg4ZDAxMDZiYWUzMjVkYzIyZTQ3N2QyYTUzYjVmZGRmYzkzYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04MjAsNiArODIwLDcgQEAgdm9pZCBGcmFtZTo6c2V0
VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBpZiAobV90aWxlZEJh
Y2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdGlsZWRCYWNraW5nU3RvcmUgPSBh
ZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUodGhpcykpOworICAgIG1fdGlsZWRCYWNraW5n
U3RvcmUtPnRyaWdnZXJUaWxlVXBkYXRlc0F1dG9tYXRpY2FsbHkoKTsKICAgICBpZiAobV92aWV3
KQogICAgICAgICBtX3ZpZXctPnNldFBhaW50c0VudGlyZUNvbnRlbnRzKHRydWUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3Rv
cmUuY3BwCmluZGV4IDlhMzdhOTZmYWIyZWI2N2EyNTE3MzVlZjlkZWMwZmE4ZjhiNGYyYTguLjk3
MzM3NzIyODlhYWM1YjY0Y2Q3NmFhOTc2MzYwN2NmMjZkMWEwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAg
LTQxLDEyICs0MSwxMyBAQCBUaWxlZEJhY2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3RvcmUoVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCwgUGFzc093blB0cgogICAgICwgbV90aWxlQnVm
ZmVyVXBkYXRlVGltZXIodGhpcywgJlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQnVmZmVyVXBkYXRl
VGltZXJGaXJlZCkKICAgICAsIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIodGhpcywgJlRpbGVk
QmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVVcGRhdGVUaW1lckZpcmVkKQogICAgICwgbV90aWxl
U2l6ZShkZWZhdWx0VGlsZURpbWVuc2lvbiwgZGVmYXVsdFRpbGVEaW1lbnNpb24pCi0gICAgLCBt
X3RpbGVDcmVhdGlvbkRlbGF5KDAuMDEpCiAgICAgLCBtX2NvdmVyQXJlYU11bHRpcGxpZXIoMi4w
ZikKICAgICAsIG1fY29udGVudHNTY2FsZSgxLmYpCiAgICAgLCBtX3BlbmRpbmdTY2FsZSgwKQor
ICAgICwgbV90cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQogICAgICwgbV9j
b250ZW50c0Zyb3plbihmYWxzZSkKICAgICAsIG1fc3VwcG9ydHNBbHBoYShmYWxzZSkKKyAgICAs
IG1fbmVlZFRvQ3JlYXRlTmV4dFRpbGVzKGZhbHNlKQogewogfQogCkBAIC02MSwyNiArNjIsMjAg
QEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CiB9CiAKLXZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OnNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSkKK3ZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJh
amVjdG9yeVZlY3RvcikKIHsKLSAgICBtX3RpbGVDcmVhdGlvbkRlbGF5ID0gZGVsYXk7CisgICAg
bV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CisgICAgbV9wZW5k
aW5nVHJhamVjdG9yeVZlY3Rvci5ub3JtYWxpemUoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdT
dG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5
VmVjdG9yKQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXNJZk5lZWRlZCgpCiB7
CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7CiAgICAgSW50
UmVjdCByZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNv
bnRlbnRzUmVjdCgpKTsKIAotICAgIEZsb2F0UG9pbnQgbm9ybWFsaXplZFZlY3RvciA9IHRyYWpl
Y3RvcnlWZWN0b3I7Ci0gICAgbm9ybWFsaXplZFZlY3Rvci5ub3JtYWxpemUoKTsKLQotICAgIGlm
IChtX3RyYWplY3RvcnlWZWN0b3IgPT0gbm9ybWFsaXplZFZlY3RvciAmJiBtX3Zpc2libGVSZWN0
ID09IHZpc2libGVSZWN0ICYmIG1fcmVjdCA9PSByZWN0KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3RyYWplY3RvcnlWZWN0b3IgPSBub3JtYWxpemVkVmVjdG9yOwotICAgIG1fdmlzaWJsZVJl
Y3QgPSB2aXNpYmxlUmVjdDsKLQotICAgIGNyZWF0ZVRpbGVzKCk7CisgICAgYm9vbCBkaWRDaGFu
Z2UgPSBtX3RyYWplY3RvcnlWZWN0b3IgIT0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciB8fCBt
X3Zpc2libGVSZWN0ICE9IHZpc2libGVSZWN0IHx8IG1fcmVjdCAhPSByZWN0OworICAgIGlmIChk
aWRDaGFuZ2UgfHwgbV9uZWVkVG9DcmVhdGVOZXh0VGlsZXMpCisgICAgICAgIGNyZWF0ZVRpbGVz
KCk7CiB9CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudHNEaXJ0eVJlY3QpCkBAIC0xMDgsNyArMTAzLDcgQEAgdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKIAog
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQogewotICAgIGlmICgh
bV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSB8fCBtX2NvbnRlbnRz
RnJvemVuKQorICAgIGlmIChtX2NvbnRlbnRzRnJvemVuKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCk7CkBAIC0xOTMsNyArMTg4
LDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogICAgIG1f
Y29udGVudHNTY2FsZSA9IG1fcGVuZGluZ1NjYWxlOwogICAgIG1fcGVuZGluZ1NjYWxlID0gMDsK
ICAgICBtX3RpbGVzLmNsZWFyKCk7Ci0gICAgY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAg
IGNyZWF0ZVRpbGVzSWZOZWVkZWQoKTsKIH0KIAogZG91YmxlIFRpbGVkQmFja2luZ1N0b3JlOjp0
aWxlRGlzdGFuY2UoY29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6OkNvb3JkaW5h
dGUmIHRpbGVDb29yZGluYXRlKSBjb25zdApAQCAtMjQ1LDYgKzI0MCw4IEBAIHZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAvLyBVcGRhdGUgb3VyIGJhY2tpbmcgc3Rv
cmUgZ2VvbWV0cnkuCiAgICAgY29uc3QgSW50UmVjdCBwcmV2aW91c1JlY3QgPSBtX3JlY3Q7CiAg
ICAgbV9yZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNv
bnRlbnRzUmVjdCgpKTsKKyAgICBtX3RyYWplY3RvcnlWZWN0b3IgPSBtX3BlbmRpbmdUcmFqZWN0
b3J5VmVjdG9yOworICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdCgpOwogCiAgICAgaWYg
KG1fcmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgc2V0Q292ZXJSZWN0KEludFJlY3QoKSk7CkBA
IC0yNzMsMTIgKzI3MCw5IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkK
ICAgICAgKiBXZSBtdXN0IGNyZWF0ZSBvciBrZWVwIHRoZSB0aWxlcyBpbiB0aGUgSEVSRSByZWdp
b24uCiAgICAgICovCiAKLSAgICBjb25zdCBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlz
aWJsZVJlY3QoKTsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0KICAgICBJbnRS
ZWN0IGNvdmVyUmVjdDsKICAgICBJbnRSZWN0IGtlZXBSZWN0OwotICAgIGNvbXB1dGVDb3ZlckFu
ZEtlZXBSZWN0KHZpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKKyAgICBjb21wdXRl
Q292ZXJBbmRLZWVwUmVjdChtX3Zpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKIAog
ICAgIHNldENvdmVyUmVjdChjb3ZlclJlY3QpOwogICAgIHNldEtlZXBSZWN0KGtlZXBSZWN0KTsK
QEAgLTMwOSw3ICszMDMsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygp
CiAgICAgICAgICAgICBpZiAodGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICsrcmVxdWlyZWRUaWxlQ291bnQ7Ci0gICAgICAg
ICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UodmlzaWJsZVJlY3QsIGN1cnJlbnRD
b29yZGluYXRlKTsKKyAgICAgICAgICAgIGRvdWJsZSBkaXN0YW5jZSA9IHRpbGVEaXN0YW5jZSht
X3Zpc2libGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0ZSk7CiAgICAgICAgICAgICBpZiAoZGlzdGFu
Y2UgPiBzaG9ydGVzdERpc3RhbmNlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKGRpc3RhbmNlIDwgc2hvcnRlc3REaXN0YW5jZSkgewpAQCAtMzMzLDggKzMyNywy
MCBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICAgIHVwZGF0
ZVRpbGVCdWZmZXJzKCk7CiAKICAgICAvLyBSZS1jYWxsIGNyZWF0ZVRpbGVzIG9uIGEgdGltZXIg
dG8gY292ZXIgdGhlIHZpc2libGUgYXJlYSB3aXRoIHRoZSBuZXdlc3Qgc2hvcnRlc3QgZGlzdGFu
Y2UuCi0gICAgaWYgKHJlcXVpcmVkVGlsZUNvdW50KQotICAgICAgICBtX2JhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChtX3RpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICBtX25lZWRU
b0NyZWF0ZU5leHRUaWxlcyA9IHJlcXVpcmVkVGlsZUNvdW50OworICAgIGlmIChtX25lZWRUb0Ny
ZWF0ZU5leHRUaWxlcykKKyAgICAgICAgbmVlZFRvQ3JlYXRlVGlsZXMoKTsKK30KKwordm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6bmVlZFRvQ3JlYXRlVGlsZXMoKQoreworICAgIGlmICghbV90cmln
Z2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNhbGx5KSB7CisgICAgICAgIG1fY2xpZW50LT50aWxlZEJh
Y2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRpbGVDcmVhdGlvbkRlbGF5ID0gMC4wMTsKKyAgICBz
dGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRpbGVDcmVhdGlvbkRlbGF5KTsKIH0KIAogdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0Rm9yQ29udGVudHNSZWN0KEludFJlY3QmIHJlY3Qp
IGNvbnN0CkBAIC00MjMsNyArNDI5LDcgQEAgYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNCYWNr
aW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkgY29uc3QKIAogYm9vbCBUaWxlZEJhY2tpbmdTdG9y
ZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
Y29udGVudHNGcm96ZW4gfHwgIW1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxv
d2VkKCk7CisgICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW47CiB9CiAKIGJvb2wgVGlsZWRCYWNr
aW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpCkBAIC01MjYsNiArNTMyLDkgQEAgVGlsZTo6Q29v
cmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQKIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVy
VXBkYXRlVGltZXIoKQogeworICAgIGlmICghbV90cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNh
bGx5KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV90aWxlQnVmZmVyVXBkYXRlVGltZXIu
aXNBY3RpdmUoKSB8fCBpc1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CkBAIC01
MzMsMTggKzU0MiwyMyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJV
cGRhdGVUaW1lcigpCiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVCdWZmZXJVcGRhdGVU
aW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopCiB7CisgICAgQVNTRVJUKG1fdHJp
Z2dlclRpbGVVcGRhdGVzQXV0b21hdGljYWxseSk7CiAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsK
IH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1l
cigpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVy
KGRvdWJsZSBpbnRlcnZhbCkKIHsKKyAgICBpZiAoIW1fdHJpZ2dlclRpbGVVcGRhdGVzQXV0b21h
dGljYWxseSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlVXBkYXRl
VGltZXIuaXNBY3RpdmUoKSB8fCBpc0JhY2tpbmdTdG9yZVVwZGF0ZXNTdXNwZW5kZWQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90
KDApOworICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFs
KTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlVXBkYXRlVGltZXJG
aXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKQogeworICAgIEFTU0VSVChtX3RyaWdnZXJU
aWxlVXBkYXRlc0F1dG9tYXRpY2FsbHkpOwogICAgIGNyZWF0ZVRpbGVzKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5o
CmluZGV4IDA4MmJlNzBjOGViMjc1MTc5MGI3YWI4Nzc1Njk0OWJhYzgxYTZkMjguLjJmYmM2NTEy
Y2U5MmQxN2I0ZjFmMGI3MTU4MjI2OGM5ZmYyNTg0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtNDYsNyArNDYs
MTIgQEAgcHVibGljOgogCiAgICAgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CiAKLSAgICB2b2lkIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoY29u
c3QgRmxvYXRQb2ludCYgcGFubmluZ1RyYWplY3RvcnlWZWN0b3IgPSBGbG9hdFBvaW50KCkpOwor
ICAgIC8vIFVzZWQgd2hlbiBjbGFzcyBtZXRob2RzIGNhbm5vdCBiZSBjYWxsZWQgYXN5bmNocm9u
b3VzbHkgYnkgY2xpZW50LgorICAgIC8vIFRpbGVzIGFyZSBjcmVhdGVkLCB1cGRhdGVkIGFuZCBy
ZW1vdmVkIHdoZW4gaXRzIG93biB0aW1lcnMgYXJlIGZpcmVkLgorICAgIHZvaWQgdHJpZ2dlclRp
bGVVcGRhdGVzQXV0b21hdGljYWxseSgpIHsgbV90cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNh
bGx5ID0gdHJ1ZTsgfQorCisgICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0
UG9pbnQmKTsKKyAgICB2b2lkIGNyZWF0ZVRpbGVzSWZOZWVkZWQoKTsKIAogICAgIGZsb2F0IGNv
bnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAgICB2b2lkIHNldENv
bnRlbnRzU2NhbGUoZmxvYXQpOwpAQCAtNjIsOSArNjcsNiBAQCBwdWJsaWM6CiAgICAgSW50U2l6
ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KICAgICB2b2lkIHNldFRpbGVTaXpl
KGNvbnN0IEludFNpemUmKTsKIAotICAgIGRvdWJsZSB0aWxlQ3JlYXRpb25EZWxheSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGlsZUNyZWF0aW9uRGVsYXk7IH0KLSAgICB2b2lkIHNldFRpbGVDcmVhdGlv
bkRlbGF5KGRvdWJsZSBkZWxheSk7Ci0KICAgICBJbnRSZWN0IG1hcFRvQ29udGVudHMoY29uc3Qg
SW50UmVjdCYpIGNvbnN0OwogICAgIEludFJlY3QgbWFwRnJvbUNvbnRlbnRzKGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKIApAQCAtODEsMTEgKzgzLDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCk7Ci0gICAgdm9pZCBzdGFydEJhY2tp
bmdTdG9yZVVwZGF0ZVRpbWVyKCk7CisgICAgdm9pZCBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRp
bWVyKGRvdWJsZSA9IDApOwogCiAgICAgdm9pZCB0aWxlQnVmZmVyVXBkYXRlVGltZXJGaXJlZChU
aW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKTsKICAgICB2b2lkIGJhY2tpbmdTdG9yZVVwZGF0ZVRp
bWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+Kik7CiAKKyAgICB2b2lkIG5lZWRUb0Ny
ZWF0ZVRpbGVzKCk7CiAgICAgdm9pZCBjcmVhdGVUaWxlcygpOwogICAgIHZvaWQgY29tcHV0ZUNv
dmVyQW5kS2VlcFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIEludFJlY3QmIGNvdmVy
UmVjdCwgSW50UmVjdCYga2VlcFJlY3QpIGNvbnN0OwogCkBAIC0xMjAsMTAgKzEyMywxMCBAQCBw
cml2YXRlOgogICAgIFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZVVwZGF0
ZVRpbWVyOwogCiAgICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGRvdWJsZSBtX3RpbGVDcmVh
dGlvbkRlbGF5OwogICAgIGZsb2F0IG1fY292ZXJBcmVhTXVsdGlwbGllcjsKIAogICAgIEZsb2F0
UG9pbnQgbV90cmFqZWN0b3J5VmVjdG9yOworICAgIEZsb2F0UG9pbnQgbV9wZW5kaW5nVHJhamVj
dG9yeVZlY3RvcjsKICAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7CiAKICAgICBJbnRSZWN0IG1f
Y292ZXJSZWN0OwpAQCAtMTMzLDggKzEzNiwxMCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fY29u
dGVudHNTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKIAorICAgIGJvb2wgbV90cmln
Z2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNhbGx5OwogICAgIGJvb2wgbV9jb250ZW50c0Zyb3plbjsK
ICAgICBib29sIG1fc3VwcG9ydHNBbHBoYTsKKyAgICBib29sIG1fbmVlZFRvQ3JlYXRlTmV4dFRp
bGVzOwogCiAgICAgZnJpZW5kIGNsYXNzIFRpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKaW5k
ZXggMGUwMjE0Nzc3MzMwZTI1ZjFmYzg0Mzg3MWY0NWE1YTA5OGY5Y2QxZC4uMDc3ODRmZTc0OTk2
OGVlODFhMTNmMGNkNzI4NGNjY2QyZDVjYjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0z
Myw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQ
YWludEJlZ2luKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVk
QXJlYSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxv
d2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tp
bmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCkgeyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVk
QmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxl
ZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRC
YWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCmluZGV4IGM1Nzc5YWIzZjkzN2JmOGExNTEwODI0ZDJj
OTllYTdhMDc3YTMxYzAuLjg1ZTM0ZDUxZDk5NDg2OTAyOGZkZThiOWIwYjYwODkyYjk4MDkxNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC0yNjYsNyAr
MjY2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRz
X3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc20KICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZy
YW1lKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiAgICAgaWYgKG1haW5GcmFtZSAmJiBtYWluRnJh
bWUtPnRpbGVkQmFja2luZ1N0b3JlKCkpCi0gICAgICAgIG1haW5GcmFtZS0+dGlsZWRCYWNraW5n
U3RvcmUoKS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgICAgICBtYWluRnJhbWUtPnRp
bGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZVRpbGVzSWZOZWVkZWQoKTsKICNlbmRpZgogCiAgICAg
RXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdl
X25ldyhzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKaW5kZXggN2Y1NWRhMzYyZTgx
ZDhlMWY5NTNmYjc0NjIyM2Y3MDJiMDAwZDBkNC4uYzQ3YTk5ZmRmZGI4NDFmY2FjZTI5NTBhZWUw
NThmYTdlNjkxZTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViRnJhbWVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgYm9vbCBRV2ViRnJh
bWVBZGFwdGVyOjpyZW5kZXJGcm9tVGlsZWRCYWNraW5nU3RvcmUoUVBhaW50ZXIqIHBhaW50ZXIs
IGNvbnN0IFFSZWcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZXQgdGhlIGJhY2tpbmcgc3RvcmUgdmlld3BvcnQgZWFybGllciB0aGFuIGluIHBhaW50
Ci0gICAgZnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQo
KTsKKyAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+Y3JlYXRlVGlsZXNJZk5lZWRlZCgp
OwogCiAgICAgaWYgKCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTg1NmY1MWY0NTA1NjBjYWE0
MTZkZDgxZjk4ZjkxYzIyY2U3NjQ3ZS4uZDNhM2M0OWJkZjViMzJlODQ2NTY4NTkzNmExZjgyZmQ1
OGFlOTIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNiw2ICszNiw5IEBACiAjaW5jbHVkZSAiV2ViUGFn
ZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaWZuZGVmIE5ERUJVRworI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KKyNl
bmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTEwNyw3ICsxMTAsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
ZGlkQ2hhbmdlR2VvbWV0cnkoKQogCiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBHcmFw
aGljc0xheWVyKGNsaWVudCkKKyNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2luVXBkYXRlTW9kZShm
YWxzZSkKKyNlbmRpZgogICAgICwgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVjdCh0cnVlKQogICAg
ICwgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSh0cnVlKQogICAgICwgbV9zaG91bGRTeW5jQ2hpbGRy
ZW4odHJ1ZSkKQEAgLTExOCw2ICsxMjMsOCBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAg
LCBtX2NhbnZhc05lZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1fY2FudmFzTmVlZHNDcmVhdGUo
ZmFsc2UpCiAgICAgLCBtX2NhbnZhc05lZWRzRGVzdHJveShmYWxzZSkKKyAgICAsIG1fc2hvdWxk
QWRqdXN0Q29udGVudHNTY2FsZShmYWxzZSkKKyAgICAsIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJl
Y3QoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCiAgICAgLCBtX2NvbnRlbnRzU2NhbGUo
MSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCkBAIC01OTIsNiArNTk5LDEw
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVDYW52YXNJZk5lZWRlZCgp
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKCFtX2luVXBk
YXRlTW9kZSk7CisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHVwZGF0ZU1vZGVQcm90ZWN0b3Io
bV9pblVwZGF0ZU1vZGUsIHRydWUpOworI2VuZGlmCiAgICAgc3luY0ltYWdlQmFja2luZygpOwog
ICAgIHN5bmNMYXllclN0YXRlKCk7CiAgICAgc3luY0FuaW1hdGlvbnMoKTsKQEAgLTYzMywxNCAr
NjQ0LDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9v
bCBpc1Jvb3QpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29u
dGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0
b3IpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2lu
Z1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKHRyYWplY3RvcnlWZWN0b3IpOworICAgIGlm
ICghbV9tYWluQmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21haW5CYWNr
aW5nU3RvcmUtPnNldFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CisgICAgc2V0
TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiB7CiAgICAgbV9jb250ZW50
c1NjYWxlID0gc2NhbGU7Ci0gICAgYWRqdXN0Q29udGVudHNTY2FsZSgpOworICAgIGlmIChzaG91
bGRIYXZlQmFja2luZ1N0b3JlKCkpCisgICAgICAgIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2Fs
ZSA9IHRydWU7CiB9CiAKIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0aXZl
Q29udGVudHNTY2FsZSgpCkBAIC02NTAsOSArNjY1LDcgQEAgZmxvYXQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKIAogdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUoKQogewotICAgIGlmICghc2hvdWxkSGF2
ZUJhY2tpbmdTdG9yZSgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQoc2hvdWxkSGF2
ZUJhY2tpbmdTdG9yZSgpKTsKICAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSB8fCBtX21haW5C
YWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSA9PSBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNjg0LDExICs2OTcsMTEgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPElu
dFJlY3Q+JgogewogfQogCi1ib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNr
aW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0Cit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6dGlsZWRCYWNraW5nU3RvcmVOZWVkVG9DcmVhdGVUaWxlcygpCiB7Ci0gICAgaWYgKCFt
X2luVXBkYXRlTW9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2Nvb3Jk
aW5hdG9yLT5sYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKTsKKyAgICBtX3Nob3VsZEFkanVz
dFZpc2libGVSZWN0ID0gdHJ1ZTsKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgp
LT5ub3RpZnlGbHVzaFJlcXVpcmVkKHRoaXMpOwogfQogCiBJbnRSZWN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKQpAQCAtNzMxLDI4ICs3
NDQsMzAgQEAgQ29sb3IgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9y
ZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAKIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBpbnQmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAgIGlmICghbV9jb29y
ZGluYXRvcikKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PigpOwotCisgICAgQVNTRVJUKG1faW5VcGRhdGVNb2RlKTsKKyAgICBBU1NFUlQobV9jb29y
ZGluYXRvcik7CiAgICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShz
aXplLCBjb250ZW50c09wYXF1ZSgpID8gMCA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSwgYXRsYXMsIG9mZnNldCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
cmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0
ZUluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQogewotICAgIGlmIChtX2Nv
b3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJ
RCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VSVChtX2luVXBkYXRlTW9kZSk7Cisg
ICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVRpbGUo
aWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFj
ZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQogewotICAg
IGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT51cGRhdGVUaWxlKGlk
KCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VSVChtX2luVXBkYXRl
TW9kZSk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPnVw
ZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkKIHsK
LSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+cmVtb3ZlVGls
ZShpZCgpLCB0aWxlSUQpOworICAgIEFTU0VSVChtX2luVXBkYXRlTW9kZSk7CisgICAgQVNTRVJU
KG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPnJlbW92ZVRpbGUoaWQoKSwgdGls
ZUlEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRC
dWZmZXJzKCkKQEAgLTc2MywxMyArNzc4LDIyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2luVXBkYXRlTW9kZSA9IHRydWU7CisgICAgaWYgKG1fc2hvdWxkQWRqdXN0Q29udGVudHNT
Y2FsZSkgeworICAgICAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7CisgICAgICAgIG1fc2hvdWxk
QWRqdXN0Q29udGVudHNTY2FsZSA9IGZhbHNlOworICAgIH0KKwogICAgIC8vIFRoaXMgaXMgdGhl
IG9ubHkgcGxhY2Ugd2UgKHJlKWNyZWF0ZSB0aGUgbWFpbiB0aWxlZCBiYWNraW5nIHN0b3JlLCBv
bmNlIHdlCiAgICAgLy8gaGF2ZSBhIHJlbW90ZSBjbGllbnQgYW5kIHdlIGFyZSByZWFkeSB0byBz
ZW5kIG91ciBkYXRhIHRvIHRoZSBVSSBwcm9jZXNzLgogICAgIGlmICghbV9tYWluQmFja2luZ1N0
b3JlKQogICAgICAgICBjcmVhdGVCYWNraW5nU3RvcmUoKTsKKworICAgIGlmIChtX3Nob3VsZEFk
anVzdFZpc2libGVSZWN0KSB7CisgICAgICAgIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QgPSBm
YWxzZTsKKyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlc0lmTmVlZGVkKCk7
CisgICAgfQorCiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT51cGRhdGVUaWxlQnVmZmVycygpOwot
ICAgIG1faW5VcGRhdGVNb2RlID0gZmFsc2U7CiAKICAgICAvLyBUaGUgcHJldmlvdXMgYmFja2lu
ZyBzdG9yZSBpcyBrZXB0IGFyb3VuZCB0byBhdm9pZCBmbGlja2VyaW5nIGJldHdlZW4KICAgICAv
LyByZW1vdmluZyB0aGUgZXhpc3RpbmcgdGlsZXMgYW5kIHBhaW50aW5nIHRoZSBuZXcgb25lcy4g
VGhlIGZpcnN0IHRpbWUKQEAgLTc4MCw2ICs4MDQsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgVGVt
cG9yYXJ5Q2hhbmdlPGJvb2w+IHVwZGF0ZU1vZGVQcm90ZWN0b3IobV9pblVwZGF0ZU1vZGUsIHRy
dWUpOworI2VuZGlmCiAgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAgICAgbV9wcmV2
aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwogCkBAIC03OTMsMTAgKzgyMCwxMCBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJDbAogICAgIG1fY29vcmRpbmF0b3IgPSBjb29yZGluYXRvcjsKIH0KIAot
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdFZpc2libGVSZWN0KCkKK3ZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgp
CiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0
b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgaWYgKHNob3VsZEhhdmVCYWNraW5n
U3RvcmUoKSkKKyAgICAgICAgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCA9IHRydWU7CiB9CiAK
IGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMo
KQpAQCAtODM2LDggKzg2Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21w
dXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3Jt
ID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKIAogICAgIC8vIFRoZSBj
b21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJs
ZVJlY3QuCi0gICAgYWRqdXN0VmlzaWJsZVJlY3QoKTsKLSAgICBhZGp1c3RDb250ZW50c1NjYWxl
KCk7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0KIAogc3RhdGljIFBh
c3NPd25QdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggMzBmYjg3ZGRkNmQwNjA2ZTY4
YzU1NWM5MThiMzRiY2M4ZWJhNjA1NC4uOWY1NjFjMDUxODBiZjY5NjU5MWZiMWNmODI4NzBmYWYy
YTg0ZWE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkgPSAwOwogCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0
ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZl
Y3RvcjxXZWJMYXllcklEPiYpID0gMDsKQEAgLTE0Nyw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3Rv
cmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhaW50ZWRBcmVhKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgdGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0
ZVRpbGVzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3Jl
Q29udGVudHNSZWN0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2lu
Z1N0b3JlVmlzaWJsZVJlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIENvbG9yIHRpbGVkQmFj
a2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0xNjAsNyArMTU5
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCopOwogCi0gICAgdm9pZCBhZGp1c3RWaXNpYmxlUmVjdCgp
OworICAgIHZvaWQgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICB2b2lkIHB1
cmdlQmFja2luZ1N0b3JlcygpOwogICAgIGJvb2wgaGFzUGVuZGluZ1Zpc2libGVDaGFuZ2VzKCk7
CiAKQEAgLTIxMCw3ICsyMDksMTAgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYkxheWVySW5m
byBtX2xheWVySW5mbzsKICAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fbGF5ZXJUcmFuc2Zv
cm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtOwot
ICAgIGJvb2wgbV9pblVwZGF0ZU1vZGUgOiAxOworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBJdCBl
eGlzdHMgZm9yIG9ubHkgdGhlIGRlYnVnZ2luZyBwdXJwb3NlLiBUaGlzIGZsYWcgY2hlY2tzIGlm
IHNlbmRpbmcgbWVzc2FnZXMgdG8gVUkgUHJvY2VzcyBvbmx5IG9uIHRoZSBVcGRhdGUgTW9kZS4K
KyAgICBib29sIG1faW5VcGRhdGVNb2RlOworI2VuZGlmCiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0
ZVZpc2libGVSZWN0OiAxOwogICAgIGJvb2wgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKICAg
ICBib29sIG1fc2hvdWxkU3luY0NoaWxkcmVuOiAxOwpAQCAtMjIxLDYgKzIyMyw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzRGlzcGxheSA6IDE7CiAgICAgYm9vbCBtX2NhbnZh
c05lZWRzQ3JlYXRlIDogMTsKICAgICBib29sIG1fY2FudmFzTmVlZHNEZXN0cm95IDogMTsKKyAg
ICBib29sIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2FsZSA6IDE7CisgICAgYm9vbCBtX3Nob3Vs
ZEFkanVzdFZpc2libGVSZWN0IDogMTsKIAogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9y
ZT4gbV9tYWluQmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IGFiYzJjMGYxM2Y0ZTNkNTJhNzRlYzI3NWY2
M2ZhNjBmNWUwNTIwMzcuLjUzYmI4NzFjNDNiM2ZhZmM5ZmUwZTBiNzU2ZDU5Y2E2Njc0ODhiZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
ci5jcHAKQEAgLTYwNyw2ICs2MDcsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLAogCiB2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKQogeworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiB2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgY2xpcFJlY3QpCkBAIC02MzAsNyArNjMxLDcgQEAgUGFzc093blB0cjxH
cmFwaGljc0xheWVyPiBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXllcihH
cmFwaGljc0xheWUKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdp
c3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9j
b250ZW50c1NjYWxlKTsKLSAgICBsYXllci0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICBsYXll
ci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICByZXR1cm4gYWRvcHRQdHIo
bGF5ZXIpOwogfQogCkBAIC03MTIsNyArNzEzLDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRv
cjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2EK
ICAgICAgICAgICAgIGlmIChjb250ZW50c1NjYWxlRGlkQ2hhbmdlKQogICAgICAgICAgICAgICAg
ICgqaXQpLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKICAgICAgICAgICAgIGlmIChjb250ZW50
c1JlY3REaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAgKCppdCktPmFkanVzdFZpc2libGVSZWN0
KCk7CisgICAgICAgICAgICAgICAgKCppdCktPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50
KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc0OCwxMSArNzQ5LDYgQEAgdm9pZCBMYXllclRy
ZWVDb29yZGluYXRvcjo6cmVuZGVyTmV4dEZyYW1lKCkKICAgICAgICAgbV91cGRhdGVBdGxhc2Vz
W2ldLT5kaWRTd2FwQnVmZmVycygpOwogfQogCi1ib29sIExheWVyVHJlZUNvb3JkaW5hdG9yOjps
YXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiAhbV9pc1N1
c3BlbmRlZCAmJiAhbV93YWl0aW5nRm9yVUlQcm9jZXNzOwotfQotCiB2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxi
b29sPiBwdXJnaW5nVG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCmluZGV4IDRkMjk1MjM5YjdkMzgx
MmYxOThiNDRjMTY3MDU3MDE5YmU2MWIxNDYuLmI1NDQ2YWI2ZGNiODk1YWQwMmEyZjlhMDY0M2Ni
NDJlMTE3ODIzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaApAQCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3Jl
cygpOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVj
b2RlciYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178337</attachid>
            <date>2012-12-07 22:21:03 -0800</date>
            <delta_ts>2012-12-07 22:31:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121208151817.patch</filename>
            <type>text/plain</type>
            <size>30719</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ4NTZkMDI0YjkyMWMy
MGJhMzc3YzY3MWM1ZGRlMDE5YTllYTUyNy4uMTRmN2EzMGM5ODY3YmVkNmJhNWQ0ZmVmYThmODBi
NmY4NTA0NGE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTA3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjp0cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNh
bGx5KCkgaXMgdXNlZCB3aGVuIGNsYXNzCisgICAgICAgIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxl
ZCBhc3luY2hyb25vdXNseSBieSBjbGllbnQuIFVwZGF0ZXMgb2YgdGlsZXMgYXJlCisgICAgICAg
IGNvbW1pdHRlZCBhcyBzb29uIGFzIGFsbCB0aGUgZXZlbnRzIGluIGV2ZW50IHF1ZXVlIGhhdmUg
YmVlbiBwcm9jZXNzZWQuCisgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2ggRnJhbWUgc2V0cyBtX2Nv
bW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIHRvIHRydWUuCisKKyAgICAgICAgSW4gYWRk
aXRpb24sIHJlbW92ZSBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVV
cGRhdGVzQWxsb3dlZCgpCisgICAgICAgIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGZvciBDb29yZGlu
YXRlZCBHcmFwaGljcy4KKworICAgICAgICBSZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IpOgorICAgICAgICAgICAgU2VwYXJhdGUg
c2V0dGluZyBhIHRyYWplY3RvcnkgdmVjdG9yIGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgp
LgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzSWZOZWVk
ZWQpOgorICAgICAgICAgICAgUmVuYW1lZCBmcm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKS4K
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om5l
ZWRUb0NyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpp
c1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5n
U3RvcmVOZWVkVG9DcmVhdGVUaWxlcyk6CisgICAgICAgICAgICBJZiBUaWxlZEJhY2tpbmdTdG9y
ZSBkb2VzIG5vdCBjcmVhdGUgYWxsIHRpbGVzLCBUaWxlZEJhY2tpbmdTdG9yZQorICAgICAgICAg
ICAgbm90aWZpZXMgYSBjbGllbnQgb2YgbmVlZGluZyB0byBjcmVhdGUgdGlsZXMgbW9yZSwgd2hl
bgorICAgICAgICAgICAgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCBpcyBmYWxz
ZS4KKwogMjAxMi0xMi0wNyAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgogCiAg
ICAgICAgIEV4dGVuZCBwbGF0Zm9ybSBsYXllciBzbyBpdCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0
byB0aGUgY29tcG9zaXRpbmcgY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAwM2NjYWRkMmU1MmVk
N2QxZjgzNzBmOTY3NzNhYWRlZDdjN2Y5YzRiLi40ZDAyZmQ4ZjIyN2Q0YjdmOGM3YzYxYjBhZWQz
Nzk0MzY1MzkzZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MDcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAg
Q29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4g
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGZyb20gY292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCgpIHRvIGNyZWF0ZVRpbGVzSWZOZWVkZWQoKQorICAgICAgICBpbiBUaWxlZEJhY2tp
bmdTdG9yZSwgc28gYSBjbGllbnQgbXVzdCBiZSBhbWVuZGVkLgorCisgICAgICAgICogZXdrL2V3
a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFp
bnRzX3Byb2Nlc3MpOgorCiAyMDEyLTEyLTA1ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRl
bC5jb20+CiAKICAgICAgICAgW0NNYWtlXSBVbmlmeSBjb2Rpbmcgc3R5bGUgZm9yIENNYWtlIGZp
bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJiYzJiOGUyMWM5ZGEwNjRiYzQ0YWRjYmFmMzVkZGE2NWUy
YTZhOTEuLmI0MzAwMjhmZTFkMmVlMDc4YTc1MmM0YzdiMDA2OWI4YTk0OWNmM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMDcgIEh1YW5nIERvbmdzdW5nICA8bHV4
dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJl
ZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZW5hbWVzIGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpIHRvIGNyZWF0ZVRpbGVz
SWZOZWVkZWQoKQorICAgICAgICBpbiBUaWxlZEJhY2tpbmdTdG9yZSwgc28gYSBjbGllbnQgbXVz
dCBiZSBhbWVuZGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRl
ci5jcHA6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpyZW5kZXJGcm9tVGlsZWRCYWNraW5n
U3RvcmUpOgorCiAyMDEyLTEyLTA3ICBTZXJnaW8gTWFydGlucyAgPHNlcmdpby5tYXJ0aW5zQGtk
YWIuY29tPgogCiAgICAgICAgIFtRdF1bUW54XSBGaXggUU5YIGJ1aWxkIGJ5IGFkZGluZyBtaXNz
aW5nIGluY2x1ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzZhNDVhZjg4ODk4OGUzNzMwYzkwODQxZTg5YjJl
ZTNmYWNiODU5My4uODE5NWIwOWYzZmQzMWM2OTU5NTRiYjJjODJjMjE5YThhZmI3OTNhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTA3ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBS
ZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk1
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJl
bnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhcyBjb21wbGV4IGNvZGUgcmVsYXRlZCB0
byBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAgICAgSXQgaGFzIHR3byBwcm9ibGVtLgorICAgICAg
ICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFja3MgVGlsZWRCYWNraW5nU3RvcmUgdG8g
cHJldmVudAorICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBmcm9tIGFzeW5jaHJvbm91c2x5IHNl
bmRpbmcgVXBkYXRlVGlsZSBtZXNzYWdlIHRvIFVJCisgICAgICAgIFByb2Nlc3MuCisgICAgICAg
IDIuIENyZWF0ZVRpbGUgYW5kIFJlbW92ZVRpbGUgbWVzc2FnZSBjYW4gYmUgc2VudCB0byBVSSBQ
cm9jZXNzIGF0IGFueSB0aW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyIHVzZSBUaWxlZEJhY2tpbmdTdG9yZSBtb3JlIGV4cGxpY2l0bHkuCisg
ICAgICAgIEl0IG1lYW5zIG9ubHkgZHVyaW5nIGZsdXNoaW5nIGxheWVyIHN0YXRlcywgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyCisgICAgICAgIGNhbGxzIG1ldGhvZHMgb2YgVGlsZWRCYWNraW5n
U3RvcmUsIHdoaWNoIGluZGlyZWN0bHkgY2FsbCBjcmVhdGVUaWxlKCksCisgICAgICAgIHVwZGF0
ZVRpbGUoKSBhbmQgcmVtb3ZlVGlsZSgpLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgcHVy
cG9zZSBvZiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6Om1faW5VcGRhdGVNb2RlIGlzCisgICAg
ICAgIGNoYW5nZWQuIEN1cnJlbnRseSwgd2Ugc2V0IG1faW5VcGRhdGVNb2RlIHRvIHRydWUgd2hl
biB1cGRhdGluZyBhCisgICAgICAgIGJhY2tpbmcgc3RvcmUuIEFmdGVyIHRoaXMgcGF0Y2gsIHdl
IHNldCBtX2luVXBkYXRlTW9kZSB0byB0cnVlIHdoZW4KKyAgICAgICAgc2VuZGluZyBtZXNzYWdl
cyB2aWEgTGF5ZXJUcmVlQ29vcmRpbmF0b3IgdG8gVUkgUHJvY2Vzcy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29u
dGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnB1cmdlQmFj
a2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6bm90aWZ5Rmx1c2hSZXF1
aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZp
c2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXllclRyZWVD
b29yZGluYXRvcik6CisKIDIwMTItMTItMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxsb3cgdGhlIFdlYlByb2Nlc3MgYWNjZXNzIHRvIHRoZSBDb3JlTWVk
aWEgcHJlZmVyZW5jZXMgZmlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYWM3OTQ2OTFkNzU0
MTM0MDVjZDBkNjU2N2UxOWIwNDFhYzI4MTdlYy4uZDYzZTFhNDBlZjg2NjMyYmYxY2M0NzA3MWVj
MWEwMzQwZGIyNDM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgyMCw2ICs4MjAsNyBAQCB2
b2lkIEZyYW1lOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IGlmIChtX3RpbGVkQmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxlZEJh
Y2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7CisgICAg
bV90aWxlZEJhY2tpbmdTdG9yZS0+c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ao
dHJ1ZSk7CiAgICAgaWYgKG1fdmlldykKICAgICAgICAgbV92aWV3LT5zZXRQYWludHNFbnRpcmVD
b250ZW50cyh0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA5YTM3YTk2ZmFiMmViNjdhMjUxNzM1
ZWY5ZGVjMGZhOGY4YjRmMmE4Li42OGVlZmNjYTllYzE1NjBkZmZlOTg1N2YwMDUwYTk2NTdiYzM2
MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGls
ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC00MSwxMiArNDEsMTMgQEAgVGlsZWRCYWNraW5nU3RvcmU6
OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQsIFBhc3NP
d25QdHIKICAgICAsIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdT
dG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX2JhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVEaW1lbnNpb24sIGRlZmF1bHRU
aWxlRGltZW5zaW9uKQotICAgICwgbV90aWxlQ3JlYXRpb25EZWxheSgwLjAxKQogICAgICwgbV9j
b3ZlckFyZWFNdWx0aXBsaWVyKDIuMGYpCiAgICAgLCBtX2NvbnRlbnRzU2NhbGUoMS5mKQogICAg
ICwgbV9wZW5kaW5nU2NhbGUoMCkKKyAgICAsIG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVu
dExvb3AoZmFsc2UpCiAgICAgLCBtX2NvbnRlbnRzRnJvemVuKGZhbHNlKQogICAgICwgbV9zdXBw
b3J0c0FscGhhKGZhbHNlKQorICAgICwgbV9uZWVkVG9DcmVhdGVOZXh0VGlsZXMoZmFsc2UpCiB7
CiB9CiAKQEAgLTYxLDI2ICs2MiwyMCBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxl
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZUNyZWF0aW9uRGVsYXko
ZG91YmxlIGRlbGF5KQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VHJhamVjdG9yeVZlY3Rv
cihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIG1fdGlsZUNyZWF0
aW9uRGVsYXkgPSBkZWxheTsKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yID0gdHJhamVj
dG9yeVZlY3RvcjsKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yLm5vcm1hbGl6ZSgpOwog
fQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0
IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpj
cmVhdGVUaWxlc0lmTmVlZGVkKCkKIHsKICAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+
dmlzaWJsZVJlY3QoKTsKICAgICBJbnRSZWN0IHJlY3QgPSBtYXBGcm9tQ29udGVudHMobV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOwogCi0gICAgRmxvYXRQb2ludCBu
b3JtYWxpemVkVmVjdG9yID0gdHJhamVjdG9yeVZlY3RvcjsKLSAgICBub3JtYWxpemVkVmVjdG9y
Lm5vcm1hbGl6ZSgpOwotCi0gICAgaWYgKG1fdHJhamVjdG9yeVZlY3RvciA9PSBub3JtYWxpemVk
VmVjdG9yICYmIG1fdmlzaWJsZVJlY3QgPT0gdmlzaWJsZVJlY3QgJiYgbV9yZWN0ID09IHJlY3Qp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJhamVjdG9yeVZlY3RvciA9IG5vcm1hbGl6ZWRW
ZWN0b3I7Ci0gICAgbV92aXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OwotCi0gICAgY3JlYXRlVGls
ZXMoKTsKKyAgICBib29sIGRpZENoYW5nZSA9IG1fdHJhamVjdG9yeVZlY3RvciAhPSBtX3BlbmRp
bmdUcmFqZWN0b3J5VmVjdG9yIHx8IG1fdmlzaWJsZVJlY3QgIT0gdmlzaWJsZVJlY3QgfHwgbV9y
ZWN0ICE9IHJlY3Q7CisgICAgaWYgKGRpZENoYW5nZSB8fCBtX25lZWRUb0NyZWF0ZU5leHRUaWxl
cykKKyAgICAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKQEAgLTEwOCw3ICsx
MDMsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzRGlydHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxl
QnVmZmVycygpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVz
QWxsb3dlZCgpIHx8IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1fY29udGVudHNGcm96ZW4p
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50
QmVnaW4oKTsKQEAgLTE5Myw3ICsxODgsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb21t
aXRTY2FsZUNoYW5nZSgpCiAgICAgbV9jb250ZW50c1NjYWxlID0gbV9wZW5kaW5nU2NhbGU7CiAg
ICAgbV9wZW5kaW5nU2NhbGUgPSAwOwogICAgIG1fdGlsZXMuY2xlYXIoKTsKLSAgICBjb3Zlcldp
dGhUaWxlc0lmTmVlZGVkKCk7CisgICAgY3JlYXRlVGlsZXNJZk5lZWRlZCgpOwogfQogCiBkb3Vi
bGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9y
dCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpIGNvbnN0CkBAIC0yNDUs
NiArMjQwLDggQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgIC8v
IFVwZGF0ZSBvdXIgYmFja2luZyBzdG9yZSBnZW9tZXRyeS4KICAgICBjb25zdCBJbnRSZWN0IHBy
ZXZpb3VzUmVjdCA9IG1fcmVjdDsKICAgICBtX3JlY3QgPSBtYXBGcm9tQ29udGVudHMobV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOworICAgIG1fdHJhamVjdG9yeVZl
Y3RvciA9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CisgICAgbV92aXNpYmxlUmVjdCA9IHZp
c2libGVSZWN0KCk7CiAKICAgICBpZiAobV9yZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBzZXRD
b3ZlclJlY3QoSW50UmVjdCgpKTsKQEAgLTI3MywxMiArMjcwLDkgQEAgdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAqIFdlIG11c3QgY3JlYXRlIG9yIGtlZXAgdGhl
IHRpbGVzIGluIHRoZSBIRVJFIHJlZ2lvbi4KICAgICAgKi8KIAotICAgIGNvbnN0IEludFJlY3Qg
dmlzaWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVjdCgpOwotICAgIG1fdmlzaWJsZVJlY3QgPSB2
aXNpYmxlUmVjdDsKLQogICAgIEludFJlY3QgY292ZXJSZWN0OwogICAgIEludFJlY3Qga2VlcFJl
Y3Q7Ci0gICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QodmlzaWJsZVJlY3QsIGNvdmVyUmVjdCwg
a2VlcFJlY3QpOworICAgIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KG1fdmlzaWJsZVJlY3QsIGNv
dmVyUmVjdCwga2VlcFJlY3QpOwogCiAgICAgc2V0Q292ZXJSZWN0KGNvdmVyUmVjdCk7CiAgICAg
c2V0S2VlcFJlY3Qoa2VlcFJlY3QpOwpAQCAtMzA5LDcgKzMwMyw3IEBAIHZvaWQgVGlsZWRCYWNr
aW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAgICAgICAgIGlmICh0aWxlQXQoY3VycmVudENv
b3JkaW5hdGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgKytyZXF1
aXJlZFRpbGVDb3VudDsKLSAgICAgICAgICAgIGRvdWJsZSBkaXN0YW5jZSA9IHRpbGVEaXN0YW5j
ZSh2aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5hdGUpOworICAgICAgICAgICAgZG91YmxlIGRp
c3RhbmNlID0gdGlsZURpc3RhbmNlKG1fdmlzaWJsZVJlY3QsIGN1cnJlbnRDb29yZGluYXRlKTsK
ICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHNob3J0ZXN0RGlzdGFuY2UpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBzaG9ydGVzdERpc3Rh
bmNlKSB7CkBAIC0zMzMsOCArMzI3LDIwIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0
ZVRpbGVzKCkKICAgICAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIAogICAgIC8vIFJlLWNhbGwg
Y3JlYXRlVGlsZXMgb24gYSB0aW1lciB0byBjb3ZlciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhl
IG5ld2VzdCBzaG9ydGVzdCBkaXN0YW5jZS4KLSAgICBpZiAocmVxdWlyZWRUaWxlQ291bnQpCi0g
ICAgICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KG1fdGlsZUNyZWF0
aW9uRGVsYXkpOworICAgIG1fbmVlZFRvQ3JlYXRlTmV4dFRpbGVzID0gcmVxdWlyZWRUaWxlQ291
bnQ7CisgICAgaWYgKG1fbmVlZFRvQ3JlYXRlTmV4dFRpbGVzKQorICAgICAgICBuZWVkVG9DcmVh
dGVUaWxlcygpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpuZWVkVG9DcmVhdGVUaWxl
cygpCit7CisgICAgaWYgKCFtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKSB7Cisg
ICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRpbGVDcmVh
dGlvbkRlbGF5ID0gMC4wMTsKKyAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRpbGVD
cmVhdGlvbkRlbGF5KTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0Rm9yQ29u
dGVudHNSZWN0KEludFJlY3QmIHJlY3QpIGNvbnN0CkBAIC00MjMsNyArNDI5LDcgQEAgYm9vbCBU
aWxlZEJhY2tpbmdTdG9yZTo6aXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkgY29uc3QK
IAogYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW4gfHwgIW1fY2xpZW50LT50aWxl
ZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAgcmV0dXJuIG1fY29udGVudHNGcm96
ZW47CiB9CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpCkBAIC01
MjYsNiArNTMyLDkgQEAgVGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNv
b3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQKIAogdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogeworICAgIGlmICghbV9jb21t
aXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkgfHwgaXNUaWxlQnVmZmVyVXBkYXRl
c1N1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxlQnVmZmVyVXBkYXRlVGlt
ZXIuc3RhcnRPbmVTaG90KDApOwpAQCAtNTMzLDE4ICs1NDIsMjMgQEAgdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogCiB2b2lkIFRpbGVkQmFja2lu
Z1N0b3JlOjp0aWxlQnVmZmVyVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9y
ZT4qKQogeworICAgIEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKTsK
ICAgICB1cGRhdGVUaWxlQnVmZmVycygpOwogfQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpz
dGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCkKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0
YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlIGludGVydmFsKQogeworICAgIGlmICgh
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuaXNBY3RpdmUoKSB8fCBpc0JhY2tpbmdT
dG9yZVVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fYmFja2luZ1N0
b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fYmFja2luZ1N0b3JlVXBkYXRl
VGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9y
ZTo6YmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4q
KQogeworICAgIEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKTsKICAg
ICBjcmVhdGVUaWxlcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCAwODJiZTcwYzhlYjI3NTE3OTBiN2Fi
ODc3NTY5NDliYWM4MWE2ZDI4Li5mNDc4ZGVhM2Q3ZDk1ZWIwZGQzOTVlMWE4NmYxNDc3OTkwYzc3
YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZ1N0b3JlLmgKQEAgLTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIFRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0gICAgdm9p
ZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIHBhbm5pbmdUcmFqZWN0
b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpKTsKKyAgICAvLyBVc2VkIHdoZW4gY2xhc3MgbWV0aG9k
cyBjYW5ub3QgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IGNsaWVudC4KKyAgICAvLyBVcGRh
dGVzIG9mIHRpbGVzIGFyZSBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBl
dmVudCBxdWV1ZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgIHZvaWQgc2V0Q29tbWl0VGlsZVVw
ZGF0ZXNPbklkbGVFdmVudExvb3AoYm9vbCBlbmFibGUpIHsgbV9jb21taXRUaWxlVXBkYXRlc09u
SWRsZUV2ZW50TG9vcCA9IGVuYWJsZTsgfQorCisgICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVjdG9y
KGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2b2lkIGNyZWF0ZVRpbGVzSWZOZWVkZWQoKTsKIAog
ICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAg
ICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwpAQCAtNjIsOSArNjcsNiBAQCBwdWJsaWM6
CiAgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KICAgICB2b2lk
IHNldFRpbGVTaXplKGNvbnN0IEludFNpemUmKTsKIAotICAgIGRvdWJsZSB0aWxlQ3JlYXRpb25E
ZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUNyZWF0aW9uRGVsYXk7IH0KLSAgICB2b2lkIHNl
dFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSk7Ci0KICAgICBJbnRSZWN0IG1hcFRvQ29u
dGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEludFJlY3QgbWFwRnJvbUNvbnRlbnRz
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKIApAQCAtODEsMTEgKzgzLDEyIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCk7Ci0gICAgdm9p
ZCBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CisgICAgdm9pZCBzdGFydEJhY2tpbmdT
dG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSA9IDApOwogCiAgICAgdm9pZCB0aWxlQnVmZmVyVXBkYXRl
VGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKTsKICAgICB2b2lkIGJhY2tpbmdT
dG9yZVVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+Kik7CiAKKyAgICB2
b2lkIG5lZWRUb0NyZWF0ZVRpbGVzKCk7CiAgICAgdm9pZCBjcmVhdGVUaWxlcygpOwogICAgIHZv
aWQgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIElu
dFJlY3QmIGNvdmVyUmVjdCwgSW50UmVjdCYga2VlcFJlY3QpIGNvbnN0OwogCkBAIC0xMjAsMTAg
KzEyMywxMCBAQCBwcml2YXRlOgogICAgIFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiBtX2JhY2tp
bmdTdG9yZVVwZGF0ZVRpbWVyOwogCiAgICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGRvdWJs
ZSBtX3RpbGVDcmVhdGlvbkRlbGF5OwogICAgIGZsb2F0IG1fY292ZXJBcmVhTXVsdGlwbGllcjsK
IAogICAgIEZsb2F0UG9pbnQgbV90cmFqZWN0b3J5VmVjdG9yOworICAgIEZsb2F0UG9pbnQgbV9w
ZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKICAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7CiAKICAg
ICBJbnRSZWN0IG1fY292ZXJSZWN0OwpAQCAtMTMzLDggKzEzNiwxMCBAQCBwcml2YXRlOgogICAg
IGZsb2F0IG1fY29udGVudHNTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKIAorICAg
IGJvb2wgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcDsKICAgICBib29sIG1fY29u
dGVudHNGcm96ZW47CiAgICAgYm9vbCBtX3N1cHBvcnRzQWxwaGE7CisgICAgYm9vbCBtX25lZWRU
b0NyZWF0ZU5leHRUaWxlczsKIAogICAgIGZyaWVuZCBjbGFzcyBUaWxlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZUNsaWVudC5oCmluZGV4IDBlMDIxNDc3NzMzMGUyNWYxZmM4NDM4NzFmNDVhNWEwOThmOWNkMWQu
LjA3Nzg0ZmU3NDk5NjhlZTgxYTEzZjBjZDcyODRjY2NkMmQ1Y2IxNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVD
bGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRpbGVk
QmFja2luZ1N0b3JlUGFpbnRCZWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNr
aW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYgcGFpbnRlZEFyZWEpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgdGlsZWRCYWNraW5nU3Rv
cmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdGlsZWRCYWNraW5nU3RvcmVOZWVkVG9DcmVhdGVUaWxlcygpIHsgfQogICAgIHZpcnR1YWwg
SW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpID0gMDsKICAgICB2aXJ0dWFs
IEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpID0gMDsKICAgICB2aXJ0dWFs
IENvbG9yIHRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCBjNTc3OWFiM2Y5Mzdi
ZjhhMTUxMDgyNGQyYzk5ZWE3YTA3N2EzMWMwLi44NWUzNGQ1MWQ5OTQ4NjkwMjhmZGU4YjliMGI2
MDg5MmI5ODA5MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
c2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNw
cApAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9z
bWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtCiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5GcmFtZSA9IEVXS1By
aXZhdGU6OmNvcmVGcmFtZShzbWFydERhdGEtPm1haW5fZnJhbWUpOwogICAgIGlmIChtYWluRnJh
bWUgJiYgbWFpbkZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpKQotICAgICAgICBtYWluRnJhbWUt
PnRpbGVkQmFja2luZ1N0b3JlKCktPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICAgICAg
bWFpbkZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5jcmVhdGVUaWxlc0lmTmVlZGVkKCk7CiAj
ZW5kaWYKIAogICAgIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gZXdrX3BhaW50X2NvbnRl
eHRfZnJvbV9pbWFnZV9uZXcoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCmluZGV4
IDdmNTVkYTM2MmU4MWQ4ZTFmOTUzZmI3NDYyMjNmNzAyYjAwMGQwZDQuLmM0N2E5OWZkZmRiODQx
ZmNhY2UyOTUwYWVlMDU4ZmE3ZTY5MWUyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBA
IGJvb2wgUVdlYkZyYW1lQWRhcHRlcjo6cmVuZGVyRnJvbVRpbGVkQmFja2luZ1N0b3JlKFFQYWlu
dGVyKiBwYWludGVyLCBjb25zdCBRUmVnCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgc2V0IHRoZSBiYWNraW5nIHN0b3JlIHZpZXdwb3J0IGVhcmxpZXIg
dGhhbiBpbiBwYWludAotICAgIGZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5jb3ZlcldpdGhU
aWxlc0lmTmVlZGVkKCk7CisgICAgZnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZVRp
bGVzSWZOZWVkZWQoKTsKIAogICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGFmMDc5
ODMyZDZjZDk4ZDkyOWRiYWNlMmIwMjk2NjIyNDBiMWEzNzcuLjAwZDRhODc4NDYwMGY2ZTQwNGE0
YjIxZWY3MzNlMTI3NmU2MDJhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzgsNiArMzgsOSBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5
Q2hhbmdlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xMDksNyArMTEyLDkgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmRpZENoYW5nZUdlb21ldHJ5KCkKIAogQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCisjaWZuZGVmIE5ERUJVRwogICAgICwgbV9p
blVwZGF0ZU1vZGUoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJl
Y3QodHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0xheWVyU3RhdGUodHJ1ZSkKICAgICAsIG1fc2hv
dWxkU3luY0NoaWxkcmVuKHRydWUpCkBAIC0xMjAsNiArMTI1LDggQEAgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCog
Y2xpZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2NhbnZh
c05lZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0Rlc3Ryb3koZmFsc2UpCisg
ICAgLCBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUoZmFsc2UpCisgICAgLCBtX3Nob3VsZEFk
anVzdFZpc2libGVSZWN0KGZhbHNlKQogICAgICwgbV9jb29yZGluYXRvcigwKQogICAgICwgbV9j
b250ZW50c1NjYWxlKDEpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQpAQCAt
NjM5LDE0ICs2NDYsMTggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFJvb3RM
YXllcihib29sIGlzUm9vdCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZp
c2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVj
dG9yeVZlY3RvcikKIHsKLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21h
aW5CYWNraW5nU3RvcmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQodHJhamVjdG9yeVZlY3Rvcik7
CisgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bWFpbkJhY2tpbmdTdG9yZS0+c2V0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsK
KyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAgICBt
X2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKLSAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7CisgICAg
aWYgKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgbV9zaG91bGRBZGp1c3RDb250
ZW50c1NjYWxlID0gdHJ1ZTsKIH0KIAogZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpl
ZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKQEAgLTY1Niw5ICs2NjcsNyBAQCBmbG9hdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSgpCiB7Ci0gICAgaWYgKCFz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHJldHVybjsKLQorICAgIEFTU0VSVChz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCkpOwogICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlIHx8
IG1fbWFpbkJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgpID09IGVmZmVjdGl2ZUNvbnRlbnRz
U2NhbGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02OTAsMTEgKzY5OSwxMSBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBW
ZWN0b3I8SW50UmVjdD4mCiB7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0
aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKK3ZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCkKIHsKLSAg
ICBpZiAoIW1faW5VcGRhdGVNb2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IG1fY29vcmRpbmF0b3ItPmxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpOworICAgIG1fc2hv
dWxkQWRqdXN0VmlzaWJsZVJlY3QgPSB0cnVlOworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAg
Y2xpZW50KCktPm5vdGlmeUZsdXNoUmVxdWlyZWQodGhpcyk7CiB9CiAKIEludFJlY3QgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpCkBAIC03
MzcsMjggKzc0NiwzMCBAQCBDb2xvciBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFj
a2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAogUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIGludCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgaWYg
KCFtX2Nvb3JkaW5hdG9yKQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ+KCk7Ci0KKyAgICBBU1NFUlQobV9pblVwZGF0ZU1vZGUpOworICAgIEFTU0VS
VChtX2Nvb3JkaW5hdG9yKTsKICAgICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50
VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkgPyAwIDogU2hhcmVhYmxlQml0bWFwOjpTdXBw
b3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5m
byYgdXBkYXRlSW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZVJlY3QpCiB7Ci0gICAg
aWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVRpbGUoaWQo
KSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNTRVJUKG1faW5VcGRhdGVN
b2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGluYXRvci0+Y3Jl
YXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0KIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25z
dCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3Qp
CiB7Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0
ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNTRVJUKG1f
aW5VcGRhdGVNb2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGlu
YXRvci0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUodWludDMyX3QgdGls
ZUlEKQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5y
ZW1vdmVUaWxlKGlkKCksIHRpbGVJRCk7CisgICAgQVNTRVJUKG1faW5VcGRhdGVNb2RlKTsKKyAg
ICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGluYXRvci0+cmVtb3ZlVGlsZShp
ZCgpLCB0aWxlSUQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRl
Q29udGVudEJ1ZmZlcnMoKQpAQCAtNzY5LDEzICs3ODAsMjIgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1faW5VcGRhdGVNb2RlID0gdHJ1ZTsKKyAgICBpZiAobV9zaG91bGRBZGp1c3RD
b250ZW50c1NjYWxlKSB7CisgICAgICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICAgICAg
bV9zaG91bGRBZGp1c3RDb250ZW50c1NjYWxlID0gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVGhp
cyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3JlYXRlIHRoZSBtYWluIHRpbGVkIGJhY2tpbmcg
c3RvcmUsIG9uY2Ugd2UKICAgICAvLyBoYXZlIGEgcmVtb3RlIGNsaWVudCBhbmQgd2UgYXJlIHJl
YWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3MuCiAgICAgaWYgKCFtX21haW5C
YWNraW5nU3RvcmUpCiAgICAgICAgIGNyZWF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgaWYgKG1f
c2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QpIHsKKyAgICAgICAgbV9zaG91bGRBZGp1c3RWaXNpYmxl
UmVjdCA9IGZhbHNlOworICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNyZWF0ZVRpbGVzSWZO
ZWVkZWQoKTsKKyAgICB9CisKICAgICBtX21haW5CYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGVCdWZm
ZXJzKCk7Ci0gICAgbV9pblVwZGF0ZU1vZGUgPSBmYWxzZTsKIAogICAgIC8vIFRoZSBwcmV2aW91
cyBiYWNraW5nIHN0b3JlIGlzIGtlcHQgYXJvdW5kIHRvIGF2b2lkIGZsaWNrZXJpbmcgYmV0d2Vl
bgogICAgIC8vIHJlbW92aW5nIHRoZSBleGlzdGluZyB0aWxlcyBhbmQgcGFpbnRpbmcgdGhlIG5l
dyBvbmVzLiBUaGUgZmlyc3QgdGltZQpAQCAtNzg2LDYgKzgwNiw5IEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogeworI2lmbmRlZiBOREVCVUcK
KyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gdXBkYXRlTW9kZVByb3RlY3RvcihtX2luVXBkYXRl
TW9kZSwgdHJ1ZSk7CisjZW5kaWYKICAgICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKICAg
ICBtX3ByZXZpb3VzQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAKQEAgLTc5OSwxMCArODIyLDEwIEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllckNsCiAgICAgbV9jb29yZGluYXRvciA9IGNvb3JkaW5hdG9y
OwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0VmlzaWJsZVJlY3Qo
KQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1
c3RtZW50KCkKIHsKLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21haW5C
YWNraW5nU3RvcmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICBpZiAoc2hvdWxkSGF2
ZUJhY2tpbmdTdG9yZSgpKQorICAgICAgICBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0ID0gdHJ1
ZTsKIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6Omhhc1BlbmRpbmdWaXNpYmxl
Q2hhbmdlcygpCkBAIC05MDMsOCArOTI2LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICBtX2NhY2hlZEludmVyc2VU
cmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOwogCiAgICAg
Ly8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3Rv
cmVWaXNpYmxlUmVjdC4KLSAgICBhZGp1c3RWaXNpYmxlUmVjdCgpOwotICAgIGFkanVzdENvbnRl
bnRzU2NhbGUoKTsKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiBz
dGF0aWMgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBkOWZiZTdlYzRh
MWE3ODczNTE2ZDk1NzgxNTY5NmFlODMwMzk5ODkzLi5kMzM5ZmZmMTE0ZDEyYzNmODQ3ZjFiZDBk
NWIyNGY2NmUxMTAwYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNTgsNyArNTgsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxl
SUQpID0gMDsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50
c1JlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVz
QWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQs
IGNvbnN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5j
TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQsIGNvbnN0IFZlY3RvcjxDb29yZGluYXRl
ZExheWVySUQ+JikgPSAwOwpAQCAtMTUwLDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50
RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFyZWEpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlVGlsZXMo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50
c1JlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3Rv
cmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklERTsKQEAgLTE2Myw3ICsxNjIsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CisgICAg
dm9pZCBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHZvaWQgcHVyZ2VCYWNr
aW5nU3RvcmVzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMoKTsKIApAQCAt
MjI5LDYgKzIyOCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzRGlzcGxheSA6
IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzQ3JlYXRlIDogMTsKICAgICBib29sIG1fY2FudmFz
TmVlZHNEZXN0cm95IDogMTsKKyAgICBib29sIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2FsZSA6
IDE7CisgICAgYm9vbCBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0IDogMTsKIAogICAgIFdlYktp
dDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93
blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IGJmNjdl
YWRmZDhjNGI5YWE5MzIyY2E3MmY3MTQxNDA5NGNmOTlmOTguLjA5MjNhOTQ2MmEzODMxY2JhNTA2
MTZjNTYwZjhiNmE0YzQwYmVmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTYwNyw2ICs2MDcsNyBAQCB2b2lkIExheWVy
VHJlZUNvb3JkaW5hdG9yOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqLAogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpub3RpZnlGbHVzaFJl
cXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogeworICAgIHNjaGVkdWxlTGF5
ZXJGbHVzaCgpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwYWludENvbnRlbnRz
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFp
bnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpCkBAIC02MzAsNyAr
NjMxLDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBMYXllclRyZWVDb29yZGluYXRvcjo6
Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWUKICAgICBsYXllci0+c2V0Q29vcmRpbmF0
b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CiAgICAgbGF5ZXIt
PnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKLSAgICBsYXllci0+YWRqdXN0Vmlz
aWJsZVJlY3QoKTsKKyAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsK
ICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQogCkBAIC03MTIsNyArNzEzLDcgQEAgdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGZsb2F0IHMKICAgICAgICAgICAgIGlmIChjb250ZW50c1NjYWxlRGlkQ2hh
bmdlKQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKICAg
ICAgICAgICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAgKCpp
dCktPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgICAgICAgICAgICAgKCppdCktPnNldE5lZWRz
VmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc1MiwxMSAr
NzUzLDYgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVuZGVyTmV4dEZyYW1lKCkKICAg
ICAgICAgbV91cGRhdGVBdGxhc2VzW2ldLT5kaWRTd2FwQnVmZmVycygpOwogfQogCi1ib29sIExh
eWVyVHJlZUNvb3JkaW5hdG9yOjpsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAot
ewotICAgIHJldHVybiAhbV9pc1N1c3BlbmRlZCAmJiAhbV93YWl0aW5nRm9yVUlQcm9jZXNzOwot
fQotCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewog
ICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBwdXJnaW5nVG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5o
CmluZGV4IDdiYjY4YjhjNzczYjgzMjMxNjVhN2FhMTk0Mjg5ZDE0NjgxZjVhNTEuLmI4OGI0MGNm
ZTYwMzllOTNmNTU4MmVmYzEzMjg1ODY4Y2QyMGQ1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtODQsNyArODQsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRp
bGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRy
ZWVDb29yZGluYXRvck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178338</attachid>
            <date>2012-12-07 22:46:03 -0800</date>
            <delta_ts>2012-12-07 22:53:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121208154317.patch</filename>
            <type>text/plain</type>
            <size>31019</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ4NTZkMDI0YjkyMWMy
MGJhMzc3YzY3MWM1ZGRlMDE5YTllYTUyNy4uMTRmN2EzMGM5ODY3YmVkNmJhNWQ0ZmVmYThmODBi
NmY4NTA0NGE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTA3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjp0cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNh
bGx5KCkgaXMgdXNlZCB3aGVuIGNsYXNzCisgICAgICAgIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxl
ZCBhc3luY2hyb25vdXNseSBieSBjbGllbnQuIFVwZGF0ZXMgb2YgdGlsZXMgYXJlCisgICAgICAg
IGNvbW1pdHRlZCBhcyBzb29uIGFzIGFsbCB0aGUgZXZlbnRzIGluIGV2ZW50IHF1ZXVlIGhhdmUg
YmVlbiBwcm9jZXNzZWQuCisgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2ggRnJhbWUgc2V0cyBtX2Nv
bW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIHRvIHRydWUuCisKKyAgICAgICAgSW4gYWRk
aXRpb24sIHJlbW92ZSBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVV
cGRhdGVzQWxsb3dlZCgpCisgICAgICAgIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGZvciBDb29yZGlu
YXRlZCBHcmFwaGljcy4KKworICAgICAgICBSZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IpOgorICAgICAgICAgICAgU2VwYXJhdGUg
c2V0dGluZyBhIHRyYWplY3RvcnkgdmVjdG9yIGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgp
LgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzSWZOZWVk
ZWQpOgorICAgICAgICAgICAgUmVuYW1lZCBmcm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKS4K
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om5l
ZWRUb0NyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpp
c1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5n
U3RvcmVOZWVkVG9DcmVhdGVUaWxlcyk6CisgICAgICAgICAgICBJZiBUaWxlZEJhY2tpbmdTdG9y
ZSBkb2VzIG5vdCBjcmVhdGUgYWxsIHRpbGVzLCBUaWxlZEJhY2tpbmdTdG9yZQorICAgICAgICAg
ICAgbm90aWZpZXMgYSBjbGllbnQgb2YgbmVlZGluZyB0byBjcmVhdGUgdGlsZXMgbW9yZSwgd2hl
bgorICAgICAgICAgICAgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCBpcyBmYWxz
ZS4KKwogMjAxMi0xMi0wNyAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgogCiAg
ICAgICAgIEV4dGVuZCBwbGF0Zm9ybSBsYXllciBzbyBpdCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0
byB0aGUgY29tcG9zaXRpbmcgY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAwM2NjYWRkMmU1MmVk
N2QxZjgzNzBmOTY3NzNhYWRlZDdjN2Y5YzRiLi40ZDAyZmQ4ZjIyN2Q0YjdmOGM3YzYxYjBhZWQz
Nzk0MzY1MzkzZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MDcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAg
Q29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4g
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGZyb20gY292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCgpIHRvIGNyZWF0ZVRpbGVzSWZOZWVkZWQoKQorICAgICAgICBpbiBUaWxlZEJhY2tp
bmdTdG9yZSwgc28gYSBjbGllbnQgbXVzdCBiZSBhbWVuZGVkLgorCisgICAgICAgICogZXdrL2V3
a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFp
bnRzX3Byb2Nlc3MpOgorCiAyMDEyLTEyLTA1ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRl
bC5jb20+CiAKICAgICAgICAgW0NNYWtlXSBVbmlmeSBjb2Rpbmcgc3R5bGUgZm9yIENNYWtlIGZp
bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJiYzJiOGUyMWM5ZGEwNjRiYzQ0YWRjYmFmMzVkZGE2NWUy
YTZhOTEuLmI0MzAwMjhmZTFkMmVlMDc4YTc1MmM0YzdiMDA2OWI4YTk0OWNmM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMDcgIEh1YW5nIERvbmdzdW5nICA8bHV4
dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJl
ZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZW5hbWVzIGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpIHRvIGNyZWF0ZVRpbGVz
SWZOZWVkZWQoKQorICAgICAgICBpbiBUaWxlZEJhY2tpbmdTdG9yZSwgc28gYSBjbGllbnQgbXVz
dCBiZSBhbWVuZGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRl
ci5jcHA6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpyZW5kZXJGcm9tVGlsZWRCYWNraW5n
U3RvcmUpOgorCiAyMDEyLTEyLTA3ICBTZXJnaW8gTWFydGlucyAgPHNlcmdpby5tYXJ0aW5zQGtk
YWIuY29tPgogCiAgICAgICAgIFtRdF1bUW54XSBGaXggUU5YIGJ1aWxkIGJ5IGFkZGluZyBtaXNz
aW5nIGluY2x1ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzZhNDVhZjg4ODk4OGUzNzMwYzkwODQxZTg5YjJl
ZTNmYWNiODU5My4uODE5NWIwOWYzZmQzMWM2OTU5NTRiYjJjODJjMjE5YThhZmI3OTNhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTA3ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBS
ZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk1
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJl
bnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhcyBjb21wbGV4IGNvZGUgcmVsYXRlZCB0
byBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAgICAgSXQgaGFzIHR3byBwcm9ibGVtLgorICAgICAg
ICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFja3MgVGlsZWRCYWNraW5nU3RvcmUgdG8g
cHJldmVudAorICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBmcm9tIGFzeW5jaHJvbm91c2x5IHNl
bmRpbmcgVXBkYXRlVGlsZSBtZXNzYWdlIHRvIFVJCisgICAgICAgIFByb2Nlc3MuCisgICAgICAg
IDIuIENyZWF0ZVRpbGUgYW5kIFJlbW92ZVRpbGUgbWVzc2FnZSBjYW4gYmUgc2VudCB0byBVSSBQ
cm9jZXNzIGF0IGFueSB0aW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyIHVzZSBUaWxlZEJhY2tpbmdTdG9yZSBtb3JlIGV4cGxpY2l0bHkuCisg
ICAgICAgIEl0IG1lYW5zIG9ubHkgZHVyaW5nIGZsdXNoaW5nIGxheWVyIHN0YXRlcywgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyCisgICAgICAgIGNhbGxzIG1ldGhvZHMgb2YgVGlsZWRCYWNraW5n
U3RvcmUsIHdoaWNoIGluZGlyZWN0bHkgY2FsbCBjcmVhdGVUaWxlKCksCisgICAgICAgIHVwZGF0
ZVRpbGUoKSBhbmQgcmVtb3ZlVGlsZSgpLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgcHVy
cG9zZSBvZiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6Om1faW5VcGRhdGVNb2RlIGlzCisgICAg
ICAgIGNoYW5nZWQuIEN1cnJlbnRseSwgd2Ugc2V0IG1faW5VcGRhdGVNb2RlIHRvIHRydWUgd2hl
biB1cGRhdGluZyBhCisgICAgICAgIGJhY2tpbmcgc3RvcmUuIEFmdGVyIHRoaXMgcGF0Y2gsIHdl
IHNldCBtX2luVXBkYXRlTW9kZSB0byB0cnVlIHdoZW4KKyAgICAgICAgc2VuZGluZyBtZXNzYWdl
cyB2aWEgTGF5ZXJUcmVlQ29vcmRpbmF0b3IgdG8gVUkgUHJvY2Vzcy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29u
dGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnB1cmdlQmFj
a2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6bm90aWZ5Rmx1c2hSZXF1
aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZp
c2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXllclRyZWVD
b29yZGluYXRvcik6CisKIDIwMTItMTItMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxsb3cgdGhlIFdlYlByb2Nlc3MgYWNjZXNzIHRvIHRoZSBDb3JlTWVk
aWEgcHJlZmVyZW5jZXMgZmlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYWM3OTQ2OTFkNzU0
MTM0MDVjZDBkNjU2N2UxOWIwNDFhYzI4MTdlYy4uZDYzZTFhNDBlZjg2NjMyYmYxY2M0NzA3MWVj
MWEwMzQwZGIyNDM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgyMCw2ICs4MjAsNyBAQCB2
b2lkIEZyYW1lOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IGlmIChtX3RpbGVkQmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxlZEJh
Y2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7CisgICAg
bV90aWxlZEJhY2tpbmdTdG9yZS0+c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ao
dHJ1ZSk7CiAgICAgaWYgKG1fdmlldykKICAgICAgICAgbV92aWV3LT5zZXRQYWludHNFbnRpcmVD
b250ZW50cyh0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA5YTM3YTk2ZmFiMmViNjdhMjUxNzM1
ZWY5ZGVjMGZhOGY4YjRmMmE4Li42OGVlZmNjYTllYzE1NjBkZmZlOTg1N2YwMDUwYTk2NTdiYzM2
MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGls
ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC00MSwxMiArNDEsMTMgQEAgVGlsZWRCYWNraW5nU3RvcmU6
OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQsIFBhc3NP
d25QdHIKICAgICAsIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdT
dG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX2JhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVEaW1lbnNpb24sIGRlZmF1bHRU
aWxlRGltZW5zaW9uKQotICAgICwgbV90aWxlQ3JlYXRpb25EZWxheSgwLjAxKQogICAgICwgbV9j
b3ZlckFyZWFNdWx0aXBsaWVyKDIuMGYpCiAgICAgLCBtX2NvbnRlbnRzU2NhbGUoMS5mKQogICAg
ICwgbV9wZW5kaW5nU2NhbGUoMCkKKyAgICAsIG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVu
dExvb3AoZmFsc2UpCiAgICAgLCBtX2NvbnRlbnRzRnJvemVuKGZhbHNlKQogICAgICwgbV9zdXBw
b3J0c0FscGhhKGZhbHNlKQorICAgICwgbV9uZWVkVG9DcmVhdGVOZXh0VGlsZXMoZmFsc2UpCiB7
CiB9CiAKQEAgLTYxLDI2ICs2MiwyMCBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxl
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZUNyZWF0aW9uRGVsYXko
ZG91YmxlIGRlbGF5KQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VHJhamVjdG9yeVZlY3Rv
cihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIG1fdGlsZUNyZWF0
aW9uRGVsYXkgPSBkZWxheTsKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yID0gdHJhamVj
dG9yeVZlY3RvcjsKKyAgICBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yLm5vcm1hbGl6ZSgpOwog
fQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0
IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpj
cmVhdGVUaWxlc0lmTmVlZGVkKCkKIHsKICAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+
dmlzaWJsZVJlY3QoKTsKICAgICBJbnRSZWN0IHJlY3QgPSBtYXBGcm9tQ29udGVudHMobV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOwogCi0gICAgRmxvYXRQb2ludCBu
b3JtYWxpemVkVmVjdG9yID0gdHJhamVjdG9yeVZlY3RvcjsKLSAgICBub3JtYWxpemVkVmVjdG9y
Lm5vcm1hbGl6ZSgpOwotCi0gICAgaWYgKG1fdHJhamVjdG9yeVZlY3RvciA9PSBub3JtYWxpemVk
VmVjdG9yICYmIG1fdmlzaWJsZVJlY3QgPT0gdmlzaWJsZVJlY3QgJiYgbV9yZWN0ID09IHJlY3Qp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJhamVjdG9yeVZlY3RvciA9IG5vcm1hbGl6ZWRW
ZWN0b3I7Ci0gICAgbV92aXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OwotCi0gICAgY3JlYXRlVGls
ZXMoKTsKKyAgICBib29sIGRpZENoYW5nZSA9IG1fdHJhamVjdG9yeVZlY3RvciAhPSBtX3BlbmRp
bmdUcmFqZWN0b3J5VmVjdG9yIHx8IG1fdmlzaWJsZVJlY3QgIT0gdmlzaWJsZVJlY3QgfHwgbV9y
ZWN0ICE9IHJlY3Q7CisgICAgaWYgKGRpZENoYW5nZSB8fCBtX25lZWRUb0NyZWF0ZU5leHRUaWxl
cykKKyAgICAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKQEAgLTEwOCw3ICsx
MDMsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzRGlydHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxl
QnVmZmVycygpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVz
QWxsb3dlZCgpIHx8IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1fY29udGVudHNGcm96ZW4p
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50
QmVnaW4oKTsKQEAgLTE5Myw3ICsxODgsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb21t
aXRTY2FsZUNoYW5nZSgpCiAgICAgbV9jb250ZW50c1NjYWxlID0gbV9wZW5kaW5nU2NhbGU7CiAg
ICAgbV9wZW5kaW5nU2NhbGUgPSAwOwogICAgIG1fdGlsZXMuY2xlYXIoKTsKLSAgICBjb3Zlcldp
dGhUaWxlc0lmTmVlZGVkKCk7CisgICAgY3JlYXRlVGlsZXNJZk5lZWRlZCgpOwogfQogCiBkb3Vi
bGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVEaXN0YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9y
dCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpIGNvbnN0CkBAIC0yNDUs
NiArMjQwLDggQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgIC8v
IFVwZGF0ZSBvdXIgYmFja2luZyBzdG9yZSBnZW9tZXRyeS4KICAgICBjb25zdCBJbnRSZWN0IHBy
ZXZpb3VzUmVjdCA9IG1fcmVjdDsKICAgICBtX3JlY3QgPSBtYXBGcm9tQ29udGVudHMobV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOworICAgIG1fdHJhamVjdG9yeVZl
Y3RvciA9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CisgICAgbV92aXNpYmxlUmVjdCA9IHZp
c2libGVSZWN0KCk7CiAKICAgICBpZiAobV9yZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBzZXRD
b3ZlclJlY3QoSW50UmVjdCgpKTsKQEAgLTI3MywxMiArMjcwLDkgQEAgdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAqIFdlIG11c3QgY3JlYXRlIG9yIGtlZXAgdGhl
IHRpbGVzIGluIHRoZSBIRVJFIHJlZ2lvbi4KICAgICAgKi8KIAotICAgIGNvbnN0IEludFJlY3Qg
dmlzaWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVjdCgpOwotICAgIG1fdmlzaWJsZVJlY3QgPSB2
aXNpYmxlUmVjdDsKLQogICAgIEludFJlY3QgY292ZXJSZWN0OwogICAgIEludFJlY3Qga2VlcFJl
Y3Q7Ci0gICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QodmlzaWJsZVJlY3QsIGNvdmVyUmVjdCwg
a2VlcFJlY3QpOworICAgIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KG1fdmlzaWJsZVJlY3QsIGNv
dmVyUmVjdCwga2VlcFJlY3QpOwogCiAgICAgc2V0Q292ZXJSZWN0KGNvdmVyUmVjdCk7CiAgICAg
c2V0S2VlcFJlY3Qoa2VlcFJlY3QpOwpAQCAtMzA5LDcgKzMwMyw3IEBAIHZvaWQgVGlsZWRCYWNr
aW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAgICAgICAgIGlmICh0aWxlQXQoY3VycmVudENv
b3JkaW5hdGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgKytyZXF1
aXJlZFRpbGVDb3VudDsKLSAgICAgICAgICAgIGRvdWJsZSBkaXN0YW5jZSA9IHRpbGVEaXN0YW5j
ZSh2aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5hdGUpOworICAgICAgICAgICAgZG91YmxlIGRp
c3RhbmNlID0gdGlsZURpc3RhbmNlKG1fdmlzaWJsZVJlY3QsIGN1cnJlbnRDb29yZGluYXRlKTsK
ICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHNob3J0ZXN0RGlzdGFuY2UpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBzaG9ydGVzdERpc3Rh
bmNlKSB7CkBAIC0zMzMsOCArMzI3LDIwIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0
ZVRpbGVzKCkKICAgICAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIAogICAgIC8vIFJlLWNhbGwg
Y3JlYXRlVGlsZXMgb24gYSB0aW1lciB0byBjb3ZlciB0aGUgdmlzaWJsZSBhcmVhIHdpdGggdGhl
IG5ld2VzdCBzaG9ydGVzdCBkaXN0YW5jZS4KLSAgICBpZiAocmVxdWlyZWRUaWxlQ291bnQpCi0g
ICAgICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KG1fdGlsZUNyZWF0
aW9uRGVsYXkpOworICAgIG1fbmVlZFRvQ3JlYXRlTmV4dFRpbGVzID0gcmVxdWlyZWRUaWxlQ291
bnQ7CisgICAgaWYgKG1fbmVlZFRvQ3JlYXRlTmV4dFRpbGVzKQorICAgICAgICBuZWVkVG9DcmVh
dGVUaWxlcygpOworfQorCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpuZWVkVG9DcmVhdGVUaWxl
cygpCit7CisgICAgaWYgKCFtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKSB7Cisg
ICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRpbGVDcmVh
dGlvbkRlbGF5ID0gMC4wMTsKKyAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRpbGVD
cmVhdGlvbkRlbGF5KTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0Rm9yQ29u
dGVudHNSZWN0KEludFJlY3QmIHJlY3QpIGNvbnN0CkBAIC00MjMsNyArNDI5LDcgQEAgYm9vbCBU
aWxlZEJhY2tpbmdTdG9yZTo6aXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkgY29uc3QK
IAogYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW4gfHwgIW1fY2xpZW50LT50aWxl
ZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAgcmV0dXJuIG1fY29udGVudHNGcm96
ZW47CiB9CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpCkBAIC01
MjYsNiArNTMyLDkgQEAgVGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNv
b3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQKIAogdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogeworICAgIGlmICghbV9jb21t
aXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkgfHwgaXNUaWxlQnVmZmVyVXBkYXRl
c1N1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxlQnVmZmVyVXBkYXRlVGlt
ZXIuc3RhcnRPbmVTaG90KDApOwpAQCAtNTMzLDE4ICs1NDIsMjMgQEAgdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogCiB2b2lkIFRpbGVkQmFja2lu
Z1N0b3JlOjp0aWxlQnVmZmVyVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9y
ZT4qKQogeworICAgIEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKTsK
ICAgICB1cGRhdGVUaWxlQnVmZmVycygpOwogfQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpz
dGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCkKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0
YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlIGludGVydmFsKQogeworICAgIGlmICgh
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuaXNBY3RpdmUoKSB8fCBpc0JhY2tpbmdT
dG9yZVVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fYmFja2luZ1N0
b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fYmFja2luZ1N0b3JlVXBkYXRl
VGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9y
ZTo6YmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4q
KQogeworICAgIEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKTsKICAg
ICBjcmVhdGVUaWxlcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCAwODJiZTcwYzhlYjI3NTE3OTBiN2Fi
ODc3NTY5NDliYWM4MWE2ZDI4Li5mNDc4ZGVhM2Q3ZDk1ZWIwZGQzOTVlMWE4NmYxNDc3OTkwYzc3
YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZ1N0b3JlLmgKQEAgLTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIFRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0gICAgdm9p
ZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIHBhbm5pbmdUcmFqZWN0
b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpKTsKKyAgICAvLyBVc2VkIHdoZW4gY2xhc3MgbWV0aG9k
cyBjYW5ub3QgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IGNsaWVudC4KKyAgICAvLyBVcGRh
dGVzIG9mIHRpbGVzIGFyZSBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBl
dmVudCBxdWV1ZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgIHZvaWQgc2V0Q29tbWl0VGlsZVVw
ZGF0ZXNPbklkbGVFdmVudExvb3AoYm9vbCBlbmFibGUpIHsgbV9jb21taXRUaWxlVXBkYXRlc09u
SWRsZUV2ZW50TG9vcCA9IGVuYWJsZTsgfQorCisgICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVjdG9y
KGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2b2lkIGNyZWF0ZVRpbGVzSWZOZWVkZWQoKTsKIAog
ICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAg
ICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwpAQCAtNjIsOSArNjcsNiBAQCBwdWJsaWM6
CiAgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KICAgICB2b2lk
IHNldFRpbGVTaXplKGNvbnN0IEludFNpemUmKTsKIAotICAgIGRvdWJsZSB0aWxlQ3JlYXRpb25E
ZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUNyZWF0aW9uRGVsYXk7IH0KLSAgICB2b2lkIHNl
dFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSk7Ci0KICAgICBJbnRSZWN0IG1hcFRvQ29u
dGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEludFJlY3QgbWFwRnJvbUNvbnRlbnRz
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKIApAQCAtODEsMTEgKzgzLDEyIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCk7Ci0gICAgdm9p
ZCBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CisgICAgdm9pZCBzdGFydEJhY2tpbmdT
dG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSA9IDApOwogCiAgICAgdm9pZCB0aWxlQnVmZmVyVXBkYXRl
VGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKTsKICAgICB2b2lkIGJhY2tpbmdT
dG9yZVVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+Kik7CiAKKyAgICB2
b2lkIG5lZWRUb0NyZWF0ZVRpbGVzKCk7CiAgICAgdm9pZCBjcmVhdGVUaWxlcygpOwogICAgIHZv
aWQgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIElu
dFJlY3QmIGNvdmVyUmVjdCwgSW50UmVjdCYga2VlcFJlY3QpIGNvbnN0OwogCkBAIC0xMjAsMTAg
KzEyMywxMCBAQCBwcml2YXRlOgogICAgIFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiBtX2JhY2tp
bmdTdG9yZVVwZGF0ZVRpbWVyOwogCiAgICAgSW50U2l6ZSBtX3RpbGVTaXplOwotICAgIGRvdWJs
ZSBtX3RpbGVDcmVhdGlvbkRlbGF5OwogICAgIGZsb2F0IG1fY292ZXJBcmVhTXVsdGlwbGllcjsK
IAogICAgIEZsb2F0UG9pbnQgbV90cmFqZWN0b3J5VmVjdG9yOworICAgIEZsb2F0UG9pbnQgbV9w
ZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKICAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7CiAKICAg
ICBJbnRSZWN0IG1fY292ZXJSZWN0OwpAQCAtMTMzLDggKzEzNiwxMCBAQCBwcml2YXRlOgogICAg
IGZsb2F0IG1fY29udGVudHNTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKIAorICAg
IGJvb2wgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcDsKICAgICBib29sIG1fY29u
dGVudHNGcm96ZW47CiAgICAgYm9vbCBtX3N1cHBvcnRzQWxwaGE7CisgICAgYm9vbCBtX25lZWRU
b0NyZWF0ZU5leHRUaWxlczsKIAogICAgIGZyaWVuZCBjbGFzcyBUaWxlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZUNsaWVudC5oCmluZGV4IDBlMDIxNDc3NzMzMGUyNWYxZmM4NDM4NzFmNDVhNWEwOThmOWNkMWQu
LjA3Nzg0ZmU3NDk5NjhlZTgxYTEzZjBjZDcyODRjY2NkMmQ1Y2IxNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVD
bGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRpbGVk
QmFja2luZ1N0b3JlUGFpbnRCZWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNr
aW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYgcGFpbnRlZEFyZWEpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgdGlsZWRCYWNraW5nU3Rv
cmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdGlsZWRCYWNraW5nU3RvcmVOZWVkVG9DcmVhdGVUaWxlcygpIHsgfQogICAgIHZpcnR1YWwg
SW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpID0gMDsKICAgICB2aXJ0dWFs
IEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpID0gMDsKICAgICB2aXJ0dWFs
IENvbG9yIHRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCBjNTc3OWFiM2Y5Mzdi
ZjhhMTUxMDgyNGQyYzk5ZWE3YTA3N2EzMWMwLi44NWUzNGQ1MWQ5OTQ4NjkwMjhmZGU4YjliMGI2
MDg5MmI5ODA5MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
c2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNw
cApAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9z
bWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtCiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5GcmFtZSA9IEVXS1By
aXZhdGU6OmNvcmVGcmFtZShzbWFydERhdGEtPm1haW5fZnJhbWUpOwogICAgIGlmIChtYWluRnJh
bWUgJiYgbWFpbkZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpKQotICAgICAgICBtYWluRnJhbWUt
PnRpbGVkQmFja2luZ1N0b3JlKCktPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICAgICAg
bWFpbkZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5jcmVhdGVUaWxlc0lmTmVlZGVkKCk7CiAj
ZW5kaWYKIAogICAgIEV3a19QYWludF9Db250ZXh0KiBjb250ZXh0ID0gZXdrX3BhaW50X2NvbnRl
eHRfZnJvbV9pbWFnZV9uZXcoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCmluZGV4
IDdmNTVkYTM2MmU4MWQ4ZTFmOTUzZmI3NDYyMjNmNzAyYjAwMGQwZDQuLmM0N2E5OWZkZmRiODQx
ZmNhY2UyOTUwYWVlMDU4ZmE3ZTY5MWUyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBA
IGJvb2wgUVdlYkZyYW1lQWRhcHRlcjo6cmVuZGVyRnJvbVRpbGVkQmFja2luZ1N0b3JlKFFQYWlu
dGVyKiBwYWludGVyLCBjb25zdCBRUmVnCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgc2V0IHRoZSBiYWNraW5nIHN0b3JlIHZpZXdwb3J0IGVhcmxpZXIg
dGhhbiBpbiBwYWludAotICAgIGZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5jb3ZlcldpdGhU
aWxlc0lmTmVlZGVkKCk7CisgICAgZnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZVRp
bGVzSWZOZWVkZWQoKTsKIAogICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGFmMDc5
ODMyZDZjZDk4ZDkyOWRiYWNlMmIwMjk2NjIyNDBiMWEzNzcuLjAwZDRhODc4NDYwMGY2ZTQwNGE0
YjIxZWY3MzNlMTI3NmU2MDJhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzgsNiArMzgsOSBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5
Q2hhbmdlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xMDksNyArMTEyLDkgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmRpZENoYW5nZUdlb21ldHJ5KCkKIAogQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCisjaWZuZGVmIE5ERUJVRwogICAgICwgbV9p
blVwZGF0ZU1vZGUoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJl
Y3QodHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0xheWVyU3RhdGUodHJ1ZSkKICAgICAsIG1fc2hv
dWxkU3luY0NoaWxkcmVuKHRydWUpCkBAIC0xMjAsNiArMTI1LDggQEAgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCog
Y2xpZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2NhbnZh
c05lZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0Rlc3Ryb3koZmFsc2UpCisg
ICAgLCBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUoZmFsc2UpCisgICAgLCBtX3Nob3VsZEFk
anVzdFZpc2libGVSZWN0KGZhbHNlKQogICAgICwgbV9jb29yZGluYXRvcigwKQogICAgICwgbV9j
b250ZW50c1NjYWxlKDEpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQpAQCAt
NjM5LDE0ICs2NDYsMTggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFJvb3RM
YXllcihib29sIGlzUm9vdCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZp
c2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVj
dG9yeVZlY3RvcikKIHsKLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21h
aW5CYWNraW5nU3RvcmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQodHJhamVjdG9yeVZlY3Rvcik7
CisgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bWFpbkJhY2tpbmdTdG9yZS0+c2V0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsK
KyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAgICBt
X2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKLSAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7CisgICAg
aWYgKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgbV9zaG91bGRBZGp1c3RDb250
ZW50c1NjYWxlID0gdHJ1ZTsKIH0KIAogZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpl
ZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKQEAgLTY1Niw5ICs2NjcsNyBAQCBmbG9hdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSgpCiB7Ci0gICAgaWYgKCFz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHJldHVybjsKLQorICAgIEFTU0VSVChz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCkpOwogICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlIHx8
IG1fbWFpbkJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgpID09IGVmZmVjdGl2ZUNvbnRlbnRz
U2NhbGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02OTAsMTEgKzY5OSwxMSBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBW
ZWN0b3I8SW50UmVjdD4mCiB7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0
aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKK3ZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCkKIHsKLSAg
ICBpZiAoIW1faW5VcGRhdGVNb2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IG1fY29vcmRpbmF0b3ItPmxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpOworICAgIG1fc2hv
dWxkQWRqdXN0VmlzaWJsZVJlY3QgPSB0cnVlOworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAg
Y2xpZW50KCktPm5vdGlmeUZsdXNoUmVxdWlyZWQodGhpcyk7CiB9CiAKIEludFJlY3QgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpCkBAIC03
MzcsMjggKzc0NiwzMCBAQCBDb2xvciBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFj
a2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAogUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIGludCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgaWYg
KCFtX2Nvb3JkaW5hdG9yKQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ+KCk7Ci0KKyAgICBBU1NFUlQobV9pblVwZGF0ZU1vZGUpOworICAgIEFTU0VS
VChtX2Nvb3JkaW5hdG9yKTsKICAgICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50
VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkgPyAwIDogU2hhcmVhYmxlQml0bWFwOjpTdXBw
b3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5m
byYgdXBkYXRlSW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZVJlY3QpCiB7Ci0gICAg
aWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVRpbGUoaWQo
KSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNTRVJUKG1faW5VcGRhdGVN
b2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGluYXRvci0+Y3Jl
YXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0KIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25z
dCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3Qp
CiB7Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0
ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNTRVJUKG1f
aW5VcGRhdGVNb2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGlu
YXRvci0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUodWludDMyX3QgdGls
ZUlEKQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5y
ZW1vdmVUaWxlKGlkKCksIHRpbGVJRCk7CisgICAgQVNTRVJUKG1faW5VcGRhdGVNb2RlKTsKKyAg
ICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGluYXRvci0+cmVtb3ZlVGlsZShp
ZCgpLCB0aWxlSUQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRl
Q29udGVudEJ1ZmZlcnMoKQpAQCAtNzY5LDEzICs3ODAsMjIgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1faW5VcGRhdGVNb2RlID0gdHJ1ZTsKKyAgICBpZiAobV9zaG91bGRBZGp1c3RD
b250ZW50c1NjYWxlKSB7CisgICAgICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICAgICAg
bV9zaG91bGRBZGp1c3RDb250ZW50c1NjYWxlID0gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVGhp
cyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3JlYXRlIHRoZSBtYWluIHRpbGVkIGJhY2tpbmcg
c3RvcmUsIG9uY2Ugd2UKICAgICAvLyBoYXZlIGEgcmVtb3RlIGNsaWVudCBhbmQgd2UgYXJlIHJl
YWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3MuCiAgICAgaWYgKCFtX21haW5C
YWNraW5nU3RvcmUpCiAgICAgICAgIGNyZWF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgaWYgKG1f
c2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QpIHsKKyAgICAgICAgbV9zaG91bGRBZGp1c3RWaXNpYmxl
UmVjdCA9IGZhbHNlOworICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNyZWF0ZVRpbGVzSWZO
ZWVkZWQoKTsKKyAgICB9CisKICAgICBtX21haW5CYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGVCdWZm
ZXJzKCk7Ci0gICAgbV9pblVwZGF0ZU1vZGUgPSBmYWxzZTsKIAogICAgIC8vIFRoZSBwcmV2aW91
cyBiYWNraW5nIHN0b3JlIGlzIGtlcHQgYXJvdW5kIHRvIGF2b2lkIGZsaWNrZXJpbmcgYmV0d2Vl
bgogICAgIC8vIHJlbW92aW5nIHRoZSBleGlzdGluZyB0aWxlcyBhbmQgcGFpbnRpbmcgdGhlIG5l
dyBvbmVzLiBUaGUgZmlyc3QgdGltZQpAQCAtNzg2LDYgKzgwNiw5IEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogeworI2lmbmRlZiBOREVCVUcK
KyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gdXBkYXRlTW9kZVByb3RlY3RvcihtX2luVXBkYXRl
TW9kZSwgdHJ1ZSk7CisjZW5kaWYKICAgICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKICAg
ICBtX3ByZXZpb3VzQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAKQEAgLTc5OSwxMCArODIyLDEwIEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllckNsCiAgICAgbV9jb29yZGluYXRvciA9IGNvb3JkaW5hdG9y
OwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0VmlzaWJsZVJlY3Qo
KQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1
c3RtZW50KCkKIHsKLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21haW5C
YWNraW5nU3RvcmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICBpZiAoc2hvdWxkSGF2
ZUJhY2tpbmdTdG9yZSgpKQorICAgICAgICBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0ID0gdHJ1
ZTsKIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6Omhhc1BlbmRpbmdWaXNpYmxl
Q2hhbmdlcygpCkBAIC05MDMsOCArOTI2LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICBtX2NhY2hlZEludmVyc2VU
cmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOwogCiAgICAg
Ly8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3Rv
cmVWaXNpYmxlUmVjdC4KLSAgICBhZGp1c3RWaXNpYmxlUmVjdCgpOwotICAgIGFkanVzdENvbnRl
bnRzU2NhbGUoKTsKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiBz
dGF0aWMgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBkOWZiZTdlYzRh
MWE3ODczNTE2ZDk1NzgxNTY5NmFlODMwMzk5ODkzLi4zZjE2MzdmZGMxNGU2ZDdkYjI1ZTgzZjdh
NGJiYjQ0N2FiMDJmYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNTgsNyArNTgsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxl
SUQpID0gMDsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50
c1JlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVz
QWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQs
IGNvbnN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5j
TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQsIGNvbnN0IFZlY3RvcjxDb29yZGluYXRl
ZExheWVySUQ+JikgPSAwOwpAQCAtMTUwLDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50
RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFyZWEpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3JlYXRlVGlsZXMo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50
c1JlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3Rv
cmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklERTsKQEAgLTE2Myw3ICsxNjIsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CisgICAg
dm9pZCBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHZvaWQgcHVyZ2VCYWNr
aW5nU3RvcmVzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMoKTsKIApAQCAt
MjE4LDcgKzIxNyw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX2FkanVzdGVkUG9zaXRp
b247CiAgICAgRmxvYXRQb2ludDNEIG1fYWRqdXN0ZWRBbmNob3JQb2ludDsKIAotICAgIGJvb2wg
bV9pblVwZGF0ZU1vZGUgOiAxOworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIG1faW5VcGRhdGVN
b2RlOworI2VuZGlmCiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAxOwogICAg
IGJvb2wgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKICAgICBib29sIG1fc2hvdWxkU3luY0No
aWxkcmVuOiAxOwpAQCAtMjI5LDYgKzIzMCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbnZh
c05lZWRzRGlzcGxheSA6IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzQ3JlYXRlIDogMTsKICAg
ICBib29sIG1fY2FudmFzTmVlZHNEZXN0cm95IDogMTsKKyAgICBib29sIG1fc2hvdWxkQWRqdXN0
Q29udGVudHNTY2FsZSA6IDE7CisgICAgYm9vbCBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0IDog
MTsKIAogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3Jk
aW5hdG9yOwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IGJmNjdlYWRmZDhjNGI5YWE5MzIyY2E3MmY3MTQxNDA5NGNmOTlmOTguLjA5MjNh
OTQ2MmEzODMxY2JhNTA2MTZjNTYwZjhiNmE0YzQwYmVmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTYwNyw2ICs2MDcs
NyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLAogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9y
Ojpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogewor
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9y
OjpwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXIsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QpCkBAIC02MzAsNyArNjMxLDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBMYXllclRy
ZWVDb29yZGluYXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWUKICAgICBsYXll
ci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXll
cik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKLSAgICBs
YXllci0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVj
dEFkanVzdG1lbnQoKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQogCkBAIC03MTIs
NyArNzEzLDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHMKICAgICAgICAgICAgIGlmIChjb250
ZW50c1NjYWxlRGlkQ2hhbmdlKQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRDb250ZW50c1Nj
YWxlKHNjYWxlKTsKICAgICAgICAgICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpCi0gICAg
ICAgICAgICAgICAgKCppdCktPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgICAgICAgICAgICAg
KCppdCktPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTc1MiwxMSArNzUzLDYgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVuZGVy
TmV4dEZyYW1lKCkKICAgICAgICAgbV91cGRhdGVBdGxhc2VzW2ldLT5kaWRTd2FwQnVmZmVycygp
OwogfQogCi1ib29sIExheWVyVHJlZUNvb3JkaW5hdG9yOjpsYXllclRyZWVUaWxlVXBkYXRlc0Fs
bG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiAhbV9pc1N1c3BlbmRlZCAmJiAhbV93YWl0aW5n
Rm9yVUlQcm9jZXNzOwotfQotCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tp
bmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBwdXJnaW5nVG9nZ2xlKG1f
aXNQdXJnaW5nLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvci5oCmluZGV4IDdiYjY4YjhjNzczYjgzMjMxNjVhN2FhMTk0Mjg5ZDE0Njgx
ZjVhNTEuLmI4OGI0MGNmZTYwMzllOTNmNTU4MmVmYzEzMjg1ODY4Y2QyMGQ1YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtODQs
NyArODQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdmlydHVhbCBi
b29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0
IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgp
IE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178340</attachid>
            <date>2012-12-07 22:59:32 -0800</date>
            <delta_ts>2012-12-11 01:43:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121208155646.patch</filename>
            <type>text/plain</type>
            <size>31518</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ4NTZkMDI0YjkyMWMy
MGJhMzc3YzY3MWM1ZGRlMDE5YTllYTUyNy4uMTRmN2EzMGM5ODY3YmVkNmJhNWQ0ZmVmYThmODBi
NmY4NTA0NGE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTA3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjp0cmlnZ2VyVGlsZVVwZGF0ZXNBdXRvbWF0aWNh
bGx5KCkgaXMgdXNlZCB3aGVuIGNsYXNzCisgICAgICAgIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxl
ZCBhc3luY2hyb25vdXNseSBieSBjbGllbnQuIFVwZGF0ZXMgb2YgdGlsZXMgYXJlCisgICAgICAg
IGNvbW1pdHRlZCBhcyBzb29uIGFzIGFsbCB0aGUgZXZlbnRzIGluIGV2ZW50IHF1ZXVlIGhhdmUg
YmVlbiBwcm9jZXNzZWQuCisgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2ggRnJhbWUgc2V0cyBtX2Nv
bW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIHRvIHRydWUuCisKKyAgICAgICAgSW4gYWRk
aXRpb24sIHJlbW92ZSBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVV
cGRhdGVzQWxsb3dlZCgpCisgICAgICAgIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGZvciBDb29yZGlu
YXRlZCBHcmFwaGljcy4KKworICAgICAgICBSZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6VGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IpOgorICAgICAgICAgICAgU2VwYXJhdGUg
c2V0dGluZyBhIHRyYWplY3RvcnkgdmVjdG9yIGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgp
LgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzSWZOZWVk
ZWQpOgorICAgICAgICAgICAgUmVuYW1lZCBmcm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKS4K
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6Om5l
ZWRUb0NyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpp
c1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5n
U3RvcmVOZWVkVG9DcmVhdGVUaWxlcyk6CisgICAgICAgICAgICBJZiBUaWxlZEJhY2tpbmdTdG9y
ZSBkb2VzIG5vdCBjcmVhdGUgYWxsIHRpbGVzLCBUaWxlZEJhY2tpbmdTdG9yZQorICAgICAgICAg
ICAgbm90aWZpZXMgYSBjbGllbnQgb2YgbmVlZGluZyB0byBjcmVhdGUgdGlsZXMgbW9yZSwgd2hl
bgorICAgICAgICAgICAgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCBpcyBmYWxz
ZS4KKwogMjAxMi0xMi0wNyAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgogCiAg
ICAgICAgIEV4dGVuZCBwbGF0Zm9ybSBsYXllciBzbyBpdCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0
byB0aGUgY29tcG9zaXRpbmcgY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAwM2NjYWRkMmU1MmVk
N2QxZjgzNzBmOTY3NzNhYWRlZDdjN2Y5YzRiLi40ZDAyZmQ4ZjIyN2Q0YjdmOGM3YzYxYjBhZWQz
Nzk0MzY1MzkzZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MDcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAg
Q29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4g
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIGZyb20gY292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCgpIHRvIGNyZWF0ZVRpbGVzSWZOZWVkZWQoKQorICAgICAgICBpbiBUaWxlZEJhY2tp
bmdTdG9yZSwgc28gYSBjbGllbnQgbXVzdCBiZSBhbWVuZGVkLgorCisgICAgICAgICogZXdrL2V3
a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFp
bnRzX3Byb2Nlc3MpOgorCiAyMDEyLTEyLTA1ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRl
bC5jb20+CiAKICAgICAgICAgW0NNYWtlXSBVbmlmeSBjb2Rpbmcgc3R5bGUgZm9yIENNYWtlIGZp
bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJiYzJiOGUyMWM5ZGEwNjRiYzQ0YWRjYmFmMzVkZGE2NWUy
YTZhOTEuLmI0MzAwMjhmZTFkMmVlMDc4YTc1MmM0YzdiMDA2OWI4YTk0OWNmM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMDcgIEh1YW5nIERvbmdzdW5nICA8bHV4
dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJl
ZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZW5hbWVzIGZyb20gY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpIHRvIGNyZWF0ZVRpbGVz
SWZOZWVkZWQoKQorICAgICAgICBpbiBUaWxlZEJhY2tpbmdTdG9yZSwgc28gYSBjbGllbnQgbXVz
dCBiZSBhbWVuZGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRl
ci5jcHA6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpyZW5kZXJGcm9tVGlsZWRCYWNraW5n
U3RvcmUpOgorCiAyMDEyLTEyLTA3ICBTZXJnaW8gTWFydGlucyAgPHNlcmdpby5tYXJ0aW5zQGtk
YWIuY29tPgogCiAgICAgICAgIFtRdF1bUW54XSBGaXggUU5YIGJ1aWxkIGJ5IGFkZGluZyBtaXNz
aW5nIGluY2x1ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzZhNDVhZjg4ODk4OGUzNzMwYzkwODQxZTg5YjJl
ZTNmYWNiODU5My4uOTliZmZlMWY2MjRjZDVkMzljMzFhYTAwNTc3ZmQyMDU4MWY2Nzk5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEyLTA3ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBS
ZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk1
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJl
bnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhcyBjb21wbGV4IGNvZGUgcmVsYXRlZCB0
byBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAgICAgSXQgaGFzIHR3byBwcm9ibGVtLgorICAgICAg
ICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFja3MgVGlsZWRCYWNraW5nU3RvcmUgdG8g
cHJldmVudAorICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBmcm9tIGFzeW5jaHJvbm91c2x5IHNl
bmRpbmcgVXBkYXRlVGlsZSBtZXNzYWdlIHRvIFVJCisgICAgICAgIFByb2Nlc3MuCisgICAgICAg
IDIuIENyZWF0ZVRpbGUgYW5kIFJlbW92ZVRpbGUgbWVzc2FnZSBjYW4gYmUgc2VudCB0byBVSSBQ
cm9jZXNzIGF0IGFueSB0aW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyIHVzZSBUaWxlZEJhY2tpbmdTdG9yZSBtb3JlIGV4cGxpY2l0bHkuCisg
ICAgICAgIEl0IG1lYW5zIG9ubHkgZHVyaW5nIGZsdXNoaW5nIGxheWVyIHN0YXRlcywgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyCisgICAgICAgIGNhbGxzIG1ldGhvZHMgb2YgVGlsZWRCYWNraW5n
U3RvcmUsIHdoaWNoIGluZGlyZWN0bHkgY2FsbCBjcmVhdGVUaWxlKCksCisgICAgICAgIHVwZGF0
ZVRpbGUoKSBhbmQgcmVtb3ZlVGlsZSgpLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgcHVy
cG9zZSBvZiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6Om1faW5VcGRhdGVNb2RlIGlzCisgICAg
ICAgIGNoYW5nZWQuIEN1cnJlbnRseSwgd2Ugc2V0IG1faW5VcGRhdGVNb2RlIHRvIHRydWUgd2hl
biB1cGRhdGluZyBhCisgICAgICAgIGJhY2tpbmcgc3RvcmUuIEFmdGVyIHRoaXMgcGF0Y2gsIHdl
IHNldCBtX2luVXBkYXRlTW9kZSB0byB0cnVlIHdoZW4KKyAgICAgICAgc2VuZGluZyBtZXNzYWdl
cyB2aWEgTGF5ZXJUcmVlQ29vcmRpbmF0b3IgdG8gVUkgUHJvY2Vzcy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVu
dFJlY3RUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0
ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVn
aW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVU
cmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
Q29vcmRpbmF0b3I6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVDb29yZGluYXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3IpOgorCiAyMDEyLTEyLTA3ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRoZSBXZWJQ
cm9jZXNzIGFjY2VzcyB0byB0aGUgQ29yZU1lZGlhIHByZWZlcmVuY2VzIGZpbGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCmluZGV4IGFjNzk0NjkxZDc1NDEzNDA1Y2QwZDY1NjdlMTliMDQxYWMyODE3ZWMu
LmQ2M2UxYTQwZWY4NjYzMmJmMWNjNDcwNzFlYzFhMDM0MGRiMjQzNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC04MjAsNiArODIwLDcgQEAgdm9pZCBGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3Rv
cmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBpZiAobV90aWxlZEJhY2tpbmdTdG9yZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fdGlsZWRCYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGls
ZWRCYWNraW5nU3RvcmUodGhpcykpOworICAgIG1fdGlsZWRCYWNraW5nU3RvcmUtPnNldENvbW1p
dFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKHRydWUpOwogICAgIGlmIChtX3ZpZXcpCiAgICAg
ICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVudHModHJ1ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggOWEzN2E5NmZhYjJlYjY3YTI1MTczNWVmOWRlYzBmYThmOGI0ZjJhOC4uNjhlZWZjY2E5
ZWMxNTYwZGZmZTk4NTdmMDA1MGE5NjU3YmMzNjFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDEsMTIg
KzQxLDEzIEBAIFRpbGVkQmFja2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tp
bmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3duUHRyCiAgICAgLCBtX3RpbGVCdWZmZXJVcGRh
dGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVCdWZmZXJVcGRhdGVUaW1lckZp
cmVkKQogICAgICwgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5n
U3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplKGRl
ZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURpbWVuc2lvbikKLSAgICAsIG1fdGlsZUNy
ZWF0aW9uRGVsYXkoMC4wMSkKICAgICAsIG1fY292ZXJBcmVhTXVsdGlwbGllcigyLjBmKQogICAg
ICwgbV9jb250ZW50c1NjYWxlKDEuZikKICAgICAsIG1fcGVuZGluZ1NjYWxlKDApCisgICAgLCBt
X2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKGZhbHNlKQogICAgICwgbV9jb250ZW50
c0Zyb3plbihmYWxzZSkKICAgICAsIG1fc3VwcG9ydHNBbHBoYShmYWxzZSkKKyAgICAsIG1fbmVl
ZFRvQ3JlYXRlTmV4dFRpbGVzKGZhbHNlKQogewogfQogCkBAIC02MSwyNiArNjIsMjAgQEAgdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAg
ICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CiB9CiAKLXZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OnNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSkKK3ZvaWQgVGlsZWRCYWNr
aW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9y
eVZlY3RvcikKIHsKLSAgICBtX3RpbGVDcmVhdGlvbkRlbGF5ID0gZGVsYXk7CisgICAgbV9wZW5k
aW5nVHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CisgICAgbV9wZW5kaW5nVHJh
amVjdG9yeVZlY3Rvci5ub3JtYWxpemUoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
Y292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
KQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXNJZk5lZWRlZCgpCiB7CiAgICAg
SW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7CiAgICAgSW50UmVjdCBy
ZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRz
UmVjdCgpKTsKIAotICAgIEZsb2F0UG9pbnQgbm9ybWFsaXplZFZlY3RvciA9IHRyYWplY3RvcnlW
ZWN0b3I7Ci0gICAgbm9ybWFsaXplZFZlY3Rvci5ub3JtYWxpemUoKTsKLQotICAgIGlmIChtX3Ry
YWplY3RvcnlWZWN0b3IgPT0gbm9ybWFsaXplZFZlY3RvciAmJiBtX3Zpc2libGVSZWN0ID09IHZp
c2libGVSZWN0ICYmIG1fcmVjdCA9PSByZWN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Ry
YWplY3RvcnlWZWN0b3IgPSBub3JtYWxpemVkVmVjdG9yOwotICAgIG1fdmlzaWJsZVJlY3QgPSB2
aXNpYmxlUmVjdDsKLQotICAgIGNyZWF0ZVRpbGVzKCk7CisgICAgYm9vbCBkaWRDaGFuZ2UgPSBt
X3RyYWplY3RvcnlWZWN0b3IgIT0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciB8fCBtX3Zpc2li
bGVSZWN0ICE9IHZpc2libGVSZWN0IHx8IG1fcmVjdCAhPSByZWN0OworICAgIGlmIChkaWRDaGFu
Z2UgfHwgbV9uZWVkVG9DcmVhdGVOZXh0VGlsZXMpCisgICAgICAgIGNyZWF0ZVRpbGVzKCk7CiB9
CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgY29u
dGVudHNEaXJ0eVJlY3QpCkBAIC0xMDgsNyArMTAzLDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9y
ZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKIAogdm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQogewotICAgIGlmICghbV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSB8fCBtX2NvbnRlbnRzRnJvemVu
KQorICAgIGlmIChtX2NvbnRlbnRzRnJvemVuKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Ns
aWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCk7CkBAIC0xOTMsNyArMTg4LDcgQEAg
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogICAgIG1fY29udGVu
dHNTY2FsZSA9IG1fcGVuZGluZ1NjYWxlOwogICAgIG1fcGVuZGluZ1NjYWxlID0gMDsKICAgICBt
X3RpbGVzLmNsZWFyKCk7Ci0gICAgY292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgIGNyZWF0
ZVRpbGVzSWZOZWVkZWQoKTsKIH0KIAogZG91YmxlIFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlRGlz
dGFuY2UoY29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIHRp
bGVDb29yZGluYXRlKSBjb25zdApAQCAtMjQ1LDYgKzI0MCw4IEBAIHZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAvLyBVcGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgZ2Vv
bWV0cnkuCiAgICAgY29uc3QgSW50UmVjdCBwcmV2aW91c1JlY3QgPSBtX3JlY3Q7CiAgICAgbV9y
ZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRz
UmVjdCgpKTsKKyAgICBtX3RyYWplY3RvcnlWZWN0b3IgPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVj
dG9yOworICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdCgpOwogCiAgICAgaWYgKG1fcmVj
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgc2V0Q292ZXJSZWN0KEludFJlY3QoKSk7CkBAIC0yNzMs
MTIgKzI3MCw5IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAg
KiBXZSBtdXN0IGNyZWF0ZSBvciBrZWVwIHRoZSB0aWxlcyBpbiB0aGUgSEVSRSByZWdpb24uCiAg
ICAgICovCiAKLSAgICBjb25zdCBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJl
Y3QoKTsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0KICAgICBJbnRSZWN0IGNv
dmVyUmVjdDsKICAgICBJbnRSZWN0IGtlZXBSZWN0OwotICAgIGNvbXB1dGVDb3ZlckFuZEtlZXBS
ZWN0KHZpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKKyAgICBjb21wdXRlQ292ZXJB
bmRLZWVwUmVjdChtX3Zpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKIAogICAgIHNl
dENvdmVyUmVjdChjb3ZlclJlY3QpOwogICAgIHNldEtlZXBSZWN0KGtlZXBSZWN0KTsKQEAgLTMw
OSw3ICszMDMsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAg
ICAgICAgICBpZiAodGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICsrcmVxdWlyZWRUaWxlQ291bnQ7Ci0gICAgICAgICAgICBk
b3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UodmlzaWJsZVJlY3QsIGN1cnJlbnRDb29yZGlu
YXRlKTsKKyAgICAgICAgICAgIGRvdWJsZSBkaXN0YW5jZSA9IHRpbGVEaXN0YW5jZShtX3Zpc2li
bGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0ZSk7CiAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiBz
aG9ydGVzdERpc3RhbmNlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
aWYgKGRpc3RhbmNlIDwgc2hvcnRlc3REaXN0YW5jZSkgewpAQCAtMzMzLDggKzMyNywyMCBAQCB2
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICAgIHVwZGF0ZVRpbGVC
dWZmZXJzKCk7CiAKICAgICAvLyBSZS1jYWxsIGNyZWF0ZVRpbGVzIG9uIGEgdGltZXIgdG8gY292
ZXIgdGhlIHZpc2libGUgYXJlYSB3aXRoIHRoZSBuZXdlc3Qgc2hvcnRlc3QgZGlzdGFuY2UuCi0g
ICAgaWYgKHJlcXVpcmVkVGlsZUNvdW50KQotICAgICAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRp
bWVyLnN0YXJ0T25lU2hvdChtX3RpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICBtX25lZWRUb0NyZWF0
ZU5leHRUaWxlcyA9IHJlcXVpcmVkVGlsZUNvdW50OworICAgIGlmIChtX25lZWRUb0NyZWF0ZU5l
eHRUaWxlcykKKyAgICAgICAgbmVlZFRvQ3JlYXRlVGlsZXMoKTsKK30KKwordm9pZCBUaWxlZEJh
Y2tpbmdTdG9yZTo6bmVlZFRvQ3JlYXRlVGlsZXMoKQoreworICAgIGlmICghbV9jb21taXRUaWxl
VXBkYXRlc09uSWRsZUV2ZW50TG9vcCkgeworICAgICAgICBtX2NsaWVudC0+dGlsZWRCYWNraW5n
U3RvcmVOZWVkVG9DcmVhdGVUaWxlcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSB0aWxlQ3JlYXRpb25EZWxheSA9IDAuMDE7CisgICAgc3RhcnRC
YWNraW5nU3RvcmVVcGRhdGVUaW1lcih0aWxlQ3JlYXRpb25EZWxheSk7CiB9CiAKIHZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25z
dApAQCAtNDIzLDcgKzQyOSw3IEBAIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzQmFja2luZ1N0
b3JlVXBkYXRlc1N1c3BlbmRlZCgpIGNvbnN0CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6Omlz
VGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRl
bnRzRnJvemVuIHx8ICFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgp
OworICAgIHJldHVybiBtX2NvbnRlbnRzRnJvemVuOwogfQogCiBib29sIFRpbGVkQmFja2luZ1N0
b3JlOjpyZXNpemVFZGdlVGlsZXMoKQpAQCAtNTI2LDYgKzUzMiw5IEBAIFRpbGU6OkNvb3JkaW5h
dGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIHBvaW50CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0
ZVRpbWVyKCkKIHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ap
CisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3RpbGVCdWZmZXJVcGRhdGVUaW1lci5pc0Fj
dGl2ZSgpIHx8IGlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUzMywx
OCArNTQyLDIzIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0
ZVRpbWVyKCkKIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVy
RmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRU
aWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCk7CiAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIH0K
IAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigp
Cit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKGRv
dWJsZSBpbnRlcnZhbCkKIHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVu
dExvb3ApCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2JhY2tpbmdTdG9yZVVwZGF0ZVRp
bWVyLmlzQWN0aXZlKCkgfHwgaXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKKyAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7
CiB9CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmly
ZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRUaWxl
VXBkYXRlc09uSWRsZUV2ZW50TG9vcCk7CiAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgK
aW5kZXggMDgyYmU3MGM4ZWIyNzUxNzkwYjdhYjg3NzU2OTQ5YmFjODFhNmQyOC4uZjQ3OGRlYTNk
N2Q5NWViMGRkMzk1ZTFhODZmMTQ3Nzk5MGM3N2IwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00Niw3ICs0Niwx
MiBAQCBwdWJsaWM6CiAKICAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50KCkgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgIHZvaWQgY292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25z
dCBGbG9hdFBvaW50JiBwYW5uaW5nVHJhamVjdG9yeVZlY3RvciA9IEZsb2F0UG9pbnQoKSk7Cisg
ICAgLy8gVXNlZCB3aGVuIGNsYXNzIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxlZCBhc3luY2hyb25v
dXNseSBieSBjbGllbnQuCisgICAgLy8gVXBkYXRlcyBvZiB0aWxlcyBhcmUgY29tbWl0dGVkIGFz
IHNvb24gYXMgYWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBiZWVuIHByb2Nlc3Nl
ZC4KKyAgICB2b2lkIHNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKGJvb2wgZW5h
YmxlKSB7IG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AgPSBlbmFibGU7IH0KKwor
ICAgIHZvaWQgc2V0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9p
ZCBjcmVhdGVUaWxlc0lmTmVlZGVkKCk7CiAKICAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgeyBy
ZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0
KTsKQEAgLTYyLDkgKzY3LDYgQEAgcHVibGljOgogICAgIEludFNpemUgdGlsZVNpemUoKSB7IHJl
dHVybiBtX3RpbGVTaXplOyB9CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJik7
CiAKLSAgICBkb3VibGUgdGlsZUNyZWF0aW9uRGVsYXkoKSBjb25zdCB7IHJldHVybiBtX3RpbGVD
cmVhdGlvbkRlbGF5OyB9Ci0gICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxheShkb3VibGUgZGVs
YXkpOwotCiAgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsK
ICAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKQEAg
LTgxLDExICs4MywxMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFRpbGVC
dWZmZXJVcGRhdGVUaW1lcigpOwotICAgIHZvaWQgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1l
cigpOworICAgIHZvaWQgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcihkb3VibGUgPSAwKTsK
IAogICAgIHZvaWQgdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5n
U3RvcmU+Kik7CiAgICAgdm9pZCBiYWNraW5nU3RvcmVVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRp
bGVkQmFja2luZ1N0b3JlPiopOwogCisgICAgdm9pZCBuZWVkVG9DcmVhdGVUaWxlcygpOwogICAg
IHZvaWQgY3JlYXRlVGlsZXMoKTsKICAgICB2b2lkIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBJbnRSZWN0JiBjb3ZlclJlY3QsIEludFJlY3QmIGtl
ZXBSZWN0KSBjb25zdDsKIApAQCAtMTIwLDEwICsxMjMsMTAgQEAgcHJpdmF0ZToKICAgICBUaW1l
cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcjsKIAogICAgIElu
dFNpemUgbV90aWxlU2l6ZTsKLSAgICBkb3VibGUgbV90aWxlQ3JlYXRpb25EZWxheTsKICAgICBm
bG9hdCBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CiAKICAgICBGbG9hdFBvaW50IG1fdHJhamVjdG9y
eVZlY3RvcjsKKyAgICBGbG9hdFBvaW50IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CiAgICAg
SW50UmVjdCBtX3Zpc2libGVSZWN0OwogCiAgICAgSW50UmVjdCBtX2NvdmVyUmVjdDsKQEAgLTEz
Myw4ICsxMzYsMTAgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAgICAg
ZmxvYXQgbV9wZW5kaW5nU2NhbGU7CiAKKyAgICBib29sIG1fY29tbWl0VGlsZVVwZGF0ZXNPbklk
bGVFdmVudExvb3A7CiAgICAgYm9vbCBtX2NvbnRlbnRzRnJvemVuOwogICAgIGJvb2wgbV9zdXBw
b3J0c0FscGhhOworICAgIGJvb2wgbV9uZWVkVG9DcmVhdGVOZXh0VGlsZXM7CiAKICAgICBmcmll
bmQgY2xhc3MgVGlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAppbmRleCAwZTAyMTQ3NzczMzBl
MjVmMWZjODQzODcxZjQ1YTVhMDk4ZjljZDFkLi4wNzc4NGZlNzQ5OTY4ZWU4MWExM2YwY2Q3Mjg0
Y2NjZDJkNWNiMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3Rv
cmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhaW50ZWRBcmVhKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlTmVlZFRvQ3Jl
YXRlVGlsZXMoKSB7IH0KICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250
ZW50c1JlY3QoKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlz
aWJsZVJlY3QoKSA9IDA7CiAgICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlld19zaW5nbGUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3Np
bmdsZS5jcHAKaW5kZXggYzU3NzlhYjNmOTM3YmY4YTE1MTA4MjRkMmM5OWVhN2EwNzdhMzFjMC4u
ODVlMzRkNTFkOTk0ODY5MDI4ZmRlOGI5YjBiNjA4OTJiOTgwOTE0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmll
d19TbWFydF9EYXRhKiBzbQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYkNv
cmU6OkZyYW1lKiBtYWluRnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlRnJhbWUoc21hcnREYXRhLT5t
YWluX2ZyYW1lKTsKICAgICBpZiAobWFpbkZyYW1lICYmIG1haW5GcmFtZS0+dGlsZWRCYWNraW5n
U3RvcmUoKSkKLSAgICAgICAgbWFpbkZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5jb3Zlcldp
dGhUaWxlc0lmTmVlZGVkKCk7CisgICAgICAgIG1haW5GcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUo
KS0+Y3JlYXRlVGlsZXNJZk5lZWRlZCgpOwogI2VuZGlmCiAKICAgICBFd2tfUGFpbnRfQ29udGV4
dCogY29udGV4dCA9IGV3a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KHNtYXJ0RGF0YS0+
YmFja2luZ19zdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViRnJhbWVBZGFwdGVyLmNwcAppbmRleCA3ZjU1ZGEzNjJlODFkOGUxZjk1M2ZiNzQ2MjIz
ZjcwMmIwMDBkMGQ0Li5jNDdhOTlmZGZkYjg0MWZjYWNlMjk1MGFlZTA1OGZhN2U2OTFlMmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRh
cHRlci5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCBib29sIFFXZWJGcmFtZUFkYXB0ZXI6OnJlbmRl
ckZyb21UaWxlZEJhY2tpbmdTdG9yZShRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlZwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNldCB0aGUgYmFj
a2luZyBzdG9yZSB2aWV3cG9ydCBlYXJsaWVyIHRoYW4gaW4gcGFpbnQKLSAgICBmcmFtZS0+dGls
ZWRCYWNraW5nU3RvcmUoKS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgIGZyYW1lLT50
aWxlZEJhY2tpbmdTdG9yZSgpLT5jcmVhdGVUaWxlc0lmTmVlZGVkKCk7CiAKICAgICBpZiAoIWZy
YW1lLT52aWV3KCkgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAppbmRleCBhZjA3OTgzMmQ2Y2Q5OGQ5MjlkYmFjZTJiMDI5NjYyMjQw
YjFhMzc3Li42NTU2NDBkOTk1YmVjNjc5NmYxYjY5YzI4ODhjODcwYjExNzQ1MDNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpZm5kZWYgTkRF
QlVHCisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTA5LDcg
KzExMiw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkaWRDaGFuZ2VHZW9tZXRy
eSgpCiAKIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IEdyYXBoaWNzTGF5ZXIoY2xpZW50
KQorI2lmbmRlZiBOREVCVUcKICAgICAsIG1faW5VcGRhdGVNb2RlKGZhbHNlKQorI2VuZGlmCiAg
ICAgLCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0KHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNM
YXllclN0YXRlKHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNDaGlsZHJlbih0cnVlKQpAQCAtMTIw
LDYgKzEyNSw4IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY2FudmFzTmVlZHNE
aXNwbGF5KGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0NyZWF0ZShmYWxzZSkKICAgICAsIG1f
Y2FudmFzTmVlZHNEZXN0cm95KGZhbHNlKQorICAgICwgbV9zaG91bGRBZGp1c3RDb250ZW50c1Nj
YWxlKGZhbHNlKQorICAgICwgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdChmYWxzZSkKICAgICAs
IG1fY29vcmRpbmF0b3IoMCkKICAgICAsIG1fY29udGVudHNTY2FsZSgxKQogICAgICwgbV9jb21w
b3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKQEAgLTU5NSw2ICs2MDIsMTAgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZUNhbnZhc0lmTmVlZGVkKCkKIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQoIW1faW5VcGRhdGVNb2RlKTsKKyAgICBU
ZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gdXBkYXRlTW9kZVByb3RlY3RvcihtX2luVXBkYXRlTW9kZSwg
dHJ1ZSk7CisjZW5kaWYKICAgICAvLyBTZXRzIHRoZSB2YWx1ZXMuCiAgICAgY29tcHV0ZVBpeGVs
QWxpZ25tZW50KG1fYWRqdXN0ZWRQb3NpdGlvbiwgbV9hZGp1c3RlZFNpemUsIG1fYWRqdXN0ZWRB
bmNob3JQb2ludCwgbV9waXhlbEFsaWdubWVudE9mZnNldCk7CiAKQEAgLTYzOSwxNCArNjUwLDE4
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jv
b3QpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJl
Y3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7
Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3Jl
LT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKHRyYWplY3RvcnlWZWN0b3IpOworICAgIGlmICghbV9t
YWluQmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21haW5CYWNraW5nU3Rv
cmUtPnNldFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CisgICAgc2V0TmVlZHNW
aXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiB7CiAgICAgbV9jb250ZW50c1NjYWxl
ID0gc2NhbGU7Ci0gICAgYWRqdXN0Q29udGVudHNTY2FsZSgpOworICAgIGlmIChzaG91bGRIYXZl
QmFja2luZ1N0b3JlKCkpCisgICAgICAgIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2FsZSA9IHRy
dWU7CiB9CiAKIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0aXZlQ29udGVu
dHNTY2FsZSgpCkBAIC02NTYsOSArNjcxLDcgQEAgZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUoKQogewotICAgIGlmICghc2hvdWxkSGF2ZUJhY2tp
bmdTdG9yZSgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQoc2hvdWxkSGF2ZUJhY2tp
bmdTdG9yZSgpKTsKICAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSB8fCBtX21haW5CYWNraW5n
U3RvcmUtPmNvbnRlbnRzU2NhbGUoKSA9PSBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNjkwLDExICs3MDMsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+
JgogewogfQogCi1ib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3Rv
cmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0Cit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
dGlsZWRCYWNraW5nU3RvcmVOZWVkVG9DcmVhdGVUaWxlcygpCiB7Ci0gICAgaWYgKCFtX2luVXBk
YXRlTW9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9y
LT5sYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKTsKKyAgICBtX3Nob3VsZEFkanVzdFZpc2li
bGVSZWN0ID0gdHJ1ZTsKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5ub3Rp
ZnlGbHVzaFJlcXVpcmVkKHRoaXMpOwogfQogCiBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKQpAQCAtNzM3LDI4ICs3NTAsMzAg
QEAgQ29sb3IgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CiAKIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBpbnQmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAgIGlmICghbV9jb29yZGluYXRv
cikKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Pigp
OwotCisgICAgQVNTRVJUKG1faW5VcGRhdGVNb2RlKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRv
cik7CiAgICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCBj
b250ZW50c09wYXF1ZSgpID8gMCA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSwgYXRs
YXMsIG9mZnNldCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVU
aWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8s
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQogewotICAgIGlmIChtX2Nvb3JkaW5h
dG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBk
YXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VSVChtX2luVXBkYXRlTW9kZSk7CisgICAgQVNT
RVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVRpbGUoaWQoKSwg
dGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0
ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQogewotICAgIGlmICht
X2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT51cGRhdGVUaWxlKGlkKCksIHRp
bGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VSVChtX2luVXBkYXRlTW9kZSk7
CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0ZVRp
bGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkKIHsKLSAgICBp
ZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+cmVtb3ZlVGlsZShpZCgp
LCB0aWxlSUQpOworICAgIEFTU0VSVChtX2luVXBkYXRlTW9kZSk7CisgICAgQVNTRVJUKG1fY29v
cmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3ItPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsK
IH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJz
KCkKQEAgLTc2OSwxMyArNzg0LDIyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1
cGRhdGVDb250ZW50QnVmZmVycygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2lu
VXBkYXRlTW9kZSA9IHRydWU7CisgICAgaWYgKG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2FsZSkg
eworICAgICAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7CisgICAgICAgIG1fc2hvdWxkQWRqdXN0
Q29udGVudHNTY2FsZSA9IGZhbHNlOworICAgIH0KKwogICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkg
cGxhY2Ugd2UgKHJlKWNyZWF0ZSB0aGUgbWFpbiB0aWxlZCBiYWNraW5nIHN0b3JlLCBvbmNlIHdl
CiAgICAgLy8gaGF2ZSBhIHJlbW90ZSBjbGllbnQgYW5kIHdlIGFyZSByZWFkeSB0byBzZW5kIG91
ciBkYXRhIHRvIHRoZSBVSSBwcm9jZXNzLgogICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKQog
ICAgICAgICBjcmVhdGVCYWNraW5nU3RvcmUoKTsKKworICAgIGlmIChtX3Nob3VsZEFkanVzdFZp
c2libGVSZWN0KSB7CisgICAgICAgIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QgPSBmYWxzZTsK
KyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlc0lmTmVlZGVkKCk7CisgICAg
fQorCiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT51cGRhdGVUaWxlQnVmZmVycygpOwotICAgIG1f
aW5VcGRhdGVNb2RlID0gZmFsc2U7CiAKICAgICAvLyBUaGUgcHJldmlvdXMgYmFja2luZyBzdG9y
ZSBpcyBrZXB0IGFyb3VuZCB0byBhdm9pZCBmbGlja2VyaW5nIGJldHdlZW4KICAgICAvLyByZW1v
dmluZyB0aGUgZXhpc3RpbmcgdGlsZXMgYW5kIHBhaW50aW5nIHRoZSBuZXcgb25lcy4gVGhlIGZp
cnN0IHRpbWUKQEAgLTc4Niw2ICs4MTAsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgVGVtcG9yYXJ5
Q2hhbmdlPGJvb2w+IHVwZGF0ZU1vZGVQcm90ZWN0b3IobV9pblVwZGF0ZU1vZGUsIHRydWUpOwor
I2VuZGlmCiAgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAgICAgbV9wcmV2aW91c0Jh
Y2tpbmdTdG9yZS5jbGVhcigpOwogCkBAIC03OTksMTAgKzgyNiwxMCBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJDbAogICAgIG1fY29vcmRpbmF0b3IgPSBjb29yZGluYXRvcjsKIH0KIAotdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdFZpc2libGVSZWN0KCkKK3ZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpCiB7Ci0g
ICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5j
b3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgaWYgKHNob3VsZEhhdmVCYWNraW5nU3RvcmUo
KSkKKyAgICAgICAgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCA9IHRydWU7CiB9CiAKIGJvb2wg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMoKQpAQCAt
OTAzLDggKzkzMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlVHJh
bnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9s
YXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKIAogICAgIC8vIFRoZSBjb21iaW5l
ZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3Qu
Ci0gICAgYWRqdXN0VmlzaWJsZVJlY3QoKTsKLSAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7Cisg
ICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0KIAogc3RhdGljIFBhc3NPd25Q
dHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNz
TGF5ZXJDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZDlmYmU3ZWM0YTFhNzg3MzUxNmQ5NTc4
MTU2OTZhZTgzMDM5OTg5My4uM2YxNjM3ZmRjMTRlNmQ3ZGIyNWU4M2Y3YTRiYmI0NDdhYjAyZmEw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmgKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBj
cmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBDb29yZGlu
YXRlZExheWVySW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyQ2hpbGRyZW4o
Q29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpID0g
MDsKQEAgLTE1MCw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFj
a2luZ1N0b3JlUGFpbnRCZWdpbigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJh
Y2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0
b3I8SW50UmVjdD4mIHBhaW50ZWRBcmVhKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdGls
ZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZU5lZWRUb0NyZWF0ZVRpbGVzKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIENvbG9yIHRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENv
bG9yKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0xNjMsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVu
dCopOwogCi0gICAgdm9pZCBhZGp1c3RWaXNpYmxlUmVjdCgpOworICAgIHZvaWQgc2V0TmVlZHNW
aXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwog
ICAgIGJvb2wgaGFzUGVuZGluZ1Zpc2libGVDaGFuZ2VzKCk7CiAKQEAgLTIxOCw3ICsyMTcsOSBA
QCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9hZGp1c3RlZFBvc2l0aW9uOwogICAgIEZsb2F0
UG9pbnQzRCBtX2FkanVzdGVkQW5jaG9yUG9pbnQ7CiAKLSAgICBib29sIG1faW5VcGRhdGVNb2Rl
IDogMTsKKyNpZm5kZWYgTkRFQlVHCisgICAgYm9vbCBtX2luVXBkYXRlTW9kZTsKKyNlbmRpZgog
ICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVjdDogMTsKICAgICBib29sIG1fc2hvdWxk
U3luY0xheWVyU3RhdGU6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNDaGlsZHJlbjogMTsKQEAg
LTIyOSw2ICsyMzAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW52YXNOZWVkc0Rpc3BsYXkg
OiAxOwogICAgIGJvb2wgbV9jYW52YXNOZWVkc0NyZWF0ZSA6IDE7CiAgICAgYm9vbCBtX2NhbnZh
c05lZWRzRGVzdHJveSA6IDE7CisgICAgYm9vbCBtX3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUg
OiAxOworICAgIGJvb2wgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCA6IDE7CiAKICAgICBXZWJL
aXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCogbV9jb29yZGluYXRvcjsKICAgICBP
d25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tpbmdTdG9yZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCBiZjY3
ZWFkZmQ4YzRiOWFhOTMyMmNhNzJmNzE0MTQwOTRjZjk5Zjk4Li4wOTIzYTk0NjJhMzgzMWNiYTUw
NjE2YzU2MGY4YjZhNGM0MGJlZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC02MDcsNiArNjA3LDcgQEAgdm9pZCBMYXll
clRyZWVDb29yZGluYXRvcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyKiwKIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikKIHsKKyAgICBzY2hlZHVsZUxh
eWVyRmx1c2goKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cGFpbnRDb250ZW50
cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KQpAQCAtNjMwLDcg
KzYzMSw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllCiAgICAgbGF5ZXItPnNldENvb3JkaW5h
dG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQobGF5ZXIpOwogICAgIGxheWVy
LT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7Ci0gICAgbGF5ZXItPmFkanVzdFZp
c2libGVSZWN0KCk7CisgICAgbGF5ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7
CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIApAQCAtNzEyLDcgKzcxMyw3IEBAIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBzCiAgICAgICAgICAgICBpZiAoY29udGVudHNTY2FsZURpZENo
YW5nZSkKICAgICAgICAgICAgICAgICAoKml0KS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7CiAg
ICAgICAgICAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKQotICAgICAgICAgICAgICAgICgq
aXQpLT5hZGp1c3RWaXNpYmxlUmVjdCgpOworICAgICAgICAgICAgICAgICgqaXQpLT5zZXROZWVk
c1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03NTIsMTEg
Kzc1Myw2IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbmRlck5leHRGcmFtZSgpCiAg
ICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlkU3dhcEJ1ZmZlcnMoKTsKIH0KIAotYm9vbCBM
YXllclRyZWVDb29yZGluYXRvcjo6bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ0ZvclVJUHJvY2VzczsK
LX0KLQogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsK
ICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1RvZ2dsZShtX2lzUHVyZ2luZywgdHJ1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3Iu
aAppbmRleCA3YmI2OGI4Yzc3M2I4MzIzMTY1YTdhYTE5NDI4OWQxNDY4MWY1YTUxLi5iODhiNDBj
ZmU2MDM5ZTkzZjU1ODJlZmMxMzI4NTg2OGNkMjBkNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTg0LDcgKzg0LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3Qo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVh
bCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVU
aWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTGF5ZXJU
cmVlQ29vcmRpbmF0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBPVkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178749</attachid>
            <date>2012-12-11 01:43:18 -0800</date>
            <delta_ts>2012-12-11 02:24:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121211184036.patch</filename>
            <type>text/plain</type>
            <size>27606</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzZDFlOGM5ODA5YzU1
NjIxNzlkMTY5MzBiODNhNmY1MmFlYjZjZi4uZTA4OGM1M2FlMzc5MjBkZDNlYzkzMjhjNjA1YWFl
NmE2NmZhYTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTExICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRUaWxlVXBkYXRlc09uSWRsZUV2
ZW50TG9vcCgpIGlzIHVzZWQgd2hlbiBjbGFzcworICAgICAgICBtZXRob2RzIGNhbm5vdCBiZSBj
YWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgY2xpZW50LiBVcGRhdGVzIG9mIHRpbGVzIGFyZQorICAg
ICAgICBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBldmVudCBxdWV1ZSBo
YXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgICAgICBBZnRlciB0aGlzIHBhdGNoIEZyYW1lIHNldHMg
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCB0byB0cnVlLgorCisgICAgICAgIElu
IGFkZGl0aW9uLCByZW1vdmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRpbGVkQmFja2luZ1N0
b3JlVXBkYXRlc0FsbG93ZWQoKQorICAgICAgICB3aGljaCB3YXMgaW50cm9kdWNlZCBmb3IgQ29v
cmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnNldFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgICAgIFNlcGFy
YXRlIHNldHRpbmcgYSB0cmFqZWN0b3J5IHZlY3RvciBmcm9tIGNvdmVyV2l0aFRpbGVzSWZOZWVk
ZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjb3ZlcldpdGhUaWxl
c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVU
aWxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRl
VGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmlzVGlsZUJ1ZmZl
clVwZGF0ZXNTdXNwZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6
OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjp0aWxlQnVmZmVyVXBkYXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlVXBkYXRlVGltZXJG
aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKFRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzZXRDb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50Ojp0aWxlZEJhY2tpbmdTdG9yZUhhc1Bl
bmRpbmdUaWxlQ3JlYXRpb24pOgorICAgICAgICAgICAgSWYgVGlsZWRCYWNraW5nU3RvcmUgZG9l
cyBub3QgY3JlYXRlIGFsbCB0aWxlcywgVGlsZWRCYWNraW5nU3RvcmUKKyAgICAgICAgICAgIG5v
dGlmaWVzIGEgY2xpZW50IG9mIG5lZWRpbmcgdG8gY3JlYXRlIHRpbGVzIG1vcmUsIHdoZW4KKyAg
ICAgICAgICAgIG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AgaXMgZmFsc2UuCisK
IDIwMTItMTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBFdmFsdWF0ZSBwcml2YXRlIGJyb3dzaW5nIG1vZGUncyBlZmZlY3Qgb24g
Y29uc29sZSBtZXNzYWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkN2U1MjYwYmNmMzExMWYyMTU2MmYxYzdi
ZjliMjI1NTljNWE3OTE0Li4zNWEyMDQxNTg4NWYzYWU2M2M2YWUxZDAwZmU0MGUyNTM2Nzk0MGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTItMTItMTEgIEh1YW5nIERvbmdzdW5n
ICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNvZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFzIGNvbXBsZXggY29kZSByZWxh
dGVkIHRvIFRpbGVkQmFja2luZ1N0b3JlLgorICAgICAgICBJdCBoYXMgdHdvIHByb2JsZW0uCisg
ICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBoYWNrcyBUaWxlZEJhY2tpbmdTdG9y
ZSB0byBwcmV2ZW50CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlIGZyb20gYXN5bmNocm9ub3Vz
bHkgc2VuZGluZyBVcGRhdGVUaWxlIG1lc3NhZ2UgdG8gVUkKKyAgICAgICAgUHJvY2Vzcy4KKyAg
ICAgICAgMi4gQ3JlYXRlVGlsZSBhbmQgUmVtb3ZlVGlsZSBtZXNzYWdlIGNhbiBiZSBzZW50IHRv
IFVJIFByb2Nlc3MgYXQgYW55IHRpbWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlIFRpbGVkQmFja2luZ1N0b3JlIG1vcmUgZXhwbGljaXRs
eS4KKyAgICAgICAgSXQgbWVhbnMgb25seSBkdXJpbmcgZmx1c2hpbmcgbGF5ZXIgc3RhdGVzLCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgY2FsbHMgbWV0aG9kcyBvZiBUaWxlZEJh
Y2tpbmdTdG9yZSwgd2hpY2ggaW5kaXJlY3RseSBjYWxsIGNyZWF0ZVRpbGUoKSwKKyAgICAgICAg
dXBkYXRlVGlsZSgpIGFuZCByZW1vdmVUaWxlKCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHRo
ZSBwdXJwb3NlIG9mIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6bV9pblVwZGF0ZU1vZGUgaXMK
KyAgICAgICAgY2hhbmdlZC4gQ3VycmVudGx5LCB3ZSBzZXQgbV9pblVwZGF0ZU1vZGUgdG8gdHJ1
ZSB3aGVuIHVwZGF0aW5nIGEKKyAgICAgICAgYmFja2luZyBzdG9yZS4gQWZ0ZXIgdGhpcyBwYXRj
aCwgd2Ugc2V0IG1faW5VcGRhdGVNb2RlIHRvIHRydWUgd2hlbgorICAgICAgICBzZW5kaW5nIG1l
c3NhZ2VzIHZpYSBMYXllclRyZWVDb29yZGluYXRvciB0byBVSSBQcm9jZXNzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6
CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVD
b250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlSGFzUGVu
ZGluZ1RpbGVDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVj
dEFkanVzdG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKwogMjAx
Mi0xMi0xMCAgRGFuIFdpbnNoaXAgIDxkYW53QGdub21lLm9yZz4KIAogICAgICAgICBbU291cF0g
Rml4IHNwZWxsaW5nIG9mICJpbml0aWF0aW5nIiBpbiBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmlu
ZGV4IDNkNTIwZjhmZTRhMjk5YzlhYzBlNGRkN2UxMzk4ZTI5NDVhOWI2NDkuLjc0N2M0ZjQ2OGUz
ZmQxNjk3YTMwMjlhM2MzNDBhNGZmMDE0ODkxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04
MTgsNiArODE4LDcgQEAgdm9pZCBGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBpZiAobV90aWxlZEJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fdGlsZWRCYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3Rv
cmUodGhpcykpOworICAgIG1fdGlsZWRCYWNraW5nU3RvcmUtPnNldENvbW1pdFRpbGVVcGRhdGVz
T25JZGxlRXZlbnRMb29wKHRydWUpOwogICAgIGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+
c2V0UGFpbnRzRW50aXJlQ29udGVudHModHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggOWEzN2E5
NmZhYjJlYjY3YTI1MTczNWVmOWRlYzBmYThmOGI0ZjJhOC4uYTU3NGIyMDI5YTViMDY4ODljMDU2
YmEwMmQ0ZDc0N2JiN2MzMDgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDEsMTIgKzQxLDEzIEBAIFRp
bGVkQmFja2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVu
dCogY2xpZW50LCBQYXNzT3duUHRyCiAgICAgLCBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lcih0aGlz
LCAmVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKQogICAgICwg
bV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tp
bmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlRGlt
ZW5zaW9uLCBkZWZhdWx0VGlsZURpbWVuc2lvbikKLSAgICAsIG1fdGlsZUNyZWF0aW9uRGVsYXko
MC4wMSkKICAgICAsIG1fY292ZXJBcmVhTXVsdGlwbGllcigyLjBmKQogICAgICwgbV9jb250ZW50
c1NjYWxlKDEuZikKICAgICAsIG1fcGVuZGluZ1NjYWxlKDApCisgICAgLCBtX2NvbW1pdFRpbGVV
cGRhdGVzT25JZGxlRXZlbnRMb29wKGZhbHNlKQogICAgICwgbV9jb250ZW50c0Zyb3plbihmYWxz
ZSkKICAgICAsIG1fc3VwcG9ydHNBbHBoYShmYWxzZSkKKyAgICAsIG1fcGVuZGluZ1RpbGVDcmVh
dGlvbihmYWxzZSkKIHsKIH0KIApAQCAtNjEsMjYgKzYyLDIwIEBAIHZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OnNldFRpbGVTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgc3RhcnRCYWNraW5n
U3RvcmVVcGRhdGVUaW1lcigpOwogfQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxl
Q3JlYXRpb25EZWxheShkb3VibGUgZGVsYXkpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRU
cmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0g
ICAgbV90aWxlQ3JlYXRpb25EZWxheSA9IGRlbGF5OworICAgIG1fcGVuZGluZ1RyYWplY3RvcnlW
ZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOworICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3Iu
bm9ybWFsaXplKCk7CiB9CiAKLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0aFRpbGVz
SWZOZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKQogewogICAgIEludFJlY3Qgdmlz
aWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVjdCgpOwogICAgIEludFJlY3QgcmVjdCA9IG1hcEZy
b21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CiAK
LSAgICBGbG9hdFBvaW50IG5vcm1hbGl6ZWRWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotICAg
IG5vcm1hbGl6ZWRWZWN0b3Iubm9ybWFsaXplKCk7Ci0KLSAgICBpZiAobV90cmFqZWN0b3J5VmVj
dG9yID09IG5vcm1hbGl6ZWRWZWN0b3IgJiYgbV92aXNpYmxlUmVjdCA9PSB2aXNpYmxlUmVjdCAm
JiBtX3JlY3QgPT0gcmVjdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90cmFqZWN0b3J5VmVj
dG9yID0gbm9ybWFsaXplZFZlY3RvcjsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7
Ci0KLSAgICBjcmVhdGVUaWxlcygpOworICAgIGJvb2wgZGlkQ2hhbmdlID0gbV90cmFqZWN0b3J5
VmVjdG9yICE9IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgfHwgbV92aXNpYmxlUmVjdCAhPSB2
aXNpYmxlUmVjdCB8fCBtX3JlY3QgIT0gcmVjdDsKKyAgICBpZiAoZGlkQ2hhbmdlIHx8IG1fcGVu
ZGluZ1RpbGVDcmVhdGlvbikKKyAgICAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIAogdm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVj
dCkKQEAgLTEwOCw3ICsxMDMsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRzRGlydHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNr
aW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIHx8IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1f
Y29udGVudHNGcm96ZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJh
Y2tpbmdTdG9yZVBhaW50QmVnaW4oKTsKQEAgLTI0NSw2ICsyNDAsOCBAQCB2b2lkIFRpbGVkQmFj
a2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgLy8gVXBkYXRlIG91ciBiYWNraW5nIHN0b3Jl
IGdlb21ldHJ5LgogICAgIGNvbnN0IEludFJlY3QgcHJldmlvdXNSZWN0ID0gbV9yZWN0OwogICAg
IG1fcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250
ZW50c1JlY3QoKSk7CisgICAgbV90cmFqZWN0b3J5VmVjdG9yID0gbV9wZW5kaW5nVHJhamVjdG9y
eVZlY3RvcjsKKyAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3QoKTsKIAogICAgIGlmICht
X3JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNldENvdmVyUmVjdChJbnRSZWN0KCkpOwpAQCAt
MjczLDEyICsyNzAsOSBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAg
ICAgICogV2UgbXVzdCBjcmVhdGUgb3Iga2VlcCB0aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9u
LgogICAgICAqLwogCi0gICAgY29uc3QgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2li
bGVSZWN0KCk7Ci0gICAgbV92aXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OwotCiAgICAgSW50UmVj
dCBjb3ZlclJlY3Q7CiAgICAgSW50UmVjdCBrZWVwUmVjdDsKLSAgICBjb21wdXRlQ292ZXJBbmRL
ZWVwUmVjdCh2aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CisgICAgY29tcHV0ZUNv
dmVyQW5kS2VlcFJlY3QobV92aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CiAKICAg
ICBzZXRDb3ZlclJlY3QoY292ZXJSZWN0KTsKICAgICBzZXRLZWVwUmVjdChrZWVwUmVjdCk7CkBA
IC0zMDksNyArMzAzLDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQog
ICAgICAgICAgICAgaWYgKHRpbGVBdChjdXJyZW50Q29vcmRpbmF0ZSkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICArK3JlcXVpcmVkVGlsZUNvdW50OwotICAgICAgICAg
ICAgZG91YmxlIGRpc3RhbmNlID0gdGlsZURpc3RhbmNlKHZpc2libGVSZWN0LCBjdXJyZW50Q29v
cmRpbmF0ZSk7CisgICAgICAgICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92
aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5hdGUpOwogICAgICAgICAgICAgaWYgKGRpc3RhbmNl
ID4gc2hvcnRlc3REaXN0YW5jZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIGlmIChkaXN0YW5jZSA8IHNob3J0ZXN0RGlzdGFuY2UpIHsKQEAgLTMzMyw4ICszMjcsMTYg
QEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICB1cGRhdGVU
aWxlQnVmZmVycygpOwogCiAgICAgLy8gUmUtY2FsbCBjcmVhdGVUaWxlcyBvbiBhIHRpbWVyIHRv
IGNvdmVyIHRoZSB2aXNpYmxlIGFyZWEgd2l0aCB0aGUgbmV3ZXN0IHNob3J0ZXN0IGRpc3RhbmNl
LgotICAgIGlmIChyZXF1aXJlZFRpbGVDb3VudCkKLSAgICAgICAgbV9iYWNraW5nU3RvcmVVcGRh
dGVUaW1lci5zdGFydE9uZVNob3QobV90aWxlQ3JlYXRpb25EZWxheSk7CisgICAgbV9wZW5kaW5n
VGlsZUNyZWF0aW9uID0gcmVxdWlyZWRUaWxlQ291bnQ7CisgICAgaWYgKG1fcGVuZGluZ1RpbGVD
cmVhdGlvbikgeworICAgICAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExv
b3ApIHsKKyAgICAgICAgICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdU
aWxlQ3JlYXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgdGlsZUNyZWF0aW9uRGVsYXkgPSAwLjAxOworICAgICAgICBz
dGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICB9CiB9
CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0
JiByZWN0KSBjb25zdApAQCAtNDIzLDcgKzQyNSw3IEBAIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6
OmlzQmFja2luZ1N0b3JlVXBkYXRlc1N1c3BlbmRlZCgpIGNvbnN0CiAKIGJvb2wgVGlsZWRCYWNr
aW5nU3RvcmU6OmlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2NvbnRlbnRzRnJvemVuIHx8ICFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRh
dGVzQWxsb3dlZCgpOworICAgIHJldHVybiBtX2NvbnRlbnRzRnJvemVuOwogfQogCiBib29sIFRp
bGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKQpAQCAtNTI2LDYgKzUyOCw5IEBAIFRp
bGU6OkNvb3JkaW5hdGUgVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIHBvaW50CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGls
ZUJ1ZmZlclVwZGF0ZVRpbWVyKCkKIHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklk
bGVFdmVudExvb3ApCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3RpbGVCdWZmZXJVcGRh
dGVUaW1lci5pc0FjdGl2ZSgpIHx8IGlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKQEAgLTUzMywxOCArNTM4LDIzIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGls
ZUJ1ZmZlclVwZGF0ZVRpbWVyKCkKIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZl
clVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NF
UlQobV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCk7CiAgICAgdXBkYXRlVGlsZUJ1
ZmZlcnMoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVV
cGRhdGVUaW1lcigpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyKGRvdWJsZSBpbnRlcnZhbCkKIHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0
ZXNPbklkbGVFdmVudExvb3ApCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2JhY2tpbmdT
dG9yZVVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkgfHwgaXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVu
ZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKKyAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hv
dChpbnRlcnZhbCk7CiB9CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQo
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCk7CiAgICAgY3JlYXRlVGlsZXMoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZ1N0b3JlLmgKaW5kZXggMDgyYmU3MGM4ZWIyNzUxNzkwYjdhYjg3NzU2OTQ5YmFjODFhNmQy
OC4uNDYwNjU0YWQyYWQ4ZmQzMzNkNWJjZDA1NTYyNzNjODk0MTFiNzQ0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBA
IC00Niw3ICs0NiwxMiBAQCBwdWJsaWM6CiAKICAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCog
Y2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgIHZvaWQgY292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiBwYW5uaW5nVHJhamVjdG9yeVZlY3RvciA9IEZsb2F0
UG9pbnQoKSk7CisgICAgLy8gVXNlZCB3aGVuIGNsYXNzIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxl
ZCBhc3luY2hyb25vdXNseSBieSBjbGllbnQuCisgICAgLy8gVXBkYXRlcyBvZiB0aWxlcyBhcmUg
Y29tbWl0dGVkIGFzIHNvb24gYXMgYWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBi
ZWVuIHByb2Nlc3NlZC4KKyAgICB2b2lkIHNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRM
b29wKGJvb2wgZW5hYmxlKSB7IG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AgPSBl
bmFibGU7IH0KKworICAgIHZvaWQgc2V0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50
Jik7CisgICAgdm9pZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CiAKICAgICBmbG9hdCBjb250
ZW50c1NjYWxlKCkgeyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250
ZW50c1NjYWxlKGZsb2F0KTsKQEAgLTYyLDkgKzY3LDYgQEAgcHVibGljOgogICAgIEludFNpemUg
dGlsZVNpemUoKSB7IHJldHVybiBtX3RpbGVTaXplOyB9CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShj
b25zdCBJbnRTaXplJik7CiAKLSAgICBkb3VibGUgdGlsZUNyZWF0aW9uRGVsYXkoKSBjb25zdCB7
IHJldHVybiBtX3RpbGVDcmVhdGlvbkRlbGF5OyB9Ci0gICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25E
ZWxheShkb3VibGUgZGVsYXkpOwotCiAgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKICAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0
JikgY29uc3Q7CiAKQEAgLTgxLDcgKzgzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgc3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKTsKLSAgICB2b2lkIHN0YXJ0QmFja2luZ1N0
b3JlVXBkYXRlVGltZXIoKTsKKyAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIo
ZG91YmxlID0gMCk7CiAKICAgICB2b2lkIHRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVy
PFRpbGVkQmFja2luZ1N0b3JlPiopOwogICAgIHZvaWQgYmFja2luZ1N0b3JlVXBkYXRlVGltZXJG
aXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKTsKQEAgLTEyMCwxMCArMTIyLDEwIEBAIHBy
aXZhdGU6CiAgICAgVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlVXBkYXRl
VGltZXI7CiAKICAgICBJbnRTaXplIG1fdGlsZVNpemU7Ci0gICAgZG91YmxlIG1fdGlsZUNyZWF0
aW9uRGVsYXk7CiAgICAgZmxvYXQgbV9jb3ZlckFyZWFNdWx0aXBsaWVyOwogCiAgICAgRmxvYXRQ
b2ludCBtX3RyYWplY3RvcnlWZWN0b3I7CisgICAgRmxvYXRQb2ludCBtX3BlbmRpbmdUcmFqZWN0
b3J5VmVjdG9yOwogICAgIEludFJlY3QgbV92aXNpYmxlUmVjdDsKIAogICAgIEludFJlY3QgbV9j
b3ZlclJlY3Q7CkBAIC0xMzMsOCArMTM1LDEwIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9jb250
ZW50c1NjYWxlOwogICAgIGZsb2F0IG1fcGVuZGluZ1NjYWxlOwogCisgICAgYm9vbCBtX2NvbW1p
dFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wOwogICAgIGJvb2wgbV9jb250ZW50c0Zyb3plbjsK
ICAgICBib29sIG1fc3VwcG9ydHNBbHBoYTsKKyAgICBib29sIG1fcGVuZGluZ1RpbGVDcmVhdGlv
bjsKIAogICAgIGZyaWVuZCBjbGFzcyBUaWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCmluZGV4
IDBlMDIxNDc3NzMzMGUyNWYxZmM4NDM4NzFmNDVhNWEwOThmOWNkMWQuLmViOWE3ZDkzMjcyNDE1
MWNjZTQ3NTc2OTY3ZTJkNDFkM2U1ZDNlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMzMs
NyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFp
bnRCZWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0
aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFy
ZWEpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgdGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dl
ZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5n
U3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHRp
bGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCB0
aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgdGls
ZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRl
eCBkMGU5YzZkMzJiNjcxZDdhMTVkNDQ4YjcwMGUxNjQ3YTM4YWUzZmVjLi5kY2U4NzcyMTM0MmRh
ODkwNmQ3ODM4YzBiMGU3MWFiMDNhNTdiZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTM4LDYgKzM4LDkg
QEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1Rl
bXBvcmFyeUNoYW5nZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTA5LDcgKzExMiw5IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpkaWRDaGFuZ2VHZW9tZXRyeSgpCiAKIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQq
IGNsaWVudCkKICAgICA6IEdyYXBoaWNzTGF5ZXIoY2xpZW50KQorI2lmbmRlZiBOREVCVUcKICAg
ICAsIG1faW5VcGRhdGVNb2RlKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVZp
c2libGVSZWN0KHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNMYXllclN0YXRlKHRydWUpCiAgICAg
LCBtX3Nob3VsZFN5bmNDaGlsZHJlbih0cnVlKQpAQCAtMTIwLDYgKzEyNSw4IEBAIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWVudCkKICAgICAsIG1fY2FudmFzTmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwg
bV9jYW52YXNOZWVkc0NyZWF0ZShmYWxzZSkKICAgICAsIG1fY2FudmFzTmVlZHNEZXN0cm95KGZh
bHNlKQorICAgICwgbV9zaG91bGRBZGp1c3RDb250ZW50c1NjYWxlKGZhbHNlKQorICAgICwgbV9z
aG91bGRBZGp1c3RWaXNpYmxlUmVjdChmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0b3IoMCkKICAg
ICAsIG1fY29udGVudHNTY2FsZSgxKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIo
MCkKQEAgLTU5NSw2ICs2MDIsMTAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZUNhbnZhc0lmTmVlZGVkKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogeworI2lmbmRlZiBOREVCVUcK
KyAgICBBU1NFUlQoIW1faW5VcGRhdGVNb2RlKTsKKyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4g
dXBkYXRlTW9kZVByb3RlY3RvcihtX2luVXBkYXRlTW9kZSwgdHJ1ZSk7CisjZW5kaWYKICAgICAv
LyBTZXRzIHRoZSB2YWx1ZXMuCiAgICAgY29tcHV0ZVBpeGVsQWxpZ25tZW50KG1fYWRqdXN0ZWRQ
b3NpdGlvbiwgbV9hZGp1c3RlZFNpemUsIG1fYWRqdXN0ZWRBbmNob3JQb2ludCwgbV9waXhlbEFs
aWdubWVudE9mZnNldCk7CiAKQEAgLTYzOSwxNCArNjUwLDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNv
bnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tp
bmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVl
ZGVkKHRyYWplY3RvcnlWZWN0b3IpOworICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFRyYWplY3RvcnlWZWN0
b3IodHJhamVjdG9yeVZlY3Rvcik7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQo
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUo
ZmxvYXQgc2NhbGUpCiB7CiAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7Ci0gICAgYWRqdXN0
Q29udGVudHNTY2FsZSgpOworICAgIGlmIChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCisgICAg
ICAgIG1fc2hvdWxkQWRqdXN0Q29udGVudHNTY2FsZSA9IHRydWU7CiB9CiAKIGZsb2F0IENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCkBAIC02NTYsOSAr
NjcxLDcgQEAgZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50
c1NjYWxlKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRz
U2NhbGUoKQogewotICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KKyAgICBBU1NFUlQoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKTsKICAgICBpZiAo
IW1fbWFpbkJhY2tpbmdTdG9yZSB8fCBtX21haW5CYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUo
KSA9PSBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjkw
LDExICs3MDMsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2lu
Z1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JgogewogfQogCi1ib29sIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNv
bnN0Cit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQ
ZW5kaW5nVGlsZUNyZWF0aW9uKCkKIHsKLSAgICBpZiAoIW1faW5VcGRhdGVNb2RlKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmxheWVyVHJlZVRpbGVV
cGRhdGVzQWxsb3dlZCgpOworICAgIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QgPSB0cnVlOwor
ICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPm5vdGlmeUZsdXNoUmVxdWlyZWQo
dGhpcyk7CiB9CiAKIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tp
bmdTdG9yZUNvbnRlbnRzUmVjdCgpCkBAIC03MzcsMjggKzc1MCwzMCBAQCBDb2xvciBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29u
c3QKIAogUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIGludCYgYXRsYXMsIElu
dFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgaWYgKCFtX2Nvb3JkaW5hdG9yKQotICAgICAgICByZXR1
cm4gUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KCk7Ci0KKyAgICBBU1NFUlQo
bV9pblVwZGF0ZU1vZGUpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKICAgICByZXR1cm4g
bV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkg
PyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBv
cnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
JiB1cGRhdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKIHsKLSAgICBp
ZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+Y3JlYXRlVGlsZShpZCgp
LCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKKyAgICBBU1NFUlQobV9pblVwZGF0ZU1v
ZGUpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT5jcmVh
dGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOwogfQogCiB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0
IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkK
IHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+dXBkYXRl
VGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKKyAgICBBU1NFUlQobV9p
blVwZGF0ZU1vZGUpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5h
dG9yLT51cGRhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOwogfQog
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxl
SUQpCiB7Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPnJl
bW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKKyAgICBBU1NFUlQobV9pblVwZGF0ZU1vZGUpOworICAg
IEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT5yZW1vdmVUaWxlKGlk
KCksIHRpbGVJRCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVD
b250ZW50QnVmZmVycygpCkBAIC03NjksMTMgKzc4NCwyMiBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOworICAgIGlmIChtX3Nob3VsZEFkanVzdENv
bnRlbnRzU2NhbGUpIHsKKyAgICAgICAgYWRqdXN0Q29udGVudHNTY2FsZSgpOworICAgICAgICBt
X3Nob3VsZEFkanVzdENvbnRlbnRzU2NhbGUgPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBUaGlz
IGlzIHRoZSBvbmx5IHBsYWNlIHdlIChyZSljcmVhdGUgdGhlIG1haW4gdGlsZWQgYmFja2luZyBz
dG9yZSwgb25jZSB3ZQogICAgIC8vIGhhdmUgYSByZW1vdGUgY2xpZW50IGFuZCB3ZSBhcmUgcmVh
ZHkgdG8gc2VuZCBvdXIgZGF0YSB0byB0aGUgVUkgcHJvY2Vzcy4KICAgICBpZiAoIW1fbWFpbkJh
Y2tpbmdTdG9yZSkKICAgICAgICAgY3JlYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBpZiAobV9z
aG91bGRBZGp1c3RWaXNpYmxlUmVjdCkgeworICAgICAgICBtX3Nob3VsZEFkanVzdFZpc2libGVS
ZWN0ID0gZmFsc2U7CisgICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCgpOworICAgIH0KKwogICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZUJ1
ZmZlcnMoKTsKLSAgICBtX2luVXBkYXRlTW9kZSA9IGZhbHNlOwogCiAgICAgLy8gVGhlIHByZXZp
b3VzIGJhY2tpbmcgc3RvcmUgaXMga2VwdCBhcm91bmQgdG8gYXZvaWQgZmxpY2tlcmluZyBiZXR3
ZWVuCiAgICAgLy8gcmVtb3ZpbmcgdGhlIGV4aXN0aW5nIHRpbGVzIGFuZCBwYWludGluZyB0aGUg
bmV3IG9uZXMuIFRoZSBmaXJzdCB0aW1lCkBAIC03ODYsNiArODEwLDkgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CisjaWZuZGVmIE5ERUJV
RworICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiB1cGRhdGVNb2RlUHJvdGVjdG9yKG1faW5VcGRh
dGVNb2RlLCB0cnVlKTsKKyNlbmRpZgogICAgIG1fbWFpbkJhY2tpbmdTdG9yZS5jbGVhcigpOwog
ICAgIG1fcHJldmlvdXNCYWNraW5nU3RvcmUuY2xlYXIoKTsKIApAQCAtNzk5LDEwICs4MjYsMTAg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvb3JkaW5hdG9yKFdlYktpdDo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2wKICAgICBtX2Nvb3JkaW5hdG9yID0gY29vcmRpbmF0
b3I7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RWaXNpYmxlUmVj
dCgpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVjdEFk
anVzdG1lbnQoKQogewotICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCi0gICAgICAgIG1fbWFp
bkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgIGlmIChzaG91bGRI
YXZlQmFja2luZ1N0b3JlKCkpCisgICAgICAgIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QgPSB0
cnVlOwogfQogCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aGFzUGVuZGluZ1Zpc2li
bGVDaGFuZ2VzKCkKQEAgLTkwMyw4ICs5MzAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1fY2FjaGVkSW52ZXJz
ZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCk7CiAKICAg
ICAvLyBUaGUgY29tYmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdT
dG9yZVZpc2libGVSZWN0LgotICAgIGFkanVzdFZpc2libGVSZWN0KCk7Ci0gICAgYWRqdXN0Q29u
dGVudHNTY2FsZSgpOworICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiB9CiAK
IHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDQ3M2JhZTMw
NjE2ZDNmMzdiZjdjMzE1MTliNDI2NTQ5NjU3OWY0ZTEuLjE3NDc4YzA2NDRhZGRhZTJhMjEzNDBk
NDkyZGRhMDhhOTQwYzcwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRp
bGVJRCkgPSAwOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRl
bnRzUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0
ZXNBbGxvd2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2Uq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJ
RCwgY29uc3QgQ29vcmRpbmF0ZWRMYXllckluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNMYXllckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgVmVjdG9yPENvb3JkaW5h
dGVkTGF5ZXJJRD4mKSA9IDA7CkBAIC0xNDksNyArMTQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFp
bnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIHRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNy
ZWF0aW9uKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3Jl
Q29udGVudHNSZWN0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2lu
Z1N0b3JlVmlzaWJsZVJlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIENvbG9yIHRpbGVkQmFj
a2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0xNjIsNyArMTYx
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCopOwogCi0gICAgdm9pZCBhZGp1c3RWaXNpYmxlUmVjdCgp
OworICAgIHZvaWQgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICB2b2lkIHB1
cmdlQmFja2luZ1N0b3JlcygpOwogICAgIGJvb2wgaGFzUGVuZGluZ1Zpc2libGVDaGFuZ2VzKCk7
CiAKQEAgLTIxNyw3ICsyMTYsOSBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9hZGp1c3Rl
ZFBvc2l0aW9uOwogICAgIEZsb2F0UG9pbnQzRCBtX2FkanVzdGVkQW5jaG9yUG9pbnQ7CiAKLSAg
ICBib29sIG1faW5VcGRhdGVNb2RlIDogMTsKKyNpZm5kZWYgTkRFQlVHCisgICAgYm9vbCBtX2lu
VXBkYXRlTW9kZTsKKyNlbmRpZgogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVjdDog
MTsKICAgICBib29sIG1fc2hvdWxkU3luY0xheWVyU3RhdGU6IDE7CiAgICAgYm9vbCBtX3Nob3Vs
ZFN5bmNDaGlsZHJlbjogMTsKQEAgLTIyOCw2ICsyMjksOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9jYW52YXNOZWVkc0Rpc3BsYXkgOiAxOwogICAgIGJvb2wgbV9jYW52YXNOZWVkc0NyZWF0ZSA6
IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzRGVzdHJveSA6IDE7CisgICAgYm9vbCBtX3Nob3Vs
ZEFkanVzdENvbnRlbnRzU2NhbGUgOiAxOworICAgIGJvb2wgbV9zaG91bGRBZGp1c3RWaXNpYmxl
UmVjdCA6IDE7CiAKICAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCog
bV9jb29yZGluYXRvcjsKICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tp
bmdTdG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLmNwcAppbmRleCAxMTdjZGJhYTY1MDU1YTljNTg3ZWI5MDE5ZDZmY2Y1NGMwZDZmNTE3
Li44Y2M3OThlYTIwNmJjNjY2ZjRkNjFiNzkzOGU0MmY1MTMxNTA0ZjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC02MTQs
NiArNjE0LDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwKIAogdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvcjo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KikKIHsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvcjo6cGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0KQpAQCAtNjM3LDcgKzYzOCw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4g
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllCiAg
ICAgbGF5ZXItPnNldENvb3JkaW5hdG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5h
ZGQobGF5ZXIpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7
Ci0gICAgbGF5ZXItPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgbGF5ZXItPnNldE5lZWRzVmlz
aWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIApA
QCAtNzE5LDcgKzcyMCw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBzCiAgICAgICAgICAgICBp
ZiAoY29udGVudHNTY2FsZURpZENoYW5nZSkKICAgICAgICAgICAgICAgICAoKml0KS0+c2V0Q29u
dGVudHNTY2FsZShzY2FsZSk7CiAgICAgICAgICAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdl
KQotICAgICAgICAgICAgICAgICgqaXQpLT5hZGp1c3RWaXNpYmxlUmVjdCgpOworICAgICAgICAg
ICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC03NTksMTEgKzc2MCw2IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OnJlbmRlck5leHRGcmFtZSgpCiAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlkU3dhcEJ1
ZmZlcnMoKTsKIH0KIAotYm9vbCBMYXllclRyZWVDb29yZGluYXRvcjo6bGF5ZXJUcmVlVGlsZVVw
ZGF0ZXNBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1faXNTdXNwZW5kZWQgJiYgIW1f
d2FpdGluZ0ZvclVJUHJvY2VzczsKLX0KLQogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cHVy
Z2VCYWNraW5nU3RvcmVzKCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1Rv
Z2dsZShtX2lzUHVyZ2luZywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAppbmRleCA3MDU3OGU1NWMzYjNjN2E0MGE2MGIxZGI2Mzdh
MmFmZDQxMzc0YmJkLi44OGE4YmQ1YTA4NzFiNjE0NWZmZDg3YzgyZGMwODgxNmM5MzE0YzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgK
QEAgLTg1LDcgKzg1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4
dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwotICAgIHZp
cnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZh
Y3RvcnkoKSBPVkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178755</attachid>
            <date>2012-12-11 02:24:16 -0800</date>
            <delta_ts>2012-12-11 18:14:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121211192134.patch</filename>
            <type>text/plain</type>
            <size>27426</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzZDFlOGM5ODA5YzU1
NjIxNzlkMTY5MzBiODNhNmY1MmFlYjZjZi4uNDNkMTQxNTA2ODE1MWRiOGVhNjU2NGNiYzBiNzMy
YzFmYmNlYWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTExICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRUaWxlVXBkYXRlc09uSWRsZUV2
ZW50TG9vcCgpIGlzIHVzZWQgd2hlbiBjbGFzcworICAgICAgICBtZXRob2RzIGNhbm5vdCBiZSBj
YWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgY2xpZW50LiBVcGRhdGVzIG9mIHRpbGVzIGFyZQorICAg
ICAgICBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBldmVudCBxdWV1ZSBo
YXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgICAgICBBZnRlciB0aGlzIHBhdGNoIEZyYW1lIHNldHMg
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCB0byB0cnVlLgorCisgICAgICAgIElu
IGFkZGl0aW9uLCByZW1vdmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRpbGVkQmFja2luZ1N0
b3JlVXBkYXRlc0FsbG93ZWQoKQorICAgICAgICB3aGljaCB3YXMgaW50cm9kdWNlZCBmb3IgQ29v
cmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnNldFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgICBTZXBhcmF0
ZSBzZXR0aW5nIGEgdHJhamVjdG9yeSB2ZWN0b3IgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVlZGVk
KCkuCisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRp
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjppc1RpbGVCdWZmZXJV
cGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpz
dGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmly
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5k
aW5nVGlsZUNyZWF0aW9uKToKKyAgICAgICAgICAgIElmIFRpbGVkQmFja2luZ1N0b3JlIGRvZXMg
bm90IGNyZWF0ZSBhbGwgdGlsZXMsIFRpbGVkQmFja2luZ1N0b3JlCisgICAgICAgICAgICBub3Rp
ZmllcyBhIGNsaWVudCBvZiBuZWVkaW5nIHRvIGNyZWF0ZSB0aWxlcyBtb3JlLCB3aGVuCisgICAg
ICAgICAgICBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIGlzIGZhbHNlLgorCiAy
MDEyLTEyLTExICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogRXZhbHVhdGUgcHJpdmF0ZSBicm93c2luZyBtb2RlJ3MgZWZmZWN0IG9uIGNv
bnNvbGUgbWVzc2FnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDdlNTI2MGJjZjMxMTFmMjE1NjJmMWM3YmY5
YjIyNTU5YzVhNzkxNC4uYTEzNzRiODQwMjdjNjQ0MGQ4MGY2ZDRmMDZhODdjZGYxODI3NzJiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEyLTExICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNz
OiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
Mzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhcyBjb21wbGV4IGNvZGUgcmVsYXRl
ZCB0byBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAgICAgSXQgaGFzIHR3byBwcm9ibGVtLgorICAg
ICAgICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFja3MgVGlsZWRCYWNraW5nU3RvcmUg
dG8gcHJldmVudAorICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBmcm9tIGFzeW5jaHJvbm91c2x5
IHNlbmRpbmcgVXBkYXRlVGlsZSBtZXNzYWdlIHRvIFVJCisgICAgICAgIFByb2Nlc3MuCisgICAg
ICAgIDIuIENyZWF0ZVRpbGUgYW5kIFJlbW92ZVRpbGUgbWVzc2FnZSBjYW4gYmUgc2VudCB0byBV
SSBQcm9jZXNzIGF0IGFueSB0aW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyIHVzZSBUaWxlZEJhY2tpbmdTdG9yZSBtb3JlIGV4cGxpY2l0bHku
CisgICAgICAgIEl0IG1lYW5zIG9ubHkgZHVyaW5nIGZsdXNoaW5nIGxheWVyIHN0YXRlcywgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyCisgICAgICAgIGNhbGxzIG1ldGhvZHMgb2YgVGlsZWRCYWNr
aW5nU3RvcmUsIHdoaWNoIGluZGlyZWN0bHkgY2FsbCBjcmVhdGVUaWxlKCksCisgICAgICAgIHVw
ZGF0ZVRpbGUoKSBhbmQgcmVtb3ZlVGlsZSgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3Rv
cnlWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVu
dFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1
cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
cmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3Jt
ZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yOjpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29v
cmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoK
KyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKwogMjAxMi0xMi0xMCAgRGFuIFdpbnNo
aXAgIDxkYW53QGdub21lLm9yZz4KIAogICAgICAgICBbU291cF0gRml4IHNwZWxsaW5nIG9mICJp
bml0aWF0aW5nIiBpbiBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDNkNTIwZjhmZTRhMjk5
YzlhYzBlNGRkN2UxMzk4ZTI5NDVhOWI2NDkuLjc0N2M0ZjQ2OGUzZmQxNjk3YTMwMjlhM2MzNDBh
NGZmMDE0ODkxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04MTgsNiArODE4LDcgQEAgdm9p
ZCBGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBp
ZiAobV90aWxlZEJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdGlsZWRCYWNr
aW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUodGhpcykpOworICAgIG1f
dGlsZWRCYWNraW5nU3RvcmUtPnNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKHRy
dWUpOwogICAgIGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29u
dGVudHModHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggOWEzN2E5NmZhYjJlYjY3YTI1MTczNWVm
OWRlYzBmYThmOGI0ZjJhOC4uYTU3NGIyMDI5YTViMDY4ODljMDU2YmEwMmQ0ZDc0N2JiN2MzMDgy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZ1N0b3JlLmNwcApAQCAtNDEsMTIgKzQxLDEzIEBAIFRpbGVkQmFja2luZ1N0b3JlOjpU
aWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3du
UHRyCiAgICAgLCBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3Rv
cmU6OnRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9iYWNraW5nU3RvcmVVcGRh
dGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVy
RmlyZWQpCiAgICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGls
ZURpbWVuc2lvbikKLSAgICAsIG1fdGlsZUNyZWF0aW9uRGVsYXkoMC4wMSkKICAgICAsIG1fY292
ZXJBcmVhTXVsdGlwbGllcigyLjBmKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKICAgICAs
IG1fcGVuZGluZ1NjYWxlKDApCisgICAgLCBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRM
b29wKGZhbHNlKQogICAgICwgbV9jb250ZW50c0Zyb3plbihmYWxzZSkKICAgICAsIG1fc3VwcG9y
dHNBbHBoYShmYWxzZSkKKyAgICAsIG1fcGVuZGluZ1RpbGVDcmVhdGlvbihmYWxzZSkKIHsKIH0K
IApAQCAtNjEsMjYgKzYyLDIwIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigp
OwogfQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlQ3JlYXRpb25EZWxheShkb3Vi
bGUgZGVsYXkpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKGNv
bnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgbV90aWxlQ3JlYXRpb25E
ZWxheSA9IGRlbGF5OworICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5
VmVjdG9yOworICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3Iubm9ybWFsaXplKCk7CiB9CiAK
LXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoY29uc3QgRmxv
YXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVy
V2l0aFRpbGVzSWZOZWVkZWQoKQogewogICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB0aGlzLT52
aXNpYmxlUmVjdCgpOwogICAgIEludFJlY3QgcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVu
dC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CiAKLSAgICBGbG9hdFBvaW50IG5v
cm1hbGl6ZWRWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotICAgIG5vcm1hbGl6ZWRWZWN0b3Iu
bm9ybWFsaXplKCk7Ci0KLSAgICBpZiAobV90cmFqZWN0b3J5VmVjdG9yID09IG5vcm1hbGl6ZWRW
ZWN0b3IgJiYgbV92aXNpYmxlUmVjdCA9PSB2aXNpYmxlUmVjdCAmJiBtX3JlY3QgPT0gcmVjdCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90cmFqZWN0b3J5VmVjdG9yID0gbm9ybWFsaXplZFZl
Y3RvcjsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0KLSAgICBjcmVhdGVUaWxl
cygpOworICAgIGJvb2wgZGlkQ2hhbmdlID0gbV90cmFqZWN0b3J5VmVjdG9yICE9IG1fcGVuZGlu
Z1RyYWplY3RvcnlWZWN0b3IgfHwgbV92aXNpYmxlUmVjdCAhPSB2aXNpYmxlUmVjdCB8fCBtX3Jl
Y3QgIT0gcmVjdDsKKyAgICBpZiAoZGlkQ2hhbmdlIHx8IG1fcGVuZGluZ1RpbGVDcmVhdGlvbikK
KyAgICAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6aW52
YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKQEAgLTEwOCw3ICsxMDMs
NyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRzRGlydHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVm
ZmVycygpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxs
b3dlZCgpIHx8IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1fY29udGVudHNGcm96ZW4pCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVn
aW4oKTsKQEAgLTI0NSw2ICsyNDAsOCBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVU
aWxlcygpCiAgICAgLy8gVXBkYXRlIG91ciBiYWNraW5nIHN0b3JlIGdlb21ldHJ5LgogICAgIGNv
bnN0IEludFJlY3QgcHJldmlvdXNSZWN0ID0gbV9yZWN0OwogICAgIG1fcmVjdCA9IG1hcEZyb21D
b250ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CisgICAg
bV90cmFqZWN0b3J5VmVjdG9yID0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKKyAgICBtX3Zp
c2libGVSZWN0ID0gdmlzaWJsZVJlY3QoKTsKIAogICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7
CiAgICAgICAgIHNldENvdmVyUmVjdChJbnRSZWN0KCkpOwpAQCAtMjczLDEyICsyNzAsOSBAQCB2
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICogV2UgbXVzdCBjcmVh
dGUgb3Iga2VlcCB0aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgogICAgICAqLwogCi0gICAg
Y29uc3QgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7Ci0gICAgbV92
aXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OwotCiAgICAgSW50UmVjdCBjb3ZlclJlY3Q7CiAgICAg
SW50UmVjdCBrZWVwUmVjdDsKLSAgICBjb21wdXRlQ292ZXJBbmRLZWVwUmVjdCh2aXNpYmxlUmVj
dCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CisgICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QobV92
aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CiAKICAgICBzZXRDb3ZlclJlY3QoY292
ZXJSZWN0KTsKICAgICBzZXRLZWVwUmVjdChrZWVwUmVjdCk7CkBAIC0zMDksNyArMzAzLDcgQEAg
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICAgICAgaWYgKHRp
bGVBdChjdXJyZW50Q29vcmRpbmF0ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICArK3JlcXVpcmVkVGlsZUNvdW50OwotICAgICAgICAgICAgZG91YmxlIGRpc3RhbmNl
ID0gdGlsZURpc3RhbmNlKHZpc2libGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0ZSk7CisgICAgICAg
ICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxlUmVjdCwgY3VycmVu
dENvb3JkaW5hdGUpOwogICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hvcnRlc3REaXN0YW5j
ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8
IHNob3J0ZXN0RGlzdGFuY2UpIHsKQEAgLTMzMyw4ICszMjcsMTYgQEAgdm9pZCBUaWxlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICB1cGRhdGVUaWxlQnVmZmVycygpOwogCiAg
ICAgLy8gUmUtY2FsbCBjcmVhdGVUaWxlcyBvbiBhIHRpbWVyIHRvIGNvdmVyIHRoZSB2aXNpYmxl
IGFyZWEgd2l0aCB0aGUgbmV3ZXN0IHNob3J0ZXN0IGRpc3RhbmNlLgotICAgIGlmIChyZXF1aXJl
ZFRpbGVDb3VudCkKLSAgICAgICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5zdGFydE9uZVNo
b3QobV90aWxlQ3JlYXRpb25EZWxheSk7CisgICAgbV9wZW5kaW5nVGlsZUNyZWF0aW9uID0gcmVx
dWlyZWRUaWxlQ291bnQ7CisgICAgaWYgKG1fcGVuZGluZ1RpbGVDcmVhdGlvbikgeworICAgICAg
ICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApIHsKKyAgICAgICAgICAg
IG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBkb3Vi
bGUgdGlsZUNyZWF0aW9uRGVsYXkgPSAwLjAxOworICAgICAgICBzdGFydEJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyKHRpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICB9CiB9CiAKIHZvaWQgVGlsZWRCYWNr
aW5nU3RvcmU6OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25zdApAQCAt
NDIzLDcgKzQyNSw3IEBAIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzQmFja2luZ1N0b3JlVXBk
YXRlc1N1c3BlbmRlZCgpIGNvbnN0CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzVGlsZUJ1
ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRzRnJv
emVuIHx8ICFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpOworICAg
IHJldHVybiBtX2NvbnRlbnRzRnJvemVuOwogfQogCiBib29sIFRpbGVkQmFja2luZ1N0b3JlOjpy
ZXNpemVFZGdlVGlsZXMoKQpAQCAtNTI2LDYgKzUyOCw5IEBAIFRpbGU6OkNvb3JkaW5hdGUgVGls
ZWRCYWNraW5nU3RvcmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBv
aW50CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVy
KCkKIHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmIChtX3RpbGVCdWZmZXJVcGRhdGVUaW1lci5pc0FjdGl2ZSgp
IHx8IGlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUzMywxOCArNTM4
LDIzIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVy
KCkKIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQo
VGltZXI8VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRUaWxlVXBk
YXRlc09uSWRsZUV2ZW50TG9vcCk7CiAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIH0KIAotdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpCit2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSBp
bnRlcnZhbCkKIHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ap
CisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLmlz
QWN0aXZlKCkgfHwgaXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAg
ICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CiB9CiAK
IHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQoVGlt
ZXI8VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRUaWxlVXBkYXRl
c09uSWRsZUV2ZW50TG9vcCk7CiAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXgg
MDgyYmU3MGM4ZWIyNzUxNzkwYjdhYjg3NzU2OTQ5YmFjODFhNmQyOC4uNDYwNjU0YWQyYWQ4ZmQz
MzNkNWJjZDA1NTYyNzNjODk0MTFiNzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00Niw3ICs0NiwxMiBAQCBw
dWJsaWM6CiAKICAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQ7IH0KIAotICAgIHZvaWQgY292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9h
dFBvaW50JiBwYW5uaW5nVHJhamVjdG9yeVZlY3RvciA9IEZsb2F0UG9pbnQoKSk7CisgICAgLy8g
VXNlZCB3aGVuIGNsYXNzIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSBi
eSBjbGllbnQuCisgICAgLy8gVXBkYXRlcyBvZiB0aWxlcyBhcmUgY29tbWl0dGVkIGFzIHNvb24g
YXMgYWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KKyAg
ICB2b2lkIHNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKGJvb2wgZW5hYmxlKSB7
IG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AgPSBlbmFibGU7IH0KKworICAgIHZv
aWQgc2V0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBjb3Zl
cldpdGhUaWxlc0lmTmVlZGVkKCk7CiAKICAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgeyByZXR1
cm4gbV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsK
QEAgLTYyLDkgKzY3LDYgQEAgcHVibGljOgogICAgIEludFNpemUgdGlsZVNpemUoKSB7IHJldHVy
biBtX3RpbGVTaXplOyB9CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJik7CiAK
LSAgICBkb3VibGUgdGlsZUNyZWF0aW9uRGVsYXkoKSBjb25zdCB7IHJldHVybiBtX3RpbGVDcmVh
dGlvbkRlbGF5OyB9Ci0gICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxheShkb3VibGUgZGVsYXkp
OwotCiAgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAg
ICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKQEAgLTgx
LDcgKzgzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaWxlQnVmZmVy
VXBkYXRlVGltZXIoKTsKLSAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoKTsK
KyAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlID0gMCk7CiAKICAg
ICB2b2lkIHRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3Jl
PiopOwogICAgIHZvaWQgYmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJh
Y2tpbmdTdG9yZT4qKTsKQEAgLTEyMCwxMCArMTIyLDEwIEBAIHByaXZhdGU6CiAgICAgVGltZXI8
VGlsZWRCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXI7CiAKICAgICBJbnRT
aXplIG1fdGlsZVNpemU7Ci0gICAgZG91YmxlIG1fdGlsZUNyZWF0aW9uRGVsYXk7CiAgICAgZmxv
YXQgbV9jb3ZlckFyZWFNdWx0aXBsaWVyOwogCiAgICAgRmxvYXRQb2ludCBtX3RyYWplY3RvcnlW
ZWN0b3I7CisgICAgRmxvYXRQb2ludCBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yOwogICAgIElu
dFJlY3QgbV92aXNpYmxlUmVjdDsKIAogICAgIEludFJlY3QgbV9jb3ZlclJlY3Q7CkBAIC0xMzMs
OCArMTM1LDEwIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwogICAgIGZs
b2F0IG1fcGVuZGluZ1NjYWxlOwogCisgICAgYm9vbCBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxl
RXZlbnRMb29wOwogICAgIGJvb2wgbV9jb250ZW50c0Zyb3plbjsKICAgICBib29sIG1fc3VwcG9y
dHNBbHBoYTsKKyAgICBib29sIG1fcGVuZGluZ1RpbGVDcmVhdGlvbjsKIAogICAgIGZyaWVuZCBj
bGFzcyBUaWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCmluZGV4IDBlMDIxNDc3NzMzMGUyNWYx
ZmM4NDM4NzFmNDVhNWEwOThmOWNkMWQuLmViOWE3ZDkzMjcyNDE1MWNjZTQ3NTc2OTY3ZTJkNDFk
M2U1ZDNlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBh
aW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFyZWEpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgdGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGls
ZUNyZWF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29u
dGVudHNSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZp
c2libGVSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBkMGU5YzZkMzJiNjcxZDdh
MTVkNDQ4YjcwMGUxNjQ3YTM4YWUzZmVjLi4yZDAyYjA5Yjg3MjQ0NWIyNDQ4MWFhYTBhNDQyZjcx
MTE4NGI1OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgor
I2VuZGlmCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwpAQCAtMTA5LDcgKzExMiw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpkaWRDaGFuZ2VHZW9tZXRyeSgpCiAKIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IEdy
YXBoaWNzTGF5ZXIoY2xpZW50KQotICAgICwgbV9pblVwZGF0ZU1vZGUoZmFsc2UpCisjaWZuZGVm
IE5ERUJVRworICAgICwgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKGZhbHNlKQorI2VuZGlmCiAg
ICAgLCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0KHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNM
YXllclN0YXRlKHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNDaGlsZHJlbih0cnVlKQpAQCAtMTIw
LDYgKzEyNSw4IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY2FudmFzTmVlZHNE
aXNwbGF5KGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0NyZWF0ZShmYWxzZSkKICAgICAsIG1f
Y2FudmFzTmVlZHNEZXN0cm95KGZhbHNlKQorICAgICwgbV9wZW5kaW5nQ29udGVudHNTY2FsZUNo
YW5nZShmYWxzZSkKKyAgICAsIG1fc2hvdWxkQWRqdXN0VmlzaWJsZVJlY3QoZmFsc2UpCiAgICAg
LCBtX2Nvb3JkaW5hdG9yKDApCiAgICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCkBAIC01OTUsNiArNjAyLDEwIEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVDYW52YXNJZk5lZWRlZCgpCiAKIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKCFtX2lzRmx1c2hpbmdMYXllckNoYW5n
ZXMpOworICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiB1cGRhdGVNb2RlUHJvdGVjdG9yKG1faXNG
bHVzaGluZ0xheWVyQ2hhbmdlcywgdHJ1ZSk7CisjZW5kaWYKICAgICAvLyBTZXRzIHRoZSB2YWx1
ZXMuCiAgICAgY29tcHV0ZVBpeGVsQWxpZ25tZW50KG1fYWRqdXN0ZWRQb3NpdGlvbiwgbV9hZGp1
c3RlZFNpemUsIG1fYWRqdXN0ZWRBbmNob3JQb2ludCwgbV9waXhlbEFsaWdubWVudE9mZnNldCk7
CiAKQEAgLTYzOSwxNCArNjUwLDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQm
IHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAg
ICAgbV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKHRyYWplY3RvcnlW
ZWN0b3IpOworICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZl
Y3Rvcik7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0KIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiB7
CiAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7Ci0gICAgYWRqdXN0Q29udGVudHNTY2FsZSgp
OworICAgIGlmIChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCisgICAgICAgIG1fcGVuZGluZ0Nv
bnRlbnRzU2NhbGVDaGFuZ2UgPSB0cnVlOwogfQogCiBmbG9hdCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQpAQCAtNjU2LDkgKzY3MSw3IEBAIGZsb2F0
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RDb250ZW50c1NjYWxlKCkKIHsKLSAg
ICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAg
QVNTRVJUKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSk7CiAgICAgaWYgKCFtX21haW5CYWNraW5n
U3RvcmUgfHwgbV9tYWluQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkgPT0gZWZmZWN0aXZl
Q29udGVudHNTY2FsZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTY5MCwxMSArNzAzLDExIEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5k
KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYKIHsKIH0KIAotYm9vbCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAordm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVh
dGlvbigpCiB7Ci0gICAgaWYgKCFtX2luVXBkYXRlTW9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5sYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQo
KTsKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgIGlmIChjbGllbnQo
KSkKKyAgICAgICAgY2xpZW50KCktPm5vdGlmeUZsdXNoUmVxdWlyZWQodGhpcyk7CiB9CiAKIElu
dFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRz
UmVjdCgpCkBAIC03MzcsMjggKzc1MCwzMCBAQCBDb2xvciBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAogUGFzc093blB0
cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50
VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIGludCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQp
CiB7Ci0gICAgaWYgKCFtX2Nvb3JkaW5hdG9yKQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KCk7Ci0KKyAgICBBU1NFUlQobV9pc0ZsdXNoaW5nTGF5
ZXJDaGFuZ2VzKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CiAgICAgcmV0dXJuIG1fY29v
cmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gQ29v
cmRpbmF0ZWRTdXJmYWNlOjpOb0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0Fs
cGhhLCBhdGxhcywgb2Zmc2V0KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBk
YXRlSW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZVJlY3QpCiB7Ci0gICAgaWYgKG1f
Y29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVRpbGUoaWQoKSwgdGls
ZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNTRVJUKG1faXNGbHVzaGluZ0xheWVy
Q2hhbmdlcyk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRpbmF0b3It
PmNyZWF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwg
Y29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRpbGVS
ZWN0KQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT51
cGRhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VS
VChtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsK
KyAgICBtX2Nvb3JkaW5hdG9yLT51cGRhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywg
dGlsZVJlY3QpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVtb3ZlVGls
ZSh1aW50MzJfdCB0aWxlSUQpCiB7Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1f
Y29vcmRpbmF0b3ItPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKKyAgICBBU1NFUlQobV9pc0Zs
dXNoaW5nTGF5ZXJDaGFuZ2VzKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9j
b29yZGluYXRvci0+cmVtb3ZlVGlsZShpZCgpLCB0aWxlSUQpOwogfQogCiB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQpAQCAtNzY5LDEzICs3ODQs
MjIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJz
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5VcGRhdGVNb2RlID0gdHJ1ZTsK
KyAgICBpZiAobV9wZW5kaW5nQ29udGVudHNTY2FsZUNoYW5nZSkgeworICAgICAgICBhZGp1c3RD
b250ZW50c1NjYWxlKCk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVDaGFuZ2UgPSBm
YWxzZTsKKyAgICB9CisKICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHdlIChyZSljcmVh
dGUgdGhlIG1haW4gdGlsZWQgYmFja2luZyBzdG9yZSwgb25jZSB3ZQogICAgIC8vIGhhdmUgYSBy
ZW1vdGUgY2xpZW50IGFuZCB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBvdXIgZGF0YSB0byB0aGUgVUkg
cHJvY2Vzcy4KICAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkKICAgICAgICAgY3JlYXRlQmFj
a2luZ1N0b3JlKCk7CisKKyAgICBpZiAobV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCkgeworICAg
ICAgICBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0ID0gZmFsc2U7CisgICAgICAgIG1fbWFpbkJh
Y2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgIH0KKwogICAgIG1fbWFp
bkJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZUJ1ZmZlcnMoKTsKLSAgICBtX2luVXBkYXRlTW9kZSA9
IGZhbHNlOwogCiAgICAgLy8gVGhlIHByZXZpb3VzIGJhY2tpbmcgc3RvcmUgaXMga2VwdCBhcm91
bmQgdG8gYXZvaWQgZmxpY2tlcmluZyBiZXR3ZWVuCiAgICAgLy8gcmVtb3ZpbmcgdGhlIGV4aXN0
aW5nIHRpbGVzIGFuZCBwYWludGluZyB0aGUgbmV3IG9uZXMuIFRoZSBmaXJzdCB0aW1lCkBAIC03
ODYsNiArODEwLDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRl
bnRCdWZmZXJzKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnB1cmdlQmFja2lu
Z1N0b3JlcygpCiB7CisjaWZuZGVmIE5ERUJVRworICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiB1
cGRhdGVNb2RlUHJvdGVjdG9yKG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcywgdHJ1ZSk7CisjZW5k
aWYKICAgICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICBtX3ByZXZpb3VzQmFja2lu
Z1N0b3JlLmNsZWFyKCk7CiAKQEAgLTc5OSwxMCArODI2LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllckNsCiAgICAgbV9jb29yZGluYXRvciA9IGNvb3JkaW5hdG9yOwogfQogCi12b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0VmlzaWJsZVJlY3QoKQordm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCkKIHsKLSAgICBp
ZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNvdmVy
V2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICBpZiAoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQor
ICAgICAgICBtX3Nob3VsZEFkanVzdFZpc2libGVSZWN0ID0gdHJ1ZTsKIH0KIAogYm9vbCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6Omhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpCkBAIC05MDMs
OCArOTMwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zv
cm1lZFZpc2libGVSZWN0KCkKICAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVy
VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRy
YW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KLSAg
ICBhZGp1c3RWaXNpYmxlUmVjdCgpOwotICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICBz
ZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiBzdGF0aWMgUGFzc093blB0cjxH
cmFwaGljc0xheWVyPiBjcmVhdGVDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ckNsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA0NzNiYWUzMDYxNmQzZjM3YmY3YzMxNTE5YjQy
NjU0OTY1NzlmNGUxLi41NThmYTMzYTk3MTg5N2MzNTRkOGEwMjNkYjY4NDhlODE3ZmViODFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaApAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQpID0gMDsKIAogICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0
ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQsIGNvbnN0IENvb3JkaW5hdGVk
TGF5ZXJJbmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihDb29y
ZGluYXRlZExheWVySUQsIGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JikgPSAwOwpA
QCAtMTQ5LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5n
U3RvcmVQYWludEJlZ2luKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2lu
Z1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYgcGFpbnRlZEFyZWEpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB0aWxlZEJh
Y2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRD
b2xvcigpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTYyLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGll
bnQqKTsKIAotICAgIHZvaWQgYWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICB2b2lkIHNldE5lZWRz
VmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsK
ICAgICBib29sIGhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpOwogCkBAIC0yMTcsNyArMjE2LDkg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fYWRqdXN0ZWRQb3NpdGlvbjsKICAgICBGbG9h
dFBvaW50M0QgbV9hZGp1c3RlZEFuY2hvclBvaW50OwogCi0gICAgYm9vbCBtX2luVXBkYXRlTW9k
ZSA6IDE7CisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2Vz
OworI2VuZGlmCiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAxOwogICAgIGJv
b2wgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKICAgICBib29sIG1fc2hvdWxkU3luY0NoaWxk
cmVuOiAxOwpAQCAtMjI4LDYgKzIyOSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbnZhc05l
ZWRzRGlzcGxheSA6IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzQ3JlYXRlIDogMTsKICAgICBi
b29sIG1fY2FudmFzTmVlZHNEZXN0cm95IDogMTsKKyAgICBib29sIG1fcGVuZGluZ0NvbnRlbnRz
U2NhbGVDaGFuZ2UgOiAxOworICAgIGJvb2wgbV9zaG91bGRBZGp1c3RWaXNpYmxlUmVjdCA6IDE7
CiAKICAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCogbV9jb29yZGlu
YXRvcjsKICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tpbmdTdG9yZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNw
cAppbmRleCAxMTdjZGJhYTY1MDU1YTljNTg3ZWI5MDE5ZDZmY2Y1NGMwZDZmNTE3Li44Y2M3OThl
YTIwNmJjNjY2ZjRkNjFiNzkzOGU0MmY1MTMxNTA0ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC02MTQsNiArNjE0LDcg
QEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwKIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikKIHsKKyAg
ICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
cGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0
KQpAQCAtNjM3LDcgKzYzOCw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gTGF5ZXJUcmVl
Q29vcmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllCiAgICAgbGF5ZXIt
PnNldENvb3JkaW5hdG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQobGF5ZXIp
OwogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7Ci0gICAgbGF5
ZXItPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgbGF5ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RB
ZGp1c3RtZW50KCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIApAQCAtNzE5LDcg
KzcyMCw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBzCiAgICAgICAgICAgICBpZiAoY29udGVu
dHNTY2FsZURpZENoYW5nZSkKICAgICAgICAgICAgICAgICAoKml0KS0+c2V0Q29udGVudHNTY2Fs
ZShzY2FsZSk7CiAgICAgICAgICAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKQotICAgICAg
ICAgICAgICAgICgqaXQpLT5hZGp1c3RWaXNpYmxlUmVjdCgpOworICAgICAgICAgICAgICAgICgq
aXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC03NTksMTEgKzc2MCw2IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbmRlck5l
eHRGcmFtZSgpCiAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlkU3dhcEJ1ZmZlcnMoKTsK
IH0KIAotYm9vbCBMYXllclRyZWVDb29yZGluYXRvcjo6bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxv
d2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ0Zv
clVJUHJvY2VzczsKLX0KLQogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cHVyZ2VCYWNraW5n
U3RvcmVzKCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1RvZ2dsZShtX2lz
UHVyZ2luZywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaAppbmRleCA3MDU3OGU1NWMzYjNjN2E0MGE2MGIxZGI2MzdhMmFmZDQxMzc0
YmJkLi44OGE4YmQ1YTA4NzFiNjE0NWZmZDg3YzgyZGMwODgxNmM5MzE0YzNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTg1LDcg
Kzg1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVD
b250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7
CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwotICAgIHZpcnR1YWwgYm9v
bCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBz
Y2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBP
VkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178939</attachid>
            <date>2012-12-11 18:14:15 -0800</date>
            <delta_ts>2012-12-12 01:35:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121212111131.patch</filename>
            <type>text/plain</type>
            <size>27558</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFiZDBmODQxMzdkMTBk
NThkODExYjNmZmVlOWMzYzcyMTI1ODBlNy4uZGE5NzgyNzY3OTMzMGYxMzM3YzA0MjIzNzAyMWM3
ZDQzYjYxOWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTExICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRUaWxlVXBkYXRlc09uSWRsZUV2
ZW50TG9vcCgpIGlzIHVzZWQgd2hlbiBjbGFzcworICAgICAgICBtZXRob2RzIGNhbm5vdCBiZSBj
YWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgY2xpZW50LiBVcGRhdGVzIG9mIHRpbGVzIGFyZQorICAg
ICAgICBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBldmVudCBxdWV1ZSBo
YXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgICAgICBBZnRlciB0aGlzIHBhdGNoIEZyYW1lIHNldHMg
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCB0byB0cnVlLgorCisgICAgICAgIElu
IGFkZGl0aW9uLCByZW1vdmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRpbGVkQmFja2luZ1N0
b3JlVXBkYXRlc0FsbG93ZWQoKQorICAgICAgICB3aGljaCB3YXMgaW50cm9kdWNlZCBmb3IgQ29v
cmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnNldFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgICBTZXBhcmF0
ZSBzZXR0aW5nIGEgdHJhamVjdG9yeSB2ZWN0b3IgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVlZGVk
KCkuCisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRp
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjppc1RpbGVCdWZmZXJV
cGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpz
dGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmly
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5k
aW5nVGlsZUNyZWF0aW9uKToKKyAgICAgICAgICAgIElmIFRpbGVkQmFja2luZ1N0b3JlIGRvZXMg
bm90IGNyZWF0ZSBhbGwgdGlsZXMsIFRpbGVkQmFja2luZ1N0b3JlCisgICAgICAgICAgICBub3Rp
ZmllcyBhIGNsaWVudCBvZiBuZWVkaW5nIHRvIGNyZWF0ZSB0aWxlcyBtb3JlLCB3aGVuCisgICAg
ICAgICAgICBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIGlzIGZhbHNlLgorCiAy
MDEyLTEyLTExICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IE9mZmxpbmVBdWRpb0NvbnRleHQgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBk
YWIxZDVmMzBiZjUzMDk0MzY2ZDQwZDUzNGI2MGQ4YTNkMWJmNzE2Li4wOTRiODE4Zjg4NTM2OTg3
NmQ2ZTc0ZThmNGFhMTk5YmEwN2Q0MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIw
MTItMTItMTEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAg
ICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNv
ZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIgaGFzIGNvbXBsZXggY29kZSByZWxhdGVkIHRvIFRpbGVkQmFja2luZ1N0b3JlLgorICAgICAg
ICBJdCBoYXMgdHdvIHByb2JsZW0uCisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ciBoYWNrcyBUaWxlZEJhY2tpbmdTdG9yZSB0byBwcmV2ZW50CisgICAgICAgIFRpbGVkQmFja2lu
Z1N0b3JlIGZyb20gYXN5bmNocm9ub3VzbHkgc2VuZGluZyBVcGRhdGVUaWxlIG1lc3NhZ2UgdG8g
VUkKKyAgICAgICAgUHJvY2Vzcy4KKyAgICAgICAgMi4gQ3JlYXRlVGlsZSBhbmQgUmVtb3ZlVGls
ZSBtZXNzYWdlIGNhbiBiZSBzZW50IHRvIFVJIFByb2Nlc3MgYXQgYW55IHRpbWUuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlIFRpbGVkQmFj
a2luZ1N0b3JlIG1vcmUgZXhwbGljaXRseS4KKyAgICAgICAgSXQgbWVhbnMgb25seSBkdXJpbmcg
Zmx1c2hpbmcgbGF5ZXIgc3RhdGVzLCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIKKyAgICAgICAg
Y2FsbHMgbWV0aG9kcyBvZiBUaWxlZEJhY2tpbmdTdG9yZSwgd2hpY2ggaW5kaXJlY3RseSBjYWxs
IGNyZWF0ZVRpbGUoKSwKKyAgICAgICAgdXBkYXRlVGlsZSgpIGFuZCByZW1vdmVUaWxlKCkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RDb250ZW50c1NjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3Rv
cmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVkc1Zp
c2libGVSZWN0QWRqdXN0bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAg
IChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bm90aWZ5Rmx1c2hSZXF1aXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChD
b29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorCiAyMDEyLTEyLTExICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjg1Nzg3MD4g
W1dLMiBOZXR3b3JrUHJvY2Vzc10gQ2Fubm90IGxvYWQgSFRUUFMgc2l0ZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKaW5kZXggM2Q1MjBmOGZlNGEyOTljOWFjMGU0ZGQ3ZTEzOThlMjk0NWE5YjY0OS4uNzQ3
YzRmNDY4ZTNmZDE2OTdhMzAyOWEzYzM0MGE0ZmYwMTQ4OTExMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTgxOCw2ICs4MTgsNyBAQCB2b2lkIEZyYW1lOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVu
YWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGlmIChtX3RpbGVkQmFja2luZ1N0b3JlKQogICAgICAg
ICByZXR1cm47CiAgICAgbV90aWxlZEJhY2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJh
Y2tpbmdTdG9yZSh0aGlzKSk7CisgICAgbV90aWxlZEJhY2tpbmdTdG9yZS0+c2V0Q29tbWl0VGls
ZVVwZGF0ZXNPbklkbGVFdmVudExvb3AodHJ1ZSk7CiAgICAgaWYgKG1fdmlldykKICAgICAgICAg
bV92aWV3LT5zZXRQYWludHNFbnRpcmVDb250ZW50cyh0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRl
eCA5YTM3YTk2ZmFiMmViNjdhMjUxNzM1ZWY5ZGVjMGZhOGY4YjRmMmE4Li5hNTc0YjIwMjlhNWIw
Njg4OWMwNTZiYTAyZDRkNzQ3YmI3YzMwODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC00MSwxMiArNDEs
MTMgQEAgVGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0
b3JlQ2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHIKICAgICAsIG1fdGlsZUJ1ZmZlclVwZGF0ZVRp
bWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQp
CiAgICAgLCBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9y
ZTo6YmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemUoZGVmYXVs
dFRpbGVEaW1lbnNpb24sIGRlZmF1bHRUaWxlRGltZW5zaW9uKQotICAgICwgbV90aWxlQ3JlYXRp
b25EZWxheSgwLjAxKQogICAgICwgbV9jb3ZlckFyZWFNdWx0aXBsaWVyKDIuMGYpCiAgICAgLCBt
X2NvbnRlbnRzU2NhbGUoMS5mKQogICAgICwgbV9wZW5kaW5nU2NhbGUoMCkKKyAgICAsIG1fY29t
bWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AoZmFsc2UpCiAgICAgLCBtX2NvbnRlbnRzRnJv
emVuKGZhbHNlKQogICAgICwgbV9zdXBwb3J0c0FscGhhKGZhbHNlKQorICAgICwgbV9wZW5kaW5n
VGlsZUNyZWF0aW9uKGZhbHNlKQogewogfQogCkBAIC02MSwyNiArNjIsMjAgQEAgdm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBzdGFy
dEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CiB9CiAKLXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OnNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSkKK3ZvaWQgVGlsZWRCYWNraW5nU3Rv
cmU6OnNldFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rv
cikKIHsKLSAgICBtX3RpbGVDcmVhdGlvbkRlbGF5ID0gZGVsYXk7CisgICAgbV9wZW5kaW5nVHJh
amVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CisgICAgbV9wZW5kaW5nVHJhamVjdG9y
eVZlY3Rvci5ub3JtYWxpemUoKTsKIH0KIAotdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJX
aXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpCiB7CiAgICAgSW50
UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7CiAgICAgSW50UmVjdCByZWN0
ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVj
dCgpKTsKIAotICAgIEZsb2F0UG9pbnQgbm9ybWFsaXplZFZlY3RvciA9IHRyYWplY3RvcnlWZWN0
b3I7Ci0gICAgbm9ybWFsaXplZFZlY3Rvci5ub3JtYWxpemUoKTsKLQotICAgIGlmIChtX3RyYWpl
Y3RvcnlWZWN0b3IgPT0gbm9ybWFsaXplZFZlY3RvciAmJiBtX3Zpc2libGVSZWN0ID09IHZpc2li
bGVSZWN0ICYmIG1fcmVjdCA9PSByZWN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RyYWpl
Y3RvcnlWZWN0b3IgPSBub3JtYWxpemVkVmVjdG9yOwotICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNp
YmxlUmVjdDsKLQotICAgIGNyZWF0ZVRpbGVzKCk7CisgICAgYm9vbCBkaWRDaGFuZ2UgPSBtX3Ry
YWplY3RvcnlWZWN0b3IgIT0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciB8fCBtX3Zpc2libGVS
ZWN0ICE9IHZpc2libGVSZWN0IHx8IG1fcmVjdCAhPSByZWN0OworICAgIGlmIChkaWRDaGFuZ2Ug
fHwgbV9wZW5kaW5nVGlsZUNyZWF0aW9uKQorICAgICAgICBjcmVhdGVUaWxlcygpOwogfQogCiB2
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRz
RGlydHlSZWN0KQpAQCAtMTA4LDcgKzEwMyw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6Omlu
dmFsaWRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudHNEaXJ0eVJlY3QpCiAKIHZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKIHsKLSAgICBpZiAoIW1fY2xpZW50LT50
aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgfHwgbV9jb250ZW50c0Zyb3plbikKKyAg
ICBpZiAobV9jb250ZW50c0Zyb3plbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jbGllbnQt
PnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOwpAQCAtMjQ1LDYgKzI0MCw4IEBAIHZvaWQg
VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAvLyBVcGRhdGUgb3VyIGJhY2tp
bmcgc3RvcmUgZ2VvbWV0cnkuCiAgICAgY29uc3QgSW50UmVjdCBwcmV2aW91c1JlY3QgPSBtX3Jl
Y3Q7CiAgICAgbV9yZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxlZEJhY2tpbmdT
dG9yZUNvbnRlbnRzUmVjdCgpKTsKKyAgICBtX3RyYWplY3RvcnlWZWN0b3IgPSBtX3BlbmRpbmdU
cmFqZWN0b3J5VmVjdG9yOworICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdCgpOwogCiAg
ICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgc2V0Q292ZXJSZWN0KEludFJlY3Qo
KSk7CkBAIC0yNzMsMTIgKzI3MCw5IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRp
bGVzKCkKICAgICAgKiBXZSBtdXN0IGNyZWF0ZSBvciBrZWVwIHRoZSB0aWxlcyBpbiB0aGUgSEVS
RSByZWdpb24uCiAgICAgICovCiAKLSAgICBjb25zdCBJbnRSZWN0IHZpc2libGVSZWN0ID0gdGhp
cy0+dmlzaWJsZVJlY3QoKTsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0KICAg
ICBJbnRSZWN0IGNvdmVyUmVjdDsKICAgICBJbnRSZWN0IGtlZXBSZWN0OwotICAgIGNvbXB1dGVD
b3ZlckFuZEtlZXBSZWN0KHZpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKKyAgICBj
b21wdXRlQ292ZXJBbmRLZWVwUmVjdChtX3Zpc2libGVSZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0
KTsKIAogICAgIHNldENvdmVyUmVjdChjb3ZlclJlY3QpOwogICAgIHNldEtlZXBSZWN0KGtlZXBS
ZWN0KTsKQEAgLTMwOSw3ICszMDMsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVU
aWxlcygpCiAgICAgICAgICAgICBpZiAodGlsZUF0KGN1cnJlbnRDb29yZGluYXRlKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICsrcmVxdWlyZWRUaWxlQ291bnQ7Ci0g
ICAgICAgICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UodmlzaWJsZVJlY3QsIGN1
cnJlbnRDb29yZGluYXRlKTsKKyAgICAgICAgICAgIGRvdWJsZSBkaXN0YW5jZSA9IHRpbGVEaXN0
YW5jZShtX3Zpc2libGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0ZSk7CiAgICAgICAgICAgICBpZiAo
ZGlzdGFuY2UgPiBzaG9ydGVzdERpc3RhbmNlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgc2hvcnRlc3REaXN0YW5jZSkgewpAQCAtMzMzLDgg
KzMyNywxNiBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICAg
IHVwZGF0ZVRpbGVCdWZmZXJzKCk7CiAKICAgICAvLyBSZS1jYWxsIGNyZWF0ZVRpbGVzIG9uIGEg
dGltZXIgdG8gY292ZXIgdGhlIHZpc2libGUgYXJlYSB3aXRoIHRoZSBuZXdlc3Qgc2hvcnRlc3Qg
ZGlzdGFuY2UuCi0gICAgaWYgKHJlcXVpcmVkVGlsZUNvdW50KQotICAgICAgICBtX2JhY2tpbmdT
dG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChtX3RpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICBt
X3BlbmRpbmdUaWxlQ3JlYXRpb24gPSByZXF1aXJlZFRpbGVDb3VudDsKKyAgICBpZiAobV9wZW5k
aW5nVGlsZUNyZWF0aW9uKSB7CisgICAgICAgIGlmICghbV9jb21taXRUaWxlVXBkYXRlc09uSWRs
ZUV2ZW50TG9vcCkgeworICAgICAgICAgICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlSGFz
UGVuZGluZ1RpbGVDcmVhdGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0aWxlQ3JlYXRpb25EZWxheSA9IDAuMDE7Cisg
ICAgICAgIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIodGlsZUNyZWF0aW9uRGVsYXkpOwor
ICAgIH0KIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0Rm9yQ29udGVudHNSZWN0
KEludFJlY3QmIHJlY3QpIGNvbnN0CkBAIC00MjMsNyArNDI1LDcgQEAgYm9vbCBUaWxlZEJhY2tp
bmdTdG9yZTo6aXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkgY29uc3QKIAogYm9vbCBU
aWxlZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW4gfHwgIW1fY2xpZW50LT50aWxlZEJhY2tpbmdT
dG9yZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW47CiB9CiAK
IGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpCkBAIC01MjYsNiArNTI4
LDkgQEAgVGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVG
b3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQKIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogeworICAgIGlmICghbV9jb21taXRUaWxlVXBk
YXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fdGlsZUJ1
ZmZlclVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkgfHwgaXNUaWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRl
ZCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxlQnVmZmVyVXBkYXRlVGltZXIuc3RhcnRP
bmVTaG90KDApOwpAQCAtNTMzLDE4ICs1MzgsMjMgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp0
aWxlQnVmZmVyVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKQogewor
ICAgIEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKTsKICAgICB1cGRh
dGVUaWxlQnVmZmVycygpOwogfQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tp
bmdTdG9yZVVwZGF0ZVRpbWVyKCkKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2lu
Z1N0b3JlVXBkYXRlVGltZXIoZG91YmxlIGludGVydmFsKQogeworICAgIGlmICghbV9jb21taXRU
aWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1f
YmFja2luZ1N0b3JlVXBkYXRlVGltZXIuaXNBY3RpdmUoKSB8fCBpc0JhY2tpbmdTdG9yZVVwZGF0
ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fYmFja2luZ1N0b3JlVXBkYXRl
VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3Rh
cnRPbmVTaG90KGludGVydmFsKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2lu
Z1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4qKQogeworICAg
IEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKTsKICAgICBjcmVhdGVU
aWxlcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCAwODJiZTcwYzhlYjI3NTE3OTBiN2FiODc3NTY5NDli
YWM4MWE2ZDI4Li40NjA2NTRhZDJhZDhmZDMzM2Q1YmNkMDU1NjI3M2M4OTQxMWI3NDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0
b3JlLmgKQEAgLTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIFRpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0gICAgdm9pZCBjb3Zlcldp
dGhUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIHBhbm5pbmdUcmFqZWN0b3J5VmVjdG9y
ID0gRmxvYXRQb2ludCgpKTsKKyAgICAvLyBVc2VkIHdoZW4gY2xhc3MgbWV0aG9kcyBjYW5ub3Qg
YmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IGNsaWVudC4KKyAgICAvLyBVcGRhdGVzIG9mIHRp
bGVzIGFyZSBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBldmVudCBxdWV1
ZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgIHZvaWQgc2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklk
bGVFdmVudExvb3AoYm9vbCBlbmFibGUpIHsgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50
TG9vcCA9IGVuYWJsZTsgfQorCisgICAgdm9pZCBzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZs
b2F0UG9pbnQmKTsKKyAgICB2b2lkIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKIAogICAgIGZs
b2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAgICB2b2lk
IHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwpAQCAtNjIsOSArNjcsNiBAQCBwdWJsaWM6CiAgICAg
SW50U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KICAgICB2b2lkIHNldFRp
bGVTaXplKGNvbnN0IEludFNpemUmKTsKIAotICAgIGRvdWJsZSB0aWxlQ3JlYXRpb25EZWxheSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGlsZUNyZWF0aW9uRGVsYXk7IH0KLSAgICB2b2lkIHNldFRpbGVD
cmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSk7Ci0KICAgICBJbnRSZWN0IG1hcFRvQ29udGVudHMo
Y29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEludFJlY3QgbWFwRnJvbUNvbnRlbnRzKGNvbnN0
IEludFJlY3QmKSBjb25zdDsKIApAQCAtODEsNyArODMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcigpOwotICAgIHZvaWQgc3RhcnRC
YWNraW5nU3RvcmVVcGRhdGVUaW1lcigpOworICAgIHZvaWQgc3RhcnRCYWNraW5nU3RvcmVVcGRh
dGVUaW1lcihkb3VibGUgPSAwKTsKIAogICAgIHZvaWQgdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmly
ZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+Kik7CiAgICAgdm9pZCBiYWNraW5nU3RvcmVVcGRh
dGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopOwpAQCAtMTIwLDEwICsxMjIs
MTAgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3Rv
cmVVcGRhdGVUaW1lcjsKIAogICAgIEludFNpemUgbV90aWxlU2l6ZTsKLSAgICBkb3VibGUgbV90
aWxlQ3JlYXRpb25EZWxheTsKICAgICBmbG9hdCBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CiAKICAg
ICBGbG9hdFBvaW50IG1fdHJhamVjdG9yeVZlY3RvcjsKKyAgICBGbG9hdFBvaW50IG1fcGVuZGlu
Z1RyYWplY3RvcnlWZWN0b3I7CiAgICAgSW50UmVjdCBtX3Zpc2libGVSZWN0OwogCiAgICAgSW50
UmVjdCBtX2NvdmVyUmVjdDsKQEAgLTEzMyw4ICsxMzUsMTAgQEAgcHJpdmF0ZToKICAgICBmbG9h
dCBtX2NvbnRlbnRzU2NhbGU7CiAgICAgZmxvYXQgbV9wZW5kaW5nU2NhbGU7CiAKKyAgICBib29s
IG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3A7CiAgICAgYm9vbCBtX2NvbnRlbnRz
RnJvemVuOwogICAgIGJvb2wgbV9zdXBwb3J0c0FscGhhOworICAgIGJvb2wgbV9wZW5kaW5nVGls
ZUNyZWF0aW9uOwogCiAgICAgZnJpZW5kIGNsYXNzIFRpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50
LmgKaW5kZXggMGUwMjE0Nzc3MzMwZTI1ZjFmYzg0Mzg3MWY0NWE1YTA5OGY5Y2QxZC4uZWI5YTdk
OTMyNzI0MTUxY2NlNDc1NzY5NjdlMmQ0MWQzZTVkM2UxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
CkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5n
U3RvcmVQYWludEJlZ2luKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9y
ZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBw
YWludGVkQXJlYSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0
ZXNBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0aWxl
ZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIElu
dFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSA9IDA7CiAgICAgdmlydHVhbCBJ
bnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSA9IDA7CiAgICAgdmlydHVhbCBD
b2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGIzYmU4NDAzZTMwMTAyOTdlODFkMzUxOTc2Mzc1NmM3OWJhMzkzYmIuLjQyMGM4
NDZhYjYyNWQ0NjU2ODdhMzBlNzM5ZGRlNjI0MDMyMjA2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzgs
NiArMzgsOSBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRl
IDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xMDksNyArMTEyLDkgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRpZENoYW5nZUdlb21ldHJ5KCkKIAogQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ckNsaWVudCogY2xpZW50KQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCi0gICAgLCBtX2lu
VXBkYXRlTW9kZShmYWxzZSkKKyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX2lzRmx1c2hpbmdMYXll
ckNoYW5nZXMoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJlY3Qo
dHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0xheWVyU3RhdGUodHJ1ZSkKICAgICAsIG1fc2hvdWxk
U3luY0NoaWxkcmVuKHRydWUpCkBAIC0xMjAsNiArMTI1LDggQEAgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xp
ZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2NhbnZhc05l
ZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0Rlc3Ryb3koZmFsc2UpCisgICAg
LCBtX3BlbmRpbmdDb250ZW50c1NjYWxlQWRqdXN0bWVudChmYWxzZSkKKyAgICAsIG1fcGVuZGlu
Z1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0b3IoMCkKICAg
ICAsIG1fY29udGVudHNTY2FsZSgxKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIo
MCkKQEAgLTU5NSw2ICs2MDIsMTAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZUNhbnZhc0lmTmVlZGVkKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogeworI2lmbmRlZiBOREVCVUcK
KyAgICBBU1NFUlQoIW1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyk7CisgICAgVGVtcG9yYXJ5Q2hh
bmdlPGJvb2w+IHVwZGF0ZU1vZGVQcm90ZWN0b3IobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzLCB0
cnVlKTsKKyNlbmRpZgogICAgIC8vIFNldHMgdGhlIHZhbHVlcy4KICAgICBjb21wdXRlUGl4ZWxB
bGlnbm1lbnQobV9hZGp1c3RlZFBvc2l0aW9uLCBtX2FkanVzdGVkU2l6ZSwgbV9hZGp1c3RlZEFu
Y2hvclBvaW50LCBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0KTsKIApAQCAtNjM5LDE0ICs2NTAsMTgg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFJvb3RMYXllcihib29sIGlzUm9v
dCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVj
dFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsK
LSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUt
PmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQodHJhamVjdG9yeVZlY3Rvcik7CisgICAgaWYgKCFtX21h
aW5CYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWFpbkJhY2tpbmdTdG9y
ZS0+c2V0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBzZXROZWVkc1Zp
c2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAgICBtX2NvbnRlbnRzU2NhbGUg
PSBzY2FsZTsKLSAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7CisgICAgaWYgKHNob3VsZEhhdmVC
YWNraW5nU3RvcmUoKSkKKyAgICAgICAgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQg
PSB0cnVlOwogfQogCiBmbG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNv
bnRlbnRzU2NhbGUoKQpAQCAtNjU2LDkgKzY3MSw3IEBAIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjphZGp1c3RDb250ZW50c1NjYWxlKCkKIHsKLSAgICBpZiAoIXNob3VsZEhhdmVC
YWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKHNob3VsZEhhdmVC
YWNraW5nU3RvcmUoKSk7CiAgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUgfHwgbV9tYWluQmFj
a2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkgPT0gZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTY5MCwxMSArNzAzLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYKIHsKIH0KIAotYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2lu
Z1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpCiB7Ci0gICAgaWYg
KCFtX2luVXBkYXRlTW9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2Nv
b3JkaW5hdG9yLT5sYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKTsKKyAgICBzZXROZWVkc1Zp
c2libGVSZWN0QWRqdXN0bWVudCgpOworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50
KCktPm5vdGlmeUZsdXNoUmVxdWlyZWQodGhpcyk7CiB9CiAKIEludFJlY3QgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpCkBAIC03MzcsMjgg
Kzc1MCwzMCBAQCBDb2xvciBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0
b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAogUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIHVpbnQzMl90JiBhdGxhcywgSW50UG9pbnQmIG9mZnNldCkKIHsKLSAgICBpZiAo
IW1fY29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4oKTsKLQorICAgIEFTU0VSVChtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMpOwor
ICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKICAgICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVn
aW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZh
Y2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBv
ZmZzZXQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1
aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikK
LSAgICAgICAgbV9jb29yZGluYXRvci0+Y3JlYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUlu
Zm8sIHRpbGVSZWN0KTsKKyAgICBBU1NFUlQobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKTsKKyAg
ICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgbV9jb29yZGluYXRvci0+Y3JlYXRlVGlsZShp
ZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0KIAogdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNl
VXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QpCiB7Ci0gICAg
aWYgKG1fY29vcmRpbmF0b3IpCi0gICAgICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0ZVRpbGUoaWQo
KSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisgICAgQVNTRVJUKG1faXNGbHVzaGlu
Z0xheWVyQ2hhbmdlcyk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1fY29vcmRp
bmF0b3ItPnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKHVpbnQzMl90IHRp
bGVJRCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+
cmVtb3ZlVGlsZShpZCgpLCB0aWxlSUQpOworICAgIEFTU0VSVChtX2lzRmx1c2hpbmdMYXllckNo
YW5nZXMpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT5y
ZW1vdmVUaWxlKGlkKCksIHRpbGVJRCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCkBAIC03NjksMTMgKzc4NCwyMiBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOworICAgIGlmIChtX3Bl
bmRpbmdDb250ZW50c1NjYWxlQWRqdXN0bWVudCkgeworICAgICAgICBhZGp1c3RDb250ZW50c1Nj
YWxlKCk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50ID0gZmFsc2U7
CisgICAgfQorCiAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3JlYXRlIHRo
ZSBtYWluIHRpbGVkIGJhY2tpbmcgc3RvcmUsIG9uY2Ugd2UKICAgICAvLyBoYXZlIGEgcmVtb3Rl
IGNsaWVudCBhbmQgd2UgYXJlIHJlYWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJIHByb2Nl
c3MuCiAgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUpCiAgICAgICAgIGNyZWF0ZUJhY2tpbmdT
dG9yZSgpOworCisgICAgaWYgKG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCkgeworICAg
ICAgICBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQgPSBmYWxzZTsKKyAgICAgICAgbV9t
YWluQmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgfQorCiAgICAg
bV9tYWluQmFja2luZ1N0b3JlLT51cGRhdGVUaWxlQnVmZmVycygpOwotICAgIG1faW5VcGRhdGVN
b2RlID0gZmFsc2U7CiAKICAgICAvLyBUaGUgcHJldmlvdXMgYmFja2luZyBzdG9yZSBpcyBrZXB0
IGFyb3VuZCB0byBhdm9pZCBmbGlja2VyaW5nIGJldHdlZW4KICAgICAvLyByZW1vdmluZyB0aGUg
ZXhpc3RpbmcgdGlsZXMgYW5kIHBhaW50aW5nIHRoZSBuZXcgb25lcy4gVGhlIGZpcnN0IHRpbWUK
QEAgLTc4Niw2ICs4MTAsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRl
Q29udGVudEJ1ZmZlcnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VC
YWNraW5nU3RvcmVzKCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJv
b2w+IHVwZGF0ZU1vZGVQcm90ZWN0b3IobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzLCB0cnVlKTsK
KyNlbmRpZgogICAgIG1fbWFpbkJhY2tpbmdTdG9yZS5jbGVhcigpOwogICAgIG1fcHJldmlvdXNC
YWNraW5nU3RvcmUuY2xlYXIoKTsKIApAQCAtNzk5LDEwICs4MjYsMTAgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2wKICAgICBtX2Nvb3JkaW5hdG9yID0gY29vcmRpbmF0b3I7CiB9CiAKLXZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RWaXNpYmxlUmVjdCgpCit2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKQogewot
ICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCi0gICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+
Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOworICAgIGlmIChzaG91bGRIYXZlQmFja2luZ1N0b3Jl
KCkpCisgICAgICAgIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCA9IHRydWU7CiB9CiAK
IGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMo
KQpAQCAtOTAzLDggKzkzMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21w
dXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3Jt
ID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKIAogICAgIC8vIFRoZSBj
b21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJs
ZVJlY3QuCi0gICAgYWRqdXN0VmlzaWJsZVJlY3QoKTsKLSAgICBhZGp1c3RDb250ZW50c1NjYWxl
KCk7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0KIAogc3RhdGljIFBh
c3NPd25QdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggMzIwZGMyNGUxNTExMGFiNWU3
MTEyN2Y0MDBiNTA5ZjY0YjliMmZmYi4uYTVmOTM1YTFmNTI1NDQ5ZGVlNTBlODM3M2ViZmYwYjMy
MzExNDFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKSA9IDA7
CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBD
b29yZGluYXRlZExheWVySW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyQ2hp
bGRyZW4oQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklE
PiYpID0gMDsKQEAgLTE0OSw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRp
bGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0
aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25z
dCBWZWN0b3I8SW50UmVjdD4mIHBhaW50ZWRBcmVhKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJv
b2wgdGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1Jl
Y3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVWaXNp
YmxlUmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVC
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklERTsKQEAgLTE2Miw3ICsxNjEsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CisgICAgdm9p
ZCBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHZvaWQgcHVyZ2VCYWNraW5n
U3RvcmVzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMoKTsKIApAQCAtMjE3
LDcgKzIxNiw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX2FkanVzdGVkUG9zaXRpb247
CiAgICAgRmxvYXRQb2ludDNEIG1fYWRqdXN0ZWRBbmNob3JQb2ludDsKIAotICAgIGJvb2wgbV9p
blVwZGF0ZU1vZGUgOiAxOworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIG1faXNGbHVzaGluZ0xh
eWVyQ2hhbmdlczsKKyNlbmRpZgogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVjdDog
MTsKICAgICBib29sIG1fc2hvdWxkU3luY0xheWVyU3RhdGU6IDE7CiAgICAgYm9vbCBtX3Nob3Vs
ZFN5bmNDaGlsZHJlbjogMTsKQEAgLTIyOCw2ICsyMjksOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9jYW52YXNOZWVkc0Rpc3BsYXkgOiAxOwogICAgIGJvb2wgbV9jYW52YXNOZWVkc0NyZWF0ZSA6
IDE7CiAgICAgYm9vbCBtX2NhbnZhc05lZWRzRGVzdHJveSA6IDE7CisgICAgYm9vbCBtX3BlbmRp
bmdDb250ZW50c1NjYWxlQWRqdXN0bWVudCA6IDE7CisgICAgYm9vbCBtX3BlbmRpbmdWaXNpYmxl
UmVjdEFkanVzdG1lbnQgOiAxOwogCiAgICAgV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJDbGllbnQqIG1fY29vcmRpbmF0b3I7CiAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBt
X21haW5CYWNraW5nU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA5ZjQ0ZWJmYzEwY2JhOWY3Yzc2Zjg2
MTgxN2FlYzJmN2NkNzhkNTRiLi5iMzI5ZDA5YWIxNjk5ZTQzOWVmMWNkY2Q1MTkzMTQ3MDZjMTA0
YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTYxNCw2ICs2MTQsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0xheQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bm90aWZ5Rmx1c2hSZXF1aXJl
ZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikKIHsKKyAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCkKQEAgLTYzNyw3ICs2
MzgsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljcwogICAgIGxheWVyLT5zZXRDb29yZGluYXRv
cih0aGlzKTsKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyKTsKICAgICBsYXllci0+
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOwotICAgIGxheWVyLT5hZGp1c3RWaXNp
YmxlUmVjdCgpOworICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwog
ICAgIHJldHVybiBhZG9wdFB0cihsYXllcik7CiB9CiAKQEAgLTcxOSw3ICs3MjAsNyBAQCB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGZsbwogICAgICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGVEaWRDaGFu
Z2UpCiAgICAgICAgICAgICAgICAgKCppdCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOwogICAg
ICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkKLSAgICAgICAgICAgICAgICAoKml0
KS0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICAgICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNW
aXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzU5LDExICs3
NjAsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKCkK
ICAgICAgICAgbV91cGRhdGVBdGxhc2VzW2ldLT5kaWRTd2FwQnVmZmVycygpOwogfQogCi1ib29s
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ0ZvclVJUHJv
Y2VzczsKLX0KLQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0
b3JlcygpCiB7CiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHB1cmdpbmdUb2dnbGUobV9pc1B1
cmdpbmcsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaAppbmRleCAwYzY4YmI1MWUxN2Y0YjM4MDE5ZDRkNzg5NmI2MGRl
NDUwNTM4ZWFhLi45OTI1NzU2ODYyYmFlMDY4YzZlNmU0NDM2MTU1YmYyYWMxZDk2MjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuaApAQCAtODUsNyArODUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5k
ZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0g
ICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhp
Y3NMYXllckZhY3RvcnkoKSBPVkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178997</attachid>
            <date>2012-12-12 01:35:52 -0800</date>
            <delta_ts>2012-12-13 00:46:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121212183307.patch</filename>
            <type>text/plain</type>
            <size>27562</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFiZDBmODQxMzdkMTBk
NThkODExYjNmZmVlOWMzYzcyMTI1ODBlNy4uYjQ5ZWExYjk1ZGI2YjBjZGFkOTg3NDM1MDZlYjZk
Mzk1ZDUxZGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTExICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgorCisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRUaWxlVXBk
YXRlc09uSWRsZUV2ZW50TG9vcCgpIGlzIHVzZWQgd2hlbiBjbGFzcworICAgICAgICBtZXRob2Rz
IGNhbm5vdCBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgY2xpZW50LiBVcGRhdGVzIG9mIHRp
bGVzIGFyZQorICAgICAgICBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBl
dmVudCBxdWV1ZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgICAgICBBZnRlciB0aGlzIHBhdGNo
IEZyYW1lIHNldHMgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCB0byB0cnVlLgor
CisgICAgICAgIEluIGFkZGl0aW9uLCByZW1vdmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRp
bGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKQorICAgICAgICB3aGljaCB3YXMgaW50cm9k
dWNlZCBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAg
ICAgICBTZXBhcmF0ZSBzZXR0aW5nIGEgdHJhamVjdG9yeSB2ZWN0b3IgZnJvbSBjb3ZlcldpdGhU
aWxlc0lmTmVlZGVkKCkuCisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y292
ZXJXaXRoVGlsZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9y
ZTo6dXBkYXRlVGlsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpp
c1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5n
U3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKToKKyAgICAgICAgICAgIElmIFRpbGVkQmFja2lu
Z1N0b3JlIGRvZXMgbm90IGNyZWF0ZSBhbGwgdGlsZXMsIFRpbGVkQmFja2luZ1N0b3JlCisgICAg
ICAgICAgICBub3RpZmllcyBhIGNsaWVudCBvZiBuZWVkaW5nIHRvIGNyZWF0ZSB0aWxlcyBtb3Jl
LCB3aGVuCisgICAgICAgICAgICBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIGlz
IGZhbHNlLgorCiAyMDEyLTEyLTExICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+
CiAKICAgICAgICAgSW1wbGVtZW50IE9mZmxpbmVBdWRpb0NvbnRleHQgY29uc3RydWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBkYWIxZDVmMzBiZjUzMDk0MzY2ZDQwZDUzNGI2MGQ4YTNkMWJmNzE2Li5lN2Mw
YTJlZGRiNzViNWYwOTcxYjg2YzNlOWU3MjUxNzgwZTZhMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDcgQEAKKzIwMTItMTItMTEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFj
a2luZ1N0b3JlIGNvZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgQ3VycmVudGx5
LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFzIGNvbXBsZXggY29kZSByZWxhdGVkIHRvIFRp
bGVkQmFja2luZ1N0b3JlLgorICAgICAgICBJdCBoYXMgdHdvIHByb2JsZW0uCisgICAgICAgIDEu
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBoYWNrcyBUaWxlZEJhY2tpbmdTdG9yZSB0byBwcmV2
ZW50CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlIGZyb20gYXN5bmNocm9ub3VzbHkgc2VuZGlu
ZyBVcGRhdGVUaWxlIG1lc3NhZ2UgdG8gVUkKKyAgICAgICAgUHJvY2Vzcy4KKyAgICAgICAgMi4g
Q3JlYXRlVGlsZSBhbmQgUmVtb3ZlVGlsZSBtZXNzYWdlIGNhbiBiZSBzZW50IHRvIFVJIFByb2Nl
c3MgYXQgYW55IHRpbWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIgdXNlIFRpbGVkQmFja2luZ1N0b3JlIG1vcmUgZXhwbGljaXRseS4KKyAgICAg
ICAgSXQgbWVhbnMgb25seSBkdXJpbmcgZmx1c2hpbmcgbGF5ZXIgc3RhdGVzLCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgY2FsbHMgbWV0aG9kcyBvZiBUaWxlZEJhY2tpbmdTdG9y
ZSwgd2hpY2ggaW5kaXJlY3RseSBjYWxsIGNyZWF0ZVRpbGUoKSwKKyAgICAgICAgdXBkYXRlVGls
ZSgpIGFuZCByZW1vdmVUaWxlKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjph
ZGp1c3RDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVU
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRl
Q29udGVudEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2li
bGVSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorCiAyMDEy
LTEyLTExICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMjg1Nzg3MD4gW1dLMiBOZXR3b3JrUHJvY2Vzc10gQ2Fubm90IGxvYWQg
SFRUUFMgc2l0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggM2Q1MjBmOGZlNGEyOTljOWFjMGU0
ZGQ3ZTEzOThlMjk0NWE5YjY0OS4uNzQ3YzRmNDY4ZTNmZDE2OTdhMzAyOWEzYzM0MGE0ZmYwMTQ4
OTExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgxOCw2ICs4MTgsNyBAQCB2b2lkIEZyYW1l
OjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGlmIChtX3Rp
bGVkQmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxlZEJhY2tpbmdTdG9y
ZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7CisgICAgbV90aWxlZEJh
Y2tpbmdTdG9yZS0+c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AodHJ1ZSk7CiAg
ICAgaWYgKG1fdmlldykKICAgICAgICAgbV92aWV3LT5zZXRQYWludHNFbnRpcmVDb250ZW50cyh0
cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA5YTM3YTk2ZmFiMmViNjdhMjUxNzM1ZWY5ZGVjMGZh
OGY4YjRmMmE4Li5hNTc0YjIwMjlhNWIwNjg4OWMwNTZiYTAyZDRkNzQ3YmI3YzMwODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5n
U3RvcmUuY3BwCkBAIC00MSwxMiArNDEsMTMgQEAgVGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHIKICAg
ICAsIG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6dGls
ZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVy
KHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZCkK
ICAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVEaW1lbnNpb24sIGRlZmF1bHRUaWxlRGltZW5z
aW9uKQotICAgICwgbV90aWxlQ3JlYXRpb25EZWxheSgwLjAxKQogICAgICwgbV9jb3ZlckFyZWFN
dWx0aXBsaWVyKDIuMGYpCiAgICAgLCBtX2NvbnRlbnRzU2NhbGUoMS5mKQogICAgICwgbV9wZW5k
aW5nU2NhbGUoMCkKKyAgICAsIG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AoZmFs
c2UpCiAgICAgLCBtX2NvbnRlbnRzRnJvemVuKGZhbHNlKQogICAgICwgbV9zdXBwb3J0c0FscGhh
KGZhbHNlKQorICAgICwgbV9wZW5kaW5nVGlsZUNyZWF0aW9uKGZhbHNlKQogewogfQogCkBAIC02
MSwyNiArNjIsMjAgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0VGlsZVNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCk7CiB9CiAK
LXZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxh
eSkKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxv
YXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBtX3RpbGVDcmVhdGlvbkRlbGF5ID0g
ZGVsYXk7CisgICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7
CisgICAgbV9wZW5kaW5nVHJhamVjdG9yeVZlY3Rvci5ub3JtYWxpemUoKTsKIH0KIAotdm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50
JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGls
ZXNJZk5lZWRlZCgpCiB7CiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVS
ZWN0KCk7CiAgICAgSW50UmVjdCByZWN0ID0gbWFwRnJvbUNvbnRlbnRzKG1fY2xpZW50LT50aWxl
ZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKIAotICAgIEZsb2F0UG9pbnQgbm9ybWFsaXpl
ZFZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7Ci0gICAgbm9ybWFsaXplZFZlY3Rvci5ub3JtYWxp
emUoKTsKLQotICAgIGlmIChtX3RyYWplY3RvcnlWZWN0b3IgPT0gbm9ybWFsaXplZFZlY3RvciAm
JiBtX3Zpc2libGVSZWN0ID09IHZpc2libGVSZWN0ICYmIG1fcmVjdCA9PSByZWN0KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3RyYWplY3RvcnlWZWN0b3IgPSBub3JtYWxpemVkVmVjdG9yOwot
ICAgIG1fdmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdDsKLQotICAgIGNyZWF0ZVRpbGVzKCk7Cisg
ICAgYm9vbCBkaWRDaGFuZ2UgPSBtX3RyYWplY3RvcnlWZWN0b3IgIT0gbV9wZW5kaW5nVHJhamVj
dG9yeVZlY3RvciB8fCBtX3Zpc2libGVSZWN0ICE9IHZpc2libGVSZWN0IHx8IG1fcmVjdCAhPSBy
ZWN0OworICAgIGlmIChkaWRDaGFuZ2UgfHwgbV9wZW5kaW5nVGlsZUNyZWF0aW9uKQorICAgICAg
ICBjcmVhdGVUaWxlcygpOwogfQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRzRGlydHlSZWN0KQpAQCAtMTA4LDcgKzEwMyw3IEBAIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudHNE
aXJ0eVJlY3QpCiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkK
IHsKLSAgICBpZiAoIW1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkg
fHwgbV9jb250ZW50c0Zyb3plbikKKyAgICBpZiAobV9jb250ZW50c0Zyb3plbikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpOwpA
QCAtMjQ1LDYgKzI0MCw4IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkK
ICAgICAvLyBVcGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgZ2VvbWV0cnkuCiAgICAgY29uc3QgSW50
UmVjdCBwcmV2aW91c1JlY3QgPSBtX3JlY3Q7CiAgICAgbV9yZWN0ID0gbWFwRnJvbUNvbnRlbnRz
KG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKKyAgICBtX3RyYWpl
Y3RvcnlWZWN0b3IgPSBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yOworICAgIG1fdmlzaWJsZVJl
Y3QgPSB2aXNpYmxlUmVjdCgpOwogCiAgICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgc2V0Q292ZXJSZWN0KEludFJlY3QoKSk7CkBAIC0yNzMsMTIgKzI3MCw5IEBAIHZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKCkKICAgICAgKiBXZSBtdXN0IGNyZWF0ZSBvciBr
ZWVwIHRoZSB0aWxlcyBpbiB0aGUgSEVSRSByZWdpb24uCiAgICAgICovCiAKLSAgICBjb25zdCBJ
bnRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJlY3QoKTsKLSAgICBtX3Zpc2libGVS
ZWN0ID0gdmlzaWJsZVJlY3Q7Ci0KICAgICBJbnRSZWN0IGNvdmVyUmVjdDsKICAgICBJbnRSZWN0
IGtlZXBSZWN0OwotICAgIGNvbXB1dGVDb3ZlckFuZEtlZXBSZWN0KHZpc2libGVSZWN0LCBjb3Zl
clJlY3QsIGtlZXBSZWN0KTsKKyAgICBjb21wdXRlQ292ZXJBbmRLZWVwUmVjdChtX3Zpc2libGVS
ZWN0LCBjb3ZlclJlY3QsIGtlZXBSZWN0KTsKIAogICAgIHNldENvdmVyUmVjdChjb3ZlclJlY3Qp
OwogICAgIHNldEtlZXBSZWN0KGtlZXBSZWN0KTsKQEAgLTMwOSw3ICszMDMsNyBAQCB2b2lkIFRp
bGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICAgICAgICBpZiAodGlsZUF0KGN1
cnJlbnRDb29yZGluYXRlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICsrcmVxdWlyZWRUaWxlQ291bnQ7Ci0gICAgICAgICAgICBkb3VibGUgZGlzdGFuY2UgPSB0aWxl
RGlzdGFuY2UodmlzaWJsZVJlY3QsIGN1cnJlbnRDb29yZGluYXRlKTsKKyAgICAgICAgICAgIGRv
dWJsZSBkaXN0YW5jZSA9IHRpbGVEaXN0YW5jZShtX3Zpc2libGVSZWN0LCBjdXJyZW50Q29vcmRp
bmF0ZSk7CiAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiBzaG9ydGVzdERpc3RhbmNlKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgc2hvcnRl
c3REaXN0YW5jZSkgewpAQCAtMzMzLDggKzMyNywxNiBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGVUaWxlcygpCiAgICAgICAgIHVwZGF0ZVRpbGVCdWZmZXJzKCk7CiAKICAgICAvLyBS
ZS1jYWxsIGNyZWF0ZVRpbGVzIG9uIGEgdGltZXIgdG8gY292ZXIgdGhlIHZpc2libGUgYXJlYSB3
aXRoIHRoZSBuZXdlc3Qgc2hvcnRlc3QgZGlzdGFuY2UuCi0gICAgaWYgKHJlcXVpcmVkVGlsZUNv
dW50KQotICAgICAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChtX3Rp
bGVDcmVhdGlvbkRlbGF5KTsKKyAgICBtX3BlbmRpbmdUaWxlQ3JlYXRpb24gPSByZXF1aXJlZFRp
bGVDb3VudDsKKyAgICBpZiAobV9wZW5kaW5nVGlsZUNyZWF0aW9uKSB7CisgICAgICAgIGlmICgh
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkgeworICAgICAgICAgICAgbV9jbGll
bnQtPnRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0aWxl
Q3JlYXRpb25EZWxheSA9IDAuMDE7CisgICAgICAgIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIodGlsZUNyZWF0aW9uRGVsYXkpOworICAgIH0KIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9y
ZTo6YWRqdXN0Rm9yQ29udGVudHNSZWN0KEludFJlY3QmIHJlY3QpIGNvbnN0CkBAIC00MjMsNyAr
NDI1LDcgQEAgYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNCYWNraW5nU3RvcmVVcGRhdGVzU3Vz
cGVuZGVkKCkgY29uc3QKIAogYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6aXNUaWxlQnVmZmVyVXBk
YXRlc1N1c3BlbmRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudHNGcm96ZW4gfHwg
IW1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAgcmV0dXJu
IG1fY29udGVudHNGcm96ZW47CiB9CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVk
Z2VUaWxlcygpCkBAIC01MjYsNiArNTI4LDkgQEAgVGlsZTo6Q29vcmRpbmF0ZSBUaWxlZEJhY2tp
bmdTdG9yZTo6dGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQKIAog
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogewor
ICAgIGlmICghbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKG1fdGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkgfHwgaXNU
aWxlQnVmZmVyVXBkYXRlc1N1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV90aWxl
QnVmZmVyVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDApOwpAQCAtNTMzLDE4ICs1MzgsMjMgQEAg
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKQogCiB2
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQnVmZmVyVXBkYXRlVGltZXJGaXJlZChUaW1lcjxU
aWxlZEJhY2tpbmdTdG9yZT4qKQogeworICAgIEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25J
ZGxlRXZlbnRMb29wKTsKICAgICB1cGRhdGVUaWxlQnVmZmVycygpOwogfQogCi12b2lkIFRpbGVk
QmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKCkKK3ZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlIGludGVydmFs
KQogeworICAgIGlmICghbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuaXNBY3RpdmUo
KSB8fCBpc0JhY2tpbmdTdG9yZVVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fYmFj
a2luZ1N0b3JlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKIH0KIAogdm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxl
ZEJhY2tpbmdTdG9yZT4qKQogeworICAgIEFTU0VSVChtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxl
RXZlbnRMb29wKTsKICAgICBjcmVhdGVUaWxlcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCAwODJiZTcw
YzhlYjI3NTE3OTBiN2FiODc3NTY5NDliYWM4MWE2ZDI4Li40NjA2NTRhZDJhZDhmZDMzM2Q1YmNk
MDU1NjI3M2M4OTQxMWI3NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoK
IAogICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVu
dDsgfQogCi0gICAgdm9pZCBjb3ZlcldpdGhUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQm
IHBhbm5pbmdUcmFqZWN0b3J5VmVjdG9yID0gRmxvYXRQb2ludCgpKTsKKyAgICAvLyBVc2VkIHdo
ZW4gY2xhc3MgbWV0aG9kcyBjYW5ub3QgYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IGNsaWVu
dC4KKyAgICAvLyBVcGRhdGVzIG9mIHRpbGVzIGFyZSBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwg
dGhlIGV2ZW50cyBpbiBldmVudCBxdWV1ZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgIHZvaWQg
c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AoYm9vbCBlbmFibGUpIHsgbV9jb21t
aXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCA9IGVuYWJsZTsgfQorCisgICAgdm9pZCBzZXRU
cmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2b2lkIGNvdmVyV2l0aFRp
bGVzSWZOZWVkZWQoKTsKIAogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2Nv
bnRlbnRzU2NhbGU7IH0KICAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwpAQCAtNjIs
OSArNjcsNiBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIG1fdGls
ZVNpemU7IH0KICAgICB2b2lkIHNldFRpbGVTaXplKGNvbnN0IEludFNpemUmKTsKIAotICAgIGRv
dWJsZSB0aWxlQ3JlYXRpb25EZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUNyZWF0aW9uRGVs
YXk7IH0KLSAgICB2b2lkIHNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSk7Ci0KICAg
ICBJbnRSZWN0IG1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEludFJl
Y3QgbWFwRnJvbUNvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKIApAQCAtODEsNyArODMs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFRpbGVCdWZmZXJVcGRhdGVU
aW1lcigpOwotICAgIHZvaWQgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpOworICAgIHZv
aWQgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcihkb3VibGUgPSAwKTsKIAogICAgIHZvaWQg
dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRCYWNraW5nU3RvcmU+Kik7CiAg
ICAgdm9pZCBiYWNraW5nU3RvcmVVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0
b3JlPiopOwpAQCAtMTIwLDEwICsxMjIsMTAgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxUaWxlZEJh
Y2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcjsKIAogICAgIEludFNpemUgbV90
aWxlU2l6ZTsKLSAgICBkb3VibGUgbV90aWxlQ3JlYXRpb25EZWxheTsKICAgICBmbG9hdCBtX2Nv
dmVyQXJlYU11bHRpcGxpZXI7CiAKICAgICBGbG9hdFBvaW50IG1fdHJhamVjdG9yeVZlY3RvcjsK
KyAgICBGbG9hdFBvaW50IG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3I7CiAgICAgSW50UmVjdCBt
X3Zpc2libGVSZWN0OwogCiAgICAgSW50UmVjdCBtX2NvdmVyUmVjdDsKQEAgLTEzMyw4ICsxMzUs
MTAgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAgICAgZmxvYXQgbV9w
ZW5kaW5nU2NhbGU7CiAKKyAgICBib29sIG1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExv
b3A7CiAgICAgYm9vbCBtX2NvbnRlbnRzRnJvemVuOwogICAgIGJvb2wgbV9zdXBwb3J0c0FscGhh
OworICAgIGJvb2wgbV9wZW5kaW5nVGlsZUNyZWF0aW9uOwogCiAgICAgZnJpZW5kIGNsYXNzIFRp
bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKaW5kZXggMGUwMjE0Nzc3MzMwZTI1ZjFmYzg0Mzg3
MWY0NWE1YTA5OGY5Y2QxZC4uZWI5YTdkOTMyNzI0MTUxY2NlNDc1NzY5NjdlMmQ0MWQzZTVkM2Ux
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQo
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRp
b24oKSB7IH0KICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1Jl
Y3QoKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJl
Y3QoKSA9IDA7CiAgICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRD
b2xvcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGIzYmU4NDAzZTMwMTAyOTdlODFkMzUx
OTc2Mzc1NmM3OWJhMzkzYmIuLmZkYzVhMGJjYzg2MDYwNmUzOGYyNzI0M2U0N2Q3YTgxMzc3MWFk
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcApAQCAtMzgsNiArMzgsOSBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CisjZW5kaWYK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CkBAIC0xMDksNyArMTEyLDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRpZENo
YW5nZUdlb21ldHJ5KCkKIAogQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgIDogR3JhcGhpY3NM
YXllcihjbGllbnQpCi0gICAgLCBtX2luVXBkYXRlTW9kZShmYWxzZSkKKyNpZm5kZWYgTkRFQlVH
CisgICAgLCBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMoZmFsc2UpCisjZW5kaWYKICAgICAsIG1f
c2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QodHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0xheWVyU3Rh
dGUodHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0NoaWxkcmVuKHRydWUpCkBAIC0xMjAsNiArMTI1
LDggQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXko
ZmFsc2UpCiAgICAgLCBtX2NhbnZhc05lZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNO
ZWVkc0Rlc3Ryb3koZmFsc2UpCisgICAgLCBtX3BlbmRpbmdDb250ZW50c1NjYWxlQWRqdXN0bWVu
dChmYWxzZSkKKyAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxzZSkKICAg
ICAsIG1fY29vcmRpbmF0b3IoMCkKICAgICAsIG1fY29udGVudHNTY2FsZSgxKQogICAgICwgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKQEAgLTU5NSw2ICs2MDIsMTAgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZUNhbnZhc0lmTmVlZGVkKCkKIAogdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQoIW1faXNGbHVzaGluZ0xheWVyQ2hh
bmdlcyk7CisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3RlY3RvcihtX2lzRmx1c2hpbmdM
YXllckNoYW5nZXMsIHRydWUpOworI2VuZGlmCiAgICAgLy8gU2V0cyB0aGUgdmFsdWVzLgogICAg
IGNvbXB1dGVQaXhlbEFsaWdubWVudChtX2FkanVzdGVkUG9zaXRpb24sIG1fYWRqdXN0ZWRTaXpl
LCBtX2FkanVzdGVkQW5jaG9yUG9pbnQsIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQpOwogCkBAIC02
MzksMTQgKzY1MCwxOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Um9vdExh
eWVyKGJvb2wgaXNSb290KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Vmlz
aWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0
b3J5VmVjdG9yKQogewotICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCi0gICAgICAgIG1fbWFp
bkJhY2tpbmdTdG9yZS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCh0cmFqZWN0b3J5VmVjdG9yKTsK
KyAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9t
YWluQmFja2luZ1N0b3JlLT5zZXRUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3IpOwor
ICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogewogICAgIG1f
Y29udGVudHNTY2FsZSA9IHNjYWxlOwotICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICBp
ZiAoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQorICAgICAgICBtX3BlbmRpbmdDb250ZW50c1Nj
YWxlQWRqdXN0bWVudCA9IHRydWU7CiB9CiAKIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCkBAIC02NTYsOSArNjcxLDcgQEAgZmxvYXQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUoKQogewotICAgIGlm
ICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NF
UlQoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKTsKICAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9y
ZSB8fCBtX21haW5CYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSA9PSBlZmZlY3RpdmVDb250
ZW50c1NjYWxlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjkwLDExICs3MDMsMTEgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29u
c3QgVmVjdG9yPEludFJlY3Q+JgogewogfQogCi1ib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0Cit2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9u
KCkKIHsKLSAgICBpZiAoIW1faW5VcGRhdGVNb2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpOwor
ICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CisgICAgaWYgKGNsaWVudCgpKQor
ICAgICAgICBjbGllbnQoKS0+bm90aWZ5Rmx1c2hSZXF1aXJlZCh0aGlzKTsKIH0KIAogSW50UmVj
dCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0
KCkKQEAgLTczNywyOCArNzUwLDMwIEBAIENvbG9yIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogCiBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0
KQogewotICAgIGlmICghbV9jb29yZGluYXRvcikKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigpOwotCisgICAgQVNTRVJUKG1faXNGbHVzaGluZ0xh
eWVyQ2hhbmdlcyk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOwogICAgIHJldHVybiBtX2Nv
b3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUoKSA/IENv
b3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFncyA6IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNB
bHBoYSwgYXRsYXMsIG9mZnNldCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVw
ZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQogewotICAgIGlmICht
X2Nvb3JkaW5hdG9yKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVUaWxlKGlkKCksIHRp
bGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOworICAgIEFTU0VSVChtX2lzRmx1c2hpbmdMYXll
ckNoYW5nZXMpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9y
LT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbywgdGlsZVJlY3QpOwogfQogCiB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQs
IGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0aWxl
UmVjdCkKIHsKLSAgICBpZiAobV9jb29yZGluYXRvcikKLSAgICAgICAgbV9jb29yZGluYXRvci0+
dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKKyAgICBBU1NF
UlQobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7
CisgICAgbV9jb29yZGluYXRvci0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8s
IHRpbGVSZWN0KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRp
bGUodWludDMyX3QgdGlsZUlEKQogewotICAgIGlmIChtX2Nvb3JkaW5hdG9yKQotICAgICAgICBt
X2Nvb3JkaW5hdG9yLT5yZW1vdmVUaWxlKGlkKCksIHRpbGVJRCk7CisgICAgQVNTRVJUKG1faXNG
bHVzaGluZ0xheWVyQ2hhbmdlcyk7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIG1f
Y29vcmRpbmF0b3ItPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKIH0KIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKQEAgLTc2OSwxMyArNzg0
LDIyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVy
cygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luVXBkYXRlTW9kZSA9IHRydWU7
CisgICAgaWYgKG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50KSB7CisgICAgICAgIGFk
anVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVz
dG1lbnQgPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHdl
IChyZSljcmVhdGUgdGhlIG1haW4gdGlsZWQgYmFja2luZyBzdG9yZSwgb25jZSB3ZQogICAgIC8v
IGhhdmUgYSByZW1vdGUgY2xpZW50IGFuZCB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBvdXIgZGF0YSB0
byB0aGUgVUkgcHJvY2Vzcy4KICAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkKICAgICAgICAg
Y3JlYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBpZiAobV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1
c3RtZW50KSB7CisgICAgICAgIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCA9IGZhbHNl
OworICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsK
KyAgICB9CisKICAgICBtX21haW5CYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGVCdWZmZXJzKCk7Ci0g
ICAgbV9pblVwZGF0ZU1vZGUgPSBmYWxzZTsKIAogICAgIC8vIFRoZSBwcmV2aW91cyBiYWNraW5n
IHN0b3JlIGlzIGtlcHQgYXJvdW5kIHRvIGF2b2lkIGZsaWNrZXJpbmcgYmV0d2VlbgogICAgIC8v
IHJlbW92aW5nIHRoZSBleGlzdGluZyB0aWxlcyBhbmQgcGFpbnRpbmcgdGhlIG5ldyBvbmVzLiBU
aGUgZmlyc3QgdGltZQpAQCAtNzg2LDYgKzgxMCw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBUZW1w
b3JhcnlDaGFuZ2U8Ym9vbD4gcHJvdGVjdG9yKG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcywgdHJ1
ZSk7CisjZW5kaWYKICAgICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICBtX3ByZXZp
b3VzQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAKQEAgLTc5OSwxMCArODI2LDEwIEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllckNsCiAgICAgbV9jb29yZGluYXRvciA9IGNvb3JkaW5hdG9yOwogfQogCi12
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0VmlzaWJsZVJlY3QoKQordm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCkK
IHsKLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21haW5CYWNraW5nU3Rv
cmUtPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKKyAgICBpZiAoc2hvdWxkSGF2ZUJhY2tpbmdT
dG9yZSgpKQorICAgICAgICBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQgPSB0cnVlOwog
fQogCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aGFzUGVuZGluZ1Zpc2libGVDaGFu
Z2VzKCkKQEAgLTkwMyw4ICs5MzAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5z
Zm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCk7CiAKICAgICAvLyBU
aGUgY29tYmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZp
c2libGVSZWN0LgotICAgIGFkanVzdFZpc2libGVSZWN0KCk7Ci0gICAgYWRqdXN0Q29udGVudHNT
Y2FsZSgpOworICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiB9CiAKIHN0YXRp
YyBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDMyMGRjMjRlMTUxMTBh
YjVlNzExMjdmNDAwYjUwOWY2NGI5YjJmZmIuLmE1ZjkzNWExZjUyNTQ0OWRlZTUwZTgzNzNlYmZm
MGIzMjMxMTQxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCkg
PSAwOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVj
dCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxv
d2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdl
QmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29u
c3QgQ29vcmRpbmF0ZWRMYXllckluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXll
ckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5
ZXJJRD4mKSA9IDA7CkBAIC0xNDksNyArMTQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQo
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJlYSkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIHRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9u
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29udGVu
dHNSZWN0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3Jl
VmlzaWJsZVJlY3QoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIENvbG9yIHRpbGVkQmFja2luZ1N0
b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0xNjIsNyArMTYxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRDb29yZGluYXRvcihXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllckNsaWVudCopOwogCi0gICAgdm9pZCBhZGp1c3RWaXNpYmxlUmVjdCgpOworICAg
IHZvaWQgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICB2b2lkIHB1cmdlQmFj
a2luZ1N0b3JlcygpOwogICAgIGJvb2wgaGFzUGVuZGluZ1Zpc2libGVDaGFuZ2VzKCk7CiAKQEAg
LTIxNyw3ICsyMTYsOSBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9hZGp1c3RlZFBvc2l0
aW9uOwogICAgIEZsb2F0UG9pbnQzRCBtX2FkanVzdGVkQW5jaG9yUG9pbnQ7CiAKLSAgICBib29s
IG1faW5VcGRhdGVNb2RlIDogMTsKKyNpZm5kZWYgTkRFQlVHCisgICAgYm9vbCBtX2lzRmx1c2hp
bmdMYXllckNoYW5nZXM7CisjZW5kaWYKICAgICBib29sIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJl
Y3Q6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNMYXllclN0YXRlOiAxOwogICAgIGJvb2wgbV9z
aG91bGRTeW5jQ2hpbGRyZW46IDE7CkBAIC0yMjgsNiArMjI5LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fY2FudmFzTmVlZHNEaXNwbGF5IDogMTsKICAgICBib29sIG1fY2FudmFzTmVlZHNDcmVh
dGUgOiAxOwogICAgIGJvb2wgbV9jYW52YXNOZWVkc0Rlc3Ryb3kgOiAxOworICAgIGJvb2wgbV9w
ZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQgOiAxOworICAgIGJvb2wgbV9wZW5kaW5nVmlz
aWJsZVJlY3RBZGp1c3RtZW50IDogMTsKIAogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9y
ZT4gbV9tYWluQmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggOWY0NGViZmMxMGNiYTlmN2M3
NmY4NjE4MTdhZWMyZjdjZDc4ZDU0Yi4uYjMyOWQwOWFiMTY5OWU0MzllZjFjZGNkNTE5MzE0NzA2
YzEwNGMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC02MTQsNiArNjE0LDcgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NMYXkKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om5vdGlmeUZsdXNoUmVx
dWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiB7CisgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWludENvbnRl
bnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
UGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpCkBAIC02Mzcs
NyArNjM4LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAgICBsYXllci0+c2V0Q29vcmRp
bmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CiAgICAgbGF5
ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKLSAgICBsYXllci0+YWRqdXN0
VmlzaWJsZVJlY3QoKTsKKyAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQo
KTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQogCkBAIC03MTksNyArNzIwLDcgQEAg
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBmbG8KICAgICAgICAgICAgIGlmIChjb250ZW50c1NjYWxlRGlk
Q2hhbmdlKQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsK
ICAgICAgICAgICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAg
KCppdCktPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgICAgICAgICAgICAgKCppdCktPnNldE5l
ZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc1OSwx
MSArNzYwLDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFt
ZSgpCiAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlkU3dhcEJ1ZmZlcnMoKTsKIH0KIAot
Ym9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2lzU3VzcGVuZGVkICYmICFtX3dhaXRpbmdGb3JV
SVByb2Nlc3M7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tp
bmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBwdXJnaW5nVG9nZ2xlKG1f
aXNQdXJnaW5nLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggMGM2OGJiNTFlMTdmNGIzODAxOWQ0ZDc4OTZi
NjBkZTQ1MDUzOGVhYS4uOTkyNTc1Njg2MmJhZTA2OGM2ZTZlNDQzNjE1NWJmMmFjMWQ5NjIzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmgKQEAgLTg1LDcgKzg1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6
RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3Jlcygp
OwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdy
YXBoaWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179223</attachid>
            <date>2012-12-13 00:47:08 -0800</date>
            <delta_ts>2012-12-17 16:35:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121213174416.patch</filename>
            <type>text/plain</type>
            <size>26662</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFiZDBmODQxMzdkMTBk
NThkODExYjNmZmVlOWMzYzcyMTI1ODBlNy4uOGFjNzU1N2QyNjkzZDg5MDE3ZDRmNTVlYjAxMzEy
MTM4NjU5ZjkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTEzICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRUaWxlVXBkYXRlc09uSWRsZUV2
ZW50TG9vcCgpIGlzIHVzZWQgd2hlbiBjbGFzcworICAgICAgICBtZXRob2RzIGNhbm5vdCBiZSBj
YWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgY2xpZW50LiBVcGRhdGVzIG9mIHRpbGVzIGFyZQorICAg
ICAgICBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBldmVudCBxdWV1ZSBo
YXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgICAgICBBZnRlciB0aGlzIHBhdGNoIEZyYW1lIHNldHMg
bV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCB0byB0cnVlLgorCisgICAgICAgIElu
IGFkZGl0aW9uLCByZW1vdmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRpbGVkQmFja2luZ1N0
b3JlVXBkYXRlc0FsbG93ZWQoKQorICAgICAgICB3aGljaCB3YXMgaW50cm9kdWNlZCBmb3IgQ29v
cmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnNldFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgICBTZXBhcmF0
ZSBzZXR0aW5nIGEgdHJhamVjdG9yeSB2ZWN0b3IgZnJvbSBjb3ZlcldpdGhUaWxlc0lmTmVlZGVk
KCkuCisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y292ZXJXaXRoVGlsZXNJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRp
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjppc1RpbGVCdWZmZXJV
cGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpz
dGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmly
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5k
aW5nVGlsZUNyZWF0aW9uKToKKyAgICAgICAgICAgIElmIFRpbGVkQmFja2luZ1N0b3JlIGRvZXMg
bm90IGNyZWF0ZSBhbGwgdGlsZXMsIFRpbGVkQmFja2luZ1N0b3JlCisgICAgICAgICAgICBub3Rp
ZmllcyBhIGNsaWVudCBvZiBuZWVkaW5nIHRvIGNyZWF0ZSB0aWxlcyBtb3JlLCB3aGVuCisgICAg
ICAgICAgICBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIGlzIGZhbHNlLgorCiAy
MDEyLTEyLTExICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IE9mZmxpbmVBdWRpb0NvbnRleHQgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBl
NGMwZDAxMzAzNTBhNTk4ZjM2Mzg4Y2RkMGM0M2E2NDk3ZmM2M2UyLi4zMjYwNTllOWNlODMyMGFl
NGUyMTZjMDg3YmQ2ZmJhNWY2NThmNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIw
MTItMTItMTMgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAg
ICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlZmFjdG9yIFRpbGVkQmFja2luZ1N0b3JlIGNv
ZGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIgaGFzIGNvbXBsZXggY29kZSByZWxhdGVkIHRvIFRpbGVkQmFja2luZ1N0b3JlLgorICAgICAg
ICBJdCBoYXMgdHdvIHByb2JsZW0uCisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ciBoYWNrcyBUaWxlZEJhY2tpbmdTdG9yZSB0byBwcmV2ZW50CisgICAgICAgIFRpbGVkQmFja2lu
Z1N0b3JlIGZyb20gYXN5bmNocm9ub3VzbHkgc2VuZGluZyBVcGRhdGVUaWxlIG1lc3NhZ2UgdG8g
VUkKKyAgICAgICAgUHJvY2Vzcy4KKyAgICAgICAgMi4gQ3JlYXRlVGlsZSBhbmQgUmVtb3ZlVGls
ZSBtZXNzYWdlIGNhbiBiZSBzZW50IHRvIFVJIFByb2Nlc3MgYXQgYW55IHRpbWUuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlIFRpbGVkQmFj
a2luZ1N0b3JlIG1vcmUgZXhwbGljaXRseS4KKyAgICAgICAgSXQgbWVhbnMgb25seSBkdXJpbmcg
Zmx1c2hpbmcgbGF5ZXIgc3RhdGVzLCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIKKyAgICAgICAg
Y2FsbHMgbWV0aG9kcyBvZiBUaWxlZEJhY2tpbmdTdG9yZSwgd2hpY2ggaW5kaXJlY3RseSBjYWxs
IGNyZWF0ZVRpbGUoKSwKKyAgICAgICAgdXBkYXRlVGlsZSgpIGFuZCByZW1vdmVUaWxlKCkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5
VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRV
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVh
dGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBk
YXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJl
bW92ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1
cGRhdGVDb250ZW50QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVk
VmlzaWJsZVJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaDoKKwogMjAxMi0xMi0xMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogU21hbGwg
cmVmYWN0b3Igb2YgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IGFuZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDNkNTIwZjhmZTRhMjk5YzlhYzBlNGRk
N2UxMzk4ZTI5NDVhOWI2NDkuLjc0N2M0ZjQ2OGUzZmQxNjk3YTMwMjlhM2MzNDBhNGZmMDE0ODkx
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04MTgsNiArODE4LDcgQEAgdm9pZCBGcmFtZTo6
c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBpZiAobV90aWxl
ZEJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdGlsZWRCYWNraW5nU3RvcmUg
PSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUodGhpcykpOworICAgIG1fdGlsZWRCYWNr
aW5nU3RvcmUtPnNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKHRydWUpOwogICAg
IGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVudHModHJ1
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggOWEzN2E5NmZhYjJlYjY3YTI1MTczNWVmOWRlYzBmYThm
OGI0ZjJhOC4uYTU3NGIyMDI5YTViMDY4ODljMDU2YmEwMmQ0ZDc0N2JiN2MzMDgyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0
b3JlLmNwcApAQCAtNDEsMTIgKzQxLDEzIEBAIFRpbGVkQmFja2luZ1N0b3JlOjpUaWxlZEJhY2tp
bmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3duUHRyCiAgICAg
LCBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OnRpbGVC
dWZmZXJVcGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lcih0
aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQpCiAg
ICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURpbWVuc2lv
bikKLSAgICAsIG1fdGlsZUNyZWF0aW9uRGVsYXkoMC4wMSkKICAgICAsIG1fY292ZXJBcmVhTXVs
dGlwbGllcigyLjBmKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKICAgICAsIG1fcGVuZGlu
Z1NjYWxlKDApCisgICAgLCBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKGZhbHNl
KQogICAgICwgbV9jb250ZW50c0Zyb3plbihmYWxzZSkKICAgICAsIG1fc3VwcG9ydHNBbHBoYShm
YWxzZSkKKyAgICAsIG1fcGVuZGluZ1RpbGVDcmVhdGlvbihmYWxzZSkKIHsKIH0KIApAQCAtNjEs
MjYgKzYyLDIwIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpOwogfQogCi12
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlQ3JlYXRpb25EZWxheShkb3VibGUgZGVsYXkp
Cit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0
UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgbV90aWxlQ3JlYXRpb25EZWxheSA9IGRl
bGF5OworICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwor
ICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3Iubm9ybWFsaXplKCk7CiB9CiAKLXZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRQb2ludCYg
dHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0aFRpbGVz
SWZOZWVkZWQoKQogewogICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVj
dCgpOwogICAgIEludFJlY3QgcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+dGlsZWRC
YWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CiAKLSAgICBGbG9hdFBvaW50IG5vcm1hbGl6ZWRW
ZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotICAgIG5vcm1hbGl6ZWRWZWN0b3Iubm9ybWFsaXpl
KCk7Ci0KLSAgICBpZiAobV90cmFqZWN0b3J5VmVjdG9yID09IG5vcm1hbGl6ZWRWZWN0b3IgJiYg
bV92aXNpYmxlUmVjdCA9PSB2aXNpYmxlUmVjdCAmJiBtX3JlY3QgPT0gcmVjdCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV90cmFqZWN0b3J5VmVjdG9yID0gbm9ybWFsaXplZFZlY3RvcjsKLSAg
ICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0KLSAgICBjcmVhdGVUaWxlcygpOworICAg
IGJvb2wgZGlkQ2hhbmdlID0gbV90cmFqZWN0b3J5VmVjdG9yICE9IG1fcGVuZGluZ1RyYWplY3Rv
cnlWZWN0b3IgfHwgbV92aXNpYmxlUmVjdCAhPSB2aXNpYmxlUmVjdCB8fCBtX3JlY3QgIT0gcmVj
dDsKKyAgICBpZiAoZGlkQ2hhbmdlIHx8IG1fcGVuZGluZ1RpbGVDcmVhdGlvbikKKyAgICAgICAg
Y3JlYXRlVGlsZXMoKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6aW52YWxpZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKQEAgLTEwOCw3ICsxMDMsNyBAQCB2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRzRGly
dHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCiB7
Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIHx8
IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1fY29udGVudHNGcm96ZW4pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKTsKQEAg
LTI0NSw2ICsyNDAsOCBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAg
ICAgLy8gVXBkYXRlIG91ciBiYWNraW5nIHN0b3JlIGdlb21ldHJ5LgogICAgIGNvbnN0IEludFJl
Y3QgcHJldmlvdXNSZWN0ID0gbV9yZWN0OwogICAgIG1fcmVjdCA9IG1hcEZyb21Db250ZW50cyht
X2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CisgICAgbV90cmFqZWN0
b3J5VmVjdG9yID0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKKyAgICBtX3Zpc2libGVSZWN0
ID0gdmlzaWJsZVJlY3QoKTsKIAogICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHNldENvdmVyUmVjdChJbnRSZWN0KCkpOwpAQCAtMjczLDEyICsyNzAsOSBAQCB2b2lkIFRpbGVk
QmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICogV2UgbXVzdCBjcmVhdGUgb3Iga2Vl
cCB0aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgogICAgICAqLwogCi0gICAgY29uc3QgSW50
UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7Ci0gICAgbV92aXNpYmxlUmVj
dCA9IHZpc2libGVSZWN0OwotCiAgICAgSW50UmVjdCBjb3ZlclJlY3Q7CiAgICAgSW50UmVjdCBr
ZWVwUmVjdDsKLSAgICBjb21wdXRlQ292ZXJBbmRLZWVwUmVjdCh2aXNpYmxlUmVjdCwgY292ZXJS
ZWN0LCBrZWVwUmVjdCk7CisgICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QobV92aXNpYmxlUmVj
dCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CiAKICAgICBzZXRDb3ZlclJlY3QoY292ZXJSZWN0KTsK
ICAgICBzZXRLZWVwUmVjdChrZWVwUmVjdCk7CkBAIC0zMDksNyArMzAzLDcgQEAgdm9pZCBUaWxl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICAgICAgaWYgKHRpbGVBdChjdXJy
ZW50Q29vcmRpbmF0ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAr
K3JlcXVpcmVkVGlsZUNvdW50OwotICAgICAgICAgICAgZG91YmxlIGRpc3RhbmNlID0gdGlsZURp
c3RhbmNlKHZpc2libGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0ZSk7CisgICAgICAgICAgICBkb3Vi
bGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxlUmVjdCwgY3VycmVudENvb3JkaW5h
dGUpOwogICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hvcnRlc3REaXN0YW5jZSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IHNob3J0ZXN0
RGlzdGFuY2UpIHsKQEAgLTMzMyw4ICszMjcsMTYgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6
Y3JlYXRlVGlsZXMoKQogICAgICAgICB1cGRhdGVUaWxlQnVmZmVycygpOwogCiAgICAgLy8gUmUt
Y2FsbCBjcmVhdGVUaWxlcyBvbiBhIHRpbWVyIHRvIGNvdmVyIHRoZSB2aXNpYmxlIGFyZWEgd2l0
aCB0aGUgbmV3ZXN0IHNob3J0ZXN0IGRpc3RhbmNlLgotICAgIGlmIChyZXF1aXJlZFRpbGVDb3Vu
dCkKLSAgICAgICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QobV90aWxl
Q3JlYXRpb25EZWxheSk7CisgICAgbV9wZW5kaW5nVGlsZUNyZWF0aW9uID0gcmVxdWlyZWRUaWxl
Q291bnQ7CisgICAgaWYgKG1fcGVuZGluZ1RpbGVDcmVhdGlvbikgeworICAgICAgICBpZiAoIW1f
Y29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApIHsKKyAgICAgICAgICAgIG1fY2xpZW50
LT50aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdGlsZUNy
ZWF0aW9uRGVsYXkgPSAwLjAxOworICAgICAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVy
KHRpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICB9CiB9CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtNDIzLDcgKzQy
NSw3IEBAIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzQmFja2luZ1N0b3JlVXBkYXRlc1N1c3Bl
bmRlZCgpIGNvbnN0CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzVGlsZUJ1ZmZlclVwZGF0
ZXNTdXNwZW5kZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRzRnJvemVuIHx8ICFt
X2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpOworICAgIHJldHVybiBt
X2NvbnRlbnRzRnJvemVuOwogfQogCiBib29sIFRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdl
VGlsZXMoKQpAQCAtNTI2LDYgKzUyOCw5IEBAIFRpbGU6OkNvb3JkaW5hdGUgVGlsZWRCYWNraW5n
U3RvcmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50CiAKIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCkKIHsKKyAg
ICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApCisgICAgICAgIHJldHVy
bjsKKwogICAgIGlmIChtX3RpbGVCdWZmZXJVcGRhdGVUaW1lci5pc0FjdGl2ZSgpIHx8IGlzVGls
ZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdGlsZUJ1
ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUzMywxOCArNTM4LDIzIEBAIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCkKIAogdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGls
ZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRUaWxlVXBkYXRlc09uSWRs
ZUV2ZW50TG9vcCk7CiAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBUaWxlZEJh
Y2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpCit2b2lkIFRpbGVkQmFj
a2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSBpbnRlcnZhbCkK
IHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkg
fHwgaXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBtX2JhY2tp
bmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CiB9CiAKIHZvaWQgVGls
ZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8VGlsZWRC
YWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2
ZW50TG9vcCk7CiAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggMDgyYmU3MGM4
ZWIyNzUxNzkwYjdhYjg3NzU2OTQ5YmFjODFhNmQyOC4uNDYwNjU0YWQyYWQ4ZmQzMzNkNWJjZDA1
NTYyNzNjODk0MTFiNzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00Niw3ICs0NiwxMiBAQCBwdWJsaWM6CiAK
ICAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7
IH0KIAotICAgIHZvaWQgY292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiBw
YW5uaW5nVHJhamVjdG9yeVZlY3RvciA9IEZsb2F0UG9pbnQoKSk7CisgICAgLy8gVXNlZCB3aGVu
IGNsYXNzIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSBieSBjbGllbnQu
CisgICAgLy8gVXBkYXRlcyBvZiB0aWxlcyBhcmUgY29tbWl0dGVkIGFzIHNvb24gYXMgYWxsIHRo
ZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KKyAgICB2b2lkIHNl
dENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKGJvb2wgZW5hYmxlKSB7IG1fY29tbWl0
VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AgPSBlbmFibGU7IH0KKworICAgIHZvaWQgc2V0VHJh
amVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBjb3ZlcldpdGhUaWxl
c0lmTmVlZGVkKCk7CiAKICAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgeyByZXR1cm4gbV9jb250
ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKQEAgLTYyLDkg
KzY3LDYgQEAgcHVibGljOgogICAgIEludFNpemUgdGlsZVNpemUoKSB7IHJldHVybiBtX3RpbGVT
aXplOyB9CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAgICBkb3Vi
bGUgdGlsZUNyZWF0aW9uRGVsYXkoKSBjb25zdCB7IHJldHVybiBtX3RpbGVDcmVhdGlvbkRlbGF5
OyB9Ci0gICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxheShkb3VibGUgZGVsYXkpOwotCiAgICAg
SW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICBJbnRSZWN0
IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKQEAgLTgxLDcgKzgzLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaWxlQnVmZmVyVXBkYXRlVGlt
ZXIoKTsKLSAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoKTsKKyAgICB2b2lk
IHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlID0gMCk7CiAKICAgICB2b2lkIHRp
bGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiopOwogICAg
IHZvaWQgYmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tpbmdTdG9y
ZT4qKTsKQEAgLTEyMCwxMCArMTIyLDEwIEBAIHByaXZhdGU6CiAgICAgVGltZXI8VGlsZWRCYWNr
aW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXI7CiAKICAgICBJbnRTaXplIG1fdGls
ZVNpemU7Ci0gICAgZG91YmxlIG1fdGlsZUNyZWF0aW9uRGVsYXk7CiAgICAgZmxvYXQgbV9jb3Zl
ckFyZWFNdWx0aXBsaWVyOwogCiAgICAgRmxvYXRQb2ludCBtX3RyYWplY3RvcnlWZWN0b3I7Cisg
ICAgRmxvYXRQb2ludCBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yOwogICAgIEludFJlY3QgbV92
aXNpYmxlUmVjdDsKIAogICAgIEludFJlY3QgbV9jb3ZlclJlY3Q7CkBAIC0xMzMsOCArMTM1LDEw
IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwogICAgIGZsb2F0IG1fcGVu
ZGluZ1NjYWxlOwogCisgICAgYm9vbCBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29w
OwogICAgIGJvb2wgbV9jb250ZW50c0Zyb3plbjsKICAgICBib29sIG1fc3VwcG9ydHNBbHBoYTsK
KyAgICBib29sIG1fcGVuZGluZ1RpbGVDcmVhdGlvbjsKIAogICAgIGZyaWVuZCBjbGFzcyBUaWxl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCmluZGV4IDBlMDIxNDc3NzMzMGUyNWYxZmM4NDM4NzFm
NDVhNWEwOThmOWNkMWQuLmViOWE3ZDkzMjcyNDE1MWNjZTQ3NTc2OTY3ZTJkNDFkM2U1ZDNlMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFyZWEpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9u
KCkgeyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0
KCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0
KCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBhYmE0OGRkMTQxNzBhNWEyZjdlZDJhZGY4
YWQ0YTc5MDBjMTE2YThjLi5jODc3MDc4ZWJhNDljYTE0MWY1YTdjNWYxNzU3ZjNiNzBiMTMzZmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
Zm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgorI2VuZGlmCiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpA
QCAtMTA5LDcgKzExMiw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkaWRDaGFu
Z2VHZW9tZXRyeSgpCiAKIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IEdyYXBoaWNzTGF5
ZXIoY2xpZW50KQotICAgICwgbV9pblVwZGF0ZU1vZGUoZmFsc2UpCisjaWZuZGVmIE5ERUJVRwor
ICAgICwgbV9pc1B1cmdpbmcoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fc2hvdWxkVXBkYXRlVmlz
aWJsZVJlY3QodHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0xheWVyU3RhdGUodHJ1ZSkKICAgICAs
IG1fc2hvdWxkU3luY0NoaWxkcmVuKHRydWUpCkBAIC0xMjAsNiArMTI1LDggQEAgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNs
aWVudCogY2xpZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBt
X2NhbnZhc05lZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0Rlc3Ryb3koZmFs
c2UpCisgICAgLCBtX3BlbmRpbmdDb250ZW50c1NjYWxlQWRqdXN0bWVudChmYWxzZSkKKyAgICAs
IG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0
b3IoMCkKICAgICAsIG1fY29udGVudHNTY2FsZSgxKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2VQdHIoMCkKQEAgLTY0NSwxNCArNjUyLDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZs
b2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9y
ZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKHRy
YWplY3RvcnlWZWN0b3IpOworICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFRyYWplY3RvcnlWZWN0b3IodHJh
amVjdG9yeVZlY3Rvcik7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQg
c2NhbGUpCiB7CiAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7Ci0gICAgYWRqdXN0Q29udGVu
dHNTY2FsZSgpOworICAgIGlmIChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCisgICAgICAgIG1f
cGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50ID0gdHJ1ZTsKIH0KIAogZmxvYXQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKQEAgLTY2Miw5ICs2
NzMsNyBAQCBmbG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRz
U2NhbGUoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNT
Y2FsZSgpCiB7Ci0gICAgaWYgKCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHJl
dHVybjsKLQorICAgIEFTU0VSVChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpOwogICAgIGlmICgh
bV9tYWluQmFja2luZ1N0b3JlIHx8IG1fbWFpbkJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgp
ID09IGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02OTYs
MTEgKzcwNSwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
U3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mCiB7CiB9CiAKLWJvb2wgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29u
c3QKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUhhc1Bl
bmRpbmdUaWxlQ3JlYXRpb24oKQogewotICAgIGlmICghbV9pblVwZGF0ZU1vZGUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jb29yZGluYXRvci0+bGF5ZXJUcmVlVGlsZVVw
ZGF0ZXNBbGxvd2VkKCk7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKKyAg
ICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5ub3RpZnlGbHVzaFJlcXVpcmVkKHRo
aXMpOwogfQogCiBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
U3RvcmVDb250ZW50c1JlY3QoKQpAQCAtNzQ0LDI0ICs3NTMsMjggQEAgQ29sb3IgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0
CiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpi
ZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzLCBJ
bnRQb2ludCYgb2Zmc2V0KQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAgICBBU1NF
UlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKICAgICByZXR1cm4g
bV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkg
PyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBv
cnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
JiB1cGRhdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKIHsKICAgICBB
U1NFUlQobV9jb29yZGluYXRvcik7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hp
bmdMYXllckNoYW5nZXMoKSk7CiAgICAgbV9jb29yZGluYXRvci0+Y3JlYXRlVGlsZShpZCgpLCB0
aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRl
SW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QpCiB7CiAgICAgQVNTRVJU
KG1fY29vcmRpbmF0b3IpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yLT5pc0ZsdXNoaW5nTGF5
ZXJDaGFuZ2VzKCkpOwogICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlE
LCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpyZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkKIHsKICAgICBBU1NFUlQobV9jb29yZGlu
YXRvcik7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNoYW5nZXMo
KSB8fCBtX2lzUHVyZ2luZyk7CiAgICAgbV9jb29yZGluYXRvci0+cmVtb3ZlVGlsZShpZCgpLCB0
aWxlSUQpOwogfQogCkBAIC03NzMsMTMgKzc4NiwyMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOworICAgIGlmIChtX3BlbmRpbmdDb250ZW50c1Nj
YWxlQWRqdXN0bWVudCkgeworICAgICAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7CisgICAgICAg
IG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50ID0gZmFsc2U7CisgICAgfQorCiAgICAg
Ly8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3JlYXRlIHRoZSBtYWluIHRpbGVkIGJh
Y2tpbmcgc3RvcmUsIG9uY2Ugd2UKICAgICAvLyBoYXZlIGEgcmVtb3RlIGNsaWVudCBhbmQgd2Ug
YXJlIHJlYWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3MuCiAgICAgaWYgKCFt
X21haW5CYWNraW5nU3RvcmUpCiAgICAgICAgIGNyZWF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAg
aWYgKG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCkgeworICAgICAgICBtX3BlbmRpbmdW
aXNpYmxlUmVjdEFkanVzdG1lbnQgPSBmYWxzZTsKKyAgICAgICAgbV9tYWluQmFja2luZ1N0b3Jl
LT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgfQorCiAgICAgbV9tYWluQmFja2luZ1N0
b3JlLT51cGRhdGVUaWxlQnVmZmVycygpOwotICAgIG1faW5VcGRhdGVNb2RlID0gZmFsc2U7CiAK
ICAgICAvLyBUaGUgcHJldmlvdXMgYmFja2luZyBzdG9yZSBpcyBrZXB0IGFyb3VuZCB0byBhdm9p
ZCBmbGlja2VyaW5nIGJldHdlZW4KICAgICAvLyByZW1vdmluZyB0aGUgZXhpc3RpbmcgdGlsZXMg
YW5kIHBhaW50aW5nIHRoZSBuZXcgb25lcy4gVGhlIGZpcnN0IHRpbWUKQEAgLTc5MCw2ICs4MTIs
OSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMo
KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkK
IHsKKyNpZm5kZWYgTkRFQlVHCisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHVwZGF0ZU1vZGVQ
cm90ZWN0b3IobV9pc1B1cmdpbmcsIHRydWUpOworI2VuZGlmCiAgICAgbV9tYWluQmFja2luZ1N0
b3JlLmNsZWFyKCk7CiAgICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwogCkBAIC04
MDMsMTAgKzgyOCwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29vcmRp
bmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbAogICAgIG1fY29vcmRpbmF0
b3IgPSBjb29yZGluYXRvcjsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFk
anVzdFZpc2libGVSZWN0KCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVk
c1Zpc2libGVSZWN0QWRqdXN0bWVudCgpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkK
LSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7Cisg
ICAgaWYgKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgbV9wZW5kaW5nVmlzaWJs
ZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6Omhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpCkBAIC05MDcsOCArOTMyLDcgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkK
ICAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVk
KCkuaW52ZXJzZSgpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVz
ZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KLSAgICBhZGp1c3RWaXNpYmxlUmVj
dCgpOwotICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0
QWRqdXN0bWVudCgpOwogfQogCiBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVh
dGVDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaAppbmRleCA2MzllZmJiNDQ2YjgwYTk5ZWRkNGQzZDM0MTU5M2Q0NTZmYWNlMzY2Li5lMTI1
ZDMyM2NlZjZkN2RhNDNkNmUxMjg1NzQyMmNhYmExNmU2YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNTksNyAr
NTksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRM
YXllcklELCB1aW50MzJfdCB0aWxlSUQpID0gMDsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVl
ZGVkKFdlYkNvcmU6OkltYWdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0
ZShDb29yZGluYXRlZExheWVySUQsIGNvbnN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQsIGNv
bnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JikgPSAwOwpAQCAtMTUxLDcgKzE1MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0
aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFy
ZWEpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNB
bGxvd2VkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0
b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50UmVj
dCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
SW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0IE9WRVJS
SURFOwpAQCAtMTY0LDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29vcmRpbmF0
b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKIAotICAgIHZvaWQg
YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICB2b2lkIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3Rt
ZW50KCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBib29sIGhhc1BlbmRp
bmdWaXNpYmxlQ2hhbmdlcygpOwogCkBAIC0yMTksNyArMjE4LDkgQEAgcHJpdmF0ZToKICAgICBG
bG9hdFBvaW50IG1fYWRqdXN0ZWRQb3NpdGlvbjsKICAgICBGbG9hdFBvaW50M0QgbV9hZGp1c3Rl
ZEFuY2hvclBvaW50OwogCi0gICAgYm9vbCBtX2luVXBkYXRlTW9kZSA6IDE7CisjaWZuZGVmIE5E
RUJVRworICAgIGJvb2wgbV9pc1B1cmdpbmc7CisjZW5kaWYKICAgICBib29sIG1fc2hvdWxkVXBk
YXRlVmlzaWJsZVJlY3Q6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNMYXllclN0YXRlOiAxOwog
ICAgIGJvb2wgbV9zaG91bGRTeW5jQ2hpbGRyZW46IDE7CkBAIC0yMzAsNiArMjMxLDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY2FudmFzTmVlZHNEaXNwbGF5IDogMTsKICAgICBib29sIG1fY2Fu
dmFzTmVlZHNDcmVhdGUgOiAxOwogICAgIGJvb2wgbV9jYW52YXNOZWVkc0Rlc3Ryb3kgOiAxOwor
ICAgIGJvb2wgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQgOiAxOworICAgIGJvb2wg
bV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50IDogMTsKIAogICAgIFdlYktpdDo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93blB0cjxUaWxl
ZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZWQ5ODcy
NDFkYWI0YzQzNWQ5MjQ2OTIzYWM2NWFmY2MyYTFiMDRiMy4uMzRhN2M2OTRkODk4NmFiM2RkZmYw
NDJiNDlhYmU0MjM3NjIzM2U3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC02MTgsNiArNjE4LDcgQEAgdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXkKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiB7CisgICAg
c2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXIsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QpCkBAIC02NDEsNyArNjQyLDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAgICBsYXll
ci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXll
cik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKLSAgICBs
YXllci0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVj
dEFkanVzdG1lbnQoKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQogCkBAIC03MjMs
NyArNzI0LDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250
ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG8KICAgICAgICAgICAgIGlmIChjb250
ZW50c1NjYWxlRGlkQ2hhbmdlKQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRDb250ZW50c1Nj
YWxlKHNjYWxlKTsKICAgICAgICAgICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpCi0gICAg
ICAgICAgICAgICAgKCppdCktPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgICAgICAgICAgICAg
KCppdCktPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTc2MywxMSArNzY0LDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJl
bmRlck5leHRGcmFtZSgpCiAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlkU3dhcEJ1ZmZl
cnMoKTsKIH0KIAotYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmxheWVyVHJlZVRpbGVV
cGRhdGVzQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2lzU3VzcGVuZGVkICYmICFt
X3dhaXRpbmdGb3JVSVByb2Nlc3M7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBwdXJn
aW5nVG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggMDJmOWM1ZTE4Y2IxNmJi
ZGY4ZDIzMzZhMmVmNmNmOWEyMmIzNDljYy4uMzNmZWMwN2VhYzhjNTNlYjJiZGJiNTg0NWMwNTdk
YTM2ZTdmNTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTg2LDcgKzg2LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFj
a2luZ1N0b3JlcygpOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93
ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7Cg==
</data>
<flag name="review"
          id="196002"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="196003"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179831</attachid>
            <date>2012-12-17 16:34:43 -0800</date>
            <delta_ts>2012-12-17 18:39:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103959-20121218093158.patch</filename>
            <type>text/plain</type>
            <size>26725</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJlNmM1OTdiY2Q1NWJi
OTE5ZDBkNmZlNzUyMWU5YjJmNTRiMDY3Yi4uNTgyNmY0YTYyYThjMTBkYzgzZGI3MjY1NDU4MWQx
NTk0MDU0YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTEzICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgorCisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRDb21taXRUaWxlVXBk
YXRlc09uSWRsZUV2ZW50TG9vcCgpIGlzIHVzZWQgd2hlbiBjbGFzcworICAgICAgICBtZXRob2Rz
IGNhbm5vdCBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgY2xpZW50LiBVcGRhdGVzIG9mIHRp
bGVzIGFyZQorICAgICAgICBjb21taXR0ZWQgYXMgc29vbiBhcyBhbGwgdGhlIGV2ZW50cyBpbiBl
dmVudCBxdWV1ZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgorICAgICAgICBBZnRlciB0aGlzIHBhdGNo
IEZyYW1lIHNldHMgbV9jb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCB0byB0cnVlLgor
CisgICAgICAgIEluIGFkZGl0aW9uLCByZW1vdmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQ6OnRp
bGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKQorICAgICAgICB3aGljaCB3YXMgaW50cm9k
dWNlZCBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAg
ICAgICBTZXBhcmF0ZSBzZXR0aW5nIGEgdHJhamVjdG9yeSB2ZWN0b3IgZnJvbSBjb3ZlcldpdGhU
aWxlc0lmTmVlZGVkKCkuCisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y292
ZXJXaXRoVGlsZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9y
ZTo6dXBkYXRlVGlsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpp
c1RpbGVCdWZmZXJVcGRhdGVzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpzdGFydFRpbGVCdWZmZXJVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVw
ZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6c2V0Q29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDo6dGlsZWRCYWNraW5n
U3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKToKKyAgICAgICAgICAgIElmIFRpbGVkQmFja2lu
Z1N0b3JlIGRvZXMgbm90IGNyZWF0ZSBhbGwgdGlsZXMsIFRpbGVkQmFja2luZ1N0b3JlCisgICAg
ICAgICAgICBub3RpZmllcyBhIGNsaWVudCBvZiBuZWVkaW5nIHRvIGNyZWF0ZSB0aWxlcyBtb3Jl
LCB3aGVuCisgICAgICAgICAgICBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wIGlz
IGZhbHNlLgorCiAyMDEyLTEyLTE3ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgQ2hhbmdlIFNFVF9WQVIsIFNFVF9CT1JERVJWQUxVRV9DT0xPUiBtYWNy
byB0byByZXF1aXJlIHNlbWljb2xvbig7KSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggYTc1MmY1MDg3ODg1NDllMzA0MmY4YmRhZWRlYzQ5YTAzNzg0ZmY2ZC4uNTBhMDk2Njc5
MTAwZjU2MTExOGFjOGI1ZWM1ZmM3ZjI5Y2UxZWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDEyLTEyLTEzICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdT
dG9yZSBjb2RlIGluIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk1OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEN1cnJlbnRseSwgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyIGhhcyBjb21wbGV4IGNvZGUgcmVsYXRlZCB0byBUaWxlZEJh
Y2tpbmdTdG9yZS4KKyAgICAgICAgSXQgaGFzIHR3byBwcm9ibGVtLgorICAgICAgICAxLiBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFja3MgVGlsZWRCYWNraW5nU3RvcmUgdG8gcHJldmVudAor
ICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBmcm9tIGFzeW5jaHJvbm91c2x5IHNlbmRpbmcgVXBk
YXRlVGlsZSBtZXNzYWdlIHRvIFVJCisgICAgICAgIFByb2Nlc3MuCisgICAgICAgIDIuIENyZWF0
ZVRpbGUgYW5kIFJlbW92ZVRpbGUgbWVzc2FnZSBjYW4gYmUgc2VudCB0byBVSSBQcm9jZXNzIGF0
IGFueSB0aW1lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyIHVzZSBUaWxlZEJhY2tpbmdTdG9yZSBtb3JlIGV4cGxpY2l0bHkuCisgICAgICAgIEl0
IG1lYW5zIG9ubHkgZHVyaW5nIGZsdXNoaW5nIGxheWVyIHN0YXRlcywgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyCisgICAgICAgIGNhbGxzIG1ldGhvZHMgb2YgVGlsZWRCYWNraW5nU3RvcmUsIHdo
aWNoIGluZGlyZWN0bHkgY2FsbCBjcmVhdGVUaWxlKCksCisgICAgICAgIHVwZGF0ZVRpbGUoKSBh
bmQgcmVtb3ZlVGlsZSgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNv
bnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5k
aW5nVGlsZUNyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXROZWVkc1Zpc2libGVSZWN0
QWRqdXN0bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAg
ICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisKIDIwMTItMTItMTIgIEh1YW5n
IERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW0Nvb3JkaW5h
dGVkR3JhcGhpY3NdIEFzc2VydGlvbiBoaXQgaW4gV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
c2V0TGF5ZXJTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGYwZTMzYTRkNjljYzMyYjhh
NzM1NTM5MTlmNzRiYzk5ZDM2YmFlZDIuLmZlOWNlMGJlNmI5YzEyYWI2ODc1YjBmY2MzZTIyMGMx
MTUxMWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04MTgsNiArODE4LDcgQEAgdm9pZCBG
cmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBpZiAo
bV90aWxlZEJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fdGlsZWRCYWNraW5n
U3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUodGhpcykpOworICAgIG1fdGls
ZWRCYWNraW5nU3RvcmUtPnNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKHRydWUp
OwogICAgIGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVu
dHModHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggOWEzN2E5NmZhYjJlYjY3YTI1MTczNWVmOWRl
YzBmYThmOGI0ZjJhOC4uYTU3NGIyMDI5YTViMDY4ODljMDU2YmEwMmQ0ZDc0N2JiN2MzMDgyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZ1N0b3JlLmNwcApAQCAtNDEsMTIgKzQxLDEzIEBAIFRpbGVkQmFja2luZ1N0b3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50LCBQYXNzT3duUHRy
CiAgICAgLCBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6
OnRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9iYWNraW5nU3RvcmVVcGRhdGVU
aW1lcih0aGlzLCAmVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmly
ZWQpCiAgICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlRGltZW5zaW9uLCBkZWZhdWx0VGlsZURp
bWVuc2lvbikKLSAgICAsIG1fdGlsZUNyZWF0aW9uRGVsYXkoMC4wMSkKICAgICAsIG1fY292ZXJB
cmVhTXVsdGlwbGllcigyLjBmKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKICAgICAsIG1f
cGVuZGluZ1NjYWxlKDApCisgICAgLCBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29w
KGZhbHNlKQogICAgICwgbV9jb250ZW50c0Zyb3plbihmYWxzZSkKICAgICAsIG1fc3VwcG9ydHNB
bHBoYShmYWxzZSkKKyAgICAsIG1fcGVuZGluZ1RpbGVDcmVhdGlvbihmYWxzZSkKIHsKIH0KIApA
QCAtNjEsMjYgKzYyLDIwIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnNldFRpbGVTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpOwog
fQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlQ3JlYXRpb25EZWxheShkb3VibGUg
ZGVsYXkpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUcmFqZWN0b3J5VmVjdG9yKGNvbnN0
IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgbV90aWxlQ3JlYXRpb25EZWxh
eSA9IGRlbGF5OworICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVj
dG9yOworICAgIG1fcGVuZGluZ1RyYWplY3RvcnlWZWN0b3Iubm9ybWFsaXplKCk7CiB9CiAKLXZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNvdmVyV2l0
aFRpbGVzSWZOZWVkZWQoKQogewogICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB0aGlzLT52aXNp
YmxlUmVjdCgpOwogICAgIEludFJlY3QgcmVjdCA9IG1hcEZyb21Db250ZW50cyhtX2NsaWVudC0+
dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CiAKLSAgICBGbG9hdFBvaW50IG5vcm1h
bGl6ZWRWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotICAgIG5vcm1hbGl6ZWRWZWN0b3Iubm9y
bWFsaXplKCk7Ci0KLSAgICBpZiAobV90cmFqZWN0b3J5VmVjdG9yID09IG5vcm1hbGl6ZWRWZWN0
b3IgJiYgbV92aXNpYmxlUmVjdCA9PSB2aXNpYmxlUmVjdCAmJiBtX3JlY3QgPT0gcmVjdCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV90cmFqZWN0b3J5VmVjdG9yID0gbm9ybWFsaXplZFZlY3Rv
cjsKLSAgICBtX3Zpc2libGVSZWN0ID0gdmlzaWJsZVJlY3Q7Ci0KLSAgICBjcmVhdGVUaWxlcygp
OworICAgIGJvb2wgZGlkQ2hhbmdlID0gbV90cmFqZWN0b3J5VmVjdG9yICE9IG1fcGVuZGluZ1Ry
YWplY3RvcnlWZWN0b3IgfHwgbV92aXNpYmxlUmVjdCAhPSB2aXNpYmxlUmVjdCB8fCBtX3JlY3Qg
IT0gcmVjdDsKKyAgICBpZiAoZGlkQ2hhbmdlIHx8IG1fcGVuZGluZ1RpbGVDcmVhdGlvbikKKyAg
ICAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6aW52YWxp
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50c0RpcnR5UmVjdCkKQEAgLTEwOCw3ICsxMDMsNyBA
QCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRzRGlydHlSZWN0KQogCiB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVy
cygpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dl
ZCgpIHx8IG1fY29udGVudHNGcm96ZW4pCisgICAgaWYgKG1fY29udGVudHNGcm96ZW4pCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4o
KTsKQEAgLTI0NSw2ICsyNDAsOCBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxl
cygpCiAgICAgLy8gVXBkYXRlIG91ciBiYWNraW5nIHN0b3JlIGdlb21ldHJ5LgogICAgIGNvbnN0
IEludFJlY3QgcHJldmlvdXNSZWN0ID0gbV9yZWN0OwogICAgIG1fcmVjdCA9IG1hcEZyb21Db250
ZW50cyhtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CisgICAgbV90
cmFqZWN0b3J5VmVjdG9yID0gbV9wZW5kaW5nVHJhamVjdG9yeVZlY3RvcjsKKyAgICBtX3Zpc2li
bGVSZWN0ID0gdmlzaWJsZVJlY3QoKTsKIAogICAgIGlmIChtX3JlY3QuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHNldENvdmVyUmVjdChJbnRSZWN0KCkpOwpAQCAtMjczLDEyICsyNzAsOSBAQCB2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgICogV2UgbXVzdCBjcmVhdGUg
b3Iga2VlcCB0aGUgdGlsZXMgaW4gdGhlIEhFUkUgcmVnaW9uLgogICAgICAqLwogCi0gICAgY29u
c3QgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHRoaXMtPnZpc2libGVSZWN0KCk7Ci0gICAgbV92aXNp
YmxlUmVjdCA9IHZpc2libGVSZWN0OwotCiAgICAgSW50UmVjdCBjb3ZlclJlY3Q7CiAgICAgSW50
UmVjdCBrZWVwUmVjdDsKLSAgICBjb21wdXRlQ292ZXJBbmRLZWVwUmVjdCh2aXNpYmxlUmVjdCwg
Y292ZXJSZWN0LCBrZWVwUmVjdCk7CisgICAgY29tcHV0ZUNvdmVyQW5kS2VlcFJlY3QobV92aXNp
YmxlUmVjdCwgY292ZXJSZWN0LCBrZWVwUmVjdCk7CiAKICAgICBzZXRDb3ZlclJlY3QoY292ZXJS
ZWN0KTsKICAgICBzZXRLZWVwUmVjdChrZWVwUmVjdCk7CkBAIC0zMDksNyArMzAzLDcgQEAgdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICAgICAgaWYgKHRpbGVB
dChjdXJyZW50Q29vcmRpbmF0ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICArK3JlcXVpcmVkVGlsZUNvdW50OwotICAgICAgICAgICAgZG91YmxlIGRpc3RhbmNlID0g
dGlsZURpc3RhbmNlKHZpc2libGVSZWN0LCBjdXJyZW50Q29vcmRpbmF0ZSk7CisgICAgICAgICAg
ICBkb3VibGUgZGlzdGFuY2UgPSB0aWxlRGlzdGFuY2UobV92aXNpYmxlUmVjdCwgY3VycmVudENv
b3JkaW5hdGUpOwogICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gc2hvcnRlc3REaXN0YW5jZSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IHNo
b3J0ZXN0RGlzdGFuY2UpIHsKQEAgLTMzMyw4ICszMjcsMTYgQEAgdm9pZCBUaWxlZEJhY2tpbmdT
dG9yZTo6Y3JlYXRlVGlsZXMoKQogICAgICAgICB1cGRhdGVUaWxlQnVmZmVycygpOwogCiAgICAg
Ly8gUmUtY2FsbCBjcmVhdGVUaWxlcyBvbiBhIHRpbWVyIHRvIGNvdmVyIHRoZSB2aXNpYmxlIGFy
ZWEgd2l0aCB0aGUgbmV3ZXN0IHNob3J0ZXN0IGRpc3RhbmNlLgotICAgIGlmIChyZXF1aXJlZFRp
bGVDb3VudCkKLSAgICAgICAgbV9iYWNraW5nU3RvcmVVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qo
bV90aWxlQ3JlYXRpb25EZWxheSk7CisgICAgbV9wZW5kaW5nVGlsZUNyZWF0aW9uID0gcmVxdWly
ZWRUaWxlQ291bnQ7CisgICAgaWYgKG1fcGVuZGluZ1RpbGVDcmVhdGlvbikgeworICAgICAgICBp
ZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApIHsKKyAgICAgICAgICAgIG1f
Y2xpZW50LT50aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
dGlsZUNyZWF0aW9uRGVsYXkgPSAwLjAxOworICAgICAgICBzdGFydEJhY2tpbmdTdG9yZVVwZGF0
ZVRpbWVyKHRpbGVDcmVhdGlvbkRlbGF5KTsKKyAgICB9CiB9CiAKIHZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OmFkanVzdEZvckNvbnRlbnRzUmVjdChJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtNDIz
LDcgKzQyNSw3IEBAIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzQmFja2luZ1N0b3JlVXBkYXRl
c1N1c3BlbmRlZCgpIGNvbnN0CiAKIGJvb2wgVGlsZWRCYWNraW5nU3RvcmU6OmlzVGlsZUJ1ZmZl
clVwZGF0ZXNTdXNwZW5kZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRzRnJvemVu
IHx8ICFtX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpOworICAgIHJl
dHVybiBtX2NvbnRlbnRzRnJvemVuOwogfQogCiBib29sIFRpbGVkQmFja2luZ1N0b3JlOjpyZXNp
emVFZGdlVGlsZXMoKQpAQCAtNTI2LDYgKzUyOCw5IEBAIFRpbGU6OkNvb3JkaW5hdGUgVGlsZWRC
YWNraW5nU3RvcmU6OnRpbGVDb29yZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50
CiAKIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCkK
IHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChtX3RpbGVCdWZmZXJVcGRhdGVUaW1lci5pc0FjdGl2ZSgpIHx8
IGlzVGlsZUJ1ZmZlclVwZGF0ZXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUzMywxOCArNTM4LDIz
IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnN0YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCkK
IAogdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQoVGlt
ZXI8VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRUaWxlVXBkYXRl
c09uSWRsZUV2ZW50TG9vcCk7CiAgICAgdXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6c3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpCit2b2lkIFRp
bGVkQmFja2luZ1N0b3JlOjpzdGFydEJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyKGRvdWJsZSBpbnRl
cnZhbCkKIHsKKyAgICBpZiAoIW1fY29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3ApCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLmlzQWN0
aXZlKCkgfHwgaXNCYWNraW5nU3RvcmVVcGRhdGVzU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBt
X2JhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CiB9CiAKIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OmJhY2tpbmdTdG9yZVVwZGF0ZVRpbWVyRmlyZWQoVGltZXI8
VGlsZWRCYWNraW5nU3RvcmU+KikKIHsKKyAgICBBU1NFUlQobV9jb21taXRUaWxlVXBkYXRlc09u
SWRsZUV2ZW50TG9vcCk7CiAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggMDgy
YmU3MGM4ZWIyNzUxNzkwYjdhYjg3NzU2OTQ5YmFjODFhNmQyOC4uNDYwNjU0YWQyYWQ4ZmQzMzNk
NWJjZDA1NTYyNzNjODk0MTFiNzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC00Niw3ICs0NiwxMiBAQCBwdWJs
aWM6CiAKICAgICBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9j
bGllbnQ7IH0KIAotICAgIHZvaWQgY292ZXJXaXRoVGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFBv
aW50JiBwYW5uaW5nVHJhamVjdG9yeVZlY3RvciA9IEZsb2F0UG9pbnQoKSk7CisgICAgLy8gVXNl
ZCB3aGVuIGNsYXNzIG1ldGhvZHMgY2Fubm90IGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSBieSBj
bGllbnQuCisgICAgLy8gVXBkYXRlcyBvZiB0aWxlcyBhcmUgY29tbWl0dGVkIGFzIHNvb24gYXMg
YWxsIHRoZSBldmVudHMgaW4gZXZlbnQgcXVldWUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KKyAgICB2
b2lkIHNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKGJvb2wgZW5hYmxlKSB7IG1f
Y29tbWl0VGlsZVVwZGF0ZXNPbklkbGVFdmVudExvb3AgPSBlbmFibGU7IH0KKworICAgIHZvaWQg
c2V0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBjb3Zlcldp
dGhUaWxlc0lmTmVlZGVkKCk7CiAKICAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgeyByZXR1cm4g
bV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKQEAg
LTYyLDkgKzY3LDYgQEAgcHVibGljOgogICAgIEludFNpemUgdGlsZVNpemUoKSB7IHJldHVybiBt
X3RpbGVTaXplOyB9CiAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAg
ICBkb3VibGUgdGlsZUNyZWF0aW9uRGVsYXkoKSBjb25zdCB7IHJldHVybiBtX3RpbGVDcmVhdGlv
bkRlbGF5OyB9Ci0gICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxheShkb3VibGUgZGVsYXkpOwot
CiAgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICBJ
bnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKQEAgLTgxLDcg
KzgzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaWxlQnVmZmVyVXBk
YXRlVGltZXIoKTsKLSAgICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoKTsKKyAg
ICB2b2lkIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoZG91YmxlID0gMCk7CiAKICAgICB2
b2lkIHRpbGVCdWZmZXJVcGRhdGVUaW1lckZpcmVkKFRpbWVyPFRpbGVkQmFja2luZ1N0b3JlPiop
OwogICAgIHZvaWQgYmFja2luZ1N0b3JlVXBkYXRlVGltZXJGaXJlZChUaW1lcjxUaWxlZEJhY2tp
bmdTdG9yZT4qKTsKQEAgLTEyMCwxMCArMTIyLDEwIEBAIHByaXZhdGU6CiAgICAgVGltZXI8VGls
ZWRCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlVXBkYXRlVGltZXI7CiAKICAgICBJbnRTaXpl
IG1fdGlsZVNpemU7Ci0gICAgZG91YmxlIG1fdGlsZUNyZWF0aW9uRGVsYXk7CiAgICAgZmxvYXQg
bV9jb3ZlckFyZWFNdWx0aXBsaWVyOwogCiAgICAgRmxvYXRQb2ludCBtX3RyYWplY3RvcnlWZWN0
b3I7CisgICAgRmxvYXRQb2ludCBtX3BlbmRpbmdUcmFqZWN0b3J5VmVjdG9yOwogICAgIEludFJl
Y3QgbV92aXNpYmxlUmVjdDsKIAogICAgIEludFJlY3QgbV9jb3ZlclJlY3Q7CkBAIC0xMzMsOCAr
MTM1LDEwIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwogICAgIGZsb2F0
IG1fcGVuZGluZ1NjYWxlOwogCisgICAgYm9vbCBtX2NvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZl
bnRMb29wOwogICAgIGJvb2wgbV9jb250ZW50c0Zyb3plbjsKICAgICBib29sIG1fc3VwcG9ydHNB
bHBoYTsKKyAgICBib29sIG1fcGVuZGluZ1RpbGVDcmVhdGlvbjsKIAogICAgIGZyaWVuZCBjbGFz
cyBUaWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCmluZGV4IDBlMDIxNDc3NzMzMGUyNWYxZmM4
NDM4NzFmNDVhNWEwOThmOWNkMWQuLmViOWE3ZDkzMjcyNDE1MWNjZTQ3NTc2OTY3ZTJkNDFkM2U1
ZDNlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZ1N0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50
RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFpbnRlZEFyZWEpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgdGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNy
ZWF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlQ29udGVu
dHNSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2li
bGVSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgdGlsZWRCYWNraW5nU3RvcmVCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA1ZTY3ZTEwM2M1NWMxNDcxNTBl
MTEyYjBhYTgxNDI3OTViMmMwYWZlLi4wMzIxMTYyNGRkYzViYzFjMzBmZTc3MjUzMjY2NjYzN2Ri
OTkwNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJXZWJQYWdl
LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgorI2Vu
ZGlmCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwpAQCAtMTAzLDcgKzEwNiw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpk
aWRDaGFuZ2VHZW9tZXRyeSgpCiAKIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IEdyYXBo
aWNzTGF5ZXIoY2xpZW50KQotICAgICwgbV9pblVwZGF0ZU1vZGUoZmFsc2UpCisjaWZuZGVmIE5E
RUJVRworICAgICwgbV9pc1B1cmdpbmcoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fc2hvdWxkVXBk
YXRlVmlzaWJsZVJlY3QodHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0xheWVyU3RhdGUodHJ1ZSkK
ICAgICAsIG1fc2hvdWxkU3luY0NoaWxkcmVuKHRydWUpCkBAIC0xMTQsNiArMTE5LDggQEAgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NM
YXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9jYW52YXNOZWVkc0Rpc3BsYXkoZmFsc2UpCiAg
ICAgLCBtX2NhbnZhc05lZWRzQ3JlYXRlKGZhbHNlKQogICAgICwgbV9jYW52YXNOZWVkc0Rlc3Ry
b3koZmFsc2UpCisgICAgLCBtX3BlbmRpbmdDb250ZW50c1NjYWxlQWRqdXN0bWVudChmYWxzZSkK
KyAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fY29v
cmRpbmF0b3IoMCkKICAgICAsIG1fY29udGVudHNTY2FsZSgxKQogICAgICwgbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIoMCkKQEAgLTYzNywxNCArNjQ0LDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNv
bnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tp
bmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVl
ZGVkKHRyYWplY3RvcnlWZWN0b3IpOworICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFRyYWplY3RvcnlWZWN0
b3IodHJhamVjdG9yeVZlY3Rvcik7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQo
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUo
ZmxvYXQgc2NhbGUpCiB7CiAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7Ci0gICAgYWRqdXN0
Q29udGVudHNTY2FsZSgpOworICAgIGlmIChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCisgICAg
ICAgIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50ID0gdHJ1ZTsKIH0KIAogZmxvYXQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKQEAgLTY1
NCw5ICs2NjUsNyBAQCBmbG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNv
bnRlbnRzU2NhbGUoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29u
dGVudHNTY2FsZSgpCiB7Ci0gICAgaWYgKCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCi0gICAg
ICAgIHJldHVybjsKLQorICAgIEFTU0VSVChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpOwogICAg
IGlmICghbV9tYWluQmFja2luZ1N0b3JlIHx8IG1fbWFpbkJhY2tpbmdTdG9yZS0+Y29udGVudHNT
Y2FsZSgpID09IGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC02ODgsMTEgKzY5NywxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRC
YWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mCiB7CiB9CiAKLWJvb2wg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2Vk
KCkgY29uc3QKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9y
ZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKQogewotICAgIGlmICghbV9pblVwZGF0ZU1vZGUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jb29yZGluYXRvci0+bGF5ZXJUcmVl
VGlsZVVwZGF0ZXNBbGxvd2VkKCk7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQo
KTsKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5ub3RpZnlGbHVzaFJlcXVp
cmVkKHRoaXMpOwogfQogCiBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRC
YWNraW5nU3RvcmVDb250ZW50c1JlY3QoKQpAQCAtNzM2LDI0ICs3NDUsMjggQEAgQ29sb3IgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigp
IGNvbnN0CiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0
bGFzLCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKKyAg
ICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKICAgICBy
ZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3Bh
cXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZhY2U6
OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRh
dGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKIHsK
ICAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlz
Rmx1c2hpbmdMYXllckNoYW5nZXMoKSk7CiAgICAgbV9jb29yZGluYXRvci0+Y3JlYXRlVGlsZShp
ZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8sIHRpbGVSZWN0KTsKIH0KIAogdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNl
VXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QpCiB7CiAgICAg
QVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yLT5pc0ZsdXNo
aW5nTGF5ZXJDaGFuZ2VzKCkpOwogICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0ZVRpbGUoaWQoKSwg
dGlsZUlELCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpyZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkKIHsKICAgICBBU1NFUlQobV9j
b29yZGluYXRvcik7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNo
YW5nZXMoKSB8fCBtX2lzUHVyZ2luZyk7CiAgICAgbV9jb29yZGluYXRvci0+cmVtb3ZlVGlsZShp
ZCgpLCB0aWxlSUQpOwogfQogCkBAIC03NjUsMTMgKzc3OCwyMiBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOworICAgIGlmIChtX3BlbmRpbmdDb250
ZW50c1NjYWxlQWRqdXN0bWVudCkgeworICAgICAgICBhZGp1c3RDb250ZW50c1NjYWxlKCk7Cisg
ICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50ID0gZmFsc2U7CisgICAgfQor
CiAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3JlYXRlIHRoZSBtYWluIHRp
bGVkIGJhY2tpbmcgc3RvcmUsIG9uY2Ugd2UKICAgICAvLyBoYXZlIGEgcmVtb3RlIGNsaWVudCBh
bmQgd2UgYXJlIHJlYWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3MuCiAgICAg
aWYgKCFtX21haW5CYWNraW5nU3RvcmUpCiAgICAgICAgIGNyZWF0ZUJhY2tpbmdTdG9yZSgpOwor
CisgICAgaWYgKG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCkgeworICAgICAgICBtX3Bl
bmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQgPSBmYWxzZTsKKyAgICAgICAgbV9tYWluQmFja2lu
Z1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVkKCk7CisgICAgfQorCiAgICAgbV9tYWluQmFj
a2luZ1N0b3JlLT51cGRhdGVUaWxlQnVmZmVycygpOwotICAgIG1faW5VcGRhdGVNb2RlID0gZmFs
c2U7CiAKICAgICAvLyBUaGUgcHJldmlvdXMgYmFja2luZyBzdG9yZSBpcyBrZXB0IGFyb3VuZCB0
byBhdm9pZCBmbGlja2VyaW5nIGJldHdlZW4KICAgICAvLyByZW1vdmluZyB0aGUgZXhpc3Rpbmcg
dGlsZXMgYW5kIHBhaW50aW5nIHRoZSBuZXcgb25lcy4gVGhlIGZpcnN0IHRpbWUKQEAgLTc4Miw2
ICs4MDQsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1
ZmZlcnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3Rv
cmVzKCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHVwZGF0
ZU1vZGVQcm90ZWN0b3IobV9pc1B1cmdpbmcsIHRydWUpOworI2VuZGlmCiAgICAgbV9tYWluQmFj
a2luZ1N0b3JlLmNsZWFyKCk7CiAgICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwog
CkBAIC03OTUsMTAgKzgyMCwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
Q29vcmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbAogICAgIG1fY29v
cmRpbmF0b3IgPSBjb29yZGluYXRvcjsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmFkanVzdFZpc2libGVSZWN0KCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpCiB7Ci0gICAgaWYgKG1fbWFpbkJhY2tpbmdT
dG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlcldpdGhUaWxlc0lmTmVlZGVk
KCk7CisgICAgaWYgKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgbV9wZW5kaW5n
VmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6Omhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpCkBAIC04OTksOCArOTI0LDcgQEAg
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVS
ZWN0KCkKICAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNv
bWJpbmVkKCkuaW52ZXJzZSgpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxs
IGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KLSAgICBhZGp1c3RWaXNp
YmxlUmVjdCgpOwotICAgIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKKyAgICBzZXROZWVkc1Zpc2li
bGVSZWN0QWRqdXN0bWVudCgpOwogfQogCiBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0xheWVy
PiBjcmVhdGVDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xp
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAppbmRleCBiZjBiZTgyMDFjNzdhZmNkZGNjMGZmM2YzYzJmN2YxYTMwMmZiMmI0
Li5iM2Y3NThmZjUwM2M3M2FjZjlkNTg1NmVjYmFiM2YxOTRjYTI3YmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAt
NTksNyArNTksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29vcmRp
bmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQpID0gMDsKIAogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2lu
Z0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5
ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQsIGNvbnN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVy
SUQsIGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JikgPSAwOwpAQCAtMTUxLDcgKzE1
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVQYWludEJl
Z2luKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlUGFpbnQo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFp
bnRlZEFyZWEpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZVVw
ZGF0ZXNBbGxvd2VkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRpbGVkQmFj
a2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
SW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0
IE9WRVJSSURFOwpAQCAtMTY0LDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29v
cmRpbmF0b3IoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKIAotICAg
IHZvaWQgYWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICB2b2lkIHNldE5lZWRzVmlzaWJsZVJlY3RB
ZGp1c3RtZW50KCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBib29sIGhh
c1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpOwogCkBAIC0yMTksNyArMjE4LDkgQEAgcHJpdmF0ZToK
ICAgICBGbG9hdFBvaW50IG1fYWRqdXN0ZWRQb3NpdGlvbjsKICAgICBGbG9hdFBvaW50M0QgbV9h
ZGp1c3RlZEFuY2hvclBvaW50OwogCi0gICAgYm9vbCBtX2luVXBkYXRlTW9kZSA6IDE7CisjaWZu
ZGVmIE5ERUJVRworICAgIGJvb2wgbV9pc1B1cmdpbmc7CisjZW5kaWYKICAgICBib29sIG1fc2hv
dWxkVXBkYXRlVmlzaWJsZVJlY3Q6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNMYXllclN0YXRl
OiAxOwogICAgIGJvb2wgbV9zaG91bGRTeW5jQ2hpbGRyZW46IDE7CkBAIC0yMzAsNiArMjMxLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FudmFzTmVlZHNEaXNwbGF5IDogMTsKICAgICBib29s
IG1fY2FudmFzTmVlZHNDcmVhdGUgOiAxOwogICAgIGJvb2wgbV9jYW52YXNOZWVkc0Rlc3Ryb3kg
OiAxOworICAgIGJvb2wgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQgOiAxOworICAg
IGJvb2wgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50IDogMTsKIAogICAgIFdlYktpdDo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93blB0
cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXgg
MzhhOWVkODlhZjAwMzcwYTI3MjVjNTZlMGIwNGE0OTgxNmFmMTcxZS4uNDg0NDQ1MGM5OGY5NDk1
NDA1NzVmYzQ4ZWEwYjExOTBkMzEwOGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC02MTQsNiArNjE0LDcg
QEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXkKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiB7
CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y2xpcFJlY3QpCkBAIC02MzcsNyArNjM4LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAg
ICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFk
ZChsYXllcik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsK
LSAgICBsYXllci0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKKyAgICBsYXllci0+c2V0TmVlZHNWaXNp
YmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQogCkBA
IC03MTksNyArNzIwLDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG8KICAgICAgICAgICAgIGlm
IChjb250ZW50c1NjYWxlRGlkQ2hhbmdlKQogICAgICAgICAgICAgICAgICgqaXQpLT5zZXRDb250
ZW50c1NjYWxlKHNjYWxlKTsKICAgICAgICAgICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2Up
Ci0gICAgICAgICAgICAgICAgKCppdCktPmFkanVzdFZpc2libGVSZWN0KCk7CisgICAgICAgICAg
ICAgICAgKCppdCktPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTc1OSwxMSArNzYwLDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnJlbmRlck5leHRGcmFtZSgpCiAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZGlkU3dh
cEJ1ZmZlcnMoKTsKIH0KIAotYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmxheWVyVHJl
ZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2lzU3VzcGVuZGVk
ICYmICFtX3dhaXRpbmdGb3JVSVByb2Nlc3M7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxib29s
PiBwdXJnaW5nVG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggMDJmOWM1ZTE4
Y2IxNmJiZGY4ZDIzMzZhMmVmNmNmOWEyMmIzNDljYy4uMzNmZWMwN2VhYzhjNTNlYjJiZGJiNTg0
NWMwNTdkYTM2ZTdmNTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTg2LDcgKzg2LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1
cmdlQmFja2luZ1N0b3JlcygpOwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRl
c0FsbG93ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>