<?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>206767</bug_id>
          
          <creation_ts>2020-01-24 12:51:42 -0800</creation_ts>
          <short_desc>[css-flexbox] Implement row-gap and column-gap for flex layout</short_desc>
          <delta_ts>2021-10-29 13:01:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>andrea</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bradbice</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>dianeberlusconi</cc>
    
    <cc>eddie.chen</cc>
    
    <cc>eoconnor</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jarilittlenen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kyle.bavender</cc>
    
    <cc>lpoulter1984</cc>
    
    <cc>mail</cc>
    
    <cc>mcoker</cc>
    
    <cc>mehmetgelisin</cc>
    
    <cc>me</cc>
    
    <cc>me</cc>
    
    <cc>michaelcpuckett</cc>
    
    <cc>mjs</cc>
    
    <cc>moritz.mahringer</cc>
    
    <cc>myakura.web</cc>
    
    <cc>olestr</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1610826</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2020-01-24 12:51:42 -0800</bug_when>
    <thetext>We&apos;re planning to make flex containers obey the row-gap and column-gap properties from https://drafts.csswg.org/css-align/#gap-flex .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610827</commentid>
    <comment_count>1</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2020-01-24 12:52:08 -0800</bug_when>
    <thetext>&quot;We&quot; meaning chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611184</commentid>
    <comment_count>2</comment_count>
    <who name="Masataka Yakura">myakura.web</who>
    <bug_when>2020-01-26 11:44:04 -0800</bug_when>
    <thetext>That gap support in Flexbox has been supported in Firefox for quite some time. It&apos;s really useful for some horizontal list of links (e.g. ones in the header in https://webkit.org/blog/ ).


Although that was a nice addition the way CSSWG did was not easily feature detectable (just repurpose `gap` props apply to Flex and add no `flex-gap` properties so `@supports` didn&apos;t work...)... I&apos;d love Chromium/WebKit support the feature around the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651071</commentid>
    <comment_count>3</comment_count>
    <who name="Laurie">lpoulter1984</who>
    <bug_when>2020-05-10 02:42:44 -0700</bug_when>
    <thetext>Chromium now supports this along with Firefox. It would be great to have webkit also support flex gap. Is this something that is being planned at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653092</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-15 09:59:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63277872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691489</commentid>
    <comment_count>5</comment_count>
    <who name="Ole Strøm">olestr</who>
    <bug_when>2020-09-24 06:36:22 -0700</bug_when>
    <thetext>I keep on really wanting to use this one when using flex.

It&apos;s so close to being a reality; https://caniuse.com/flexbox-gap - just Safari missing, really.

Perhaps this issue should be renamed to reflect the now landed property name of just &quot;gap&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691499</commentid>
    <comment_count>6</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-24 07:08:00 -0700</bug_when>
    <thetext>(In reply to Ole Strøm from comment #5)
&gt; I keep on really wanting to use this one when using flex.
&gt; 
&gt; It&apos;s so close to being a reality; https://caniuse.com/flexbox-gap - just
&gt; Safari missing, really.
&gt; 
&gt; Perhaps this issue should be renamed to reflect the now landed property name
&gt; of just &quot;gap&quot;?

Be patient :). There are some good news coming soon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692507</commentid>
    <comment_count>7</comment_count>
      <attachid>409876</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-28 02:40:39 -0700</bug_when>
    <thetext>Created attachment 409876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692511</commentid>
    <comment_count>8</comment_count>
    <who name="Ole Strøm">olestr</who>
    <bug_when>2020-09-28 03:00:23 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #6)
&gt; Be patient :). There are some good news coming soon

INDEED 🎉</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692869</commentid>
    <comment_count>9</comment_count>
      <attachid>409876</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2020-09-29 03:26:43 -0700</bug_when>
    <thetext>Comment on attachment 409876
Patch

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

Some comments inline but this looks great, really excited to see this happening.

&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:81
&gt; +    if (sumHypotheticalMainSize &gt; 0) {

Do we need this check or we could do something like &quot;m_gapBetweenItems &gt; 0&quot;?

&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:85
&gt; +        ASSERT(sumFlexBaseSize &gt;= m_gapBetweenItems);

Why &gt;= here and &gt; in the previous ASSERT?

&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:87
&gt; +    }

