<?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>27310</bug_id>
          
          <creation_ts>2009-07-15 12:04:49 -0700</creation_ts>
          <short_desc>Incorrect animation when trying to duplicate effect of transform-origin</short_desc>
          <delta_ts>2009-07-16 16:29:22 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>131985</commentid>
    <comment_count>0</comment_count>
      <attachid>32798</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-07-15 12:04:49 -0700</bug_when>
    <thetext>Created attachment 32798
testcase showing bug

See the attached testcase. You can duplicate the effect of the Z component of transform-origin using something like this:

    -webkit-transform: translateZ(200px) rotateY(90deg) translateZ(-200px)

This basically offset the axis of rotation by 200 pixels. But when animating this in hardware on Snow Leopard, it uses matrix animation, which produces the wrong results. It looks like the translation value is changing during the animation. This is due to how CA does matrix animation. This case correctly falls back to software animation in Leopard. In Snow Leopard it can still use hardware animation because it can use the valueFunction feature to animate the components separately. But we mistakenly chooses matrix animation instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131990</commentid>
    <comment_count>1</comment_count>
      <attachid>32799</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-07-15 12:10:22 -0700</bug_when>
    <thetext>Created attachment 32799
Patch with test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131992</commentid>
    <comment_count>2</comment_count>
      <attachid>32799</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-07-15 12:14:00 -0700</bug_when>
    <thetext>Comment on attachment 32799
Patch with test

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 45934)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,19 @@
&gt; +2009-07-15  Chris Marrin  &lt;cmarrin@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=27310

There&apos;s a new format being used here now. See earlier entries.

&gt; +        This fixes the bug by always doing component animation
&gt; +        as long as the function lists match. This allows CA
&gt; +        to animate the components and then recompose the result
&gt; +        into the correct matrix.

It would be nice to describe the bug that is being fixed here too.

&gt; Index: LayoutTests/animations/transform-origin-vs-functions.html
&gt; ===================================================================

&gt; +      //document.addEventListener(&apos;webkitAnimationStart&apos;, start, false);

You should remove that if it&apos;s not necessary.
r=me with those fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132058</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-07-15 15:33:34 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/animations/transform-origin-vs-functions-expected.txt
Adding         LayoutTests/animations/transform-origin-vs-functions.html
Sending        WebCore/ChangeLog
Sending        WebCore/platform/graphics/mac/GraphicsLayerCA.mm
Transmitting file data .....
Committed revision 45953.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132396</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-07-16 16:29:22 -0700</bug_when>
    <thetext>This caused bug 27356.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>32798</attachid>
            <date>2009-07-15 12:04:49 -0700</date>
            <delta_ts>2009-07-15 12:04:49 -0700</delta_ts>
            <desc>testcase showing bug</desc>
            <filename>transform-origin-vs-functions.html</filename>
            <type>text/html</type>
            <size>4185</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICJodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+CiAgICA8dGl0bGU+LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luIHZzLiBUcmFuc2Zv
