Packagefever.plugin
Classpublic class PluginResources
Implementscom.bourre.core.Locator

Plugin resources loader and manager.

Allows to add or append resources properties for current plugin instance, or default, to main application.

View the examples.



Public Methods
 MethodDefined by
  
addBundle(url:String, slot:String = null):Boolean
Adds new bundle file into loader queue.
PluginResources
  
addNodeParser(xmlNodeType:String, parsingMethod:Function):void
Defines new XML parser for passed-in type node.
PluginResources
  
getBoolean(key:String, defaultValue:Boolean = false):Boolean
Returns resource value registred with passed-in key identifier as Boolean.
PluginResources
  
getClass(key:String):Class
Returns resource value registred with passed-in key identifier as Class.
PluginResources
  
getCurrentLoader():XMLLoader
Returns current XMLLoader process if exist.
PluginResources
  
getInstance(owner:Plugin = null):PluginResources
[static] Retreives PluginResources instance for passed-in owner plugin.
PluginResources
  
getInt(key:String, defaultValue:int):int
Returns resource value registred with passed-in key identifier as int.
PluginResources
  
getNumber(key:String, defaultValue:Number):Number
Returns resource value registred with passed-in key identifier as Number.
PluginResources
  
getObject(key:String):Object
Returns resource value registred with passed-in key identifier as Object.
PluginResources
  
getOwner():Plugin
Returns plugin owner ( or null )
PluginResources
  
getString(key:String, defaultValue:String = null):String
Returns resource value registred with passed-in key identifier as String.
PluginResources
  
isRegistered(key:String):Boolean
Returns true if a resource is registred with passed-in key identifier.
PluginResources
  
load(context:LoaderContext = null):void
Loads bundle queue.
PluginResources
  
loadSlot(slot:String):Boolean
Swap resource slot.
PluginResources
  
locate(key:String):Object
Returns resource value registred with passed-in key identifier.
PluginResources
  
toString():String
Returns string representation.
PluginResources
Events
 EventSummaryDefined by
   Dispatched when error occurs for file loading.PluginResources
   Dispatched when bundle file is loaded.PluginResources
   Dispatched during bundle loading progression.PluginResources
   Dispatched when a new resources slot is engaged.PluginResources
   Dispatched when all bundles files ( in PluginResources loading queue ) are loaded.PluginResources
   Dispatched when a bundle file starts loading process.PluginResources
Method detail
addBundle()method
public function addBundle(url:String, slot:String = null):Boolean

Adds new bundle file into loader queue.

slot parameter allow to swap between diffrents slot value / content at runtime. ( for text translation for example ).

Parameters
url:String — URL of resource bundle file
 
slot:String (default = null) — Interchangeable resources slot ( default resources are store in a global slot )

Returns
Booleantrue if bundle is added to loader queue.
A bundle can be refused if url already exist in resources manager, if already in loading queue or if url is null.

Example
   
    resources.addBundle( "menuEN.xml", "en" );
    resources.addbundle( "menuFR.xml", "fr" ); 
   

addNodeParser()method 
public function addNodeParser(xmlNodeType:String, parsingMethod:Function):void

Defines new XML parser for passed-in type node.

Parameters
xmlNodeType:String — Type of the node to parse
 
parsingMethod:Function — Parsing method

Example
XML File
   
     <resource type="myType" id="Avatar" url="http://www...../avatar.jpg" />
   

So to parse the custom "myType" xml node, add new parser :
   
   public function test() : void
   {
    var rsc : PluginResources = PluginResources.getInstance( myPlugin );
    rsc.addBundle( "config.xml" );
    rsc.addBundle( "locale_fr.xml", "fr" );
    rsc.addNodeParser( "MyType", parseMyType );
    rsc.load();
   }
   
   private function parseMyType( node : XML ) : Object
   {
    //return ...
   }
   

getBoolean()method 
public function getBoolean(key:String, defaultValue:Boolean = false):Boolean

Returns resource value registred with passed-in key identifier as Boolean.

Parameters
key:String — Resource key to search
 
defaultValue:Boolean (default = false) — Value to return if resource is not defined

Returns
Boolean
getClass()method 
public function getClass(key:String):Class

