layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x536
  RenderBlock {html} at (0,0) size 800x536
    RenderBody {body} at (8,16) size 784x470 [bgcolor=#FFFFFF]
      RenderBlock {p} at (0,0) size 784x18
        RenderText {#text} at (0,0) size 550x18
          text run at (0,0) width 318: "CSS Transformed HTML div with SVG inside it. "
          text run at (318,0) width 232: "objectBoundingBox patterns on text."
layer at (58,84) size 402x402
  RenderBlock {div} at (50,68) size 402x402 [border: (1px solid #000000)]
    RenderSVGRoot {svg} at (66,58) size 480x420
      RenderSVGResourcePattern {pattern} [id="pat1"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (168,63) size 13x13 [fill={[type=SOLID] [color=#FF0000]}] [x=5.00] [y=5.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (171,68) size 12x13 [fill={[type=SOLID] [color=#008000]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGRect {rect} at (168,72) size 357x173 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=PATTERN] [id="pat1"]}] [x=25.00] [y=10.00] [width=430.00] [height=60.00]
      RenderSVGText {text} at (25,74) size 407x14 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 407x14
          chunk 1 text run 1 at (25.00,85.00) startOffset 0 endOffset 75 width 406.80: "Pattern created using red and green rectangles applied to fill of rectangle"
      RenderSVGResourcePattern {pattern} [id="pat2"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,58) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (173,61) size 13x12 [fill={[type=SOLID] [color=#008000]}] [x=10.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (163,66) size 13x12 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=10.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (171,68) size 12x13 [fill={[type=SOLID] [color=#FFFF00]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGRect {rect} at (142,143) size 357x172 [stroke={[type=PATTERN] [id="pat2"] [stroke width=20.00]}] [x=35.00] [y=110.00] [width=410.00] [height=40.00]
      RenderSVGText {text} at (25,164) size 319x14 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 319x14
          chunk 1 text run 1 at (25.00,175.00) startOffset 0 endOffset 59 width 318.00: "Pattern of 4 rectangles applied to a stroke of a rectangle."
      RenderSVGResourcePattern {pattern} [id="pat3"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,58) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (163,66) size 13x12 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGText {text} at (25,174) size 293x57 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 293x57
          chunk 1 text run 1 at (25.00,220.00) startOffset 0 endOffset 15 width 292.80: "Pattern on fill"
      RenderSVGText {text} at (25,224) size 215x14 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 215x14
          chunk 1 text run 1 at (25.00,235.00) startOffset 0 endOffset 38 width 214.80: "Pattern consists of red and green rows"
      RenderSVGResourcePattern {pattern} [id="pat4"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,58) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (173,61) size 13x12 [fill={[type=SOLID] [color=#0000FF]}] [x=10.00] [y=0.00] [width=10.00] [height=10.00]
      RenderSVGText {text} at (25,239) size 299x45 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 299x45
          chunk 1 text run 1 at (25.00,275.00) startOffset 0 endOffset 17 width 298.80: "Pattern on stroke"
      RenderSVGText {text} at (25,279) size 227x14 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 227x14
          chunk 1 text run 1 at (25.00,290.00) startOffset 0 endOffset 40 width 226.80: "Pattern consists of red and blue columns"
      RenderSVGText {text} at (10,304) size 264x46 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 264x46
          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 264.00: "$Revision: 1.6 $"
      RenderSVGRect {rect} at (66,58) size 480x420 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
    RenderText {#text} at (0,0) size 0x0
