<?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>140540</bug_id>
          
          <creation_ts>2015-01-16 02:42:37 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Tracks&apos; growth limits must be &gt;= base sizes</short_desc>
          <delta_ts>2015-02-09 03:34:22 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>140615</dependson>
          <blocked>60731</blocked>
    
    <blocked>140763</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rego</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1061798</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-01-16 02:42:37 -0800</bug_when>
    <thetext>I raised this issue to the www-list here https://lists.w3.org/Archives/Public/www-style/2015Jan/0041.html.

Summarizing, the current algorithm does not really enforce the condition of &quot;base size &lt;= growth limit&quot;. Not fulfilling it makes the algorithm produce invalid results as explained in the email. Using the example mentioned there:

    &lt;div style=&quot;display: grid; grid-template-columns: minmax(40px, min-content) minmax(50px, max-content);&quot;&gt;
        &lt;div style=&quot;grid-column: 1 / -1;&quot; id=&quot;item1&quot;&gt;&lt;/div&gt;
        &lt;div style=&quot;grid-column: 1;&quot; id=&quot;item2&quot;&gt;&lt;/div&gt;
        &lt;div style=&quot;grid-column: 2;&quot; id=&quot;item3&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    Let&apos;s use the following sizes (min-content,max-content) in pixels for
    the items:
        - item1: (40, 90)
        - item2: (10, 10)
        - item3: (10, 10)

The track sizing algorithm will generate the following outcome, for the (min,max) sizes of tracks:

    (40, 30) (50, 60)

which means that with enough space the grid will be 40+60 = 100px wide when it should be enough with 90px.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063337</commentid>
    <comment_count>1</comment_count>
      <attachid>245135</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-01-22 03:35:33 -0800</bug_when>
    <thetext>Created attachment 245135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064849</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-01-28 01:09:16 -0800</bug_when>
    <thetext>Ping reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066045</commentid>
    <comment_count>3</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-02 00:05:55 -0800</bug_when>
    <thetext>JFTR this is what the specs now say:

&quot;If at this point any track’s growth limit is now less than its base size, increase its growth limit to match its base size.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067784</commentid>
    <comment_count>4</comment_count>
      <attachid>245135</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-09 03:07:11 -0800</bug_when>
    <thetext>Comment on attachment 245135
Patch

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:47
&gt; -        : m_usedBreadth(0)
&gt; -        , m_maxBreadth(0)
&gt; +        : m_baseSize(0)
&gt; +        , m_growthLimit(0)

The fashionable approach is to initialize in the header:

LayoutUnit m_baseSize { 0 };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067789</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-09 03:34:22 -0800</bug_when>
    <thetext>Committed r179824: &lt;http://trac.webkit.org/changeset/179824&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245135</attachid>
            <date>2015-01-22 03:35:33 -0800</date>
            <delta_ts>2015-02-09 03:07:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140540-20150122123539.patch</filename>
            <type>text/plain</type>
            <size>26680</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4OTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUzZTU2OWQxYTIxNjc2
