<?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>103519</bug_id>
          
          <creation_ts>2012-11-28 06:23:01 -0800</creation_ts>
          <short_desc>[WK2][EFL][Qt] Pixel alignment is wrong in some cases involving a non-integral content scale</short_desc>
          <delta_ts>2012-12-07 13:17:54 -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>WebKit EFL</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>
          
          <blocked>103105</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Rohde Christiansen">kenneth</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>helder.correia</cc>
    
    <cc>kalyan.kondapally</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>menard</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>noam</cc>
    
    <cc>ostap73</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>777853</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-28 06:23:01 -0800</bug_when>
    <thetext>Go to google.com (make view smaller if scale == 1), search for something

mouse over the &gt;&gt; to show the info overlay. Now scroll up and down, you will see the overlay element shaking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778993</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-29 07:20:13 -0800</bug_when>
    <thetext>The following patch shows that the element definitely shakes:

--- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
+++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
@@ -441,6 +441,9 @@ void TextureMapperLayer::flushCompositingStateSelf(GraphicsLayerTextureMapper* g
     m_transform.setSize(m_state.size);
     m_transform.setFlattening(!m_state.preserves3D);
     m_transform.setChildrenTransform(m_state.childrenTransform);
+
+    if (m_fixedToViewport)
+        printf(&quot;pos %f\n&quot;, m_transform.combined().m42());
 }


pos 316.438544
pos 317.167813
pos 316.897082
pos 316.626351
pos 316.355620
pos 316.626351
pos 316.626351
pos 316.355620
pos 317.084889
pos 316.814159
pos 316.543428
pos 316.272697
pos 317.001966
pos 316.731235
pos 316.460504
pos 317.189773
pos 316.648311
pos 316.377580
pos 317.106849</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781269</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-03 02:53:55 -0800</bug_when>
    <thetext>Chromium shake the overlay element, too.
I think layout causes this shaking.

However, Coordinated Graphics has another problem. When shaking element, the fixed layer is blurry. Chromium always renders crisp.

I think it is related to something like TiledBackingStore::mapToContents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781272</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-03 03:02:53 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Chromium shake the overlay element, too.
&gt; I think layout causes this shaking.
&gt; 
&gt; However, Coordinated Graphics has another problem. When shaking element, the fixed layer is blurry. Chromium always renders crisp.
&gt; 
&gt; I think it is related to something like TiledBackingStore::mapToContents.

Yeah, it seems to map things into non discrete positions making it blurry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781280</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-03 03:10:02 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Chromium shake the overlay element, too.
&gt; &gt; I think layout causes this shaking.
&gt; &gt; 
&gt; &gt; However, Coordinated Graphics has another problem. When shaking element, the fixed layer is blurry. Chromium always renders crisp.
&gt; &gt; 
&gt; &gt; I think it is related to something like TiledBackingStore::mapToContents.
&gt; 
&gt; Yeah, it seems to map things into non discrete positions making it blurry.

Do you think what is the scope of this bug?

We need to separate two problems.
1. Shaking layout
2. Blurry fixed layer.

#1 may require to fix layout routine. It seems to be hard.
We can fix #2 by ourselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781288</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-03 03:17:34 -0800</bug_when>
    <thetext>
&gt; Do you think what is the scope of this bug?
&gt; 
&gt; We need to separate two problems.
&gt; 1. Shaking layout
&gt; 2. Blurry fixed layer.
&gt; 
&gt; #1 may require to fix layout routine. It seems to be hard.
&gt; We can fix #2 by ourselves.

We could do that, basically we need to fix both</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782567</commentid>
    <comment_count>6</comment_count>
      <attachid>177490</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-12-04 08:25:17 -0800</bug_when>
    <thetext>Created attachment 177490
patch

Fix for shaking. Blurring is a separate issue and should be addressed separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782576</commentid>
    <comment_count>7</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-12-04 08:37:40 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=177490) [details]
&gt; patch
&gt; 
&gt; Fix for shaking. Blurring is a separate issue and should be addressed separately.

This has been changed to fix the blurry tiles when it was scrolled. If that was wrong, I think we should just rollout the patch for bug 103079 and reopen that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782699</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-04 10:47:47 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Created an attachment (id=177490) [details] [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; Fix for shaking. Blurring is a separate issue and should be addressed separately.
&gt; 
&gt; This has been changed to fix the blurry tiles when it was scrolled. If that was wrong, I think we should just rollout the patch for bug 103079 and reopen that bug.

This is not all of that patch. But doing this does mean that the transform used for events and painting AC is slightly different that the one for positioning the content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782722</commentid>
    <comment_count>9</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-12-04 11:00:42 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Created an attachment (id=177490) [details] [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; Fix for shaking. Blurring is a separate issue and should be addressed separately.
&gt; 
&gt; This has been changed to fix the blurry tiles when it was scrolled. If that was wrong, I think we should just rollout the patch for bug 103079 and reopen that bug.

Patch has a lot of good things which I would keep, we just need to find good solution to fix blurring issue, including fixed elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783515</commentid>
    <comment_count>10</comment_count>
      <attachid>177490</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-12-05 01:33:14 -0800</bug_when>
    <thetext>Comment on attachment 177490
patch

removing the flags yet, as proper fix should also solve blurring issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783733</commentid>
    <comment_count>11</comment_count>
      <attachid>177745</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-05 07:39:53 -0800</bug_when>
    <thetext>Created attachment 177745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785177</commentid>
    <comment_count>12</comment_count>
      <attachid>178066</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-06 13:12:14 -0800</bug_when>
    <thetext>Created attachment 178066
Patch (work in progress)

This patch shows crisp pixel aligned fixed positioned elements, but with the following test case it can be seen that it sometimes moves one pixel (shaking)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785178</commentid>
    <comment_count>13</comment_count>
      <attachid>178067</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-06 13:12:35 -0800</bug_when>
    <thetext>Created attachment 178067
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785213</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-06 13:44:13 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=178066) [details]
&gt; Patch (work in progress)
&gt; 
&gt; This patch shows crisp pixel aligned fixed positioned elements, but with the following test case it can be seen that it sometimes moves one pixel (shaking)

This relates to our visibleContentsRect which in WebCore doesn&apos;t 100% represent where we are (as it is roundedIntRect). We can only fix this properly if we move to scale in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785259</commentid>
    <comment_count>15</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-12-06 14:15:42 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; Created an attachment (id=178066) [details] [details]
&gt; &gt; Patch (work in progress)
&gt; &gt; 
&gt; &gt; This patch shows crisp pixel aligned fixed positioned elements, but with the following test case it can be seen that it sometimes moves one pixel (shaking)
&gt; 
&gt; This relates to our visibleContentsRect which in WebCore doesn&apos;t 100% represent where we are (as it is roundedIntRect). We can only fix this properly if we move to scale in WebCore.

Does Qt have the same problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785412</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-06 16:47:33 -0800</bug_when>
    <thetext>&gt; Does Qt have the same problem?

Yes. Your adjustment code hides the shaking somehow (but results in some misalignment and blurriness), so turning it off and doing debugging makes it easier to see the issue. I didn&apos;t dig into fixing this adjustment code yet.

How big the issue is depends on the exact scale. At some scales it is barely notifiable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785475</commentid>
    <comment_count>17</comment_count>
      <attachid>178123</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-06 17:47:14 -0800</bug_when>
    <thetext>Created attachment 178123
Patch (work in progress)

Fixes the temporarily position adjustment to be aligned to device units (comparing using the float version of visibleContentsRect).
Fixed that the layers can be blurry then the page reaches the end of the page.

one-off shaking still there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785482</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-06 17:51:06 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=178123) [details]
&gt; Patch (work in progress)
&gt; 
&gt; Fixes the temporarily position adjustment to be aligned to device units (comparing using the float version of visibleContentsRect).
&gt; Fixed that the layers can be blurry then the page reaches the end of the page.
&gt; 
&gt; one-off shaking still there.

With this patch you can go to google.com, search for &quot;hest&quot;
If you use the default EFL window size, the page will be slightly scaled down.

Now hover the mouse over one of the &gt;&gt; signs for one element

Then the fixed position element pops up and if you put the mouse over it and scroll up and down, it stays perfectly and is very crisp :-)

That is quite an improvement on what we had before, even if we have the one-off issue at certain scales.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785505</commentid>
    <comment_count>19</comment_count>
      <attachid>178123</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 18:12:46 -0800</bug_when>
    <thetext>Comment on attachment 178123
Patch (work in progress)

View in context: https://bugs.webkit.org/attachment.cgi?id=178123&amp;action=review
great work!
However, we will use pageScaleFactor and deviceScaleFactor in WebCore::Page and move GraphicsLayerCA&apos;s snapping algorithm to RenderLayerBacking or RenderLayerCompositor in the future.

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:97
&gt; +    // Unfortunately it doesn&apos;t seem to be enough, so just always allow one pixel more.

I think it is because CoordinatedGraphicsLayer::computePixelAlignment replaces a layer, so the layer shifts off by 1 pixel.
I think we can not reproduce this bug before this patch.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:108
&gt; +    computePixelAlignment(adjustedPosition, adjustedSize, adjustedAnchorPoint, pixelAlignmentOffset);

It is better to computePixel during flushing.
computing here causes redundant computing over and over again. for example, setPosition after setSize.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:863
&gt; +    FloatRect alignedBounds = roundedIntRect(scaledBounds);

You&apos;re right. I think mac has bug also.
I think we should use something like pixelSnappedIntRect instead of roundedIntRece and enclosingIntRect to preserve size (size change causes TiledBackingStore&apos;s work!)
http://trac.webkit.org/wiki/LayoutUnit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785770</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 02:43:29 -0800</bug_when>
    <thetext>
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:108
&gt; &gt; +    computePixelAlignment(adjustedPosition, adjustedSize, adjustedAnchorPoint, pixelAlignmentOffset);
&gt; 
&gt; It is better to computePixel during flushing.
&gt; computing here causes redundant computing over and over again. for example, setPosition after setSize.

Possible yes, but I didn&apos;t look into making this performant yet :-)

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:863
&gt; &gt; +    FloatRect alignedBounds = roundedIntRect(scaledBounds);
&gt; 
&gt; You&apos;re right. I think mac has bug also.
&gt; I think we should use something like pixelSnappedIntRect instead of roundedIntRece and enclosingIntRect to preserve size (size change causes TiledBackingStore&apos;s work!)
&gt; http://trac.webkit.org/wiki/LayoutUnit

I am not sure, because LayoutUnits store the value (float) in an int. So if you apply scale to a rect and then remove it again, then you don&apos;t necessarily end up with the same rect, at least not if the values are not int aligned first. Also then we would need to enable sub pixel layouts which we cannot yet due to some blocker bugs (cairo fonts for one)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785871</commentid>
    <comment_count>21</comment_count>
      <attachid>178215</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 07:29:28 -0800</bug_when>
    <thetext>Created attachment 178215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785878</commentid>
    <comment_count>22</comment_count>
      <attachid>178215</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-07 07:40:07 -0800</bug_when>
    <thetext>Comment on attachment 178215
Patch

Attachment 178215 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15175704</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785889</commentid>
    <comment_count>23</comment_count>
      <attachid>178220</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 08:01:17 -0800</bug_when>
    <thetext>Created attachment 178220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785891</commentid>
    <comment_count>24</comment_count>
      <attachid>178220</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-07 08:03:52 -0800</bug_when>
    <thetext>Comment on attachment 178220
