<?xml version="1.0"?>
<!--

  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.

-->


<royale-config>
    <!-- Specifies the minimum player version that will run the compiled SWF. -->
   <target-player>@playerversion@</target-player>

    <!-- Specifies the version of the compiled SWF -->
   <swf-version>@swfversion@</swf-version>
    
   <compiler>
       
      <!-- build both SWF and JS. -->
      <targets>
          <target>SWF</target>
          <target>JSRoyale</target>
      </targets>

      <define><name>COMPILE::SWF</name><value>AUTO</value></define>
      <define><name>COMPILE::JS</name><value>AUTO</value></define>

      <!-- Turn on generation of accessible SWFs. -->
      <accessible>true</accessible>
      
      <!-- Specifies the locales for internationalization. -->
      <locale>
          <locale-element>@locale@</locale-element>
      </locale>
      
      <!-- List of path elements that form the roots of ActionScript class hierarchies. -->
      <!-- not set -->
      <!--
      <source-path>
         <path-element>string</path-element>
      </source-path>
      -->
	  
	  <!-- Allow the source-path to have path-elements which contain other path-elements -->
	  <allow-source-path-overlap>false</allow-source-path-overlap>
      
      <!-- Run the AS3 compiler in a mode that detects legal but potentially incorrect -->
      <!-- code.                                                                       -->
      <show-actionscript-warnings>true</show-actionscript-warnings>
      
      <!-- Turn on generation of debuggable SWFs. False by default for mxmlc, -->
      <!-- but true by default for compc. -->
      <!--
      <debug>true</debug>
      -->

      <!-- List of SWC files or directories to compile against but to omit from -->
      <!-- linking.                                                             -->
      <external-library-path>
          <path-element>{airHome}/frameworks/libs/air/airglobal.swc</path-element>
      </external-library-path>
      
      <!-- List of SWC files or directories to compile against but to omit from -->
      <!-- linking.                                                             -->
      <js-external-library-path>
          <path-element>../js/libs/js.swc</path-element>
          <path-element>../js/libs/GCL.swc</path-element>
      </js-external-library-path>
      
      <!-- Turn on writing of generated/*.as files to disk. These files are generated by -->
      <!-- the compiler during mxml translation and are helpful with understanding and   -->
      <!-- debugging Royale applications.                                                  -->
      <keep-generated-actionscript>false</keep-generated-actionscript>

      <!-- not set -->
      <!--
      <include-libraries>
         <library>string</library>
      </include-libraries>
      -->
      
      <!-- List of SWC files or directories that contain SWC files. -->
      <library-path>
         <path-element>libs</path-element>
         <path-element>{airHome}/frameworks/libs/air</path-element>
      </library-path>
      
      <!-- List of SWC files or directories that contain SWC files. -->
      <js-library-path>
          <path-element>js/libs</path-element>
      </js-library-path>
      
      <allow-subclass-overrides>true</allow-subclass-overrides>
     <mxml>
         <children-as-data>true</children-as-data>
         <imports>
             <implicit-import>org.apache.royale.events.*</implicit-import>
             <implicit-import>org.apache.royale.geom.*</implicit-import>
             <implicit-import>org.apache.royale.core.ClassFactory</implicit-import>
             <implicit-import>org.apache.royale.core.IFactory</implicit-import>
         </imports>
     </mxml>
     <binding-value-change-event>org.apache.royale.events.ValueChangeEvent</binding-value-change-event>
     <binding-value-change-event-kind>org.apache.royale.events.ValueChangeEvent</binding-value-change-event-kind>
     <binding-value-change-event-type>valueChange</binding-value-change-event-type>
     <binding-event-handler-event>org.apache.royale.events.Event</binding-event-handler-event>
     <binding-event-handler-class>org.apache.royale.events.EventDispatcher</binding-event-handler-class>
     <binding-event-handler-interface>org.apache.royale.events.IEventDispatcher</binding-event-handler-interface>
     <states-class>org.apache.royale.states.State</states-class>
     <states-instance-override-class>org.apache.royale.states.AddItems</states-instance-override-class>
     <states-property-override-class>org.apache.royale.states.SetProperty</states-property-override-class>
     <states-event-override-class>org.apache.royale.states.SetEventHandler</states-event-override-class>
     <component-factory-class>org.apache.royale.core.ClassFactory</component-factory-class>
     <component-factory-interface>org.apache.royale.core.IFactory</component-factory-interface>

     <namespaces>
      <!-- Specify a URI to associate with a manifest of components for use as MXML -->
      <!-- elements.                                                                -->
      <namespace>
          <uri>http://ns.adobe.com/mxml/2009</uri>
          <manifest>mxml-2009-manifest.xml</manifest>
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Binding/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Basic/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Charts/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Collections/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
         <namespace>
            <uri>library://ns.apache.org/royale/basic</uri>
            
            <manifest>projects/Core/src/main/resources/basic-manifest.xml</manifest>
         
        </namespace>                                                 
         <namespace>
             <uri>library://ns.apache.org/royale/basic</uri>
             
             <manifest>projects/DragDrop/src/main/resources/basic-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/basic</uri>
             
             <manifest>projects/Effects/src/main/resources/basic-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/basic</uri>
             
             <manifest>projects/Formatters/src/main/resources/basic-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/basic</uri>
             
             <manifest>projects/Graphics/src/main/resources/basic-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/basic</uri>
             
             <manifest>projects/HTML/src/main/resources/basic-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/basic</uri>
             
             <manifest>projects/Mobile/src/main/resources/basic-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/basic</uri>
             
             <manifest>projects/Network/src/main/resources/basic-manifest.xml</manifest>
             
         </namespace>
         <namespace>
            <uri>library://ns.apache.org/royale/html5</uri>
            
            <manifest>projects/HTML5/src/main/resources/html5-manifest.xml</manifest>
         
        </namespace>   
         <namespace>
             <uri>library://ns.apache.org/royale/flat</uri>
             
             <manifest>projects/Flat/src/main/resources/flat-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/jquery</uri>
             
             <manifest>projects/JQuery/src/main/resources/jquery-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/google</uri>
             
             <manifest>projects/GoogleMaps/src/main/resources/google-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/cordova</uri>
             
             <manifest>projects/Mobile/src/main/resources/cordova-manifest.xml</manifest>
             
         </namespace>
         <namespace>
             <uri>library://ns.apache.org/royale/createjs</uri>
             
             <manifest>projects/CreateJS/src/main/resources/createjs-manifest.xml</manifest>
             
         </namespace>
      </namespaces>
      
      <!-- Enable post-link SWF optimization. -->
      <optimize>true</optimize>

      <!-- Keep the following AS3 metadata in the bytecodes.                                             -->
      <!-- Warning: For the data binding feature in the Royale framework to work properly,                 -->
      <!--          the following metadata must be kept:                                                 -->
      <!--          1. Bindable                                                                          -->
      <!--          2. Managed                                                                           -->
      <!--          3. ChangeEvent                                                                       -->
      <!--          4. NonCommittingChangeEvent                                                          -->
      <!--          5. Transient                                                                         -->
      <!--
      <keep-as3-metadata>
          <name>Bindable</name>
          <name>Managed</name>
          <name>ChangeEvent</name>
          <name>NonCommittingChangeEvent</name>
          <name>Transient</name>
          <name>Mixin</name>
      </keep-as3-metadata>
      -->

      <!-- Turn on reporting of data binding warnings. For example: Warning: Data binding -->
      <!-- will not be able to detect assignments to "foo".                               -->
      <show-binding-warnings>true</show-binding-warnings>
      
      <!-- toggle whether warnings generated from unused type selectors are displayed -->
      <show-unused-type-selector-warnings>true</show-unused-type-selector-warnings>

      <!-- Run the AS3 compiler in strict error checking mode. -->
      <strict>true</strict>
      
      <!-- Use the ActionScript 3 class based object model for greater performance and better error reporting. -->
      <!-- In the class based object model most built-in functions are implemented as fixed methods of classes -->
      <!-- (-strict is recommended, but not required, for earlier errors) -->
      <as3>true</as3>
      
      <!-- Use the ECMAScript edition 3 prototype based object model to allow dynamic overriding of prototype -->
      <!-- properties. In the prototype based object model built-in functions are implemented as dynamic      -->
      <!-- properties of prototype objects (-strict is allowed, but may result in compiler errors for         -->
      <!-- references to dynamic properties) -->
      <es>false</es>
      
      <!-- List of CSS or SWC files to apply as a theme. -->
      <!-- not set -->
      <theme>
          <filename>themes/Basic/src/basic.css</filename>
      </theme>
      
      <!-- Turns on the display of stack traces for uncaught runtime errors. -->
      <verbose-stacktraces>false</verbose-stacktraces>
      
      <!-- Defines the AS3 file encoding. -->
      <!-- not set -->
      <!--
      <actionscript-file-encoding></actionscript-file-encoding>
      -->
      
      <fonts>

          <!-- Enables advanced anti-aliasing for embedded fonts, which provides greater clarity for small -->
          <!-- fonts. This setting can be overriden in CSS for specific fonts. -->
          <!-- NOTE: flash-type has been deprecated. Please use advanced-anti-aliasing <flash-type>true</flash-type> -->
          <advanced-anti-aliasing>true</advanced-anti-aliasing>
        
          <!-- The number of embedded font faces that are cached. -->
          <max-cached-fonts>20</max-cached-fonts>
        
          <!-- The number of character glyph outlines to cache for each font face. -->
          <max-glyphs-per-face>1000</max-glyphs-per-face>
       
          <!-- Defines ranges that can be used across multiple font-face declarations. -->
          <!-- See flash-unicode-table.xml for more examples. -->
          <!-- not set -->
          <!--
          <languages>
              <language-range>
                  <lang>englishRange</lang>
                  <range>U+0020-U+007E</range>
              </language-range>
          </languages>
          -->
       
          <!-- Compiler font manager classes, in policy resolution order-->
          <managers>
              <manager-class>flash.fonts.JREFontManager</manager-class>
              <manager-class>flash.fonts.AFEFontManager</manager-class>
              <manager-class>flash.fonts.BatikFontManager</manager-class>
              <manager-class>flash.fonts.CFFFontManager</manager-class> 
          </managers>

          <!-- File containing cached system font licensing information produced via 
               java -cp mxmlc.jar flex2.tools.FontSnapshot (fontpath)
               Will default to winFonts.ser on Windows XP and
               macFonts.ser on Mac OS X, so is commented out by default.

          <local-fonts-snapshot>localFonts.ser</local-fonts-snapshot>
          -->
     
      </fonts> 
	   
      <!-- Array.toString() format has changed. -->
      <warn-array-tostring-changes>false</warn-array-tostring-changes>
      
      <!-- Assignment within conditional. -->
      <warn-assignment-within-conditional>true</warn-assignment-within-conditional>
      
      <!-- Possibly invalid Array cast operation. -->
      <warn-bad-array-cast>true</warn-bad-array-cast>
      
      <!-- Non-Boolean value used where a Boolean value was expected. -->
      <warn-bad-bool-assignment>true</warn-bad-bool-assignment>

      <!-- Invalid Date cast operation. -->
      <warn-bad-date-cast>true</warn-bad-date-cast>
      
      <!-- Unknown method. -->
      <warn-bad-es3-type-method>true</warn-bad-es3-type-method>

      <!-- Unknown property. -->
      <warn-bad-es3-type-prop>true</warn-bad-es3-type-prop>

      <!-- Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN. -->
      <warn-bad-nan-comparison>true</warn-bad-nan-comparison>

      <!-- Impossible assignment to null. -->
      <warn-bad-null-assignment>true</warn-bad-null-assignment>

      <!-- Illogical comparison with null. -->
      <warn-bad-null-comparison>true</warn-bad-null-comparison>

      <!-- Illogical comparison with undefined. Only untyped variables (or variables of type *) can be undefined. -->
      <warn-bad-undefined-comparison>true</warn-bad-undefined-comparison>

      <!-- Boolean() with no arguments returns false in ActionScript 3.0. Boolean() returned undefined in ActionScript 2.0. -->
      <warn-boolean-constructor-with-no-args>false</warn-boolean-constructor-with-no-args>

      <!-- __resolve is no longer supported. -->
      <warn-changes-in-resolve>false</warn-changes-in-resolve>

      <!-- Class is sealed. It cannot have members added to it dynamically. -->
      <warn-class-is-sealed>true</warn-class-is-sealed>
 
      <!-- Constant not initialized. -->
      <warn-const-not-initialized>true</warn-const-not-initialized>

      <!-- Function used in new expression returns a value. Result will be what the -->
      <!-- function returns, rather than a new instance of that function.           -->
      <warn-constructor-returns-value>false</warn-constructor-returns-value>

      <!-- EventHandler was not added as a listener. -->
      <warn-deprecated-event-handler-error>false</warn-deprecated-event-handler-error>

      <!-- Unsupported ActionScript 2.0 function. -->
      <warn-deprecated-function-error>true</warn-deprecated-function-error>

      <!-- Unsupported ActionScript 2.0 property. -->
      <warn-deprecated-property-error>true</warn-deprecated-property-error>

      <!-- More than one argument by the same name. -->
      <warn-duplicate-argument-names>true</warn-duplicate-argument-names>

      <!-- Duplicate variable definition -->
      <warn-duplicate-variable-def>true</warn-duplicate-variable-def>

      <!-- ActionScript 3.0 iterates over an object's properties within a "for x in target" statement in random order. -->
      <warn-for-var-in-changes>false</warn-for-var-in-changes>

      <!-- Importing a package by the same name as the current class will hide that class identifier in this scope. -->
      <warn-import-hides-class>true</warn-import-hides-class>

      <!-- Use of the instanceof operator. -->
      <warn-instance-of-changes>true</warn-instance-of-changes>

      <!-- Internal error in compiler. -->
      <warn-internal-error>true</warn-internal-error>

      <!-- _level is no longer supported. For more information, see the flash.display package. -->
      <warn-level-not-supported>true</warn-level-not-supported>

      <!-- Missing namespace declaration (e.g. variable is not defined to be public, private, etc.). -->
      <warn-missing-namespace-decl>true</warn-missing-namespace-decl>

      <!-- Negative value will become a large positive value when assigned to a uint data type. -->
      <warn-negative-uint-literal>true</warn-negative-uint-literal>

      <!-- Missing constructor. -->
      <warn-no-constructor>false</warn-no-constructor>

      <!-- The super() statement was not called within the constructor. -->
      <warn-no-explicit-super-call-in-constructor>false</warn-no-explicit-super-call-in-constructor>

      <!-- Missing type declaration. -->
      <warn-no-type-decl>true</warn-no-type-decl>
     
      <!-- In ActionScript 3.0, white space is ignored and '' returns 0. Number() returns -->
      <!-- NaN in ActionScript 2.0 when the parameter is '' or contains white space.      -->
      <warn-number-from-string-changes>false</warn-number-from-string-changes>
      
      <!-- Change in scoping for the this keyword. Class methods extracted from an  -->
      <!-- instance of a class will always resolve this back to that instance. In   -->
      <!-- ActionScript 2.0 this is looked up dynamically based on where the method -->
      <!-- is invoked from.                                                         -->
      <warn-scoping-change-in-this>false</warn-scoping-change-in-this>
      
      <!-- Inefficient use of += on a TextField.-->
      <warn-slow-text-field-addition>true</warn-slow-text-field-addition>
     
      <!-- Possible missing parentheses. -->
      <warn-unlikely-function-value>true</warn-unlikely-function-value>
      
      <!-- Possible usage of the ActionScript 2.0 XML class. -->
      <warn-xml-class-has-changed>false</warn-xml-class-has-changed>
   
   </compiler>

   <!-- compute-digest: writes a digest to the catalog.xml of a library. Use this when the library will be used as a
                        cross-domain rsl.-->
   <!-- compute-digest usage:
   <compute-digest>boolean</compute-digest>
   -->

   <!-- remove-unused-rsls: remove RSLs that are not being used by the application-->
   <remove-unused-rsls>true</remove-unused-rsls>
	
	
    <!-- static-link-runtime-shared-libraries: statically link the libraries specified by the -runtime-shared-libraries-path option.-->
	<static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>
   
   <!-- target-player: specifies the version of the player the application is targeting. 
	               Features requiring a later version will not be compiled into the application. 
                       The minimum value supported is "9.0.0".-->
   <!-- target-player usage:
   <target-player>version</target-player>
   -->

   <!-- Enables SWFs to access the network. -->
   <use-network>true</use-network>
   
   <!-- Metadata added to SWFs via the SWF Metadata tag. -->
   <metadata>
      <title>Apache Royale Application</title>
      <description>http://royale.apache.org/</description>
      <publisher>Apache Software Foundation</publisher>
      <creator>Apache Software Foundation</creator>
      <language>en_US</language>
   </metadata>

</royale-config>
