<?xml version="1.0" encoding="utf-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
 <flow:TextFlow xmlns:flow="http://ns.adobe.com/textLayout/2008" textAlign="center" columnWidth="285" columnCount="2" fontWeight="bold" fontFamily="Verdana" fontSize="16" textIndent="15" paragraphSpaceAfter="15" paddingTop="4" paddingLeft="4">
   <flow:img width="237" height="298" source="../../test/testFiles/assets/carrot.png"/>
   <flow:p>The Apache Flex SDK is the evolution of the popular Adobe Flex SDK.<flow:img baselineShift="5" width="25" height="25" source="../../test/testFiles/assets/smiley.gif"></flow:img></flow:p>
   <flow:img source="../../test/testFiles/assets/leaves.jpg"/>
   <flow:p>The Apache Flex SDK is an application development framework for easily building Flash based applications for mobile devices, web browsers, and desktop platforms.<flow:br/><flow:br/></flow:p>
   <flow:p>This is an animated embedded SWF placed in the text flow. <flow:img baselineShift="5" height="20" width="20" source="../../test/testFiles/assets/RedCircles.swf"></flow:img></flow:p>
 </flow:TextFlow>
