<?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>215826</bug_id>
          
          <creation_ts>2020-08-25 14:42:22 -0700</creation_ts>
          <short_desc>REGRESSION (r263506): scale transform transitions won&apos;t overshoot</short_desc>
          <delta_ts>2020-09-03 02:18:36 -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>Animations</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213495</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215918</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Guan-tin Chien [:timdream]">timdream</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>dino</cc>
    
    <cc>graouts</cc>
    
    <cc>j</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682804</commentid>
    <comment_count>0</comment_count>
      <attachid>407234</attachid>
    <who name="Tim Guan-tin Chien [:timdream]">timdream</who>
    <bug_when>2020-08-25 14:42:22 -0700</bug_when>
    <thetext>Created attachment 407234
scale-test.html

STR:

See test case, a &lt;div&gt; comes with `transition: 1s transform cubic-bezier(0, 2, 1, 2)` set.

Expected:

The bezier curve should get the div to scale up a bit and does down to the final size during the CSS transition.

Actual:

The transition looks linear and disregard the curve set?

Note:

Firefox and Chrome goes with the expected behavior.

Version:

Release 110 (Safari 14.0, WebKit 15610.1.21.0.2)
macOS 10.15.5 (19F101)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682805</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-25 14:42:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/67759310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683354</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-27 06:46:05 -0700</bug_when>
    <thetext>This regressed with r263506, the fix for bug 213495.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683369</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-27 08:16:43 -0700</bug_when>
    <thetext>Strange, we are setting the correct animation-wide timing function in GraphicsLayerCA::setupAnimation() and then returning the correct, default linear timing function for the keyframe in GraphicsLayerCA::timingFunctionForAnimationValue().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683370</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-27 08:21:39 -0700</bug_when>
    <thetext>Applying the timing function to the keyframe instead of the CA animation fixes the issue. This could be a Core Animation bug or an unexpected behavior of the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683602</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-28 01:47:48 -0700</bug_when>
    <thetext>I confirmed this is an issue with Core Animation: setting the `timingFunction` property on a CAKeyframeAnimation clips the animation when the timing function is outside of the 0-1 range. However, applying the same timing function to the `timingFunctions` (plural) property addresses the issue.

This means that for CSS Animations this is not an issue since CSS Animations never apply an animation-wide timing function.

For CSS Transitions, we can work around this issue since there is a single interval.

However, for JS-originated animations which can have both multiple intervals (more than 2 keyframes) and an animation-wide timing function, we will require a fix to Core Animation.

Applying a workaround to fix CSS Transitions seems well worth it since:

1. this is a regression
2. the reported bug is about those specifically
3. they are more common than JS-originated animations at this stage (which never worked for this behavior)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683603</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-28 01:51:33 -0700</bug_when>
    <thetext>My plan is to add a new member to PlatformCAAnimation to return the number of values for an animation, which we&apos;ll use to determine whether we have an animation with 2 values or more to determine whether we should use the `timingFunctions` (plural) property rather than the `timingFunction` (singular) property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683608</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-28 03:09:00 -0700</bug_when>
    <thetext>Actually, it&apos;ll be even easier to use Animation::property() so that GraphicsLayerCA can tell we&apos;re dealing with a CSS Transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683613</commentid>
    <comment_count>8</comment_count>
      <attachid>407461</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-28 04:38:13 -0700</bug_when>
    <thetext>Created attachment 407461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683663</commentid>
    <comment_count>9</comment_count>
      <attachid>407461</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-08-28 09:26:02 -0700</bug_when>
    <thetext>Comment on attachment 407461
Patch

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

&gt; Source/WebCore/animation/KeyframeEffect.cpp:1680
&gt; +        // If we are dealing with a CSS Transition and using a cubic bezier timing function, we set up
&gt; +        // the Animation object to reflect this which will allow the GraphicsLayerCA code to set the
&gt; +        // timing function on the single keyframe interval rather than on the animation at large,
&gt; +        // working around a Core Animation issue where setting a cubic bezier on a CAKeyframeAnimation&apos;s
&gt; +        // timingFunction property can lead to clipped animations should a value be above 1.