Patch

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

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:98
&gt; +    if (!isIntegral(m_effectiveScale)) {

if (modf(m_effectiveScale))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785903</commentid>
    <comment_count>25</comment_count>
      <attachid>178223</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 08:53:02 -0800</bug_when>
    <thetext>Created attachment 178223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785958</commentid>
    <comment_count>26</comment_count>
      <attachid>178223</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-07 10:15:49 -0800</bug_when>
    <thetext>Comment on attachment 178223
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:599
&gt; +    // Sets the values.
&gt; +    computePixelAlignment(m_adjustedPosition, m_adjustedSize, m_adjustedAnchorPoint, m_pixelAlignmentOffset);

Let&apos;s rename it then to adjustGeometryForPixelAlignment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786082</commentid>
    <comment_count>27</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 13:06:23 -0800</bug_when>
    <thetext>
&gt; &gt; +    // Sets the values.
&gt; &gt; +    computePixelAlignment(m_adjustedPosition, m_adjustedSize, m_adjustedAnchorPoint, m_pixelAlignmentOffset);
&gt; 
&gt; Let&apos;s rename it then to adjustGeometryForPixelAlignment

You find that more clear? it modifies its arguments and I am just passing them directly here. The method itself doesn&apos;t adjust anything, plus I like using the same naming as in the mac code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786087</commentid>
    <comment_count>28</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 13:13:13 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; &gt; +    // Sets the values.
&gt; &gt; &gt; +    computePixelAlignment(m_adjustedPosition, m_adjustedSize, m_adjustedAnchorPoint, m_pixelAlignmentOffset);
&gt; &gt; 
&gt; &gt; Let&apos;s rename it then to adjustGeometryForPixelAlignment
&gt; 
&gt; You find that more clear? it modifies its arguments and I am just passing them directly here. The method itself doesn&apos;t adjust anything, plus I like using the same naming as in the mac code

Can be renamed later, if we decide to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786091</commentid>
    <comment_count>29</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-07 13:17:54 -0800</bug_when>
    <thetext>Landed in 136976</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177490</attachid>
            <date>2012-12-04 08:25:17 -0800</date>
            <delta_ts>2012-12-07 07:29:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug103519</filename>
            <type>text/plain</type>
            <size>1583</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGY4Y2YyMDM3OWQ3NWY2ODI0Nzg0MmNlNTM0Y2Y1MzYyNzIxMWI4NzIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIERlYyA0IDE4OjIwOjUyIDIwMTIgKzAyMDAKCiAgICBidWcxMDM1MTkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggY2E4OGI1Ny4uOWI1NjY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEy
LTA0ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtFRkxdW1dLMl0gV2hlbiBzY2FsZSAhPSAxLCBlbGVtZW50cyBmaXhlZCB0byB2
aWV3cG9ydCBzaGFrZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hpbGUgZGVmaW5pbmcgQWZmaW5lIHRyYW5zZm9ybSBmb3Igc2Nyb2xsIGV2ZW50IGhh
bmRsZXIgdGhlIHBhZ2UgcG9zaXRpb24gd2FzIGVycm9uZW91c2x5CisgICAgICAgIHJvdW5kZWQg
dG8gaW50LCB0aGF0IGFmZmVjdGVkIHRoZSBsYXllciBwb3NpdGlvbiBmb3IgZml4ZWQgZWxlbWVu
dHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKwogMjAxMi0xMi0wNCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
QXZvaWQgdW5uZWNlc3NhcnkgaGVhcCBhbGxvY2F0aW9ucyBkdXJpbmcgZHJhZyBhbmQgZHJvcCBv
cGVyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAKaW5kZXggMGQ1ZDg5OS4uNWQ1NzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIEFm
ZmluZVRyYW5zZm9ybSBFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKIAog
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHRyYW5zZm9ybS5zY2FsZSgxIC8gbV9z
Y2FsZUZhY3Rvcik7Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShkaXNjcmV0ZVBhZ2VQb3NpdGlv
bigpLngoKSwgZGlzY3JldGVQYWdlUG9zaXRpb24oKS55KCkpOworICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUobV9wYWdlUG9zaXRpb24ueCgpLCBtX3BhZ2VQb3NpdGlvbi55KCkpOwogI2VuZGlmCiAK
ICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177745</attachid>
            <date>2012-12-05 07:39:53 -0800</date>
            <delta_ts>2012-12-07 07:29:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5823</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApp
bmRleCAwZDVkODk5Li41MjdlOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgQWZmaW5lVHJhbnNm
b3JtIEV3a1ZpZXdJbXBsOjp0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAogCiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdHJhbnNmb3JtLnNjYWxlKDEgLyBtX3NjYWxlRmFjdG9y
KTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGRpc2NyZXRlUGFnZVBvc2l0aW9uKCkueCgpLCBk
aXNjcmV0ZVBhZ2VQb3NpdGlvbigpLnkoKSk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShwYWdl
UG9zaXRpb24oKS54KCksIHBhZ2VQb3NpdGlvbigpLnkoKSk7CiAjZW5kaWYKIAogICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9p
ZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmlyZWQoVGltZXI8RXdrVmlld0ltcGw+KikKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhpY3NDb250
ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UuZ2V0KCkpKTsKLSAgICAgICAgY2Fp
cm9fdHJhbnNsYXRlKGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgLSBkaXNjcmV0ZVBhZ2VQb3NpdGlv
bigpLngoKSwgLSBkaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLnkoKSk7CisgICAgICAgIGNhaXJvX3Ry
YW5zbGF0ZShncmFwaGljc0NvbnRleHQuZ2V0KCksIC0gcGFnZVBvc2l0aW9uKCkueCgpLCAtIHBh
Z2VQb3NpdGlvbigpLnkoKSk7CiAgICAgICAgIGNhaXJvX3NjYWxlKGdyYXBoaWNzQ29udGV4dC5n
ZXQoKSwgbV9zY2FsZUZhY3RvciwgbV9zY2FsZUZhY3Rvcik7CiAgICAgICAgIHJlbmRlcmVyLT5w
YWludFRvR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dC5nZXQoKSk7CiAgICAgICAgIGV2
YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1hZ2UsIDAsIDAsIHZpZXdwb3J0
LndpZHRoKCksIHZpZXdwb3J0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IGEwYTkyODkuLjAzMzFmODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaApAQCAtMjAyLDcg
KzIwMiw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2NhbGVGYWN0b3I7IH0KIAogICAgIHZvaWQgc2V0UGFnZVBvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcGFnZVBvc2l0aW9uID0gcG9zaXRpb247IH0K
LSAgICBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBkaXNjcmV0ZVBhZ2VQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtX3BhZ2VQb3NpdGlvbik7IH0KKyAgICBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50IHBhZ2VQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVBv
c2l0aW9uOyB9CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBuZWVkcyByZWZhY3RvcmluZyAoc3Bs
aXQgY2FsbGJhY2sgaW52b2tlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4IGU1Njg2OWYuLjgzNGI0OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAK
QEAgLTE3NywxMiArMTc3LDE4IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZURp
ZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9uKQogICAgIGlmIChtX2hh
c1N1c3BlbmRlZENvbnRlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBlbmRW
aXNpYmxlQ29udGVudFJlY3QoY2xhbXBWaWV3cG9ydFRvQ29udGVudHMoY3NzUG9zaXRpb24sIG1f
ZWZmZWN0aXZlU2NhbGUpLCB2aWV3cG9ydFNpemVJbkNvbnRlbnRzQ29vcmRpbmF0ZXMoKSk7Cisg
ICAgLy8gTW9kaWZ5IHRoZSBwb3NpdGlvbiB0byBtYXAgaW50byBkaXNjcmV0ZSBkZXZpY2UgcG9z
aXRpb25zLgorICAgIGRvdWJsZSB4ID0gcm91bmRmKGNzc1Bvc2l0aW9uLngoKSAqIG1fZWZmZWN0
aXZlU2NhbGUpIC8gbV9lZmZlY3RpdmVTY2FsZTsKKyAgICBkb3VibGUgeSA9IHJvdW5kZihjc3NQ
b3NpdGlvbi55KCkgKiBtX2VmZmVjdGl2ZVNjYWxlKSAvIG1fZWZmZWN0aXZlU2NhbGU7CisgICAg
RmxvYXRQb2ludCBkZXZpY2VBbGlnbmVkUG9zKHgsIHkpOworCisgICAgRmxvYXRSZWN0IGVuZFZp
c2libGVDb250ZW50UmVjdChjbGFtcFZpZXdwb3J0VG9Db250ZW50cyhkZXZpY2VBbGlnbmVkUG9z
LCBtX2VmZmVjdGl2ZVNjYWxlKSwgdmlld3BvcnRTaXplSW5Db250ZW50c0Nvb3JkaW5hdGVzKCkp
OworCiAgICAgaWYgKG1fbGFzdEZyYW1lQ292ZXJlZFJlY3QuaW50ZXJzZWN0cyhlbmRWaXNpYmxl
Q29udGVudFJlY3QpKQogICAgICAgICBtX2NsaWVudC0+c2V0Vmlld3BvcnRQb3NpdGlvbihlbmRW
aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7CiAgICAgZWxzZQogICAgICAgICAvLyBLZWVw
IHRoZSB1bmNsYW1wZWQgcG9zaXRpb24gaW4gY2FzZSB0aGUgY29udGVudHMgc2l6ZSBpcyBjaGFu
Z2VkIGxhdGVyIG9uLgotICAgICAgICBhcHBseVBvc2l0aW9uQWZ0ZXJSZW5kZXJpbmdDb250ZW50
cyhjc3NQb3NpdGlvbik7CisgICAgICAgIGFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRl
bnRzKGVuZFZpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKIH0KIAogdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29uc3QgRmxvYXRTaXplJiBu
ZXdTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50TGVnYWN5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRMZWdhY3lJbXBsLmNwcAppbmRleCBjOGIyNmZlLi5lNTY2ODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcApAQCAt
NTAsNyArNTAsNyBAQCB2b2lkIFBhZ2VDbGllbnRMZWdhY3lJbXBsOjpkaWRDb21taXRMb2FkKCkK
IHZvaWQgUGFnZUNsaWVudExlZ2FjeUltcGw6OnVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAg
IG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChJbnRSZWN0KG1fdmlld0ltcGwtPmRpc2NyZXRlUGFnZVBvc2l0aW9uKCksIHNpemUpLCBtX3Zp
ZXdJbXBsLT5zY2FsZUZhY3RvcigpLCBGbG9hdFBvaW50KCkpOworICAgIG1fdmlld0ltcGwtPnBh
Z2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5k
ZWRJbnRQb2ludChtX3ZpZXdJbXBsLT5wYWdlUG9zaXRpb24oKSksIHNpemUpLCBtX3ZpZXdJbXBs
LT5zY2FsZUZhY3RvcigpLCBGbG9hdFBvaW50KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
c2l6ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCmluZGV4IGZlMjkx
MzkuLjU0OTA1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNv
bnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmw6OnNldFZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgY29udGVudHNQb2ludCkKIHsKLSAgICBtX2NvbnRlbnRQb3NpdGlvbiA9IHJvdW5kZWRJ
bnRQb2ludChjb250ZW50c1BvaW50KTsKKyAgICBtX2NvbnRlbnRQb3NpdGlvbiA9IGNvbnRlbnRz
UG9pbnQ7CiAKICAgICBGbG9hdFBvaW50IHBvcyhjb250ZW50c1BvaW50KTsKICAgICBwb3Muc2Nh
bGUoc2NhbGVGYWN0b3IoKSwgc2NhbGVGYWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bC5oCmluZGV4IDFhZTZhNTQuLjM0ZjYxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5n
QXJlYSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSB7IHJldHVybiBt
X3ZpZXdwb3J0U2l6ZTsgfQogICAgIGZsb2F0IHNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV92aWV3SW1wbC0+c2NhbGVGYWN0b3IoKTsgfQotICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnRl
bnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFBvc2l0aW9uOyB9CisgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBjb250ZW50UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRQb3NpdGlvbjsgfQogCiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplKTsKICAgICB2b2lkIHNldFJlbmRlcmVyQWN0aXZlKGJv
b2wpOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgRXdrVmlld0ltcGwqIG1fdmll
d0ltcGw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKLSAgICBXZWJDb3Jl
OjpJbnRQb2ludCBtX2NvbnRlbnRQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1f
Y29udGVudFBvc2l0aW9uOwogICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIG1fY29udHJvbGxl
cjsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178066</attachid>
            <date>2012-12-06 13:12:14 -0800</date>
            <delta_ts>2012-12-06 17:47:14 -0800</delta_ts>
            <desc>Patch (work in progress)</desc>
            <filename>sofar.diff</filename>
            <type>text/plain</type>
            <size>28972</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZDJhMTBhYS4uY2UxNTgxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTUyOSw2ICs1MjksMTAgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNp
emUmIGRlbHRhKQogICAgICAgICBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgPSBGbG9hdFNpemUoKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fc2Nyb2xsUG9zaXRpb25EZWx0YSA9IGRlbHRhOworCisgICAg
Ly8gRklYTUU6IEZvciB0ZXN0aW5nLiBXb3VsZCBiZSBnb29kIHRvIGJyaW5nIHRoZSBvZmZzZXQg
aW4gVUkgcGl4ZWxzIGhlcmUhCisgICAgbV9zY3JvbGxQb3NpdGlvbkRlbHRhID0gRmxvYXRTaXpl
KCk7CisKICAgICBtX3RyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5j
cHAKaW5kZXggMGQ1ZDg5OS4uNTI3ZTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIEFmZmluZVRy
YW5zZm9ybSBFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKIAogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHRyYW5zZm9ybS5zY2FsZSgxIC8gbV9zY2FsZUZh
Y3Rvcik7Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShkaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLngo
KSwgZGlzY3JldGVQYWdlUG9zaXRpb24oKS55KCkpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
cGFnZVBvc2l0aW9uKCkueCgpLCBwYWdlUG9zaXRpb24oKS55KCkpOwogI2VuZGlmCiAKICAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwpAQCAtMzkxLDcgKzM5MSw3IEBA
IHZvaWQgRXdrVmlld0ltcGw6OmRpc3BsYXlUaW1lckZpcmVkKFRpbWVyPEV3a1ZpZXdJbXBsPiop
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgUmVmUHRyPGNhaXJvX3Q+IGdyYXBoaWNz
Q29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlLmdldCgpKSk7Ci0gICAgICAg
IGNhaXJvX3RyYW5zbGF0ZShncmFwaGljc0NvbnRleHQuZ2V0KCksIC0gZGlzY3JldGVQYWdlUG9z
aXRpb24oKS54KCksIC0gZGlzY3JldGVQYWdlUG9zaXRpb24oKS55KCkpOworICAgICAgICBjYWly
b190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtIHBhZ2VQb3NpdGlvbigpLngoKSwg
LSBwYWdlUG9zaXRpb24oKS55KCkpOwogICAgICAgICBjYWlyb19zY2FsZShncmFwaGljc0NvbnRl
eHQuZ2V0KCksIG1fc2NhbGVGYWN0b3IsIG1fc2NhbGVGYWN0b3IpOwogICAgICAgICByZW5kZXJl
ci0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQuZ2V0KCkpOwogICAgICAg
ICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdlLCAwLCAwLCB2aWV3
cG9ydC53aWR0aCgpLCB2aWV3cG9ydC5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBhMGE5Mjg5Li4wMzMxZjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTIw
Miw3ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3NjYWxlRmFjdG9yOyB9CiAKICAgICB2b2lkIHNldFBhZ2VQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3BhZ2VQb3NpdGlvbiA9IHBvc2l0aW9u
OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZGlzY3JldGVQYWdlUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiByb3VuZGVkSW50UG9pbnQobV9wYWdlUG9zaXRpb24pOyB9CisgICAgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCBwYWdlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VQb3NpdGlvbjsgfQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbmVlZHMgcmVmYWN0b3Jpbmcg
KHNwbGl0IGNhbGxiYWNrIGludm9rZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5jcHAKaW5kZXggMzlhYzY3Zi4uYTI4NzZmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBA
QCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmFuaW1hdGlvbkZyYW1lUmVhZHkoKQog
fQogI2VuZGlmCiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkQ2hhbmdlU2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQordm9pZCBMYXllclRyZWVDb29y
ZGluYXRvclByb3h5OjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBw
b3NpdGlvbikKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6
ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24sIG1fcmVuZGVyZXIuZ2V0KCksIHBvc2l0aW9uKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXggZmI1
OGIxYS4uZGJlMmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIHVwZGF0
ZVZpZXdwb3J0KCk7CiAgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKLSAgICB2b2lkIGRpZENo
YW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7Cisg
ICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwb3NpdGlvbik7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVD
YW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7CiAgICAgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQs
IHVpbnQzMl90IGZyb250QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQyYzY5YmIuLmNhZmUzMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgpAQCAtNDAsNyArNDAsNyBAQCBtZXNzYWdlcyAtPiBMYXllclRyZWVDb29y
ZGluYXRvclByb3h5IHsKICAgICBDbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKHVpbnQ2NF90IGlt
YWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQpCiAgICAgRGlk
UmVuZGVyRnJhbWUoV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUsIFdlYkNvcmU6OkludFJl
Y3QgY292ZXJlZFJlY3QpCi0gICAgRGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6SW50
UG9pbnQgcG9zaXRpb24pCisgICAgRGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6Rmxv
YXRQb2ludCBwb3NpdGlvbikKICAgICBTZXRMYXllckFuaW1hdGlvbnModWludDMyX3QgaWQsIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIGFuaW1hdGlvbnMpCiAgICAgU2V0QW5pbWF0
aW9uc0xvY2tlZChib29sIGxvY2tlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwCmluZGV4IGYxZDJiZjAuLjE4NjBmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjphZGp1
c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKCkKICAgICAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIo
aXQtPnZhbHVlKS0+c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGRlbHRhKTsKIH0KIAot
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50
UG9pbnQmIHBvc2l0aW9uKQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hhbmdlU2Nyb2xs
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgbV9wZW5kaW5nUmVu
ZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uID0gcG9zaXRpb247CiB9CkBAIC0zMzMsMTAgKzMz
MywxMSBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKFdlYkxheWVySUQg
aWQsIGNvbnN0IFdlYkxheWVySW5mbyYgbGF5ZXJJbgogICAgIGxheWVyLT5zZXRSZXBsaWNhdGVk
QnlMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLnJlcGxpY2EpKTsKICAgICBsYXllci0+c2V0TWFz
a0xheWVyKGxheWVyQnlJRChsYXllckluZm8ubWFzaykpOwogCisgICAgbGF5ZXItPnNldEFuY2hv
clBvaW50KGxheWVySW5mby5hbmNob3JQb2ludCk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKGxh
eWVySW5mby5wb3MpOwogICAgIGxheWVyLT5zZXRTaXplKGxheWVySW5mby5zaXplKTsKKwogICAg
IGxheWVyLT5zZXRUcmFuc2Zvcm0obGF5ZXJJbmZvLnRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnNl
dEFuY2hvclBvaW50KGxheWVySW5mby5hbmNob3JQb2ludCk7CiAgICAgbGF5ZXItPnNldENoaWxk
cmVuVHJhbnNmb3JtKGxheWVySW5mby5jaGlsZHJlblRyYW5zZm9ybSk7CiAgICAgbGF5ZXItPnNl
dEJhY2tmYWNlVmlzaWJpbGl0eShsYXllckluZm8uYmFja2ZhY2VWaXNpYmxlKTsKICAgICBsYXll
ci0+c2V0Q29udGVudHNPcGFxdWUobGF5ZXJJbmZvLmNvbnRlbnRzT3BhcXVlKTsKQEAgLTQ0OSw2
ICs0NTAsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogICAgICAgICByZXR1cm47IC8vIFRo
ZSBsYXllciBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUgKGFuZCBubyBwZW5kaW5nIHJlbW92
YWwpLgogCiAgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUo
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKKwogICAgIGJhY2tpbmdTdG9yZS0+
c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKICAgICBtX3BlbmRpbmdTeW5jQmFja2lu
Z1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuaAppbmRleCA5NDZhYzZkLi43NDRjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRUb0dyYXBo
aWNzQ29udGV4dChCYWNraW5nU3RvcmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KTsKICAgICB2
b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lk
IHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0gICAg
dm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9z
aXRpb24pOworICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9zaXRpb24pOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZv
aWQgY3JlYXRlQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3luY0NhbnZhcyhX
ZWJMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CkBAIC0xODUsOCArMTg1LDggQEAgcHJp
dmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViTGF5ZXJJRCwgV2ViQ29yZTo6R3JhcGhpY3NM
YXllcio+IExheWVyUmF3UHRyTWFwOwogICAgIExheWVyUmF3UHRyTWFwIG1fZml4ZWRMYXllcnM7
CiAgICAgV2ViTGF5ZXJJRCBtX3Jvb3RMYXllcklEOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1f
cmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1f
cGVuZGluZ1JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IG1fcmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOworICAgIFdlYkNvcmU6OkZs
b2F0UG9pbnQgbV9wZW5kaW5nUmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOwogICAgIGJv
b2wgbV9hbmltYXRpb25zTG9ja2VkOwogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKICAgICBib29sIG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKaW5kZXggZTU2ODY5
Zi4uMWEyYmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmNwcApAQCAtMTcxLDE4ICsxNzEsMzYgQEAgdm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQogICAgIG1fd2ViUGFn
ZVByb3h5LT5jb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCk7CiB9CiAKKyNpZiBQTEFURk9S
TShFRkwpCitzdGF0aWMgRmxvYXRQb2ludCBkZXZpY2VBbGlnbmVkRmxvYXRQb2ludChjb25zdCBG
bG9hdFBvaW50JiBwb3MsIGZsb2F0IGVmZmVjdGl2ZVNjYWxlKQoreworICAgIC8vIFRvIGF2b2lk
IGJsdXJyeW5lc3MsIG1vZGlmeSB0aGUgcG9zaXRpb24gc28gdGhhdCBpdCBtYXBzIGludG8gYSBk
aXNjcmV0ZSBkZXZpY2UgcG9zaXRpb24uCisgICAgZG91YmxlIHggPSByb3VuZGYocG9zLngoKSAq
IGVmZmVjdGl2ZVNjYWxlKSAvIGVmZmVjdGl2ZVNjYWxlOworICAgIGRvdWJsZSB5ID0gcm91bmRm
KHBvcy55KCkgKiBlZmZlY3RpdmVTY2FsZSkgLyBlZmZlY3RpdmVTY2FsZTsKKworICAgIHJldHVy
biBGbG9hdFBvaW50KHgsIHkpOworfQorI2VuZGlmCisKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9uKQog
ewogICAgIC8vIElnbm9yZSB0aGUgcmVxdWVzdCBpZiBzdXNwZW5kZWQuIENhbiBvbmx5IGhhcHBl
biBkdWUgdG8gZGVsYXkgaW4gZXZlbnQgZGVsaXZlcnkuCiAgICAgaWYgKG1faGFzU3VzcGVuZGVk
Q29udGVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGVuZFZpc2libGVDb250
ZW50UmVjdChjbGFtcFZpZXdwb3J0VG9Db250ZW50cyhjc3NQb3NpdGlvbiwgbV9lZmZlY3RpdmVT
Y2FsZSksIHZpZXdwb3J0U2l6ZUluQ29udGVudHNDb29yZGluYXRlcygpKTsKKyAgICBGbG9hdFBv
aW50IG5ld1Bvc2l0aW9uKGNzc1Bvc2l0aW9uKTsKKworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBu
ZXdQb3NpdGlvbiA9IGRldmljZUFsaWduZWRGbG9hdFBvaW50KG5ld1Bvc2l0aW9uLCBtX2VmZmVj
dGl2ZVNjYWxlKTsKKyNlbmRpZgorCisgICAgRmxvYXRSZWN0IGVuZFZpc2libGVDb250ZW50UmVj
dChjbGFtcFZpZXdwb3J0VG9Db250ZW50cyhuZXdQb3NpdGlvbiwgbV9lZmZlY3RpdmVTY2FsZSks
IHZpZXdwb3J0U2l6ZUluQ29udGVudHNDb29yZGluYXRlcygpKTsKKwogICAgIGlmIChtX2xhc3RG
cmFtZUNvdmVyZWRSZWN0LmludGVyc2VjdHMoZW5kVmlzaWJsZUNvbnRlbnRSZWN0KSkKICAgICAg
ICAgbV9jbGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24oZW5kVmlzaWJsZUNvbnRlbnRSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgIGVsc2UKICAgICAgICAgLy8gS2VlcCB0aGUgdW5jbGFtcGVkIHBvc2l0
aW9uIGluIGNhc2UgdGhlIGNvbnRlbnRzIHNpemUgaXMgY2hhbmdlZCBsYXRlciBvbi4KLSAgICAg
ICAgYXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVudHMoY3NzUG9zaXRpb24pOworICAg
ICAgICBhcHBseVBvc2l0aW9uQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhlbmRWaXNpYmxlQ29udGVu
dFJlY3QubG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlk
Q2hhbmdlVmlld3BvcnRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKaW5k
ZXggYzhiMjZmZS4uZTU2Njg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBQ
YWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFBhZ2VDbGllbnRMZWdh
Y3lJbXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkK
IHsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCkt
PmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoSW50UmVjdChtX3ZpZXdJbXBs
LT5kaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLCBzaXplKSwgbV92aWV3SW1wbC0+c2NhbGVGYWN0b3Io
KSwgRmxvYXRQb2ludCgpKTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCkt
PnNldFZpc2libGVDb250ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50UG9pbnQobV92aWV3SW1w
bC0+cGFnZVBvc2l0aW9uKCkpLCBzaXplKSwgbV92aWV3SW1wbC0+c2NhbGVGYWN0b3IoKSwgRmxv
YXRQb2ludCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNpemUpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAppbmRleCBmZTI5MTM5Li5kMTZjNDFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKQEAgLTc1LDEyICs3NSwxNCBAQCB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNl
dFZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2lu
dCkKIHsKLSAgICBtX2NvbnRlbnRQb3NpdGlvbiA9IHJvdW5kZWRJbnRQb2ludChjb250ZW50c1Bv
aW50KTsKKyAgICBtX2NvbnRlbnRQb3NpdGlvbiA9IGNvbnRlbnRzUG9pbnQ7CiAKICAgICBGbG9h
dFBvaW50IHBvcyhjb250ZW50c1BvaW50KTsKICAgICBwb3Muc2NhbGUoc2NhbGVGYWN0b3IoKSwg
c2NhbGVGYWN0b3IoKSk7CiAgICAgbV92aWV3SW1wbC0+c2V0UGFnZVBvc2l0aW9uKHBvcyk7CiAK
KyAgICBwcmludGYoInBhZ2UgcG9zICVmICVmIC0+IGNzcyAlZiAlZlxuIiwgcG9zLngoKSwgcG9z
LnkoKSwgcm91bmRmKGNvbnRlbnRzUG9pbnQueCgpKSwgcm91bmRmKGNvbnRlbnRzUG9pbnQueSgp
KSk7CisKICAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX2Nv
bnRlbnRQb3NpdGlvbiwgc2NhbGVGYWN0b3IoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsLmgKaW5kZXggMWFlNmE1NC4uMzRmNjEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdp
bmdBcmVhKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJu
IG1fdmlld3BvcnRTaXplOyB9CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdJbXBsLT5zY2FsZUZhY3RvcigpOyB9Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgY29u
dGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UG9zaXRpb247IH0KKyAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50IGNvbnRlbnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudFBvc2l0aW9uOyB9CiAKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogICAgIHZvaWQgc2V0UmVuZGVyZXJBY3RpdmUo
Ym9vbCk7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBFd2tWaWV3SW1wbCogbV92
aWV3SW1wbDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIFdlYkNv
cmU6OkludFBvaW50IG1fY29udGVudFBvc2l0aW9uOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV9jb250ZW50UG9zaXRpb247CiAgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciogbV9jb250cm9s
bGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMzk5MDEyNy4uYjBiMGI4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CkBAIC0xMDEsNiArMTAxLDE3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRT
aG91bGRVcGRhdGVWaXNpYmxlUmVjdCgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpkaWRDaGFuZ2VHZW9tZXRyeSgpCiB7CisgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9u
OworICAgIEZsb2F0UG9pbnQzRCBhZGp1c3RlZEFuY2hvclBvaW50OworICAgIEZsb2F0U2l6ZSBh
ZGp1c3RlZFNpemU7CisgICAgRmxvYXRTaXplIHBpeGVsQWxpZ25tZW50T2Zmc2V0OworICAgIGNv
bXB1dGVQaXhlbEFsaWdubWVudChhZGp1c3RlZFBvc2l0aW9uLCBhZGp1c3RlZFNpemUsIGFkanVz
dGVkQW5jaG9yUG9pbnQsIHBpeGVsQWxpZ25tZW50T2Zmc2V0KTsKKworICAgIG1fYWRqdXN0ZWRQ
b3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247CisgICAgbV9hZGp1c3RlZFNpemUgPSBhZGp1c3Rl
ZFNpemU7CisgICAgbV9hZGp1c3RlZEFuY2hvclBvaW50ID0gYWRqdXN0ZWRBbmNob3JQb2ludDsK
KyAgICBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0ID0gcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7CisKICAg
ICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiAgICAgc2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3Qo
KTsKIH0KQEAgLTUxNCw3ICs1MjUsNiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c3luY0xheWVyU3RhdGUoKQogICAgIG1fc2hvdWxkU3luY0xheWVyU3RhdGUgPSBmYWxzZTsKICAg
ICBtX2xheWVySW5mby5maXhlZFRvVmlld3BvcnQgPSBmaXhlZFRvVmlld3BvcnQoKTsKIAotICAg
IG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQoKTsKICAgICBtX2xheWVySW5m
by5iYWNrZmFjZVZpc2libGUgPSBiYWNrZmFjZVZpc2liaWxpdHkoKTsKICAgICBtX2xheWVySW5m
by5jaGlsZHJlblRyYW5zZm9ybSA9IGNoaWxkcmVuVHJhbnNmb3JtKCk7CiAgICAgbV9sYXllcklu
Zm8uY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZSgpOwpAQCAtNTI0LDExICs1MzQsMTQg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBt
X2xheWVySW5mby5tYXNrID0gdG9XZWJMYXllcklEKG1hc2tMYXllcigpKTsKICAgICBtX2xheWVy
SW5mby5tYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kcygpOwogICAgIG1fbGF5ZXJJbmZvLm9w
YWNpdHkgPSBvcGFjaXR5KCk7Ci0gICAgbV9sYXllckluZm8ucG9zID0gcG9zaXRpb24oKTsKICAg
ICBtX2xheWVySW5mby5wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEKCk7CiAgICAgbV9sYXllcklu
Zm8ucmVwbGljYSA9IHRvV2ViTGF5ZXJJRChyZXBsaWNhTGF5ZXIoKSk7Ci0gICAgbV9sYXllcklu
Zm8uc2l6ZSA9IHNpemUoKTsKICAgICBtX2xheWVySW5mby50cmFuc2Zvcm0gPSB0cmFuc2Zvcm0o
KTsKKworICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gbV9hZGp1c3RlZEFuY2hvclBvaW50
OworICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsKKyAgICBtX2xheWVy
SW5mby5zaXplID0gbV9hZGp1c3RlZFNpemU7CisKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5
ZXJTdGF0ZShtX2lkLCBtX2xheWVySW5mbyk7CiB9CiAKQEAgLTcwOSw3ICs3MjIsNyBAQCBJbnRS
ZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVj
dCgpCiAgICAgLy8gVGhlIHJlc3VsdGluZyBxdWFkIG1pZ2h0IGJlIHNxdWV3ZWQgYW5kIHRoZSB2
aXNpYmxlIHJlY3QgaXMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIHF1YWQsCiAgICAgLy8gc28g
aXQgbWlnaHQgc3ByZWFkIGZ1cnRoZXIgdGhhbiB0aGUgcmVhbCB2aXNpYmxlIGFyZWEgKGFuZCB0
aGVuIGV2ZW4gbW9yZSBhbXBsaWZpZWQgYnkgdGhlIGNvdmVyIHJlY3QgbXVsdGlwbGllcikuCiAg
ICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNv
bWJpbmVkKCkuaW52ZXJzZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdCA9IG1fY2FjaGVkSW52ZXJz
ZVRyYW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFkKEZsb2F0UXVhZChGbG9hdFJl
Y3QobV9jb29yZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpKSkpOworICAgIEZsb2F0UmVj
dCByZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3Rl
ZFF1YWQoRmxvYXRRdWFkKG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwog
ICAgIGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHRpbGVkQmFja2lu
Z1N0b3JlQ29udGVudHNSZWN0KCkpOwogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3Qp
OwogfQpAQCAtODA1LDYgKzgxOCw5MiBAQCBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
aGFzUGVuZGluZ1Zpc2libGVDaGFuZ2VzKCkKICAgICByZXR1cm4gdGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdCgpLmludGVyc2VjdHModGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ludGVncmFsKGZsb2F0IHZhbHVlKQoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSA9PSB2YWx1ZTsKK30KKworRmxvYXRQb2lu
dCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNl
KCkKK3sKKyAgICBGbG9hdFBvaW50IG9mZnNldDsKKyAgICBmb3IgKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGN1cnJMYXllciA9IHRoaXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5w
YXJlbnQoKSkKKyAgICAgICAgb2Zmc2V0ICs9IGN1cnJMYXllci0+cG9zaXRpb24oKTsKKworICAg
IHJldHVybiBvZmZzZXQ7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21w
dXRlUGl4ZWxBbGlnbm1lbnQoRmxvYXRQb2ludCYgcG9zaXRpb24sIEZsb2F0U2l6ZSYgc2l6ZSwg
RmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCwgRmxvYXRTaXplJiBhbGlnbm1lbnRPZmZzZXQpCit7
CisgICAgaWYgKGlzSW50ZWdyYWwoZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKSkgeworICAgICAg
ICBwb3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgICAgIHNpemUgPSBtX3NpemU7CisgICAgICAg
IGFuY2hvclBvaW50ID0gbV9hbmNob3JQb2ludDsKKyAgICAgICAgYWxpZ25tZW50T2Zmc2V0ID0g
RmxvYXRTaXplKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcmludGYoIm93biBw
b3MgJWYsJWZcbiIsIHRoaXMtPnBvc2l0aW9uKCkueCgpLCB0aGlzLT5wb3NpdGlvbigpLnkoKSk7
CisKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UgPSBjb21wdXRlUG9zaXRp
b25SZWxhdGl2ZVRvQmFzZSgpOworLy8gICAgcHJpbnRmKCJyZWxhdGl2ZSB0byBiYXNlICVmLCVm
XG4iLCBwb3NpdGlvblJlbGF0aXZlVG9CYXNlLngoKSwgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZS55
KCkpOworCisgICAgRmxvYXRSZWN0IGJhc2VSZWxhdGl2ZUJvdW5kcyhwb3NpdGlvblJlbGF0aXZl
VG9CYXNlLCBtX3NpemUpOworICAgIEZsb2F0UmVjdCBzY2FsZWRCb3VuZHMgPSBiYXNlUmVsYXRp
dmVCb3VuZHM7CisKKyAgLy8gIHByaW50ZigiXG5iYXNlOlx0JWYsJWYgJWZ4JWZcbiIsIHNjYWxl
ZEJvdW5kcy54KCksIHNjYWxlZEJvdW5kcy55KCksIHNjYWxlZEJvdW5kcy53aWR0aCgpLCBzY2Fs
ZWRCb3VuZHMuaGVpZ2h0KCkpOworCisgICAgLy8gU2NhbGUgYnkgdGhlIHBhZ2Ugc2NhbGUgZmFj
dG9yIHRvIGNvbXB1dGUgdGhlIHNjcmVlbi1yZWxhdGl2ZSBib3VuZHMuCisgICAgc2NhbGVkQm91
bmRzLnNjYWxlKGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CisKKyAgICAvL3ByaW50Zigic2Nh
bGU6XHQlZiwlZiAlZnglZlxuIiwgc2NhbGVkQm91bmRzLngoKSwgc2NhbGVkQm91bmRzLnkoKSwg
c2NhbGVkQm91bmRzLndpZHRoKCksIHNjYWxlZEJvdW5kcy5oZWlnaHQoKSk7CisKKyAgICAvLyBS
b3VuZCB0byBpbnRlZ2VyIGJvdW5kYXJpZXMuCisgICAgLy8gTk9URShERUJVRyk6IFdoZW4gc3Vp
bmcgZW5jbG9zaW5nSW50UmVjdCAoYXMgbWFjKSBpdCB3aWxsIGhhdmUgZGlmZmVyZW50IHNpemVz
IGRlcGVuZGluZyBvbiBwb3NpdGlvbi4KKyAgICBGbG9hdFJlY3QgYWxpZ25lZEJvdW5kcyA9IHJv
dW5kZWRJbnRSZWN0KHNjYWxlZEJvdW5kcyk7CisgICAgLy9GbG9hdFJlY3QgYWxpZ25lZEJvdW5k
cyA9IGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkQm91bmRzKTsKKworICAgIC8vcHJpbnRmKCJhbGln
bjpcdCVmLCVmICVmeCVmXG4iLCBhbGlnbmVkQm91bmRzLngoKSwgYWxpZ25lZEJvdW5kcy55KCks
IGFsaWduZWRCb3VuZHMud2lkdGgoKSwgYWxpZ25lZEJvdW5kcy5oZWlnaHQoKSk7CisgICAgLy8g
Q29udmVydCBiYWNrIHRvIGxheWVyIGNvb3JkaW5hdGVzLgorICAgIGFsaWduZWRCb3VuZHMuc2Nh
bGUoMSAvIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CisKKyAgIC8vIHByaW50ZigiZmluYWw6
XHQlZiwlZiAlZnglZlxuXG4iLCBhbGlnbmVkQm91bmRzLngoKSwgYWxpZ25lZEJvdW5kcy55KCks
IGFsaWduZWRCb3VuZHMud2lkdGgoKSwgYWxpZ25lZEJvdW5kcy5oZWlnaHQoKSk7CisKKyAgICAv
LyBDb252ZXJ0IGJhY2sgdG8gbGF5ZXIgY29vcmRpbmF0ZXMuCisgICAgYWxpZ25tZW50T2Zmc2V0
ID0gYmFzZVJlbGF0aXZlQm91bmRzLmxvY2F0aW9uKCkgLSBhbGlnbmVkQm91bmRzLmxvY2F0aW9u
KCk7CisKKyAgICAvL3ByaW50ZigibGF5ZXIgYWxpZ24gb2Zmc2V0ICVmLyVmXG4iLCBhbGlnbm1l
bnRPZmZzZXQud2lkdGgoKSwgYWxpZ25tZW50T2Zmc2V0LmhlaWdodCgpKTsKKworICAgIHBvc2l0
aW9uID0gbV9wb3NpdGlvbiAtIGFsaWdubWVudE9mZnNldDsKKyAgICBzaXplID0gYWxpZ25lZEJv
dW5kcy5zaXplKCk7CisKKyAgICAvL3ByaW50Zigib3JpZyAgJWYsJWYgJWZ4JWZcbiIsIG1fcG9z
aXRpb24ueCgpLCBtX3Bvc2l0aW9uLnkoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQo
KSk7CisKKyAgICAvL3ByaW50ZigiZmluYWwgJWYsJWYgJWZ4JWZcbiIsIHBvc2l0aW9uLngoKSwg
cG9zaXRpb24ueSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgZmxvYXQg
cyA9IGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKTsKKyAgICBwcmludGYoIkZJTkFMIFVJICVmLCVm
ICVmeCVmXG4iLCByb3VuZGYoKHBvc2l0aW9uLngoKSAtIGRlYnVnUG9zLngoKSkgKiBzKSwgcm91
bmRmKChwb3NpdGlvbi55KCkgLSBkZWJ1Z1Bvcy55KCkpICogcyksIHJvdW5kZihzaXplLndpZHRo
KCkgKiBzKSwgcm91bmRmKHNpemUuaGVpZ2h0KCkgKiBzKSk7CisKKyAgICAvLyBOb3cgd2UgaGF2
ZSB0byBjb21wdXRlIGEgbmV3IGFuY2hvciBwb2ludCB3aGljaCBjb21wZW5zYXRlcyBmb3Igcm91
bmRpbmcuCisgICAgZmxvYXQgYW5jaG9yUG9pbnRYID0gbV9hbmNob3JQb2ludC54KCk7CisgICAg
ZmxvYXQgYW5jaG9yUG9pbnRZID0gbV9hbmNob3JQb2ludC55KCk7CisKKyAgICBpZiAoYWxpZ25l
ZEJvdW5kcy53aWR0aCgpKQorICAgICAgICBhbmNob3JQb2ludFggPSAoYmFzZVJlbGF0aXZlQm91
bmRzLndpZHRoKCkgKiBhbmNob3JQb2ludFggKyBhbGlnbm1lbnRPZmZzZXQud2lkdGgoKSkgLyBh
bGlnbmVkQm91bmRzLndpZHRoKCk7CisKKyAgICBpZiAoYWxpZ25lZEJvdW5kcy5oZWlnaHQoKSkK
KyAgICAgICAgYW5jaG9yUG9pbnRZID0gKGJhc2VSZWxhdGl2ZUJvdW5kcy5oZWlnaHQoKSAqIGFu
Y2hvclBvaW50WSArIGFsaWdubWVudE9mZnNldC5oZWlnaHQoKSkgLyBhbGlnbmVkQm91bmRzLmhl
aWdodCgpOworCisgICAgYW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QoYW5jaG9yUG9pbnRYLCBh
bmNob3JQb2ludFksIG1fYW5jaG9yUG9pbnQueigpICogZWZmZWN0aXZlQ29udGVudHNTY2FsZSgp
KTsKKworICAgIC8vIFdJVEhPVVQgVEhJUyBJVCBJUyBTVVBFUiBTSEFSUAorICAgIC8vIFVwZGF0
ZSBwb3NpdGlvbjogUG9zaXRpb24gaXMgb2Zmc2V0IG9uIHRoZSBsYXllciBieSB0aGUgbGF5ZXIg
YW5jaG9yIHBvaW50LgorLy8gICAgcG9zaXRpb24gPSBGbG9hdFBvaW50KHBvc2l0aW9uLngoKSAr
IGFuY2hvclBvaW50LngoKSAqIHNpemUud2lkdGgoKSwgcG9zaXRpb24ueSgpICsgYW5jaG9yUG9p
bnQueSgpICogc2l6ZS5oZWlnaHQoKSk7CisKKyAgIC8vIHByaW50ZigiYW5jaG9yICVmLCVmLCVm
ICAtICVmLCVmLCVmXG4iLCBtX2FuY2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCksIG1f
YW5jaG9yUG9pbnQueigpLCBhbmNob3JQb2ludC54KCksIGFuY2hvclBvaW50LnkoKSwgYW5jaG9y
UG9pbnQueigpKTsKKworICAgIC8vcHJpbnRmKCIgLS0tLS0gXG5cbiIpOworfQorCiB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQog
ewogICAgIC8vIFdoZW4gd2UgaGF2ZSBhIHRyYW5zZm9ybSBhbmltYXRpb24sIHdlIG5lZWQgdG8g
dXBkYXRlIHZpc2libGUgcmVjdCBldmVyeSBmcmFtZSB0byBhZGp1c3QgdGhlIHZpc2libGUgcmVj
dCBvZiBhIGJhY2tpbmcgc3RvcmUuCkBAIC04MTcsMTIgKzkxNiwxNSBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIGlm
IChoYXNBY3RpdmVUcmFuc2Zvcm1BbmltYXRpb24pCiAgICAgICAgIGNsaWVudCgpLT5nZXRDdXJy
ZW50VHJhbnNmb3JtKHRoaXMsIGN1cnJlbnRUcmFuc2Zvcm0pOwogICAgIG1fbGF5ZXJUcmFuc2Zv
cm0uc2V0TG9jYWxUcmFuc2Zvcm0oY3VycmVudFRyYW5zZm9ybSk7Ci0gICAgbV9sYXllclRyYW5z
Zm9ybS5zZXRQb3NpdGlvbihwb3NpdGlvbigpKTsKLSAgICBtX2xheWVyVHJhbnNmb3JtLnNldEFu
Y2hvclBvaW50KGFuY2hvclBvaW50KCkpOwotICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0U2l6ZShz
aXplKCkpOworCisgICAgbV9sYXllclRyYW5zZm9ybS5zZXRBbmNob3JQb2ludChtX2FkanVzdGVk
QW5jaG9yUG9pbnQpOworICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0UG9zaXRpb24obV9hZGp1c3Rl
ZFBvc2l0aW9uKTsKKyAgICBtX2xheWVyVHJhbnNmb3JtLnNldFNpemUobV9hZGp1c3RlZFNpemUp
OworCiAgICAgbV9sYXllclRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFwcmVzZXJ2ZXMzRCgpKTsK
ICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNm
b3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50KCkg
PyB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihwYXJlbnQoKSktPm1fbGF5ZXJUcmFuc2Zvcm0u
Y29tYmluZWRGb3JDaGlsZHJlbigpIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisKICAgICBt
X2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4g
dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggODIwZGI5Yi4uN2NjMDlk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
VGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlEKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJh
Y2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y0xheWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJikgPSAwOwpAQCAtODks
NiArODksOCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIoKTsKIAorICAgIEZsb2F0UG9pbnQgZGVidWdQb3M7CisKICAgICAvLyBSZWltcGxlbWVu
dGF0aW9ucyBmcm9tIEdyYXBoaWNzTGF5ZXIuaC4KICAgICB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRy
ZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKikgT1ZFUlJJREU7CkBAIC0xMjgsNyArMTMwLDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmlu
ZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUg
dGltZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKSBPVkVS
UklERTsKLSAgICAKKworICAgIEZsb2F0UG9pbnQgY29tcHV0ZVBvc2l0aW9uUmVsYXRpdmVUb0Jh
c2UoKTsKKyAgICB2b2lkIGNvbXB1dGVQaXhlbEFsaWdubWVudChGbG9hdFBvaW50JiBwb3NpdGlv
biwgRmxvYXRTaXplJiBzaXplLCBGbG9hdFBvaW50M0QmIGFuY2hvclBvaW50LCBGbG9hdFNpemUm
IGFsaWdubWVudE9mZnNldCk7CisKICAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwog
ICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9h
dFBvaW50Jik7CiAKQEAgLTIwOSw2ICsyMTQsMTEgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6Oldl
YkxheWVySW5mbyBtX2xheWVySW5mbzsKICAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fbGF5
ZXJUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9jYWNoZWRJbnZlcnNlVHJh
bnNmb3JtOworICAgIEZsb2F0U2l6ZSBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OworICAgIEZsb2F0
U2l6ZSBtX2FkanVzdGVkU2l6ZTsKKyAgICBGbG9hdFBvaW50IG1fYWRqdXN0ZWRQb3NpdGlvbjsK
KyAgICBGbG9hdFBvaW50M0QgbV9hZGp1c3RlZEFuY2hvclBvaW50OworCiAgICAgYm9vbCBtX2lu
VXBkYXRlTW9kZSA6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAxOwog
ICAgIGJvb2wgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCBjN2Y4YTJjLi5lYjRj
ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwCkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
cmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVVcGRhdGVBdGxhcyhhdGxhc0lE
KSk7CiB9CiAKLVdlYkNvcmU6OkludFJlY3QgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVD
b250ZW50c1JlY3QoKSBjb25zdAorV2ViQ29yZTo6RmxvYXRSZWN0IExheWVyVHJlZUNvb3JkaW5h
dG9yOjp2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV92aXNpYmxl
Q29udGVudHNSZWN0OwogfQpAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OnNldExheWVyQW5pbWF0aW9ucyhXZWJMYXllcklEIGxheWVySUQsIGNvbnN0IEdyYXBo
aWNzCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpTZXRMYXllckFuaW1hdGlvbnMobGF5ZXJJRCwgYWN0aXZlQW5pbWF0aW9ucykpOwogfQog
Ci12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5
VmVjdG9yKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0
cmFqZWN0b3J5VmVjdG9yKQogewogICAgIGJvb2wgY29udGVudHNSZWN0RGlkQ2hhbmdlID0gcmVj
dCAhPSBtX3Zpc2libGVDb250ZW50c1JlY3Q7CiAgICAgYm9vbCBjb250ZW50c1NjYWxlRGlkQ2hh
bmdlID0gc2NhbGUgIT0gbV9jb250ZW50c1NjYWxlOwpAQCAtNzA5LDYgKzcwOSw3IEBAIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCwgZmxvYXQgc2NhCiAKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgp
OwogICAgICAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Kj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICAgICAgKCppdCktPmRlYnVnUG9zID0gbV92aXNpYmxlQ29udGVudHNS
ZWN0LmxvY2F0aW9uKCk7CiAgICAgICAgICAgICBpZiAoY29udGVudHNTY2FsZURpZENoYW5nZSkK
ICAgICAgICAgICAgICAgICAoKml0KS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7CiAgICAgICAg
ICAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKQpAQCAtNzE4LDcgKzcxOSw3IEBAIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCwgZmxvYXQgc2NhCiAKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKICAgICBpZiAo
bV93ZWJQYWdlLT51c2VGaXhlZExheW91dCgpKQotICAgICAgICBtX3dlYlBhZ2UtPnNldEZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpOworICAgICAgICBtX3dlYlBhZ2UtPnNldEZpeGVkVmlz
aWJsZUNvbnRlbnRSZWN0KHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsKICAgICBpZiAoY29udGVudHNS
ZWN0RGlkQ2hhbmdlKQogICAgICAgICBtX3Nob3VsZFNlbmRTY3JvbGxQb3NpdGlvblVwZGF0ZSA9
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuaAppbmRleCBmMDRiNTA4Li42NTkxZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTgxLDExICs4MSwxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCwg
Y29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgU3Vy
ZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCk7Ci0gICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdT
dG9yZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7
CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVj
b2RlciYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JVSVByb2Nlc3M7CiAgICAgYm9vbCBtX2lzU3VzcGVu
ZGVkOwotICAgIFdlYkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OworICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250ZW50c1JlY3Q7CiAgICAgZmxvYXQgbV9jb250
ZW50c1NjYWxlOwogICAgIGJvb2wgbV9zaG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IubWVzc2FnZXMuaW4KaW5kZXggNmFjMzcyNS4uMTYzNmU3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IubWVzc2Fn
ZXMuaW4KQEAgLTEsNSArMSw2IEBACiAjCiAjICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyMgICAgQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAjICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yMCw3ICsyMSw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiBtZXNzYWdlcyAtPiBMYXllclRyZWVDb29yZGluYXRvciB7Ci0gICAgU2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQorICAgIFNldFZp
c2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3Qs
IGZsb2F0IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQogICAg
IFJlbmRlck5leHRGcmFtZSgpCiAgICAgUHVyZ2VCYWNraW5nU3RvcmVzKCkKICNpZiBFTkFCTEUo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCBhMjk5ODNlLi5kNGQ1ZWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAg
LTM5LDYgKzM5LDcgQEAgY2xhc3MgTWVzc2FnZUlEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IEludFNpemU7CiBjbGFzcyBHcmFwaGljc0xheWVyOwpAQCAtOTIsOCArOTMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYpIHsgfQogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCAv
KiBzY2FsZSAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0Rm9yTGF5ZXIoaW50IC8qIGxheWVySUQgKi8sIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCAvKiBzY2FsZSAqLywg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJO
ZXh0RnJhbWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvck1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>178067</attachid>
            <date>2012-12-06 13:12:35 -0800</date>
            <delta_ts>2012-12-06 13:12:35 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>fixed-position.html</filename>
            <type>text/html</type>
            <size>965</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">PGh0bWw+PGhlYWQ+Cgo8c3R5bGU+Ci5kMXtwb3NpdGlvbjpmaXhlZDt0b3A6LXdlYmtpdC1jYWxj
KDUwJSAtIDUwcHgpO2xlZnQ6MTAwcHg7ei1pbmRleDoyO292ZXJmbG93OmhpZGRlbjt9Ci5vIHti
YWNrZ3JvdW5kOmdyZWVuO2hlaWdodDo1MHB4O3dpZHRoOjIwMHB4O30KLnQgeyB3aWR0aDoxMjMz
cHg7IGhlaWdodDoxOThweDtiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7IGJvcmRlcjogMXB4
IHNvbGlkIGJsdWU7fQpib2R5IHsgbWFyZ2luOiAwcHg7IH0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9k
eSBjbGFzcz0iR3JhZGllbnQiPgogICAgPGRpdiBjbGFzcz0iZDEiIGlkPSJkMSI+PGRpdiBjbGFz
cz0ibyI+VGhpcyBpcyBhIHRlc3Q8L2Rpdj48L2Rpdj4KMDAwCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0
Ij4KMjAwPGJyPgo8L2Rpdj4KPGRpdiBjbGFzcz0idCI+CjQwMDxicj4KPC9kaXY+CjxkaXYgY2xh
c3M9InQiPgo2MDAKPC9kaXY+CjxkaXYgY2xhc3M9InQiPgo4MDAKPC9kaXY+CjxkaXYgY2xhc3M9
InQiPgoxMDAwCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0Ij4KMTIwMAo8L2Rpdj4KPGRpdiBjbGFzcz0i
dCI+CjE0MDAKPC9kaXY+CjxkaXYgY2xhc3M9InQiPgoxNjAwCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0
Ij4KMTgwMAo8L2Rpdj4KPGRpdiBjbGFzcz0idCI+CjIwMDAKPC9kaXY+CjxkaXYgY2xhc3M9InQi
PgoyMjAwCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0Ij4KMjQwMAo8L2Rpdj4KPGRpdiBjbGFzcz0idCI+
CjI2MDAKPC9kaXY+CjxkaXYgY2xhc3M9InQiPgoyODAwCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0Ij4K
MzAwMAo8L2Rpdj4KPGRpdiBjbGFzcz0idCI+CjMyMDAKPC9kaXY+CjxkaXYgY2xhc3M9InQiPgoz
NDAwCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0Ij4KMzYwMAo8L2Rpdj4KPGRpdiBjbGFzcz0idCI+CjM4
MDAKPC9kaXY+CjxkaXYgY2xhc3M9InQiPgo0MDAwCjwvZGl2Pgo8L2JvZHk+PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178123</attachid>
            <date>2012-12-06 17:47:14 -0800</date>
            <delta_ts>2012-12-07 07:29:21 -0800</delta_ts>
            <desc>Patch (work in progress)</desc>
            <filename>latest.diff</filename>
            <type>text/plain</type>
            <size>32120</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZDJhMTBhYS4uOGFhMGU1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTUyOSw2ICs1MjksMTAgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNp
emUmIGRlbHRhKQogICAgICAgICBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgPSBGbG9hdFNpemUoKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fc2Nyb2xsUG9zaXRpb25EZWx0YSA9IGRlbHRhOworCisgICAg
Ly8gRklYTUU6IEZvciB0ZXN0aW5nLiBXb3VsZCBiZSBnb29kIHRvIGJyaW5nIHRoZSBvZmZzZXQg
aW4gVUkgcGl4ZWxzIGhlcmUhCisgICAgLy9tX3Njcm9sbFBvc2l0aW9uRGVsdGEgPSBGbG9hdFNp
emUoKTsKKwogICAgIG1fdHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
LmNwcAppbmRleCAwZDVkODk5Li41MjdlOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgQWZmaW5l
VHJhbnNmb3JtIEV3a1ZpZXdJbXBsOjp0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAogCiAjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdHJhbnNmb3JtLnNjYWxlKDEgLyBtX3NjYWxl
RmFjdG9yKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGRpc2NyZXRlUGFnZVBvc2l0aW9uKCku
eCgpLCBkaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLnkoKSk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0
ZShwYWdlUG9zaXRpb24oKS54KCksIHBhZ2VQb3NpdGlvbigpLnkoKSk7CiAjZW5kaWYKIAogICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CkBAIC0zOTEsNyArMzkxLDcg
QEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmlyZWQoVGltZXI8RXdrVmlld0ltcGw+
KikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhp
Y3NDb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UuZ2V0KCkpKTsKLSAgICAg
ICAgY2Fpcm9fdHJhbnNsYXRlKGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgLSBkaXNjcmV0ZVBhZ2VQ
b3NpdGlvbigpLngoKSwgLSBkaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLnkoKSk7CisgICAgICAgIGNh
aXJvX3RyYW5zbGF0ZShncmFwaGljc0NvbnRleHQuZ2V0KCksIC0gcGFnZVBvc2l0aW9uKCkueCgp
LCAtIHBhZ2VQb3NpdGlvbigpLnkoKSk7CiAgICAgICAgIGNhaXJvX3NjYWxlKGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSwgbV9zY2FsZUZhY3RvciwgbV9zY2FsZUZhY3Rvcik7CiAgICAgICAgIHJlbmRl
cmVyLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dC5nZXQoKSk7CiAgICAg
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1hZ2UsIDAsIDAsIHZp
ZXdwb3J0LndpZHRoKCksIHZpZXdwb3J0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IGEwYTkyODkuLjAzMzFmODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaApAQCAt
MjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2NhbGVGYWN0b3I7IH0KIAogICAgIHZvaWQgc2V0UGFnZVBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcGFnZVBvc2l0aW9uID0gcG9zaXRp
b247IH0KLSAgICBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBkaXNjcmV0ZVBhZ2VQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtX3BhZ2VQb3NpdGlvbik7IH0KKyAgICBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50IHBhZ2VQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZVBvc2l0aW9uOyB9CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBuZWVkcyByZWZhY3Rvcmlu
ZyAoc3BsaXQgY2FsbGJhY2sgaW52b2tlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmNwcAppbmRleCAzOWFjNjdmLi5iYTY0YzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtMTgxLDEzICsxODEs
MTEgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmwKICAgICAvLyBJbmZvcm0gdGhlIHJlbmRlcmVy
IHRvIGFkanVzdCB2aWV3cG9ydC1maXhlZCBsYXllcnMuCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmlu
ZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFZpc2libGVDb250ZW50c1JlY3QsIG1fcmVuZGVyZXIu
Z2V0KCksIHJlY3QpKTsKIAotICAgIC8vIFJvdW5kIHRoZSByZWN0IGluc3RlYWQgb2YgZW5jbG9z
aW5nIGl0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0cyBzaXplIHN0YXlzIHRoZSBzYW1lIHdoaWxlIHBh
bm5pbmcuIFRoaXMgY2FuIGhhdmUgbmFzdHkgZWZmZWN0cyBvbiBsYXlvdXQuCi0gICAgSW50UmVj
dCByb3VuZGVkUmVjdCA9IHJvdW5kZWRJbnRSZWN0KHJlY3QpOwotICAgIGlmIChyb3VuZGVkUmVj
dCA9PSBtX2xhc3RTZW50VmlzaWJsZVJlY3QgJiYgc2NhbGUgPT0gbV9sYXN0U2VudFNjYWxlICYm
IHRyYWplY3RvcnlWZWN0b3IgPT0gbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3IpCisgICAgaWYg
KHJlY3QgPT0gbV9sYXN0U2VudFZpc2libGVSZWN0ICYmIHNjYWxlID09IG1fbGFzdFNlbnRTY2Fs
ZSAmJiB0cmFqZWN0b3J5VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvcjo6U2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChyb3VuZGVkUmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpLCBtX2RyYXdpbmdBcmVh
UHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwotICAgIG1fbGFzdFNlbnRWaXNpYmxlUmVjdCA9IHJv
dW5kZWRSZWN0OworICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpTZXRWaXNpYmxlQ29udGVudHNSZWN0
KHJlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdl
KCktPnBhZ2VJRCgpKTsKKyAgICBtX2xhc3RTZW50VmlzaWJsZVJlY3QgPSByZWN0OwogICAgIG1f
bGFzdFNlbnRTY2FsZSA9IHNjYWxlOwogICAgIG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yID0g
dHJhamVjdG9yeVZlY3RvcjsKIH0KQEAgLTIxMCw3ICsyMDgsNyBAQCB2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHk6OmFuaW1hdGlvbkZyYW1lUmVhZHkoKQogfQogI2VuZGlmCiAKLXZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpkaWRD
aGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hhbmdlU2Nyb2xsUG9z
aXRpb24sIG1fcmVuZGVyZXIuZ2V0KCksIHBvc2l0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXggZmI1OGIxYS4uOTFkNzFjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtNzgsNyAr
NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCk7CiAgICAg
dm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKLSAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBvc2l0aW9u
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CisgICAgdm9pZCBkaWRDaGFuZ2VT
Y3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbik7CiAjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVDYW52YXMoV2ViTGF5ZXJJRCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuJik7CiAgICAgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIHVpbnQzMl90IGZyb250QnVm
ZmVyKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgRHJhd2luZ0FyZWFQcm94
eSogbV9kcmF3aW5nQXJlYVByb3h5OwogICAgIFJlZlB0cjxMYXllclRyZWVSZW5kZXJlcj4gbV9y
ZW5kZXJlcjsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fbGFzdFNlbnRWaXNpYmxlUmVjdDsKKyAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9sYXN0U2VudFZpc2libGVSZWN0OwogICAgIGZsb2F0IG1f
bGFzdFNlbnRTY2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0
b3J5VmVjdG9yOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRy
PFNoYXJlYWJsZVN1cmZhY2U+ID4gU3VyZmFjZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQyYzY5YmIu
LmNhZmUzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDAsNyArNDAsNyBAQCBtZXNzYWdlcyAtPiBMYXll
clRyZWVDb29yZGluYXRvclByb3h5IHsKICAgICBDbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKHVp
bnQ2NF90IGltYWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQp
CiAgICAgRGlkUmVuZGVyRnJhbWUoV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUsIFdlYkNv
cmU6OkludFJlY3QgY292ZXJlZFJlY3QpCi0gICAgRGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oV2Vi
Q29yZTo6SW50UG9pbnQgcG9zaXRpb24pCisgICAgRGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBwb3NpdGlvbikKICAgICBTZXRMYXllckFuaW1hdGlvbnModWludDMy
X3QgaWQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIGFuaW1hdGlvbnMpCiAgICAg
U2V0QW5pbWF0aW9uc0xvY2tlZChib29sIGxvY2tlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCmluZGV4IGYxZDJiZjAuLjE4NjBmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjphZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKCkKICAgICAgICAgdG9UZXh0dXJlTWFw
cGVyTGF5ZXIoaXQtPnZhbHVlKS0+c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGRlbHRh
KTsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hh
bmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgbV9w
ZW5kaW5nUmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uID0gcG9zaXRpb247CiB9CkBAIC0z
MzMsMTAgKzMzMywxMSBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKFdl
YkxheWVySUQgaWQsIGNvbnN0IFdlYkxheWVySW5mbyYgbGF5ZXJJbgogICAgIGxheWVyLT5zZXRS
ZXBsaWNhdGVkQnlMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLnJlcGxpY2EpKTsKICAgICBsYXll
ci0+c2V0TWFza0xheWVyKGxheWVyQnlJRChsYXllckluZm8ubWFzaykpOwogCisgICAgbGF5ZXIt
PnNldEFuY2hvclBvaW50KGxheWVySW5mby5hbmNob3JQb2ludCk7CiAgICAgbGF5ZXItPnNldFBv
c2l0aW9uKGxheWVySW5mby5wb3MpOwogICAgIGxheWVyLT5zZXRTaXplKGxheWVySW5mby5zaXpl
KTsKKwogICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0obGF5ZXJJbmZvLnRyYW5zZm9ybSk7Ci0gICAg
bGF5ZXItPnNldEFuY2hvclBvaW50KGxheWVySW5mby5hbmNob3JQb2ludCk7CiAgICAgbGF5ZXIt
PnNldENoaWxkcmVuVHJhbnNmb3JtKGxheWVySW5mby5jaGlsZHJlblRyYW5zZm9ybSk7CiAgICAg
bGF5ZXItPnNldEJhY2tmYWNlVmlzaWJpbGl0eShsYXllckluZm8uYmFja2ZhY2VWaXNpYmxlKTsK
ICAgICBsYXllci0+c2V0Q29udGVudHNPcGFxdWUobGF5ZXJJbmZvLmNvbnRlbnRzT3BhcXVlKTsK
QEAgLTQ0OSw2ICs0NTAsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5n
U3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogICAgICAgICByZXR1
cm47IC8vIFRoZSBsYXllciBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUgKGFuZCBubyBwZW5k
aW5nIHJlbW92YWwpLgogCiAgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNr
aW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKKwogICAgIGJhY2tp
bmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwogICAgIEFTU0VSVCghbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKICAgICBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA5NDZhYzZkLi43NDRjM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFp
bnRUb0dyYXBoaWNzQ29udGV4dChCYWNraW5nU3RvcmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
KTsKICAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsK
ICAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9zaXRpb24pOworICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24pOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQogICAgIHZvaWQgY3JlYXRlQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3lu
Y0NhbnZhcyhXZWJMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CkBAIC0xODUsOCArMTg1
LDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViTGF5ZXJJRCwgV2ViQ29yZTo6
R3JhcGhpY3NMYXllcio+IExheWVyUmF3UHRyTWFwOwogICAgIExheWVyUmF3UHRyTWFwIG1fZml4
ZWRMYXllcnM7CiAgICAgV2ViTGF5ZXJJRCBtX3Jvb3RMYXllcklEOwotICAgIFdlYkNvcmU6Oklu
dFBvaW50IG1fcmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOwotICAgIFdlYkNvcmU6Oklu
dFBvaW50IG1fcGVuZGluZ1JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IG1fcmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOworICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgbV9wZW5kaW5nUmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9u
OwogICAgIGJvb2wgbV9hbmltYXRpb25zTG9ja2VkOwogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRSkKICAgICBib29sIG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKaW5k
ZXggZTU2ODY5Zi4uZjY4YTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcApAQCAtODksMTAgKzg5LDEzIEBAIGZsb2F0IFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAogCiBGbG9hdFBv
aW50IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZpZXdwb3J0UG9zLCBmbG9hdCB2aWV3cG9ydFNjYWxlKQog
ewotICAgIGNvbnN0IGZsb2F0IGhvcml6b250YWxSYW5nZSA9IHN0ZDo6bWF4KDAuZiwgbV9jb250
ZW50c1NpemUud2lkdGgoKSAtIG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyB2aWV3cG9ydFNjYWxl
KTsKLSAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJhbmdlID0gc3RkOjptYXgoMC5mLCBtX2NvbnRl
bnRzU2l6ZS5oZWlnaHQoKSAtIG1fdmlld3BvcnRTaXplLmhlaWdodCgpIC8gdmlld3BvcnRTY2Fs
ZSk7CisgICAgLy8gV2UgbmVlZCB0byBmbG9vciB0aGUgdmlld3BvcnQgaGVyZSBhcyB0byBhbGxv
dyBhbGlnbmluZyB0aGUgY29udGVudCBpbiBkZXZpY2UgdW5pdHMuIElmIG5vdCwKKyAgICAvLyBp
dCBtaWdodCBub3QgYmUgcG9zc2libGUgdG8gc2Nyb2xsIHRoZSBsYXN0IHBpeGVsIGFuZCB0aGF0
IGFmZmVjdHMgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMuCisgICAgY29uc3QgZmxvYXQgaG9yaXpv
bnRhbFJhbmdlID0gc3RkOjptYXgoMC5mLCBtX2NvbnRlbnRzU2l6ZS53aWR0aCgpIC0gZmxvb3Jm
KG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyB2aWV3cG9ydFNjYWxlKSk7CisgICAgY29uc3QgZmxv
YXQgdmVydGljYWxSYW5nZSA9IHN0ZDo6bWF4KDAuZiwgbV9jb250ZW50c1NpemUuaGVpZ2h0KCkg
LSBmbG9vcmYobV92aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyB2aWV3cG9ydFNjYWxlKSk7CiAKLSAg
ICByZXR1cm4gRmxvYXRQb2ludChjbGFtcFRvKHZpZXdwb3J0UG9zLngoKSwgMC5mLCBob3Jpem9u
dGFsUmFuZ2UpLCBjbGFtcFRvKHZpZXdwb3J0UG9zLnkoKSwgMC5mLCB2ZXJ0aWNhbFJhbmdlKSk7
CisgICAgLy8gVW5mb3J0dW5hdGVseSBpdCBkb2Vzbid0IHNlZW0gdG8gYmUgZW5vdWdoLCBzbyBq
dXN0IGFsd2F5cyBhbGxvdyBvbmUgcGl4ZWwgbW9yZS4KKyAgICByZXR1cm4gRmxvYXRQb2ludChj
bGFtcFRvKHZpZXdwb3J0UG9zLngoKSwgMC5mLCBob3Jpem9udGFsUmFuZ2UgKyAxKSwgY2xhbXBU
byh2aWV3cG9ydFBvcy55KCksIDAuZiwgdmVydGljYWxSYW5nZSArIDEpKTsKIH0KIAogdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKCkKQEAgLTE3MSwxOCArMTc0LDM2
IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJl
YWR5KCkKICAgICBtX3dlYlBhZ2VQcm94eS0+Y29tbWl0UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgp
OwogfQogCisjaWYgUExBVEZPUk0oRUZMKQorc3RhdGljIEZsb2F0UG9pbnQgZGV2aWNlQWxpZ25l
ZEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9zLCBmbG9hdCBlZmZlY3RpdmVTY2FsZSkK
K3sKKyAgICAvLyBUbyBhdm9pZCBibHVycnluZXNzLCBtb2RpZnkgdGhlIHBvc2l0aW9uIHNvIHRo
YXQgaXQgbWFwcyBpbnRvIGEgZGlzY3JldGUgZGV2aWNlIHBvc2l0aW9uLgorICAgIGRvdWJsZSB4
ID0gcm91bmRmKHBvcy54KCkgKiBlZmZlY3RpdmVTY2FsZSkgLyBlZmZlY3RpdmVTY2FsZTsKKyAg
ICBkb3VibGUgeSA9IHJvdW5kZihwb3MueSgpICogZWZmZWN0aXZlU2NhbGUpIC8gZWZmZWN0aXZl
U2NhbGU7CisKKyAgICByZXR1cm4gRmxvYXRQb2ludCh4LCB5KTsKK30KKyNlbmRpZgorCiB2b2lk
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBv
aW50JiBjc3NQb3NpdGlvbikKIHsKICAgICAvLyBJZ25vcmUgdGhlIHJlcXVlc3QgaWYgc3VzcGVu
ZGVkLiBDYW4gb25seSBoYXBwZW4gZHVlIHRvIGRlbGF5IGluIGV2ZW50IGRlbGl2ZXJ5LgogICAg
IGlmIChtX2hhc1N1c3BlbmRlZENvbnRlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0
UmVjdCBlbmRWaXNpYmxlQ29udGVudFJlY3QoY2xhbXBWaWV3cG9ydFRvQ29udGVudHMoY3NzUG9z
aXRpb24sIG1fZWZmZWN0aXZlU2NhbGUpLCB2aWV3cG9ydFNpemVJbkNvbnRlbnRzQ29vcmRpbmF0
ZXMoKSk7CisgICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbihjc3NQb3NpdGlvbik7CisKKyNpZiBQ
TEFURk9STShFRkwpCisgICAgbmV3UG9zaXRpb24gPSBkZXZpY2VBbGlnbmVkRmxvYXRQb2ludChu
ZXdQb3NpdGlvbiwgbV9lZmZlY3RpdmVTY2FsZSk7CisjZW5kaWYKKworICAgIEZsb2F0UmVjdCBl
bmRWaXNpYmxlQ29udGVudFJlY3QoY2xhbXBWaWV3cG9ydFRvQ29udGVudHMobmV3UG9zaXRpb24s
IG1fZWZmZWN0aXZlU2NhbGUpLCB2aWV3cG9ydFNpemVJbkNvbnRlbnRzQ29vcmRpbmF0ZXMoKSk7
CisKICAgICBpZiAobV9sYXN0RnJhbWVDb3ZlcmVkUmVjdC5pbnRlcnNlY3RzKGVuZFZpc2libGVD
b250ZW50UmVjdCkpCiAgICAgICAgIG1fY2xpZW50LT5zZXRWaWV3cG9ydFBvc2l0aW9uKGVuZFZp
c2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKICAgICBlbHNlCiAgICAgICAgIC8vIEtlZXAg
dGhlIHVuY2xhbXBlZCBwb3NpdGlvbiBpbiBjYXNlIHRoZSBjb250ZW50cyBzaXplIGlzIGNoYW5n
ZWQgbGF0ZXIgb24uCi0gICAgICAgIGFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRz
KGNzc1Bvc2l0aW9uKTsKKyAgICAgICAgYXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVu
dHMoZW5kVmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOwogfQogCiB2b2lkIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBGbG9hdFNpemUmIG5l
d1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRMZWdhY3lJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dExlZ2FjeUltcGwuY3BwCmluZGV4IGM4YjI2ZmUuLmU1NjY4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIHZvaWQgUGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENvbW1pdExvYWQoKQog
dm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAg
bV92aWV3SW1wbC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0
KEludFJlY3QobV92aWV3SW1wbC0+ZGlzY3JldGVQYWdlUG9zaXRpb24oKSwgc2l6ZSksIG1fdmll
d0ltcGwtPnNjYWxlRmFjdG9yKCksIEZsb2F0UG9pbnQoKSk7CisgICAgbV92aWV3SW1wbC0+cGFn
ZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KEludFJlY3Qocm91bmRl
ZEludFBvaW50KG1fdmlld0ltcGwtPnBhZ2VQb3NpdGlvbigpKSwgc2l6ZSksIG1fdmlld0ltcGwt
PnNjYWxlRmFjdG9yKCksIEZsb2F0UG9pbnQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShz
aXplKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKaW5kZXggZmUyOTEz
OS4uZDE2YzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCkBAIC03NSwxMiAr
NzUsMTQgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VD
b250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2kKIAogdm9pZCBQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7Ci0gICAgbV9jb250ZW50UG9zaXRpb24gPSByb3VuZGVk
SW50UG9pbnQoY29udGVudHNQb2ludCk7CisgICAgbV9jb250ZW50UG9zaXRpb24gPSBjb250ZW50
c1BvaW50OwogCiAgICAgRmxvYXRQb2ludCBwb3MoY29udGVudHNQb2ludCk7CiAgICAgcG9zLnNj
YWxlKHNjYWxlRmFjdG9yKCksIHNjYWxlRmFjdG9yKCkpOwogICAgIG1fdmlld0ltcGwtPnNldFBh
Z2VQb3NpdGlvbihwb3MpOwogCisgICAgcHJpbnRmKCJwYWdlIHBvcyAlZiAlZiAtPiBjc3MgJWYg
JWZcbiIsIHBvcy54KCksIHBvcy55KCksIHJvdW5kZihjb250ZW50c1BvaW50LngoKSksIHJvdW5k
Zihjb250ZW50c1BvaW50LnkoKSkpOworCiAgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250
ZW50c1Zpc2liaWxpdHkobV9jb250ZW50UG9zaXRpb24sIHNjYWxlRmFjdG9yKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbC5oCmluZGV4IDFhZTZhNTQuLjM0ZjYxMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBEcmF3
aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUg
dmlld1NpemUoKSB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZTsgfQogICAgIGZsb2F0IHNjYWxlRmFj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV92aWV3SW1wbC0+c2NhbGVGYWN0b3IoKTsgfQotICAgIFdl
YkNvcmU6OkludFBvaW50IGNvbnRlbnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dFBvc2l0aW9uOyB9CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50UG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3NpdGlvbjsgfQogCiAgICAgdm9pZCB1cGRhdGVWaWV3
cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplKTsKICAgICB2b2lk
IHNldFJlbmRlcmVyQWN0aXZlKGJvb2wpOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAg
ICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdw
b3J0U2l6ZTsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2NvbnRlbnRQb3NpdGlvbjsKKyAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50IG1fY29udGVudFBvc2l0aW9uOwogICAgIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXIqIG1fY29udHJvbGxlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDM5OTAxMjcuLjhk
MzdhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTAxLDYgKzEwMSwxNyBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKQogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlR2VvbWV0cnkoKQogeworICAgIEZsb2F0UG9p
bnQgYWRqdXN0ZWRQb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgYWRqdXN0ZWRBbmNob3JQb2lu
dDsKKyAgICBGbG9hdFNpemUgYWRqdXN0ZWRTaXplOworICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdu
bWVudE9mZnNldDsKKyAgICBjb21wdXRlUGl4ZWxBbGlnbm1lbnQoYWRqdXN0ZWRQb3NpdGlvbiwg
YWRqdXN0ZWRTaXplLCBhZGp1c3RlZEFuY2hvclBvaW50LCBwaXhlbEFsaWdubWVudE9mZnNldCk7
CisKKyAgICBtX2FkanVzdGVkUG9zaXRpb24gPSBhZGp1c3RlZFBvc2l0aW9uOworICAgIG1fYWRq
dXN0ZWRTaXplID0gYWRqdXN0ZWRTaXplOworICAgIG1fYWRqdXN0ZWRBbmNob3JQb2ludCA9IGFk
anVzdGVkQW5jaG9yUG9pbnQ7CisgICAgbV9waXhlbEFsaWdubWVudE9mZnNldCA9IHBpeGVsQWxp
Z25tZW50T2Zmc2V0OworCiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogICAgIHNldFNob3Vs
ZFVwZGF0ZVZpc2libGVSZWN0KCk7CiB9CkBAIC01MTQsNyArNTI1LDYgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBtX3Nob3VsZFN5bmNMYXll
clN0YXRlID0gZmFsc2U7CiAgICAgbV9sYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRU
b1ZpZXdwb3J0KCk7CiAKLSAgICBtX2xheWVySW5mby5hbmNob3JQb2ludCA9IGFuY2hvclBvaW50
KCk7CiAgICAgbV9sYXllckluZm8uYmFja2ZhY2VWaXNpYmxlID0gYmFja2ZhY2VWaXNpYmlsaXR5
KCk7CiAgICAgbV9sYXllckluZm8uY2hpbGRyZW5UcmFuc2Zvcm0gPSBjaGlsZHJlblRyYW5zZm9y
bSgpOwogICAgIG1fbGF5ZXJJbmZvLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWUoKTsK
QEAgLTUyNCwxMSArNTM0LDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5j
TGF5ZXJTdGF0ZSgpCiAgICAgbV9sYXllckluZm8ubWFzayA9IHRvV2ViTGF5ZXJJRChtYXNrTGF5
ZXIoKSk7CiAgICAgbV9sYXllckluZm8ubWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHMoKTsK
ICAgICBtX2xheWVySW5mby5vcGFjaXR5ID0gb3BhY2l0eSgpOwotICAgIG1fbGF5ZXJJbmZvLnBv
cyA9IHBvc2l0aW9uKCk7CiAgICAgbV9sYXllckluZm8ucHJlc2VydmVzM0QgPSBwcmVzZXJ2ZXMz
RCgpOwogICAgIG1fbGF5ZXJJbmZvLnJlcGxpY2EgPSB0b1dlYkxheWVySUQocmVwbGljYUxheWVy
KCkpOwotICAgIG1fbGF5ZXJJbmZvLnNpemUgPSBzaXplKCk7CiAgICAgbV9sYXllckluZm8udHJh
bnNmb3JtID0gdHJhbnNmb3JtKCk7CisKKyAgICBtX2xheWVySW5mby5hbmNob3JQb2ludCA9IG1f
YWRqdXN0ZWRBbmNob3JQb2ludDsKKyAgICBtX2xheWVySW5mby5wb3MgPSBtX2FkanVzdGVkUG9z
aXRpb247CisgICAgbV9sYXllckluZm8uc2l6ZSA9IG1fYWRqdXN0ZWRTaXplOworCiAgICAgbV9j
b29yZGluYXRvci0+c3luY0xheWVyU3RhdGUobV9pZCwgbV9sYXllckluZm8pOwogfQogCkBAIC03
MDksNyArNzIyLDcgQEAgSW50UmVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFj
a2luZ1N0b3JlVmlzaWJsZVJlY3QoKQogICAgIC8vIFRoZSByZXN1bHRpbmcgcXVhZCBtaWdodCBi
ZSBzcXVld2VkIGFuZCB0aGUgdmlzaWJsZSByZWN0IGlzIHRoZSBib3VuZGluZyBib3ggb2YgdGhp
cyBxdWFkLAogICAgIC8vIHNvIGl0IG1pZ2h0IHNwcmVhZCBmdXJ0aGVyIHRoYW4gdGhlIHJlYWwg
dmlzaWJsZSBhcmVhIChhbmQgdGhlbiBldmVuIG1vcmUgYW1wbGlmaWVkIGJ5IHRoZSBjb3ZlciBy
ZWN0IG11bHRpcGxpZXIpLgogICAgIEFTU0VSVChtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPT0g
bV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKSk7Ci0gICAgRmxvYXRSZWN0IHJl
Y3QgPSBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0uY2xhbXBlZEJvdW5kc09mUHJvamVjdGVkUXVh
ZChGbG9hdFF1YWQoRmxvYXRSZWN0KG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3Qo
KSkpKTsKKyAgICBGbG9hdFJlY3QgcmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFt
cGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFkKEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxl
Q29udGVudHNSZWN0KCkpKTsKICAgICBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0
ZShyZWN0LCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKICAgICByZXR1cm4gZW5j
bG9zaW5nSW50UmVjdChyZWN0KTsKIH0KQEAgLTgwNSw2ICs4MTgsOTMgQEAgYm9vbCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6Omhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpCiAgICAgcmV0dXJu
IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKS5pbnRlcnNlY3RzKHRpbGVkQmFja2luZ1N0
b3JlQ29udGVudHNSZWN0KCkpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnRlZ3JhbChm
bG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkgPT0gdmFs
dWU7Cit9CisKK0Zsb2F0UG9pbnQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlUG9z
aXRpb25SZWxhdGl2ZVRvQmFzZSgpCit7CisgICAgRmxvYXRQb2ludCBvZmZzZXQ7CisgICAgZm9y
IChjb25zdCBHcmFwaGljc0xheWVyKiBjdXJyTGF5ZXIgPSB0aGlzOyBjdXJyTGF5ZXI7IGN1cnJM
YXllciA9IGN1cnJMYXllci0+cGFyZW50KCkpCisgICAgICAgIG9mZnNldCArPSBjdXJyTGF5ZXIt
PnBvc2l0aW9uKCk7CisKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCit2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Y29tcHV0ZVBpeGVsQWxpZ25tZW50KEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBGbG9hdFNpemUmIHNpemUsIEZsb2F0UG9pbnQzRCYgYW5jaG9yUG9pbnQsIEZsb2F0U2l6ZSYg
YWxpZ25tZW50T2Zmc2V0KQoreworICAgIGlmIChpc0ludGVncmFsKGVmZmVjdGl2ZUNvbnRlbnRz
U2NhbGUoKSkpIHsKKyAgICAgICAgcG9zaXRpb24gPSBtX3Bvc2l0aW9uOworICAgICAgICBzaXpl
ID0gbV9zaXplOworICAgICAgICBhbmNob3JQb2ludCA9IG1fYW5jaG9yUG9pbnQ7CisgICAgICAg
IGFsaWdubWVudE9mZnNldCA9IEZsb2F0U2l6ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgcHJpbnRmKCJvd24gcG9zICVmLCVmXG4iLCB0aGlzLT5wb3NpdGlvbigpLngoKSwgdGhp
cy0+cG9zaXRpb24oKS55KCkpOworICAgIHByaW50ZigiYWN0dWFsIHBvcyAlZiwlZlxuIiwgZGVi
dWdQb3MueCgpLCBkZWJ1Z1Bvcy55KCkpOworCisgICAgRmxvYXRQb2ludCBwb3NpdGlvblJlbGF0
aXZlVG9CYXNlID0gY29tcHV0ZVBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UoKTsKKy8vICAgIHByaW50
ZigicmVsYXRpdmUgdG8gYmFzZSAlZiwlZlxuIiwgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZS54KCks
IHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UueSgpKTsKKworICAgIEZsb2F0UmVjdCBiYXNlUmVsYXRp
dmVCb3VuZHMocG9zaXRpb25SZWxhdGl2ZVRvQmFzZSwgbV9zaXplKTsKKyAgICBGbG9hdFJlY3Qg
c2NhbGVkQm91bmRzID0gYmFzZVJlbGF0aXZlQm91bmRzOworCisgIC8vICBwcmludGYoIlxuYmFz
ZTpcdCVmLCVmICVmeCVmXG4iLCBzY2FsZWRCb3VuZHMueCgpLCBzY2FsZWRCb3VuZHMueSgpLCBz
Y2FsZWRCb3VuZHMud2lkdGgoKSwgc2NhbGVkQm91bmRzLmhlaWdodCgpKTsKKworICAgIC8vIFNj
YWxlIGJ5IHRoZSBwYWdlIHNjYWxlIGZhY3RvciB0byBjb21wdXRlIHRoZSBzY3JlZW4tcmVsYXRp
dmUgYm91bmRzLgorICAgIHNjYWxlZEJvdW5kcy5zY2FsZShlZmZlY3RpdmVDb250ZW50c1NjYWxl
KCkpOworCisgICAgLy9wcmludGYoInNjYWxlOlx0JWYsJWYgJWZ4JWZcbiIsIHNjYWxlZEJvdW5k
cy54KCksIHNjYWxlZEJvdW5kcy55KCksIHNjYWxlZEJvdW5kcy53aWR0aCgpLCBzY2FsZWRCb3Vu
ZHMuaGVpZ2h0KCkpOworCisgICAgLy8gUm91bmQgdG8gaW50ZWdlciBib3VuZGFyaWVzLgorICAg
IC8vIE5PVEUoREVCVUcpOiBXaGVuIHN1aW5nIGVuY2xvc2luZ0ludFJlY3QgKGFzIG1hYykgaXQg
d2lsbCBoYXZlIGRpZmZlcmVudCBzaXplcyBkZXBlbmRpbmcgb24gcG9zaXRpb24uCisgICAgRmxv
YXRSZWN0IGFsaWduZWRCb3VuZHMgPSByb3VuZGVkSW50UmVjdChzY2FsZWRCb3VuZHMpOworICAg
IC8vRmxvYXRSZWN0IGFsaWduZWRCb3VuZHMgPSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZEJvdW5k
cyk7CisKKyAgICAvL3ByaW50ZigiYWxpZ246XHQlZiwlZiAlZnglZlxuIiwgYWxpZ25lZEJvdW5k
cy54KCksIGFsaWduZWRCb3VuZHMueSgpLCBhbGlnbmVkQm91bmRzLndpZHRoKCksIGFsaWduZWRC
b3VuZHMuaGVpZ2h0KCkpOworICAgIC8vIENvbnZlcnQgYmFjayB0byBsYXllciBjb29yZGluYXRl
cy4KKyAgICBhbGlnbmVkQm91bmRzLnNjYWxlKDEgLyBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkp
OworCisgICAvLyBwcmludGYoImZpbmFsOlx0JWYsJWYgJWZ4JWZcblxuIiwgYWxpZ25lZEJvdW5k
cy54KCksIGFsaWduZWRCb3VuZHMueSgpLCBhbGlnbmVkQm91bmRzLndpZHRoKCksIGFsaWduZWRC
b3VuZHMuaGVpZ2h0KCkpOworCisgICAgLy8gQ29udmVydCBiYWNrIHRvIGxheWVyIGNvb3JkaW5h
dGVzLgorICAgIGFsaWdubWVudE9mZnNldCA9IGJhc2VSZWxhdGl2ZUJvdW5kcy5sb2NhdGlvbigp
IC0gYWxpZ25lZEJvdW5kcy5sb2NhdGlvbigpOworCisgICAgLy9wcmludGYoImxheWVyIGFsaWdu
IG9mZnNldCAlZi8lZlxuIiwgYWxpZ25tZW50T2Zmc2V0LndpZHRoKCksIGFsaWdubWVudE9mZnNl
dC5oZWlnaHQoKSk7CisKKyAgICBwb3NpdGlvbiA9IG1fcG9zaXRpb24gLSBhbGlnbm1lbnRPZmZz
ZXQ7CisgICAgc2l6ZSA9IGFsaWduZWRCb3VuZHMuc2l6ZSgpOworCisgICAgLy9wcmludGYoIm9y
aWcgICVmLCVmICVmeCVmXG4iLCBtX3Bvc2l0aW9uLngoKSwgbV9wb3NpdGlvbi55KCksIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworCisgICAgLy9wcmludGYoImZpbmFsICVmLCVm
ICVmeCVmXG4iLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKTsKKworICAgIGZsb2F0IHMgPSBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCk7Cisg
ICAgcHJpbnRmKCJGSU5BTCBVSSAlZiwlZiAlZnglZlxuIiwgcm91bmRmKChwb3NpdGlvbi54KCkg
LSBkZWJ1Z1Bvcy54KCkpICogcyksIHJvdW5kZigocG9zaXRpb24ueSgpIC0gZGVidWdQb3MueSgp
KSAqIHMpLCByb3VuZGYoc2l6ZS53aWR0aCgpICogcyksIHJvdW5kZihzaXplLmhlaWdodCgpICog
cykpOworCisgICAgLy8gTm93IHdlIGhhdmUgdG8gY29tcHV0ZSBhIG5ldyBhbmNob3IgcG9pbnQg
d2hpY2ggY29tcGVuc2F0ZXMgZm9yIHJvdW5kaW5nLgorICAgIGZsb2F0IGFuY2hvclBvaW50WCA9
IG1fYW5jaG9yUG9pbnQueCgpOworICAgIGZsb2F0IGFuY2hvclBvaW50WSA9IG1fYW5jaG9yUG9p
bnQueSgpOworCisgICAgaWYgKGFsaWduZWRCb3VuZHMud2lkdGgoKSkKKyAgICAgICAgYW5jaG9y
UG9pbnRYID0gKGJhc2VSZWxhdGl2ZUJvdW5kcy53aWR0aCgpICogYW5jaG9yUG9pbnRYICsgYWxp
Z25tZW50T2Zmc2V0LndpZHRoKCkpIC8gYWxpZ25lZEJvdW5kcy53aWR0aCgpOworCisgICAgaWYg
KGFsaWduZWRCb3VuZHMuaGVpZ2h0KCkpCisgICAgICAgIGFuY2hvclBvaW50WSA9IChiYXNlUmVs
YXRpdmVCb3VuZHMuaGVpZ2h0KCkgKiBhbmNob3JQb2ludFkgKyBhbGlnbm1lbnRPZmZzZXQuaGVp
Z2h0KCkpIC8gYWxpZ25lZEJvdW5kcy5oZWlnaHQoKTsKKworICAgIGFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEKGFuY2hvclBvaW50WCwgYW5jaG9yUG9pbnRZLCBtX2FuY2hvclBvaW50LnooKSAq
IGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CisKKyAgICAvLyBXSVRIT1VUIFRISVMgSVQgSVMg
U1VQRVIgU0hBUlAKKyAgICAvLyBVcGRhdGUgcG9zaXRpb246IFBvc2l0aW9uIGlzIG9mZnNldCBv
biB0aGUgbGF5ZXIgYnkgdGhlIGxheWVyIGFuY2hvciBwb2ludC4KKy8vICAgIHBvc2l0aW9uID0g
RmxvYXRQb2ludChwb3NpdGlvbi54KCkgKyBhbmNob3JQb2ludC54KCkgKiBzaXplLndpZHRoKCks
IHBvc2l0aW9uLnkoKSArIGFuY2hvclBvaW50LnkoKSAqIHNpemUuaGVpZ2h0KCkpOworCisgICAv
LyBwcmludGYoImFuY2hvciAlZiwlZiwlZiAgLSAlZiwlZiwlZlxuIiwgbV9hbmNob3JQb2ludC54
KCksIG1fYW5jaG9yUG9pbnQueSgpLCBtX2FuY2hvclBvaW50LnooKSwgYW5jaG9yUG9pbnQueCgp
LCBhbmNob3JQb2ludC55KCksIGFuY2hvclBvaW50LnooKSk7CisKKyAgICAvL3ByaW50ZigiIC0t
LS0tIFxuXG4iKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVU
cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKIHsKICAgICAvLyBXaGVuIHdlIGhhdmUgYSB0cmFuc2Zv
cm0gYW5pbWF0aW9uLCB3ZSBuZWVkIHRvIHVwZGF0ZSB2aXNpYmxlIHJlY3QgZXZlcnkgZnJhbWUg
dG8gYWRqdXN0IHRoZSB2aXNpYmxlIHJlY3Qgb2YgYSBiYWNraW5nIHN0b3JlLgpAQCAtODE3LDEy
ICs5MTcsMTUgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zv
cm1lZFZpc2libGVSZWN0KCkKICAgICBpZiAoaGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKQog
ICAgICAgICBjbGllbnQoKS0+Z2V0Q3VycmVudFRyYW5zZm9ybSh0aGlzLCBjdXJyZW50VHJhbnNm
b3JtKTsKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldExvY2FsVHJhbnNmb3JtKGN1cnJlbnRUcmFu
c2Zvcm0pOwotICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0UG9zaXRpb24ocG9zaXRpb24oKSk7Ci0g
ICAgbV9sYXllclRyYW5zZm9ybS5zZXRBbmNob3JQb2ludChhbmNob3JQb2ludCgpKTsKLSAgICBt
X2xheWVyVHJhbnNmb3JtLnNldFNpemUoc2l6ZSgpKTsKKworICAgIG1fbGF5ZXJUcmFuc2Zvcm0u
c2V0QW5jaG9yUG9pbnQobV9hZGp1c3RlZEFuY2hvclBvaW50KTsKKyAgICBtX2xheWVyVHJhbnNm
b3JtLnNldFBvc2l0aW9uKG1fYWRqdXN0ZWRQb3NpdGlvbik7CisgICAgbV9sYXllclRyYW5zZm9y
bS5zZXRTaXplKG1fYWRqdXN0ZWRTaXplKTsKKwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Rmxh
dHRlbmluZyghcHJlc2VydmVzM0QoKSk7CiAgICAgbV9sYXllclRyYW5zZm9ybS5zZXRDaGlsZHJl
blRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgpKTsKICAgICBtX2xheWVyVHJhbnNmb3JtLmNv
bWJpbmVUcmFuc2Zvcm1zKHBhcmVudCgpID8gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIocGFy
ZW50KCkpLT5tX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOworCiAgICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXll
clRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKIAogICAgIC8vIFRoZSBjb21iaW5lZCB0
cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDgyMGRiOWIuLjdjYzA5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlE
LCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCkgPSAw
OwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRz
UmVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNB
bGxvd2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDb29yZGluYXRlZElt
YWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0IFdl
YkxheWVySW5mbyYpID0gMDsKQEAgLTg5LDYgKzg5LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAgICAgdmly
dHVhbCB+Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKCk7CiAKKyAgICBGbG9hdFBvaW50IGRlYnVn
UG9zOworCiAgICAgLy8gUmVpbXBsZW1lbnRhdGlvbnMgZnJvbSBHcmFwaGljc0xheWVyLmguCiAg
ICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4m
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciopIE9W
RVJSSURFOwpAQCAtMTI4LDcgKzEzMCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVBbmltYXRpb25zKCkgT1ZFUlJJREU7Ci0gICAgCisKKyAgICBGbG9hdFBvaW50IGNv
bXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKCk7CisgICAgdm9pZCBjb21wdXRlUGl4ZWxBbGln
bm1lbnQoRmxvYXRQb2ludCYgcG9zaXRpb24sIEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludDNE
JiBhbmNob3JQb2ludCwgRmxvYXRTaXplJiBhbGlnbm1lbnRPZmZzZXQpOworCiAgICAgdm9pZCBz
ZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdFRy
YWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYpOwogCkBAIC0yMDksNiArMjE0LDExIEBA
IHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJMYXllckluZm8gbV9sYXllckluZm87CiAgICAgR3Jh
cGhpY3NMYXllclRyYW5zZm9ybSBtX2xheWVyVHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybTsKKyAgICBGbG9hdFNpemUgbV9waXhlbEFs
aWdubWVudE9mZnNldDsKKyAgICBGbG9hdFNpemUgbV9hZGp1c3RlZFNpemU7CisgICAgRmxvYXRQ
b2ludCBtX2FkanVzdGVkUG9zaXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fYWRqdXN0ZWRBbmNo
b3JQb2ludDsKKwogICAgIGJvb2wgbV9pblVwZGF0ZU1vZGUgOiAxOwogICAgIGJvb2wgbV9zaG91
bGRVcGRhdGVWaXNpYmxlUmVjdDogMTsKICAgICBib29sIG1fc2hvdWxkU3luY0xheWVyU3RhdGU6
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
ci5jcHAKaW5kZXggYzdmOGEyYy4uMzYxYzkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtNjcxLDcgKzY3MSw3IEBAIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQog
ICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6
UmVtb3ZlVXBkYXRlQXRsYXMoYXRsYXNJRCkpOwogfQogCi1XZWJDb3JlOjpJbnRSZWN0IExheWVy
VHJlZUNvb3JkaW5hdG9yOjp2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QKK1dlYkNvcmU6OkZs
b2F0UmVjdCBMYXllclRyZWVDb29yZGluYXRvcjo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsKIH0KQEAgLTY5NSw3ICs2OTUs
NyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRMYXllckFuaW1hdGlvbnMoV2ViTGF5
ZXJJRCBsYXllcklELCBjb25zdCBHcmFwaGljcwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6U2V0TGF5ZXJBbmltYXRpb25zKGxheWVySUQs
IGFjdGl2ZUFuaW1hdGlvbnMpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSwgY29u
c3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBz
Y2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKICAgICBib29sIGNv
bnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0OwogICAg
IGJvb2wgY29udGVudHNTY2FsZURpZENoYW5nZSA9IHNjYWxlICE9IG1fY29udGVudHNTY2FsZTsK
QEAgLTcwOSw2ICs3MDksNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxl
Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGZsb2F0IHNjYQogCiAgICAgICAgIEhh
c2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9
IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKICAgICAgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExh
eWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgICgqaXQpLT5kZWJ1
Z1BvcyA9IG1fdmlzaWJsZUNvbnRlbnRzUmVjdC5sb2NhdGlvbigpOwogICAgICAgICAgICAgaWYg
KGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpCiAgICAgICAgICAgICAgICAgKCppdCktPnNldENvbnRl
bnRzU2NhbGUoc2NhbGUpOwogICAgICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkK
QEAgLTcxNyw4ICs3MTgsMTIgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2EKICAgICB9CiAKICAg
ICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICBpZiAobV93ZWJQYWdlLT51c2VGaXhlZExheW91
dCgpKQotICAgICAgICBtX3dlYlBhZ2UtPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJlY3Qp
OworICAgIGlmIChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsKKyAgICAgICAgLy8gUm91
bmQgdGhlIHJlY3QgaW5zdGVhZCBvZiBlbmNsb3NpbmcgaXQgdG8gbWFrZSBzdXJlIHRoYXQgaXRz
IHNpemUgc3RheXMKKyAgICAgICAgLy8gdGhlIHNhbWUgd2hpbGUgcGFubmluZy4gVGhpcyBjYW4g
aGF2ZSBuYXN0eSBlZmZlY3RzIG9uIGxheW91dC4KKyAgICAgICAgbV93ZWJQYWdlLT5zZXRGaXhl
ZFZpc2libGVDb250ZW50UmVjdChyb3VuZGVkSW50UmVjdChyZWN0KSk7CisgICAgfQorCiAgICAg
aWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkKICAgICAgICAgbV9zaG91bGRTZW5kU2Nyb2xsUG9z
aXRpb25VcGRhdGUgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggZjA0YjUwOC4uNjU5MWYyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC04MSwxMSAr
ODEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQs
IGludCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCB0aWxl
SUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQpOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRh
dGVzQWxsb3dlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRv
ck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJG
YWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIE9WRVJSSURFOwogCkBAIC0xODcsNyArMTg3
LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yVUlQcm9jZXNzOwogICAgIGJv
b2wgbV9pc1N1c3BlbmRlZDsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRz
UmVjdDsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwogICAg
IGZsb2F0IG1fY29udGVudHNTY2FsZTsKICAgICBib29sIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0
aW9uVXBkYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCmluZGV4IDZhYzM3MjUuLjE2MzZlNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLm1lc3NhZ2VzLmluCkBAIC0xLDUgKzEsNiBAQAogIwogIyAgICBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisjICAg
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogIyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNyArMjEsNyBAQAogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogbWVzc2FnZXMgLT4gTGF5ZXJUcmVlQ29vcmRpbmF0b3Igewot
ICAgIFNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVu
dHNSZWN0LCBmbG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCB0cmFqZWN0b3J5VmVjdG9y
eSkKKyAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxl
Q29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCB0cmFqZWN0b3J5
VmVjdG9yeSkKICAgICBSZW5kZXJOZXh0RnJhbWUoKQogICAgIFB1cmdlQmFja2luZ1N0b3Jlcygp
CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggYTI5OTgzZS4uZDRk
NWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIE1lc3NhZ2VJRDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKQEAgLTkyLDggKzkz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKSB7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgZmxvYXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdEZvckxheWVyKGludCAvKiBs
YXllcklEICovLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQg
Lyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2lu
Z1N0b3JlcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRp
bmF0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178215</attachid>
            <date>2012-12-07 07:29:28 -0800</date>
            <delta_ts>2012-12-07 08:01:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103519-20121207162650.patch</filename>
            <type>text/plain</type>
            <size>42722</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZiNjdlNjQ4NTU3N2U4
MmQwYWNjNmRjZmU1N2JiYjMyYzA2NDIyNi4uNjhmYzdmNDZkNTYyYTg3YWNlNDhlZGFkNmFiM2M2
MjA3NWRlYjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0xMi0wNyAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0VGTF1bV0syXSBCbHVycmluZXNzIGFuZCBzaGFraW5nIGZpeGVkIGVsZW1lbnRzIHdoZW4gc2Nh
bGUgaXMgbm9uLWludGVnZXIKKyAgICAgICAgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTAzNTE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZW1vdmVzIHRoZSBibHVycmluZXNzIGJ5IHBpeGVsIGFsaWduaW5nIHRoZSBsYXllcnMuIEl0
CisgICAgICAgIGRvZXMgbm90IGZ1bGx5IHJlbW92ZSB0aGUgc2hha2luZywgb25seSBtaW5pbWl6
ZXMgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuaDoKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpwYWdlUG9zaXRpb24pOgorCisg
ICAgICAgICAgICBBcyB0aGUgcGl4ZWwgYWxpZ25tZW50IG9mIHRoZSBtYWluIGxheWVyIGlzIG1v
dmVkIHRvIHRoZQorICAgICAgICAgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciwgcmVuYW1lIGRp
c2NyZXRlUGFnZVBvc2l0aW9uIHRvIGp1c3QKKyAgICAgICAgICAgIHBhZ2VQb3NpdGlvbi4gSXQg
bm93IHJldHVybnMgYSBGbG9hdFBvaW50IGJ1dCB0aGUgcG9zaXRpb25zCisgICAgICAgICAgICBz
aG91bGQgc3RpbGwgYmUgZGlzY3JldGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmRpZENoYW5nZVNjcm9s
bFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgIChMYXllclRyZWVDb29yZGluYXRvclBy
b3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAo
TGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorCisgICAgICAgICAgICBDaGFuZ2UgdGhlIGludGVy
bmFsIHNjcm9sbCBwb3NpdGlvbi92aXNpYmxlIGNvbnRlbnRzIHJlY3QKKyAgICAgICAgICAgIHRv
IGJlIHJlcHJlc2VudGVkIGFzIGZsb2F0IHBvc2l0aW9ucy4gVGhlIHJvdW5kaW5nIHRvIGludGVn
ZXIKKyAgICAgICAgICAgIHZhbHVlcyBub3QgaGFwcGVucyBqdXN0IGJlZm9yZSBzZXRGaXhlc1Zp
c2libGVDb250ZW50c1JlY3QuCisgICAgICAgICAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRv
IGtub3cgb3VyIGV4YWN0IHBvc2l0aW9ucyBhbmQKKyAgICAgICAgICAgIGNhbGN1bGF0ZSBwcm9w
ZXIgc2Nyb2xsIGRlbHRhcy4KKworICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
c2V0TGF5ZXJTdGF0ZSk6CisKKyAgICAgICAgICAgIEdyb3VwIGFuY2hvciBwb2ludCwgcG9zaXRp
b24gYW5kIHNpemUgdG9nZXRoZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpQYWdlVmlld3BvcnRDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Ym91bmRDb250ZW50c1Bvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkUmVuZGVyRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkUmVx
dWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRp
ZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OnN5bmNWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjp2aXNpYmxlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29u
dGVudHMpOgorCisgICAgICAgICAgICBTb21lIHJlbmFtaW5nIGFzIHdoYXQgd2FzIGNhbGxlZCB2
aWV3cG9ydFBvcyB3YXMgYWN0dWFsbHkgdGhlCisgICAgICAgICAgICBjb250ZW50cyBwb3NpdGlv
bi4gUmVuYW1lIGNsYW1wVmlld3BvcnRUb0NvbnRlbnRzIHRvCisgICAgICAgICAgICBib3VuZENv
bnRlbnRzUG9zaXRpb24gYW5kIHJlbW92ZSBzY2FsZSBhcmd1bWVudCB3aGljaCBpcyBoYXMKKyAg
ICAgICAgICAgIGRpcmVjdCBhY2Nlc3MgdG8uCisKKyAgICAgICAgICAgIE1ha2UgdGhlIGJvdW5k
Q29udGVudHNQb3NpdGlvbiBhbGxvdyBvbmUgZXh0cmEgcGl4ZWwgaW4gZWFjaAorICAgICAgICAg
ICAgb3JpZW50YXRpb24gdG8gYWxsb3cgZm9yIHBpeGVsIGFsaWdubWVudCBvZiBmaXhlZCBwb3Np
dGlvbiBsYXllcnMKKworICAgICAgICAoV2ViS2l0Ojppc0ludGVncmFsKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBpeGVsQWxp
Z25lZEZsb2F0UG9pbnQpOgorCisgICAgICAgICAgICBJbnRyb2R1Y2Ugd2F5IHRvIHBpeGVsIGFs
aWduIHRoZSBtYWluIGNvbnRlbnRzIGxheWVyLiBPbmx5IGluCisgICAgICAgICAgICB1c2UgZm9y
IEVGTCBzbyBmYXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudExlZ2FjeUltcGw6OnVwZGF0ZVZp
ZXdwb3J0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbDo6c2V0Vmlld3BvcnRQb3NpdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNvbnRlbnRQb3NpdGlvbik6CisgICAgICAg
IChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKToKKworICAgICAgICAgICAgU3RvcmUg
dGhlIGNvbnRlbnRzIHBvc2l0aW9uIGFzIGEgRmxvYXRQb2ludC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRpZENo
YW5nZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c3luY0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzSW50ZWdyYWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVBpeGVs
QWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAg
ICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcik6CisKKyAgICAgICAgICAgIFBpeGVsIGFsaWduIGxheWVycyB3aGVu
IHRoZSBlZmZlY3RpdmUgc2NhbGUgaXMgbm90IGFuIGludGVnZXIKKyAgICAgICAgICAgIHZhbHVl
LgorCiAyMDEyLTEyLTA3ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF1bV0syXSBBZGQgZXdrX3NldHRpbmdzIEFQSXMgZm9yIHRleHQgYXV0b3Np
emluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
Y3BwCmluZGV4IDBkNWQ4OTk3ZGQ3NDljMmY4N2RiMWJkYjZhMWZkZTY1YTllMzdhYzguLjUyN2U5
MDc3N2JhMjEzZmVmZmY4ZDUzMGE1MzBhYzg1OTZhZTk2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTI5NSw3ICsyOTUsNyBA
QCBBZmZpbmVUcmFuc2Zvcm0gRXdrVmlld0ltcGw6OnRyYW5zZm9ybUZyb21TY2VuZSgpIGNvbnN0
CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB0cmFuc2Zvcm0uc2NhbGUoMSAv
IG1fc2NhbGVGYWN0b3IpOwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoZGlzY3JldGVQYWdlUG9z
aXRpb24oKS54KCksIGRpc2NyZXRlUGFnZVBvc2l0aW9uKCkueSgpKTsKKyAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlKHBhZ2VQb3NpdGlvbigpLngoKSwgcGFnZVBvc2l0aW9uKCkueSgpKTsKICNlbmRp
ZgogCiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKQEAgLTM5MSw3
ICszOTEsNyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZChUaW1lcjxFd2tW
aWV3SW1wbD4qKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFJlZlB0cjxjYWlyb190
PiBncmFwaGljc0NvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZS5nZXQoKSkp
OwotICAgICAgICBjYWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtIGRpc2Ny
ZXRlUGFnZVBvc2l0aW9uKCkueCgpLCAtIGRpc2NyZXRlUGFnZVBvc2l0aW9uKCkueSgpKTsKKyAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgLSBwYWdlUG9zaXRp
b24oKS54KCksIC0gcGFnZVBvc2l0aW9uKCkueSgpKTsKICAgICAgICAgY2Fpcm9fc2NhbGUoZ3Jh
cGhpY3NDb250ZXh0LmdldCgpLCBtX3NjYWxlRmFjdG9yLCBtX3NjYWxlRmFjdG9yKTsKICAgICAg
ICAgcmVuZGVyZXItPnBhaW50VG9HcmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0LmdldCgp
KTsKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNkLT5pbWFnZSwg
MCwgMCwgdmlld3BvcnQud2lkdGgoKSwgdmlld3BvcnQuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXggYTBhOTI4OTI0ZGQ4
ZThhN2QyNDgxMDU0ZDQ1NzFjNDhhYWEwMjNhZi4uMDMzMWY4MjJkYWU0NTBhNjU4OTIxZjA1ODdl
NWJkNjc2NDQ3OTkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNjYWxl
RmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZUZhY3RvcjsgfQogCiAgICAgdm9pZCBzZXRQ
YWdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9wYWdl
UG9zaXRpb24gPSBwb3NpdGlvbjsgfQotICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGRpc2Ny
ZXRlUGFnZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBvaW50KG1fcGFnZVBv
c2l0aW9uKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQgcGFnZVBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlUG9zaXRpb247IH0KICNlbmRpZgogCiAgICAgLy8gRklYTUU6
IG5lZWRzIHJlZmFjdG9yaW5nIChzcGxpdCBjYWxsYmFjayBpbnZva2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDJiNjFlYjkwYzUzZjk3
NzQ4MmQzYjRkZjQyOGE5MTMwM2UyMDc3NjQuLmQzNzA0NDg2NDhmZTg4NGVhOWU0ZWRmZTE1NmRj
Njc2ODM2ZGU3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC0xODEsMTMgKzE4MSwxMSBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbAog
ICAgIC8vIEluZm9ybSB0aGUgcmVuZGVyZXIgdG8gYWRqdXN0IHZpZXdwb3J0LWZpeGVkIGxheWVy
cy4KICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCkpOwogCi0gICAgLy8gUm91bmQg
dGhlIHJlY3QgaW5zdGVhZCBvZiBlbmNsb3NpbmcgaXQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIHNp
emUgc3RheXMgdGhlIHNhbWUgd2hpbGUgcGFubmluZy4gVGhpcyBjYW4gaGF2ZSBuYXN0eSBlZmZl
Y3RzIG9uIGxheW91dC4KLSAgICBJbnRSZWN0IHJvdW5kZWRSZWN0ID0gcm91bmRlZEludFJlY3Qo
cmVjdCk7Ci0gICAgaWYgKHJvdW5kZWRSZWN0ID09IG1fbGFzdFNlbnRWaXNpYmxlUmVjdCAmJiBz
Y2FsZSA9PSBtX2xhc3RTZW50U2NhbGUgJiYgdHJhamVjdG9yeVZlY3RvciA9PSBtX2xhc3RTZW50
VHJhamVjdG9yeVZlY3RvcikKKyAgICBpZiAocmVjdCA9PSBtX2xhc3RTZW50VmlzaWJsZVJlY3Qg
JiYgc2NhbGUgPT0gbV9sYXN0U2VudFNjYWxlICYmIHRyYWplY3RvcnlWZWN0b3IgPT0gbV9sYXN0
U2VudFRyYWplY3RvcnlWZWN0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHJhd2luZ0Fy
ZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3Jk
aW5hdG9yOjpTZXRWaXNpYmxlQ29udGVudHNSZWN0KHJvdW5kZWRSZWN0LCBzY2FsZSwgdHJhamVj
dG9yeVZlY3RvciksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7Ci0gICAg
bV9sYXN0U2VudFZpc2libGVSZWN0ID0gcm91bmRlZFJlY3Q7CisgICAgbV9kcmF3aW5nQXJlYVBy
b3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OlNldFZpc2libGVDb250ZW50c1JlY3QocmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3Ip
LCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOworICAgIG1fbGFzdFNlbnRW
aXNpYmxlUmVjdCA9IHJlY3Q7CiAgICAgbV9sYXN0U2VudFNjYWxlID0gc2NhbGU7CiAgICAgbV9s
YXN0U2VudFRyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwogfQpAQCAtMjEwLDcg
KzIwOCw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6YW5pbWF0aW9uRnJhbWVS
ZWFkeSgpCiB9CiAjZW5kaWYKIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpkaWRD
aGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCit2b2lkIExheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHk6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uKQogewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJl
bmRlcmVyOjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbiwgbV9yZW5kZXJlci5nZXQoKSwgcG9zaXRp
b24pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApp
bmRleCBkYWYzODgyYmYzN2Y3NDFkODMwNDc4NjJhY2IzY2Q0MDcyZWUxYWQ1Li4xZTA5ZGQ1ZjRh
NmE5NGY1NzE0NDc5NTkzNDNlNjU2OWRjN2JmYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvclByb3h5TWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogICAgIHZvaWQgdXBkYXRlVmlld3BvcnQoKTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgp
OwotICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvc2l0aW9uKTsKKyAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
ICAgICB2b2lkIGNyZWF0ZUNhbnZhcyhDb29yZGluYXRlZExheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwogICAgIHZv
aWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250QnVmZmVyKTsK
QEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgRHJhd2luZ0FyZWFQcm94eSogbV9k
cmF3aW5nQXJlYVByb3h5OwogICAgIFJlZlB0cjxMYXllclRyZWVSZW5kZXJlcj4gbV9yZW5kZXJl
cjsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fbGFzdFNlbnRWaXNpYmxlUmVjdDsKKyAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgbV9sYXN0U2VudFZpc2libGVSZWN0OwogICAgIGZsb2F0IG1fbGFzdFNl
bnRTY2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVj
dG9yOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRyPFNoYXJl
YWJsZVN1cmZhY2U+ID4gU3VyZmFjZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDhmN2FjNWEzNzA2YTcz
YzVjMzc2YTMyMWNlNjk0ZTlmMGMyNmI1YzguLmUxNDU4Y2RhYzZmMzI4MWU3ODYwMDU3OGE3YTc1
OWRmODRkMjlkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDAsNyArNDAsNyBAQCBtZXNzYWdlcyAtPiBM
YXllclRyZWVDb29yZGluYXRvclByb3h5IHsKICAgICBDbGVhckltYWdlQmFja2luZ0NvbnRlbnRz
KHVpbnQ2NF90IGltYWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdl
SUQpCiAgICAgRGlkUmVuZGVyRnJhbWUoV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUsIFdl
YkNvcmU6OkludFJlY3QgY292ZXJlZFJlY3QpCi0gICAgRGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24pCisgICAgRGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6RmxvYXRQb2ludCBwb3NpdGlvbikKICAgICBTZXRMYXllckFuaW1hdGlvbnModWlu
dDMyX3QgaWQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIGFuaW1hdGlvbnMpCiAg
ICAgU2V0QW5pbWF0aW9uc0xvY2tlZChib29sIGxvY2tlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwCmluZGV4IGY4ZmU2YjcxNjJlYzBiYTZiZTQ0ZDc4MGVmOTQ1ZmE1MGJh
OWM1MTEuLmQ1NWJlNGYxOGNjODFlNDJmMWUyMmY4MTBjMTRmODU2ZWJlZDgyZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIExh
eWVyVHJlZVJlbmRlcmVyOjphZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKCkKICAgICAgICAg
dG9UZXh0dXJlTWFwcGVyTGF5ZXIoaXQtPnZhbHVlKS0+c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlm
TmVlZGVkKGRlbHRhKTsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hhbmdlU2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQordm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24p
CiB7CiAgICAgbV9wZW5kaW5nUmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uID0gcG9zaXRp
b247CiB9CkBAIC0zMzMsMTAgKzMzMywxMSBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRM
YXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29vcmRpbmF0ZWRMYQogICAg
IGxheWVyLT5zZXRSZXBsaWNhdGVkQnlMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLnJlcGxpY2Ep
KTsKICAgICBsYXllci0+c2V0TWFza0xheWVyKGxheWVyQnlJRChsYXllckluZm8ubWFzaykpOwog
CisgICAgbGF5ZXItPnNldEFuY2hvclBvaW50KGxheWVySW5mby5hbmNob3JQb2ludCk7CiAgICAg
bGF5ZXItPnNldFBvc2l0aW9uKGxheWVySW5mby5wb3MpOwogICAgIGxheWVyLT5zZXRTaXplKGxh
eWVySW5mby5zaXplKTsKKwogICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0obGF5ZXJJbmZvLnRyYW5z
Zm9ybSk7Ci0gICAgbGF5ZXItPnNldEFuY2hvclBvaW50KGxheWVySW5mby5hbmNob3JQb2ludCk7
CiAgICAgbGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKGxheWVySW5mby5jaGlsZHJlblRyYW5z
Zm9ybSk7CiAgICAgbGF5ZXItPnNldEJhY2tmYWNlVmlzaWJpbGl0eShsYXllckluZm8uYmFja2Zh
Y2VWaXNpYmxlKTsKICAgICBsYXllci0+c2V0Q29udGVudHNPcGFxdWUobGF5ZXJJbmZvLmNvbnRl
bnRzT3BhcXVlKTsKQEAgLTQ1MCw2ICs0NTEsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpj
cmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQog
ICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUg
KGFuZCBubyBwZW5kaW5nIHJlbW92YWwpLgogCiAgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsK
KwogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwogICAg
IEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKICAg
ICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA5OTEyM2YwMjdjM2FlMjk1NTdlNTU2
MDk5OTkyNWZkMGEzODc5YzhiLi5hNWFlODdkYzU1ZTc5NmZiYjQ3MDgxYzE1ZGQzMGViODVmNTZj
MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcGFpbnRUb0dyYXBoaWNzQ29udGV4dChCYWNraW5nU3RvcmU6OlBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0KTsKICAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOworICAgIHZvaWQgZGlkQ2hhbmdl
U2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24pOwogI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZvaWQgY3JlYXRlQ2FudmFzKENvb3JkaW5hdGVk
TGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlPik7CiAgICAgdm9pZCBzeW5jQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwg
dWludDMyX3QgZnJvbnRCdWZmZXIpOwpAQCAtMTg1LDggKzE4NSw4IEBAIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBIYXNoTWFwPENvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6R3JhcGhpY3NMYXll
cio+IExheWVyUmF3UHRyTWFwOwogICAgIExheWVyUmF3UHRyTWFwIG1fZml4ZWRMYXllcnM7CiAg
ICAgQ29vcmRpbmF0ZWRMYXllcklEIG1fcm9vdExheWVySUQ7Ci0gICAgV2ViQ29yZTo6SW50UG9p
bnQgbV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247Ci0gICAgV2ViQ29yZTo6SW50UG9p
bnQgbV9wZW5kaW5nUmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOworICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgbV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247CisgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247CiAg
ICAgYm9vbCBtX2FuaW1hdGlvbnNMb2NrZWQ7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQogICAgIGJvb2wgbV9hbmltYXRpb25GcmFtZVJlcXVlc3RlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCBi
MjlkNTM4MGIwNWM3MTQ4MDQxOTFiMzM0ZThlMjZmZTYwODcwZjNmLi5hMzhiYmM0NGRjODliZTAy
YmJkZGI5N2RlYzljOWEwYTU4MjE3NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoV2ViS2l0OjpXZWJQYWdl
UHJveHkqIHByb3h5LCBQYWdlCiAgICAgLCBtX2hhc1N1c3BlbmRlZENvbnRlbnQoZmFsc2UpCiAg
ICAgLCBtX2hhZFVzZXJJbnRlcmFjdGlvbihmYWxzZSkKICAgICAsIG1fZWZmZWN0aXZlU2NhbGUo
MSkKLSAgICAsIG1fdmlld3BvcnRQb3NJc0xvY2tlZChmYWxzZSkKKyAgICAsIG1fY29udGVudHNQ
b3NpdGlvbklzTG9ja2VkKGZhbHNlKQogICAgICwgbV9lZmZlY3RpdmVTY2FsZUlzTG9ja2VkKGZh
bHNlKQogewogICAgIC8vIEluaXRpYWxpemluZyBWaWV3cG9ydCBSYXcgQXR0cmlidXRlcyB0byBh
dm9pZCByYW5kb20gbmVnYXRpdmUgb3IgaW5maW5pdHkgc2NhbGUgZmFjdG9ycwpAQCAtODcsMTIg
Kzg3LDQ4IEBAIGZsb2F0IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRldmljZVBpeGVsUmF0aW8o
KSBjb25zdAogICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
IH0KIAotRmxvYXRQb2ludCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpjbGFtcFZpZXdwb3J0VG9D
b250ZW50cyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2aWV3cG9ydFBvcywgZmxvYXQgdmll
d3BvcnRTY2FsZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ludGVncmFsKGZsb2F0IHZhbHVlKQog
ewotICAgIGNvbnN0IGZsb2F0IGhvcml6b250YWxSYW5nZSA9IHN0ZDo6bWF4KDAuZiwgbV9jb250
ZW50c1NpemUud2lkdGgoKSAtIG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyB2aWV3cG9ydFNjYWxl
KTsKLSAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJhbmdlID0gc3RkOjptYXgoMC5mLCBtX2NvbnRl
bnRzU2l6ZS5oZWlnaHQoKSAtIG1fdmlld3BvcnRTaXplLmhlaWdodCgpIC8gdmlld3BvcnRTY2Fs
ZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsdWUpID09IHZhbHVlOworfQorCitG
bG9hdFBvaW50IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBpeGVsQWxpZ25lZEZsb2F0UG9pbnQo
Y29uc3QgRmxvYXRQb2ludCYgZnJhbWVQb3NpdGlvbikKK3sKKyNpZiBQTEFURk9STShFRkwpCisg
ICAgaWYgKCFpc0ludGVncmFsKG1fZWZmZWN0aXZlU2NhbGUpKSB7CisgICAgICAgIC8vIFRvIGF2
b2lkIGJsdXJyeW5lc3MsIG1vZGlmeSB0aGUgcG9zaXRpb24gc28gdGhhdCBpdCBtYXBzIGludG8g
YSBkaXNjcmV0ZSBkZXZpY2UgcG9zaXRpb24uCisgICAgICAgIEZsb2F0UG9pbnQgc2NhbGVkUG9z
KGZyYW1lUG9zaXRpb24pOworCisgICAgICAgIC8vIFNjYWxlIGJ5IHRoZSBlZmZlY3RpdmUgc2Nh
bGUgZmFjdG9yIHRvIGNvbXB1dGUgdGhlIHNjcmVlbi1yZWxhdGl2ZSBwb3NpdGlvbi4KKyAgICAg
ICAgc2NhbGVkUG9zLnNjYWxlKG1fZWZmZWN0aXZlU2NhbGUsIG1fZWZmZWN0aXZlU2NhbGUpOwog
Ci0gICAgcmV0dXJuIEZsb2F0UG9pbnQoY2xhbXBUbyh2aWV3cG9ydFBvcy54KCksIDAuZiwgaG9y
aXpvbnRhbFJhbmdlKSwgY2xhbXBUbyh2aWV3cG9ydFBvcy55KCksIDAuZiwgdmVydGljYWxSYW5n
ZSkpOworICAgICAgICAvLyBSb3VuZCB0byBpbnRlZ2VyIGJvdW5kYXJpZXMuCisgICAgICAgIEZs
b2F0UG9pbnQgYWxpZ25lZFBvcyA9IHJvdW5kZWRJbnRQb2ludChzY2FsZWRQb3MpOworCisgICAg
ICAgIC8vIENvbnZlcnQgYmFjayB0byBDU1MgY29vcmRpbmF0ZXMuCisgICAgICAgIGFsaWduZWRQ
b3Muc2NhbGUoMSAvIG1fZWZmZWN0aXZlU2NhbGUsIDEgLyBtX2VmZmVjdGl2ZVNjYWxlKTsKKwor
ICAgICAgICByZXR1cm4gYWxpZ25lZFBvczsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBm
cmFtZVBvc2l0aW9uOworfQorCitGbG9hdFBvaW50IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmJv
dW5kQ29udGVudHNQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBmcmFtZVBvc2l0
aW9uKQoreworICAgIC8vIFdlIG5lZWQgdG8gZmxvb3IgdGhlIHZpZXdwb3J0IGhlcmUgYXMgdG8g
YWxsb3cgYWxpZ25pbmcgdGhlIGNvbnRlbnQgaW4gZGV2aWNlIHVuaXRzLiBJZiBub3QsCisgICAg
Ly8gaXQgbWlnaHQgbm90IGJlIHBvc3NpYmxlIHRvIHNjcm9sbCB0aGUgbGFzdCBwaXhlbCBhbmQg
dGhhdCBhZmZlY3RzIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzLgorICAgIEZsb2F0UmVjdCBib3Vu
ZHM7CisgICAgYm91bmRzLnNldFdpZHRoKHN0ZDo6bWF4KDAuZiwgbV9jb250ZW50c1NpemUud2lk
dGgoKSAtIGZsb29yZihtX3ZpZXdwb3J0U2l6ZS53aWR0aCgpIC8gbV9lZmZlY3RpdmVTY2FsZSkp
KTsKKyAgICBib3VuZHMuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAuZiwgbV9jb250ZW50c1NpemUuaGVp
Z2h0KCkgLSBmbG9vcmYobV92aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBtX2VmZmVjdGl2ZVNjYWxl
KSkpOworCisgICAgRmxvYXRQb2ludCBwb3NpdGlvbjsKKyAgICAvLyBVbmZvcnR1bmF0ZWx5IGl0
IGRvZXNuJ3Qgc2VlbSB0byBiZSBlbm91Z2gsIHNvIGp1c3QgYWx3YXlzIGFsbG93IG9uZSBwaXhl
bCBtb3JlLgorICAgIHBvc2l0aW9uLnNldFgoY2xhbXBUbyhmcmFtZVBvc2l0aW9uLngoKSwgYm91
bmRzLngoKSwgYm91bmRzLndpZHRoKCkgKyAxKSk7CisgICAgcG9zaXRpb24uc2V0WShjbGFtcFRv
KGZyYW1lUG9zaXRpb24ueSgpLCBib3VuZHMueSgpLCBib3VuZHMuaGVpZ2h0KCkgKyAxKSk7CisK
KyAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6
ZGlkQ29tbWl0TG9hZCgpCkBAIC0xNDYsMTIgKzE4MiwxMiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29u
c3QgSQogICAgICAgICBtX2NsaWVudC0+c2V0Q29udGVudHNTY2FsZShtX2VmZmVjdGl2ZVNjYWxl
LCBmYWxzZSk7CiAgICAgICAgIG1fZWZmZWN0aXZlU2NhbGVJc0xvY2tlZCA9IGZhbHNlOwogICAg
IH0KLSAgICBpZiAobV92aWV3cG9ydFBvc0lzTG9ja2VkKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQg
Y2xhbXBlZFBvcyA9IGNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKG1fdmlld3BvcnRQb3MsIG1fZWZm
ZWN0aXZlU2NhbGUpOworICAgIGlmIChtX2NvbnRlbnRzUG9zaXRpb25Jc0xvY2tlZCkgeworICAg
ICAgICBGbG9hdFBvaW50IGNvbnRlbnRzUG9zID0gYm91bmRDb250ZW50c1Bvc2l0aW9uKG1fY29u
dGVudHNQb3NpdGlvbik7CiAgICAgICAgIC8vIFRoZXJlIG1pZ2h0IGJlIHJlbmRlcmVkIGZyYW1l
cyBub3QgY292ZXJpbmcgb3VyIHJlcXVlc3RlZCBwb3NpdGlvbiB5ZXQsIHdhaXQgZm9yIGl0Lgot
ICAgICAgICBpZiAoRmxvYXRSZWN0KGNsYW1wZWRQb3MsIHZpZXdwb3J0U2l6ZUluQ29udGVudHND
b29yZGluYXRlcygpKS5pbnRlcnNlY3RzKGNvdmVyZWRSZWN0KSkgewotICAgICAgICAgICAgbV9j
bGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24oY2xhbXBlZFBvcyk7Ci0gICAgICAgICAgICBtX3Zp
ZXdwb3J0UG9zSXNMb2NrZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKEZsb2F0UmVjdChjb250ZW50
c1BvcywgdmlzaWJsZUNvbnRlbnRzU2l6ZSgpKS5pbnRlcnNlY3RzKGNvdmVyZWRSZWN0KSkgewor
ICAgICAgICAgICAgbV9jbGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24oY29udGVudHNQb3MpOwor
ICAgICAgICAgICAgbV9jb250ZW50c1Bvc2l0aW9uSXNMb2NrZWQgPSBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTE3NywxMiArMjEzLDE3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9uKQog
ICAgIGlmIChtX2hhc1N1c3BlbmRlZENvbnRlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZs
b2F0UmVjdCBlbmRWaXNpYmxlQ29udGVudFJlY3QoY2xhbXBWaWV3cG9ydFRvQ29udGVudHMoY3Nz
UG9zaXRpb24sIG1fZWZmZWN0aXZlU2NhbGUpLCB2aWV3cG9ydFNpemVJbkNvbnRlbnRzQ29vcmRp
bmF0ZXMoKSk7CisgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHBpeGVsQWxpZ25lZEZsb2F0UG9p
bnQoRmxvYXRQb2ludChjc3NQb3NpdGlvbikpOworICAgIEZsb2F0UG9pbnQgYm91bmRQb3NpdGlv
biA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihwb3NpdGlvbik7CisKKyAgICBGbG9hdFJlY3QgZW5k
VmlzaWJsZUNvbnRlbnRSZWN0KGJvdW5kUG9zaXRpb24sIHZpc2libGVDb250ZW50c1NpemUoKSk7
CisKICAgICBpZiAobV9sYXN0RnJhbWVDb3ZlcmVkUmVjdC5pbnRlcnNlY3RzKGVuZFZpc2libGVD
b250ZW50UmVjdCkpCi0gICAgICAgIG1fY2xpZW50LT5zZXRWaWV3cG9ydFBvc2l0aW9uKGVuZFZp
c2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKLSAgICBlbHNlCi0gICAgICAgIC8vIEtlZXAg
dGhlIHVuY2xhbXBlZCBwb3NpdGlvbiBpbiBjYXNlIHRoZSBjb250ZW50cyBzaXplIGlzIGNoYW5n
ZWQgbGF0ZXIgb24uCi0gICAgICAgIGFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRz
KGNzc1Bvc2l0aW9uKTsKKyAgICAgICAgbV9jbGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24oYm91
bmRQb3NpdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEtlZXAgdGhlIHVuYm91bmQgcG9z
aXRpb24gaW4gY2FzZSB0aGUgY29udGVudHMgc2l6ZSBpcyBjaGFuZ2VkIGxhdGVyIG9uLgorICAg
ICAgICBhcHBseVBvc2l0aW9uQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhwb3NpdGlvbik7CisgICAg
fQogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6
ZShjb25zdCBGbG9hdFNpemUmIG5ld1NpemUpCkBAIC0xOTcsMTIgKzIzOCwxMiBAQCB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBGbG9hdFNp
emUmIG5ld1NpemUpCiAgICAgbV93ZWJQYWdlUHJveHktPnNldFZpZXdwb3J0U2l6ZShyb3VuZGVk
SW50U2l6ZShuZXdTaXplKSk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlk
Q2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0UG9zLCBm
bG9hdCB2aWV3cG9ydFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQor
dm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHko
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50
JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIGlmICghbV92aWV3cG9ydFBvc0lzTG9ja2VkKQot
ICAgICAgICBtX3ZpZXdwb3J0UG9zID0gdmlld3BvcnRQb3M7CisgICAgaWYgKCFtX2NvbnRlbnRz
UG9zaXRpb25Jc0xvY2tlZCkKKyAgICAgICAgbV9jb250ZW50c1Bvc2l0aW9uID0gcG9zaXRpb247
CiAgICAgaWYgKCFtX2VmZmVjdGl2ZVNjYWxlSXNMb2NrZWQpCi0gICAgICAgIG1fZWZmZWN0aXZl
U2NhbGUgPSB2aWV3cG9ydFNjYWxlOworICAgICAgICBtX2VmZmVjdGl2ZVNjYWxlID0gc2NhbGU7
CiAKICAgICBzeW5jVmlzaWJsZUNvbnRlbnRzKHRyYWplY3RvcnlWZWN0b3IpOwogfQpAQCAtMjEz
LDcgKzI1NCw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6c3luY1Zpc2libGVDb250
ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjCiAgICAgaWYgKCFkcmF3aW5nQXJl
YSB8fCBtX3ZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50c1NpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdChj
bGFtcFZpZXdwb3J0VG9Db250ZW50cyhtX3ZpZXdwb3J0UG9zLCBtX2VmZmVjdGl2ZVNjYWxlKSwg
dmlld3BvcnRTaXplSW5Db250ZW50c0Nvb3JkaW5hdGVzKCkpOworICAgIEZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudHNSZWN0KGJvdW5kQ29udGVudHNQb3NpdGlvbihtX2NvbnRlbnRzUG9zaXRpb24p
LCB2aXNpYmxlQ29udGVudHNTaXplKCkpOwogICAgIHZpc2libGVDb250ZW50c1JlY3QuaW50ZXJz
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fY29udGVudHNTaXplKSk7CiAgICAg
ZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCwg
bV9lZmZlY3RpdmVTY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CiAKQEAgLTIzNiw5ICsyNzcsOSBA
QCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydAogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXMoKTsKIH0KIAotV2ViQ29yZTo6RmxvYXRTaXplIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXI6OnZpZXdwb3J0U2l6ZUluQ29udGVudHNDb29yZGluYXRlcygpIGNvbnN0CitGbG9hdFNp
emUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dmlzaWJsZUNvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZShtX3ZpZXdwb3J0U2l6ZS53aWR0aCgpIC8g
bV9lZmZlY3RpdmVTY2FsZSwgbV92aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBtX2VmZmVjdGl2ZVNj
YWxlKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyBtX2Vm
ZmVjdGl2ZVNjYWxlLCBtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIG1fZWZmZWN0aXZlU2NhbGUp
OwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnN1c3BlbmRDb250ZW50KCkKQEAg
LTI3MCw4ICszMTEsOCBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5U2NhbGVB
ZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IHNjYWxlKQogCiB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OmFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKGNvbnN0IEZsb2F0
UG9pbnQmIHBvcykKIHsKLSAgICBtX3ZpZXdwb3J0UG9zID0gcG9zOwotICAgIG1fdmlld3BvcnRQ
b3NJc0xvY2tlZCA9IHRydWU7CisgICAgbV9jb250ZW50c1Bvc2l0aW9uID0gcG9zOworICAgIG1f
Y29udGVudHNQb3NpdGlvbklzTG9ja2VkID0gdHJ1ZTsKICAgICBzeW5jVmlzaWJsZUNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3Bv
cnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29u
dHJvbGxlci5oCmluZGV4IDAyOTIyOGRkZTVhNjliNzJjN2E0MGIwYmRmNGE1ODIwOGQ5ODY1YjEu
LjUyZjYyNGI4MDdlMThjMmZkMjFjMjRjYWIzNmFjZmJhY2JmNzZiYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNTIsNyAr
NTIsOSBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCBpbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKGZs
b2F0KSBjb25zdDsKICAgICBmbG9hdCBvdXRlckJvdW5kZWRWaWV3cG9ydFNjYWxlKGZsb2F0KSBj
b25zdDsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZpZXdwb3J0UG9zLCBmbG9hdCB2aWV3cG9ydFNjYWxl
KTsKKworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgcGl4ZWxBbGlnbmVkRmxvYXRQb2ludChjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBib3VuZENv
bnRlbnRzUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCiAgICAgYm9vbCBo
YXNTdXNwZW5kZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNTdXNwZW5kZWRDb250ZW50
OyB9CiAgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2hhZFVz
ZXJJbnRlcmFjdGlvbjsgfQpAQCAtNjgsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3Rp
ZmljYXRpb25zIGZyb20gdGhlIHZpZXdwb3J0LgogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRT
aXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbmV3U2l6ZSk7Ci0gICAgdm9pZCBkaWRDaGFu
Z2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdmlld3BvcnRQ
b3MsIGZsb2F0IHZpZXdwb3J0U2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWpl
Y3RvcnlWZWN0b3IgPSBXZWJDb3JlOjpGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAgIHZvaWQgZGlk
Q2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBmbG9h
dCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvciA9IFdl
YkNvcmU6OkZsb2F0UG9pbnQ6Onplcm8oKSk7CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20g
dGhlIFdlYlByb2Nlc3MuCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CkBAIC04NSw3ICs4Nyw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhm
bG9hdCBzY2FsZSk7CiAgICAgdm9pZCBhcHBseVBvc2l0aW9uQWZ0ZXJSZW5kZXJpbmdDb250ZW50
cyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3MpOwogICAgIGJvb2wgdXBkYXRlTWluaW11
bVNjYWxlVG9GaXQoYm9vbCB1c2VySW5pdGlhdGVkVXBkYXRlKTsKLSAgICBXZWJDb3JlOjpGbG9h
dFNpemUgdmlld3BvcnRTaXplSW5Db250ZW50c0Nvb3JkaW5hdGVzKCkgY29uc3Q7CisKKyAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgdmlzaWJsZUNvbnRlbnRzU2l6ZSgpIGNvbnN0OwogCiAgICAgV2Vi
UGFnZVByb3h5KiBjb25zdCBtX3dlYlBhZ2VQcm94eTsKICAgICBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50KiBtX2NsaWVudDsKQEAgLTk5LDEzICsxMDIsMTMgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faGFzU3VzcGVuZGVkQ29udGVudDsKICAgICBib29sIG1faGFkVXNlckludGVyYWN0aW9u
OwogCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3ZpZXdwb3J0UG9zOwotICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fY29u
dGVudHNQb3NpdGlvbjsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9jb250ZW50c1NpemU7Cisg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwogICAgIFdlYkNvcmU6OkludFNp
emUgbV9jbGllbnRDb250ZW50c1NpemU7CiAgICAgZmxvYXQgbV9lZmZlY3RpdmVTY2FsZTsgLy8g
U2hvdWxkIGFsd2F5cyBiZSBjc3NTY2FsZSAqIGRldmljZVBpeGVsUmF0aW8uCiAKLSAgICBib29s
IG1fdmlld3BvcnRQb3NJc0xvY2tlZDsKKyAgICBib29sIG1fY29udGVudHNQb3NpdGlvbklzTG9j
a2VkOwogICAgIGJvb2wgbV9lZmZlY3RpdmVTY2FsZUlzTG9ja2VkOwogICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCBtX2xhc3RGcmFtZUNvdmVyZWRSZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKaW5kZXggYzhiMjZm
ZWFkNTdmZGMxYWZhYmFjM2FlMjg4MGYxODY5MjNjMWFiYy4uZTU2Njg3NTZkODViYWFjODlhZjg3
YmY1Y2Y1OTBhNTUxMTNmYzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBQ
YWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFBhZ2VDbGllbnRMZWdh
Y3lJbXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkK
IHsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCkt
PmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoSW50UmVjdChtX3ZpZXdJbXBs
LT5kaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLCBzaXplKSwgbV92aWV3SW1wbC0+c2NhbGVGYWN0b3Io
KSwgRmxvYXRQb2ludCgpKTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCkt
PnNldFZpc2libGVDb250ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50UG9pbnQobV92aWV3SW1w
bC0+cGFnZVBvc2l0aW9uKCkpLCBzaXplKSwgbV92aWV3SW1wbC0+c2NhbGVGYWN0b3IoKSwgRmxv
YXRQb2ludCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNpemUpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAppbmRleCBmZTI5MTM5NjkzNmIyNTc3Nzk3NTk2Mzg3
YzVjYjY2ZmQ5YWUwZGNiLi41NDkwNTIzOGUyMjgyYWJhOGYzMjhiNjQ5NDhhMGZkNjQyNzEzZjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9p
ZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2kKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRl
bnRzUG9pbnQpCiB7Ci0gICAgbV9jb250ZW50UG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQoY29u
dGVudHNQb2ludCk7CisgICAgbV9jb250ZW50UG9zaXRpb24gPSBjb250ZW50c1BvaW50OwogCiAg
ICAgRmxvYXRQb2ludCBwb3MoY29udGVudHNQb2ludCk7CiAgICAgcG9zLnNjYWxlKHNjYWxlRmFj
dG9yKCksIHNjYWxlRmFjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAppbmRleCAx
YWU2YTU0MWQ0MGQ0MDQ4MzQzODRmMmE4YjNhZDllZmVjNjg5YTI5Li4zNGY2MTBiMGUwOTBmMjBl
N2E1Y2Y5Mjg5NmIxNDkyNjU1MGQ3NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0Fy
ZWEoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV92
aWV3cG9ydFNpemU7IH0KICAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld0ltcGwtPnNjYWxlRmFjdG9yKCk7IH0KLSAgICBXZWJDb3JlOjpJbnRQb2ludCBjb250ZW50
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3NpdGlvbjsgfQorICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQgY29udGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
UG9zaXRpb247IH0KIAogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHZpZXdwb3J0U2l6ZSk7CiAgICAgdm9pZCBzZXRSZW5kZXJlckFjdGl2ZShib29s
KTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJ
bXBsOwogICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7Ci0gICAgV2ViQ29yZTo6
SW50UG9pbnQgbV9jb250ZW50UG9zaXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2Nv
bnRlbnRQb3NpdGlvbjsKICAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAppbmRleCBkNmFkNzdhYTA4ZjQ4ZTRmYjgzMzNkZTk2ZDE1ZTAzZDVh
MjlkN2VlLi4wMGFkYzAzOTE2OWVmYjk4YTBiNjEwMzUyYzA1YTc4NGI1NmIxNGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTEsNiArMSw4IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIENvcHlyaWdodCAoQykgMjAxMiBDb21w
YW55IDEwMCwgSW5jLgorIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTAxLDYgKzEwMywxNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKQog
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlR2VvbWV0cnkoKQogewor
ICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgYWRqdXN0
ZWRBbmNob3JQb2ludDsKKyAgICBGbG9hdFNpemUgYWRqdXN0ZWRTaXplOworICAgIEZsb2F0U2l6
ZSBwaXhlbEFsaWdubWVudE9mZnNldDsKKyAgICBjb21wdXRlUGl4ZWxBbGlnbm1lbnQoYWRqdXN0
ZWRQb3NpdGlvbiwgYWRqdXN0ZWRTaXplLCBhZGp1c3RlZEFuY2hvclBvaW50LCBwaXhlbEFsaWdu
bWVudE9mZnNldCk7CisKKyAgICBtX2FkanVzdGVkUG9zaXRpb24gPSBhZGp1c3RlZFBvc2l0aW9u
OworICAgIG1fYWRqdXN0ZWRTaXplID0gYWRqdXN0ZWRTaXplOworICAgIG1fYWRqdXN0ZWRBbmNo
b3JQb2ludCA9IGFkanVzdGVkQW5jaG9yUG9pbnQ7CisgICAgbV9waXhlbEFsaWdubWVudE9mZnNl
dCA9IHBpeGVsQWxpZ25tZW50T2Zmc2V0OworCiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwog
ICAgIHNldFNob3VsZFVwZGF0ZVZpc2libGVSZWN0KCk7CiB9CkBAIC00MDUsNyArNDE4LDYgQEAg
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVy
KiBsYXllcikKICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciA9IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKTsKICAgICBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXItPmRpZENoYW5nZUxheWVyU3RhdGUoKTsKICAgICBkaWRDaGFuZ2VM
YXllclN0YXRlKCk7Ci0KIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNob3Vs
ZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqIGltYWdlKSBjb25zdApAQCAtNTI0LDcgKzUz
Niw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgpCiAg
ICAgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSA9IGZhbHNlOwogICAgIG1fbGF5ZXJJbmZvLmZpeGVk
VG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydCgpOwogCi0gICAgbV9sYXllckluZm8uYW5jaG9y
UG9pbnQgPSBhbmNob3JQb2ludCgpOwogICAgIG1fbGF5ZXJJbmZvLmJhY2tmYWNlVmlzaWJsZSA9
IGJhY2tmYWNlVmlzaWJpbGl0eSgpOwogICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3Jt
ID0gY2hpbGRyZW5UcmFuc2Zvcm0oKTsKICAgICBtX2xheWVySW5mby5jb250ZW50c09wYXF1ZSA9
IGNvbnRlbnRzT3BhcXVlKCk7CkBAIC01MzQsMTEgKzU0NSwxNCBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLm1hc2sgPSB0
b0Nvb3JkaW5hdGVkTGF5ZXJJRChtYXNrTGF5ZXIoKSk7CiAgICAgbV9sYXllckluZm8ubWFza3NU
b0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHMoKTsKICAgICBtX2xheWVySW5mby5vcGFjaXR5ID0gb3Bh
Y2l0eSgpOwotICAgIG1fbGF5ZXJJbmZvLnBvcyA9IHBvc2l0aW9uKCk7CiAgICAgbV9sYXllcklu
Zm8ucHJlc2VydmVzM0QgPSBwcmVzZXJ2ZXMzRCgpOwogICAgIG1fbGF5ZXJJbmZvLnJlcGxpY2Eg
PSB0b0Nvb3JkaW5hdGVkTGF5ZXJJRChyZXBsaWNhTGF5ZXIoKSk7Ci0gICAgbV9sYXllckluZm8u
c2l6ZSA9IHNpemUoKTsKICAgICBtX2xheWVySW5mby50cmFuc2Zvcm0gPSB0cmFuc2Zvcm0oKTsK
KworICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gbV9hZGp1c3RlZEFuY2hvclBvaW50Owor
ICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsKKyAgICBtX2xheWVySW5m
by5zaXplID0gbV9hZGp1c3RlZFNpemU7CisKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5ZXJT
dGF0ZShtX2lkLCBtX2xheWVySW5mbyk7CiB9CiAKQEAgLTcxOSw3ICs3MzMsNyBAQCBJbnRSZWN0
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgp
CiAgICAgLy8gVGhlIHJlc3VsdGluZyBxdWFkIG1pZ2h0IGJlIHNxdWV3ZWQgYW5kIHRoZSB2aXNp
YmxlIHJlY3QgaXMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIHF1YWQsCiAgICAgLy8gc28gaXQg
bWlnaHQgc3ByZWFkIGZ1cnRoZXIgdGhhbiB0aGUgcmVhbCB2aXNpYmxlIGFyZWEgKGFuZCB0aGVu
IGV2ZW4gbW9yZSBhbXBsaWZpZWQgYnkgdGhlIGNvdmVyIHJlY3QgbXVsdGlwbGllcikuCiAgICAg
QVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJp
bmVkKCkuaW52ZXJzZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRy
YW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3Qo
bV9jb29yZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpKSkpOworICAgIEZsb2F0UmVjdCBy
ZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1
YWQoRmxvYXRRdWFkKG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwogICAg
IGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHRpbGVkQmFja2luZ1N0
b3JlQ29udGVudHNSZWN0KCkpOwogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwog
fQpAQCAtODE1LDYgKzgyOSw2NCBAQCBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aGFz
UGVuZGluZ1Zpc2libGVDaGFuZ2VzKCkKICAgICByZXR1cm4gdGlsZWRCYWNraW5nU3RvcmVWaXNp
YmxlUmVjdCgpLmludGVyc2VjdHModGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ludGVncmFsKGZsb2F0IHZhbHVlKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSA9PSB2YWx1ZTsKK30KKworRmxvYXRQb2ludCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKCkK
K3sKKyAgICBGbG9hdFBvaW50IG9mZnNldDsKKyAgICBmb3IgKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
IGN1cnJMYXllciA9IHRoaXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5wYXJl
bnQoKSkKKyAgICAgICAgb2Zmc2V0ICs9IGN1cnJMYXllci0+cG9zaXRpb24oKTsKKworICAgIHJl
dHVybiBvZmZzZXQ7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRl
UGl4ZWxBbGlnbm1lbnQoRmxvYXRQb2ludCYgcG9zaXRpb24sIEZsb2F0U2l6ZSYgc2l6ZSwgRmxv
YXRQb2ludDNEJiBhbmNob3JQb2ludCwgRmxvYXRTaXplJiBhbGlnbm1lbnRPZmZzZXQpCit7Cisg
ICAgaWYgKGlzSW50ZWdyYWwoZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKSkgeworICAgICAgICBw
b3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgICAgIHNpemUgPSBtX3NpemU7CisgICAgICAgIGFu
Y2hvclBvaW50ID0gbV9hbmNob3JQb2ludDsKKyAgICAgICAgYWxpZ25tZW50T2Zmc2V0ID0gRmxv
YXRTaXplKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGbG9hdFBvaW50IHBvc2l0
aW9uUmVsYXRpdmVUb0Jhc2UgPSBjb21wdXRlUG9zaXRpb25SZWxhdGl2ZVRvQmFzZSgpOworCisg
ICAgRmxvYXRSZWN0IGJhc2VSZWxhdGl2ZUJvdW5kcyhwb3NpdGlvblJlbGF0aXZlVG9CYXNlLCBt
X3NpemUpOworICAgIEZsb2F0UmVjdCBzY2FsZWRCb3VuZHMgPSBiYXNlUmVsYXRpdmVCb3VuZHM7
CisKKyAgICAvLyBTY2FsZSBieSB0aGUgZWZmZWN0aXZlIHNjYWxlIGZhY3RvciB0byBjb21wdXRl
IHRoZSBzY3JlZW4tcmVsYXRpdmUgYm91bmRzLgorICAgIHNjYWxlZEJvdW5kcy5zY2FsZShlZmZl
Y3RpdmVDb250ZW50c1NjYWxlKCkpOworCisgICAgLy8gUm91bmQgdG8gaW50ZWdlciBib3VuZGFy
aWVzLgorICAgIC8vIE5PVEU6IFdoZW4gdXNpbmcgZW5jbG9zaW5nSW50UmVjdCAoYXMgbWFjKSBp
dCB3aWxsIGhhdmUgZGlmZmVyZW50IHNpemVzIGRlcGVuZGluZyBvbiBwb3NpdGlvbi4KKyAgICBG
bG9hdFJlY3QgYWxpZ25lZEJvdW5kcyA9IHJvdW5kZWRJbnRSZWN0KHNjYWxlZEJvdW5kcyk7CisK
KyAgICAvLyBDb252ZXJ0IGJhY2sgdG8gbGF5ZXIgY29vcmRpbmF0ZXMuCisgICAgYWxpZ25lZEJv
dW5kcy5zY2FsZSgxIC8gZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKKworICAgIC8vIENvbnZl
cnQgYmFjayB0byBsYXllciBjb29yZGluYXRlcy4KKyAgICBhbGlnbm1lbnRPZmZzZXQgPSBiYXNl
UmVsYXRpdmVCb3VuZHMubG9jYXRpb24oKSAtIGFsaWduZWRCb3VuZHMubG9jYXRpb24oKTsKKwor
ICAgIHBvc2l0aW9uID0gbV9wb3NpdGlvbiAtIGFsaWdubWVudE9mZnNldDsKKyAgICBzaXplID0g
YWxpZ25lZEJvdW5kcy5zaXplKCk7CisKKyAgICAvLyBOb3cgd2UgaGF2ZSB0byBjb21wdXRlIGEg
bmV3IGFuY2hvciBwb2ludCB3aGljaCBjb21wZW5zYXRlcyBmb3Igcm91bmRpbmcuCisgICAgZmxv
YXQgYW5jaG9yUG9pbnRYID0gbV9hbmNob3JQb2ludC54KCk7CisgICAgZmxvYXQgYW5jaG9yUG9p
bnRZID0gbV9hbmNob3JQb2ludC55KCk7CisKKyAgICBpZiAoYWxpZ25lZEJvdW5kcy53aWR0aCgp
KQorICAgICAgICBhbmNob3JQb2ludFggPSAoYmFzZVJlbGF0aXZlQm91bmRzLndpZHRoKCkgKiBh
bmNob3JQb2ludFggKyBhbGlnbm1lbnRPZmZzZXQud2lkdGgoKSkgLyBhbGlnbmVkQm91bmRzLndp
ZHRoKCk7CisKKyAgICBpZiAoYWxpZ25lZEJvdW5kcy5oZWlnaHQoKSkKKyAgICAgICAgYW5jaG9y
UG9pbnRZID0gKGJhc2VSZWxhdGl2ZUJvdW5kcy5oZWlnaHQoKSAqIGFuY2hvclBvaW50WSArIGFs
aWdubWVudE9mZnNldC5oZWlnaHQoKSkgLyBhbGlnbmVkQm91bmRzLmhlaWdodCgpOworCisgICAg
YW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QoYW5jaG9yUG9pbnRYLCBhbmNob3JQb2ludFksIG1f
YW5jaG9yUG9pbnQueigpICogZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKK30KKwogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkK
IHsKICAgICAvLyBXaGVuIHdlIGhhdmUgYSB0cmFuc2Zvcm0gYW5pbWF0aW9uLCB3ZSBuZWVkIHRv
IHVwZGF0ZSB2aXNpYmxlIHJlY3QgZXZlcnkgZnJhbWUgdG8gYWRqdXN0IHRoZSB2aXNpYmxlIHJl
Y3Qgb2YgYSBiYWNraW5nIHN0b3JlLgpAQCAtODI3LDEyICs4OTksMTUgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICBp
ZiAoaGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKQogICAgICAgICBjbGllbnQoKS0+Z2V0Q3Vy
cmVudFRyYW5zZm9ybSh0aGlzLCBjdXJyZW50VHJhbnNmb3JtKTsKICAgICBtX2xheWVyVHJhbnNm
b3JtLnNldExvY2FsVHJhbnNmb3JtKGN1cnJlbnRUcmFuc2Zvcm0pOwotICAgIG1fbGF5ZXJUcmFu
c2Zvcm0uc2V0UG9zaXRpb24ocG9zaXRpb24oKSk7Ci0gICAgbV9sYXllclRyYW5zZm9ybS5zZXRB
bmNob3JQb2ludChhbmNob3JQb2ludCgpKTsKLSAgICBtX2xheWVyVHJhbnNmb3JtLnNldFNpemUo
c2l6ZSgpKTsKKworICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0QW5jaG9yUG9pbnQobV9hZGp1c3Rl
ZEFuY2hvclBvaW50KTsKKyAgICBtX2xheWVyVHJhbnNmb3JtLnNldFBvc2l0aW9uKG1fYWRqdXN0
ZWRQb3NpdGlvbik7CisgICAgbV9sYXllclRyYW5zZm9ybS5zZXRTaXplKG1fYWRqdXN0ZWRTaXpl
KTsKKwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0RmxhdHRlbmluZyghcHJlc2VydmVzM0QoKSk7
CiAgICAgbV9sYXllclRyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShjaGlsZHJlblRyYW5z
Zm9ybSgpKTsKICAgICBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVUcmFuc2Zvcm1zKHBhcmVudCgp
ID8gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIocGFyZW50KCkpLT5tX2xheWVyVHJhbnNmb3Jt
LmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworCiAgICAg
bV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmlu
dmVyc2UoKTsKIAogICAgIC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGlu
IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDU2NGE5NzQxZmYxMDky
ZmE0ZjI1Njg1NDVmNDViN2VhNGQ5ZjQ1YTEuLmQ5ZmJlN2VjNGExYTc4NzM1MTZkOTU3ODE1Njk2
YWU4MzAzOTk4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwg
Y29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3Qg
dGlsZUlEKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNvbnRl
bnRzUmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVU
aWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3Jl
OjpJbWFnZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoQ29vcmRpbmF0
ZWRMYXllcklELCBjb25zdCBDb29yZGluYXRlZExheWVySW5mbyYpID0gMDsKQEAgLTEyOSw3ICsx
MjksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRv
dWJsZSB0aW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygp
IE9WRVJSSURFOwotICAgIAorCisgICAgRmxvYXRQb2ludCBjb21wdXRlUG9zaXRpb25SZWxhdGl2
ZVRvQmFzZSgpOworICAgIHZvaWQgY29tcHV0ZVBpeGVsQWxpZ25tZW50KEZsb2F0UG9pbnQmIHBv
c2l0aW9uLCBGbG9hdFNpemUmLCBGbG9hdFBvaW50M0QmIGFuY2hvclBvaW50LCBGbG9hdFNpemUm
IGFsaWdubWVudE9mZnNldCk7CisKICAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwog
ICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9h
dFBvaW50Jik7CiAKQEAgLTIxMCw2ICsyMTMsMTEgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJJbmZvIG1fbGF5ZXJJbmZvOwogICAgIEdyYXBoaWNzTGF5ZXJUcmFuc2Zv
cm0gbV9sYXllclRyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2NhY2hlZElu
dmVyc2VUcmFuc2Zvcm07CisgICAgRmxvYXRTaXplIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7Cisg
ICAgRmxvYXRTaXplIG1fYWRqdXN0ZWRTaXplOworICAgIEZsb2F0UG9pbnQgbV9hZGp1c3RlZFBv
c2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX2FkanVzdGVkQW5jaG9yUG9pbnQ7CisKICAgICBi
b29sIG1faW5VcGRhdGVNb2RlIDogMTsKICAgICBib29sIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJl
Y3Q6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNMYXllclN0YXRlOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IGM5ODVk
MTFiM2E2ZTAwNmMzZmYyNjAwYWQyM2QwYmM5MDlhNzA0MjYuLmJmNjdlYWRmZDhjNGI5YWE5MzIy
Y2E3MmY3MTQxNDA5NGNmOTlmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIExheWVy
VHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKICAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlJlbW92ZVVw
ZGF0ZUF0bGFzKGF0bGFzSUQpKTsKIH0KIAotV2ViQ29yZTo6SW50UmVjdCBMYXllclRyZWVDb29y
ZGluYXRvcjo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0CitXZWJDb3JlOjpGbG9hdFJlY3Qg
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdAogewogICAg
IHJldHVybiBtX3Zpc2libGVDb250ZW50c1JlY3Q7CiB9CkBAIC02OTUsNyArNjk1LDcgQEAgdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5
ZXJJRCBsYXllcklELCBjb25zdAogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eTo6U2V0TGF5ZXJBbmltYXRpb25zKGxheWVySUQsIGFjdGl2ZUFu
aW1hdGlvbnMpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgRmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZp
c2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSwgY29u
c3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKICAgICBib29sIGNvbnRlbnRzUmVj
dERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0OwogICAgIGJvb2wgY29u
dGVudHNTY2FsZURpZENoYW5nZSA9IHNjYWxlICE9IG1fY29udGVudHNTY2FsZTsKQEAgLTcxNyw4
ICs3MTcsMTIgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2EKICAgICB9CiAKICAgICBzY2hlZHVs
ZUxheWVyRmx1c2goKTsKLSAgICBpZiAobV93ZWJQYWdlLT51c2VGaXhlZExheW91dCgpKQotICAg
ICAgICBtX3dlYlBhZ2UtPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpOworICAgIGlm
IChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsKKyAgICAgICAgLy8gUm91bmQgdGhlIHJl
Y3QgaW5zdGVhZCBvZiBlbmNsb3NpbmcgaXQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIHNpemUgc3Rh
eXMKKyAgICAgICAgLy8gdGhlIHNhbWUgd2hpbGUgcGFubmluZy4gVGhpcyBjYW4gaGF2ZSBuYXN0
eSBlZmZlY3RzIG9uIGxheW91dC4KKyAgICAgICAgbV93ZWJQYWdlLT5zZXRGaXhlZFZpc2libGVD
b250ZW50UmVjdChyb3VuZGVkSW50UmVjdChyZWN0KSk7CisgICAgfQorCiAgICAgaWYgKGNvbnRl
bnRzUmVjdERpZENoYW5nZSkKICAgICAgICAgbV9zaG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRh
dGUgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmgKaW5kZXggMjY4YThhOTFjMjRkMjZmM2MyZTllOTcyZDhiNWU3NGU5MjdmNDg1
Zi4uN2JiNjhiOGM3NzNiODMyMzE2NWE3YWExOTQyODlkMTQ2ODFmNWE1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC04MSwxMSAr
ODEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKENvb3JkaW5hdGVk
TGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShDb29yZGlu
YXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29v
cmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVz
KCk7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvck1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xh
eWVyRmFjdG9yeSgpIE9WRVJSSURFOwogCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgbV93YWl0aW5nRm9yVUlQcm9jZXNzOwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsK
LSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsKKyAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwogICAgIGZsb2F0IG1fY29udGVudHNT
Y2FsZTsKICAgICBib29sIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
Lm1lc3NhZ2VzLmluCmluZGV4IDZhYzM3MjU2MjEwNmViYzM4YTQxZWJkMTIxNmM5NTAwZDVkZGZm
ZDIuLjE2MzZlNzAwOWVmMTIxZDhhNGNmYTFhNjU0YWNkMjlkYTgzMjc1OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLm1l
c3NhZ2VzLmluCkBAIC0xLDUgKzEsNiBAQAogIwogIyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisjICAgIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogIyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNyArMjEsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogbWVzc2FnZXMgLT4gTGF5ZXJUcmVlQ29vcmRpbmF0b3IgewotICAgIFNldFZp
c2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBm
bG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCB0cmFqZWN0b3J5VmVjdG9yeSkKKyAgICBT
ZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNS
ZWN0LCBmbG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCB0cmFqZWN0b3J5VmVjdG9yeSkK
ICAgICBSZW5kZXJOZXh0RnJhbWUoKQogICAgIFB1cmdlQmFja2luZ1N0b3JlcygpCiAjaWYgRU5B
QkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggYTI5OTgzZWQyOGZkNzM5YjQ4ODNh
YWVlNmQxMTcwMWQzNjU0Yjc3NS4uZDRkNWVkYzhjYzJmNGY4NjkyOGYyZTVjMmRkMmRjMDlmNzdh
Y2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIE1lc3NhZ2VJRDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKQEAgLTkyLDggKzkz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKSB7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgZmxvYXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdEZvckxheWVyKGludCAvKiBs
YXllcklEICovLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQg
Lyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2lu
Z1N0b3JlcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRp
bmF0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178220</attachid>
            <date>2012-12-07 08:01:17 -0800</date>
            <delta_ts>2012-12-07 08:52:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103519-20121207165839.patch</filename>
            <type>text/plain</type>
            <size>46009</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZiNjdlNjQ4NTU3N2U4
MmQwYWNjNmRjZmU1N2JiYjMyYzA2NDIyNi4uMjQ5Njg1MzhlNDA4OWMzODlkN2NiYTYyNTAzZTlk
Nzc2MjUwZDMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxMi0xMi0wNyAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0VGTF1bV0syXSBCbHVycmluZXNzIGFuZCBzaGFraW5nIGZpeGVkIGVsZW1lbnRzIHdoZW4gc2Nh
bGUgaXMgbm9uLWludGVnZXIKKyAgICAgICAgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTAzNTE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZW1vdmVzIHRoZSBibHVycmluZXNzIGJ5IHBpeGVsIGFsaWduaW5nIHRoZSBsYXllcnMuIEl0
CisgICAgICAgIGRvZXMgbm90IGZ1bGx5IHJlbW92ZSB0aGUgc2hha2luZywgb25seSBtaW5pbWl6
ZXMgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuaDoKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpwYWdlUG9zaXRpb24pOgorCisg
ICAgICAgICAgICBBcyB0aGUgcGl4ZWwgYWxpZ25tZW50IG9mIHRoZSBtYWluIGxheWVyIGlzIG1v
dmVkIHRvIHRoZQorICAgICAgICAgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciwgcmVuYW1lIGRp
c2NyZXRlUGFnZVBvc2l0aW9uIHRvIGp1c3QKKyAgICAgICAgICAgIHBhZ2VQb3NpdGlvbi4gSXQg
bm93IHJldHVybnMgYSBGbG9hdFBvaW50IGJ1dCB0aGUgcG9zaXRpb25zCisgICAgICAgICAgICBz
aG91bGQgc3RpbGwgYmUgZGlzY3JldGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmRpZENoYW5nZVNjcm9s
bFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgIChMYXllclRyZWVDb29yZGluYXRvclBy
b3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAo
TGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorCisgICAgICAgICAgICBDaGFuZ2UgdGhlIGludGVy
bmFsIHNjcm9sbCBwb3NpdGlvbi92aXNpYmxlIGNvbnRlbnRzIHJlY3QKKyAgICAgICAgICAgIHRv
IGJlIHJlcHJlc2VudGVkIGFzIGZsb2F0IHBvc2l0aW9ucy4gVGhlIHJvdW5kaW5nIHRvIGludGVn
ZXIKKyAgICAgICAgICAgIHZhbHVlcyBub3QgaGFwcGVucyBqdXN0IGJlZm9yZSBzZXRGaXhlc1Zp
c2libGVDb250ZW50c1JlY3QuCisgICAgICAgICAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRv
IGtub3cgb3VyIGV4YWN0IHBvc2l0aW9ucyBhbmQKKyAgICAgICAgICAgIGNhbGN1bGF0ZSBwcm9w
ZXIgc2Nyb2xsIGRlbHRhcy4KKworICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
c2V0TGF5ZXJTdGF0ZSk6CisKKyAgICAgICAgICAgIEdyb3VwIGFuY2hvciBwb2ludCwgcG9zaXRp
b24gYW5kIHNpemUgdG9nZXRoZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpQYWdlVmlld3BvcnRDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Ym91bmRDb250ZW50c1Bvc2l0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Ym91bmRDb250ZW50
c1Bvc2l0aW9uQXRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dmlzaWJsZUNvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5UG9zaXRpb25B
ZnRlclJlbmRlcmluZ0NvbnRlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0Ojpmb2N1c0VkaXRhYmxlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6em9vbVRvQXJlYUdlc3R1cmVFbmRlZCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6bmVhcmVz
dFZhbGlkVmlzaWJsZUNvbnRlbnRzUmVjdCk6CisKKyAgICAgICAgICAgIFNvbWUgcmVuYW1pbmcg
YXMgd2hhdCB3YXMgY2FsbGVkIHZpZXdwb3J0UG9zIHdhcyBhY3R1YWxseSB0aGUKKyAgICAgICAg
ICAgIGNvbnRlbnRzIHBvc2l0aW9uLiBSZW5hbWUgY2xhbXBWaWV3cG9ydFRvQ29udGVudHMgdG8K
KyAgICAgICAgICAgIGJvdW5kQ29udGVudHNQb3NpdGlvbiBhbmQgcmVtb3ZlIHNjYWxlIGFyZ3Vt
ZW50IHdoaWNoIGlzIGhhcworICAgICAgICAgICAgZGlyZWN0IGFjY2VzcyB0by4KKworICAgICAg
ICAgICAgTWFrZSB0aGUgYm91bmRDb250ZW50c1Bvc2l0aW9uIGFsbG93IG9uZSBleHRyYSBwaXhl
bCBpbiBlYWNoCisgICAgICAgICAgICBvcmllbnRhdGlvbiB0byBhbGxvdyBmb3IgcGl4ZWwgYWxp
Z25tZW50IG9mIGZpeGVkIHBvc2l0aW9uIGxheWVycworCisgICAgICAgIChXZWJLaXQ6OmlzSW50
ZWdyYWwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6cGl4ZWxBbGlnbmVkRmxvYXRQb2ludCk6CisKKyAgICAgICAgICAgIEludHJv
ZHVjZSB3YXkgdG8gcGl4ZWwgYWxpZ24gdGhlIG1haW4gY29udGVudHMgbGF5ZXIuIE9ubHkgaW4K
KyAgICAgICAgICAgIHVzZSBmb3IgRUZMIHNvIGZhci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
TGVnYWN5SW1wbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaDoK
KyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6Y29udGVu
dFBvc2l0aW9uKToKKyAgICAgICAgKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwpOgor
CisgICAgICAgICAgICBTdG9yZSB0aGUgY29udGVudHMgcG9zaXRpb24gYXMgYSBGbG9hdFBvaW50
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnRlZ3JhbCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVBvc2l0
aW9uUmVsYXRpdmVUb0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpjb21wdXRlUGl4ZWxBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQp
OgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKworICAgICAgICAgICAgUGl4
ZWwgYWxpZ24gbGF5ZXJzIHdoZW4gdGhlIGVmZmVjdGl2ZSBzY2FsZSBpcyBub3QgYW4gaW50ZWdl
cgorICAgICAgICAgICAgdmFsdWUuCisKIDIwMTItMTItMDcgIEphZWh1biBMaW0gIDxsamFlaHVu
LmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBld2tfc2V0dGluZ3Mg
QVBJcyBmb3IgdGV4dCBhdXRvc2l6aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5kZXggMGQ1ZDg5OTdkZDc0OWMyZjg3ZGIxYmRiNmEx
ZmRlNjVhOWUzN2FjOC4uNTI3ZTkwNzc3YmEyMTNmZWZmZjhkNTMwYTUzMGFjODU5NmFlOTZiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cApAQCAtMjk1LDcgKzI5NSw3IEBAIEFmZmluZVRyYW5zZm9ybSBFd2tWaWV3SW1wbDo6dHJhbnNm
b3JtRnJvbVNjZW5lKCkgY29uc3QKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAg
IHRyYW5zZm9ybS5zY2FsZSgxIC8gbV9zY2FsZUZhY3Rvcik7Ci0gICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZShkaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLngoKSwgZGlzY3JldGVQYWdlUG9zaXRpb24oKS55
KCkpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUocGFnZVBvc2l0aW9uKCkueCgpLCBwYWdlUG9z
aXRpb24oKS55KCkpOwogI2VuZGlmCiAKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNt
YXJ0RGF0YSgpOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmRpc3BsYXlU
aW1lckZpcmVkKFRpbWVyPEV3a1ZpZXdJbXBsPiopCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgUmVmUHRyPGNhaXJvX3Q+IGdyYXBoaWNzQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShzdXJmYWNlLmdldCgpKSk7Ci0gICAgICAgIGNhaXJvX3RyYW5zbGF0ZShncmFwaGljc0Nv
bnRleHQuZ2V0KCksIC0gZGlzY3JldGVQYWdlUG9zaXRpb24oKS54KCksIC0gZGlzY3JldGVQYWdl
UG9zaXRpb24oKS55KCkpOworICAgICAgICBjYWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0
LmdldCgpLCAtIHBhZ2VQb3NpdGlvbigpLngoKSwgLSBwYWdlUG9zaXRpb24oKS55KCkpOwogICAg
ICAgICBjYWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIG1fc2NhbGVGYWN0b3IsIG1f
c2NhbGVGYWN0b3IpOwogICAgICAgICByZW5kZXJlci0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dChn
cmFwaGljc0NvbnRleHQuZ2V0KCkpOwogICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3Vw
ZGF0ZV9hZGQoc2QtPmltYWdlLCAwLCAwLCB2aWV3cG9ydC53aWR0aCgpLCB2aWV3cG9ydC5oZWln
aHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aAppbmRleCBhMGE5Mjg5MjRkZDhlOGE3ZDI0ODEwNTRkNDU3MWM0OGFhYTAyM2FmLi4wMzMxZjgy
MmRhZTQ1MGE2NTg5MjFmMDU4N2U1YmQ2NzY0NDc5OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJs
aWM6CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlRmFjdG9y
OyB9CiAKICAgICB2b2lkIHNldFBhZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwb3NpdGlvbikgeyBtX3BhZ2VQb3NpdGlvbiA9IHBvc2l0aW9uOyB9Ci0gICAgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgZGlzY3JldGVQYWdlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByb3Vu
ZGVkSW50UG9pbnQobV9wYWdlUG9zaXRpb24pOyB9CisgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCBwYWdlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhZ2VQb3NpdGlvbjsgfQogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogbmVlZHMgcmVmYWN0b3JpbmcgKHNwbGl0IGNhbGxiYWNrIGlu
dm9rZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAK
aW5kZXggMmI2MWViOTBjNTNmOTc3NDgyZDNiNGRmNDI4YTkxMzAzZTIwNzc2NC4uZDM3MDQ0ODY0
OGZlODg0ZWE5ZTRlZGZlMTU2ZGM2NzY4MzZkZTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTE4MSwxMyArMTgxLDExIEBAIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGZsCiAgICAgLy8gSW5mb3JtIHRoZSByZW5kZXJlciB0byBhZGp1c3Qg
dmlld3BvcnQtZml4ZWQgbGF5ZXJzLgogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJl
ZVJlbmRlcmVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0LCBtX3JlbmRlcmVyLmdldCgpLCByZWN0
KSk7CiAKLSAgICAvLyBSb3VuZCB0aGUgcmVjdCBpbnN0ZWFkIG9mIGVuY2xvc2luZyBpdCB0byBt
YWtlIHN1cmUgdGhhdCBpdHMgc2l6ZSBzdGF5cyB0aGUgc2FtZSB3aGlsZSBwYW5uaW5nLiBUaGlz
IGNhbiBoYXZlIG5hc3R5IGVmZmVjdHMgb24gbGF5b3V0LgotICAgIEludFJlY3Qgcm91bmRlZFJl
Y3QgPSByb3VuZGVkSW50UmVjdChyZWN0KTsKLSAgICBpZiAocm91bmRlZFJlY3QgPT0gbV9sYXN0
U2VudFZpc2libGVSZWN0ICYmIHNjYWxlID09IG1fbGFzdFNlbnRTY2FsZSAmJiB0cmFqZWN0b3J5
VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yKQorICAgIGlmIChyZWN0ID09IG1f
bGFzdFNlbnRWaXNpYmxlUmVjdCAmJiBzY2FsZSA9PSBtX2xhc3RTZW50U2NhbGUgJiYgdHJhamVj
dG9yeVZlY3RvciA9PSBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OlNldFZpc2libGVDb250ZW50c1JlY3Qocm91bmRl
ZFJlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdl
KCktPnBhZ2VJRCgpKTsKLSAgICBtX2xhc3RTZW50VmlzaWJsZVJlY3QgPSByb3VuZGVkUmVjdDsK
KyAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpMYXllclRyZWVDb29yZGluYXRvcjo6U2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCBzY2Fs
ZSwgdHJhamVjdG9yeVZlY3RvciksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQo
KSk7CisgICAgbV9sYXN0U2VudFZpc2libGVSZWN0ID0gcmVjdDsKICAgICBtX2xhc3RTZW50U2Nh
bGUgPSBzY2FsZTsKICAgICBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlW
ZWN0b3I7CiB9CkBAIC0yMTAsNyArMjA4LDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjphbmltYXRpb25GcmFtZVJlYWR5KCkKIH0KICNlbmRpZgogCi12b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHk6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBw
b3NpdGlvbikKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkQ2hhbmdlU2Nyb2xs
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgZGlzcGF0Y2hVcGRh
dGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uLCBtX3Jl
bmRlcmVyLmdldCgpLCBwb3NpdGlvbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGRhZjM4ODJiZjM3Zjc0MWQ4MzA0Nzg2MmFjYjNjZDQw
NzJlZTFhZDUuLjFlMDlkZDVmNGE2YTk0ZjU3MTQ0Nzk1OTM0M2U2NTY5ZGM3YmZiNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTc4LDcgKzc4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwogICAgIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKCk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOworICAgIHZvaWQgZGlkQ2hhbmdlU2Ny
b2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24pOwogI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQogICAgIHZvaWQgY3JlYXRlQ2FudmFzKENvb3JkaW5hdGVkTGF5
ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVRva2VuJik7CiAgICAgdm9pZCBzeW5jQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWlu
dDMyX3QgZnJvbnRCdWZmZXIpOwpAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBE
cmF3aW5nQXJlYVByb3h5KiBtX2RyYXdpbmdBcmVhUHJveHk7CiAgICAgUmVmUHRyPExheWVyVHJl
ZVJlbmRlcmVyPiBtX3JlbmRlcmVyOwotICAgIFdlYkNvcmU6OkludFJlY3QgbV9sYXN0U2VudFZp
c2libGVSZWN0OworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7
CiAgICAgZmxvYXQgbV9sYXN0U2VudFNjYWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9s
YXN0U2VudFRyYWplY3RvcnlWZWN0b3I7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCAvKiBhdGxh
c0lEICovLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gPiBTdXJmYWNlTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggOGY3YWM1YTM3MDZhNzNjNWMzNzZhMzIxY2U2OTRlOWYwYzI2YjVjOC4uZTE0NThjZGFj
NmYzMjgxZTc4NjAwNTc4YTdhNzU5ZGY4NGQyOWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC00MCw3ICs0
MCw3IEBAIG1lc3NhZ2VzIC0+IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkgewogICAgIENsZWFy
SW1hZ2VCYWNraW5nQ29udGVudHModWludDY0X3QgaW1hZ2VJRCkKICAgICBSZW1vdmVJbWFnZUJh
Y2tpbmcodWludDY0X3QgaW1hZ2VJRCkKICAgICBEaWRSZW5kZXJGcmFtZShXZWJDb3JlOjpJbnRT
aXplIGNvbnRlbnRzU2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBjb3ZlcmVkUmVjdCkKLSAgICBEaWRD
aGFuZ2VTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbikKKyAgICBEaWRD
aGFuZ2VTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvc2l0aW9uKQogICAgIFNl
dExheWVyQW5pbWF0aW9ucyh1aW50MzJfdCBpZCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1h
dGlvbnMgYW5pbWF0aW9ucykKICAgICBTZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggZjhmZTZiNzE2MmVjMGJh
NmJlNDRkNzgwZWY5NDVmYTUwYmE5YzUxMS4uZDU1YmU0ZjE4Y2M4MWU0MmYxZTIyZjgxMGMxNGY4
NTZlYmVkODJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMjIx
LDcgKzIyMSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFkanVzdFBvc2l0aW9uRm9yRml4
ZWRMYXllcnMoKQogICAgICAgICB0b1RleHR1cmVNYXBwZXJMYXllcihpdC0+dmFsdWUpLT5zZXRT
Y3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoZGVsdGEpOwogfQogCi12b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24p
Cit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Ny
b2xsUG9zaXRpb24gPSBwb3NpdGlvbjsKIH0KQEAgLTMzMywxMCArMzMzLDExIEBAIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25z
dCBDb29yZGluYXRlZExhCiAgICAgbGF5ZXItPnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyQnlJ
RChsYXllckluZm8ucmVwbGljYSkpOwogICAgIGxheWVyLT5zZXRNYXNrTGF5ZXIobGF5ZXJCeUlE
KGxheWVySW5mby5tYXNrKSk7CiAKKyAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobGF5ZXJJbmZv
LmFuY2hvclBvaW50KTsKICAgICBsYXllci0+c2V0UG9zaXRpb24obGF5ZXJJbmZvLnBvcyk7CiAg
ICAgbGF5ZXItPnNldFNpemUobGF5ZXJJbmZvLnNpemUpOworCiAgICAgbGF5ZXItPnNldFRyYW5z
Zm9ybShsYXllckluZm8udHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobGF5
ZXJJbmZvLmFuY2hvclBvaW50KTsKICAgICBsYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0obGF5
ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3JtKTsKICAgICBsYXllci0+c2V0QmFja2ZhY2VWaXNpYmls
aXR5KGxheWVySW5mby5iYWNrZmFjZVZpc2libGUpOwogICAgIGxheWVyLT5zZXRDb250ZW50c09w
YXF1ZShsYXllckluZm8uY29udGVudHNPcGFxdWUpOwpAQCAtNDUwLDYgKzQ1MSw3IEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGxheWVyIGFscmVhZHkg
aGFzIGEgYmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgcmVtb3ZhbCkuCiAKICAgICBSZWZQ
dHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlKCkpOworCiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaXplKGdyYXBoaWNz
TGF5ZXItPnNpemUoKSk7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5j
b250YWlucyhsYXllcikpOwogICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXll
ciwgYmFja2luZ1N0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IDk5
MTIzZjAyN2MzYWUyOTU1N2U1NTYwOTk5OTI1ZmQwYTM4NzljOGIuLmE1YWU4N2RjNTVlNzk2ZmJi
NDcwODFjMTVkZDMwZWI4NWY1NmMzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
aApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRvR3JhcGhpY3NDb250
ZXh0KEJhY2tpbmdTdG9yZTo6UGxhdGZvcm1HcmFwaGljc0NvbnRleHQpOwogICAgIHZvaWQgc2V0
Q29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRp
ZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7
CisgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb3NpdGlvbik7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVh
dGVDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKICAgICB2b2lkIHN5bmNDYW52YXMo
Q29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CkBAIC0xODUsOCArMTg1
LDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Q29vcmRpbmF0ZWRMYXllcklELCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKj4gTGF5ZXJSYXdQdHJNYXA7CiAgICAgTGF5ZXJSYXdQdHJN
YXAgbV9maXhlZExheWVyczsKICAgICBDb29yZGluYXRlZExheWVySUQgbV9yb290TGF5ZXJJRDsK
LSAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsK
LSAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9z
aXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQ
b3NpdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fcGVuZGluZ1JlbmRlcmVkQ29udGVu
dHNTY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fYW5pbWF0aW9uc0xvY2tlZDsKICNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgYm9vbCBtX2FuaW1hdGlvbkZyYW1lUmVx
dWVzdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIuY3BwCmluZGV4IGIyOWQ1MzgwYjA1YzcxNDgwNDE5MWIzMzRlOGUyNmZlNjA4NzBm
M2YuLjA0YjNiOWFlMWM2MTdmMTYyZmQ2MmUwZWMwNTg0MGNlOWQwYzM2NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSogcHJveHksIFBhZ2UKICAgICAsIG1faGFzU3VzcGVu
ZGVkQ29udGVudChmYWxzZSkKICAgICAsIG1faGFkVXNlckludGVyYWN0aW9uKGZhbHNlKQogICAg
ICwgbV9lZmZlY3RpdmVTY2FsZSgxKQotICAgICwgbV92aWV3cG9ydFBvc0lzTG9ja2VkKGZhbHNl
KQorICAgICwgbV9jb250ZW50c1Bvc2l0aW9uSXNMb2NrZWQoZmFsc2UpCiAgICAgLCBtX2VmZmVj
dGl2ZVNjYWxlSXNMb2NrZWQoZmFsc2UpCiB7CiAgICAgLy8gSW5pdGlhbGl6aW5nIFZpZXdwb3J0
IFJhdyBBdHRyaWJ1dGVzIHRvIGF2b2lkIHJhbmRvbSBuZWdhdGl2ZSBvciBpbmZpbml0eSBzY2Fs
ZSBmYWN0b3JzCkBAIC04NywxMiArODcsNTMgQEAgZmxvYXQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5k
ZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi1GbG9hdFBvaW50IFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OmNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZp
ZXdwb3J0UG9zLCBmbG9hdCB2aWV3cG9ydFNjYWxlKQorc3RhdGljIGlubGluZSBib29sIGlzSW50
ZWdyYWwoZmxvYXQgdmFsdWUpCiB7Ci0gICAgY29uc3QgZmxvYXQgaG9yaXpvbnRhbFJhbmdlID0g
c3RkOjptYXgoMC5mLCBtX2NvbnRlbnRzU2l6ZS53aWR0aCgpIC0gbV92aWV3cG9ydFNpemUud2lk
dGgoKSAvIHZpZXdwb3J0U2NhbGUpOwotICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsUmFuZ2UgPSBz
dGQ6Om1heCgwLmYsIG1fY29udGVudHNTaXplLmhlaWdodCgpIC0gbV92aWV3cG9ydFNpemUuaGVp
Z2h0KCkgLyB2aWV3cG9ydFNjYWxlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZSkgPT0gdmFsdWU7Cit9CisKK0Zsb2F0UG9pbnQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGl4
ZWxBbGlnbmVkRmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50JiBmcmFtZVBvc2l0aW9uKQorewor
I2lmIFBMQVRGT1JNKEVGTCkKKyAgICBpZiAoIWlzSW50ZWdyYWwobV9lZmZlY3RpdmVTY2FsZSkp
IHsKKyAgICAgICAgLy8gVG8gYXZvaWQgYmx1cnJ5bmVzcywgbW9kaWZ5IHRoZSBwb3NpdGlvbiBz
byB0aGF0IGl0IG1hcHMgaW50byBhIGRpc2NyZXRlIGRldmljZSBwb3NpdGlvbi4KKyAgICAgICAg
RmxvYXRQb2ludCBzY2FsZWRQb3MoZnJhbWVQb3NpdGlvbik7CisKKyAgICAgICAgLy8gU2NhbGUg
YnkgdGhlIGVmZmVjdGl2ZSBzY2FsZSBmYWN0b3IgdG8gY29tcHV0ZSB0aGUgc2NyZWVuLXJlbGF0
aXZlIHBvc2l0aW9uLgorICAgICAgICBzY2FsZWRQb3Muc2NhbGUobV9lZmZlY3RpdmVTY2FsZSwg
bV9lZmZlY3RpdmVTY2FsZSk7CisKKyAgICAgICAgLy8gUm91bmQgdG8gaW50ZWdlciBib3VuZGFy
aWVzLgorICAgICAgICBGbG9hdFBvaW50IGFsaWduZWRQb3MgPSByb3VuZGVkSW50UG9pbnQoc2Nh
bGVkUG9zKTsKKworICAgICAgICAvLyBDb252ZXJ0IGJhY2sgdG8gQ1NTIGNvb3JkaW5hdGVzLgor
ICAgICAgICBhbGlnbmVkUG9zLnNjYWxlKDEgLyBtX2VmZmVjdGl2ZVNjYWxlLCAxIC8gbV9lZmZl
Y3RpdmVTY2FsZSk7CisKKyAgICAgICAgcmV0dXJuIGFsaWduZWRQb3M7CisgICAgfQorI2VuZGlm
CiAKLSAgICByZXR1cm4gRmxvYXRQb2ludChjbGFtcFRvKHZpZXdwb3J0UG9zLngoKSwgMC5mLCBo
b3Jpem9udGFsUmFuZ2UpLCBjbGFtcFRvKHZpZXdwb3J0UG9zLnkoKSwgMC5mLCB2ZXJ0aWNhbFJh
bmdlKSk7CisgICAgcmV0dXJuIGZyYW1lUG9zaXRpb247Cit9CisKK0Zsb2F0UG9pbnQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlcjo6Ym91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2FsZShjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBmcmFtZVBvc2l0aW9uLCBmbG9hdCBzY2FsZSkKK3sKKyAgICAvLyBX
ZSBuZWVkIHRvIGZsb29yIHRoZSB2aWV3cG9ydCBoZXJlIGFzIHRvIGFsbG93IGFsaWduaW5nIHRo
ZSBjb250ZW50IGluIGRldmljZSB1bml0cy4gSWYgbm90LAorICAgIC8vIGl0IG1pZ2h0IG5vdCBi
ZSBwb3NzaWJsZSB0byBzY3JvbGwgdGhlIGxhc3QgcGl4ZWwgYW5kIHRoYXQgYWZmZWN0cyBmaXhl
ZCBwb3NpdGlvbiBlbGVtZW50cy4KKyAgICBGbG9hdFJlY3QgYm91bmRzOworICAgIGJvdW5kcy5z
ZXRXaWR0aChzdGQ6Om1heCgwLmYsIG1fY29udGVudHNTaXplLndpZHRoKCkgLSBmbG9vcmYobV92
aWV3cG9ydFNpemUud2lkdGgoKSAvIHNjYWxlKSkpOworICAgIGJvdW5kcy5zZXRIZWlnaHQoc3Rk
OjptYXgoMC5mLCBtX2NvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIGZsb29yZihtX3ZpZXdwb3J0U2l6
ZS5oZWlnaHQoKSAvIHNjYWxlKSkpOworCisgICAgRmxvYXRQb2ludCBwb3NpdGlvbjsKKyAgICAv
LyBVbmZvcnR1bmF0ZWx5IGl0IGRvZXNuJ3Qgc2VlbSB0byBiZSBlbm91Z2gsIHNvIGp1c3QgYWx3
YXlzIGFsbG93IG9uZSBwaXhlbCBtb3JlLgorICAgIHBvc2l0aW9uLnNldFgoY2xhbXBUbyhmcmFt
ZVBvc2l0aW9uLngoKSwgYm91bmRzLngoKSwgYm91bmRzLndpZHRoKCkgKyAxKSk7CisgICAgcG9z
aXRpb24uc2V0WShjbGFtcFRvKGZyYW1lUG9zaXRpb24ueSgpLCBib3VuZHMueSgpLCBib3VuZHMu
aGVpZ2h0KCkgKyAxKSk7CisKKyAgICByZXR1cm4gcG9zaXRpb247Cit9CisKK0Zsb2F0UG9pbnQg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Ym91bmRDb250ZW50c1Bvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIGZyYW1lUG9zaXRpb24pCit7CisgICAgcmV0dXJuIGJvdW5kQ29udGVu
dHNQb3NpdGlvbkF0U2NhbGUoZnJhbWVQb3NpdGlvbiwgbV9lZmZlY3RpdmVTY2FsZSk7CiB9CiAK
IHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCgpCkBAIC0xNDYsMTIg
KzE4NywxMiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKGNv
bnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSQogICAgICAgICBtX2NsaWVudC0+c2V0
Q29udGVudHNTY2FsZShtX2VmZmVjdGl2ZVNjYWxlLCBmYWxzZSk7CiAgICAgICAgIG1fZWZmZWN0
aXZlU2NhbGVJc0xvY2tlZCA9IGZhbHNlOwogICAgIH0KLSAgICBpZiAobV92aWV3cG9ydFBvc0lz
TG9ja2VkKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgY2xhbXBlZFBvcyA9IGNsYW1wVmlld3BvcnRU
b0NvbnRlbnRzKG1fdmlld3BvcnRQb3MsIG1fZWZmZWN0aXZlU2NhbGUpOworICAgIGlmIChtX2Nv
bnRlbnRzUG9zaXRpb25Jc0xvY2tlZCkgeworICAgICAgICBGbG9hdFBvaW50IGNvbnRlbnRzUG9z
ID0gYm91bmRDb250ZW50c1Bvc2l0aW9uKG1fY29udGVudHNQb3NpdGlvbik7CiAgICAgICAgIC8v
IFRoZXJlIG1pZ2h0IGJlIHJlbmRlcmVkIGZyYW1lcyBub3QgY292ZXJpbmcgb3VyIHJlcXVlc3Rl
ZCBwb3NpdGlvbiB5ZXQsIHdhaXQgZm9yIGl0LgotICAgICAgICBpZiAoRmxvYXRSZWN0KGNsYW1w
ZWRQb3MsIHZpZXdwb3J0U2l6ZUluQ29udGVudHNDb29yZGluYXRlcygpKS5pbnRlcnNlY3RzKGNv
dmVyZWRSZWN0KSkgewotICAgICAgICAgICAgbV9jbGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24o
Y2xhbXBlZFBvcyk7Ci0gICAgICAgICAgICBtX3ZpZXdwb3J0UG9zSXNMb2NrZWQgPSBmYWxzZTsK
KyAgICAgICAgaWYgKEZsb2F0UmVjdChjb250ZW50c1BvcywgdmlzaWJsZUNvbnRlbnRzU2l6ZSgp
KS5pbnRlcnNlY3RzKGNvdmVyZWRSZWN0KSkgeworICAgICAgICAgICAgbV9jbGllbnQtPnNldFZp
ZXdwb3J0UG9zaXRpb24oY29udGVudHNQb3MpOworICAgICAgICAgICAgbV9jb250ZW50c1Bvc2l0
aW9uSXNMb2NrZWQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE3NywxMiArMjE4
LDE3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwo
Y29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9uKQogICAgIGlmIChtX2hhc1N1c3BlbmRlZENvbnRl
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBlbmRWaXNpYmxlQ29udGVudFJl
Y3QoY2xhbXBWaWV3cG9ydFRvQ29udGVudHMoY3NzUG9zaXRpb24sIG1fZWZmZWN0aXZlU2NhbGUp
LCB2aWV3cG9ydFNpemVJbkNvbnRlbnRzQ29vcmRpbmF0ZXMoKSk7CisgICAgRmxvYXRQb2ludCBw
b3NpdGlvbiA9IHBpeGVsQWxpZ25lZEZsb2F0UG9pbnQoRmxvYXRQb2ludChjc3NQb3NpdGlvbikp
OworICAgIEZsb2F0UG9pbnQgYm91bmRQb3NpdGlvbiA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihw
b3NpdGlvbik7CisKKyAgICBGbG9hdFJlY3QgZW5kVmlzaWJsZUNvbnRlbnRSZWN0KGJvdW5kUG9z
aXRpb24sIHZpc2libGVDb250ZW50c1NpemUoKSk7CisKICAgICBpZiAobV9sYXN0RnJhbWVDb3Zl
cmVkUmVjdC5pbnRlcnNlY3RzKGVuZFZpc2libGVDb250ZW50UmVjdCkpCi0gICAgICAgIG1fY2xp
ZW50LT5zZXRWaWV3cG9ydFBvc2l0aW9uKGVuZFZpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigp
KTsKLSAgICBlbHNlCi0gICAgICAgIC8vIEtlZXAgdGhlIHVuY2xhbXBlZCBwb3NpdGlvbiBpbiBj
YXNlIHRoZSBjb250ZW50cyBzaXplIGlzIGNoYW5nZWQgbGF0ZXIgb24uCi0gICAgICAgIGFwcGx5
UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKGNzc1Bvc2l0aW9uKTsKKyAgICAgICAgbV9j
bGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24oYm91bmRQb3NpdGlvbik7CisgICAgZWxzZSB7Cisg
ICAgICAgIC8vIEtlZXAgdGhlIHVuYm91bmQgcG9zaXRpb24gaW4gY2FzZSB0aGUgY29udGVudHMg
c2l6ZSBpcyBjaGFuZ2VkIGxhdGVyIG9uLgorICAgICAgICBhcHBseVBvc2l0aW9uQWZ0ZXJSZW5k
ZXJpbmdDb250ZW50cyhwb3NpdGlvbik7CisgICAgfQogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBGbG9hdFNpemUmIG5ld1NpemUp
CkBAIC0xOTcsMTIgKzI0MywxMiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENo
YW5nZVZpZXdwb3J0U2l6ZShjb25zdCBGbG9hdFNpemUmIG5ld1NpemUpCiAgICAgbV93ZWJQYWdl
UHJveHktPnNldFZpZXdwb3J0U2l6ZShyb3VuZGVkSW50U2l6ZShuZXdTaXplKSk7CiB9CiAKLXZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNv
bnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0UG9zLCBmbG9hdCB2aWV3cG9ydFNjYWxlLCBjb25zdCBG
bG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
OjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAg
IGlmICghbV92aWV3cG9ydFBvc0lzTG9ja2VkKQotICAgICAgICBtX3ZpZXdwb3J0UG9zID0gdmll
d3BvcnRQb3M7CisgICAgaWYgKCFtX2NvbnRlbnRzUG9zaXRpb25Jc0xvY2tlZCkKKyAgICAgICAg
bV9jb250ZW50c1Bvc2l0aW9uID0gcG9zaXRpb247CiAgICAgaWYgKCFtX2VmZmVjdGl2ZVNjYWxl
SXNMb2NrZWQpCi0gICAgICAgIG1fZWZmZWN0aXZlU2NhbGUgPSB2aWV3cG9ydFNjYWxlOworICAg
ICAgICBtX2VmZmVjdGl2ZVNjYWxlID0gc2NhbGU7CiAKICAgICBzeW5jVmlzaWJsZUNvbnRlbnRz
KHRyYWplY3RvcnlWZWN0b3IpOwogfQpAQCAtMjEzLDcgKzI1OSw3IEBAIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlcjo6c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFq
ZWN0b3J5VmVjCiAgICAgaWYgKCFkcmF3aW5nQXJlYSB8fCBtX3ZpZXdwb3J0U2l6ZS5pc0VtcHR5
KCkgfHwgbV9jb250ZW50c1NpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdChjbGFtcFZpZXdwb3J0VG9Db250ZW50cyhtX3Zp
ZXdwb3J0UG9zLCBtX2VmZmVjdGl2ZVNjYWxlKSwgdmlld3BvcnRTaXplSW5Db250ZW50c0Nvb3Jk
aW5hdGVzKCkpOworICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KGJvdW5kQ29udGVu
dHNQb3NpdGlvbihtX2NvbnRlbnRzUG9zaXRpb24pLCB2aXNpYmxlQ29udGVudHNTaXplKCkpOwog
ICAgIHZpc2libGVDb250ZW50c1JlY3QuaW50ZXJzZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIG1fY29udGVudHNTaXplKSk7CiAgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250
ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9lZmZlY3RpdmVTY2FsZSwgdHJhamVjdG9y
eVZlY3Rvcik7CiAKQEAgLTIzNiw5ICsyODIsOSBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydAog
ICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoKTsKIH0KIAotV2ViQ29y
ZTo6RmxvYXRTaXplIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnZpZXdwb3J0U2l6ZUluQ29udGVu
dHNDb29yZGluYXRlcygpIGNvbnN0CitGbG9hdFNpemUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6
dmlzaWJsZUNvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0
U2l6ZShtX3ZpZXdwb3J0U2l6ZS53aWR0aCgpIC8gbV9lZmZlY3RpdmVTY2FsZSwgbV92aWV3cG9y
dFNpemUuaGVpZ2h0KCkgLyBtX2VmZmVjdGl2ZVNjYWxlKTsKKyAgICByZXR1cm4gRmxvYXRTaXpl
KG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyBtX2VmZmVjdGl2ZVNjYWxlLCBtX3ZpZXdwb3J0U2l6
ZS5oZWlnaHQoKSAvIG1fZWZmZWN0aXZlU2NhbGUpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OnN1c3BlbmRDb250ZW50KCkKQEAgLTI3MCw4ICszMTYsOCBAQCB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0
IHNjYWxlKQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5UG9zaXRpb25BZnRl
clJlbmRlcmluZ0NvbnRlbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykKIHsKLSAgICBtX3ZpZXdw
b3J0UG9zID0gcG9zOwotICAgIG1fdmlld3BvcnRQb3NJc0xvY2tlZCA9IHRydWU7CisgICAgbV9j
b250ZW50c1Bvc2l0aW9uID0gcG9zOworICAgIG1fY29udGVudHNQb3NpdGlvbklzTG9ja2VkID0g
dHJ1ZTsKICAgICBzeW5jVmlzaWJsZUNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCmluZGV4IDAyOTIyOGRkZTVh
NjliNzJjN2E0MGIwYmRmNGE1ODIwOGQ5ODY1YjEuLjE0MDIxNWQ2YmJhODM1MTI3ZmYyMWI4NTUw
NDJjOTgxYTJkNTBiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Vmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNTIsNyArNTIsMTMgQEAgcHVibGljOgogCiAgICAgZmxv
YXQgaW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZShmbG9hdCkgY29uc3Q7CiAgICAgZmxvYXQgb3V0
ZXJCb3VuZGVkVmlld3BvcnRTY2FsZShmbG9hdCkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBjbGFtcFZpZXdwb3J0VG9Db250ZW50cyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2
aWV3cG9ydFBvcywgZmxvYXQgdmlld3BvcnRTY2FsZSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IHBpeGVsQWxpZ25lZEZsb2F0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwor
CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBib3VuZENvbnRlbnRzUG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYm91bmRDb250ZW50
c1Bvc2l0aW9uQXRTY2FsZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgZmxvYXQgc2NhbGUp
OworCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpc2libGVDb250ZW50c1NpemUoKSBjb25zdDsK
IAogICAgIGJvb2wgaGFzU3VzcGVuZGVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU3Vz
cGVuZGVkQ29udGVudDsgfQogICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYWRVc2VySW50ZXJhY3Rpb247IH0KQEAgLTY4LDcgKzc0LDcgQEAgcHVibGljOgog
CiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9tIHRoZSB2aWV3cG9ydC4KICAgICB2b2lkIGRpZENo
YW5nZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG5ld1NpemUpOwotICAg
IHZvaWQgZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmIHZpZXdwb3J0UG9zLCBmbG9hdCB2aWV3cG9ydFNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpKTsK
KyAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3Rv
cnlWZWN0b3IgPSBXZWJDb3JlOjpGbG9hdFBvaW50Ojp6ZXJvKCkpOwogCiAgICAgLy8gTm90aWZp
Y2F0aW9ucyBmcm9tIHRoZSBXZWJQcm9jZXNzLgogICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwpA
QCAtODUsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlTY2FsZUFmdGVyUmVuZGVy
aW5nQ29udGVudHMoZmxvYXQgc2NhbGUpOwogICAgIHZvaWQgYXBwbHlQb3NpdGlvbkFmdGVyUmVu
ZGVyaW5nQ29udGVudHMoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zKTsKICAgICBib29s
IHVwZGF0ZU1pbmltdW1TY2FsZVRvRml0KGJvb2wgdXNlckluaXRpYXRlZFVwZGF0ZSk7Ci0gICAg
V2ViQ29yZTo6RmxvYXRTaXplIHZpZXdwb3J0U2l6ZUluQ29udGVudHNDb29yZGluYXRlcygpIGNv
bnN0OwogCiAgICAgV2ViUGFnZVByb3h5KiBjb25zdCBtX3dlYlBhZ2VQcm94eTsKICAgICBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50KiBtX2NsaWVudDsKQEAgLTk5LDEzICsxMDQsMTMgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faGFzU3VzcGVuZGVkQ29udGVudDsKICAgICBib29sIG1faGFk
VXNlckludGVyYWN0aW9uOwogCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3ZpZXdwb3J0UG9z
OwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKKyAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IG1fY29udGVudHNQb3NpdGlvbjsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9j
b250ZW50c1NpemU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwogICAg
IFdlYkNvcmU6OkludFNpemUgbV9jbGllbnRDb250ZW50c1NpemU7CiAgICAgZmxvYXQgbV9lZmZl
Y3RpdmVTY2FsZTsgLy8gU2hvdWxkIGFsd2F5cyBiZSBjc3NTY2FsZSAqIGRldmljZVBpeGVsUmF0
aW8uCiAKLSAgICBib29sIG1fdmlld3BvcnRQb3NJc0xvY2tlZDsKKyAgICBib29sIG1fY29udGVu
dHNQb3NpdGlvbklzTG9ja2VkOwogICAgIGJvb2wgbV9lZmZlY3RpdmVTY2FsZUlzTG9ja2VkOwog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RGcmFtZUNvdmVyZWRSZWN0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5j
cHAKaW5kZXggYzhiMjZmZWFkNTdmZGMxYWZhYmFjM2FlMjg4MGYxODY5MjNjMWFiYy4uZTU2Njg3
NTZkODViYWFjODlhZjg3YmY1Y2Y1OTBhNTUxMTNmYzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lk
IFBhZ2VDbGllbnRMZWdhY3lJbXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3Zp
ZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoSW50
UmVjdChtX3ZpZXdJbXBsLT5kaXNjcmV0ZVBhZ2VQb3NpdGlvbigpLCBzaXplKSwgbV92aWV3SW1w
bC0+c2NhbGVGYWN0b3IoKSwgRmxvYXRQb2ludCgpKTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCkt
PmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50
UG9pbnQobV92aWV3SW1wbC0+cGFnZVBvc2l0aW9uKCkpLCBzaXplKSwgbV92aWV3SW1wbC0+c2Nh
bGVGYWN0b3IoKSwgRmxvYXRQb2ludCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNpemUp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAppbmRleCBmZTI5MTM5Njkz
NmIyNTc3Nzk3NTk2Mzg3YzVjYjY2ZmQ5YWUwZGNiLi41NDkwNTIzOGUyMjgyYWJhOGYzMjhiNjQ5
NDhhMGZkNjQyNzEzZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFu
Z2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2kKIAogdm9pZCBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7Ci0gICAgbV9jb250ZW50UG9zaXRpb24gPSByb3Vu
ZGVkSW50UG9pbnQoY29udGVudHNQb2ludCk7CisgICAgbV9jb250ZW50UG9zaXRpb24gPSBjb250
ZW50c1BvaW50OwogCiAgICAgRmxvYXRQb2ludCBwb3MoY29udGVudHNQb2ludCk7CiAgICAgcG9z
LnNjYWxlKHNjYWxlRmFjdG9yKCksIHNjYWxlRmFjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuaAppbmRleCAxYWU2YTU0MWQ0MGQ0MDQ4MzQzODRmMmE4YjNhZDllZmVjNjg5YTI5Li4z
NGY2MTBiMGUwOTBmMjBlN2E1Y2Y5Mjg5NmIxNDkyNjU1MGQ3NTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgRHJhd2luZ0FyZWFQ
cm94eSogZHJhd2luZ0FyZWEoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXpl
KCkgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KICAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld0ltcGwtPnNjYWxlRmFjdG9yKCk7IH0KLSAgICBXZWJDb3JlOjpJ
bnRQb2ludCBjb250ZW50UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3NpdGlv
bjsgfQorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50UG9zaXRpb247IH0KIAogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdwb3J0U2l6ZSk7CiAgICAgdm9pZCBzZXRSZW5k
ZXJlckFjdGl2ZShib29sKTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIEV3a1Zp
ZXdJbXBsKiBtX3ZpZXdJbXBsOwogICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7
Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgbV9jb250ZW50UG9zaXRpb247CisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBtX2NvbnRlbnRQb3NpdGlvbjsKICAgICBQYWdlVmlld3BvcnRDb250cm9sbGVy
KiBtX2NvbnRyb2xsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCmluZGV4IGI4
Y2NkOTc3YjJjN2EzN2UwOGFlODI0ZTBlZDc2M2RmODU3ZDEyOGIuLjFiNmQ5MmU5YmRmMDFhZTBk
ZjRlNTBiMDI4Yjc2MDVjZDFhYzU0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCkBA
IC0yMDQsNyArMjA0LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZv
Y3VzRWRpdGFibGVBcmVhKGNvbnN0IFFSZWN0RiYgY2FyZXRBcmVhLAogICAgIGNvbnN0IFFQb2lu
dEYgdmlld3BvcnRIb3RzcG90ID0gUVBvaW50Rih4LCAvKiBGSVhNRTogdmlzaWJsZUNlbnRlciAq
LyB2aWV3cG9ydFJlY3QuY2VudGVyKCkueSgpKTsKIAogICAgIFFQb2ludEYgZW5kUG9zaXRpb24g
PSBob3RzcG90IC0gdmlld3BvcnRIb3RzcG90IC8gdGFyZ2V0U2NhbGU7Ci0gICAgZW5kUG9zaXRp
b24gPSBtX2NvbnRyb2xsZXItPmNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKGVuZFBvc2l0aW9uLCB0
YXJnZXRTY2FsZSk7CisgICAgZW5kUG9zaXRpb24gPSBtX2NvbnRyb2xsZXItPmJvdW5kQ29udGVu
dHNQb3NpdGlvbkF0U2NhbGUoZW5kUG9zaXRpb24sIHRhcmdldFNjYWxlKTsKICAgICBRUmVjdEYg
ZW5kVmlzaWJsZUNvbnRlbnRSZWN0KGVuZFBvc2l0aW9uLCB2aWV3cG9ydFJlY3Quc2l6ZSgpIC8g
dGFyZ2V0U2NhbGUpOwogCiAgICAgYW5pbWF0ZUNvbnRlbnRSZWN0VmlzaWJsZShlbmRWaXNpYmxl
Q29udGVudFJlY3QpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0Ojp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNo
CiAgICAgY29uc3QgUVBvaW50RiB2aWV3cG9ydEhvdHNwb3QgPSB2aWV3cG9ydFJlY3QuY2VudGVy
KCk7CiAKICAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0gaG90c3BvdCAtIHZpZXdwb3J0SG90c3Bv
dCAvIHRhcmdldFNjYWxlOwotICAgIGVuZFBvc2l0aW9uID0gbV9jb250cm9sbGVyLT5jbGFtcFZp
ZXdwb3J0VG9Db250ZW50cyhlbmRQb3NpdGlvbiwgdGFyZ2V0U2NhbGUpOworICAgIGVuZFBvc2l0
aW9uID0gbV9jb250cm9sbGVyLT5ib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKGVuZFBvc2l0
aW9uLCB0YXJnZXRTY2FsZSk7CiAgICAgUVJlY3RGIGVuZFZpc2libGVDb250ZW50UmVjdChlbmRQ
b3NpdGlvbiwgdmlld3BvcnRSZWN0LnNpemUoKSAvIHRhcmdldFNjYWxlKTsKIAogICAgIGVudW0g
eyBab29tSW4sIFpvb21CYWNrLCBab29tT3V0LCBOb1pvb20gfSB6b29tQWN0aW9uID0gWm9vbUlu
OwpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0
Ojp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoCiAgICAgICAgICAg
ICBlbmRQb3NpdGlvbi5zZXRZKGhvdHNwb3QueSgpIC0gdmlld3BvcnRIb3RzcG90LnkoKSAvIHRh
cmdldFNjYWxlKTsKICAgICAgICAgICAgIGVuZFBvc2l0aW9uLnNldFgobGFzdFNjYWxlLnhQb3Np
dGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgZW5kUG9zaXRpb24gPSBtX2NvbnRyb2xsZXItPmNs
YW1wVmlld3BvcnRUb0NvbnRlbnRzKGVuZFBvc2l0aW9uLCB0YXJnZXRTY2FsZSk7CisgICAgICAg
IGVuZFBvc2l0aW9uID0gbV9jb250cm9sbGVyLT5ib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxl
KGVuZFBvc2l0aW9uLCB0YXJnZXRTY2FsZSk7CiAgICAgICAgIGVuZFZpc2libGVDb250ZW50UmVj
dCA9IFFSZWN0RihlbmRQb3NpdGlvbiwgdmlld3BvcnRSZWN0LnNpemUoKSAvIHRhcmdldFNjYWxl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzExLDcgKzMxMSw3IEBAIFFSZWN0RiBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6Om5lYXJlc3RWYWxpZFZpc2libGVDb250ZW50c1Jl
Y3QoKSBjb25zdAogICAgIC8vIEtlZXAgdGhlIGNlbnRlciBhdCB0aGUgcG9zaXRpb24gb2YgdGhl
IG9sZCBjZW50ZXIsIGFuZCBzdWJzdHJhY3Qgdmlld3BvcnRIb3RzcG90IC8gdGFyZ2V0U2NhbGUg
dG8gZ2V0IHRoZSB0b3AgbGVmdCBwb3NpdGlvbi4KICAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0g
bV92aWV3cG9ydEl0ZW0tPm1hcFRvV2ViQ29udGVudCh2aWV3cG9ydEhvdHNwb3QpIC0gdmlld3Bv
cnRIb3RzcG90IC8gdGFyZ2V0U2NhbGU7CiAKLSAgICBlbmRQb3NpdGlvbiA9IG1fY29udHJvbGxl
ci0+Y2xhbXBWaWV3cG9ydFRvQ29udGVudHMoZW5kUG9zaXRpb24sIHRhcmdldFNjYWxlKTsKKyAg
ICBlbmRQb3NpdGlvbiA9IG1fY29udHJvbGxlci0+Ym91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2Fs
ZShlbmRQb3NpdGlvbiwgdGFyZ2V0U2NhbGUpOwogICAgIHJldHVybiBRUmVjdEYoZW5kUG9zaXRp
b24sIHZpZXdwb3J0UmVjdC5zaXplKCkgLyB0YXJnZXRTY2FsZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmlu
ZGV4IGQ2YWQ3N2FhMDhmNDhlNGZiODMzM2RlOTZkMTVlMDNkNWEyOWQ3ZWUuLjAwYWRjMDM5MTY5
ZWZiOThhMGI2MTAzNTJjMDVhNzg0YjU2YjE0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMSw2ICsxLDgg
QEAKIC8qCiAgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
CiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0xMDEsNiArMTAzLDE3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzZXRTaG91bGRVcGRhdGVWaXNpYmxlUmVjdCgpCiAKIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpkaWRDaGFuZ2VHZW9tZXRyeSgpCiB7CisgICAgRmxvYXRQb2ludCBhZGp1
c3RlZFBvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBhZGp1c3RlZEFuY2hvclBvaW50OworICAg
IEZsb2F0U2l6ZSBhZGp1c3RlZFNpemU7CisgICAgRmxvYXRTaXplIHBpeGVsQWxpZ25tZW50T2Zm
c2V0OworICAgIGNvbXB1dGVQaXhlbEFsaWdubWVudChhZGp1c3RlZFBvc2l0aW9uLCBhZGp1c3Rl
ZFNpemUsIGFkanVzdGVkQW5jaG9yUG9pbnQsIHBpeGVsQWxpZ25tZW50T2Zmc2V0KTsKKworICAg
IG1fYWRqdXN0ZWRQb3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247CisgICAgbV9hZGp1c3RlZFNp
emUgPSBhZGp1c3RlZFNpemU7CisgICAgbV9hZGp1c3RlZEFuY2hvclBvaW50ID0gYWRqdXN0ZWRB
bmNob3JQb2ludDsKKyAgICBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0ID0gcGl4ZWxBbGlnbm1lbnRP
ZmZzZXQ7CisKICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiAgICAgc2V0U2hvdWxkVXBkYXRl
VmlzaWJsZVJlY3QoKTsKIH0KQEAgLTQwNSw3ICs0MTgsNiBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllciogQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyID0gdG9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXIpOwogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllci0+
ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKLQogfQog
CiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJ
bWFnZShJbWFnZSogaW1hZ2UpIGNvbnN0CkBAIC01MjQsNyArNTM2LDYgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBtX3Nob3VsZFN5bmNMYXll
clN0YXRlID0gZmFsc2U7CiAgICAgbV9sYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRU
b1ZpZXdwb3J0KCk7CiAKLSAgICBtX2xheWVySW5mby5hbmNob3JQb2ludCA9IGFuY2hvclBvaW50
KCk7CiAgICAgbV9sYXllckluZm8uYmFja2ZhY2VWaXNpYmxlID0gYmFja2ZhY2VWaXNpYmlsaXR5
KCk7CiAgICAgbV9sYXllckluZm8uY2hpbGRyZW5UcmFuc2Zvcm0gPSBjaGlsZHJlblRyYW5zZm9y
bSgpOwogICAgIG1fbGF5ZXJJbmZvLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWUoKTsK
QEAgLTUzNCwxMSArNTQ1LDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5j
TGF5ZXJTdGF0ZSgpCiAgICAgbV9sYXllckluZm8ubWFzayA9IHRvQ29vcmRpbmF0ZWRMYXllcklE
KG1hc2tMYXllcigpKTsKICAgICBtX2xheWVySW5mby5tYXNrc1RvQm91bmRzID0gbWFza3NUb0Jv
dW5kcygpOwogICAgIG1fbGF5ZXJJbmZvLm9wYWNpdHkgPSBvcGFjaXR5KCk7Ci0gICAgbV9sYXll
ckluZm8ucG9zID0gcG9zaXRpb24oKTsKICAgICBtX2xheWVySW5mby5wcmVzZXJ2ZXMzRCA9IHBy
ZXNlcnZlczNEKCk7CiAgICAgbV9sYXllckluZm8ucmVwbGljYSA9IHRvQ29vcmRpbmF0ZWRMYXll
cklEKHJlcGxpY2FMYXllcigpKTsKLSAgICBtX2xheWVySW5mby5zaXplID0gc2l6ZSgpOwogICAg
IG1fbGF5ZXJJbmZvLnRyYW5zZm9ybSA9IHRyYW5zZm9ybSgpOworCisgICAgbV9sYXllckluZm8u
YW5jaG9yUG9pbnQgPSBtX2FkanVzdGVkQW5jaG9yUG9pbnQ7CisgICAgbV9sYXllckluZm8ucG9z
ID0gbV9hZGp1c3RlZFBvc2l0aW9uOworICAgIG1fbGF5ZXJJbmZvLnNpemUgPSBtX2FkanVzdGVk
U2l6ZTsKKwogICAgIG1fY29vcmRpbmF0b3ItPnN5bmNMYXllclN0YXRlKG1faWQsIG1fbGF5ZXJJ
bmZvKTsKIH0KIApAQCAtNzE5LDcgKzczMyw3IEBAIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkKICAgICAvLyBUaGUgcmVzdWx0
aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQgdGhlIHZpc2libGUgcmVjdCBpcyB0aGUgYm91
bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAvLyBzbyBpdCBtaWdodCBzcHJlYWQgZnVydGhl
ciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAoYW5kIHRoZW4gZXZlbiBtb3JlIGFtcGxpZmll
ZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVyKS4KICAgICBBU1NFUlQobV9jYWNoZWRJbnZl
cnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOwot
ICAgIEZsb2F0UmVjdCByZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3Vu
ZHNPZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKEZsb2F0UmVjdChtX2Nvb3JkaW5hdG9yLT52aXNp
YmxlQ29udGVudHNSZWN0KCkpKSk7CisgICAgRmxvYXRSZWN0IHJlY3QgPSBtX2NhY2hlZEludmVy
c2VUcmFuc2Zvcm0uY2xhbXBlZEJvdW5kc09mUHJvamVjdGVkUXVhZChGbG9hdFF1YWQobV9jb29y
ZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CiAgICAgY2xhbXBUb0NvbnRlbnRzUmVj
dElmUmVjdElzSW5maW5pdGUocmVjdCwgdGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKSk7
CiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QocmVjdCk7CiB9CkBAIC04MTUsNiArODI5LDY0
IEBAIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpoYXNQZW5kaW5nVmlzaWJsZUNoYW5n
ZXMoKQogICAgIHJldHVybiB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkuaW50ZXJzZWN0
cyh0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKIH0KIAorc3RhdGljIGlubGluZSBi
b29sIGlzSW50ZWdyYWwoZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4odmFsdWUpID09IHZhbHVlOworfQorCitGbG9hdFBvaW50IENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y29tcHV0ZVBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UoKQoreworICAgIEZsb2F0UG9pbnQg
b2Zmc2V0OworICAgIGZvciAoY29uc3QgR3JhcGhpY3NMYXllciogY3VyckxheWVyID0gdGhpczsg
Y3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPnBhcmVudCgpKQorICAgICAgICBvZmZz
ZXQgKz0gY3VyckxheWVyLT5wb3NpdGlvbigpOworCisgICAgcmV0dXJuIG9mZnNldDsKK30KKwor
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVQaXhlbEFsaWdubWVudChGbG9h
dFBvaW50JiBwb3NpdGlvbiwgRmxvYXRTaXplJiBzaXplLCBGbG9hdFBvaW50M0QmIGFuY2hvclBv
aW50LCBGbG9hdFNpemUmIGFsaWdubWVudE9mZnNldCkKK3sKKyAgICBpZiAoaXNJbnRlZ3JhbChl
ZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpKSB7CisgICAgICAgIHBvc2l0aW9uID0gbV9wb3NpdGlv
bjsKKyAgICAgICAgc2l6ZSA9IG1fc2l6ZTsKKyAgICAgICAgYW5jaG9yUG9pbnQgPSBtX2FuY2hv
clBvaW50OworICAgICAgICBhbGlnbm1lbnRPZmZzZXQgPSBGbG9hdFNpemUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEZsb2F0UG9pbnQgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZSA9
IGNvbXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKCk7CisKKyAgICBGbG9hdFJlY3QgYmFzZVJl
bGF0aXZlQm91bmRzKHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UsIG1fc2l6ZSk7CisgICAgRmxvYXRS
ZWN0IHNjYWxlZEJvdW5kcyA9IGJhc2VSZWxhdGl2ZUJvdW5kczsKKworICAgIC8vIFNjYWxlIGJ5
IHRoZSBlZmZlY3RpdmUgc2NhbGUgZmFjdG9yIHRvIGNvbXB1dGUgdGhlIHNjcmVlbi1yZWxhdGl2
ZSBib3VuZHMuCisgICAgc2NhbGVkQm91bmRzLnNjYWxlKGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUo
KSk7CisKKyAgICAvLyBSb3VuZCB0byBpbnRlZ2VyIGJvdW5kYXJpZXMuCisgICAgLy8gTk9URTog
V2hlbiB1c2luZyBlbmNsb3NpbmdJbnRSZWN0IChhcyBtYWMpIGl0IHdpbGwgaGF2ZSBkaWZmZXJl
bnQgc2l6ZXMgZGVwZW5kaW5nIG9uIHBvc2l0aW9uLgorICAgIEZsb2F0UmVjdCBhbGlnbmVkQm91
bmRzID0gcm91bmRlZEludFJlY3Qoc2NhbGVkQm91bmRzKTsKKworICAgIC8vIENvbnZlcnQgYmFj
ayB0byBsYXllciBjb29yZGluYXRlcy4KKyAgICBhbGlnbmVkQm91bmRzLnNjYWxlKDEgLyBlZmZl
Y3RpdmVDb250ZW50c1NjYWxlKCkpOworCisgICAgLy8gQ29udmVydCBiYWNrIHRvIGxheWVyIGNv
b3JkaW5hdGVzLgorICAgIGFsaWdubWVudE9mZnNldCA9IGJhc2VSZWxhdGl2ZUJvdW5kcy5sb2Nh
dGlvbigpIC0gYWxpZ25lZEJvdW5kcy5sb2NhdGlvbigpOworCisgICAgcG9zaXRpb24gPSBtX3Bv
c2l0aW9uIC0gYWxpZ25tZW50T2Zmc2V0OworICAgIHNpemUgPSBhbGlnbmVkQm91bmRzLnNpemUo
KTsKKworICAgIC8vIE5vdyB3ZSBoYXZlIHRvIGNvbXB1dGUgYSBuZXcgYW5jaG9yIHBvaW50IHdo
aWNoIGNvbXBlbnNhdGVzIGZvciByb3VuZGluZy4KKyAgICBmbG9hdCBhbmNob3JQb2ludFggPSBt
X2FuY2hvclBvaW50LngoKTsKKyAgICBmbG9hdCBhbmNob3JQb2ludFkgPSBtX2FuY2hvclBvaW50
LnkoKTsKKworICAgIGlmIChhbGlnbmVkQm91bmRzLndpZHRoKCkpCisgICAgICAgIGFuY2hvclBv
aW50WCA9IChiYXNlUmVsYXRpdmVCb3VuZHMud2lkdGgoKSAqIGFuY2hvclBvaW50WCArIGFsaWdu
bWVudE9mZnNldC53aWR0aCgpKSAvIGFsaWduZWRCb3VuZHMud2lkdGgoKTsKKworICAgIGlmIChh
bGlnbmVkQm91bmRzLmhlaWdodCgpKQorICAgICAgICBhbmNob3JQb2ludFkgPSAoYmFzZVJlbGF0
aXZlQm91bmRzLmhlaWdodCgpICogYW5jaG9yUG9pbnRZICsgYWxpZ25tZW50T2Zmc2V0LmhlaWdo
dCgpKSAvIGFsaWduZWRCb3VuZHMuaGVpZ2h0KCk7CisKKyAgICBhbmNob3JQb2ludCA9IEZsb2F0
UG9pbnQzRChhbmNob3JQb2ludFgsIGFuY2hvclBvaW50WSwgbV9hbmNob3JQb2ludC56KCkgKiBl
ZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogewogICAgIC8vIFdoZW4gd2Ug
aGF2ZSBhIHRyYW5zZm9ybSBhbmltYXRpb24sIHdlIG5lZWQgdG8gdXBkYXRlIHZpc2libGUgcmVj
dCBldmVyeSBmcmFtZSB0byBhZGp1c3QgdGhlIHZpc2libGUgcmVjdCBvZiBhIGJhY2tpbmcgc3Rv
cmUuCkBAIC04MjcsMTIgKzg5OSwxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIGlmIChoYXNBY3RpdmVUcmFuc2Zv
cm1BbmltYXRpb24pCiAgICAgICAgIGNsaWVudCgpLT5nZXRDdXJyZW50VHJhbnNmb3JtKHRoaXMs
IGN1cnJlbnRUcmFuc2Zvcm0pOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zv
cm0oY3VycmVudFRyYW5zZm9ybSk7Ci0gICAgbV9sYXllclRyYW5zZm9ybS5zZXRQb3NpdGlvbihw
b3NpdGlvbigpKTsKLSAgICBtX2xheWVyVHJhbnNmb3JtLnNldEFuY2hvclBvaW50KGFuY2hvclBv
aW50KCkpOwotICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0U2l6ZShzaXplKCkpOworCisgICAgbV9s
YXllclRyYW5zZm9ybS5zZXRBbmNob3JQb2ludChtX2FkanVzdGVkQW5jaG9yUG9pbnQpOworICAg
IG1fbGF5ZXJUcmFuc2Zvcm0uc2V0UG9zaXRpb24obV9hZGp1c3RlZFBvc2l0aW9uKTsKKyAgICBt
X2xheWVyVHJhbnNmb3JtLnNldFNpemUobV9hZGp1c3RlZFNpemUpOworCiAgICAgbV9sYXllclRy
YW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFwcmVzZXJ2ZXMzRCgpKTsKICAgICBtX2xheWVyVHJhbnNm
b3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOwogICAgIG1fbGF5
ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50KCkgPyB0b0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcihwYXJlbnQoKSktPm1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWRGb3JDaGlsZHJl
bigpIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisKICAgICBtX2NhY2hlZEludmVyc2VUcmFu
c2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOwogCiAgICAgLy8g
VGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVW
aXNpYmxlUmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNTY0YTk3NDFmZjEwOTJmYTRmMjU2ODU0NWY0NWI3ZWE0
ZDlmNDVhMS4uZDlmYmU3ZWM0YTFhNzg3MzUxNmQ5NTc4MTU2OTZhZTgzMDM5OTg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxl
KENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQpID0gMDsKIAotICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQsIGNvbnN0IENv
b3JkaW5hdGVkTGF5ZXJJbmZvJikgPSAwOwpAQCAtMTI5LDcgKzEyOSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKCkgT1ZFUlJJREU7Ci0gICAgCisK
KyAgICBGbG9hdFBvaW50IGNvbXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKCk7CisgICAgdm9p
ZCBjb21wdXRlUGl4ZWxBbGlnbm1lbnQoRmxvYXRQb2ludCYgcG9zaXRpb24sIEZsb2F0U2l6ZSYs
IEZsb2F0UG9pbnQzRCYgYW5jaG9yUG9pbnQsIEZsb2F0U2l6ZSYgYWxpZ25tZW50T2Zmc2V0KTsK
KwogICAgIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCk7CiAgICAgdm9pZCBzZXRWaXNpYmxl
Q29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKIApAQCAtMjEw
LDYgKzIxMywxMSBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllckluZm8g
bV9sYXllckluZm87CiAgICAgR3JhcGhpY3NMYXllclRyYW5zZm9ybSBtX2xheWVyVHJhbnNmb3Jt
OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybTsKKyAg
ICBGbG9hdFNpemUgbV9waXhlbEFsaWdubWVudE9mZnNldDsKKyAgICBGbG9hdFNpemUgbV9hZGp1
c3RlZFNpemU7CisgICAgRmxvYXRQb2ludCBtX2FkanVzdGVkUG9zaXRpb247CisgICAgRmxvYXRQ
b2ludDNEIG1fYWRqdXN0ZWRBbmNob3JQb2ludDsKKwogICAgIGJvb2wgbV9pblVwZGF0ZU1vZGUg
OiAxOwogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVjdDogMTsKICAgICBib29sIG1f
c2hvdWxkU3luY0xheWVyU3RhdGU6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggYzk4NWQxMWIzYTZlMDA2YzNmZjI2MDBh
ZDIzZDBiYzkwOWE3MDQyNi4uYmY2N2VhZGZkOGM0YjlhYTkzMjJjYTcyZjcxNDE0MDk0Y2Y5OWY5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yLmNwcApAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJl
bW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6UmVtb3ZlVXBkYXRlQXRsYXMoYXRsYXNJRCkp
OwogfQogCi1XZWJDb3JlOjpJbnRSZWN0IExheWVyVHJlZUNvb3JkaW5hdG9yOjp2aXNpYmxlQ29u
dGVudHNSZWN0KCkgY29uc3QKK1dlYkNvcmU6OkZsb2F0UmVjdCBMYXllclRyZWVDb29yZGluYXRv
cjo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdmlzaWJsZUNv
bnRlbnRzUmVjdDsKIH0KQEAgLTY5NSw3ICs2OTUsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5h
dG9yOjpzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIGNvbnN0
CiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5
OjpTZXRMYXllckFuaW1hdGlvbnMobGF5ZXJJRCwgYWN0aXZlQW5pbWF0aW9ucykpOwogfQogCi12
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVj
dG9yKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFq
ZWN0b3J5VmVjdG9yKQogewogICAgIGJvb2wgY29udGVudHNSZWN0RGlkQ2hhbmdlID0gcmVjdCAh
PSBtX3Zpc2libGVDb250ZW50c1JlY3Q7CiAgICAgYm9vbCBjb250ZW50c1NjYWxlRGlkQ2hhbmdl
ID0gc2NhbGUgIT0gbV9jb250ZW50c1NjYWxlOwpAQCAtNzE3LDggKzcxNywxMiBAQCB2b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QsIGZsb2F0IHNjYQogICAgIH0KIAogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAg
IGlmIChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpCi0gICAgICAgIG1fd2ViUGFnZS0+c2V0
Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QocmVjdCk7CisgICAgaWYgKG1fd2ViUGFnZS0+dXNlRml4
ZWRMYXlvdXQoKSkgeworICAgICAgICAvLyBSb3VuZCB0aGUgcmVjdCBpbnN0ZWFkIG9mIGVuY2xv
c2luZyBpdCB0byBtYWtlIHN1cmUgdGhhdCBpdHMgc2l6ZSBzdGF5cworICAgICAgICAvLyB0aGUg
c2FtZSB3aGlsZSBwYW5uaW5nLiBUaGlzIGNhbiBoYXZlIG5hc3R5IGVmZmVjdHMgb24gbGF5b3V0
LgorICAgICAgICBtX3dlYlBhZ2UtPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJvdW5kZWRJ
bnRSZWN0KHJlY3QpKTsKKyAgICB9CisKICAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKQog
ICAgICAgICBtX3Nob3VsZFNlbmRTY3JvbGxQb3NpdGlvblVwZGF0ZSA9IHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAppbmRleCAy
NjhhOGE5MWMyNGQyNmYzYzJlOWU5NzJkOGI1ZTc0ZTkyN2Y0ODVmLi43YmI2OGI4Yzc3M2I4MzIz
MTY1YTdhYTE5NDI4OWQxNDY4MWY1YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTgxLDExICs4MSwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0
aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMy
X3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVp
bnQzMl90IHRpbGVJRCk7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250
ZW50c1JlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxl
Q29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICB2aXJ0dWFsIGJv
b2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNj
YWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFZp
c2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgc2NhbGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUxheWVyVHJlZUNvb3JkaW5hdG9yTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJ
REU7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3dhaXRpbmdG
b3JVSVByb2Nlc3M7CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkOwotICAgIFdlYkNvcmU6OkludFJl
Y3QgbV92aXNpYmxlQ29udGVudHNSZWN0OworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2li
bGVDb250ZW50c1JlY3Q7CiAgICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwogICAgIGJvb2wgbV9z
aG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KaW5kZXgg
NmFjMzcyNTYyMTA2ZWJjMzhhNDFlYmQxMjE2Yzk1MDBkNWRkZmZkMi4uMTYzNmU3MDA5ZWYxMjFk
OGE0Y2ZhMWE2NTRhY2QyOWRhODMyNzU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3Iu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KQEAgLTEsNSAr
MSw2IEBACiAjCiAjICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyMgICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yMCw3ICsyMSw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBtZXNzYWdl
cyAtPiBMYXllclRyZWVDb29yZGluYXRvciB7Ci0gICAgU2V0VmlzaWJsZUNvbnRlbnRzUmVjdChX
ZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBXZWJDb3Jl
OjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQorICAgIFNldFZpc2libGVDb250ZW50c1Jl
Y3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQogICAgIFJlbmRlck5leHRGcmFt
ZSgpCiAgICAgUHVyZ2VCYWNraW5nU3RvcmVzKCkKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVy
VHJlZUhvc3QuaAppbmRleCBhMjk5ODNlZDI4ZmQ3MzliNDg4M2FhZWU2ZDExNzAxZDM2NTRiNzc1
Li5kNGQ1ZWRjOGNjMmY0Zjg2OTI4ZjJlNWMyZGQyZGMwOWY3N2FjZjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTM5LDYg
KzM5LDcgQEAgY2xhc3MgTWVzc2FnZUlEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBG
bG9hdFBvaW50OworY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNp
emU7CiBjbGFzcyBHcmFwaGljc0xheWVyOwpAQCAtOTIsOCArOTMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIHsg
fQogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCAvKiBzY2Fs
ZSAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0Rm9yTGF5ZXIoaW50IC8qIGxheWVySUQgKi8sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCAvKiBzY2FsZSAqLywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJh
bWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvck1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29k
ZXImKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178223</attachid>
            <date>2012-12-07 08:53:02 -0800</date>
            <delta_ts>2012-12-07 13:18:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103519-20121207175024.patch</filename>
            <type>text/plain</type>
            <size>45824</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZiNjdlNjQ4NTU3N2U4
MmQwYWNjNmRjZmU1N2JiYjMyYzA2NDIyNi4uYmE1NTRjNDkyMGVhODA5NTFjNWY5OWZhYWJlMTZj
Mzc2OGI2YmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxMi0xMi0wNyAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1dLMl1bRUZMXVtRdF0gUGl4ZWwgYWxpZ25tZW50IGlzIHdyb25nIGluIHNvbWUgY2FzZXMgaW52
b2x2aW5nIGEgbm9uLWludGVncmFsIGNvbnRlbnQgc2NhbGUKKyAgICAgICAgaHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTAzNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBibHVycmluZXNzIGJ5IHBpeGVsIGFsaWdu
aW5nIHRoZSBsYXllcnMuIEl0CisgICAgICAgIGRvZXMgbm90IGZ1bGx5IHJlbW92ZSB0aGUgc2hh
a2luZywgb25seSBtaW5pbWl6ZXMgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5l
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaDoKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpw
YWdlUG9zaXRpb24pOgorCisgICAgICAgICAgICBBcyB0aGUgcGl4ZWwgYWxpZ25tZW50IG9mIHRo
ZSBtYWluIGxheWVyIGlzIG1vdmVkIHRvIHRoZQorICAgICAgICAgICAgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlciwgcmVuYW1lIGRpc2NyZXRlUGFnZVBvc2l0aW9uIHRvIGp1c3QKKyAgICAgICAgICAg
IHBhZ2VQb3NpdGlvbi4gSXQgbm93IHJldHVybnMgYSBGbG9hdFBvaW50IGJ1dCB0aGUgcG9zaXRp
b25zCisgICAgICAgICAgICBzaG91bGQgc3RpbGwgYmUgZGlzY3JldGUuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHk6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgIChMYXll
clRyZWVDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oOgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVDb250ZW50c1Jl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6c2V0VmlzaWJsZUNv
bnRlbnRzUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5h
dG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorCisgICAgICAgICAg
ICBDaGFuZ2UgdGhlIGludGVybmFsIHNjcm9sbCBwb3NpdGlvbi92aXNpYmxlIGNvbnRlbnRzIHJl
Y3QKKyAgICAgICAgICAgIHRvIGJlIHJlcHJlc2VudGVkIGFzIGZsb2F0IHBvc2l0aW9ucy4gVGhl
IHJvdW5kaW5nIHRvIGludGVnZXIKKyAgICAgICAgICAgIHZhbHVlcyBub3QgaGFwcGVucyBqdXN0
IGJlZm9yZSBzZXRGaXhlc1Zpc2libGVDb250ZW50c1JlY3QuCisgICAgICAgICAgICBUaGlzIG1h
a2VzIGl0IHBvc3NpYmxlIHRvIGtub3cgb3VyIGV4YWN0IHBvc2l0aW9ucyBhbmQKKyAgICAgICAg
ICAgIGNhbGN1bGF0ZSBwcm9wZXIgc2Nyb2xsIGRlbHRhcy4KKworICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZSk6CisKKyAgICAgICAgICAgIEdyb3VwIGFu
Y2hvciBwb2ludCwgcG9zaXRpb24gYW5kIHNpemUgdG9nZXRoZXIuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpQYWdlVmlld3BvcnRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Ym91
bmRDb250ZW50c1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlcjo6Ym91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxp
dHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJs
ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dmlz
aWJsZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OmFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojpmb2N1c0VkaXRhYmxlQXJlYSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6em9vbVRv
QXJlYUdlc3R1cmVFbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRRdDo6bmVhcmVzdFZhbGlkVmlzaWJsZUNvbnRlbnRzUmVjdCk6CisKKyAgICAgICAg
ICAgIFNvbWUgcmVuYW1pbmcgYXMgd2hhdCB3YXMgY2FsbGVkIHZpZXdwb3J0UG9zIHdhcyBhY3R1
YWxseSB0aGUKKyAgICAgICAgICAgIGNvbnRlbnRzIHBvc2l0aW9uLiBSZW5hbWUgY2xhbXBWaWV3
cG9ydFRvQ29udGVudHMgdG8KKyAgICAgICAgICAgIGJvdW5kQ29udGVudHNQb3NpdGlvbiBhbmQg
cmVtb3ZlIHNjYWxlIGFyZ3VtZW50IHdoaWNoIGlzIGhhcworICAgICAgICAgICAgZGlyZWN0IGFj
Y2VzcyB0by4KKworICAgICAgICAgICAgTWFrZSB0aGUgYm91bmRDb250ZW50c1Bvc2l0aW9uIGFs
bG93IG9uZSBleHRyYSBwaXhlbCBpbiBlYWNoCisgICAgICAgICAgICBvcmllbnRhdGlvbiB0byBh
bGxvdyBmb3IgcGl4ZWwgYWxpZ25tZW50IG9mIGZpeGVkIHBvc2l0aW9uIGxheWVycworCisgICAg
ICAgIChXZWJLaXQ6OmlzSW50ZWdyYWwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGl4ZWxBbGlnbmVkRmxvYXRQb2ludCk6CisK
KyAgICAgICAgICAgIEludHJvZHVjZSB3YXkgdG8gcGl4ZWwgYWxpZ24gdGhlIG1haW4gY29udGVu
dHMgbGF5ZXIuIE9ubHkgaW4KKyAgICAgICAgICAgIHVzZSBmb3IgRUZMIHNvIGZhci4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50TGVnYWN5SW1wbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3
cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbDo6Y29udGVudFBvc2l0aW9uKToKKyAgICAgICAgKFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwpOgorCisgICAgICAgICAgICBTdG9yZSB0aGUgY29udGVudHMgcG9zaXRp
b24gYXMgYSBGbG9hdFBvaW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjppc0ludGVncmFsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlUG9zaXRpb25SZWxhdGl2ZVRvQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVQaXhl
bEFsaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAg
ICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIpOgorCisgICAgICAgICAgICBQaXhlbCBhbGlnbiBsYXllcnMgd2hl
biB0aGUgZWZmZWN0aXZlIHNjYWxlIGlzIG5vdCBhbiBpbnRlZ2VyCisgICAgICAgICAgICB2YWx1
ZS4gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIGNvZGUgZnJvbSBHcmFwaGljc0xheWVyQ0EuCisKIDIw
MTItMTItMDcgIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBbRUZMXVtXSzJdIEFkZCBld2tfc2V0dGluZ3MgQVBJcyBmb3IgdGV4dCBhdXRvc2l6aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5k
ZXggMGQ1ZDg5OTdkZDc0OWMyZjg3ZGIxYmRiNmExZmRlNjVhOWUzN2FjOC4uNTI3ZTkwNzc3YmEy
MTNmZWZmZjhkNTMwYTUzMGFjODU5NmFlOTZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIEFmZmlu
ZVRyYW5zZm9ybSBFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKIAogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHRyYW5zZm9ybS5zY2FsZSgxIC8gbV9zY2Fs
ZUZhY3Rvcik7Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShkaXNjcmV0ZVBhZ2VQb3NpdGlvbigp
LngoKSwgZGlzY3JldGVQYWdlUG9zaXRpb24oKS55KCkpOworICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUocGFnZVBvc2l0aW9uKCkueCgpLCBwYWdlUG9zaXRpb24oKS55KCkpOwogI2VuZGlmCiAKICAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwpAQCAtMzkxLDcgKzM5MSw3
IEBAIHZvaWQgRXdrVmlld0ltcGw6OmRpc3BsYXlUaW1lckZpcmVkKFRpbWVyPEV3a1ZpZXdJbXBs
PiopCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgUmVmUHRyPGNhaXJvX3Q+IGdyYXBo
aWNzQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlLmdldCgpKSk7Ci0gICAg
ICAgIGNhaXJvX3RyYW5zbGF0ZShncmFwaGljc0NvbnRleHQuZ2V0KCksIC0gZGlzY3JldGVQYWdl
UG9zaXRpb24oKS54KCksIC0gZGlzY3JldGVQYWdlUG9zaXRpb24oKS55KCkpOworICAgICAgICBj
YWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtIHBhZ2VQb3NpdGlvbigpLngo
KSwgLSBwYWdlUG9zaXRpb24oKS55KCkpOwogICAgICAgICBjYWlyb19zY2FsZShncmFwaGljc0Nv
bnRleHQuZ2V0KCksIG1fc2NhbGVGYWN0b3IsIG1fc2NhbGVGYWN0b3IpOwogICAgICAgICByZW5k
ZXJlci0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQuZ2V0KCkpOwogICAg
ICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdlLCAwLCAwLCB2
aWV3cG9ydC53aWR0aCgpLCB2aWV3cG9ydC5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBhMGE5Mjg5MjRkZDhlOGE3ZDI0
ODEwNTRkNDU3MWM0OGFhYTAyM2FmLi4wMzMxZjgyMmRhZTQ1MGE2NTg5MjFmMDU4N2U1YmQ2NzY0
NDc5OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsLmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2NhbGVGYWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3NjYWxlRmFjdG9yOyB9CiAKICAgICB2b2lkIHNldFBhZ2VQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3BhZ2VQb3NpdGlv
biA9IHBvc2l0aW9uOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZGlzY3JldGVQYWdl
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50UG9pbnQobV9wYWdlUG9zaXRpb24p
OyB9CisgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCBwYWdlUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VQb3NpdGlvbjsgfQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbmVlZHMg
cmVmYWN0b3JpbmcgKHNwbGl0IGNhbGxiYWNrIGludm9rZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggMmI2MWViOTBjNTNmOTc3NDgyZDNi
NGRmNDI4YTkxMzAzZTIwNzc2NC4uZDM3MDQ0ODY0OGZlODg0ZWE5ZTRlZGZlMTU2ZGM2NzY4MzZk
ZTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5j
cHAKQEAgLTE4MSwxMyArMTgxLDExIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsCiAgICAgLy8g
SW5mb3JtIHRoZSByZW5kZXJlciB0byBhZGp1c3Qgdmlld3BvcnQtZml4ZWQgbGF5ZXJzLgogICAg
IGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzZXRWaXNpYmxlQ29udGVu
dHNSZWN0LCBtX3JlbmRlcmVyLmdldCgpLCByZWN0KSk7CiAKLSAgICAvLyBSb3VuZCB0aGUgcmVj
dCBpbnN0ZWFkIG9mIGVuY2xvc2luZyBpdCB0byBtYWtlIHN1cmUgdGhhdCBpdHMgc2l6ZSBzdGF5
cyB0aGUgc2FtZSB3aGlsZSBwYW5uaW5nLiBUaGlzIGNhbiBoYXZlIG5hc3R5IGVmZmVjdHMgb24g
bGF5b3V0LgotICAgIEludFJlY3Qgcm91bmRlZFJlY3QgPSByb3VuZGVkSW50UmVjdChyZWN0KTsK
LSAgICBpZiAocm91bmRlZFJlY3QgPT0gbV9sYXN0U2VudFZpc2libGVSZWN0ICYmIHNjYWxlID09
IG1fbGFzdFNlbnRTY2FsZSAmJiB0cmFqZWN0b3J5VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0
b3J5VmVjdG9yKQorICAgIGlmIChyZWN0ID09IG1fbGFzdFNlbnRWaXNpYmxlUmVjdCAmJiBzY2Fs
ZSA9PSBtX2xhc3RTZW50U2NhbGUgJiYgdHJhamVjdG9yeVZlY3RvciA9PSBtX2xhc3RTZW50VHJh
amVjdG9yeVZlY3RvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3aW5nQXJlYVByb3h5
LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OlNldFZpc2libGVDb250ZW50c1JlY3Qocm91bmRlZFJlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVj
dG9yKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKLSAgICBtX2xhc3RT
ZW50VmlzaWJsZVJlY3QgPSByb3VuZGVkUmVjdDsKKyAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBh
Z2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvcjo6U2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCBzY2FsZSwgdHJhamVjdG9yeVZlY3RvciksIG1fZHJh
d2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CisgICAgbV9sYXN0U2VudFZpc2libGVS
ZWN0ID0gcmVjdDsKICAgICBtX2xhc3RTZW50U2NhbGUgPSBzY2FsZTsKICAgICBtX2xhc3RTZW50
VHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CiB9CkBAIC0yMTAsNyArMjA4LDcg
QEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjphbmltYXRpb25GcmFtZVJlYWR5KCkK
IH0KICNlbmRpZgogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmRpZENoYW5nZVNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3ZvaWQgTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eTo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYg
cG9zaXRpb24pCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6
OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uLCBtX3JlbmRlcmVyLmdldCgpLCBwb3NpdGlvbikpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGRh
ZjM4ODJiZjM3Zjc0MWQ4MzA0Nzg2MmFjYjNjZDQwNzJlZTFhZDUuLjFlMDlkZDVmNGE2YTk0ZjU3
MTQ0Nzk1OTM0M2U2NTY5ZGM3YmZiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAg
dm9pZCB1cGRhdGVWaWV3cG9ydCgpOwogICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7Ci0gICAg
dm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9z
aXRpb24pOworICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9zaXRpb24pOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZv
aWQgY3JlYXRlQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7CiAgICAgdm9pZCBzeW5j
Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgZnJvbnRCdWZmZXIpOwpAQCAtOTks
NyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBEcmF3aW5nQXJlYVByb3h5KiBtX2RyYXdpbmdB
cmVhUHJveHk7CiAgICAgUmVmUHRyPExheWVyVHJlZVJlbmRlcmVyPiBtX3JlbmRlcmVyOwotICAg
IFdlYkNvcmU6OkludFJlY3QgbV9sYXN0U2VudFZpc2libGVSZWN0OworICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7CiAgICAgZmxvYXQgbV9sYXN0U2VudFNjYWxl
OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3I7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCAvKiBhdGxhc0lEICovLCBSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4gPiBTdXJmYWNlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOGY3YWM1YTM3MDZhNzNjNWMzNzZh
MzIxY2U2OTRlOWYwYzI2YjVjOC4uZTE0NThjZGFjNmYzMjgxZTc4NjAwNTc4YTdhNzU5ZGY4NGQy
OWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC00MCw3ICs0MCw3IEBAIG1lc3NhZ2VzIC0+IExheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkgewogICAgIENsZWFySW1hZ2VCYWNraW5nQ29udGVudHModWludDY0
X3QgaW1hZ2VJRCkKICAgICBSZW1vdmVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKICAg
ICBEaWRSZW5kZXJGcmFtZShXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSwgV2ViQ29yZTo6
SW50UmVjdCBjb3ZlcmVkUmVjdCkKLSAgICBEaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihXZWJDb3Jl
OjpJbnRQb2ludCBwb3NpdGlvbikKKyAgICBEaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50IHBvc2l0aW9uKQogICAgIFNldExheWVyQW5pbWF0aW9ucyh1aW50MzJfdCBp
ZCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMgYW5pbWF0aW9ucykKICAgICBTZXRB
bmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKaW5kZXggZjhmZTZiNzE2MmVjMGJhNmJlNDRkNzgwZWY5NDVmYTUwYmE5YzUxMS4u
ZDU1YmU0ZjE4Y2M4MWU0MmYxZTIyZjgxMGMxNGY4NTZlYmVkODJmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmFkanVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMoKQogICAgICAgICB0b1RleHR1
cmVNYXBwZXJMYXllcihpdC0+dmFsdWUpLT5zZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQo
ZGVsdGEpOwogfQogCi12b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkaWRDaGFuZ2VTY3JvbGxQb3Np
dGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpk
aWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKICAg
ICBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlvbjsKIH0K
QEAgLTMzMywxMCArMzMzLDExIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3Rh
dGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGluYXRlZExhCiAgICAgbGF5ZXIt
PnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyQnlJRChsYXllckluZm8ucmVwbGljYSkpOwogICAg
IGxheWVyLT5zZXRNYXNrTGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5tYXNrKSk7CiAKKyAgICBs
YXllci0+c2V0QW5jaG9yUG9pbnQobGF5ZXJJbmZvLmFuY2hvclBvaW50KTsKICAgICBsYXllci0+
c2V0UG9zaXRpb24obGF5ZXJJbmZvLnBvcyk7CiAgICAgbGF5ZXItPnNldFNpemUobGF5ZXJJbmZv
LnNpemUpOworCiAgICAgbGF5ZXItPnNldFRyYW5zZm9ybShsYXllckluZm8udHJhbnNmb3JtKTsK
LSAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobGF5ZXJJbmZvLmFuY2hvclBvaW50KTsKICAgICBs
YXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0obGF5ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3JtKTsK
ICAgICBsYXllci0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGxheWVySW5mby5iYWNrZmFjZVZpc2li
bGUpOwogICAgIGxheWVyLT5zZXRDb250ZW50c09wYXF1ZShsYXllckluZm8uY29udGVudHNPcGFx
dWUpOwpAQCAtNDUwLDYgKzQ1MSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiAgICAgICAg
IHJldHVybjsgLy8gVGhlIGxheWVyIGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoYW5kIG5v
IHBlbmRpbmcgcmVtb3ZhbCkuCiAKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOworCiAgICAg
YmFja2luZ1N0b3JlLT5zZXRTaXplKGdyYXBoaWNzTGF5ZXItPnNpemUoKSk7CiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOwogICAgIG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFja2luZ1N0b3JlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IDk5MTIzZjAyN2MzYWUyOTU1N2U1NTYwOTk5OTI1
ZmQwYTM4NzljOGIuLmE1YWU4N2RjNTVlNzk2ZmJiNDcwODFjMTVkZDMwZWI4NWY1NmMzMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludFRvR3JhcGhpY3NDb250ZXh0KEJhY2tpbmdTdG9yZTo6UGxhdGZvcm1H
cmFwaGljc0NvbnRleHQpOwogICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CisgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbik7CiAjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2U+KTsKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJf
dCBmcm9udEJ1ZmZlcik7CkBAIC0xODUsOCArMTg1LDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKj4gTGF5
ZXJSYXdQdHJNYXA7CiAgICAgTGF5ZXJSYXdQdHJNYXAgbV9maXhlZExheWVyczsKICAgICBDb29y
ZGluYXRlZExheWVySUQgbV9yb290TGF5ZXJJRDsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3Jl
bmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3Bl
bmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IG1fcGVuZGluZ1JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKICAgICBib29s
IG1fYW5pbWF0aW9uc0xvY2tlZDsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
CiAgICAgYm9vbCBtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4IGIyOWQ1Mzgw
YjA1YzcxNDgwNDE5MWIzMzRlOGUyNmZlNjA4NzBmM2YuLjA0YjNiOWFlMWM2MTdmMTYyZmQ2MmUw
ZWMwNTg0MGNlOWQwYzM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSog
cHJveHksIFBhZ2UKICAgICAsIG1faGFzU3VzcGVuZGVkQ29udGVudChmYWxzZSkKICAgICAsIG1f
aGFkVXNlckludGVyYWN0aW9uKGZhbHNlKQogICAgICwgbV9lZmZlY3RpdmVTY2FsZSgxKQotICAg
ICwgbV92aWV3cG9ydFBvc0lzTG9ja2VkKGZhbHNlKQorICAgICwgbV9jb250ZW50c1Bvc2l0aW9u
SXNMb2NrZWQoZmFsc2UpCiAgICAgLCBtX2VmZmVjdGl2ZVNjYWxlSXNMb2NrZWQoZmFsc2UpCiB7
CiAgICAgLy8gSW5pdGlhbGl6aW5nIFZpZXdwb3J0IFJhdyBBdHRyaWJ1dGVzIHRvIGF2b2lkIHJh
bmRvbSBuZWdhdGl2ZSBvciBpbmZpbml0eSBzY2FsZSBmYWN0b3JzCkBAIC04NywxMiArODcsNTMg
QEAgZmxvYXQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi1G
bG9hdFBvaW50IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmNsYW1wVmlld3BvcnRUb0NvbnRlbnRz
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZpZXdwb3J0UG9zLCBmbG9hdCB2aWV3cG9ydFNj
YWxlKQorc3RhdGljIGlubGluZSBib29sIGlzSW50ZWdyYWwoZmxvYXQgdmFsdWUpCiB7Ci0gICAg
Y29uc3QgZmxvYXQgaG9yaXpvbnRhbFJhbmdlID0gc3RkOjptYXgoMC5mLCBtX2NvbnRlbnRzU2l6
ZS53aWR0aCgpIC0gbV92aWV3cG9ydFNpemUud2lkdGgoKSAvIHZpZXdwb3J0U2NhbGUpOwotICAg
IGNvbnN0IGZsb2F0IHZlcnRpY2FsUmFuZ2UgPSBzdGQ6Om1heCgwLmYsIG1fY29udGVudHNTaXpl
LmhlaWdodCgpIC0gbV92aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyB2aWV3cG9ydFNjYWxlKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkgPT0gdmFsdWU7Cit9CisKK0Zsb2F0UG9p
bnQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGl4ZWxBbGlnbmVkRmxvYXRQb2ludChjb25zdCBG
bG9hdFBvaW50JiBmcmFtZVBvc2l0aW9uKQoreworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBpZiAo
IWlzSW50ZWdyYWwobV9lZmZlY3RpdmVTY2FsZSkpIHsKKyAgICAgICAgLy8gVG8gYXZvaWQgYmx1
cnJ5bmVzcywgbW9kaWZ5IHRoZSBwb3NpdGlvbiBzbyB0aGF0IGl0IG1hcHMgaW50byBhIGRpc2Ny
ZXRlIGRldmljZSBwb3NpdGlvbi4KKyAgICAgICAgRmxvYXRQb2ludCBzY2FsZWRQb3MoZnJhbWVQ
b3NpdGlvbik7CisKKyAgICAgICAgLy8gU2NhbGUgYnkgdGhlIGVmZmVjdGl2ZSBzY2FsZSBmYWN0
b3IgdG8gY29tcHV0ZSB0aGUgc2NyZWVuLXJlbGF0aXZlIHBvc2l0aW9uLgorICAgICAgICBzY2Fs
ZWRQb3Muc2NhbGUobV9lZmZlY3RpdmVTY2FsZSwgbV9lZmZlY3RpdmVTY2FsZSk7CisKKyAgICAg
ICAgLy8gUm91bmQgdG8gaW50ZWdlciBib3VuZGFyaWVzLgorICAgICAgICBGbG9hdFBvaW50IGFs
aWduZWRQb3MgPSByb3VuZGVkSW50UG9pbnQoc2NhbGVkUG9zKTsKKworICAgICAgICAvLyBDb252
ZXJ0IGJhY2sgdG8gQ1NTIGNvb3JkaW5hdGVzLgorICAgICAgICBhbGlnbmVkUG9zLnNjYWxlKDEg
LyBtX2VmZmVjdGl2ZVNjYWxlLCAxIC8gbV9lZmZlY3RpdmVTY2FsZSk7CisKKyAgICAgICAgcmV0
dXJuIGFsaWduZWRQb3M7CisgICAgfQorI2VuZGlmCiAKLSAgICByZXR1cm4gRmxvYXRQb2ludChj
bGFtcFRvKHZpZXdwb3J0UG9zLngoKSwgMC5mLCBob3Jpem9udGFsUmFuZ2UpLCBjbGFtcFRvKHZp
ZXdwb3J0UG9zLnkoKSwgMC5mLCB2ZXJ0aWNhbFJhbmdlKSk7CisgICAgcmV0dXJuIGZyYW1lUG9z
aXRpb247Cit9CisKK0Zsb2F0UG9pbnQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Ym91bmRDb250
ZW50c1Bvc2l0aW9uQXRTY2FsZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBmcmFtZVBvc2l0
aW9uLCBmbG9hdCBzY2FsZSkKK3sKKyAgICAvLyBXZSBuZWVkIHRvIGZsb29yIHRoZSB2aWV3cG9y
dCBoZXJlIGFzIHRvIGFsbG93IGFsaWduaW5nIHRoZSBjb250ZW50IGluIGRldmljZSB1bml0cy4g
SWYgbm90LAorICAgIC8vIGl0IG1pZ2h0IG5vdCBiZSBwb3NzaWJsZSB0byBzY3JvbGwgdGhlIGxh
c3QgcGl4ZWwgYW5kIHRoYXQgYWZmZWN0cyBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cy4KKyAgICBG
bG9hdFJlY3QgYm91bmRzOworICAgIGJvdW5kcy5zZXRXaWR0aChzdGQ6Om1heCgwLmYsIG1fY29u
dGVudHNTaXplLndpZHRoKCkgLSBmbG9vcmYobV92aWV3cG9ydFNpemUud2lkdGgoKSAvIHNjYWxl
KSkpOworICAgIGJvdW5kcy5zZXRIZWlnaHQoc3RkOjptYXgoMC5mLCBtX2NvbnRlbnRzU2l6ZS5o
ZWlnaHQoKSAtIGZsb29yZihtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHNjYWxlKSkpOworCisg
ICAgRmxvYXRQb2ludCBwb3NpdGlvbjsKKyAgICAvLyBVbmZvcnR1bmF0ZWx5IGl0IGRvZXNuJ3Qg
c2VlbSB0byBiZSBlbm91Z2gsIHNvIGp1c3QgYWx3YXlzIGFsbG93IG9uZSBwaXhlbCBtb3JlLgor
ICAgIHBvc2l0aW9uLnNldFgoY2xhbXBUbyhmcmFtZVBvc2l0aW9uLngoKSwgYm91bmRzLngoKSwg
Ym91bmRzLndpZHRoKCkgKyAxKSk7CisgICAgcG9zaXRpb24uc2V0WShjbGFtcFRvKGZyYW1lUG9z
aXRpb24ueSgpLCBib3VuZHMueSgpLCBib3VuZHMuaGVpZ2h0KCkgKyAxKSk7CisKKyAgICByZXR1
cm4gcG9zaXRpb247Cit9CisKK0Zsb2F0UG9pbnQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Ym91
bmRDb250ZW50c1Bvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGZyYW1lUG9zaXRp
b24pCit7CisgICAgcmV0dXJuIGJvdW5kQ29udGVudHNQb3NpdGlvbkF0U2NhbGUoZnJhbWVQb3Np
dGlvbiwgbV9lZmZlY3RpdmVTY2FsZSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6ZGlkQ29tbWl0TG9hZCgpCkBAIC0xNDYsMTIgKzE4NywxMiBAQCB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwg
Y29uc3QgSQogICAgICAgICBtX2NsaWVudC0+c2V0Q29udGVudHNTY2FsZShtX2VmZmVjdGl2ZVNj
YWxlLCBmYWxzZSk7CiAgICAgICAgIG1fZWZmZWN0aXZlU2NhbGVJc0xvY2tlZCA9IGZhbHNlOwog
ICAgIH0KLSAgICBpZiAobV92aWV3cG9ydFBvc0lzTG9ja2VkKSB7Ci0gICAgICAgIEZsb2F0UG9p
bnQgY2xhbXBlZFBvcyA9IGNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKG1fdmlld3BvcnRQb3MsIG1f
ZWZmZWN0aXZlU2NhbGUpOworICAgIGlmIChtX2NvbnRlbnRzUG9zaXRpb25Jc0xvY2tlZCkgewor
ICAgICAgICBGbG9hdFBvaW50IGNvbnRlbnRzUG9zID0gYm91bmRDb250ZW50c1Bvc2l0aW9uKG1f
Y29udGVudHNQb3NpdGlvbik7CiAgICAgICAgIC8vIFRoZXJlIG1pZ2h0IGJlIHJlbmRlcmVkIGZy
YW1lcyBub3QgY292ZXJpbmcgb3VyIHJlcXVlc3RlZCBwb3NpdGlvbiB5ZXQsIHdhaXQgZm9yIGl0
LgotICAgICAgICBpZiAoRmxvYXRSZWN0KGNsYW1wZWRQb3MsIHZpZXdwb3J0U2l6ZUluQ29udGVu
dHNDb29yZGluYXRlcygpKS5pbnRlcnNlY3RzKGNvdmVyZWRSZWN0KSkgewotICAgICAgICAgICAg
bV9jbGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24oY2xhbXBlZFBvcyk7Ci0gICAgICAgICAgICBt
X3ZpZXdwb3J0UG9zSXNMb2NrZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKEZsb2F0UmVjdChjb250
ZW50c1BvcywgdmlzaWJsZUNvbnRlbnRzU2l6ZSgpKS5pbnRlcnNlY3RzKGNvdmVyZWRSZWN0KSkg
eworICAgICAgICAgICAgbV9jbGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24oY29udGVudHNQb3Mp
OworICAgICAgICAgICAgbV9jb250ZW50c1Bvc2l0aW9uSXNMb2NrZWQgPSBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTE3NywxMiArMjE4LDE3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9u
KQogICAgIGlmIChtX2hhc1N1c3BlbmRlZENvbnRlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZsb2F0UmVjdCBlbmRWaXNpYmxlQ29udGVudFJlY3QoY2xhbXBWaWV3cG9ydFRvQ29udGVudHMo
Y3NzUG9zaXRpb24sIG1fZWZmZWN0aXZlU2NhbGUpLCB2aWV3cG9ydFNpemVJbkNvbnRlbnRzQ29v
cmRpbmF0ZXMoKSk7CisgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHBpeGVsQWxpZ25lZEZsb2F0
UG9pbnQoRmxvYXRQb2ludChjc3NQb3NpdGlvbikpOworICAgIEZsb2F0UG9pbnQgYm91bmRQb3Np
dGlvbiA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihwb3NpdGlvbik7CisKKyAgICBGbG9hdFJlY3Qg
ZW5kVmlzaWJsZUNvbnRlbnRSZWN0KGJvdW5kUG9zaXRpb24sIHZpc2libGVDb250ZW50c1NpemUo
KSk7CisKICAgICBpZiAobV9sYXN0RnJhbWVDb3ZlcmVkUmVjdC5pbnRlcnNlY3RzKGVuZFZpc2li
bGVDb250ZW50UmVjdCkpCi0gICAgICAgIG1fY2xpZW50LT5zZXRWaWV3cG9ydFBvc2l0aW9uKGVu
ZFZpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKLSAgICBlbHNlCi0gICAgICAgIC8vIEtl
ZXAgdGhlIHVuY2xhbXBlZCBwb3NpdGlvbiBpbiBjYXNlIHRoZSBjb250ZW50cyBzaXplIGlzIGNo
YW5nZWQgbGF0ZXIgb24uCi0gICAgICAgIGFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRl
bnRzKGNzc1Bvc2l0aW9uKTsKKyAgICAgICAgbV9jbGllbnQtPnNldFZpZXdwb3J0UG9zaXRpb24o
Ym91bmRQb3NpdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEtlZXAgdGhlIHVuYm91bmQg
cG9zaXRpb24gaW4gY2FzZSB0aGUgY29udGVudHMgc2l6ZSBpcyBjaGFuZ2VkIGxhdGVyIG9uLgor
ICAgICAgICBhcHBseVBvc2l0aW9uQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhwb3NpdGlvbik7Cisg
ICAgfQogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0
U2l6ZShjb25zdCBGbG9hdFNpemUmIG5ld1NpemUpCkBAIC0xOTcsMTIgKzI0MywxMiBAQCB2b2lk
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBGbG9h
dFNpemUmIG5ld1NpemUpCiAgICAgbV93ZWJQYWdlUHJveHktPnNldFZpZXdwb3J0U2l6ZShyb3Vu
ZGVkSW50U2l6ZShuZXdTaXplKSk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6
ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0UG9z
LCBmbG9hdCB2aWV3cG9ydFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
KQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxp
dHkoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBv
aW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIGlmICghbV92aWV3cG9ydFBvc0lzTG9ja2Vk
KQotICAgICAgICBtX3ZpZXdwb3J0UG9zID0gdmlld3BvcnRQb3M7CisgICAgaWYgKCFtX2NvbnRl
bnRzUG9zaXRpb25Jc0xvY2tlZCkKKyAgICAgICAgbV9jb250ZW50c1Bvc2l0aW9uID0gcG9zaXRp
b247CiAgICAgaWYgKCFtX2VmZmVjdGl2ZVNjYWxlSXNMb2NrZWQpCi0gICAgICAgIG1fZWZmZWN0
aXZlU2NhbGUgPSB2aWV3cG9ydFNjYWxlOworICAgICAgICBtX2VmZmVjdGl2ZVNjYWxlID0gc2Nh
bGU7CiAKICAgICBzeW5jVmlzaWJsZUNvbnRlbnRzKHRyYWplY3RvcnlWZWN0b3IpOwogfQpAQCAt
MjEzLDcgKzI1OSw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6c3luY1Zpc2libGVD
b250ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjCiAgICAgaWYgKCFkcmF3aW5n
QXJlYSB8fCBtX3ZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50c1NpemUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVj
dChjbGFtcFZpZXdwb3J0VG9Db250ZW50cyhtX3ZpZXdwb3J0UG9zLCBtX2VmZmVjdGl2ZVNjYWxl
KSwgdmlld3BvcnRTaXplSW5Db250ZW50c0Nvb3JkaW5hdGVzKCkpOworICAgIEZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudHNSZWN0KGJvdW5kQ29udGVudHNQb3NpdGlvbihtX2NvbnRlbnRzUG9zaXRp
b24pLCB2aXNpYmxlQ29udGVudHNTaXplKCkpOwogICAgIHZpc2libGVDb250ZW50c1JlY3QuaW50
ZXJzZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fY29udGVudHNTaXplKSk7CiAg
ICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRzUmVj
dCwgbV9lZmZlY3RpdmVTY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CiAKQEAgLTIzNiw5ICsyODIs
OSBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydAogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VWaWV3
cG9ydEF0dHJpYnV0ZXMoKTsKIH0KIAotV2ViQ29yZTo6RmxvYXRTaXplIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OnZpZXdwb3J0U2l6ZUluQ29udGVudHNDb29yZGluYXRlcygpIGNvbnN0CitGbG9h
dFNpemUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dmlzaWJsZUNvbnRlbnRzU2l6ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZShtX3ZpZXdwb3J0U2l6ZS53aWR0aCgp
IC8gbV9lZmZlY3RpdmVTY2FsZSwgbV92aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBtX2VmZmVjdGl2
ZVNjYWxlKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyBt
X2VmZmVjdGl2ZVNjYWxlLCBtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIG1fZWZmZWN0aXZlU2Nh
bGUpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnN1c3BlbmRDb250ZW50KCkK
QEAgLTI3MCw4ICszMTYsOCBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5U2Nh
bGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IHNjYWxlKQogCiB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OmFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKGNvbnN0IEZs
b2F0UG9pbnQmIHBvcykKIHsKLSAgICBtX3ZpZXdwb3J0UG9zID0gcG9zOwotICAgIG1fdmlld3Bv
cnRQb3NJc0xvY2tlZCA9IHRydWU7CisgICAgbV9jb250ZW50c1Bvc2l0aW9uID0gcG9zOworICAg
IG1fY29udGVudHNQb3NpdGlvbklzTG9ja2VkID0gdHJ1ZTsKICAgICBzeW5jVmlzaWJsZUNvbnRl
bnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5oCmluZGV4IDAyOTIyOGRkZTVhNjliNzJjN2E0MGIwYmRmNGE1ODIwOGQ5ODY1
YjEuLjE0MDIxNWQ2YmJhODM1MTI3ZmYyMWI4NTUwNDJjOTgxYTJkNTBiNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNTIs
NyArNTIsMTMgQEAgcHVibGljOgogCiAgICAgZmxvYXQgaW5uZXJCb3VuZGVkVmlld3BvcnRTY2Fs
ZShmbG9hdCkgY29uc3Q7CiAgICAgZmxvYXQgb3V0ZXJCb3VuZGVkVmlld3BvcnRTY2FsZShmbG9h
dCkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGFtcFZpZXdwb3J0VG9Db250ZW50
cyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2aWV3cG9ydFBvcywgZmxvYXQgdmlld3BvcnRT
Y2FsZSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHBpeGVsQWxpZ25lZEZsb2F0UG9pbnQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBi
b3VuZENvbnRlbnRzUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgYm91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2FsZShjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgZmxvYXQgc2NhbGUpOworCisgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IHZpc2libGVDb250ZW50c1NpemUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzU3VzcGVuZGVkQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU3VzcGVuZGVkQ29udGVudDsgfQogICAgIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYWRVc2VySW50ZXJhY3Rpb247
IH0KQEAgLTY4LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9t
IHRoZSB2aWV3cG9ydC4KICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIG5ld1NpemUpOwotICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNWaXNp
YmlsaXR5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZpZXdwb3J0UG9zLCBmbG9hdCB2aWV3
cG9ydFNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yID0g
V2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpKTsKKyAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRz
VmlzaWJpbGl0eShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgZmxvYXQgc2NhbGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IgPSBXZWJDb3JlOjpGbG9hdFBv
aW50Ojp6ZXJvKCkpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9tIHRoZSBXZWJQcm9jZXNz
LgogICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwpAQCAtODUsNyArOTEsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMoZmxvYXQgc2NhbGUpOwog
ICAgIHZvaWQgYXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVudHMoY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYgcG9zKTsKICAgICBib29sIHVwZGF0ZU1pbmltdW1TY2FsZVRvRml0KGJv
b2wgdXNlckluaXRpYXRlZFVwZGF0ZSk7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZXdwb3J0
U2l6ZUluQ29udGVudHNDb29yZGluYXRlcygpIGNvbnN0OwogCiAgICAgV2ViUGFnZVByb3h5KiBj
b25zdCBtX3dlYlBhZ2VQcm94eTsKICAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KiBt
X2NsaWVudDsKQEAgLTk5LDEzICsxMDQsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU3Vz
cGVuZGVkQ29udGVudDsKICAgICBib29sIG1faGFkVXNlckludGVyYWN0aW9uOwogCi0gICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBtX3ZpZXdwb3J0UG9zOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBt
X3ZpZXdwb3J0U2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fY29udGVudHNQb3NpdGlv
bjsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9jb250ZW50c1NpemU7CisgICAgV2ViQ29yZTo6
RmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwogICAgIFdlYkNvcmU6OkludFNpemUgbV9jbGllbnRD
b250ZW50c1NpemU7CiAgICAgZmxvYXQgbV9lZmZlY3RpdmVTY2FsZTsgLy8gU2hvdWxkIGFsd2F5
cyBiZSBjc3NTY2FsZSAqIGRldmljZVBpeGVsUmF0aW8uCiAKLSAgICBib29sIG1fdmlld3BvcnRQ
b3NJc0xvY2tlZDsKKyAgICBib29sIG1fY29udGVudHNQb3NpdGlvbklzTG9ja2VkOwogICAgIGJv
b2wgbV9lZmZlY3RpdmVTY2FsZUlzTG9ja2VkOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xh
c3RGcmFtZUNvdmVyZWRSZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKaW5kZXggYzhiMjZmZWFkNTdmZGMxYWZh
YmFjM2FlMjg4MGYxODY5MjNjMWFiYy4uZTU2Njg3NTZkODViYWFjODlhZjg3YmY1Y2Y1OTBhNTUx
MTNmYzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Q2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBQYWdlQ2xpZW50TGVn
YWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFBhZ2VDbGllbnRMZWdhY3lJbXBsOjp1cGRh
dGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVh
KCktPnNldFZpc2libGVDb250ZW50c1JlY3QoSW50UmVjdChtX3ZpZXdJbXBsLT5kaXNjcmV0ZVBh
Z2VQb3NpdGlvbigpLCBzaXplKSwgbV92aWV3SW1wbC0+c2NhbGVGYWN0b3IoKSwgRmxvYXRQb2lu
dCgpKTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVD
b250ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50UG9pbnQobV92aWV3SW1wbC0+cGFnZVBvc2l0
aW9uKCkpLCBzaXplKSwgbV92aWV3SW1wbC0+c2NhbGVGYWN0b3IoKSwgRmxvYXRQb2ludCgpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNpemUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsLmNwcAppbmRleCBmZTI5MTM5NjkzNmIyNTc3Nzk3NTk2Mzg3YzVjYjY2ZmQ5YWUw
ZGNiLi41NDkwNTIzOGUyMjgyYWJhOGYzMjhiNjQ5NDhhMGZkNjQyNzEzZjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2kKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3
cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7
Ci0gICAgbV9jb250ZW50UG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQoY29udGVudHNQb2ludCk7
CisgICAgbV9jb250ZW50UG9zaXRpb24gPSBjb250ZW50c1BvaW50OwogCiAgICAgRmxvYXRQb2lu
dCBwb3MoY29udGVudHNQb2ludCk7CiAgICAgcG9zLnNjYWxlKHNjYWxlRmFjdG9yKCksIHNjYWxl
RmFjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAppbmRleCAxYWU2YTU0MWQ0MGQ0
MDQ4MzQzODRmMmE4YjNhZDllZmVjNjg5YTI5Li4zNGY2MTBiMGUwOTBmMjBlN2E1Y2Y5Mjg5NmIx
NDkyNjU1MGQ3NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEoKSBjb25zdDsK
ICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7
IH0KICAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0ltcGwtPnNj
YWxlRmFjdG9yKCk7IH0KLSAgICBXZWJDb3JlOjpJbnRQb2ludCBjb250ZW50UG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3NpdGlvbjsgfQorICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgY29udGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UG9zaXRpb247IH0K
IAogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZp
ZXdwb3J0U2l6ZSk7CiAgICAgdm9pZCBzZXRSZW5kZXJlckFjdGl2ZShib29sKTsKQEAgLTY2LDcg
KzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOwogICAgIFdl
YkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgbV9j
b250ZW50UG9zaXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2NvbnRlbnRQb3NpdGlv
bjsKICAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50UXQuY3BwCmluZGV4IGI4Y2NkOTc3YjJjN2EzN2UwOGFlODI0ZTBlZDc2
M2RmODU3ZDEyOGIuLjFiNmQ5MmU5YmRmMDFhZTBkZjRlNTBiMDI4Yjc2MDVjZDFhYzU0NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZvY3VzRWRpdGFibGVBcmVhKGNvbnN0IFFSZWN0
RiYgY2FyZXRBcmVhLAogICAgIGNvbnN0IFFQb2ludEYgdmlld3BvcnRIb3RzcG90ID0gUVBvaW50
Rih4LCAvKiBGSVhNRTogdmlzaWJsZUNlbnRlciAqLyB2aWV3cG9ydFJlY3QuY2VudGVyKCkueSgp
KTsKIAogICAgIFFQb2ludEYgZW5kUG9zaXRpb24gPSBob3RzcG90IC0gdmlld3BvcnRIb3RzcG90
IC8gdGFyZ2V0U2NhbGU7Ci0gICAgZW5kUG9zaXRpb24gPSBtX2NvbnRyb2xsZXItPmNsYW1wVmll
d3BvcnRUb0NvbnRlbnRzKGVuZFBvc2l0aW9uLCB0YXJnZXRTY2FsZSk7CisgICAgZW5kUG9zaXRp
b24gPSBtX2NvbnRyb2xsZXItPmJvdW5kQ29udGVudHNQb3NpdGlvbkF0U2NhbGUoZW5kUG9zaXRp
b24sIHRhcmdldFNjYWxlKTsKICAgICBRUmVjdEYgZW5kVmlzaWJsZUNvbnRlbnRSZWN0KGVuZFBv
c2l0aW9uLCB2aWV3cG9ydFJlY3Quc2l6ZSgpIC8gdGFyZ2V0U2NhbGUpOwogCiAgICAgYW5pbWF0
ZUNvbnRlbnRSZWN0VmlzaWJsZShlbmRWaXNpYmxlQ29udGVudFJlY3QpOwpAQCAtMjM4LDcgKzIz
OCw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojp6b29tVG9BcmVhR2Vz
dHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoCiAgICAgY29uc3QgUVBvaW50RiB2aWV3cG9y
dEhvdHNwb3QgPSB2aWV3cG9ydFJlY3QuY2VudGVyKCk7CiAKICAgICBRUG9pbnRGIGVuZFBvc2l0
aW9uID0gaG90c3BvdCAtIHZpZXdwb3J0SG90c3BvdCAvIHRhcmdldFNjYWxlOwotICAgIGVuZFBv
c2l0aW9uID0gbV9jb250cm9sbGVyLT5jbGFtcFZpZXdwb3J0VG9Db250ZW50cyhlbmRQb3NpdGlv
biwgdGFyZ2V0U2NhbGUpOworICAgIGVuZFBvc2l0aW9uID0gbV9jb250cm9sbGVyLT5ib3VuZENv
bnRlbnRzUG9zaXRpb25BdFNjYWxlKGVuZFBvc2l0aW9uLCB0YXJnZXRTY2FsZSk7CiAgICAgUVJl
Y3RGIGVuZFZpc2libGVDb250ZW50UmVjdChlbmRQb3NpdGlvbiwgdmlld3BvcnRSZWN0LnNpemUo
KSAvIHRhcmdldFNjYWxlKTsKIAogICAgIGVudW0geyBab29tSW4sIFpvb21CYWNrLCBab29tT3V0
LCBOb1pvb20gfSB6b29tQWN0aW9uID0gWm9vbUluOwpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQg
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojp6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNv
bnN0IFFQb2ludEYmIHRvdWNoCiAgICAgICAgICAgICBlbmRQb3NpdGlvbi5zZXRZKGhvdHNwb3Qu
eSgpIC0gdmlld3BvcnRIb3RzcG90LnkoKSAvIHRhcmdldFNjYWxlKTsKICAgICAgICAgICAgIGVu
ZFBvc2l0aW9uLnNldFgobGFzdFNjYWxlLnhQb3NpdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAg
ZW5kUG9zaXRpb24gPSBtX2NvbnRyb2xsZXItPmNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKGVuZFBv
c2l0aW9uLCB0YXJnZXRTY2FsZSk7CisgICAgICAgIGVuZFBvc2l0aW9uID0gbV9jb250cm9sbGVy
LT5ib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKGVuZFBvc2l0aW9uLCB0YXJnZXRTY2FsZSk7
CiAgICAgICAgIGVuZFZpc2libGVDb250ZW50UmVjdCA9IFFSZWN0RihlbmRQb3NpdGlvbiwgdmll
d3BvcnRSZWN0LnNpemUoKSAvIHRhcmdldFNjYWxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMzExLDcgKzMxMSw3IEBAIFFSZWN0RiBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6
Om5lYXJlc3RWYWxpZFZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdAogICAgIC8vIEtlZXAgdGhl
IGNlbnRlciBhdCB0aGUgcG9zaXRpb24gb2YgdGhlIG9sZCBjZW50ZXIsIGFuZCBzdWJzdHJhY3Qg
dmlld3BvcnRIb3RzcG90IC8gdGFyZ2V0U2NhbGUgdG8gZ2V0IHRoZSB0b3AgbGVmdCBwb3NpdGlv
bi4KICAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0gbV92aWV3cG9ydEl0ZW0tPm1hcFRvV2ViQ29u
dGVudCh2aWV3cG9ydEhvdHNwb3QpIC0gdmlld3BvcnRIb3RzcG90IC8gdGFyZ2V0U2NhbGU7CiAK
LSAgICBlbmRQb3NpdGlvbiA9IG1fY29udHJvbGxlci0+Y2xhbXBWaWV3cG9ydFRvQ29udGVudHMo
ZW5kUG9zaXRpb24sIHRhcmdldFNjYWxlKTsKKyAgICBlbmRQb3NpdGlvbiA9IG1fY29udHJvbGxl
ci0+Ym91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2FsZShlbmRQb3NpdGlvbiwgdGFyZ2V0U2NhbGUp
OwogICAgIHJldHVybiBRUmVjdEYoZW5kUG9zaXRpb24sIHZpZXdwb3J0UmVjdC5zaXplKCkgLyB0
YXJnZXRTY2FsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQ2YWQ3N2FhMDhmNDhlNGZiODMzM2Rl
OTZkMTVlMDNkNWEyOWQ3ZWUuLmEwYzI5NWRmMGQzNDMwMjY0N2MwNmUzZmNmYThiNDNiYmUzYTgy
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcApAQCAtMSw2ICsxLDggQEAKIC8qCiAgQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgQ29weXJpZ2h0IChD
KSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MDUsNyArNDA3
LDYgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihHcmFwaGlj
c0xheWVyKiBsYXllcikKICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllciA9IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKTsKICAgICBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXItPmRpZENoYW5nZUxheWVyU3RhdGUoKTsKICAgICBkaWRD
aGFuZ2VMYXllclN0YXRlKCk7Ci0KIH0KIAogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqIGltYWdlKSBjb25zdApAQCAtNTI0
LDcgKzUyNSw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0
ZSgpCiAgICAgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSA9IGZhbHNlOwogICAgIG1fbGF5ZXJJbmZv
LmZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydCgpOwogCi0gICAgbV9sYXllckluZm8u
YW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludCgpOwogICAgIG1fbGF5ZXJJbmZvLmJhY2tmYWNlVmlz
aWJsZSA9IGJhY2tmYWNlVmlzaWJpbGl0eSgpOwogICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVuVHJh
bnNmb3JtID0gY2hpbGRyZW5UcmFuc2Zvcm0oKTsKICAgICBtX2xheWVySW5mby5jb250ZW50c09w
YXF1ZSA9IGNvbnRlbnRzT3BhcXVlKCk7CkBAIC01MzQsMTEgKzUzNCwxNCBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLm1h
c2sgPSB0b0Nvb3JkaW5hdGVkTGF5ZXJJRChtYXNrTGF5ZXIoKSk7CiAgICAgbV9sYXllckluZm8u
bWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHMoKTsKICAgICBtX2xheWVySW5mby5vcGFjaXR5
ID0gb3BhY2l0eSgpOwotICAgIG1fbGF5ZXJJbmZvLnBvcyA9IHBvc2l0aW9uKCk7CiAgICAgbV9s
YXllckluZm8ucHJlc2VydmVzM0QgPSBwcmVzZXJ2ZXMzRCgpOwogICAgIG1fbGF5ZXJJbmZvLnJl
cGxpY2EgPSB0b0Nvb3JkaW5hdGVkTGF5ZXJJRChyZXBsaWNhTGF5ZXIoKSk7Ci0gICAgbV9sYXll
ckluZm8uc2l6ZSA9IHNpemUoKTsKICAgICBtX2xheWVySW5mby50cmFuc2Zvcm0gPSB0cmFuc2Zv
cm0oKTsKKworICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gbV9hZGp1c3RlZEFuY2hvclBv
aW50OworICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsKKyAgICBtX2xh
eWVySW5mby5zaXplID0gbV9hZGp1c3RlZFNpemU7CisKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5j
TGF5ZXJTdGF0ZShtX2lkLCBtX2xheWVySW5mbyk7CiB9CiAKQEAgLTU5Miw2ICs1OTUsOSBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlQ2FudmFzSWZOZWVkZWQoKQogCiB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSgpCiB7CisgICAgLy8gU2V0cyB0aGUgdmFsdWVzLgorICAgIGNvbXB1dGVQaXhl
bEFsaWdubWVudChtX2FkanVzdGVkUG9zaXRpb24sIG1fYWRqdXN0ZWRTaXplLCBtX2FkanVzdGVk
QW5jaG9yUG9pbnQsIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQpOworCiAgICAgc3luY0ltYWdlQmFj
a2luZygpOwogICAgIHN5bmNMYXllclN0YXRlKCk7CiAgICAgc3luY0FuaW1hdGlvbnMoKTsKQEAg
LTcxOSw3ICs3MjUsNyBAQCBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRC
YWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpCiAgICAgLy8gVGhlIHJlc3VsdGluZyBxdWFkIG1pZ2h0
IGJlIHNxdWV3ZWQgYW5kIHRoZSB2aXNpYmxlIHJlY3QgaXMgdGhlIGJvdW5kaW5nIGJveCBvZiB0
aGlzIHF1YWQsCiAgICAgLy8gc28gaXQgbWlnaHQgc3ByZWFkIGZ1cnRoZXIgdGhhbiB0aGUgcmVh
bCB2aXNpYmxlIGFyZWEgKGFuZCB0aGVuIGV2ZW4gbW9yZSBhbXBsaWZpZWQgYnkgdGhlIGNvdmVy
IHJlY3QgbXVsdGlwbGllcikuCiAgICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9
PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKLSAgICBGbG9hdFJlY3Qg
cmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRR
dWFkKEZsb2F0UXVhZChGbG9hdFJlY3QobV9jb29yZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVj
dCgpKSkpOworICAgIEZsb2F0UmVjdCByZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNs
YW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKG1fY29vcmRpbmF0b3ItPnZpc2li
bGVDb250ZW50c1JlY3QoKSkpOwogICAgIGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmlu
aXRlKHJlY3QsIHRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCkpOwogICAgIHJldHVybiBl
bmNsb3NpbmdJbnRSZWN0KHJlY3QpOwogfQpAQCAtODE1LDYgKzgyMSw2NCBAQCBib29sIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6aGFzUGVuZGluZ1Zpc2libGVDaGFuZ2VzKCkKICAgICByZXR1
cm4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpLmludGVyc2VjdHModGlsZWRCYWNraW5n
U3RvcmVDb250ZW50c1JlY3QoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ludGVncmFs
KGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSA9PSB2
YWx1ZTsKK30KKworRmxvYXRQb2ludCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVQ
b3NpdGlvblJlbGF0aXZlVG9CYXNlKCkKK3sKKyAgICBGbG9hdFBvaW50IG9mZnNldDsKKyAgICBm
b3IgKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGN1cnJMYXllciA9IHRoaXM7IGN1cnJMYXllcjsgY3Vy
ckxheWVyID0gY3VyckxheWVyLT5wYXJlbnQoKSkKKyAgICAgICAgb2Zmc2V0ICs9IGN1cnJMYXll
ci0+cG9zaXRpb24oKTsKKworICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK3ZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlUGl4ZWxBbGlnbm1lbnQoRmxvYXRQb2ludCYgcG9zaXRp
b24sIEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCwgRmxvYXRTaXpl
JiBhbGlnbm1lbnRPZmZzZXQpCit7CisgICAgaWYgKGlzSW50ZWdyYWwoZWZmZWN0aXZlQ29udGVu
dHNTY2FsZSgpKSkgeworICAgICAgICBwb3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgICAgIHNp
emUgPSBtX3NpemU7CisgICAgICAgIGFuY2hvclBvaW50ID0gbV9hbmNob3JQb2ludDsKKyAgICAg
ICAgYWxpZ25tZW50T2Zmc2V0ID0gRmxvYXRTaXplKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UgPSBjb21wdXRlUG9zaXRp
b25SZWxhdGl2ZVRvQmFzZSgpOworCisgICAgRmxvYXRSZWN0IGJhc2VSZWxhdGl2ZUJvdW5kcyhw
b3NpdGlvblJlbGF0aXZlVG9CYXNlLCBtX3NpemUpOworICAgIEZsb2F0UmVjdCBzY2FsZWRCb3Vu
ZHMgPSBiYXNlUmVsYXRpdmVCb3VuZHM7CisKKyAgICAvLyBTY2FsZSBieSB0aGUgZWZmZWN0aXZl
IHNjYWxlIGZhY3RvciB0byBjb21wdXRlIHRoZSBzY3JlZW4tcmVsYXRpdmUgYm91bmRzLgorICAg
IHNjYWxlZEJvdW5kcy5zY2FsZShlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOworCisgICAgLy8g
Um91bmQgdG8gaW50ZWdlciBib3VuZGFyaWVzLgorICAgIC8vIE5PVEU6IFdoZW4gdXNpbmcgZW5j
bG9zaW5nSW50UmVjdCAoYXMgbWFjKSBpdCB3aWxsIGhhdmUgZGlmZmVyZW50IHNpemVzIGRlcGVu
ZGluZyBvbiBwb3NpdGlvbi4KKyAgICBGbG9hdFJlY3QgYWxpZ25lZEJvdW5kcyA9IHJvdW5kZWRJ
bnRSZWN0KHNjYWxlZEJvdW5kcyk7CisKKyAgICAvLyBDb252ZXJ0IGJhY2sgdG8gbGF5ZXIgY29v
cmRpbmF0ZXMuCisgICAgYWxpZ25lZEJvdW5kcy5zY2FsZSgxIC8gZWZmZWN0aXZlQ29udGVudHNT
Y2FsZSgpKTsKKworICAgIC8vIENvbnZlcnQgYmFjayB0byBsYXllciBjb29yZGluYXRlcy4KKyAg
ICBhbGlnbm1lbnRPZmZzZXQgPSBiYXNlUmVsYXRpdmVCb3VuZHMubG9jYXRpb24oKSAtIGFsaWdu
ZWRCb3VuZHMubG9jYXRpb24oKTsKKworICAgIHBvc2l0aW9uID0gbV9wb3NpdGlvbiAtIGFsaWdu
bWVudE9mZnNldDsKKyAgICBzaXplID0gYWxpZ25lZEJvdW5kcy5zaXplKCk7CisKKyAgICAvLyBO
b3cgd2UgaGF2ZSB0byBjb21wdXRlIGEgbmV3IGFuY2hvciBwb2ludCB3aGljaCBjb21wZW5zYXRl
cyBmb3Igcm91bmRpbmcuCisgICAgZmxvYXQgYW5jaG9yUG9pbnRYID0gbV9hbmNob3JQb2ludC54
KCk7CisgICAgZmxvYXQgYW5jaG9yUG9pbnRZID0gbV9hbmNob3JQb2ludC55KCk7CisKKyAgICBp
ZiAoYWxpZ25lZEJvdW5kcy53aWR0aCgpKQorICAgICAgICBhbmNob3JQb2ludFggPSAoYmFzZVJl
bGF0aXZlQm91bmRzLndpZHRoKCkgKiBhbmNob3JQb2ludFggKyBhbGlnbm1lbnRPZmZzZXQud2lk
dGgoKSkgLyBhbGlnbmVkQm91bmRzLndpZHRoKCk7CisKKyAgICBpZiAoYWxpZ25lZEJvdW5kcy5o
ZWlnaHQoKSkKKyAgICAgICAgYW5jaG9yUG9pbnRZID0gKGJhc2VSZWxhdGl2ZUJvdW5kcy5oZWln
aHQoKSAqIGFuY2hvclBvaW50WSArIGFsaWdubWVudE9mZnNldC5oZWlnaHQoKSkgLyBhbGlnbmVk
Qm91bmRzLmhlaWdodCgpOworCisgICAgYW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QoYW5jaG9y
UG9pbnRYLCBhbmNob3JQb2ludFksIG1fYW5jaG9yUG9pbnQueigpICogZWZmZWN0aXZlQ29udGVu
dHNTY2FsZSgpKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVU
cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKIHsKICAgICAvLyBXaGVuIHdlIGhhdmUgYSB0cmFuc2Zv
cm0gYW5pbWF0aW9uLCB3ZSBuZWVkIHRvIHVwZGF0ZSB2aXNpYmxlIHJlY3QgZXZlcnkgZnJhbWUg
dG8gYWRqdXN0IHRoZSB2aXNpYmxlIHJlY3Qgb2YgYSBiYWNraW5nIHN0b3JlLgpAQCAtODI3LDEy
ICs4OTEsMTUgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zv
cm1lZFZpc2libGVSZWN0KCkKICAgICBpZiAoaGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKQog
ICAgICAgICBjbGllbnQoKS0+Z2V0Q3VycmVudFRyYW5zZm9ybSh0aGlzLCBjdXJyZW50VHJhbnNm
b3JtKTsKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldExvY2FsVHJhbnNmb3JtKGN1cnJlbnRUcmFu
c2Zvcm0pOwotICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0UG9zaXRpb24ocG9zaXRpb24oKSk7Ci0g
ICAgbV9sYXllclRyYW5zZm9ybS5zZXRBbmNob3JQb2ludChhbmNob3JQb2ludCgpKTsKLSAgICBt
X2xheWVyVHJhbnNmb3JtLnNldFNpemUoc2l6ZSgpKTsKKworICAgIG1fbGF5ZXJUcmFuc2Zvcm0u
c2V0QW5jaG9yUG9pbnQobV9hZGp1c3RlZEFuY2hvclBvaW50KTsKKyAgICBtX2xheWVyVHJhbnNm
b3JtLnNldFBvc2l0aW9uKG1fYWRqdXN0ZWRQb3NpdGlvbik7CisgICAgbV9sYXllclRyYW5zZm9y
bS5zZXRTaXplKG1fYWRqdXN0ZWRTaXplKTsKKwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Rmxh
dHRlbmluZyghcHJlc2VydmVzM0QoKSk7CiAgICAgbV9sYXllclRyYW5zZm9ybS5zZXRDaGlsZHJl
blRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgpKTsKICAgICBtX2xheWVyVHJhbnNmb3JtLmNv
bWJpbmVUcmFuc2Zvcm1zKHBhcmVudCgpID8gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIocGFy
ZW50KCkpLT5tX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOworCiAgICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXll
clRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKIAogICAgIC8vIFRoZSBjb21iaW5lZCB0
cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDU2NGE5NzQxZmYxMDkyZmE0ZjI1Njg1NDVmNDViN2VhNGQ5ZjQ1YTEuLmQ5ZmJl
N2VjNGExYTc4NzM1MTZkOTU3ODE1Njk2YWU4MzAzOTk4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShDb29yZGluYXRlZExh
eWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKENvb3Jk
aW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFn
ZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBDb29yZGluYXRlZExheWVy
SW5mbyYpID0gMDsKQEAgLTEyOSw3ICsxMjksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpIE9WRVJSSURFOwotICAgIAorCisgICAgRmxvYXRQb2lu
dCBjb21wdXRlUG9zaXRpb25SZWxhdGl2ZVRvQmFzZSgpOworICAgIHZvaWQgY29tcHV0ZVBpeGVs
QWxpZ25tZW50KEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBGbG9hdFNpemUmLCBGbG9hdFBvaW50M0Qm
IGFuY2hvclBvaW50LCBGbG9hdFNpemUmIGFsaWdubWVudE9mZnNldCk7CisKICAgICB2b2lkIHNl
dENvbnRlbnRzU2NhbGUoZmxvYXQpOwogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJh
amVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CiAKQEAgLTIxMCw2ICsyMTMsMTEgQEAg
cHJpdmF0ZToKICAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJJbmZvIG1fbGF5ZXJJbmZvOwog
ICAgIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0gbV9sYXllclRyYW5zZm9ybTsKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm07CisgICAgRmxvYXRTaXplIG1f
cGl4ZWxBbGlnbm1lbnRPZmZzZXQ7CisgICAgRmxvYXRTaXplIG1fYWRqdXN0ZWRTaXplOworICAg
IEZsb2F0UG9pbnQgbV9hZGp1c3RlZFBvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX2FkanVz
dGVkQW5jaG9yUG9pbnQ7CisKICAgICBib29sIG1faW5VcGRhdGVNb2RlIDogMTsKICAgICBib29s
IG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJlY3Q6IDE7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNMYXll
clN0YXRlOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuY3BwCmluZGV4IGM5ODVkMTFiM2E2ZTAwNmMzZmYyNjAwYWQyM2QwYmM5MDlhNzA0
MjYuLmJmNjdlYWRmZDhjNGI5YWE5MzIyY2E3MmY3MTQxNDA5NGNmOTlmOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTY3
MSw3ICs2NzEsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVVcGRhdGVBdGxh
cyhpbnQgYXRsYXNJRCkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHk6OlJlbW92ZVVwZGF0ZUF0bGFzKGF0bGFzSUQpKTsKIH0KIAotV2ViQ29y
ZTo6SW50UmVjdCBMYXllclRyZWVDb29yZGluYXRvcjo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNv
bnN0CitXZWJDb3JlOjpGbG9hdFJlY3QgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVDb250
ZW50c1JlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX3Zpc2libGVDb250ZW50c1JlY3Q7CiB9
CkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c2V0TGF5ZXJB
bmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCBjb25zdAogICAgIG1fd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6U2V0TGF5ZXJBbmlt
YXRpb25zKGxheWVySUQsIGFjdGl2ZUFuaW1hdGlvbnMpKTsKIH0KIAotdm9pZCBMYXllclRyZWVD
b29yZGluYXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBm
bG9hdCBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikK
IHsKICAgICBib29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29u
dGVudHNSZWN0OwogICAgIGJvb2wgY29udGVudHNTY2FsZURpZENoYW5nZSA9IHNjYWxlICE9IG1f
Y29udGVudHNTY2FsZTsKQEAgLTcxNyw4ICs3MTcsMTIgQEAgdm9pZCBMYXllclRyZWVDb29yZGlu
YXRvcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBz
Y2EKICAgICB9CiAKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICBpZiAobV93ZWJQYWdl
LT51c2VGaXhlZExheW91dCgpKQotICAgICAgICBtX3dlYlBhZ2UtPnNldEZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0KHJlY3QpOworICAgIGlmIChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsK
KyAgICAgICAgLy8gUm91bmQgdGhlIHJlY3QgaW5zdGVhZCBvZiBlbmNsb3NpbmcgaXQgdG8gbWFr
ZSBzdXJlIHRoYXQgaXRzIHNpemUgc3RheXMKKyAgICAgICAgLy8gdGhlIHNhbWUgd2hpbGUgcGFu
bmluZy4gVGhpcyBjYW4gaGF2ZSBuYXN0eSBlZmZlY3RzIG9uIGxheW91dC4KKyAgICAgICAgbV93
ZWJQYWdlLT5zZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyb3VuZGVkSW50UmVjdChyZWN0KSk7
CisgICAgfQorCiAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkKICAgICAgICAgbV9zaG91
bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGUgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggMjY4YThhOTFjMjRkMjZm
M2MyZTllOTcyZDhiNWU3NGU5MjdmNDg1Zi4uN2JiNjhiOGM3NzNiODMyMzE2NWE3YWExOTQyODlk
MTQ2ODFmNWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5oCkBAIC04MSwxMSArODEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBT
dXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29u
c3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQp
OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRp
bGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29y
ZGluYXRvck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIE9WRVJSSURFOwogCkBAIC0xODcs
NyArMTg3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yVUlQcm9jZXNzOwog
ICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNv
bnRlbnRzUmVjdDsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0
OwogICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKICAgICBib29sIG1fc2hvdWxkU2VuZFNjcm9s
bFBvc2l0aW9uVXBkYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCmluZGV4IDZhYzM3MjU2MjEwNmVi
YzM4YTQxZWJkMTIxNmM5NTAwZDVkZGZmZDIuLjE2MzZlNzAwOWVmMTIxZDhhNGNmYTFhNjU0YWNk
MjlkYTgzMjc1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCkBAIC0xLDUgKzEsNiBAQAogIwogIyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisjICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNyArMjEsNyBA
QAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogbWVzc2FnZXMgLT4gTGF5ZXJUcmVl
Q29vcmRpbmF0b3IgewotICAgIFNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVj
dCB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCB0
cmFqZWN0b3J5VmVjdG9yeSkKKyAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCB0cmFqZWN0b3J5VmVjdG9yeSkKICAgICBSZW5kZXJOZXh0RnJhbWUoKQogICAgIFB1cmdl
QmFja2luZ1N0b3JlcygpCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5k
ZXggYTI5OTgzZWQyOGZkNzM5YjQ4ODNhYWVlNmQxMTcwMWQzNjU0Yjc3NS4uZDRkNWVkYzhjYzJm
NGY4NjkyOGYyZTVjMmRkMmRjMDlmNzdhY2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNz
IE1lc3NhZ2VJRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKK2Ns
YXNzIEZsb2F0UmVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgR3Jh
cGhpY3NMYXllcjsKQEAgLTkyLDggKzkzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSB7IH0KIAogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZmxvYXQgLyogc2NhbGUgKi8sIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdEZvckxheWVyKGludCAvKiBsYXllcklEICovLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgPSAwOwo=
</data>
<flag name="review"
          id="194669"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>