Returns resource value registred with passed-in key identifier as Class.

Parameters
key:String — Resource key to search

Returns
Class
getCurrentLoader()method 
public function getCurrentLoader():XMLLoader

Returns current XMLLoader process if exist.

Returns
XMLLoader
getInstance()method 
public static function getInstance(owner:Plugin = null):PluginResources

Retreives PluginResources instance for passed-in owner plugin.

Parameters
owner:Plugin (default = null) — Plugin

Returns
PluginResources
getInt()method 
public function getInt(key:String, defaultValue:int):int

Returns resource value registred with passed-in key identifier as int.

Parameters
key:String — Resource key to search
 
defaultValue:int — Value to return if resource is not defined

Returns
int
getNumber()method 
public function getNumber(key:String, defaultValue:Number):Number

Returns resource value registred with passed-in key identifier as Number.

Parameters
key:String — Resource key to search
 
defaultValue:Number — Value to return if resource is not defined

Returns
Number
getObject()method 
public function getObject(key:String):Object

Returns resource value registred with passed-in key identifier as Object.

Parameters
key:String — Resource key to search

Returns
Object
getOwner()method 
public function getOwner():Plugin

Returns plugin owner ( or null )

Returns
Plugin
getString()method 
public function getString(key:String, defaultValue:String = null):String

Returns resource value registred with passed-in key identifier as String.

Parameters
key:String — Resource key to search
 
defaultValue:String (default = null) — Value to return if resource is not defined

Returns
String
isRegistered()method 
public function isRegistered(key:String):Boolean

Returns true if a resource is registred with passed-in key identifier.

Parameters
key:String — Resource key to search

Returns
Boolean
load()method 
public function load(context:LoaderContext = null):void

Loads bundle queue.

Parameters
context:LoaderContext (default = null) — Loader context

Events

loadSlot()method 
public function loadSlot(slot:String):Boolean

Swap resource slot.

Parameters
slot:String — New resource slot to engage.

Events

locate()method 
public function locate(key:String):Object

Returns resource value registred with passed-in key identifier.

Parameters
key:String — Resource key to search

Returns
Object — Resource value
toString()method 
public function toString():String

Returns string representation.

Returns
String
Event detail
onPluginResourceErrorevent 
Event object type: fever.events.PluginResourcesEvent
PluginResourcesEvent.type property = fever.events.PluginResourcesEvent.onPluginResourceErrorEVENT

Dispatched when error occurs for file loading.

Defines the value of the type property of the event object for a onPluginResourceError event.

The properties of the event object have the following values:

PropertyValue
target The Object that defines the event listener that handles the event
type Dispatched event type
MethodValue
getTarget() The Object that defines the event listener that handles the event
getType() Dispatched event type
getResources() The Object that defines the event listener that handles the event
getPlugin() Plugin onwer

