################################################################################
##
##  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"?>
<actionScriptProperties mainApplicationPath="DataGridBasic.mxml" projectUUID="ffc6509e-ce05-45ac-83c6-edfa582e4c92" version="6">
  <compiler additionalCompilerArguments="-locale en_US -define=CONFIG::skaha,true" autoRSLOrdering="true" copyDependentFiles="false" flexSDK="Flex 4.1 (latest)" fteInMXComponents="false" generateAccessible="true" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin-debug" sourceFolderPath="swfs" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
    <compilerSourcePath/>
    <libraryPath defaultLinkType="1">
      <libraryPathEntry kind="4" path="">
        <modifiedEntries>
          <libraryPathEntry index="3" kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/framework.swc" useDefaultLinkType="true">
            <crossDomainRsls>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="framework_4.0.0.13684.swf"/>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="http://fpdownload.adobe.com/pub/swz/crossdomain.xml" rslUrl="http://fpdownload.adobe.com/pub/swz/flex/4.0.0.13684/framework_4.0.0.13684.swf"/>
            </crossDomainRsls>
          </libraryPathEntry>
          <libraryPathEntry index="2" kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/osmf.swc" useDefaultLinkType="true">
            <crossDomainRsls>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="osmf_flex.4.0.0.13495.swf"/>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="http://fpdownload.adobe.com/pub/swz/crossdomain.xml" rslUrl="http://fpdownload.adobe.com/pub/swz/flex/4.0.0.13684/osmf_flex.4.0.0.13495.swf"/>
            </crossDomainRsls>
          </libraryPathEntry>
          <libraryPathEntry index="6" kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/rpc.swc" useDefaultLinkType="true">
            <crossDomainRsls>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="rpc_4.0.0.13684.swf"/>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="http://fpdownload.adobe.com/pub/swz/crossdomain.xml" rslUrl="http://fpdownload.adobe.com/pub/swz/flex/4.0.0.13684/rpc_4.0.0.13684.swf"/>
            </crossDomainRsls>
          </libraryPathEntry>
          <libraryPathEntry index="4" kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/spark.swc" useDefaultLinkType="true">
            <crossDomainRsls>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="spark_4.0.0.13684.swf"/>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="http://fpdownload.adobe.com/pub/swz/crossdomain.xml" rslUrl="http://fpdownload.adobe.com/pub/swz/flex/4.0.0.13684/spark_4.0.0.13684.swf"/>
            </crossDomainRsls>
          </libraryPathEntry>
          <libraryPathEntry index="5" kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/sparkskins.swc" useDefaultLinkType="true">
            <crossDomainRsls>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="sparkskins_4.0.0.13684.swf"/>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="http://fpdownload.adobe.com/pub/swz/crossdomain.xml" rslUrl="http://fpdownload.adobe.com/pub/swz/flex/4.0.0.13684/sparkskins_4.0.0.13684.swf"/>
            </crossDomainRsls>
          </libraryPathEntry>
          <libraryPathEntry index="1" kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/textLayout.swc" useDefaultLinkType="true">
            <crossDomainRsls>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="textLayout_1.0.0.591.swf"/>
              <crossDomainRslEntry autoExtract="true" policyFileUrl="http://fpdownload.adobe.com/pub/swz/crossdomain.xml" rslUrl="http://fpdownload.adobe.com/pub/swz/flex/4.0.0.13684/textLayout_1.0.0.591.swf"/>
            </crossDomainRsls>
          </libraryPathEntry>
        </modifiedEntries>
        <excludedEntries>
          <libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flex.swc" useDefaultLinkType="false"/>
        </excludedEntries>
      </libraryPathEntry>
      <libraryPathEntry kind="1" linkType="1" path="libs"/>
      <libraryPathEntry kind="3" linkType="1" path="C:/depot/flex/qa/sdk/testsuites/scenarios/Skaha/src/skaha.swc" useDefaultLinkType="false"/>
    </libraryPath>
    <sourceAttachmentPath/>
  </compiler>
  <applications>
    <application path="Mirroring_Main_Application.mxml"/>
    <application path="Mirroring_Main.mxml"/>
    <application path="Mirroring_Main2.mxml"/>
  </applications>
  <modules/>
  <buildCSSFiles/>
</actionScriptProperties>
