<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg">

  <defs>
	  <marker id="m1" orient="auto" markerUnits="strokeWidth">
		  <rect width="100%" height="100%" fill="blue"/>
	  </marker>
  </defs>

	
  <rect width="100%" height="100%" fill="yellow"/>
	
  <line x1="30" x2="30" y1="10" y2="10" stroke="red" stroke-width="3" marker-end="url(#m1)"/>

  <script>
    function boom() {
      n = document.getElementById("m1");
      n.style.overflow = "visible";
      document.documentElement.removeAttribute("class");
      if (window.testRunner)
        testRunner.notifyDone();
    }
    
    if (window.testRunner)
       testRunner.waitUntilDone();

    setTimeout(boom, 100);
  </script>

</svg>