Example
  
  private function _errorHandler( event : PluginResourcesEvent ) : void
  {
   var current : XMLLoader = event.getResources().getCurrentLoader();
   event.getPlugin().getLogger().error( current.getURL().url + " -> loading error );
  }
  

onPluginResourceInitevent  
Event object type: fever.events.PluginResourcesEvent
PluginResourcesEvent.type property = fever.events.PluginResourcesEvent.onPluginResourceInitEVENT

Dispatched when bundle file is loaded.

Note : deserialization process is done before event dispatching.

Defines the value of the type property of the event object for a onPluginResourceInit event.

The properties of the event object have the following values:

PropertyValue
target The Object that defines the event listener that handles the event
type Dispatched event type
MethodValue
getTarget() The Object that defines the event listener that handles the event
getType() Dispatched event type
getResources() The Object that defines the event listener that handles the event
getPlugin() Plugin onwer

Example
  
  private function _initHandler( event : PluginResourcesEvent ) : void
  {
   var current : XMLLoader = event.getResources().getCurrentLoader();
  }
  

onPluginResourceProgressevent  
Event object type: fever.events.PluginResourcesEvent
PluginResourcesEvent.type property = fever.events.PluginResourcesEvent.onPluginResourceProgressEVENT

Dispatched during bundle loading progression.

Defines the value of the type property of the event object for a onPluginResourceProgress event.

The properties of the event object have the following values:

PropertyValue
target The Object that defines the event listener that handles the event
type Dispatched event type
MethodValue
getTarget() The Object that defines the event listener that handles the event
getType() Dispatched event type
getResources() The Object that defines the event listener that handles the event
getPlugin() Plugin onwer

Example
  
  private function _progressHandler( event : PluginResourcesEvent ) : void
  {
   var current : XMLLoader = event.getResources().getCurrentLoader();
   event.getPlugin().getLogger().warn( current.getURL().url + " -> " + current.getPerCent() + "%" );
  }
  

onPluginResourcesChangeevent  
Event object type: fever.events.PluginResourcesEvent
PluginResourcesEvent.type property = fever.events.PluginResourcesEvent.onPluginResourcesChangeEVENT

Dispatched when a new resources slot is engaged.

Defines the value of the type property of the event object for a onPluginResourcesChange event.

The properties of the event object have the following values:

PropertyValue
target The Object that defines the event listener that handles the event
type Dispatched event type
MethodValue
getTarget() The Object that defines the event listener that handles the event
getType() Dispatched event type
getResources() The Object that defines the event listener that handles the event
getPlugin() Plugin onwer
onPluginResourcesLoadedevent  
Event object type: fever.events.PluginResourcesEvent

Dispatched when all bundles files ( in PluginResources loading queue ) are loaded.

onPluginResourceStartevent  
Event object type: fever.events.PluginResourcesEvent
PluginResourcesEvent.type property = fever.events.PluginResourcesEvent.onPluginResourceStartEVENT

Dispatched when a bundle file starts loading process.

Defines the value of the type property of the event object for a onPluginResourceStart event.

The properties of the event object have the following values:

PropertyValue
target The Object that defines the event listener that handles the event
type Dispatched event type
MethodValue
getTarget() The Object that defines the event listener that handles the event
getType() Dispatched event type
getResources() The Object that defines the event listener that handles the event
getPlugin() Plugin onwer

Example
  
  private function _startHandler( event : PluginResourcesEvent ) : void
  {
   var current : XMLLoader = event.getResources().getCurrentLoader();
  }
  

Examples

package fever.plugin
{
    import flash.display.Sprite;
    
    import com.bourre.load.XMLLoader;
    import com.bourre.log.Logger;
    
    import fever.app.context.browser.BrowserBuilder;
    import fever.core.FeverCore;
    import fever.core.RSCore;
    import fever.error.CoreEngineException;
    import fever.log.FirebugLayout;
    import fever.plugin.PluginResources;
    import fever.plugin.events.PluginResourcesEvent;    

    public class PluginResourcesSample extends Sprite
    {
        public function PluginResourcesSample( )
        {
            Logger.getInstance( ).addLogListener( FirebugLayout );
            
            try
            {
                RSCore.run( this, BrowserBuilder );
            }
            catch( e : CoreEngineException )
            {
                RSCore.getLogger().error( e.message );    
            }
            
            RSCore.addEventListener( PluginResourcesEvent.onPluginResourceStartEVENT, _startHandler );
            RSCore.addEventListener( PluginResourcesEvent.onPluginResourceProgressEVENT, _progressHandler );
            RSCore.addEventListener( PluginResourcesEvent.onPluginResourceInitEVENT, _initHandler );
            RSCore.addEventListener( PluginResourcesEvent.onPluginResourceErrorEVENT, _errorHandler );
            RSCore.addEventListener( PluginResourcesEvent.onPluginResourcesLoadedEVENT, _completeHandler );
            
            //Add resources in dedicated slot
            RSCore.getResources().addBundle( "menu.xml", "fr" );
            
            //Append resources in "fr" slot
            RSCore.getResources().addBundle( "menuTop.xml", "fr" );
            
            RSCore.getResources().addBundle( "config.xml" );
            RSCore.getResources().addBundle( "game.xml" );
            
            RSCore.getResources().load();
        }
        
        private function _startHandler( event : PluginResourcesEvent ) : void
        {
            var current : XMLLoader = event.getResources().getCurrentLoader();
            
            RSCore.getLogger().warn( event.type + " -> " + current.getURL().url );
        }
        
        private function _progressHandler( event : PluginResourcesEvent ) : void
        {
            var current : XMLLoader = event.getResources().getCurrentLoader();
            
            RSCore.getLogger().warn( event.type + " -> " + current.getURL().url + " -> " + current.getPerCent() + "%" );
        }
        
        private function _initHandler( event : PluginResourcesEvent ) : void
        {
            var current : XMLLoader = event.getResources().getCurrentLoader();
            
            RSCore.getLogger().warn( event.type + " -> " + current.getURL().url );
        }
        
        private function _errorHandler( event : PluginResourcesEvent ) : void
        {
            var current : XMLLoader = event.getResources().getCurrentLoader();
            
            RSCore.getLogger().error( event.type + " -> " + current.getURL().url );
        }
        
        private function _completeHandler( event : PluginResourcesEvent ) : void
        {
            RSCore.getLogger().warn( "Complete" );
            
            RSCore.getResources().loadSlot( "fr" );
            
            RSCore.getLogger().info( "MP3 List = " + RSCore.getResources().locate( "mp3List" ) );
            RSCore.getLogger().info( "Item value = " + RSCore.getResources().locate( "items.item" ) );
            RSCore.getLogger().info( "Livre value = " + RSCore.getResources().locate( "livre" ) );
            
            RSCore.getLogger().info( "Custom ID = " + ( RSCore.getResources().getNumber( "custom.attribute.id" ) + 100000000000 ) );
            RSCore.getLogger().info( "Custom ID FAL = " + ( RSCore.getResources().getNumber( "custom.attrib", 666 ) + 100000000000 ) );
            
            RSCore.getLogger().info( "Complete ID = " + RSCore.getResources().locate( "cutomComplete.attribute.id" ) );
            RSCore.getLogger().info( "Complete value = " + RSCore.getResources().locate( "cutomComplete" ) );
            
            RSCore.getLogger().info( "Complex id = " + RSCore.getResources().locate( "complex.attribute.id" ) );
            RSCore.getLogger().info( "Complex name = " + RSCore.getResources().locate( "complex.attribute.name" ) );
            RSCore.getLogger().info( "Complex data = " + RSCore.getResources().locate( "complex.data" ) );
            
            RSCore.getLogger().info( "Difficulty value = " + RSCore.getResources().locate( "difficulty" ) );
            
            RSCore.getLogger().info( "Navigation label = " + RSCore.getResources().locate( "topNav" ) );
            RSCore.getLogger().info( "Top Navigation label = " + RSCore.getResources().locate( "buttonLabel" ) );
            
            RSCore.getLogger().info( "boolean1 = " + RSCore.getResources().getBoolean( "boolean1" ) );
            RSCore.getLogger().info( "boolean2 = " + RSCore.getResources().getBoolean( "boolean2" ) );
            RSCore.getLogger().info( "boolean3 = " + RSCore.getResources().getBoolean( "boolean3" ) );
            RSCore.getLogger().info( "boolean4 = " + RSCore.getResources().getBoolean( "boolean4" ) );
            RSCore.getLogger().info( "boolean5 = " + RSCore.getResources().getBoolean( "boolean5" ) );
            RSCore.getLogger().info( "boolean6 = " + RSCore.getResources().getBoolean( "boolean6" ) );
            RSCore.getLogger().info( "boolean7 = " + RSCore.getResources().getBoolean( "boolean7" ) );
            RSCore.getLogger().info( "boolean8 = " + RSCore.getResources().getBoolean( "boolean8" ) );
            RSCore.getLogger().info( "boolean9 = " + RSCore.getResources().getBoolean( "boolean9" ) );
            RSCore.getLogger().info( "boolean10 = " + RSCore.getResources().getBoolean( "boolean10" ) );
            RSCore.getLogger().info( "boolean11 = " + RSCore.getResources().getBoolean( "boolean11" ) );
            RSCore.getLogger().info( "boolean12 = " + RSCore.getResources().getBoolean( "boolean12" ) );
            
            RSCore.getLogger().info( "classType = " + RSCore.getResources().getClass( "classType" ) );
        }
    }
}




PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources PluginResources
fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources fever.plugin.PluginResources