################################################################################
##
##  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.
##
################################################################################
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fxpProperties abbreviated="false" authoringTool="Flex Builder" compiles="true" parentProject="e1928dfe-1b09-495a-a46f-8acad6a4cb84" projectUUID="e1928dfe-1b09-495a-a46f-8acad6a4cb84" sdkVersion="4.5.0" uuid="1778fb4a-f305-4032-aeb2-042a602514c1" version="9">
  <projects/>
  <src>
    <linked isMain="false" location="${QA}/frameworks/mustella" path="${QA}/frameworks/mustella" position="0" uuid="1778fb4a-f305-4032-aeb2-042a602514c1"/>
  </src>
  <swc>
    <linked location="sdkPlaceHolder" path="sdkPlaceHolder" position="0" uuid="1778fb4a-f305-4032-aeb2-042a602514c1"/>
  </swc>
  <misc/>
  <theme/>
  <mxmlFormattingPrefs groupAttributesByState="true" maxLineWidth="100" mxmlAlignAttributes="true" mxmlAttributeOrder="id,userLabel,includeIn,excludeFrom,visible,x,y,z,left,right,top,bottom,width,height,minWidth,minHeight,maxWidth,maxHeight,label" mxmlKeepAttributeValuesOrganized="true"/>
</fxpProperties>