ODc2ZjhjZmUxNzljMDM2NWIxYTY4NTJhYS4uNzllZjI0NGYwYzFkMzAwNjA2YzQ5ODMwZTY4NWQ1
MjVmYThjNTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTAxLTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIFRyYWNrcycgZ3Jvd3RoIGxpbWl0cyBtdXN0IGJlID49IGJhc2Ugc2l6ZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDU0MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0cmFjayBz
aXppbmcgYWxnb3JpdGhtIGlzIHN1cHBvc2VkIHRvIGF2b2lkIHRob3NlIHNpdHVhdGlvbnMKKyAg
ICAgICAgYnV0IHRoZXkgZWFzaWx5IChzcGVjaWFsbHkgd2hlbiB3ZSBtaXggYWJzb2x1dGUgbGVu
Z3RocyBhbmQKKyAgICAgICAgaW50cmluc2ljIGxlbmd0aHMgaW4gbWluIGFuZCBtYXggdHJhY2sg
c2l6aW5nIGZ1bmN0aW9ucykgYW5kCisgICAgICAgIGZyZXF1ZW50bHkgYXBwZWFyLiBJbiB0aG9z
ZSBjYXNlcyB0aGUgb3V0Y29tZSBmcm9tIHRoZSBhbGdvcml0aG0KKyAgICAgICAgaXMgd3Jvbmcs
IHRyYWNrcyBhcmUgbm90IGNvcnJlY3RseSBzaXplZC4KKworICAgICAgICBJbiBvcmRlciB0byBm
dWxmaWxsIHRoZSByZXN0cmljdGlvbiwgbV91c2VkQnJlYWR0aCBhbmQKKyAgICAgICAgbV9tYXhC
cmVhZHRoIGFyZSBub3cgcHJpdmF0ZSBtZW1iZXJzIG9mIEdyaWRUcmFjayBhbmQgdGhlIGNsYXNz
CisgICAgICAgIG5vdyBwcm92aWRlcyBhIGNvdXBsZSBvZiBtZXRob2RzIHRvIG1vZGlmeSB0aGVt
IHJlc3BlY3RpbmcgdGhlCisgICAgICAgIGdyb3d0aExpbWl0ID49IGJhc2VTaXplIHByZWNvbmRp
dGlvbi4KKworICAgICAgICBBcGFydCBmcm9tIHRoYXQsIHRoZSBtZW1iZXJzIGFuZCBtZXRob2Rz
IG9mIEdyaWRUcmFjayB3ZXJlIGFsc28KKyAgICAgICAgcmVuYW1lZCB0byBtYXRjaCB0aGUgb25l
cyB1c2VkIGluIHRoZSByZWNlbnQgYWxnb3JpdGhtIHJld3JpdGU6CisgICAgICAgIHVzZWRCcmVh
ZHRoIGJlY2FtZSBiYXNlU2l6ZSBhbmQgbWF4QnJlYWR0aCBpcyBub3cgZ3Jvd3RoTGltaXQuCisK
KyAgICAgICAgQWx0aG91Z2ggdGhlIGFsZ29yaXRobSB3YXMgbm90IG1vZGlmaWVkIGF0IGFsbCwg
dGhpcyBjaGFuZ2UKKyAgICAgICAgZGV0ZWN0ZWQgYW5kIGZpeGVkIHNldmVyYWwgaW52YWxpZCBy
ZXN1bHRzICh0cmFja3MgYW5kL29yIGdyaWRzCisgICAgICAgIGJpZ2dlciB0aGFuIGV4cGVjdGVk
KS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFjazo6R3JpZFRyYWNrKTogUmVuYW1lZCBmaWVsZHMgYW5kIG1ldGhvZHMuIEFk
ZGVkCisgICAgICAgIGFzc2VydGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OmJh
c2VTaXplKTogUmVuYW1lZCBmcm9tIHVzZWRCcmVhZHRoLgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFRyYWNrOjpncm93dGhMaW1pdCk6IFJlbmFtZWQgZnJvbSBtYXhCcmVhZHRoLgorICAgICAgICAo
V2ViQ29yZTo6R3JpZFRyYWNrOjpzZXRCYXNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
VHJhY2s6OnNldEdyb3d0aExpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6Z3Jv
d0Jhc2VTaXplKTogUmVuYW1lZCBmcm9tIGdyb3dVc2VkQnJlYWR0aC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFjazo6Z3Jvd0dyb3d0aExpbWl0KTogUmVuYW1lZCBmcm9tIGdyb3dNYXhCcmVh
ZHRoLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpncm93dGhMaW1pdElzSW5maW5pdGUp
OiBOZXcgaGVscGVyIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6Z3Jvd3Ro
TGltaXRJZk5vdEluZmluaXRlKTogUmVuYW1lZCBmcm9tCisgICAgICAgIG1heEJyZWFkdGhJZk5v
dEluZmluaXRlLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjppc0dyb3d0aExpbWl0Qmln
Z2VyVGhhbkJhc2VTaXplKTogTmV3IGhlbHBlcgorICAgICAgICBtZXRob2QgdG8gdmVyaWZ5IEFT
U0VSVHMgYXJlIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OmVuc3VyZUdyb3d0
aExpbWl0SXNCaWdnZXJUaGFuQmFzZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRUcmFja0Zvck5vcm1hbGl6YXRpb246OkdyaWRUcmFja0Zvck5vcm1hbGl6YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlk
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVOb3JtYWxpemVk
RnJhY3Rpb25CcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVD
b250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpzb3J0
QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpncmlkQXJlYUJyZWFkdGhGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpwb3B1bGF0ZUdyaWRQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNr
Ojpncm93VXNlZEJyZWFkdGgpOiBSZW5hbWVkIHRvIGdyb3dCYXNlU2l6ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRUcmFjazo6dXNlZEJyZWFkdGgpOiBSZW5hbWVkIHRvIGJhc2VTaXplLgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpncm93TWF4QnJlYWR0aCk6IFJlbmFtZWQgdG8gZ3Jv
d0dyb3d0aExpbWl0LgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjptYXhCcmVhZHRoSWZO
b3RJbmZpbml0ZSk6IFJlbmFtZWQgdG8KKyAgICAgICAgZ3Jvd3RoTGltaXRJZk5vdEluZmluaXRl
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisKIDIwMTUtMDEtMjEgIFNlcmdp
byBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NTUyBHcmlk
IExheW91dF0gU2tpcCBpdGVtcyBzcGFubmluZyBmbGV4IHRyYWNrcyB3aGVuIHNpemluZyBjb250
ZW50IGJhc2VkIHRyYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmlu
ZGV4IDg0YjYxZDlmODkyYWU2ZmRiYTg4MGM5Y2E3ODRjMzg4OTMwNTllMmYuLjMzNTNmMzJkZjli
ZGY2OTk0YzcyZjQxYzZmYTE4NTBhZDhkY2NmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKQEAgLTQzLDM5ICs0Myw4MiBAQCBzdGF0aWMgY29uc3QgaW50IGluZmlu
aXR5ID0gLTE7CiBjbGFzcyBHcmlkVHJhY2sgewogcHVibGljOgogICAgIEdyaWRUcmFjaygpCi0g
ICAgICAgIDogbV91c2VkQnJlYWR0aCgwKQotICAgICAgICAsIG1fbWF4QnJlYWR0aCgwKQorICAg
ICAgICA6IG1fYmFzZVNpemUoMCkKKyAgICAgICAgLCBtX2dyb3d0aExpbWl0KDApCiAgICAgewog
ICAgIH0KIAotICAgIHZvaWQgZ3Jvd1VzZWRCcmVhZHRoKExheW91dFVuaXQgZ3Jvd3RoKQorICAg
IGNvbnN0IExheW91dFVuaXQmIGJhc2VTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc0dyb3d0aExpbWl0QmlnZ2VyVGhhbkJhc2VTaXplKCkpOworICAgICAgICByZXR1cm4gbV9i
YXNlU2l6ZTsKKyAgICB9CisKKyAgICBjb25zdCBMYXlvdXRVbml0JiBncm93dGhMaW1pdCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNHcm93dGhMaW1pdEJpZ2dlclRoYW5CYXNlU2l6
ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fZ3Jvd3RoTGltaXQ7CisgICAgfQorCisgICAgdm9pZCBz
ZXRCYXNlU2l6ZShMYXlvdXRVbml0IGJhc2VTaXplKQorICAgIHsKKyAgICAgICAgbV9iYXNlU2l6
ZSA9IGJhc2VTaXplOworICAgICAgICBlbnN1cmVHcm93dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VT
aXplKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRHcm93dGhMaW1pdChMYXlvdXRVbml0IGdyb3d0
aExpbWl0KQorICAgIHsKKyAgICAgICAgbV9ncm93dGhMaW1pdCA9IGdyb3d0aExpbWl0OworICAg
ICAgICBlbnN1cmVHcm93dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VTaXplKCk7CisgICAgfQorCisg
ICAgdm9pZCBncm93QmFzZVNpemUoTGF5b3V0VW5pdCBncm93dGgpCiAgICAgewogICAgICAgICBB
U1NFUlQoZ3Jvd3RoID49IDApOwotICAgICAgICBtX3VzZWRCcmVhZHRoICs9IGdyb3d0aDsKKyAg
ICAgICAgbV9iYXNlU2l6ZSArPSBncm93dGg7CisgICAgICAgIGVuc3VyZUdyb3d0aExpbWl0SXNC
aWdnZXJUaGFuQmFzZVNpemUoKTsKICAgICB9Ci0gICAgTGF5b3V0VW5pdCB1c2VkQnJlYWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlZEJyZWFkdGg7IH0KIAotICAgIHZvaWQgZ3Jvd01heEJyZWFk
dGgoTGF5b3V0VW5pdCBncm93dGgpCisgICAgdm9pZCBncm93R3Jvd3RoTGltaXQoTGF5b3V0VW5p
dCBncm93dGgpCiAgICAgewotICAgICAgICBpZiAobV9tYXhCcmVhZHRoID09IGluZmluaXR5KQot
ICAgICAgICAgICAgbV9tYXhCcmVhZHRoID0gbV91c2VkQnJlYWR0aCArIGdyb3d0aDsKKyAgICAg
ICAgQVNTRVJUKGdyb3d0aCA+PSAwKTsKKyAgICAgICAgaWYgKG1fZ3Jvd3RoTGltaXQgPT0gaW5m
aW5pdHkpCisgICAgICAgICAgICBtX2dyb3d0aExpbWl0ID0gbV9iYXNlU2l6ZSArIGdyb3d0aDsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9tYXhCcmVhZHRoICs9IGdyb3d0aDsKKyAgICAg
ICAgICAgIG1fZ3Jvd3RoTGltaXQgKz0gZ3Jvd3RoOworCisgICAgICAgIEFTU0VSVChtX2dyb3d0
aExpbWl0ID49IG1fYmFzZVNpemUpOworICAgIH0KKworICAgIGJvb2wgZ3Jvd3RoTGltaXRJc0lu
ZmluaXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyb3d0aExpbWl0ID09IGlu
ZmluaXR5OworICAgIH0KKworICAgIGNvbnN0IExheW91dFVuaXQmIGdyb3d0aExpbWl0SWZOb3RJ
bmZpbml0ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNHcm93dGhMaW1pdEJpZ2dl
clRoYW5CYXNlU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIChtX2dyb3d0aExpbWl0ID09IGluZmlu
aXR5KSA/IG1fYmFzZVNpemUgOiBtX2dyb3d0aExpbWl0OwogICAgIH0KLSAgICBMYXlvdXRVbml0
IG1heEJyZWFkdGhJZk5vdEluZmluaXRlKCkgY29uc3QKKworcHJpdmF0ZToKKyAgICBib29sIGlz
R3Jvd3RoTGltaXRCaWdnZXJUaGFuQmFzZVNpemUoKSBjb25zdCB7IHJldHVybiBncm93dGhMaW1p
dElzSW5maW5pdGUoKSB8fCBtX2dyb3d0aExpbWl0ID49IG1fYmFzZVNpemU7IH0KKworICAgIHZv
aWQgZW5zdXJlR3Jvd3RoTGltaXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gKG1fbWF4QnJlYWR0aCA9PSBpbmZpbml0eSkgPyBtX3VzZWRCcmVhZHRoIDogbV9t
YXhCcmVhZHRoOworICAgICAgICBpZiAobV9ncm93dGhMaW1pdCAhPSBpbmZpbml0eSAmJiBtX2dy
b3d0aExpbWl0IDwgbV9iYXNlU2l6ZSkKKyAgICAgICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBtX2Jh
c2VTaXplOwogICAgIH0KIAotICAgIExheW91dFVuaXQgbV91c2VkQnJlYWR0aDsKLSAgICBMYXlv
dXRVbml0IG1fbWF4QnJlYWR0aDsKKyAgICBMYXlvdXRVbml0IG1fYmFzZVNpemU7CisgICAgTGF5
b3V0VW5pdCBtX2dyb3d0aExpbWl0OwogfTsKIAogc3RydWN0IEdyaWRUcmFja0Zvck5vcm1hbGl6
YXRpb24gewogICAgIEdyaWRUcmFja0Zvck5vcm1hbGl6YXRpb24oY29uc3QgR3JpZFRyYWNrJiB0
cmFjaywgZG91YmxlIGZsZXgpCiAgICAgICAgIDogbV90cmFjaygmdHJhY2spCiAgICAgICAgICwg
bV9mbGV4KGZsZXgpCi0gICAgICAgICwgbV9ub3JtYWxpemVkRmxleFZhbHVlKHRyYWNrLm1fdXNl
ZEJyZWFkdGggLyBmbGV4KQorICAgICAgICAsIG1fbm9ybWFsaXplZEZsZXhWYWx1ZSh0cmFjay5i
YXNlU2l6ZSgpIC8gZmxleCkKICAgICB7CiAgICAgfQogCkBAIC0yNTIsOSArMjk1LDggQEAgdm9p
ZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsV2lkdGgsIExheW8KICAgICBjb25zdF9jYXN0PFJlbmRlckdyaWQqPih0aGlzKS0+
Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvckNvbHVtbnMsIHNpemluZ0RhdGEsIGF2
YWlsYWJsZUxvZ2ljYWxTcGFjZSk7CiAKICAgICBmb3IgKGF1dG8mIGNvbHVtbiA6IHNpemluZ0Rh
dGEuY29sdW1uVHJhY2tzKSB7Ci0gICAgICAgIExheW91dFVuaXQgbWluVHJhY2tCcmVhZHRoID0g
Y29sdW1uLm1fdXNlZEJyZWFkdGg7Ci0gICAgICAgIExheW91dFVuaXQgbWF4VHJhY2tCcmVhZHRo
ID0gY29sdW1uLm1fbWF4QnJlYWR0aDsKLSAgICAgICAgbWF4VHJhY2tCcmVhZHRoID0gc3RkOjpt
YXgobWF4VHJhY2tCcmVhZHRoLCBtaW5UcmFja0JyZWFkdGgpOworICAgICAgICBMYXlvdXRVbml0
IG1pblRyYWNrQnJlYWR0aCA9IGNvbHVtbi5iYXNlU2l6ZSgpOworICAgICAgICBMYXlvdXRVbml0
IG1heFRyYWNrQnJlYWR0aCA9IGNvbHVtbi5ncm93dGhMaW1pdCgpOwogCiAgICAgICAgIG1pbkxv
Z2ljYWxXaWR0aCArPSBtaW5UcmFja0JyZWFkdGg7CiAgICAgICAgIG1heExvZ2ljYWxXaWR0aCAr
PSBtYXhUcmFja0JyZWFkdGg7CkBAIC0zMTAsMTEgKzM1Miw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6
Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlY3RpCiAgICAgICAgIGNvbnN0IEdyaWRMZW5ndGgmIG1pblRyYWNrQnJlYWR0aCA9IHRyYWNr
U2l6ZS5taW5UcmFja0JyZWFkdGgoKTsKICAgICAgICAgY29uc3QgR3JpZExlbmd0aCYgbWF4VHJh
Y2tCcmVhZHRoID0gdHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpOwogCi0gICAgICAgIHRyYWNr
Lm1fdXNlZEJyZWFkdGggPSBjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aChkaXJlY3Rpb24s
IG1pblRyYWNrQnJlYWR0aCk7Ci0gICAgICAgIHRyYWNrLm1fbWF4QnJlYWR0aCA9IGNvbXB1dGVV
c2VkQnJlYWR0aE9mTWF4TGVuZ3RoKGRpcmVjdGlvbiwgbWF4VHJhY2tCcmVhZHRoLCB0cmFjay5t
X3VzZWRCcmVhZHRoKTsKLQotICAgICAgICBpZiAodHJhY2subV9tYXhCcmVhZHRoICE9IGluZmlu
aXR5KQotICAgICAgICAgICAgdHJhY2subV9tYXhCcmVhZHRoID0gc3RkOjptYXgodHJhY2subV9t
YXhCcmVhZHRoLCB0cmFjay5tX3VzZWRCcmVhZHRoKTsKKyAgICAgICAgdHJhY2suc2V0QmFzZVNp
emUoY29tcHV0ZVVzZWRCcmVhZHRoT2ZNaW5MZW5ndGgoZGlyZWN0aW9uLCBtaW5UcmFja0JyZWFk
dGgpKTsKKyAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQoY29tcHV0ZVVzZWRCcmVhZHRoT2ZN
YXhMZW5ndGgoZGlyZWN0aW9uLCBtYXhUcmFja0JyZWFkdGgsIHRyYWNrLmJhc2VTaXplKCkpKTsK
IAogICAgICAgICBpZiAodHJhY2tTaXplLmlzQ29udGVudFNpemVkKCkpCiAgICAgICAgICAgICBz
aXppbmdEYXRhLmNvbnRlbnRTaXplZFRyYWNrc0luZGV4LmFwcGVuZChpKTsKQEAgLTMyNyw4ICsz
NjYsOCBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aQogICAgICAgICByZXNvbHZlQ29udGVudEJh
c2VkVHJhY2tTaXppbmdGdW5jdGlvbnMoZGlyZWN0aW9uLCBzaXppbmdEYXRhKTsKIAogICAgIGZv
ciAoYXV0byYgdHJhY2sgOiB0cmFja3MpIHsKLSAgICAgICAgQVNTRVJUKHRyYWNrLm1fbWF4QnJl
YWR0aCAhPSBpbmZpbml0eSk7Ci0gICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSAtPSB0cmFj
ay5tX3VzZWRCcmVhZHRoOworICAgICAgICBBU1NFUlQoIXRyYWNrLmdyb3d0aExpbWl0SXNJbmZp
bml0ZSgpKTsKKyAgICAgICAgYXZhaWxhYmxlTG9naWNhbFNwYWNlIC09IHRyYWNrLmJhc2VTaXpl
KCk7CiAgICAgfQogCiAgICAgY29uc3QgYm9vbCBoYXNVbmRlZmluZWRSZW1haW5pbmdTcGFjZSA9
IChkaXJlY3Rpb24gPT0gRm9yUm93cykgPyBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8o
KSA6IGdyaWRFbGVtZW50SXNTaHJpbmtUb0ZpdCgpOwpAQCAtMzQzLDEwICszODIsMTAgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRy
YWNrc1NpemU7ICsraSkKICAgICAgICAgICAgIHRyYWNrc0ZvckRpc3RyaWJ1dGlvbltpXSA9IHRy
YWNrcy5kYXRhKCkgKyBpOwogCi0gICAgICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKHRyYWNr
c0ZvckRpc3RyaWJ1dGlvbiwgMCwgJkdyaWRUcmFjazo6dXNlZEJyZWFkdGgsICZHcmlkVHJhY2s6
Omdyb3dVc2VkQnJlYWR0aCwgc2l6aW5nRGF0YSwgYXZhaWxhYmxlTG9naWNhbFNwYWNlKTsKKyAg
ICAgICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3ModHJhY2tzRm9yRGlzdHJpYnV0aW9uLCBudWxs
cHRyLCAmR3JpZFRyYWNrOjpiYXNlU2l6ZSwgJkdyaWRUcmFjazo6Z3Jvd0Jhc2VTaXplLCBzaXpp
bmdEYXRhLCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZv
ciAoYXV0byYgdHJhY2sgOiB0cmFja3MpCi0gICAgICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRo
ID0gc3RkOjptYXgodHJhY2subV91c2VkQnJlYWR0aCwgdHJhY2subV9tYXhCcmVhZHRoKTsKKyAg
ICAgICAgICAgIHRyYWNrLnNldEJhc2VTaXplKHRyYWNrLmdyb3d0aExpbWl0KCkpOwogICAgIH0K
IAogICAgIGlmIChmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXguaXNFbXB0eSgpKQpAQCAtMzU5LDcg
KzM5OCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tz
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpCiAgICAgZWxzZSB7CiAgICAgICAgIGZv
ciAoYXV0byB0cmFja0luZGV4IDogZmxleGlibGVTaXplZFRyYWNrc0luZGV4KSB7CiAgICAgICAg
ICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSBncmlkVHJhY2tTaXplKGRpcmVj
dGlvbiwgdHJhY2tJbmRleCk7Ci0gICAgICAgICAgICBub3JtYWxpemVkRnJhY3Rpb25CcmVhZHRo
ID0gc3RkOjptYXgobm9ybWFsaXplZEZyYWN0aW9uQnJlYWR0aCwgdHJhY2tzW3RyYWNrSW5kZXhd
Lm1fdXNlZEJyZWFkdGggLyB0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuZmxleCgpKTsKKyAg
ICAgICAgICAgIG5vcm1hbGl6ZWRGcmFjdGlvbkJyZWFkdGggPSBzdGQ6Om1heChub3JtYWxpemVk
RnJhY3Rpb25CcmVhZHRoLCB0cmFja3NbdHJhY2tJbmRleF0uYmFzZVNpemUoKSAvIHRyYWNrU2l6
ZS5tYXhUcmFja0JyZWFkdGgoKS5mbGV4KCkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZsZXhpYmxlU2l6ZWRUcmFja3NJbmRleC5zaXplKCk7ICsraSkg
ewpAQCAtMzgxLDcgKzQyMCw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRo
T2ZHcmlkVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpCiAgICAgZm9yIChh
dXRvIHRyYWNrSW5kZXggOiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgpIHsKICAgICAgICAgY29u
c3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHRy
YWNrSW5kZXgpOwogICAgICAgICBHcmlkVHJhY2smIHRyYWNrID0gdHJhY2tzW3RyYWNrSW5kZXhd
OwotICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4odHJh
Y2subV91c2VkQnJlYWR0aCwgbm9ybWFsaXplZEZyYWN0aW9uQnJlYWR0aCAqIHRyYWNrU2l6ZS5t
YXhUcmFja0JyZWFkdGgoKS5mbGV4KCkpOworICAgICAgICBMYXlvdXRVbml0IGJhc2VTaXplID0g
c3RkOjptYXg8TGF5b3V0VW5pdD4odHJhY2suYmFzZVNpemUoKSwgbm9ybWFsaXplZEZyYWN0aW9u
QnJlYWR0aCAqIHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKS5mbGV4KCkpOworICAgICAgICB0
cmFjay5zZXRCYXNlU2l6ZShiYXNlU2l6ZSk7CisgICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxTcGFj
ZSAtPSBiYXNlU2l6ZTsKICAgICB9CiB9CiAKQEAgLTQyOCw3ICs0NjksNyBAQCBkb3VibGUgUmVu
ZGVyR3JpZDo6Y29tcHV0ZU5vcm1hbGl6ZWRGcmFjdGlvbkJyZWFkdGgoVmVjdG9yPEdyaWRUcmFj
az4mIHRyYWNrcywgYwogICAgIFZlY3RvcjxHcmlkVHJhY2tGb3JOb3JtYWxpemF0aW9uPiB0cmFj
a3NGb3JOb3JtYWxpemF0aW9uOwogICAgIGZvciAoYXV0byYgcG9zaXRpb24gOiB0cmFja3NTcGFu
KSB7CiAgICAgICAgIEdyaWRUcmFjayYgdHJhY2sgPSB0cmFja3NbcG9zaXRpb24udG9JbnQoKV07
Ci0gICAgICAgIGFsbG9jYXRlZFNwYWNlICs9IHRyYWNrLm1fdXNlZEJyZWFkdGg7CisgICAgICAg
IGFsbG9jYXRlZFNwYWNlICs9IHRyYWNrLmJhc2VTaXplKCk7CiAKICAgICAgICAgY29uc3QgR3Jp
ZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHBvc2l0aW9u
LnRvSW50KCkpOwogICAgICAgICBpZiAoIXRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKS5pc0Zs
ZXgoKSkKQEAgLTQ2NCw3ICs1MDUsNyBAQCBkb3VibGUgUmVuZGVyR3JpZDo6Y29tcHV0ZU5vcm1h
bGl6ZWRGcmFjdGlvbkJyZWFkdGgoVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcywgYwogCiAgICAg
ICAgIGFjY3VtdWxhdGVkRnJhY3Rpb25zICs9IHRyYWNrLm1fZmxleDsKICAgICAgICAgLy8gVGhp
cyBpdGVtIHdhcyBwcm9jZXNzZWQgc28gd2UgcmUtYWRkIGl0cyB1c2VkIGJyZWFkdGggdG8gdGhl
IGF2YWlsYWJsZSBzcGFjZSB0byBhY2N1cmF0ZWx5IGNvdW50IHRoZSByZW1haW5pbmcgc3BhY2Uu
Ci0gICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZUlnbm9yaW5nRnJhY3Rpb25UcmFja3MgKz0g
dHJhY2subV90cmFjay0+bV91c2VkQnJlYWR0aDsKKyAgICAgICAgYXZhaWxhYmxlTG9naWNhbFNw
YWNlSWdub3JpbmdGcmFjdGlvblRyYWNrcyArPSB0cmFjay5tX3RyYWNrLT5iYXNlU2l6ZSgpOwog
ICAgIH0KIAogICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsU3BhY2VJZ25vcmluZ0ZyYWN0aW9u
VHJhY2tzIC8gYWNjdW11bGF0ZWRGcmFjdGlvbnM7CkBAIC01OTUsMTYgKzYzNiwxNiBAQCB2b2lk
IFJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9ucyhHcmlk
VHJhY2tTaXppbmdEaXJlY3RpbwogICAgIHN0ZDo6c29ydChzaXppbmdEYXRhLml0ZW1zU29ydGVk
QnlJbmNyZWFzaW5nU3Bhbi5iZWdpbigpLCBzaXppbmdEYXRhLml0ZW1zU29ydGVkQnlJbmNyZWFz
aW5nU3Bhbi5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGl0ZW1XaXRoU3BhbiA6IHNpemluZ0Rh
dGEuaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFuKSB7Ci0gICAgICAgIHJlc29sdmVDb250ZW50
QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKGRpcmVjdGlvbiwgc2l6aW5nRGF0YSwg
aXRlbVdpdGhTcGFuLCAmR3JpZFRyYWNrU2l6ZTo6aGFzTWluT3JNYXhDb250ZW50TWluVHJhY2tC
cmVhZHRoLCAmUmVuZGVyR3JpZDo6bWluQ29udGVudEZvckNoaWxkLCAmR3JpZFRyYWNrOjp1c2Vk
QnJlYWR0aCwgJkdyaWRUcmFjazo6Z3Jvd1VzZWRCcmVhZHRoLCAmR3JpZFRyYWNrU2l6ZTo6aGFz
TWluQ29udGVudE1pblRyYWNrQnJlYWR0aEFuZE1pbk9yTWF4Q29udGVudE1heFRyYWNrQnJlYWR0
aCk7Ci0gICAgICAgIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0
ZW1zKGRpcmVjdGlvbiwgc2l6aW5nRGF0YSwgaXRlbVdpdGhTcGFuLCAmR3JpZFRyYWNrU2l6ZTo6
aGFzTWF4Q29udGVudE1pblRyYWNrQnJlYWR0aCwgJlJlbmRlckdyaWQ6Om1heENvbnRlbnRGb3JD
aGlsZCwgJkdyaWRUcmFjazo6dXNlZEJyZWFkdGgsICZHcmlkVHJhY2s6Omdyb3dVc2VkQnJlYWR0
aCwgJkdyaWRUcmFja1NpemU6Omhhc01heENvbnRlbnRNaW5UcmFja0JyZWFkdGhBbmRNYXhDb250
ZW50TWF4VHJhY2tCcmVhZHRoKTsKLSAgICAgICAgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6
aW5nRnVuY3Rpb25zRm9ySXRlbXMoZGlyZWN0aW9uLCBzaXppbmdEYXRhLCBpdGVtV2l0aFNwYW4s
ICZHcmlkVHJhY2tTaXplOjpoYXNNaW5Pck1heENvbnRlbnRNYXhUcmFja0JyZWFkdGgsICZSZW5k
ZXJHcmlkOjptaW5Db250ZW50Rm9yQ2hpbGQsICZHcmlkVHJhY2s6Om1heEJyZWFkdGhJZk5vdElu
ZmluaXRlLCAmR3JpZFRyYWNrOjpncm93TWF4QnJlYWR0aCk7Ci0gICAgICAgIHJlc29sdmVDb250
ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKGRpcmVjdGlvbiwgc2l6aW5nRGF0
YSwgaXRlbVdpdGhTcGFuLCAmR3JpZFRyYWNrU2l6ZTo6aGFzTWF4Q29udGVudE1heFRyYWNrQnJl
YWR0aCwgJlJlbmRlckdyaWQ6Om1heENvbnRlbnRGb3JDaGlsZCwgJkdyaWRUcmFjazo6bWF4QnJl
YWR0aElmTm90SW5maW5pdGUsICZHcmlkVHJhY2s6Omdyb3dNYXhCcmVhZHRoKTsKKyAgICAgICAg
cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoZGlyZWN0aW9u
LCBzaXppbmdEYXRhLCBpdGVtV2l0aFNwYW4sICZHcmlkVHJhY2tTaXplOjpoYXNNaW5Pck1heENv
bnRlbnRNaW5UcmFja0JyZWFkdGgsICZSZW5kZXJHcmlkOjptaW5Db250ZW50Rm9yQ2hpbGQsICZH
cmlkVHJhY2s6OmJhc2VTaXplLCAmR3JpZFRyYWNrOjpncm93QmFzZVNpemUsICZHcmlkVHJhY2tT
aXplOjpoYXNNaW5Db250ZW50TWluVHJhY2tCcmVhZHRoQW5kTWluT3JNYXhDb250ZW50TWF4VHJh
Y2tCcmVhZHRoKTsKKyAgICAgICAgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rp
b25zRm9ySXRlbXMoZGlyZWN0aW9uLCBzaXppbmdEYXRhLCBpdGVtV2l0aFNwYW4sICZHcmlkVHJh
Y2tTaXplOjpoYXNNYXhDb250ZW50TWluVHJhY2tCcmVhZHRoLCAmUmVuZGVyR3JpZDo6bWF4Q29u
dGVudEZvckNoaWxkLCAmR3JpZFRyYWNrOjpiYXNlU2l6ZSwgJkdyaWRUcmFjazo6Z3Jvd0Jhc2VT
aXplLCAmR3JpZFRyYWNrU2l6ZTo6aGFzTWF4Q29udGVudE1pblRyYWNrQnJlYWR0aEFuZE1heENv
bnRlbnRNYXhUcmFja0JyZWFkdGgpOworICAgICAgICByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tT
aXppbmdGdW5jdGlvbnNGb3JJdGVtcyhkaXJlY3Rpb24sIHNpemluZ0RhdGEsIGl0ZW1XaXRoU3Bh
biwgJkdyaWRUcmFja1NpemU6Omhhc01pbk9yTWF4Q29udGVudE1heFRyYWNrQnJlYWR0aCwgJlJl
bmRlckdyaWQ6Om1pbkNvbnRlbnRGb3JDaGlsZCwgJkdyaWRUcmFjazo6Z3Jvd3RoTGltaXRJZk5v
dEluZmluaXRlLCAmR3JpZFRyYWNrOjpncm93R3Jvd3RoTGltaXQpOworICAgICAgICByZXNvbHZl
Q29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyhkaXJlY3Rpb24sIHNpemlu
Z0RhdGEsIGl0ZW1XaXRoU3BhbiwgJkdyaWRUcmFja1NpemU6Omhhc01heENvbnRlbnRNYXhUcmFj
a0JyZWFkdGgsICZSZW5kZXJHcmlkOjptYXhDb250ZW50Rm9yQ2hpbGQsICZHcmlkVHJhY2s6Omdy
b3d0aExpbWl0SWZOb3RJbmZpbml0ZSwgJkdyaWRUcmFjazo6Z3Jvd0dyb3d0aExpbWl0KTsKICAg
ICB9CiAKICAgICBmb3IgKGF1dG8gdHJhY2tJbmRleCA6IHNpemluZ0RhdGEuY29udGVudFNpemVk
VHJhY2tzSW5kZXgpIHsKICAgICAgICAgR3JpZFRyYWNrJiB0cmFjayA9IChkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBzaXppbmdEYXRhLmNvbHVtblRyYWNrc1t0cmFja0luZGV4XSA6IHNpemlu
Z0RhdGEucm93VHJhY2tzW3RyYWNrSW5kZXhdOwotICAgICAgICBpZiAodHJhY2subV9tYXhCcmVh
ZHRoID09IGluZmluaXR5KQotICAgICAgICAgICAgdHJhY2subV9tYXhCcmVhZHRoID0gdHJhY2su
bV91c2VkQnJlYWR0aDsKKyAgICAgICAgaWYgKHRyYWNrLmdyb3d0aExpbWl0SXNJbmZpbml0ZSgp
KQorICAgICAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQodHJhY2suYmFzZVNpemUoKSk7CiAg
ICAgfQogfQogCkBAIC02NDcsMTMgKzY4OCwxMyBAQCBzdGF0aWMgYm9vbCBzb3J0QnlHcmlkVHJh
Y2tHcm93dGhQb3RlbnRpYWwoY29uc3QgR3JpZFRyYWNrKiB0cmFjazEsIGNvbnN0IEdyaWRUcgog
ewogICAgIC8vIFRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIHJlc3BlY3QgdGhlIGlycmVmbGV4
aXZpdHkgcHJvcGVydHkgb2YgdGhlIHN0cmljdCB3ZWFrIG9yZGVyaW5nIHJlcXVpcmVkIGJ5IHN0
ZDo6c29ydAogICAgIC8vIChmb3JhbGwgeDogTk9UIHggPCB4KS4KLSAgICBpZiAodHJhY2sxLT5t
X21heEJyZWFkdGggPT0gaW5maW5pdHkgJiYgdHJhY2syLT5tX21heEJyZWFkdGggPT0gaW5maW5p
dHkpCisgICAgaWYgKHRyYWNrMS0+Z3Jvd3RoTGltaXRJc0luZmluaXRlKCkgJiYgdHJhY2syLT5n
cm93dGhMaW1pdElzSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KHRyYWNrMS0+bV9tYXhCcmVhZHRoID09IGluZmluaXR5IHx8IHRyYWNrMi0+bV9tYXhCcmVhZHRo
ID09IGluZmluaXR5KQotICAgICAgICByZXR1cm4gdHJhY2syLT5tX21heEJyZWFkdGggPT0gaW5m
aW5pdHk7CisgICAgaWYgKHRyYWNrMS0+Z3Jvd3RoTGltaXRJc0luZmluaXRlKCkgfHwgdHJhY2sy
LT5ncm93dGhMaW1pdElzSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIHRyYWNrMi0+Z3Jvd3Ro
TGltaXRJc0luZmluaXRlKCk7CiAKLSAgICByZXR1cm4gKHRyYWNrMS0+bV9tYXhCcmVhZHRoIC0g
dHJhY2sxLT5tX3VzZWRCcmVhZHRoKSA8ICh0cmFjazItPm1fbWF4QnJlYWR0aCAtIHRyYWNrMi0+
bV91c2VkQnJlYWR0aCk7CisgICAgcmV0dXJuICh0cmFjazEtPmdyb3d0aExpbWl0KCkgLSB0cmFj
azEtPmJhc2VTaXplKCkpIDwgKHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSAtIHRyYWNrMi0+YmFzZVNp
emUoKSk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVj
dG9yPEdyaWRUcmFjayo+JiB0cmFja3MsIFZlY3Rvcjx1bnNpZ25lZD4qIGdyb3dBYm92ZU1heEJy
ZWFkdGhUcmFja0luZGV4ZXMsIEFjY3VtdWxhdG9yR2V0dGVyIHRyYWNrR2V0dGVyLCBBY2N1bXVs
YXRvckdyb3dGdW5jdGlvbiB0cmFja0dyb3d0aEZ1bmN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6
aW5nRGF0YSwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlTG9naWNhbFNwYWNlKQpAQCAtNjY2LDkgKzcw
Nyw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVjdG9yPEdy
aWRUcmFjayo+JiB0cmFja3MsIFZlY3Rvcjx1bnNpCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdHJhY2tzU2l6ZTsgKytpKSB7CiAgICAgICAgIEdyaWRUcmFjayYgdHJhY2sgPSAqdHJh
Y2tzW2ldOwotICAgICAgICBMYXlvdXRVbml0IHRyYWNrQnJlYWR0aCA9ICh0cmFja3NbaV0tPip0
cmFja0dldHRlcikoKTsKLSAgICAgICAgYm9vbCBpbmZpbml0ZUdyb3d0aFBvdGVudGlhbCA9IHRy
YWNrLm1fbWF4QnJlYWR0aCA9PSBpbmZpbml0eTsKLSAgICAgICAgTGF5b3V0VW5pdCB0cmFja0dy
b3d0aFBvdGVudGlhbCA9IGluZmluaXRlR3Jvd3RoUG90ZW50aWFsID8gdHJhY2subV9tYXhCcmVh
ZHRoIDogdHJhY2subV9tYXhCcmVhZHRoIC0gdHJhY2tCcmVhZHRoOworICAgICAgICBjb25zdCBM
YXlvdXRVbml0JiB0cmFja0JyZWFkdGggPSAodHJhY2tzW2ldLT4qdHJhY2tHZXR0ZXIpKCk7Cisg
ICAgICAgIGJvb2wgaW5maW5pdGVHcm93dGhQb3RlbnRpYWwgPSB0cmFjay5ncm93dGhMaW1pdElz
SW5maW5pdGUoKTsKKyAgICAgICAgTGF5b3V0VW5pdCB0cmFja0dyb3d0aFBvdGVudGlhbCA9IGlu
ZmluaXRlR3Jvd3RoUG90ZW50aWFsID8gdHJhY2suZ3Jvd3RoTGltaXQoKSA6IHRyYWNrLmdyb3d0
aExpbWl0KCkgLSB0cmFja0JyZWFkdGg7CiAgICAgICAgIHNpemluZ0RhdGEuZGlzdHJpYnV0ZVRy
YWNrVmVjdG9yW2ldID0gdHJhY2tCcmVhZHRoOwogICAgICAgICAvLyBMZXQncyBhdm9pZCBjb21w
dXRpbmcgYXZhaWxhYmxlTG9naWNhbFNwYWNlU2hhcmUgYXMgbXVjaCBhcyBwb3NzaWJsZSBhcyBp
dCdzIGEgaG90IHNwb3QgaW4gcGVyZm9ybWFuY2UgdGVzdHMuCiAgICAgICAgIGlmICh0cmFja0dy
b3d0aFBvdGVudGlhbCA+IDAgfHwgaW5maW5pdGVHcm93dGhQb3RlbnRpYWwpIHsKQEAgLTcwNiw3
ICs3NDcsNyBAQCBib29sIFJlbmRlckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJl
YWR0aChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0cmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6
ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIGkpOwogICAgICAgICBjb25z
dCBHcmlkTGVuZ3RoJiBtaW5UcmFja0JyZWFkdGggPSB0cmFja1NpemUubWluVHJhY2tCcmVhZHRo
KCk7Ci0gICAgICAgIGlmIChjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aChkaXJlY3Rpb24s
IG1pblRyYWNrQnJlYWR0aCkgPiB0cmFja3NbaV0ubV91c2VkQnJlYWR0aCkKKyAgICAgICAgaWYg
KGNvbXB1dGVVc2VkQnJlYWR0aE9mTWluTGVuZ3RoKGRpcmVjdGlvbiwgbWluVHJhY2tCcmVhZHRo
KSA+IHRyYWNrc1tpXS5iYXNlU2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk1OCw3ICs5OTksNyBAQCB2b2lkIFJlbmRlckdyaWQ6
OmxheW91dEdyaWRJdGVtcygpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiByb3cgOiBzaXppbmdE
YXRhLnJvd1RyYWNrcykKLSAgICAgICAgc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCkg
KyByb3cubV91c2VkQnJlYWR0aCk7CisgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhl
aWdodCgpICsgcm93LmJhc2VTaXplKCkpOwogCiAgICAgLy8gbWluIC8gbWF4IGxvZ2ljYWwgaGVp
Z2h0IGlzIGhhbmRsZWQgaW4gdXBkYXRlTG9naWNhbEhlaWdodCgpLgogICAgIHNldExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodCgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7
CkBAIC05NzcsNyArMTAxOCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVh
ZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrCiAgICAgY29uc3Qg
R3JpZFNwYW4mIHNwYW4gPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gY29vcmRpbmF0ZS5j
b2x1bW5zIDogY29vcmRpbmF0ZS5yb3dzOwogICAgIExheW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRo
ID0gMDsKICAgICBmb3IgKGF1dG8mIHRyYWNrUG9zaXRpb24gOiBzcGFuKQotICAgICAgICBncmlk
QXJlYUJyZWFkdGggKz0gdHJhY2tzW3RyYWNrUG9zaXRpb24udG9JbnQoKV0ubV91c2VkQnJlYWR0
aDsKKyAgICAgICAgZ3JpZEFyZWFCcmVhZHRoICs9IHRyYWNrc1t0cmFja1Bvc2l0aW9uLnRvSW50
KCldLmJhc2VTaXplKCk7CiAgICAgcmV0dXJuIGdyaWRBcmVhQnJlYWR0aDsKIH0KIApAQCAtOTg2
LDEyICsxMDI3LDEyIEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9zaXRpb25zKGNv
bnN0IEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQogICAgIG1fY29sdW1uUG9zaXRpb25zLnJl
c2l6ZVRvRml0KHNpemluZ0RhdGEuY29sdW1uVHJhY2tzLnNpemUoKSArIDEpOwogICAgIG1fY29s
dW1uUG9zaXRpb25zWzBdID0gYm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fY29sdW1uUG9zaXRpb25zLnNpemUoKSAtIDE7ICsraSkKLSAgICAg
ICAgbV9jb2x1bW5Qb3NpdGlvbnNbaSArIDFdID0gbV9jb2x1bW5Qb3NpdGlvbnNbaV0gKyBzaXpp
bmdEYXRhLmNvbHVtblRyYWNrc1tpXS5tX3VzZWRCcmVhZHRoOworICAgICAgICBtX2NvbHVtblBv
c2l0aW9uc1tpICsgMV0gPSBtX2NvbHVtblBvc2l0aW9uc1tpXSArIHNpemluZ0RhdGEuY29sdW1u
VHJhY2tzW2ldLmJhc2VTaXplKCk7CiAKICAgICBtX3Jvd1Bvc2l0aW9ucy5yZXNpemVUb0ZpdChz
aXppbmdEYXRhLnJvd1RyYWNrcy5zaXplKCkgKyAxKTsKICAgICBtX3Jvd1Bvc2l0aW9uc1swXSA9
IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9yb3dQb3NpdGlvbnMuc2l6ZSgpIC0gMTsgKytpKQotICAgICAgICBtX3Jvd1Bvc2l0aW9uc1tp
ICsgMV0gPSBtX3Jvd1Bvc2l0aW9uc1tpXSArIHNpemluZ0RhdGEucm93VHJhY2tzW2ldLm1fdXNl
ZEJyZWFkdGg7CisgICAgICAgIG1fcm93UG9zaXRpb25zW2kgKyAxXSA9IG1fcm93UG9zaXRpb25z
W2ldICsgc2l6aW5nRGF0YS5yb3dUcmFja3NbaV0uYmFzZVNpemUoKTsKIH0KIAogTGF5b3V0UG9p
bnQgUmVuZGVyR3JpZDo6ZmluZENoaWxkTG9naWNhbFBvc2l0aW9uKFJlbmRlckJveCYgY2hpbGQs
IGNvbnN0IEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmgKaW5kZXggN2YzMDE4OGMzNWEyNDI2MTc1OGQ1Y2VlZjA1N2ViZmQ1ZTAwNWNh
ZS4uZDg4NmM3MmM4OGM3ZDQzYmJlODYzMTBlYzU1NzNhZjYyMWMwYzY4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGVhckdyaWQoKTsKIAogICAgIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyR3JpZDo6
KiBTaXppbmdGdW5jdGlvbikoUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBW
ZWN0b3I8R3JpZFRyYWNrPiYpOwotICAgIHR5cGVkZWYgTGF5b3V0VW5pdCAoR3JpZFRyYWNrOjoq
IEFjY3VtdWxhdG9yR2V0dGVyKSgpIGNvbnN0OworICAgIHR5cGVkZWYgY29uc3QgTGF5b3V0VW5p
dCYgKEdyaWRUcmFjazo6KiBBY2N1bXVsYXRvckdldHRlcikoKSBjb25zdDsKICAgICB0eXBlZGVm
IHZvaWQgKEdyaWRUcmFjazo6KiBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbikoTGF5b3V0VW5pdCk7
CiAgICAgdHlwZWRlZiBib29sIChHcmlkVHJhY2tTaXplOjoqIEZpbHRlckZ1bmN0aW9uKSgpIGNv
bnN0OwogICAgIHZvaWQgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9y
SXRlbXMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYsIEdyaWRJdGVt
V2l0aFNwYW4mLCBGaWx0ZXJGdW5jdGlvbiwgU2l6aW5nRnVuY3Rpb24sIEFjY3VtdWxhdG9yR2V0
dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbiwgRmlsdGVyRnVuY3Rpb24gZ3Jvd0Fib3ZlTWF4
QnJlYWR0aEZpbHRlckZ1bmN0aW9uID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjBlMmViYTgxYzUyM2M3
MDY2NTI4MTY4Njc2OTE4YjI2MzkyNDUwYS4uNDRhYzA5ZmVjMzMzMDZhN2UxOTVjYTAzNDUzZWY2
NWQyOWJiZjAxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAxLTIyICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3JpZCBMYXlv
dXRdIFRyYWNrcycgZ3Jvd3RoIGxpbWl0cyBtdXN0IGJlID49IGJhc2Ugc2l6ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDU0MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1s
YXlvdXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVtbnMtcmVzb2x1dGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVt
bnMtcmVzb2x1dGlvbi5odG1sOgorCiAyMDE1LTAxLTIxICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIFNraXAgaXRl
bXMgc3Bhbm5pbmcgZmxleCB0cmFja3Mgd2hlbiBzaXppbmcgY29udGVudCBiYXNlZCB0cmFja3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29udGVu
dC1zaXplZC1jb2x1bW5zLXJlc29sdXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVtbnMtcmVzb2x1dGlvbi1l
eHBlY3RlZC50eHQKaW5kZXggYTExMTNmOTJjM2U1NjU2NGQ3MzkwMmZlNWUwN2YyZDEzOTBkN2I1
OC4uOGE1ZmE1OTQwYTdlZmQxYjdhNWU1NGVlY2Q1MjM5ODYwYThlZjRkYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVt
bnMtcmVzb2x1dGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3Jp
ZC1sYXlvdXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVtbnMtcmVzb2x1dGlvbi1leHBlY3RlZC50
eHQKQEAgLTI4LDIwICsyOCwyMCBAQCBQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRN
YXhDb250ZW50QW5kTWF4Q29udGVudEZpeGVkVW5zb3J0ZWRDb25zdHJhaW5lZAogQ2hlY2sgdGhh
dCBpdGVtcyBhcmUgcHJvY2Vzc2VkIGJ5IGFzY2VuZGluZyBzcGFuIHRvIGNvbXB1dGUgdHJhY2sg
YnJlYWR0aHMgYWxsb3dpbmcgZXh0cmEgc3BhY2UgZGlzdHJpYnV0aW9uLgogUEFTUyB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShncmlkTWluQ29udGVudEZpeGVkQW5kQXV0b1Vuc29ydGVkLCAnJyku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiMTVw
eCA5MHB4IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkQXV0b0FuZEF1dG9VbnNv
cnRlZCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
JykgaXMgIjMwcHggNjBweCIKLVBBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZE1pbkNv
bnRlbnRBbmRNaW5Db250ZW50Rml4ZWRVbnNvcnRlZCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJykgaXMgIjEwcHggNDBweCIKK1BBU1Mgd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZ3JpZE1pbkNvbnRlbnRBbmRNaW5Db250ZW50Rml4ZWRVbnNvcnRl
ZCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJykg
aXMgIjBweCA0MHB4IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkTWF4Q29udGVu
dEFuZE1pbkNvbnRlbnRVbnNvcnRlZCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC10ZW1wbGF0ZS1jb2x1bW5zJykgaXMgIjBweCA3MHB4IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShncmlkRml4ZWRNaW5Db250ZW50QW5kTWF4Q29udGVudFVuc29ydGVkLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiMTBweCA3
MHB4IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkRml4ZWRNYXhDb250ZW50QW5k
TWluQ29udGVudFVuc29ydGVkLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRl
bXBsYXRlLWNvbHVtbnMnKSBpcyAiNTBweCA0MHB4IgotUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShncmlkTWluQ29udGVudEFuZE1heENvbnRlbnRGaXhlZFVuc29ydGVkLCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiMTBweCA5MHB4
IgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkTWluQ29udGVudEFuZE1heENvbnRl
bnRGaXhlZFVuc29ydGVkLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBs
YXRlLWNvbHVtbnMnKSBpcyAiMHB4IDkwcHgiCiBQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGdyaWRNYXhDb250ZW50Rml4ZWRBbmRBdXRvVW5zb3J0ZWQsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtdGVtcGxhdGUtY29sdW1ucycpIGlzICIxNXB4IDcwcHgiCiBQQVNTIHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRBdXRvTWluQ29udGVudFVuc29ydGVkLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiNTBweCA2
MHB4IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkQXV0b01heENvbnRlbnRVbnNv
cnRlZCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
JykgaXMgIjBweCA5MHB4IgotUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkTWF4Q29u
dGVudEFuZE1pbkNvbnRlbnRGaXhlZFVuc29ydGVkLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdl
YmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiNTVweCA0MHB4IgotUEFTUyB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShncmlkTWF4Q29udGVudEFuZE1heENvbnRlbnRGaXhlZFVuc29ydGVk
LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBp
cyAiNzVweCA3MHB4IgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkTWF4Q29udGVu
dEFuZE1pbkNvbnRlbnRGaXhlZFVuc29ydGVkLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiNTBweCA0MHB4IgorUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShncmlkTWF4Q29udGVudEFuZE1heENvbnRlbnRGaXhlZFVuc29ydGVkLCAn
JykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAi
NDBweCA3MHB4IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkTWluQ29udGVudEZp
eGVkQW5kQXV0b0Fib3ZlTGltaXRzLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiMTVweCA5NXB4IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShncmlkTWF4Q29udGVudEZpeGVkQW5kQXV0b0Fib3ZlTGltaXRzLCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiNjVweCA4NXB4
IgogUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShncmlkTWluQ29udGVudEZpeGVkQW5kRml4
ZWRGaXhlZEFuZEF1dG8sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxh
dGUtY29sdW1ucycpIGlzICIyMHB4IDIwcHggNjBweCIKLVBBU1Mgd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZ3JpZEF1dG9BbmRGaXhlZEZpeGVkQW5kTWF4Q29udGVudEZpeGVkLCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiNDBweCAyMHB4
IDkwcHgiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRBdXRvQW5kRml4ZWRGaXhl
ZEFuZE1heENvbnRlbnRGaXhlZCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zJykgaXMgIjcwcHggMjBweCA2MHB4IgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbnRlbnQtc2l6ZWQtY29sdW1ucy1yZXNvbHV0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbnRlbnQtc2l6
ZWQtY29sdW1ucy1yZXNvbHV0aW9uLmh0bWwKaW5kZXggNzU2MWVmOGU1OGE5YWVmODZiNjkzNmIw
ZDlmODMxZjk4N2QwMjU2OS4uYWJkNjY1OWEzODk5ZDNkZWUwNjEzOTMzZTNiZWZiMDdlZTU0M2E1
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250
ZW50LXNpemVkLWNvbHVtbnMtcmVzb2x1dGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L2dyaWQtY29udGVudC1zaXplZC1jb2x1bW5zLXJlc29sdXRpb24uaHRt
bApAQCAtMzMyLDIxICszMzIsMjEgQEAgZGVidWcoIiIpOwogZGVidWcoIkNoZWNrIHRoYXQgaXRl
bXMgYXJlIHByb2Nlc3NlZCBieSBhc2NlbmRpbmcgc3BhbiB0byBjb21wdXRlIHRyYWNrIGJyZWFk
dGhzIGFsbG93aW5nIGV4dHJhIHNwYWNlIGRpc3RyaWJ1dGlvbi4iKTsKIHRlc3RHcmlkQ29sdW1u
c1ZhbHVlcygiZ3JpZE1pbkNvbnRlbnRGaXhlZEFuZEF1dG9VbnNvcnRlZCIsICIxNXB4IDkwcHgi
KTsKIHRlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3JpZEF1dG9BbmRBdXRvVW5zb3J0ZWQiLCAiMzBw
eCA2MHB4Iik7Ci10ZXN0R3JpZENvbHVtbnNWYWx1ZXMoImdyaWRNaW5Db250ZW50QW5kTWluQ29u
dGVudEZpeGVkVW5zb3J0ZWQiLCAiMTBweCA0MHB4Iik7Cit0ZXN0R3JpZENvbHVtbnNWYWx1ZXMo
ImdyaWRNaW5Db250ZW50QW5kTWluQ29udGVudEZpeGVkVW5zb3J0ZWQiLCAiMHB4IDQwcHgiKTsK
IHRlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3JpZE1heENvbnRlbnRBbmRNaW5Db250ZW50VW5zb3J0
ZWQiLCAiMHB4IDcwcHgiKTsKIHRlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3JpZEZpeGVkTWluQ29u
dGVudEFuZE1heENvbnRlbnRVbnNvcnRlZCIsICIxMHB4IDcwcHgiKTsKIHRlc3RHcmlkQ29sdW1u
c1ZhbHVlcygiZ3JpZEZpeGVkTWF4Q29udGVudEFuZE1pbkNvbnRlbnRVbnNvcnRlZCIsICI1MHB4
IDQwcHgiKTsKLXRlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3JpZE1pbkNvbnRlbnRBbmRNYXhDb250
ZW50Rml4ZWRVbnNvcnRlZCIsICIxMHB4IDkwcHgiKTsKK3Rlc3RHcmlkQ29sdW1uc1ZhbHVlcygi
Z3JpZE1pbkNvbnRlbnRBbmRNYXhDb250ZW50Rml4ZWRVbnNvcnRlZCIsICIwcHggOTBweCIpOwog
dGVzdEdyaWRDb2x1bW5zVmFsdWVzKCJncmlkTWF4Q29udGVudEZpeGVkQW5kQXV0b1Vuc29ydGVk
IiwgIjE1cHggNzBweCIpOwogdGVzdEdyaWRDb2x1bW5zVmFsdWVzKCJncmlkQXV0b01pbkNvbnRl
bnRVbnNvcnRlZCIsICI1MHB4IDYwcHgiKTsKIHRlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3JpZEF1
dG9NYXhDb250ZW50VW5zb3J0ZWQiLCAiMHB4IDkwcHgiKTsKLXRlc3RHcmlkQ29sdW1uc1ZhbHVl
cygiZ3JpZE1heENvbnRlbnRBbmRNaW5Db250ZW50Rml4ZWRVbnNvcnRlZCIsICI1NXB4IDQwcHgi
KTsKLXRlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3JpZE1heENvbnRlbnRBbmRNYXhDb250ZW50Rml4
ZWRVbnNvcnRlZCIsICI3NXB4IDcwcHgiKTsKK3Rlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3JpZE1h
eENvbnRlbnRBbmRNaW5Db250ZW50Rml4ZWRVbnNvcnRlZCIsICI1MHB4IDQwcHgiKTsKK3Rlc3RH
cmlkQ29sdW1uc1ZhbHVlcygiZ3JpZE1heENvbnRlbnRBbmRNYXhDb250ZW50Rml4ZWRVbnNvcnRl
ZCIsICI0MHB4IDcwcHgiKTsKIAogdGVzdEdyaWRDb2x1bW5zVmFsdWVzKCJncmlkTWluQ29udGVu
dEZpeGVkQW5kQXV0b0Fib3ZlTGltaXRzIiwgIjE1cHggOTVweCIpOwogdGVzdEdyaWRDb2x1bW5z
VmFsdWVzKCJncmlkTWF4Q29udGVudEZpeGVkQW5kQXV0b0Fib3ZlTGltaXRzIiwgIjY1cHggODVw
eCIpOwogdGVzdEdyaWRDb2x1bW5zVmFsdWVzKCJncmlkTWluQ29udGVudEZpeGVkQW5kRml4ZWRG
aXhlZEFuZEF1dG8iLCAiMjBweCAyMHB4IDYwcHgiKTsKLXRlc3RHcmlkQ29sdW1uc1ZhbHVlcygi
Z3JpZEF1dG9BbmRGaXhlZEZpeGVkQW5kTWF4Q29udGVudEZpeGVkIiwgIjQwcHggMjBweCA5MHB4
Iik7Cit0ZXN0R3JpZENvbHVtbnNWYWx1ZXMoImdyaWRBdXRvQW5kRml4ZWRGaXhlZEFuZE1heENv
bnRlbnRGaXhlZCIsICI3MHB4IDIwcHggNjBweCIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="270080"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>