cm0gRnVuY3Rpb25zPC90aXRsZT4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbiI+CiAgICAjYSB7CiAgICAgIHRvcDogMHB4OwogICAgICBsZWZ0OiAwcHg7CiAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogODAwOwogICAgICB3
aWR0aDogODAwcHg7CiAgICAgIGhlaWdodDogNjAwcHg7CiAgICB9CiAgICAjYjEgewogICAgICB0
b3A6IDgwcHg7CiAgICAgIGxlZnQ6IDMwMHB4OwogICAgICB3aWR0aDogMjAwcHg7CiAgICAgIGhl
aWdodDogMjAwcHg7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgYmFja2dyb3VuZC1j
b2xvcjogIzI4MjsKCSAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDJzOwoJICAtd2Via2l0
LWFuaW1hdGlvbi1uYW1lOiBiMTsKCSAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50
OiBpbmZpbml0ZTsKCSAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7
CgkgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlciAyMDBweDsKICAgIH0K
CUAtd2Via2l0LWtleWZyYW1lcyBiMSB7CgkJZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3Rh
dGVZKDBkZWcpOyB9CgkJNSUgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoOTBkZWcpOyB9
CgkJMjAlICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDkwZGVnKTsgfQoJCTUwJSAgeyAt
d2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOyB9CgkJNzUlICB7IC13ZWJraXQtdHJh
bnNmb3JtOiByb3RhdGVZKDI3MGRlZyk7IH0KCQl0byAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJv
dGF0ZVkoMzYwZGVnKTsgfQoJfQogICAgI2IyIHsKICAgICAgdG9wOiAzMjBweDsKICAgICAgbGVm
dDogMzAwcHg7CiAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAg
cG9zaXRpb246IGFic29sdXRlOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgyOwoJICAtd2Vi
a2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7CgkgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGIy
OwoJICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOwoJICAtd2Vi
a2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICAgIH0KCUAtd2Via2l0LWtl
eWZyYW1lcyBiMiB7CgkJZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDIwMHB4
KSByb3RhdGVZKDBkZWcpIHRyYW5zbGF0ZVooLTIwMHB4KSB9CgkJNSUgIHsgLXdlYmtpdC10cmFu
c2Zvcm06IHRyYW5zbGF0ZVooMjAwcHgpIHJvdGF0ZVkoOTBkZWcpIHRyYW5zbGF0ZVooLTIwMHB4
KSB9CgkJMjAlICB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDIwMHB4KSByb3RhdGVZ
KDkwZGVnKSB0cmFuc2xhdGVaKC0yMDBweCkgfQoJCTUwJSAgeyAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWigyMDBweCkgcm90YXRlWSgxODBkZWcpIHRyYW5zbGF0ZVooLTIwMHB4KSB9CgkJ
NzUlICB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDIwMHB4KSByb3RhdGVZKDI3MGRl
ZykgdHJhbnNsYXRlWigtMjAwcHgpIH0KCQl0byAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5z
bGF0ZVooMjAwcHgpIHJvdGF0ZVkoMzYwZGVnKSB0cmFuc2xhdGVaKC0yMDBweCkgfQoJfQogICAg
PC9zdHlsZT4KICAgIAogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04Ij4KICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgIH0KCiAgICAgIHJlc3VsdCA9ICIiOwogICAg
ICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0gMC4yOwoKICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7
CiAgICAgICAgICAiYjEiIDogWyAwLDAsLTEsMCwgMCwxLDAsMCwgMSwwLDAsMCwgMCwwLDAsMSBd
LAogICAgICAgICAgImIyIiA6IFsgMCwwLC0xLDAsIDAsMSwwLDAsIDEsMCwwLDAsIC0yMDAsMCwy
MDAsMSBdCiAgICAgIH07CiAgICAgIAogICAgICBjb25zdCB0b2xlcmFuY2UgPSAwLjI7CgogICAg
ICBmdW5jdGlvbiBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQogICAgICB7CiAg
ICAgICAgICBpZiAodG9sZXJhbmNlID09IHVuZGVmaW5lZCB8fCB0b2xlcmFuY2UgPT0gMCkKICAg
ICAgICAgICAgICB0b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNlOwogICAgICAgICAgdmFyIGRp
ZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKICAgICAgICAgIHJldHVybiBkaWZmIDw9
IHRvbGVyYW5jZTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gc25hcHNob3QoaWQpCiAgICAgIHsK
ICAgICAgICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgICAg
aWYgKCFlKSB7CiAgICAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlMKGVsZW1lbnQgJyIraWQrIicg
ZG9lcyBub3QgZXhpc3QiKyIpPGJyPiI7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
fQogICAgICAgICAgdmFyIHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS53ZWJraXRUcmFu
c2Zvcm07CiAgICAgICAgICB2YXIgYSA9IHQuc3BsaXQoIigiKTsKICAgICAgICAgIHZhciBhcnJh
eSA9IGFbMV0uc3BsaXQoIiwiKTsKICAgICAgICAgIHZhciBwYXNzID0gdHJ1ZTsKICAgICAgICAg
IGZvciAoaSA9IDA7IGkgPCAxNjsgKytpKSB7CiAgICAgICAgICAgICAgdmFyIGFjdHVhbCA9IHBh
cnNlRmxvYXQoYXJyYXlbaV0pOwogICAgICAgICAgICAgIHZhciBleHBlY3QgPSBleHBlY3RlZFtp
ZF1baV07CiAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsKGFjdHVhbCwgZXhwZWN0LCB0b2xlcmFu
Y2UpKSB7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTChlbGVtZW50ICciK2lkKyIn
IG1hdHJpeFsiK2krIl0nIHdhczoiK2FjdHVhbCsiLCBleHBlY3RlZDoiK2V4cGVjdCsiKTxicj4i
OwogICAgICAgICAgICAgICAgICBwYXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgfQogICAgICAg
ICAgfQogICAgICAgICAgCiAgICAgICAgICBpZiAocGFzcykKICAgICAgICAgICAgcmVzdWx0ICs9
ICJQQVNTKGVsZW1lbnQgJyIraWQrIicgbWF0Y2hlcyBleHBlY3RlZCB2YWx1ZSk8YnI+IjsKICAg
ICAgfQoKICAgICAgZnVuY3Rpb24gc3RhcnQoKQogICAgICB7CiAgICAgICAgICBzZXRUaW1lb3V0
KCJzbmFwc2hvdCgnYjEnKTsgc25hcHNob3QoJ2IyJyk7IiwgMjUwKTsKCiAgICAgICAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwogICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgIH0sIDMwMCk7CiAgICAgIH0KCiAgICAg
IC8vZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFy
dCwgZmFsc2UpOwoKICAgIDwvc2NyaXB0PgogIDwvaGVhZD4KICA8Ym9keSBvbmxvYWQ9InN0YXJ0
KCkiPgogICAgPGRpdiBpZD0iYSI+CiAgICAgICAgPGRpdiBpZD0iYjEiPiA8L2Rpdj4KICAgICAg
ICA8ZGl2IHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKC0yMDBweCk7IC13ZWJr
aXQtdHJhbnNmb3JtLXN0eWxlOnByZXNlcnZlLTNkOyI+CiAgICAgICAgICAgIDxkaXYgaWQ9ImIy
Ij4gPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2JvZHk+CiAgPGRpdiBpZD0i
cmVzdWx0Ij4gPC9kaXY+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32799</attachid>
            <date>2009-07-15 12:10:22 -0700</date>
            <delta_ts>2009-07-15 12:14:00 -0700</delta_ts>
            <desc>Patch with test</desc>
            <filename>27310.patch</filename>
            <type>text/plain</type>
            <size>7996</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTkzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDctMTUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzMxMAorCisgICAgICAgIFRo
aXMgZml4ZXMgdGhlIGJ1ZyBieSBhbHdheXMgZG9pbmcgY29tcG9uZW50IGFuaW1hdGlvbgorICAg
ICAgICBhcyBsb25nIGFzIHRoZSBmdW5jdGlvbiBsaXN0cyBtYXRjaC4gVGhpcyBhbGxvd3MgQ0EK
KyAgICAgICAgdG8gYW5pbWF0ZSB0aGUgY29tcG9uZW50cyBhbmQgdGhlbiByZWNvbXBvc2UgdGhl
IHJlc3VsdAorICAgICAgICBpbnRvIHRoZSBjb3JyZWN0IG1hdHJpeC4KKworICAgICAgICBUZXN0
OiBhbmltYXRpb25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW06CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGVUcmFuc2Zvcm0pOgorCiAyMDA5LTA3LTE1
ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBNYWMgYnVp
bGQuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NM
YXllckNBLm1tCShyZXZpc2lvbiA0NTg4MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTQ3LDE0ICs5NDcsMTAg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGVUcmFuc2Zvcm0oYwogICAgIAogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIAotICAgIC8vIFJ1bGVzIGZvciBhbmltYXRp
b246CisgICAgLy8gUnVsZSBmb3IgYW5pbWF0aW9uOgogICAgIC8vCi0gICAgLy8gIDEpICBJZiBm
dW5jdGlvbkxpc3QgaXMgZW1wdHkgb3Igd2UgZG9uJ3QgaGF2ZSBhIGJpZyByb3RhdGlvbiwgd2Ug
ZG8gYSBtYXRyaXggYW5pbWF0aW9uLiBXZSBjb3VsZAotICAgIC8vICAgICAgdXNlIGNvbXBvbmVu
dCBhbmltYXRpb24gZm9yIGxpc3RzIHdpdGhvdXQgYSBiaWcgcm90YXRpb24sIGJ1dCB0aGVyZSBp
cyBubyBuZWVkIHRvLCBhbmQgdGhpcwotICAgIC8vICAgICAgaXMgbW9yZSBlZmZpY2llbnQuCi0g
ICAgLy8KLSAgICAvLyAgMikgIE90aGVyd2lzZSB3ZSBkbyBhIGNvbXBvbmVudCBoYXJkd2FyZSBh
bmltYXRpb24uCi0gICAgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiA9ICFpc1ZhbGlkIHx8ICFoYXNC
aWdSb3RhdGlvbjsKKyAgICAvLyAgSWYgZnVuY3Rpb25MaXN0cyBkb24ndCBtYXRjaCB3ZSBkbyBh
IG1hdHJpeCBhbmltYXRpb24sIG90aGVyd2lzZSB3ZSBkbyBhIGNvbXBvbmVudCBoYXJkd2FyZSBh
bmltYXRpb24uCisgICAgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiA9ICFpc1ZhbGlkOwogICAgICAg
ICAKICAgICAvLyBTZXQgdHJhbnNmb3JtIHRvIGlkZW50aXR5IHNpbmNlIHdlIGFyZSBhbmltYXRp
bmcgY29tcG9uZW50cyBhbmQgd2UgbmVlZCB0aGUgYmFzZQogICAgIC8vIHRvIGJlIHRoZSBpZGVu
dGl0eSB0cmFuc2Zvcm0uCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NTkzNCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDA5LTA3LTE1ICBD
aHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjczMTAKKworICAgICAgICBUZXN0IHNob3dpbmcgYnVnLiBUaGlzIHRlc3QgYWN0
dWFsbHkgcGFzc2VzIExheW91dFRlc3RzIHdpdGggb3IKKyAgICAgICAgd2l0aG91dCB0aGUgYnVn
IGZpeGVkLiBUaGlzIGlzIGJlY2F1c2Ugd2Ugc25hcHNob3QgYXQgYSBrZXlmcmFtZQorICAgICAg
ICBhdCB3aGljaCBwb2ludCB0aGUgdmFsdWUgaXMgYWx3YXlzIGNvcnJlY3QuIEFuZCB3ZSBjYW4n
dCBkbyBhCisgICAgICAgIExheW91dFRlc3Qgd2hpY2ggc25hcHNob3RzIHRoZSB3cm9uZyB2YWx1
ZSBiZWNhdXNlIGl0IGlzIGJ1cmllZAorICAgICAgICBpbiB0aGUgaGFyZHdhcmUgcmVuZGVyZXIs
IHdoaWNoIHdlIGNhbid0IGdldCB0by4gQnV0IGlmIHlvdQorICAgICAgICB2aXN1YWxseSBpbnNw
ZWN0IHRoaXMgdGVzdCB5b3UgY2FuIHNlZSB0aGUgaW5jb3JyZWN0IGJlaGF2aW9yLgorCisgICAg
ICAgIEFuZCB0aGlzIGlzIGEgdXNlZnVsIHRlc3QgdG8gaGF2ZSBpbiBvdXIgYXJzZW5hbCBpbiBh
bnkgY2FzZS4KKworICAgICAgICAqIGFuaW1hdGlvbnMvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5j
dGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL3RyYW5zZm9y
bS1vcmlnaW4tdnMtZnVuY3Rpb25zLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA3LTE0ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVu
Y3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25z
L3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MoZWxlbWVudCAn
YjEnIG1hdGNoZXMgZXhwZWN0ZWQgdmFsdWUpCitQQVNTKGVsZW1lbnQgJ2IyJyBtYXRjaGVzIGV4
cGVjdGVkIHZhbHVlKQorCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zZm9ybS1v
cmlnaW4tdnMtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgorICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv
c3RyaWN0LmR0ZCI+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDx0aXRs
ZT4td2Via2l0LXRyYW5zZm9ybS1vcmlnaW4gdnMuIFRyYW5zZm9ybSBGdW5jdGlvbnM8L3RpdGxl
PgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgI2Egewor
ICAgICAgdG9wOiAwcHg7CisgICAgICBsZWZ0OiAwcHg7CisgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiA4MDA7CisgICAgICB3aWR0aDogODAwcHg7
CisgICAgICBoZWlnaHQ6IDYwMHB4OworICAgIH0KKyAgICAjYjEgeworICAgICAgdG9wOiA4MHB4
OworICAgICAgbGVmdDogMzAwcHg7CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgYmFja2dyb3VuZC1jb2xv
cjogIzI4MjsKKwkgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAyczsKKwkgIC13ZWJraXQt
YW5pbWF0aW9uLW5hbWU6IGIxOworCSAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50
OiBpbmZpbml0ZTsKKwkgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFy
OworCSAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyIDIwMHB4OworICAg
IH0KKwlALXdlYmtpdC1rZXlmcmFtZXMgYjEgeworCQlmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06
IHJvdGF0ZVkoMGRlZyk7IH0KKwkJNSUgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoOTBk
ZWcpOyB9CisJCTIwJSAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSg5MGRlZyk7IH0KKwkJ
NTAlICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7IH0KKwkJNzUlICB7IC13
ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDI3MGRlZyk7IH0KKwkJdG8gICB7IC13ZWJraXQtdHJh
bnNmb3JtOiByb3RhdGVZKDM2MGRlZyk7IH0KKwl9CisgICAgI2IyIHsKKyAgICAgIHRvcDogMzIw
cHg7CisgICAgICBsZWZ0OiAzMDBweDsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiAjMjgyOworCSAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDJzOworCSAgLXdlYmtp
dC1hbmltYXRpb24tbmFtZTogYjI7CisJICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291
bnQ6IGluZmluaXRlOworCSAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5l
YXI7CisgICAgfQorCUAtd2Via2l0LWtleWZyYW1lcyBiMiB7CisJCWZyb20geyAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWigyMDBweCkgcm90YXRlWSgwZGVnKSB0cmFuc2xhdGVaKC0yMDBw
eCkgfQorCQk1JSAgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigyMDBweCkgcm90YXRl
WSg5MGRlZykgdHJhbnNsYXRlWigtMjAwcHgpIH0KKwkJMjAlICB7IC13ZWJraXQtdHJhbnNmb3Jt
OiB0cmFuc2xhdGVaKDIwMHB4KSByb3RhdGVZKDkwZGVnKSB0cmFuc2xhdGVaKC0yMDBweCkgfQor
CQk1MCUgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMjAwcHgpIHJvdGF0ZVkoMTgw
ZGVnKSB0cmFuc2xhdGVaKC0yMDBweCkgfQorCQk3NSUgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRy
YW5zbGF0ZVooMjAwcHgpIHJvdGF0ZVkoMjcwZGVnKSB0cmFuc2xhdGVaKC0yMDBweCkgfQorCQl0
byAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMjAwcHgpIHJvdGF0ZVkoMzYwZGVn
KSB0cmFuc2xhdGVaKC0yMDBweCkgfQorCX0KKyAgICA8L3N0eWxlPgorICAgIAorICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgfQorCisgICAgICByZXN1bHQgPSAiIjsKKyAgICAgIGNvbnN0IGRlZmF1bHRU
b2xlcmFuY2UgPSAwLjI7CisKKyAgICAgIGNvbnN0IGV4cGVjdGVkID0geworICAgICAgICAgICJi
MSIgOiBbIDAsMCwtMSwwLCAwLDEsMCwwLCAxLDAsMCwwLCAwLDAsMCwxIF0sCisgICAgICAgICAg
ImIyIiA6IFsgMCwwLC0xLDAsIDAsMSwwLDAsIDEsMCwwLDAsIC0yMDAsMCwyMDAsMSBdCisgICAg
ICB9OworICAgICAgCisgICAgICBjb25zdCB0b2xlcmFuY2UgPSAwLjI7CisKKyAgICAgIGZ1bmN0
aW9uIGlzRXF1YWwoYWN0dWFsLCBkZXNpcmVkLCB0b2xlcmFuY2UpCisgICAgICB7CisgICAgICAg
ICAgaWYgKHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwgdG9sZXJhbmNlID09IDApCisgICAgICAg
ICAgICAgIHRvbGVyYW5jZSA9IGRlZmF1bHRUb2xlcmFuY2U7CisgICAgICAgICAgdmFyIGRpZmYg
PSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKKyAgICAgICAgICByZXR1cm4gZGlmZiA8PSB0
b2xlcmFuY2U7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHNuYXBzaG90KGlkKQorICAgICAg
eworICAgICAgICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAg
ICAgIGlmICghZSkgeworICAgICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwoZWxlbWVudCAnIitp
ZCsiJyBkb2VzIG5vdCBleGlzdCIrIik8YnI+IjsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgIH0KKyAgICAgICAgICB2YXIgdCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLndl
YmtpdFRyYW5zZm9ybTsKKyAgICAgICAgICB2YXIgYSA9IHQuc3BsaXQoIigiKTsKKyAgICAgICAg
ICB2YXIgYXJyYXkgPSBhWzFdLnNwbGl0KCIsIik7CisgICAgICAgICAgdmFyIHBhc3MgPSB0cnVl
OworICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgICAgICAgICAgIHZh
ciBhY3R1YWwgPSBwYXJzZUZsb2F0KGFycmF5W2ldKTsKKyAgICAgICAgICAgICAgdmFyIGV4cGVj
dCA9IGV4cGVjdGVkW2lkXVtpXTsKKyAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsKGFjdHVhbCwg
ZXhwZWN0LCB0b2xlcmFuY2UpKSB7CisgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwo
ZWxlbWVudCAnIitpZCsiJyBtYXRyaXhbIitpKyJdJyB3YXM6IithY3R1YWwrIiwgZXhwZWN0ZWQ6
IitleHBlY3QrIik8YnI+IjsKKyAgICAgICAgICAgICAgICAgIHBhc3MgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgICBpZiAocGFzcykK
KyAgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUyhlbGVtZW50ICciK2lkKyInIG1hdGNoZXMgZXhw
ZWN0ZWQgdmFsdWUpPGJyPiI7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAg
ICAgIHsKKyAgICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgnYjEnKTsgc25hcHNob3QoJ2Iy
Jyk7IiwgMjUwKTsKKworICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1M
ID0gcmVzdWx0OworICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgIH0sIDMwMCk7CisgICAgICB9CisKKyAgICAgIC8vZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFydCwgZmFsc2UpOworCisgICAgPC9z
Y3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICA8ZGl2IGlk
PSJhIj4KKyAgICAgICAgPGRpdiBpZD0iYjEiPiA8L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT0i
LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigtMjAwcHgpOyAtd2Via2l0LXRyYW5zZm9ybS1z
dHlsZTpwcmVzZXJ2ZS0zZDsiPgorICAgICAgICAgICAgPGRpdiBpZD0iYjIiPiA8L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKyAgPGRpdiBpZD0icmVzdWx0Ij4g
PC9kaXY+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="17167"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>