<?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>112299</bug_id>
          
          <creation_ts>2013-03-13 16:34:06 -0700</creation_ts>
          <short_desc>[CSS Grid Layout] resolveContentBasedTrackSizingFunctions should iterate over the grid items not the grid tracks</short_desc>
          <delta_ts>2013-03-14 13:06:51 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854784</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-03-13 16:34:06 -0700</bug_when>
    <thetext>While implementing the first layout algorithm, we made the choice to do a grid tracks&apos; iteration in resolveContentBasedTrackSizingFunctions, ignoring the fact that the specification does a grid items&apos;.

Iterating over grid items is more efficient for sparse grids. However it requires an additional pass over the grid tracks as we don&apos;t know which ones have been touched during the loop so it&apos;s difficult to say in the general case.

However to properly implement grid spanning, we need to consider grid items and not grid tracks as a single grid item can now (differently) contribute to several grid tracks. This change will align our layout algorithm with the specification to make it easier to implement spanning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854817</commentid>
    <comment_count>1</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-03-13 17:33:49 -0700</bug_when>
    <thetext>Scratch my complexity analysis: it should be also better in the general case.

We currently always walk the full grid in each direction (which O(N*M) on a N * M grid), we also have to walk the grid items as we need to account for all of them during layout.

The algorithm in the specification keeps the mandatory grid items walking and add some extra grid track walking in the considered direction (O(N) or O(M)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854818</commentid>
    <comment_count>2</comment_count>
      <attachid>193028</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-03-13 17:37:22 -0700</bug_when>
    <thetext>Created attachment 193028
Proposed change 1: Added a filtering logic (similar to the spec), simplified the availableLogicalSpace update logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855440</commentid>
    <comment_count>3</comment_count>
      <attachid>193028</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 13:06:46 -0700</bug_when>
    <thetext>Comment on attachment 193028
Proposed change 1: Added a filtering logic (similar to the spec), simplified the availableLogicalSpace update logic.

Clearing flags on attachment: 193028

Committed r145840: &lt;http://trac.webkit.org/changeset/145840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855441</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 13:06:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193028</attachid>
            <date>2013-03-13 17:37:22 -0700</date>
            <delta_ts>2013-03-14 13:06:45 -0700</delta_ts>
            <desc>Proposed change 1: Added a filtering logic (similar to the spec), simplified the availableLogicalSpace update logic.</desc>
            <filename>bug-112299-20130313173319.patch</filename>
            <type>text/plain</type>
            <size>11506</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdkNzc2NjljODFmYTc1
Y2JjM2JhYjNjNDY3ZTNlMjBhODJhNGQyNi4uZTEwMTFlNGUwNTYxZTQ5OWNlZTNkMjQ5Y2YwNDIz
YWZmODIyMTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTEzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9ucyBzaG91bGQg
aXRlcmF0ZSBvdmVyIHRoZSBncmlkIGl0ZW1zIG5vdCB0aGUgZ3JpZCB0cmFja3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjI5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE91ciBpbml0aWFsIGltcGxl
bWVudGF0aW9uIHdvdWxkIGl0ZXJhdGUgb3ZlciB0aGUgZ3JpZCB0cmFja3MuIFRoaXMgd2FzIGVx
dWl2YWxlbnQgYXMgbm8gaXRlbXMgd2VyZSBzcGFubmluZyBidXQKKyAgICAgICAgb25jZSBncmlk
IGl0ZW1zIHNwYW5zLCB0aGV5IHN0YXJ0IHRvIGNvbnRyaWJ1dGUgdG8gc2V2ZXJhbCBncmlkIHRy
YWNrcyBkaWZmZXJlbnRseS4gVGhpcyBjaGFuZ2UgYWxpZ25zIG91ciBjb2RlCisgICAgICAgIHdp
dGggd2hhdCB0aGUgc3BlY2lmaWNhdGlvbiBkb2VzLgorCisgICAgICAgIE9uZSB1cHNpZGUgb2Yg
ZG9pbmcgYSBncmlkIGl0ZW1zJyBpdGVyYXRpb24gaXMgdGhhdCB0aGUgY29tcGxleGl0eSBzaG91
bGQgYmUgYmV0dGVyIGluIGFsbCBjYXNlcyBhcyB3ZSBkb24ndCBkbworICAgICAgICBhIGZ1bGwg
Z3JpZCB3YWxraW5nICh3aGljaCBpcyBwb3RlbnRpYWxseSBxdWFkcmF0aWMpLCBvbmx5IHNvbWUg
ZXh0cmEgZ3JpZCB0cmFja3MnIGl0ZXJhdGlvbiAod2hpY2ggYXJlIGxpbmVhcikuCisKKyAgICAg
ICAgUmVmYWN0b3JpbmcsIHRoZXJlIHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAgICAgTW92
ZWQgdGhlIHxhdmFpbGFibGVMb2dpY2FsU3BhY2V8IHVwZGF0ZSBpbnRvIHJlc29sdmVDb250ZW50
QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9ucy4gVGhpcyBzaW1wbGlmaWVzIGFuZCBjb25zb2xpZGF0
ZSBvdXIgaGFuZGxpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVD
b250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9ucyk6CisgICAgICAgIFVwZGF0ZWQgdGhlIGNv
cmUgbG9vcCB0byBpdGVyYXRvciBvdmVyIGdyaWQgaXRlbXMgYW5kIG5vdCBncmlkIHRyYWNrcy4g
VGhpcyBpZGVhIGlzIHRoYXQgbm93IHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0
aW9uc0Zvckl0ZW1zCisgICAgICAgIHVzZXMgYSBmaWx0ZXJpbmcgZnVuY3Rpb24gdG8gb25seSBw
cm9jZXNzIHRoZSBhcHByb3ByaWF0ZSBncmlkIHRyYWNrcy4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRl
bXMpOgorICAgICAgICBVcGRhdGVkIHRvIGZpbHRlciB0aGUgZ3JpZCB0cmFja3MgaGVyZSAodGhp
cyBtYXRjaGVzIHRoZSB8VHJhY2tzRm9yR3Jvd3RofCBzcGVjIGxvZ2ljIHRoYXQgaXMgbWVyZWx5
IGEgZmlsdGVyaW5nIGZ1bmN0aW9uKS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
Lmg6CisgICAgICAgIEFkZGVkIGEgbmV3IHR5cGVkZWYgYW5kIHVwZGF0ZWQgcmVzb2x2ZUNvbnRl
bnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMgdG8gdXNlIGl0LgorCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRUcmFja1NpemU6Omhhc01pbk9yTWF4Q29udGVudE1pblRyYWNrQnJlYWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkVHJhY2tTaXplOjpoYXNNYXhDb250ZW50TWluVHJhY2tCcmVhZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemU6Omhhc01pbk9yTWF4Q29udGVudE1heFRy
YWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXplOjpoYXNNYXhDb250
ZW50TWF4VHJhY2tCcmVhZHRoKToKKyAgICAgICAgQWRkZWQgdGhlIGZvbGxvd2luZyBmaWx0ZXJp
bmcgZnVuY3Rpb24sIHdoaWNoIG1hdGNoZXMgdGhlIHZhbHVlcyBmcm9tIHxUcmFja3NGb3JHcm93
dGh8IGluIHRoZSBzcGVjaWZpY2F0aW9uLgorCiAyMDEzLTAzLTEzICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRocmVhZGVkIEhUTUwgUGFyc2VyIGlzIG1pc3Np
bmcgZmVhdHVyZSBkZWZpbmUgZmxhZ3MgaW4gYWxsIGJ1dCBDaHJvbWl1bSBwb3J0J3MgYnVpbGQg
ZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBmNmRhMDFj
MTZjZGIwYjA4NmY0ZWI4NjVmZjc0N2RjZjZkYWE4ZGJlLi4yZGM4NDU2ZDViMjUyYTYxODdjMjE4
ZjllNGM4NGE1ZTlkNDQ3ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCkBAIC0yNzUsOCArMjc1LDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVh
ZHRoT2ZHcmlkVHJhY2tzKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICAgICAg
dHJhY2subV9tYXhCcmVhZHRoID0gY29tcHV0ZVVzZWRCcmVhZHRoT2ZNYXhMZW5ndGgoZGlyZWN0
aW9uLCBtYXhUcmFja0JyZWFkdGgpOwogCiAgICAgICAgIHRyYWNrLm1fbWF4QnJlYWR0aCA9IHN0
ZDo6bWF4KHRyYWNrLm1fbWF4QnJlYWR0aCwgdHJhY2subV91c2VkQnJlYWR0aCk7Ci0KLSAgICAg
ICAgYXZhaWxhYmxlTG9naWNhbFNwYWNlIC09IHRyYWNrLm1fdXNlZEJyZWFkdGg7CiAgICAgfQog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBjYWxsIHJlc29sdmVDb250ZW50QmFzZWRUcmFj
a1NpemluZ0Z1bmN0aW9ucyBpZiB3ZSBoYXZlIG5vIG1pbi1jb250ZW50IC8gbWF4LWNvbnRlbnQg
dHJhY2tzLgpAQCAtNDA1LDUwICs0MDMsNDMgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjptYXhD
b250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgVHJhY2tTaXppbmdEaXJlY3Rpb24KIAog
dm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnMo
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1u
VHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tzLCBMYXlvdXRVbml0JiBhdmFpbGFi
bGVMb2dpY2FsU3BhY2UpCiB7Ci0gICAgLy8gRklYTUU6IFNwbGl0IHRoZSBncmlkIHRyYWNrcyBv
bmNlIHdlIHN1cHBvcnQgc3Bhbm5pbmcgb3IgZnJhY3Rpb25zIChzdGVwIDEgYW5kIDIgb2YgdGhl
IGFsZ29yaXRobSkuCisgICAgLy8gRklYTUU6IFNwbGl0IHRoZSBncmlkIHRyYWNrcyBvbmNlIHdl
IHN1cHBvcnQgZnJhY3Rpb25zIChzdGVwIDEgb2YgdGhlIGFsZ29yaXRobSkuCiAKICAgICBWZWN0
b3I8R3JpZFRyYWNrPiYgdHJhY2tzID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGNvbHVt
blRyYWNrcyA6IHJvd1RyYWNrczsKIAorICAgIC8vIEZJWE1FOiBQZXIgc3RlcCAyIG9mIHRoZSBz
cGVjaWZpY2F0aW9uLCB3ZSBzaG91bGQgb3JkZXIgdGhlIGdyaWQgaXRlbXMgYnkgaW5jcmVhc2lu
ZyBzcGFuLgorICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgcmVzb2x2ZUNv
bnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoZGlyZWN0aW9uLCBjb2x1bW5U
cmFja3MsIHJvd1RyYWNrcywgY2hpbGQsICZHcmlkVHJhY2tTaXplOjpoYXNNaW5Pck1heENvbnRl
bnRNaW5UcmFja0JyZWFkdGgsICZSZW5kZXJHcmlkOjptaW5Db250ZW50Rm9yQ2hpbGQsICZHcmlk
VHJhY2s6OnVzZWRCcmVhZHRoLCAmR3JpZFRyYWNrOjpncm93VXNlZEJyZWFkdGgpOworICAgICAg
ICByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyhkaXJlY3Rp
b24sIGNvbHVtblRyYWNrcywgcm93VHJhY2tzLCBjaGlsZCwgJkdyaWRUcmFja1NpemU6Omhhc01h
eENvbnRlbnRNaW5UcmFja0JyZWFkdGgsICZSZW5kZXJHcmlkOjptYXhDb250ZW50Rm9yQ2hpbGQs
ICZHcmlkVHJhY2s6OnVzZWRCcmVhZHRoLCAmR3JpZFRyYWNrOjpncm93VXNlZEJyZWFkdGgpOwor
ICAgICAgICByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyhk
aXJlY3Rpb24sIGNvbHVtblRyYWNrcywgcm93VHJhY2tzLCBjaGlsZCwgJkdyaWRUcmFja1NpemU6
Omhhc01pbk9yTWF4Q29udGVudE1heFRyYWNrQnJlYWR0aCwgJlJlbmRlckdyaWQ6Om1pbkNvbnRl
bnRGb3JDaGlsZCwgJkdyaWRUcmFjazo6bWF4QnJlYWR0aElmTm90SW5maW5pdGUsICZHcmlkVHJh
Y2s6Omdyb3dNYXhCcmVhZHRoKTsKKyAgICAgICAgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6
aW5nRnVuY3Rpb25zRm9ySXRlbXMoZGlyZWN0aW9uLCBjb2x1bW5UcmFja3MsIHJvd1RyYWNrcywg
Y2hpbGQsICZHcmlkVHJhY2tTaXplOjpoYXNNYXhDb250ZW50TWF4VHJhY2tCcmVhZHRoLCAmUmVu
ZGVyR3JpZDo6bWF4Q29udGVudEZvckNoaWxkLCAmR3JpZFRyYWNrOjptYXhCcmVhZHRoSWZOb3RJ
bmZpbml0ZSwgJkdyaWRUcmFjazo6Z3Jvd01heEJyZWFkdGgpOworICAgIH0KKwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEdy
aWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUoZGlyZWN0aW9uLCBpKTsKICAg
ICAgICAgR3JpZFRyYWNrJiB0cmFjayA9IHRyYWNrc1tpXTsKLSAgICAgICAgY29uc3QgTGVuZ3Ro
JiBtaW5UcmFja0JyZWFkdGggPSB0cmFja1NpemUubWluVHJhY2tCcmVhZHRoKCk7Ci0gICAgICAg
IGlmIChtaW5UcmFja0JyZWFkdGguaXNNaW5Db250ZW50KCkgfHwgbWluVHJhY2tCcmVhZHRoLmlz
TWF4Q29udGVudCgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG9sZFVzZWRCcmVhZHRoID0g
dHJhY2subV91c2VkQnJlYWR0aDsKLSAgICAgICAgICAgIHJlc29sdmVDb250ZW50QmFzZWRUcmFj
a1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKGRpcmVjdGlvbiwgY29sdW1uVHJhY2tzLCByb3dUcmFj
a3MsIGksICZSZW5kZXJHcmlkOjptaW5Db250ZW50Rm9yQ2hpbGQsICZHcmlkVHJhY2s6OnVzZWRC
cmVhZHRoLCAmR3JpZFRyYWNrOjpncm93VXNlZEJyZWFkdGgpOwotICAgICAgICAgICAgYXZhaWxh
YmxlTG9naWNhbFNwYWNlIC09ICh0cmFjay5tX3VzZWRCcmVhZHRoIC0gb2xkVXNlZEJyZWFkdGgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1pblRyYWNrQnJlYWR0aC5pc01heENvbnRlbnQo
KSkgewotICAgICAgICAgICAgTGF5b3V0VW5pdCBvbGRVc2VkQnJlYWR0aCA9IHRyYWNrLm1fdXNl
ZEJyZWFkdGg7Ci0gICAgICAgICAgICByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5j
dGlvbnNGb3JJdGVtcyhkaXJlY3Rpb24sIGNvbHVtblRyYWNrcywgcm93VHJhY2tzLCBpLCAmUmVu
ZGVyR3JpZDo6bWF4Q29udGVudEZvckNoaWxkLCAmR3JpZFRyYWNrOjp1c2VkQnJlYWR0aCwgJkdy
aWRUcmFjazo6Z3Jvd1VzZWRCcmVhZHRoKTsKLSAgICAgICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxT
cGFjZSAtPSAodHJhY2subV91c2VkQnJlYWR0aCAtIG9sZFVzZWRCcmVhZHRoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGNvbnN0IExlbmd0aCYgbWF4VHJhY2tCcmVhZHRoID0gdHJhY2tTaXplLm1h
eFRyYWNrQnJlYWR0aCgpOwotICAgICAgICBpZiAobWF4VHJhY2tCcmVhZHRoLmlzTWluQ29udGVu
dCgpIHx8IG1heFRyYWNrQnJlYWR0aC5pc01heENvbnRlbnQoKSkKLSAgICAgICAgICAgIHJlc29s
dmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKGRpcmVjdGlvbiwgY29s
dW1uVHJhY2tzLCByb3dUcmFja3MsIGksICZSZW5kZXJHcmlkOjptaW5Db250ZW50Rm9yQ2hpbGQs
ICZHcmlkVHJhY2s6Om1heEJyZWFkdGhJZk5vdEluZmluaXRlLCAmR3JpZFRyYWNrOjpncm93TWF4
QnJlYWR0aCk7Ci0KLSAgICAgICAgaWYgKG1heFRyYWNrQnJlYWR0aC5pc01heENvbnRlbnQoKSkK
LSAgICAgICAgICAgIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0
ZW1zKGRpcmVjdGlvbiwgY29sdW1uVHJhY2tzLCByb3dUcmFja3MsIGksICZSZW5kZXJHcmlkOjpt
YXhDb250ZW50Rm9yQ2hpbGQsICZHcmlkVHJhY2s6Om1heEJyZWFkdGhJZk5vdEluZmluaXRlLCAm
R3JpZFRyYWNrOjpncm93TWF4QnJlYWR0aCk7Ci0KICAgICAgICAgaWYgKHRyYWNrLm1fbWF4QnJl
YWR0aCA9PSBpbmZpbml0eSkKICAgICAgICAgICAgIHRyYWNrLm1fbWF4QnJlYWR0aCA9IHRyYWNr
Lm1fdXNlZEJyZWFkdGg7CisKKyAgICAgICAgYXZhaWxhYmxlTG9naWNhbFNwYWNlIC09IHRyYWNr
Lm1fdXNlZEJyZWFkdGg7CiAgICAgfQogfQogCi12b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVDb250
ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgVmVjdG9yPEdyaWRU
cmFjaz4mIHJvd1RyYWNrcywgc2l6ZV90IHRyYWNrSW5kZXgsIFNpemluZ0Z1bmN0aW9uIHNpemlu
Z0Z1bmN0aW9uLCBBY2N1bXVsYXRvckdldHRlciB0cmFja0dldHRlciwgQWNjdW11bGF0b3JHcm93
RnVuY3Rpb24gdHJhY2tHcm93dGhGdW5jdGlvbikKK3ZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNv
bnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3Jp
ZFRyYWNrPiYgcm93VHJhY2tzLCBSZW5kZXJCb3gqIGdyaWRJdGVtLCBGaWx0ZXJGdW5jdGlvbiBm
aWx0ZXJGdW5jdGlvbiwgU2l6aW5nRnVuY3Rpb24gc2l6aW5nRnVuY3Rpb24sIEFjY3VtdWxhdG9y
R2V0dGVyIHRyYWNrR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbiB0cmFja0dyb3d0aEZ1
bmN0aW9uKQogeworICAgIGNvbnN0IEdyaWRDb29yZGluYXRlIGNvb3JkaW5hdGUgPSBjYWNoZWRH
cmlkQ29vcmRpbmF0ZShncmlkSXRlbSk7CisgICAgLy8gRklYTUU6IElmIHRoZSBncmlkIGl0ZW0g
c3BhbnMgc2V2ZXJhbCBncmlkIHRyYWNrcywgd2Ugc2hvdWxkIGhhbmRsZSBhbGwgb2YgdGhlbSwg
bm90IGp1c3QgdGhlIGZpcnN0IG9uZS4KKyAgICBjb25zdCBzaXplX3QgdHJhY2tJbmRleCA9IChk
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBjb29yZGluYXRlLmNvbHVtbnMuaW5pdGlhbFBvc2l0
aW9uSW5kZXggOiBjb29yZGluYXRlLnJvd3MuaW5pdGlhbFBvc2l0aW9uSW5kZXg7CisgICAgY29u
c3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHRy
YWNrSW5kZXgpOworICAgIGlmICghKHRyYWNrU2l6ZS4qZmlsdGVyRnVuY3Rpb24pKCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIEdyaWRUcmFjayYgdHJhY2sgPSAoZGlyZWN0aW9uID09IEZvckNv
bHVtbnMpID8gY29sdW1uVHJhY2tzW3RyYWNrSW5kZXhdIDogcm93VHJhY2tzW3RyYWNrSW5kZXhd
OwotICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihtX2dyaWQsIGRpcmVjdGlvbiwgdHJhY2tJbmRl
eCk7Ci0gICAgd2hpbGUgKFJlbmRlckJveCogZ3JpZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3JpZEl0
ZW0oKSkgewotICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRTaXplID0gKHRoaXMtPipzaXppbmdG
dW5jdGlvbikoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgY29sdW1uVHJhY2tzKTsKLSAgICAgICAgTGF5
b3V0VW5pdCBhZGRpdGlvbmFsQnJlYWR0aFNwYWNlID0gY29udGVudFNpemUgLSAodHJhY2suKnRy
YWNrR2V0dGVyKSgpOwotICAgICAgICBWZWN0b3I8R3JpZFRyYWNrKj4gdHJhY2tzOwotICAgICAg
ICB0cmFja3MuYXBwZW5kKCZ0cmFjayk7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFz
cyBkaWZmZXJlbnQgdmFsdWVzIGZvciB8dHJhY2tzRm9yR3Jvd3RoQWJvdmVNYXhCcmVhZHRofC4K
LSAgICAgICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3ModHJhY2tzLCAmdHJhY2tzLCB0cmFja0dl
dHRlciwgdHJhY2tHcm93dGhGdW5jdGlvbiwgYWRkaXRpb25hbEJyZWFkdGhTcGFjZSk7Ci0gICAg
fQorICAgIExheW91dFVuaXQgY29udGVudFNpemUgPSAodGhpcy0+KnNpemluZ0Z1bmN0aW9uKShn
cmlkSXRlbSwgZGlyZWN0aW9uLCBjb2x1bW5UcmFja3MpOworICAgIExheW91dFVuaXQgYWRkaXRp
b25hbEJyZWFkdGhTcGFjZSA9IGNvbnRlbnRTaXplIC0gKHRyYWNrLip0cmFja0dldHRlcikoKTsK
KyAgICBWZWN0b3I8R3JpZFRyYWNrKj4gdHJhY2tzOworICAgIHRyYWNrcy5hcHBlbmQoJnRyYWNr
KTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgZGlmZmVyZW50IHZhbHVlcyBmb3IgfHRy
YWNrc0Zvckdyb3d0aEFib3ZlTWF4QnJlYWR0aHwuCisgICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFj
a3ModHJhY2tzLCAmdHJhY2tzLCB0cmFja0dldHRlciwgdHJhY2tHcm93dGhGdW5jdGlvbiwgYWRk
aXRpb25hbEJyZWFkdGhTcGFjZSk7CiB9CiAKIHN0YXRpYyBib29sIHNvcnRCeUdyaWRUcmFja0dy
b3d0aFBvdGVudGlhbChjb25zdCBHcmlkVHJhY2sqIHRyYWNrMSwgY29uc3QgR3JpZFRyYWNrKiB0
cmFjazIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCA0MGFiN2E5MDAy
ODYwNDljMmJmYWI2YmUzYjQxMjc2ZGY4MDk5M2RiLi5lYjJiMmFhZjJlZTRlZDJjZjQ3NjczZDc5
YTNkZGQwY2VlMjE4NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAg
LTEwNSw3ICsxMDUsOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVy
R3JpZDo6KiBTaXppbmdGdW5jdGlvbikoUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24s
IFZlY3RvcjxHcmlkVHJhY2s+Jik7CiAgICAgdHlwZWRlZiBMYXlvdXRVbml0IChHcmlkVHJhY2s6
OiogQWNjdW11bGF0b3JHZXR0ZXIpKCkgY29uc3Q7CiAgICAgdHlwZWRlZiB2b2lkIChHcmlkVHJh
Y2s6OiogQWNjdW11bGF0b3JHcm93RnVuY3Rpb24pKExheW91dFVuaXQpOwotICAgIHZvaWQgcmVz
b2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdE
aXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJh
Y2s+JiByb3dUcmFja3MsIHNpemVfdCwgU2l6aW5nRnVuY3Rpb24sIEFjY3VtdWxhdG9yR2V0dGVy
LCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbik7CisgICAgdHlwZWRlZiBib29sIChHcmlkVHJhY2tT
aXplOjoqIEZpbHRlckZ1bmN0aW9uKSgpIGNvbnN0OworICAgIHZvaWQgcmVzb2x2ZUNvbnRlbnRC
YXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZl
Y3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJhY2s+JiByb3dUcmFj
a3MsIFJlbmRlckJveCosIEZpbHRlckZ1bmN0aW9uLCBTaXppbmdGdW5jdGlvbiwgQWNjdW11bGF0
b3JHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uKTsKICAgICB2b2lkIGRpc3RyaWJ1dGVT
cGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYsIFZlY3RvcjxHcmlkVHJhY2sqPiogdHJh
Y2tzRm9yR3Jvd3RoQWJvdmVNYXhCcmVhZHRoLCBBY2N1bXVsYXRvckdldHRlciwgQWNjdW11bGF0
b3JHcm93RnVuY3Rpb24sIExheW91dFVuaXQmIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7CiAKICAg
ICBjb25zdCBHcmlkVHJhY2tTaXplJiBncmlkVHJhY2tTaXplKFRyYWNrU2l6aW5nRGlyZWN0aW9u
LCBzaXplX3QpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRUcmFja1NpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Hcmlk
VHJhY2tTaXplLmgKaW5kZXggNmQ1MjIyYzE5OTI5MmZmZmM5NGU0ZmRjNjlhY2RjYTViMzgxZjJh
YS4uMzNkMTk4YWZkNjhmZjc5MjlmZjU3ZTJkNjFiYzIzY2M5OGQ2Yjc1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRUcmFja1NpemUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFRyYWNrU2l6ZS5oCkBAIC05OCw2ICs5OCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlICYmIG1f
bWluVHJhY2tCcmVhZHRoID09IG90aGVyLm1fbWluVHJhY2tCcmVhZHRoICYmIG1fbWF4VHJhY2tC
cmVhZHRoID09IG1fbWF4VHJhY2tCcmVhZHRoOwogICAgIH0KIAorICAgIGJvb2wgaGFzTWluT3JN
YXhDb250ZW50TWluVHJhY2tCcmVhZHRoKCkgY29uc3QgeyByZXR1cm4gbWluVHJhY2tCcmVhZHRo
KCkuaXNNaW5Db250ZW50KCkgfHwgbWluVHJhY2tCcmVhZHRoKCkuaXNNYXhDb250ZW50KCk7IH0K
KyAgICBib29sIGhhc01heENvbnRlbnRNaW5UcmFja0JyZWFkdGgoKSBjb25zdCB7IHJldHVybiBt
aW5UcmFja0JyZWFkdGgoKS5pc01heENvbnRlbnQoKTsgfQorICAgIGJvb2wgaGFzTWluT3JNYXhD
b250ZW50TWF4VHJhY2tCcmVhZHRoKCkgY29uc3QgeyByZXR1cm4gbWF4VHJhY2tCcmVhZHRoKCku
aXNNaW5Db250ZW50KCkgfHwgbWF4VHJhY2tCcmVhZHRoKCkuaXNNYXhDb250ZW50KCk7IH0KKyAg
ICBib29sIGhhc01heENvbnRlbnRNYXhUcmFja0JyZWFkdGgoKSBjb25zdCB7IHJldHVybiBtYXhU
cmFja0JyZWFkdGgoKS5pc01heENvbnRlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIEdyaWRUcmFj
a1NpemVUeXBlIG1fdHlwZTsKICAgICBMZW5ndGggbV9taW5UcmFja0JyZWFkdGg7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>