Nit: Not a strong opinion, but in other similar loops insead of adding the gap during the loop, you&apos;ve added it later. Maybe we should follow the same approach in all of them and use something like &quot;m_allItems.size() - 1 * m_gapBetweeItems&quot;.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:123
&gt; +    if (!isColumnFlow() &amp;&amp; numItemsWithNormalLayout &gt; 0) {

Why not &quot;numItemsWithNormalLayout &gt; 1&quot;? Otherwise if it&apos;s &quot;1&quot; |inlineGapSize| would be 0.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:945
&gt; +

Super-nit: I&apos;d remove this empty line, as we&apos;re still computing the |remainingFreeSpace|.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:962
&gt; +    if (!isColumnFlow())

Maybe add &quot;&amp;&amp; numLines &gt; 1&quot;, otherwise you don&apos;t need to call setLogicalHeight().

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/gap-017-expected.txt:3
&gt; +PASS .button 1 

You need to fix the trailing space here due to a recent change (see r267640).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693340</commentid>
    <comment_count>10</comment_count>
      <attachid>409876</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-30 04:42:37 -0700</bug_when>
    <thetext>Comment on attachment 409876
Patch

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

Thanks for the review.

&gt;&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:81
&gt;&gt; +    if (sumHypotheticalMainSize &gt; 0) {
&gt; 
&gt; Do we need this check or we could do something like &quot;m_gapBetweenItems &gt; 0&quot;?

In theory you could have sumHypotheticalMainSize == 0 and m_gapBetweenItems &gt; 0 so yeah I think the check is correct (you don&apos;t want to end up with a negative sumHypotheticalMainSize)

&gt;&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:85
&gt;&gt; +        ASSERT(sumFlexBaseSize &gt;= m_gapBetweenItems);
&gt; 
&gt; Why &gt;= here and &gt; in the previous ASSERT?

Actually I think the ASSERTs are incorrect because at this point the sums might be negative due to negative margins. I&apos;ll check that.

&gt;&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:87
&gt;&gt; +    }
&gt; 
&gt; Nit: Not a strong opinion, but in other similar loops insead of adding the gap during the loop, you&apos;ve added it later. Maybe we should follow the same approach in all of them and use something like &quot;m_allItems.size() - 1 * m_gapBetweeItems&quot;.

Makes sense, thanks for the suggestion.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:123
&gt;&gt; +    if (!isColumnFlow() &amp;&amp; numItemsWithNormalLayout &gt; 0) {
&gt; 
&gt; Why not &quot;numItemsWithNormalLayout &gt; 1&quot;? Otherwise if it&apos;s &quot;1&quot; |inlineGapSize| would be 0.

Right, good point. The condition was there just to avoid negatives but in the case of 1 the whole if block would be a no-op.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:962
&gt;&gt; +    if (!isColumnFlow())
&gt; 
&gt; Maybe add &quot;&amp;&amp; numLines &gt; 1&quot;, otherwise you don&apos;t need to call setLogicalHeight().

Good point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693341</commentid>
    <comment_count>11</comment_count>
      <attachid>409876</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-30 04:50:31 -0700</bug_when>
    <thetext>Comment on attachment 409876
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:87
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; Nit: Not a strong opinion, but in other similar loops insead of adding the gap during the loop, you&apos;ve added it later. Maybe we should follow the same approach in all of them and use something like &quot;m_allItems.size() - 1 * m_gapBetweeItems&quot;.
&gt; 
&gt; Makes sense, thanks for the suggestion.

I remembered why  we cannot do that. We need to compute it on every iteration because there is a check at the beginning of the loop which depends on the value of sumHypotheticalMainSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693347</commentid>
    <comment_count>12</comment_count>
      <attachid>410109</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-30 05:25:04 -0700</bug_when>
    <thetext>Created attachment 410109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693348</commentid>
    <comment_count>13</comment_count>
      <attachid>410109</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2020-09-30 05:49:15 -0700</bug_when>
    <thetext>Comment on attachment 410109
Patch

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

r=me, please wait for green EWSs before landing

&gt; Source/WebCore/rendering/FlexibleBoxAlgorithm.cpp:78
&gt; +    if (!lineItems.isEmpty()) {

Maybe you can add &quot;m_gapBetweenItems &gt; 0&quot; too, otherwise you don&apos;t need to do anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693715</commentid>
    <comment_count>14</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-01 04:33:06 -0700</bug_when>
    <thetext>Committed r267829: &lt;https://trac.webkit.org/changeset/267829&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409876</attachid>
            <date>2020-09-28 02:40:39 -0700</date>
            <delta_ts>2020-09-30 05:24:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206767-20200928114037.patch</filename>
            <type>text/plain</type>
            <size>24292</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhYTU0YTU1YTM5ZDgy
MzEzNjM4YmE1MDk1NzNhMTQ4OGQzOWZkNS4uY2MwMWE5YjA4NWQyNTE3ODMwMzBiOTBkYTZlMzhm
ZTUwMGQ4ZjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA5LTIxICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gSW1wbGVtZW50IHJvdy1nYXAgYW5kIGNvbHVtbi1nYXAgZm9yIGZsZXggbGF5b3V0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY3NjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
cm93L2NvbHVtbi1nYXAgZm9yIGZsZXhib3hlcyB3aGljaCBhbGxvdyBhdXRob3JzIHRvIGRlZmlu
ZSBndXR0ZXJzIGJldHdlZW4gZmxleCBpdGVtcyBhbmQgYWxzbyBiZXR3ZWVuIGZsZXggbGluZXMu
CisKKyAgICAgICAgSW5zcGlyZWQgYnkgQmxpbmsncyBjcnJldi5jb20vYy8yMTYyMTQ5IGFuZCBj
cnJldi5jb20vYy8yMTcyNzU4IGJ5IDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICAq
IHJlbmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
bGV4TGF5b3V0QWxnb3JpdGhtOjpGbGV4TGF5b3V0QWxnb3JpdGhtKTogVGFrZXMgdHdvIG5ldyBw
YXJhbWV0ZXJzIHdpdGggcm93L2NvbHVtbiBnYXAgbGVuZ3Rocy4KKyAgICAgICAgKFdlYkNvcmU6
OkZsZXhMYXlvdXRBbGdvcml0aG06OmNvbXB1dGVOZXh0RmxleExpbmUpOiBBZGQgZ2FwcyB0byBo
eXBvdGhldGljYWwgYW5kIGZsZXggYmFzZSBzaXplcyBpbiBiZXR3ZWVuIGl0ZW1zLgorICAgICAg
ICAqIHJlbmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRobS5oOiBBZGRlZCB0d28gbmV3IGF0dHJp
YnV0ZXMgdG8gc3RvcmUgZ2Fwcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KTogQWRkIGdhcHMgdG8gdGhlIGludHJpbnNpYyB3aWR0
aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpyZXBvc2l0aW9uTG9naWNh
bEhlaWdodERlcGVuZGVudEZsZXhJdGVtcyk6IFRha2UgZ2FwIGJldHdlZW4gbGluZXMgYXMgYXJn
dW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0RmxleEl0
ZW1zKTogVGFrZSBnYXAgYmV0d2VlbiBsaW5lcyBhcyBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKTogQ29tcHV0ZSBn
YXBzIHRvIHJlZHVjZSB0aGUgcmVtYWluaW5nIGZyZWUgc3BhY2UuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25GbGV4TGluZXMpOiBBZGQgZ2FwIGJldHdlZW4gbGlu
ZXMgdG8gdGhlIGxpbmUgb2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVC
b3g6OmNvbXB1dGVHYXAgY29uc3QpOiBSZXR1cm5zIGVpdGhlciB0aGUgcm93LWdhcCBvciB0aGUg
Y29sdW1uLWdhcCBkZXBlbmRpbmcgb24gdGhlIGZsZXggZGlyZWN0aW9uLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oOgorCiAyMDIwLTA5LTI0ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdExlZ2FjeSBzaG91bGQg
Y2FsbCBQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxleGlibGVCb3hBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZsZXhpYmxlQm94QWxnb3JpdGhtLmNwcAppbmRleCAwMTM3ZmQ0YjRjMTAw
NzczZGY4ZDdiNDE1OGU3YTZiNzhhMTlkMWUxLi4xMjYyYmFkNzE1MTY0YzNkOTdmYTNkM2Q5OWY1
NTdiYWZjMWUzYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxleGli
bGVCb3hBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbGV4aWJs
ZUJveEFsZ29yaXRobS5jcHAKQEAgLTQ2LDEwICs0NiwxMiBAQCBGbGV4SXRlbTo6RmxleEl0ZW0o
UmVuZGVyQm94JiBib3gsIExheW91dFVuaXQgZmxleEJhc2VDb250ZW50U2l6ZSwgTGF5b3V0VW5p
dCBoeQogICAgIEFTU0VSVCghYm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKIH0KIAotRmxl
eExheW91dEFsZ29yaXRobTo6RmxleExheW91dEFsZ29yaXRobShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIExheW91dFVuaXQgbGluZUJyZWFrTGVuZ3RoLCBjb25zdCBWZWN0b3I8RmxleEl0ZW0+
JiBhbGxJdGVtcykKK0ZsZXhMYXlvdXRBbGdvcml0aG06OkZsZXhMYXlvdXRBbGdvcml0aG0oY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBMYXlvdXRVbml0IGxpbmVCcmVha0xlbmd0aCwgY29uc3Qg
VmVjdG9yPEZsZXhJdGVtPiYgYWxsSXRlbXMsIExheW91dFVuaXQgZ2FwQmV0d2Vlbkl0ZW1zLCBM
YXlvdXRVbml0IGdhcEJldHdlZW5MaW5lcykKICAgICA6IG1fc3R5bGUoc3R5bGUpCiAgICAgLCBt
X2xpbmVCcmVha0xlbmd0aChsaW5lQnJlYWtMZW5ndGgpCiAgICAgLCBtX2FsbEl0ZW1zKGFsbEl0
ZW1zKQorICAgICwgbV9nYXBCZXR3ZWVuSXRlbXMoZ2FwQmV0d2Vlbkl0ZW1zKQorICAgICwgbV9n
YXBCZXR3ZWVuTGluZXMoZ2FwQmV0d2VlbkxpbmVzKQogewogfQogCkBAIC02OSwxMiArNzEsMjEg
QEAgYm9vbCBGbGV4TGF5b3V0QWxnb3JpdGhtOjpjb21wdXRlTmV4dEZsZXhMaW5lKHNpemVfdCYg
bmV4dEluZGV4LCBWZWN0b3I8RmxleEl0ZW0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBs
aW5lSXRlbXMuYXBwZW5kKGZsZXhJdGVtKTsKICAgICAgICAgbGluZUhhc0luRmxvd0l0ZW0gPSB0
cnVlOwotICAgICAgICBzdW1GbGV4QmFzZVNpemUgKz0gZmxleEl0ZW0uZmxleEJhc2VNYXJnaW5C
b3hTaXplKCk7CisgICAgICAgIHN1bUZsZXhCYXNlU2l6ZSArPSBmbGV4SXRlbS5mbGV4QmFzZU1h
cmdpbkJveFNpemUoKSArIG1fZ2FwQmV0d2Vlbkl0ZW1zOwogICAgICAgICB0b3RhbEZsZXhHcm93
ICs9IGZsZXhJdGVtLmJveC5zdHlsZSgpLmZsZXhHcm93KCk7CiAgICAgICAgIHRvdGFsRmxleFNo
cmluayArPSBmbGV4SXRlbS5ib3guc3R5bGUoKS5mbGV4U2hyaW5rKCk7CiAgICAgICAgIHRvdGFs
V2VpZ2h0ZWRGbGV4U2hyaW5rICs9IGZsZXhJdGVtLmJveC5zdHlsZSgpLmZsZXhTaHJpbmsoKSAq
IGZsZXhJdGVtLmZsZXhCYXNlQ29udGVudFNpemU7Ci0gICAgICAgIHN1bUh5cG90aGV0aWNhbE1h
aW5TaXplICs9IGZsZXhJdGVtLmh5cG90aGV0aWNhbE1haW5BeGlzTWFyZ2luQm94U2l6ZSgpOwor
ICAgICAgICBzdW1IeXBvdGhldGljYWxNYWluU2l6ZSArPSBmbGV4SXRlbS5oeXBvdGhldGljYWxN
YWluQXhpc01hcmdpbkJveFNpemUoKSArIG1fZ2FwQmV0d2Vlbkl0ZW1zOwogICAgIH0KKworICAg
IGlmIChzdW1IeXBvdGhldGljYWxNYWluU2l6ZSA+IDApIHsKKyAgICAgICAgLy8gV2UgYWRkZWQg
YSBnYXAgYWZ0ZXIgZXZlcnkgaXRlbSBidXQgdGhlcmUgc2hvdWxkbid0IGJlIG9uZSBhZnRlciB0
aGUgbGFzdCBpdGVtLCBzbyBzdWJ0cmFjdCBpdCBoZXJlLgorICAgICAgICBBU1NFUlQoc3VtSHlw
b3RoZXRpY2FsTWFpblNpemUgPiBtX2dhcEJldHdlZW5JdGVtcyk7CisgICAgICAgIHN1bUh5cG90
aGV0aWNhbE1haW5TaXplIC09IG1fZ2FwQmV0d2Vlbkl0ZW1zOworICAgICAgICBBU1NFUlQoc3Vt
RmxleEJhc2VTaXplID49IG1fZ2FwQmV0d2Vlbkl0ZW1zKTsKKyAgICAgICAgc3VtRmxleEJhc2VT
aXplIC09IG1fZ2FwQmV0d2Vlbkl0ZW1zOworICAgIH0KKwogICAgIEFTU0VSVChsaW5lSXRlbXMu
c2l6ZSgpID4gMCB8fCBuZXh0SW5kZXggPT0gbV9hbGxJdGVtcy5zaXplKCkpOwogICAgIHJldHVy
biBsaW5lSXRlbXMuc2l6ZSgpID4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZsZXhpYmxlQm94QWxnb3JpdGhtLmgKaW5kZXggOTQxNjkxOWY4YWI1MjhkMjY4MDBjNWM5YmUw
N2RjNzY4NzYwYzAzMC4uNDAwYWZjOTMwNWQwY2MxNGIxOTU3MDM3MGMwYzIxMzQ5MDY2NWIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZsZXhpYmxlQm94QWxnb3JpdGht
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZsZXhpYmxlQm94QWxnb3JpdGhtLmgK
QEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgRmxleExheW91dEFsZ29yaXRobSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRmxleExheW91dEFsZ29yaXRobSk7CiAKIHB1YmxpYzoKLSAgICBGbGV4
TGF5b3V0QWxnb3JpdGhtKGNvbnN0IFJlbmRlclN0eWxlJiwgTGF5b3V0VW5pdCBsaW5lQnJlYWtM
ZW5ndGgsIGNvbnN0IFZlY3RvcjxGbGV4SXRlbT4mIGFsbEl0ZW1zKTsKKyAgICBGbGV4TGF5b3V0
QWxnb3JpdGhtKGNvbnN0IFJlbmRlclN0eWxlJiwgTGF5b3V0VW5pdCBsaW5lQnJlYWtMZW5ndGgs
IGNvbnN0IFZlY3RvcjxGbGV4SXRlbT4mIGFsbEl0ZW1zLCBMYXlvdXRVbml0IGdhcEJldHdlZW5J
dGVtcywgTGF5b3V0VW5pdCBnYXBCZXR3ZWVuTGluZXMpOwogCiAgICAgLy8gVGhlIGh5cG90aGV0
aWNhbCBtYWluIHNpemUgb2YgYW4gaXRlbSBpcyB0aGUgZmxleCBiYXNlIHNpemUgY2xhbXBlZAog
ICAgIC8vIGFjY29yZGluZyB0byBpdHMgbWluIGFuZCBtYXggbWFpbiBzaXplIHByb3BlcnRpZXMK
QEAgLTgzLDYgKzgzLDkgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHls
ZTsKICAgICBMYXlvdXRVbml0IG1fbGluZUJyZWFrTGVuZ3RoOwogICAgIGNvbnN0IFZlY3RvcjxG
bGV4SXRlbT4mIG1fYWxsSXRlbXM7CisKKyAgICBjb25zdCBMYXlvdXRVbml0IG1fZ2FwQmV0d2Vl
bkl0ZW1zOworICAgIGNvbnN0IExheW91dFVuaXQgbV9nYXBCZXR3ZWVuTGluZXM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAppbmRleCBmMmNlYjBiODI5MWE5MDZjZWZiN2UxM2JhYTkwZWRjYWQz
MjVhZGJmLi5mZDYzMDA0ZmIzNTJmNWNmZDlmMDRhNjA1MDE3MWRjZDFlMmUxNTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTkxLDEw
ICs5MSwxMiBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNh
bFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdAogICAgIC8vIGhvbm9yaW5nIGl0IHRo
b3VnaCB1bnRpbCB0aGUgZmxleCBzaG9ydGhhbmQgc3RvcHMgc2V0dGluZyBpdCB0byAwLiBTZWUK
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MTE3IGFu
ZAogICAgIC8vIGh0dHBzOi8vY3JidWcuY29tLzI0MDc2NS4KKyAgICBzaXplX3QgbnVtSXRlbXNX
aXRoTm9ybWFsTGF5b3V0ID0gMDsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENo
aWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgY2hpbGQtPmlzRXhjbHVk
ZWRGcm9tTm9ybWFsTGF5b3V0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisg
ICAgICAgICsrbnVtSXRlbXNXaXRoTm9ybWFsTGF5b3V0OworCiAgICAgICAgIExheW91dFVuaXQg
bWFyZ2luID0gbWFyZ2luSW50cmluc2ljTG9naWNhbFdpZHRoRm9yQ2hpbGQoKmNoaWxkKTsKICAg
ICAgICAgCiAgICAgICAgIExheW91dFVuaXQgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoOwpAQCAt
MTE3LDcgKzExOSwxNCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdAogICAgICAgICAgICAgbWF4
TG9naWNhbFdpZHRoID0gc3RkOjptYXgobWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBtYXhMb2dp
Y2FsV2lkdGgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgaWYgKCFpc0NvbHVtbkZs
b3coKSAmJiBudW1JdGVtc1dpdGhOb3JtYWxMYXlvdXQgPiAwKSB7CisgICAgICAgIExheW91dFVu
aXQgaW5saW5lR2FwU2l6ZSA9IChudW1JdGVtc1dpdGhOb3JtYWxMYXlvdXQgLSAxKSAqIGNvbXB1
dGVHYXAoR2FwVHlwZTo6QmV0d2Vlbkl0ZW1zKTsKKyAgICAgICAgbWF4TG9naWNhbFdpZHRoICs9
IGlubGluZUdhcFNpemU7CisgICAgICAgIGlmICghaXNNdWx0aWxpbmUoKSkKKyAgICAgICAgICAg
IG1pbkxvZ2ljYWxXaWR0aCArPSBpbmxpbmVHYXBTaXplOworICAgIH0KKwogICAgIG1heExvZ2lj
YWxXaWR0aCA9IHN0ZDo6bWF4KG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKICAg
ICAKICAgICAvLyBEdWUgdG8gbmVnYXRpdmUgbWFyZ2lucywgaXQgaXMgcG9zc2libGUgdGhhdCB3
ZSBjYWxjdWxhdGVkIGEgbmVnYXRpdmUKQEAgLTM0NSw3ICszNTQsNyBAQCB2b2lkIFJlbmRlckZs
ZXhpYmxlQm94OjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6cmVwb3NpdGlv
bkxvZ2ljYWxIZWlnaHREZXBlbmRlbnRGbGV4SXRlbXMoVmVjdG9yPExpbmVDb250ZXh0PiYgbGlu
ZUNvbnRleHRzKQordm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6cmVwb3NpdGlvbkxvZ2ljYWxIZWln
aHREZXBlbmRlbnRGbGV4SXRlbXMoVmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzLCBM
YXlvdXRVbml0IGdhcEJldHdlZW5MaW5lcykKIHsKICAgICBMYXlvdXRVbml0IGNyb3NzQXhpc1N0
YXJ0RWRnZSA9IGxpbmVDb250ZXh0cy5pc0VtcHR5KCkgPyAwX2x1IDogbGluZUNvbnRleHRzWzBd
LmNyb3NzQXhpc09mZnNldDsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc2luZ2xlIGxpbmUgZmxleGJv
eCwgdGhlIGxpbmUgaGVpZ2h0IGlzIGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlLiBGb3IgZmxleC1k
aXJlY3Rpb246IHJvdywKQEAgLTM1Myw4ICszNjIsOCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94
OjpyZXBvc2l0aW9uTG9naWNhbEhlaWdodERlcGVuZGVudEZsZXhJdGVtcyhWZWN0b3I8TGluZUNv
bgogICAgIGlmICghaXNNdWx0aWxpbmUoKSAmJiAhbGluZUNvbnRleHRzLmlzRW1wdHkoKSkKICAg
ICAgICAgbGluZUNvbnRleHRzWzBdLmNyb3NzQXhpc0V4dGVudCA9IGNyb3NzQXhpc0NvbnRlbnRF
eHRlbnQoKTsKIAotICAgIGFsaWduRmxleExpbmVzKGxpbmVDb250ZXh0cyk7Ci0gICAgCisgICAg
YWxpZ25GbGV4TGluZXMobGluZUNvbnRleHRzLCBnYXBCZXR3ZWVuTGluZXMpOworCiAgICAgYWxp
Z25DaGlsZHJlbihsaW5lQ29udGV4dHMpOwogICAgIAogICAgIGlmIChzdHlsZSgpLmZsZXhXcmFw
KCkgPT0gRmxleFdyYXA6OlJldmVyc2UpCkBAIC05MDAsMTEgKzkwOSwxNSBAQCB2b2lkIFJlbmRl
ckZsZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVuKQogICAg
IG1faGFzRGVmaW5pdGVIZWlnaHQgPSBTaXplRGVmaW5pdGVuZXNzOjpVbmtub3duOwogICAgIAog
ICAgIGNvbnN0IExheW91dFVuaXQgbGluZUJyZWFrTGVuZ3RoID0gbWFpbkF4aXNDb250ZW50RXh0
ZW50KExheW91dFVuaXQ6Om1heCgpKTsKLSAgICBGbGV4TGF5b3V0QWxnb3JpdGhtIGZsZXhBbGdv
cml0aG0oc3R5bGUoKSwgbGluZUJyZWFrTGVuZ3RoLCBhbGxJdGVtcyk7CisgICAgTGF5b3V0VW5p
dCBnYXBCZXR3ZWVuSXRlbXMgPSBjb21wdXRlR2FwKEdhcFR5cGU6OkJldHdlZW5JdGVtcyk7Cisg
ICAgTGF5b3V0VW5pdCBnYXBCZXR3ZWVuTGluZXMgPSBjb21wdXRlR2FwKEdhcFR5cGU6OkJldHdl
ZW5MaW5lcyk7CisgICAgRmxleExheW91dEFsZ29yaXRobSBmbGV4QWxnb3JpdGhtKHN0eWxlKCks
IGxpbmVCcmVha0xlbmd0aCwgYWxsSXRlbXMsIGdhcEJldHdlZW5JdGVtcywgZ2FwQmV0d2Vlbkxp
bmVzKTsKICAgICBMYXlvdXRVbml0IGNyb3NzQXhpc09mZnNldCA9IGZsb3dBd2FyZUJvcmRlckJl
Zm9yZSgpICsgZmxvd0F3YXJlUGFkZGluZ0JlZm9yZSgpOwogICAgIFZlY3RvcjxGbGV4SXRlbT4g
bGluZUl0ZW1zOwogICAgIHNpemVfdCBuZXh0SW5kZXggPSAwOworICAgIHNpemVfdCBudW1MaW5l
cyA9IDA7CiAgICAgd2hpbGUgKGZsZXhBbGdvcml0aG0uY29tcHV0ZU5leHRGbGV4TGluZShuZXh0
SW5kZXgsIGxpbmVJdGVtcywgc3VtRmxleEJhc2VTaXplLCB0b3RhbEZsZXhHcm93LCB0b3RhbEZs
ZXhTaHJpbmssIHRvdGFsV2VpZ2h0ZWRGbGV4U2hyaW5rLCBzdW1IeXBvdGhldGljYWxNYWluU2l6
ZSkpIHsKKyAgICAgICAgKytudW1MaW5lczsKICAgICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJN
YWluSW5uZXJTaXplID0gbWFpbkF4aXNDb250ZW50RXh0ZW50KHN1bUh5cG90aGV0aWNhbE1haW5T
aXplKTsKICAgICAgICAgLy8gYXZhaWxhYmxlRnJlZVNwYWNlIGlzIHRoZSBpbml0aWFsIGFtb3Vu
dCBvZiBmcmVlIHNwYWNlIGluIHRoaXMgZmxleGJveC4KICAgICAgICAgLy8gcmVtYWluaW5nRnJl
ZVNwYWNlIHN0YXJ0cyBvdXQgYXQgdGhlIHNhbWUgdmFsdWUgYnV0IGFzIHdlIHBsYWNlIGFuZCBs
YXkKQEAgLTkyOSw4ICs5NDIsMTEgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0Rmxl
eEl0ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgIEFTU0VSVCghZmxleEl0
ZW0uYm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKICAgICAgICAgICAgIHJlbWFpbmluZ0Zy
ZWVTcGFjZSAtPSBmbGV4SXRlbS5mbGV4ZWRNYXJnaW5Cb3hTaXplKCk7CiAgICAgICAgIH0KKwor
ICAgICAgICByZW1haW5pbmdGcmVlU3BhY2UgLT0gKGxpbmVJdGVtcy5zaXplKCkgLSAxKSAqIGdh
cEJldHdlZW5JdGVtczsKKwogICAgICAgICAvLyBUaGlzIHdpbGwgc3RkOjptb3ZlIGxpbmVJdGVt
cyBpbnRvIGEgbmV3bHktY3JlYXRlZCBMaW5lQ29udGV4dC4KLSAgICAgICAgbGF5b3V0QW5kUGxh
Y2VDaGlsZHJlbihjcm9zc0F4aXNPZmZzZXQsIGxpbmVJdGVtcywgcmVtYWluaW5nRnJlZVNwYWNl
LCByZWxheW91dENoaWxkcmVuLCBsaW5lQ29udGV4dHMpOworICAgICAgICBsYXlvdXRBbmRQbGFj
ZUNoaWxkcmVuKGNyb3NzQXhpc09mZnNldCwgbGluZUl0ZW1zLCByZW1haW5pbmdGcmVlU3BhY2Us
IHJlbGF5b3V0Q2hpbGRyZW4sIGxpbmVDb250ZXh0cywgZ2FwQmV0d2Vlbkl0ZW1zKTsKICAgICB9
CiAKICAgICBpZiAoaGFzTGluZUlmRW1wdHkoKSkgewpAQCAtOTQyLDkgKzk1OCwxMiBAQCB2b2lk
IFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVu
KQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpIDwgbWluSGVpZ2h0KQogICAgICAgICAgICAg
c2V0TG9naWNhbEhlaWdodChtaW5IZWlnaHQpOwogICAgIH0KLSAgICAKKworICAgIGlmICghaXND
b2x1bW5GbG93KCkpCisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpICsg
Y29tcHV0ZUdhcChHYXBUeXBlOjpCZXR3ZWVuTGluZXMpICogKG51bUxpbmVzIC0gMSkpOworCiAg
ICAgdXBkYXRlTG9naWNhbEhlaWdodCgpOwotICAgIHJlcG9zaXRpb25Mb2dpY2FsSGVpZ2h0RGVw
ZW5kZW50RmxleEl0ZW1zKGxpbmVDb250ZXh0cyk7CisgICAgcmVwb3NpdGlvbkxvZ2ljYWxIZWln
aHREZXBlbmRlbnRGbGV4SXRlbXMobGluZUNvbnRleHRzLCBnYXBCZXR3ZWVuTGluZXMpOwogfQog
CiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphdXRvTWFyZ2luT2Zmc2V0SW5NYWluQXhp
cyhjb25zdCBWZWN0b3I8RmxleEl0ZW0+JiBjaGlsZHJlbiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxl
RnJlZVNwYWNlKQpAQCAtMTU5Niw3ICsxNjE1LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6
aGFzUGVyY2VudEhlaWdodERlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpIGMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFu
ZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBWZWN0b3I8RmxleEl0
ZW0+JiBjaGlsZHJlbiwgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgVmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKQordm9pZCBSZW5k
ZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGlsZHJlbihMYXlvdXRVbml0JiBjcm9zc0F4
aXNPZmZzZXQsIFZlY3RvcjxGbGV4SXRlbT4mIGNoaWxkcmVuLCBMYXlvdXRVbml0IGF2YWlsYWJs
ZUZyZWVTcGFjZSwgYm9vbCByZWxheW91dENoaWxkcmVuLCBWZWN0b3I8TGluZUNvbnRleHQ+JiBs
aW5lQ29udGV4dHMsIExheW91dFVuaXQgZ2FwQmV0d2Vlbkl0ZW1zKQogewogICAgIENvbnRlbnRQ
b3NpdGlvbiBwb3NpdGlvbiA9IHN0eWxlKCkucmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9u
KGNvbnRlbnRBbGlnbm1lbnROb3JtYWxCZWhhdmlvcigpKTsKICAgICBDb250ZW50RGlzdHJpYnV0
aW9uIGRpc3RyaWJ1dGlvbiA9IHN0eWxlKCkucmVzb2x2ZWRKdXN0aWZ5Q29udGVudERpc3RyaWJ1
dGlvbihjb250ZW50QWxpZ25tZW50Tm9ybWFsQmVoYXZpb3IoKSk7CkBAIC0xNjgwLDcgKzE2OTks
NyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKExheW91
dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgVmVjdAogCiAgICAgICAgIGlmIChpICE9IGNoaWxkcmVu
LnNpemUoKSAtIDEpIHsKICAgICAgICAgICAgIC8vIFRoZSBsYXN0IGl0ZW0gZG9lcyBub3QgZ2V0
IGV4dHJhIHNwYWNlIGFkZGVkLgotICAgICAgICAgICAgbWFpbkF4aXNPZmZzZXQgKz0ganVzdGlm
eUNvbnRlbnRTcGFjZUJldHdlZW5DaGlsZHJlbihhdmFpbGFibGVGcmVlU3BhY2UsIGRpc3RyaWJ1
dGlvbiwgY2hpbGRyZW4uc2l6ZSgpKTsKKyAgICAgICAgICAgIG1haW5BeGlzT2Zmc2V0ICs9IGp1
c3RpZnlDb250ZW50U3BhY2VCZXR3ZWVuQ2hpbGRyZW4oYXZhaWxhYmxlRnJlZVNwYWNlLCBkaXN0
cmlidXRpb24sIGNoaWxkcmVuLnNpemUoKSkgKyBnYXBCZXR3ZWVuSXRlbXM7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIHBhZ2luYXRpb24uCkBAIC0xNzU4LDI0ICsx
Nzc3LDI1IEBAIHN0YXRpYyBMYXlvdXRVbml0IGFsaWduQ29udGVudFNwYWNlQmV0d2VlbkNoaWxk
cmVuKExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlCiAgICAgfQogICAgIHJldHVybiAwX2x1
OwogfQotICAgIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25GbGV4TGluZXMoVmVjdG9y
PExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKQorCit2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojph
bGlnbkZsZXhMaW5lcyhWZWN0b3I8TGluZUNvbnRleHQ+JiBsaW5lQ29udGV4dHMsIExheW91dFVu
aXQgZ2FwQmV0d2VlbkxpbmVzKQogewogICAgIGlmIChsaW5lQ29udGV4dHMuaXNFbXB0eSgpIHx8
ICFpc011bHRpbGluZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBDb250ZW50UG9zaXRpb24g
cG9zaXRpb24gPSBzdHlsZSgpLnJlc29sdmVkQWxpZ25Db250ZW50UG9zaXRpb24oY29udGVudEFs
aWdubWVudE5vcm1hbEJlaGF2aW9yKCkpOwogICAgIENvbnRlbnREaXN0cmlidXRpb24gZGlzdHJp
YnV0aW9uID0gc3R5bGUoKS5yZXNvbHZlZEFsaWduQ29udGVudERpc3RyaWJ1dGlvbihjb250ZW50
QWxpZ25tZW50Tm9ybWFsQmVoYXZpb3IoKSk7Ci0gICAgCi0gICAgaWYgKHBvc2l0aW9uID09IENv
bnRlbnRQb3NpdGlvbjo6RmxleFN0YXJ0KQorCisgICAgaWYgKHBvc2l0aW9uID09IENvbnRlbnRQ
b3NpdGlvbjo6RmxleFN0YXJ0ICYmICFnYXBCZXR3ZWVuTGluZXMpCiAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUNyb3NzQXhpc1NwYWNlID0gY3Jvc3NBeGlz
Q29udGVudEV4dGVudCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZUNvbnRleHRz
LnNpemUoKTsgKytpKQorCisgICAgc2l6ZV90IG51bUxpbmVzID0gbGluZUNvbnRleHRzLnNpemUo
KTsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUNyb3NzQXhpc1NwYWNlID0gY3Jvc3NBeGlzQ29u
dGVudEV4dGVudCgpIC0gKG51bUxpbmVzIC0gMSkgKiBnYXBCZXR3ZWVuTGluZXM7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1MaW5lczsgKytpKQogICAgICAgICBhdmFpbGFibGVDcm9z
c0F4aXNTcGFjZSAtPSBsaW5lQ29udGV4dHNbaV0uY3Jvc3NBeGlzRXh0ZW50OwotICAgIAotICAg
IExheW91dFVuaXQgbGluZU9mZnNldCA9IGluaXRpYWxBbGlnbkNvbnRlbnRPZmZzZXQoYXZhaWxh
YmxlQ3Jvc3NBeGlzU3BhY2UsIHBvc2l0aW9uLCBkaXN0cmlidXRpb24sIGxpbmVDb250ZXh0cy5z
aXplKCkpOwotICAgIGZvciAodW5zaWduZWQgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBs
aW5lQ29udGV4dHMuc2l6ZSgpOyArK2xpbmVOdW1iZXIpIHsKKworICAgIExheW91dFVuaXQgbGlu
ZU9mZnNldCA9IGluaXRpYWxBbGlnbkNvbnRlbnRPZmZzZXQoYXZhaWxhYmxlQ3Jvc3NBeGlzU3Bh
Y2UsIHBvc2l0aW9uLCBkaXN0cmlidXRpb24sIG51bUxpbmVzKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVtYmVyIDwgbnVtTGluZXM7ICsrbGluZU51bWJlcikgewog
ICAgICAgICBMaW5lQ29udGV4dCYgbGluZUNvbnRleHQgPSBsaW5lQ29udGV4dHNbbGluZU51bWJl
cl07CiAgICAgICAgIGxpbmVDb250ZXh0LmNyb3NzQXhpc09mZnNldCArPSBsaW5lT2Zmc2V0Owog
ICAgICAgICBmb3IgKHNpemVfdCBjaGlsZE51bWJlciA9IDA7IGNoaWxkTnVtYmVyIDwgbGluZUNv
bnRleHQuZmxleEl0ZW1zLnNpemUoKTsgKytjaGlsZE51bWJlcikgewpAQCAtMTc4NCw5ICsxODA0
LDkgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25GbGV4TGluZXMoVmVjdG9yPExpbmVD
b250ZXh0PiYgbGluZUNvbnRleHRzKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
ZGlzdHJpYnV0aW9uID09IENvbnRlbnREaXN0cmlidXRpb246OlN0cmV0Y2ggJiYgYXZhaWxhYmxl
Q3Jvc3NBeGlzU3BhY2UgPiAwKQotICAgICAgICAgICAgbGluZUNvbnRleHRzW2xpbmVOdW1iZXJd
LmNyb3NzQXhpc0V4dGVudCArPSBhdmFpbGFibGVDcm9zc0F4aXNTcGFjZSAvIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsaW5lQ29udGV4dHMuc2l6ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIGxpbmVP
ZmZzZXQgKz0gYWxpZ25Db250ZW50U3BhY2VCZXR3ZWVuQ2hpbGRyZW4oYXZhaWxhYmxlQ3Jvc3NB
eGlzU3BhY2UsIGRpc3RyaWJ1dGlvbiwgbGluZUNvbnRleHRzLnNpemUoKSk7CisgICAgICAgICAg
ICBsaW5lQ29udGV4dHNbbGluZU51bWJlcl0uY3Jvc3NBeGlzRXh0ZW50ICs9IGF2YWlsYWJsZUNy
b3NzQXhpc1NwYWNlIC8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bUxpbmVzKTsKKworICAgICAg
ICBsaW5lT2Zmc2V0ICs9IGFsaWduQ29udGVudFNwYWNlQmV0d2VlbkNoaWxkcmVuKGF2YWlsYWJs
ZUNyb3NzQXhpc1NwYWNlLCBkaXN0cmlidXRpb24sIG51bUxpbmVzKSArIGdhcEJldHdlZW5MaW5l
czsKICAgICB9CiB9CiAgICAgCkBAIC0xOTQ5LDQgKzE5NjksMTUgQEAgYm9vbCBSZW5kZXJGbGV4
aWJsZUJveDo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4g
aXNIb3Jpem9udGFsRmxvdygpOwogfQogCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpj
b21wdXRlR2FwKFJlbmRlckZsZXhpYmxlQm94OjpHYXBUeXBlIGdhcFR5cGUpIGNvbnN0Cit7Cisg
ICAgLy8gcm93LWdhcCBpcyB1c2VkIGZvciBnYXBzIGJldHdlZW4gZmxleCBpdGVtcyBpbiBjb2x1
bW4gZmxvd3Mgb3IgZm9yIGdhcHMgYmV0d2VlbiBsaW5lcyBpbiByb3cgZmxvd3MuCisgICAgYm9v
bCB1c2VzUm93R2FwID0gKGdhcFR5cGUgPT0gR2FwVHlwZTo6QmV0d2Vlbkl0ZW1zKSA9PSBpc0Nv
bHVtbkZsb3coKTsKKyAgICBhdXRvJiBnYXBMZW5ndGggPSB1c2VzUm93R2FwID8gc3R5bGUoKS5y
b3dHYXAoKSA6IHN0eWxlKCkuY29sdW1uR2FwKCk7CisgICAgaWYgKExJS0VMWShnYXBMZW5ndGgu
aXNOb3JtYWwoKSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGF2YWlsYWJsZVNp
emUgPSB1c2VzUm93R2FwID8gYXZhaWxhYmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21w
dXRhdGlvbigpLnZhbHVlT3IoMF9sdSkgOiBjb250ZW50TG9naWNhbFdpZHRoKCk7CisgICAgcmV0
dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChnYXBMZW5ndGgubGVuZ3RoKCksIGF2YWlsYWJsZVNp
emUpOworfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aAppbmRleCAzZDA3ZTAyNTY4ZjE4OTk4OTU4YmEyMjU4YzNmZWYxMDY0ZmVmYjY2Li44ZjZkZDI3
NGRjMWIzZmM2Yzk2ZDA1NmI2MzI1Nzg5YzQ0NWI2NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVBdXRvTWFyZ2luc0luTWFpbkF4aXMoUmVuZGVyQm94JiBjaGlsZCwg
TGF5b3V0VW5pdCBhdXRvTWFyZ2luT2Zmc2V0KTsKICAgICBib29sIGhhc0F1dG9NYXJnaW5zSW5D
cm9zc0F4aXMoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCB1cGRhdGVB
dXRvTWFyZ2luc0luQ3Jvc3NBeGlzKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgYXZhaWxh
YmxlQWxpZ25tZW50U3BhY2UpOwotICAgIHZvaWQgcmVwb3NpdGlvbkxvZ2ljYWxIZWlnaHREZXBl
bmRlbnRGbGV4SXRlbXMoVmVjdG9yPExpbmVDb250ZXh0PiYpOworICAgIHZvaWQgcmVwb3NpdGlv
bkxvZ2ljYWxIZWlnaHREZXBlbmRlbnRGbGV4SXRlbXMoVmVjdG9yPExpbmVDb250ZXh0PiYsIExh
eW91dFVuaXQgZ2FwQmV0d2VlbkxpbmVzKTsKICAgICBMYXlvdXRVbml0IGNsaWVudExvZ2ljYWxC
b3R0b21BZnRlclJlcG9zaXRpb25pbmcoKTsKICAgICAKICAgICBMYXlvdXRVbml0IGF2YWlsYWJs
ZUFsaWdubWVudFNwYWNlRm9yQ2hpbGQoTGF5b3V0VW5pdCBsaW5lQ3Jvc3NBeGlzRXh0ZW50LCBj
b25zdCBSZW5kZXJCb3gmIGNoaWxkKTsKQEAgLTE4MCw5ICsxODAsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVzZXRBdXRvTWFyZ2luc0FuZExvZ2ljYWxUb3BJbkNyb3NzQXhpcyhSZW5kZXJCb3gm
IGNoaWxkKTsKICAgICB2b2lkIHNldE92ZXJyaWRlTWFpbkF4aXNDb250ZW50U2l6ZUZvckNoaWxk
KFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgY2hpbGRQcmVmZXJyZWRTaXplKTsKICAgICB2
b2lkIHByZXBhcmVDaGlsZEZvclBvc2l0aW9uZWRMYXlvdXQoUmVuZGVyQm94JiBjaGlsZCk7Ci0g
ICAgdm9pZCBsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNl
dCwgVmVjdG9yPEZsZXhJdGVtPiYsIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIFZlY3RvcjxMaW5lQ29udGV4dD4mKTsKKyAgICB2b2lkIGxheW91
dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBWZWN0b3I8Rmxl
eEl0ZW0+JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgVmVjdG9yPExpbmVDb250ZXh0PiYsIExheW91dFVuaXQgZ2FwQmV0d2Vlbkl0ZW1zKTsK
ICAgICB2b2lkIGxheW91dENvbHVtblJldmVyc2UoY29uc3QgVmVjdG9yPEZsZXhJdGVtPiYsIExh
eW91dFVuaXQgY3Jvc3NBeGlzT2Zmc2V0LCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSk7
Ci0gICAgdm9pZCBhbGlnbkZsZXhMaW5lcyhWZWN0b3I8TGluZUNvbnRleHQ+Jik7CisgICAgdm9p
ZCBhbGlnbkZsZXhMaW5lcyhWZWN0b3I8TGluZUNvbnRleHQ+JiwgTGF5b3V0VW5pdCBnYXBCZXR3
ZWVuTGluZXMpOwogICAgIHZvaWQgYWxpZ25DaGlsZHJlbihjb25zdCBWZWN0b3I8TGluZUNvbnRl
eHQ+Jik7CiAgICAgdm9pZCBhcHBseVN0cmV0Y2hBbGlnbm1lbnRUb0NoaWxkKFJlbmRlckJveCYg
Y2hpbGQsIExheW91dFVuaXQgbGluZUNyb3NzQXhpc0V4dGVudCk7CiAgICAgdm9pZCBmbGlwRm9y
UmlnaHRUb0xlZnRDb2x1bW4oY29uc3QgVmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRz
KTsKQEAgLTE5Myw2ICsxOTMsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNQZXJjZW50SGVp
Z2h0RGVzY2VuZGFudHMoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CiAKKyAgICBlbnVtIGNsYXNz
IEdhcFR5cGUgeyBCZXR3ZWVuTGluZXMsIEJldHdlZW5JdGVtcyB9OworICAgIExheW91dFVuaXQg
Y29tcHV0ZUdhcChHYXBUeXBlKSBjb25zdDsKKwogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjYWNo
ZSB0aGUgcHJlZmVycmVkIHNpemUgZm9yIG9ydGhvZ29uYWwgZmxvdyBjaGlsZHJlbiBzbyB3ZQog
ICAgIC8vIGRvbid0IGhhdmUgdG8gcmVsYXlvdXQgdG8gZ2V0IGl0CiAgICAgSGFzaE1hcDxjb25z
dCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBtX2ludHJpbnNpY1NpemVBbG9uZ01haW5BeGlzOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDEzODVhOTFmZDIyZWMyNWQ1YjY4ZmQ4NjBhNDQ4Y2QwMTllYmZlN2QuLjM5ZTgxZDEx
ODVhYTE0OGE1Njk3OGQxMDA1MDM1ODljM2Y2Y2VhOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMC0wOS0yMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbY3NzLWZsZXhib3hdIEltcGxlbWVudCByb3ctZ2FwIGFuZCBjb2x1bW4tZ2FwIGZv
ciBmbGV4IGxheW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA2NzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBVbnNraXAgYWxsIGZsZXggZ2FwIHRlc3RzIHRoYXQg
YXJlIHBhc3Npbmcgbm93LgorCiAyMDIwLTA5LTI3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmVzeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy90
aGUtaWZyYW1lLWVsZW1lbnQgZnJvbSB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKaW5kZXggN2E0NWQwZGExZjU3NjJmM2E4MDY4ODE0Njc5NjlhZGMzYzE4NjAzNS4uYzFmODg3
MjlmNTlhNDc5YTIzNzliOTc5ZGFjNzc0NWUzYWU2N2Y2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDktMjEgIFNlcmdpbyBWaWxsYXIgU2Vu
aW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1mbGV4Ym94XSBJbXBsZW1l
bnQgcm93LWdhcCBhbmQgY29sdW1uLWdhcCBmb3IgZmxleCBsYXlvdXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjc2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZmxleGJveC9nYXAtMDE3LWV4cGVjdGVkLnR4dDogUmVwbGFjZWQgRkFJTCBieSBQQVNT
IGV4cGVjdGF0aW9uLgorCiAyMDIwLTA5LTI3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+
CiAKICAgICAgICAgUmVzeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy90aGUt
aWZyYW1lLWVsZW1lbnQgZnJvbSB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjgwOTUz
YmQ5ZTg4NjQ1NjlkY2UyNGNhZTU2ZDg3YWIyYTAwMmViNS4uYTk2MzkyYWEyOTE1NTNlMDc3NjNh
M2ZjYTI3NzE5YTAyOTVhMDFkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zODU2LDQ0ICszODU2
LDYgQEAgd2Via2l0Lm9yZy9iLzIwOTA4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3Mtd3JpdGluZy1tb2Rlcy92ZXJ0aWMKIHdlYmtpdC5vcmcvYi8yMDkwODAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXdyaXRpbmctbW9kZXMvdmVydGljYWwt
YWxpZ25tZW50LXNybC0wNDAueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcv
Yi8xNDUxNzYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gv
ZmxleGJveF9hbGlnbi1pdGVtcy1zdHJldGNoLTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZmxleGJveC9mbGV4Ym94LWdhcC1wb3NpdGlvbi1hYnNvbHV0ZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDEtbHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZmxleGJveC9nYXAtMDAxLWx0ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1m
bGV4Ym94L2dhcC0wMDEtcmwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9n
YXAtMDAxLXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDIt
bHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDAyLWx0ci5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDItcmwuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDAyLXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDMtbHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZmxleGJveC9nYXAtMDAzLWx0ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4
Ym94L2dhcC0wMDMtcmwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIw
Njc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAt
MDAzLXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDQtbHIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA0LWx0ci5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDQtcmwuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA0LXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDUtbHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
ZmxleGJveC9nYXAtMDA1LWx0ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94
L2dhcC0wMDUtcmwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA1
LXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDYtbHIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA2LWx0ci5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDYtcmwuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA2LXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1mbGV4Ym94L2dhcC0wMDctbHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxl
eGJveC9nYXAtMDA3LWx0ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dh
cC0wMDctcmwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA3LXJ0
bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDgtbHRyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwOS1sdHIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDEwLWx0ci5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
ZmxleGJveC9nYXAtMDEyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2Fw
LTAxMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMTQuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDE1Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAxNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMjA5NjQ5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1mbGV4Ym94L3BhZGRpbmctb3ZlcmZsb3ctY3Jhc2guaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIxMDA5MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZmxleGJveC9zZWxlY3QtZWxlbWVudC16ZXJvLWhlaWdodC0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxMDA5MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9zZWxlY3QtZWxlbWVudC16ZXJvLWhlaWdodC0wMDIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAxNy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZmxleGJveC9nYXAtMDE3LWV4cGVjdGVkLnR4dAppbmRleCA2YzgwNmM5MjIzMGE4OGVhZmMx
OGFmNTEyMGRkMjM5MWM2MGQ2ZDgyLi5lYTg1OTAxYjNjOTUzNzNjMjlmMDBiMTQzM2RmMTc4MDRm
YTJhMTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDE3LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAt
MDE3LWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDQgQEAKIAogCi1GQUlMIC5idXR0b24gMSBhc3Nl
cnRfZXF1YWxzOgotPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MTAwIj4KLSAgPGRpdiBjbGFzcz0iaXRlbSI+PC9kaXY+Ci0gIDxkaXYgY2xhc3M9Iml0ZW0iPjwv
ZGl2PgotPC9idXR0b24+Ci1oZWlnaHQgZXhwZWN0ZWQgMTAwIGJ1dCBnb3QgODAKK1BBU1MgLmJ1
dHRvbiAxIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410109</attachid>
            <date>2020-09-30 05:25:04 -0700</date>
            <delta_ts>2020-09-30 05:49:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206767-20200930142502.patch</filename>
            <type>text/plain</type>
            <size>24856</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM3NDdmNTg1MzIxZmE4
OTQzNTFlNTA5NzdhZmVlMzI2ZTVjNjYyNS4uZjBhZjcwNmIyYTBhMzE1ZjJmMmU5YjAzYTAxMTZl
ZDAyOTQ4MjgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA5LTIxICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gSW1wbGVtZW50IHJvdy1nYXAgYW5kIGNvbHVtbi1nYXAgZm9yIGZsZXggbGF5b3V0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY3NjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
cm93L2NvbHVtbi1nYXAgZm9yIGZsZXhib3hlcyB3aGljaCBhbGxvdyBhdXRob3JzIHRvIGRlZmlu
ZSBndXR0ZXJzIGJldHdlZW4gZmxleCBpdGVtcyBhbmQgYWxzbyBiZXR3ZWVuIGZsZXggbGluZXMu
CisKKyAgICAgICAgSW5zcGlyZWQgYnkgQmxpbmsncyBjcnJldi5jb20vYy8yMTYyMTQ5IGFuZCBj
cnJldi5jb20vYy8yMTcyNzU4IGJ5IDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICAq
IHJlbmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
bGV4TGF5b3V0QWxnb3JpdGhtOjpGbGV4TGF5b3V0QWxnb3JpdGhtKTogVGFrZXMgdHdvIG5ldyBw
YXJhbWV0ZXJzIHdpdGggcm93L2NvbHVtbiBnYXAgbGVuZ3Rocy4KKyAgICAgICAgKFdlYkNvcmU6
OkZsZXhMYXlvdXRBbGdvcml0aG06OmNvbXB1dGVOZXh0RmxleExpbmUpOiBBZGQgZ2FwcyB0byBo
eXBvdGhldGljYWwgYW5kIGZsZXggYmFzZSBzaXplcyBpbiBiZXR3ZWVuIGl0ZW1zLgorICAgICAg
ICAqIHJlbmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRobS5oOiBBZGRlZCB0d28gbmV3IGF0dHJp
YnV0ZXMgdG8gc3RvcmUgZ2Fwcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KTogQWRkIGdhcHMgdG8gdGhlIGludHJpbnNpYyB3aWR0
aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpyZXBvc2l0aW9uTG9naWNh
bEhlaWdodERlcGVuZGVudEZsZXhJdGVtcyk6IFRha2UgZ2FwIGJldHdlZW4gbGluZXMgYXMgYXJn
dW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0RmxleEl0
ZW1zKTogVGFrZSBnYXAgYmV0d2VlbiBsaW5lcyBhcyBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKTogQ29tcHV0ZSBn
YXBzIHRvIHJlZHVjZSB0aGUgcmVtYWluaW5nIGZyZWUgc3BhY2UuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25GbGV4TGluZXMpOiBBZGQgZ2FwIGJldHdlZW4gbGlu
ZXMgdG8gdGhlIGxpbmUgb2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVC
b3g6OmNvbXB1dGVHYXAgY29uc3QpOiBSZXR1cm5zIGVpdGhlciB0aGUgcm93LWdhcCBvciB0aGUg
Y29sdW1uLWdhcCBkZXBlbmRpbmcgb24gdGhlIGZsZXggZGlyZWN0aW9uLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oOgorCiAyMDIwLTA5LTI5ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIHVzZSBPcGVyYXRpb25QdHJU
YWcgZm9yIGFsbCBvcGVyYXRpb25zIGFuZCBhbm5vdGF0ZSBvcGVyYXRpb25zIGluIENTUyBKSVQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRo
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxleGlibGVCb3hBbGdvcml0aG0uY3Bw
CmluZGV4IDAxMzdmZDRiNGMxMDA3NzNkZjhkN2I0MTU4ZTdhNmI3OGExOWQxZTEuLjg0NDY2NzJj
Mjg2N2Y5ZmMxNDNlOTU2MmRkNmRlY2Y5Y2ZlNjM4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZsZXhpYmxlQm94QWxnb3JpdGhtLmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBA
IEZsZXhJdGVtOjpGbGV4SXRlbShSZW5kZXJCb3gmIGJveCwgTGF5b3V0VW5pdCBmbGV4QmFzZUNv
bnRlbnRTaXplLCBMYXlvdXRVbml0IGh5CiAgICAgQVNTRVJUKCFib3guaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpOwogfQogCi1GbGV4TGF5b3V0QWxnb3JpdGhtOjpGbGV4TGF5b3V0QWxnb3JpdGht
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgTGF5b3V0VW5pdCBsaW5lQnJlYWtMZW5ndGgsIGNv
bnN0IFZlY3RvcjxGbGV4SXRlbT4mIGFsbEl0ZW1zKQorRmxleExheW91dEFsZ29yaXRobTo6Rmxl
eExheW91dEFsZ29yaXRobShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIExheW91dFVuaXQgbGlu
ZUJyZWFrTGVuZ3RoLCBjb25zdCBWZWN0b3I8RmxleEl0ZW0+JiBhbGxJdGVtcywgTGF5b3V0VW5p
dCBnYXBCZXR3ZWVuSXRlbXMsIExheW91dFVuaXQgZ2FwQmV0d2VlbkxpbmVzKQogICAgIDogbV9z
dHlsZShzdHlsZSkKICAgICAsIG1fbGluZUJyZWFrTGVuZ3RoKGxpbmVCcmVha0xlbmd0aCkKICAg
ICAsIG1fYWxsSXRlbXMoYWxsSXRlbXMpCisgICAgLCBtX2dhcEJldHdlZW5JdGVtcyhnYXBCZXR3
ZWVuSXRlbXMpCisgICAgLCBtX2dhcEJldHdlZW5MaW5lcyhnYXBCZXR3ZWVuTGluZXMpCiB7CiB9
CiAKQEAgLTYwLDIxICs2MiwyNiBAQCBib29sIEZsZXhMYXlvdXRBbGdvcml0aG06OmNvbXB1dGVO
ZXh0RmxleExpbmUoc2l6ZV90JiBuZXh0SW5kZXgsIFZlY3RvcjxGbGV4SXRlbQogICAgIHRvdGFs
RmxleEdyb3cgPSB0b3RhbEZsZXhTaHJpbmsgPSB0b3RhbFdlaWdodGVkRmxleFNocmluayA9IDA7
CiAgICAgc3VtSHlwb3RoZXRpY2FsTWFpblNpemUgPSAwX2x1OwogCi0gICAgYm9vbCBsaW5lSGFz
SW5GbG93SXRlbSA9IGZhbHNlOwotCiAgICAgZm9yICg7IG5leHRJbmRleCA8IG1fYWxsSXRlbXMu
c2l6ZSgpOyArK25leHRJbmRleCkgewogICAgICAgICBjb25zdCBhdXRvJiBmbGV4SXRlbSA9IG1f
YWxsSXRlbXNbbmV4dEluZGV4XTsKICAgICAgICAgQVNTRVJUKCFmbGV4SXRlbS5ib3guaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgICAgICBpZiAoaXNNdWx0aWxpbmUoKSAmJiBzdW1IeXBv
dGhldGljYWxNYWluU2l6ZSArIGZsZXhJdGVtLmh5cG90aGV0aWNhbE1haW5BeGlzTWFyZ2luQm94
U2l6ZSgpID4gbV9saW5lQnJlYWtMZW5ndGggJiYgbGluZUhhc0luRmxvd0l0ZW0pCisgICAgICAg
IGlmIChpc011bHRpbGluZSgpICYmIHN1bUh5cG90aGV0aWNhbE1haW5TaXplICsgZmxleEl0ZW0u
aHlwb3RoZXRpY2FsTWFpbkF4aXNNYXJnaW5Cb3hTaXplKCkgPiBtX2xpbmVCcmVha0xlbmd0aCAm
JiAhbGluZUl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBsaW5l
SXRlbXMuYXBwZW5kKGZsZXhJdGVtKTsKLSAgICAgICAgbGluZUhhc0luRmxvd0l0ZW0gPSB0cnVl
OwotICAgICAgICBzdW1GbGV4QmFzZVNpemUgKz0gZmxleEl0ZW0uZmxleEJhc2VNYXJnaW5Cb3hT
aXplKCk7CisgICAgICAgIHN1bUZsZXhCYXNlU2l6ZSArPSBmbGV4SXRlbS5mbGV4QmFzZU1hcmdp
bkJveFNpemUoKSArIG1fZ2FwQmV0d2Vlbkl0ZW1zOwogICAgICAgICB0b3RhbEZsZXhHcm93ICs9
IGZsZXhJdGVtLmJveC5zdHlsZSgpLmZsZXhHcm93KCk7CiAgICAgICAgIHRvdGFsRmxleFNocmlu
ayArPSBmbGV4SXRlbS5ib3guc3R5bGUoKS5mbGV4U2hyaW5rKCk7CiAgICAgICAgIHRvdGFsV2Vp
Z2h0ZWRGbGV4U2hyaW5rICs9IGZsZXhJdGVtLmJveC5zdHlsZSgpLmZsZXhTaHJpbmsoKSAqIGZs
ZXhJdGVtLmZsZXhCYXNlQ29udGVudFNpemU7Ci0gICAgICAgIHN1bUh5cG90aGV0aWNhbE1haW5T
aXplICs9IGZsZXhJdGVtLmh5cG90aGV0aWNhbE1haW5BeGlzTWFyZ2luQm94U2l6ZSgpOworICAg
ICAgICBzdW1IeXBvdGhldGljYWxNYWluU2l6ZSArPSBmbGV4SXRlbS5oeXBvdGhldGljYWxNYWlu
QXhpc01hcmdpbkJveFNpemUoKSArIG1fZ2FwQmV0d2Vlbkl0ZW1zOworICAgIH0KKworICAgIGlm
ICghbGluZUl0ZW1zLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSBhZGRlZCBhIGdhcCBhZnRl
ciBldmVyeSBpdGVtIGJ1dCB0aGVyZSBzaG91bGRuJ3QgYmUgb25lIGFmdGVyIHRoZSBsYXN0IGl0
ZW0sIHNvIHN1YnRyYWN0IGl0IGhlcmUuIE5vdGUgdGhhdAorICAgICAgICAvLyBzdW1zIG1pZ2h0
IGJlIG5lZ2F0aXZlIGhlcmUgZHVlIHRvIG5lZ2F0aXZlIG1hcmdpbnMgaW4gZmxleCBpdGVtcy4K
KyAgICAgICAgc3VtSHlwb3RoZXRpY2FsTWFpblNpemUgLT0gbV9nYXBCZXR3ZWVuSXRlbXM7Cisg
ICAgICAgIHN1bUZsZXhCYXNlU2l6ZSAtPSBtX2dhcEJldHdlZW5JdGVtczsKICAgICB9CisKICAg
ICBBU1NFUlQobGluZUl0ZW1zLnNpemUoKSA+IDAgfHwgbmV4dEluZGV4ID09IG1fYWxsSXRlbXMu
c2l6ZSgpKTsKICAgICByZXR1cm4gbGluZUl0ZW1zLnNpemUoKSA+IDA7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxleGlibGVCb3hBbGdvcml0aG0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GbGV4aWJsZUJveEFsZ29yaXRobS5oCmluZGV4IDk0MTY5MTlm
OGFiNTI4ZDI2ODAwYzVjOWJlMDdkYzc2ODc2MGMwMzAuLjQwMGFmYzkzMDVkMGNjMTRiMTk1NzAz
NzBjMGMyMTM0OTA2NjViMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
bGV4aWJsZUJveEFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbGV4
aWJsZUJveEFsZ29yaXRobS5oCkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIEZsZXhMYXlvdXRBbGdv
cml0aG0gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZsZXhMYXlvdXRBbGdvcml0aG0pOwog
CiBwdWJsaWM6Ci0gICAgRmxleExheW91dEFsZ29yaXRobShjb25zdCBSZW5kZXJTdHlsZSYsIExh
eW91dFVuaXQgbGluZUJyZWFrTGVuZ3RoLCBjb25zdCBWZWN0b3I8RmxleEl0ZW0+JiBhbGxJdGVt
cyk7CisgICAgRmxleExheW91dEFsZ29yaXRobShjb25zdCBSZW5kZXJTdHlsZSYsIExheW91dFVu
aXQgbGluZUJyZWFrTGVuZ3RoLCBjb25zdCBWZWN0b3I8RmxleEl0ZW0+JiBhbGxJdGVtcywgTGF5
b3V0VW5pdCBnYXBCZXR3ZWVuSXRlbXMsIExheW91dFVuaXQgZ2FwQmV0d2VlbkxpbmVzKTsKIAog
ICAgIC8vIFRoZSBoeXBvdGhldGljYWwgbWFpbiBzaXplIG9mIGFuIGl0ZW0gaXMgdGhlIGZsZXgg
YmFzZSBzaXplIGNsYW1wZWQKICAgICAvLyBhY2NvcmRpbmcgdG8gaXRzIG1pbiBhbmQgbWF4IG1h
aW4gc2l6ZSBwcm9wZXJ0aWVzCkBAIC04Myw2ICs4Myw5IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
UmVuZGVyU3R5bGUmIG1fc3R5bGU7CiAgICAgTGF5b3V0VW5pdCBtX2xpbmVCcmVha0xlbmd0aDsK
ICAgICBjb25zdCBWZWN0b3I8RmxleEl0ZW0+JiBtX2FsbEl0ZW1zOworCisgICAgY29uc3QgTGF5
b3V0VW5pdCBtX2dhcEJldHdlZW5JdGVtczsKKyAgICBjb25zdCBMYXlvdXRVbml0IG1fZ2FwQmV0
d2VlbkxpbmVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggZjJjZWIwYjgyOTFhOTA2
Y2VmYjdlMTNiYWE5MGVkY2FkMzI1YWRiZi4uM2JiYmNlMjJlMDI0YTQwMDU5ZmNiOGEwNDI4ZTZj
ZTIwYzNjOTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCkBAIC05MSwxMCArOTEsMTIgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHQKICAg
ICAvLyBob25vcmluZyBpdCB0aG91Z2ggdW50aWwgdGhlIGZsZXggc2hvcnRoYW5kIHN0b3BzIHNl
dHRpbmcgaXQgdG8gMC4gU2VlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNjExNyBhbmQKICAgICAvLyBodHRwczovL2NyYnVnLmNvbS8yNDA3NjUuCisg
ICAgc2l6ZV90IG51bUl0ZW1zV2l0aE5vcm1hbExheW91dCA9IDA7CiAgICAgZm9yIChSZW5kZXJC
b3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmdCb3goKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
IHx8IGNoaWxkLT5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIAorICAgICAgICArK251bUl0ZW1zV2l0aE5vcm1hbExheW91dDsKKwog
ICAgICAgICBMYXlvdXRVbml0IG1hcmdpbiA9IG1hcmdpbkludHJpbnNpY0xvZ2ljYWxXaWR0aEZv
ckNoaWxkKCpjaGlsZCk7CiAgICAgICAgIAogICAgICAgICBMYXlvdXRVbml0IG1pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aDsKQEAgLTExNyw3ICsxMTksMTQgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJv
eDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdp
ZHQKICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwor
ICAgIGlmICghaXNDb2x1bW5GbG93KCkgJiYgbnVtSXRlbXNXaXRoTm9ybWFsTGF5b3V0ID4gMSkg
eworICAgICAgICBMYXlvdXRVbml0IGlubGluZUdhcFNpemUgPSAobnVtSXRlbXNXaXRoTm9ybWFs
TGF5b3V0IC0gMSkgKiBjb21wdXRlR2FwKEdhcFR5cGU6OkJldHdlZW5JdGVtcyk7CisgICAgICAg
IG1heExvZ2ljYWxXaWR0aCArPSBpbmxpbmVHYXBTaXplOworICAgICAgICBpZiAoIWlzTXVsdGls
aW5lKCkpCisgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggKz0gaW5saW5lR2FwU2l6ZTsKKyAg
ICB9CisKICAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtaW5Mb2dpY2FsV2lkdGgsIG1h
eExvZ2ljYWxXaWR0aCk7CiAgICAgCiAgICAgLy8gRHVlIHRvIG5lZ2F0aXZlIG1hcmdpbnMsIGl0
IGlzIHBvc3NpYmxlIHRoYXQgd2UgY2FsY3VsYXRlZCBhIG5lZ2F0aXZlCkBAIC0zNDUsNyArMzU0
LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6cGFpbnRDaGlsZHJlbihQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHAKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6OnJlcG9zaXRpb25Mb2dpY2FsSGVpZ2h0RGVwZW5kZW50RmxleEl0ZW1zKFZlY3Rv
cjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cykKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnJl
cG9zaXRpb25Mb2dpY2FsSGVpZ2h0RGVwZW5kZW50RmxleEl0ZW1zKFZlY3RvcjxMaW5lQ29udGV4
dD4mIGxpbmVDb250ZXh0cywgTGF5b3V0VW5pdCBnYXBCZXR3ZWVuTGluZXMpCiB7CiAgICAgTGF5
b3V0VW5pdCBjcm9zc0F4aXNTdGFydEVkZ2UgPSBsaW5lQ29udGV4dHMuaXNFbXB0eSgpID8gMF9s
dSA6IGxpbmVDb250ZXh0c1swXS5jcm9zc0F4aXNPZmZzZXQ7CiAgICAgLy8gSWYgd2UgaGF2ZSBh
IHNpbmdsZSBsaW5lIGZsZXhib3gsIHRoZSBsaW5lIGhlaWdodCBpcyBhbGwgdGhlIGF2YWlsYWJs
ZSBzcGFjZS4gRm9yIGZsZXgtZGlyZWN0aW9uOiByb3csCkBAIC0zNTMsOCArMzYyLDggQEAgdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6cmVwb3NpdGlvbkxvZ2ljYWxIZWlnaHREZXBlbmRlbnRGbGV4
SXRlbXMoVmVjdG9yPExpbmVDb24KICAgICBpZiAoIWlzTXVsdGlsaW5lKCkgJiYgIWxpbmVDb250
ZXh0cy5pc0VtcHR5KCkpCiAgICAgICAgIGxpbmVDb250ZXh0c1swXS5jcm9zc0F4aXNFeHRlbnQg
PSBjcm9zc0F4aXNDb250ZW50RXh0ZW50KCk7CiAKLSAgICBhbGlnbkZsZXhMaW5lcyhsaW5lQ29u
dGV4dHMpOwotICAgIAorICAgIGFsaWduRmxleExpbmVzKGxpbmVDb250ZXh0cywgZ2FwQmV0d2Vl
bkxpbmVzKTsKKwogICAgIGFsaWduQ2hpbGRyZW4obGluZUNvbnRleHRzKTsKICAgICAKICAgICBp
ZiAoc3R5bGUoKS5mbGV4V3JhcCgpID09IEZsZXhXcmFwOjpSZXZlcnNlKQpAQCAtOTAwLDExICs5
MDksMTUgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKICAgICBtX2hhc0RlZmluaXRlSGVpZ2h0ID0gU2l6ZURlZmluaXRlbmVz
czo6VW5rbm93bjsKICAgICAKICAgICBjb25zdCBMYXlvdXRVbml0IGxpbmVCcmVha0xlbmd0aCA9
IG1haW5BeGlzQ29udGVudEV4dGVudChMYXlvdXRVbml0OjptYXgoKSk7Ci0gICAgRmxleExheW91
dEFsZ29yaXRobSBmbGV4QWxnb3JpdGhtKHN0eWxlKCksIGxpbmVCcmVha0xlbmd0aCwgYWxsSXRl
bXMpOworICAgIExheW91dFVuaXQgZ2FwQmV0d2Vlbkl0ZW1zID0gY29tcHV0ZUdhcChHYXBUeXBl
OjpCZXR3ZWVuSXRlbXMpOworICAgIExheW91dFVuaXQgZ2FwQmV0d2VlbkxpbmVzID0gY29tcHV0
ZUdhcChHYXBUeXBlOjpCZXR3ZWVuTGluZXMpOworICAgIEZsZXhMYXlvdXRBbGdvcml0aG0gZmxl
eEFsZ29yaXRobShzdHlsZSgpLCBsaW5lQnJlYWtMZW5ndGgsIGFsbEl0ZW1zLCBnYXBCZXR3ZWVu
SXRlbXMsIGdhcEJldHdlZW5MaW5lcyk7CiAgICAgTGF5b3V0VW5pdCBjcm9zc0F4aXNPZmZzZXQg
PSBmbG93QXdhcmVCb3JkZXJCZWZvcmUoKSArIGZsb3dBd2FyZVBhZGRpbmdCZWZvcmUoKTsKICAg
ICBWZWN0b3I8RmxleEl0ZW0+IGxpbmVJdGVtczsKICAgICBzaXplX3QgbmV4dEluZGV4ID0gMDsK
KyAgICBzaXplX3QgbnVtTGluZXMgPSAwOwogICAgIHdoaWxlIChmbGV4QWxnb3JpdGhtLmNvbXB1
dGVOZXh0RmxleExpbmUobmV4dEluZGV4LCBsaW5lSXRlbXMsIHN1bUZsZXhCYXNlU2l6ZSwgdG90
YWxGbGV4R3JvdywgdG90YWxGbGV4U2hyaW5rLCB0b3RhbFdlaWdodGVkRmxleFNocmluaywgc3Vt
SHlwb3RoZXRpY2FsTWFpblNpemUpKSB7CisgICAgICAgICsrbnVtTGluZXM7CiAgICAgICAgIExh
eW91dFVuaXQgY29udGFpbmVyTWFpbklubmVyU2l6ZSA9IG1haW5BeGlzQ29udGVudEV4dGVudChz
dW1IeXBvdGhldGljYWxNYWluU2l6ZSk7CiAgICAgICAgIC8vIGF2YWlsYWJsZUZyZWVTcGFjZSBp
cyB0aGUgaW5pdGlhbCBhbW91bnQgb2YgZnJlZSBzcGFjZSBpbiB0aGlzIGZsZXhib3guCiAgICAg
ICAgIC8vIHJlbWFpbmluZ0ZyZWVTcGFjZSBzdGFydHMgb3V0IGF0IHRoZSBzYW1lIHZhbHVlIGJ1
dCBhcyB3ZSBwbGFjZSBhbmQgbGF5CkBAIC05MjksOCArOTQyLDEwIEBAIHZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6OmxheW91dEZsZXhJdGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAg
ICAgICBBU1NFUlQoIWZsZXhJdGVtLmJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAgICAg
ICAgICAgICByZW1haW5pbmdGcmVlU3BhY2UgLT0gZmxleEl0ZW0uZmxleGVkTWFyZ2luQm94U2l6
ZSgpOwogICAgICAgICB9CisgICAgICAgIHJlbWFpbmluZ0ZyZWVTcGFjZSAtPSAobGluZUl0ZW1z
LnNpemUoKSAtIDEpICogZ2FwQmV0d2Vlbkl0ZW1zOworCiAgICAgICAgIC8vIFRoaXMgd2lsbCBz
dGQ6Om1vdmUgbGluZUl0ZW1zIGludG8gYSBuZXdseS1jcmVhdGVkIExpbmVDb250ZXh0LgotICAg
ICAgICBsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKGNyb3NzQXhpc09mZnNldCwgbGluZUl0ZW1zLCBy
ZW1haW5pbmdGcmVlU3BhY2UsIHJlbGF5b3V0Q2hpbGRyZW4sIGxpbmVDb250ZXh0cyk7CisgICAg
ICAgIGxheW91dEFuZFBsYWNlQ2hpbGRyZW4oY3Jvc3NBeGlzT2Zmc2V0LCBsaW5lSXRlbXMsIHJl
bWFpbmluZ0ZyZWVTcGFjZSwgcmVsYXlvdXRDaGlsZHJlbiwgbGluZUNvbnRleHRzLCBnYXBCZXR3
ZWVuSXRlbXMpOwogICAgIH0KIAogICAgIGlmIChoYXNMaW5lSWZFbXB0eSgpKSB7CkBAIC05NDIs
OSArOTU3LDEyIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJdGVtcyhib29s
IHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPCBtaW5IZWln
aHQpCiAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KG1pbkhlaWdodCk7CiAgICAgfQotICAg
IAorCisgICAgaWYgKCFpc0NvbHVtbkZsb3coKSAmJiBudW1MaW5lcyA+IDEpCisgICAgICAgIHNl
dExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpICsgY29tcHV0ZUdhcChHYXBUeXBlOjpCZXR3
ZWVuTGluZXMpICogKG51bUxpbmVzIC0gMSkpOworCiAgICAgdXBkYXRlTG9naWNhbEhlaWdodCgp
OwotICAgIHJlcG9zaXRpb25Mb2dpY2FsSGVpZ2h0RGVwZW5kZW50RmxleEl0ZW1zKGxpbmVDb250
ZXh0cyk7CisgICAgcmVwb3NpdGlvbkxvZ2ljYWxIZWlnaHREZXBlbmRlbnRGbGV4SXRlbXMobGlu
ZUNvbnRleHRzLCBnYXBCZXR3ZWVuTGluZXMpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94OjphdXRvTWFyZ2luT2Zmc2V0SW5NYWluQXhpcyhjb25zdCBWZWN0b3I8RmxleEl0ZW0+
JiBjaGlsZHJlbiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlKQpAQCAtMTU5Niw3ICsx
NjE0LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6aGFzUGVyY2VudEhlaWdodERlc2NlbmRh
bnRzKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpIGMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5p
dCYgY3Jvc3NBeGlzT2Zmc2V0LCBWZWN0b3I8RmxleEl0ZW0+JiBjaGlsZHJlbiwgTGF5b3V0VW5p
dCBhdmFpbGFibGVGcmVlU3BhY2UsIGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVmVjdG9yPExpbmVD
b250ZXh0PiYgbGluZUNvbnRleHRzKQordm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5k
UGxhY2VDaGlsZHJlbihMYXlvdXRVbml0JiBjcm9zc0F4aXNPZmZzZXQsIFZlY3RvcjxGbGV4SXRl
bT4mIGNoaWxkcmVuLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSwgYm9vbCByZWxheW91
dENoaWxkcmVuLCBWZWN0b3I8TGluZUNvbnRleHQ+JiBsaW5lQ29udGV4dHMsIExheW91dFVuaXQg
Z2FwQmV0d2Vlbkl0ZW1zKQogewogICAgIENvbnRlbnRQb3NpdGlvbiBwb3NpdGlvbiA9IHN0eWxl
KCkucmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKGNvbnRlbnRBbGlnbm1lbnROb3JtYWxC
ZWhhdmlvcigpKTsKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlvbiA9IHN0eWxl
KCkucmVzb2x2ZWRKdXN0aWZ5Q29udGVudERpc3RyaWJ1dGlvbihjb250ZW50QWxpZ25tZW50Tm9y
bWFsQmVoYXZpb3IoKSk7CkBAIC0xNjgwLDcgKzE2OTgsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxl
Qm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNldCwg
VmVjdAogCiAgICAgICAgIGlmIChpICE9IGNoaWxkcmVuLnNpemUoKSAtIDEpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBsYXN0IGl0ZW0gZG9lcyBub3QgZ2V0IGV4dHJhIHNwYWNlIGFkZGVkLgotICAg
ICAgICAgICAgbWFpbkF4aXNPZmZzZXQgKz0ganVzdGlmeUNvbnRlbnRTcGFjZUJldHdlZW5DaGls
ZHJlbihhdmFpbGFibGVGcmVlU3BhY2UsIGRpc3RyaWJ1dGlvbiwgY2hpbGRyZW4uc2l6ZSgpKTsK
KyAgICAgICAgICAgIG1haW5BeGlzT2Zmc2V0ICs9IGp1c3RpZnlDb250ZW50U3BhY2VCZXR3ZWVu
Q2hpbGRyZW4oYXZhaWxhYmxlRnJlZVNwYWNlLCBkaXN0cmlidXRpb24sIGNoaWxkcmVuLnNpemUo
KSkgKyBnYXBCZXR3ZWVuSXRlbXM7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogRGVh
bCB3aXRoIHBhZ2luYXRpb24uCkBAIC0xNzU4LDI0ICsxNzc2LDI1IEBAIHN0YXRpYyBMYXlvdXRV
bml0IGFsaWduQ29udGVudFNwYWNlQmV0d2VlbkNoaWxkcmVuKExheW91dFVuaXQgYXZhaWxhYmxl
RnJlZVNwYWNlCiAgICAgfQogICAgIHJldHVybiAwX2x1OwogfQotICAgIAotdm9pZCBSZW5kZXJG
bGV4aWJsZUJveDo6YWxpZ25GbGV4TGluZXMoVmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRl
eHRzKQorCit2b2lkIFJlbmRlckZsZXhpYmxlQm94OjphbGlnbkZsZXhMaW5lcyhWZWN0b3I8TGlu
ZUNvbnRleHQ+JiBsaW5lQ29udGV4dHMsIExheW91dFVuaXQgZ2FwQmV0d2VlbkxpbmVzKQogewog
ICAgIGlmIChsaW5lQ29udGV4dHMuaXNFbXB0eSgpIHx8ICFpc011bHRpbGluZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDb250ZW50UG9zaXRpb24gcG9zaXRpb24gPSBzdHlsZSgpLnJlc29s
dmVkQWxpZ25Db250ZW50UG9zaXRpb24oY29udGVudEFsaWdubWVudE5vcm1hbEJlaGF2aW9yKCkp
OwogICAgIENvbnRlbnREaXN0cmlidXRpb24gZGlzdHJpYnV0aW9uID0gc3R5bGUoKS5yZXNvbHZl
ZEFsaWduQ29udGVudERpc3RyaWJ1dGlvbihjb250ZW50QWxpZ25tZW50Tm9ybWFsQmVoYXZpb3Io
KSk7Ci0gICAgCi0gICAgaWYgKHBvc2l0aW9uID09IENvbnRlbnRQb3NpdGlvbjo6RmxleFN0YXJ0
KQorCisgICAgaWYgKHBvc2l0aW9uID09IENvbnRlbnRQb3NpdGlvbjo6RmxleFN0YXJ0ICYmICFn
YXBCZXR3ZWVuTGluZXMpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBMYXlvdXRVbml0IGF2
YWlsYWJsZUNyb3NzQXhpc1NwYWNlID0gY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZUNvbnRleHRzLnNpemUoKTsgKytpKQorCisgICAgc2l6
ZV90IG51bUxpbmVzID0gbGluZUNvbnRleHRzLnNpemUoKTsKKyAgICBMYXlvdXRVbml0IGF2YWls
YWJsZUNyb3NzQXhpc1NwYWNlID0gY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpIC0gKG51bUxpbmVz
IC0gMSkgKiBnYXBCZXR3ZWVuTGluZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1M
aW5lczsgKytpKQogICAgICAgICBhdmFpbGFibGVDcm9zc0F4aXNTcGFjZSAtPSBsaW5lQ29udGV4
dHNbaV0uY3Jvc3NBeGlzRXh0ZW50OwotICAgIAotICAgIExheW91dFVuaXQgbGluZU9mZnNldCA9
IGluaXRpYWxBbGlnbkNvbnRlbnRPZmZzZXQoYXZhaWxhYmxlQ3Jvc3NBeGlzU3BhY2UsIHBvc2l0
aW9uLCBkaXN0cmlidXRpb24sIGxpbmVDb250ZXh0cy5zaXplKCkpOwotICAgIGZvciAodW5zaWdu
ZWQgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBsaW5lQ29udGV4dHMuc2l6ZSgpOyArK2xp
bmVOdW1iZXIpIHsKKworICAgIExheW91dFVuaXQgbGluZU9mZnNldCA9IGluaXRpYWxBbGlnbkNv
bnRlbnRPZmZzZXQoYXZhaWxhYmxlQ3Jvc3NBeGlzU3BhY2UsIHBvc2l0aW9uLCBkaXN0cmlidXRp
b24sIG51bUxpbmVzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVt
YmVyIDwgbnVtTGluZXM7ICsrbGluZU51bWJlcikgewogICAgICAgICBMaW5lQ29udGV4dCYgbGlu
ZUNvbnRleHQgPSBsaW5lQ29udGV4dHNbbGluZU51bWJlcl07CiAgICAgICAgIGxpbmVDb250ZXh0
LmNyb3NzQXhpc09mZnNldCArPSBsaW5lT2Zmc2V0OwogICAgICAgICBmb3IgKHNpemVfdCBjaGls
ZE51bWJlciA9IDA7IGNoaWxkTnVtYmVyIDwgbGluZUNvbnRleHQuZmxleEl0ZW1zLnNpemUoKTsg
KytjaGlsZE51bWJlcikgewpAQCAtMTc4NCw5ICsxODAzLDkgQEAgdm9pZCBSZW5kZXJGbGV4aWJs
ZUJveDo6YWxpZ25GbGV4TGluZXMoVmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKQog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoZGlzdHJpYnV0aW9uID09IENvbnRlbnRE
aXN0cmlidXRpb246OlN0cmV0Y2ggJiYgYXZhaWxhYmxlQ3Jvc3NBeGlzU3BhY2UgPiAwKQotICAg
ICAgICAgICAgbGluZUNvbnRleHRzW2xpbmVOdW1iZXJdLmNyb3NzQXhpc0V4dGVudCArPSBhdmFp
bGFibGVDcm9zc0F4aXNTcGFjZSAvIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lQ29udGV4dHMu
c2l6ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIGxpbmVPZmZzZXQgKz0gYWxpZ25Db250ZW50U3Bh
Y2VCZXR3ZWVuQ2hpbGRyZW4oYXZhaWxhYmxlQ3Jvc3NBeGlzU3BhY2UsIGRpc3RyaWJ1dGlvbiwg
bGluZUNvbnRleHRzLnNpemUoKSk7CisgICAgICAgICAgICBsaW5lQ29udGV4dHNbbGluZU51bWJl
cl0uY3Jvc3NBeGlzRXh0ZW50ICs9IGF2YWlsYWJsZUNyb3NzQXhpc1NwYWNlIC8gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG51bUxpbmVzKTsKKworICAgICAgICBsaW5lT2Zmc2V0ICs9IGFsaWduQ29u
dGVudFNwYWNlQmV0d2VlbkNoaWxkcmVuKGF2YWlsYWJsZUNyb3NzQXhpc1NwYWNlLCBkaXN0cmli
dXRpb24sIG51bUxpbmVzKSArIGdhcEJldHdlZW5MaW5lczsKICAgICB9CiB9CiAgICAgCkBAIC0x
OTQ5LDQgKzE5NjgsMTUgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6aXNMZWZ0TGF5b3V0T3Zl
cmZsb3dBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpOwogfQog
CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlR2FwKFJlbmRlckZsZXhpYmxl
Qm94OjpHYXBUeXBlIGdhcFR5cGUpIGNvbnN0Cit7CisgICAgLy8gcm93LWdhcCBpcyB1c2VkIGZv
ciBnYXBzIGJldHdlZW4gZmxleCBpdGVtcyBpbiBjb2x1bW4gZmxvd3Mgb3IgZm9yIGdhcHMgYmV0
d2VlbiBsaW5lcyBpbiByb3cgZmxvd3MuCisgICAgYm9vbCB1c2VzUm93R2FwID0gKGdhcFR5cGUg
PT0gR2FwVHlwZTo6QmV0d2Vlbkl0ZW1zKSA9PSBpc0NvbHVtbkZsb3coKTsKKyAgICBhdXRvJiBn
YXBMZW5ndGggPSB1c2VzUm93R2FwID8gc3R5bGUoKS5yb3dHYXAoKSA6IHN0eWxlKCkuY29sdW1u
R2FwKCk7CisgICAgaWYgKExJS0VMWShnYXBMZW5ndGguaXNOb3JtYWwoKSkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIGF2YWlsYWJsZVNpemUgPSB1c2VzUm93R2FwID8gYXZhaWxh
YmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbigpLnZhbHVlT3IoMF9sdSkg
OiBjb250ZW50TG9naWNhbFdpZHRoKCk7CisgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0
aChnYXBMZW5ndGgubGVuZ3RoKCksIGF2YWlsYWJsZVNpemUpOworfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAzZDA3ZTAyNTY4ZjE4OTk4
OTU4YmEyMjU4YzNmZWYxMDY0ZmVmYjY2Li44ZjZkZDI3NGRjMWIzZmM2Yzk2ZDA1NmI2MzI1Nzg5
YzQ0NWI2NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guaApAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVBdXRvTWFy
Z2luc0luTWFpbkF4aXMoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBhdXRvTWFyZ2luT2Zm
c2V0KTsKICAgICBib29sIGhhc0F1dG9NYXJnaW5zSW5Dcm9zc0F4aXMoY29uc3QgUmVuZGVyQm94
JiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCB1cGRhdGVBdXRvTWFyZ2luc0luQ3Jvc3NBeGlzKFJl
bmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgYXZhaWxhYmxlQWxpZ25tZW50U3BhY2UpOwotICAg
IHZvaWQgcmVwb3NpdGlvbkxvZ2ljYWxIZWlnaHREZXBlbmRlbnRGbGV4SXRlbXMoVmVjdG9yPExp
bmVDb250ZXh0PiYpOworICAgIHZvaWQgcmVwb3NpdGlvbkxvZ2ljYWxIZWlnaHREZXBlbmRlbnRG
bGV4SXRlbXMoVmVjdG9yPExpbmVDb250ZXh0PiYsIExheW91dFVuaXQgZ2FwQmV0d2VlbkxpbmVz
KTsKICAgICBMYXlvdXRVbml0IGNsaWVudExvZ2ljYWxCb3R0b21BZnRlclJlcG9zaXRpb25pbmco
KTsKICAgICAKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9yQ2hpbGQo
TGF5b3V0VW5pdCBsaW5lQ3Jvc3NBeGlzRXh0ZW50LCBjb25zdCBSZW5kZXJCb3gmIGNoaWxkKTsK
QEAgLTE4MCw5ICsxODAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRBdXRvTWFyZ2luc0Fu
ZExvZ2ljYWxUb3BJbkNyb3NzQXhpcyhSZW5kZXJCb3gmIGNoaWxkKTsKICAgICB2b2lkIHNldE92
ZXJyaWRlTWFpbkF4aXNDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91
dFVuaXQgY2hpbGRQcmVmZXJyZWRTaXplKTsKICAgICB2b2lkIHByZXBhcmVDaGlsZEZvclBvc2l0
aW9uZWRMYXlvdXQoUmVuZGVyQm94JiBjaGlsZCk7Ci0gICAgdm9pZCBsYXlvdXRBbmRQbGFjZUNo
aWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgVmVjdG9yPEZsZXhJdGVtPiYsIExh
eW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBib29sIHJlbGF5b3V0Q2hpbGRyZW4sIFZlY3Rv
cjxMaW5lQ29udGV4dD4mKTsKKyAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0
VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBWZWN0b3I8RmxleEl0ZW0+JiwgTGF5b3V0VW5pdCBhdmFp
bGFibGVGcmVlU3BhY2UsIGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVmVjdG9yPExpbmVDb250ZXh0
PiYsIExheW91dFVuaXQgZ2FwQmV0d2Vlbkl0ZW1zKTsKICAgICB2b2lkIGxheW91dENvbHVtblJl
dmVyc2UoY29uc3QgVmVjdG9yPEZsZXhJdGVtPiYsIExheW91dFVuaXQgY3Jvc3NBeGlzT2Zmc2V0
LCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSk7Ci0gICAgdm9pZCBhbGlnbkZsZXhMaW5l
cyhWZWN0b3I8TGluZUNvbnRleHQ+Jik7CisgICAgdm9pZCBhbGlnbkZsZXhMaW5lcyhWZWN0b3I8
TGluZUNvbnRleHQ+JiwgTGF5b3V0VW5pdCBnYXBCZXR3ZWVuTGluZXMpOwogICAgIHZvaWQgYWxp
Z25DaGlsZHJlbihjb25zdCBWZWN0b3I8TGluZUNvbnRleHQ+Jik7CiAgICAgdm9pZCBhcHBseVN0
cmV0Y2hBbGlnbm1lbnRUb0NoaWxkKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgbGluZUNy
b3NzQXhpc0V4dGVudCk7CiAgICAgdm9pZCBmbGlwRm9yUmlnaHRUb0xlZnRDb2x1bW4oY29uc3Qg
VmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKTsKQEAgLTE5Myw2ICsxOTMsOSBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBoYXNQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMoY29uc3QgUmVu
ZGVyQm94JikgY29uc3Q7CiAKKyAgICBlbnVtIGNsYXNzIEdhcFR5cGUgeyBCZXR3ZWVuTGluZXMs
IEJldHdlZW5JdGVtcyB9OworICAgIExheW91dFVuaXQgY29tcHV0ZUdhcChHYXBUeXBlKSBjb25z
dDsKKwogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjYWNoZSB0aGUgcHJlZmVycmVkIHNpemUgZm9y
IG9ydGhvZ29uYWwgZmxvdyBjaGlsZHJlbiBzbyB3ZQogICAgIC8vIGRvbid0IGhhdmUgdG8gcmVs
YXlvdXQgdG8gZ2V0IGl0CiAgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0
PiBtX2ludHJpbnNpY1NpemVBbG9uZ01haW5BeGlzOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY4NDNlMTdmY2U5NDU2MDlm
MDZiYTlmNGI3NzUzZGNhM2JhYWY5NTYuLjBkOGE3M2Y2M2RhYjFlZjk5ZWMzM2JmNTMxN2UwOWUx
NDhhN2UzYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wOS0yMSAgU2VyZ2lvIFZpbGxh
ciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbY3NzLWZsZXhib3hdIElt
cGxlbWVudCByb3ctZ2FwIGFuZCBjb2x1bW4tZ2FwIGZvciBmbGV4IGxheW91dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OiBVbnNraXAgYWxsIGZsZXggZ2FwIHRlc3RzIHRoYXQgYXJlIHBhc3Npbmcgbm93LgorCiAyMDIw
LTA5LTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENyYXNo
IHdoaWxlIGxvYWRpbmcgYSBjb25mbHVlbmNlIHBhZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IDgzY2I0MmQ1YmE5NGVmMjVjMjVjMDEwYTVlYjE1Y2RiYjMxODhhZGQuLjNmYWVl
MmJiMDM1YWU5ZDIyYjEzNDdjOGMxZGNlMjc3ZGU4ODI0ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA5LTIxICBTZXJnaW8gVmlsbGFyIFNl
bmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxleGJveF0gSW1wbGVt
ZW50IHJvdy1nYXAgYW5kIGNvbHVtbi1nYXAgZm9yIGZsZXggbGF5b3V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY3NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWZsZXhib3gvZ2FwLTAxNy1leHBlY3RlZC50eHQ6IFJlcGxhY2VkIEZBSUwgYnkgUEFT
UyBleHBlY3RhdGlvbi4KKwogMjAyMC0wOS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBDU1Mgc2VyaWFsaXphdGlvbiBleHBlY3RzIGNvbW1lbnRz
IGJldHdlZW4gY2VydGFpbiB0b2tlbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg1OTRhOTYyYTIy
NzhkYWRlYjliZTJmNTYzMTY5NTgxOTkzYTYyMTQuLjA1ODY3MWQyNzg4OWI2MjA1NzY3NThlMWIx
ZDE0YTgxMzE0NGUwYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzg3OSw0NCArMzg3OSw2IEBA
IHdlYmtpdC5vcmcvYi8yMDkwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXdyaXRpbmctbW9kZXMvdmVydGljCiB3ZWJraXQub3JnL2IvMjA5MDgwIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy13cml0aW5nLW1vZGVzL3ZlcnRpY2FsLWFsaWdu
bWVudC1zcmwtMDQwLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTQ1
MTc2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2ZsZXhi
b3hfYWxpZ24taXRlbXMtc3RyZXRjaC0zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZs
ZXhib3gvZmxleGJveC1nYXAtcG9zaXRpb24tYWJzb2x1dGUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZmxleGJveC9nYXAtMDAxLWxyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWZsZXhib3gvZ2FwLTAwMS1sdHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJv
eC9nYXAtMDAxLXJsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3
NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAw
MS1ydGwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDAyLWxyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwMi1sdHIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDAyLXJsLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwMi1ydGwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZmxleGJveC9nYXAtMDAzLWxyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZs
ZXhib3gvZ2FwLTAwMy1sdHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9n
YXAtMDAzLXJsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3Njcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwMy1y
dGwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA0LWxyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwNC1sdHIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA0LXJsLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwNC1ydGwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZmxleGJveC9nYXAtMDA1LWxyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhi
b3gvZ2FwLTAwNS1sdHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIw
Njc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAt
MDA1LXJsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwNS1ydGwu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA2LWxyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwNi1sdHIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA2LXJsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWZsZXhib3gvZ2FwLTAwNi1ydGwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
ZmxleGJveC9nYXAtMDA3LWxyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gv
Z2FwLTAwNy1sdHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA3
LXJsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAwNy1ydGwuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDA4LWx0ci5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMDktbHRyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAxMC1sdHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZmxleGJveC9nYXAtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhi
b3gvZ2FwLTAxMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMTMu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjc2NyBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9nYXAtMDE0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDY3NjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAxNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjA2NzY3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1mbGV4Ym94L2dhcC0wMTYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzIwOTY0OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxl
eGJveC9wYWRkaW5nLW92ZXJmbG93LWNyYXNoLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8yMTAwOTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWZsZXhib3gvc2VsZWN0LWVsZW1lbnQtemVyby1oZWlnaHQtMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTAwOTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWZsZXhib3gvc2VsZWN0LWVsZW1lbnQtemVyby1oZWlnaHQtMDAyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2dhcC0wMTctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZs
ZXhib3gvZ2FwLTAxNy1leHBlY3RlZC50eHQKaW5kZXggNmM4MDZjOTIyMzBhODhlYWZjMThhZjUx
MjBkZDIzOTFjNjBkNmQ4Mi4uZWI4OGRiMTFjNDc3MmM4YjRmMzM3N2Y4ZjU4MjI4MjViNzk0ZDEw
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAxNy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvZ2FwLTAxNy1l
eHBlY3RlZC50eHQKQEAgLTEsOSArMSw0IEBACiAKIAotRkFJTCAuYnV0dG9uIDEgYXNzZXJ0X2Vx
dWFsczoKLTxidXR0b24gY2xhc3M9ImJ1dHRvbiIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+
Ci0gIDxkaXYgY2xhc3M9Iml0ZW0iPjwvZGl2PgotICA8ZGl2IGNsYXNzPSJpdGVtIj48L2Rpdj4K
LTwvYnV0dG9uPgotaGVpZ2h0IGV4cGVjdGVkIDEwMCBidXQgZ290IDgwCitQQVNTIC5idXR0b24g
MQogCg==
</data>
<flag name="review"
          id="425957"
          type_id="1"
          status="+"
          setter="rego"
    />
          </attachment>
      

    </bug>

</bugzilla>