layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x538
  RenderBlock {html} at (0,0) size 800x538
    RenderBody {body} at (8,16) size 784x472 [bgcolor=#FFFFFF]
      RenderBlock {p} at (0,0) size 784x20
        RenderText {#text} at (0,0) size 555x19
          text run at (0,0) width 320: "CSS Transformed HTML div with SVG inside it. "
          text run at (319,0) width 236: "objectBoundingBox patterns on text."
layer at (58,86) size 402x402
  RenderBlock {div} at (50,70) size 402x402 [border: (1px solid #000000)]
    RenderSVGRoot {svg} at (66,60) size 480x420
      RenderSVGResourcePattern {pattern} [id="pat1"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (168,65) size 13x13 [fill={[type=SOLID] [color=#FF0000]}] [x=5.00] [y=5.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (171,70) size 12x13 [fill={[type=SOLID] [color=#008000]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGRect {rect} at (168,74) 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,73) size 387x15 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 387x15
          chunk 1 text run 1 at (25.00,85.00) startOffset 0 endOffset 75 width 386.91: "Pattern created using red and green rectangles applied to fill of rectangle"
      RenderSVGResourcePattern {pattern} [id="pat2"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,60) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (173,63) size 13x12 [fill={[type=SOLID] [color=#008000]}] [x=10.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (163,68) size 13x12 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=10.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (171,70) size 12x13 [fill={[type=SOLID] [color=#FFFF00]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGRect {rect} at (142,145) 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,163) size 302x15 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 302x15
          chunk 1 text run 1 at (25.00,175.00) startOffset 0 endOffset 59 width 301.52: "Pattern of 4 rectangles applied to a stroke of a rectangle."
      RenderSVGResourcePattern {pattern} [id="pat3"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,60) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (163,68) 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 291x57 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 291x57
          chunk 1 text run 1 at (25.00,220.00) startOffset 0 endOffset 15 width 290.65: "Pattern on fill"
      RenderSVGText {text} at (25,223) size 206x15 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 206x15
          chunk 1 text run 1 at (25.00,235.00) startOffset 0 endOffset 38 width 205.44: "Pattern consists of red and green rows"
      RenderSVGResourcePattern {pattern} [id="pat4"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,60) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (173,63) size 13x12 [fill={[type=SOLID] [color=#0000FF]}] [x=10.00] [y=0.00] [width=10.00] [height=10.00]
      RenderSVGText {text} at (25,238) size 307x46 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 307x46
          chunk 1 text run 1 at (25.00,275.00) startOffset 0 endOffset 17 width 306.13: "Pattern on stroke"
      RenderSVGText {text} at (25,278) size 217x15 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 217x15
          chunk 1 text run 1 at (25.00,290.00) startOffset 0 endOffset 40 width 216.79: "Pattern consists of red and blue columns"
      RenderSVGText {text} at (10,304) size 265x45 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 265x45
          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 264.66: "$Revision: 1.6 $"
      RenderSVGRect {rect} at (66,60) 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