I think this comment could be reduced to:
// Do blah to work around a limitation of Core Animation: webkit.org/b/215918

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:3341
&gt; +        // A CSS Transition is the only scenario where Animation::property() will have
&gt; +        // its mode set to SingleProperty. In this case, we don&apos;t set the animation-wide
&gt; +        // timing function, instead opting to set it using the timingFunctions (plural)
&gt; +        // property to work around a Core Animation issue where setting a cubic bezier
&gt; +        // on a CAKeyframeAnimation&apos;s timingFunction property (singular) can lead to
&gt; +        // clipped animations should a value be above 1.
&gt; +        // FIXME: https://bugs.webkit.org/show_bug.cgi?id=215918

I think this comment could be reduced to:
// Do blah to work around a limitation of Core Animation: webkit.org/b/215918

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:3357
&gt; +            // A CSS Transition is the only scenario where Animation::property() will have
&gt; +            // its mode set to SingleProperty. In this case, we chose not to set set the
&gt; +            // animation-wide timing function, so we set it on the single keyframe interval
&gt; +            // to work around a Core Animation issue where setting a cubic bezier on a
&gt; +            // CAKeyframeAnimation&apos;s timingFunction property (singular) can lead to clipped
&gt; +            // animations should a value be above 1.
&gt; +            // FIXME: https://bugs.webkit.org/show_bug.cgi?id=215918

I think this comment could be reduced to:
// Do blah to work around a limitation of Core Animation: webkit.org/b/215918

&gt; LayoutTests/webanimations/accelerated-css-transition-with-easing-y-axis-above-1.html:40
&gt; +    if (!UIHelper.isWebKit2())
&gt; +        await new Promise(requestAnimationFrame);

A bit weird. Can you just await UIHelper.renderingUpdate()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683667</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-28 09:43:18 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #9)
&gt; Comment on attachment 407461 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407461&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:1680
&gt; &gt; +        // If we are dealing with a CSS Transition and using a cubic bezier timing function, we set up
&gt; &gt; +        // the Animation object to reflect this which will allow the GraphicsLayerCA code to set the
&gt; &gt; +        // timing function on the single keyframe interval rather than on the animation at large,
&gt; &gt; +        // working around a Core Animation issue where setting a cubic bezier on a CAKeyframeAnimation&apos;s
&gt; &gt; +        // timingFunction property can lead to clipped animations should a value be above 1.
&gt; 
&gt; I think this comment could be reduced to:
&gt; // Do blah to work around a limitation of Core Animation: webkit.org/b/215918

I&apos;ll try to tone those down to only capture the bits relevant to the immediate code.

&gt; &gt; LayoutTests/webanimations/accelerated-css-transition-with-easing-y-axis-above-1.html:40
&gt; &gt; +    if (!UIHelper.isWebKit2())
&gt; &gt; +        await new Promise(requestAnimationFrame);
&gt; 
&gt; A bit weird. Can you just await UIHelper.renderingUpdate()?

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683670</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-08-28 09:48:09 -0700</bug_when>
    <thetext>Committed r266280: &lt;https://trac.webkit.org/changeset/266280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685221</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-03 02:18:36 -0700</bug_when>
    <thetext>*** Bug 216107 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>407234</attachid>
            <date>2020-08-25 14:42:22 -0700</date>
            <delta_ts>2020-08-25 16:49:31 -0700</delta_ts>
            <desc>scale-test.html</desc>
            <filename>file_215826.txt</filename>
            <type>text/html</type>
            <size>377</size>
            <attacher name="Tim Guan-tin Chien [:timdream]">timdream</attacher>
            
              <data encoding="base64">PGRpdiBpZD0ic2NhbGUiPg0KDQo8L2Rpdj4NCjxzdHlsZT4NCiNzY2FsZSB7DQogICAgd2lkdGg6
IDUwMHB4Ow0KICAgIGhlaWdodDogNTAwcHg7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOw0K
ICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07DQogICAgYmFja2dyb3VuZDogcmViZWNjYXB1cnBs
ZTsNCn0NCiNzY2FsZS5zaG93IHsNCiAgICB0cmFuc2l0aW9uOiAxcyB0cmFuc2Zvcm0gY3ViaWMt
YmV6aWVyKDAsIDIsIDEsIDIpOw0KICAgIHRyYW5zZm9ybTogbm9uZTsNCn0NCjwvc3R5bGU+DQo8
YnV0dG9uIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2FsZScpLmNsYXNzTGlz
dC50b2dnbGUoJ3Nob3cnKSI+VG9nZ2xlPC9idXR0b24+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407461</attachid>
            <date>2020-08-28 04:38:13 -0700</date>
            <delta_ts>2020-08-28 09:26:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215826-20200828133811.patch</filename>
            <type>text/plain</type>
            <size>9940</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIwMDQ2ZDg2NmM0OGQw
MGE3YjBkODJhZGYxZGRmMDM1NDFkOGNkMi4uZTFjYzMyOGIzNjBlMjlkYTY2NzEzMDJmNTBhNzFm
ZTY5OWFiNDc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA4LTI4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIy
NjM1MDYpOiBzY2FsZSB0cmFuc2Zvcm0gdHJhbnNpdGlvbnMgd29uJ3Qgb3ZlcnNob290CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MjYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzU5MzEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHdlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtY3Nz
LXRyYW5zaXRpb24td2l0aC1lYXNpbmcteS1heGlzLWFib3ZlLTEuaHRtbAorCisgICAgICAgIElu
IHIyNjM1MDYgd2UgbWFkZSBhIGNoYW5nZSB3aGVyZSBhY2NlbGVyYXRlZCBhbmltYXRpb25zIHdv
dWxkIHNldCB0aGVpciBhbmltYXRpb24td2lkZQorICAgICAgICB0aW1pbmcgZnVuY3Rpb25zIHVz
aW5nIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uKCkgaW5zdGVhZCBvZiBz
ZXR0aW5nIGl0CisgICAgICAgIG9uIGluZGl2aWR1YWwga2V5ZnJhbWVzLiBUaGlzIGNoYW5nZSB3
YXMgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgdW5pcXVlIGFiaWxpdHkgb2YKKyAgICAgICAgSlMt
b3JpZ2luYXRlZCBhbmltYXRpb25zIHRvIHNwZWNpZnkgYm90aCBhbiBhbmltYXRpb24td2lkZSB0
aW1pbmcgZnVuY3Rpb24gYXMgd2VsbCBhcworICAgICAgICBwZXIta2V5ZnJhbWUgdGltaW5nIGZ1
bmN0aW9ucy4KKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBDU1MgVHJhbnNpdGlvbnMsIHRoaXMg
bWVhbnQgdGhhdCBpbnN0ZWFkIG9mIHNldHRpbmcgYSBwZXIta2V5ZnJhbWUgdGltaW5nCisgICAg
ICAgIGZ1bmN0aW9uLCB0aGlzIGNoYW5nZSB3b3VsZCBzZXQgdGhlIGFuaW1hdGlvbi13aWRlIHRp
bWluZyBmdW5jdGlvbiBzaW5jZSBDU1MgVHJhbnNpdGlvbnMKKyAgICAgICAgc2hvdWxkIG1hcCB0
aGUgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gcHJvcGVydHkgdG8gdGhlICJlYXNpbmciIHBy
b3BlcnR5IG9mIHRoZSBBbmltYXRpb24KKyAgICAgICAgb2JqZWN0IGV4cG9zZWQgYnkgdGhlIFdl
YiBBbmltYXRpb25zIEFQSSwgbm90IGFzIHRoZSB0aW1pbmcgZnVuY3Rpb24gb2YgdGhlIHNpbmds
ZSBrZXlmcmFtZQorICAgICAgICBpbnRlcnZhbC4KKworICAgICAgICBIb3dldmVyLCB0aGlzIGNo
YW5nZSBzdXJmYWNlZCBhIGJ1ZyBpbiBDb3JlIEFuaW1hdGlvbiBvbiBtYWNPUyBhbmQgaU9TIHdo
ZXJlIGEgY3ViaWMtYmV6aWVyKCkKKyAgICAgICAgdGltaW5nIGZ1bmN0aW9uIHdpdGggeSB2YWx1
ZXMgYWJvdmUgMSBnZXQgY2xpcHBlZCB3aGVuIGFwcGxpZWQgdG8gYSBDQUtleWZyYW1lQW5pbWF0
aW9uIHVzaW5nCisgICAgICAgIHRoZSB0aW1pbmdGdW5jdGlvbiBwcm9wZXJ0eSAoc2luZ3VsYXIp
IGluc3RlYWQgb2YgdGhlIHRpbWluZ0Z1bmN0aW9ucyBwcm9wZXJ0eSAocGx1cmFsKS4KKworICAg
ICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLCB3ZSBzZXQgQW5pbWF0aW9uOjpwcm9wZXJ0
eSgpIG9uIHRoZSBnZW5lcmF0ZWQgQW5pbWF0aW9uIG9iamVjdCBwYXNzZWQKKyAgICAgICAgdG8g
R3JhcGhpY3NMYXllckNBIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gZGV0ZWN0IHdoZW4gd2UncmUg
ZGVhbGluZyB3aXRoIGEgQ1NTIFRyYW5zaXRpb24gYW5kCisgICAgICAgIHNldCB0aGUgdGltaW5n
IGZ1bmN0aW9uIG9uIHRoZSBrZXlmcmFtZSBpbnRlcnZhbCByYXRoZXIgdGhhbiBvbiB0aGUgYW5p
bWF0aW9uIGl0c2VsZi4KKworICAgICAgICBBbGFzLCB0aGlzIGRvZXMgbm90IGZpeCB0aGUgY2Fz
ZSB3aGVyZSBhIEpTLW9yaWdpbmF0ZWQgYW5pbWF0aW9uIHdpbGwgc3BlY2lmeSBhbiBhbmltYXRp
b24td2lkZQorICAgICAgICB0aW1pbmcgZnVuY3Rpb24gd2l0aCBhIGN1YmljLWJlemllcigpIHRp
bWluZyBmdW5jdGlvbiB3aXRoIHkgdmFsdWVzIGFib3ZlIDEuIFRoZXJlIGlzIG5vIGtub3duCisg
ICAgICAgIHdvcmthcm91bmQgYXQgdGhpcyB0aW1lIGZvciB0aGlzIGNhc2UgYW5kIHRoaXMgaXMg
Y292ZXJlZCBieSBidWcgMjE1OTE4LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpiYWNraW5nQW5pbWF0
aW9uRm9yQ29tcG9zaXRlZFJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyk6CisKIDIwMjAt
MDgtMjcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjI2MzUwNik6IHRpbWluZyBvZiBDU1MgQW5pbWF0aW9uIG9uIGh0dHBzOi8vYW5p
bWF0ZS5zdHlsZSBpcyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCmluZGV4IDFjNDJhMjkxYzQ5ZmJjNWQxZTA4OTRlYzhlYjA4OWMzNzVhY2Nj
MGIuLmY1ODI1MzQ3MTA3NDhiYjk2MTVmMGIzYjc5ZWI3OWRkYWU0MjRmOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtMTY3Miw2ICsxNjcyLDE2
IEBAIFJlZjxjb25zdCBBbmltYXRpb24+IEtleWZyYW1lRWZmZWN0OjpiYWNraW5nQW5pbWF0aW9u
Rm9yQ29tcG9zaXRlZFJlbmRlcmVyKCkgY29uCiAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5j
dGlvbih0aW1pbmdGdW5jdGlvbigpLT5jbG9uZSgpKTsKICAgICBhbmltYXRpb24tPnNldFBsYXli
YWNrUmF0ZShlZmZlY3RBbmltYXRpb24tPnBsYXliYWNrUmF0ZSgpKTsKIAorICAgIGlmIChtX2Js
ZW5kaW5nS2V5ZnJhbWVzU291cmNlID09IEJsZW5kaW5nS2V5ZnJhbWVzU291cmNlOjpDU1NUcmFu
c2l0aW9uICYmIGlzPEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKCkp
KSB7CisgICAgICAgIC8vIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBDU1MgVHJhbnNpdGlvbiBh
bmQgdXNpbmcgYSBjdWJpYyBiZXppZXIgdGltaW5nIGZ1bmN0aW9uLCB3ZSBzZXQgdXAKKyAgICAg
ICAgLy8gdGhlIEFuaW1hdGlvbiBvYmplY3QgdG8gcmVmbGVjdCB0aGlzIHdoaWNoIHdpbGwgYWxs
b3cgdGhlIEdyYXBoaWNzTGF5ZXJDQSBjb2RlIHRvIHNldCB0aGUKKyAgICAgICAgLy8gdGltaW5n
IGZ1bmN0aW9uIG9uIHRoZSBzaW5nbGUga2V5ZnJhbWUgaW50ZXJ2YWwgcmF0aGVyIHRoYW4gb24g
dGhlIGFuaW1hdGlvbiBhdCBsYXJnZSwKKyAgICAgICAgLy8gd29ya2luZyBhcm91bmQgYSBDb3Jl
IEFuaW1hdGlvbiBpc3N1ZSB3aGVyZSBzZXR0aW5nIGEgY3ViaWMgYmV6aWVyIG9uIGEgQ0FLZXlm
cmFtZUFuaW1hdGlvbidzCisgICAgICAgIC8vIHRpbWluZ0Z1bmN0aW9uIHByb3BlcnR5IGNhbiBs
ZWFkIHRvIGNsaXBwZWQgYW5pbWF0aW9ucyBzaG91bGQgYSB2YWx1ZSBiZSBhYm92ZSAxLgorICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NTkxOAorICAgICAgICBhbmltYXRpb24tPnNldFByb3BlcnR5KHsgQW5pbWF0aW9uOjpUcmFuc2l0
aW9uTW9kZTo6U2luZ2xlUHJvcGVydHksICptX2JsZW5kaW5nS2V5ZnJhbWVzLnByb3BlcnRpZXMo
KS5iZWdpbigpIH0pOworICAgIH0KKwogICAgIHN3aXRjaCAoZmlsbCgpKSB7CiAgICAgY2FzZSBG
aWxsTW9kZTo6Tm9uZToKICAgICBjYXNlIEZpbGxNb2RlOjpBdXRvOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5k
ZXggNTM5MGM5YzI2ZjY0OGE3N2VmMjJhZTIyZDkzNzQwNTRmZWQ0NGIzYS4uNmJjYjYxZTFlYjg4
OTc4ZjY4ZDBjOWRkODkyNjBhMGYxNjgxZGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMzMxLDE2
ICszMzMxLDM1IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uKiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuCiAgICAgcHJvcGVydHlBbmltLT5z
ZXRBZGRpdGl2ZShhZGRpdGl2ZSk7CiAgICAgcHJvcGVydHlBbmltLT5zZXRGaWxsTW9kZShmaWxs
TW9kZSk7CiAKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS53ZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb25FbmFibGVkKCkpCi0gICAgICAgIHByb3BlcnR5
QW5pbS0+c2V0VGltaW5nRnVuY3Rpb24oYW5pbS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQW5pbWF0aW9uc0NT
U0ludGVncmF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIEEgQ1NTIFRyYW5zaXRpb24gaXMg
dGhlIG9ubHkgc2NlbmFyaW8gd2hlcmUgQW5pbWF0aW9uOjpwcm9wZXJ0eSgpIHdpbGwgaGF2ZQor
ICAgICAgICAvLyBpdHMgbW9kZSBzZXQgdG8gU2luZ2xlUHJvcGVydHkuIEluIHRoaXMgY2FzZSwg
d2UgZG9uJ3Qgc2V0IHRoZSBhbmltYXRpb24td2lkZQorICAgICAgICAvLyB0aW1pbmcgZnVuY3Rp
b24sIGluc3RlYWQgb3B0aW5nIHRvIHNldCBpdCB1c2luZyB0aGUgdGltaW5nRnVuY3Rpb25zIChw
bHVyYWwpCisgICAgICAgIC8vIHByb3BlcnR5IHRvIHdvcmsgYXJvdW5kIGEgQ29yZSBBbmltYXRp
b24gaXNzdWUgd2hlcmUgc2V0dGluZyBhIGN1YmljIGJlemllcgorICAgICAgICAvLyBvbiBhIENB
S2V5ZnJhbWVBbmltYXRpb24ncyB0aW1pbmdGdW5jdGlvbiBwcm9wZXJ0eSAoc2luZ3VsYXIpIGNh
biBsZWFkIHRvCisgICAgICAgIC8vIGNsaXBwZWQgYW5pbWF0aW9ucyBzaG91bGQgYSB2YWx1ZSBi
ZSBhYm92ZSAxLgorICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTkxOAorICAgICAgICBpZiAoYW5pbS0+cHJvcGVydHkoKS5tb2RlICE9
IEFuaW1hdGlvbjo6VHJhbnNpdGlvbk1vZGU6OlNpbmdsZVByb3BlcnR5KQorICAgICAgICAgICAg
cHJvcGVydHlBbmltLT5zZXRUaW1pbmdGdW5jdGlvbihhbmltLT50aW1pbmdGdW5jdGlvbigpKTsK
KyAgICB9CiB9CiAKIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBHcmFwaGljc0xheWVyQ0E6OnRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmIGFuaW1WYWx1
ZSwgY29uc3QgQW5pbWF0aW9uJiBhbmltKQogewogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbkVuYWJsZWQo
KSkgeworICAgICAgICBpZiAoYW5pbS5wcm9wZXJ0eSgpLm1vZGUgPT0gQW5pbWF0aW9uOjpUcmFu
c2l0aW9uTW9kZTo6U2luZ2xlUHJvcGVydHkgJiYgYW5pbS50aW1pbmdGdW5jdGlvbigpKSB7Cisg
ICAgICAgICAgICAvLyBBIENTUyBUcmFuc2l0aW9uIGlzIHRoZSBvbmx5IHNjZW5hcmlvIHdoZXJl
IEFuaW1hdGlvbjo6cHJvcGVydHkoKSB3aWxsIGhhdmUKKyAgICAgICAgICAgIC8vIGl0cyBtb2Rl
IHNldCB0byBTaW5nbGVQcm9wZXJ0eS4gSW4gdGhpcyBjYXNlLCB3ZSBjaG9zZSBub3QgdG8gc2V0
IHNldCB0aGUKKyAgICAgICAgICAgIC8vIGFuaW1hdGlvbi13aWRlIHRpbWluZyBmdW5jdGlvbiwg
c28gd2Ugc2V0IGl0IG9uIHRoZSBzaW5nbGUga2V5ZnJhbWUgaW50ZXJ2YWwKKyAgICAgICAgICAg
IC8vIHRvIHdvcmsgYXJvdW5kIGEgQ29yZSBBbmltYXRpb24gaXNzdWUgd2hlcmUgc2V0dGluZyBh
IGN1YmljIGJlemllciBvbiBhCisgICAgICAgICAgICAvLyBDQUtleWZyYW1lQW5pbWF0aW9uJ3Mg
dGltaW5nRnVuY3Rpb24gcHJvcGVydHkgKHNpbmd1bGFyKSBjYW4gbGVhZCB0byBjbGlwcGVkCisg
ICAgICAgICAgICAvLyBhbmltYXRpb25zIHNob3VsZCBhIHZhbHVlIGJlIGFib3ZlIDEuCisgICAg
ICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNTkxOAorICAgICAgICAgICAgcmV0dXJuICphbmltLnRpbWluZ0Z1bmN0aW9uKCk7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuICphbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZWxzZSBpZiAo
YW5pbS5kZWZhdWx0VGltaW5nRnVuY3Rpb25Gb3JLZXlmcmFtZXMoKSkKKyAgICAgICAgaWYgKGFu
aW0uZGVmYXVsdFRpbWluZ0Z1bmN0aW9uRm9yS2V5ZnJhbWVzKCkpCiAgICAgICAgICAgICByZXR1
cm4gKmFuaW0uZGVmYXVsdFRpbWluZ0Z1bmN0aW9uRm9yS2V5ZnJhbWVzKCk7CiAgICAgICAgIHJl
dHVybiBMaW5lYXJUaW1pbmdGdW5jdGlvbjo6c2hhcmVkTGluZWFyVGltaW5nRnVuY3Rpb24oKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjQwZDJmMjRjM2Y3ZDFlNDdkNDEzNjBkYTQ2NWM0MzVkOWE1NDYyZC4u
MjJiNDYwN2IwOTE4OTFhN2YwZmI3YTc5YjIwODMyNjg3OGY1OGE2ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIwLTA4LTI4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJFR1JFU1NJT04gKHIyNjM1MDYpOiBzY2FsZSB0cmFuc2Zvcm0gdHJhbnNpdGlv
bnMgd29uJ3Qgb3ZlcnNob290CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU4MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzU5MzEwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYSBDU1MgVHJhbnNpdGlvbiB1c2luZyBhIGN1YmljLWJlemll
cigpIHRpbWluZyBmdW5jdGlvbiB3aXRoCisgICAgICAgIGEgeSB2YWx1ZSBiZXlvbmQgMSBkb2Vz
IG5vdCBnZXQgY2xpcHBlZC4KKworICAgICAgICAqIHdlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQt
Y3NzLXRyYW5zaXRpb24td2l0aC1lYXNpbmcteS1heGlzLWFib3ZlLTEtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC1jc3MtdHJhbnNpdGlv
bi13aXRoLWVhc2luZy15LWF4aXMtYWJvdmUtMS5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0yNyAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjYzNTA2KTogdGltaW5nIG9mIENTUyBBbmltYXRpb24gb24gaHR0cHM6Ly9hbmltYXRlLnN0
eWxlIGlzIGluY29ycmVjdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9h
Y2NlbGVyYXRlZC1jc3MtdHJhbnNpdGlvbi13aXRoLWVhc2luZy15LWF4aXMtYWJvdmUtMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC1jc3MtdHJh
bnNpdGlvbi13aXRoLWVhc2luZy15LWF4aXMtYWJvdmUtMS1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNkM2E0ZjFjZjdhZDBkZDM4MWQ3ZDY4Yzc5ZTVjNmE0MzUyNjc5MjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWNzcy10cmFuc2l0
aW9uLXdpdGgtZWFzaW5nLXktYXhpcy1hYm92ZS0xLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwy
IEBACis8Ym9keSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iPgorPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC1jc3MtdHJhbnNp
dGlvbi13aXRoLWVhc2luZy15LWF4aXMtYWJvdmUtMS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5p
bWF0aW9ucy9hY2NlbGVyYXRlZC1jc3MtdHJhbnNpdGlvbi13aXRoLWVhc2luZy15LWF4aXMtYWJv
dmUtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5OGEzNDliYjE3OTRmYTllZjI4OGQ2MTNmYWIwNjk3NWNi
OGIwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2Vs
ZXJhdGVkLWNzcy10cmFuc2l0aW9uLXdpdGgtZWFzaW5nLXktYXhpcy1hYm92ZS0xLmh0bWwKQEAg
LTAsMCArMSw0NyBAQAorPGJvZHk+Cis8c3R5bGU+CisgICAgCisgICAgYm9keSB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisgICAgCisgICAgZGl2IHsKKyAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDA7CisgICAgICAgIGxlZnQ6IDA7Cisg
ICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0
OworICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7CisgICAgfQorCisgICAgZGl2LnNjYWxl
ZC11cCB7CisgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CisgICAgICAgIHRyYW5zaXRpb246
IDJzIHRyYW5zZm9ybSBjdWJpYy1iZXppZXIoMCwgMjAwLCAxLCAyMDApOworICAgIH0KKworPC9z
dHlsZT4KKzxkaXY+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwor
ICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlcXVlc3RBbmltYXRpb25GcmFtZSk7CisgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiZGl2IikuY2xhc3NMaXN0LmFkZCgic2NhbGVkLXVwIik7CisKKyAg
ICBhd2FpdCBQcm9taXNlLmFsbChkb2N1bWVudC5nZXRBbmltYXRpb25zKCkubWFwKGFuaW1hdGlv
biA9PiBhbmltYXRpb24ucmVhZHkpKTsKKyAgICBhd2FpdCBVSUhlbHBlci5lbnN1cmVQcmVzZW50
YXRpb25VcGRhdGUoKTsKKworICAgIGlmICghVUlIZWxwZXIuaXNXZWJLaXQyKCkpCisgICAgICAg
IGF3YWl0IG5ldyBQcm9taXNlKHJlcXVlc3RBbmltYXRpb25GcmFtZSk7CisKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSkoKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>
<flag name="review"
          id="422826"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>