Author: tchemit Date: 2010-01-18 17:20:02 +0000 (Mon, 18 Jan 2010) New Revision: 1585 Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/UIHelper.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocaleAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocationActionNameProvider.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConfigAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SiteAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractContext.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractOptionAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionKey.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionParser.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeFileConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionEditConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelp.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelpConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionResetConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionShowConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionUi.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigLocal.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigMain.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigRemote.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeFileConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionEditConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelp.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelpConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionResetConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionShowConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionUi.java trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/META-INF/ trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/META-INF/services/ trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/META-INF/services/org.codelutin.option.Context trunk/simexplorer-is/src/site/rst/ trunk/simexplorer-is/src/site/rst/devel/ trunk/simexplorer-is/src/site/rst/devel/authorization.jpg trunk/simexplorer-is/src/site/rst/devel/diagramme1.png trunk/simexplorer-is/src/site/rst/devel/enviro.rst trunk/simexplorer-is/src/site/rst/devel/implementation.rst trunk/simexplorer-is/src/site/rst/devel/index.rst trunk/simexplorer-is/src/site/rst/devel/migration2009.rst trunk/simexplorer-is/src/site/rst/devel/nok.png trunk/simexplorer-is/src/site/rst/devel/ok.png trunk/simexplorer-is/src/site/rst/devel/old/ trunk/simexplorer-is/src/site/rst/devel/old/architecture.abw trunk/simexplorer-is/src/site/rst/devel/old/architecture.txt trunk/simexplorer-is/src/site/rst/devel/old/architecture.xhtml trunk/simexplorer-is/src/site/rst/devel/old/authorization.uxf trunk/simexplorer-is/src/site/rst/devel/old/developpement.abw trunk/simexplorer-is/src/site/rst/devel/old/diagramme1.dia trunk/simexplorer-is/src/site/rst/devel/old/glassfish.txt trunk/simexplorer-is/src/site/rst/devel/old/maven.rst trunk/simexplorer-is/src/site/rst/devel/old/migration.txt trunk/simexplorer-is/src/site/rst/devel/old/sequence1.uxf trunk/simexplorer-is/src/site/rst/devel/old/template.uxf trunk/simexplorer-is/src/site/rst/devel/old/version.uxf trunk/simexplorer-is/src/site/rst/devel/screenshots/ trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-1.png trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-2.png trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-3.png trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-4.png trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-5.png trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot.png trunk/simexplorer-is/src/site/rst/devel/uok.png trunk/simexplorer-is/src/site/rst/index.rst trunk/simexplorer-is/src/site/rst/install.rst trunk/simexplorer-is/src/site/rst/rules.rst trunk/simexplorer-is/src/site/rst/todo.rst Removed: trunk/simexplorer-is/src/site/fr/ Modified: trunk/simexplorer-is/ trunk/simexplorer-is/LICENSE.txt trunk/simexplorer-is/pom.xml trunk/simexplorer-is/simexplorer-is-ear/ trunk/simexplorer-is/simexplorer-is-ear/LICENSE.txt trunk/simexplorer-is/simexplorer-is-ear/pom.xml trunk/simexplorer-is/simexplorer-is-entities/ trunk/simexplorer-is/simexplorer-is-entities/LICENSE.txt trunk/simexplorer-is/simexplorer-is-entities/pom.xml trunk/simexplorer-is/simexplorer-is-security/ trunk/simexplorer-is/simexplorer-is-security/LICENSE.txt trunk/simexplorer-is/simexplorer-is-service/ trunk/simexplorer-is/simexplorer-is-service/LICENSE.txt trunk/simexplorer-is/simexplorer-is-service/pom.xml trunk/simexplorer-is/simexplorer-is-storage/ trunk/simexplorer-is/simexplorer-is-storage/LICENSE.txt trunk/simexplorer-is/simexplorer-is-swing/ trunk/simexplorer-is/simexplorer-is-swing/LICENSE.txt trunk/simexplorer-is/simexplorer-is-swing/pom.xml trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AdvancedSearchAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadElementAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GenerateDataAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoFirstPageAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetPasswordAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowLocalTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleLocalTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleRemoteTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryNextAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryResetAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerBaseAction.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUI.jaxx trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-en_GB.properties trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-fr_FR.properties trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/log4j.properties trunk/simexplorer-is/simexplorer-is-web/ trunk/simexplorer-is/simexplorer-is-web/LICENSE.txt trunk/simexplorer-is/src/site/site_fr.xml Log: - utilisation de mavenpom4labs 2.0.1 - normalisation des sites - suppression de la generation via commandline - license en GPL et non pas LGPL Property changes on: trunk/simexplorer-is ___________________________________________________________________ Modified: svn:ignore - target .project *.iml *.ipr *.iws .classpath *.log + target .* nbactions.xml *.iml *.iws *.ipr *.log Modified: trunk/simexplorer-is/LICENSE.txt =================================================================== --- trunk/simexplorer-is/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Modified: trunk/simexplorer-is/pom.xml =================================================================== --- trunk/simexplorer-is/pom.xml 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/pom.xml 2010-01-18 17:20:02 UTC (rev 1585) @@ -9,11 +9,11 @@ <!-- *** POM Relationships *************************************** --> <!-- ************************************************************* --> - <!--parent> - <groupId>org.codelutin</groupId> - <artifactId>lutinproject</artifactId> - <version>3.4</version> - </parent--> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>mavenpom4labs</artifactId> + <version>2.0.1</version> + </parent> <groupId>simexplorer-is</groupId> <artifactId>simexplorer-is</artifactId> @@ -29,13 +29,6 @@ <module>simexplorer-is-ear</module> </modules> - <!--dependencies> - <dependency> - <groupId>org.codelutin</groupId> - <artifactId>lutinutil</artifactId> - </dependency> - </dependencies--> - <dependencyManagement> <dependencies> @@ -46,61 +39,60 @@ <version>${lutinutil.version}</version> </dependency> - <!--dependency> - <groupId>org.nuiton</groupId> - <artifactId>nuiton-widgets</artifactId> - <version>${lutinwidget.version}</version> + <!-- librairie Jaxx --> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-runtime</artifactId> + <version>${jaxx.version}</version> <scope>compile</scope> <exclusions> <exclusion> - <groupId>sdoc</groupId> - <artifactId>sdoc</artifactId> + <groupId>javax.help</groupId> + <artifactId>javahelp</artifactId> </exclusion> <exclusion> - <groupId>javax.mail</groupId> - <artifactId>mail</artifactId> + <groupId>org.swinglabs</groupId> + <artifactId>jxlayer</artifactId> </exclusion> <exclusion> - <groupId>externallib</groupId> - <artifactId>l2fprod-common</artifactId> + <groupId>commons-jxpath</groupId> + <artifactId>commons-jxpath</artifactId> </exclusion> <exclusion> - <groupId>jgoodies</groupId> - <artifactId>looks</artifactId> + <groupId>com.opensymphony</groupId> + <artifactId>xwork</artifactId> </exclusion> </exclusions> - </dependency--> + </dependency> - <!-- librairie Jaxx --> <dependency> <groupId>org.nuiton.jaxx</groupId> - <artifactId>jaxx-runtime-swing</artifactId> + <artifactId>jaxx-widgets</artifactId> <version>${jaxx.version}</version> - <scope>compile</scope> <exclusions> <exclusion> <groupId>javax.help</groupId> <artifactId>javahelp</artifactId> </exclusion> + <exclusion> <groupId>org.swinglabs</groupId> + <artifactId>swingx</artifactId> + </exclusion> + <exclusion> + <groupId>org.swinglabs</groupId> <artifactId>jxlayer</artifactId> </exclusion> <exclusion> - <groupId>commons-jxpath</groupId> - <artifactId>commons-jxpath</artifactId> + <groupId>org.swinglabs</groupId> + <artifactId>swing-worker</artifactId> </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.nuiton.jaxx</groupId> - <artifactId>jaxx-runtime-swing-widget</artifactId> - <version>${jaxx.version}</version> - </dependency> - - <dependency> - <groupId>org.nuiton.jaxx</groupId> <artifactId>jaxx-swing-action</artifactId> <version>${jaxx.version}</version> <scope>compile</scope> @@ -156,7 +148,7 @@ <dependency> <groupId>tapestry5-treegrid</groupId> <artifactId>tapestry5-treegrid</artifactId> - <version>${tapestry.version}.1</version> + <version>${tapestry.grid.version}</version> </dependency> <dependency> <groupId>org.apache.tapestry</groupId> @@ -176,8 +168,8 @@ <dependency> <groupId>org.apache.tapestry</groupId> <artifactId>t5c-commons</artifactId> - <version>0.5.15</version> - <!--version>0.5.11</version--> + <!--version>0.5.15</version--> + <version>0.5.11</version> </dependency> <!-- autres librairies --> @@ -185,7 +177,7 @@ <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <version>4.6</version> + <version>4.7</version> <scope>test</scope> </dependency> @@ -205,7 +197,8 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.0.64</version> + <version>1.2.120</version> + <!--<version>1.0.64</version>--> </dependency> <dependency> @@ -223,7 +216,8 @@ <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> - <version>1.4</version> + <version>1.4.2</version> + <!--<version>1.4</version>--> </dependency> <dependency> @@ -243,7 +237,8 @@ <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> - <version>5.1</version> + <version>5.10</version> + <!--<version>5.1</version>--> <classifier>jdk15</classifier> <scope>test</scope> </dependency> @@ -260,13 +255,15 @@ <inceptionYear>2008</inceptionYear> <url>http://simexplorer-si.labs.libre-entreprise.org</url> - <licenses> + <!--licenses> <license> <name>GPL</name> + <url>${maven.license.file}</url> + <distribution>local</distribution> <url>http://www.gnu.org/copyleft/gpl.html</url> <distribution>repo</distribution> </license> - </licenses> + </licenses--> <organization> <name>Cemagref</name> @@ -285,7 +282,19 @@ </roles> </contributor> </contributors> - + <developers> + <developer> + <name>Tony Chemit</name> + <id>tchemit</id> + <email>chemit at codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + </developers> + <!-- ************************************************************* --> <!-- *** Build Settings ****************************************** --> <!-- ************************************************************* --> @@ -295,343 +304,134 @@ <properties> <!-- labs --> + <platform>labs.libre-entreprise.org</platform> + <labs.id>130</labs.id> - <labs.project>simexplorer-si</labs.project> - <labs.list.host>lists.labs.libre-entreprise.org</labs.list.host> - <!--i18n.bundles>fr_FR</i18n.bundles--> + <projectId>simexplorer-si</projectId> + <labs.project>simexplorer-si</labs.project> + <!--<labs.list.host>lists.labs.libre-entreprise.org</labs.list.host>--> + <!-- java level is 1.6 --> - <maven.compile.source>1.6</maven.compile.source> - <maven.compile.target>1.6</maven.compile.target> + <!--<maven.compile.source>1.6</maven.compile.source>--> + <!--<maven.compile.target>1.6</maven.compile.target>--> <!-- default encoding --> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <!--<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>--> + <!--<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>--> <!-- by default, use maven 2 source base dir --> - <maven.src.dir>${basedir}/src</maven.src.dir> + <!--<maven.src.dir>${basedir}/src</maven.src.dir>--> <!-- where to generate sources --> - <maven.gen.dir>${project.build.directory}/generated-sources</maven.gen.dir> + <!--<maven.gen.dir>${project.build.directory}/generated-sources</maven.gen.dir>--> <!-- where to generate test sources --> - <maven.test.gen.dir>${project.build.directory}/generated-test-sources</maven.test.gen.dir> + <!--<maven.test.gen.dir>${project.build.directory}/generated-test-sources</maven.test.gen.dir>--> <!-- locales for the site generation, by default only french --> - <maven.site.locales>fr</maven.site.locales> + <!--<maven.site.locales>fr</maven.site.locales>--> <!-- to allow bad tests --> - <maven.test.testFailureIgnore>false</maven.test.testFailureIgnore> + <!--<maven.test.testFailureIgnore>false</maven.test.testFailureIgnore>--> <!-- to skip tests (can use also profile notests) --> - <maven.test.skip>false</maven.test.skip> + <!--<maven.test.skip>false</maven.test.skip>--> <!-- to control fork mode of tests --> - <maven.test.forkMode>once</maven.test.forkMode> + <!--<maven.test.forkMode>once</maven.test.forkMode>--> <!-- to activate generation of reports and javadoc when doing a site --> - <maven.reports.generate>true</maven.reports.generate> + <!--<maven.reports.generate>true</maven.reports.generate>--> - <!-- pour ne pas generer la javadoc (quand on aura un javadoc 2.5) --> - <maven.javadoc.skip>false</maven.javadoc.skip> + <!-- pour ne pas generer la javadoc --> + <!--<maven.javadoc.skip>false</maven.javadoc.skip>--> + <!-- generation javadoc en mode silencieux --> + <!--<maven.javadoc.quiet>true</maven.javadoc.quiet>--> + <!-- do not use 2.5 version, it is buggy (crazy aggregate mode !) --> - <javadoc.version>2.4</javadoc.version> + <!--<javadoc.version>2.5</javadoc.version>--> <!-- default license to use --> - <license.licenseName>gpl_v3</license.licenseName> + <!--<license.licenseName>gpl_v3</license.licenseName>--> <!-- release repository url (to be used in site.xml) --> - <repository.home.url>http://lutinbuilder.labs.libre-entreprise.org/maven2</repository.home.url> + <!--<repository.home.url>http://lutinbuilder.labs.libre-entreprise.org/maven2</repository.home.url>--> <!-- customized libs --> - <jaxx.version>1.7.0</jaxx.version> + <jaxx.version>2.0.0-beta-4</jaxx.version> + <!--<jaxx.version>2.0.0-SNAPSHOT</jaxx.version>--> <commandline.version>1.0</commandline.version> - <lutinutil.version>1.1.0</lutinutil.version> - <!--lutinwidget.version>1.0.0-rc-2</lutinwidget.version--> + <lutinutil.version>1.1.2</lutinutil.version> <i18n.version>1.0.1</i18n.version> - - + <!--<helper.version>1.0.3-SNAPSHOT</helper.version>--> + <!--<license.version>2.0.0</license.version>--> + <tapestry.version>5.0.11</tapestry.version> + <tapestry.grid.version>5.0.11.1</tapestry.grid.version> <jboss.version>4.2.2.GA</jboss.version> </properties> <build> - + <pluginManagement> <plugins> - <!-- plugin resources --> <plugin> - <artifactId>maven-resources-plugin</artifactId> - <version>2.3</version> + <groupId>org.nuiton.i18n</groupId> + <artifactId>maven-i18n-plugin</artifactId> + <version>${i18n.version}</version> <configuration> - <encoding>${project.build.sourceEncoding}</encoding> + <bundles>fr_FR</bundles> </configuration> </plugin> - <!-- plugin compiler --> <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <version>2.0.2</version> - <configuration> - <fork>true</fork> - <source>${maven.compile.source}</source> - <target>${maven.compile.target}</target> - <encoding>${project.build.sourceEncoding}</encoding> - </configuration> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>maven-jaxx-plugin</artifactId> + <version>${jaxx.version}</version> </plugin> - <!-- plugin surefire --> <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>2.4.3</version> - <configuration> - <excludes> - <exclude>**/*MassTestCase.java</exclude> - </excludes> - <forkMode>once</forkMode> - <skip>${maven.test.skip}</skip> - <testFailureIgnore>${maven.test.testFailureIgnore}</testFailureIgnore> - </configuration> - </plugin> - - <!-- plugin dependency --> - <plugin> - <artifactId>maven-dependency-plugin</artifactId> - <version>2.1</version> - <executions> - <execution> - <id>copy-dependencies</id> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <silent>true</silent> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>false</overWriteSnapshots> - <overWriteIfNewer>true</overWriteIfNewer> - <outputDirectory>${project.build.directory}/lib</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - - <!-- plugin jar --> - <plugin> - <artifactId>maven-jar-plugin</artifactId> + <artifactId>maven-ejb-plugin</artifactId> <version>2.2</version> - <inherited>true</inherited> - <configuration> - <archive> - <!-- cela fait bugger le chargement des service via - ServiceLoader donc on desactive --> - <!--index>true</index--> - <manifest> - <mainClass>${maven.jar.main.class}</mainClass> - </manifest> - <manifestEntries> - <url>${pom.url}</url> - </manifestEntries> - <index>false</index> - </archive> + <ejbVersion>3.0</ejbVersion> </configuration> </plugin> - <!-- plugin source --> <plugin> - <artifactId>maven-source-plugin</artifactId> - <version>2.1</version> - <inherited>true</inherited> - <executions> - <execution> - <id>attach-sources</id> - <goals> - <goal>jar</goal> - </goals> - </execution> - </executions> - </plugin> - - <!-- plugin javadoc --> - <plugin> - <artifactId>maven-javadoc-plugin</artifactId> - <version>${javadoc.version}</version> - <configuration> - <docencoding>${project.reporting.outputEncoding}</docencoding> - <encoding>${project.reporting.outputEncoding}</encoding> - <charset>${project.reporting.outputEncoding}</charset> - <quiet>true</quiet> - <excludePackageNames>${maven.javadoc.excludePackageNames}</excludePackageNames> - </configuration> - <executions> - <execution> - <id>attach-javadocs</id> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <attach>true</attach> - <quiet>true</quiet> - <!-- uniquement a partir de javadoc 2.5 --> - <!--skip>${maven.javadoc.skip}</skip--> - </configuration> - </execution> - </executions> - - </plugin> - - <!-- plugin site --> - <plugin> <artifactId>maven-site-plugin</artifactId> - <version>2.0</version> - <configuration> - <inputEncoding>${project.reporting.outputEncoding}</inputEncoding> - <outputEncoding>${project.reporting.outputEncoding}</outputEncoding> - <generateReports>${maven.reports.generate}</generateReports> - <locales>fr</locales> - <attach>false</attach> - </configuration> <dependencies> <dependency> - <groupId>org.nuiton</groupId> + <groupId>org.nuiton.jrst</groupId> <artifactId>doxia-module-jrst</artifactId> - <version>1.0.2-rc-1</version> + <version>${jrst.version}</version> </dependency> </dependencies> </plugin> - <plugin> - <artifactId>maven-release-plugin</artifactId> - <version>2.0-beta-9</version> - </plugin> - - <plugin> - <artifactId>maven-plugin-plugin</artifactId> - <version>2.5</version> - </plugin> - - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <version>2.2-beta-4</version> - </plugin> - - <plugin> - <artifactId>maven-antrun-plugin</artifactId> - <version>1.3</version> - </plugin> - - <plugin> - <artifactId>maven-ejb-plugin</artifactId> - <configuration> - <ejbVersion>3.0</ejbVersion> - </configuration> - </plugin> - - <!--plugin> - <groupId>org.codelutin</groupId> - <artifactId>maven-i18n-plugin</artifactId> - <version>${i18n.version}</version> - <dependencies> - <dependency> - <groupId>org.codelutin</groupId> - <artifactId>lutinutil</artifactId> - <version>${lutinutil.version}</version> - </dependency> - </dependencies> - </plugin--> - - <plugin> - <groupId>org.nuiton.i18n</groupId> - <artifactId>maven-i18n-plugin</artifactId> - <version>${i18n.version}</version> - <configuration> - <bundles>fr_FR</bundles> - </configuration> - </plugin> - - <plugin> - <groupId>org.nuiton</groupId> - <artifactId>maven-helper-plugin</artifactId> - <version>${helper.version}</version> - </plugin> - - <plugin> - <groupId>org.nuiton.jaxx</groupId> - <artifactId>maven-jaxx-plugin</artifactId> - <version>${jaxx.version}</version> - </plugin> - </plugins> </pluginManagement> - + </build> - - <!--Site--> - <reporting> - <plugins> - - <!-- - The Project Info Reports Plugin has twelve goals: - see http://maven.apache.org/plugins/maven-project-info-reports-plugin - --> - <plugin> - <!--groupId>org.nuiton.thirdparty</groupId--> - <artifactId>maven-project-info-reports-plugin</artifactId> - <!-- TODO il faut que la version patche soit en org.nuiton --> - <version>2.1.1-cl</version> - <reportSets> - <reportSet> - <reports> - <report>summary</report> - <report>license</report> - <report>cim</report> - <report>scm</report> - <report>mailing-list</report> - <!--report>dependencies</report--> - <report>project-team</report> - </reports> - </reportSet> - </reportSets> - </plugin> - - <plugin> - <artifactId>maven-javadoc-plugin</artifactId> - <version>${javadoc.version}</version> - <configuration> - <quiet>true</quiet> - <docencoding>${project.build.sourceEncoding}</docencoding> - <encoding>${project.build.sourceEncoding}</encoding> - <excludePackageNames>${maven.javadoc.excludePackageNames}</excludePackageNames> - </configuration> - </plugin> - - <plugin> - <artifactId>maven-surefire-report-plugin</artifactId> - <version>2.4.3</version> - </plugin> - - </plugins> - </reporting> - <!-- ************************************************************* --> <!-- *** Build Environment ************************************** --> <!-- ************************************************************* --> <!-- prerequisites --> - <prerequisites> - <maven>[2.0.10,)</maven> - </prerequisites> + <!--prerequisites> + <maven>2.0.10</maven> + </prerequisites--> - <ciManagement> + <!--ciManagement> <system>hudson</system> - <url>http://hudson.nuiton.org</url> - </ciManagement> + <url>http://hudson.nuiton.org/job/simexplorer</url> + </ciManagement--> <!--Any mailing lists for the project--> <mailingLists> @@ -653,36 +453,44 @@ </mailingList> <mailingList> - <name>${projectId}-users</name> - <subscribe>http://${labs.list.host}/mailman/listinfo/${projectId}-users</subscribe> - <unsubscribe>http://${labs.list.host}/mailman/listinfo/${projectId}-users</unsubscribe> - <post>${projectId}-users@${labs.list.host}</post> - <archive>http://${labs.list.host}/pipermail/${projectId}-users/</archive> + <name>${projectId}-user</name> + <subscribe>http://${labs.list.host}/mailman/listinfo/${projectId}-user</subscribe> + <unsubscribe>http://${labs.list.host}/mailman/listinfo/${projectId}-user</unsubscribe> + <post>${projectId}-user@${labs.list.host}</post> + <archive>http://${labs.list.host}/pipermail/${projectId}-user/</archive> </mailingList> </mailingLists> + <issueManagement> + <system>gforge</system> + <url>https://${platform}/tracke?group_id=${labs.id}</url> + </issueManagement> + <!--Distribution--> <distributionManagement> - <repository> + <!--repository> <id>codelutin</id> <url>scpexe://labs.libre-entreprise.org/home/groups/lutinbuilder/htdocs/maven2</url> - </repository> - <site> + </repository--> + <!--site> <id>codelutin</id> - <url>scpexe://labs.libre-entreprise.org/home/groups/observe/htdocs/observe</url> - </site> + <url>scpexe://labs.libre-entreprise.org/home/groups/simexplorer-is/htdocs/simexplorer-is</url> + </site--> </distributionManagement> <scm> - <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/simexplorer-si/trunk/simexplorer-is</connection> - <developerConnection>scm:svn:svn+ssh://chatellier at labs.libre-entreprise.org/svnroot/simexplorer-si/trunk/simexplorer-is</developerConnection> + <connection>scm:svn:svn://anonymous at labs.libre-entreprise.org/svnroot/simexplorer-si/trunk/simexplorer-is + </connection> + <developerConnection> + scm:svn:svn+ssh://chemit at labs.libre-entreprise.org/svnroot/simexplorer-si/trunk/simexplorer-is + </developerConnection> <!--url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/simexplorer-si/trunk/simexplorer-is?root=simexplorer-si</url--> </scm> <repositories> - <!--Code Lutin Repository--> + <!--Code Lutin Repository (a supprimer quand on aura supprimer commandline) --> <repository> <id>SEIS-codelutin</id> <name>CodeLutinRepository</name> @@ -732,20 +540,20 @@ <url>http://download.java.net/maven/2</url> </repository> - <repository> + <!--repository> <id>SEIS-t5components</id> - <name>T5Components Maven Repository</name> - <url>http://mp2.crecg.com/m2_repo</url> - <!--url>http://87.193.218.134:8080/t5components/maven-repository</url--> - </repository> + <name>T5Components Maven Repository</name--> + <!--url>http://87.193.218.134:8080/t5components/maven-repository</url--> + <!--/repository--> </repositories> <pluginRepositories> + <!--Code Lutin Repository (a supprimer quand on aura supprimer commandline) --> <!-- depot des releases labs --> - <pluginRepository> + <!--pluginRepository> <id>labs.release</id> <name>LabsReleaseRepository</name> @@ -757,7 +565,8 @@ <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy> </releases> - </pluginRepository> + </pluginRepository--> + <!-- depot des releases nuiton --> <pluginRepository> @@ -791,162 +600,4 @@ </pluginRepositories> - <profiles> - <!-- do not execute tests (generaly a bad idea...) --> - <profile> - <id>notests</id> - <activation> - <activeByDefault>false</activeByDefault> - </activation> - <properties> - <maven.test.skip>true</maven.test.skip> - </properties> - </profile> - - <!-- perform only on a release stage when using the maven-release-plugin --> - <profile> - <id>release-profile</id> - <activation> - <property> - <name>performRelease</name> - <value>true</value> - </property> - </activation> - <build> - - <plugins> - - <!-- always check labs properties --> - <plugin> - <artifactId>maven-enforcer-plugin</artifactId> - <executions> - <execution> - <id>validate-project</id> - <goals> - <goal>enforce</goal> - </goals> - <phase>initialize</phase> - </execution> - </executions> - <configuration> - <rules> - <requireFilesExist> - <files> - <file>changelog.txt</file> - <file>LICENSE.txt</file> - <file>README.txt</file> - </files> - </requireFilesExist> - </rules> - <ignoreCache>true</ignoreCache> - <failFast>true</failFast> - <fail>true</fail> - - </configuration> - </plugin> - - <!-- always compute source jar --> - <plugin> - <artifactId>maven-source-plugin</artifactId> - <executions> - <execution> - <id>attach-sources</id> - </execution> - </executions> - </plugin> - - <!-- always compute javadoc jar --> - <plugin> - <artifactId>maven-javadoc-plugin</artifactId> - <executions> - <execution> - <id>attach-javadocs</id> - </execution> - </executions> - </plugin> - - <!-- always add license and third-party files to classpath --> - <plugin> - <groupId>org.nuiton</groupId> - <artifactId>maven-helper-plugin</artifactId> - <executions> - <execution> - <id>attach-licenses</id> - <goals> - <goal>add-license</goal> - <goal>add-third-party</goal> - </goals> - </execution> - </executions> - </plugin> - - </plugins> - - </build> - </profile> - - <!-- use this plugin to run the main class --> - <profile> - <id>run</id> - <activation> - <activeByDefault>false</activeByDefault> - </activation> - <build> - <defaultGoal>compile</defaultGoal> - <plugins> - <plugin> - <artifactId>maven-enforcer-plugin</artifactId> - <executions> - <execution> - <id>run</id> - <goals> - <goal>enforce</goal> - </goals> - <phase>initialize</phase> - <configuration> - <rules> - <requireProperty> - <property>maven.jar.main.class</property> - <message>Could not find the "maven.jar.main.class" required property, use - -Dmaven.jar.main.class=your.main.class.fqn - </message> - </requireProperty> - </rules> - <ignoreCache>true</ignoreCache> - <failFast>true</failFast> - <fail>true</fail> - - </configuration> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <executions> - <execution> - <id>run</id> - <goals> - <goal>java</goal> - </goals> - <phase>compile</phase> - <configuration> - <mainClass>${maven.jar.main.class}</mainClass> - <classpathScope>runtime</classpathScope> - </configuration> - </execution> - </executions> - </plugin> - - </plugins> - </build> - <properties> - <exec.mainClass>${maven.jar.main.class}</exec.mainClass> - <exec.classpathScope>runtime</exec.classpathScope> - </properties> - </profile> - - </profiles> - </project> Property changes on: trunk/simexplorer-is/simexplorer-is-ear ___________________________________________________________________ Modified: svn:ignore - target .* + target .* nbactions.xml *.iml *.iws *.ipr Modified: trunk/simexplorer-is/simexplorer-is-ear/LICENSE.txt =================================================================== --- trunk/simexplorer-is/simexplorer-is-ear/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-ear/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Modified: trunk/simexplorer-is/simexplorer-is-ear/pom.xml =================================================================== --- trunk/simexplorer-is/simexplorer-is-ear/pom.xml 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-ear/pom.xml 2010-01-18 17:20:02 UTC (rev 1585) @@ -117,15 +117,4 @@ </plugins> </build> - - <!-- ************************************************************* --> - <!-- *** Build Environment ************************************** --> - <!-- ************************************************************* --> - - <scm> - <url>${maven.scm.url.child}</url> - <connection>${maven.scm.connection.child}</connection> - <developerConnection>${maven.scm.developerConnection.child}</developerConnection> - </scm> - </project> Property changes on: trunk/simexplorer-is/simexplorer-is-entities ___________________________________________________________________ Modified: svn:ignore - target .project .classpath .settings + target .* nbactions.xml *.iml *.iws *.ipr Modified: trunk/simexplorer-is/simexplorer-is-entities/LICENSE.txt =================================================================== --- trunk/simexplorer-is/simexplorer-is-entities/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-entities/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Modified: trunk/simexplorer-is/simexplorer-is-entities/pom.xml =================================================================== --- trunk/simexplorer-is/simexplorer-is-entities/pom.xml 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-entities/pom.xml 2010-01-18 17:20:02 UTC (rev 1585) @@ -44,7 +44,6 @@ <build> <plugins> <plugin> - <!--groupId>org.codelutin</groupId--> <groupId>org.nuiton.i18n</groupId> <artifactId>maven-i18n-plugin</artifactId> <executions> Property changes on: trunk/simexplorer-is/simexplorer-is-security ___________________________________________________________________ Modified: svn:ignore - target .* + target .* nbactions.xml *.iml *.iws *.ipr Modified: trunk/simexplorer-is/simexplorer-is-security/LICENSE.txt =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-security/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Property changes on: trunk/simexplorer-is/simexplorer-is-service ___________________________________________________________________ Modified: svn:ignore - target .* + target .* nbactions.xml *.iml *.iws *.ipr Modified: trunk/simexplorer-is/simexplorer-is-service/LICENSE.txt =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-service/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Modified: trunk/simexplorer-is/simexplorer-is-service/pom.xml =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/pom.xml 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-service/pom.xml 2010-01-18 17:20:02 UTC (rev 1585) @@ -123,10 +123,10 @@ <repositories> <!-- pour la dependance rmiio --> - <repository> + <!--repository> <id>openhms</id> <url>http://open.hmsonline.com/repo/maven2</url> - </repository> + </repository--> </repositories> </project> Property changes on: trunk/simexplorer-is/simexplorer-is-storage ___________________________________________________________________ Modified: svn:ignore - bin target .* + target .* nbactions.xml *.iml *.iws *.ipr Modified: trunk/simexplorer-is/simexplorer-is-storage/LICENSE.txt =================================================================== --- trunk/simexplorer-is/simexplorer-is-storage/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-storage/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Property changes on: trunk/simexplorer-is/simexplorer-is-swing ___________________________________________________________________ Modified: svn:ignore - target .* nbactions.xml + target .* nbactions.xml *.iml *.iws *.ipr Modified: trunk/simexplorer-is/simexplorer-is-swing/LICENSE.txt =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Modified: trunk/simexplorer-is/simexplorer-is-swing/pom.xml =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/pom.xml 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/pom.xml 2010-01-18 17:20:02 UTC (rev 1585) @@ -40,12 +40,12 @@ <dependency> <groupId>org.nuiton.jaxx</groupId> - <artifactId>jaxx-runtime-swing</artifactId> + <artifactId>jaxx-runtime</artifactId> </dependency> <dependency> <groupId>org.nuiton.jaxx</groupId> - <artifactId>jaxx-runtime-swing-widget</artifactId> + <artifactId>jaxx-widgets</artifactId> </dependency> <dependency> @@ -59,15 +59,45 @@ <dependency> <groupId>org.codelutin.commandline</groupId> <artifactId>commandline-core</artifactId> + <!--exclusions> + <exclusion> + <groupId>org.codelutin</groupId> + <artifactId>lutinutil</artifactId> + </exclusion> + </exclusions--> </dependency> - <dependency> + <!-- <dependency> <groupId>org.codelutin.commandline</groupId> <artifactId>commandline-ui</artifactId> - </dependency> - <dependency> + <exclusions> + <exclusion> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-runtime-api</artifactId> + </exclusion> + <exclusion> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-runtime-swing</artifactId> + </exclusion> + </exclusions> + </dependency>--> + <!--<dependency> <groupId>org.codelutin.commandline</groupId> <artifactId>commandline-ui-action</artifactId> - </dependency> + <exclusions> + <exclusion> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-runtime-api</artifactId> + </exclusion> + <exclusion> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-runtime-swing</artifactId> + </exclusion> + <exclusion> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-swing-action</artifactId> + </exclusion> + </exclusions> + </dependency>--> <!-- other dependencies --> @@ -76,10 +106,11 @@ <artifactId>jbossall-client</artifactId> </dependency> - <!--dependency> - <groupId>org.nuiton</groupId> - <artifactId>nuiton-widgets</artifactId> - </dependency--> + <dependency> + <groupId>org.codelutin</groupId> + <artifactId>lutinutil</artifactId> + <version>1.0.6</version> + </dependency> <dependency> <groupId>junit</groupId> @@ -114,7 +145,7 @@ <build> <plugins> - <plugin> + <!--<plugin> <groupId>org.codelutin.commandline</groupId> <artifactId>maven-commandline-plugin</artifactId> <version>${commandline.version}</version> @@ -166,11 +197,10 @@ <version>${lutinutil.version}</version> </dependency> </dependencies> - </plugin> + </plugin>--> <plugin> <groupId>org.nuiton.jaxx</groupId> - <!--groupId>org.codelutin.jaxx</groupId--> <artifactId>maven-jaxx-plugin</artifactId> <configuration> <addProjectClassPath>true</addProjectClassPath> @@ -189,17 +219,16 @@ <artifactId>lutinwidget</artifactId> <version>${lutinwidget.version}</version> </dependency--> - <dependency> + <!--dependency> <groupId>org.codelutin</groupId> <artifactId>lutinutil</artifactId> <version>1.0.6</version> - </dependency> + </dependency--> </dependencies> </plugin> <plugin> <groupId>org.nuiton.i18n</groupId> - <!--groupId>org.codelutin</groupId--> <artifactId>maven-i18n-plugin</artifactId> <executions> <execution> @@ -213,12 +242,12 @@ <entry> <basedir>${maven.src.dir}/main/java</basedir> <includes> - <param>fr\/cemagref\/simexplorer\/is\/ui\/swing\/actions\/**\/*Action.java + <param>fr/cemagref/simexplorer/is/ui/swing/actions/**/*Action.java </param> </includes> <excludes> <param> - fr\/cemagref\/simexplorer\/is\/ui\/swing\/actions\/**\/*AbstractAction.java + fr/cemagref/simexplorer/is/ui/swing/actions/**/*AbstractAction.java </param> </excludes> </entry> @@ -236,7 +265,7 @@ <entry> <basedir>${maven.src.dir}/main/java</basedir> <includes> - <param>fr\/cemagref\/simexplorer\/is\/ui\/swing\/ui\/SimExplorerTab.java</param> + <param>fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java</param> </includes> </entry> </entries> @@ -257,46 +286,55 @@ </configuration> </execution> </executions> - <!--dependencies> + <dependencies> <dependency> <groupId>org.codelutin</groupId> <artifactId>lutinutil</artifactId> - <version>${lutinutil.version}</version> + <version>1.0.6</version> </dependency> - </dependencies--> + </dependencies> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> - <!--configuration> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>false</overWriteSnapshots> - <overWriteIfNewer>true</overWriteIfNewer> - <outputDirectory>${project.build.directory}/lib</outputDirectory> - </configuration--> <executions> <execution> - <id>copy-dependencies</id> + <id>copy-deps</id> + <goals> + <goal>copy-dependencies</goal> + </goals> + <configuration> + <silent>true</silent> + <overWriteReleases>false</overWriteReleases> + <overWriteSnapshots>false</overWriteSnapshots> + <overWriteIfNewer>true</overWriteIfNewer> + <outputDirectory>${project.build.directory}/lib</outputDirectory> + </configuration> </execution> </executions> </plugin> - <plugin> - <artifactId>maven-jar-plugin</artifactId> - <configuration> - <archive> - <manifest> - <mainClass>${maven.jar.main.class}</mainClass> - <addClasspath>true</addClasspath> - <addExtensions/> - <classpathPrefix>./lib/</classpathPrefix> - </manifest> - </archive> - </configuration> - </plugin> - + </plugins> + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifest> + <mainClass>${maven.jar.main.class}</mainClass> + <addClasspath>true</addClasspath> + <addExtensions/> + <classpathPrefix>./lib/</classpathPrefix> + </manifest> + </archive> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> <!-- ************************************************************* --> @@ -394,6 +432,17 @@ <distro>ubuntu_hardy</distro> </configuration> </execution> + <execution> + <id>ubuntu_jaunty_all</id> + <phase>package</phase> + <goals> + <goal>pkg</goal> + </goals> + <configuration> + <distro>ubuntu_jaunty_all</distro> + </configuration> + </execution> + <!-- TODO Add for last ubuntu distor --> </executions> </plugin> </plugins> Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -36,8 +36,8 @@ import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import fr.cemagref.simexplorer.is.ui.swing.ui.util.ErrorDialog; import org.nuiton.i18n.I18n; -import org.codelutin.jaxx.action.ActionFactory; -import org.codelutin.jaxx.action.ActionFactoryFromProvider; +import org.nuiton.jaxx.action.ActionFactory; +import org.nuiton.jaxx.action.ActionFactoryFromProvider; /** * Le context de l'application, implanté en singleton. @@ -103,10 +103,12 @@ this.token = token; } + @Override public void initI18n() { I18n.init(getMainConfig().getLocale()); } + @Override public void dispose(boolean reload) { SimExplorerTab.dispose(); getActionFactory().dispose(); @@ -147,13 +149,13 @@ public int getCount(boolean remote, String query, boolean onlyLatest) { StorageService service = getStorageService(remote); - String token = getToken(); + String tok = getToken(); int size; try { if (query == null || query.isEmpty()) { - size = service.findElementsCount(token, EntityTypeEnum.ExplorationApplication.toString(), onlyLatest); + size = service.findElementsCount(tok, EntityTypeEnum.ExplorationApplication.toString(), onlyLatest); } else { - size = service.findFullTextCount(token, query, "", onlyLatest); + size = service.findFullTextCount(tok, query, "", onlyLatest); } return size; } catch (SimExplorerException e) { @@ -163,13 +165,13 @@ public MetaData[] getData(boolean remote, boolean onlyLatest, String query, long newFirstIndex, int width, SortColumn column, boolean ascending) { StorageService service = getStorageService(remote); - String token = getToken(); + String tok = getToken(); try { MetaData[] data; if (query == null || query.isEmpty()) { - data = service.findElements(token, EntityTypeEnum.ExplorationApplication.toString(), onlyLatest, (int) newFirstIndex, width, column.name(), ascending); + data = service.findElements(tok, EntityTypeEnum.ExplorationApplication.toString(), onlyLatest, (int) newFirstIndex, width, column.name(), ascending); } else { - data = service.findFullText(token, query, "", onlyLatest, (int) newFirstIndex, width, column.name(), ascending); + data = service.findFullText(tok, query, "", onlyLatest, (int) newFirstIndex, width, column.name(), ascending); //data = service.findFullText(token, query, SearchColumn.AllFields.name(), onlyLatest, (int) newFirstIndex, width, column.name(), ascending); } return data; @@ -181,10 +183,10 @@ public String loginUser(boolean remote, String login, String hashPassword) throws UnreachableServiceException { StorageService service = getStorageService(remote); try { - String token; - token = service.loginUser(login, hashPassword); - setToken(token); - return token; + String tok; + tok = service.loginUser(login, hashPassword); + setToken(tok); + return tok; } catch (SimExplorerException e) { throw new SimExplorerRuntimeException(e); } Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/UIHelper.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/UIHelper.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/UIHelper.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,167 @@ +package fr.cemagref.simexplorer.is.ui.swing; + + +import fr.cemagref.simexplorer.is.ui.swing.actions.ChangeLocaleAction; +import fr.cemagref.simexplorer.is.ui.swing.actions.ChangeLocationActionNameProvider; +import java.util.Locale; +import static org.nuiton.i18n.I18n._; +import org.nuiton.jaxx.action.MyAbstractAction; + +import javax.swing.AbstractButton; +import javax.swing.JComboBox; +import jaxx.runtime.JAXXObject; +import jaxx.runtime.SwingUtil; +import org.codelutin.option.Context; +import org.nuiton.jaxx.action.ActionFactory; + +/** + * Replace commandeline-ui class. + * + * @author chemit + * @since 1.1.0 + */ +public class UIHelper { + + + /** + * Disable the given buttons + * + * @param buttons the buttons to disable + */ + public static void DisableButton(AbstractButton... buttons) { + for (AbstractButton button : buttons) { + UpdateButton(button, false); + } + } + + /** + * Enable an action and add to it a libelle + * + * @param button the button to enable + * @param params extra params to compute action libelle + */ + public static void EnableButton(AbstractButton button, Object... params) { + UpdateButton(button, true, params); + } + + /** + * Update the enabled state of a button action. + * <p/> + * If action is to be enabled, compute also a libelle on it, otherwise remove libelle. + * + * @param button the button to treate + * @param enabled <code>true</code> if to enable, <code>false</code> otherwise + * @param params extra params to compute action libelle (only use when action is to be enabled) + */ + public static void UpdateButton(AbstractButton button, boolean enabled, Object... params) { + button.setEnabled(enabled); + if (!enabled) { + button.setToolTipText(null); + } else { + MyAbstractAction action = (MyAbstractAction) button.getAction(); + String t = _(action.getI18nToolTipText(), params); + button.setToolTipText(t); + } + } + + /** + * Update the enabled state of a combo box action. + * <p/> + * If action is to be enabled, compute also a libelle on it, otherwise remove libelle. + * + * @param comboBox the button to treate + * @param enabled <code>true</code> if to enable, <code>false</code> otherwise + * @param params extra params to compute action libelle (only use when action is to be enabled) + */ + public static void UpdateCombo(JComboBox comboBox, boolean enabled, Object... params) { + comboBox.setEnabled(enabled); + if (!enabled) { + comboBox.setToolTipText(null); + } else { + MyAbstractAction action = (MyAbstractAction) comboBox.getAction(); + if (action != null) { + String t = _(action.getI18nToolTipText(), params); + comboBox.setToolTipText(t); + } + } + } + + /** + * Update the i18n actions found in <code>factory</code> (diable the i18n action of the current locale found in + * context, and enabled all the others). + * + * @param context application context + * @param actionFactory factory of actions + * @param mainUI main ui + */ + public static void refreshI18nActions(Context<?> context, ActionFactory<?> actionFactory, JAXXObject mainUI) { + + Locale locale = (Locale) context.getMainConfig().getProperty("locale"); + + for (String command : new ChangeLocationActionNameProvider().getActionCommands()) { + AbstractButton button = (AbstractButton) mainUI.getObjectById(command); + + MyAbstractAction myAbstractAction = (MyAbstractAction) button.getAction(); + ChangeLocaleAction action; + if (myAbstractAction.hasDelegate()) { + action = (ChangeLocaleAction) myAbstractAction.getDelegate(); + } else { + action = (ChangeLocaleAction) myAbstractAction; + } + action.disposeUI(); + boolean enable = !action.equalsLocale(locale); + UpdateButton(button, enable, enable ? action.getLocale() : null); + button.setEnabled(enable); + } + + /*String[] actions = actionFactory.getActionNames(); + + for (String actionName : actions) { + Matcher matcher = ChangeLocaleAction.PATTERN_NAME.matcher(actionName); + if (!matcher.matches()) { + continue; + } + AbstractButton button = (AbstractButton) mainUI.getObjectById(actionName); + MyAbstractAction myAbstractAction = (MyAbstractAction) button.getAction(); + ChangeLocaleAction action; + if (myAbstractAction.hasDelegate()) { + action = (ChangeLocaleAction) myAbstractAction.getDelegate(); + } else { + action = (ChangeLocaleAction) myAbstractAction; + } + boolean enable = !action.equalsLocale(locale); + UpdateButton(button, enable, enable ? action.getLocale() : null); + button.setEnabled(enable); + }*/ + } + + public static void createI18nMenu(JAXXObject ui) { + javax.swing.JMenu i18nParent = (javax.swing.JMenu) ui.getObjectById("i18nMenu"); + String libelle = _("commandline.menu.i18n"); + i18nParent.setText(libelle); + i18nParent.setIcon(SwingUtil.createImageIcon("action/translate.png")); + String mnemonic = libelle; + if (mnemonic.isEmpty()) { + mnemonic = "L"; + } + i18nParent.setMnemonic(mnemonic.charAt(0)); + if (i18nParent.getItemCount() == 0) { + i18nParent.removeAll(); + } + // create the entries in menu + for (String command : new ChangeLocationActionNameProvider().getActionCommands()) { + createI18nEntry(command, i18nParent, ui); + } + } + + protected static void createI18nEntry(String language, javax.swing.JMenu i18nParent, JAXXObject ui) { + javax.swing.JMenuItem entry = new javax.swing.JMenuItem(); + entry.setName(language); + ui.get$objectMap().put(language, entry); + i18nParent.add(entry); + } + + protected UIHelper() { + // no instance + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/UIHelper.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,67 @@ +/** + * *##% commandine-ui-action + * Copyright (C) 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package fr.cemagref.simexplorer.is.ui.swing.actions; + +import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerBaseAction; + +/** + * Action pour afficher la dialogue de modification de configuration + * + * @author Code Lutin, Chemit Tony + */ + at org.nuiton.jaxx.action.ActionConfig( + actionCommand = "about", + name = "commandline.action.about", + shortDescription = "commandline.action.about.tooltip", + longDescription = "commandline.action.about.help", + smallIcon = "action/about.png", + mnemonic = 'a', + hideActionText = false +) +public class AboutAction extends SimExplorerBaseAction { + private static final long serialVersionUID = 9050439968144935986L; + +// AboutUI aboutUI; + + public AboutAction(String name) { + super(name); + } + + @Override + public void doAction(java.awt.event.ActionEvent e) { + log.info("Use JAXX-Widgets soon..."); +// getAboutUI().setVisible(true); + } + + @Override + public void disposeUI() { + super.disposeUI(); +// if (aboutUI != null) { +// aboutUI = null; +// } + } + +// public AboutUI getAboutUI() { +// if (aboutUI == null) { +// aboutUI = new AboutUI(); +// aboutUI.init(null, getContext()); +// } +// return aboutUI; +// } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AdvancedSearchAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AdvancedSearchAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/AdvancedSearchAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -23,7 +23,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "advancedSearchApplication", name = "simexplorer.action.advancedSearch", shortDescription = "simexplorer.action.advancedSearch.tooltip", Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocaleAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocaleAction.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocaleAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,118 @@ +/** + * *##% commandine-ui-action + * Copyright (C) 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package fr.cemagref.simexplorer.is.ui.swing.actions; + +/** @author chemit */ + +import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerBaseAction; +import javax.swing.Action; +import java.awt.event.ActionEvent; +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Une action pour recharger la locale. + * <p/> + * Le nom de l'action doit etre de la forme i18n_XX_YY où XX est la langue + * et YY le pays de la locale à charger. + * + * @author Code Lutin, Chemit Tony + */ + at org.nuiton.jaxx.action.ActionConfig( + actionCommand = "changeLocale", + actionCommandProvider = ChangeLocationActionNameProvider.class, + shortDescription = "commandline.action.changeLocale.tooltip", + longDescription = "commandline.action.changeLocale.help", + hideActionText = false +) + +public class ChangeLocaleAction extends SimExplorerBaseAction { + + public static final Pattern PATTERN_NAME = Pattern.compile("i18n_(\\w\\w)"); + + protected transient Locale locale; + + private static final long serialVersionUID = 4180668477670765253L; + + public ChangeLocaleAction(String name) { + super(name); + Matcher matcher = PATTERN_NAME.matcher(name); + if (!matcher.matches()) { + throw new IllegalArgumentException(getClass().getName() + " should have a name like this 'i18n_XX', but was " + name); + } + + locale = org.nuiton.i18n.I18n.newLocale(matcher.group(1)); + + putValue(Action.NAME, locale.getDisplayLanguage()); + putValue(Action.SMALL_ICON, org.nuiton.jaxx.util.UIHelper.createImageIcon(getIcon())); + } + + @Override + public String getI18nToolTipText() { + return "commandline.action.changeLocale.tooltip"; + } + + public String getIcon() { + return "action/i18n-" + locale.getLanguage() + ".png"; + } + + @Override + protected boolean beforeAction(ActionEvent e) throws Exception { + return true; + //TODO Faut-il proposer une confirmation ? + //String s = _(locale.getLibelle()); + //int result = JOptionPane.showConfirmDialog(null, _("commandline.confirm.changeLanguage", s), "changeLanguage", JOptionPane.YES_NO_OPTION); + //return result == JOptionPane.OK_OPTION; + } + + @Override + public void doAction(ActionEvent e) { + + getContext().getMainConfig().setProperty("locale", locale); + // save config + getContext().saveSafely(); + // on doit initialiser la nouvelle locale avant de decharger les ui + // au cas ou un appel à une ui surviendrait et dans quel cas la locale + // serait toujours sur l'ancienne valeur ... + getContext().initI18n(); + + // dispose then reload application + getContext().dispose(true); + } + + @Override + public String toString() { + return super.toString() + " Locale " + locale; + } + + public boolean equalsLocale(Locale locale) { + return this.locale.equals(locale) || this.locale.getLanguage().equals(locale.getLanguage()); + } + + public Locale getLocale() { + return locale; + } + + @Override + public void disposeUI() { + super.disposeUI(); + putValue(Action.NAME, locale.getDisplayLanguage((Locale) getContext().getMainConfig().getProperty("locale"))); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocaleAction.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocationActionNameProvider.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocationActionNameProvider.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocationActionNameProvider.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,60 @@ +/** + * *##% commandine-ui-action + * Copyright (C) 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package fr.cemagref.simexplorer.is.ui.swing.actions; + +import org.nuiton.i18n.I18n; +import org.nuiton.jaxx.action.ActionNameProvider; + +import java.util.Locale; + +/** + * Cette classe définit dynamiquement les clefs d'actions associées à cette action. + * <p/> + * La recherche de telles actions est faite au démarrage de l'application par une + * {@link org.nuiton.jaxx.action.ActionProvider}. + * <p/> + * Les clefs d'actions sont en faites toutes les locales trouvées par + * {@link org.codelutin.i18n.bundle.I18nBundleManager} dont on récupÚre le pays. + * <p/> + * Actuellement, on ne tient compte que du pays dans les locales trouvées. Il est de la responsabilité du systÚme + * I18n de charger les bon bundles en faisant des promotions si nécessaire (par exemple si on trouve un bundle fr + * mais aussi des bundles fr_FR)... + * + * @author chemit + */ +public class ChangeLocationActionNameProvider implements ActionNameProvider { + + @Override + public String[] getActionCommands() { + //TODO Il faudrait ajuter une méthode à I18n pour initialiser le systÚme uniquement si nécessaire. + //org.codelutin.i18n.I18n.init(); + Locale[] locales = I18n.getLoader().getLocales(); + java.util.List<String> tmpList = new java.util.ArrayList<String>(); + + for (Locale locale : locales) { + String actionKey = "i18n_" + locale.getLanguage(); + if (!tmpList.contains(actionKey)) { + tmpList.add(actionKey); + } + } + + return tmpList.toArray(new String[tmpList.size()]); + } + +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeLocationActionNameProvider.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -33,7 +33,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.SelectActionConfig( + at org.nuiton.jaxx.action.SelectActionConfig( actionCommand = "goPage", name = "simexplorer.action.goPage", shortDescription = "simexplorer.action.goPage.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -29,7 +29,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.SelectActionConfig( + at org.nuiton.jaxx.action.SelectActionConfig( actionCommand = "changeSizor", name = "simexplorer.action.changeSizor", shortDescription = "simexplorer.action.changeSizor.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -25,7 +25,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "closeTab", name = "simexplorer.action.closeTab", shortDescription = "simexplorer.action.closeTab.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -28,7 +28,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "collapseAll", name = "simexplorer.action.collapseAll", shortDescription = "simexplorer.action.collapseAll.tooltip", Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConfigAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConfigAction.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConfigAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,66 @@ +/** + * *##% commandine-ui-action + * Copyright (C) 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package fr.cemagref.simexplorer.is.ui.swing.actions; + +import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerBaseAction; + +/** + * Action pour afficher la dialogue de modification de configuration + * + * TODO-TC20091016 must use the JAXX-Widgets config UI + * + * @author Code Lutin, Chemit Tony + */ + at org.nuiton.jaxx.action.ActionConfig(actionCommand = "config", +name = "commandline.action.config", +shortDescription = "commandline.action.config.tooltip", +longDescription = "commandline.action.config.help", +smallIcon = "action/config.png", +mnemonic = 'P', +hideActionText = false) +public class ConfigAction extends SimExplorerBaseAction { + +// ConfigUI ui; + private static final long serialVersionUID = 1449553547444065616L; + + public ConfigAction(String name) { + super(name); + } + + @Override + public void doAction(java.awt.event.ActionEvent e) { + log.info("use JAXX-Widgets..."); +// getUi().setVisible(true); + } + + @Override + public void disposeUI() { + super.disposeUI(); +// if (ui != null) { +// ui.dispose(); +// ui = null; +// } + } +// public ConfigUI getUi() { +// if (ui == null) { +// ui = new ConfigUI().init(getContext(), getContext().getConfigs()); +// } +// return ui; +// } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConfigAction.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -36,7 +36,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "connect", name = "simexplorer.action.connect", shortDescription = "simexplorer.action.connect.tooltip", @@ -57,6 +57,7 @@ super(name); } + @Override public void disposeUI() { ui = null; } @@ -178,6 +179,7 @@ return isConnected; } + @Override protected boolean connect(String login, char[] password) { try { return connect(login, AuthenticationServiceHelper.computeHash(password)); @@ -187,11 +189,13 @@ } + @Override protected boolean failedToConnect() { int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.error.login.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); return result == JOptionPane.NO_OPTION; } + @Override public void doConnect() { setCancel(false); if (!getService()) { @@ -209,6 +213,7 @@ } + @Override public void doCancel() { setCancel(false); ui.getLogin().setText(null); Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -31,7 +31,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "deleteElement", name = "simexplorer.action.deleteElement", shortDescription = "simexplorer.action.deleteElement.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -28,7 +28,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "detailToTree", //actionCommand = "detailToTreeApplication", name = "simexplorer.action.detailToTree", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -32,7 +32,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "downloadAttachment", name = "simexplorer.action.downloadAttachment", shortDescription = "simexplorer.action.downloadAttachment.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadElementAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadElementAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadElementAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -31,7 +31,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "downloadElement", name = "simexplorer.action.downloadElement", shortDescription = "simexplorer.action.downloadElement.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -29,7 +29,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "expandAll", name = "simexplorer.action.expandAll", shortDescription = "simexplorer.action.expandAll.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -27,18 +27,18 @@ import fr.cemagref.simexplorer.is.ui.swing.model.tab.SynchronizeTabModel; import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import static org.nuiton.i18n.I18n.n_; -import org.codelutin.jaxx.tab.TabModel; -import org.codelutin.jaxx.util.UIHelper; +import org.nuiton.jaxx.tab.TabModel; import javax.swing.Action; import java.awt.event.ActionEvent; +import jaxx.runtime.SwingUtil; /** * Action pour exporter un élément * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "exportElement", name = "simexplorer.action.exportElement", longDescription = "simexplorer.action.exportElement.help", @@ -59,7 +59,7 @@ public ExportElementAction(String name) { super(name); - putValue(Action.SMALL_ICON, UIHelper.createImageIcon(getIcon(name))); + putValue(Action.SMALL_ICON, SwingUtil.createImageIcon(getIcon(name))); } @Override Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GenerateDataAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GenerateDataAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GenerateDataAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -26,7 +26,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "generateData", name = "simexplorer.action.generateData", shortDescription = "simexplorer.action.generateData.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoFirstPageAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoFirstPageAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoFirstPageAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -25,7 +25,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "goFirstPage", name = "simexplorer.action.goFirstPage", shortDescription = "simexplorer.action.goFirstPage.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -26,7 +26,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "goLastPage", name = "simexplorer.action.goLastPage", shortDescription = "simexplorer.action.goLastPage.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -26,7 +26,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "goNextPage", name = "simexplorer.action.goNextPage", shortDescription = "simexplorer.action.goNextPage.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -26,7 +26,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "goPreviousPage", name = "simexplorer.action.goPreviousPage", shortDescription = "simexplorer.action.goPreviousPage.tooltip", Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,56 @@ +/** + * *##% commandine-ui-action + * Copyright (C) 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package fr.cemagref.simexplorer.is.ui.swing.actions; + +import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerBaseAction; + +/** + * Action pour afficher la dialogue de modification de configuration + * + * @author Code Lutin, Chemit Tony + */ + at org.nuiton.jaxx.action.ActionConfig( + actionCommand = "help", + name = "commandline.action.help", + shortDescription = "commandline.action.help.tooltip", + longDescription = "commandline.action.help.help", + smallIcon = "action/help.png", + mnemonic = 'h', + hideActionText = false +) +public class HelpAction extends SimExplorerBaseAction { + private static final long serialVersionUID = 9050439968144935986L; + + + public HelpAction(String name) { + super(name); + } + + @Override + public void doAction(java.awt.event.ActionEvent e) { + log.info("To be done!"); + } + + @Override + public void disposeUI() { + super.disposeUI(); + } + + +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -39,7 +39,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "importElement", name = "simexplorer.action.importElement", longDescription = "simexplorer.action.importElement.help", Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,79 @@ +/** + * *##% commandine-ui-action + * Copyright (C) 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package fr.cemagref.simexplorer.is.ui.swing.actions; + +import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerBaseAction; +import static org.nuiton.i18n.I18n._; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; + +/** + * Action pour quitter l'aaplication + * + * @author Code Lutin, Chemit Tony + */ + at org.nuiton.jaxx.action.ActionConfig( + actionCommand = "quit", + name = "commandline.action.quit", + shortDescription = "commandline.action.quit.tooltip", + longDescription = "commandline.action.quit.help", + smallIcon = "action/quit.png", + mnemonic = 'q', + hideActionText = false +) +public class QuitAction extends SimExplorerBaseAction { + + private static final long serialVersionUID = 9050439968144935986L; + + public QuitAction(String name) { + super(name); + } + + @Override + protected boolean beforeAction(ActionEvent e) throws Exception { + + boolean result = super.beforeAction(e); + + if (result) { + org.codelutin.option.Config config = getContext().getMainConfig(); + String applicationName = (String) config.getProperty("projectName"); + String[] response = {_("commandline.yes"), _("commandline.no")}; + int n = JOptionPane.showOptionDialog(null, + _("commandline.close_question", applicationName), + _("commandline.question", applicationName), + JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, //do not use a custom Icon + response, //the titles of buttons + response[1]); //default button title + + result = n == JOptionPane.YES_OPTION; + + } + return result; + } + + @Override + public void doAction(java.awt.event.ActionEvent e) { + // ask context to dispose application + getContext().dispose(false); + } + +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetPasswordAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetPasswordAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetPasswordAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -24,7 +24,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "resetPassword", name = "simexplorer.action.resetPassword", shortDescription = "simexplorer.action.resetPassword.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -26,7 +26,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "resetSearch", name = "simexplorer.action.resetSearch", shortDescription = "simexplorer.action.resetSearch.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -27,7 +27,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "search", name = "simexplorer.action.search", shortDescription = "simexplorer.action.search.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -46,7 +46,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "showTab_detail", name = "simexplorer.action.showTab_detail", shortDescription = "simexplorer.action.showTab_detail.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowLocalTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowLocalTabAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowLocalTabAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -23,7 +23,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "showTab_local", name = "simexplorer.action.showTab_local", shortDescription = "simexplorer.action.showTab_local.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -23,7 +23,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "showTab_remote", name = "simexplorer.action.showTab_remote", shortDescription = "simexplorer.action.showTab_remote.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -25,7 +25,7 @@ import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper; import fr.cemagref.simexplorer.is.ui.swing.ui.JSynchronizeTab; import fr.cemagref.simexplorer.is.ui.swing.ui.TreeActionsUpdater; -import org.codelutin.option.ui.actions.ActionHelper; +import fr.cemagref.simexplorer.is.ui.swing.UIHelper; import javax.swing.AbstractButton; import javax.swing.event.TreeSelectionEvent; @@ -37,7 +37,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "showTab_synchronize", name = "simexplorer.action.showTab_synchronize", shortDescription = "simexplorer.action.showTab_synchronize.tooltip", @@ -89,6 +89,7 @@ return true; } + @Override protected void initFirstUsage(JSynchronizeTab ui, SynchronizeTabModel model) { navigationLocalListener = new NavigationSelectionListener(model, false); navigationRemoteListener = new NavigationSelectionListener(model, true); @@ -142,6 +143,7 @@ sources = null; } + @Override public void setSelected(DataEntityModel selected) { this.selected = selected; } @@ -166,13 +168,15 @@ super.valueChanged(e); EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e); boolean enable = node != null && node.isLoggableElement(); - ActionHelper.UpdateButton(ui.getShowDetailButton(remote), enable, !enable ? null : node.getLoggableElement()); + UIHelper.UpdateButton(ui.getShowDetailButton(remote), enable, !enable ? null : node.getLoggableElement()); } + @Override protected AbstractButton getExpandAction() { return ui.getExpandButton(remote); } + @Override protected AbstractButton getCollapseAction() { return ui.getCollapseButton(remote); } @@ -194,6 +198,7 @@ } + @Override public void valueChanged(TreeSelectionEvent e) { EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e); Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SiteAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SiteAction.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SiteAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,61 @@ +/** + * *##% commandine-ui-action + * Copyright (C) 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package fr.cemagref.simexplorer.is.ui.swing.actions; + +import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerBaseAction; +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.net.URL; + +/** + * Action pour afficher la dialogue de modification de configuration + * + * @author Code Lutin, Chemit Tony + */ + at org.nuiton.jaxx.action.ActionConfig(actionCommand = "site", +name = "commandline.action.site", +shortDescription = "commandline.action.site.tooltip", +longDescription = "commandline.action.site.help", +smallIcon = "action/site.png", +mnemonic = 's', +hideActionText = false) +public class SiteAction extends SimExplorerBaseAction { + + private static final long serialVersionUID = 9050439968144935986L; + protected URL siteUrl; + + public SiteAction(String name) { + super(name); + } + + @Override + protected boolean beforeAction(ActionEvent e) throws Exception { + if (!super.beforeAction(e) && !Desktop.isDesktopSupported() && !Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { + return false; + } + siteUrl = (URL) getContext().getMainConfig().getProperty("projectURL"); + return siteUrl != null; + } + + @Override + public void doAction(java.awt.event.ActionEvent e) throws Exception { + super.doAction(e); + Desktop.getDesktop().browse(siteUrl.toURI()); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/SiteAction.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleLocalTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleLocalTabAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleLocalTabAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -23,7 +23,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ToggleActionConfig( + at org.nuiton.jaxx.action.ToggleActionConfig( actionCommand = "toggleTab_local", name = "simexplorer.action.showTab_local", shortDescription = "simexplorer.action.showTab_local.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleRemoteTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleRemoteTabAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/ToggleRemoteTabAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -23,7 +23,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ToggleActionConfig( + at org.nuiton.jaxx.action.ToggleActionConfig( actionCommand = "toggleTab_remote", name = "simexplorer.action.showTab_remote", shortDescription = "simexplorer.action.showTab_remote.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -30,7 +30,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "unconnect", name = "simexplorer.action.unconnect", shortDescription = "simexplorer.action.unconnect.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -31,7 +31,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "historyAdd", name = "simexplorer.action.historyAdd", shortDescription = "simexplorer.action.historyAdd.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -30,7 +30,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "historyDelete", name = "simexplorer.action.historyDelete", shortDescription = "simexplorer.action.historyDelete.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -25,7 +25,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "historyDeleteExport", name = "simexplorer.action.historyDeleteExport", shortDescription = "simexplorer.action.historyDeleteExport.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryNextAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryNextAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryNextAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -24,7 +24,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "historyNext", name = "simexplorer.action.historyNext", shortDescription = "simexplorer.action.historyNext.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -24,7 +24,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "historyPrevious", name = "simexplorer.action.historyPrevious", shortDescription = "simexplorer.action.historyPrevious.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryResetAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryResetAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryResetAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -24,7 +24,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "historyReset", name = "simexplorer.action.historyReset", shortDescription = "simexplorer.action.historyReset.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -27,7 +27,7 @@ * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionConfig( + at org.nuiton.jaxx.action.ActionConfig( actionCommand = "historyUnconnect", name = "simexplorer.action.historyUnconnect", shortDescription = "simexplorer.action.historyUnconnect.tooltip", Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -21,7 +21,7 @@ import fr.cemagref.simexplorer.is.ui.swing.model.tab.ListTabModel; import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab; import jaxx.runtime.swing.JAXXTab; -import org.codelutin.option.ui.actions.ActionHelper; +import fr.cemagref.simexplorer.is.ui.swing.UIHelper; import javax.swing.JTabbedPane; import javax.swing.JTable; @@ -106,6 +106,7 @@ } } + @Override protected void initFirstUsage(final JListTab ui, final ListTabModel model) { ui.initPopup(); @@ -118,7 +119,7 @@ //FIXME : when we change locale, this is no more enabled ? - ActionHelper.EnableButton(ui.getImportElement()); + UIHelper.EnableButton(ui.getImportElement()); //ImportElementAction action = (ImportElementAction) ui.getImportElement().getAction(); //ui.getImportElement().setToolTipText(_(action.getI18nToolTipText(model.isRemote()))); @@ -157,7 +158,7 @@ return ui.getTable().rowAtPoint(e); } - private class ListMetaSelectionListener implements ListSelectionListener { + protected class ListMetaSelectionListener implements ListSelectionListener { boolean enabled; private final JListTab ui; private final ListTabModel model; @@ -168,12 +169,13 @@ enabled = true; } + @Override public void valueChanged(ListSelectionEvent e) { model.setSelectedIndex(ui.getTable().getSelectedRow()); } } - private class ListMetaMouseListener extends MouseAdapter { + protected class ListMetaMouseListener extends MouseAdapter { private final JListTab ui; private final ListTabModel model; @@ -218,7 +220,7 @@ } } - private static class MyTableRowSorter extends TableRowSorter<ListTableModel> { + protected static class MyTableRowSorter extends TableRowSorter<ListTableModel> { private ListTableModel myModel; @@ -242,17 +244,18 @@ } } - private class TableRowSorterListener implements RowSorterListener { + protected class TableRowSorterListener implements RowSorterListener { private final ListTabModel model; public TableRowSorterListener(ListTabModel model) { this.model = model; } + @Override public void sorterChanged(RowSorterEvent e) { RowSorterEvent.Type type = e.getType(); if (type == RowSorterEvent.Type.SORT_ORDER_CHANGED) { - List keys = e.getSource().getSortKeys(); + List<?> keys = e.getSource().getSortKeys(); if (keys.isEmpty()) { return; } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerBaseAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerBaseAction.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerBaseAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -27,15 +27,15 @@ import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabUpdater; import fr.cemagref.simexplorer.is.ui.swing.ui.util.ErrorDialog; -import org.codelutin.jaxx.action.MyAbstractAction; +import org.nuiton.jaxx.action.MyAbstractAction; /** * La classe de base à utiliser pour toutes les actions de l'application * * @author Code Lutin, Landais Gabriel, Chemit Tony */ - at org.codelutin.jaxx.action.ActionProviderAnnotation -public class SimExplorerBaseAction extends org.codelutin.jaxx.action.MyAbstractAction { + at org.nuiton.jaxx.action.ActionProviderAnnotation +public class SimExplorerBaseAction extends org.nuiton.jaxx.action.MyAbstractAction { private static final long serialVersionUID = -810023044364620841L; @@ -44,6 +44,7 @@ ErrorDialog.showError(e); } + @Override protected String getPrefix() { return "simexplorer"; } Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,33 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline; + +import static fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser.CHANGE_CONFIG_OPTION_KEY; +import static fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser.CHANGE_FILE_CONFIG_OPTION_KEY; +import static fr.cemagref.simexplorer.is.ui.swing.commandline.configs.SimExplorerConfigMain.CONFIG_FILE_NAME_PROPERTY_KEY; + +import java.io.File; +import org.codelutin.option.ConfigPropertyKey; + +/** + * Implantation de base des configurations spécifiques a l'application au parseur <b><code>SimExplorerOptionParser</code></b>. + * + * @author chemit + * @see org.codelutin.option.Config + * @see SimExplorerOptionParser + * @see SimExplorerAbstractContext + */ +public abstract class SimExplorerAbstractConfig extends org.codelutin.option.Config { + + public SimExplorerAbstractConfig(String category, String description) { + super(category, description); + } + protected SimExplorerOptionKey<?, ?> getConfigOptionKey() { + return CHANGE_CONFIG_OPTION_KEY; + } + protected SimExplorerOptionKey<?, ?> getConfigFileOptionKey() { + return CHANGE_FILE_CONFIG_OPTION_KEY; + } + protected ConfigPropertyKey<File> getFileNameConfigKey() { + return CONFIG_FILE_NAME_PROPERTY_KEY; + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractContext.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractContext.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractContext.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,84 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline; + +import static org.nuiton.i18n.I18n.n_; +import static org.codelutin.option.ConfigKey.newConfigKey; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.configs.SimExplorerConfigLocal; +import fr.cemagref.simexplorer.is.ui.swing.commandline.configs.SimExplorerConfigMain; +import fr.cemagref.simexplorer.is.ui.swing.commandline.configs.SimExplorerConfigRemote; +import org.codelutin.option.Config; +import org.codelutin.option.ConfigKey; + +/** + * Implantation du context d'aplication encapsulant le parseur et les configurations. + * + * @author chemit + * @see org.codelutin.option.AbstractContext<SimExplorerOptionParser> + */ +public abstract class SimExplorerAbstractContext extends org.codelutin.option.AbstractContext<SimExplorerOptionParser> { + + /** La clef pour accéder à la config de catégorie <b><code>local</code></b> */ + static public final ConfigKey<SimExplorerConfigLocal> LOCAL_CONFIG_KEY; + + /** La clef pour accéder à la config de catégorie <b><code>main</code></b> */ + static public final ConfigKey<SimExplorerConfigMain> MAIN_CONFIG_KEY; + + /** La clef pour accéder à la config de catégorie <b><code>remote</code></b> */ + static public final ConfigKey<SimExplorerConfigRemote> REMOTE_CONFIG_KEY; + + protected SimExplorerAbstractContext() throws Exception { + super(SimExplorerOptionParser.class); + } + + protected SimExplorerAbstractContext(Class<? extends Config>... configs) throws Exception { + super(SimExplorerOptionParser.class, configs); + } + + /** + * Accesseur typé de l'instance partagée de la configuration de catégorie <b><code>local</code></b> + * (implantantion abstraite dans la classe <b><code>SimExplorerConfigLocal</code></b>) + * . + * + * @return l'unique instance partaée de la configuration de catégorie <b><code>local</code></b> + * @see #LOCAL_CONFIG_KEY + * @see SimExplorerConfigLocal + */ + public SimExplorerConfigLocal getLocalConfig() { + return getConfig(LOCAL_CONFIG_KEY); + } + + /** + * Accesseur typé de l'instance partagée de la configuration de catégorie <b><code>main</code></b> + * (implantantion abstraite dans la classe <b><code>SimExplorerConfigMain</code></b>) + * . + * + * @return l'unique instance partaée de la configuration de catégorie <b><code>main</code></b> + * @see #MAIN_CONFIG_KEY + * @see SimExplorerConfigMain + */ + @Override + public SimExplorerConfigMain getMainConfig() { + return getConfig(MAIN_CONFIG_KEY); + } + + /** + * Accesseur typé de l'instance partagée de la configuration de catégorie <b><code>remote</code></b> + * (implantantion abstraite dans la classe <b><code>SimExplorerConfigRemote</code></b>) + * . + * + * @return l'unique instance partaée de la configuration de catégorie <b><code>remote</code></b> + * @see #REMOTE_CONFIG_KEY + * @see SimExplorerConfigRemote + */ + public SimExplorerConfigRemote getRemoteConfig() { + return getConfig(REMOTE_CONFIG_KEY); + } + + static { + // configs key init + LOCAL_CONFIG_KEY = newConfigKey("local", SimExplorerConfigLocal.class, n_("simexplorer.config.local.description")); + MAIN_CONFIG_KEY = newConfigKey("main", SimExplorerConfigMain.class, n_("simexplorer.config.main.description")); + REMOTE_CONFIG_KEY = newConfigKey("remote", SimExplorerConfigRemote.class, n_("simexplorer.config.remote.description")); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractContext.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractOptionAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractOptionAction.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractOptionAction.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,23 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline; + +import org.codelutin.option.Option; + +/** + * Implantation de base des actions spécifiques au parseur <b><code>SimExplorerOptionParser</code></b>. + * + * @author chemit + * @see org.codelutin.option.OptionAction + * @see SimExplorerOptionParser + * @see SimExplorerAbstractContext + */ +public abstract class SimExplorerAbstractOptionAction<O extends Option> extends org.codelutin.option.OptionAction<O, SimExplorerOptionParser,SimExplorerAbstractContext> { + + protected SimExplorerAbstractOptionAction() { + super(); + } + + protected SimExplorerAbstractOptionAction(String fqn) { + super(fqn); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerAbstractOptionAction.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionKey.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionKey.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionKey.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,24 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline; + +import org.codelutin.option.Option; +import org.codelutin.option.OptionKey; +import org.codelutin.option.def.OptionDefinition; + +/** + * Implantation de clef d'option spécifique pour le parseur <b><code>SimExplorerOptionParser</code></b>. + * + * @author chemit + * @see OptionKey + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionKey<O extends Option, A extends SimExplorerAbstractOptionAction<O>> extends OptionKey<O, SimExplorerOptionParser,SimExplorerAbstractContext, A> { + + static public <O extends Option, A extends SimExplorerAbstractOptionAction<O>> SimExplorerOptionKey<O, A> newSimExplorerOptionKey(String key, Class<O> optionClass, Class<A> abstractActionClass, String description, OptionDefinition definition) { + return new SimExplorerOptionKey<O, A>(key, optionClass, abstractActionClass, description, definition); + } + + private SimExplorerOptionKey(String key, Class<O> optionClass, Class<A> abstractActionClass, String description, OptionDefinition definition) { + super(key, optionClass, abstractActionClass, description, definition); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionKey.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionParser.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionParser.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionParser.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,143 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline; + +import static fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionKey.newSimExplorerOptionKey; +import static org.nuiton.i18n.I18n.n_; +import static org.codelutin.option.def.ArgumentType.valued; +import static org.codelutin.option.def.ArgumentValueType.BOOLEAN; +import static org.codelutin.option.def.ArgumentValueType.FILE; +import static org.codelutin.option.def.ArgumentValueType.STRING; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionChangeConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionChangeFileConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionEditConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionHelp; +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionHelpConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionResetConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionShowConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.actions.SimExplorerOptionActionUi; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionChangeConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionChangeFileConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionEditConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionHelp; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionHelpConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionResetConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionShowConfig; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionUi; +import org.codelutin.option.def.OptionDefinition; +import org.codelutin.option.def.OptionDefinitionBuilder; + +/** + * Implantation du parseur d'options. + * + * @author chemit + * @see org.codelutin.option.OptionParser + */ +public class SimExplorerOptionParser extends org.codelutin.option.OptionParser { + + /** La clef pour accéder à l'option de clef <b><code>showConfig</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionShowConfig,SimExplorerOptionActionShowConfig> SHOW_CONFIG_OPTION_KEY; + + /** La clef pour accéder à l'option de clef <b><code>editConfig</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionEditConfig,SimExplorerOptionActionEditConfig> EDIT_CONFIG_OPTION_KEY; + + /** La clef pour accéder à l'option de clef <b><code>changeFileConfig</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionChangeFileConfig,SimExplorerOptionActionChangeFileConfig> CHANGE_FILE_CONFIG_OPTION_KEY; + + /** La clef pour accéder à l'option de clef <b><code>changeConfig</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionChangeConfig,SimExplorerOptionActionChangeConfig> CHANGE_CONFIG_OPTION_KEY; + + /** La clef pour accéder à l'option de clef <b><code>help</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionHelp,SimExplorerOptionActionHelp> HELP_OPTION_KEY; + + /** La clef pour accéder à l'option de clef <b><code>helpConfig</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionHelpConfig,SimExplorerOptionActionHelpConfig> HELP_CONFIG_OPTION_KEY; + + /** La clef pour accéder à l'option de clef <b><code>resetConfig</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionResetConfig,SimExplorerOptionActionResetConfig> RESET_CONFIG_OPTION_KEY; + + /** La clef pour accéder à l'option de clef <b><code>ui</code></b> */ + static public final SimExplorerOptionKey<SimExplorerOptionUi,SimExplorerOptionActionUi> UI_OPTION_KEY; + + static { + // build options definitions + OptionDefinition[] definitions = buildDefinitions(SimExplorerOptionParser.class); + // options key init + SHOW_CONFIG_OPTION_KEY = newSimExplorerOptionKey("showConfig", SimExplorerOptionShowConfig.class, SimExplorerOptionActionShowConfig.class, n_("simexplorer.option.description.showConfig"), definitions[0]); + EDIT_CONFIG_OPTION_KEY = newSimExplorerOptionKey("editConfig", SimExplorerOptionEditConfig.class, SimExplorerOptionActionEditConfig.class, n_("simexplorer.option.description.editConfig"), definitions[1]); + CHANGE_FILE_CONFIG_OPTION_KEY = newSimExplorerOptionKey("changeFileConfig", SimExplorerOptionChangeFileConfig.class, SimExplorerOptionActionChangeFileConfig.class, n_("simexplorer.option.description.changeFileConfig"), definitions[2]); + CHANGE_CONFIG_OPTION_KEY = newSimExplorerOptionKey("changeConfig", SimExplorerOptionChangeConfig.class, SimExplorerOptionActionChangeConfig.class, n_("simexplorer.option.description.changeConfig"), definitions[3]); + HELP_OPTION_KEY = newSimExplorerOptionKey("help", SimExplorerOptionHelp.class, SimExplorerOptionActionHelp.class, n_("simexplorer.option.description.help"), definitions[4]); + HELP_CONFIG_OPTION_KEY = newSimExplorerOptionKey("helpConfig", SimExplorerOptionHelpConfig.class, SimExplorerOptionActionHelpConfig.class, n_("simexplorer.option.description.helpConfig"), definitions[5]); + RESET_CONFIG_OPTION_KEY = newSimExplorerOptionKey("resetConfig", SimExplorerOptionResetConfig.class, SimExplorerOptionActionResetConfig.class, n_("simexplorer.option.description.resetConfig"), definitions[6]); + UI_OPTION_KEY = newSimExplorerOptionKey("ui", SimExplorerOptionUi.class, SimExplorerOptionActionUi.class, n_("simexplorer.option.description.ui"), definitions[7]); + } + + /** + * Initialise le parser avec les définitions d'options + * + * @param builder le builder utilisé pour construire les définitions + */ + static void buildDefinitions(OptionDefinitionBuilder builder) { + builder.beginBuilder(8); + // option 1/8 : showConfig + builder.beginOption(2); + builder.beginGroup(4); + builder.addConstantArgument("all", 1); + builder.addConstantArgument("local", 1); + builder.addConstantArgument("main", 1); + builder.addConstantArgument("remote", 1); + builder.endGroup(0); + builder.beginGroup(3); + builder.addConstantArgument("normal", 0); + builder.addConstantArgument("complete", 0); + builder.addConstantArgument("tec", 0); + builder.endGroup(-1); + builder.endOption("showConfig", 0, -1, "--show-config"); + // option 2/8 : editConfig + builder.beginOption(0); + builder.endOption("editConfig", 0, 1, "--edit-config"); + // option 3/8 : changeFileConfig + builder.beginOption(1); + builder.beginGroup(1); + builder.addArgument(valued, FILE, "configFile", 1, 1); + builder.endGroup(0); + builder.endOption("changeFileConfig", 0, 1, "--config-file"); + // option 4/8 : changeConfig + builder.beginOption(3); + builder.beginGroup(1); + builder.addArgument(valued, STRING, "key", 1, 1); + builder.endGroup(0); + builder.beginGroup(1); + builder.addArgument(valued, STRING, "value", 1, 1); + builder.endGroup(1); + builder.beginGroup(3); + builder.addConstantArgument("local", 0); + builder.addConstantArgument("main", 0); + builder.addConstantArgument("remote", 0); + builder.endGroup(-1); + builder.endOption("changeConfig", 0, -1, "--config"); + // option 5/8 : help + builder.beginOption(0); + builder.endOption("help", 0, 1, "--help", "-h"); + // option 6/8 : helpConfig + builder.beginOption(1); + builder.beginGroup(4); + builder.addConstantArgument("all", 1); + builder.addConstantArgument("local", 1); + builder.addConstantArgument("main", 1); + builder.addConstantArgument("remote", 1); + builder.endGroup(0); + builder.endOption("helpConfig", 0, -1, "--help-config"); + // option 7/8 : resetConfig + builder.beginOption(0); + builder.endOption("resetConfig", 0, 1, "--reset-config"); + // option 8/8 : ui + builder.beginOption(1); + builder.beginGroup(1); + builder.addArgument(valued, BOOLEAN, "flag", 1, 1); + builder.endGroup(0); + builder.endOption("ui", 0, 1, "--ui"); + builder.endBuilder(); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/SimExplorerOptionParser.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,46 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionChangeConfig; + +/** + * Implantation de l'action associée à l'option <b><code>changeConfig</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionChangeConfig</code></b>. + * + * @author chemit + * @see SimExplorerOptionChangeConfig + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionChangeConfig extends SimExplorerAbstractOptionAction<SimExplorerOptionChangeConfig> { + + public SimExplorerOptionActionChangeConfig() throws Exception { + super("org.codelutin.option.actions.OptionActionChangeConfigRunnable"); + } + + /** @return see {@link SimExplorerOptionChangeConfig#getKey()} */ + public String getKey() { + return option.getKey(); + } + + /** @return see {@link SimExplorerOptionChangeConfig#getValue()} */ + public String getValue() { + return option.getValue(); + } + + /** @return see {@link SimExplorerOptionChangeConfig#isLocal()} */ + public boolean isLocal() { + return option.isLocal(); + } + + /** @return see {@link SimExplorerOptionChangeConfig#isMain()} */ + public boolean isMain() { + return option.isMain(); + } + + /** @return see {@link SimExplorerOptionChangeConfig#isRemote()} */ + public boolean isRemote() { + return option.isRemote(); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeFileConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeFileConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeFileConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,27 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionChangeFileConfig; +import java.io.File; + +/** + * Implantation de l'action associée à l'option <b><code>changeFileConfig</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionChangeFileConfig</code></b>. + * + * @author chemit + * @see SimExplorerOptionChangeFileConfig + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionChangeFileConfig extends SimExplorerAbstractOptionAction<SimExplorerOptionChangeFileConfig> { + + public SimExplorerOptionActionChangeFileConfig() throws Exception { + super("org.codelutin.option.actions.OptionActionChangeFileConfigRunnable"); + } + + /** @return see {@link SimExplorerOptionChangeFileConfig#getConfigFile()} */ + public File getConfigFile() { + return option.getConfigFile(); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionChangeFileConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionEditConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionEditConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionEditConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,21 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionEditConfig; + +/** + * Implantation de l'action associée à l'option <b><code>editConfig</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionEditConfig</code></b>. + * + * @author chemit + * @see SimExplorerOptionEditConfig + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionEditConfig extends SimExplorerAbstractOptionAction<SimExplorerOptionEditConfig> { + + public SimExplorerOptionActionEditConfig() throws Exception { + super("org.codelutin.option.actions.OptionActionEditConfigRunnable"); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionEditConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelp.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelp.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelp.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,21 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionHelp; + +/** + * Implantation de l'action associée à l'option <b><code>help</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionHelp</code></b>. + * + * @author chemit + * @see SimExplorerOptionHelp + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionHelp extends SimExplorerAbstractOptionAction<SimExplorerOptionHelp> { + + public SimExplorerOptionActionHelp() throws Exception { + super("org.codelutin.option.actions.OptionActionHelpRunnable"); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelp.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelpConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelpConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelpConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,41 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionHelpConfig; + +/** + * Implantation de l'action associée à l'option <b><code>helpConfig</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionHelpConfig</code></b>. + * + * @author chemit + * @see SimExplorerOptionHelpConfig + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionHelpConfig extends SimExplorerAbstractOptionAction<SimExplorerOptionHelpConfig> { + + public SimExplorerOptionActionHelpConfig() throws Exception { + super("org.codelutin.option.actions.OptionActionHelpConfigRunnable"); + } + + /** @return see {@link SimExplorerOptionHelpConfig#isAll()} */ + public boolean isAll() { + return option.isAll(); + } + + /** @return see {@link SimExplorerOptionHelpConfig#isLocal()} */ + public boolean isLocal() { + return option.isLocal(); + } + + /** @return see {@link SimExplorerOptionHelpConfig#isMain()} */ + public boolean isMain() { + return option.isMain(); + } + + /** @return see {@link SimExplorerOptionHelpConfig#isRemote()} */ + public boolean isRemote() { + return option.isRemote(); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionHelpConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionResetConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionResetConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionResetConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,21 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionResetConfig; + +/** + * Implantation de l'action associée à l'option <b><code>resetConfig</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionResetConfig</code></b>. + * + * @author chemit + * @see SimExplorerOptionResetConfig + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionResetConfig extends SimExplorerAbstractOptionAction<SimExplorerOptionResetConfig> { + + public SimExplorerOptionActionResetConfig() throws Exception { + super("org.codelutin.option.actions.OptionActionResetConfigRunnable"); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionResetConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionShowConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionShowConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionShowConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,56 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionShowConfig; + +/** + * Implantation de l'action associée à l'option <b><code>showConfig</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionShowConfig</code></b>. + * + * @author chemit + * @see SimExplorerOptionShowConfig + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionShowConfig extends SimExplorerAbstractOptionAction<SimExplorerOptionShowConfig> { + + public SimExplorerOptionActionShowConfig() throws Exception { + super("org.codelutin.option.actions.OptionActionShowConfigRunnable"); + } + + /** @return see {@link SimExplorerOptionShowConfig#isAll()} */ + public boolean isAll() { + return option.isAll(); + } + + /** @return see {@link SimExplorerOptionShowConfig#isLocal()} */ + public boolean isLocal() { + return option.isLocal(); + } + + /** @return see {@link SimExplorerOptionShowConfig#isMain()} */ + public boolean isMain() { + return option.isMain(); + } + + /** @return see {@link SimExplorerOptionShowConfig#isRemote()} */ + public boolean isRemote() { + return option.isRemote(); + } + + /** @return see {@link SimExplorerOptionShowConfig#isNormal()} */ + public boolean isNormal() { + return option.isNormal(); + } + + /** @return see {@link SimExplorerOptionShowConfig#isComplete()} */ + public boolean isComplete() { + return option.isComplete(); + } + + /** @return see {@link SimExplorerOptionShowConfig#isTec()} */ + public boolean isTec() { + return option.isTec(); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionShowConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionUi.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionUi.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionUi.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,26 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.actions; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractOptionAction; +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.commandline.options.SimExplorerOptionUi; + +/** + * Implantation de l'action associée à l'option <b><code>ui</code></b> + * qui est implantée dans la classe <b><code>SimExplorerOptionUi</code></b>. + * + * @author chemit + * @see SimExplorerOptionUi + * @see SimExplorerOptionParser + */ +public class SimExplorerOptionActionUi extends SimExplorerAbstractOptionAction<SimExplorerOptionUi> { + + public SimExplorerOptionActionUi() throws Exception { + super("org.codelutin.option.actions.OptionActionUiRunnable"); + } + + /** @return see {@link SimExplorerOptionUi#isFlag()} */ + public boolean isFlag() { + return option.isFlag(); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/actions/SimExplorerOptionActionUi.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigLocal.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigLocal.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigLocal.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,106 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.configs; + +import static org.nuiton.i18n.I18n.n_; +import static org.codelutin.option.ConfigPropertyKey.newConfigPropertyKey; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractConfig; +import java.io.File; +import org.codelutin.option.ConfigPropertyKey; + +/** + * Implantation de la configuration de catégorie <b><code>local</code></b>. + * + * @author chemit + * @see SimExplorerAbstractConfig + */ +public class SimExplorerConfigLocal extends SimExplorerAbstractConfig { + + /** La clef pour accéder à la propriété <b><code>data</code></b> */ + static public final ConfigPropertyKey<File> DATA_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>db</code></b> */ + static public final ConfigPropertyKey<File> DB_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>optimizePeriod</code></b> */ + static public final ConfigPropertyKey<Integer> OPTIMIZE_PERIOD_PROPERTY_KEY; + + public SimExplorerConfigLocal() { + super("local", n_("simexplorer.config.local.description")); + } + + /** + * Accesseur de la valeur de la propriété <b><code>data</code></b> + * . + * + * @return la valeur de la propriété + * @see #DATA_PROPERTY_KEY + */ + public File getData() { + return getProperty(DATA_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>data</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #DATA_PROPERTY_KEY + */ + public void setData(File value) { + setProperty(DATA_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>db</code></b> + * . + * + * @return la valeur de la propriété + * @see #DB_PROPERTY_KEY + */ + public File getDb() { + return getProperty(DB_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>db</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #DB_PROPERTY_KEY + */ + public void setDb(File value) { + setProperty(DB_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>optimizePeriod</code></b> + * . + * + * @return la valeur de la propriété + * @see #OPTIMIZE_PERIOD_PROPERTY_KEY + */ + public Integer getOptimizePeriod() { + return getProperty(OPTIMIZE_PERIOD_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>optimizePeriod</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #OPTIMIZE_PERIOD_PROPERTY_KEY + */ + public void setOptimizePeriod(Integer value) { + setProperty(OPTIMIZE_PERIOD_PROPERTY_KEY, value); + } + + static { + DATA_PROPERTY_KEY = newConfigPropertyKey("data", File.class, 8, n_("simexplorer.config.local.data.description"), "/var/local/simexplorer/local-data"); + DB_PROPERTY_KEY = newConfigPropertyKey("db", File.class, 8, n_("simexplorer.config.local.db.description"), "/var/local/simexplorer/local-db"); + OPTIMIZE_PERIOD_PROPERTY_KEY = newConfigPropertyKey("optimizePeriod", Integer.class, 8, n_("simexplorer.config.local.optimizePeriod.description"), "3600"); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigLocal.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigMain.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigMain.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigMain.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,515 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.configs; + +import static org.nuiton.i18n.I18n.n_; +import static org.codelutin.option.ConfigPropertyKey.newConfigPropertyKey; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractConfig; +import java.io.File; +import java.net.URL; +import java.util.Locale; +import org.codelutin.option.ConfigPropertyKey; +import org.codelutin.util.VersionNumber; +import org.nuiton.util.SimplePaginationEnum; + +/** + * Implantation de la configuration de catégorie <b><code>main</code></b>. + * + * @author chemit + * @see SimExplorerAbstractConfig + */ +public class SimExplorerConfigMain extends SimExplorerAbstractConfig { + + /** La clef pour accéder à la propriété <b><code>autoConnect</code></b> */ + static public final ConfigPropertyKey<Boolean> AUTO_CONNECT_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>configFileName</code></b> */ + static public final ConfigPropertyKey<File> CONFIG_FILE_NAME_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>copyright</code></b> */ + static public final ConfigPropertyKey<String> COPYRIGHT_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>debugMode</code></b> */ + static public final ConfigPropertyKey<Boolean> DEBUG_MODE_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>encoding</code></b> */ + static public final ConfigPropertyKey<String> ENCODING_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>localSizor</code></b> */ + static public final ConfigPropertyKey<SimplePaginationEnum> LOCAL_SIZOR_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>locale</code></b> */ + static public final ConfigPropertyKey<Locale> LOCALE_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>organisationName</code></b> */ + static public final ConfigPropertyKey<String> ORGANISATION_NAME_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>organisationURL</code></b> */ + static public final ConfigPropertyKey<URL> ORGANISATION_URL_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>projectName</code></b> */ + static public final ConfigPropertyKey<String> PROJECT_NAME_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>projectURL</code></b> */ + static public final ConfigPropertyKey<URL> PROJECT_URL_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>remoteSizor</code></b> */ + static public final ConfigPropertyKey<SimplePaginationEnum> REMOTE_SIZOR_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>showLocalTab</code></b> */ + static public final ConfigPropertyKey<Boolean> SHOW_LOCAL_TAB_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>showRemoteTab</code></b> */ + static public final ConfigPropertyKey<Boolean> SHOW_REMOTE_TAB_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>userFirstName</code></b> */ + static public final ConfigPropertyKey<String> USER_FIRST_NAME_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>userLastName</code></b> */ + static public final ConfigPropertyKey<String> USER_LAST_NAME_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>userMail</code></b> */ + static public final ConfigPropertyKey<String> USER_MAIL_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>version</code></b> */ + static public final ConfigPropertyKey<VersionNumber> VERSION_PROPERTY_KEY; + + public SimExplorerConfigMain() { + super("main", n_("simexplorer.config.main.description")); + } + + /** + * Accesseur de la valeur de la propriété <b><code>autoConnect</code></b> + * . + * + * @return la valeur de la propriété + * @see #AUTO_CONNECT_PROPERTY_KEY + */ + public boolean isAutoConnect() { + return getProperty(AUTO_CONNECT_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>autoConnect</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #AUTO_CONNECT_PROPERTY_KEY + */ + public void setAutoConnect(boolean value) { + setProperty(AUTO_CONNECT_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>configFileName</code></b> + * . + * + * @return la valeur de la propriété + * @see #CONFIG_FILE_NAME_PROPERTY_KEY + */ + public File getConfigFileName() { + return getProperty(CONFIG_FILE_NAME_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>configFileName</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #CONFIG_FILE_NAME_PROPERTY_KEY + */ + protected void setConfigFileName(File value) { + setProperty(CONFIG_FILE_NAME_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>copyright</code></b> + * . + * + * @return la valeur de la propriété + * @see #COPYRIGHT_PROPERTY_KEY + */ + public String getCopyright() { + return getProperty(COPYRIGHT_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>copyright</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #COPYRIGHT_PROPERTY_KEY + */ + protected void setCopyright(String value) { + setProperty(COPYRIGHT_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>debugMode</code></b> + * . + * + * @return la valeur de la propriété + * @see #DEBUG_MODE_PROPERTY_KEY + */ + public boolean isDebugMode() { + return getProperty(DEBUG_MODE_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>debugMode</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #DEBUG_MODE_PROPERTY_KEY + */ + public void setDebugMode(boolean value) { + setProperty(DEBUG_MODE_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>encoding</code></b> + * . + * + * @return la valeur de la propriété + * @see #ENCODING_PROPERTY_KEY + */ + public String getEncoding() { + return getProperty(ENCODING_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>encoding</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #ENCODING_PROPERTY_KEY + */ + protected void setEncoding(String value) { + setProperty(ENCODING_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>localSizor</code></b> + * . + * + * @return la valeur de la propriété + * @see #LOCAL_SIZOR_PROPERTY_KEY + */ + public SimplePaginationEnum getLocalSizor() { + return getProperty(LOCAL_SIZOR_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>localSizor</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #LOCAL_SIZOR_PROPERTY_KEY + */ + public void setLocalSizor(SimplePaginationEnum value) { + setProperty(LOCAL_SIZOR_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>locale</code></b> + * . + * + * @return la valeur de la propriété + * @see #LOCALE_PROPERTY_KEY + */ + public Locale getLocale() { + return getProperty(LOCALE_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>locale</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #LOCALE_PROPERTY_KEY + */ + public void setLocale(Locale value) { + setProperty(LOCALE_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>organisationName</code></b> + * . + * + * @return la valeur de la propriété + * @see #ORGANISATION_NAME_PROPERTY_KEY + */ + public String getOrganisationName() { + return getProperty(ORGANISATION_NAME_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>organisationName</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #ORGANISATION_NAME_PROPERTY_KEY + */ + protected void setOrganisationName(String value) { + setProperty(ORGANISATION_NAME_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>organisationURL</code></b> + * . + * + * @return la valeur de la propriété + * @see #ORGANISATION_URL_PROPERTY_KEY + */ + public URL getOrganisationURL() { + return getProperty(ORGANISATION_URL_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>organisationURL</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #ORGANISATION_URL_PROPERTY_KEY + */ + protected void setOrganisationURL(URL value) { + setProperty(ORGANISATION_URL_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>projectName</code></b> + * . + * + * @return la valeur de la propriété + * @see #PROJECT_NAME_PROPERTY_KEY + */ + public String getProjectName() { + return getProperty(PROJECT_NAME_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>projectName</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #PROJECT_NAME_PROPERTY_KEY + */ + protected void setProjectName(String value) { + setProperty(PROJECT_NAME_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>projectURL</code></b> + * . + * + * @return la valeur de la propriété + * @see #PROJECT_URL_PROPERTY_KEY + */ + public URL getProjectURL() { + return getProperty(PROJECT_URL_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>projectURL</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #PROJECT_URL_PROPERTY_KEY + */ + protected void setProjectURL(URL value) { + setProperty(PROJECT_URL_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>remoteSizor</code></b> + * . + * + * @return la valeur de la propriété + * @see #REMOTE_SIZOR_PROPERTY_KEY + */ + public SimplePaginationEnum getRemoteSizor() { + return getProperty(REMOTE_SIZOR_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>remoteSizor</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #REMOTE_SIZOR_PROPERTY_KEY + */ + public void setRemoteSizor(SimplePaginationEnum value) { + setProperty(REMOTE_SIZOR_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>showLocalTab</code></b> + * . + * + * @return la valeur de la propriété + * @see #SHOW_LOCAL_TAB_PROPERTY_KEY + */ + public boolean isShowLocalTab() { + return getProperty(SHOW_LOCAL_TAB_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>showLocalTab</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #SHOW_LOCAL_TAB_PROPERTY_KEY + */ + public void setShowLocalTab(boolean value) { + setProperty(SHOW_LOCAL_TAB_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>showRemoteTab</code></b> + * . + * + * @return la valeur de la propriété + * @see #SHOW_REMOTE_TAB_PROPERTY_KEY + */ + public boolean isShowRemoteTab() { + return getProperty(SHOW_REMOTE_TAB_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>showRemoteTab</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #SHOW_REMOTE_TAB_PROPERTY_KEY + */ + public void setShowRemoteTab(boolean value) { + setProperty(SHOW_REMOTE_TAB_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>userFirstName</code></b> + * . + * + * @return la valeur de la propriété + * @see #USER_FIRST_NAME_PROPERTY_KEY + */ + public String getUserFirstName() { + return getProperty(USER_FIRST_NAME_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>userFirstName</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #USER_FIRST_NAME_PROPERTY_KEY + */ + public void setUserFirstName(String value) { + setProperty(USER_FIRST_NAME_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>userLastName</code></b> + * . + * + * @return la valeur de la propriété + * @see #USER_LAST_NAME_PROPERTY_KEY + */ + public String getUserLastName() { + return getProperty(USER_LAST_NAME_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>userLastName</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #USER_LAST_NAME_PROPERTY_KEY + */ + public void setUserLastName(String value) { + setProperty(USER_LAST_NAME_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>userMail</code></b> + * . + * + * @return la valeur de la propriété + * @see #USER_MAIL_PROPERTY_KEY + */ + public String getUserMail() { + return getProperty(USER_MAIL_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>userMail</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #USER_MAIL_PROPERTY_KEY + */ + public void setUserMail(String value) { + setProperty(USER_MAIL_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>version</code></b> + * . + * + * @return la valeur de la propriété + * @see #VERSION_PROPERTY_KEY + */ + public VersionNumber getVersion() { + return getProperty(VERSION_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>version</code></b>. + * <p/> + * <b>la propriété est de portée <code>protected</code> car finale</b>. + * + * @param value la nouvelle valeur à affecter + * @see #VERSION_PROPERTY_KEY + */ + protected void setVersion(VersionNumber value) { + setProperty(VERSION_PROPERTY_KEY, value); + } + + static { + AUTO_CONNECT_PROPERTY_KEY = newConfigPropertyKey("autoConnect", Boolean.class, 0, n_("simexplorer.config.main.autoConnect.description"), "false"); + CONFIG_FILE_NAME_PROPERTY_KEY = newConfigPropertyKey("configFileName", File.class, 15, n_("simexplorer.config.main.configFileName.description"), ".simexplorer-si-1"); + COPYRIGHT_PROPERTY_KEY = newConfigPropertyKey("copyright", String.class, 15, n_("simexplorer.config.main.copyright.description"), "Copyright Cemagref 2008"); + DEBUG_MODE_PROPERTY_KEY = newConfigPropertyKey("debugMode", Boolean.class, 8, n_("simexplorer.config.main.debugMode.description"), "false"); + ENCODING_PROPERTY_KEY = newConfigPropertyKey("encoding", String.class, 11, n_("simexplorer.config.main.encoding.description"), "UTF-8"); + LOCAL_SIZOR_PROPERTY_KEY = newConfigPropertyKey("localSizor", SimplePaginationEnum.class, 0, n_("simexplorer.config.main.localSizor.description"), "_5"); + LOCALE_PROPERTY_KEY = newConfigPropertyKey("locale", Locale.class, 10, n_("simexplorer.config.main.locale.description"), "en_GB"); + ORGANISATION_NAME_PROPERTY_KEY = newConfigPropertyKey("organisationName", String.class, 15, n_("simexplorer.config.main.organisationName.description"), "Cemagref"); + ORGANISATION_URL_PROPERTY_KEY = newConfigPropertyKey("organisationURL", URL.class, 15, n_("simexplorer.config.main.organisationURL.description"), "http://www.cemagref.fr"); + PROJECT_NAME_PROPERTY_KEY = newConfigPropertyKey("projectName", String.class, 15, n_("simexplorer.config.main.projectName.description"), "SimExplorer-SI"); + PROJECT_URL_PROPERTY_KEY = newConfigPropertyKey("projectURL", URL.class, 15, n_("simexplorer.config.main.projectURL.description"), "http://simexplorer-si.labs.libre-entreprise.org"); + REMOTE_SIZOR_PROPERTY_KEY = newConfigPropertyKey("remoteSizor", SimplePaginationEnum.class, 0, n_("simexplorer.config.main.remoteSizor.description"), "_20"); + SHOW_LOCAL_TAB_PROPERTY_KEY = newConfigPropertyKey("showLocalTab", Boolean.class, 0, n_("simexplorer.config.main.showLocalTab.description"), "true"); + SHOW_REMOTE_TAB_PROPERTY_KEY = newConfigPropertyKey("showRemoteTab", Boolean.class, 0, n_("simexplorer.config.main.showRemoteTab.description"), "false"); + USER_FIRST_NAME_PROPERTY_KEY = newConfigPropertyKey("userFirstName", String.class, 8, n_("simexplorer.config.main.userFirstName.description")); + USER_LAST_NAME_PROPERTY_KEY = newConfigPropertyKey("userLastName", String.class, 8, n_("simexplorer.config.main.userLastName.description")); + USER_MAIL_PROPERTY_KEY = newConfigPropertyKey("userMail", String.class, 8, n_("simexplorer.config.main.userMail.description")); + VERSION_PROPERTY_KEY = newConfigPropertyKey("version", VersionNumber.class, 15, n_("simexplorer.config.main.version.description"), "1.0"); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigMain.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigRemote.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigRemote.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigRemote.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,214 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.configs; + +import static org.nuiton.i18n.I18n.n_; +import static org.codelutin.option.ConfigPropertyKey.newConfigPropertyKey; + +import fr.cemagref.simexplorer.is.ui.swing.commandline.SimExplorerAbstractConfig; +import java.net.URI; +import org.codelutin.option.ConfigPropertyKey; + +/** + * Implantation de la configuration de catégorie <b><code>remote</code></b>. + * + * @author chemit + * @see SimExplorerAbstractConfig + */ +public class SimExplorerConfigRemote extends SimExplorerAbstractConfig { + + /** La clef pour accéder à la propriété <b><code>URI</code></b> */ + static public final ConfigPropertyKey<URI> URI_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>login</code></b> */ + static public final ConfigPropertyKey<String> LOGIN_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>password</code></b> */ + static public final ConfigPropertyKey<String> PASSWORD_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>proxyLogin</code></b> */ + static public final ConfigPropertyKey<String> PROXY_LOGIN_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>proxyPassword</code></b> */ + static public final ConfigPropertyKey<String> PROXY_PASSWORD_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>useAuthenticationProxy</code></b> */ + static public final ConfigPropertyKey<Boolean> USE_AUTHENTICATION_PROXY_PROPERTY_KEY; + + /** La clef pour accéder à la propriété <b><code>useProxy</code></b> */ + static public final ConfigPropertyKey<Boolean> USE_PROXY_PROPERTY_KEY; + + public SimExplorerConfigRemote() { + super("remote", n_("simexplorer.config.remote.description")); + } + + /** + * Accesseur de la valeur de la propriété <b><code>URI</code></b> + * . + * + * @return la valeur de la propriété + * @see #URI_PROPERTY_KEY + */ + public URI getURI() { + return getProperty(URI_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>URI</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #URI_PROPERTY_KEY + */ + public void setURI(URI value) { + setProperty(URI_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>login</code></b> + * . + * + * @return la valeur de la propriété + * @see #LOGIN_PROPERTY_KEY + */ + public String getLogin() { + return getProperty(LOGIN_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>login</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #LOGIN_PROPERTY_KEY + */ + public void setLogin(String value) { + setProperty(LOGIN_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>password</code></b> + * . + * + * @return la valeur de la propriété + * @see #PASSWORD_PROPERTY_KEY + */ + public String getPassword() { + return getProperty(PASSWORD_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>password</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #PASSWORD_PROPERTY_KEY + */ + public void setPassword(String value) { + setProperty(PASSWORD_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>proxyLogin</code></b> + * . + * + * @return la valeur de la propriété + * @see #PROXY_LOGIN_PROPERTY_KEY + */ + public String getProxyLogin() { + return getProperty(PROXY_LOGIN_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>proxyLogin</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #PROXY_LOGIN_PROPERTY_KEY + */ + public void setProxyLogin(String value) { + setProperty(PROXY_LOGIN_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>proxyPassword</code></b> + * . + * + * @return la valeur de la propriété + * @see #PROXY_PASSWORD_PROPERTY_KEY + */ + public String getProxyPassword() { + return getProperty(PROXY_PASSWORD_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>proxyPassword</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #PROXY_PASSWORD_PROPERTY_KEY + */ + public void setProxyPassword(String value) { + setProperty(PROXY_PASSWORD_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>useAuthenticationProxy</code></b> + * . + * + * @return la valeur de la propriété + * @see #USE_AUTHENTICATION_PROXY_PROPERTY_KEY + */ + public boolean isUseAuthenticationProxy() { + return getProperty(USE_AUTHENTICATION_PROXY_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>useAuthenticationProxy</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #USE_AUTHENTICATION_PROXY_PROPERTY_KEY + */ + public void setUseAuthenticationProxy(boolean value) { + setProperty(USE_AUTHENTICATION_PROXY_PROPERTY_KEY, value); + } + + /** + * Accesseur de la valeur de la propriété <b><code>useProxy</code></b> + * . + * + * @return la valeur de la propriété + * @see #USE_PROXY_PROPERTY_KEY + */ + public boolean isUseProxy() { + return getProperty(USE_PROXY_PROPERTY_KEY); + } + + /** + * Mutateur de la valeur de la propriété <b><code>useProxy</code></b>. + * <p/> + * la propriété est de portée <code>public</code> car non finale. + * + * @param value la nouvelle valeur à affecter + * @see #USE_PROXY_PROPERTY_KEY + */ + public void setUseProxy(boolean value) { + setProperty(USE_PROXY_PROPERTY_KEY, value); + } + + static { + URI_PROPERTY_KEY = newConfigPropertyKey("URI", URI.class, 10, n_("simexplorer.config.remote.URI.description"), "jnp://localhost:1099"); + LOGIN_PROPERTY_KEY = newConfigPropertyKey("login", String.class, 8, n_("simexplorer.config.remote.login.description")); + PASSWORD_PROPERTY_KEY = newConfigPropertyKey("password", String.class, 0, n_("simexplorer.config.remote.password.description")); + PROXY_LOGIN_PROPERTY_KEY = newConfigPropertyKey("proxyLogin", String.class, 0, n_("simexplorer.config.remote.proxyLogin.description")); + PROXY_PASSWORD_PROPERTY_KEY = newConfigPropertyKey("proxyPassword", String.class, 0, n_("simexplorer.config.remote.proxyPassword.description")); + USE_AUTHENTICATION_PROXY_PROPERTY_KEY = newConfigPropertyKey("useAuthenticationProxy", Boolean.class, 0, n_("simexplorer.config.remote.useAuthenticationProxy.description"), "false"); + USE_PROXY_PROPERTY_KEY = newConfigPropertyKey("useProxy", Boolean.class, 0, n_("simexplorer.config.remote.useProxy.description"), "false"); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/configs/SimExplorerConfigRemote.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,67 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>changeConfig</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionChangeConfig extends org.codelutin.option.Option { + + public SimExplorerOptionChangeConfig(String usedAlias, Argument... arguments) { + super(usedAlias, arguments); + } + + /** + * Accesseur de la valeur de l'argument <b><code>key</code></b> + * du groupe d'arguments à la position <code>0</code>. + * + * @return la valeur de l'argument de type <code>String</code> ou <code>null</code> si auncune valeur trouvée. + */ + public String getKey() { + return getValuedArgumentValue(0, String.class, null,false); + } + + /** + * Accesseur de la valeur de l'argument <b><code>value</code></b> + * du groupe d'arguments à la position <code>1</code>. + * + * @return la valeur de l'argument de type <code>String</code> ou <code>null</code> si auncune valeur trouvée. + */ + public String getValue() { + return getValuedArgumentValue(1, String.class, null,false); + } + + /** + * Accesseur de présence de l'argument <b><code>local</code></b> + * de type constant dans le groupe d'arguments à la position <code>-1</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isLocal() { + return "local".equals(getConstantArgumentValue(-1)); + } + + /** + * Accesseur de présence de l'argument <b><code>main</code></b> + * de type constant dans le groupe d'arguments à la position <code>-1</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isMain() { + return "main".equals(getConstantArgumentValue(-1)); + } + + /** + * Accesseur de présence de l'argument <b><code>remote</code></b> + * de type constant dans le groupe d'arguments à la position <code>-1</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isRemote() { + return "remote".equals(getConstantArgumentValue(-1)); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeFileConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeFileConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeFileConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,28 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import java.io.File; +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>changeFileConfig</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionChangeFileConfig extends org.codelutin.option.Option { + + public SimExplorerOptionChangeFileConfig(String usedAlias, Argument... arguments) { + super(usedAlias, arguments); + } + + /** + * Accesseur de la valeur de l'argument <b><code>configFile</code></b> + * du groupe d'arguments à la position <code>0</code>. + * + * @return la valeur de l'argument de type <code>File</code> ou <code>null</code> si auncune valeur trouvée. + */ + public File getConfigFile() { + return getValuedArgumentValue(0, File.class, null,false); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionChangeFileConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionEditConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionEditConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionEditConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,17 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>editConfig</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionEditConfig extends org.codelutin.option.Option { + + public SimExplorerOptionEditConfig(String usedAlias, Argument... arguments) { + super(usedAlias, arguments); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionEditConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelp.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelp.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelp.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,17 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>help</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionHelp extends org.codelutin.option.Option { + + public SimExplorerOptionHelp(String usedAlias, Argument... arguments) { + super(usedAlias, arguments); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelp.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelpConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelpConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelpConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,57 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>helpConfig</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionHelpConfig extends org.codelutin.option.Option { + + public SimExplorerOptionHelpConfig(String usedAlias, Argument... arguments) { + super(usedAlias, arguments); + } + + /** + * Accesseur de présence de l'argument <b><code>all</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isAll() { + return "all".equals(getConstantArgumentValue(0)); + } + + /** + * Accesseur de présence de l'argument <b><code>local</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isLocal() { + return "local".equals(getConstantArgumentValue(0)); + } + + /** + * Accesseur de présence de l'argument <b><code>main</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isMain() { + return "main".equals(getConstantArgumentValue(0)); + } + + /** + * Accesseur de présence de l'argument <b><code>remote</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isRemote() { + return "remote".equals(getConstantArgumentValue(0)); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionHelpConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionResetConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionResetConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionResetConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,17 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>resetConfig</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionResetConfig extends org.codelutin.option.Option { + + public SimExplorerOptionResetConfig(String usedAlias, Argument... arguments) { + super(usedAlias, arguments); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionResetConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionShowConfig.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionShowConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionShowConfig.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,87 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>showConfig</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionShowConfig extends org.codelutin.option.Option { + + public SimExplorerOptionShowConfig(String usedAlias, Argument... arguments) { + super(usedAlias, arguments); + } + + /** + * Accesseur de présence de l'argument <b><code>all</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isAll() { + return "all".equals(getConstantArgumentValue(0)); + } + + /** + * Accesseur de présence de l'argument <b><code>local</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isLocal() { + return "local".equals(getConstantArgumentValue(0)); + } + + /** + * Accesseur de présence de l'argument <b><code>main</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isMain() { + return "main".equals(getConstantArgumentValue(0)); + } + + /** + * Accesseur de présence de l'argument <b><code>remote</code></b> + * de type constant dans le groupe d'arguments à la position <code>0</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isRemote() { + return "remote".equals(getConstantArgumentValue(0)); + } + + /** + * Accesseur de présence de l'argument <b><code>normal</code></b> + * de type constant dans le groupe d'arguments à la position <code>-1</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isNormal() { + return "normal".equals(getConstantArgumentValue(-1)); + } + + /** + * Accesseur de présence de l'argument <b><code>complete</code></b> + * de type constant dans le groupe d'arguments à la position <code>-1</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isComplete() { + return "complete".equals(getConstantArgumentValue(-1)); + } + + /** + * Accesseur de présence de l'argument <b><code>tec</code></b> + * de type constant dans le groupe d'arguments à la position <code>-1</code>. + * + * @return <code>true</code> si cet argument a été rencontré, <code>false</code> sinon. + */ + public Boolean isTec() { + return "tec".equals(getConstantArgumentValue(-1)); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionShowConfig.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionUi.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionUi.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionUi.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,27 @@ + +package fr.cemagref.simexplorer.is.ui.swing.commandline.options; + +import org.codelutin.option.Argument; + +/** + * Implantation de l'option <b><code>ui</code></b>. + * + * @author chemit + * @see org.codelutin.option.Option + */ +public class SimExplorerOptionUi extends org.codelutin.option.Option { + + public SimExplorerOptionUi(String usedAlias, Argument<?>... arguments) { + super(usedAlias, arguments); + } + + /** + * Accesseur de la valeur de l'argument <b><code>flag</code></b> + * du groupe d'arguments à la position <code>0</code>. + * + * @return la valeur de l'argument de type <code>Boolean</code> ou <code>null</code> si auncune valeur trouvée. + */ + public Boolean isFlag() { + return getValuedArgumentValue(0, Boolean.class, null,false); + } +} Property changes on: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/commandline/options/SimExplorerOptionUi.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -23,7 +23,7 @@ import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; -import org.codelutin.jaxx.tab.TabModel; +import org.nuiton.jaxx.tab.TabModel; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -28,7 +28,7 @@ import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; import fr.cemagref.simexplorer.is.ui.swing.model.tab.DetailTabModel; import static org.nuiton.i18n.I18n._; -import org.codelutin.option.ui.actions.ActionHelper; +import fr.cemagref.simexplorer.is.ui.swing.UIHelper; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; @@ -55,6 +55,7 @@ super(context, SimExplorerTab.detail); } + @Override public void propertyChange(PropertyChangeEvent evt) { String evtName = evt.getPropertyName(); if (evtName.equals(DetailTabModel.ROOT_NODE_PROPERTY_CHANGED)) { @@ -99,20 +100,20 @@ HistoryModel<EntityTreeNode> history = model.getHistory(); // reset history action - ActionHelper.UpdateButton(getMainUI().getHistoryReset(), history.size() > 0); + UIHelper.UpdateButton(getMainUI().getHistoryReset(), history.size() > 0); // history next action if (history.size() > 1 && history.hasPrevious()) { - ActionHelper.EnableButton(ui.getHistoryPrevious(), history.getPrevious()); + UIHelper.EnableButton(ui.getHistoryPrevious(), history.getPrevious()); } else { - ActionHelper.DisableButton(ui.getHistoryPrevious()); + UIHelper.DisableButton(ui.getHistoryPrevious()); } // history previous action if (history.size() > 1 && history.hasNext()) { - ActionHelper.EnableButton(ui.getHistoryNext(), history.getNext()); + UIHelper.EnableButton(ui.getHistoryNext(), history.getNext()); } else { - ActionHelper.DisableButton(ui.getHistoryNext()); + UIHelper.DisableButton(ui.getHistoryNext()); } // select root node (will trigger fireNodeSelected) @@ -155,7 +156,7 @@ } // add accessibility on combo boolean enabled = ui.getDetailVersions().getItemCount() > 1; - ActionHelper.UpdateCombo(ui.getDetailVersions(), enabled, !enabled ? null : _("simexplorer.action.changeVersion.tooltip")); + UIHelper.UpdateCombo(ui.getDetailVersions(), enabled, !enabled ? null : _("simexplorer.action.changeVersion.tooltip")); } @@ -193,7 +194,7 @@ } else { ui.getDetailAttachments().getSelectionModel().clearSelection(); // if we had a previous empty list, no trigger to fireAttachmentSelected - ActionHelper.DisableButton(ui.getDownloadAttachment()); + UIHelper.DisableButton(ui.getDownloadAttachment()); ui.getScrollAttachments().setVisible(false); } @@ -219,12 +220,12 @@ // refresh download LoggableElement button enabled = detail != null && EntityHelper.Action.DOWNLOAD.accept(node); - ActionHelper.UpdateButton(ui.getDownloadElement(), enabled, enabled ? detail == null ? node.getUserObject() : detail.getName() + " [" + model.getSelectedVersion() + "]" : null); + UIHelper.UpdateButton(ui.getDownloadElement(), enabled, enabled ? detail == null ? node.getUserObject() : detail.getName() + " [" + model.getSelectedVersion() + "]" : null); // refresh delete button enabled = detail != null && EntityHelper.Action.DELETE.accept(detail); - ActionHelper.UpdateButton(ui.getDeleteElement(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null); + UIHelper.UpdateButton(ui.getDeleteElement(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null); // refresh detail to tree button @@ -239,14 +240,14 @@ } enabled = detail != null && !(detail.getName().equals(data.getName()) && data.getVersion().equals(version)); - ActionHelper.UpdateButton(ui.getDetailToTree(), enabled, enabled ? detail.getName() + " [" + version + "]" : null); + UIHelper.UpdateButton(ui.getDetailToTree(), enabled, enabled ? detail.getName() + " [" + version + "]" : null); } protected void fireAttachmentSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) { log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue()); Attachment attachment = model.getSelectedAttachment(); boolean enabled = model.getDetailNode() != null && attachment != null; - ActionHelper.UpdateButton(ui.getDownloadAttachment(), enabled, enabled ? attachment : null); + UIHelper.UpdateButton(ui.getDownloadAttachment(), enabled, enabled ? attachment : null); } public void refreshWithConnectAction() { @@ -256,11 +257,12 @@ boolean enabled = b && context.isConnected(); MetaData detail = b ? model.getDetailNode().getMetaData() : null; - ActionHelper.UpdateButton(ui.getShowTab_synchronize(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null); + UIHelper.UpdateButton(ui.getShowTab_synchronize(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null); LoggableElement sNode = model.getSelectedNode(); getMainUI().refreshExportElement(context, ui.getExportElement(), model.isRemote(), sNode); } + @Override public void initListeners() { DetailTabModel model = getModel(); model.addPropertyChangeListener(DetailTabModel.ROOT_NODE_PROPERTY_CHANGED, this); @@ -280,7 +282,7 @@ if (disable) { versions.setVisible(false); ui.getDetail().setVisible(false); - ActionHelper.DisableButton( + UIHelper.DisableButton( ui.getDetailToTree(), ui.getShowTab_synchronize(), ui.getExportElement(), Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -22,7 +22,7 @@ import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.codelutin.option.ui.actions.ActionHelper; +import fr.cemagref.simexplorer.is.ui.swing.UIHelper; import javax.swing.AbstractButton; import javax.swing.JTree; @@ -115,8 +115,8 @@ EntityTreeNode node) { boolean enabled = node != null && !node.isLeaf() && node.getChildCount() > 0; Object o = enabled ? node.getUserObject() : null; - ActionHelper.UpdateButton(collapseButton, enabled, o); - ActionHelper.UpdateButton(expandButton, enabled, o); + UIHelper.UpdateButton(collapseButton, enabled, o); + UIHelper.UpdateButton(expandButton, enabled, o); } protected EntityTreeNodeHelper() { Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -22,7 +22,7 @@ import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel; import fr.cemagref.simexplorer.is.ui.swing.model.tab.ListTabModel; -import org.codelutin.option.ui.actions.ActionHelper; +import fr.cemagref.simexplorer.is.ui.swing.UIHelper; import javax.swing.JComboBox; import java.beans.PropertyChangeEvent; @@ -41,6 +41,7 @@ super(context, remote ? SimExplorerTab.remote : SimExplorerTab.local); } + @Override public void propertyChange(PropertyChangeEvent evt) { String evtName = evt.getPropertyName(); if (log.isDebugEnabled()) { @@ -162,6 +163,7 @@ ui.getGoPreviousPage().setEnabled(notFirstPage); } + @Override public void initListeners() { ListTabModel model = getModel(); model.addPropertyChangeListener(ListTabModel.SELECTED_ROW_PROPERTY_CHANGED, this); @@ -172,7 +174,7 @@ public void resetSearch() { getUi().getSearchText().setText(null); - ActionHelper.DisableButton(getUi().getResetSearch(), getUi().getSearch()); + UIHelper.DisableButton(getUi().getResetSearch(), getUi().getSearch()); } /** Rafraichit les actions de recherche d'un onglet de type liste. */ @@ -180,8 +182,8 @@ JListTab ui = getUi(); String text = ui.getSearchText().getText(); boolean hasQuery = getModel().hasQuery() || !text.isEmpty(); - ActionHelper.UpdateButton(ui.getSearch(), hasQuery); - ActionHelper.UpdateButton(ui.getResetSearch(), hasQuery); + UIHelper.UpdateButton(ui.getSearch(), hasQuery); + UIHelper.UpdateButton(ui.getResetSearch(), hasQuery); } public void refreshListTablePopupMenu(final ListTabModel model) { @@ -196,10 +198,10 @@ String text = data.getName() + " [" + data.getVersion() + "]"; - ActionHelper.UpdateButton(ui.getDownloadElement(), EntityHelper.Action.DOWNLOAD.accept(data), text); - ActionHelper.UpdateButton(ui.getDeleteElement(), EntityHelper.Action.DELETE.accept(data), text); - ActionHelper.UpdateButton(ui.getShowTab_detail(), true, text); - ActionHelper.UpdateButton(ui.getShowTab_synchronize(), getContext().isConnected(), text); + UIHelper.UpdateButton(ui.getDownloadElement(), EntityHelper.Action.DOWNLOAD.accept(data), text); + UIHelper.UpdateButton(ui.getDeleteElement(), EntityHelper.Action.DELETE.accept(data), text); + UIHelper.UpdateButton(ui.getShowTab_detail(), true, text); + UIHelper.UpdateButton(ui.getShowTab_synchronize(), getContext().isConnected(), text); getMainUI().refreshExportElement(getContext(), ui.getExportElement(), model.isRemote(), data); } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -23,7 +23,7 @@ import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; import fr.cemagref.simexplorer.is.ui.swing.actions.ExportElementAction; import static org.nuiton.i18n.I18n._; -import org.codelutin.option.ui.actions.ActionHelper; +import fr.cemagref.simexplorer.is.ui.swing.UIHelper; import javax.swing.AbstractButton; import javax.swing.JComponent; @@ -39,9 +39,9 @@ */ public class SimExplorerMainUI extends SimExplorerUI { + private static final long serialVersionUID = 1L; /** l'ui principale de l'application */ public static SimExplorerMainUI ui; - public DetailTabUpdater detailUpdater; public ListTabUpdater localUpdater; public ListTabUpdater remoteUpdater; @@ -75,7 +75,6 @@ } ui = null; } - MyRunnable runnable; private MyRunnable getRunnable(String msg) { @@ -98,8 +97,8 @@ protected void finalizeInit(SimExplorerContext context) { // create i18n entries in menu with id 'i18nMenu' - ActionHelper.createI18nMenu(this); - + UIHelper.createI18nMenu(this); + // chargement dans l'ui des actions context.getActionFactory().loadActions(this); @@ -111,13 +110,13 @@ getRootPane().getActionMap().put("quit", context.getActionFactory().newAction("quit")); // repaint i18n actions - ActionHelper.refreshI18nActions(context, context.getActionFactory(), this); + UIHelper.refreshI18nActions(context, context.getActionFactory(), this); if (!context.getMainConfig().isDebugMode()) { getDebug().setVisible(false); } - ActionHelper.UpdateButton(getHistoryReset(), false); + UIHelper.UpdateButton(getHistoryReset(), false); } public void refreshExportElement(SimExplorerContext context, AbstractButton button, boolean remote, LoggableElement sNode) { @@ -169,12 +168,14 @@ } private class MyRunnable implements Runnable { + private String msg; public void setMsg(String msg) { this.msg = msg; } + @Override public void run() { getStatusBar().setStatus(msg); } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -21,7 +21,7 @@ import fr.cemagref.simexplorer.is.ui.swing.model.tab.SimExplorerAbstractTabModel; import fr.cemagref.simexplorer.is.ui.swing.model.tab.SynchronizeTabModel; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import org.codelutin.jaxx.tab.TabContentConfig; +import org.nuiton.jaxx.tab.TabContentConfig; import jaxx.runtime.swing.JAXXTab; import javax.swing.JPopupMenu; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -22,9 +22,9 @@ import fr.cemagref.simexplorer.is.ui.swing.model.tab.SimExplorerAbstractTabModel; import fr.cemagref.simexplorer.is.ui.swing.ui.util.MyTabHeader; import jaxx.runtime.JAXXObject; -import org.codelutin.jaxx.tab.TabContentConfig; -import org.codelutin.jaxx.tab.TabFactory; -import org.codelutin.jaxx.tab.TabModel; +import org.nuiton.jaxx.tab.TabContentConfig; +import org.nuiton.jaxx.tab.TabFactory; +import org.nuiton.jaxx.tab.TabModel; import jaxx.runtime.swing.JAXXTab; import static org.nuiton.i18n.I18n._; @@ -48,6 +48,7 @@ */ public class SimExplorerTabFactory extends TabFactory { + @Override protected Map<String, TabContentConfig> initFactory() { Map<String, TabContentConfig> result = new TreeMap<String, TabContentConfig>(); for (SimExplorerTab tab : SimExplorerTab.values()) { @@ -62,6 +63,7 @@ return result; } + @Override protected void initTab(JAXXTab tab, String tabName, TabContentConfig config) { SimExplorer.getContext().getActionFactory().loadActions((JAXXObject) tab); } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUI.jaxx =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUI.jaxx 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUI.jaxx 2010-01-18 17:20:02 UTC (rev 1585) @@ -62,7 +62,6 @@ <row> <cell fill="both"> <jaxx.runtime.swing.StatusMessagePanel id='statusBar'/> - <!--org.codelutin.widget.StatusBar id='statusBar'/--> </cell> </row> </Table> Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java 2010-01-18 17:20:02 UTC (rev 1585) @@ -20,7 +20,7 @@ import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; import fr.cemagref.simexplorer.is.ui.swing.model.tab.SynchronizeTabModel; -import org.codelutin.option.ui.actions.ActionHelper; +import fr.cemagref.simexplorer.is.ui.swing.UIHelper; import javax.swing.JTree; import javax.swing.tree.DefaultTreeModel; @@ -37,6 +37,7 @@ super(context, SimExplorerTab.synchronize); } + @Override public void propertyChange(PropertyChangeEvent evt) { String evtName = evt.getPropertyName(); if (log.isDebugEnabled()) { @@ -67,6 +68,7 @@ throw new IllegalStateException("could not treate property " + evtName); } + @Override public void initListeners() { SynchronizeTabModel model = getModel(); model.addPropertyChangeListener(SynchronizeTabModel.LOCAL_ROOT_NODE_PROPERTY_CHANGED, this); @@ -89,12 +91,12 @@ if (sources[0] == null && oldSources[0] == null) { // disable local - ActionHelper.DisableButton(getUi().getExportButton(false), getUi().getShowDetailButton(false), getUi().getCollapseButton(false), getUi().getExpandButton(false)); + UIHelper.DisableButton(getUi().getExportButton(false), getUi().getShowDetailButton(false), getUi().getCollapseButton(false), getUi().getExpandButton(false)); } if (sources[1] == null && oldSources[1] == null) { // disable remote - ActionHelper.DisableButton(getUi().getExportButton(true), getUi().getShowDetailButton(true), getUi().getCollapseButton(true), getUi().getExpandButton(true)); + UIHelper.DisableButton(getUi().getExportButton(true), getUi().getShowDetailButton(true), getUi().getCollapseButton(true), getUi().getExpandButton(true)); } } Added: trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/META-INF/services/org.codelutin.option.Context =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/META-INF/services/org.codelutin.option.Context (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/META-INF/services/org.codelutin.option.Context 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1 @@ +fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext \ No newline at end of file Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-en_GB.properties =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-en_GB.properties 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-en_GB.properties 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,3 +1,26 @@ +commandline.action.about=About +commandline.action.about.help= +commandline.action.about.tooltip=Show about ui +commandline.action.changeLocale.help= +commandline.action.changeLocale.tooltip=Change language +commandline.action.config=Preferences +commandline.action.config.help= +commandline.action.config.tooltip=Show Preference ui +commandline.action.help=Help +commandline.action.help.help= +commandline.action.help.tooltip=Show help ui +commandline.action.quit=Quit +commandline.action.quit.help= +commandline.action.quit.tooltip=Quit application +commandline.action.site=Site +commandline.action.site.help= +commandline.action.site.tooltip=Open in a browser the website of the application +commandline.close_question=Really quit %1$s ? +commandline.confirm.changeLanguage= +commandline.menu.i18n=Language +commandline.no=No +commandline.question=Quit %1$s +commandline.yes=Yes simexplorer.action.advancedSearch=Advanced search simexplorer.action.advancedSearch.help= simexplorer.action.advancedSearch.tooltip=Show advanced search dialog Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-fr_FR.properties =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-fr_FR.properties 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/i18n/simexplorer-is-swing-fr_FR.properties 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,3 +1,26 @@ +commandline.action.about=A propos +commandline.action.about.help= +commandline.action.about.tooltip=Afficher les informations sur l'application +commandline.action.changeLocale.help= +commandline.action.changeLocale.tooltip=Changer la langue de l'application +commandline.action.config=Pr\u00E9f\u00E9rences +commandline.action.config.help= +commandline.action.config.tooltip=Changer la configuration +commandline.action.help=Aide +commandline.action.help.help= +commandline.action.help.tooltip=Voir l'aide +commandline.action.quit=Quitter +commandline.action.quit.help= +commandline.action.quit.tooltip=Quitter l'application +commandline.action.site=Site +commandline.action.site.help= +commandline.action.site.tooltip=Ouvrir dans un navigateur le site de l'application +commandline.close_question=Voulez-vous quitter %1$s ? +commandline.confirm.changeLanguage= +commandline.menu.i18n=Langue +commandline.no=Non +commandline.question=Quitter %1$s +commandline.yes=Oui simexplorer.action.advancedSearch=Recherche avanc\u00E9e simexplorer.action.advancedSearch.help= simexplorer.action.advancedSearch.tooltip=Cliquer pour afficher le recherche avanc\u00E9e Modified: trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/log4j.properties =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/log4j.properties 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-swing/src/main/resources/log4j.properties 2010-01-18 17:20:02 UTC (rev 1585) @@ -6,6 +6,6 @@ log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n # package level -log4j.logger.fr.cemagref.simexplorer.is=INFO -log4j.logger.org.codelutin=INFO +log4j.logger.fr.cemagref.simexplorer.is=DEBUG +log4j.logger.org.nuiton=INFO log4j.logger.jaxx=INFO Property changes on: trunk/simexplorer-is/simexplorer-is-web ___________________________________________________________________ Modified: svn:ignore - target .* + target .* *.iml *.iws *.ipr Modified: trunk/simexplorer-is/simexplorer-is-web/LICENSE.txt =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/LICENSE.txt 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/simexplorer-is-web/LICENSE.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,166 +1,674 @@ - GNU LESSER GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - 0. Additional Definitions. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - 1. Exception to Section 3 of the GNU GPL. + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Conveying Modified Versions. + TERMS AND CONDITIONS - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 0. Definitions. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + "This License" refers to version 3 of the GNU General Public License. - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - 3. Object Code Incorporating Material from Library Header Files. + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + A "covered work" means either the unmodified Program or a work based +on the Program. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 4. Combined Works. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 1. Source Code. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - d) Do one of the following: + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + The Corresponding Source for a work in source code form is that +same work. - 5. Combined Libraries. + 2. Basic Permissions. - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. - 6. Revised Versions of the GNU Lesser General Public License. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Copied: trunk/simexplorer-is/src/site/rst/devel/authorization.jpg (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/authorization.jpg) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/authorization.jpg (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/authorization.jpg 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,654 @@ +ÿØÿàJFIF``ÿÛCÿÛCÿÀ&>"ÿÄ +ÿĵ}!1AQa"q2¡#B±ÁRÑð$3br +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ¢£€¥Š§š©ª²³Žµ¶·ž¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ +ÿĵw!1AQaq"2B¡±Á #3RðbrÑ +$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ¢£€¥Š§š©ª²³Žµ¶·ž¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ?þþ(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢øöý£Ÿ>øãïÀ¿ÙÏösøðâÿŸ/üý£>5ê§Æ¿Ú3Æ³× |'á_ÙëÆ³oŽý>ûÀ¿³í5«ø£Ä(ÕÿiâÖÖãCðŸ¥éÞÕfUœ¹œ³³^þ7ü7þßöÿÅ~Ñ_ý)Ú>#ÊScû0ø)gþŽWüvŸøïñßáì×ðÏTø»ñwTñà'ÄðxOÀŸ*x«RñWÅO^øQðïÃ>øwð£ÂÞ6øâÿx¿â'Œ+á]Fð¯ uFãQÖm¶KdžžæøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èþ +gû.ÿlxGFÖtÚÿÀÿð|@øuð·Ãþ ø¥ÿãÿ|$ð'ü'üwáß?4-wâ?ÄïÙcÂ_ü%ÿ oÄøgÂzf§âÏh?öÆ·§Û\êÿhV þ7ü7þßöÿÅ~Ñ_ý)Ú?ácÁSèÍÿ`üYgíÿÒ¯¿è ?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Úûþøþ7ü7þßöÿÅ~Ñ_ý)Ú?ácÁSèÍÿ`üYgíÿÒ¯¿è ?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)ÚûþŸ@øÅût~ÏÿŸ)Ý|ñtŽ>&éßüñKXðÏÀ¿Øïö¿ýŠÿáð'ÄüBð5ßë?³À¿Þð·ü%> øSñOÑ4Ïjºf±ÿ¯uÖQGs(ÿÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐoGü<³öuÿ¢sûÿâ§à©¿ýôÂÆÿŠÿÑþÀø²ÏÚ+ÿ¥;Gü,oø*oý¿ìÿ,ý¢¿úSŽÃË?g_ú'?·ÿþ*wþ +ÿÐo^ÁðöÂø!ûJx«â~·Æ +'Æß|?ðûÅ7ðwÆ¿ÙöýŒUŠøW⊣ñGøâm?ÃߎÂOú¿|?â]_á?Äm.×Y𜳧[ê>Õloîm.RŠñÿøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvŸÿ¢>ÿ ÿMÿ£7ý?ñeŽWÿJvøXßðTßú3ØÿYûEô§kïú(àøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvŸÿ¢>ÿ ÿMÿ£7ý?ñeŽWÿJvøXßðTßú3ØÿYûEô§kïúüàðücöKñï |3ã¯ø{ößñ§|iáýÅñÿàßðSÏøWÅñm¬x{ÄÞñûÞi÷õÝ"òÏTѵ.òëNÕ4ë«këí§Vè?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7£þYû:ÿÑ9ý¿ÿñS¿ðTßþz?ácÁSèÍÿ`üYgíÿÒ£þ7ü7þßöÿÅ~Ñ_ý)Ú?á峯ýÛÿÿ;ÿMÿè7¯¯þüRð'Ç +>5ü-×á(øeñáÿ~)|:ñ7öf±¢ÂEàOÓ|YáwûÄZ~â +#û_ÃúŸšfkºV¬X}£ìºe{öÑ|ÿþ +ÿFoûâË?h¯þíð±¿à©¿ôfÿ°þ,³öÿéN×ßôPÀð±¿à©¿ôfÿ°þ,³öÿéNÑÿþ +ÿFoûâË?h¯þí}ÿE|ÿþ +ÿFoûâË?h¯þíð±¿à©¿ôfÿ°þ,³öÿéN×ßôPÀð±¿à©¿ôfÿ°þ,³öÿéNÑÿþ +ÿFoûâË?h¯þí}ûB~Ó¿¿eýÀzÏÅ»¿ñt> /Âߟø[ðOãgíã¿xïþOüNBП|ø{ñ7âïØŸü2ñç5=N?ÿcéZ?uKPŽÿGYŸÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvøygìëÿDçöÿÿÅNÿÁSú +èÿ~οôNoÿüTïü7ÿ ÞøXßðTßú3ØÿYûEô§hÿ ÿMÿ£7ý?ñeŽWÿJvºÁCfïüLømðÎÃöð_Ÿ/ø\ðÃhþ5þÁÿ·Oìõá_x«Ã|mñ_VðÎñãÇìãðãáÜ^ áßÃxª×FŸñU®£ªiÞÕFm{s·o·èàøXßðTßú3ØÿYûEô§kØ?cß*ý¥>/į|=ðÿÂßi??i1ðGþ ê?<+Šø«öfý¥~-þÍŸ!Ô<3ñXøyðWñ/üK«ü'ŒñFuª|9ð£o§k6ÖÚR\ÚK4ßO×ÀðM?ù7_ßöÿðV/ýzoí@ÑEQEðÄoùJoìoÿfÿ,ÿÖÿNÑÿ,ÿuøsÿgÿÿÿ׊þÆô|FÿŠþÆÿö`ðRÏýh¯ø$íðRÏù7_?öÿðIßýzoìo@ÑEQEQEW=Œ)sg¢êÞ'ðõÅoÿ²Œ9}µŠËg¯ê+é΢ÜÇrÐê·â3Rìv/=ǧ_Iå쎞1ô5ü~ÎZwÆøIÿ^ýæýÿjÍ3Æÿ±÷ücÄþ(ýŠŒ[âÙ÷âg~ü-±Ó>þÝ>ЯÇúÿŽïü@ðcø¡k:OÄß ÷Ÿ3ø]€Ú^hz_|gáïøËÁººýIØ|PøgªøãWøe¥üDð.¥ñ'ÃöPêZÿÃëè8ÐôëíåÿWðŸ¡&œŠÙOå€Ý^ØAÝ[ºHË<E®h<â}wÄŸð׌#âx2âOxwCñ&«kŸººó~Ímâ]"ÂöãPЮ.<üuK{Y%òeòÕŒ·Çóïû-øÇß¿oß +¿fOü@ñÂ>)ýŽ>)|Tøû@þÃÿ>üJýþ1x×X/Òo<û[xëÀÞðßí_ðãÄÝJþËÃÓ€ø â]º_uojþÐM òø$ìËü<øû%ÜügÖhÏþÔ¿³§Áoߟ.ü5ŸýüwðÛá÷õïÿ`ßüNñÄ_ÛgKð#ü.ý¡t|Bð^ñ_á·/>(kÚ·õœ^ãS···×uiö Ó7Ÿ xÅ××_üoáêZv£ëzáïèÚÕõâ!xÞÕï-4ÛÛ]3]}ùÑïç-51cxl¥[M³®¯Ç¯ø!_ì«áÏÙþ ¡û(i·ßàÇ|ðU÷Çž|Mà+¿|aÖ<ooôiñNOéÖ^9QðòÞKŠh§Žam hvViiaì-QEQEðü³þM×áÏýÿüwÿ^û×ßõðü³þM×áÏýÿüwÿ^ûÐßôQEQEQEðÃùJoíÿfÿÓÿÖÿ±WßõðÃùJoíÿfÿÓÿÖÿ±PßôQ_ÁH<9ûSx£à?ôßÙ'Ä7ö><âÿ5?ø'Ãü5ð_â_ÆOZTZÝÿ~ü#ø¹âÝ_Ñ~|DÖ-à±ñ¯\ÁŠyú/5íøÃjòëúxßôWòùâ_øSöÁø©ÿ,ñ§Ã_¿¶Âÿxâßí×ðYÆŸ5ðñ³JøðàOÆÝÅÞñî²Ú'Œ3âOhþ6ø}â/Üëº}çŽøjËòúòö}zÚOöøùgû>ÿÁSmËÚâ/Âß°í)ñáÁÙóMÔ|)oðiü?ðŸøðÊï@»Ö>#jÿµÄ^ MYuÝ_[ÿ©4ïÞŽøOyáI4]=åþš¯Åßøëâ·?o/ÛgÇ_i_goØËÀß³?Äëo_ÙøB;ïþϺ÷þ&Oñ3YÕ<sâ¿hK¥ÜÞXø?@Ô<;kq®5þ««®œ$^°ÐŸ%ý¿kßÚÃŽ¯ªxĵÅ? ?ÿà¿nÏ¿ÿkŸ#øçâÄ_þ +ZüñŸ áïI&ðoNøá¿úÞšü<ðÅÞ¥^£èîþðÞœá»Ý:Ôú|¢¿¿Ùöñ5ÿÇßø#ø[þ +%ãÚW\ýµ|ñâwíQð¢óÆß <GáífÛö:ñwÅ +>ûHðg<#§ë¿|?á. xÛWÒ4hÛéa©éúŒ?â +Rnþ qñ§þ +;ûOø§ö[ýª<['"ø9ñvûö²ý4üqø]âøORÃÆ÷>ü ø£xGLñ×Âü +øááotc]Ä:¿ %ñnµñ-ŒCâ[[ZÌ÷ãá_Ç_ßüqñ'àÏÅ>Ùêîwãþ1Ð|YáK]cÃkâM2ç_Ñ/ïtÈ/ôäWµå&Ó€F[ŽZߟ+|2øßà/|Tø9ñÁßþxŸÚæóÂ>ðޝx?Ävz Þws¢xDºœÒµ8-µ;í>ylîŠH¯-.maø©ý/|kð3à ÿ`_.·¥éðZxÆ?uÝ-MSÀ)>5×>ÿÁJµ6úû/ZðÏì«àÿ|mðåÌW61k3Ê»\Ü^Å÷ì[âýËþ ßÿöýŸøöðÏÄè?·7<!àÏÙâ¯úfð·àÏí'âÿëÞ<øñCâ<išèÞøwšxçÁö~ðÇn5mWÄz®³4þ ðgŒ!áínÿÃÀÕüÀ|ý¡?kßÛá÷ücÃzí]ñ#àýßíû"þÓ?jOü$Ñ>i7øª|,ðOÀÍ&ïGœ×ü'âxÄÚ¶»¬5÷t?3é¶~ ñ2xkOÐu[ð×€|-ý¢|_ã/Ù§ö|ýüuñöŒøûAxïö¹ÿüø_{ðâgÂO ~*|3ýhÏ¿#ñ'ÆÏ4²ðìVoŸi^ºñ&§ðäØü@ñ·IŒ +xJDÑœüžüý³Ÿ4üiøÿtð7ÇÚÄß<#ûNX~Ûã¯í¡øÃÁñ¿ŒKû(øóÂ_>ËñJ}è¯ñF}wÇ,ñ môOøÂ:Ÿ}ee®ëV÷ûuþÓÿ³ï<-à9øýáÏ_ðZ?ß±ÖûFÁñá'Ãßê_³ïüâÿ|)ð >1Ûø&Çáo õ!ð< üCÓü-öݵ+/ÍaâxOVÓÀ?¬ª+ùÄø¯ÁH|ðgöø+ñ;ã~|Dø×ÿjÔþGñÃþ#ø_ñã±·ÿg?Úâoü/ãoÿ«|WÐ4œÇÆW>ºê~ðwŒO¥xªê}sO׿ ïøMŒà x)üQâß7ü;£øyŒaãíZ-{Æþ(:E'^ñn· +â-TÃöÝcQÂÍ//Šu¶8@:ÚøáÏü¥7öÈÿ³ÿiÿëEÁX«ïúøáÏü¥7öÈÿ³ÿiÿëEÁXšïú(¢ +(¢ +(¢ +øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúøþ ;ÿ(²ÿiÿÙ~Æÿúοhíïø»Âðþ£âÏxÃÞ +ð¶I«xÅzÖáïéqÜÝAclú³«ÜÙéÖIq{umg\ÜIJÝ\Aoie¡¯Êø.'ü¢¿öµÿ±áÇþ®õæ¿ioÚÿÇß?à€³üø³ð×௿à7 ¬t?øßá^>ÿ çñoÙÃÃߎׯþ&xïÅú©á/ zãOxÃëà4Ù_i^)ñ ×õx +m?jh¯ÁoþÝߎ×íã¿Òüñ׿e|ýÿdoÚãXÒŸ#ü/¶ø«®|HñÏíuðÛâÅœ'Ã~&¹»ñSÃÿŸøgÀpøo_¹ðŽ?õïjZÌÖþ.Ñ,<>}ö'ìÙûq~×¶v«û|ð§Ä| +ñ¯Åø%wÃø(wÆÿ)ð¢ËÇßðøÇâŒ!à]'áÏ<®xLÒô/éÚÝÇ|Añåo¯<G©øCðþ³áÙ¯¯5? Jç¯ü]áM+Ä^ð©âiŸ,ñu¶¹yáOßëZmŒOgáì&ñ%׎Kõ-jÛÃÐêºdºäúmµÌZLzïn·æOÁ¿ß·ÇO_±_ì«â +_ö²øyûS|wñGímGìçû"ë?Ž'~$xwö{øûã¿ øÁ>¹ñFœá¿ +|1gmà)<qã_÷×úõÿŒ;á»?h>$ñ.&£óÿj_ÛKÇÿð@~ñÂߎ'Ç?Ù/öæñ/|yªü;Ö<qàÿÜÞx/ö__kø^þ.ÐΣ¬ê-es tOxÑt?]ê±ê:Ä*ŽÐÃúøôá®ø»ÂžðݧŒOáï]øÇÄ0øGºé*ñ]ƪëvþðÜ: ÍŒçgÑŽ-oWEÓëRLѵ[ô¶kM:îXzþe|Cñïã?ÆoöðÇí[ÂÞ/øû-ÿÁŸ"ýõoÞðŽÐ>.i¿bÚ¿ÄŸøŸ:ÏŒ)_h;ÓŽ?hf¹šé6.Ð5ÓŠ=µXÚúì·ÿ +ýž¿hÿñÏ þüC×g_~׎ìÿãÂŽÑþüø!ðÅ_>xwã?ŽCxæãYñÅ{oßü;'ÄÏßxaŒ'ãsÃÓŽýOÁþ"×?¡;kËKÅ¬î® ä¶§uæ,y¶òÄsŹ|È&á¹FE-œÕµä~u¥ÄPï?6ÞhçÌÌrÇŸ&eßÉ"çr:`_ÅÇì9ûAxëö±ý¯Œ5áÙ.µ¿ø)7ÄÛâGìie®JÒè÷?·ÿàŠßÿa[ÿXÚ:ºMe¬øÆ²õ»hyiáüFñÂ6îâ¯ÿàZåÇì¡ÿïðìÝðëöñwÃïIÿÿüø{qáÿÙ÷Xý©Ÿ:ü_ÒþþÒßuEð¿mïgÓ4[û;MJñwŸ(xóMÖü ipÝiÚÌúV§â}Zµþ£è¯çáßüöíøçû?ÿÁ%¡øuâÞ øáûküxýþü_ñ·þëô/öjðwíAöúGÃ'ÆZeÎãISàE¿"ð1ñD>Ÿñlßð ÞjúG îçÔ¬ýsá·íñ¶çàÅÿ?i+öøwÿ +ø¿ûxâ_ÃÙWRø§ñ;ö·øyáèŸ%YÛøöuðéz/¢ðMî¡wâOgâ +ðo5ïx¯OÓ,Š»ÖtpÝú+ùîøGÿý¬>,ü*ýŸÉâo +ø+öý¡ÿo?Ûoö>ñ_Çÿ|&µÓ[ßý5OÚ?TÔ|VnüK{áœã¿ÄüÐ<:ŸŸÕµÏøsÄz¿<C§èV|ÁFÿjÿ?ÿj¿ø§ÄøÇñ_ÀðS¿Ùïþ ùð«âgÃ_L&ÓŒ3ñàWìññ?Qñð·~3ø§€5ÐtÛÆðÖ»ñJïÃ62i:/|ÿ +ÄýÑ_Ïæ±ûiÁDü)û3Þ\j~ ·ðgÅýGþ +5û5þÊÿŸ%þÒ_.>[|Wø!ñûÅß +Žøãï~ñ}Ìœá]wÆÞ0ðF±ÿ±£Ùkñx*Ï_Ñm4)õÉ °ýœøIáßÞøwáüZøeñwâ.kt(ø§xÃá¯gÔ¯n ž³ð6¬xÏöÖVÚipÚGêJ"îæòk«z5|ÿÿYÁ4ÿìÀ?cýg_5÷ý|ÿÿYÁ4ÿìÀ?cýg_4÷ýQ@Q@Q@~Ùòq_ðIßû?ÿÿúë/ø)e}ÿ_~Ùòq_ðIßû?ÿÿúë/ø)e{íñòOÙWöLýŠ?i|7'gøðâ¿Æ+_ +$ÒÛ/îþx[ñ]ŠqySËae©\éQZßê)ͧYKq}äËö->¢¿ +~5|jýŸ?e?ø&_íûlx÷öøGñ«âÝ¿ìóàï~ðW>éŸø?ðûÆ œÐ¯o4ÿj°xËÄ~/ñ·Oñz>yâœJçVŒ[ñÜß×'öýšÿmÏf_Ù'Yñþ§ñã_Ç~ÐÿŽþ,~βmßÁ^ +øY}ðÃz/Â/ ŒQñ.H5M*ÓÅ¿ ºÖþ#øßÄzï£ð +Æo¬øºÛZðÈïsÞñw <mŠIø3Äþñv«®hRêþÖŽÝL[ðα}áïhÒ_éW7v©ªø_Ó5-\ÓÚQw€ë}ö +œí€ðGø³ðûö¯ýº¿h/þÅ¿³·û~ÐßdÏ?µí7«ëß +í|i¬éÓ| ø¯ðçàwŒðçÀ~(ñuÆáÛÞ!ñä<F|C}â_Ÿ +AðŠšÿmk³xNüöý¿kß_³¯ìû"|𶳬üRý©¿à¡?ðV-Çß>|_ºÖ€üý§¿iÿ>4žøKðkÄ>7ÂOøÛÄK€Š |QâÝ7Á~·ñ¯kâÝOG±y@? ++ùû¹ý±ÿॿ¿à? +€ð×þþеíGûX|ñß>8|!Ö ¶¿øQðgàÿÇ¿¿Ÿ>iß Žý»Ã~,ñO>øcâ8øk?×FŒñ^Œ×t_>§øÄÏÚoöìñÇÂ/ ö¡Óüñ[áüKÂÿ°þ0ø7áUŸÆ_é«i·Ú©ãº-t{;$µñDgüa«IáÿÁ£ÛÓâa@ÓÚÏË-ºMÏÄóB²#K +M¿ÉicŒk/'Î IåŸÂv¶0üWâï +xÃú<qâx7ÂÚBA&â_ëZoŒ?¥Çsu³ê:ίsg§Y%ÅíÕµ +ssËuqŒe¥4oÈ]cöo¿ŽüÚoxãá?ÂKï³/üæâóöo·|Q¯xÃâDÿŽg ô÷ñÃïøßÅ_ç>+²°Òþ|)Ð5µTñ7'ðÖ »×Âïó_öýš>:übýà²>6ëŸ ñ ýõÙ/þøûàŒ?³ÿÅ-sÂ_o>xýôÏü3±žþËÓ®Œ?¬ÁšÇ jVúWõ +GÃ×úzë4¥Ä×ÕÚ^ZIs-][=䀳Ú$ñ5Ì1Iþ®I`e9?Ý·ðKÕ¬ÓÜ[Eso-Í]ÛÇ4o=©<ØÄJÆHÑþò/5WÌO7/5ü¡üdø£€þÅÿð\ßß·<M'ŸœÇì×û~ÓZ ÝÌ¿Ø>ðgÇÙ³Røð{â6§nì-m¿þ +h~ QùnÅ«xüæhíä«ÿëñ§þüPÿÂ~Ó_>"Íð3â§íà/ø'gí%â +oÆ|Cñ¯Qø[âOÚRý¡àø1ðkIøEàœKOñ7Äx7ÁŸ#øSðÁŸðÅåî±âfe§éÚí5ðõE6ãþ +7ûdø#ötÿ³jV:ø·ûüqýü!ðOÅßþ?À¯x§ÂÿŽÊ|Õ$Ñþ1|4ðýÅõ® u£Þ"Òô¯èºFqáëZÔ<"ºÕÕïÑý¬?io¿?oµçí=ðN÷Lø3û |ý©ü!ñûKýõÿxgá&¹ñ³ÆŽÃmCÁoðBøâü]ðÆâÞ¿ð.mþ%ø¿R×.<$u=[RÕ4hûyE4ÁR¿jO? ¿à§x®k'ýlaûß~/øãðÿötñ+ßþÜ^.»øSŠÜübøY¥êzUÌ_ŸxŸÚ×ÇRÊŸñ}÷€ÖtmzK=RÂ-U=£âçíµûY~Ã?iß|eøàoÚ«Â?àß¿om"×Eø?eðÇÄ?Ã1xo^Añ§4àKøìuF±Œ³Ñ4íOIÒežÇµ- +]STýó¢¿ß~ÜÿðPà§íoñ7âüc¬øSÀðM¯ÿµwÃÿ¿?fû/þðÇí1àêô ü5£iÿüY'Äþ °ºÒ|]àÛí^ò?Úiñ%¿âwûcLMý_ý/¿i|ðWÄßÚwâgŒã¿Þð_ÄÛ=áéüàß:G| êà +&çQñõï +2ê{¿ë¢ÝkW×W3ZxkÃgØŽ[öÈÿÿNÿÙÿüGÿ×YÁK+ïúøöÈÿÿNÿÙÿüGÿ×YÁK+ïú+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'hÿɺü9ÿ³ÿÿNÿëÓcz>#ÊScû0ø)gþŽWüvœöÂøâ¯ÚSà|5ð/Ä/ü-ñ¶ñögø×àïø³áö£ñSºo¿foÚWá'í%áí?Äßô õøÄº¿Â{?ë6º_Äoê6úv³scª¥Í€PÌôýðü+ø*oýGìÿÓý¢¿úlT¹ÿŠÿÑä~Àø?Ú+ÿŠÅ@Ñ_¹ÿŠÿÑä~Àø?Ú+ÿŠÅGü+ø*oýGìÿÓý¢¿úlT÷ýðü+ø*oýGìÿÓý¢¿úlT¹ÿŠÿÑä~Àø?Ú+ÿŠÅ@Ñ_¹ÿŠÿÑä~Àø?Ú+ÿŠÅGü+ø*oýGìÿÓý¢¿úlT÷ýù!ûMø§þ +qû2þÍ¿Ží#®þÕ°ôOÙóàÅúÇŽø&çígªøJøQà=ÇŠ]ÞÁXM¥®¡«ZhXY\ÝmÍÄrÎJœÃþÏü7þ#öÿÅiþÑ_ý6*ûþøþÏü7þ#öÿÅiþÑ_ý6*?á\ÿÁSèò?`üVíÿÓb ¿è¯?á\ÿÁSèò?`üVíÿÓb£þÏü7þ#öÿÅiþÑ_ý6*ûþøþÏü7þ#öÿÅiþÑ_ý6*?á\ÿÁSèò?`üVíÿÓb ¿ëàø)gü¯Ãû?ÿø$ïþœ7ö7£þÏü7þ#öÿÅiþÑ_ý6*óÿ²¿íõñÆ×áÿ~5þ×ÿ²£ðËÂÿŽìÃñÓÄÚ?ÂߨãGÃÿøþöøWûHhÞÐŒoâÏø)Åoø[þ|)ÒŒ;©ëzï}GÔõ ítoVÚH?Oè¢(¢(¢+à?òßÛ#þÌþ §ÿÿb¯¿ëà³GíOÿ +OãÏÚ_öhý£gÿ ÿðŽ?gÿük௲wÄ_ÚþMÿâ/í5ãÿx§ÂÞ#ðíû2ÿbÿmÃMkÚN·¢jÚ¿äYÒ/ì5{OµÞÙÐßõñOí¯ûxcöãðüãß4ðOü5«_øÿÂ:ÂOØÓâ÷|_¯É +¶¯kºGíû+þÓv:F·àtÖàð¶¯à|šÇ|E·s£èë£òßð®à©¿ôy°þ+Oöÿé±Qÿ +çþ +ÿGûâŽÿh¯þxàG>x/௿moÚ7Å?Ÿêzµðïánœû1ÿÁu_ŸÖ<01xwUðWï?àóhÔŽ8ooô«í +ÂÂæÆÚúúÚÞXàœºX<]ÿ~ðÿþ-è|uûg~Ñ2øãáit +ü`ñGì¿ÿwן%èw>.ÞºÓ<mªÁ-®ŒGguáæVÐ.aÔV}¥Ž¹-Y} +ÿ +çþ +ÿGûâŽÿh¯þð®à©¿ôy°þ+Oöÿé±P#eÿ÷øŠëŸ2ñFÿ,ýŽl<Mñß⬟ +ÿÁ&mußÛøwLEðü2ÕàÿcGšx¢GžžÒtxµ»äÓ4Éæ°²X-exÀ~ÁŸüÖü+â¯ÿµÆ¿ Ÿ.ðÿux£À²Wü»Âßõèí xªÿ@Õ<;ÿµÒµ=1üE¢ÑµÕÓï¬Î©£ÇpæÒ(cêÏøW?ðTßú<Øÿ§ûEôØšÿ sÿMÿ£Èý?ñZŽWÿM?:Ÿ +ÁŸ0øã&ñ³âüÓâÞ/ð|sã_ º§ìÉû +Á9e]SGñÄÏê>ñßþ#ýöløá_^ ×<«êºZ¿|kšéTÕ/ô«;FïÍú#Gÿ:ø[Ãßîÿi-öÆý 4_ÚúóUÔ¯>8é_²ÏüËOøµsªkÚ]æ¯jÒüBµÿZEâŠÕµÝPŸÑuœWûWûCWÑîîtœBææÆg·o£á\ÿÁSèò?`üVíÿÓb£þÏü7þ#öÿÅiþÑ_ý6*á|)ÿæñ÷4 +xÀÿðQïÛÁºíµ?èøÿðîàË=aõk_ +iºGüÎÏöڣÉ#j0iÙÅzÎírb|ÅðFoxßÃÿ|%ãÚçã¯ü)ðZÖŒGð·Ãçì¡ÿlÔŒ;ðë]ñ&¡>âMWÁ:%ßüÂ]3ß"Õ®®5]~mÖ͵RVÔu/µ^baÓëþ)ÿhŽÂÙºoÚ³öžÖþ+üý þ7éþ%þ ¹û@®€é_³ç?fOëí£ÁX~×>¡â¿ÚkB¿Ó.`"ÚÖÛÃŽW@ËyfGžÂ¹ÿŠÿÑä~Àø?Ú+ÿŠÅ@%àø%ü+)|%?ÃÛ§öð-ÇÃû¿7ÞžðìÝÿðýÇ®þ,ßZjfðlú_üêÖo·ö}ß×B{ñDÚ}ë+yö+_+ñ¿üÓ¿ü5¢ø3âíû@xÛÂñ÷~*hñGì³ÿrÖü;£|Lñе¬xÆ4ÝPÿYϧYøËÆ^!ñ¿®x»Ä[&â}_\Ö5rîþïSœ£á\ÿÁSèò?`üVíÿÓb£þÏü7þ#öÿÅiþÑ_ý6*øwâïüoâ»ðóáÁø(/üá]oâe÷Åø;ã7üÃþ 9ñßá&»ãœPu?¿ÂÏþÄÿ4èþ!_Ýíž¹ñµÖ±šê2âHW3¯áßüãÂ|qð7ÅðP_ÚÇ^øÅãOüQøãàÝOàüZøMñâõkMÆ^!áÅ_ØâÜ^Ð/uË+¿øxWÐ<m§éoÎÏL³HŸ·ÿ sÿMÿ£Èý?ñZŽWÿMøW?ðTßú<Øÿ§ûEôØšÁ<ÿÓ>xcÁ> +ø{ûl~Ñþ ðÃOËñKáß|/û1ÿÁtMÀ¿çѵÏñ'Â:nÿ·×Ãß.<?â/hSøÓIÓÄhú汊K©œ§{ÿ«^ѵxWÃ>Ö<YâêúômTñ×-Œ+gâ¯j:^mc}âÏYøÃ>ðM¯<GsºÆ³màïxO°j71x{Ã:¶z]¯Äð®à©¿ôy°þ+Oöÿé±Qÿ +çþ +ÿGûâŽÿh¯þ}ÿ_|9ÿŠþÙö`ðM?ýh¯ø+ð®à©¿ôy°þ+Oöÿé±WAû8þÎ?|ñ÷ã§íûF|tø?ñÆßþþÎ4œ/à§ìçãOÙëŸð¯ìõãOÚsÇV:¡cã¯ÚsöÕüQâjÿŽÖ¹ouuo®x_NÒôïéPÃ¥^ÜÞÞ^(ÛôQEQEQEðüwþQeÿÓÿ³ýÿõ~×ßõùAû=~ÉßðROÙ¯àÀÿÙÏÀ¿¶ÇìA«x'àÁÿ<ªx³þ »ñæûÅZ ~ø/Eð/µ_hÿðTÝHŒñæ¡YÜk7Z^£i×3XéZu³ÅgÕ¶çìéâÏÚ»àœð#Ã$ø?áí#ÆÚÆŸ>ã_¿<+âh·/®Š §èÿ¿i¿Ù;Æþñü%úwõ_[|Oº±Nѵ]óºעÔtoÍðJOÚsöñç>#|Lý€¿c'ñÄ/è~ø·eàoØÿöøøSàÿ^ +ð×Û@ð·Ç|.ÿÒø?ÀÿŽM*ÏQÔ4{k?~ñ2·ï¯<+pÓxfê}"O·¿á\ÿÁSèò?`üVíÿÓb£þÏü7þ#öÿÅiþÑ_ý6*üý³¿à?ðQOÚâŒEgqÿxø4?ü)Ÿñï?f¿Ûöxñ7|§}ueàxþ|5ý¶~-ü6øÓà +Isÿ üñêoÙk÷wöÉá{[Iï/5.Wãüûö÷¿cïñ'üöÓ?d :ÀÿøÃãßì÷ûu~Î?4Þðß |.t]OÅÿ³ÿíÏãù~(é>5ŽðÕ£ãßxOð¿Ãœ_W±¶¹>) +3õóþÏü7þ#öÿÅiþÑ_ý6*?á\ÿÁSèò?`üVíÿÓb Ì/ÿðDÿÚWÁ? gO2þÕ²MЧû6Y|[¶ø{ã?~ɶ·Âhú_Çÿß|Mø¿ðúïÆ¿³ßü¿à+x§á|YcÁÚ4ßKŠhzØÝÙàßãð·ÀßiŽìá/öeÿ °³Ýï¿fOø(ÇŒUðn×ãEþšxÛKø}ãÁmô¯ø{D'Âú.áÝÏ^]ÂÞ¶¹ðÆaaáÝSUÓ/¿Fá\ÿÁSèò?`üVíÿÓb£þÏü7þ#öÿÅiþÑ_ý6*ù7ÃÿðMOÚ«Âþøàã×ìû;|kÔ?hÿ r]~Á¶n§¯ØüwÖŽoú¿ñ[Æ-Ô¿à±×~*ø©ã?Øü\ø/õ_ÏÄ·®5íqoõË-/Q±Íðïü+öÂðoÆ}sã¯?kÙ[ÀŸ,ñWoþ*ø·ÂŸý¿à¢ø)âïúŒb=oâÿgÏÿÁlŽ¿Þ"ñG +¥ßoõ÷kâmV8õÏC©ëGš¯Øð®à©¿ôy°þ+Oöÿé±Qÿ +çþ +ÿGûâŽÿh¯þ|¿áø'7íQá+ ~ñþ §<_~,|YøåðëÄ?ðM?Ú{Åú·ÃÏüeã<kámsÅ¿ðW=oZÒõ/x·â?µI`üiÚTzŽzf e¥éVa§y¿ÿý£5í?Á6p~ѱ/~üjøÓûAx#Å_ +¿d_ø(Ã>ø£ûFkÞ!ñ/Ç]WIøàø-_Œ}c¡|QÕ|U¿<mâ8Œ-¥ÅŠaáû?HÑí¬=÷ö|ñOüãöð¿ãÍö¬ý<=i |pýŠþMa©ÿÁ7?h«Wöeý€Ÿ,~ÍÚî¹¶¿ðVéþ'Öþj%Òm}ŠÏJÕ¬/ »r}ÃþÏü7þ#öÿÅiþÑ_ý6*ø£á7ü«öø ~/Ãß°Ÿmðâ÷ÅÿŽëÿØöåñ&ð·âÇx»Àßn|£øþ7«izw|O xÿÇ|öøC×|Y®x¯ÃÞÒ|S|úȧã_ø$ßí!ã«käÔ?h_Ø£ÃúÅçíâÚÎü>ý¿oôÚÇñü!ñ#À?ðZoxçÁây×</áMGðeöqsi'qq+7Üð®à©¿ôy°þ+Oöÿé±Qÿ +çþ +ÿGûâŽÿh¯þ~[|Pÿ@þØwìùâ_ Œoÿ×ø«£kᡬŒñ§à'üsáŸáOÚßͯüRøuñAÿ¥|sø¥ð«ÆŸ§šjº¶³/ÃÝ3DÿWño5oQ7þ#×Y³ðþïû^ø+öyøãðKâÆø'áOÚâ®ñ³â¿Áýö'ý«Œ{à¯xûÂøKà_ËðâÕ·üàGÅ4»ÑÿáIø3âE¯Ä]cM²ø¶¿õxÖÝê³Ø^Zþ ¹ÿŠÿÑä~Àø?Ú+ÿŠÅGü+ø*oýGìÿÓý¢¿úlTò>ÿÚýŽ4ßè^ÖÿlOÙâ^᯿ +ÿh +÷ãWìÑÿø×â};âÇÂ=sEñ'ÿÚx»â§üÛÅŸ%¶Ó|7ø{HÔSÁvÚ€>Õ.-ç[ðΊښoeü'mâ«? +øfÏÇZÏüGãk_èÖÞ1ñü3šø/ºï Ó¢ñ³ák,ñî¯á?êºÞ_hÞÕ<uãMGBÓ§¶ÒïŒYâ;YuÏ?á\ÿÁSèò?`üVíÿÓb£þÏü7þ#öÿÅiþÑ_ý6*ûþŸÿNÿÊ,¿àö`±¿þ³¯Ã?á\ÿÁSèò?`üVíÿÓb¯ ?dïðËÿ²ÇìÓû4ÂSÿ Çü3¿ìÿðoà_ü&¿ØðÿÂaÿ +á×<ÿ Oü#Úþ ÿþøGÿµ¿±?·µ¿ì¯µýû_Rû?Û&÷ú(¢ +(¢ +(¢>ý²?äâ¿à¿öÿÿõÖ_ðRÊú¯ãoŒuãß ^4ð_Ã}sáo|Yâ.=ßRø×ðZøçðµômBúÒßźOŸxâ§ÁMSÆZo<"úæ_<9mg©ÚjºzöawáœcÅ?koÙëâǯٯÅß>-ü?ø?ñ7ögý 5Ö>)|ñÇ_xûoöqý¡¿fýgÂÚï<'ñ¿ö|ñ~gÿh=WÄZf·§üE·û±áÍ>#T²œ¹/?ÿ sÿMÿ£Èý?ñZŽWÿM??4ø#Çí áïß?g»Ú[öSÕŸ|Gðm·Ã[à÷ÿg/ø)_ŸxoÀVz¥µkáñOüWÓ~èÚ ößáðÛXÛZèvòÅ YÙéVþéûC~Á¶÷íBâÇíSûü,×5|0øðçöýŽþ|Wøu«ëZ[èüŸøðþà^²ñ.ãKñFaâ8ô/ØÃimâ +7RÊÍ`ú?þÏü7þ#öÿÅiþÑ_ý6*?á\ÿÁSèò?`üVíÿÓb ~$Á+jï?Áœ;Æÿµì·¬ü²ñNðËâfû6ÿÁH|5ñËKÐüvÖ-ãßk|5ÿœÒ~4ø×ß::^<_¡x×Ç Òü@ºn5Y¿³¬~ÏoÿøõŠüðWìÏáÏÿ°?þ|1øâ_ÿ +¬< û~Ü> ñŸ-ñ'<Y®xçágÅOÁfô¿_5©õøÊ;aáé~âCÂVÞhK÷_ü+ø*oýGìÿÓý¢¿úlT¹ÿŠÿÑä~Àø?Ú+ÿŠÅ@0h?ðO_Û_Cœø¬\þÖ²üKû2xÃÇÞ?ø3ã²íññ_ÆŸñÅxÃá¯õ[ÅßÿàŽŸ(×ülº·ü{â¯Yé^9¿ñáË=JðŸ¢Üi:,Úw!ãø%í3ñá÷į~!øùûGᯎ$?µîôØsöÞð¯,ÿhû]OÃzÎñÀÿ<7ÿÒüsðËÅÚV§á-ëIáÏ|-§écÞÊÂ]OVûìïøW?ðTßú<Øÿ§ûEôØšÿ sÿMÿ£Èý?ñZŽWÿM>;øÿÁý©~*èŒ=ñöý |Síàþ-êÚ§ì;ûnËâ迳v«xàv§ÇüY|Cáÿ|;ñ6µâœ'â'u-Çw~*ûõjzÆŠ^Yùä?ðG/ßÙ¿ôWöýüYgûHxOáÿ>=7fø(×õ6¿µµÏkŸ3ÖüSÿºÕµÍKÆþÚÓLŽñÒj0x·þk+I«¿ltH¿Aÿá\ÿÁSèò?`üVíÿÓb¯ý üSÿ8ý< xóXý«?aÚkÿ?fOØiðMÏÚÖæßUýŠ¿i/ÿ³v ®I-×üÄÚ5¿úukeiŒÒŽÛK2.çCÇðNÚ§ââ_Æø&§Ä+_ÚZ_ üqÑŒoÿÓý§üUá¯ÍðMmGÂé/ü-®Á\ïŒ7Š?^ÊÎæÍŽ ++I7¶¶÷ú§ÛïauÁø©ÿÈý©>4KñâëâÇÏØUÔi[/öµ7öýŽü1¬ëþÍzåÿŸkÕ<1ÿÑï~xá5{ß)øo7üCý®wÚ¥}>`Öß^ÿ¹ÿŠÿÑä~Àø?Ú+ÿŠÅGü+ø*oýGìÿÓý¢¿úlTðÿý¡Žk/{þÒ²í¿hð¢ããSxãö[ÿxòÿâV»ðOÄzo~xÃÅ:Ï?à¶ÚÖµ}ã}RÑ4YŒ\ºZö¯áÝGð¯{}á]> +}3ãü_öªøùšükÕþ,üvÿ|ø·Tý¡Ÿxà7Żɿ࿶þ$øcðÇÅ0ñßÃÝÆ +þ§ÚxSWðüwâoh3ð Ÿã[mbîÆìøFÐŽŠýaÿ +çþ +ÿGûâŽÿh¯þð®à©¿ôy°þ+Oöÿé±PçÿÁ$¿jÏ é¿5o|vý>-x»öø!iðGâöûC~Ì?ðP¿ŸøùáO6/ŽßÏÄø,'Æ;OWÐS[ÕŽ=â]Ç<Mã¯ø_S»ðÿ&BXtuñÿØßþ û{|ø ã%øÿÄøQâÏ|ÔÿfÝsáÇÿf?Û7ö·øuã Ú×íŒUjÞ<ñÇßÛ¯áÅMwÅZ¯Ø4K€xYñw4ïhv¢Xi©&£ößÖÏøW?ðTßú<Øÿ§ûEôØšÿ sÿMÿ£Èý?ñZŽWÿM>ðüö©øuð÷â7Âö³ýu_þx£àNœð£Æ³×ü³âÃ]ᎧÐõÿ|7ðGàž!ðïÂ.]FÑôËÏ u¿èâ-Ê¥[ZÙÃúÅû4|<ø¿ð§á^ðûã~ü@Ô<'öø"ûà§Áü+¡|8ÐŒ9 èðŸ¡á¿Žoí?â}{Ä\úv©5׿øg©§^éVxnßPÒoõÏxü+ø*oýGìÿÓý¢¿úlT¹ÿŠÿÑä~Àø?Ú+ÿŠÅ@íÿ'ÿÿ³ÿøÿ®²ÿWßõùÁì¿ûhx÷ãìœñ+öý©¿fx'öcøÁâïz_> +~ÅŸø«Å*ñìÕû@þͶ:~¡ñÇ_·§í€iÓ4Ú\ñEÕ¿ÃGTÔt +*ÂWJ¶òfý ŸÿiÿɺüFÿ³ÿÿ±ëÓlûþŸÿiÿɺüFÿ³ÿÿ±ëÓlûþ( ( >#ÊScû0ø)gþŽWüvŸÿ¯>#ÊScû0ø)gþŽWüvŸÿ ( ( ( +àÛ£Äá-ýŸ|$øëñöwÿý¯üEð·âÄ/ Ÿø'âoÿ áØwöÑøý ¡Cñûá'ÆßúgöÄ^SÔäðÞ±ýišiºn¡Šÿi\\Pž~Øÿ5_ÚköCýªfí\Óü1þгÇ7uk{Í+ÃÚ¯Å>(ð®jvd]ÝiúMÞ¿ +ý휩3Û[ÉJË_G×çû~Ð:Ö©è×ðVoø(|6¶{Š]M€ø?þ j±[_ÛIk<f»¡Á84íoEÔ#Vk-[FÔ,5]:äGy§ÞÚÝÃñèÃþÑ_ô/Ûÿÿ +ÏüËÿ¥§@Ñ_ Á=Ÿ)xïãìû|kø¥®ÿÂQñ7ãìû4üRøâoìÍDÿÇ>ø+Å.×±Œ;§éÒ?µüA«êöf ¥i=Ú>ËŠiöVQAm×ôQEQEp:Åo Ú/gðf³ñ'À:O-tû]^ëÂ|;aâ[m*úò×N²ÔçЮµµHtûÍBúÊÆÖöKU¶žŒŒµµWâpúãõ/^ÑŒ[¡øWñÇô¯øÒæÿÃ^ +ÔŒM¢Øø·Ä66~qŒœÐü7u{±«ZZyÍÍÍ Ä0yy®Ÿ[íù§Ç·ìÏáþן!Ò~!é_<CûxGâ~<ü6ðeÝÞ>Ñføoð¶Ûâþ¹áÍ3MÖîŽM?VÖÂZqmª +ÇZÔ¢Ñ5gKÔu+{ ±š¯ÉÿÁLþ xOöLøïû_ø×öý£Ÿü3øAû5ëŽ5_d§Óþ+éZniâM3Âü)Úã·</ë%ßö€wÞ.ð&¥iö¶÷^κ·ÙŽ»Ó?xÿÀÕŒ5 x«ÆŸðλã;çÒü¢øÄ6«x¯SÊó4ï +iÚíµæ»||;í4žn®ÎtcÌLuŽWâ_?ü#ÅãŸð±ê:ñxÅÞЀM_ÄßjÿoKtÕ5V]GÄaœþñ \êßcºûWgeíÇŸñ|Má/xÓÂz÷ü%^2ðÎâ=Tñ¥ÔÒi4ØüM¢ØÞO©h2jÛÜIbµ£]€=žbr eÅè~øø€xoÇÞñð5ÜúâU>¿µi®lŒR,/îîíâ·ž{m[ìC<««cñ[áv©«kZñ'À:¹á¯Yx»Äz5|;w«hÔíVûMñ>µ§[ê2^i^Ô,/,µ«è`Óní]n ¹@;ê+â{ÏÛûöpÖ?gMöø;ãm3㯠Œ{âøá&àØcñÄ¿¿ŒOþøO°×ÆuáÝGÄ^$¹Ayâ«]&ÃÃ>ŽÖ|i¯IgáRÔa¿ñ7öÌð÷¿ڿöpý5ï?çÔÿiÍsÆð/Æ;];ÀÑüŽ×üðcâ_Ç +o@ÔuÏÛøþçYO|2Ô Q£ü=ÔtH/õ=:ÝzÖFxšì+âÚ¯öŒñÏìÁkâÿEû#|pøÁðáoÃ[Ï?~-øÄßô#Ã>Ñã×µYøgÂ<øáOxóÅ^ðçnüU¯èÚ_ltù4Ý*ÏÃÚæ¿â[©ü?ièúwíMðóRøð3ÀÇ~4?Úká^¡ñ3à'ÄFòcðÇÄJ³ñn¿àHíî +_Gñ_u}/â6§jKÿ / tÿ\Ú&ðµ}/EPEPEùAá? þÒ?ާí#û}YÙþß_ŽÿÀüý§üðSá·Ãoý ¯Œ+ŠøVÿöýþ<jÚ¡«|xýþ8üDÕŒA«|Døãã«ë««ïI§[éÒiZ^¥iÖÚp}¡â®¿û^|ý€a×4û}áGìßûTüÔ<5%œËjº¶«ûAüNý<y£kWj~ÉáëOÙ]°ÔíçæêçÄúL¶€Egy£ëóÂOØöU²Ö[þ +Íÿv~§ŠA~ÿcÃ¥Im«\é7WR^èPÿÁ8#Ñ5B)t[5Ó5mCOºÕt[iµk=öÂÓ_×`Ô|¿Åý€f¿ÚGö³ŒýŸ¿iÿÞ øýûOøÿà§ÄßüûXøWRðì-ûf|xÒu +?Vøûüø€øIøð;À·Ö·V>:NžÓ£ÕtœSJÔmµ!ý_¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(çÙ[à«û>|1ñGõsOñ +Þ¿ûH~Øÿá¿Ó-îmmô¯ÚköŒøãûHèZ]+jÑ>+éþÕ®ýóUÒonìÀŽ>¯?`¿øËâWÀÿøÇ~!Ô<Oéß¶üÀ:ŠñÉsmàß ðPÿÚáoÃFÑÇ?Â?|á +i(TÉ¢ÙG,ʯ+ý@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|áûTüÕh?>ð®iþ»Ð?iØãã|×úœÍÕµÆû2þ׿iwC+R%]CÄú'ÂCÃZMãY꺵Ýà6NÑõñíéãÿ|5øàoxÄ:5œGöÏÿoøûRÓ8în|ñ_þ +û.|-øáéHäS§ø»áï|QáMY$Òµ«Øâ)Y%@³è¢(¢(¢(¢(¢+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'kïúøâ7ü¥7ö7ÿ³ÿëEÁ'kïú(¢(¢(¢+àÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúü!ÿdÿÁ>~xÓþ ·ÿùñ±ãïÛ~ÏWñgìAû(xT³ðüÛþ +Ià/ +Úê:ïÀoêÖÞð/jÿx'Á~æêXŽo ø;ÃÚ |9§-¶áíKÒ,ìì`ûþ§û:ÿÑFý¿ÿñl_ðTßþûþøþ§û:ÿÑFý¿ÿñl_ðTßþ?áÚ³¯ýoÛÿÿÅÿMÿèÈ ¿ëø»ý¬<¬|5ý?l??ÿb¯'ý§<SÿUð§ÆœöÆÕŸxSøc|;øûy|3ðÇûû¶òuVø9yàïÙïJø;àËßx`ÛÂ5yá=3ÁVÚŠ«ký"ÿÃŽÿg_ú(ß·ÿþ-þ +ÿÑ^Uâø"ïì +âÙôë¯è?µW®ti4ÿÁGÿà£úÔúgÄýí/ôoútÚícs%4èãœÓ<_lÑxÂî4žµÔbÀåWÅßÙÆú¯íÓû`éߎg¿hOCñköºýþ>þÍß>þÀ7ý§¿á"ø}ðÃÿõ?Þðí'ðãáÿõ/ÙçPøMñ#á÷ŽøKÄ×^Ò"еíÇ©uhþ=ñnŠŸã_±økÅÿðqoŽÿÙoÆpüfý€>|[øû8øï¿³õm7â÷Œqû|5øu⯠+|=øËá_xkQñîœû@èÞ"÷Ááâ»o^+ñ^¥'m<'®»í^?Ö/øvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"?ŒAa£xÏþ +ûk~Í?~ÿÁR|gñïÅðNmWM»ðí;û>ÿÁBÎÞ1ð§ÃŒ%/>^~Ñ¿ +tß7µOøÁ,Ÿü)¿¹×Œ]€hÐ_éÚ.§¢x1îŽÅÿ ~Ì8øûjþÙV_ŽŸ>xOà?í-ðà?gÏ_ÿaþÚú§ ¬| ¥ø©<iðïÂ*øeà¯>=ý>*øâŸ¥wñÂÚŒ:?ŽoÜxG×l|Kw¯x!¬4ïÙøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"?'iÿØ||_ø§ÿÌøãÙ«]øÏâœ[þ ©ðcÀ_²ï|aðVñUß~"§ìéûLÛxŠÓà¥þ{Šê¿Ç-ŸÛjÉà+;èºåïô`öRêVvwVtدâ>2|<öXø9ª|ñç¿àµOÃKïö>Ö|#amûgøÓÇß²þ±ðîçã/ÄÒãž¿øÖÞ/»ñ÷%ºñÞ±}ñö[>$ÝM®ëõgþ§û:ÿÑFý¿ÿñl_ðTßþ?áÚ³¯ýoÛÿÿÅÿMÿèÈ Ã¿Ùöfž¶øCñSS°öÐ>>øSþ 3ñ³ö`ñ7ìÓ«Á:Œwû7øJ-]ô ÉŠøoSøÃ¥xßáíñKAñŠšY|+ÔŒã¿ëÞ3Ð<iã¿hSßiúŸµ1÷ÿÙöÐ> +|Xÿ*]ø3öUÁ7_°?í5áÛ/ÄCá6§ö§ãüýnÏÿj_ê:,§¯øÆºwaÓü7ñsRîãVÒ5Í/K°S£\ÙÚ~¢ÿÃŽÿg_ú(ß·ÿþ-þ +ÿÑGü;Oöuÿ¢ûÿâØ¿à©¿ýøûü0¶ø!ûÁ..ŒCðCÅ?ŒAû~ÞÓÿn-Æ?<OðŠÔŒMàÚSöjð¯Å=CÄúÏ tã<+ãO¿ +|gÅ +ë>5ðNà¶žñ¡âm*ßÃÓ?Aà¡lü+û{Á/µÏøUµ_<9û:|cøùñ+ã'þ~ŵ÷Çoø?ÁÿÿbïÚáoþ +üñ÷|Eªj?Œ[áÍûÂþÕuÏøyuX5èºNêq}EÁ.¿eßèú·ŒCãÛ·^Ð5í6ÿE×4=kþ +§ÿCÕ4}gGÕ-e±Ôô[LŸý°ç²ÔtÝFÊyìïì/ ÖîÖimî")ü;Oöuÿ¢ûÿâØ¿à©¿ýñ7ükãæœñãéý þ%|ýŽôØRøQmâßÚKâÿìõû~Õ¿gý£$ñ6ŠÖ²gŒsû>ü(øià?j^·Ô5ÚÅnÓ|c«x{PÓŸx:çAmsÅ"²ú'ö°±øñÓþ 1ðëá6yáëïþÐ:¿íQw€ÉáÝSÁº§ÃoÙËáìñÃáV²Ú×õ-#[ðrk,øûð¯áð³ŠéW¶×>-¿°œÓxwWµŽõøvìëÿEöÿÿűÁSú2+2?ø%Ïì¹³wâ(ŒaûvEâý3OÑoµØÿàªðT4Öotm"ëSŸÒŽœMl1{sŠiºÞ³y§ØM;ÚÙ]júÅŽQMtò~Q_ÃŽÿg_ú(ß·ÿþ-þ +ÿÑGü;Oöuÿ¢ûÿâØ¿à©¿ý÷ýðü;Oöuÿ¢ûÿâØ¿à©¿ýÃŽÿg_ú(ß·ÿþ-þ +ÿÑ@?kø(c¯³×ÿ|I©ü&ø»ðÏöøñ;ã®xWìåá>3ýü +6øáDÓßQáV£âÚGÃÖ~3ñþšÊ>ZZÅâ¯hmàŒ]âÿ;ö*œ³ÔŸ?ÁUõ:î×PÓõÛÛáí ýÄWVw¶w_ðJßø&ö·vP<\ÚÜÁ"MÄ.ñM€»#~ +øíû.|\ý?mÿÙ²ØÀŸ.k?d?Ûàwþ(þÕ¿Ž¿ícûWüýeñÅߨÄÚ'ü|ÿާÆM¶ÃøÚGÂ/7þñ?Çßéðÿn,|áSÇœËþ û6øOöBðPßÙ¿ÀúïŒMá ¶ÿÃýÃ^ñuåœÎ³©MšÁ2?àŸ Õ'[[{ú(Õõ{øŒ1àiº?üáôx'CÐü%áýH²ý¯?lù8¯ø$ïýÿÄýuü²Ÿÿ¯?lù8¯ø$ïýÿÄýuü²>ÿ¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(ÇþÂÿ/Zÿ ÿÿü!ðž?h_íÏøFŒÿìïø\¿ð¿~%ÿÃF}§í?Œÿþþü%qÿ WöÏÙÑ|ö +øÃöðŸüñÏ|wáíCÃÞ£ûgÿÁH<cŠêiw7> +ø¯ÿýšþ)|9ñk)Óü]ð÷Æ>ñ^åiZÕǬñ'ÙôQEQEQEQEQEQEQEQEQEQEQEWüqÿ 5ÿ^ÿÛþÿøB?áp~Ï_ØðùÿÙßð¹á~ü4ÿsû7Ù¿yÿ ü4'ü+øD÷~ãþ¯ìoµ¢ùÕìñíéà|JøàoøÃÚõœ;öÏÿoøþûMÓ9.mŒð£þ +û.|RøâI#Q§øGáïŒQâœYÃ#ÒŽ[Ù"YU"p³è¢(¢(¢(¢(¢+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'kïúøâ7ü¥7ö7ÿ³ÿëEÁ'kïú(¢(¢(¢+àÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúøþ ;ÿ(²ÿiÿÙ~Æÿúοkïú(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+àØßþN+þ +Åÿgÿðãÿ]eÿÓ¯¿ëàØßþN+þ +Åÿgÿðãÿ]eÿÓ ¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢(¢(¢(¢(¢(¢(¢ŸCøÙûk|&ø#ñWDø!yáïŸ,jn>0jþø#ð¿Ä¿ŒE௟%Áíñ/Æ`{÷Ä¿mÒ<?¥i««xÏÅ÷'âðw µöðîŽ,@>Œ¢¿<,ÿà§?³gþþÎÿŸéÿ>1IûSøGÅßþ|5ø]ð¯Ä"ø±â?а¶ñïõÜfKá¯øFóYðöª^xûMë[ñ/<=¢ÚêÚþ³cŠMÃêðU_wŽìmðwá§Ã/<ûiþÏ~%ý¢~üiøsàêþÒŒ)€xá·4è5 ޵KQ|CUøsªO¢Ýü&ŽBÅH¹ñM€v@šôWãÁ?_·ÿí÷ų¯ÆÙßö^ý<1ñÃãÁ¿V5ýŒ]ûCx÷ã]À¿k |]ñ[ÇâþÐô øCÄ_|âë? x+ÂÚü$vúWÚ×F¡8ÓàûÖ/Úáï ¯þ8xâïâ_ì¡û?|2øóûDOáëÚ í|1ñHø³scø.Òþÿ\Œº·Ô®þüKÓÃ#[ÖõÎÏIŽÔuëB«©è¯ÏÁO?foøö{ð>gñâÿj_ZíðOÀŸøßÇ(ñGÂÍz÷ÃVçÄWöz&5¯ -Ž+/Xë~&¹ñeî§hzUœÑ»¿éú}úéÿðTÙ[Pñ7í£ïÖ^ýã¯í#ñRøOãkÿµÒÈ<gá|OL¿ñö0ɬè>ð̺÷u=M3Rm.Öøhë¡ÔWçðS?ÙÒÏá¿íñ#ÇÚ7ÆÑþËôo¿üñká7Œñ"×àìü[uáOŸð¿kžñŒG/Œm€ÚÛØ\6œ¥kþÕŽhÚ¯vspúoüöyñ>ñŸoøöԵ߿³Ÿ·ûRxCAñ?ÁøOÚà¶š>sñàl$ÑáÔ<]àØ5éô+;Ý}ô{%Lñ>â]6ËVÐ/âŸ`ÔJ+ñçÀðS|mÕ¿àŸ!ð/Âsá¿oß|EÓ>#xkâÿŒCcâíCðÿì5ñ+ö ðõßÃ-j[Øëºþ-ðÞ€ÚøþOj<7°úN¥ÜÜÁyc÷?íûZü3ý|IðÛáþ·£|Eøñcãñ]ÏÃŒšx÷â't?Zi9ñcéÖÒØé>ðo\ðý®·â¯ëz¯â/è6·Zé·@²·ÆýWöøcâk:áëœöý±þCaŠ\\Ý[\i_³/íyñÇönеÉ%ºUÔ<O¢|(ÓüK«[¯ú5««^ÚYiý_ß¿koÙKözý|sà/üUø¿{ûHþÖ?¶v¥ðçá7þë/ûAj_~&~Ñ¿Ží/ñßàî£ð®î-Rð~«û=k>!ñï<oqãŒ9eáÍ?ÁÖÓkÚ€z±¥Ç©úÎÿAýuþ/ø±i/Å£ðí+cûËðÛTø?ãã7?iœKNð®§gð{Ã5+Oñ.«âG¶ñuÓݵœ¯¬4í?Ä!Ô5«Oè:¹è ùé£ÁN¿fßþÑŸ+ñø·ðÚçöR¿øc üiðGįÞ8ð·ÄMÆ?¡°ÿ ]àox>]2çRñç<y©jú&áiŸ*Ö5í/ +êzµŠe{6ÁHÿfý/á/ÆÞ7O? +n~øïÁ?Ÿ%|%ñÇÃ/YünÓ~$üS_>ПhÐë5¯¯ñÁÿäðeÆ¿¥k×Ù²mJÒïEñ8ß4Wå/ì©ûnx×ãÿíãûe|&ÖŽo +>üýdéþ2ü2_^5ðoŸ&x«ö¶ø«jzì<Káý_ÿ<wŠêúG|KàËDŽŸLÔ ÕÄvvÞaÿÈÿ|Ký³>6ü}øoñÀ>øu ëÞÐÿjÏØJóGŽÖ¬µ°ü}ã ÞøâÄÕ5-JÖOŠ·àÅèÑÿ³ôÛO|_økÚææpÚ+óÂ?ðSO_ô¯^)ø5ð³öøµð×áæñWR²ø×á/¿5_ÏšÙx³Ãßüu}³øæw×tOú¿áíÿÂ^%ÕôÝFßÃZþ°mgáüGáÄÙCölýŠ<Gð³ã§|AûRÅà +/áÀðãÄ~$ø¯ñ/Æ~5øG€üe»Óþé°éºOü,Oþð æµ«]|d6þø{ýá]o_Õ5-Ò~ Q_ÚÏüöJðÇÁ-Gã¯ußø_AðßÇí7ö[ñßu?3¹ø¹ð÷ãþ¯uemŠü0ñWÂýLÕŒX|GªGªè:áðõ¿oâý#ÄÞÕŒ?l<I¢Ï{ ÿjÏþÑ_Ž'Ÿ ü#Ò<Wð[JÐfIh?>IŠ|Vð×Åß|EøIû8x÷áîœy𮩚kß +þ)|\ñk¢MKû'á×ü:täÓ|{«Þi £WÈß±'í¯~Òá(ñÖ€ø{âßÃgßÖí|5gñàÄü*ñæ¡á5¿¹ŸœÁ,Õ<2<màš/5Nú×Â^%Ñm5 +Júþ«>¹ ( ( ( ( ( ( Ÿpýª~7꿳çÃøóFÐôÿÝëÿŽìqðBk +NâæÖÚßJýŠ¿kÏß³v»®G-š2¶¡á⟡â]&ݿѯ5]&ÊÒðIç#âÿÚÇözøûJÁI?bþÑŸü~ðNûÁH|Y¥ø;ã_ÃOüTð®â«?ðK-ÇÄÚŒu¢ëÚE,ô{\Òíu{8õ};YÕla¹KmFò)œþ;ÿ²ÿ€iþÀøÿ³¯ÿ;ûþü!ÿÁ2à~ÿmÿÁAŒuà_ø'ÏìAà¿x/ö ý«üYàïøOöPø +áÏxOÅ^ø +ãícÃÞ&ðÏtÙêú4-^ÎÏTѵ.ò×QÒõ[kë.`UýÞ ( ( ( ( ŸÿiÿɺüFÿ³ÿÿ±ëÓlûþŸÿiÿɺüFÿ³ÿÿ±ëÓlûþ( ( >#ÊScû0ø)gþŽWüvŸÿ¯>#ÊScû0ø)gþŽWüvŸÿ ( ( ( Ÿý²?äâ¿à¿öÿÿõÖ_ðRÊûþŸý²?äâ¿à¿öÿÿõÖ_ðRÊûþ( ?à¿ò/ø&ýìoÿ¬ëðæŸÿ¯?à¿ò/ø&ýìoÿ¬ëðæŸÿ ( ( ( ( ( ( ( ( ( ( Ÿýÿäâ¿à¬_öÿ?õÖ_ðM:ûþŸýÿäâ¿à¬_öÿ?õÖ_ðM:ûþ¿0?à£_>|øÿºø¥ñ¯â_ÃÿÿŒ/ûøÏþo¿ŒeáÏþðïößü+þ +9áÝûwÅÞ,ÔŽéÚþ ÕôLþÐÔ-þ߬jz~kæÞÞÛA/éý|ûdÉÅÁ'ìÿþ#ÿ묿à¥ÃØ¿à_ôÏØÿ#öuÿçGü=þ eÿI,ý?ñ2?g_þxÕ÷ýðü=þ eÿI,ý?ñ2?g_þxÔÃØ¿à_ôÏØÿ#öuÿç_Ñ@ÃØ¿à_ôÏØÿ#öuÿçGü=þ eÿI,ý?ñ2?g_þxÕ÷ýðü=þ eÿI,ý?ñ2?g_þxÔÃØ¿à_ôÏØÿ#öuÿç_Ñ@ÃØ¿à_ôÏØÿ#öuÿçGü=þ eÿI,ý?ñ2?g_þxÕ÷ýðü=þ eÿI,ý?ñ2?g_þxÔÃØ¿à_ôÏØÿ#öuÿç_Ñ@ÃØ¿à_ôÏØÿ#öuÿç_ߎ§íïû'|,ýžŒaûc~ÊðTÏø%ò|RýŒðoã Ÿ-|m?_Ã:gÁ|Bñ>&|#ÿ ¯x>"øÙmŸ$x«EÔþÞjÞÕ<UöjzOíd»wõEß³í÷ì7þÊ_ðJ¿:·íÿÄñ·Å¿_²Ÿ|eý¿iø(fénŒ-ñÅÞø¯£j6Þ9øk}ã¿|;ø¹ðË^ðüVzÿ|Oà-cDÖ,üA¯øRëz©Ò+Ú7öømñ£þ ÁñàwíÿmðfO¿ÿgß³Æÿ'øxŸð_ÃÚÅŒKyâßîü/.ñ\ø}}ðíKáxá·]ž¶>$ð%éþè åàÇíËðïöãÁ¿Ùöåÿ.þÒ³~4|[øËð üWÿ¥|;ý~"~Ïó|qñгñCÆß +<]Šh>:èÿ>è|[âgÂ"ÑõïøÇûPHÖt»ÊþŽWíIðÄÿjÿüÿÿÁ§öèý þ~ÌߌOñ'þ + àÝoߟÙþÓ|àéþ,â×|Wí4D^#øðÓUðÍÏRÔ<KüIµê¶þkf¯ß°WÁ¿ÚöDø±âø*güòÿÃßàGì7ã=öÞø3uê_,<mð/ijøÃ6ú³¥ØÞ|;{:ìQêÚŠ¥£x®îŽt $3ÞO§ó!ñ×ükâgìSÿýŸ ÁXÿà +Ïíñûöªø³à_øOöËø®Ûø2Ããàñ·Âë¯éú¯<;-Þ«áÝcMÒ'ñŽÉ®tû«h.ôÍ+Ä×á5¿§(øûÔ|[ûøãö=ý¹>ÃûIÁgŽì¡®~ÏZ?ÅÏðVxŸ2i9×olŒIŸ/³øàmÄ_ŸØkåÏtÍ#DÔþ(ë¶7:Ö«i=µÔ©kjüKý¡ÿàß¿køÄßðUOø&ðãRÿgügý5(ãý³Ÿ^øÒÃÇ¿>$ü8ñM4ýø¶ÓB¿ð~¡xOW[©gñ^¬Ÿªúm:+YÜ\êV?Ñ}üh?Ž<1ðwþ .Ú_íõÿ:Õ~6Á1õM{·õø*¯ô ÿŸÃûxÏöLÐ<m¥xçLø'â¯x+Å:¬Ÿ0ê>Ÿøw¯éºDbipøóSPiŽÿvñOíÙð«Rý¡~þݶ·ü=h?~;~Ì?gø+¯>x»àÇÅü#øá¿x?ãÖ£ðGMñ/ þ%ø[Ç +F¹áÍKà§ øÂÚÅ0Óïìmdú{¢??¿f¿xkàWíkáÿø)ü#Á¿¶÷?à£ðV>3øIñgö °ÔŸø³Bý©~6|Vøsâ8ü;ã? ß^ø{à_ß~)|ø£âÛé9ðö©€ÀÖÖÖ^>ÒQðOöýŒmðâ_Ç-Wþ +Yÿæð_íCàø-ÄoÛGàÕ§ÄOvÞøOñJÅþh¿³'t[Àqx£ÄŸü$ñfšüIáïÅmgÃzÕÜ:~àÏ7w:^¿$rcÿŸ$|8ø«àœkÄÿ +ìþÁá/ãíðßTû/ïøðoãïÄ¿?ï>Á +ª\hü]ð75í²Ÿ&ûWü$³Ï«HÍìü>éÿeÛ/ø*ä¿à€ðM?|MøûFþÂ^=ø?â+¯ÚÃÿ~ø«Çÿ±÷þøÕŒ=¢Aã¯xsâÏþ +\jV¶ÿüGñD²Óäñ&±ÿ Œ €ÙŠ¥è}âOþÂ(øx>þÔÿðDÿÙ/öð/íSû'þÖ~Ó<3ÿVÑ?hügû-xº/Xxoãw<gàÏ3ðum*M[ÃÂþñÕæ +튻,iŽJ_4Pò3â_ÿþ1ø³þ +ñ+Ç?ðTÏø"ÿÁþܳ§ìû.húgÂø(§ŒoyðOá~ |qŽý uQãøoÁ2xÛâßþ5ëºÂ]sMð4Û¯Ùh县§|OÚǧÁ*Ÿ~Ñ_±7í +ûÁ^ÿdØï?gmSTø1ñ'ÀŽüNø¡á +Oö*ñ×î|7âÏm|Wñ?â;xOÄ~ ñ.ðËÆÿü1¥¯<©ê +O×µ.m2æÛú±¢?ߨWöÁýÿeOý|eÿÿ@x·öføYá|6økûDøwþ +1ðÊÇã^ðÒõµèþéŸ2ýïŒ3|q¢XêzgüI¥~Ð7z6°ºoöæ¢Ã{«\iZgÏŸ:üðÀÏø&%ýÇü[þÓwûGÁ+,u~ð¿ü¿À-ðköø +yû4i¿³Š£â]kÇSx&üø©©ZÙiþ,ÒtX>|[ðþ}áùô{¯êwîæðÏõÍE&zÿcÏ\øãÄø*gükGøåñ¯þ +û2þÝÿüá/Û·áF³ð×á߯ÙÓ@øðÿ@øYàj3hº÷Ä_§ŸÙêZµ¯|8ÐŒEâÝfòÍlü=€éÚ¡ö6³ÿ'ÿm|ý¿Œ]ûHé¿·÷ìWâÏ ÿŽì±á n|ûV|ñVà²_>3|Oøew{áý/â +Ö³6ñCÀþ)x^Æ÷M¶Ú/x#Àþky5ßÚ ú¢?¿à_·ßü·áÀkà¢ß°'~)þп~>þÕ^?ðL¶ìÓ|ÿ5OÚ⟠èn/tï:}ö«ðßÁ: |âMCO»œÓu/èZÖ£ŠÞÜé÷V²·Ý_ðö/ø%ý$³öÿÄÈýùãWßôPÀðö/ø%ý$³öÿÄÈýùãQÿbÿYÒK?`üLÙ×ÿ5}ÿE|ÿbÿYÒK?`üLÙ×ÿ5ðö/ø%ý$³öÿÄÈýùãWßôPÀðö/ø%ý$³öÿÄÈýùãQÿbÿYÒK?`üLÙ×ÿ5}ÿE|ÿbÿYÒK?`üLÙ×ÿ5ðö/ø%ý$³öÿÄÈýùãWßôPÀðö/ø%ý$³öÿÄÈýùãQÿbÿYÒK?`üLÙ×ÿ5}ÿE|ÿbÿYÒK?`üLÙ×ÿ5|ûjÿÁR¿güÐŒûÿÁG¿bmOöŽøûJ~Å >iÞøÕð#ãÖ«wÅïÛ#à?Ã%ÏÂMÆ÷þ!ñ¡øgâß]x¶ÓÃm€øOðŒÆ³¢øÂúoâ3öÊŸ,ÿü +øËûFþÍw? +gïøÁ_¬~:~È¿<âßö:Ö¯àÝ~Îÿµ¿ÁÚÿQÖt¢ê&hô ÷ñéÞPÐ!ñ&©%yâÙÞÜkúpÂ_?jøûÿIý~üDðyøGûRþÏÿ°oü#ÃÿŽgÁI5&×-|-šx¯ã÷üŸ÷Á^=ðÍ¥~:ø-ñgNÑ5wág#³°»¿³Ó5¯ +ø§Fð×|%âÿhžøßð§öað?ìÁÿýŽ-R×|qãßþÿðS/üjø×ã©uÿ>&êŽüZÛUñçµ[kKgž6ÖÖÚG|3€ZéÞðtýÁÑ4/ +hz^mû!@ÁX¿å_ðRÏû0Û#ÿY×â5}ÿ_ÁX¿å_ðRÏû0Û#ÿY×â5}ÿ@Q@Q@Q@Q@|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ý|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ýQ@Q@|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ_|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ@Q@Q@Q@|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ýQ@Á'å_ðM?û0ØßÿY×áÍ}ÿ_Á'å_ðM?û0ØßÿY×áÍ}ÿ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|ûÿÉÅÁX¿ìÿþ묿àu÷ý|ûÿÉÅÁX¿ìÿþ묿àt÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ýÒèc,¡ÙYÕìQ]sšd3 .Yrê(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¯mïÚ'Ç_<9àføyãïÙGÀ%ñ¶«â +/IŽ÷<u§Mâ[HÑ«§ø_áÃÿ:Eçþ ë7¡nn<G>šÁ7ôF×N âh€ÚÏâ_ÿðTo_µG¿àþýŸ ü4Óþ9~Ú²ÿlO§ÆÏø?Ÿxóáß|@Yüá·ñWÅ +w]øñ3Ãþð`S€Ãšø^»ÓÝ4Ù?Cc>2ø!ðÆñÜ}Ÿ·~Õÿ·ÅëôËøõfðoíûrþÑ_þÏ%Äj¡sð÷âW îukV«-î+<¶níõ}:±íÅÿ ø×ûr?Á¯×ß³¿ +Œ3ðÿö×>$é:^,ÒÀ| ÿ~Ó²CëŸÔåðÚΣªiŸøI£hZ.â}_NÑ5œÔx·_*Ôom ößÿðT%ð7ì}ûYø³áÂý3ö.ýžÿh?üøQk¢x³Å·Ž?¡øåã-kÀ³¿ÅØÞhpøZÒþ!ëö>Æ~ðýΪ|0µñÆu|t<=FàžTWæÿìwûR~Ó_µÅ_×zÏÂo_?fÏŽí/û6i$_xÄ?>%øËàwÅKÀºoŽß[øvÛÂ~ð<úF4ZÂk^#œñ=÷?Ž#Ótm?Ãzn¬øô +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢>øÿ)MýÿìÀ?à¥úÑ_ðIÚûþŸøÿ)MýÿìÀ?à¥úÑ_ðIÚûþ>ÿ±Ê,¿à¥ö`¶Gþ³¯ÄjûþŸÿ±Ê,¿à¥ö`¶Gþ³¯Äjûþ +(¢ +(¢ +(¢ +(¢ +øþ §ÿ&ëñþÏÿþ +Åÿ¯Mý²+ïúøþ §ÿ&ëñþÏÿþ +Åÿ¯Mý²(ïú(¢ +(¢>øÿ)MýÿìÀ?à¥úÑ_ðIÚûþŸøÿ)MýÿìÀ?à¥úÑ_ðIÚûþ +(¢ +(¢ +(¢ +øöÈÿÿNÿÙÿüGÿ×YÁK+ïúøöÈÿÿNÿÙÿüGÿ×YÁK(ïú(¢>ÿNÿÊ,¿àö`±¿þ³¯ÃûþŸÿNÿÊ,¿àö`±¿þ³¯Ãûþ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +øö7ÿÿ±Ùÿü8ÿ×YÁ4ëïúøö7ÿÿ±Ùÿü8ÿ×YÁ4èïúüÈÿx¯[ð'Ä?ø&׌5à/|Sñlï^%Пx:ãCµñgÄ +_DÿMÁMõ-;ÁŸ¹ñ.©¢ø~ß\ñ%ÝŽZF6³«iútwpµÝÔ0aúo_~Ùòq_ðIßû?ÿÿúë/ø)e~dÿÁ?ÿj/SýŒü}ÿòýµþ8üuø¥§øáÝÇŸ ÿÁ94¿ß³4o ×f?øÿðGÄO +ëz<9bÿõïð7Æü;lÞ9ðŽ_xá§M¿á²?h¯úDïíÿÿþ eÿÓ,¯vð·ìËðÿÀŽ/?h¿_xÁÚÿÅ[èÿŒ ߨ[|0øâœ"m|^ñG ŠÒçŸðÞqà ñ¯õ=ëÅ> +Ÿ³Ñ|{oâÄðwÃé|%ôM|ÿ +ûEÒ'oÿü8ßðK/þeðÙŽWý"wöÿÿÃÿ²ÿéWßôPÀðÙŽWý"wöÿÿÃÿ²ÿéQÿ +ûEÒ'oÿü8ßðK/þe}ÿE|ÿ +ûEÒ'oÿü8ßðK/þeðÙŽWý"wöÿÿÃÿ²ÿéWßôPÀðÙŽWý"wöÿÿÃÿ²ÿéQÿ +ûEÒ'oÿü8ßðK/þe}ÿE|ÿ +ûEÒ'oÿü8ßðK/þeðÙŽWý"wöÿÿÃÿ²ÿéWßôPÀðÙŽWý"wöÿÿÃÿ²ÿéQÿ +ûEÒ'oÿü8ßðK/þe}ÿE|ÿ +ûEÒ'oÿü8ßðK/þeðÙŽWý"wöÿÿÃÿ²ÿéWßôPÀðÙŽWý"wöÿÿÃÿ²ÿéQÿ +ûEÒ'oÿü8ßðK/þe}ÿE|ÿ +ûEÒ'oÿü8ßðK/þeðÙŽWý"wöÿÿÃÿ²ÿéWßôPÀðÙŽWý"wöÿÿÃÿ²ÿéQÿ +ûEÒ'oÿü8ßðK/þe}ÿE~|}ãׯï~>è°ü»à'Å?>øðÂËÄ_þ(Á®"ñOÂï:·ÃÇÞññoöÝø§¢ÚÇ©k¿ +| ªØx£Âºüi£Ýhª,|BÈ"æþË~5øaðÛöYðÂoØwþ!ð¿Ç¿±ñÀ><xWâÇü2çâ~ð[â5õÖ³ð3ÆÚgl_|(ø£ðÚt_ +Gc>ë^(µÔŒ!¡x¢ßÄÐx©/õïénþr~ +ü)ñÂÏÿ?h?±'üÊ_ü>µý¡<ñ?Ä-ñþâ}3ö³øÇûNü@ý€>0øã6í <?¢kzWí)âÿkV÷?,>jþºŒÖŒÛE¶]Ë/À³7|¬|Ñ£ý?à¯Þ%ý?fßó|wýÿdOü_ÿ27Àï Õ|C¯xJÿKÕô_ÛgFøáâ¿|0×|Q«jÿ|ñãŒ5àÛÊ}:î×ß¶ÑÿVÿàÚN«¢þÏ߬õ3PÒnæý»ÿ੎6ºÍ ̺V¿ÿ9ý¯5ÝSšâM?ZÑ5?XÒoUM¶£¥_ÙjrMiuÒ}ß@>!üVýŽ_:?à?ðR}VÓâÇ_Ž7$ñWÅ?ø$åõÍ>;xûWøâí3G}#þ +#¡Åoá};[Ö®|9e{¡«YéQÛÁ©ëzÅÚI}/ŒÃd~Ñ_ôßÛÿÿ7üËÿŠY_Ñ@Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY_Ñ@Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY_Ñ@Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY_Ñ@Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY_Ñ@Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY_Ñ@>øÉñâßü7ö_ÿÿöNý ?eÿøGÿ`ø(öOü/OþË ÿãûWöÿZ}¿þoøfÚ[öû'ü#?Ù¶_ÛðÿÂöøH4øG?á òuïìO×êøâ7ü¥7ö7ÿ³ÿëEÁ'kïúøþ +Åÿ(²ÿÙ~Ùúο«ïúøþ +Åÿ(²ÿÙ~Ùúο«ïú(¢(¢(¢(¢+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'kïúøâ7ü¥7ö7ÿ³ÿëEÁ'kïú(¢(¢(¢+àÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúøþ ;ÿ(²ÿiÿÙ~Æÿúοkïú(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+àØßþN+þ +Åÿgÿðãÿ]eÿÓ¯¿ëàØßþN+þ +Åÿgÿðãÿ]eÿÓ ¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëóþ +5àßü@øÿºðþ,|@øâ +_öÿñöÅ/ ºoÂÍ_Ç~ûü+þ +9©Ýaiÿþ|`øeqý·eesáÝOþo^"òŽ}_PFþÈñZV»Š~Ñ_-ðKþ +ðÞ9¯þ~Û^øúa1Ëÿí}û?xMX5s&cñKöP²øo๠+(ñÿÁoöö0«øE/¥q*zìùûTþ-ñWÁ_ +µïŽÏÃíËÄÞ.ø;â]RËÄÚ^œàœBðiv_>üHÒ¬Ž? oµú+xÓOð÷<-4/~ðœši]èÖôQEQEQEQT/µm/KORÓôá9q ŸŒ·Žöù#q$~aMé¿fvï]ØÜ2~æ£ñæñá(ŒWá©|U¬è·ôÇ®éoâ +WÂú¥£èÚï4Ýn£} hº¿t ++VÖ-m¥ÓŽíK\Ñìo.aºÔ좥 ( ( š÷ö1ß[ir^ÚG©ÞZ^ßÚiÏs +ß]Xé³X[ê7¶Öââ{KWKöæ(ÚYµ+§xÞòÝd«k.¢â å±mobhäÒåíïRÞéçk;»KµP5µÕŒáLSÄì=£ø«Âþ!ºÕìthåïï?³õë=XÓµ;ÿæ?aÕíì®'MŒÂ9û5âC7Èß'Êq§§êµ ©¥_Yêzf¥io§j:}Ì7¶ö7q$ö·WÏ%œÕ¥ÌG5œÄIÑ:I²0bn( ( ý>7é_Žõÿhú¡áëMãí7ðBk +NæÚêæãUýi/³v»®G-š.â}oáF¡â]&ÙÚlôZÊÒðž''Ü+çÙ[à«û>|1ñGõsOñ +Þ¿ûH~Øÿá¿Ó-îmmô¯ÚköŒøãûHèZ]+jÑ>+éþÕ®ýóUÒonìÀŽ> ( ( ( ( ( ( ( ( ( ( ( ?i ÿµ?ü5?ìåûKþÍýþ(¯ýÿk~5ðWÇOgÿù8¿±¿ü7âxÀ³/í5ýµýÿ˯i:Þ«h>ÿH¿°ÕîþÉyg^?ñÃö±ÿ|ð^ã¯þÄÿ±¥€k¿?g¯vþÿ|yŒÔcñWí)ñ÷á§ìçà]BæSþ e£['ô|Tðö©âËš¯&Ôl|+g¬ßhúVœ«ÛØèzêý|áûTüÕh?>ð®iþ»Ð?iØãã|×úœÍÕµÆû2þ׿iwC+R%]CÄú'ÂCÃZMãY꺵Ýà6Nµ¿à©¿µì±ûK~ÍðËÿ°ÿá¢?gÿÿá5ÿþÑ^&ÿ?þßïøþøG?áÖÿþÿøH?µ¿±?·ŽOí_²}û_MûGÛ!ý~¢(¢(¢(¢(¢+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'kïúøâ7ü¥7ö7ÿ³ÿëEÁ'kïú(¢(¢(¢+àÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúøþ ;ÿ(²ÿiÿÙ~Æÿúοkïú(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+àØßþN+þ +Åÿgÿðãÿ]eÿÓ¯¿ëàØßþN+þ +Åÿgÿðãÿ]eÿÓ ¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëñþñ'ãÂ/ÿ±Ä/ÙûÃÏŸ0h_¶ÅŒ¡ÍâSÃZçüþ +9áíOât>³ÝªøÞÚª|W¿ð/ ŸñOôÿÝxSÂf©â=cKÓ®?b~|Hð7Å_Ýx«áߎ¿xvÏÅ¿< s¬h׿Ê?ü,ñç>ü@Ðüàµß üyáxkQÙº1ši7")%$ñgí5µûuÁ;Œ=à逸¡ásöøñYº6§§~Ê_³ÿþøŠÓX1fK=Å?Žïe[Í:Öñ£]Ö<-ÕWxOPMüÇÿYKû@ø{à/ÅÙþ ÿiðPýþþÒ?ô/_¶Æï^$øÀúÏ Ÿ'èŸøý€x£ÃÿŸéöÅmk\Ó~0éÞ1Õ5|zøOiqâ9]ÍõÚ_éöÿŽ?³ìµáSøÏƧŒYñãÇÅyŽ»¿Ÿ$IŠÍã^ÿÂ=á3OÑlŽÏ|<ø]àÁ©êqøá_4Áþ:±¬=§âÿø¯ÅøÔQEQE|ÿ(ý§Œqû#~É*ø¯ðÇOðõßÄcâÀï>Ô|igy}à?ø¯ãÿÆüÒ|{ã»M?QÒo.ü+àiŒsÿ N¡Š[êkëévºÔôµÕRŽüæøùû|~Õ°Ä_Û£Âß|}àoÚ@ý¿àºgí¡ðôAð®ËáwnŸ 뿟'ü?³ð÷Ä«x³QÒ/|)dþÓµÝGú®|%$Îloõ õcö+öªø?mñûöxøðnóáÿÂvÞ?ðÃèrøãq×£ø_âPo¬îÖÏÅ7ŸŽ¿ñ6œªßi ðõ€úß5ë]/^ÒíÚt?6ÿbø%ÁÿŽgÅOß +>øgFøëðÂ?³#üøkã¿ÿŽ7µ/N±ãÝ{Ç> øÇñ·öÑŒ;ñã/>%¿-<)qi¯xRÇLðÃßxsÂ7ºÕ³M,|lýšà£þÃðS;í{XøÁà5øoû꿟þÔþ*ýŽÿÙçÄþøÃ iÞ;Ô>-|1ðF ¡üD×¢Ô4Œ)¢x[UøMñ]Aâï\xZ»×o<g}¡i\Uý±Ÿøóâoí#ÿdðgÇ?³ïüÆ:ÁÛçĺ·h/ +øKá¯Ã-ÇeýSMÖïŽx'öÐÓÄ>³»;ù<?ww¬ÞÆ¢·Z<×ý øyÿûý~|>øðMÒ>,ø¿á?Äïú§Áßü/ø¿ûJ~Ò>Z|)Ötëûáÿ|ñâ·Œ9àOŸ{q£Ç4íö +ìÚDW©ŠXiö_?ಌðÁ"Ò>=ÝÛþËú_Ž*Ól¿ÛÂ|áß øl|_ðoÇ|Rñ'nìŒ-áMÐü[âý{Lðö¡iºíŽÍ&ÜYüm©x?ö;ýŽ~øÇ@øà_~øÿCÿüTŸýþZèzg|+áO°Äü?ø||9á/ hx-jÊÃ[²ðVºåíÓk³ø~Îæþk5äÿeÛ»öÿñ×uOþøÃWøSãoØâ'í7Ä~Ïÿ~üø÷¡ø{Ÿ1ð/Ãúì_<Mñáü3âM¥k%Dñqáõ¶¯qª-¢~œ|:ýgÿ úï|Sáï +øÇ\ñ_ÃO þøOÅ~2üjøÛâšþ|jøá|'âüeø ãÝsÆðkŸ4ð/-5?_ø[ðÖ ÙøCºàã6/ ðþ ëû/üÓ<Sáú'Åmáç|⿿𧯿i?ÚCÄü%àO>%ð×ÃOŸ$ø¯«|.ø]cu±¢Óáÿ <9wák9îŽÏÜè:UÝÍ ißø*7ÄM{þ ¡¡êÿŽOìã£\ÁL¿dülÔÛIýõ+Û_ÙªOÞýþ%Å«øß|K~-ñÇ~)j~×,|uýàÏ +xîhz=öá¿øBŒU¡ÿÁQ?j¯|ÿ~x4Ûk:ÇoÚsâíÿàO_Ÿü³øâ#á_Øã'Ÿ +\ëø-¬øŸÇÃZw>,_iŸñF¶Ú±®xoÂ_?±Œ7xWEDýÆð×ìû=xCQýuoü>þÎÔ?c¯ úÿÁÙÆãþ¿Ýÿºøkâ +ø#Á:çü«ïÜÁâï·xcáÇ4ÏíÇâ}zÛûí¶z¥Ÿ¡šê·wÞk¬Á;d][á~ EðÓXðï>üRøñ·á~©à¿Œñ3áÅ^5ñßÄ/øãá÷Æ_xïJø·á +SÄþ*øã«FßCñ&â+¿ ®Ÿ×B·üÝö¿ÿø·Oÿf|"}á×ìÛû@~Ö^-ý²|ñ«UøÃðYÔÿáð×ìù¡øRð/Æ|*±ñõµÎâx;CÒ~!i¿5 +NÖ|Yk£kÍޢϫóß¿iïÛ³âÃoÙ@²ý§Žß¿<ÿŒø¿û|Jøàï PiÚWÆÿ +|0öÓŒ#âÏü:·ñµŠc§ÝéÞ²Åß +í5 +xÄ/aAu€Ç£Yé²~ôx{öEøáíSàãø«öb¹ø¡{ðkÆ>2üfø¥ãm÷ã6šé?/5ïüFñÿ<Eñ +ãÄf{§ÛÃv&ÖË¡ZiÚl6ãOø'ìã¿^#ø_¬|7ÖŽÿ +øöÖÿl u +|Sø·àßøöñ/|e©übð'ÄxëIñÿÿ¿5=JæÑ< +âOèúm¥šhvk¡ÞÜé²x챡ñ[öÎÿë?nWÄ!ø'®|ýŒ·VLÃámßìÇðö ñÆœáý.)\ør_~7kW>%MŒMfÏá¿t»ýJý<¡;Ëà +|ðÃ\ÿ±|2øyá-Áü9ÿMø£è~ðõZfŠiÓþƱ,×ö¶á +ÕÅÕÕÕÜĵÅÕÝÍÅÝIJÜÏ,¯ú£þÍŸð߯Ï|aðß|G€EñOàïþüWðŒzªòøÓQøywsÃKã$Õ`ñ^ãÿxWÄ~8ð~¹â[Kéµïiz'Ôu;¿ÜyOÁø'7ìµû<jµ_¡žø÷câ{oÞ;ý²l:G5/éð÷|k¬è~=øóC¯<7à +øb¶Zu§Å/Âú5·ŽØèr\XLðìÁðSàwÄÏÛ§á¯íûüø[ð7öCýþ|~ý<Wñcá'<5ð÷@ý¯>$ø_ð^ÿ|ŠøKMÒÇÿÿfýwÀ>$ŸÔþ*kæëEÕ~/_Ï ü4}jÛGñ¿GÔÿ°V©uá¯ðRÙÓKW?þ~×ß í£ãOðû@~Í_¿iü7Ò¢%·ŽÒü9ñ[â<G£iVòùŒo¢øzÆÏOÒ42Þ»Ùþ «û&~ÇZ .ÿgã¯4ÏhWŸðµ¿ÛöÈøðÃÚý޶²éÚgÁ¯<mðÞ+xŠŽÇ3è÷-öÍ&[+°³zý>i|/â>-jïÅþ5øñÅÿŸ-xÿP²M¿ñßÄ¿ÜZKVm6Ú[Ž@ðþá¯xAøwàßøn}[XHUœ÷(¢ +(¢>0ýüã/_üsâ/øPñ>·§~ÙÿðRXêZÇ%Í·~ÁCÿj? ¿|=Gj4ÿü=ðw ü)€¡S$zVe²K*Œ¯ö}xÿÀïøS_ð ë_ð¢áÿ#þíý¹ÿ×ýÿþïÄ¿øhÏŽý§÷ðÃBÂÏÿ³oî?á*þÙû/ú/^Á@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|aûzxÿÆ_ +~øÄ^ñ¡áoQý³ÿàþŸÔŽÇ;üWÿþË~#xzF9éþ.ø{ãxSV@¢I4jö8€VISìúñÿ?ðŠ¿áÑá{Â?ÿGü.Ùëûþ_?û;þ/ü/ßðÎfû7ï?á ÿÿ aÿïÜÂUýö¯ô_:=( ( ( ( ( ŸÿiÿɺüFÿ³ÿÿ±ëÓlûþŸÿiÿɺüFÿ³ÿÿ±ëÓlûþ( ( >#ÊScû0ø)gþŽWüvŸÿ¯>#ÊScû0ø)gþŽWüvŸÿ ( ( ( Ÿý²?äâ¿à¿öÿÿõÖ_ðRÊûþŸý²?äâ¿à¿öÿÿõÖ_ðRÊûþ( ?à¿ò/ø&ýìoÿ¬ëðæŸÿ¯?à¿ò/ø&ýìoÿ¬ëðæŸÿ ( ( ( ( ( ( ( ( ( ( Ÿýÿäâ¿à¬_öÿ?õÖ_ðM:ûþŸýÿäâ¿à¬_öÿ?õÖ_ðM:ûþŸý²?äâ¿à¿öÿÿõÖ_ðRÊûþŸý²?äâ¿à¿öÿÿõÖ_ðRÊúàWìÃðCöh»øÓqð?ÀºgÃË?ÿ5ÿŽ/§Øü;©|[ñ/üàïx¿LÑce¡Ýx§NðõÚéqÛXê^#¯æ¶þØ×5{»Îþ×â·Âëßj^ +²øà¿èÚ«øVׯ>žñ&¬jpÝÜiºN¥¡ÅšŸ§c©êX_OcaukÕÜ6WrAm3'Y¬Á©]hú¶}¬\i·ÐiZÖéw©Kk,v7ÒÚÊ;í.)ÞÞEdc1ž*ÄWñ¿ðÂS|>ðßüà'Ä¿ØsâçÂÚÓàü#ÁÚíûDüDøM¡i:gÄw??iß|QÕ|ñÖkÉõï6õè5¿àéŒGám7E{ïjúœm¡i·ØŒuãKßöÞ8ð}ÇÄM3K\Ô|ŽYŒi§è·W«ÞøZ;Ö×-4¹þÑšOc€t[&o17|âßø)'ìkáÙßãí?cñEñçÂÿ> ׌ã!ðòÞóÅ-žø¡üDá +¿Ãÿ +øBõ{Å>)ø©~ðLvãHñn»ye&«Üé)ªWá÷ìû0xßÃ_µ? tÚ_Å_Ž' h ?ðPÏÚGöÓ5OþÀ7ñŸ5hÿŒQñLð¯õÛßÁÿõ¯ §Áÿ|ø¥xc_ð|uáà;¯èo<7¥'ü &äü?û!xÃMý?j?ÿdwCýšÿd¯ø+6¡ûjCðÊ_×ÿŽÚàgÃÛûÄÿŽÂ|1øÁªxWFøgñ[Aן +}ªËÀþðçüK|Ai€x;^Ñ<*ú®æ~ûüý©~=üLñŠ£|Iÿ~ѳ·üG€jÎñ?âGÄ/Ù_Än ÔìôïøeñóÆÞ6ð^¯Z«Ceog¢x¢ÎÃRÆâCD{'ÔPüTøaqgâ +Bßâ?§°ð€xÅ7ÐøÃÃÒÙøkÃþ ±TÐ5ß\Š¢ÐèÚ6¹ŠÛÜj:F§šœµ¥c×vSÏoÈ¿xWöóøQûLé>#ø_ðÛáoíy§xó^øaãûwDø£û~Ó¬~_ÙxNù<oã<%àUñEö§*è.á?x®ï_ÕCË¢.¡£Ç&¬¿IûxïáOügþ £ŠüøâÞ:ð§¿a¿·Çt/ÙØ|IøñãøCÀZŽ>1oßüI¥Âkñ·Ä¿~,ø¯Â?cøG¯Yêö¥|7ÃðÚIð»Q«ñáûø(|IOx9Ÿ7ûdxù|O¢7»gö°ñHŸ:Ówü¿nÿeÝòù¹âŸmøûcx'ãÆ?ÚçágŠZxoöRÕþY\|Q·ñxKÇú?ÅßþøÝoâm.æÎÞ +#GÐt¿.âéõ}VÖøYI«%ÕŒ¢Þ?Â{¯w>| +ñŠ €~Ò¿µW쥧Á[5?Úoö¯øg«þÁ~júW<Mû:ëÚv«|=ýu Züwð+áßí)àÞ ³ðÃÛêŸ>Ô<[â-#LÖ/|« +?Ëü}û<üdøàø+o?e¿ÙWã7Àïßÿlø'oÆ='áN¥û4IðÓÄÿg^ø1«~Òðëàgl<-¥øâûÆ) x·]ñÂ?G¡xÇRjÿ>"è|S¬xY?«}âOÿøbÇÆÞñ÷õïjwiúoŽoèz§5ûM4[k~Æþ}*îòãY=&k{¹&S,#FºeùÄoÚÃömøOðâwǯ|jø§|!ø0u(Ÿ)xãK׌WŠx*ûH§Rѵ nêiâC{f²xnõâ÷vÈsŒñ+8ß?dý?âWì]ûRé? +'ý§þ9¯í%ûtÁ5|sñ'À_°§Ç?ØËö~ý¢?g_ +|Pñ/Ã/7>kÑCoð¯ÀÐøãÄOÙ_ +\øZçÄÚÞ¿Šêvôíûërø[þçðcösý¢Ðþ|NýbDý< ðÿá ~ø÷ã4ÏÚîÛü$ÓôíLðþ)øzÖº¬~^-³»žðÙî÷ÃJýCñ§CÕ>"|:ðW Ž«x{â/Ÿ"øºÏâ ŒGàOÀZ;|<Ö|%¢O _(ñ|~-Õu]~ïÅCLºð§ üC iá}rÓÅzÏoæÐ5ïŸ?|,žðÅøÇ^ø}ðoÃÚöµã?x+ÆÞ×u=óFÑõ]Z-Ä £ÞjxnÿQE场j¶±J[y~Ï*ȯÛÍ©~Õ°ÿíû*~ÊGÁÿÁ<?àŠrxáß|kû;ézgÄoøëöVñŸx»Â5ð/bøMãþ'ðãÐŽïèz<+û.¿âí-wDIõyŸ ý4¯Ú×íG£üNözñçÜ/ãüãÇÁSÃ? +?à_¿dO_¿hm+Åþ"ØþÏ7:?ü=©Þê|1Ž|BñŽÞñ¬º§ þxû]ÕßÂPD¿l ?ÿeßÙoöñߌð7Iý©Ÿ +|ø¯áOüDñÿô¹,¯Ÿ/|=ð÷Ä/Øë̶ñ>·€[ëé§;é¶6ój/l×qiÖé( ;ÛÏ>ÿÒ¿fJÔŒAãxþKñÇ÷örZâ|2ð£¯êð׿Auq¬üQñ^ ã +;Á:>m7Útÿ5}NóMDÓµÏæâgÁÿü/ý¿àŒ)ð³ã£ûrþοðK? ü?û3|Lÿ}übý©~ügºÖŸ|~Ìß§Ñüsmû*übÇßt}O^!ñ¿ÂíSÂ7ZøîÛÄÓµ=ï~ý¡µßðU¯Þþ~Óß¶üsáek©|G +§ö_|ð×ãÂo|?ðï#[MKàïÅoxÄ:,dÏDoñL +L÷n?S~3~ÔŸþÏŽ·íáMcÃ-fo þ#x»ÂÞñŠ yw&¥ð«Àºç/Œ©jzkkQøc\Ô ÑÄ +NÆ[=®Vêm>tÄýo ><|?Õþüøâïx[ážøÕáëŸÐü]âÝKºœÕ|i izå§ Ž{N}/þbíXlÖ +6ØÜÝÈâ³O5#̯ÂÙÁ5ÙöÔÕŒcûRÅñ³Wÿ:|qý®ÿeÝGþ ¯ñ'öTðÕ¹€xPoøA|YŠ|6Ó>ü}øÑáÏkZÿ~EðÿÅÞ<Õ|QáïøWðôÚŠu +äý¥?eßÅ·í|1û;|\ÿSþÏ¿³G <EàØ+Å߶Σð·ÇZT>6ãçÂÝ[Á~ ð~#|ñïáñ7Ãïi?°ÄŒ;yâ+msáïôýNø»âwÃ_Ew?>!xÁ0X[iÓx»ÅⲎ֯îtœêîMgP²Kkm[S³ŒÓŽÉædþþÖæÒÕ¥žXÖÎñÀZÏõi7ð«ãé¶ÎœàÝ7ĺ5÷ôM#UXÛLÕuZÞË«éºn¢²ÄÖ×¶pÚÞ,yd¹üñgìA€üNý±þ&kß>x¿öðà³·Â?Ÿ7|×5dñOÆ?µõ¯á}3ź-§í yáxwSñ7Ì|Gðe°û>câëžuO=ý¿b?|#×à×ÁZ×ÁO×ðM¿ÚÃßŽÅø[®é!ðÏǯ³ÿì·šhgöñ}æ6»ÿ ߬üSšiºÅ+éµS¯x]Ót4M¢ÜØÚGú/Äx[ñ7Œ;ãkþ#ðTñZøË@Ñ|K£jºß®gŽþ&Ò¬ogŸÐgA1-VI$ÊQHñCLøð»[×£ð¶ñ'À:¿åðÄ~6Ãg|=¯KàÉd(Œ]išËš?$æÞ(õõ·:SÉ<(·e¥@ßÌßü·ö_Ö<¯þÌrüRÔ¿hÿ~Óÿ³ìœñàÇÅß°'>øÄ> ñ¶áñ&o~ÙGŠøaûGÙxâ?tÿ +ŒXß<I¬øß\¿œñ0ïj~*°·öýeøà¯ø7oĺ'ì¡â?ÿŽ3âã~ÙÞ+ŸøGâ-?â.<]ÿ÷øã€I¢~Ò^&Ö4OøJŽþ%ø7Ãøe hzÍ|áœ/OOtkPÜmcþ +û8ÉðUýšþøÃNøÅð+Àþ4Ô<;ñÆ~Ô-^oð×<IðÏâÄïhÑÒµð_Ã/ø[[ÔŒcu +²\IðÿAñ7<'4Í*ÎßXû9TIbt9dHØ:H#£©*ÈÊC+)! +0Œ+àïÙÛþõÿýõÏÙçÄ_ ~?Øj·¿ÁmcÃ:À]wáÂü|ñWí3û@þÓzìoá? ß5èÞ ý 4ßh¿ŸøÀ2øÄþ/Òü&Ÿ ÓŽ +HøzÆêÊ;è£àW5ÿ> +ü=ñ^ª5ÏøáWÃÏx[YeuÂþÒ4=gUÎZy¡šØÜÝf&YÛä%Ùx¯ü'âþ~À¿·Æ¿ ºïü"ÿ~þÈŽ·Å/^&þÌÑõ¿øG|wðÿà¿|YáwûÄZ~¯áý_û#ÄFšfkºV§£ßýìº{e,öÒùÿü1¿íÿIbý¿ÿðÜÿÁ,¿úZuù×ûSÿÁD<ûMÁ>¿à±üSàMkàÅoÿ³üÀߎ/júŠû@ü2ýöýüEñàÿc±Òà׎ÿ|=º²øàI¬ü_ð³VÔŽí]GÁþ(ð7Œ]ý ÐæÃOø'/ÄÿþÔŒ'ðëþ +ûøwÃú¿Ä?µ +?þÏø&V¯öüqø§ã/µßµk¿ðN=Nö/øJ>&ü@ñw¿³ ¹GÑ?µÿ±Œ;§é°Ó4«/@ý üAñwþßÛ·á'Å¿¿?høgÚÿÿ~üBø¥á¯~ñßü &ýbïÓhZì?~|ø©ÿf|@øÛãÉ4ÍN?ZkØ÷z~©jömœÅ}ÿ_~Æÿòq_ðV/û?ÿúë/ø&}ÿEPEPEPEPEPEPEPEPEPEPEP_~Þñįþðï<=šx[Ó¿lÿø&ÿïŽÝ1#æÛÁ¿ +?à¡ÿ²çÅ/Þ!d5~ø;Å+Õ1=+Eœ(åR'û>Ÿpýª~7꿳çÃøóFÐôÿÝëÿŽìqðBk +NâæÖÚßJýŠ¿kÏß³v»®G-š2¶¡á⟡â]&ݿѯ5]&ÊÒðIç èú(¢ +(¢ +(¢ +(¢ +(¢ +øþ §ÿ&ëñþÏÿþ +Åÿ¯Mý²+ïúøþ §ÿ&ëñþÏÿþ +Åÿ¯Mý²(ïú(¢ +(¢>øÿ)MýÿìÀ?à¥úÑ_ðIÚûþŸøÿ)MýÿìÀ?à¥úÑ_ðIÚûþ +(¢ +(¢ +(¢ +øöÈÿÿNÿÙÿüGÿ×YÁK+ïúøöÈÿÿNÿÙÿüGÿ×YÁK(ïú(¢>ÿNÿÊ,¿àö`±¿þ³¯ÃûþŸÿNÿÊ,¿àö`±¿þ³¯Ãûþ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +øö7ÿÿ±Ùÿü8ÿ×YÁ4ëïúøö7ÿÿ±Ùÿü8ÿ×YÁ4èïúüÀÿ|4ðçÆÿðK¯^,ÔŸ iñíÿã?í +CáoÅŒwoýÿÊÿk¶¿Ø_Ÿ +xËáÿÄßù·ºeŽü#>.Ò?¶ôyuë?oðþ¯ªé¿§õðíÿ'ÿÿ³ÿøÿ®²ÿPÿÓýè£~ßÿø¶/ø*oÿFEyRÁ`dñüXíT*øeu¯Þü6ñ2ÁGÿà£ëâ·+°ºÒŒQwà}d~Ö#Qð×4ËëÝ7_žÐnl%Ö,/.¬õ¹·ž7ýT¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2+*÷þ mû-jZ¬j>.ýº¯õoÍ{qáýR÷þ +£ÿBºÔt+FÆm3PFœöÃçLÿMžOœÊXêÆi'i ãoÑJ(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢?:µOø%§ì±®K€Mø³öéÖ&ðö¯¿ KªÁT?àš:º»oi{a·€IwûaLún¯ +¥šÙE©Y/#Ž¿œ¶I©ÒMoøvìëÿEöÿÿűÁSú2+ïú(øÜý¡ÿc¿ÿàÿ·Ïþ*øâÁÙ«ö +Ôà¶_~kÿõïk¿Ží7ñYøµûrøßáWâ_u]wâÎû=ÅðÇâ&ÿ üUâKϵö¯¬k0xÃUŒø2úµ×ÆßìŸÿ±Ê,¿à¥ö`¶Gþ³¯Äjûþ +øö7ÿÿ±Ùÿü8ÿ×YÁ4ëïúøö7ÿÿ±Ùÿü8ÿ×YÁ4èïú(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +ðÿÚàûAø@ð±®jŽÐ>8~Ìá¿Ó-®®n5_ÙöøOûHèZ]éþ'ÖþiþÕ®TýŠÏJÕ¯nìÁ»}ŸÿêÚ®û?|=ŒÑõ=CI»öïÿYé3]i·62éZÿüçöCеÝ2IídY4ýkDÔu +V²f6Ú{§ÞG5¥ÔðÈ÷}Q@Q@Q@Q@Q@|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ý|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ýQ@Q@|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ_|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ@Q@Q@Q@|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ýQ@Á'å_ðM?û0ØßÿY×áÍ}ÿ_Á'å_ðM?û0ØßÿY×áÍ}ÿ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|ûÿÉÅÁX¿ìÿþ묿àu÷ý|ûÿÉÅÁX¿ìÿþ묿àt÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý~iÁB<}à¿ _àß~$xFðWÃïß¶ÏÆ/øÛÆ"ŸMÐ|/á_ +Á(?àŠÆœ¯k Ã,6znŠZ\ÞÞ\HBÇ.Üý-¢¿?f¿ø,§ìñ×âŸ<ø÷þ +-û|ýgЯŒ!ð#öuñí/û6h_|gnúÅ åßí +ñæßÄ>2_ü1ÖµxtŠÒŸ| +·DÖ<)àÝ_W×þ3ZOãÿéÞ øQ÷ü=þ eÿI,ý?ñ2?g_þxÔ÷ýðü=þ eÿI,ý?ñ2?g_þxÔÃØ¿à_ôÏØÿ#öuÿç@×˶§Çýÿf/¿ÓÆ^ø~þ°ðõÐñŒâ/ý¯ãøxËšøÂ~$ð|@CW6CŠøL{+«š59Þ{[)í.<þÅÿ²ÿ€~Àø³¯ÿ<jøþ +7ûgÿÁ:ÿkߨ·ãìåð×þ +ÿÔÐüoñ3Kðªxçö×øŠøVÒ]âŒYxÚœöâjðG& ÞCllô;ö{Ù-£!å¹íÿÁC<â_Úûöýµ¿ß|gû4xsÁ'ñ7ÇOxgS¶øBú?<ã/ê:·üSsŠÙhŸÐ4ý7Á÷ø{]Õµ»/»ÞœØWJMcáÇü·ökøoâû«x~,x./ +þÏZÏíeáõøð§Å~¹ø©û5èÕ>1|-±Ö-cŸñìÞ÷CóKŸ¶Ñ|_§øNmSÃV6Þ$Ò'ºü€øûE~Â~:ý€¿o/à¥ÿðKÛÏÙ_þ +%û)xCàWÄ/YÿÁ@Ÿ +xwã¯Áoø7á§Æ7w^ð&ußüCÑ|Y€|OÒ/¬u[¿~ÔŒ'šé:«Í£ø°ÿg~À +ŸüHøsâÚcþ{àÿ_±gÅÏÙcÃÿµÃïø*µ¯üMãýCÆþÐŽCௌ-ðoÁ>0»ÐtüCÓŒ=ñ[â +Þ®èznáœ?ÄÚXKëPÙ? +ÿÁg¿d^øOð·¿iýróãOÃýCâ/ìßoeû1|ZþÓú?çð¥¿~Gq Àþ7ºð)ñ¯¯ü[šÌºO Žï +]\øæßÄWŸÓµÛrßà€Þ'øíiûxþ ûâíîÿ|I¥üAý¡ü ã+¿þÏ +?f$ŽÒŸ>kÞ=øI øÀŸ*ñÄß|DÖ|?ðßoøcF¹ñÅö¡{©xOè7M{ñçÃOÿ°W~*ÿÁ(ŒsªÁSàé?°¯ìIñ»ölø·oaûo|Qñ~%xöHðÎ ªü9ãYµ¶Õü'iðÆj×Þ&»ð±Š¥á©,ô+ù¯5K}åø§ö[øðöñÿÁÏø*÷ü.ÿöœýŸ)þÚÚ¢øgÅÿ·/Ã_¿>þÙÿüoñÇ +õ¿iwSøëÁ^)¶ÑŠø_âxÖÛáßl|/ãÿê:TÚ|/«ÝjŒº§Æ°OÁ_ÿà¡¿ŽïÃß<7ÂŽÒ<mðÓöhñ'Áßx6ëÆ8áÞ±4«oßô¿èW~#ñwÃöЯô-/ÂW°Åxø²ŒÓïkßðR/Zþê|/ýš/üiñcGøã/üŽý|qmñâçáoÂMCIÓüoñ{\ø]A€ëÞø{e'<$të¿®¯ë·^/ðÞ ¢øvûÄ÷í¡Ãù%ûEþßÿnoÙ?ã_Á?¶ßüöwñŒqû+ëÿŽÁRþüj·ž¶øMûDxâÿÅ{ß0o +bÑÆ¡áÿÙi_ +ôox;Ä/y«œÜ*ÖtK;èNCöøø·ÿÛøõûO|ý¬|ûuÁ)>9jø?ñà'Ä/¿¿à¥^ø ¢xÂ>/ñg <uá_øâ¯ÂkïúŸã?x@Õm5øÁZÏü_á^D/4 +oCÒ¯®?eŒGÿý,Žÿw¿?áfþÐWŽ_Ây~>|0Ðg¿>)øâ+ÿVÐørK¿zÖ§ZZÍáÏ Å?Œ9¥Z[ë +kâwÄðçŒ;kÖzgò¯ìYÿ(ÿ«öýŸ4|r>=ø¯ñ¯öø¡ûQxKáÏÃÿ +ngøãÍ/áÇ5¶ìl|9tßü*ð6 ÿ ~»âÑá-;Qþΰ×oÆ&Ó4ÝSó¿Hý€¿eoÙëãOÀ²'í£ÿAðÝŸûi±§ÄOÙ¯ÄßðSøáwÁÝ/Âß5~ñÁ7<Kâ_Vyâè>"ðþü*»ñmšðÝå·<7%¥ÂAó^ý4¿ÙãöµñGüþõñããìkñöØÔ<qð×XÿxgàßÁ¿lÞ+øA῟ÔüUñá×|-uið»\ÑbÔüã-^é+ð~£y©X]éþ2 èÃÅ_ðTÏÙÃ?g?kÿ|e§~Ö)ã»OŸø}ðâþ#øïÅ¿ +aaã/Vÿt]i¿ŽRC@Ö<3«i6W¯¢xx]Nðî·šØy7?à¯ßôO²ÿÄÏ|ý¢~'é?Ž_íAã¯ÙKYð¶ð³ÅZwįŸÚ|Fâ7Œ}à7Ò5 +Q~!øsÅ5Zø`Ä6Ö~ ñ]hþžóá ÿàÞñü«Å^ý¶ÿàß³¿¿dëÏÛ'RñçÁO ÿðQo¿ü?€Þ~ÒÇö<ß<oâÝ7áö«ã]CU×õ[ÿ|EÔ<Wáï5¹¯ë0hâ;x »ŒðËß²·Ÿèwÿà§?ðH¯|Xømÿý£?à€ðà <àO|+øÑñöŸÓþkÞ>Óôÿë~ømàÿh»Œ²ø}ãoéÞ0ÐÎ +ö·¢Î5ûËáÿÚêÈ|Jý²t}BøúÇörö|?þüEÔŸ2ø^_ôÿZhYk!OÚÇo5+}N&ðß<%aðãHKÛoÜÍoŠj^!µùGöÿŸ§û|køœû7|-øËð#ö»ý¿fÿ^øÉðîËGñßÜ[â×íKû/xOÅú»á]eµí +òÛÆ>6&áohº³Šœ¬µ]#S[Ó%Oüèø×ñûàµâ_ø(ÄßðVÿø%ÏüYûWü@ýŒ]áïé¿ðR|>Ôõ~Î~ðûB|ñÆ_]ZøÛá øµ¢é^"ð_ þ(ü2²×üQ§èZÁÕ + u;óåû.^ü&ýºþø(üÃáÎûTþÖß°wíaà+Mþ +wá>³¿ÄÙWUø«ð×ÄÞ!ñwtÏøþ_ ~Íw׌{åºø¿Æ5DÖ<;à]L^`ìÊøþÅÿ²ÿ€~Àø³¯ÿ<j?áì_ðK/úIgìÿû:ÿóÆ ¿è¯?áì_ðK/úIgìÿû:ÿóÆ£þÅÿ²ÿ€~Àø³¯ÿ<j?à¬_ò/ø)gýíÿ¬ëñŸÿ¯Âø)·üÛþ ·ãßø&ßüÀŸÿ~Ä4ñ·?bÚ¿Â~ðwÿjÿÞ#ñW<Uâ?Þ>Ñü=áø{Gñõ毯x]Õï,ôœFÒìîµSQº¶±±¶æx¢oÝê+àØßþN+þ +Åÿgÿðãÿ]eÿÓ¯¿ëàØßþN+þ +Åÿgÿðãÿ]eÿÓ ¿è¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+Çþ8üHøqð«Áz/þ*Yý¿Ã§ÆÙëáŸö$^ Ùñã'Çß~^}ed·þÎø»ãêÛ` |3ö_øI dIØ+åÛ;áŸ7ü ð< q迵ìñzú=Nþ=:Ù|û>~Ü¿³¯Ç¿ÓÇq"ºÉš[|=økâ&À&«ªÅeŠDÉ-â:}_EPEPEPEPEP_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿ_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿEPEPÀ¿å)¿±¿ýü³ÿZ+þ ;_×À¿å)¿±¿ýü³ÿZ+þ ;_ÐEPEPEP_~Ùòq_ðIßû?ÿÿúë/ø)e}ÿ_~Ùòq_ðIßû?ÿÿúë/ø)e}ÿEPÀðIßùEüOþÌö7ÿÖuøs_×ÀðIßùEüOþÌö7ÿÖuøs_ÐEPEPEPEPEPEPEPEPEPEP_~Æÿòq_ðV/û?ÿúë/ø&}ÿ_~Æÿòq_ðV/û?ÿúë/ø&}ÿ_ß¶œ©ñ÷þ SŠjvvºšþÞ¿ìu +>úÞ»ë¿ø%güŸÞîÎòÒá$êÖê $âÞxÞ¡wDdfSú_~Ùòq_ðIßû?ÿÿúë/ø)eoþͳWÄÙSâŸ|7ñ& ©þÄŸ }â/<A}«þÍ>mbÃíþÜ +:óM×?fÿé·º¶»á ëzƪ|Ö4£àï +ᯌ;áÏ pQEQEQEQEQEQEQEQEQEQEQE|ÿbÿYÁK?ìÀ?lýg_Õ÷ý|Aÿ6ðŒ{ÿÛÿxÀŸñ<mãOØö¯ðŒá=QñŒYâ¯üñöáïøgÃÚ=µæ¯¯x]Õï,ôœFÒìîµSQº¶±±¶æx¢nþYû:ÿÑ9ý¿ÿñS¿ðTßþzûþŸýÿäâ¿à¬_öÿ?õÖ_ðM:çü3ÿXýüi§\ëð÷í¿âÍ"ÏÄ,ðæ©áø%·üó^Ó|Uà/k>ñ×noŽ¿ØþêÚx/ÆÞñŒY£K*ê>ñV ¬ø{X¶³Õô»ë8ø'ö¿?|}ÿø»gàðOÅÿÛÂ,øm'Æ¿¿g¯x³ÂŸÿz~Á? +5oiÿþ<xáÇÄHŒ?ÄO:ð®³}á[];TÔ|/ª.æöÚpÀ£ôQEQEQEQEQEQEQEQEQEQEQEòíñ{Æ_>x?Æ~O·Öõ¯Ú¿öøC}&§a£lÞ +ý ÿn_Ù×à'Äh#·cÔ.~üJñE¶~ JÕe²ÔâWÍŸ¯¯øãðßáÇÅ_èŸø©yöi?g¯\ÿÛqxÄ~|^ø9göùRãûGâÿbeñ7Ú¿á^}Z5``¢(¢(¢(¢(¢(¯?àòn¿¿ìÿÿà¬_úôßÛ"Ÿÿ¯?àòn¿¿ìÿÿà¬_úôßÛ">ÿ¢(¢(àßòߨßþÌþ +Yÿÿ¯¿ëàßòߨßþÌþ +Yÿÿ¯¿è¢(¢(¢(¯?lù8¯ø$ïýÿÄýuü²Ÿÿ¯?lù8¯ø$ïýÿÄýuü²>ÿ¢(óûþ @éü¿þ $šÿþýÝØ*"/ìéðåª ÌHIÅ~×ñëû<~пþ6|ÿjÿÁ?|Yû~ÓŸ;ý<+ÿžýŸ3køIâÿÙÂw·öøX5_ +6¯ûAþÕ³ü·_³Â}bãL°ø×ð÷Á+â_xÿ_Ôt=âµ~ +jgÆßè%?loÚ4XãÿMþßšªñþ bš *ªªÿÁJÀUPU`Pè +ðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY@Ñ_Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY@F~Óü)û,~Î?iOÙêZ>|&ñ÷ůéz4k&¯«éðÎ¥âKJWHÔµa§:ÆKΫš¥ŒTdüñwü»âí?û'ÁDŸø·Â~ŽÔ¿áÔŽgíá¿Æ/øE<©^)ð×þ øÇ_øà_hüFð æ¿áo@ñÚßLñ6¹yoá·7j_€ÿh/¿~x÷á/Äø#ïíçâÏüâoÞ;ðŸ£ñþ n,<Eàÿè·Ÿñ&xÖÿðSnÛTÑõË)Þhn#IÁ,Rª:üUá~ÒV~,þÌÞ=ýÿൿ~|MýŒkû5i~øñ/þJگß6ð¬þ +Sð×<!ûQøSÇÞ*ñÎá4ÄßüKñ6Ïé~ Ö%ŒÕ.À9_ðVþÍÞø[ðáþxÆ_?à³÷íãèŸ(Ïñlê_5_xKZ¶ð'Àï á¯|^4ßxŠË᧯µ>27>Ðïu¯éÉ¡ëÓÞkòhEüsÿþÓÃâ÷þþËß~ê¿àÿà¡z¿ÿhOxÏÁrh?<OñÛHo Þð µÝz÷Å×ß 4Ø,f7F Üj&Ÿ×ï$DÐü;âñGÃßð|:øðOö&ÿÁþÌü +ðÁ³>œãï¿?à> Œø±ðoáÜ×wŸÐþ&øWãwíñoáæ§¯ø;UÕ|C«x_ÆZŒ9â="ãÄþ"ÓÒöoêO¡§£êúwÄ?|Sø¡ñÄðM/ø*~³ãÿ±¿ÿb_ÞÝüZÿ@ÅiwðãÁŸ#ø·âoÚZXþÞkiñCXÖ>3x²mkT'€ÛDLð>-oN¢àoü÷ã·üqû'xöøð»áWÀ/ÛoöGøÁûTü#_|Eñ7ÄOß +ô/ŸøOñ7SâÔOá +ÁÚ¢xÛÀãÕô};À^ßø_QÓbе+zk¹ï,yØgþ +ÿâ¿ÚÏâWà +RøiàÈüûAþÏ¿~?ø +O⮥âðEáÃ?h]Å~ÐŒ«øâŒcý±¥øáƬÚâoø³ÂIe®Z6âöø[Á> ð¥ïìIwü×þ +}¬Eû~ÏÞ6ý>éÿÅø$5þã/Þ>øwð¿áœqñbÎ?ÛêØx_>øOáé-æðÛø;EþÐÔuçŒÐ¯,nìl4ÜßÙ«Ãߎ_칊é?|û!ÿÁdµÿÙÓÁÞÖ|ðËöiñÇÄø!Ö¹ðÿá·õ(dµÑŒ3¡xêßö¹Ó~>êú,dþÊøyŠø·ã#ÐŽhlôAµ»;LÈý¿àš¶'Ç;Ïø'?Ÿ(þÎ?Ÿü$ÿx;â +·Â=;Aø¯ãOüPðüû:xËöÓ|UãÅoiŸ¶ømã-+áÏô/@Ñ5 +gÆU±á=cZ»¶Ôß^ð®õ/ü+ã÷íiûLþË·¿j˯ºŠ©yñöðW5ßÚöz¥ÝÂOÚã×Âí?Å:,þðîagáû?xBðn¡£5ö§âMÄëÞ0û'oocå/õß ^ÿzxOÃßðLoø*æÿÕ³ÖìŸÍ¬übÿB\^ø®-{àÿg+Æø³%íé§A®É<{¬jÇÁöÞTñU¶}*M€Cu¡Þzìyñ«ö<Ó>(øCáÿüÃþ +§â¿ Ÿ=ø©ãï^øYñâgüËQð×Ágâ¯|cñCâ6ðËYðçíÝá]ø[Äþ<ñƵ®ÿg|IñgÄÍÞÛDÔ¬"S:íÅðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY@Ñ_Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeÃd~Ñ_ôßÛÿÿ7üËÿŠY@×À±¿üWüþÏÿáÇþºËþ §Gü6GíÿHý¿ÿðãÁ,¿úeçÿðN_xâÄÿø*/ŒYðâÀïjÿ·ÿ?Ž>üRÔŸjþ;ð¿Ø?à_ðN=2×ûwPø)ñ/ãÃ+í»++oiðüEñ£êú|ÏöG"Õt-0ôþŸý²?äâ¿à¿öÿÿõÖ_ðRÊûþŸý²?äâ¿à¿öÿÿõÖ_ðRÊûþ( ( ( ( ( ( ( ( ( ( ( ( ?`¿xËá¯ÀÿøwÇ~Ô<1ê?¶üÇö:nŠÇssàßÿðPÿÚâÃÆ±É"?Åß|cáé.XI&YI,qJÏ}_8~Êßõ_Úá<y¬èz®ôÚCöÇø! +qsumq¥~Ì¿µçÇÙ»B×$è WPñ>ð£Oñ.n¿èÖz®{ifM€ô}QEQEQEQEQEQEQEQEQEQEQEðügIÕu¯ÙûáíŠjµÜ?·üÏV×L²¹¿¹JÐ?à§?²»®êrAk²Ç§èº&škµë(¶ÓŽ«ÝBòHm-g?»ëÃÿh?úWìùà=ÇÆšxÓ_øáû2|ÃL¹¶µ¹·Õi¯ÚKá?ìÝ¡kKtM§øc[ø¯§øV¶QöÍ+IœŽ³"îx÷ +(¢ +(¢ +(¢ +(¢ +(¢ +øþ §ÿ&ëñþÏÿþ +Åÿ¯Mý²+ïúøþ §ÿ&ëñþÏÿþ +Åÿ¯Mý²(ïú(¢ +(¢>øÿ)MýÿìÀ?à¥úÑ_ðIÚûþŸøÿ)MýÿìÀ?à¥úÑ_ðIÚûþ +(¢ +(¢ +(¢ +øöÈÿÿNÿÙÿüGÿ×YÁK+ïúøöÈÿÿNÿÙÿüGÿ×YÁK(ïú(¢?bïÙá÷í9ÿÿ\è/»ñüWàØö'ñïÂ?߯ìô/ß>#i?³Ãø4ßü9ñö«ÙØjbÊêûE×t}gIÖü!ã_ +êßüsáÏxC]Ö4KߨDRšªÎÒUS#ä°Q1""dª£|ÿÿYÁ4ÿìÀ?cýg_5÷ýQEQEQEQEQEQEQEQEQEQEðìoÿ'ÿbÿ³ÿøqÿ®²ÿi×ßõùŠøöúøû@~ÙÞ.ø)ðGö@øÁðËöý <ñÓÃ:ÇÅ/ÛãGÀ¯øwûö@ýfýgÂÚï<'ûþÐ~ËñìùªøLÖôÿ·oÑüG§Áu€iw¶W1Êú_~Ùòq_ðIßû?ÿÿúë/ø)exþµûXÿÁI4/¿ +?g;ÏØö Æß>üpø×áíRÛþ +Eñåü+gá_>4ýŒã?YŸþ e¯oâ +KWý¥<qá[QÓ¯4í'Åj®sc£ÙëݧàÛëãíûø»ã_ÁÙàÿÃ/Ùöñ·ÇOklo|wâ/í¿ÙöŠýôoh^ñgìû>x~?3ÄŽâ-O[Ô>"ÛýGðæ¡®ª^ÞÛGéýQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@û>|Ò¿gÏëþÑõÍCÄ6ÿÇÚoã|×úµµÍŸ«ûM~Ò_?iwC+Rbm?ÃßÅ}CÃZMËŽÞiZMÝàsΞWÂðNm[UÖ¿gïWƧšj×pþÝÿðTÍ&Nöæþæ-+@ÿþ× ŠG=ÔË¢èv£é6JÂÛNÒ¬,Žû8Ꮅþï ( ( ( ( ( ( ( ( ( ( ( Ÿpýª~j¿ŽÃøF×4ÿ]èŽìqñŸkýNÞæêÚãJýkÏߎ»¡Ç©®¡â}áF¡á&á¿Ñ¬õ]ZÊîðH'èúøÃöôñÿŸüð7Œ âCÃÞ£ûgÿÁ7ü}©iw7> +ø¯ÿý>üFðô$r)Óü]ð÷Æ>(ðЬDiZÕìqI¬ ÙôQEQEQEQEQEðüOþM×â7ýÿüÿ^ûdWßõðüOþM×â7ýÿüÿ^ûdPßôQEQE|ñþRûÿÙÁK?õ¢¿àµ÷ý|ñþRûÿÙÁK?õ¢¿àµ÷ýQEQEQEðíÿ'ÿÿ³ÿøÿ®²ÿWßõðíÿ'ÿÿ³ÿøÿ®²ÿPßôQE~Á2¿fÚø&ÿüÓÅßÿà£?Ž+}_ö#ýuÝ'á§ÄO±çþøSNÔ~x +þÏÁLøðã÷ ŽY Ñt©üCñ·Yñ€ú]€rë1ÖugÕäûÚöýõM"ÃöèðÃÍOá&¹¬é²ý²g»è|'kiz·íð_Æÿ<ið#CÖuiìô?âNñãÃK=GQ¶Oøá¥£Ú]_×ÿRøËÂ6ðNø%ïÃû¯øvÛÇz÷ü{öUñ~à¹õ6kð¯ÀÚ?üM¥øzKÕïü?áÝ_ÆÒõÍfÖÒ];IÔ|Oáû+û.u>;«?jü!ðoìáñ×Ä×LàðÇâ«ÇöZço|7šiú÷ŸÅ"Hu[ÏØÝËáí3EÝsSÔí4K»ÛÛ{i@=Þù³ö3ð÷Å ~Çÿ² >8\]]üjðÏìÙð3ÃßîïŠkë¯:/Âÿi¿./.äiîŠñe¶%ÄÍ#޳3¹v-žý'@Q@WîÒåçÚæÞâKYLIÑÊöÓÃ:ÆÌÐÊc+AÆ +X¯ãïáWí)wÿ×ýµ¿à£µHuü<ý·Ÿ/~ÚÃÏœæèŒCûwþÉ.±áÂíÜ5œ®¬~Ò_ +~)¿ ŽÅ7;oõ¶Ï ³Äý~Áumt%6×\'ÖsÑÌ!¹íÞ_-Ë!e öÉ8u§¯ä·öñGÇØ¯öñWìµà/h·ÿ¿h/ø.GÅÙsÅŽ<=sãmCñf¡ðHøÙñÃâëø`êþ^ñO®~øÖ×Àz£©Úh¶Þ*ñw©YêzNq¡j?a|Vÿ~Õ?5ÚöJÔ|[ð÷â7Çÿ +þÕðO_ÙÃàí#|6MÂö:ü/XK±ñ'ů^ñUŠªøãàŽ>øw·uo +ø{Ç_oøZÚ»Ðï\~4ðtÞ!×|#<5/ü-£èþ"ñ7#×t·ñ|?âux4 +w]ÑVèêZF®O kÐèú¡moe©Ë¢jñÙO;é·â/íðàÿ~x/âßÇÿ|cñw[O +|'ðÄ_~ðG~'øKÍ;OÃÿ4/kZf©ã]nKý_I±M+ÃVºû^ju²Àfœ¶I¯~üKÿ5ïŸ/øqûMxÀ_ðHÙ×Å]Ï>éZ <e izüV°ðÅzwuøŠïbÔtí{û +hú÷n,,eÐm/£¿Ôµ/£<qàoÚkÆ_ðXo·?>4øÂ:ä_ðHo ÷ÃøÃàŸâï +銩ñã|?}{7ì®`Óaø¿áâ·®XØŠ¡y¢ÛiÒ# iÚñþh¯ÆØkþ +9ãۯǿ³Vàm/Dðí§e}sâßíë€]YE{«ü6øù{ãÍ[à'þiæBáŒ;©Gñ[á?í+âmR]@6€þøgá=¶Éiã<t¿oÛSöðOí_áÙöpÒ~ ézëþË^-ýŠuïü9øgûEøTÔÏÄ;_|þÕ|]àý3ÃþX²ñ«ñ?ıM©xX¯|¡xnÏ©Ýë.ûþ.ð¢x®¿ü<8ºðõߌúÖŸ+žð¥¥g£_x«Íáë=_QÓô«œj;6Ómõ+û;®RêꡯçXý§Ÿ'øö±ð/íñË஥࿿àÝïÚ7öø³ðÚvQÑŸ!øãÀ¯4øeŠ\Ë.¡,yñšè:D×2ÝÜ€Ú=ÑàJIû;~ÝðP=wÀ>%|HøâýgáÝïü³â/íK¥üTñìåmðcÀ?hÿ +xwAñ7Ÿü?ßâ/îþ)üñ®âMSZðÞ«â)ÅöÐ|>}K_Ÿ·ñdPhÀÐÝüëü.ý ?à©?|wûx+Pý€¿g +þûüFý€u«ý+ömÔ®öká%ì³®IÃXµL¿|Gã}'öMWâ(Ñ|/¢kVW>3Ñ<:ºfoðïXá4?ø*WíiãOÿðN?ÛYk2|fý©gýºSâÏÅ_¿->)øMöø«wðe®Ÿ|׌m§øsIñÄÝkTðŒOqªê~$Ñ< Yx³NÑŽ€ÔŽO@þè¯Àwý®ÿà¥^7þ ð{ûá¯ìÅñóö·²ýŽ4o×þkZåÇ,ÿfóe>(x?áe¯m¥²Ö~!xn8<} ü?׌y.€iúþ·«ÙøjëIןzñoí?ûu|\ðì€éŽæðÓâfÿ¯ý§à¿>!xCá\6ÚÇ-àNûdxwÂ7ñoÞŒmcŠÙiz¥Á{=WÅõÏ +jŸ0Ôô¿Z_éøOLÒn?§Ú*œ€wZÛEwp·wqÛÃÕÚ@-êá#Uámå[u@Ò,YAaÜ.ãb +(¢>pñGÁ +W_ý¯>~Ò0ë}Ÿð£öoýª~jÞåµ][Uý þ'~Ç<ѵË+µ?dOðõ§ìË®Øjvósusâ}&[R"³ŒÏÑõñ|ã-;þ +û.|-±ñ¡mð÷Æ?±íéãÿxR7iZןüpÿoøwÀ!œÆemCÃ'ÅÚné*G·µe9H/³è¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(Çþ|HøqñWÁz×þÙýÃ_ÆÚ៩ö$^ßñàßÇß~1Þ}TžþÑø»àojÛd|Mö¯øI'gVØ+åØÇáŸ| ñ<woë_µíçñzÆ=2þ=FÙŒûAþÜ¿ŽWÇ¿3Éq¢Çš\ü=øá{ZÀ&ªË{ŠJÏ-»}_@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@xÿÇøS_ð è¿ðœ¿áÿ#þìõýÿ /ýÿþïÃOøg?³}÷ðÃB°ÿOwî?á*þÆûWú/^Á_~Þñįþðï<=šx[Ó¿lÿø&ÿïŽÝ1#æÛÁ¿ +?à¡ÿ²çÅ/Þ!d5~ø;Å+Õ1=+Eœ(åR'û>( ( ( ( ( ŸÿiÿɺüFÿ³ÿÿ±ëÓlûþŸÿiÿɺüFÿ³ÿÿ±ëÓlûþ( ( >#ÊScû0ø)gþŽWüvŸÿ¯>#ÊScû0ø)gþŽWüvŸÿ ( ( ( Ÿý²?äâ¿à¿öÿÿõÖ_ðRÊûþŸý²?äâ¿à¿öÿÿõÖ_ðRÊûþ( ã×þiûBþÑ"ðW.ôߨ³Æ3ý ŒûþÀ>§Å?¿þ|4ðgìmáoÙÇÀÚ§Ã?ø^xŒKñ+ãN¹áÚân«ñâwü{á¿·zC|)œžÕ<mðcTÑì? þÊ_þ5øßÂ_?n¯ñµ¿ÃÿéŸ3øaû,ü°×ŽïÙÃÀŸ5ѧ·Ÿðÿ|¬ø¢ñ§í'ñÁú€©ø'^ñà/>Õ¡Ó|WáϺGÄ +Jñ¯Á2>ü,ñ§ì ÿøÙâ +A7ÅoðO¿ÙÏÀ8Óõ_D×tÝÇ?²çÃÝÅÕ.4Ký=|Sàr?°ê× +ñTz× OŽxÂ="?øSúŸú±@Âë>ø{Æ>øw¯üDð.ñÅ=× Œ¬x·@Ó|câ[hë-Çü1{šAë0FÖ·*óiÖ71¡·3R?_¥ñä"øàI>'E§6±/Ãü_á÷ñäzB"Hú€]@ø4åÑÚùŽálšèÆP¬ î謌Yák'L× ñ/æÐõ»>ËFÖ¢Öté4^óVŒOÒ4ÍE.ZÎþëS¿+>ÞÒieœŒ;kdgT4t¿ø\ñ>œàÆŸÖ<eáhî<Oá-/Ä6¡âAv@Ž^Ðm/fÕt®ÞMBÒÝ'$³@m|Ï7ìoû0ÞAªüð³i+ÚÿG>+MGÅ ~Ò·WGâïÄ·ú«xsÄÖ³ÝÜÉŠ&tý+HûD«¥iÖi#)ùöPÿø³öºÐü)ñÁ°Çí=à¯4Ó<sªèŽ'üiû!CàYlü|McæÝø3ÂŽçþ9Ú§<Eáü7€©øI%Ä×ÖwúÅŸ¡VÛÛ¿fÛ/áÇǯØÿötý¯ü_sáß~ý¡þxÇÚVãÿèVÖú +÷Ä +cMðx§TOéÚά$Aök;IµI ²P¬x§öý|aà_õ)áÿ_®j?^i>&xÅö?Ž=ĺ$éñÀ>?Ðüc§øçáW4ù|;€>š|1ñbÑVšt«{H5MV+Þb?ø&×ìrÿ~+| Ö~êþ1ðwÇ/h¿>-øâÅ?~?øœã¿müãœgã¿|s|h_øü+áŠø¯ØxîÊÿÀCCÓcð|º,V©úïÅ<à{;GÆ6ð4û"ãÄ·Þ(ñ&áû;=Î÷NÓnõ»«ZöÒ}"×QÕôJgK8/uM:ÖY{Ûhå©§üOøk«øIðñÀÚuïEãmÃZtßk^Ä ñv£[jê:&3À"×ìíŠÒ€3Dí|/ÿŸý<+á¯Ú7ÃÿüUâkÏúgÁ/ÚkÄ>>øëû@|Gñ÷ÆZ5t7LñÄ|Qñn5M'â?tx|e§øÃÆi£]i:2ëãKð· ,ôO§ôß Ž?Ž6áO³ü`Œø?áß>/þÝñ,ŸgÂo ø¯_ñ¿ü)ý>±/ Óì(ñ>¹©ÿnÇ¢/nŸÝö+ÝbçN¶³Ž·ìì|àMOÅÚ¿Ãý7ÆŸÔ<yáû}S^ðM4k¿heçöMGWðܲk:m×Ú-þÏw{e +Œþ|>TæŠêP|Qøgsâ=ÁÖß|qâïÚjÚŒ-Œ?/õë +îúÃ]œÑŽ8õÔõKMûLÔ¬µkYáÓ®ôûëkÇkIÒ0a/زÏöMŒýŒw«Yx/µÿíqñöñíÏÃû}A4;=+ÄÚÉÓ>x^;ÍVÃKÔ5í#ÁZu¹âë·Ó¬í/>&ø³â«ŠÂlu8f×þ?~Çßi]wÀ~0ø¢øÏMøðÂ/Z|>ø§ðâßÅßü)€ø¹4øü]áÍ3âgÁ?xÆÇÂ*IÓŒ'yÝxoVNÓ¯®ô¹5 +7O»µËöåý?á^ü~øañ³ÁúßÿfY|kDºPÔü#©|6µãÅZlz"@º®»u·VfÞµÔí|EÞZèΣªL¶µêÆ_§>ë_Îð+Æ?,4c£|/øãXxÆ×Äúœ¥ëø~ˬM¥xÆz1œOÖ4ï ßk¶±êbXtëíJÓì÷× ®û'üð÷Œ/ñ"/jº÷ü!ðWýô¿øóâÄZœïÁxÃþ-׌â»~.ñ?ü'w:×<-¡ê·ünŸ!ñŸ¡öYnüI-¡©[]ùgÂïø'ì»ðsß0ð?4¶¿ +<eðÇÅgøE¯~ÓŽÏŸxWᢎ_ðÃ?Þ0ø¹®|>øWc-6=ßÿøkVðŠ×u +Cº¹Ó¥ôþÑö>&ýþ4~ÊIá[«+ÿ¿þ|rºñŽŒ3Yk¶<kû@x6ÓðèÂ9Žû +IðïP¹Ô€Ôî¢Ôãñ%œŒvvMŠK-ï¬è~øÃz¿|7ñ#À^ ðu{c¯x«Dñµo +èÚhµ=_\°Ôn4Í6ëOY¢7¶÷PÍj%Î\yïÿeÏ>׿gÿx{ÀßÙúßìµðÅ_~^ÿÂMã¿øA~øÚÏáfâ +}ûÄ76'þÓŽø+ðÊíß󿀦_ðy~±i.³âÕ|VÿsþÈzÂoß->xÂø5ãß|OøAxâïÆ_|Rø_ãß"ñ|}â/|jðÄ +âÿ$ñn±ãïwL°ñŒz&¥¥jïáÛ2OÚXiV¿Gê~i3Õ5_¿4Í3áÆ¥ñQÔ<}áK+ë2y6ÚWîîuhü/©\JPXëXÝK ÙLÜVç>#ü<ðFŠøÆ<ðg<?]Øiú>»âhz«_ê±t»-7SÕ¯,¯îõ(€°¶µY¯#Röé"hÈ4Ù+àwõÏŸ+þÅñ§Œcû3ÙüQ²ø;ã_~1üNñŠÆx µø.¿âÏ~=ñ6¿ñïÄvÖÖöÑÞ|F¿ñ]Öko¯eÑm $óoÁ;?d|8¿ø[ª|9׎¯ +ÝþÓ-ý²,µ/üXø¿àø_öñÏ<Qã¿übð'Ä¿ +xóHøà/ê>$ñ¯gÛÁÞ%Ñ4-7Kñ©áÍ/H²ðåËi5õg>!xÀö·×Ÿ5ñÇ<!e¥éâ +NïÅ%Ñ|?k§hßZirk×µí€VBjwö:sêWß^ÚZ4ââæßÌ|cûS~Îߌuðá·þ0øÃþ3ø÷¥ø[ø?¥_k<w£xWK°ÖuWIÖ!Yt8ŽøôíRÂ}:óPÔ¬à×å-Ž95+ ð(ºÚ[%¥µOq,vðÛG%ÝÍÅíÜk=ÍåÜ]]Ü: i®nfâyK4#³á¿ +>;øwâŸ6ü6]3Rð¿ÄO~<Â8ð³-×rh~$Ò`ñWÃ/z-ÍóÛê^ +øàÛÛ}OIŸ€gtßøTø/]·Üš¢ü ðÿiÚSöýŸ¬ìÿo¯Úà~þÓþø)ðÛá·ÁO~Â×ÞÓ|+û~Æ5mCPÕŸ<~Æ~"jÞ ÕŸ"|qñÕõÕÕ÷€Óôé4/KÒŽëm8 >ÿÖ¿áMÂýøiý¹ÿÿü4'ü)ÿ?ð¬>ÓçÿÂUÿ +kþOÙëþ·ö6ßô_øGÿá7ÿsÿÎýÿöü"fýßÚ«Ø+óRÿrüOÕþ)ø7ã^¡ÿEý¿î>&ü?øñ/áo|Mÿgü*/ì|`ñÂ|Eп± ÿqÅáûÿøHŒAð;án¡ý§©éWºÆÿ¿Ùt-CL²ÖüEm«óþ,ðí#û5þÒ?°-çíõûOü~ðOÇïÚÇÿ>$ü6ø×àØZǺ l?aoÛ3ãÆšiú·ÀØÏàwÄM'ÄOÄOÞŸµº±ñÔzuÆ«¥êV£mšêýQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@(~Æ?Œeñ¿á<gã¹ôûoEý«ÿo?62iéÖËàßÙóöåý¢Ÿ|9KxÙÖMBÛáïÃ_Ûj×ä5]V+ÝNUIoêúñÿß +þ|*ð^µá woðÆ©ñö øªOý·6|GøÉñ÷â_Åïvo -ÿ³Ÿ.øçÇö!"_ýþ¹Õ'ÒdUö +(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+çÚ§ã~«û>|1ð¿4mOñ +Þ¿ûH~Ç&°Ôî.mmô¯ÚköŒøû7kºärÚ+jÑ>+ê%ÒmÛýóUÒl/Žr>¯ý þi_Žôëæ¡áëMãìÉñŸý2ÚÚêæãUýi/ÿŽ ¡ÉÑ.â}oáFáZåOÚlôZöîÌž Ü(¢(¢(¢(¢(¢+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'kïúøâ7ü¥7ö7ÿ³ÿëEÁ'kïú(¢(¢(¢+àÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúü!ÿdÿÁ>~xÓþ ·ÿùñ±ãïÛ~ÏWñgìAû(xT³ðüÛþ +Ià/ +Úê:ïÀoêÖÞð/jÿx'Á~æêXŽo ø;ÃÚ |9§-¶áíKÒ,ìì`ûþ§û:ÿÑFý¿ÿñl_ðTßþüïý¡Œ+âðTM?ãìÙðÛÇ>#ümø«û-ø/öøIñcö(øâ?zwÃFÒŒ9š~Ò³·íè|Šü8øA©|ø{©Ÿ¥âZÏÄhþ'ñn¯i_ ô?^%µ¹Ö>\øÍwñCÇÿ¶?ÀOºìœãO úßìÿÿwœÔŒg€|(ÿy|_ÓµK_Ùþ}3ã'Á]öñ·í¡höñâ×ãÅ>x§Å_Ã)"Òü+áßG¥|CÒ/ øY«øâÛ?øvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"?5¿gïÙ§öÓm±ûxá§ŽOØcö1ý¢~5~Ýÿ~*ßxjîÛá'øó¥A~Ï_³ÿ u¢±×/¿f_?i¿ê:4zÌ^²ø{û?ŒqGy€O¿à?²ÇüñöBµý¢üQûDxCö°ýu/ÚkOøá8`_x_áÇÅ=âñÛâ/ü{û{èî~|^ø{ñ7ÄÒèß<šk_%Õ|EñOð>gâ}>ãFŽý®ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2(òoþßoá¯?Ÿüñ¯¿àšŸý£/<ñ«Â~"ðÅïÿðP+öQðœýïüwãy4«ÿ|8µý<"×Úðæ·§k0ßêÚËh-äúßÅçÉÞýŸ?ø?àGüÓSøÝáÞ +øà¯ø&6œû>|Lðüß°Ïÿlüøýâaðöúÿ³Rx+Äߌß|áí_À/ñÃÁ¥àÝC÷> +×ÃzGïîo¿¡_øvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"?:Ÿ~ÂÞñí/ÿÄðÇÄ?ÿi_ÙÿörÿY~П ðïÄÚ{ào<>£âÆ_سDøamñkÁ|1¥ÚøoâÿÃÝ'Æú<ñE·ñ<PøgTñMНá&ÕtbØ{Zø3àø!tÙSÅ_~-øKöý¥/?i?ËðÄz7ÄxXýÿkßx^!¿Ð£ñO >Ë? <àý+Æo-!øsá_Z[ÚEá9lÿáÚ³¯ýoÛÿÿÅÿMÿèÈ£þ§û:ÿÑFý¿ÿñl_ðTßþüPÿ{~Ëþ;ðíû<ÚþÓŸ/ý¢ü%ûW~ÏÿŽíIã[h¿°þ4Ýü^ov÷<Wû}xSÀzÏŒuðoâ§Œe¥øÏMµñïÄ]7TÑüa x+ÁúâhZ|v>þÂøàü×âû)øFý¥áóÞ=øñdzü$ñühð÷ÁïÚ#öŲµ×üYâí_x;àÇÜOÁV©qs€|6Cñ&®G6¡ª~ÓÿÃŽÿg_ú(ß·ÿþ-þ +ÿÑGü;Oöuÿ¢ûÿâØ¿à©¿ýø«ãÙîþÎðWï ^ýŒYðÿã6ûmYþÖ6z¶û9x£ÃÚ?Æ/ÙÁ¿fïÚ2÷Ãÿ~0é ·ðÄ»ox?á÷ÄÇðÃ~1ÕüUkâXõ}2óÁ1Ë(ûVüàeçÇÚ÷ãþ$xÓâ÷ìyû\þÁþþÏÿŸþÄŸ(ýŒôÝ +ÚMcâŸñÃŒø[௟.øãO§ŸüZø}ñCFÐítïÍa¢ýÅË|5ðöìÏü;Oöuÿ¢ûÿâØ¿à©¿ý¡Á-eéðÏnè:T×KÑ4/ø*üHÒ4Û`ÌâÞÃMÓÿl+{+8»°ÞãÌÁrÄÍ_ÚÃönýª~$ÞÁNtÚ_Å}KÅ?à?°_¿<KáísÀÚÅïx;âOí©|Xø{eâ-rÓEÒl~-xÀ'³ÒüIáËGNÔ<%«|JðãøûÓUµŒ?(üMýdñÇì!ÿYןÛ~Ôþ<ø³ñ·ö +ðgÂÿg ?àßcm*ÛÄ_®ŒrþÒ|'àH~x{Ã_~4XZxËSðVŒ>^xÆaám«wy¡ÙøvòÞïøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"?<|[ÿÜø +ŠÿÁDük¿c/ÏðFÿXK¡xjEø;ý³ð«UøóÆ_zm¬Ýæ}á|{À>*Ö +wÄsk¿ÃŸ1ñÔzŽñv·>§ð¿ìåû@é¿àz¯í + |kðÀþ à¯Ù£ÆÚ|°÷m|ý¡uM#á×ü,=âìõ<[ñ+៧ñÀºNàk>»»ðþ§à +GÀ(ŒðÝ¿×Pþ¿áÚ³¯ýoÛÿÿÅÿMÿèÈ£þ§û:ÿÑFý¿ÿñl_ðTßþüÖøGûøÆ¶_ì€üUø]ñ#öý~Á!õŸøûPüñŠêô¿toÇñ{Á<3§éz_Æi~Áâ-zÏÀ¿Ždñ-Š¥âhôk]cE:¥Ë??gKá׿à;ý£?d¯Úÿ Ÿ é¿¶/Á:¿ìÉão^,ø7/çÔ`ý-üðÛLð'þ øSÀ6Zñ +ç £ðÃùu-QœŸðîšÛjUûÿÓýè£~ßÿø¶/ø*oÿFEðí?Ù×þ7íÿÿbÿŠÿôdP+ð+MŸñüßöéøÇáÉ|6ð×ÀØïöXÕ¯m]ßLñ/Ç/>#ý¥Ÿ4xé#[]^øÀŽ_Âßj0ȶÕ5]SÃòÜ[êzaoúS_ÚWüëö]Њ³ÐücûvèÖw:±\Zé_ðU?ø*m>±âV÷^×õi ³ý°á]K\×5CYÖ/ÝëSÕoïuÙgŒºi4¿áÚ³¯ýoÛÿÿÅÿMÿèÈ +µ¿üÃ?±×ÇÙëá¿Ä_>$Ôþ|]øgû@|Nøñ×@ŒKÍ+örð¿ÁþÍ~O|Ið¢iïšÍð«Qñí#áë?øÿIÔe-bñW46ð^.ñû^Ùê_¿àªúwkšiúííðÆöÂþÊâ+«;Û;¯ø%oüF{[»KšH.mn`&âxŠÒHÝ?üvý>.~϶ÿìÙ?ìIà_5¿²íÅð;ÅÿjßÚ_ö±ý«þ~βø¿âïìâmÇþ>ÚSãGÅŠÛOá|Im#áÃÿøãïôøÄ7>ðÖ©ã¿Þåÿý|'û!ø(oìßà}wÄÞ&ðÏ¿Ûáþa¯xºòÞçYÔŠÔ?àðN_j œáÝjúœü^ðO ŽÝÁ~ðÌzG<¡è~ðþ€Y~ÄWÀ¶GüWüwþÏÿâ?þºËþ +Y_×À¶GüWüwþÏÿâ?þºËþ +Y@ÑEQEQEQEQEQEQEQEQEQEQEQEðüIÕt_ÙûⱊjMÜß·ü3V×S²¹°¹J×ÿà§?µæ»¡jqÁuRɧëZ&£§ëMê©¶Ôt«û-BÎI. O»ëÃÿgÏúWíà=Ç>šxzÓ@øáûMüÃS¹¶º¹žÕf_ÚKâÇìÝ®ëËjK§ø[øQšxI¶aö=+V²ŽŒ&î É÷ +(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+áø(Ϊ迳÷ÃÛÍSÔ4¹¿nÿø%5Ö{sas.¯ÿÁNd=]Ó$ÖH¥OÖŽMGPÑõk&cmšéW÷º}äsZ]Ow×üqøðãáWô_üT³û5O³×Ã}.ìHŒA³â?ÆO¿ +>üŒûÊÉoýñwÇ>Ô?¶Àøgì¿ð@É>(°QEQEQEQEQEWÀðM?ù7_ßöÿðV/ýzoí_×ÀðM?ù7_ßöÿðV/ýzoí@ÑEQEðÄoùJoìoÿfÿ,ÿÖÿN×ßõðÄoùJoìoÿfÿ,ÿÖÿN×ßôQEQEQEWÀ¶GüWüwþÏÿâ?þºËþ +Y_×À¶GüWüwþÏÿâ?þºËþ +Y@ÑEðüwþQeÿÓÿ³ýÿõ~×ßõðüwþQeÿÓÿ³ýÿõ~×ßôQEQEQEQEQEQEQEQEQEQEWÀ±¿üWüþÏÿáÇþºËþ §_×À±¿üWüþÏÿáÇþºËþ §@×À¶GüWüwþÏÿâ?þºËþ +Y\·¿à«²ß|Að{OÐŽÿÒø3öø¹/Á?ÙûãLÿŒkÁ/Ÿ7¶ÆÜüE[94ŽÐËxÄèÚß#ðýô«Aâ/·|6·œ¿Ï_l ?¿mø&猥|EÔü7ðëþ +Eñ¿À·Æû¿Þé?õŸÿuÁD>ø¿á >"jSÛCâ_è><×?áÛMÓ¥ÑïõýÅz>jz õ»[0ÚÚ+ðïþM'd_ŸþË¿to:gíCìað+áçÆmÄ^ðWÄï-ý§5ÙwáÝß°ì~Î^"³>0øàÝ:Þ_øO²ÔŒ#%ýÏÚî_»>xCöôøu¯ÇãÏÚWöšýþ)ü5ŽðÇu_ŸþÉ3øY©höº<Ú +ü{š~Ó_îî4ö·œŽñ5ÍOÄ:h3Û^øzýûºüÔøkÿ\ý>-üöð.ñÓSøQâGáþë÷_þ iŒsñ®í|5àÚFŠYê|M¡êÖW/äÑ-O<{c«]ëŸ ¶ÑtVÒûoøxÿìÞ> +·Åóÿ4Þ/ÇY?eÖø/ÃOOñð~ÒqJæO+ðÆÚ µ <hJ?ê+·ðø~ñþoøB×ÀÞŽWã7À_ø)u¶¯ñ+þ +cã÷>=ð/ÀÿÙâoìœà_>ñ¯ÁÝsÂ_4={âßÁwWß"ðDü&=ñ¯Ÿ5øšh¿tñâKÜkúxTÕ|1ªióý +®ÿÁQ¿e/|ø»ñ³â§ñáû?|Søcðw㯟%|=×4ß üeñTð +Ãñ_ mRi<3â{Þñ.âïÞëÃÕêjMu£k66¢tWãÿÅ¿ø,Á/ÿ³7íñ÷ÿÿh}cÅ¿±_üão|øð§Æ~$jø?ÃG§xÇÃ×ZðãÆáÏ4~)Ö4%ŸÐŒFŸ$ðî6äËôŸû[Ûx§ãÿìÙày|EðÞÃãgÁ/Úkâiø7ñ_à_<9ñRŒqðÂO¯ÿjÜëÖÓŽSãfÂZïµÝoâ&âßkÕ4[=P·Ö>颿:4Ïø(W>"Þ|møYá¿ütø;ñ¿Àÿ³g¿h¿èþë +nüiðçI7Þâ tÏ çNÐ<dúâ/xºÃÃ,Òn5œ"=WÃCzíþÏðR}9ÿfø'lߌ7ñ{ãíIûRþ¿¿jOxSàÂsâV +Søsð¢ãâÅ}wIÒeÐ|7á +?ôÝ6ÃFÒç}Zö÷U];ÂÔ ÓîÐõÎø{Výšåÿ®ø¿ðÍµßø/àgìû;øsã_í/ãÿù ÂAñVOÞx#Âðê7PÚx[AøuðëáWþ'üIÔî-nno-ü[ðÎÝ7O¶ñ,:§Ï?àŠ> ñWì¿ûfxà~ütøAû|Zýþi¿>êÞ¿ñ_l>xÓQøuñÂ^ñ¶Þ#ðzxÇA²ŽÕôMvÒËÄ%Ìú]|'£Ã¯éIš~³Ñ_·ÿðRO¿Ÿ|$âä|sñïöOðíKñ²?? +|AãÄøYðUÐaþÞøÉñßÂöbÓú×tß>€éqê'ÖŒ+⹌-á]VËûÙn|oÿ¢~Ì<rÿå·øÃñoǧövð¯íagá¯<añr}Cö|ñn±ãÍÏâ|¬äÐ|5a/ï\jwº®«§F©uá«Ô5¯øwJÔ@?Eš¯Ï_ðTÙ_öøà_¿®~*Gkñwá¿~*üø¥ãO;ðÁÿø} Šø yðÇ^.ÒtÁã/ÜëÎËLŒ³»ÿÃÚ¹cgwsïÁOø(çìÝñçÆ>ðdø¥Ãñ/áÿ~+ü ñŸøÁþý¢Ÿ|9ŒÐìükãO~#ÕíâÅZN(ðƯöú®x_ÄZO|5Šë^õž>ò¢¿/?gÏø+×ì ûNx«àŸGñŸûEý£Œ1âoà_Ä¿|øá_ üEà_ß|Cñ¯Ãxß]Òìôï|Ið§ô_êzæŠÎgyáøpëâê%¿§Á=ÿníöÿø?«üYÑþ|Zø5ãÏ~OøáÍRÇKÖá÷Æß +ïÂÞ(œÒtk/Þ ~M{ã-ÂÏÏø}¯j¿ðj÷%íÈÞŽWæ·ÇOø*¿ìÃðâ_Æoþ!Ðh_ø¿ötÒ|1â¯KðwözøñWEøCðÿŶñý¯ÄøÂ:%þ¢øBÏÂ÷šÝK%ÜÝâéºøÐtMhxgÄM¥öߎüSàgìéá]âgŒ+ñËÆoŸxSãh ß|Kã>øQã+étø«ÇÖ+ Æoeo'uí+ÁÑx³Å^ð|,×ü?§h:Æš}çE|WãÛ×ào¿j?ØÂ-7âÏÿhô_ þ/Ô|-ðûá?|a¥x[áçÅ_ø«ÃWÄÏx·K°xOÀ>Õü#}ŒA®êI¢6£¡E×Zœµ¹ÎøYÿ +ýŸ/üYð¿Â_ +ËñÖo7tï¿<GðóÄ:Â_ÁK»»O:ÂÞÂ,<W7 ÓNÕ5[yäN±ñôcÅ~»ñ_t«ýZÜîZ+ùÂÿÁ]¿d/ðOÛ?Á>ÿ ×s£|qýÿnï_>/ë~!è5ýþ>øUø/ÅM[IµðÝÇÄeÐ~øÓS]3MPÒá@¿Ð/õ/A&Œ/þÁ<¿iÿÙßöŸøû;ÿÁdÏ¿?e_|fÒtMãüçà~/¿ìçñYÓ|CàŒEsð¯D_x³ânàÝcÂúký§¬ü×|KŠêº¬>':$úNšûÑû+|ÕgÏ>(ð³®iþ!»×ÿiÛã|7úeœÍµŸûM~×iC+¢emCÃ'Å}?ÃZµÂÿ£^jºMíÝÀÑõùkð_þ çÿøïðwá?ÇÁ6?`üñá§>+x:k¿ØËötîo|CðŸâïKs +ü;uâM'XŽy£WpPÌM¿ø'/ Ÿ'ÿÁQ~üøiðÿàÿÃ/þßþÿgá×Âßøsáÿ<;ý·ÿÊÿqøYþÂðôÝ#ÃúGö¿5}W]Ôÿ³ôû·ë¡©Ýy···3ÊúEPEPEPEPEPEPEPEPEPEPEP_(~Ùß|eñ¿áüàH4ûoEý«ÿ`Ï×ÑêwñéÖËàßÙóöåý~=üF;ÖMBÛáïÃ_\é6 5]V+-2&Io×êúùCöÎøœã/<ã?O§Ûëz×í_û|!ŸS°Q¶oþз/ìëðâ4ÛÈȱê?~%x¢ÛI¿É¥j²Ùjq+ËfÀWÑEQEQEQEQEWÀðM?ù7_ßöÿðV/ýzoí_×ÀðM?ù7_ßöÿðV/ýzoí@ÑEQEðÄoùJoìoÿfÿ,ÿÖÿN×ßõðÄoùJoìoÿfÿ,ÿÖÿN×ßôQEQEQEWÀ¶GüWüwþÏÿâ?þºËþ +Y_×À¶GüWüwþÏÿâ?þºËþ +Y@ÑEðüwþQeÿÓÿ³ýÿõ~×ßõðüwþQeÿÓÿ³ýÿõ~×ßôQEQEQEQEQEQEQEQEQEQEWçwì¡€Ùëßÿà®ú ²>¬þÝŸÒo^ ZÏQÿTÁ6,îV)£"Hd0Ìá%B6!Ô¿DkàØßþN+þ +Åÿgÿðãÿ]eÿÓ çÃàM¯ÅWñ¿üþ íàoÚöWý€þþ͝ZÅKÏ7Á_? þ>xNøûWé:îeàïÙÎXkÞøv<7%Ç.>,|Dñf©xk\ÒlŽûý+Pêüyûx?þ ûMþÃ^3øçiû'øoödµÿ§|qøáoÚ÷â·í1ã>!ðîñsöjýŸ~1øoáÆ>9ðô]_À~5ÖßÀt2øóÄ~øká=GÁºÿ<A®Zÿ\uðíÿ'ÿÿ³ÿøÿ®²ÿPàÛø«ö<ñ'ìÍûTþËÏüoþ QàkÈ?n_~Þ¿°ÇíáÛà÷üA üS׿jmwö¶ð^ñàö±}áÝ'B·ð.mŒ¬]øcâ/-üká-cSÔí4ß +ëe€7ÿmü>ÿœøGâ*êý¡?jïø"'ÂÏ +\xÆZ~!|.ÿ²x+âœ÷üYšørëIðôþøâ ¿ÁºÖ':®µ7ŒkâmgHÒhö~œzϬEýQ@ÉÄWþ ùãOø%ïüßöL¿ÿ Á*<CñÛöÿTñV³ûw|7ÑþüUñ¯À¿:Â_ø#Tñ׌Gcñ7Ãñ×<eãËøßMðTŸ!Ð5{kןÒ÷CœÇÅØ{ÿŸü@øûRÁ?g/³·íËû]YüÓ¿à«ø¥ð㥿g-sönñâüEøíâþñ¿~*kŸñTðø{^°øAñCðÀðvÖ#Öõdпj(øëøû+~Ñþýœ|Eñ×þ +£ÿqð×Å_ÚWöý?iïŸðíÏàÿü)Ð<Iû!x;á¶§ü-ø»¬jZ÷ÃïjþñE×eðµã¿[é:åæ«?ÄmÂ> +Ö-¬ŒgÛê^<ÿ|øÃömñßÃ~ÓðE_Ù7â?jØsãG€ð'üw@øÿŠ|Að÷ì¿ûCü0ø«âxÓÇ>ø{â +;Äx;ÁZÇ>蜊^\^iðøÄ^Žy4ßëvþWÿjßþÁŽn§ÿuOÿ²ÿÁ/Œ3£ÿÁ@?c?Ù§özøI{{ûh|ŸÔü)ã¿6_ŽãkzÄm2Åk§øKUÔ~0ø:.ûÃ:¿5²µñ5ÍÞe>¥Úk~ãOÛ'övøËñÃöný§5ßø)çü?àOűgí»ð+Å>ý¿Ÿü^Ò|ñ³öÖþÝ|&ñ¿ï<EŠ|:Çðñø?{âOZx£Kð~§§^ê_ŽëZ-÷úY¢?¯ÙÇâÀ|kðÆ¿ðQ_ø$HÖuÿø'¿ÆØ¿ã¥ÿÀMñ÷Çþ.øâÝOÀÞ6ÑÿhcâOþ²¿Ô4ÿxÃÁhÚÏÂášéq|8ðö±³¢x«ÅæÂA©ñÅ_²'?b/Økögðwíãÿsöý?c_ ?ŒûiiðV-;àwůÙsãÏ~xCáç>$üáß5}oâïÂëï i~!žøyâÿü(²øº&¡xËBÒÿíÞþÄh åÛâ·íÿÞñßÄÛ;àïÿàš?±Fð¿þ +[ûøWàŸ7xcöýÞïáÏÇ øð³Ä$×t+ëo¥é>|Dð×|m$á<Ið³Å>ÖuKk¿øZÏUðo>,ýŽÿÙ÷öøW®~Ò_ðC_ÿŸ)þÁ_¿d}öøoÿ_â-çŒEñÂVúúçÃo~Óàßœo]µ±ñ¯ŽíÇÿuÍVÓlôLñ-€Úóÿ`TPñçñià7ŒñÃöÊÿ9þÕPkß±ÀoÙWã_ÂßðTOþϺFâ_ðxŠßFøðïâÃm/â«ø³Ã(Ó<yâ +xÃÀ~5øw€I%áïi:ŽWwÏî~ŸÒŸ=ÿÁ;ŽÚ#â§Å?ÿÁI?à> øqãø%ÀïØcÁ_|?ût| ¿>ñïÂï~Ñ~"¹·KÍFÆ)ŸiZÅ¿ è~ñø²ÿûVmKÁZJÃdúôE.^øÿû6ÿðJÍÆ¿ðTÿø& +Ç?c/ØGã_ìñö=öåø6º§uÿß~|!TøO%Þ©o§ [êüUwq©xŒªÛi÷º +ÕŸ{w=þŠùwüûÅðN/Ù:ãáŒsûQÁõKà'Â_|"ð/íá_ø*F©|Yñqá8<£jóþÎ.Ñæð'ÃsÅþ±Óíþ)GáÏîõ޳ŒÓï ÒŽ_ëzþW>|HýŸü=ÿ!øKÄðUOø%]Þ¡ÿÖÓ<]gñÖmöãøE='ñì_ñwötµÒ^ßiÓëš9ñþ«]7-Œëák}Nþ5W×CŒô/Ùöáø/û#~Î?ŸxGþ +'ÿYñ>£áÚoâÄ~<ñGüOÁpé~;ø=ûBþÕÿŸ=|Jâ¯4}";ÿß|àÿ:ÖàËxâg<câM1µcº4WWwÓ +ü|ø·öþøGâÛþáßß¶ü¢~Ô^ +ýŸèÿhOÛ»Á +t=êÙRoë>>ømoáœâ/ÿh +3Áw¡câÙøá̶&ÓôíûÆVÉ«ßI ùGí9£þÌÞ:ø5ã¯Ùá×üsþ cñ/öu·ÿyüýfcâçü/OøZgü'øc«ü=ñ/õÙûá¥ÇþükÖŸ,ËoàýHøûÅ Ò|Màkœ'N²ÖtKìOkŽPàÀÛgöðÿí«ñÿöºøÿ%ÿ\è¿eOØëáSøÁ·ÇÁê^øðG^ý¢ŒGñ.ѵœbÙk^ +ûGÆ=OðWâ¶Óõ¯G¥j×ç| RÊÖóàßø'Ö¡ÿÒý~"|ðî¹ûPÿÁŒ}áoÙßÄ?á/íðU +~>ØxźÄx6 ?fgAÕ>éSÁþ-¶øcãíwFøß§è:ŠÖŒU£X.§vOëÂÿ<ÚRûã¿ü9oÁø©ãß~3ý|ñËþ +â_µ_ÃíwS¿ð¯uàÿÁSeoüžÖ<7áý_Jñf¥ñÃÆ4ð׿eßÒÅá|Iðþ³©|;ñUÿŸ"Øü9¿ÕGŸ~×ÿ²ÏÁOø(4þø°¿þ8þÑÿdÝ[áÿŒQuã]cÆ¿¶/µMKKð¯Æë? +ŽÏü8ðÂ_xѵ?üOÒ~$xÏNáÖ®Ëá2ûJÇPø¯ö§ÿvx·á×üûþ +œñgö¡ñÏŸ+]øOáü[âÿìð»Ã¶ú|4øá¿ÚXý¬þ<ÍñSX³±ÆŽ®¹€|]ºð¶©ãÛÍ6~oÿâ5_øÛâ7ôÇ@û1|°ýÿf¿ÙëötÒõIuœ3àÀïßtíjhŒµ{ ~Ð<gªKçòe¿·Ð£»-ïåŽÅ762~qýÿäâ¿à¬_öÿ?õÖ_ðM:ûþŸýÿäâ¿à¬_öÿ?õÖ_ðM:ûþ( ( ( ( ( ( ( ( ( ( ( ŒãÃ|¢øcâ¥çØ<1¥ü`ýŸ$isÿmÅáýÿþ +ü}øiñ{àåÛæeKíŸð>ý ÄßjÿnyõhÕœŸÿé:®µû?|=³ÑôÍCV»öïÿYêÓZéW7÷1iZüçöC×uÝNH-cXôýDÓµ +cVœeÚva{š^I +¥¬óF÷}Q@Q@Q@Q@Q@|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ý|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ýQ@Q@|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ_|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ@Q@Q@Q@|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ýQ@Á'å_ðM?û0ØßÿY×áÍ}ÿ_Á'å_ðM?û0ØßÿY×áÍ}ÿ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|ûÿÉÅÁX¿ìÿþ묿àu÷ý|ûÿÉÅÁX¿ìÿþ묿àt÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ýÒèc,¡ÙYÕìQ]sšd3 .Yrê(¢(¢Ÿÿ¢üVOÿ°wíñNM'Ä:âxKHðeÃi^øãzýßöÄ¿è¡tï»°ñ3© çF»[ëX§Ò®X_Ý#}ùE~6[~ÙŽÇïÛþ +ZߊøIqûþÅ?þ|lŒµÐŒßôêŸ/|GÕ.Œ?øfËKñ6¹®¿wxNñ'âÓôH¬ìâðÄÆöýkÈ?gø,?þ+ÛüJÄ?þjMý Ÿ#þÚ»øc?Åù|9à=_áÍŠ w©~Î_üQãÿ~ÓuOÜÚø»BŸÑ|qàqâ}ÇIkáË(ôm.óYýò¢¿~ÿÁF¿à¡~>ñwìoàÃû-þÌÕ¿à ÿ³G?hË{ñ×ÇÚ_4Ï :Àœ{ÅzÇÙ¬~,~"µñ/ ~8èÚ§Œ+ð«íÚâXmŒ¯øéêôo$öŽø³ÿÕàÿŒWâ~Íýªíÿo_~Ôö³çÅøÄ?¿ý<_€üà÷ÃÞÃŒ1ðïâ'Ä?\üBñ;hz<q/ÃÿXøQüAjÅÛI4Wäí§xþ û&üzý£?fß|Oøš>»û;è+ðoâ_í9ñËâ75-SÅ<-ð+ÍñÃâÄ-?áÆ»©Û|Zº»×o<>úâûÿø\øºIIQ¶òÚ?þ +]ñÿökñoÁÙßâO?eÿþÓŸ|YøÿâýFïÄ|eðÁŸðoŽxáÞªxWáŒañÇZ§šø²ïÃ^ð |!âOÏ€ß6«áÞ~âQ_^ÿ|rý§5ÙÀ?³Á?x3âgůØË@ý¶~-迵»ã¿ +[|%ð¿|O<+ð-?¹ñ¯ã_xïOñæuâË3Jð¶àYõé<5âœKÐó·öDÿk²×ìûü8Ô[À:GÆÚ{âÇü[PÿâÆ¡ñ7Åÿ +~xkàí]ñ~÷Ç]KðãÂZŒu©ŠœãÞ ðá+k7TÔŒO}šivþÀÔÀ?©z+ñGÿ~Ñ?þÁ?.~~Ëþâ÷í¿qûMx_RðßÅÏ*ð>xöiVÒ<GãKÍb_Éã|2Õuk> ðš³ð|_áï4Íûz÷XÐüÄ_ðQÛ³âÃØûRø]á_ÙÛÀõÏø*Gǯø'×í£k絯Ÿ+ñÀQûEøm®ü«Üx&ÿź/ÃÏj?nüYuš\éö;ðíÌ>ð퀮¯jú¢¿#4ïÚZðÆoø*J5×Âÿøöu¶ý¥ÔüqûBþÑ<=û7Û^|Eø5€k©4:ŵ¢ü Ð4%ŸºYx+BÒåø£âÒÛÄ×^µ«Ÿ·aùùûFþÜÞ8ý«?à¿¶.âðÿfOø(·ü³àœÇÄZ->|KðïkØ7â⯠+ØxÖ?øu®<;ñ9ü'âMQ¹Õì®nôËý3YÔ4}f{`éÚ( ( ?à¬_ò/ø)gýíÿ¬ëñŸÿ¯?à¬_ò/ø)gýíÿ¬ëñŸÿ Ÿýÿäâ¿à¬_öÿ?õÖ_ðM:ûþŸýÿäâ¿à¬_öÿ?õÖ_ðM:ûþ( ( ( ( ( ( ( ( ( ( ( Œ?öøß¥~ÏÐ<y¬hzm5ÿ³'Ál4Ëk[}Wöý€ŸþÍÚ¹$·@ÄÚ5¿úukeiŒÒŽÛK2.çp¯?j¯íðÇÂþѵÍ?Ã×zí!û|oÿS·¹º¶žÒ¿f_Úóàwí#®èqÅjD«šxDøQšxkIžoôk=WV²»ŒÒ Áú>( ( ( ( ( ŸÿiÿɺüFÿ³ÿÿ±ëÓlûþŸÿiÿɺüFÿ³ÿÿ±ëÓlûþ( ( >#ÊScû0ø)gþŽWüvŸÿ¯>#ÊScû0ø)gþŽWüvŸÿ ( ( ( Ÿý²?äâ¿à¿öÿÿõÖ_ðRÊûþŸý²?äâ¿à¿öÿÿõÖ_ðRÊûþ( ?à¿ò/ø&ýìoÿ¬ëðæŸÿ¯?à¿ò/ø&ýìoÿ¬ëðæŸÿ ( ( ( ( ( ( ( ( ( ( Ÿýÿäâ¿à¬_öÿ?õÖ_ðM:ûþŸýÿäâ¿à¬_öÿ?õÖ_ðM:ûþ¿2?à¢Þ+Öü ñþ µão +xÄüEáÛ;ãWt/žÐí|YñWÑ?à_ðS}KNðoî|KªhŸ·×<Iwm¥Í¬êÚ~åÜ-wu!~×À¶GüWüwþÏÿâ?þºËþ +Y@?ðOÿÚã§ÆÔÿo?Á<¿m?~)iþ!øwgqà¯?ðNM/á·ìÅà +ÅH5ßÙá§þ#ÁB<ñºÞâÏX¿Çœ{⌠+ñâÄ¿Û7|àmÂøià_ÓoølÚ+þ;ûÿáÆÿYôË+ÝŒ-û2ü?ð'íãÏÚ/ÀÞ%ðv¿ñgÃú?Åïh7öß>'ø¯HGÂߌQái޹åâïŒ7¥Üx!|káýOCºñOo¬ô_Ûø±<ðú_ }@Ãd~Ñ_ôßÛÿÿ7üËÿŠYGü6GíÿHý¿ÿðãÁ,¿úe÷ýðü6GíÿHý¿ÿðãÁ,¿úeóçíUão?µïÀ³Ä¯ø%ü¯CðGÄË=Ë^Õ< +ñWþ 5ŠøªÒ-Äú',ÛHŸ×ÿà¡þ&Ò MGA³äÞhwêöR\ÇC;ÅsìøW®è¿µïÚ7âçÇùÿàðTEÑ?h¿z'ÁÚCö|žøÿpÖ~ünðÇ 4?xkÂzìuÿÛ»UøáýwHÐ>#øHŒ|Fðâ]<i6Þ%ÑõXô÷|WÃ~ÑÿŸx·à¡û-ÿÁjþ%þÏÚ×Á~ÏþøGñâü»S³øoàhqxfÒ]â&ûUh<Sâ?øq%ðÿµoÿŒw +Ÿ;¯¬<SšÇo©CýÑ@ŸÑ<eàßþÅÞ9ÒÿàßðT9õoØWö|ø û6|$·¿ø¹ÿNñŸ%xwàuÝWâ46ÿ·ýίâËKIŸðÍß4x.õ/Éy¡_Ãy¥ÛèÞš~ͧà7ÀÏþÿqÁ]Ÿø£öbø»ñKãìùûFx/ãüMøùð»ÇüsñÇ?MÖgý».ü¯x7Äâg<¯øÅ¿5ï +øÁ+¥é'ÓuWN\¯èþþy5ßÿŽ÷Åoÿ>~Ó³/üsöÓþ*xà^œ6»â?ÿÁ +>\xüø££|\ðÍÃÿ|'ý¬üàÝ3þïè:d_5={Ãþ$ÖŒE€ZÚXiZŠËgêÿŽC|oøåñ3áÇo Á?૳Çï~ñ¯Œ1ñà¯Äø#-Ö·ªü6øuáÍGÆ_üqá·ÅoŸ4ðf¥¬øGÃ^$Ó5¯ËªxgÄú-¹á[HºPÿžPóåñáÿíãßü+øÍ¥þÉÿðZþü!Ô>xÇãÃß¿ðC[|tøIªxÓÆ7>ø§¢ë¿µw>Y^Zx²Úã]ð÷>ü=øiâo \ëZü~Õ4u-qìÕâ/|ýþ|%ÿÁaŸx¿öEñ߯?|ý¡tÿðG?|mðÝ×ÇÏxãÅ|/â[Ï·~üEðO$ñÕÖh~:ø{®Üê6ð¯yªOã-Ký"Q@Zn£ñÚ~Ì?Ÿ"þÀðV/ÿÿe£ñ©ü3ã¿|Gÿ,hú&øç¥I¡xþ!è¿mOÞhŒ7¢}Ið]¿<=àXl,ôÛ&×Äwl»ŒðÏüñ£ðÎoxGþ óÿuømâÛâgü3ÁŒ-ñoþË}ã¿¿ŽÅ_üDñ×cÐl|[ûmxáö±ðò?øZ5ð§<màI7õAe¬k®¯ +ëgú(¢?ŒYñ~çöñ«ÿòÿ¹xwâíñöHøÁªüAðÇÆø#}бà/±Røfþ7ð&{ûqßøMŠ:ÏôÅŸñÆã_ +ë:º~¢Y;KNIÿf_júí%áïþÄßðY_VµgÅ¿ÙãïÅ»ï|Uÿ Øê÷eÏ|%ñ |g OáoÚëÃÚ~mâûo¿Œã/ ZigÂpøOA/é×µz¿¥J(àølÚ+þ;ûÿáÆÿYôË(ÿÈý¢¿é¿·ÿþoø%ÿL²Ÿÿ¢>ÿÈý¢¿é¿·ÿþoø%ÿL²ølÚ+þ;ûÿáÆÿYôË+ïú(ðþ +mûWüyñüoþ + +áícþ ûoøH׿bÚ¿FÕ<uâÏÁ6ï<+àœ;Tø +ãëïxÏÀ¿ðPoxÚëÃþ¶]cY¶ðwŒYâ©ôë;Œ=áwWk=.ë÷zŸÿ±Ê,¿à¥ö`¶Gþ³¯Äjûþ +øö7ÿÿ±Ùÿü8ÿ×YÁ4ëïúøö7ÿÿ±Ùÿü8ÿ×YÁ4èïú(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +(¢ +øÃöôñÿŸüð7Œ âCÃÞ£ûgÿÁ7ü}©iw7> +ø¯ÿý>üFðô$r)Óü]ð÷Æ>(ðЬDiZÕìqI¬§ÙõãÿáM¢ÿÂöÿþø\³×öü$Ÿöwü._ø_¿ +?áþÍöoÞÂAÿ + ÿ +Ãþ=ßžÿ«ûí_èŸu{Q@Q@Q@Q@Q@|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ý|ÿÓÿuøÿgÿÿbÿ׊þÙ÷ýQ@Q@|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ_|FÿŠþÆÿö`ðRÏýh¯ø$í}ÿ@Q@Q@Q@|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ýQ@Á'å_ðM?û0ØßÿY×áÍ}ÿ_Á'å_ðM?û0ØßÿY×áÍ}ÿ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|ûÿÉÅÁX¿ìÿþ묿àu÷ý|ûÿÉÅÁX¿ìÿþ묿àt÷ý|ûdÉÅÁ'ìÿþ#ÿ묿à¥÷ý~`ÁFŒâ?ÿà^ðÅŒA«þßþ3þÏø¥ð·MøY«øïÂÿ`ÿeÁG5;¯ì-?ã_ÃO®?¶ì¬®|;©ÿÂMðëÄ^V«êèßÙ J×tÀÓú+óåŸ Á@þÇ5ÿÃOÛkÂL&9áý¯¿gïi³ëÆ®dÓì~)~Ê_íüsw!E ¿ø-ñ>ÞÆaÿ¥ô®%OOý?jñ_ÅŸ*ø+ñOá¶œðöø}¢ÙxÅß|KªYxK׌š^ +.Ëâ§ÁUµñoá-ö²EoZiþñg µ¡ ñ/À~×µ +3KœúÞ( ( ( ( ¡}ªézXµ=JÃNYZúòÞÐJP)qž0å)`¹*sÆ>8ðP×ô/ +x\x§ÅV¹¯xkÃGÄH×üE¡øbçK²ñ.³¡hÆïûGVÒŒ=y®hæ£amqg€Üë\ó[ËšZ$ÀEQ@Q@U9µ>ÞöËNž¿²PÔêM:Âkš"œ¿Kï^ÊÕäYîÍ& îäé,M1A"rÄñ/|9àÏk~.ñ4O +xSÃ:Uþ»âOøU°ÐŒ=áýK¶÷SÖuœkT×MÒŽ:ήïõû{K;h€âhâFq±ÍrÅ"Kš²E,l¯ºI#u%]Hee%YH A ÑEóí»ðSÅ_ާì_û]þÎ~Ô<?€øÛã÷ìÁñ÷à§µO]j6>Ó|UñSáO<áíCÄ×Ú>¯jö~³ÕõÛ;fëKÐõFßNæk+Q¹H¬æñÿøXßðTßú3ØÿYûEô§kïú(òàícÿ$øýàœkÇ^ýÿb +7HП0~п/-üMÿ"øógšÉâ¯Ù¯ãïÄ¿ÙÏÇZ Ž:_üËY¶êÞ6øWâSÂwRÞCšßxVóFŸÖ4WžŸÐôï ?cß|þØ¿hÏ|ð_¿iÏÚFø×¥ø#à§Å_|hð¯ü+áÏÙöTýltýCâŸþϺŸ§â +OWýuÏ]ZÛü9µÓŽœ;_Ò¬!Õu[/&_EýþÏû8|7Ö>øÅ:&¯©øÓöý²Ÿ0h·»ôäºöý«~?~Ôº7 -¯ä[íoŸøtœgìD¹ÃZÖkéïéª(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+ãÛÓÀ2øð?ÀÞð'µëzwíÿßñýöŠ$r\Ûx7áGü?ö\ø¥ñÄ2,F£OðÃßx£Åz³2G¥h·²E²ªDÿg×εOÆýWö|øcáhÚâœöý>Ma©Ü\ÚÛ[é_Ž×íyð;ön×uÈåµVÔ<1¢|WÔ<K€Û·ú5æ«€ÙZ^i<ä}EPEPEPEPEP_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿ_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿEPEPÀ¿å)¿±¿ýü³ÿZ+þ ;_×À¿å)¿±¿ýü³ÿZ+þ ;_ÐEPEPEP_~Ùòq_ðIßû?ÿÿúë/ø)e}ÿ_~Ùòq_ðIßû?ÿÿúë/ø)e}ÿEPÀðIßùEüOþÌö7ÿÖuøs_×ÀðIßùEüOþÌö7ÿÖuøs_ÐEPEPEPEPEPEPEPEPEPEP_~Æÿòq_ðV/û?ÿúë/ø&}ÿ_~Æÿòq_ðV/û?ÿúë/ø&}ÿ_~Ùòq_ðIßû?ÿÿúë/ø)e}ÿ_ð\_?þ|?ý~!~ÏÞÖ|UñBý°>(Åàžt +ojº×?à?ðQÏj¡ð}íWÆð|еmSâœÿ|=÷|o§ø.ëÂÓ5Oë^tûðûâGŸ*ø~ëÅ_üM¥ø»Ã¶~-øàKcFž6Qø·ág<IðÇâç®ü/ãÏxÃZÍÑCI¹I,A$?hɬu¯Û«þ ÝáïMm'ÅëŽÄÂÍѵ=;öPºýügðÿÅ6Á2Yè^)ý§|Kû*ÞiÖ·:î±à9n¬"ŒÂzºoæ?üÊ_ÚÃß~,þÌðOûOÚìçðöø¡|:ý°~7|Zñ'ÆÖ|-ñ?EðÇí#Åø5ð÷O°Ô>+kZæñNñ©šx³ã×Â{KÿÊîo®ÒÿO·ý¡ýÿe¯üÆ~4Õ<]âÏ>+Í¥Ýü`øýñ"M6oøàè÷þïé~eŠxcáçÂï +OSÀ +ü €èŸðÙÔõaìõ?øÅ~(×À> ¢(¢(å¿Û_Å?ŽeÞ+ýü!§øóöÐü3o{ðóÂÚ ®ú®¹€ÇâyômSñ4¿ø·Ið\#Ö<á}WÅâéú©êVÖ:ÃÏ¿~Ü~/ýí5öÈñáøÍ?íß³¶¯wâ¯ØcÄûRh?SAÇ·ìäÿ²>úwÆ=ÁvÞ+ÝøkÄÒ>éúÄm_OÕ|Š^ø¶Ö|+ñÀzïÃIâÈ<9âìÆœ¹ð/Äü+ñ}ƬéÞ Ò¯Œ?ñá|ãßj6:Ÿaw¡á¿iW!kYŠÊâæÚoîà_±å×û/oàÅö±þÒQ|NŽøýñúÇö ãÜ~Àñbûö²øoñßPñÞ¹À__|BžüÑø,[/mtž?9~ÿÁHi{ÿþ(|xœðõ÷ÃÿÁJÿhø'oí3âÍGᎠ+ŒQý/<KðËöbøÛâo¯õáf¯Å{/~-ø~ÖþóÃñ}WMm6ßHÄrþ)ÿþÔ/öJ°ðâ'DýŒŒqûg|aø?⯠?>2|Kð×ìwû<\xÃ_ÓAð.»âœÃ÷þ6Ãão|oÕŒ_Iªé^øo¯Þè:~y~Únœ¥þŠAÿÒýàOÇÿÙóáfµ®|ý§ŒK}ã/ÿŒMñoã/l<KâÝZMó\ñ>k/üUáø^Ð4ßø_ðœ¡ë:×ãÆõÇï.õIœ#â¿ìYû8üdðÂo*ð>§¢hÿäÒ¥øü/ñÿÄO?~>áy<b>üOøMâ¿|Dð³øBWðÖ§§é'·Óuí/^³ÔìaŽ(øÝû[|Aÿ(\~Ö°¯Áÿuëø(Õ¯Ä/Ù{öÓô|6Ö¯<¢ø[ÃÄÿøËÁŽáKxkÃú'ůøZûHñ-îÿ =Š5è®lüýSãë_~Ë·?üêû@ýŸüðÿÂø&WüÇ·?³·À+_ÛxÂÚ_cxÁÿŒ#à-ìjz쎱jvŸ +ðêkƧqªÝéÜÞÜnýøÿâýþ,èô/ißµ¿ÙÝþ IðÇv¶'í á^â€ïñõ_>øï¡üañ¡ñ2Ú[ZÝ'<qâ8ítè!ÒŽÔ²ÒãK5ô/ß±ì÷ðÓÄ |g ø{Ç:ßþx+âçïŸ2øñÃã§Æèþøéâo x¿â~«ø£ãÄëÞ4_×| á),nŒošxÿÂnk x>ï@ÐãLòöýºÿnßOðûâWþxÏ^øñÇö5ñwíšøßWýmþ|9øñet_x×á~xÍ|}âMOãG¯øWÅ+°·×üQcŠ¿ðâOµéºwæðöå_jÏø*_ÄÙ?àßíû5iRÿÁP?eüSÕŽí3öqÕîŽÏÙé|!ðSàïÆKox>k¶úÄo/Ñ|]¬éz¯üWq£|:ð§uëkí3LñàÑ€ø×öàÏüÿögý¯5øTºOÅxRóFñWŽïûI~ÑÚ×À_h5KéþkÿuOŽ»k4èŒ!à|0.¯ ðЯ. ºðì{û9øþÊçÂßÿ²ÏìQðßQøGû2Å]ã«ßøVuoxká¡áÿøøïþ/ŽxÁþÑ?µŸ ÂW®Eýý¥¥¯w}š]~!i?ðSïÚ³Røûü;5o|~øýûI~ßüñà·Àøo~Á>)øãÅ>øšø®ËÂö>'Çá¯jZŽ:»¬ø[ÂZ2üFÖtßj×G³Òý©kø)<ÿêøkqáÏ~Ï¿ŽOíCñóöŠø)ñ?]øÍðXÚ×áçÁÿüeàO:/Â]7ÇÞèþ)ñ§þx[â5§ÃÿŠ5<)©kpxjnôW]ÿxþÈÚ÷ÂàÛü2Õ4_øOã/?hoj~øñkÁÿþünøã?xÿÆÿŸ|_ðÏt¿Ÿñ»â5¹x[ÆZVâ-CÂvÚ|>t$ïü7û#|ðÕÇÀíDé¿<]¯þÎ>(ñç>x»âÆï¿Œiáÿ|MðüãmWUñÄÏ^+ñÆá/xEµÓ|m©xGðõüGÃv.€ÉbøUâßÚOöîøðàÏ"ýšt|Sø[ÿ³Õ¿a?|WðwÂ(4OþðÇ5»/ëŸ-økã»}'O¶{&xOÕ¥ðïd¶ŽyMò%öÿµgÁf¿kïhÿþ$Á:¿gßÿ ~ +Xê{hÚ%æ¯~Íþý£<wâ]?KŽ»o +xwâÇÆOép|S»Ò/n¯®|3ðSÂújêwíà}.ÞÏôûÆ?ðOßÙCÇŒ}ð»Wøs¬Xøcâ?íwûXk÷ø¡ñcÂ3Ó¿hû¿éþ-ÿ œà~ñÆã¿>*³ñešéðøÃzV{ +6ßMŸŸ³¹×žýþÉñKÅ~;ûMÆ©á/_³ÝìãûA|.ñ€ãßüqð V³ø{¯øÓWñ=õîœãx{Åÿüâ-{W»×n~#øSÆ+ŠøÓûFçŸÔ4 ÃOÚã¯í¥ñþ éÿnð7íàÏ×»_ø&OÅxãÄ?ÙÿMý/&ø¥¬|7ø€|RøO¥øSJñ¯,üGàœ+N³ðg~xW·ñ~»®è^'Ô|EuŠØêòûíEû~þÙúoÇ?cï=ñ6œû#~Ï_Œu¢xC³ô?tÿŸ-øcÅÞ4Ó|ñ;Æ^8ð¥ÇÁßWºôoh>!ð¥ ß§ñ^³ã^ë+Šx&j¿ŠÿpþËøMñOà?öoÆÏüøÃð«VøâßjïÚ£â4ÿzÞu¡ßxÀ:WÄŸ#ávýy6i}ðáŒ/¯iúbZiö:œœ§AkÔü_ýÿg/~=Ñ>*xHøàÿºmþÂÃøû@|}ý<k¯ü5³¿žÕ¬~øÏÄÿŸ%ü9Ö<oá=7U»ŒÕ4m+ÅÂh:ö¡¡>u©jÝ~`þÑÿµÏíõª|^ÿ x{à§Ä/ßüûþÂß³ÿínºWþ +ÍñCâF±ñÇþý§<_}ðŠþgñ·ü7eá-NëàŒ-×^#ѳlü&úé,ð7í÷û\|2øà~Ñ"øoñ/áÆÏø%GíÿŽø3ð¯áœç®Ÿëß.>kö? +ü'ñUñ|Gñ"x;ãÆ®k)ÑŽ©o<YáûOøAðÆ©Ká+ÖûßÙözÔµ/ºÎ¡à+íWö¢ø7à5¿ü@ž»ñÿÂozÄo +xCÃ3Kâ§}ãKÑŸ-|BµÄþ:'µy<B×ÚÖœšßé5ÖwEýŸxÆ +<y¥ü=/|øâÙáý×|[©[x{à§ø{sâÜhú¿y¢x +N_ ~3k)Óµ¿ÇÐÁÅÇ©~6þË·wíÿã¯ê>!ü9ñ¯ð§Æß°/ÄOÚn?>&ý-þü=ø=ñïCð÷ |cà_ +õØŸ xÿãÂøgÄþ J×<Jâã/Ãëm^ãT[+Dœû-þÖ?ðPOøãþ «uñÏâïÁWDÿ~Èþ%ZxáÿÁ;Í×ö~ñ>|*øàÏXxÃUñÝþñ2û^Æ7ÏãêºW<7kxºg £«þü*ÿx~Ë¿tÿøsáÎñoEø{â/x³áÊ|»ýŠimà_üãÌ^&ðßà ø·ª|*øm§ÜÆÒÅ€ÿ +áãÂVÓÜØø:é÷Z?§x{öGýü+wû0ßh?ŸÁuû|?ÕþþͲÿÂWã{¯øW׌áÏú¶ ²÷Ä·øÃí~ðôoí?§5?³ÿŽmµuk»Ûëç#öZø ûHüGÿs>-þ×h_âïÆ_~ý¿i¯þ<ñNäxóáßÄÿØçöý 5_¯\뺟«âèŒK©ü5ÓŒ$,g·Ò ᮜš|%¹Zðœýò_UÞÕ'Öü?¡kW:|úMί£i¥ÆsžÜé³ßÙAw.p^8\Ïg$o.èbo26Ýšüàø{û +þÈ!øâ³³®h?³/ÿjxãÂí#Ç_<qðó[ñ?Âo>7ÿ ×ð?Á~øâsBø-à]köð®¹mñÁŽMÂ%µÓü}àøtkK_ÉiÿŠôQEQEQEQEQEQEQEQEQEQEQEWþÐ4¯ÚÀzõsPðõŠñÃödøß +þmmusqªþÌ¿ŽÂÚGBÐäèOñ>·ð£OðÖr§í6zV{wf +ÜîðügVÕt_Ùûáíæ©êMÜß·üÏIëLœ¹°¹J×ÿà§?² ®éOk$RɧëZ&£šhúµ1¶Ôt«ûÝ>ò9.§@»è¢(¢(¢(¢(¢+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'kïúøâ7ü¥7ö7ÿ³ÿëEÁ'kïú(¢(¢(¢+àÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúøþ ;ÿ(²ÿiÿÙ~Æÿúοkïú(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+àØßþN+þ +Åÿgÿðãÿ]eÿÓ¯¿ëàØßþN+þ +Åÿgÿðãÿ]eÿÓ ¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, Ÿ~Ì??f¿7üŠ|<³øÿñYøÿñ+Bðú}úſøOÁŸñWôÍ0¶Z×tïøPñ +®µ¥â1ªøkoísW»ŒôøŸ x +ÛxJøFoÞÍ[Ùøf/èÒxî +%Ÿ"ÛEKÓ©O6£§ÉG³ŸÖo|°-Ôúêþh#ýŸ#øölÿîø§ágÁ[~Úߎí +ûgøwà/ÅoxRã¿üaðÏ\øuàž|)¡ü+ñ÷lm¯ŽO|A¹œñŠ¡kþÔtï Ýx\ÔõÉu/·ÚÝêVÀÑwŸ"|?øešê~ñ׌s§húÖ«jñ6âk-/Y± +׺N£w¢ß^Ác©Ù«¡º°¹+«pêeàiߟxFÖµoxçÁ¿eÑŽ¯jgJð/ü#¯_ß7 ¬ØÛI¶|76W׺n{&£}eeŠ_êz|:ÝÜ£åøþÊ8ø±û#þßþÊzÇí§üø«û +ü6ø!uðŰ7àþ]á_5œv v~&Õ|àï>;øÁ¬xÅ~ÚøÂ~,ñ-Œñ3xøQ4]Y{Ï×þ"ÁLu_±ÄÏÙGKþ û_x"×ÂÞ:ýô~7ñ£oñçöTÓü3 Ú|/Ò⬞±ðŒI7|5«ëE¶â¿í]?ÀÓëz^5ëDGíðÝ>|$øñ/_ð÷ÀáñÃ~Öt +üXñÇÃÝ\³×<_ iÚêxõ-/źÏüEâÍ#û@i·ñøÄþ)ѯo-åAÖ5.K]BáÖ_ŽÀ}G㯿f[?~ã× <#ákß bñ% ügqâ{ +߀sGíÆ |â;4>îëYÓôëÕ5=>ÏMÔ4Û»ÏæKâ7Á|)ýà¿|#ðÏã=ÿíËû;ÿÁ*~|Ñ?f_ðOïµÀÏ×Wßþ]ø£ölø¡u£øæÛöLøÓ'þiúÏÄøÏኧá;×Çvºïô}^ËLûÖëáf£§Á\>*|KÖ¿g[À?¿i¿ø'ÁàÇ7à^³ñ+Á? +jë?µ|JÒ|WñÓÂ>×ü1ðóƺ'ŒcðúÂ={ƺ¿-þ ø_IÒü3£_k&áé@?mô/^ñF±âøgÇñ<wt-ÄÚ.¯¬x>úa3Eeâ3OœžœðýÜ«o;Gm«Ai3f*Fû~Lý«¿oo ²÷<1ã +?D×?h_x×ãÀ~ø_ð3Äß +µê~:ýŠüE þÕÇ~!øÁŸÐŒcªÍöw|QâœFÁ€Õ#Œ}6ÖîêÄø%OìÛ«ø;ijÿÅCöðíEðöJø±ðâ¯ÁëߨÇ_ü®k#ÓŒ?/|û`i?ÿiÕ>!xÓâÂïÍñ7ĺÿoüGø/øøÅyßÿbXŸÁàŸð¿ì¹ñ¯Á4ÿðJ?¶ðàÇÅ»ÚÓM·øwâÏ øã'üO¥|0ðÎ¥ûAü(Ó®<NÚ8Æo|5{[?øFÏD];JÒíÀ?ruÿÛ»ÇÓ¿g9þ,þÇŸëŽWíàÿÙ3DðÅO³ö¯¯ix¿á§Ÿ"[|Yóöø§ñïÂz ÀõøsÅ3j+s-Šs«ýÍÄ/Íã;øãÂüC³ÒÓ\»ð^%Ñdñ®!G¬\x]/N¹æxjØ£¢1ó? ߢӟ0è_ðNœ3ö|ð/íóã/üÿªüñ×ÄMkö³ø'ûeèü;áþ~Ñj~2Ôµ¯ÚÀ~ñ×ÃQÖ4MçÅ=Çü5«kZfq©Xꥀÿ'þÌß²×toÛÎËöñ_íàÿ¿à¥ÿÿi +k~ý<qâÏ|mðÄo|I°ðu?Û¿Á×|%¥|ñÀ/é?üaà_xïÂÐü<o éþœðö<&÷@Ó£|Søb!ÒŒ"ÿŒ+×nµëà +âÿ¯uß +Ë4>'³ÒŽSšKPºðäÖ×kÖöÓM£ËÑê nñ8YŒ;ñ/áÏü5šxÓÂ^?ðO<€K«Aªø³ÃŸ*е¿ +ihλ¡®é÷:]º(C«GsuéÁÞB¶?œsþ ×eã/ þ³âÏØ÷ÄZßÄ_ðq§üiãÿj?üTÿuoÙ'Ä·ÇÄŸñKøû!|Y£þÎ:ïÁïjڜ_i¿5_ø¿Ä$žžž±ñfµ©j}íEû|nÓô¯ø+w?g)ð7ÁœCöÇÿg|aÓ>|3ø-jø×ðCá·ÂÿÙÞûöÒ~ü3m7AðÅëâŸÔGŒ Íö:·/ŸkòÞ_ëè× ÓŠñ'á×<-§øãß>ðV¿àZêÞÇJñâUð¶§{u©Škg§øÆþ}&òêçY="ÞÞÚîIŠÔÝ,#FºaòÏ¿µ·ìÏð§áÄÏ^7øßðêÃáÁ¶Ô!øã'ÄV,Ó<¥Gm6¡£jöþmwS_[Eyhíá»{õçVþ^æhÃ:¿?dý7â/ì7ûOø{áDߎÇÇËoÚGöÿÿvüEøàCöøÝûYx~ËÃߎìÃáÏ÷Ã/ÚÃZõ¶ +<|cñsÇÞ +Ó¡ê6œâo[Óµ85غÛ;öœáüàßìëû$ZhþøûþÈþÏøwðnËßñÏÅ¿xoöoGðIÒtøâkì/cðw~-·Œ¹ð^6ÛËí +?~ŒSûNxKøðáWHø£ãÓøÓWðô~ÕŽ]GFðÿÂÿiéñ7â÷uŽœ{8Œá=wÄð" +3ûKUÕþ!xûµ²Öã[ÖtaÒ> xÄ$ñtøG[ñ »x¯ÂGtmKÄ[²E£xB²œTÑEÑVçRµ¶>^ìüvøs'm¿o_Ù£ã'ÂÏ +jŸ~Ñ_ðOß?gÿø¯à¿þÉðÿã·þ9é_<EàKï;ðµ¿xÃÇÞÄÞ<Óô+ÿiøÓGøâÏYɬévúv£uð§ügöZñW>(þÇñ||ñíàÚ«ödðïÇÿ |Uð4°WŒðóâŸ"èÚÌ<MñöðÒ<?Ã/~ø ã-;HøÍà{Sø£šjþ,ñ§ÚxßVÒ,?t¿e¯ÛcáÇí +û|ý±<_'þx?ãmõË}7âŽ+{Ý]êúŠi£\x·TÃ]ýõÜ\Û*ZÚI>óP;FÌ~€ñŒá%ÔüWãO øcNm'Q××Pñô}ÉŽ-!,VÖïRŒ¶é:ZjZsê:ÙÙ%ý\ͺÉüx/ölý¢Œû8ÁüEñkÁ|ðsáìÑûLü3øœá{اĵwþünøâÝxÅÿ?e<â/gxÀÄÑxæÛÀÝÇÃÃâ3i üAÕuGûsÀ°¿µ_ðDk?>,~Ò³ìÝû)þßúÞ5ý£?gÿxB×AÔä×?dHŸiÿŸ|Dð¶Ö?³ü3Gð£Á¿ô=?SÚøBÒN±áHoôÀèOø¯ð·WÖü9á'âOu?øÇÃðøG@ÓücáÛÝoÅ>Û¿þ¯iVÚ·Úç6|ßÛdZfßíXæ¯ÛüBð +×/ŸÚøãÂ?ôœ.sRð¿tYŒi§ho¬_xZ;Ö×-4¹ÍÅžPž±ÒS<!&o57.?³?ì#ðörÿQxËò_< +ñëÃðVÏÞ%øÅâ[o!ÒŸ+ø+à?ü$_·7ޝjsh)âÏü_ü)ÐtK+étoø_TðlZ}ªÙkzc^Ýý¿e¯xwöð~ûKx¿öðíðþ +ûKü{Ó5? þÀŸ;׌#ñÇBø©â_:|W¬~Þø¬øBoÞ7ø%ñBÐuïøëÇ^Õ<%áïÝøsI>ðÌý8·Å â=ÁÍñ+Àâï]kv^ð³xËãÄ~"ŒðËÞÅâKMC:Ôõk¯ÉŠê1ëvú}ĺKØ^¥ú[µ¬â?¹ý³þ +øÃ?Ž>¡ð?W·ý¡Œsû/ëºçŸ*|!øgšØðëþÑ<#âßxwÃz_eÑìüG®éþñw£ñáÝ{ÄŸ_Økm~oàÃØB +|%ðçÅø?eYþÒú¯ü +©üT×<}ðÄübÓ¿gáÿ3ñ¡¬uÍGCÅøsðkQ¹ñdú>ðÒÿÂ>%׌króÚx«ZÖ5/µ?bM?áì{ûIÁ_u¿®þ^§í#ãoÚ§Gøí©üñþkß²vµû;~Ìqjøcö²ðd5xôïŸ ñΩâO 6ÛøW_Âs\Ç«ßÛ~Ïü9ø à¿üñSáÇtÿ|>øáøïÀþ)ÒditÏøKźEŠœáÝrÁÝ#5M&þÒö28åÌ«,qÈg_¿ðJ ~?ø+ÿåý~|QÒµøëFø=£jZï 5hÌ:¯?á,œÔ|cŠxT¶ÜÉg©xG×ôÿ_ØÀÆÖÆïCÎÓÐD_?ðQüýžìñOÀ× >Þ|ý<s§þÓ¯ª[Ý|4Ñ>&þÑ¿hÏÿŸüLµkiþÜøÖóöxÖâøyã»ýCPðüY©[|=ÕnŒ+âÍ[Àv>;ô_Ø/À2økð?Ç>ñßµkzíÿ ñý©€qÜÜø7â¿ü?ö£ø¥ðçÄ1¬rH§OñwÃßø_ÅzKI¥kVRKR³Äg×β·ÆýWöøcâk:áëœöý±þCaŠ\\Ý[\i_³/íyñÇönеÉ%ºUÔ<O¢|(ÓüK«[¯ú5««^ÚYiý@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@xÿÇ>x/Eñ?ÅK?·øcTøÁû=|7ÒàþÄÄ>#üdøûðÓáÁËϰL¬ÿÙß|sà}Cûl/~Ëÿ $é1²û|¡ûg|!ñÆÿðg Óî5œö¯ý>/_G©ßǧ[/gÏÛöuø÷ñxî$WY5o¿ +|Qs€Ø$ÕuX¬ŽÈ%ŒGP«è¢(¢(¢(¢(¢+àø&ü¯Äoû?ÿø+þœ7öȯ¿ëàø&ü¯Äoû?ÿø+þœ7öÈ ¿è¢(¢øâ7ü¥7ö7ÿ³ÿëEÁ'kïúøâ7ü¥7ö7ÿ³ÿëEÁ'kïú(¢(¢(¢+àÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢øþ ;ÿ(²ÿiÿÙ~Æÿúοkïúøþ ;ÿ(²ÿiÿÙ~Æÿúοkïú(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢+àØßþN+þ +Åÿgÿðãÿ]eÿÓ¯¿ëàØßþN+þ +Åÿgÿðãÿ]eÿÓ ¿ëóþ +5ðÓÃ>'ÿÁ.Ÿx³Rø€xÄ_·ÿÿŽ5 ¿>)üñÝ¿öGü+þ +9®Úÿa|Rø)ã/ÿ|/æÞéÐjðø»HþÛÑåÔ<;¬ý¿ÃúŸ«Š^þ×À¶GüWüwþÏÿâ?þºËþ +Y@ü;Oöuÿ¢ûÿâØ¿à©¿ýÃŽÿg_ú(ß·ÿþ-þ +ÿÑ_Ñ@ÚÏüëö^ñªøÄ1ý»uÝ]ÓoŽmsCÖàªðTMSHÖtRÖ[-KJÕtÛßÛ{-GMÔl§ÒúÆî nífÞâ)"Ðñú/üãöð×uO^öœÐ>#kÒüxÿEÿÁJޝëÑ.î5 +º§¬kh5ÝCÃzEýåÝî¡ÝßÍŠX]Ý\\ÚZÅ4ò»~ Ñ@ÃŽÿg_ú(ß·ÿþ-þ +ÿÑGü;Oöuÿ¢ûÿâØ¿à©¿ý÷ýðü;Oöuÿ¢ûÿâØ¿à©¿ýÃŽÿg_ú(ß·ÿþ-þ +ÿÑ_Ñ@ÃŽÿg_ú(ß·ÿþ-þ +ÿÑGü;Oöuÿ¢ûÿâØ¿à©¿ý÷ýðü;Oöuÿ¢ûÿâØ¿à©¿ýÃŽÿg_ú(ß·ÿþ-þ +ÿÑ_Ñ@ÃŽÿg_ú(ß·ÿþ-þ +ÿÑGü;Oöuÿ¢ûÿâØ¿à©¿ý÷ýùÕ«ÿÁ-e}4øõïþÝ:ÜzN§ëúZjÿðUø*€n»€N.tkO[ÏÛ +e³ÕŽË.4ýFÜGye8ÛMukÃŽÿg_ú(ß·ÿþ-þ +ÿÑ_Ñ@ÃŽÿg_ú(ß·ÿþ-þ +ÿÑGü;Oöuÿ¢ûÿâØ¿à©¿ý÷ýðü;Oöuÿ¢ûÿâØ¿à©¿ýÃŽÿg_ú(ß·ÿþ-þ +ÿÑ_Ñ@ÃŽÿg_ú(ß·ÿþ-þ +ÿÑY:çüÓöXñ>&â_~Ý>!Ò&¹Óï%ÒµÏø*üVÓe»Òu]_JºÆÿöžµ{3V±²ÔôùÚ#-£gk{lÑÜÛÃ*~Ñ@ÃŽÿg_ú(ß·ÿþ-þ +ÿÑ_ÿ?b¿Vÿ¶Gíaû'üðOÆ¿Ùïöœý?c |lý«jßk +ü5ðÇþ.ÿÁ@¬þ+ü?øg«~ÖŸ=øÃªøóã/Œ-ñ/ÀkàêW?>É®k_Œ} Išßi~ø±ýÑ@-þƲ§bÙû@ý| âxÃÂ~ñßÇ/èú÷õïxÊXþ5üvøñÆçNñµ[»ýcÅ:}ñç@ë··zÿ£Ó#×uÛµ}BöFúŸÿsjÚ®µû?|BŒÖ5=CV»öïÿŠi0Ýjw·7÷1iZüçöŒÐŽ-29î€XôýDÓŽýI²VÚvae§ÙÇ +¥¬Ç÷}QEQEQEQEQEQEQEQEQEQEQEòíñ{Æ_>x?Æ~O·Öõ¯Ú¿öøC}&§a£lÞ +ý ÿn_Ù×à'Äh#·cÔ.~üJñE¶~ JÕe²ÔâWÍŸ¯¯øãðßáÇÅ_èŸø©yöi?g¯\ÿÛqxÄ~|^ø9göùRãûGâÿbeñ7Ú¿á^}Z5``¢(¢(¢(¢(¢(¯?àòn¿¿ìÿÿà¬_úôßÛ"Ÿÿ¯?àòn¿¿ìÿÿà¬_úôßÛ">ÿ¢(¢(àßòߨßþÌþ +Yÿÿ¯¿ëàßòߨßþÌþ +Yÿÿ¯¿è¢(¢(¢(¯?lù8¯ø$ïýÿÄýuü²Ÿÿ¯?lù8¯ø$ïýÿÄýuü²>ÿ¢(àø$ïü¢Ëþ §ÿfûÿë:ü9¯¿ëùTýÿà©ÿüûÿÁ5ÿa~Ù_³7ìœñÃþ áû +øöøóñÓâßÁÏYþÍßõßÙ»á~§§iŒ+ñk[°Ò>(þÒ>Ñ®"Á^žÒµßü2Я øñjÖòÆo|>øûTðVø%¢«ÁKÿ`) +ª©ÿlÙÈ;.Â?Ì2NÕQ?@h¯?áì_ðK/úIgìÿû:ÿóÆ£þÅÿ²ÿ€~Àø³¯ÿ<jûþøþÅÿ²ÿ€~Àø³¯ÿ<j?áì_ðK/úIgìÿû:ÿóÆ ¿è¯?áì_ðK/úIgìÿû:ÿóÆ£þÅÿ²ÿ€~Àø³¯ÿ<jûgÆŸ2ð¯Ãø·âµí7Ÿð'uïxÇÄúÍÂÚið¯ ô«œoÄ:ö«vÿ%®£é7 õÃ|°ÚÛË#pŠ¿/~*ÿÁL|â¿Ù{öËñ'Á+ß>:|"ý >,þ×? 4Ï u_ê*ð%Ãj_~2øSÃÞ0ŽÛÄ~ÆŠ³¡ë¶¶^!Ðî§Ó,<má=-{JMCö³ýž?àµì¿ûB~Ì!ÿ£~ÁÑŸ?|øðûÄwíû9]ßør?xSTðÜ~ ³³âdÞÜèjjØÏ4V÷¯j-gug5ù +ðÏŰ-ìñûP|-Ö¿i?ø!çÂ?¿`ï²7ÿiðUÛosxÿ]øàäÐmf×þüBðn/Á¯ úÏìô¿xJð÷>)k:£c¥XøÚÍukàÜ}Gþ +KðàïÃ/Rü\·øã¿²ÿjO¿ðš>ë;áOÂ}S@ûwãÄ_[$ðxœŽ}+GTñ6³oáOKájV^Õ^Ó ø÷ÿAýŸxò÷á~§mñâÄ?ÙãõhðÇÀ1øµsqû?xYñöÄÔÔ|5g. gáœ*oþ"VœÕu]:4[ +ØØ6¡x¯ÃºV£ø +ñlÁ;n>/xã&ûeÁ¿j«o~Æ¿eoŸ3ÿÁQôÙóFÑüQðÛÅvúÄŸ=øi¥|Vø[ÄÚo|CáxÆ4ËKÐ<A£ê]Ük>ºúÆÿã¯üîo¿Ÿ%è_ðR¯ø%7<ñ'þ EðöðgtoÛ§áêø+âOÃÿþÒZýÒ®oíR_ºfñÂ?|BKâëá£ë +šx#LX¶¢ú£ð+þ +yû,þÑ_< +ðßáÕ×Å>.|3ñ_ůÿ<kðÆþøCñ×Á¿Ç âïÂ_ø¿KÒ!ñKø&/øzïX±YXÞi×êÞœ×4«+ÛØ6>ÁG?gÚÆz7Œßt¥ñçÃ|aø%âßü8ñüûDü'ø«hz?Ÿ ü×õX<] hø«ÂWì¶Ú&±©øsÅ~ñv¥j~ÔáÖ«ñÃ?àfßþ Y ø×þ +ÿÁžðÇìeûüký~>Ç ~Ü¿×Tñ.¿ñ[àÀ1ê ä»Õ-áÔô}Cá®î5/·õ[m>÷Aº·Ðonç¿Óôß.ÿ{ø»þ Óû%ÍðÏÂ^9ýš?àúŠð/àï~x7öÈðü/FÕŸ+øÓ÷>°ðšÏû:xÃCoü1Ö<g èÚø«~4ëz5ŸŠµÇ /ôÛ=7GýøÿýiüÐ~XüzŸÑ?h +ø»_øñ'Ä~!xWáÅÀ^œøã?^ñ¿ŠXÚøâGü£øSÔôm..;¿ø¯A\ÄZî«ÿ÷ý»ŽÛÿàþ¯ñgGø1ñkàÔ7>%ø"M?âO5K/Xß>'|(k¿x¢÷IѬŒGx%øm5ïŽ{??áöœªÿ«Ü^j|·??>$~Ãß +~ÿÁü%âø*§ü®ïPÿki.³øë6ûqü"ÇÅøö/ø»û:Z¿Âi/oŽéõÔOøÿHÕ®ÆÞu𵟧ͫÅk¡Þ}'ÿßý·?bÏÙ;á_ÄÙóâßüþ Y©xÃ?h?_>#|?ý¿þë>%ñ׿h/ÚâïÇÙíþ&øÄ +á}?áÇ|sñÛÃgðßþ$é^!X./ûG[(¬ýQ_ÃØ¿à_ôÏØÿ#öuÿçGü=þ eÿI,ý?ñ2?g_þxÔ÷ýðü=þ eÿI,ý?ñ2?g_þxÔÃØ¿à_ôÏØÿ#öuÿç@Ñ_ÃØ¿à_ôÏØÿ#öuÿçGü=þ eÿI,ý?ñ2?g_þxÔ÷ý|ûÿÉÅÁX¿ìÿþ묿àtÃØ¿à_ôÏØÿ#öuÿç^ÿåø±ð³ãÄÿø*/Å/þü`øeâÛÿÁðüEø[ã/|@ð'¿±?à_ðN?ë?Ø^.ð¥«øWþÈñªèZö~¡qö +cLÔ4˯*öÊæ?OëàÛ#þN+þ ;ÿgÿñÿ]eÿ,¯¿ëàÛ#þN+þ ;ÿgÿñÿ]eÿ, ¿è¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢(¢ñÿß>|Uð^µâ v`ðÆñö øoªAý÷üGø7ñ÷â_Âw` U.?Ž~.øÇöÙ_}«þIÙçÕ€fö +ùCö1øCã/<aàÏÁ§Ûëz×í_ûyü^±L¿Q¶oþз/íñïáÌò\Fš±ê?~%x^çV° É¥j²Þé³ËfîßWÐEPEPEPEPEPEPEPEPEPEPEP_ÁFtWZýŸÙèúf¡«]ÃûwÿÁ,õitË+ûŽþ +sû!ëºî§$±Ë,z~¢iÚ±«^²m;J°œÔ/$ÒÖy£ûŸŒ?öøß¥~ÏÐ<y¬hzm5ÿ³'Ál4Ëk[}Wöý€ŸþÍÚ¹$·@ÄÚ5¿úukeiŒÒŽÛK2.çp¢(¢(¢(¢(¢(¯?àòn¿¿ìÿÿà¬_úôßÛ"Ÿÿ¯?àòn¿¿ìÿÿà¬_úôßÛ">ÿ¢(¢(àßòߨßþÌþ +Yÿÿ¯¿ëàßòߨßþÌþ +Yÿÿ¯¿è¢(¢(¢(¯?lù8¯ø$ïýÿÄýuü²Ÿÿ¯Îø(¿?Œ}ÿæø»yà4ðOÂÛÅ~,ø'ÁO¿h_xOŸ#ÿz~Þß +4jþøâ?ÄI|?/ÄOþðÖ³cá[;KÔ|Q¥RæÊÚsp £ôWç?૲_Œ+âoxëÃß¶ÿüà¿ë>,ñ|Yÿ¶ÿxsŸð¯4ëcÄ>&ñ7uØþÏHÐ|?¡iwг¬êºv§ZÜß_\Ám²¯Aÿ,ýèþßÿø©ßø*oÿAœ|-û~Ë~0ÖàðKÚ§öUÖŒ5ðçöŽðü³ö(ðæªÞ&QÓþþÒßl~ü=Œàíºªê¥Ú5ÍýÿÂÏ^xßà¯.5MÃÄ^×|yð÷ÆßŒÈ\¢UÊ©uF.ø]2êB± E'høþ á?xþ ·ÿùð/Œ3âøÛÁ±ì¡á?ø;Å6£áÏxOÅ^ø +àÄ>ñ7µk=_Añ «ÙÞizΪYÚê:^£ksc}mÌÄ¿oÐEPEPEPEPEPEPEPEPEPEP_~Æÿòq_ðV/û?ÿúë/ø&}ÿ_?¿hÿ ~ËÿµüFø·ð»ö¿ÿ¡û_ü7ø¥ð÷Ä`Ûöð'< ÿíýŸÍ®è_þþÏ?~ÞýâÃ/xOSÓ#ñ7öƬxgP¶ÔŽûOôvõúŸý²?äâ¿à¿öÿÿõÖ_ðRÊçî૲]ŽoÞx{ößµñ·ü?âox{Á×?ðKoø)ä*×|+àœGÂz?|M£xz_Øýu}SÃþÕü{à]/ÄÚÍúvšøÓÂv:¥ÍÏôx¯<â/íá/Úö¢ÿlèß >~×ÿñkÿkÿŸ!xâìûq~Ïþð?áÝ¿·ÃuÝwâ?ÇïÙçáÃû/¶ü@øà? éd&þØÕuiöÚnwþÐ~¿QEQEQEQEQEQEQEQEQEQEQEQEòìcñ{Æ_þxÃÆ~;OžÖô_Ú¿öóøCc&alŸ +ý?n_Ú+à'Ã$·dÔ-Ÿü5ðœ¶~HUÕbœÔåTñÑ~¯¯øðßáǯë^øWyöÿj?h_€ÿÛqxgÄ~%ü^øÇgöøYßû;âï|q§ÿb%ðÏÙáR}&E_` ( ( ( ( ( ( ( ( ( ( ( Ÿpýª~j¿ŽÃøF×4ÿ]èŽìqñŸkýNÞæêÚãJýkÏߎ»¡Ç©®¡â}áF¡á&á¿Ñ¬õ]ZÊîðH'èúøÃöôñÿŸüð7Œ âCÃÞ£ûgÿÁ7ü}©iw7> +ø¯ÿý>üFðô$r)Óü]ð÷Æ>(ðЬDiZÕìqI¬ ÙôQEQEQEQEQEðüOþM×â7ýÿüÿ^ûdWßõðüOþM×â7ýÿüÿ^ûdPßôQEQE|ñþRûÿÙÁK?õ¢¿àµ÷ý|ñþRûÿÙÁK?õ¢¿àµ÷ýQEQEQEQE|aÿ ðŸ+ÿÁ<?oO ¿|=šx»âįØÃö£ð<)€€rjŸ'ñ~øçßðö²Eµê6:mI,qµÍÌjò"ÃìúñÿÚÆþ|øããÿÿ «ñwÀßþ%øÃá_Âÿ6X?ád|GðÏõkÀþóàxçþÙi~óa%ûG|n®¡°PEPEPEPEPEPEPEPEPEPEPEPEPÆ9ðµø(ì¹ñJÇÃÚ ÏÃß~Æ·§<QâžÒ3¥hŸ2øñÃþ ¿â/xzöC uè +>#jZb$OÞÕI#hâY~ϯ֌añËãïÃOi~þÑøEâoÿ|aãl«ÿÄxÓözÑ~øÈ þG>!ücñ$m,?ðª¶Bèβ{QEQEQEQEQEQEQEQEQEQEQEQE|!ÿæÒu]ö~ø g¬iw7íßÿLÕ¡µÔì®l.eÒµÿø)Ïíy®èZp]G²iúÖšéúÆzªmµ*þËP³kKš&îúóÿ0׌sáÍKZñŒAðßP²øñgÁöþñ4¶sj:ðóâ§ŒáoÛ=ŒáÿŸðÎñCÂq;Ë +øÃFQHõî£_@ ( ( ( ( ( ( ( ( ( ( ( Œãü)¯øBô_ø^ßðÿÂÿözþÃÿÏþÎÿ Ëÿ÷á§ü3ÙŸÍûÏøH?á¡?áXÂ'»÷ðc}«ýί`¯?oOxËâWÀÿxwÀÔ<Oéß¶üÇ÷ÚnÉsmàß ðPÿÙsâÄoȲI?Â?|âêÎÉ¢ÞÉrÊ©}EPEPEPEPEP_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿ_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿEPEPÀ¿å)¿±¿ýü³ÿZ+þ ;_×À¿å)¿±¿ýü³ÿZ+þ ;_ÐEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿ_Á4ÿäÝ~#ÙÿÿÁX¿õé¿¶E}ÿEPEPÌ?cߎ§ŸøëâRü`Ò|mð·Ãÿ|'àüýŠ?i_ÙÅZo ~*j?5Ô<Cû6ü[øO«øÃþ%Õþü9Õ.Žo^k:uŸ£á*úÂÚÒå&oÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"øvìëÿEöÿÿűÁSú2+ïú(àøvìëÿEöÿÿűÁSú2(ÿiþοôQ¿oÿü[ü7ÿ£"Ÿÿ¢>ÿiþοôQ¿oÿü[ü7ÿ£"Ÿøð#áì×ðÏKøEðKñà'Ä?ñdqø³ÇÿŸ*x«RñWÅO^)ø¯ñÄÞ&øñ_Å>6øâÿx¿â'ŒUâgYñWµFãQÖn@¹Kd··Ø( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ÿÙ \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/authorization.jpg ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/diagramme1.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/diagramme1.png) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/diagramme1.png (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/diagramme1.png 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,413 @@ +PNG + + +IHDRïsBITÛáOà pHYs jw IDATxìÝy\LûÿðÏÔ4ÚÐf€D)kYSpekH-\®p¯åº×v-Qn"ûvo(!{ÉnÈNms~ßwŸó3¥Š93õzþá1}ú|>çÝ)ç}ÎgáPEjmÐ A/^d; +š¿víÚ5}út¶£P\¶:eÐ Alõλwï<xÀvJ HS||<Û!@œsüøññãdz ÒPa;$õz @= AP šGÔ#تåÛ·ok×®e;:ÈÊÊj lGõ`GllìâÅ322LMMW®\9iÒ$¶#ïøöíÛ5kØ¢rssCòØáîîŸeËqãÆåää P"øý÷ßÙ¢(,,tttd; +šw;ôõõߟ}Ò¹sçCB=zäíí}ûömSSÓÐÐP;;;BÃ;wîÎ;ïß¿ïà८®^\\lffÀçóEp8¢èCЯ=²ù×úúúô[£vïÞœpáÂÁ^MÂåçç³ÔGìþ÷ßçÏoddNñðð1cÆ×¯_Œœœ5»wï^\\laaѳgÏ={öBöìÙÓ«W/Ê {Ãr¶jÕªË/Kp)¯WÿlQÛ`P4èâÅ|<xàààðáÃ55µòòrºÃáðù|úEYYË%$''O81==ÝÒÒòرc¶¶¶Ì&;»|>_UU~ èj#//OWWwôèÑ'Od;ÿ§¢¢BNT~~ŸÛ©S§Ø@¹?~|üøñ»ví>}:Û±(<vž»»?yò€€€äÁ®]»îÛ·¯°°¢(á«:Áµ{>}mmmÅ6100-..þ믿=¥ŠŠÚØØp¹\CdddØÙÙñx<ssó€€$BÃéÑ£ÇÄÍÌÌ&NHp855µ®]»ÆÇÇBnߟmee¥¡¡±téRAWÇßß_[[ÛÚÚºÎéOÐ)00ÐÔÔRžó*mÅ<:3Hkkkú':þŒM5[È`Ç#F©œråÊBÈáÃ8 ¯¯_ÅõÙâÅ/^ŒžxñbúKfM6¹»»btµ¬M6ÍËËΟèwww??¿¯_¿úøøÐ aaaG!PEQÔ·oßvìØ1uêTB··÷Œyó>}údff&ÜÓŠMßœ{×»wïÊ:§KwXYË->}úýû÷KJJÕŸûÙJì&€Whh(!$44ÔËË«X@HÃÀñqªÛ>þL=z4ý%Ë¥¯þŽÆbü»cÇÖ[«ššêp¹Ü¢¢"¢Ð}iiiÕSB È_¶ššš#G¶k×®aÃ+V¬®V£V]8ÈO>éèèdeeéèèäææV§U^^!ÄÍÍí»'ªvìØ1BÈ®]»ØD9à HÂÒÒ244Txm%kkëèèèââbêq [žpáÎ; + +bbb(¢û9pà@qqñÑ£G kª©© YÎÐe=ý¥StttFFFddäŠM$nUÙÑ ÔÓÓstt3fÌСCuuu«Ù +@þ$ÂÂÂöìÙ£¡¡!¯uàÀ-[¶èêêV1kéÒ¥'NlÑ¢ÅÃé={ölÙ²EOO/##~2 Vu:gL9ðööÞŒy3PE?ÌVÕ<º··wJJ +=þGâd +«tHŒ +(®Äçó£¢¢.]úèÑ#©w®°° +Ž` Áê(À2úy6mè}@ŠËðà@0 AP šG0ª ^ÉŸšš(;;íXê¯_¿B +qJ±±1ÛQH T}µzöìYSSS¶c©SÎ;S + \ŽŽŽ + + +Ø@rH Zx<!D[[»ElÇR§èëë[ZZ²TWtttQQÛQÔ +š + + +B£££,6Pœ{÷~ðàÛQÔ +&Ô#Hê$õz @= AP šGÔ#Hê$õz @=Âe;ú...îÄlGQ[ööölGße÷ïßß³gÛQÔEQH :`À¶£ÄË/û÷ïÏvP]HBóæÍMMMåyDC¿ (JÇva0@] ž¯>¢péP)ÁgÏ%$$°E¢=a¶£Ï + +e; + Ч§çææÆv žu믯/ÛQÔ)&&&JTTTà#Qµ.]º PR©©©ÞÞÞ÷îÝ«šš oÏ'''ûúúfffôéÓÃálÛ¶mõêÕEmÜžÑÇÇŸýOÿ+ž©Ïáp,YÔ®]»ÔÔTf?bÈÈÈðööŸuëÉ={úõëÇápû€_wþ÷ßËáÌÈÓäÉ?þÌvÒסC?ÿüS ¯¯ïÀÙ¢.?>Û!HG.]üýýÙBM>í@rÓŠMóõõõõõmÐ ]âãã³páÂI&<xÐ××÷áÃ.séÒ¥)SŠøøøP%|.ÐŽiÓwïÞýüóÏõÃäîîþÓO?=:11ÑÇÇ'33³²P ;šc.\žðîÝ;¶£Ÿ¢Oh={öTêÖã_~©šš`; +)hÞŒ9>bÍ;í*:kÖ,¹.00°Gr;T€§§{yy ®þ !&MÒÐÐ<yòìÙ³éÂéÓ§s¹Ü¡C~üø±ÞæÎ«ŠŠ\Y?Liii'O<y2aÌ+(//Ûù¿ÿþ[ó@ÑYYY¥ŠŠ² 45lØ~¡4 Ô_Ÿ|¹qãÇãñx2=Piiiiié/_dzY°ŽŽ + +>}ºà>|xÒ€I277§¹\Ñ¿Þ</;;ÛÄÄDžPMMMðZl?CCÃúKkkë+V<X]].100ëׯ_XXXeÔ=GÖÿ[±«Œ-_ŸükõT³ŠU«V±ýSJ(,,lÏ=»ï!!!7onذáÖ[CBB*kèççgiiYÅZ@õ³jÕ*z ?ýå¶lÙ¢««Ëápèµk×?ŸeËuãá! P ݺu»{÷®`0!ÄÎÎ.==œŒŒ<==¹+<Ö_ðzË-ÅÅÅb¿UY?ŽéÓ§*[XX\Œxî.ôõõýüùó§OæÌ#šõCz °ÃÔÔ<EïaggÇãñÌÍÍèjþþþ7oÞd3\º °ÃÁÁáüùó'!!^ä×ÝÝÝÏÏïëׯ>>>t533³O>-ZŽÈÛÛÕxê$ÀFGGwïÞ=**Nè(ÕÕÕúôéSº»»»ÆÄ?~ÌjŒu`à &Lïàà@±¶¶Š§òù|ºÚáÃ9ÒŸ}{Vãš#äœ@zzz~~~<yòòìÙ³k×®Õšaà +;vìX£& ïÞœËÊʪQz7¢ŒŒŒ~$!ݺu««kú*-[7nÏ=-ZŽ 8p`Ö¬YcÇýöíùÏ:3?ÖÓÓkݺuxx8ËËœ_AFFÛ±HâÍ7÷ïß~%»wï]Œùóç?^ëׯ_¿~}ØÚÚ&''Kp,§3gJÐðÆÂKVSNNNË-%8ÈBFF!äÑ£GôôÂè`ãÆòMè&úé'¶©èèèèèhúõ»wï6mÊn<ŽG ÖŽÕׯ_ËËË-ZTÓsçÎ566®i+9cg'àåËW±[TlذAŠýt¹¹¹YYYÉô÷ïßé!$CÿWÑ¡C]]]¶c¡¡¡ Å?ÿüóðáC¶cø¯¬¬¬M6IаššHcÆA Þo¿ýŠ¢"Ûé[¶liÿ ]&L;v¬LñâÅ$ èUPÿüóÏañKm={ö ( ~úÉÝÝ]Š + +àQ+ØIÃQðý/kášQ£«®ÃårO81`Àɵ€ø@Ô²eKkkk¢yóæ2í_êã*@gߟ}Â_V¿m®œd=ÌIê + + +òòòÚŽicV¹O> +>\² ++66¶sçÎ<ÏÂÂâðáÃlu¢]iÔÇþüùs¶£PP·«Ô¬Y3ãââRrww÷þùË/§O>}ú4Ûá@¢hWõ4 + +9sŠ`¡qÃáp¢££?~Ü¢Ez9Ââââ-Z<~üXpSÿÚµkíÚµÓÒÒò÷÷ +7§éBÈ£GúôéCg~W¯^%ÿû|@žyóæ¬SihhøúõëøøxÿúõkÁòÌn !þþþZZZæææ7nÜæY#¢¡¡UÇr}}ý·oߊ€€4oÞüСC€+xwÄ~6ªó}Iåo±üß_:Ö¯4DÔÓ9VVVCÙºuë Ëéí._ŸìééÕ³gÏ={öÌ3gÏ=œzõ²°°Ô>}ú §N*<Hž9EQÂõ=<<üüü.^ŒèííM¯~(V÷îÝ Klll>}ºuëVÿE ö7Û±±ñöîÝëëë{ïÞœÚ,AEEE9;;»žžDFFþðÃR?EGGoݺõäÉÛ·o:ujeïýª2?={ö¬Î[Ì|Iåo1+ï¯L}úôrçÎÝ»wËô@7oÞ$>}úÙ³gwÒŽiSWWWéõëW¢(ù¢/+**d} MMM[[[±ß"ÿ¹R:tè'! U«VôòDôµûÕ«W + +Zµj,hKQªªjQQEQ t!³¹ðéårÿk|·¢¢BðRVV&ð¯¿þºhÑ¢víÚUTTŽmÛvÑ¢Esç΢[A`\.ùã=3&ðùü*N¬©©)ý">>^SSSCC#..¢šJöqÚ¹s'!äøñ㎩S§Brrrªšsÿþ}JÜ¥þ÷Ýa~6ªó}©Êßb Þ_¢ºté"Á)ªÚçÏ !£G®M'Û¶mûÎ$EÒ»woiœªÑËÌ9sF>©'BÞœ{Çv ²Ò«W/---¶£QÇ#ìÚµùBÈæÍeòeË!ׯ_¯¢[W4×·o_¢êéBÃÙ¹s'}QHó÷÷²··wvv&ôéÓÇÈÈÈÙÙÙØØØÖÖVž¹¥¥åþýû=<<OÍÕÔÔÞŒychhHéÚµë9sÆ«©©I×700íß¿ÿÞœ{ {~wi666ãÇ_œzµ×ªU«éo1»%³ŽŽÂªÈsÙHÜÝÝW®\illüàÁúWHì%Bïó³QÍ·ùþÊßbß_iݺ5!€wïÞœ{÷Ãᬬ¬7n,Y[á?µÁúšÚ§;5¢8Ohaaa/W¬XÑžqãÆ¯ZµJPAiܶm[MMMz ØæsæÌÑÐÐ _gff4H]]]pÚ÷íÛ§¯¯ßžqãßÿ=`üâÅ55µ·oßRõæÍ.{õêUú[Ìn !K,ÑÔÔl×®ØTZOhç]»vìã€O>lnnÎårÍÍÍO<I;±ãÝùlTç-®ìUöKðþRý^gvõêÕÒJvŽŽŽð@xu(&ÀúMð ///_Æ444*K€š€€dÓŠM={öõ€Hº õ@UUµ6 ÀŸ}ûdý ¯KªT7 +$AuÅ€à `y+Ç.z víÚ ³è±@NNNߟ};þŒds§M6mÚ4i@!·nÝ^žEhey'}úôÑÒÒªQÛ·owíÚÕÄÄ€F + íª^nÈÊçósssE +><qâDggçšššåŠŠŠ®®®ùùùÕ«Íçó£¢¢6mÚ§OêFÊzåèÑ£Ge; +E!ï_#G8q¢"iÒ€£££Øogffnذ¡F À!C5kŠ¥¥åìììêê:`À55µ*ñx<kkëþù§fÑ@=Óµk×ðððË/Žoß^xíü*Ì;W[[{ݺu5=YÍc·ú» +HæÖ[U|·¿T"Ÿ~ýêæævüøñ¿þú믿þÒÑÑ>|ž««ëСC6l(i€€eË'N?~nn®ŸŸþÈ#]]]"²üEéèèL2EnqÊS=Ý Þ={>þŽpáB}}ýÃ7®IF yûö-Û1²RQQ9yòäŒyó455÷ïß?jÔš&MžººîÛ·ïãÇlGÇ$ (TUUûöí»iÓŠ§OÞ»woÍ5;v<{öìôéÓ[¶ligg÷ç>yòí0@Éššš888lÛ¶íùóç)))+V¬hÛ¶mdd€§§góæÍðï¿ÿ²dQH6æBCê£çÏÌ ÕÔÔüôéSeõ²êÌ{NHH ;ïÝ»wBBÈw/\ž0räHBgggzõ.N:Ý¿ÿáÃ<ÏçWTT$'''''/^ŒØÊÊÊÉÉé»aSzzzvv¶Ha§NZµj%RúæÍÂîÝ»7mÚT€ðúõëÌÅ!ìììK;$%%8P°®¹ÀùóçËÊÊD +ª¢ò?7.ù|~ll¬H5555æTŽââbæIÚÚÚýúõ)ÌËËKNN)Ô××ïÕ«Háû÷ïoߟ-RØ¢Ezca/_ŸŒÿŸH¡HáÓ§O333E +-,,ÃÊ>|øüùsÂÎ;Š€€0€÷èÑ£I&" bßJ{{ûF^ºt©°°P€pÐ A +4)+//)6lÈõkEEŹsçDªñx<zraEEEôÒÂÄûVôìÙÓÚÚzõêÕYYYW®\¹téÒºtéâêêêââbmmÍì°Nay=Òj8rä!$$$í@ê333uuu»ÿ5hÐ ê{ûTçÓBiÜž1Ýç3nÞŒiǰtéRfÍØØX[[[KKËŠM +æëééM2åøñãGGÇþèõö +ì ì à~üñGæÀ={5ÇϬͬ9`ÀfÍ[·n1k¶oßYóÅ̺ººÌ¥¥¥"ÕJJJÕôôô2¯ !VVVÌ7oÞdÖtppTìŬ9qâDf!!!ÌóçÏgÖ\³f +³æºuë5çÌìƬ9fÌfM±púöíˬ¬ٮ];fÍW¯^1k2"nCØ¢¢"fµ&M0;ÌÊÊbÖìÔ©sk×®1k<ÙçáÃÉÿÞSoÒ€AeÔ䲌FXÞØÕŒyó+W®ÈšóîÝ»ÇÇÇWöÝ=z|÷Ð>}HKK£ÿ"»žžžººöë×Ëå2o@užžž2ïmBŠLÒ³gOBækBȬY³f!K,aÞ`»5Ð5k÷ô"%7o)d>O èêê2kêéé1k¶jÕYSìÓ¡CfM±K÷êÕYÓÆÆYó~`ÎLµ··gÖ5j©©©Ha=5=<<lmmE +Å&c~~~®®®" -[¶dÖ\ºt)}WHØký?þø£ŽŽT€9|EMMyĮܧ§Ç¬i``À¬ÙºukfMáÏIIÉÅ#""èE)jԚѰaÃ\\\.ÝÕäSSSœœœïÝ»G'?t!}Z¶l,üK$RÃá7¡€²œÙá tIŒpu>-úaþý÷ßp¹ÿvêÔé×_œsçHHô<šHHOJvvvxxøãÇÙ€NÁNÀ©EäååÑk2CCÃ3f9sæÛ·ojÍ5âÎ;÷O«ššHLL455¥.ŽD*_ ^Kv +' @Þ¿ïèèx÷î]Bªªj>}èxJ±.ºuëÖÔ©SÍÍÍÙe¯^œHLL€ï$ZXXÌ5ËÅÅ¥W¯^"ÓK€.==Ý××WxĶmÛ6oÞüêÕ+>/òHYÆçó¥`_&M +\]]ÓÂû÷ïSSS+Û)ØRVVfnn^TTÄápzöìI+¶ŽŽ[:t 9sŠà²Þßß?**ÊÞÞ>>>ÞÙٹʱ±±ýû÷ß»w¯Žâw0yòd F¯Y³FìÌ*ØØØ`§X©$ŠôJ*ÏþãСCË-#€¥¥¥¥¥^œº:=zÔºuëîÆÍ7¯qUzöìÙüqàÀ¥K"P(ùùùO<<y²ŸŸþ Aèi' ÌEW]G,KKK---ÂÐÐPOOÏð,^ŒxìØ±T]yÓŠMîîîååå-ªi0wðáÃ/^<.]O>;m$ Ý+~/^Œ044ÔÖÖÝQ!ïÞœûòåKEE LõàÒ¹Î(+W® _¿~}õæææW]µëׯ3'ÖÛØØ€¥¥ ¬^œZpÓsåÊDèrK€²ýzùòåôZ^±3(##CÖc¹(²mÛ¶Ñy°ìxxxËôõÐÑ£GÝÜÜx<Û°@øÒ¿]»vîîîô_pP@àjŸFÄ®=ª0$ôòåËI&ñx<WWWgggCCC¶áKÿÎ;¯X±ÂÍÍíÚµkHÖ#~úé'bùòåÊÈö6<Ôa¿ÿþ{çÎÏ;7sæL###[[Û +6<~üíÐdåÙ³g^^^íÛ·³²²:yòäÝ»wG]Ë-Ùd€M63gλx?ÔgH@BË-»yóæ/vìØ1hÐ ;wîøûû·oßÞÒÒréÒ¥7nÜéyÂ¥?(#ààà~ýú±(šJJJºwï.RØ©S§°°0Â7nøùù0ÞJ¢šììlBHaa¡`vBÑìÙ³gÏ}äÈ€€€õëׯ_¿ŸEÎÎή®®J:U@ìÊ®û?þejjÄ:¢š§OÝôŸžžY¹E|YYµµ5!$66V°AÞ§O«éèèôïßêÔ©ôjjj¯_¿Þ¹sçÎ;µŽŽ&L éÏÄ¢|||öíÛWQQÑ AzÆsÕWöAAAAAAÃWUU¥KvìØÑªU+j^^^?~|Y÷-2eÈ6Ìu{}||Þ¿/RxðàAÁöcÆ¡7î°··_Œx±âš_(æMbP:êêêyyyÕ©9`ÀêÔTQQ:ujxxL{ï IDATž©©éàÁéB±ZZZ£FÊÎÎ~þüynn.!ËåÚÛÛÓ»®<þŒ&?Ë8Î+ÔÔÔBCCKJJ~ùåñãÇ.î7næÌAÉ +Õâãã_Ÿ|)øÒÁÁAº³...N€díÚµÌj.\ , ¹Ð§9sŠžžXžDCC£V!ÔcH@··7Û!Âár¹Û¶m·±±Ùœ{7³ByyyRRRDDDddä/!ôEÿÈ# +èjÊB.]ºnݺÐÐÐÉ'¯Y³æ×_, +={ö/¿ü"\¢®®Î¬öøñcáÙAAA REÙÙÙ"[z=éééÌY"b¯ì FGGK° ÐÀ-]ºtÚŽiµ]·nÝÃ<}vëÂÂÂsçÎEFFÆÄÄÐ÷ûõõõ=<<\]]¢©©ÉvÒQý4ËåVç§¹ÆâÒÐÐà<TAž7MMÍ)SŠH ažmhhèÃ'O,Åx@Á=|ø°sçÎ|>bbb2eÊWWW{{{.·nþa©éÓÖeffFEEýðÃ]ºta;P ìü?=bÄY/QRR"ÓþAºÖ®]+ë¹÷îÝiÿõ íàÁ]]]»víÊv8rRYÀéÀº{÷î-ZŽ(88 @YYÈT"YBŠýK; @ll,+Ç u÷îÝ»wï²ÔËœrå +ÛQ°æ9ò÷÷÷÷÷g; +E!ïàôéÓ5ÝèøñãSŠL öòòªQC¬Ã|}}===kÔ€¬¬L[[û~©éáÔÔÔjÚ 2"iÛáÍ59rdM[?Çãõïß¿Š +uttjÚDþäHpùE'ær¹JºTMEE¥Šï,ÚIÐ@Ó|&M÷îÝ£££kÚªyóæ4T +us®Ñi=%dêëׯvvv.d;¥@jTTTØ¡î+--ýç0@bø¿ + n²²²ZµjU÷îÝÙÔMVVV+W®d; +P8xP šGÔ#Ê€Q£FçÎkÞŒ9Û(+¥IN8ñøñc¶£š>}ú€{Ô}×ãÇ-ZÄvš°°ídHMMmÈ!lG Ä&c;:¢n$ÙÙÙ6mb; +ÅuïÞœž¹¹ÙÚÚ²òyòäÛQHSYYýB GGǶ£øŸ÷ïßýöÛolò}<íj Ëå*ÔG",,,00088žW¯^lÇòÿ444ØØ¹iÓ&333$5ell¬©©IQÛH¡¡!Q@WWWWWí(Ÿï¯¿þJNNîÔ©«gU©q8kkk¶£ø¯sçÎBÚ¶m«PQÄnÞŒÉv2U€&"""77÷òåËlP)$ÒH`;Ja°t9sWÀápØ@qìß¿í(Ÿ£šší@ŒüüüáÃ8pÍ5lÇ H}ãßÄÄ$;;;55ÕÆÆí©©)!Dñ§UŽhÑí(@òòòääd###¶PVH€ €€$66VGG';; ^?~Œµµ5fWGÏ=³²²Ø Ÿ°±± îׯÛbÁ)žpáÂׯ_[·nMÑÐÐÀ4úÆÔÔÔÑÑQ__í@þG6mfÎieeÅv XH`ü!ÄÎÎîÞœ{žÇ @mñùüèèè-Z4iÒBoPÉv\b šëׯ¿}ûÖÙÙ^ùgàÀªªª @mÑ×ú...ôºººöööW¯^ýðá«qÔM:::iii7nd;e Uj+22²Q£F€(ªM6zzz®®®.]ñôôd;:PÙÙÙ÷ïßg;ÚÊËËõ!TUU;wî,ë£ÔaHj%===33s <oذaà +#žžž,X° "" @=qðàÁ;wnݺµGlÇJlöìÙluÍÍ7===Èv, @ÔÈø©©i.]Î?_XXš¥¥ÅRh ?999W¯^ÍÏÏg;PV666?þø#ÛQHÛ!!ŒxñâàÁvvvH@Z9sæÇ>|žH¹««ëêÕ«FÉJ` k999»wï1bD¯^œDŸååååééÙ·o_VeäàààààÀvP_ šžžžFûøøž¹¹ajöôéÓ5kÖäçç$éééaaaEEEH@1a ZQSS1b³ÜÈÈWÿuœœœŸŸ~dd$EQÂåô®®®,ÅðH$ÁårGùüùóÔÔTáòzF8[Ôy?6337oÛ(+$RsäÈyóæ}üøí@@NèÛü»>¿zõêÖ[7f/.:Ïçgeeœ{÷í@©IHHüòåÛ2DSS3""ÂËË+55µW¯^QQQEaü([[ÛþùÇÑÑí@@±`0455øáÈÈÈ®]»B"""8³³3Û¡BHË-[¶lÉv pð@r£òóó{öìÙ¢E¶ãšÉ9RUUÞîÌ3¥¥¥ÿ + äìíí¯^œúáÃ: +@ +sjÅÕÕõÒ¥K'O<{ö¬ EûöíÙ ÓÕÕ}ûöºº:Û(+<ÐÐÐ&M°È!dÕªU_¿~Åí9PQQiÖ¬Û©±³³óôôlذ!Û\véÒåýû÷ã@Á$%% +2$&&í@@± š-úºßÐаgÏlÇð_ïß¿?þ|NNÛbAP[tàì쬢_(Ptž^š®]»`ü(¬ +mûöí>|`;ïkÕªURRÒÕ«WÙäûŒœœMLLØXZpppFFÛQTËåËÙ¡ZZnn®±±±[xx8Û±(%$R³k×®.6kÖíXêšš(¶£šÂÂÂBBBØ ¶(*,,,))a;e @jîܹsâÄõë׳H]ÃãñlmmÙ¢.g;+äää6mÚ°($uŸŸ>n VšGÔ#H@Ép8¶CPbÊD__Ïç³Ã©7oÞ3g7oÎv B 5;v6lŠŠ&ÛBÈùóç;wî|üøq¶Å nÊÏÏ¿ÿ~nn.ÛbÁ?J°Õ/_=ZÓýû÷744¬i+`× pµ*Eׯ_'€€€8qíXXÓŠMû÷ïÏvÒä$33sâĵ áÙ³g(åËßžqí(ê¶£Pb/^d; +iBr5bÄ"..îäÉ2=ÈN +¶mÛVE¢JKKUTTÔÔÔäJIIÙœ{÷€IúõëÇv,ÊjÖ¬Yl }H@®¬}}}ezüü|$ÊKMMmÆUTøôéÁžqã;&·šÔÉ'wïÞÝ·oߪO)T HàÝ»w÷îÝËÈÈÈÈÈxÿþýÞŸ}[^^^^^^ZZÊãñ޵µ6lšmfffllldddgggff&·HÍþsäÈ-Z°(CQÛQä(JLL9}úôãÇEŸkddÄårÕÔÔŽŽŽJJJ>~ü]XX(<=RWWwàÀ...ÎÎÎ7iŽì$töÃÊ¡eçÉ'IIIߟ}c;šðæ:oذaYYYúúúlPÇ8qbéÒ¥Ï=#4hÐÀÙÙÙÊÊÊÆÆŠsçÎýVTT<yòäñãÇÙÙÙwîÜIII9uêÔ©S§ŽŽŽ~üñGÿ +Ê(`9%!!!·nÝzðàAZZZ³fÍ6nÜ8nÜ8lçrë~š?ŽŽŽLMMÙ 5kÖÎ;555}||ŠOÞ£Gj6TUUmߟ}ûöí%¹¹¹;wîܰaÃÚµk#"".^ŒØ¬Y3YÄ,}(2eʬY³BCCoߟmkk3aÂ~ýú¥€€È!véÒ¥9ÕÌv€2ÇápæÍ'xÅáp8Qtt4ýåï¿ÿ®««Û¬Y³cÇ\¹ROOO__ÿàÁGõéÓÇãYXX\œzîÁÐÐðõë×ñññ'>>þõë×M6%ܹs§K.jjj]ºtIMMeߌyóœ{÷Êù$ÄvîÜÙµk×/^Tÿê_,==œeË}þüyöìÙéééëׯV"äñ`Í5Géß¿ÿ®]»ÌÍÍ9ÎóçÏ/^|üøq{{û·oß6jÔHaíþýû;vìønµ}ûöÅÆÆÚÛÛË!$y<t¢tïÞœžžXPÂçó/_ŸìéééääDÑÑÑyýúuRRÓæÍ_œz4uêTwww??¿/z{{gddBlll>}ºuëVÿEuìØâéééëëëåå:mÚŽŽŽ4C8pà?þ8{ö¬µµµÜO HèÀ!CHq¬Ê/¿üò×_=yòDZ}ypúôéU«V:uJpjZ·n}ìØ±:¬\¹òäÉ^^^²D +4š²ïzxx€ŠŠ>üÌ3u,4iÒ$UUUBȶmÛèK|>/HfÏ¢¢âèèXVVæççG¿~ÿþ=!$55uÚŽiÓŠM#BIE·nÝbbb<ymaaqúôi:xôè×O?ý$rhB··wDD®þªCEE¥yóæ:::lR7{{{³ ¬_¿ÞØØí(@¹Ñw±·nÝjbb2}útÁÿì£(*22rÁû÷ïK!Dqd?~¢š#G0#//¯Õ«W8p üµlÙRxÌCCÃ)SŠüüóÏu2Æåþÿ¯¿¿TTœœ}||Œ³³3]š¢òß1r¯ !]»v3gÎØ±c555 666ãÇ_œzµ×ªU« !íÛ·ß¿ÿÔ©SCCC¬¬DMòððvssÍ +PwèêêŸyóí(ꬲ²²#G° øûû#Z¢oFhhhÌ={þüù3fÌèÛ·ï°aÃŽµµkÔÏ¿råÊ3g?þï¿ÿBÔÕÕ +dŽÜ&]ÓÈÈÈÁÁ!!!áåËZµO$²óË/¿Ì9³eËl"ýúõ;yòä1cê|@[Œxñرc !tÎý]5kÖÌ3éuèݺu£(ÊÓÓâéé¹bÅ +ú ÀÞœ{œœœçÎkiiÆìmèСçÎsrrzùòå?þ(Å@à +Û·oÔ¬Y³wïÞÉ¿«+VìÚµK*Ç üý÷ß>\·n]`` }ï¯I&U4ibhhšŠŠÆåry<^IIIAAÁׯ_?~ùï¿ÿ>xðŸPUU<yò +èKayoߟÕÝëØ#GJ=øðáÃjßOªž5(2þGøËÕ«W¯^œ~œråJï2_·k×Nxí^Z«VJKKé×Í7/++£_÷ìÙSä)³Ã®]»Ÿ|ùò{?@ +DGGûøølÜžÑÃãF +4h@¯aPMïg"Y+±«QW 2\.wÞŒyóæÍ»wïÞ¹sç.\žðèÑ£sçÎ;w®:ÍÕÕÕû÷ïß·o_[[Û!CÔ~Ñ÷õhO>eÞöìYrr²££cóæÍåÔÔs]»váŠ|Œÿ^°ÞÈZçÎ;wîŒhÑ"BÏOIIùøñc;·mÛ¶U«VM6óÊø2O<<<><iÒ€7n kóæÍô +¡²jCZ9¡¡¡[ÂÃÃKKK}||jÚ°uëÖ5m"ø|þÉ'Çý:@IQµ}ûö;vdggÿòË/ôÄýêçÝ"¿bôqÐߥ)^»v»»»|¢ËåvèÐaÓŠM>3ôkAà}}}333ÍÍÍCBBúôéCWX²dIPPP»ví"ÿœsžeË/_VTTÐß³ÈÌ8ζmÛV¯^MQÔÆåpêTTTºwïÎvâÉ<8p`@@À9s\\\z÷6þüÄÄÄF5JÖ1 at -I%055 +ši«sçÎ}ùòE ±ÂÂÂsçÎEFFÆÄÄäææ¶jÕÊÖÖí $±eË#G=zŽS§N/^Œøý÷ß«ÈYÕÉœHñÅG-笢¢âúõëcÇ}ýúµØ:"ùÏ 'MtðàA__ßÒåM6}÷îÝÏ?ÿ,ÜPž«eË-[¶ÌÕÕÕÌÌÞ) ópÌ®ÄÀårsrr.]º4eÊ9FE#ÀüüüüüüRRRúõëÇãñ:vìhmmèææqxJÎJKK~åʶÃéûðáChhšK&MFÎãñ~üñGíA ±§OŸ}ûö»5ÂÂÂlllÔÔÔÌÌÌè)øb7æ[³fAxx8ºéN¿`nüÇl"vs@áKRA"Öüÿúë/GïÛ#üòòòÊZeffN4ICCcòäÉò¹sçjiiWÖððáÃÉÉÉ...ôt¬*šØŠO®¡¡1tèÐ?V³eÇçó˪An»ßãÇ'LpôèѶc-y$ÀÀÀ'N,]ºÔØØ833³S§N.\8uêT6mäÔ^ýÌ€2úEÐÉÚµky<àªxeeemÙ²¥ÿþÞÞÞQQQ+W®LMM}óæM@@~IAÑäååµk×®:C +srr,--E +===}||òòò|||è¥E<Hߊ¯(¢_xxxÌ1ãëׯ5òE#ð&!Ì&GUUuøðá7oþîO-].ܹsgAAALL}6âââŸ}û"šÆãñ²³³_>|žžžøÐ¡Cæææòï®ùáää¹iÓ&±0Ç$6áÅëÝ»wóªaÊ)|>í`B||ü±cÇ&Nš¯¯?tèÐ;w}êUÈéÃá3fÌ1·oß~ñâEjjªÈªêuÀ¯¿þzüøñøøx¹-iZXXÈÌPµµµµŽŽD +¿~ýZTT$x]Îýüü6lÈ,ïØ±cjjªÃË/ ÿ£¢W¿)++cþ}ÿôéóFsûDþUqIv€2öWžÁ[·>{ö¬Š±]ÕEQ©©©÷îÝ#p¹Ü^œz +6lèСð + + +Ë3Úkذ¡ð~Ž/_Ÿ0¯r7n¬®®.RWRR"Rš««ËŒK+X[I at __ùÿúÇé1ÄÂ4iÂüËóþý{³Êápëðùü>ªªªÊnfš=##£¥ôÄnÌGïú7tèPæ»L*ÙøO€Ø:ÂÙ7øî ¢Œœœé}ÊåféÒ¥'N€_Ð%k×®?~Œ`å4B¥¥å·oßè$$$Ä××wÆæææ{öìÛ³à, ß§_«ššŽnÝÎv0Çìª:Ô]»vbµ«W¯:tHUU5,,¬î]Õýÿc\\ܹsçüüüzôèáêêêêêZÅJʯ~øRQQ!çãʯ¯/!äÙ³gr;âúõëoè5k5kÛÿóÏ?UôQ9BHÿþýG¿qã³7ÁÖW²³³5Ån£mhh(ñ)ðï Ä¿#bJÖŽ~Oûí7BÈèÑ£ ÿ'èØ±cXXØ)qþþþÂÍ?þLûçoëÖÌú}äÈfM±4/^dÖìÑ£³fzz:³ŠØ5y?}úĬÉL3x<³Znn.³ÃVZUv¶A2œzõÒÖÖ®º=~cÜžqßímÓŠMÝ»wOII)++{úô©§§'EQ;v.,,ÜŸ}{çΩJ~åÕÔÔèáæEuïÞ}ߟ} Ìj×Ì:E={¶šš^ªÉ_"ô¢(>OOûîO-¬ŒŒŒ°°ãQMùùùWW×HéÌ?öÝÇÁÁAž€W¯^ZZZ2MèÑV'N𢳳s.]!S§NUê˳cÇBvíÚ%srrvìØ1dÈÁíÛ·_²dɵk×Oýkbb¢Ž+ ££ccc#õniõîqX]beeEßÖ¡CfMAÍÌÌÌ;wîTÝsÕÛÑOú÷ï/Œ¿ÛÅßœ{'ö +~ÄôaÌÇÑ£G< 8}útÕ¡Ö}šeËÁÁÁNNNÕYÎbÍ57oær¹[¶l:uê£GŒœœoߟmjjjggÇáp~ûí7á:"ôL Í`KMMõööŸwïý×DlÌ®îܹãååneeµoß>kkkºHbÏÀ1cììì"""®^œZQQñàÁN: +:TWWWž&ó]#4nÜù©ôìÙ³°°P€PìêLýúõc>j;ÖÙÑѱmÛ¶" ô6ì"\\\Ã|ÅŒ?~ŒÈ&±ãx<óûÅñÓO?©ªª7îùóç[·þå_H56æ£Í1ÃÌ̬žž¢(±ÿ[gÓŠMîîîåååôU~h at QTEE ðœXú»t"Q}ªªªÌ§sÂÔÔÔüýýÃÃÃSRRFÉápLMMéÛÂ?~Œÿ~ÂN:1ÿ6Þ¹sçÔ©S" }úô9r€Habbb\\Há!C R,RèææÆ\fçèÑ£ôÃma" !!!ô»Âüüüè« -[Î={öìÙyyysçΜsçγgÏ6lذaÃCCCgggWW×å$IpäȬ¬,ÉGèµk×J<yùòå5¬{ªù,ØÝÝ]°âAPPÐwêXŒx±ðEü AÞœ{gffƬYý×[XZZ~ùòEâ (âóù/_öôô{ö(ÆúôHßK.M:uêÔ©~~~ /^ôööÎÈÈ`Öav"¶gBÈŽiÓŒŒŒfÎÙ A±måéééëëëåå:mÚŽŽŽ4±¡=&LX°`ÁÇ£££#""Î?O÷кukWWWŸ}ûV6XÖÈÈèðáÃUãÿçëëËüÿC,Á ßµfÍjÖÜŸ}{5kÒ38¿KKK«?8(3þ|ú^¯@u6æ#¶ó$â6þc6»9 `.ú?/±ÉH!œ¯ ×Û@455Ï=;lذ«W¯ÒuöïßùüÙ³gëÖ)7n3HKKcÖ7o3žví³Š¶¶638þ<ó»3 ³³³c&ºtéH¡ÈmPÛ·oÓÿÝóxŒÒÒÒ7oÞìÚµ+<<|ôèÑŠŠŠD IìÛ·®Õȯ¿þ*qÛúlÜž1--mÿþýõp&TlÛ¶móæÍ¯^œâóù")hóª3Ò·êÄUHOO÷õõ\ýW¡0±k§§§§§gaaa\\\DDÄéÓ§·mÛ¶mÛ6}}ý#Gºžž8::âö!q¹Ü6mÚìØ±žC< IDATí@ iذ¡ 6lØþɬӧOëׯ}êääĬ)vó&ºØr?ýôÓ€ID +Å.Sñûï¿3G>3¯þ !ÁÁÁÌ"+äçç9sÆØØøÅEEE¥¥¥Ûÿ +4šþ) "ÉuäÆýýý%;Þ¢EîܹsáÂl-$ØØØ*Y×ÒßÿœbÅ'OtêÔiË-ýúõÑØâïïeooïììL100íß¿ÿÞœ{ÕÔÔÔÞŒychhH)2)ªk×®sæÌ;v¬ð1sâH'éСCHHà 3B±]µoß~ÿþýS§N + + +b!Ùü---Q£F5ªŒŒüòåËôä§ýû÷ïß¿_UUõüùóô¬¡ªªÚµk×:ŒÙÖcVr³gÏ6iÒ9'XGG§W¯^ÕéªI&M4©NÍ-Z'®BëÖ«ù[ß¶m[æ`Q±« Œzõ****"""11^æÄ +ܳgÏ:0[Z@ìÈàjÒÓÓ#0 »ºçøñã'NhÓŠÍ3gÆWý«IâÙ4a.^ŒxìØ±Áœ±#t Çþ2;©Îhàïv"êéé¹`ÁzR3B±]UssMq¹\»wïFDDDDDà +À"zý~.A@¬ë=þüðá÷nÝ¢àöìÙ[E¶ ê×û*S7nÌÉÉ»ö²8zôš¥¥%Ï///Z{ÉÉÉ*5ñúõk ÆÆÆ2cXœzu^^^^^ÞÊ+©ÿ,ïýñãÇŒŒŒåËý-**¢þ³ø ¹ðH_úrŒ²:uÂ|accÆçóéfb»¢1Ý»w¯[·n"}Zæp8ÖÖÖ«W¯NKKÃF`ÊSYP}t`ggîééYßG%$$,[¶ìîÝ»C ÎÉɹ~ýº¿¿»ú'rÛ >ÐÑÑÑÑÑa;Ú¢oëëë×rGeLMMÅN¢çÏ?yòDŠ íÝ»÷Úµk6mª¿ûP':ujìØ±ÁÁÁ3gάfzQ¬>0ç4×%/_Ÿ$\¿~ýýû÷fÍuêÔí E}~àìì|äÈWWWæ5uøEEEEyxx,!'OõtM6}wÅ=©HLL<xðà5k@AïßwõêUzߺmÆô &9rÝ`XôüùsæÚÜÛ·o÷õõ +/..>zôh=Éôôô&LÀvòþËËËkÕªUÍ5SUU«{_@è 6mjccÃv,2×[7óû￳¬wïÞ-ö[úúúZZZ'N iÜž±B LV®\9kÖ,Ù:`À/^ŽoßþàÁ2: +(,z¿Œ>}úüóÏ?lÇ">|šç @Õ««=úï¿ÿ[0 7HIïÞœeÚ»G(òòò7n]ØŸ«^è:#??ßÞÞ~Ål ¬HÍ?þš££Ív Âår6lšŠŠÆv Ö[Yë'âââüüüú¶b.@}æçç7bÄ, +ËÕÕõË/lG +êîÝ»lGìÀ õîÝ{ lP3%%%SŠLÙ²eÛ(=MMMBÈ/€ÛíçÏéÎe @ý²|ùr++«É'³Òsrrâp8^^^Ë-+,,¬}|>ÿþéÛ·oYYÙšQ£jß¡XHÉÒ¥KLoÓXKeee%Â0'¥¶uëÖãÇÓ0 + 6ÌÍÍ444Ö[§¯¯¿råÊóçÏÔŽ7onߟœyóænnn>ôõõ]°`,b& \îÞœ{á©\7®öH`×®]²^QøÓ§O2íØ¥ŠŠæèèØ¥K¶PbôCQ»Á(»þýû¿|ù2444((è·ß~£MLLlll¬uuuuttÿººznnn^^^~~~~~~nnî'OîܹóàÁúMÑÖÖ3gÎܹsÍÍÍe3z§uëÖà +«}?ªªª5ªÏãñ + + !?®ýÑ« ¢¢bhhHof uO£FbccÙà¿7nŒ`Áùóç>}úÎüý÷ßՌ驡¡Ñ§OnݺõîÝÛÍÍM+w!;w×ô²XþäÜîÝ»¿~ýºŠ,--¿|ùòêÕ+YP·}ûöíóçÏ7ÝTBPvžý/EgäÈ#G€¿,--œzõjnnnŸoߟééé5nÜXðX Q£F¶¶¶r @jTT0¡ ~Ù²eKBBÂþýûõôôØ@±cÇÏ9íXêçààÀvâ!PjjjLLœ@ñ;vìøñãlGQY³f +<í(@&d=7CÞ À·oßjÙÃ,Y"Rhdd$u!ðìÙ³?þøC€ÐÊÊêç)LII + +)޵µõõõ)LLL)ttt?~|5ãÅ÷èÑ#Y¯XPKRÍU{eeegÏÕÖÖ8p Û±È`%##£µk׺»»³QÍÈ58}úôµk×ÔÕÕ-ZŽyófÉ:)(()ìÔ©3xÿþ=³æàÁ À/5ËÊÊ @FF³Š|ŒŒ<lê gϵµµn:::yyyµéáÔ©SÞÞÞÒG2¹¹¹111çÎ+,,:t(šo(âóù/^=z4J]¹reÜžq +4hÞŒù-[.]*A?Zµzþü¹H¡ØkbfMuuufÍ!C0kjii1kº»»>\€°aÃUÇ,-ò9Â*--622êÕ«¬¥ÝžqcéöYûÇú,Îè}þüyddddddRRœ)MÇ]\\ÆËVH¬kÖ¬à5ýd eËÁÁÁNNN«W¯ + +úøñ#!¢šGy{{ߟ}ÛÔÔ444ÔÎÎNž7nL2åÕ«WsçÎ¥Kª®_rJÒÒÒ***¢££;vìhoo¿|ùr}}ýéӧ׎+.kll\ +4šfMMMÍjÖÔÖÖÖÖÖ®NM ¯_¿3fÜžqÇc;úâÞœ{©©©E©ššôéÓÇÅÅÅÕÕµmÛ¶lGÀúZ_MMíÔ©SBú±ÀåË===6nÜžmÛ¶É'khhB<<<üüü.^Œèíí!Ü¡¯¯ïüùó§M¶wï^º€êúµ!àÙ³gCýúõë#G~øáBH\\œœýìÙ³uuuqÛY``à-[^Ÿ|IoÓCQTFF··÷[·LLLöìÙÓ¯_?BÃY²dIPPP»víRSSÿüóÏÁ?~É%)))ä?W©©©ÞÞÞ÷îÝ«šš2; àÈ#Õ\[[»]»v=Äšššžzõ*}ÝEQWW1bD>}ÚŽi£««KÉÊÊ¢¿ennnbb"ÁQÄÛ·oãââKôôôºwï.Ríé©©ùùùú:u©.Rغukæü¬¬¬§O=/^Œ)ìØ±c-D +ÓÒÒÞœ{Gyôè!DðJ 33S²õEQE%%%y{{Ó¬oÛ¶móæÍ¯^œâóùô/{HHH``àÏ?ÿ<oÞŒß~û-55uÚŽiÓŠM#â6`~ôè§§§··÷Œyó!U×Bô²óúõë6mÚp8]»v ßœ{WGGÇãÅÅÅÉ:zô§Ô»mߟ}-€ÞmýDÏILL¬9œÛèÑ£¥RKOOOHH())a;º£W¯^ÚÚÚUסŠ7NЬ\¹rùòe¢Žµµ×®].x¯»uëvèСoßŸÅÆÆ¶k×.$lÞŒ¹ `æÌEmߟ}âÄEM0!00PгðÊÎ;~ûöMøÐÌÎE YüàùùùÎ;nUSSÛ»w/'}fDüùç"ý|ùòåóçϲPºÞ¿/öêhàÀtãàà@¿dÖ€ße»wïfÖ\°`³&s#!dýúõÌ~~~ÌûöícÖ3fØJbyyyby¡ \mÊùÏÍþÄÄÄFÑ êêêqqqEEEQQQDè7=55U]]¢šîÝ»ïÛ·¯°°Pl:u +.**Ú±cÝŒêúµ!Û'?vttÌÊÊZ»vÈh.]ºDGG;::º¹¹ÅÇÇËa('tYZZZZZ²ÈÜáÃwïÞööíÛ¬^œ:--mòäÉ'O&ÿ{[nîܹjjjÁÁÁÉ'¯X±âßÿý믿Äöîåå%²s9³säð©kÓŠ +=Ö?""âÊ+eeeÞÞÞÿÇÞÇCµÿeY²DR")ÊÒÌœ}ZHÆŽjw»uËÒœ¥ DÚ\RJu«Û D!ZH©h¡]ÊRd ßçwç;wÎeƱŒÜÞ^ç}^£[×yo¡¡¡ +ESSs×®]\/#±1NVVV¥¥¥>ú_ÆçääÄÙ2|øp|ŸŸ~PPPDDħOØîúúúøH ®Fccc|ä3Èd2WãŽiÓð +E]]«ÑÈȹhÑ"lø¢¶¶]áXZZ*++ã;çªHý)PQQ ÇZ|}}±-ëÖãQPPزeB(..nùòåË-ÃvÅdýwEPddäâÅ7lØÀ^Ð~|·çc_\srrÖ¯_ßÖ?III?ÿü³ŽŽtff&Ï?B ¯1cFzz:ßÿwÒÓÓ{óæ +ûP=ÐEEEO<¹qãÆÔ©S»pyMMÜܹs/\žÀ÷ÜÀL4éÉ'uuuíÄTWW+((z +¿¿@@@VV ÖÂd2oÞŒéààÐÐÐ`bb²}ûö3grn,ß·{á /^ŒÐÖÖæŽÃf``°téÒ¥Kr>òì3šš(''§ÈÈÈ%KðýýúUFFJ¥^ºt k©®®Ÿ|ù2NÇ^m"444( + B±ŽŽlkcº'ö ²²RIIiá mM¬6mZzz:»eÒ€I?®¯¯ï©Aüý÷ß,8zôhÖ@hnn;wnNNÛŸ}ûÚ +³··?~üž«««mvv6ϰ-[¶,;;» `@íÊ`0Î?Ot{'$$4|øpì}VllìòåËçÍ×þk9OOOö`ö[söJãÇ{zz®Y³Éd²;ÁwO 'ÉËËÓh4ÖØØxíÚ5:~ùòåðððððp999 + bkk;dЀ`24-%% B¡DFF¶¿jaÑ¢E?öññ±±±ÉÊÊRRRDJýÃ7o<y"žA^(77[ôÖË-ZŽhÏ=ªªªD'òcÒÒÒD§@·Ñh4»#þo]ÎWÂm Y[[s6â<xðÃι.<{ölÇç³Aa/þ[[[³³³±õÁ±±±±±±S§Nœqã!Yº@ Ï3gŠMvöìYßbõêÕUUU³gÏÎÈÈÀ&++Kt +?V__óæÍ¬¬,+Žü%%%Ct°°ðÔ©S§NºÿþÒétMMM¢tÿ??¿CCÃøøx§nñP]]A¡P;~!»zõjSSNЫÔÔÔŒzõJ]]]AAA@·7nÜžqãÔ9@@øÛ]XXX`` ¶¶vrrrg_äc;ŠÝžqcá Øùô t:!tóæÍÞ¿Ü +ð±±1¶+%èå<yÝþòâþ'--ÍÐÐ ûCÅïOè%øY:ujݺujjj©©©]Ê/$$tâÄÙ³gÇÇÇ{yy +šîížví{{)Nééé±±± + + +=àÔÜÜ}qåÊ¢Ó=êåËyyyÍÍÍD'~ìÄrrr!!!]> tPRRÒ'OÎã×ù\/^ŒpuuåKWÁ· ))ÉÃÃCNNîêÕ«]ÞÌGTTôÂ æææ1117näWn}ÚÚµk·lÙíÁéàÁ®®®ååådØ233¿|ù"$$þ +ôB«W¯ + +2eJNNÎ +ŽŽŽ¶oß~ÿþ}xß ÜîÝ»÷ïßßc·ãO=þ|11±€€€nnç?hÐ Ë/;6$$d×®]|I¯O£R©õõõiii¡'NŒ~ýZTTÁ`€ŠŠ3æ§~":Á{èg2rrr)))øR +К««¯Y³#ãÓ§O111T*µŽŽtÇFFF#FðññIOOÙ§¢üõ×_òòò=v;>,~øð¡££ckk+NçËŸØ0 ÅÖ[åååøT*uçÎt:ÝÁÁ=±êÚµk + + +T*ØÜÅûòåV^^Þõë×íííÎþ¬©©)::zÐ AìÆ!CqEVTTÜ»w«QEE œ«}jjj||<{Wû!CØÛÛS©T[[ÛêêjPNNNmm ?Qg =zÍ?lÇõë×{$#;wî,^Œž¬¬}do~~ŸGQQŸŸ~LLÌ B$)00088XDD$$$ÄÕÕß*..öôôÌËËÓÔÔ<y2Ÿ% ààÁØ3þZ²º§€€DYYYXXøï¿ÿîfW=ÖsßÂd2ÕÔÔZZZØîîŒ<ã2}úôîÿïÔçäåå!~þùgÐüùóBK,!:)AÁ8Ï;èDzÐN€ÿ055j?çªkKKK|$Ïçãyóæq µ¶¶®]»óEQQÑ¡CòáØÞáðáÃÿ-À +*ÚñKúŽ +ÐÂ Û + HVVV-ŠŠŠO +tv4øÑ£G{à^cÇhhhCa-aaaõõõaaaXB(<<Œ±±199YQQgÅ266ijjºråÏAEFF666òë#tk ŒŒÜÆÆæÓ§OG7o^÷ÿ‥¥2mÚ4YYYkkkþößWH€9sæ:t(''gÊ)¡ÖÖÖÄÄDuuuCCC¢³è°ù?3fÌžtéÒСCUUUL&¶$ + ájäy>R[[ýuQQQ||<N¿wïÅ266ŠR©T*uߟ}QQQ=9(ß):::ÊÊÊí\¹r%--mÍ5æææ=Aqq±»»»§§§Ö²dÉ õë׳#W¬X!$$4kÖ¬ÊÊʶZ + + +ÜÜÜÜÜÜпKñ-ááá7nôññ äÃgèréðùóç±cÇ"vîÜɯr/++kÐ ARRR·oßÜ]z¹ÔÔTÐ +°_ÞŒy!ŽjÕ*b³â20GÆ#))ùîÝ»?þø#%%eùò塬¬,¢óÀ++++**jnn&:þ£##ÝÔÚÚzëÖ-___v%@&mmm>\VVÆóóóëë·lÙÊÍÍíÔUüxõêÕ³gϺÙI~£G>ÜØØ=ü3æðáÃØçûôïÔ®5qâÄö·ð-qqqŸ|.Ÿ§llltppxôèÑúõëûí·®×?baañ÷ßûöÍÞÞŸššHp7êÍŠM&++ËÞaû®€€äñãÇ666jjj[·nµµµÅ~SâããN +ôaÃéééuäŒs@žoߟ]¹rÅÛÛ[UUuòäÉ{öìùøñãÎ9SQQ²lÙ2Ø·þ÷¿ÿñeY œPdddHHÂÛ·o±šššÈÈÈèèèNõ+//O"°÷ýøìkkk¬°ïŸ®ü»ÕÜÜ<wîÜ77·}ûöñ%vØÛÛ?~ÜÕÕÕÖÖ6;;»Ë{ö]¢¢¢vvvqqq=;v,NǶ²&:¯{Ðç¬ÄŠM#C§Ó÷îÝK\^6mÚ©¢¢¢âííM¥R¬¬ÄÄÄÎÐ÷>þû:((!dbbòèÑ#®0Çj]ÎA®ï5 +Ûì +ßÂâ÷nÅ`24-%% B¡DFFòëøö-ZŽ(44ôýû÷666ØhÝ@=e:;;ËÉÉœzõÊÞÞsœ NáÜóL&ÛÙÙa#&À[°`Á¯¿þ[VVväÈY³fÁÓ?`ÀêtðáÃlmîÙ³g{rà{õêÕÛ·o/))yðàAÝŽ÷ÀþzûömMM +ù?œ@EEEnnî)SžÂ, z§É'M4©gÞ[@oÖé'x55µ»wïjhhÉdA$ÔÉ'÷ð}{ÁÏ1ãÊ+nnn¶µµ%:£® Édâ+±Ù³gÝŸ}¬/°uÝé¡¶¶¶¹¹¹ô^xÎ= +¯ð <}v`>ýcšTê+Wêêꀀ€Ng ³µµmjjjlläj<xpVV±±1!Y_äääÌ=»ûýð¥ßÁæ}£££Ï·Îd2ûøñcPP¥¥å/¿ü§ÿcíÚµÿüóÏœ{÷úÓ¡Qüòúõë%Ktöªââb1sæÌÎ^øûï¿O6³W<qqñ={öt¿³gÏÖÖÖz{{wü'<žûwï,]]Ý¿) ÏPVV4iÒ;wÎüÇçÏ8Àd2±ÕÕÕïÞœc2D'Ò544\¿~œk×váÂ¥Kví^LÞŽiS÷ûéB'ÿý·üVÐàŒÒŸJ¥)))t_άiÇÑ£GþÞ¿;(Ð3` W+//¯®®®¬¬üøñcsssKKËСC?.%%%%%%))9jÔ(¢Óº%>>Åb]¿~œ®®Y@(Pô.?Ÿzõêõë×óòòŸÿ¹xñ"ç/I$ÒÈ#ÍÌÌŠLbff6vìØJàìûoߟ%''Ï?ètèç èX,Ößÿö&,,¬§§g`` //¯šš8lØ02üíÛ·ú={öìùóç>,--=uêBHJJÊÛÛÛßßv +Ð'|ùòåæÍ + + +ñññP hPïÑ£G?ÿüsii)D;wîäɧNj`` ,,ÜñN^Ÿ|yç΀€€øøøàààÐÐÐÁ¥ +ðÅ+W¥€€ŸÿÞóg +0 @@°?ÚØØ|úôiûöí¿þúë AºÖÏÈ#Géääôýû÷cÇùûû/^ŒXVVÖÁÁ¿ <ÈÈÈÑ£GèiG !:züü|aaaÑ`lþDÊÉɹqã`ó@ÀZ[[ËÊÊÊÊʪªªjjjŸÿÞÒÒÒÒÒä:tšÖ°aÃz8=(vâÄ?úùùùûûó¥C2ŒjÕª3gêééAÐää亰ß9è$%%%%%ÎÞÈÛÛ»ŽŽôË/?ljjJIIÑÓÓËÉÉÉÎÎ2e +NôEoÞŒIII¹qãÆ>}ÚñÅÄÄÌÍÍ'OL"$ +Ý¿!°yófqqq~u{áÂП}û|}}ùÕ'Àwׯ_¯¯¯ÇΞĶºNHHèg ÐïÕÖÖŸ{÷îaÝ|äTQQ±±±ÑÕÕ9r€²²²¢¢¢šš(¶[Æùõëײ²²·oߟyóŠ àÆ{öì:tèªU«Ö¬Y#Ðí°:TH$ìóà¿èzyz°y#Ãw4 IDAT_±b ···²²r{ûþýûéÓ§ýüüÞœ{G"àtRœ6ÿ+ £¢¢îÝ»gbbBtj ÏKJJZŽhÑà + +ÓÓÓ»6³µµuýúõaaa$ÉÊÊJ¥ÚÙÙiiiu¶{êÔ©óçÏoÛ¶-<<<99ÙÐа)uÂ=.c¿älÄ?Lwüñº=hÕªU±±±þþþþþþúúúÓŠMÓ××744400h¿$mmm-((xýúu~~þýû÷ÓÒÒLа°0F»téX} ³Lfbb¢ªªª±±1ÖB¥R£¢¢èt:_fΩ¯¯ßÖwÿùçû÷ïÛØØ€ŠŠv¡X»víÁ'NxæÌ~ú©ËIH$sssssóÐÐÐÝ»wûûûO6ŒŒ\@Ma +P¯0oÞŒàààsçÎ%''_žp¡ššý-!!!555läÛŽ®®®ŸŸŸ©©éíÛ·ÆÆÆ +ÅÉÉiÄØ; Pffæ5kzÇŽ P¹¹¹>}ZŸ|9{ÂÏÌ3¥€€âããwîÜIln ßprròððhë»_¿~ªªº|ùr×j/ߟ}»S7¶L&oÛ¶íÍ7'Nžÿþ)SøÒ-Þöçû/×h;k 8xð`UUúwX»JUUõðáÃsæÌáì§žžØÓÓ3//OSS3::zòäÉè¿CìÁÕ«W9ró,üüü¢¢"kkëk×®éëë?Ÿ¢¢!ijÛÍ7«ªªÆÆÆòùÇ&d2yñâÅ/>}útVVViiéÓ§O>}ZQQQYYùøñclåxkk+DÁ;88hhhš««Â+@¯òàÁèœ8çÿ`ÄÅÅgÍuá çÏkkk(H$Òúõë± +ýºPTUU577/]ºôðáÃüÚŸ6;;ûÌ3--->ìÑçC?O{öì9pàÀ¢E$$$Ø×2̬¬,www®~h4ÚÊ+322ÒÓÓ===ÛY=qâDÁÙbhhXRR²ÿþÍ7nÚŽiÌ1ít«¡¡QYYåååUXXØEoA",-----y~ûöpJ }W¯^ÝŽiÓ¶mÛæÍGt. G¹»»ÇÅÅœ~ýZEE è\z~úéÑ£GœjÑ¢E%%%wîÜéì êêêœ EGŠAÓétiÓŠ577_¹reذaØPö èt:ìczD:räBš5€€$ÁŸ|ùò%KÌÌÌða¯^œ:uêÔ¶mÛžÚ={9oÞ<YYÙÆÆÆ/^œzõôéÓBBB!YYÙî}²6 ÄÄÄêëë±cëëë;µMdddxxøÆ}||8\VVÆd2ñÏ©nnnnnnèßaNL&ýµ³³3×HÑåË_Œxš££Ä.xvëîî.!!áéé¹~ýúÞþ{¡ÚÚÚG}þüèD at OkiiášÄÄÄØKwP.œMhhèc<yRRRâääD&¿|ùB¥Rÿ÷¿ÿ?ÞÞÞ^TT4>> +ÐcºVH$}}}++«;wîܹS\\J¥êèèèèè`»©««ûúú^žpaÁìqÏ?íܹóìÙ³çϯªªzôèQKKBÈÞÞÞØØ_Äó$²°°Ø¹s'¶'ÑÎ;±±QQÑòòò^ïìì{ãÆœ{÷"6oÞU__œøçìgüøñ111 + + +Ø(Öš Â`0:ÄîVD{hÂÐÐðÀBBB`ÿÁ³Û'N0==œnü| ªªªááá^^^쀀$33399¹mÛ¶íÛ·ÀÜÀÕ^^^wïÞµ±±©íà $)88ž¡¡!22ÒÍÍMYYùìÙ³ÎÎÎ&M1b°°p||<Bhüøñ$I^^ÞÀÀàìÙ³¡k×®N2eïÞœoߟœ|ù²?*6ð×_y{{+))!,--ÿúë/···Áh"öBZAAaË-!___lĺuë°Î~âââ/_ŸlÙ²ŠŠ&ôï}ûö¹žžŽŽŽlÚŽ©±X,www»»ûöíÛÙÏn_¿~ èÖO ++»jÕ*ìkaaa]]ÝÒÒÒO>!ð3%è]@ /Y²;Žººº°°ðéÓ§ØIÀUUUwïÞ6lû$` 'Oc/¬{rBhÄW¯^åúFxxxxx8ö5~?жv +ÀŸöóóãêgÔšQiii\7¢Ñh4 +ûzëÖø>1êêêì¡veeåææfö·ðÝb=µù¹OÎ9jøþýû'Np59ÒÉÉ«ñÙ³gØÉ}Æm¢ÀéþýûÉÉÉ\&M1cWcfffVVWã3&MÄÕGÈB¡à'á\žpáÙ³g\ÎÎÎ\111eee\^^^Øk&N555->|@`@...9r$Ñ®;5ŒŒŒg£µµuzzúÕ«WÙ'> V¬XÑÎ.¥Û@·8q_Œ}ûö÷ßçj޶¶ÆEEEøÈÅã;wîà#7nÜ/ÒÓÓÙïbØÄÅÅñ@||üÑ£G¹/N>ß\ØÔÔ_;v,77«qÎ9ø 88øÕ«W\Úô:/5 BIKKKHHXºt)Ö/""âààÐýÎ; +è¢ß~ûÍÃÃçëèÑ£ÓÓӹް°ÀGò<|Î9ººº\<çÒhŽ©S§r5ò<¡fݺu,àjäù.*00ÐÇÇ«qüøñøÈððð¯_¿r5ò|³{úôilê&ÛÊ+ßœ{6ÿ[ËÞÞþÍ7©©©ŠŠŠ<èÔ9<Q(øøx¬š¬¬Œuë B7{î(è.{{û/_òK__¿q[®Áß¶(**v0RUUUUUµ#øó<aûTt$rìØ± Cu0¿YŽŽt¯œ\jjj}}ý/¿üÒ©«<==m±¶¶ŸsçþEBHWW÷Ñ£GÏ=«ššèþª\uuu##£ëׯ×ÕÕ +<811±µµóÝ%))ÙÁ- ¶lÙRZZÚÙçääÉöõë×~ÝB¡äåå%''Ï?ÛB¡ð«óN"ä®(Øû~:ÞÐÐpíÚµñãÇõFðß/_ð»ýPEEEsssdddg/1cl èåÆóÓO?]¹råòåËš×ÿ +ðáÃöNÕ Ï;è'O>}ú«qÉ%øÿ:ôþý{õòåKì°#Äq̧ݻwãÚ¶mŸ±µµ³EXXxÇ\aß(++?¹¢¢è²Ú+ž_Ÿ|ôÄIWW×ÕÕ«±°°;±±ñÏ?ÿÌÕxëÖ€€$®F+++kkk®Æ«W¯ÞŒy«ÑÑÑ¿èâÅùùù\ÎÎÎøÉbbb?Îþeqq1BšººuçŠûòòòUUUŒ³uëVlÓyñáÃ-[¶â·_khhøóÏ?9[RRRýEÔÁ={6û€¹~ýzFÀuþüùË/s5ÚØØàãÇçåå!ÞŒy³k×.¬qñâÅø>#""ð»WmÚŽ _ìÙ³}šL&ó,ØwdÓÐÐÀÕÕÕøHccc|Àù)Øñ@QQ>rÉ%øàÞœ{øH!!!|pãÆ +üéLà +Ã/_ÆÏ¹0aŸøûï¿ñG£|ùòuûÔ©U«VuaÏÝ»w³k¹?îÚµKBB_466âD¡/_1çFj= +2jÔ(ü6£üU[[@¿mÊõÆ¿ñÇã7ØEÅÄÄ444L4ÉÐÐðСCXã#ð \õ¡Áã#³³³¹N;åyø«ŽŽô;wžÉd2>rÄøH{á#eeeñØ®8\øÈ s56¹bÅ +|ý0|øp|ä¶mÛ/_ÎÕÈsãýû÷ûûû³¶uëV555|d;jjjâââ?~Ü©«B999Ø3gÎ6lØÉ' x,¬ãúa2L{{ûÏ?8ÿA@÷ÅÇÇ{yyíÛ·ÿuìØ1üYoÛ¶mÿð^·n¶¶6×SŠWdLL×<!!!wwwÎ + RQQÑÙlÏ9\hkkw0rôèÑØÒÒÒ&&&íDvü=®±±qGÂDDDÚ¿#D#ø)Øäååååå;©¬¬ÌóÐ<uuuuuõD9²Óùž¶0~ýú5Bš³»õ;vÌÎÎgÑÒ>öSDDDRR²-ÏßÊþ9**Àù? +ºïÛ·oèDÛ¹sç¹çÌÃõuá °°0&ÉI¥RñÀòå˹Npá*ðoÙèmZZZ<øÏ?ÿôð}©T*N·°°èáûrè·h4~fþ°¶ÄÄD&yðàA999Îv)))|<Gø,=êâÅ'NìáûÎ9sá ""D>Cô[®®®&Mê`0JíÈiÓ^×!MMMwîÜQVVîàÑ×` Ø¿ÿÆ{þŸâââ=_NP «šš6m»»{tt4ѹÞâöíÛDÝzÈ!DÝcv 0Ð+pMŠìµ}öBëׯOMM%6¯_¿"ÃÃÃÍdÒ€Iøs^;) Î544B...ÝédóæÍø=ã ŸŸ>BhÇ&MÂÒeõõõXçýÛû÷ï<y¢€€D쎡C2Ì@(?~TQQ!0À@{úôi¢³hFöA@0ñãÇgddhhh,]ºtÅYÕŠŠŠÓ§O ÊÊÊb'ªÅÅÅO§#Å]8@/T^^Î>.G at JKKÚÿ±råJÿEzïÞœîükÅeذa>|è~?=C~ +çåå îܹsïÞœ'N422222244Ô××ÿá.QoߟÍÏÏÏÏÏ¿ÿþíÛ·¿|ù"""ââââïﯥ¥Õ3x:þüùóçÎüIOÂ())µ5äH"ž»íŸ`ò<|ñ ×[·råÊžžžèèèìììÜÜ\ö·äääddddeeedddddÄÅÅ«««kÿU]]ÍyüžABHQQ±GAEGGWVVþú믜p ÌxÝ!!!aoo?nÜ8¢ý +DÄI XÛ · ÉnnnnnnÍÍÍ=ÂÞè?{ö¬ºººŠŠŠ€€€¶¶,))UÃ6l±±1Ï[ ç)))ua£ëÔÔÔÚÚZÂwÈòîÝ;lÛ E"Bرq//¯çÏkkkGFFxzz¶¶¶rTVVÎ?ßÍÍF£a==zߟ}3gÎDåå幺ºŸzõjíÚµAAA,ëéÓ§÷îÝ1bDû[ (**^Ÿ|Y?Ð{?~üÖ[]»ö]¹råÀ«VîÚ]žÜ»w/ D"uüÎ ×544444Ä«¶¶Á`(++÷|V-[¶lÙ² J¥jiiÉdôo +ÀùX¿dÉ +68;;:uÊËËëÉ'nnn^^^^^^bbbì°ââbggçœ{÷bÏúX·oß7o¶BÀÓÓÓÇÇÇÕÕ5..»ÊÅÅeýúõsçΜqãÆ%K<=={òãŸ";;;;;[@ïß¿ÿÁk×® +\¶lÙòåËÕÔÔºÖÕ÷ïßãããCCC±¥SÁÁÁ#Gäk²ÿ +ŸDtBÅÅÅ;vìøñã?~\·n]@@>æùóçÎÎÎ-Z±bBšššÈÃÃóé!äääT^^Î~ÃuèС={öŒ{÷Édb£Ø 4 +ëÊËË!ôðáÃE-ZŽý;ì' + òúõëî÷3lذ¶Ÿ5jÔš;wîܹsøðáØbN + + +EEEEEEüÿ555µµµ÷ïß¿ÿ~~~~aaá÷ïß (ÊŠM&OÜýÌÛ1RRR|}}>}ª©©éçççììLtF@ç8:::::2Ì7o:88`L~ýúõ#°mmížž8ggçÓ§Okkk#ôôô¢££.] +`RSSsss)JNNÎСC7lØpéÒ¥©S§Š§§;88`1zzz±±±/>{ö,Ö2aÂíÛ·Ï9S\\!Ž{÷îüô5kÖ¬òòr¢³èEŠMvàÀÎ^%))))))|8)**úûûÿþûï§NJOOOOO¿téÒ¥K8cÄÅÅeddÒÐÐ-ãäêDDDÄØØØÔÔtË-Î +bžžžÌ?ÿýû÷P Vppðõë×cccååå;~öRSHHhøðáÁÁÁXãÊ+õôô°i<^^^ÞÞÞÚÚÚØ4ýãÇ{zz®Y³Éd²')))Q(êêj + ñÛo¿999!~ûí7öíþúë/WW×5kÖøøø`#ccc/_>oÞŒŠŠ&PPP_~œAqqqYYÑÅbUWW³KÊ^KDD[̪««ËÊÊÊÉÉ©ªªªåðåËAýôÓOìý]2vìXCCÃÑ£G÷ävÞPC^^þãÇ÷ïß700ÀNT)..öôôÌËËÓÔÔÆÆ}H$ÒêÕ«9òèÑ#++«/_3--&Éu çÌKìkv +±Çèã¹ÝgHHHHHû'O.**â022zðàÏ~<<<<<<BÛ·oߟ};Öèëë}abbòôéS& +&èè耧§³ûéO#¡#G>þè,W__ßç6x<x°ÑŽ N"Fbb"¶ÚÉ'B4ÍÛÛ»®®.44sÓÄ öî䯿þ255ÕÑÑië.X=ð¡"H"""7n<|øp§.lll<wîÜÝ»wâêêúâÅbhkkcy=~üØÊÊÊÕÕµ =rĹRÄÙÙÛUÊ×××ÉÉÉÝÝ}ïÞœçÎCµu BÉdâ{èåöY:åöíÛ!OOOι€áâââèèØÙÛ PÃTUU-\žÐÝÝœSç×µe\»cíß¿ÿ×_mïZ...~~~?ƶO?~üªU«æÍ7hÐ ÎHöIÀæææjjjsæÌÑÐÐ033ãyBJJÊÔ©S£¢¢ð=ôrÍÍÍÿýw×®¥ÓéœÄØØ +t +_qÊËËøô` +Qìí퀀€üüü"##BqqqØê+ÔÖ^fŸŸŸéééìÙøKöíÛçâ⢢¢_]ÞWØÙÙU 6~ÐYìeÊÊʧOÎÉÉÑ××Çf^°X¬~úééÓ§ØÖGã±Y\\lnnN&utt°ÆH$Òü!''7tèÐsçÎùùù +2D^^þÔ©S<㻯oŒî°ý +ØFÆÆ5ÖI¡P8[ðÐh4}œuëV|œLîÔ] ---ÐþÐ_%&&îß¿ÿ Ï?suuÕÕÕœxñâŒyó²³³uuuuuu÷ìÙsàÀEIHH Üy4måÊéééO>EÉÊÊ~øð!33ÓÑÑ188ž¬¬,33ÓÕÕÕÅÅ g|7Áÿb``ÕÙìÃ& Û²eËÍ7NÞ[Æy÷îÝììì +6 öìÙÅZ"##£¢¢TTTØYqÂÖpÛÙÙ±7zZ±b mssóÊ+±¯+**Úï&à?àÀ€£££££ÓÈPnnnii©ê4,¥â¿aRXòt~§¶¶¶±±ñùóçKJJ¬¬¬BÎÎÎÎÎÎ<033D«šš 6}rÀu @[ËD» +þhv<~ü!ŽpáB¢iÓŠMÚúVeeeOfú%lçË/G-ãDùûû3}6×_AAaË-X···Á`±XqqqË/_¶lvòÆgkw6Ÿ# à?ðsûÚ{° ,,ѰjÕ*ö +&&&®G4úáÃL2E\\è\x300À [SS³oߟQ£FèOðË8BÖÖÖìÂÿ}_ÃÉÿç2Ñnÿ# êêê¡S§NihhK'Œ}ûvߟ}ÜúñãÇ»víêìUÕÕÕBBB-êì Û¶mÓÕÕíìU ;H$Ò AÎ=+**Jt.@×qé@H\ìܹÓßß¿¹¹¹kÝò%ŸhÀG?~ìò]žpÙ²ePô°ŸøìÏÝÕÙfŸ?ôs,WZZœéfW~n_GæÞùúúR©ÔøøxìøK°#ZZZÚ + ¿ÚºuëêÕ«zàààœ{÷ +ô ß _©ªªêÔÓ?À#ÐöíÛÎ¥:tš@o!)))Ðþùæ +ιsçÎâÅËÊÊxÖñØloUUÕÃ;::òÜø }kÇÁÁÁ"""!!!®®®ø +gH$R`` gW'ì»à;/((ðôô,,,lmmåÌä9sxvïááQTT€¯¯3aÂ|ú ?{öÛ0KpJJJÚ?ô9oÞŒ¹ÿ~ss3Ñà\ÏÜAÐY^^^k×®usscÏäæZ¬Íd2³²²ÜÝÝñs+//¿yóŠ««k[ÎpÅà;áêýçÜÍÍÍÃÃcÙ²ebbb<l«+www///èèh77·âÓèòϰ}ÅÅÅ~~~êà¹/:8jñÃ5ø~zx< +Î)..vwwðôôôññáüÖ°£Lf;¿pY±b ЬY³°ÍyîÃÓqEEE^^^Oÿí$Éõ1,Y"!!ááá±~ýúnŠÑA7nÜèìUþþþ7nÜHLL<xp§.ÔÒÒêìœ~ë üülzL+** +'Hpqqáy6J~~~QQµµõµk×ôõõÇ_QQÁsB×8iii...þù§§§'?þêÂ̮Рè==œ'NÐhŽ®omÞŒ9!!ÁÂÂ"-- +ZÃsãΣàPÇ{ãÁwÒÑ£GGFFràäÙ®®î'\]]£££õõõÛJ¿ §NÚÙ«BæææC@R@À~ë=hrD¿ ++ûáÃÌÌLGGGìœaffŠ«««Ï© +%%%û÷ïߌyshhèŠMÆÚPÀyëØØØ?ÿü399y =þ# Þ¿&S°týOdddHHÂÛ·o¹Ÿåëë;oÞ<û÷ïc-ØÆ/***µµµì0ì(ž¶ÞŸÇÅÅÅÆÆÊËËH€vÞÐ·ß [tttttŽ;$Ï®¢¢¢"""ddd"##£££Û¿ô~kÖ¬ÉÈÈÀ¶÷` aýû%û hhhN6íõëרwW¬X!!!akkÛÜÜŒråJìë +öÞH IDATôïTqqq;;»çÏcñFFF/_~ñâÅþùìÙ³€€$¬À&HJJbã\·Fyzzôò§ÿ;wîhkkKJJnÞŒk)..677'É:::·nÝâg¯Éd?\p>níØ±CVVVAAáäÉ£BÃwN"|||Èd2B( @QQ±ý§Ä sLMM?ÞÐÐÄ5XPSSSSSãçç}F£UUUÕÔÔlÝºÞØØý²ÃÞ°¢Ûùa'ìCCÃ2Lv>I]<zôš¹¹¹°°ÐÈÈš4úœnþéêUw`»xñbXXØôéÓh4Ú¥KN +°¢ÙŒysTTT}}}BBûßwÎ1üT lÜk444<pàǰPÐØØÈ9¡óww÷þùG`°õªªªXFóöö®«« + +ÅÏ\Â?¹¹¹Ñh4ìÆnÄV:ujãÆóì=l²gÏ]»v±ÜºŠ@0>Tïß¿?rägŒŒüŒyóžÂ>~üH§Ó¹ÕÔÔž_œzuõêUìkì¯/_Ч§O>+òÉ'YYY\ãÆÃNFãÇÕhff6nÜ8®ÆÌÌLö#¶3f5«1%% ýâÍÁÁAMM«ñÒ¥K>}âj?>~ +ÙéÓ§ëêêži4Wã_ýÕÒÒÂÙB"Œœœ¹ÂŸÿÎO366ÆJkÐc±Ã:âããO<yòäI kkk*êààM&ÈvïÞœuëVAïS z!ljBhݺuçy6ÅrwwG¹»»oߟ+¢¢¢<==W¯^§§wüøq|o³fͺzõª££ã»wïÖ¬YÃÇÏÅGøõ<Wl¶¿&µœŽgçìaÈÈÈððð7úøøtk×Dü=öü}±¿¶ª««ÑyúÒÖBs|0~Œ!dccäùVfñâÅøÈCá#7mÚä¹ËÓŸ}ûðøghPll,>J¥â#¯]»4i>²°°©©©¬ššÀGâK!!!|çTÀ;vàÅ255ô]îß¿ïççÇ®9 ---CBBJKKÙ1ØÿšYYYNFp¶lÙÊÍÍåo·ØsÉ7oøÛ œyó!m×)$ÉÊʳÅÔÔTRR²ã=\»v +!Žk×®ÎÞº³üýýBŸQÃÞÅÌ3§ý°sçÎ!=Ê÷Æ{øðáÆÆÆÅ8q"{'Ä1Àb±ÆÚÔÔÄÀ3ß9Â=wçCÁÿ?êçl¬ªªB±X,'9°w<xöìÕË/ÅÅÅVFF®®.öëÐ|W\÷Â'o``°mÛ6Î|Îùóç¹yŸù311aG666ÒhŽI&ñ<ÃÆÆß§¶¶6>rþüùØ!®ÌñK.9s&>%|äŠM-ZÔ>ÿüóÏÏ?s5jhhà##""ðSD€¥¥ñ§OæVÎó Äùóç<yâïïóæM2ìëëËÃ`0öïßÏÕ(##³råJ®ÆÊÊJì€jNà +ÃÎ8œ~ý:..«qÔšQø¡¡'O°O³f0aÂìÙ³¹ïÞœ?ÏÂÂÂÒÒ«1###77«ÑÖÖ?øèÑ£>|ÿþ}çÎXã/¿ü¢««ËyöìÙ/_r5.^Œ¿ä.** +?à³|ùò &L0ÁßßÿÕ«Wñññt:=+++33sýúõT*]R<y233õM999D§þOFFF;[ò~ðEddäâÅ7lØÀþçç0H;¢££ÝÝÝ×[Ç~ oGûcÿŸ(((`~×u§zß;{òÃ>±±qLLLSSÓ+Wtttžâ +ÍÆã:qâDKK@¡PÂÃÃY,VXXJeý[ÙpœÀwÅu/NØ¿+3gÎä×ÏïË/¡¹sç +îAFFöw/Ï7<÷Ø>|8>òñãÇøHSSS|äõë×ñ<ߥ>}¹téR|dHH>rÛ¶møH|ÀG²ÊætáÂ|€->ç«úñãÇã#_ŒxÁÖÜÜ,'''**Êïå«;F0ôè¬ú:à?:;Õk6^ûS÷BŸŸŸNNNîîî{÷îÅþ¶Âà'â»âÛÌ?@qãÆaOä<÷ÕÁ?¯ã#Gä9 at 1aÂ|€>rÆøÈaÃá#ÿ÷¿ÿá×l1éåå ^ç94äëëëêêºjժׯ__Ÿ|kÄ!ðuÅØ±cñG¯¯çjd/㫜råJ|||rròׯ_BÊÊÊsæÌ¡R©Ó§OÿðáëW¯ð}ö9ìmINN...vvvVVVîCCÃëׯ_ŒxQZZÚÂÂ?i''''QQQlNáùgnDW èO#êÇâש{æææÓ§O<y2g~`[÷å9óF@ÿÐkÊÊÊ>lkkí©ÒÖÖöõõÍÉÉÁ&à +4ìùNØÂüü|lïž¶À@gGX,Vss³¬¬,BHDDdúôéaaa?üjhh5ª³ÙöK0 0züüãzÿþ=B(11QJJªS;çkÈÎNõã×yŸŸŸØn$ø ø®ø6ó§ŽŽôüùót:ýîÝ»Ø&ccclº¿ÑÙ)22B¡ÄÇÇ§ŠŠîØ±cÇ + J¥ZZZrîØºLDDäîÝ»t:=>>þÆééékÖ¬144Ä~ÎðΞÚô+ÝàÜ#¥ìÝ»_œ7Ð?n;ÁL&ÛØØ:tèýû÷žKßåã㣢¢rüøq&//ý=9dÈWW×/Ö×׳#a #>~üxìØ1{{{öì>--õë×gff²W±zßO0 PÙÞeÜžqK.è-°é=F£a;ütpö@SSSS^^^YYiaaannþéÓ§êêj®3(££#ÑvËׯ_ÿúë/®F===®íÝB>Œwïöuyy9v~uøíÛ·ñò-,,ðXedd"H$J5kÖ'O>~üxãÆEEEGGG*ßp¬6ö®!Hm}¿ÞŸ}Ëõ{§€€4gή°üoñðáÃ_Ctú ~`ãTrr2ÎÐzæçêêÊùl!ÒÚÚÆ¹9šš(¶ k2e +þAhåÊøøÝ»wã#Yžçgñ|íììg0Ë/çÜdBFFFEE¥WŽ¥$ñg2bÌÌÌ8ðµk×â#{àÑ¢Ï` [Ÿ|9ûÀæææ/_.Y²$11±¢¢!$++kggœŽöññÉÏÏ'4Ù®:tè3gžñ#±BõõõÿýwÔÆ;/ÆObll\µjçÊׯ_ + +<žpáBìšõ#F`«,,,ŽŽŽ:÷ÙÚE"~ýõ×ððpUUÕØØXSSSGÜp\ÃuòûM?g;»sÔöI8ÁÁÁ"""!!!XÉuîMûí°mÜž³ çnfªªªøßbü©ðFÀ±`ô0@ Ï?<yrîܹì=ÔÔÔV¬Xúýûwv¬èæÒÒÒKKKööÐãÆóóó+((àãïôïáaaacÇeµqÄ +â8žëäö?ñmµóì!ÞØØ¬šš q{Óþa;,X 0\ïÞœÃCÎÌÌlnnFéëëcû#M8ç±Ö ³X,VAAös.,,D [XXP©T + ¢©©Ù9°žY¿~=jûöÁ5m<ÓÎ4<û\±b ЬY³Ør{Óþa;|7eÊ>`1ºìÿýö B={v]VÄã$ëÖ[œzuFF±±ñ={?þäÉ?ÿüÓØØþù ÉdÚÚÚP(ãÇck×®]Û3Oÿ¡'N0lßÛñãdzÁÆ1ì_sssoÜž±wï^Î~žÚEEEËË˱oñìèáèÑ£###¿}ûÖÎUSWW×ý]¯^œ +ÉËËS(èèhçž÷f0\Ë/·µµ?ŸÑ¹ôO999óæÍ544Eݺu«ý«F×DZ°°`oäÊéõë× + + +ØÔSkÚ:y«ÝÛÛ[KKÁ`°X¬pçÞtðª^ÅÝÝ} t:N§'$$$$$O<Ò9r$Ñ þÀÀ5cÆ3fEöðáCöqËÕ 333ynvÄþåšQ£ÒÒÒžb8Ÿ¹ÄÙ¿äjo«O>|ø°ýLz¿ñãÇ?ÞßßÿÕ«WØä®ìììÌÌÌõë×c;S( &ôÚa4(ËÑÑQÐ[Ñ'''c»\ö1.üïÿãjôèQBBW£¡¡!{,¶Û·o_¿~³ÅÚÚzà +ÕÕÕt:ýÚµkJJJºººÃg2VUUÕÐÐPVV&ªB@°ÌÍÍW¯^-Ð[|þü¹ OÌ«é1qqqøàáÃØ~¯-[/²³³ñ,PRRª¯¯g/ošššHKKkg|L&7;`ÎÕÕ}8tô.õõõÏ=è-Þ¿/ÐþÐ;EFFÖ××+**â¿5sæÌôôt®FUUU|ä°ñB ÿüóÏ[·°}HÙÄÄÄôôôÌÍÍ-,,dddDDD ¿~ýZ___WW÷öíÛ·oߟÿþÖ[ØÓË-³³³[±b >j» œKZZþøtîãyFFYYYYY¹#š«««««×ÕÕ¹»»_Œx!Ä>ÕaذasæÌ¡R©VVVd2ù]±X¬¬¬¬ŒŒŒØØØ€€€€€$€€$iié} .ôd2yÅœêêÕ«¥¥¥8?~|gïðéÓ§.ìØ±ãÓ§OX¶¶6v³I§ŠõH$KKKKKËõë×yyy%''Ï=ûûDu ·èìUóçÏ/--Ý»wï!C§7o®Zµ +!$&&æïïÿóÏ?ëèèt¿[UUÕ+W®|þüY 6p5{ölìŽïß¿ëééñåé_XXÈ`0>}ʯ>yÐüú믡?þøãÈ#m =:&&=_¿ËŒxñâM6!°éþË-sttèZ---±±±t:=11AÔõÝèÃÆëׯÅÄÄxÆ444޶¶ÆÆÆv¿ÀÌ3§µµõòåËØaÀ'O=zŽZ;K?þmt÷îݬ¬¬ììl&:uªvZ³@AúŒeË ¶õÝ={öDFF9s!į`Ð AqqqUUU!!!éééØaÀìïH€¡CÊÈÈrnZSSÃ`08ûÑÓÓ£R©óçÏ?~üæÍ»ØA XÕÕÕ%%%œÅçÏÚ_G&-[Èß!€ °sçNÉÌËË{ðàA~~~uuueeeeee]]]sssKKKKKŽŽŽ¬¬¬v°ŠŠæØ±cÍÍÍÅÄÄøIÇA XûöíÛ·oÑYtd29))ÉÞÞï5FHHÈÄÄÄÄÄ} +¢ªªºtéÒÎ^',,Œ`ÁÎ^ØÁ£¬,IIIÖ}è ATÊ__¿~%êÖzzzGíìU)))bbb]žüÔ +tÖáÃN® +Ð:è`@ØŸ}û+΢NôŒômúúúS§N%:ôñãÇÞ0íÒÀÀèýŠŠŠŠŠ&ÑYÀ¹ômþþþD§Ÿ}ûŠŠŠvç΢s@G +Ø@èèóÒÓÓ«ªª®\¹Bt"àM\\|÷îÝ#qÆûæÍ11±3gÎ€ŠŠfîGÑét¢oË-{ÿþýK^^œzµk×.É$:ÍÝÂd2BÉÉÉߟ}#:n¹sçNyy¹ššh]]]zz:Ñéüt6ÿgúôéfœÑ¹ô"°ÝB§Ó|éÒ%--à A] + »JJJ$$$Îx,ðú(èºâââgÏÍ?_BBbÎ9GœsçÑyÐ555Ñh4¢³àÿ#êÙqâÄêêêܺwÒÓÓëòµrrrß¿:uê¡CFÁ¿€ú0(è:lþJÅþ{ôèQ:ÝÑÒÒròäI¢³`/^$: ~+á*++÷îÝëììCtFœtN'Évvv!+++iii:Ÿ{÷n¢ó ¯JLLüþý;ÑYðbbbD§ºKQQ100PZZèDz(è¢>Üœ{×ÚÚ;XLLlöìÙçÎ+**Ò××':;ú$EEE¢SôCuuuaaa&L :ÞV+ÐE ,ÿÁŸÆæpØþ?ׯ_?uêÑéôPÐEt:D"Í3çÞœ{7oÞ={6LÍ@^Åb±X¬ŠŠŠôôôQ£FNo]Q[[all¬ªªúêÕ«ãÇ?}úTFFÆÊÊêÞœ{eeeD'ÀtErrò÷ïß9çÿ`šT*ÅJHH $+ôŸ÷ÙÜÜÌ÷>ñ +€¥¥ + + +ñ BQSSSRR"$+ôEEEUUÕäää»wïò±Û¢¢¢S§NIHHèèèð±[<(è +;;»üü|ü¹$***ïÞœ;w.!Y 9r€©©ÉÔÔÔÂÂâÂ Ý +`±X)))³gÏ3fLeeeDDÄàÁù-l +@ç888äääüñÇ/_ŸuëÜÄ&NøÃ#ËÊÊòòòîß¿ïÞœ +ÐôéÓ·nÝ:}útA'NccceeåÃ$$$žÓÓÓ'N(Œ xúô)Ñ)ÞÂØØ8>>ŸŒŒÜÏÏ/333--íÚµkìïJJJÊÈÈÈÈÈÈÊÊJKK×ÕÕÕþ«®®³MMÍÅhjjöLæPÐ]fffçÎëCÅ©©©?ÿüóÃ&Ns"H²²²,«ŽŽTÀ @ï%***))It÷ïßgddtíÚ.ßWEE娱c!qïÞœüüüŒŒŒªª*ìYÿË/¯_¿f0âââX= ¢¢"###//ohhhhh8iÒ$))©.ßœk »ÔÕÕÕÕÕ΢Ó&MÔÎÅ©©©yyy³fÍJIIÁj/_Ÿô`@'\ŒxñâÅ& !!aiiiiiÿVkk«°°pϧÔ( -ZŽjÕª¶Ÿ»jÕª/^€ŠŠrÖ@/4tèÐ;wB¡tg@^p{ïtðéD"±X,åÀ +$ÉÇÇG]]=** +jœÒ/¿ürîÜ9;;»¥K +îF$ û¯ÚÎ;]\\w/m@ŒH€cÇyzzÞŸ}{Ö¬YµµµDgÅbµŽŽDGG¯\¹è\º +@ ðÊþD"aáEEE¬!T\\lnnN&uttnݺÅÕÏ;w޵µ%%%7oÞµŽÏPÚ5ÀF" íììÙ,«µµõôéÓkÖ¬AíÙ³g×®]Ø~æíí]WWêééÉÕ¡×Úµk+++UUU±öãù +º+++ËÞÞ>99èDjÃb±Læµk×Ö[µ8p at CCCTTtÚŽi¯_¿FEFFFEE©ššlߟ!TPPàææ&..ngg÷üùs®ÝÝÝ +Ä~Öo?/ »ÊË˯\¹òöí[¢ šNì#57oÞU__œòwvvÎÍÍœqãÆÞœ{BãÇihhÀ®~ôôôN8Á`0bbb°öãù +@@ +H$!!!''§ððp¬Å××wÞŒy***÷ïßgÇH$kkë-[¶ âââbccåååÙ«8EFF(((°ß$¶Ï° +(·s5:99}øð!99yòäÉwïÞ4h!¹=ç&ýØ×~~~ø°Q£F¥¥¥µÕ§©©){OPPÐãù +ffféé饥¥øo©šš(++?yòäíÛ·ººº=º +ÎÎÎÎÎÎm}wÕªU=øÖ0ÀÝeeeuóæÍQ£FÀÁÝ¥ššhii©¢¢Bt"|ðÏ?ÿhjjÉd333Ð×A=zôh0 +>2-- +éââÃGnذܜ{w_ºtiddd}}ýï¿ÿγÿö9::âï455ÅGò<KaÄøÈŠŠ&®°|ŸÃ>à# + + +ñ<ÀGÎ=€Ñhú©èkøµ;ç/\]]ùÒU§À øLLLL__«qÄøH)))|$ÏgVYYY|€²²2>R^^© ÐnÊÿý¥F"²²²:~føðáø»KHHà#GoýìÝg\TGÛàYØ]A +D(F¢Ýš1*Å5F±ÄXQÄD¬1 (윬øØ""Òëy?'ûî³»à[ý_üíÎι{ÎÁB33³/_Ÿð*(ð^0Á®UUU ö"XÓÀÀ@°Š5EÿVp[·nóæÍÒï ÞŸ}[ýúõ±Š££££££(5ÝÝÝÝÝÝE©)ÔöíÛ===óòò°Õ×¶mÛD¬yàÀk9sFj"~1uuuE¬Ù[7kÚÙÙXkÏ=2éSàÿM4éÍ7%%%Bï0@ÃlÛ¶ÍÒÒòáòèöíÛŠŠŠ***-¢Kî߿߫W/Õ«W¯ŽŽ4ºÁ`¬ZµJCCCGGgߟ}BK!vvvl6ÛÌÌìúõëBKV¬X¡««+ýqÄ)$$DÖ!À·eeeÕñ)EQO< ®cÚ¶mÛê5¹H]žp!==}ëÖ ?tŸŸŸÁÁÁQQQt¯¯¯··wttާ§gzz:]®©©sùòåiÓŠÑSüK<<<fÎyñâÅ.p8¬¬,Áõë× M:UèdÚF¡Äaذabþ¯ .ø}€?jÛ¶íìÙ³ËÊÊjûvÏ9S¶ÁÜ¥É,))¡(ªžžÂ[RTTÄd2¹I«««¹¯ ÐÇrÃf0BKöïß߯_?uuõ_ýUÌç"åoŽTaaaOjBÓtõêÕ%Kýú7Åþýû;wî,Š ZžÈÈÈ}ûöíÚµ«G² Å266\ãæææ±±±111tI·nÝbcc§MÍ»àJ%'Nlݺum%®®®®®®<èß¿ÿÊ+Åx.H@<,,,dêÓ§ObiÇÚÚº[·nb€Áls IDATiªÅ;}ú4!€W¯^ýúõu,ÐîîîóæÍ + +¢K¢¢¢8NPP¹¹ùÞœ{ëÕZ||Œ¿¿ÿ3è ),¡§þëèèÔ6l×`HŸ¡oߟO>¥_¯]»bkkû÷ßóUãœÎ;ïSÞKêu[Ÿ^° +A qsçÎ}þü¹¥¥¥¬À ÉÓÒÒÒÒÒuà\Á9uôèÑgÏ5ìØ«W¯7$rêòåË/_u mÉ-0MÓׯ_ߌyÓøv[µjÕøv@È< qk×®mߟýýû÷eÉ+**úðáCee¥¬@ OÈ<Òóõë×AÉ: +øç>|ø`bbÒºukYÇ ¿þúë d}@ª««ÓÓÓÙlv6mdTB>~üÈdâ·.ÈÂÂÂŒŒ<Yÿ ?E mãÇ?r䬣ª¥KþöÛo§Oîׯ¬c¶ÃO4IÖQÀÿÃ3·lÙ²ÂÂÂ>}úÈ:Ü<6Íf³e!ž WÈ$r A GHÜÒ¥KÆ[·dy@ #Hähß±Ž&óF$)럢š[·nߟýÕ«W;w^ºt©§§'ï§¢7Å`0êUäEQ%%%âmÁ`šššTTT·eé`±Xl6[ÖQx Š.44ôÀìÙ³çëׯW¯^ÍÝË/%ÑòàÁ%Ѭp8={öÈ: +$ÐÔmÛ¶íøñã={ö$íÝ»÷Sî ~ff&ùwï¡¡attŽœœ=ÁX¹råŠMLfhhšùw¢Ðû÷ïß÷ööÎÈÈèÞœ{LLùßôkŽk×®Û·o»»»¿{÷.((HÂ_6ïŸûNÖQÈ^iiiJJ¬£qBMÝÛ·oÍÍÍ¿YÍÃÃcæÌ/^ŒpáÃÉÊÊ"hjjæää\Ÿ|yÚŽiôµ{SŒŒŒ|}}œœœ£££===ÓÓÓk«Ù»wïÒÒRB¯¯opp°§§gTTTN®Q£FEDDÈ: +Ù{õê¡¡¡¬£qÂCÀÐÔuìØŸ¯[ZZ§§§££ãÓ§OéÂeeeÜÜÜo¶éã㣢¢BßàûŽŠŠûÚÕÕUQQ>ÄËË«uëÖ§§ ;H ©ôòòJKK«ªªzñâ ···Ðj111ÅÅÅEq/Öþç8ÅÊÉÉ©£nÝºÅÆÆDGGwïÞ.ÔÑÑ9}útiié;ž5ÌÿÞ:377---iÄ)HhêæÎ;uêÔ~ú©uëÖµ=F§Í`0j[ÓÏÏÏÈÈš¶O£¢¢¶oß®®®MnÜžÑÍÍMOO¯ @ðÈÈÈÐÐPׯ_7èä€ +«"ôäççkii¹žž9rDÖ±ÔêÅÆÆÆÓ§OÇ3äßg° +4ÆáÃ'M1}útYÇà\A GÈ$r ÁNÀÐmÜžw;w®k×®õ:JQQñÙ³gõí@Ê@KÝ¡CVZIŽ£÷ïßWVVJޱ@-ßþÙ·o_v1dÈk×®IޱÀ3r dQfjjÊf³cbb$Ý#ÁtÐ|!¬ÐÐОžž9sæòå˲äÉÚ¶mÛÞœ{Y,ÑÞœ{ !÷ïßïÕ«ÅêÕ«WZZ!Á`¬ZµJCCCGGgߟ}ô± vvvl6ÛÌÌìúõ뎎4kkk&Iüsÿ¥_Öçœ?À}Í`0fÍÅf³¥ø Ù@ Yoߟ577ç+ôòòòññùòå§§']š©©óÇÌ?[¯ÐÃÃÃÏϯ°°pË-âéééááQ\\LQ!û/ýB°~mz÷î]ZZ*ÆŠ duìØ1++¯033ÓÇÇGEEÅÛÛ;##.PVVvppÈÍÍåÖä+LKKóôôTRRrtt|úô)!$##Ã××·¶uNësÕÔÔðŸuuuUTTlôé@S@²œŒŒÒÒÒªªª^ŒxáííMéÖ[lllIIIttt÷îÝé + +B~'óZZZÆÄÄÐãýô|="##ËË˹uX,VNNNmõuttN>]ZZÊ·E ¡äÉ;wîÔ©Súé§Ö[;88<µ}ûvuuõÈÈÈèèhÑ[ÓÖÖæÎòVVVæNè÷óó322¢ß +Ößžq£^AAøÏ<÷HÁæ-޵µýûï¿yKè)û|¯MLLRRRx޶¶NOOç- §_Ö÷ððððð _ÿòË/@ËZŸyóæijjJŽGIŽ}qA-œü¥€á Zh@K²téÒzòòåKooïmÛ¶I(*B-Åb±Xõ:DIIÂd2%,a 9@zž+u¶^ BÐÒ`MOš9@²nߟmjjª¢¢²hÑ"º$33ÓÎÎÍf .QºbÅ +]]]îÆœÆ¬Y³Øl6!äÉ'úúúeeeÒÒR}}ý'OЊ¥¥Y[[3Lî ÁŠøúy@²|}}sss;tè@xxxøùùnÙ² ÃáðÕ_¿~ýï¿ÿ^RRBÏäZ¹wïÞ¥¥¥333[[Û={öBöìÙÓ·o_333º§§§Gqq1wF`S|}\ €åóçÏYPçÏBŠO.®L&} ]\\LÿÖe2ÿ fÁWÿþýýúõSWWÿõ×_ V&TVVrë_¿~œsçÎEEE:uºqã]>Ÿúç¯)ŸŸeggB8žŸ :Du ð_ž Yæææ±±±¥¥¥111t¥¥eLL}u^SSÃWßÕÕõæÍ.]Ú°aCmy/åíìì:vì8~üøÎ;÷ïß[Þ£GÈÈÈòòrn`S|}<ÀF`Ð9sæâÅõ:$??rûömî})((¬Y³F°<22ÒÝÝ}ÞŒyAAAtI||Œ¿¿ÿ3è¹ûÔÿN¿¡§ãëèè,Y²äi.tvvNLLä-öòò3g=Þ#Ž)ŸŸ@0þ-üü|---#GÈ:¿üòÐrIPTT¬ªªN_RóêÕ+CCCC?fÐ4iRDDÄôéÓe; öîÝkaa!Ñ.üüüÒÓÓ%ÚX ÏÜÜŒwïÞí¢M6m@\ð0A GÈ$r A GÈ$r@ËüôéSvñáö .H å[±b zQTTB/Z² &ÔëÜÜÜ 2ÄÃã^*(`R%4H %³¶¶¶¶¶®×!/^ŒXžp¡©©©§§§d%WÈ$r A GÈ$r A G°>}JKKu²÷þý{Yb@cÇ;vLÖQÿ¡¡¡1þ|YGÑÜŸ}{È!²Ä ÀÿÐÖÖÞ°a¬£hBzö쩪ª*ë(@lð0Ôêùóç=JHHu 6H V€€€ªª*YÇâjEýçåå]»vMÖ±x á>~üxóæÍÖ[3hp'Nš®®.))iÕª=Z$ \BBÁ={¶Ý«W¯<x ë@EEE)))[¶l $ÐR`hÒ>þ,ë(Z zb7 at mÎ9SVVæììL5j²²rBBBHH¬ãÆBMZ\\\@@¬£h9âââ"ë( I£Çû!***#F8~üxvv¶¡¡¡¬CFAÍÀСC +dEñäÉ7oÊ: +hê*++O<ihhØ«W/ºÄÉÉéøñãÁÁÁ² + 43gÎ0a¬£ Ý»wÏ7¯šš¢šzÈ`0D?Á`Ð/©W;BíÚµ |Ó+Wòóó===¹%ãÆSTTLHH@ÐÜá!`z ¹zõj.ÁëuEQµÕo@×Üt@tôüú®®®œœýµk×>}ú$»ž@ÔÃ?ÿücii)ë($¢šÄÄD{{ûüüü 9râìì\]]$ë Q@³fmmÍd2¹CÚYYYöööl6ÛÔÔôÊ+ѧO)SŠM2 .a0,ËÒÒ2%% rïÞœîÝ»+++/^ŒÛÁXŽhªªªUSE7X[ááátŒ×=/xjBñµ#4Â[·jkkkiiíÙ³ü;üÿÍx¥ŠŠŸyóóSPP°aÃ3gÎÆb Íh6<==œœœ¹Ó`ÜÜÜfÎYXXîããCîÝ»÷àÁô8%=Ь¬lûöíÓŠM#p8Y³fåååñ¶ß¶mÛ>ôëׯ¶Æé~ëCY²dÉôéÓÿþûïòòrnµoÎÛ<5¡ø>zúL&óíÛ·ñññ/1f>íÚµ[Žh_y×®]}}}ýýýe + -ôþ...¢²cÇBÈÑ£G)b2ô%2ùÿO±såûwûöí + + +Ü:L&³€€¢šÂsq\QQQwãÏÅ4ßÒñãÇÇkbbÒŠMeËñV«ã(ÁSÚ_¡ÐÓ¯¬¬ä«É×ÎÎ; !Gl@Pvv6!ÃáÈ:hÆ:Du ð_žÍ¹¹ytttEE·ÄÊÊêÄ¥¥¥EÕÔÔ=jÞŒy»ví***JJJ¢(n'..®ŽŽôàÁŒ5Y,ï[Q'<×ÖôÛqãÆ8q"+++11qãÆ"%xj==œÔÔÔÚZš-BÞ¬Æf³_œzUG; W@³±wïÞ={ö(++s§³ÇÅÅ jjjÖ1Ç}ñâÅSŠLÑ××üø1]²gÏÐÐP--¬¬,úÎP¢4.ûÈÃÙŽiá_G;§F 4hàÜ"F8sæLsss<4$ÐlØØØ<x𠺺;pnffváÂz6ÿ²lÙ²üü|z%ºÄÖÖ6++«žžžÿþŠŠŠtSÀyÁÆ VãCW®®®~ùòå3HíSê>5BÈôéÓy7l§¶Óç544®Swä '°È#zÈŒk×®ôR9Pmmí;vË:$ 0 ¢6mÚ`ÙSä9@ #xŽ¿ÿþ²råÊYÇÒBŒ}û²jժݻwË:hJKKÔÕÕÙl¶¬cÿZ¿~œ¥¥¥¬£æ + 4iùùùÊ:_Rfíóçϲ1$Ѐ +8ðàÁúñÇeKR¯íAÎ .X°àäɲÈ5k~ýõWYGÍhÒèTEEE&ÿWdþ1d0 + +xlLöº@ãá·9A GÈ$Pnݺ¹ººêëëË:<X u3fÌ1cd +îÈ$r A GÈ$PîÞœûÍ7²Ä Ôåܹs~~~=u Hä9¡ »xñbBBÔº[·nÔºÚÆ7lØ ë(ê²qãFwwwYG@hñRSS·nÝ*µîV®\@ú?~üصkWYǯ àõë×eee²à¿\عsç$ÚEppðùóç%Ú <ËÍͪªu¥££Ãb±dEK¶wïÞA«5AQTãÛ9tèÐäÉßÈéÓ§³¡¡aXXÁBHÐb ¹````aaQÛ§bù3¯ŠŠÖÈ öööÏ=uuçÎ>}úHšñªªªmÛ¶I¢åìììÁ_œzõÉ'iGCCÃÓÓSLAÕž®æ€Š€€$))IUUUÛ·oG¢C@pYÐ,šššüðò¢ÒÒÒ?~,Ñ.*++çÌ#¹ö/_ŸÜÈLLLd4S'<<Œ¶O·oߟeË;wÒ¯@ó ¥¥'åN¹M%.^ŒXÒ O>¿þú«:ª/#µŸÂÃÃCCCߌyS]]M¡(þ>ÒÿÒßÊ7nøúú>}úÔÔÔ422ÒÎÎ.--Ãá<|ø°ºº÷ÛûÓO?yzzzxxÐ-0Ì=zlÜžñûï¿'Ü»woÚŽiÙÙÙÁÁÁk×®¥(*++ÃáÜœ{·K.{öìÚC€ššš¬¬\Û§mÚŽñññIJJBõäïîkÞkhÙ0 ÷?I³Ð®]»qãÆœÙÆÏ©ã +Fì,Y²dÉggg###6MþÍxOÁÇÇgÞŒy®®®üñ¯¯ïãÇ===}}}}}}[µjÅéêêºaÃúZn¡ººúÖ['N|ÿþ=!ÃáÌ5kÚŽiñññôQnnnsçÎ0aÂ¥K|||VZ%µs9€¬¬|îܹ#F ÑawžôøŠæõcãÆ +'''åËóôéSWWWeeå©S§>}úáííÍ{õO2eÊû÷ïÛ·oO¿Ý±cG.]Ølöþùçº0##ÃÃãuëÖS§N¥KÒÓÓ§Nª€€äààðüùsI'À¿455Ï;gcc³sçÎ3g6¯X $ ZÀz2ò,--ÍÚÚÉdrG¹nܞѣGÕ£G7nBÆÖ[µµµµŽŽè9ÜI ŒcccÑ¢EªªªVVVBÛ*++ËÞÞÍf^¹r üï-îkŸÆAjÆwâĬ¬¬ÄÄÄ7Ò l6ûÕ«WÜ:ŠŠŠñññ¥¥¥û÷ï755%GGGWTTð6uöìÙÝ»w;99}øð2oÞŒ]»v%%%q¯±ÌÍÍãââJKK<HXYY8q¢ŽŽ¢šÉ1rš$ GtttÎ=[VV)ëX á<==œœœ¹á|||æÎûõë×àà`___ºÉdŸ}û6>>~ñâÅäß1l¢øþ.¶mÛöÃýúõ«Annn3gÎ,,,÷ññ©#TÞÆ¥,<<ÜÐÐNèD0o!YUJJ +!äܹsÖÖÖÜ:Œ`&ŽqÁ€îÅbq8M6Ñ 3gÎ477çF¹iÓŠ6mÚlÞŒþ °wïÞ={ö(++óFÛ¶m[''§_~ùÅÉÉ©ŽŽtñâÅSŠLÑ××ç}¢cÏ=¡¡¡ZZZYYY + + +žžžÐÐPMMMé;È3äPŽ|þüâââ"ú!;vì =zŽÁÒã§N¢(j÷îÝZZZô +À/Ç÷BQœ@Í/_ÓÔÆÄÄ€S§Nôk&I_ýs)**PU\\Ìd2)"TVVÒë~Ÿf !uŽ#ô@&óÿâÎ,§?ª¬¬äíÛø¢E!wîÜiàù €€2vìXúªªê5k222ÊËËéýû÷>}ÚÄÄäŠMfÌAQÔÖ[§LBQÔäÉÃÃùó~Ÿûî»ððð²²2ÞÞç sçÎÜN%!$$rùòeÉuQ·êêê¿þú«[·nÑwvïÞ-V¯^M9þŒXZŠ?6}úô:êìÚµ~ôëóçÏ666ÿ Ç(ªCB"""düîñõõÍÏÏÏËË€j¹ŠOpªàtBïe:owg.¡íBôôôRSS¹o'xÔvsIÛ~ ίmbzPP +ýøàÔ©S³³³O>ÍÑÎGè\yÁÆEßb0&9þ|úË Cž¢@ÍàT +ÁéBñMT[;!!! +â(8ÁcÍ5&MêСœîdS 8Ÿ¶éŒYÖšQ£\\\455 ¶,t®Œ`ãB'â·TôY?þ|È!²9|hflll<xÀ»X»œœ}FFFUUUFFùßù]Üס¡¡ôªàGµµC>}zQQ·²Ù èŠèBÁKKà<x'Šs8ÔÔToooÞvx_+/ØžÐø v¡¡¡ÝØÛÛ*))íܹSÄíA®`H0ý óoV1bD9ù7ûfã|þþûï¢õàãããááQÛ§³fÍ*//fHÐ, hkûT!A)@rw€¢šŒŒ<Y"/ !ÙÙÙ>hGÇ«ªªJޣЩ}ûömÛ¶u ¿²³³ !»wïNNNu,ü233 !ýõ×Ë/E<äÖ[|ÛG°X¬+WòU+..ŠW奩©¹páBŸÂþù',,¯°sçÎþþþ| Ï?â+ìÞœ»»»;_áèµyõíÛ×ÙÙ¯ðêÕ«§Nâ+>|ø÷ßÏWÌÝ€ËÉÉIp3祥ñº¹¹õèѯ0::úÙ³g| 3fÌ000à+ãnð̵`Á---ŸÂß~ûšš¯pÅl6¯ÞW«VèUky®Y³ìرc.|õêU.]6lØ@¯C]øøøû÷ïÓ¯-,,øJMM=rä_a¿~ýø +¯\¹"ø#6bÄaÃñ<yòÚµkÜ·ôOà:lC Î*twwïÞœ;_á={^ŒxÁWЩS'Áfá$¹Æ(üWMMMhhè)S,,,-[Æ·¹<É>ãÆõ\øý÷ßü=ï>Íô÷hj$œÀСCeýC YÊÊÊôòîðñãGÁ_¡# ýúõ¬yîÜ9ÁÎÎÎ5ãââkúùù ÖºÔòåËk.X°@°æ;k +&$cÇ Ö9r€`ÍëׯÖüî»ïkŸxñB°f»víkÒK𺎪ªª`9995éEè>§O.++;uê`ຎ&L¬+Ø{@@`ÍuëÖ Ö\¹r¥`͹sç +Ötss¬éêê*X311Q°æðáÃkÞºu·NeeeAAwÿš +îHÃèE0Øl¶Ý«W¯V®\µaÃ)SŠÈ:º®cÇccc555)tgoo/žü|Ëöúõë?ÿüSÖQŒ³¶¶ŸxºäŽä IDATñââÅÍÌÌdpzzzµ¬ÊçǬ®®NLLä-€÷棩©yçΟBŸ-hÆÆÆ5 Þ®Žµµ¬©¡¡!XsôèÑ5uuukN:uÐ A| úúú5&NÈW(8TO + +â+466¬¹uëÖ¯_¿òÖÜ¿ii)_ak&''WUUñ*++ó0Á/Ðo¥¶¶¶`Í?;V°2!ÄÀÀ@AAÁ`(** +õvíZîœÐÿœœ©ëîî.lýÍ={òäÉÜ·)))K,±ŽŽ¬¹jÕªàà`ŸBÁÛ·oüVòÝ(8uêSXXجY³[.ùºRšššM6;v¬gÏõë×oذÁÕÕÕØØžO>²±%322"lݺuôèѲ¥eJIIBðáà +GGGIw$!O<!«««sýýýÅ~ªªªª°°PŒmEQ555±1±ÌkÓŠ +!ÄÁÁAðB³ÙQRRª¬¬åOÉñ/²²²5ÕÔÔD¬©-JÍöíÛ·oß^:uq:G×®]»ví*JMÑsBkZYYXSÄ/&Ŭ)8Ý k÷îÝùùùgÏ»q##£ºÃÐÑÑqf²(5;wîܹsgî[zýsÊGßJø&$uÿþ}]]ݳgÏrsôÖ[ôíÛ×ÑÑ1.. À7VVV6ÁéÝõrãÆ +Þ·âÍgèËÓ§OKçfWÃÆfhh(úÌx M6mÿþýà +KII6mZFF¬#f d¥€€TVVnݺUðÝÈ#õôô<žiÓ&,ÔP7²²2ú1²æÅbÑd?~\pC#ÑK*))8ÏDúzõêÅ[òÍK~XÁ`0L¡ÏȪªªS§N +<÷+!¢š///¡óâäizTQQqÊ)¡¡¡gΩmÐème[Ì +KxP^~äûï¿?qâØïûׯ_ìÞœ[ÖáÈØŠM-ZŽÿ~ŸçoÞŒéïï.ø04 ¥ŒŒ<Bmú,,,?.ë(çÏÓV@KòîÝ»üü|YGÑ(((®DÙDL4iÒ€I²¢©prrZŽhQbb"_@?I/ž)$ÒñèÑ£#Fðÿùç&&&}ûöIT º +"ò³\-ØÓ§O?~üHQ¬ñ[¶lYttެ£hBZ·nMï$M\·nݺuë\^^®€€€§§§¢¢BIHHPSSkñk7É4iRhhèÏ?ÿlee5dÈÞÖ¯__TTäææFÏ &®mÛ¶W¯^u2æåå#ë(@ŒŒŒòsäRsøðaz{GhÖ[wþüyGGÇ÷ïßB222>}:iÒ$< ÉêÒ¥Ë_ý5lذ±cÇ÷ïßßÌÌ,33sÎ9gÏe0nnn²à¿-[Ö¥KYG!{wîÜIOOu *ggçuëÖ%&&rWW£çÿîK +4!»QxÙÙÙEFFx{{+**öêÕëìÙ³cÆÉÊÊÂ3pakk«§§wüøqîîË l6[Õ 4ž»»ßŒy3,,ÌÊÊÅb;w.))ÉÔÔTÖ¡4o + + +ãÇÿçnݺEy÷îÝÝ»wÊ·0(p!Ÿ}ûÎ5kàÀGýþûïe@AÏö¡gþ?~¢(Ìÿ©h¢ + + +>}Ú°c?~ü(Þ`²aé©©%$$¬[·.!!Á`?^ÖA5]HšC:tHÖQ4ôÿC>|øÒ¥K¶¶¶úúú²ªéBPoÇ¿råJÃ¥×Üžqc7ÿZ°`A»vív,4jjjþþþoG~qvv>tè··wEEæÿÔ + @œ]ŒxqË-i!66¶ÁÇz{{#hñtuuwìØ!ë(Ñ£G³Ùlzû6$uCPoóçÏ÷ððhرëׯ?pàÀ#GÖüäñ¢SWW:tè3gÌÌ̺uë&ëp4$õÖ¡C:4ìX]]]BH·nÝ,,,Ä*--ÍÇǧŸGœ~ý¢(úžcÇŸ}ûÖ÷(F¢(ªÁÖ÷XìgM³³ó3g0üÿMH@Ÿ¥ŠŠ*)))))~²²2!äåË¢R^^^ZZúõë×zÐh + + +\æ»÷ýõ×+W6¬;-¢>þ\QQQUUU]]ŠŠŠ©©Ù¬3ºñãÇÏ9 À7!yôóÏ?HŽuëÖ-ZŽH¢]ÔAKKËÊÊJ¢]Ü»wO¢]žÔÔÔÜŸ}ûÑ£Giii©©©>}ÊÍÍ:J¥€€Ô¡CÎ;öìÙÓÆÆÆÆÆŠuëÖÒYtyyy¹¹¹ ööö%%%÷îÝSUUUSSÃZ at B!Ba0 +3M¥¥eJJD»žq㜜œD»hÊrrrnÜžñÍj666]ºt|8ÂUVV&&&ÆÆÆ&''WWWsËõôôLLLtuuÕÔÔØl6ÉTTTüúõkaaaQQÑþóK.]Œx®Ìb±F1aÂEEEÊÿ+,,LJJúûï¿édFp»áÃs_3Î;wíÚÕÂÂÂÆÆŠgÏÖÖÖÒ·)Bµ}ûöÒÒRú5ýâéÓ§7n䣀€(àd÷î*®¹€I÷îÝsqqùfµ¶mÛ^¹rÅÌÌL,ÖËÉ'ýüüÞœ{G1223f ¹¹¹(Ä^œzu÷îÝ«W¯ÞžqãÔ©S§N +Þ±cäc"//oïÞœqqq>ävêÔÉÎÎN___WWW]]Åbq¢¢¢ÂÂÂׯ_¿~ýúêÕ«Ü|FGGÇßßÁmÚŽÉ4H@²V¬XË[òðáÃðU{öìÙ-[õŒÃzÁu?Žxr2Øáââ2lذÚ>Ý·oßíÛ· +váÂ)ç»wïöóóSTT5kÖâÅÛ·o_ߺtéÒ¥K'BÞŒy³{÷îÍ7»»»ùòEÊÃv555Û·o_²dIQQÂ÷ßïèèhgg×§Ow©®®~ðàÁ+WnݺžjÕª5kÖ¯_¿ŸÁÌ4kH@â + +ëXÉøåË.ܺu+!D®r.Žk×® +òïÌ:ìܹsÜžqcÕªU6mb³Ù[·nÍÈÈg0aaannnçÞœ{ÑÑÑôœx==œû÷ïgdd1âܹsÝ»w·ŽŽüøñãýû÷œœœ322ºwïceeÅ×5!$%%ÅÍÍí·ß~ãp82ü@ËЯû¹PÇv]YYYVVV»vírP]] ŠŠv÷î]SSÓÆ7Ø©S§U«VÍ=ÛÆÆfá ~~~,«ñÍhíÚµ¿üòÊúõëêµMQQ~BQÔ'fÏœiÓŠÜÜÜÆìÎÔ|ÉcÒRŠªªêP»<ØÒÒrëÖÁÁÁòð×Âøý¶wïÞÜREUWWïß¿öìÙtÆû÷ï÷íÛçî£óîÝ»øøøyóæB<<<üüü +·lÙœd·¶¶~þüùæÍ-ZŽeËgÏÑËÎzyyùøø|ùòÅÇÇÇÓÓS°ëžžžÀÀÀääd\ýØ1Y³f±Ùlî[ѱcÇ'NÐoW¯^©©Ù®]»C-_Ÿ\KKK[[û?þ dffÚÙÙ±Ùl33³ëׯÓ-èééœÿ>%% Á`€€€ŒÿŸmÛ¶û÷ï÷êÕÅbõêÕ+--M°kBHJJJûöí£¢¢€pâ£GÞŸ}{NNΰaÃ<y" !999ÕÕÕÕÕÕâÝ<TMM¬¬¬ŒŒ<##CÍÖ¢šåËëèèŒzõjÁ +žúçÃ`0ÆeaaÀý#(Wì±Ùì¹ÊšÑo]]]éǪÂÂÂ:wîÌb±òêÕ+úÓeeåQ£FUVVÎ9~M?óæéé©€€äèèøôéSºŸMRRÒ³gÏ~ûí·'O<yN233}||TTTèû|]B8Nhhš€ +ùÁ¿¿¿súk^\\l``°mÛ¶ÊÊÊF6XUUuàÀ=z|üø±ŠŠF©?}úTUUUPP ÞµËÊÊÞœ{÷õëW:K7H IÐÖÖ·ùßÉx-***:~ü8÷À;=oª¢¥¥eLLLqq1EQ555t¡µµuXX·····wXXýG±[·n±±±%%%ÑÑÑÝ»wçërüøq//¯cÇIìD@Ÿ`°Kú9!ÄÊʪŒŒ<((šuëÖãÇxøð¡èa)zôèÑ;ŠMŠ®®îêêúòåKY +UVV-\ž0//¯ñMEDDæççB€9©éÀ3ÐTÐ9À÷ß/ÏÏ,\ž~ÜjÎ9¢Ô÷÷÷1cFYYùwº +EQ^^^//¯eËÑ£¢¢8NPP¹¹ùÞœ{[spp8sæÌžqãÞŒyò²²ÆßÉfw°ãøñãHII?~<]X÷`G``àÄyW£·¶¶4iÒ+èÁððpòï`ÇŽiÓêìðððعsç?þ(~T`æÌR{ÀÂÂ"))iÏ=ÑÑÑ'Nàζ211éÔ©œrZm+çdggÓ\!AAA-ZœzµLÌíìì^Ÿ|¹aà +6ôèÑÃÑÑÑÞÞŸGFFF¢\-|øð^ÑèæÍ×®]£(JYYyÈ!.]|ìMhBsYG$|£/ŒoW¬X±bÅ +úõòåËù>|mbb"žÎw§Nžõ¶oß{ç×ÖÖöï¿ÿ®kúµ¥¥å7ov^"¢(*11qÅ{öì¡Çy#WŒ€èëë/[¶lÙ²e/^Œžtéw#0îÚŽk×ÎÊÊ^5¿gÏvvvµn;wŸpáÂÑ£G÷íÛòøñã +6BF.]ê^ôùóçÜä + + +vqq>}ú²eË4 |9~9&$$dggK¢e®GIŽýæ{éÿàÁYÇ'çµ~@322222⟩©yÿþý§O ++**ªªªª««ÕÔÔTUUÛŽiÓµk×&xŸU«VS§N:ujuuõÕ«W>|øàÁû÷ïçååÝžqCèÔ&¡§§gkkËÝÕØÖÖVCCCúÁ75H ÉáÍ".ÒÓÓÓÓÓ%Ñ2Å{éOß}~öì¬hánߟMKNIIDÛo©dðRPPèØ±cÇ¥ßuã)**2ï +¡ °°°²²²ªªªªªNfÔÔÔ`&Ó ŠÐ÷æÄøLpߟ}ߟ}ûÛo¿)((888XZZò«aàÀåååwîÜ©ow::: +³åàœôg2¿üòKdd$}ëêmhh(ë( ¹¢w}jüã¢t€ªª*é^µcÇeee ;;;'$$ØÚÚŸ|ùR[[»îF( lÝÔÕÕÕÕÕeE³d/==]è.*oߟýôéÓ©S§DÙn]l6[__ÿþý_¿~ÝŸ}»ŸŸŸÓСCyæÃd2«ªª:tè äÐKYÇÕl7®žžØÉÉÉÙÙyÀŒ0¶xׯ_çp8ÎÎÎÎÎζ¶¶ò¹Og#åää¬Y³æÏ?ÿ€¿={öüæ!':::;;»K.P^üôÓO|óžFsëÖþùç @>}:vìèìì<vìX-AãÉÑ_h + +wîÜYÛ§ÖÖÖ³fÍúôé{d0>|8þ|BBÂ'vîܹsçNuuuGGG''§Ñ£G«©©±;9KÿÆ«®®¶±±9zôhXXXXX¶¶öرcGÉ» +JKóòåËuëÖ[·NOOoüøñÎÎÎCmÕª¬CkNjjjÒÓÓSSS-[fddD'vvvÜÕ0A +ìííé=Ú ÊÈÈžuëÖ7)--¬¬LLLLLLTTT0`³³³nBaXd¬M6£j7hÐ Itª€€4fÌÈÈÈ÷ïß_»vmþüùmÛ¶=pàÀäÉÛ¶mëèè#®É¿û³Å5kØlvÓ¹/LQTBBµµõ?üðèÑ#\ý×¢¢blllAAÁùóçgÍ¥ªªûÃ?èêê:;;ÇÄÄ7+nj\\\ +O:5}út¢"""FݶmÛÉ'<x° @Ö6K.ýòåË#GŠN:hÐ ===sâÄ ùÜýŽRVVNOOñâEhhšœœýµk׿ÌÓµkWKKËùÜÇ + w€*77Òø +ù$íÃ3fÌà+400\óÉ'-â+ìÕ«WHHãyüøñÍ7û÷ïÏW~àÀû÷ïózzz +>÷|þüyŸÂ zxfà +?NHHHNNNNNèÛ·/=f&Æs!u>ÒÀ`0êõÀÃæÍ_ŒxÑ©S'qÄÕ(ô¥?FýÅÉd6lذa[¶lIKKKLLLHHQÀVZ=zôèÑ;wîŒ}ûvBBBBB¡C:Äf³êìì<~üx}}}YGÚ€©ªªºžžžžžTVV^ºtþÏ¢¢2jÔ(ggç1cÆhiiÉ:Ráêû+±eëÚµë9sæÌpîÜ9z=¥.]ºÐÓY(WÓ¡Áð¿Dznݺ €€|æÌŠŒRIIIBB_¡Ð)€?¬Y\\,Þx^Ÿ|.:uê?þà+Ž··L®]»&8F2aÂîÛ=zôèÑnÁ`ÔÔÔÜŒyóÖ[G-**j¿R?}úÔ®þ !{öì¡×÷433={ö7¯þÌ;aÁK.嫲yófBHœ@iÄÄÄ_~ù ¯pûöínnn| §OŠ_kkk_¹råòåËsæÌ±ŽŽtrr;v¬4·ªªªvíÚñ]¹r ~ пÿþýû8pݺu?~üðáÃÙ³gÏ9`kkKÏqzàU]]=zôhŸÂN:íÞœ¯ðéÓ§Œ+Ù×ÔÔTTTØÚÚ®[··Åb³Ù?666n׮ݧO>}útìØ±cÇ1ÌA9;;ýWwãÕvõ/Ä ŒŒ|èС| §NRVVåØEÅÇÇÓ;×7Ú/^øøøðZXXÐ;éêêzyyyyyïØ±#44ôÝ»wŒÓDyêäYSŒŠi?~<f̪ªªþýû_¹reÊ)Giׯ_¿ò +}ÏÖÖV°Š(Lÿøã+Vüç?ÿ±°°ØŽià/Y^ +úðêÕ«çÎËWصkWÁ»Ò/(ºsç=ŒJ¯ÕÀd2L¯vìØÑÔÔ»bãqÿt1+WnÚŽÉdzxx'QÉápîÝ»ghhmooÏ`0víÚE/}M×€[£_wèÐaçÎãÆKKKãp8>¬®®ŠûlM\§CÓÐÐHJJº{÷î+N<imm=|øðÔvïtv¡µéèèÐß&),f"}ªªªÜÿ\BAÑÐÐà^%|ýúµ²²þβÙìvíÚµoߟæHC0úáÍ7×®]£_·nݺ€€¢š»wï*(((((ް -EqS>.sssÁ_¿~¬)ô +õÓ§OW¯^å¶OQRYYYUUÕíÛ·µŽŽè{ÔÀUSSÃýqUWWrìÒ¥K/]ºtéÒ¥nݺ5`fqq±`×UUU|%***?~ä&yyy.\ÐÒÒ%K¹FäeggwèÐAAAaÿþýååå//¯Y&qººº={ö,wqqyøðaiii\\NmÓ#ÊãÆkp7n$:uJð£òòòÓ§OûûûsgзËÿøãüü|Þô®é +÷ç^RR¬««ËûEQ}úô)++;uêýilllUU`SEUWW_ºtÉÐТšïŸûnË-eeeuŽÖׯ_ó;wòûï¿sKîܹ3fÌúK:|øð«W¯òµ³`ÁBÈœ{÷DïZŒßû믿èïŸõéoÜôéÓéµ !jjj&M:pàÀ/_è:ôìcÇXÔâghhHÿœéÏŒyóžÛÑèguè:ôŽÃË/K8di066600š¢šÕ«WBÎ?OWŠüùÐ?N2 »Tb»ví|||JKK)òöö&dggëD!?ÿüsëÖMLLnݺEQTFFFÿþýY,©©éµkמÕX,EQ!!!ÜôâùÇ[Îw +#Ø&!dåÊêêêÚÚÚ±±±t©©©VVVôøTmðêß¿ëÖë>ÁãÇB¶lÙ"øŸŸþ¥KŸù% + + +"<zôè5ù<{ölãÆ ÏÁ`XYYÑ0é +oߟ%ž»»×·åo7o!$--^G:tÑé»('OnÀ±u£ç0ß¹sGì-7}Mtº%ùðáÃÈ#ßœ{îêêJ9zôè#öîÝ«¥¥E_Ê¡#GÐ/"åGújjj=TXXHþý+èìì<|øp)OÍ + w${KKKóôô€¯¹¹H®®®7XÂÂÂ6mÚôîÝ»ºfFF¯¯/ï)B[>}úðÞ +8þü7ïP§NJHHHNNŠÿ¯êééùùùÉÉ8eeeÜÕº>|ø@QWW2e³³óèÑ£ÛŽi#ë%ÅbRÁ`Ô]3''çøñã.\(//'øúú:;;÷ïß_ÒK¬vîÜ9777**Ê××÷áÃ3gÎŒxñâ 8wuüÞœ{Ó÷pÖ¯_6uêTŸlŸrÞ)@BÛÔÔÔÌÉɹ|ùòŽiÓŠMFñôôôöö1cýS[$âòáÃÓ§O;::jkke%k¢RSSéçaèÍæ¹Ó·xgŽ|¬3îË/ôÌÞòŒŒ<z:ïžiTÛZnnn>}æÎ[[ Ý066&Ï?ÿÚµkBGËxIî_!Åzÿþ=]Ò»wïââbÁùJÎ=[RRBGQÕ«W/Ÿ;5wx œ;ߌPYY9räHn²gfföóÏ?ߌy³ÿ«-éÀíÛ·]\\žÙxüýýÏ9S^^^[S-ï@mòÝšC|||ÿþý¹s{÷îœzõê:%q©U\\Ìd2)âøJ_ÄÓÕè)mEíß¿¿_¿~êêê¿þú+ÅóK¯¶r¡mBž?)ÜL&÷ ÐHx5òŠŠæÉ'ËËËÏ;§]["Þøúõk`` w¯~ø!66öÓ§Oµ;¢ÀÒÒÒñãǧ¥¥._Ÿ÷#--3gÎ0`É%ÚÚÚŸŸŸ² +RRSS'NøÓO?ýöÛoRëôíÛ·ñññ +?~<=óøúõëׯ_¯ûšüüüªªªõë××·»~ú©^[êøùùÑ·ããããýýýgÌA?~@ÕþÙ 'NH3g]íåå5gÎúç"zkâ%ôn<¬dßHL&óóçÏœ{÷ŠÇöNþnÁÞŒysôèQsssúß>}ú4µn»wïÞ»woøðáÜÇ€Cll¬GLLýØÒÒ200pâÄ|¿žã®®®®®®<èß¿ÿÊ+¹øÊY,VNN^mm +ÞÙèÑ£Gdd$÷@mËÀ¹¿fÿ¿WEEåèÑ£ÃËËËÙÙyÄâ@Rªªª&ÑD`öwIDATO|åÊWW×°°0Á +úúúgÏ8p ¿¿¿ŠŠŠžvºm.¢££wíÚggg'Í~³³³þùçÛ¬¬î_Þ«pêßGèE!&&&)))Bä+¡£KèTÓÚÚ:==·Š`kÒÄÈ*æåêÕ«My0=zôׯ_[ü$4iRii©Â+Wž«*ÕáîÝ»ÀÀ@zõ5aÂ~úIèG¯^œÒÑÑéСC\\a$ŸVÖÑÑY²dIå ++áôHhhèÔ©S;tèÑÈÖN:eiiLÄ DPÅáp?îèèSÛ$Kccãäää¡Cº¹¹ihh|ÿý÷RS8!»Ô€innnîîîíâСCÑÑÑí¢ÙAP/r{õOÁ=¢Æ;|øpÃlÀÏŠYm ÀÚµk×®]Ë}+t$Bp(Dð-_¹èc%Ü×|Ã"122e_Ñ .dÐH$bÞŒyûöí³··?räHÝgYZZ?~|ÔšQ?üðÃùóçmmm¥€lIùÑÈ#%Ú¶f¬ +Œ~ýZåb ÁH?m"9wîÜqtth HÄï·ß~ÛŒyówß}wâÄ QƱxøðáüÑÑÑñÊ+Ý»wB²Õ¹sgYбX,îc£Â]QT(Ùô@$»þÚµk×Ò¥KN>©©)âQcÇÎÏÏ5jÔþóFòwÄéðáÃ3gÎÔÓÓ;{ö,œ:èÜÜÜòòòGuõêU]]] ÐH'Oä]>##Û¢²oß>W_ÙB 6gÏuwwWWW?}út×®]ÐÂìÙ³óòòVZ5zôè.š©©=HhèUšy·¶idSmdõêÕïÞœã+¬šš¬éççG¯°AÙ»w/Š xܺuëÇd2'Nøî»ïÜÎÊ+óòòvìØáää,ÏËÈ¡ú^žåZ¿/_λõãÇ×®]Ëf³kFGGWWW_¿~}×®]Rê@?~<fÌîº +þùóçN2åÈ#Œ»4:uâŸMIIY»vÐÿšSŠL¡_ *,,¬Á®fgg7. + + +uïÞœÊÊʺW#¬k×®1öíÛ«MárñÂÅecœzõjÔšQ_Ÿ|Ëjh + + +±±±_Ÿ|IHH>}zTTTsßø#33S__~Mÿ~F +KvÒÒÒ8ÎÃéÍê¹åÜýÌÌLsïÞ=CCÃèèh{{{±råÊM61ÌÐÐÐiÓŠÑ_Cú_¡¿ïß¿ïííÑœ{÷+++Þ;ÜIGAAA»víªššž}û¶»»û»wïèéÅHQQQII ~@£ €€ÓàFjÛ,š1TTTŠMÕœ{÷¹sçzxx4r{lÜžñÑ£GãÆf ®®®ªªzíÚµºª²²²€€$ù\«5ÊFùîÝ»°°0WWWq5Ëf³=Ú¿ÿœ{÷.X°@\ÍÊ©©©©©©ŠŠŠŠŠŠÚ?ÿüSRR¢)2zÜBCCCÖç!NÅÅŵgxxxøùùnÙ² Þ1¢©©óÇÌ?ü{ÑOoi)Ž////_ŸøøøxzzÖLïÞœKKK !ŸŸŸÁÁÁ¹¹¹:thÜùñ2eJii©€w^²1cƹ¹¹$ÂÛœ{wpppvvv@@V@@@llìßÿ]SS#bEeffîß¿?((HCCÃÓÓ3##ÃßßÿÏ?ÿDÀµa³Ù,x÷î].]æÏÿêÕ«F6øñãÇ+W>zôhÚŽiíÚµGÍî4\AAÁèÑ£={(ÞÆUTTŒiÓ&E·}©¹ví÷u~~ŸÖÈ#9"âá;wîprroTÏ=ôNŽYYYµ}áëëË»ŽŽ4OOOúª{·$ @AAÁÁÁ!77W233}||œœœçÎËûïoWWWzl>33ÓËËKYYÃáÌ5K. ÉRPPØŒyó%K"""vþ¢šš8|øp + + +õÿõõë×ÿÂ]áMGGgÎ9b$ŲeËTUUé;á¡¡¡œ{÷¶±±±¶¶æZ/_ŸÜŒy355õÎ;III555[·^µjÕ/¿ü"éà&$ +TZZ:~üøŽŽŽÀÀÀåËK¢--3gÎ0`É%ÚÚÚŸŸŸèE>ÅÇÇÇÇÇ˪÷=zDFFÎ1£¶ÀÒÒ200pâÄŒwlï³X¬ÚíÖ[llìŽiÓ¢££éÝåtttN>=xðàšš(n5îÜ}ssóØØXF4¯^œZ¹r¥D»xýúµDÛÆÓÕÕ]ºtéÏ?ÿüðáÃÔÔÔû÷ïß¿ÿòåËåååuÈb±,,,èlKKË:Æ€`îܹAAAþùçæÍéò¶mÛvîÜÆhhhš©©òf2 ÜŠ,,,ÜÝÝyŽ7H¢ªªjòäÉW®\quu +\GúúúgÏ8p ¿¿¿ŠŠŠäú]»v + + +ïQ¿ÿþ{eeå²eËê{ ©©©`attŽ×9sjÀïïï?cÆz +ÍÚ&ùøùù +ÅápÌÍÍ÷îÝKÙžq£[UUÐyeîîîóæÍû3 /_ŸÐø4;,ËÆÆÆÆÆL¬®®ÎÏÏçïoÓŠ +ïmMMÍŠ¶ Å<yòäÉ¿|ùBg2©©©©©©O>ýúõkmG©ªªêêê:;;Ó_Þœ{c«% (âp8Çwü¿öî>Š©ëø©€ (+*dò" +Ãù6q.:ttsf¡SA| Î7CÑ)**3,¯1Ù'žAæbbfè&.*àÛBAÄûûãüvÓõòbéíË÷ó¹{îsKçéœ='"B¥R +Ægwt3Š¢¢bÖ¬YQQQR©töìÙz8§P(Ö¯_ßßœ²³³;::°£A¯œöÚµk×t[Øúé·>>>UUUÜzÛYYYYYYz³N2å_~Ñ}(&&&&&nÓºÃN:õÆt{çÎ8/°?ýôSwÉÈÈ8sæLIII?ßi¡Žjr¹\.óÈI¥ÒÐÐÐÐÐP¶ aZÆ<~üX·quuµöT +~KNNÎÏÏ>}zii© §Ö2"88ž¬¬,,,lÁÕÕÕSŠL1ÃAÀzœùæýÝ%//2eÊ///Ó6¯õgz%€R©T*=z4ÛžtéÒÍ7ûøøðÅÂ,@ý£Õj¿ÿþû òòòQ«_fÌqâÄÎÎÎúúz³À$:;;>|È. D :µeaa!ßá\eeePP_ß?³§÷ffffFFÆ DgPôH$ª««;{ö¬«««=oÞ<µZmd>GËTZZêîî~üøqŸ°}Ã<{ö,77711ïX.**jà +ÿüóÏwß}7àYûd2ÙÑ£GMÍ@Ðoæ_zåWx9.XÝéíéOOÏòòrBHZZ»»;m$šÕêúvû ôÆ©©©ñõõH$ìäÆûL&»{÷nmmí#~þùç:5Ã0cÆùõ×_õÎýÚÓI íÛ·»ºº>Œ€€dëÖnnn2^*1ÃIY6B 888DDDìÙ³mdŠ»»»ššhíÚµ]»víØ±£œœÞÐopõIwHãýM¢ŒŒüÖ[ëÖóôôÌÏÏ ñ÷÷§?Þßßßßß_ï,ôÖÇ4€T*mnnÎÏÏËåMMMÅÅÅÉÉÉæ9)ÀF0óüùó~ø¹nÿþý£Frtt9s&]FW©TæääxxxÐééêÎÎÎìtp,ºL€X,fÓbãýMÂ××7;;ûòåËçϧ úÎ;wíÚE)(( -zg¡Ç` "(,,¬««+11nß¿ß<'eQPØvÙøFSVVFß_²dÉÅÏ;·{÷nBHpp°J¥jkk£ÅÞ8tHVË.iŒ¿IDEE544tvv^¿~œ»»âëë;yòäÒÒÒ7oÎ5{äßõ1©;u»Þ4îf8)ÀFÐY"##Ù b6nÜžhÑ"ÚÚZ¶@ 3gΊM!ÅÅÅ2œ^R©Ü»w¯\.g~6Þß$æÎ;oÞŒaÃmݺU©TÒÆÔÔÔÄÄÄžž8gAþ]Ôß ÍpRëôIww7œrjÏ4ÍöH$^^^à +3y< Ëà$ýiiiiiit.×»ú€.î2ÆûDddddd€^£»»û9s>øàú-÷du×Çìãì¶NÊ¢ èææfoooŸ£°J,X°`ßQ@TVVº»»óÿþúë/ŸCÿb±øøñãæYÕæ¡èÝ ïÝ»ÇwB"ðU«Vñ¥0çrÐ+Ë\Øz¡è]zz:ß!®ššš'ò +#ÍÂȬY³èä*`óPuèêêº~ý:ßQ;É]žp!$$d7¹æææ_~ï(l@ 0É=3 + + +_|ñE~~þÅŸ +ö÷»aQQœøPŠ +Éf466Ö××ó mºsçyt÷îÝÀÀ@óËJÅâÎÎÎk×®ñH_988D"Ÿ£edddffù }LBÒÓÓSSS»ººzêÌÇöÒ³©@ïçJ¿ÕmäþÔûþ:0Ê_ããEÜ/+W®ä;ûõøñ㊊& B!J<HLL»šÍxõÕWM8H$jkk3áGå;effþþûï#Gìû.HX6UpM0!))ï(úçéÓ§NNN|GÑ?F>;xúôéèèècÇÅÆÆxüÏ>ûlÀûØèè芊&ö¿ÞÕ«W?úè£úúúJ5aÂB@ ضmÛ={BáÞœ{.]Êm!šÕêøøø+W®x{{çææN>ÛvðàÁ>rëö+ûÿ`lÞépÏíÀÝHMMËåºÏ ÝV(eeezãÔ××O6ÍÑÑÑ××÷üùóÜ£³KJJrttÔª¶¶v FáOÙ¶mL&ËËËëé'È~{åÊ ¡PT[[k0<œ/]ºäãã#?ýôÓAza<zô²páŸïrøðaBÈÉ'#µzõjŸC0¥BȱcÇølYjj*!ÄÍÍmõspp=ztOgº}ûvBHuuµ]°jkk;pàý?xàÀFsàÀ ÚÕÞÞ^QQáîîn° aÉ'«Tª3gÎøùùlÅJ¥²œœœ×ØJJJ!Gé©7 1k±žÁüJ7wbzKŽØÚ!ý)¬óßd×]»víØ±ŸÙ}»»»Ö®]«7NLLÌ+Z[[÷íÛodØI&iµZÝØØØ¶¶6#!ßÕÕµ¥¥¥°°pà +œW\\ܲeË?~ŒlÙ2ão»²._Ÿ|ݺu<P(FúÃ`kiiÉÎÎþã?øÀž»»1ÂÍúùùùùøøðýõQ«Õqqqb±ÍÔjõ²eË$ œÀöLHHDáááìܺººØØXggçº0·E©TæääxxxlÙ²åç&!Æs-FçÍVÊ`~¥;éînpp6#âæ6ÈÕÆ`:thkk+Ýnmmuvvfz~ç[o£ššèõ×_wqqÙŒy3Ã0ûöí9rä!CÎÝöì8ºsÓGu;tww_ô³)ºB!}u;>!€»»[·Áîô «ÑhB¡Áðô"dw¡·sqžÐ_ý5!$++ï@LWLW 'ÙÙÙííí¢ÿÇÇM¯ è^`wáfìö€IT*nÆÂm¡êêêhÆeD¯WžIÁ\K^ðó«r'éå6ÉŠ®ŒñÆéééF£Ñ€§§Ï1âèèØÒÒÒëŸK,¹xñâ¹sçvïÞMIIIÉÉÉÑh4eeeÃèÌþ<þ6ÊåòÊÊJVKsV»ÈžqãJegg§`O«ñóò÷÷ÏËËkooÏÍÍ +è)<ÝǧÕjU*Ø`°:uý +ÐGJ¥rïÞœr¹h8''çСC...J¥277·_£Èd2@ ¶Ð9sælÚŽéç&!s!#æWz¹ËààlF€Ú&^Ë»uëÖÛo¿-D"QXXØ;wYœz5f1z>r¹|Û¶mÃlÙ²ÅÅÅÅÅÅ ÞWª7Î7BCCuCJ%É\\\èÛ3LoÒ_œz5((þæôw|©ÎuãÑ{añãÇ ÂÀÀÀ+W®OoX|À<yòdèСGGÇGñià + á +X£|À`®¥K/A2_q;÷héæ6ÉŠ +°p(zuüøqBD"!ðiTTTL:õôéÓ|`P5êµ3³©[¬Ý·ß~K¡w@Òm~éÒ¥¹sçòu,ÇÓ§O+** + ¿¿CCÃÙ³g;::Ø&+âÇ|òäIdddUUÕ~šÑhªªªø +l +KAïùyïœ÷د6sXa²²²áÃO62yòd BQ^^N×m0:7ÎàihhXºté LEž|ùrssó;ïŒÃ.?÷î»ïÞ¿ÿâÅ|`LFFFff&ßQ@? °º÷ÿP6sÐÝ»w«««û²X££GÊd2Ÿ£~@`N:õÒK/ ²-3gÎJ¥6°$pUUÕìÙ³Ï=Ëw 6BV899ùùù]žp"¶oßîêê:|øð[·º¹¹Éd²ÂÂBºKJJD"ñõõ©©aÇ¡KùzzzÓo׬YãääD©©©ñõõH$)))캿º;ö ·, +þýöÛojµ:<<ÜÙÙùÏ?ÿ,++klltrržyóæõë×ù,HLLÌ+Z[[÷íÛO¥Risss~~~ttŽ\.ojj*..NNNŠ5êÁIIIË/gÇaŠ»»»ššhíÚµŽeÒ€IZ²|ùòuëÖ=xð@¡Pô+±¥AÀ?zÏüùó !çÎ?~uu5Ûbw ÕÕÕÅÆÆ:;;GDDÜžq6&$$D¢°°°®®®ÄÄDº}ÿþ}úh\\X,W«ÕŽeÿþý£Frtt9sæíÛ·iã%K!jµÝEïèÏ?7ÁØÀÒ àßâÅu?°~ýz5kÖÅâ'rw>}ºÇœ{÷ž=}}}¹=uÿ|SZÛmüøñܹ=ßzë-nÏ«W¯zxx¬^œºO¬R©ÚÚÚaÿÓ9$žÛT^^V«U©TcÇ¥-)))999Ь¬aÚ(þرcDz»Ð¹\^YY©Õj>l$±¥ÁJÀüóòò:xð ÝJ¥ãÆcËå^^^Ü]€R)÷WÜ¿øWWWzC§q; ««+·§·§·§P(€====¥Ri¯1@_¯ZµjåÊ6}7âöíÛr¹\¡PÐ7.Z޲~ýzn¥RD[Ÿú꫚ššgÏ}òÉ'F"@l`~ü`Àlþþûo77· öqììì'OŸÿþûUøòË/?ÿüóêêjÝ@ð¢éâ'/^|äÈ?þØTQÁÀ-@vôwØvA`GPØvA`GPØvDÈwœ«ššhiiá; +þ]ºtïÀê¡+Ãw6XŽðððoŸùï(,K`` ß!CÍÛÛÛÛÛï(l>`GPØvA`GPØvA`GPØvòØÆÆÆÂÂBŸ£3©©©á;ø`n/_æ; +; ÌG";vï(ÓŠMã;ø¿ÿ¬îÊPIEND®B` \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/diagramme1.png ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/enviro.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/enviro.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/enviro.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/enviro.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,70 @@ +============================== +Environnement de développement +============================== + +Environnement d'exécution +========================= + +Bien entendu, il est indispensable d'installer l'application comme spécifié dans . + + +Maven +===== + +SimExplorer-IS utilise Maven2 comme outil de build. Ainsi, il est nécessaire d'installer Maven 2.0.8 sur le poste de développement. +Aucune configuration spéciale n'est à prévoir. + +Voir http://maven.apache.org/download.html + +Maven suffit pour compiler et packager l'application. + + +Eclipse +======= + +Le développement du projet a été en partie réalisée avec Eclipse 3.3. La version simple Java est suffisante pour ce projet. + +Tous les modules sont inclus dans un seul projet, chaque module ayant ses entrées dans le classpath. Ce fichier est présent dans Subversion, le fichier généré par le plugin +Maven n'étant pas compatible avec certains aspects des fonctionnalités Maven utilisées. + +Plugins +------- + +Les dépendances sont gérées avec le plugin Maven pour Eclipse. Il est nécessaire de l'installer via l'update site http://m2eclipse.codehaus.org/update-dev + +La gestion de version se fait avec le plugin Subclipse, installable via l'update site http://subclipse.tigris.org/update_1.2.x + +Enfin, le module web peut être lancé en mode debug depuis Eclipse grâce à Jetty Launcher (update site : http://run-jetty-run.googlecode.com/svn/trunk/updatesite). +Le "Webapp dir" étant simexplorer-is-web/src/main/webapp/META-INF quand on créé une configuration de debug. +Ce plugin permet d'éditer le site Tapestry en appliquant les modifications en temps réél (modification de classe, de page, de properties, ...). + +Débuggage +--------- + +Le module Swing avec le débugger natif d'Eclipse. +Le module Web est débuggé par le plugin RunJettyRun. + +Le module Service est débuggé via une connexion tcp sur le serveur JBoss. +Dans le module simexplorer-is-ear, on peut trouver trois scripts : + +- rundebug.sh : ce fichier est à copier dans le dossier de JBoss (/opt/java/jboss-4.2.2.GA/bin/) +- deploy.sh : exécute la commande Maven mvn -o clean package jboss:harddeploy. Il va ainsi construire l'EAR et le mettre dans le dossier deploy du serveur +- debug.sh : lance le script rundebug.sh, avec le serveur simexplorer. Ainsi, un port 8787 est ouvert, permettant à Eclipse de s'y connecter afin de permettre le débuggage. + + +Packaging +========= + +Liste des principales commandes Maven : + +- mvn clean : nettoye le dossier target +- mvn compile : génÚre et compile les classes +- mvn package : créé les archives des modules +- mvn install : installe les modules dans le dépÃŽt Maven local +- mvn deploy : déploie les modules dans le dépÃŽt Maven Libre-Entreprise + +Options générales : + +- -U : force la mise à jour de tous les artifacts +- -o : travail hors ligne, pour utiliser uniquement le dépÃŽt local + Property changes on: trunk/simexplorer-is/src/site/rst/devel/enviro.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/implementation.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/implementation.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/implementation.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/implementation.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,175 @@ +=============================== +SimExplorer SI - Implémentation +=============================== + +Découpage +========= + +Module entities +--------------- + +Ce premier module a pour objectifs : + #. les classes de données + #. les types de contenus attachés aux données + #. le parcours des données pour l'interface graphique + +Classes de données +__________________ + +Ce sont des classes sérializables. Elles représentent le modÚle de données fournies. +Le type "LoggableElement" se voit rattaché une association vers un "MetaData". Cette classe contient +toutes les propriétés nécessaires au fonctionnement de Simexplorer SI. + +Toutes les classes héritent de Entity, en étant soit un "Leaf" (feuille), soit un "Composite". +Une classe abstraite SimpleComposite implémentant List doit être utilisée pour créer des listes de données, +comme Codes, Libraries, etc. + +Pour l'affichage simple, la méthode toString() est utilisée. Pour l'affichage en grille, getRow permet +de spécifier les différentes propriétés affichées. + +Les données sont parcourues par un visiteur, héritant d'EntityVisitor. EntityVisitorTreeNode implémente +cette interface et est dérivée pour le module web et le module Swing. + +EntityTypeEnum recense les différents types d'éléments de l'application, afin de retrouver les libellés, etc. + +Types de contenus +_________________ + +Afin de traiter les contenus attachés aux données, ContentType permet de spécifier le type d'un contenu en +fournissant le MIME type et une méthode virtuelle de conversion d'un flux en texte, afin de l'afficher ou de +l'indexer pour la recherche. + +Module storage +-------------- + +Database +________ + +Cette interface spécifie comment les meta données doivent être gérées. +On y trouvera : + #. ouverture/fermeture/commit + #. insertion d'élément + #. Récupération d'un élément dans sa derniÚre version, ou dans une version spécifique + grâce à l'obtention de toutes ses versions + #. Recherche paginée d'élements (ie comptage et extraction d'un sous ensemble des résultats) : + - par propriétés + - par type + - par recherche dans le contenu + #. Suppression d'un élément + +Une implémentation est fournie, basée sur Lucene. + +Attachment +__________ + +On trouvera dans cette interface les méthodes nécessaires à la gestion du stockage des flux. +Ainsi, on peut stocker/retrouver/effacer un flux. +Un flux est l'association d'une meta donnée, d'un champ et d'un contenu (InputStream). + +Une implementation est fournie, basée sur le systÚme de fichiers. + +Engine +______ + +On trouvera dans ce dernier package l'association de "Database" et "Attachment". +On retrouvera grosso modo les méthodes disponibles dans "Database", agrémentées des flux de contenu, +en convertissant les contenus attaché aux meta données en données indexables par exemple. +StorageEngine propose aussi le stockage de flux temporaires, afin de dupliquer des InputStream. + +Module service +-------------- + +Ce module est constitué d'une interface du service et de ses implémentations. +On retrouvera dans cette interface tout ce qui est nécessaire au fonctionnement de : + #. l'application web, en accÚs EJB + #. le service de stockage local du client lourd, en instance locale + #. la connexion au serveur central, en accÚs EJB + +Module web +---------- + +L'accÚs au service EJB se fait via StorageServiceFactory. Si le proxy n'a pas été initialisé, +on recherche l'EJB via des propriétés JNDI propres à JBoss. +Un ContextListener ouvre le service lors du lancement du serveur, et le ferme à son arrêt. + +Un composant Layout permet de définir toutes les pages. Les autres pages utilisent alors +uniquement ce composant dans leur page, et mette leur contenu propre à l'intérieur. + +Authentification/Autorisations +============================== + +On souhaite pouvoir gérer des utilisateurs et des groupes ayant des droits sur les entités de l'application. + +L'authentification +------------------ + +Les utilisateurs et les groupes sont des données pouvant être stockées dans une base de données, +embarquée type H2 ou dédiée type PostGreSQL. +Afin de permettre le choix de la base et la simplification du développement de l'intégration et du +développement, le stockage sera géré par JPA. + +L'authentification en elle même peut se baser sur JAAS, afin de bénéficier de son expérience +de sécurisation. + +Deux possibilités s'offrent pour l'authentification : + - se baser entiÚrement la sécurité de JBoss (JBossSX) + Cette solution a l'avantage et l'inconvénient d'être trÚs intégré aux EJB, permettant + de retrouver le Principal de façon simple. De plus, si l'application web est lancée dans le même + JBoss, elle peut utiliser le même contexte de sécurité. + + - créer un EJB d'authentification et fournir un "token" à l'utilisateur + Cette solution implique des développement plus lourds lors des appels métiers, en demandant + à l'utilisateur du service de prouver qu'il est bien authentifié. Le systÚme utilisé serait celui + utilisé par les applications web pour authentifier l'utilisateur, avec un cookie contenant un identifiant + de session. Ce contexte de connexion est alors à passer à chaque appel de méthode. + +La deuxiÚme solution possÚde le net avantage de ne pas dépendre sur l'implémentation de sécurité de JBoss. + +Les autorisations +----------------- + +De la même façon que la base de données est gérée, une interface définie ce que doit implémenter le service +de gestion des autorisations : + + #. Ajout/création/suppression d'entités (uniquement son identifiant) + #. Ajout/création/suppression des permissions sur les entités + #. Vérification des permissions sur un élément par rapport à un utilisateur + #. Filtrage d'une liste de résultats + +Le principal problÚme réside dans la recherche par contenu. En effet, cette partie étant gérée par la base +de données, il est possible d'intéragir avec les résultats uniquement a posteriori. Ainsi, le comptage +du nombre de résultats auquel l'utilisateur a accÚs n'est pas possible. +Il est néanmoins possible d'afficher le nombre de résultats hors filtrage, puis d'appliquer les autorisations +à l'affichage de chaque ligne de résultat. L'utilisateur obtient alors tout de même le nombre d'éléments +auxquels il n'a pas accÚs. + +Utilisation service +=================== + +L'interface StorageService est la base commune à l'application web et au client lourd. + +Ce service est disponible sur le serveur afin d'afficher les données dans l'application web, et pour +synchroniser le client lourd avec les données locales. + +Une instance est aussi disponible par client lourd lancé, afin de gérer les données stockées localement. + +Afin d'accéder au service sur le serveur, le code suivant est nécessaire : + +:: + + StorageService storageService = null; + Properties properties = (Properties) System.getProperties().clone(); + properties.put("java.naming.provider.url", "jnp://localhost:1099"); + properties.put("java.naming.factory.initial", + "org.jnp.interfaces.NamingContextFactory"); + properties + .put("java.naming.factory.url.pkgs", "org.jnp.interfaces"); + + Context context = new InitialContext(properties); + storageService = (StorageService) context + .lookup("StorageService"); + +On trouve alors dans storageService un proxy attaquant le service EJB déployé dans JBoss. + +Les classes nécessaires à l'accÚs au serveur JBoss sont contenus dans jbossall-client (disponible sur le +dépÃŽt maven java.net). \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/implementation.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/index.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/index.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/index.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/index.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,146 @@ +============== +SimExplorer SI +============== + +.. contents:: + +Introduction +============ + +Ce document détaille la solution proposée en réponse à la demande d'un outil +d'exploration de simulation. + +Spécifications +============== + +Découpage +--------- + +Plusieurs parties ont été identifiées : + + - Une premiÚre partie s'exécute sur le serveur d'application et fournit les services + d'authentification et de gestion des données. + - Une seconde partie sert les pages web au navigateur l'utilisateur + - Une derniÚre partie s'exécute sur la machine de l'utilisateur, avec des données locales + et une communication avec le serveur. + +Serveur d'application +--------------------- + +Base de données +_______________ + +Une base de données de type PostGreSQL sert de référentiel pour les autorisations et les +données métier. + +Pour certains types de données (résultat de simulation par exemple), le flux pourra être +stocké sur le disque. + +Les objets persistants sont générés depuis le modÚle de conception. + +Authentification +________________ + +L'authentification inclut la gestion des utilisateurs et des groupes. Mais elle permet aussi +la gestion des droits sur les données. + +Ces informations sont stockées par des objets persistants générés. + +La logique associant les utilisateurs, les groupes et les données est implantée via un service. + +L'utilisation d'une brique d'authentification est possible, à partir du moment où elle est +capable de gérer des droits sur des entités. + +.. figure:: ../../../../xmi/images/entities.png + :alt: Diagramme de classe entités pour l'authentification + + Diagramme de classe entités pour l'authentification. + +.. figure:: ../../../../xmi/images/auth.png + :alt: Diagramme de classe services pour l'authentification + + Diagramme de classe services pour l'authentification. + +Stockage des données +____________________ + +Ce composant a la charge de gérer l'ensemble des informations relatives aux explorations. + +Celui-ci inclut une logique métier sur les versions et doit être en mesure de synchroniser +son statut avec celui du client lourd. + +Des services exposent la gestion des informations et des versions en tenant compte de l'identité +de l'utilisateur connecté. + +.. figure:: ../../../../xmi/images/data.png + :alt: Diagramme de classe entités pour le stockage + + Diagramme de classe entités pour le stockage. + +Application web +--------------- + +A partir des briques du serveur d'application, le serveur web permet à l'utilisateur connecté avec +un client léger (navigateur standard) de manipuler les données auxquelles il a accÚs. + +L'application réutilise la logique métier du serveur d'application. + +Client lourd +------------ + +Autonomie +_________ + +Le client lourd doit pouvoir être possible de l'embarquer dans l'application RCP SimExplorer. De plus, +il doit être utilisé de façon déconnecté du serveur d'application. + +Mode embarqué +_____________ + +SimExplorer SI doit être accessible depuis l'application existante. + +Le mode de communication avec cette application est à déterminer. + +Mode déconnecté +_______________ + +L'utilisateur peut uniquement interragir avec les données locales. + +Le fonctionnement est trÚs similaire à la partie données du serveur d'application, l'authentification en +moins. Ainsi, les données sont stockées dans une base locale, avec des fichiers externes pour les +informations trop volumineuses. + +Mode connecté +_____________ + +Dans ce mode l'utilisateur peut consulter/supprimer des données du serveur selon son authentification. + +Une synchronisation est possible, la logique étant executé cÃŽté serveur et le client est mis à jour en +fonction du traitement réalisé. + +Implantation +------------ + +La page `implantation`_ décrit les choix techniques retenues pour mettre en place la solution. + +Environnement +------------- + +La page `environnement`_ décrit l'environnement de développement du projet. + + + +Migration pour la release 1.0 +----------------------------- + +Début 2009, une migration a été effectuée pour être en adéquation avec les +process de développement en évolution de la société. Le document `migration`_ +résume les différentes opérations effectuées sur le projet. + +.. _implantation: implementation.html + +.. _environnement: enviro.html + +.. _migration: migration2009.html + + Property changes on: trunk/simexplorer-is/src/site/rst/devel/index.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/migration2009.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/migration2009.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/migration2009.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/migration2009.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,202 @@ +============== +SimExplorer SI +============== + +:Author: Tony Chemit <chemit at codelutin.com> + +:Date: 3 février 2009 + +.. contents:: + +Abstract +******** + +Ce document détaille la migration de l'application et la préparation de la version 1.0. + +passage en UTF-8 +---------------- + +Les fichiers suivants ont été modifiés et convertis en UTF-8 : + +:: + + simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/database/lucene/LuceneDatabase.java + simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/exceptions/SimExplorerException.java + simexplorer-is-storage/src/test/fr/cemagref/simexplorer/is/storage/VersionGenerator.java + simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java + simexplorer-is-web/src/main/webapp/WEB-INF/app_fr.properties + simexplorer-is-web/src/main/webapp/WEB-INF/app.properties + simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/data/RuntimeType.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoFirstPageAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowTabAbstractAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/DownloadAbstractAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/AdvancedSearchAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/DetailTabModel.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/ListTabModel.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SynchronizeTabModel.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DataEntityModel.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java + simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java + src/site/fr/rst/rules.rst + src/site/fr/rst/index.rst + src/site/fr/rst/todo.rst + src/site/fr/rst/devel/enviro.rst + src/site/fr/rst/devel/old/glassfish.txt + src/site/fr/rst/devel/old/maven.rst + src/site/fr/rst/devel/index.rst + src/site/fr/rst/devel/implementation.rst + src/site/fr/rst/install.rst + + +Utilisation layout maven 2 +-------------------------- + +Le layout (i.e l'organisation physique des répertoires) ne respectait pas les +conventions préconisées par Maven 2, car à l'heure où ce projet a été développé +nous n'avions pas encore de super-pom (lutinproject) qui respectait ces conventions. + +Aujourd'hui, c'est le cas et nous nous baserons le sur le super-pom + +*org.codelutin:lutinproject:3.3* + +Nous préconisons aussi l'utilisation de ces conventions car la plupart des plugins +maven (dont les notres) les respectent et cela facilite grandement l'écriture des +poms de se baser sur ces conventions. + +Pour plus de renseignement, voir la page `standard-directory-layout`_ + + + +Refactoring des poms +-------------------- + +Amélioration des poms du projet multi-modules se basant sur les préconisations +écrites par Sonatype : `sonatype-book`_ + +En effet, un certain nombre d'anti-pattern maven ont été introduits dans nos poms +(par exemple l'utilisation de la variable current.version qui nous rend dépendant +du super-pom du projet alors que cela ne doit pas être le cas). + +Harmonisation des poms +~~~~~~~~~~~~~~~~~~~~~~ + +Les poms ont étés harmonisés, à savoir avec l'ajout de section en commentaire +qui permettent de savoir plus facilement où l'on se trouve dans le pom. + +On s'est basé sur le document suivant qui décrit bien les différentes sections +d'un pom : `definition-poms`_ + +En gros, il ya quatre grandes sections : + +- *POM Relationships* : les relation du module (son parent, dépendences,...) +- *Project Information* : les informations propres au module +- *Build Settings* : le build du module +- *Build Environment* : l'environnement du build du module + +Utilisation du pluginManagement +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Dans le pom parent, les plugins étaient déclarés dans plugins, ce qui n'est pas +correct, car cette section est réservée à l'exécution de plugins et non pas à +leur configuration, il faut utiliser la section pluginManagement à cet effet. + +Refactoring des dépendances +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Les modules d'un projet multi-module ne doivent pas apparaître dans la section +dependenciesManagment, mais être référencés dans les autres modules comme ceci : + +:: + + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>simexplorer-is-storage</artifactId> + <version>${project.version}</version> + </dependency> + +On appelle de telles dépendances des *sibling dependencies*. + +Cela permettra de ne plus avoir à avoir comme dépendance dans d'autres projet +le super-pom car ça c'est pas du tout normal :) + +Utilisation de lutinproject 3.3 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ce nouveau super-pom est meilleur que les précédents :) il permet par exemple une +gestion des scm améliorée, et surtout ré-utilise le profil release-profile pour lancer +l'exécution de plugin normalement nécessaire pendant une phase de release +(javadoc, source, enforcer,...). + +Ce profil reste cependant déclancheable à tout moment via la variable +*performRelease*, ce qui peut-être interressant lorsque l'on déploye +par exemple une snapshot car il est toujours bon de deployer en même +temps au moins les sources (les IDE aiment bien ça!) + +Donc un simple *mvn deploy -DperformRelease* et le tour est joué. + +Ajout des fichiers *REAMDE.txt* et *changelog.txt* sur tous les mdoules. + + +Utilisation des nouveaux groupId de nos librairies et plugins +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Nous avons depuis peu changé le groupId de toutes nos libraires et plugins, +à savoir : + +- *org.codelutin* pour les librairies et plugin (non projet multi-modules) +- *org.codelutin.XXX* (pour les librairies multi-modules : Jaxx, Commandline, ToPIA). + +Passage sur des versions stables de nos librairies et plugins +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Certaines librairies et plugins actuellement utilisés sur le logiciel sont en +snapshot, i.e sont suceptibles d'évoluer et ne sont pas stables, on les +remplace par des versions releasées qui elles sont gages de stabilité et sont +plus facilement traçables (des tags svn sont posés pour chaque nouvelle release). + +Migration vers JAXX 1.0 +~~~~~~~~~~~~~~~~~~~~~~~ + +Un gros travail a été effectué sur la libraire `JAXX`_, désormais +l'exécution de l'application est bien détachée du code du compilateur JAXX, cela +a nécessité de repenser l'organisation des modules du projet JAXX et cela nécessite une migration. + +Suppression du module simexplorer-si-swing-generated +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Le plugin Jaxx et Commandline sont désormais capables de générer du code +uniquement lorsque cela est nécessaire, il n'est donc plus nécessaire de +conserver un module de génération et tout est généré dans le module swing. + +Exclure les dépendences transitives pour le client Swing +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Certaines librairies possÚdent des dépendences transitives non utilisées +par le client lourd, donc inutile de les embarquer dans les dépendances de +l'application, cela diminue le nombre de jar et allÚge le process de +build et aussi d'exécution (par exemple pour le chargement i18n). + +.. _standard-directory-layout: http://maven.apache.org/guides/introduction/introduction-to-the-standard-dir... +.. _sonatype-book: http://books.sonatype.com/maven-book/reference/public-book.html +.. _definition-poms: http://www.javaworld.com/javaworld/jw-05-2006/jw-0529-maven.html +.. _JAXX: http://buix.labs.libre-entreprise.org/jaxx + + + + Property changes on: trunk/simexplorer-is/src/site/rst/devel/migration2009.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/nok.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/nok.png) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/nok.png (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/nok.png 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,6 @@ +PNG + + +IHDRóÿasBIT|d pHYsEEËžºôtEXtSoftwarewww.inkscape.orgî<ÕIDAT8 _HSaßsvüÎqÃp7B +)Ž ããžé3VÌ.36Á+¢)è"(Á+QdžAa^ÈBi]íb|/2ófB :Øêl?ùuQRïå÷yxy¢((¥Wu]KÉÂcÌÀmA^1f«ÕêToooØápl*²1ÿ_ây~§¥¥ec|.°Ã,ŠiNNNJ]]]×yßÁ_9"²í±XLÚÞÞV5M{Á1ÍfË{{{ ááás<ÏgdYŸWœ^ï»ÝŸF%·ÛÍ$ÉŠi BÈ;R +c,ÂûññqÉétB±XD"¡ªªºÃá%I\.WÝØØø€ëºb1Reù$I¢ `Y€R©GGGtpp°ã8ØßßÅÅÅa/===Ï\.×ýX,&±,{⺮ÃììlYUÕ[ÍZ~b+ÉLn€R©JýÉ€jÆÌßð)¥T³,ëT v»ÝƲìÅúü@å1QB¡PSýb(²;ÎÏç{|ŠcìihhxDDã ZÂÚÚÇ¿W*°ÙlDDçboÔžZÍ¡W{{;hKKKåB¡°y||Œ zÅÖÖV888ùùùoax !J)(òcìëïïG BâñxY×õ×Lfú÷u×B+@@êîîævwwéêêêWÃ0.³ã$I@ òù<ÌÍÍ©ªªFk0!$mfg:þžŒŒ\ikkc:::BO¿ß¿Þ××w³T*i¹\N5M3HÙ:UïK8çgl6Û]ÇcÏf³EÆï÷¿Ž,kâŠi>'ÏëDîÆÆÆ)Èÿ5&BéXêYªIEND®B` \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/nok.png ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/ok.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/ok.png) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/ok.png (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/ok.png 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,5 @@ +PNG + + +IHDRóÿasBIT|d pHYsùù.( EtEXtSoftwarewww.inkscape.orgî<ðIDAT8AQÇ¿7cÉkt0æ:tõf<4vÔCP°&]7ÁöžÕ!:ì¡S CD];5§;°*ìayÑÁ4Êë0scæ9(¯KÉ®ë~ðþïû}ÿÿûç.Z[ã·¡¡pÑaMÓ%Ï¡ëóùümê0ƯE© ž®ûÞ²¬ÝÆž©ªêù|¶m²,«°QñÇt:œL&/Û¶m1Æ.µsù|þªª·3ÌÓ41ÆîSJOl¯lmmí)R+Ëñf³ù1vR:ý÷Mr!ts~D)ýŸr¹Ü,ËûJEÖu}ásJéÕ%h4ÚL¥R×<Ï;.?}ßßK$œ«Õjòx<æã|ív»/OsÍf;ãÖëõ«çåZÖÁd2V«UÇ¡ÝnO Ø=+&âC6œÅ>4 +Y$X, "nÆ¡iÛg~¿ÁS]×DQÎ9t:iOÖ}ôÉzœÞ×uC0x}Jé·Ÿï?0ãclýñºaàÿ׊œ(Ja¡Pè¬j§udÈÛcìѹÛà/¢ªx²IEND®B` \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/ok.png ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/architecture.abw (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/architecture.abw) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/architecture.abw (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/architecture.abw 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,420 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE abiword PUBLIC "-//ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/awml.dtd"> +<abiword template="false" version="2.4.6" xmlns:svg="http://www.w3.org/2000/svg" xid-max="480" xmlns:dc="http://purl.org/dc/elements/1.1/" fileformat="1.1" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:awml="http://www.abisource.com/awml.dtd" xmlns="http://www.abisource.com/awml.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" props="dom-dir:ltr; document-footnote-restart-section:0; document-endnote-type:numeric; document-endnote-place-enddoc:1; document-endnote-initial:1; lang:fr-FR; document-endnote-restart-section:0; document-footnote-restart-page:0; document-footnote-type:numeric; document-footnote-initial:1; document-endnote-place-endsection:0"> +<!-- ======================================================================== --> +<!-- This file is an AbiWord document. --> +<!-- AbiWord is a free, Open Source word processor. --> +<!-- More information about AbiWord is available at http://www.abisource.com/ --> +<!-- You should not edit this file by hand. --> +<!-- ======================================================================== --> + +<metadata> +<m key="dc.format">application/x-abiword</m> +<m key="abiword.generator">AbiWord</m> +</metadata> +<history version="60" edit-time="56556" last-saved="1196101722" uid="e5b61a06-9845-11dc-84e0-f93525e6000d"> +<version id="1" started="1195658750" uid="0abf655a-9846-11dc-84e0-f93525e6000d" auto="0" top-xid="328"/> +<version id="3" started="1195658775" uid="55ff20f0-984b-11dc-97cb-8f99009bf653" auto="0" top-xid="330"/> +<version id="11" started="1195723478" uid="2b673fac-990a-11dc-8d16-acd61ab3f596" auto="0" top-xid="332"/> +<version id="14" started="1195813646" uid="5d32eb8a-99af-11dc-8b35-982ad6d9719b" auto="0" top-xid="437"/> +<version id="60" started="1196067628" uid="6a36dbb6-9c4d-11dc-9e05-9e041a8dd754" auto="0" top-xid="468"/> +</history> +<styles> +<s type="P" name="Normal" followedby="Current Settings" props="font-family:Times New Roman; margin-top:0pt; text-align:left; font-variant:normal; margin-left:0pt; bgcolor:transparent; widows:2; font-style:normal; text-indent:0in; text-position:normal; font-weight:normal; margin-right:0pt; font-size:12pt; margin-bottom:0pt; text-decoration:none; line-height:1.0; color:000000; lang:fr-FR; font-stretch:normal"/> +<s type="C" name="Reference" props="font-size:10pt"/> +</styles> +<pagesize pagetype="Custom" orientation="portrait" width="17.715278" height="11.691667" units="in" page-scale="1.000000"/> +<section xid="1" props="page-margin-right:25.4mm; columns:1; page-margin-header:0.0mm; page-margin-left:25.4mm; page-margin-footer:0.0mm; page-margin-top:25.4mm; page-margin-bottom:25.4mm"> +<p style="Normal" xid="2"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">=======================================</c></p> +<p style="Normal" xid="3" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">SimExplorer SI - Dossier d'architecture</c></p> +<p style="Normal" xid="4"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">=======================================</c></p> +<p style="Normal" xid="5"></p> +<p style="Normal" xid="6" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. contents:: :depth: 3</c></p> +<p style="Normal" xid="7" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. sectnum::</c></p> +<p style="Normal" xid="8"></p> +<p style="Normal" xid="9" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Introduction</c></p> +<p style="Normal" xid="10"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">============</c></p> +<p style="Normal" xid="11"></p> +<p style="Normal" xid="12" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Ce document détaille la solution proposée en réponse à la demande d'un outil d'exploration de simulation.</c></p> +<p style="Normal" xid="13"></p> +<p style="Normal" xid="14" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Architecture conceptuelle</c></p> +<p style="Normal" xid="15"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">=========================</c></p> +<p style="Normal" xid="16"></p> +<p style="Normal" xid="17" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Rappel des fonctions de l'application</c></p> +<p style="Normal" xid="18"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">-------------------------------------</c></p> +<p style="Normal" xid="19"></p> +<p style="Normal" xid="20" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'application permet l'utilisation d'outils de simulation dans un environnement multi-utilisateurs. Un mode client léger met à disposition la gestion des utilisateurs et la consultation des paramÚtres des simulations. Ce mode est accessible avec un simple navigateur. Avec un logiciel fourni (nommé aussi client lourd), l'utilisateur peut de même gérer les utilisateurs, mais aussi les simulations afin de les lancer. Une fonction de synchronisation met à jour les données locales par rapport aux données centralisées.</c></p> +<p style="Normal" xid="21"></p> +<p style="Normal" xid="22" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Chaque fonction est limitée en fonction des droits de l'utilisateur connecté. Cet utilisateur, en fonction des groupes auxquels il appartient, obtient des droits sur les simulations et les utilisateurs (création, modification, suppression).</c></p> +<p style="Normal" xid="23"></p> +<p style="Normal" xid="24" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les modifications des paramÚtres des simulations sont sauvegardé afin de conserver un historique. Cet historique se synchronise avec les données centralisées et les données de l'utilisateur.</c></p> +<p style="Normal" xid="25"></p> +<p style="Normal" xid="26" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Décomposition de l'application en modules</c></p> +<p style="Normal" xid="27"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">-----------------------------------------</c></p> +<p style="Normal" xid="28"></p> +<p style="Normal" xid="29" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'authentification s'appuie sur un module unique. Celui ci permet d'authentifier les utilisateurs se connectant via le client léger ou le client lourd. Un premier niveau impératif nécessite l'appartenance de l'utilisateur à un groupe destiné à contenir les accrédités à utiliser l'application. Ce module fourni aussi les groupes d'appartenance d'un utilisateur, afin de déterminer ses droits. Enfin, ce module permet l'édition des utilisateurs et des groupes par les utilisateurs avec pouvoir.</c></p> +<p style="Normal" xid="30"></p> +<p style="Normal" xid="31" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les autorisations sont gérées conjointement avec l'authentification. Une simulation a des droits associés en fonction de son propriétaire et son groupe d'appartenance. Ses droits sont décorélés des données métier, seul un identifiant technique permet aux services d'interroger le module d'autorisation afin de valider l'accÚs à une simulation. Le niveau de granularité des droits est similaire à la gestion des modes sur les fichiers. Les droits sur les actions création/modification/exécution sont alloués en fonction de l'utilisateur/groupe/autre.</c></p> +<p style="Normal" xid="32"></p> +<p style="Normal" xid="33" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le stockage est un module dupliqué à la fois sur le serveur gérant les données centralisées et sur chaque client lourd. Celui-ci a la charge de conserver les données dans une base, et de stocker les données volumineuses dans le systÚme de fichier. Il est capable de persister les objets utilisés par l'application. Un mécanisme de synchronisation permet de mettre à jour les données locales et les données centralisées en fonction de rÚgles de gestion de versionnement.</c></p> +<p style="Normal" xid="34"></p> +<p style="Normal" xid="35" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">La logique métier de l'application est contenue dans des services. Ceux ci peuvent être exécutés localement, lors de l'exécution d'une simulation sur le client lourd par exemple. Certains services sont présents uniquement sur le serveur, parce qu'ils nécessitent les modules d'autorisation et les données centralisées. Le client lourd fait alors appel à ces services dans un mode appel distant.</c></p> +<p style="Normal" xid="36"></p> +<p style="Normal" xid="37" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le module d'interface est composé de deux parties. CÃŽté serveur, l'utilisateur accÚde avec un navigateur Internet standard à l'application. Les pages sont servies par un serveur web utilisant un contrÃŽleur. Celui ci interagit avec les services afin de présenter les données à l'utilisateur. CÃŽté client, l'interface graphique s'appuie aussi sur un contrÃŽleur utilisant les services.</c></p> +<p style="Normal" xid="38"></p> +<p style="Normal" xid="39"></p> +<p style="Normal" xid="40" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Exigences et contraintes</c></p> +<p style="Normal" xid="41"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">------------------------</c></p> +<p style="Normal" xid="42"></p> +<p style="Normal" xid="43" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Contraintes d'urbanisme</c></p> +<p style="Normal" xid="44"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_______________________</c></p> +<p style="Normal" xid="45"></p> +<p style="Normal" xid="46" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le client lourd doit s'intégrer dans SimExplorer RCP.</c></p> +<p style="Normal" xid="47"></p> +<p style="Normal" xid="48" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les services déployés sur le serveur et mis à disposition du client lourd doivent pouvoir être réutilisés par des applications tierces.</c></p> +<p style="Normal" xid="49"></p> +<p style="Normal" xid="50" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le serveur doit être en mesure de lancer des simulations et de récupérer les résultats.</c></p> +<p style="Normal" xid="51"></p> +<p style="Normal" xid="52" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Exigences et contraintes liées à des fonctionnalités particuliÚres</c></p> +<p style="Normal" xid="53"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________________________________________________________________</c></p> +<p style="Normal" xid="54"></p> +<p style="Normal" xid="55" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Un serveur d'authentification.existant pourra être réutilisé dans la mesure où il est accessible via des protocoles standards. Une note précisant le fonctionnement de ce serveur devra être fourni afin de rendre possible son utilisation. ex : LDAP</c></p> +<p style="Normal" xid="56"></p> +<p style="Normal" xid="57" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les appels de lancement des simulations devra être formalisés dans une note. Ceux ci pourront alors être intégrés dans les services.</c></p> +<p style="Normal" xid="58"></p> +<p style="Normal" xid="59" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'authentification implique l'établissement d'une connexion sécurisée entre le client et le serveur, afin de ne pas faire passer en clair les mots de passe sur le réseau. Le serveur disposera d'un certificat afin de crypter les flux.</c></p> +<p style="Normal" xid="60"></p> +<p style="Normal" xid="61" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Contraintes d'ergonomie</c></p> +<p style="Normal" xid="62"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_______________________</c></p> +<p style="Normal" xid="63"></p> +<p style="Normal" xid="64" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'application web se doit d'être compatible avec les navigateurs récents : Firefox2+ et IE6+.</c></p> +<p style="Normal" xid="331" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="332" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'application client lourd est un application standard type bureautique, et doit être compatible avec le maximum de plateformes. Le lancement de l'application doit se faire simplement par un raccourci.</c></p> +<p style="Normal" xid="65"></p> +<p style="Normal" xid="66" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Volumétrie</c></p> +<p style="Normal" xid="67"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________</c></p> +<p style="Normal" xid="68"></p> +<p style="Normal" xid="69" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les données associées aux simulations sont parfois trÚs volumineuses (>100Mo). Ces données doivent être stockées en local mais aussi sur le serveur, avec des transferts entre le client et le serveur.</c></p> +<p style="Normal" xid="70"></p> +<p style="Normal" xid="71" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Contraintes et exigences liées à l'exploitation</c></p> +<p style="Normal" xid="72"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_______________________________________________</c></p> +<p style="Normal" xid="73"></p> +<p style="Normal" xid="74" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Lors de la mise à jour de l'application, la base de données doit être synchrone avec l'applicatif. De même, le client lourd doit être à jour par rapport à la version déployée sur le serveur.</c></p> +<p style="Normal" xid="75"></p> +<p style="Normal" xid="76" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les données doivent pouvoir être simplement sauvegardées et restaurées.</c></p> +<p style="Normal" xid="77"></p> +<p style="Normal" xid="78" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Architecture logique</c></p> +<p style="Normal" xid="79"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">====================</c></p> +<p style="Normal" xid="80"></p> +<p style="Normal" xid="81" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Schéma d'architecture logique</c></p> +<p style="Normal" xid="82"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">-----------------------------</c></p> +<p style="Normal" xid="83"></p> +<p style="Normal" xid="84" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image::</c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> diagramme1.png</c></p> +<p style="Normal" xid="85" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="87" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Description des flux</c></p> +<p style="Normal" xid="88"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">--------------------</c></p> +<p style="Normal" xid="89"></p> +<p style="Normal" xid="90" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. Serveur web</c></p> +<p style="Normal" xid="91"></p> +<p style="Normal" xid="92" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> L'interface client léger passe par ce flux. L'authentification se fera en HTTPS, le reste de l'application pourra être au choix en HTTP ou en HTTPS. Le contenu sera constitué de pages XHTML compatibles avec les navigateurs récents.</c></p> +<p style="Normal" xid="93"></p> +<p style="Normal" xid="94" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. Interface client lourd</c></p> +<p style="Normal" xid="95"></p> +<p style="Normal" xid="96" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> C'est à travers ce canal que l'utilisateur interagit avec l'application.</c></p> +<p style="Normal" xid="97"></p> +<p style="Normal" xid="98" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. Serveur d'authentification</c></p> +<p style="Normal" xid="99"></p> +<p style="Normal" xid="100" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> Le framework d'authentification utilise un serveur externe afin d'authentifier les utilisateurs. Ce flux dépend du serveur.</c></p> +<p style="Normal" xid="101"></p> +<p style="Normal" xid="102" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. Autorisations</c></p> +<p style="Normal" xid="103"></p> +<p style="Normal" xid="104" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> Toutes les informations relatives à la protection des accÚs aux simulations sont retrouvées via ce lien vers une base de données.</c></p> +<p style="Normal" xid="105"></p> +<p style="Normal" xid="106" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. Persistance cÃŽté serveur</c></p> +<p style="Normal" xid="107"></p> +<p style="Normal" xid="108" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> Les objets sont stockés dans une base de donnée à travers ce flux.</c></p> +<p style="Normal" xid="109"></p> +<p style="Normal" xid="110" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. Persistance cÃŽté client</c></p> +<p style="Normal" xid="111"></p> +<p style="Normal" xid="112" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> De même, les objets sont stockés dans une base de données. Nous sommes ici en présence d'une base de données embarquée, afin de rendre le client lourd autonome.</c></p> +<p style="Normal" xid="113"></p> +<p style="Normal" xid="114" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. SystÚme de fichiers serveur</c></p> +<p style="Normal" xid="115"></p> +<p style="Normal" xid="116" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> Les données volumineuses sont stockées dans le systÚme de fichier plutÃŽt que dans la base.</c></p> +<p style="Normal" xid="117"></p> +<p style="Normal" xid="118" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. SystÚme de fichiers client</c></p> +<p style="Normal" xid="119"></p> +<p style="Normal" xid="120" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> De la même façon que sur le serveur, les données sont stockées sous forme de fichiers dans le systÚme de fichier de l'utilisateur.</c></p> +<p style="Normal" xid="121"></p> +<p style="Normal" xid="122" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> #. Services distants</c></p> +<p style="Normal" xid="123"></p> +<p style="Normal" xid="124" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> La communication entre le client lourd et le serveur passe par ce flux. Celui ci est crypté et intégré à haut niveau dans l'application. Les appels de service se font de façon transparente, de façon similaire à un appel local.</c></p> +<p style="Normal" xid="125"></p> +<p style="Normal" xid="126"></p> +<p style="Normal" xid="127" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Initialisation des entrepÃŽts de données</c></p> +<p style="Normal" xid="128"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">---------------------------------------</c></p> +<p style="Normal" xid="129"></p> +<p style="Normal" xid="130" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Pour l'authentification, un groupe d'utilisateur doit être créé afin d'accueillir les personnes accréditées. De plus, un groupe d'administrateur avec un utilisateur doit exister afin de permettre l'administration des utilisateurs. Ces deux groupes seront à spécifier lors de l'installation.</c></p> +<p style="Normal" xid="131"></p> +<p style="Normal" xid="132" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Si l'application doit utiliser un serveur d'authentification existant, le groupe des administrateurs doit avoir les droits de lister les utilisateurs amenés à être ajouté aux personnes accréditées.</c></p> +<p style="Normal" xid="133"></p> +<p style="Normal" xid="134" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les bases de données d'autorisation et de stockage peuvent être initialisés lors du lancement de l'application de façon automatique. Si les droits de création de table et de champs n'est pas autorisé pour l'application, un script doit être exécuté avant le déploiement d'une nouvelle version afin de mettre à jour la base et migrer les données.</c></p> +<p style="Normal" xid="135"></p> +<p style="Normal" xid="136" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">CÃŽté client, le problÚme ne se pose pas, la base de données est embarquée dans l'application.</c></p> +<p style="Normal" xid="137"></p> +<p style="Normal" xid="138" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les modules de l'application</c></p> +<p style="Normal" xid="139"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">----------------------------</c></p> +<p style="Normal" xid="140"></p> +<p style="Normal" xid="141" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le module authentification</c></p> +<p style="Normal" xid="142"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________________________</c></p> +<p style="Normal" xid="143"></p> +<p style="Normal" xid="144" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">La technologie JAAS (Java Authentication and Authorization Service) a été retenue. La partie autorisation est utilisée uniquement pour valider l'accÚs de l'utilisateur authentifié à l'application.</c></p> +<p style="Normal" xid="145"></p> +<p style="Normal" xid="146" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Plusieurs méthodes d'authentification sont déjà implantées (login/mot de passe/groupes dans une base de données avec JDBC, LDAP, ...).</c></p> +<p style="Normal" xid="147"></p> +<p style="Normal" xid="148" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les modules services</c></p> +<p style="Normal" xid="149"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">____________________</c></p> +<p style="Normal" xid="150"></p> +<p style="Normal" xid="151" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les services sont contenus dans des EJB (Entreprise Java Bean). Chaque service est un composant disposant d'outils facilitant la mise en oeuvre des transactions et la distribution.</c></p> +<p style="Normal" xid="152"></p> +<p style="Normal" xid="153" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Ces services sont destinés à contenir toute la logique métier.</c></p> +<p style="Normal" xid="154"></p> +<p style="Normal" xid="155" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Les services contiennent aussi le contexte d'authentification de l'appelant.</c></p> +<p style="Normal" xid="156"></p> +<p style="Normal" xid="157" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le module autorisation </c></p> +<p style="Normal" xid="158"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">______________________</c></p> +<p style="Normal" xid="159"></p> +<p style="Normal" xid="160" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Grâce au contexte d'authentification des EJB, les appels au module d'autorisation vont sécurisés les accÚs aux données.</c></p> +<p style="Normal" xid="161"></p> +<p style="Normal" xid="162" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le module stockage</c></p> +<p style="Normal" xid="163"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________________</c></p> +<p style="Normal" xid="164"></p> +<p style="Normal" xid="165" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Ce module repose en grande partie sur la technologie JPA (Java Persistence API). Elle permet un mapping entre les objets et la base de données de façon transparente et interropérable. Le choix de la base de données n'est alors plus vérouillé, de nombreux systÚmes étant compatibles. Afin de gérer les volumétries associées aux simulations, certaines propriétés seront stockées sur le disque dur.</c></p> +<p style="Normal" xid="166"></p> +<p style="Normal" xid="167" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Lors de l'accÚs à une donnée, le module gérant les autorisations est appelé afin de vérifier les droits. De même, lorsque l'utilisateur crée une nouvelle entité, les droits lui sont associés via ce service.</c></p> +<p style="Normal" xid="168"></p> +<p style="Normal" xid="169" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le module interface</c></p> +<p style="Normal" xid="170"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">___________________</c></p> +<p style="Normal" xid="171"></p> +<p style="Normal" xid="172" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">CÃŽté client léger, le site est réalisé avec Tapestry 5. Ce framework apporte le développement orienté objet au applications web. De nombreuses fonctionnalités sont incluses et facilitent le développement.</c></p> +<p style="Normal" xid="173"></p> +<p style="Normal" xid="174" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">CÃŽté client lourd, le framework JAXX est utilisé. Ce framework transforme des XML décrivant l'interface en classes Java.</c></p> +<p style="Normal" xid="175"></p> +<p style="Normal" xid="474"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Développement de l'application</c></p> +<p style="Normal" xid="177"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">------------------------------</c></p> +<p style="Normal" xid="178"></p> +<p style="Normal" xid="179" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Lors de la construction de Simexplorer SI, nous utilisons le framework ToPIA ainsi que différents outils développés par Code Lutin. Ceux ci sont tous sous licence LGPL.</c></p> +<p style="Normal" xid="180"></p> +<p style="Normal" xid="181" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">A partir du modÚle conceptuel, le process de développement génÚre une partie de l'application, entre autre sous la forme d'interfaces à implémenter. Nous obtenons alors :</c></p> +<p style="Normal" xid="182" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> - les entités persistées</c></p> +<p style="Normal" xid="183" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> - les interfaces des services</c></p> +<p style="Normal" xid="184" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt"> - les interfaces des composants des pages web</c></p> +<p style="Normal" xid="185"></p> +<p style="Normal" xid="186"></p> +<p style="Normal" xid="187" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Architecture physique</c></p> +<p style="Normal" xid="188"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">=====================</c></p> +<p style="Normal" xid="189"></p> +<p style="Normal" xid="190" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Architecture logicielle</c></p> +<p style="Normal" xid="191"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">-----------------------</c></p> +<p style="Normal" xid="192"></p> +<p style="Normal" xid="193" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'ensemble de l'application est développée avec le langage Java. La version de référence lors du développement de l'application est JRE 6 Update 3.</c></p> +<p style="Normal" xid="194"></p> +<p style="Normal" xid="195" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Serveur Web</c></p> +<p style="Normal" xid="196"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">___________</c></p> +<p style="Normal" xid="197"></p> +<p style="Normal" xid="198" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Le serveur web est constitué d'un Apache 2.2. Le module mod_proxy_ajp permet de ne pas lancer le serveur d'application en root et d'avoir accÚs au port HTTP et HTTPS.</c></p> +<p style="Normal" xid="200"></p> +<p style="Normal" xid="201" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Serveur Applicatif</c></p> +<p style="Normal" xid="202"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________________</c></p> +<p style="Normal" xid="203"></p> +<p style="Normal" xid="204"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="205" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">| |JBoss 4.2.2 GA |Geronimo JEE5 2.0.2 |JOnAS 5.0 M1 |GlassFish V2 |</c></p> +<p style="Normal" xid="206"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+========================+========================+========================+========================+========================+</c></p> +<p style="Normal" xid="207" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|EJB3 | |ok| [#jba]_ | |ok| [#grc]_ | |ok| [#joa]_ | |uok| |</c></p> +<p style="Normal" xid="208"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="209" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- RemoteBinding | |ok| [#jbb]_ | |ok| [#grd]_ | |uok| | |uok| |</c></p> +<p style="Normal" xid="210"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="211" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- SSL | |ok| [#jbc]_ | |ok| [#gra]_ | |uok| | |ok| [#gfd]_ |</c></p> +<p style="Normal" xid="212"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="213" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- SecurityDomain | |ok| [#jbd]_ | |uok| | |ok| [#joc]_ | |ok| [#gfe]_ |</c></p> +<p style="Normal" xid="214"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="215" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- WebService | |ok| [#jbe]_ | |ok| [#gre]_ | |ok| [#job]_ | |ok| [#gfa]_ |</c></p> +<p style="Normal" xid="216"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="217" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">| * Sécurisé | |ok| [#jbe]_ | |uok| [#gre]_ | |uok| | |ok| [#gff]_ |</c></p> +<p style="Normal" xid="218"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="219" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">| * WebServiceContext | |ok| [#jbe]_ | |ok| [#gre]_ | |ok| [#job]_ | |uok| |</c></p> +<p style="Normal" xid="220"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="221" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- SessionContext | |uok| | |uok| | |uok| | |uok| |</c></p> +<p style="Normal" xid="222"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="223" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|JPA | |ok| [#jbf]_ | |ok| [#grf]_ | |ok| [#jof]_ | |ok| [#gfb]_ |</c></p> +<p style="Normal" xid="224"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="225" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- XML datasource | |ok| [#jbg]_ | |ok| [#grj]_ | |ok| [#joe]_ | |uok| |</c></p> +<p style="Normal" xid="226"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="227" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- persistence.xml | |ok| [#jbh]_ | |ok| [#grg]_ | |ok| [#jog]_ | |uok| |</c></p> +<p style="Normal" xid="228"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="229" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- orm.xml | |uok| | |ok| [#grh]_ | |ok| [#joh]_ | |ok| [#gfc]_ |</c></p> +<p style="Normal" xid="230"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="231" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|Servlet | |ok| [#jbi]_ | |ok| [#gri]_ | |uok| | |uok| |</c></p> +<p style="Normal" xid="232"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="233" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|- JAAS | |ok| [#jbj]_ | |ok| [#grb]_ | |ok| [#jod]_ | |uok| |</c></p> +<p style="Normal" xid="234"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="235" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">|Corba | |uok| | |uok| | |uok| | |uok| |</c></p> +<p style="Normal" xid="236"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">+------------------------+------------------------+------------------------+------------------------+------------------------+</c></p> +<p style="Normal" xid="237"></p> +<p style="Normal" xid="238" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. |ok| image:: ok.png</c></p> +<p style="Normal" xid="239" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. |nok| image:: nok.png</c></p> +<p style="Normal" xid="240" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. |uok| image:: uok.png</c></p> +<p style="Normal" xid="241"></p> +<p style="Normal" xid="242" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jba] http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/index.html</c></p> +<p style="Normal" xid="243" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbb] http://docs.jboss.org/ejb3/app-server/tutorial/jndibinding/jndi.html</c></p> +<p style="Normal" xid="244" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbc] http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/transport.html</c></p> +<p style="Normal" xid="245" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbd] http://docs.jboss.org/ejb3/app-server/tutorial/security/security.html</c></p> +<p style="Normal" xid="246" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbe] http://labs.jboss.com/jbossws/docs/jaxws_userguide-2.0/index.html</c></p> +<p style="Normal" xid="247" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbf] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/EJB3_Services-Entity_Beans.html</c></p> +<p style="Normal" xid="248" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbg] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/Connectors_on_JBoss-Configuring_JDBC_DataSources.html</c></p> +<p style="Normal" xid="249" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbh] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/ch01s02s01.html</c></p> +<p style="Normal" xid="250" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbi] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Getting_Started_Guide/beta422/html/ch01s07.html</c></p> +<p style="Normal" xid="251" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jbj] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/Security_on_JBoss-J2EE_Declarative_Security_Overview.html</c></p> +<p style="Normal" xid="252"></p> +<p style="Normal" xid="253" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#grc] http://openejb.apache.org/</c></p> +<p style="Normal" xid="254" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#grd] http://openejb.apache.org/jndi-names.html</c></p> +<p style="Normal" xid="255" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gra] http://www.ibm.com/developerworks/opensource/library/os-ag-corba1/</c></p> +<p style="Normal" xid="256" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gre] http://cwiki.apache.org/GMOxPMGT/geronimo-20-web-services-support.html</c></p> +<p style="Normal" xid="257" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#grf] http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_intro.html</c></p> +<p style="Normal" xid="258" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#grj] http://cwiki.apache.org/GMOxDOC11/geronimo-connector-11xsd.html#geronimo-connector-1.1.xsd-definitioninstanceType</c></p> +<p style="Normal" xid="259" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#grg] http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_persistence.html</c></p> +<p style="Normal" xid="260" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#grh] http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_meta.html</c></p> +<p style="Normal" xid="261" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gri] http://cwiki.apache.org/GMOxKB/jetty-or-tomcat.html</c></p> +<p style="Normal" xid="262" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#grb] http://www.ibm.com/developerworks/opensource/library/os-ag-security/</c></p> +<p style="Normal" xid="263"></p> +<p style="Normal" xid="264" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#joa] http://www.easybeans.org/doc/userguide/en/chunk-integrated/ejb3_introduction.html</c></p> +<p style="Normal" xid="265" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#joc] http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#config.security</c></p> +<p style="Normal" xid="266" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#job] http://wiki.easybeans.org/xwiki/bin/view/Main/JAXWS</c></p> +<p style="Normal" xid="267"></p> +<p style="Normal" xid="268" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jof] http://www.jpox.org/docs/jpa/index.html</c></p> +<p style="Normal" xid="269" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#joe] http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#N11268</c></p> +<p style="Normal" xid="270" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jog] http://www.jpox.org/docs/jpa/persistence_xml.html</c></p> +<p style="Normal" xid="271" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#joh] http://www.jpox.org/docs/jpa/orm_xml.html</c></p> +<p style="Normal" xid="272"></p> +<p style="Normal" xid="273" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#jod] http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#N10F4F</c></p> +<p style="Normal" xid="274"></p> +<p style="Normal" xid="275" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gfd] http://blogs.sun.com/swchan/entry/enterprise_java_bean_over_ssl</c></p> +<p style="Normal" xid="276" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gfe] http://java.sun.com/developer/technicalArticles/J2EE/security_annotation/</c></p> +<p style="Normal" xid="277" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gfa] http://wiki.glassfish.java.net/Wiki.jsp?page=WebServicesTechnologies</c></p> +<p style="Normal" xid="278" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gff] https://glassfish.dev.java.net/javaee5/docs/AG/ablrk.html#ablry</c></p> +<p style="Normal" xid="279" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gfb] https://glassfish.dev.java.net/javaee5/persistence/</c></p> +<p style="Normal" xid="280" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. [#gfc] https://glassfish.dev.java.net/javaee5/persistence/persistence_faq.html#5</c></p> +<p style="Normal" xid="281"></p> +<p style="Normal" xid="282" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="285" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">SGBD</c></p> +<p style="Normal" xid="286"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">____</c></p> +<p style="Normal" xid="287"></p> +<p style="Normal" xid="288" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Pour la base sur le serveur, les performances et la stabilité de PostgreSQL ont été retenues. CÃŽté client lourd, la base de donnée embarquée H2 est utilisée. Un export XML sera réalisé pour l'interopérabilité.</c></p> +<p style="Normal" xid="289"></p> +<p style="Normal" xid="290"></p> +<p style="Normal" xid="291" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Choix technologiques transverses</c></p> +<p style="Normal" xid="292"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">________________________________</c></p> +<p style="Normal" xid="293"></p> +<p style="Normal" xid="294" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Dans la perspective de réutilisation, les services publiés utiliseront des protocoles standardisés et inter opérables, afin de ne pas limiter le choix du langage.</c></p> +<p style="Normal" xid="295"></p> +<p style="Normal" xid="296" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">La technologie ... a été choisie pour son support de la sécurité et son utilisation courante dans différents langages et sur différents systÚmes d'exploitation.</c></p> +<p style="Normal" xid="297"></p> +<p style="Normal" xid="298" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Solution aux contraintes d'ergonomie</c></p> +<p style="Normal" xid="299"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">____________________________________</c></p> +<p style="Normal" xid="300"></p> +<p style="Normal" xid="301" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'application web respectera les standards W3C XHTML.</c></p> +<p style="Normal" xid="302"></p> +<p style="Normal" xid="303" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">L'application client lourd utilise le framework Swing, disponible sur un grand nombre de plateformes. Sur celles où Java Web Start est disponible, l'application pourra être installée par un simple clic sur le site du client léger.</c></p> +<p style="Normal" xid="304"></p> +<p style="Normal" xid="305" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Dimensionnement</c></p> +<p style="Normal" xid="306"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_______________</c></p> +<p style="Normal" xid="307"></p> +<p style="Normal" xid="308" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Une attention particuliÚre devra être faite à la taille des partitions lors de l'intégration en fonction de la volumétrie cible. De même, cÃŽté client, l'utilisateur doit être informé de l'espace utilisé par l'application par rapport à son espace disponible. La synchronisation doit vérifier au préalable la suffisance d'espace.</c></p> +<p style="Normal" xid="309"></p> +<p style="Normal" xid="310" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">En supposant que chaque simulation prend environ 100ko de paramÚtres, que 10 utilisateurs utilisent l'application en créant 5 simulations par jour, on obtient environ 10Go de paramÚtres de simulation sur 10 ans.</c></p> +<p style="Normal" xid="311"></p> +<p style="Normal" xid="312" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Solution pour l'exploitation du systÚme</c></p> +<p style="Normal" xid="313"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_______________________________________</c></p> +<p style="Normal" xid="314"></p> +<p style="Normal" xid="315"></p> +<p style="Normal" xid="316" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Lors de la mise à jour de l'application, plusieurs aspects doivent être gérés. Tout d'abord la base de données doit être synchrone avec l'applicatif. Ceci devra se faire automatiquement avec une migration des données executée lors du déploiement d'une nouvelle version.</c></p> +<p style="Normal" xid="317"></p> +<p style="Normal" xid="318" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Dans un environnement client/serveur, il est nécessaire de garantir la compatibilité entre les deux applications. Ainsi, le serveur mettra à disposition dans la mesure du possible les services avec une compatibilité ascendante. Si la version du client est obsolÚte, l'utilisateur est notifié et il ne peut plus utiliser l'application en mode connecté.</c></p> +<p style="Normal" xid="319"></p> +<p style="Normal" xid="320"></p> +<p style="Normal" xid="321" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">ModÚle conceptuel</c></p> +<p style="Normal" xid="322"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">-----------------</c></p> +<p style="Normal" xid="329"></p> +<p style="Normal" xid="353" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Entités des données</c></p> +<p style="Normal" xid="410" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">___________________</c></p> +<p style="Normal" xid="411" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="412" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. </c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">image</c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">:: ../../../../xmi/images/data.png</c></p> +<p style="Normal" xid="413" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="414" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="415" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Entités des authorisations</c></p> +<p style="Normal" xid="416" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________________________</c></p> +<p style="Normal" xid="417" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="418" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. </c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">image</c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">:: ../../../../xmi/images/entities.png</c></p> +<p style="Normal" xid="419" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="420" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="421" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Services de stockage</c></p> +<p style="Normal" xid="422" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">____________________</c></p> +<p style="Normal" xid="423" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="424" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. </c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">image</c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">:: ../../../../xmi/images/storage.png</c></p> +<p style="Normal" xid="425" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="426" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="427" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Services d'authorisation</c></p> +<p style="Normal" xid="428" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">________________________</c></p> +<p style="Normal" xid="429" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="430" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. </c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">image</c><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">:: ../../../../xmi/images/authorization.png</c></p> +<p style="Normal" xid="431" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="432" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="433" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Application web</c></p> +<p style="Normal" xid="434" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_______________</c></p> +<p style="Normal" xid="435" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="436" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">.. image:: ../../../../xmi/images/applications.png</c></p> +<p style="Normal" xid="347" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"></p> +<p style="Normal" xid="323" props="font-family:Times New Roman; font-size:12pt; color:000000; lang:fr-FR; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></p> +<p style="Normal" xid="324" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Séquences d'utilisation</c></p> +<p style="Normal" xid="325"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">-----------------------</c></p> +<p style="Normal" xid="326"></p> +<p style="Normal" xid="469"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Gestion des authorisations</c></p> +<p style="Normal" xid="471"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________________________</c></p> +<p style="Normal" xid="472"></p> +<p style="Normal" xid="473" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image:: ./authorization.jpg</c></p> +<p style="Normal" xid="470"></p> +<p style="Normal" xid="327" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Ãcrans de l'application</c></p> +<p style="Normal" xid="328"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">-----------------------</c></p> +<p style="Normal" xid="438"></p> +<p style="Normal" xid="439"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Liste des éléments</c></p> +<p style="Normal" xid="440"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">__________________</c></p> +<p style="Normal" xid="456"></p> +<p style="Normal" xid="457"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image:: ./screenshots/Screenshot.png</c></p> +<p style="Normal" xid="441"></p> +<p style="Normal" xid="442"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Importer un élément</c></p> +<p style="Normal" xid="443"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">___________________</c></p> +<p style="Normal" xid="444"></p> +<p style="Normal" xid="458"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image:: ./screenshots/Screenshot-1.png</c></p> +<p style="Normal" xid="459" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"></p> +<p style="Normal" xid="445" props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; lang:fr-FR; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Liste des utilisateurs</c></p> +<p style="Normal" xid="446"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">______________________</c></p> +<p style="Normal" xid="447"></p> +<p style="Normal" xid="460"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image:: ./screenshots/Screenshot-2.png</c></p> +<p style="Normal" xid="461" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"></p> +<p style="Normal" xid="448" props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; lang:fr-FR; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Ajouter/éditer un utilisateur</c></p> +<p style="Normal" xid="449"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_____________________________</c></p> +<p style="Normal" xid="450"></p> +<p style="Normal" xid="462"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image:: ./screenshots/Screenshot-3.png</c></p> +<p style="Normal" xid="463" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"></p> +<p style="Normal" xid="451" props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; lang:fr-FR; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Liste des groupes</c></p> +<p style="Normal" xid="452"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">_________________</c></p> +<p style="Normal" xid="453"></p> +<p style="Normal" xid="464"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image:: ./screenshots/Screenshot-4.png</c></p> +<p style="Normal" xid="465" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"></p> +<p style="Normal" xid="454" props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; lang:fr-FR; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">Ajouter/éditer un groupe</c></p> +<p style="Normal" xid="455"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt">________________________</c></p> +<p style="Normal" xid="466"></p> +<p style="Normal" xid="467" props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal"><c props="font-family:Bitstream Vera Sans Mono; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:fr-FR">.. image:: ./screenshots/Screenshot-5.png</c></p> +<p style="Normal" xid="468" props="font-family:Bitstream Vera Sans Mono; dom-dir:ltr; font-style:normal; margin-left:0.0000in; lang:fr-FR; margin-bottom:0.0000in; text-indent:0.0000in; text-position:normal; margin-top:0.0000in; font-weight:normal; margin-right:0.0000in; text-decoration:none; text-align:left; line-height:1.000000; font-size:12pt"></p> +</section> +</abiword> Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/architecture.abw ___________________________________________________________________ Added: svn:executable + * Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/architecture.txt (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/architecture.txt) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/architecture.txt (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/architecture.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,390 @@ +======================================= +SimExplorer SI - Dossier d'architecture +======================================= + +.. contents:: :depth: 3 +.. sectnum:: + +Introduction +============ + +Ce document détaille la solution proposée en réponse à la demande d'un outil d'exploration de simulation. + +Architecture conceptuelle +========================= + +Rappel des fonctions de l'application +------------------------------------- + +L'application permet l'utilisation d'outils de simulation dans un environnement multi-utilisateurs. Un mode client léger met à disposition la gestion des utilisateurs et la consultation des paramÚtres des simulations. Ce mode est accessible avec un simple navigateur. Avec un logiciel fourni (nommé aussi client lourd), l'utilisateur peut de même gérer les utilisateurs, mais aussi les simulations afin de les lancer. Une fonction de synchronisation met à jour les données locales par rapport aux données centralisées. + +Chaque fonction est limitée en fonction des droits de l'utilisateur connecté. Cet utilisateur, en fonction des groupes auxquels il appartient, obtient des droits sur les simulations et les utilisateurs (création, modification, suppression). + +Les modifications des paramÚtres des simulations sont sauvegardé afin de conserver un historique. Cet historique se synchronise avec les données centralisées et les données de l'utilisateur. + +Décomposition de l'application en modules +----------------------------------------- + +L'authentification s'appuie sur un module unique. Celui ci permet d'authentifier les utilisateurs se connectant via le client léger ou le client lourd. Un premier niveau impératif nécessite l'appartenance de l'utilisateur à un groupe destiné à contenir les accrédités à utiliser l'application. Ce module fourni aussi les groupes d'appartenance d'un utilisateur, afin de déterminer ses droits. Enfin, ce module permet l'édition des utilisateurs et des groupes par les utilisateurs avec pouvoir. + +Les autorisations sont gérées conjointement avec l'authentification. Une simulation a des droits associés en fonction de son propriétaire et son groupe d'appartenance. Ses droits sont décorélés des données métier, seul un identifiant technique permet aux services d'interroger le module d'autorisation afin de valider l'accÚs à une simulation. Le niveau de granularité des droits est similaire à la gestion des modes sur les fichiers. Les droits sur les actions création/modification/exécution sont alloués en fonction de l'utilisateur/groupe/autre. + +Le stockage est un module dupliqué à la fois sur le serveur gérant les données centralisées et sur chaque client lourd. Celui-ci a la charge de conserver les données dans une base, et de stocker les données volumineuses dans le systÚme de fichier. Il est capable de persister les objets utilisés par l'application. Un mécanisme de synchronisation permet de mettre à jour les données locales et les données centralisées en fonction de rÚgles de gestion de versionnement. + +La logique métier de l'application est contenue dans des services. Ceux ci peuvent être exécutés localement, lors de l'exécution d'une simulation sur le client lourd par exemple. Certains services sont présents uniquement sur le serveur, parce qu'ils nécessitent les modules d'autorisation et les données centralisées. Le client lourd fait alors appel à ces services dans un mode appel distant. + +Le module d'interface est composé de deux parties. CÃŽté serveur, l'utilisateur accÚde avec un navigateur Internet standard à l'application. Les pages sont servies par un serveur web utilisant un contrÃŽleur. Celui ci interagit avec les services afin de présenter les données à l'utilisateur. CÃŽté client, l'interface graphique s'appuie aussi sur un contrÃŽleur utilisant les services. + + +Exigences et contraintes +------------------------ + +Contraintes d'urbanisme +_______________________ + +Le client lourd doit s'intégrer dans SimExplorer RCP. + +Les services déployés sur le serveur et mis à disposition du client lourd doivent pouvoir être réutilisés par des applications tierces. + +Le serveur doit être en mesure de lancer des simulations et de récupérer les résultats. + +Exigences et contraintes liées à des fonctionnalités particuliÚres +__________________________________________________________________ + +Un serveur d'authentification.existant pourra être réutilisé dans la mesure où il est accessible via des protocoles standards. Une note précisant le fonctionnement de ce serveur devra être fourni afin de rendre possible son utilisation. ex : LDAP + +Les appels de lancement des simulations devra être formalisés dans une note. Ceux ci pourront alors être intégrés dans les services. + +L'authentification implique l'établissement d'une connexion sécurisée entre le client et le serveur, afin de ne pas faire passer en clair les mots de passe sur le réseau. Le serveur disposera d'un certificat afin de crypter les flux. + +Contraintes d'ergonomie +_______________________ + +L'application web se doit d'être compatible avec les navigateurs récents : Firefox2+ et IE6+. + +L'application client lourd est un application standard type bureautique, et doit être compatible avec le maximum de plateformes. Le lancement de l'application doit se faire simplement par un raccourci. + +Volumétrie +__________ + +Les données associées aux simulations sont parfois trÚs volumineuses (>100Mo). Ces données doivent être stockées en local mais aussi sur le serveur, avec des transferts entre le client et le serveur. + +Contraintes et exigences liées à l'exploitation +_______________________________________________ + +Lors de la mise à jour de l'application, la base de données doit être synchrone avec l'applicatif. De même, le client lourd doit être à jour par rapport à la version déployée sur le serveur. + +Les données doivent pouvoir être simplement sauvegardées et restaurées. + +Architecture logique +==================== + +Schéma d'architecture logique +----------------------------- + +.. image:: diagramme1.png + +Description des flux +-------------------- + + #. Serveur web + + L'interface client léger passe par ce flux. L'authentification se fera en HTTPS, le reste de l'application pourra être au choix en HTTP ou en HTTPS. Le contenu sera constitué de pages XHTML compatibles avec les navigateurs récents. + + #. Interface client lourd + + C'est à travers ce canal que l'utilisateur interagit avec l'application. + + #. Serveur d'authentification + + Le framework d'authentification utilise un serveur externe afin d'authentifier les utilisateurs. Ce flux dépend du serveur. + + #. Autorisations + + Toutes les informations relatives à la protection des accÚs aux simulations sont retrouvées via ce lien vers une base de données. + + #. Persistance cÃŽté serveur + + Les objets sont stockés dans une base de donnée à travers ce flux. + + #. Persistance cÃŽté client + + De même, les objets sont stockés dans une base de données. Nous sommes ici en présence d'une base de données embarquée, afin de rendre le client lourd autonome. + + #. SystÚme de fichiers serveur + + Les données volumineuses sont stockées dans le systÚme de fichier plutÃŽt que dans la base. + + #. SystÚme de fichiers client + + De la même façon que sur le serveur, les données sont stockées sous forme de fichiers dans le systÚme de fichier de l'utilisateur. + + #. Services distants + + La communication entre le client lourd et le serveur passe par ce flux. Celui ci est crypté et intégré à haut niveau dans l'application. Les appels de service se font de façon transparente, de façon similaire à un appel local. + + +Initialisation des entrepÃŽts de données +--------------------------------------- + +Pour l'authentification, un groupe d'utilisateur doit être créé afin d'accueillir les personnes accréditées. De plus, un groupe d'administrateur avec un utilisateur doit exister afin de permettre l'administration des utilisateurs. Ces deux groupes seront à spécifier lors de l'installation. + +Si l'application doit utiliser un serveur d'authentification existant, le groupe des administrateurs doit avoir les droits de lister les utilisateurs amenés à être ajouté aux personnes accréditées. + +Les bases de données d'autorisation et de stockage peuvent être initialisés lors du lancement de l'application de façon automatique. Si les droits de création de table et de champs n'est pas autorisé pour l'application, un script doit être exécuté avant le déploiement d'une nouvelle version afin de mettre à jour la base et migrer les données. + +CÃŽté client, le problÚme ne se pose pas, la base de données est embarquée dans l'application. + +Les modules de l'application +---------------------------- + +Le module authentification +__________________________ + +La technologie JAAS (Java Authentication and Authorization Service) a été retenue. La partie autorisation est utilisée uniquement pour valider l'accÚs de l'utilisateur authentifié à l'application. + +Plusieurs méthodes d'authentification sont déjà implantées (login/mot de passe/groupes dans une base de données avec JDBC, LDAP, ...). + +Les modules services +____________________ + +Les services sont contenus dans des EJB (Entreprise Java Bean). Chaque service est un composant disposant d'outils facilitant la mise en oeuvre des transactions et la distribution. + +Ces services sont destinés à contenir toute la logique métier. + +Les services contiennent aussi le contexte d'authentification de l'appelant. + +Le module autorisation +______________________ + +Grâce au contexte d'authentification des EJB, les appels au module d'autorisation vont sécurisés les accÚs aux données. + +Le module stockage +__________________ + +Ce module repose en grande partie sur la technologie JPA (Java Persistence API). Elle permet un mapping entre les objets et la base de données de façon transparente et interropérable. Le choix de la base de données n'est alors plus vérouillé, de nombreux systÚmes étant compatibles. Afin de gérer les volumétries associées aux simulations, certaines propriétés seront stockées sur le disque dur. + +Lors de l'accÚs à une donnée, le module gérant les autorisations est appelé afin de vérifier les droits. De même, lorsque l'utilisateur crée une nouvelle entité, les droits lui sont associés via ce service. + +Le module interface +___________________ + +CÃŽté client léger, le site est réalisé avec Tapestry 5. Ce framework apporte le développement orienté objet au applications web. De nombreuses fonctionnalités sont incluses et facilitent le développement. + +CÃŽté client lourd, le framework JAXX est utilisé. Ce framework transforme des XML décrivant l'interface en classes Java. + +Développement de l'application +------------------------------ + +Lors de la construction de Simexplorer SI, nous utilisons le framework ToPIA ainsi que différents outils développés par Code Lutin. Ceux ci sont tous sous licence LGPL. + +A partir du modÚle conceptuel, le process de développement génÚre une partie de l'application, entre autre sous la forme d'interfaces à implémenter. Nous obtenons alors : + - les entités persistées + - les interfaces des services + - les interfaces des composants des pages web + + +Architecture physique +===================== + +Architecture logicielle +----------------------- + +L'ensemble de l'application est développée avec le langage Java. La version de référence lors du développement de l'application est JRE 6 Update 3. + +Serveur Web +___________ + +Le serveur web est constitué d'un Apache 2.2. Le module mod_proxy_ajp permet de ne pas lancer le serveur d'application en root et d'avoir accÚs au port HTTP et HTTPS. + +Serveur Applicatif +__________________ + ++------------------------+------------------------+------------------------+------------------------+------------------------+ +| |JBoss 4.2.2 GA |Geronimo JEE5 2.0.2 |JOnAS 5.0 M1 |GlassFish V2 | ++========================+========================+========================+========================+========================+ +|EJB3 | |ok| [#jba]_ | |ok| [#grc]_ | |ok| [#joa]_ | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- RemoteBinding | |ok| [#jbb]_ | |ok| [#grd]_ | |uok| | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- SSL | |ok| [#jbc]_ | |ok| [#gra]_ | |uok| | |ok| [#gfd]_ | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- SecurityDomain | |ok| [#jbd]_ | |uok| | |ok| [#joc]_ | |ok| [#gfe]_ | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- WebService | |ok| [#jbe]_ | |ok| [#gre]_ | |ok| [#job]_ | |ok| [#gfa]_ | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +| * Sécurisé | |ok| [#jbe]_ | |uok| [#gre]_ | |uok| | |ok| [#gff]_ | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +| * WebServiceContext | |ok| [#jbe]_ | |ok| [#gre]_ | |ok| [#job]_ | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- SessionContext | |uok| | |uok| | |uok| | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|JPA | |ok| [#jbf]_ | |ok| [#grf]_ | |ok| [#jof]_ | |ok| [#gfb]_ | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- XML datasource | |ok| [#jbg]_ | |ok| [#grj]_ | |ok| [#joe]_ | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- persistence.xml | |ok| [#jbh]_ | |ok| [#grg]_ | |ok| [#jog]_ | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- orm.xml | |uok| | |ok| [#grh]_ | |ok| [#joh]_ | |ok| [#gfc]_ | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|Servlet | |ok| [#jbi]_ | |ok| [#gri]_ | |uok| | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|- JAAS | |ok| [#jbj]_ | |ok| [#grb]_ | |ok| [#jod]_ | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ +|Corba | |uok| | |uok| | |uok| | |uok| | ++------------------------+------------------------+------------------------+------------------------+------------------------+ + +.. |ok| image:: ok.png +.. |nok| image:: nok.png +.. |uok| image:: uok.png + +.. [#jba] http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/inde... +.. [#jbb] http://docs.jboss.org/ejb3/app-server/tutorial/jndibinding/jndi.html +.. [#jbc] http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/tran... +.. [#jbd] http://docs.jboss.org/ejb3/app-server/tutorial/security/security.html +.. [#jbe] http://labs.jboss.com/jbossws/docs/jaxws_userguide-2.0/index.html +.. [#jbf] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Serv... +.. [#jbg] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Serv... +.. [#jbh] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Serv... +.. [#jbi] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Gett... +.. [#jbj] http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Serv... + +.. [#grc] http://openejb.apache.org/ +.. [#grd] http://openejb.apache.org/jndi-names.html +.. [#gra] http://www.ibm.com/developerworks/opensource/library/os-ag-corba1/ +.. [#gre] http://cwiki.apache.org/GMOxPMGT/geronimo-20-web-services-support.html +.. [#grf] http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_... +.. [#grj] http://cwiki.apache.org/GMOxDOC11/geronimo-connector-11xsd.html#geronimo-con... +.. [#grg] http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_... +.. [#grh] http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_... +.. [#gri] http://cwiki.apache.org/GMOxKB/jetty-or-tomcat.html +.. [#grb] http://www.ibm.com/developerworks/opensource/library/os-ag-security/ + +.. [#joa] http://www.easybeans.org/doc/userguide/en/chunk-integrated/ejb3_introduction... +.. [#joc] http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide... +.. [#job] http://wiki.easybeans.org/xwiki/bin/view/Main/JAXWS + +.. [#jof] http://www.jpox.org/docs/jpa/index.html +.. [#joe] http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide... +.. [#jog] http://www.jpox.org/docs/jpa/persistence_xml.html +.. [#joh] http://www.jpox.org/docs/jpa/orm_xml.html + +.. [#jod] http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide... + +.. [#gfd] http://blogs.sun.com/swchan/entry/enterprise_java_bean_over_ssl +.. [#gfe] http://java.sun.com/developer/technicalArticles/J2EE/security_annotation/ +.. [#gfa] http://wiki.glassfish.java.net/Wiki.jsp?page=WebServicesTechnologies +.. [#gff] https://glassfish.dev.java.net/javaee5/docs/AG/ablrk.html#ablry +.. [#gfb] https://glassfish.dev.java.net/javaee5/persistence/ +.. [#gfc] https://glassfish.dev.java.net/javaee5/persistence/persistence_faq.html#5 + + +SGBD +____ + +Pour la base sur le serveur, les performances et la stabilité de PostgreSQL ont été retenues. CÃŽté client lourd, la base de donnée embarquée H2 est utilisée. Un export XML sera réalisé pour l'interopérabilité. + + +Choix technologiques transverses +________________________________ + +Dans la perspective de réutilisation, les services publiés utiliseront des protocoles standardisés et inter opérables, afin de ne pas limiter le choix du langage. + +La technologie ... a été choisie pour son support de la sécurité et son utilisation courante dans différents langages et sur différents systÚmes d'exploitation. + +Solution aux contraintes d'ergonomie +____________________________________ + +L'application web respectera les standards W3C XHTML. + +L'application client lourd utilise le framework Swing, disponible sur un grand nombre de plateformes. Sur celles où Java Web Start est disponible, l'application pourra être installée par un simple clic sur le site du client léger. + +Dimensionnement +_______________ + +Une attention particuliÚre devra être faite à la taille des partitions lors de l'intégration en fonction de la volumétrie cible. De même, cÃŽté client, l'utilisateur doit être informé de l'espace utilisé par l'application par rapport à son espace disponible. La synchronisation doit vérifier au préalable la suffisance d'espace. + +En supposant que chaque simulation prend environ 100ko de paramÚtres, que 10 utilisateurs utilisent l'application en créant 5 simulations par jour, on obtient environ 10Go de paramÚtres de simulation sur 10 ans. + +Solution pour l'exploitation du systÚme +_______________________________________ + + +Lors de la mise à jour de l'application, plusieurs aspects doivent être gérés. Tout d'abord la base de données doit être synchrone avec l'applicatif. Ceci devra se faire automatiquement avec une migration des données executée lors du déploiement d'une nouvelle version. + +Dans un environnement client/serveur, il est nécessaire de garantir la compatibilité entre les deux applications. Ainsi, le serveur mettra à disposition dans la mesure du possible les services avec une compatibilité ascendante. Si la version du client est obsolÚte, l'utilisateur est notifié et il ne peut plus utiliser l'application en mode connecté. + + +ModÚle conceptuel +----------------- + +Entités des données +___________________ + +.. image:: ../../../../xmi/images/data.png + + +Entités des authorisations +__________________________ + +.. image:: ../../../../xmi/images/entities.png + + +Services de stockage +____________________ + +.. image:: ../../../../xmi/images/storage.png + + +Services d'authorisation +________________________ + +.. image:: ../../../../xmi/images/authorization.png + + +Application web +_______________ + +.. image:: ../../../../xmi/images/applications.png + + +Séquences d'utilisation +----------------------- + +Gestion des authorisations +__________________________ + +.. image:: ./authorization.jpg + +Ãcrans de l'application +----------------------- + +Liste des éléments +__________________ + +.. image:: ./screenshots/Screenshot.png + +Importer un élément +___________________ + +.. image:: ./screenshots/Screenshot-1.png + +Liste des utilisateurs +______________________ + +.. image:: ./screenshots/Screenshot-2.png + +Ajouter/éditer un utilisateur +_____________________________ + +.. image:: ./screenshots/Screenshot-3.png + +Liste des groupes +_________________ + +.. image:: ./screenshots/Screenshot-4.png + +Ajouter/éditer un groupe +________________________ + +.. image:: ./screenshots/Screenshot-5.png Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/architecture.txt ___________________________________________________________________ Added: svn:executable + * Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/architecture.xhtml (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/architecture.xhtml) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/architecture.xhtml (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/architecture.xhtml 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,940 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> +<title>SimExplorer SI - Dossier d'architecture</title> +<style type="text/css"> + +/* +:Author: David Goodger (goodger at python.org) +:Id: $Id: html4css1.css 5196 2007-06-03 20:25:28Z wiemann $ +:Copyright: This stylesheet has been placed in the public domain. + +Default cascading style sheet for the HTML output of Docutils. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. +*/ + +/* used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0 } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 ! important } + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 ! important } + +.last, .with-subtitle { + margin-bottom: 0 ! important } + +.hidden { + display: none } + +a.toc-backref { + text-decoration: none ; + color: black } + +blockquote.epigraph { + margin: 2em 5em ; } + +dl.docutils dd { + margin-bottom: 0.5em } + +/* Uncomment (and remove this text!) to get bold-faced definition list terms +dl.docutils dt { + font-weight: bold } +*/ + +div.abstract { + margin: 2em 5em } + +div.abstract p.topic-title { + font-weight: bold ; + text-align: center } + +div.admonition, div.attention, div.caution, div.danger, div.error, +div.hint, div.important, div.note, div.tip, div.warning { + margin: 2em ; + border: medium outset ; + padding: 1em } + +div.admonition p.admonition-title, div.hint p.admonition-title, +div.important p.admonition-title, div.note p.admonition-title, +div.tip p.admonition-title { + font-weight: bold ; + font-family: sans-serif } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title { + color: red ; + font-weight: bold ; + font-family: sans-serif } + +/* Uncomment (and remove this text!) to get reduced vertical space in + compound paragraphs. +div.compound .compound-first, div.compound .compound-middle { + margin-bottom: 0.5em } + +div.compound .compound-last, div.compound .compound-middle { + margin-top: 0.5em } +*/ + +div.dedication { + margin: 2em 5em ; + text-align: center ; + font-style: italic } + +div.dedication p.topic-title { + font-weight: bold ; + font-style: normal } + +div.figure { + margin-left: 2em ; + margin-right: 2em } + +div.footer, div.header { + clear: both; + font-size: smaller } + +div.line-block { + display: block ; + margin-top: 1em ; + margin-bottom: 1em } + +div.line-block div.line-block { + margin-top: 0 ; + margin-bottom: 0 ; + margin-left: 1.5em } + +div.sidebar { + margin: 0 0 0.5em 1em ; + border: medium outset ; + padding: 1em ; + background-color: #ffffee ; + width: 40% ; + float: right ; + clear: right } + +div.sidebar p.rubric { + font-family: sans-serif ; + font-size: medium } + +div.system-messages { + margin: 5em } + +div.system-messages h1 { + color: red } + +div.system-message { + border: medium outset ; + padding: 1em } + +div.system-message p.system-message-title { + color: red ; + font-weight: bold } + +div.topic { + margin: 2em } + +h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, +h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { + margin-top: 0.4em } + +h1.title { + text-align: center } + +h2.subtitle { + text-align: center } + +hr.docutils { + width: 75% } + +img.align-left { + clear: left } + +img.align-right { + clear: right } + +ol.simple, ul.simple { + margin-bottom: 1em } + +ol.arabic { + list-style: decimal } + +ol.loweralpha { + list-style: lower-alpha } + +ol.upperalpha { + list-style: upper-alpha } + +ol.lowerroman { + list-style: lower-roman } + +ol.upperroman { + list-style: upper-roman } + +p.attribution { + text-align: right ; + margin-left: 50% } + +p.caption { + font-style: italic } + +p.credits { + font-style: italic ; + font-size: smaller } + +p.label { + white-space: nowrap } + +p.rubric { + font-weight: bold ; + font-size: larger ; + color: maroon ; + text-align: center } + +p.sidebar-title { + font-family: sans-serif ; + font-weight: bold ; + font-size: larger } + +p.sidebar-subtitle { + font-family: sans-serif ; + font-weight: bold } + +p.topic-title { + font-weight: bold } + +pre.address { + margin-bottom: 0 ; + margin-top: 0 ; + font-family: serif ; + font-size: 100% } + +pre.literal-block, pre.doctest-block { + margin-left: 2em ; + margin-right: 2em } + +span.classifier { + font-family: sans-serif ; + font-style: oblique } + +span.classifier-delimiter { + font-family: sans-serif ; + font-weight: bold } + +span.interpreted { + font-family: sans-serif } + +span.option { + white-space: nowrap } + +span.pre { + white-space: pre } + +span.problematic { + color: red } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80% } + +table.citation { + border-left: solid 1px gray; + margin-left: 1px } + +table.docinfo { + margin: 2em 4em } + +table.docutils { + margin-top: 0.5em ; + margin-bottom: 0.5em } + +table.footnote { + border-left: solid 1px black; + margin-left: 1px } + +table.docutils td, table.docutils th, +table.docinfo td, table.docinfo th { + padding-left: 0.5em ; + padding-right: 0.5em ; + vertical-align: top } + +table.docutils th.field-name, table.docinfo th.docinfo-name { + font-weight: bold ; + text-align: left ; + white-space: nowrap ; + padding-left: 0 } + +h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, +h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { + font-size: 100% } + +ul.auto-toc { + list-style-type: none } + +</style> +</head> +<body> +<div class="document" id="simexplorer-si-dossier-d-architecture"> +<h1 class="title">SimExplorer SI - Dossier d'architecture</h1> + +<div class="contents topic" id="contents"> +<p class="topic-title first">Contents</p> +<ul class="auto-toc simple"> +<li><a class="reference internal" href="#introduction" id="id40">1 Introduction</a></li> +<li><a class="reference internal" href="#architecture-conceptuelle" id="id41">2 Architecture conceptuelle</a><ul class="auto-toc"> +<li><a class="reference internal" href="#rappel-des-fonctions-de-l-application" id="id42">2.1 Rappel des fonctions de l'application</a></li> +<li><a class="reference internal" href="#d-composition-de-l-application-en-modules" id="id43">2.2 Décomposition de l'application en modules</a></li> +<li><a class="reference internal" href="#exigences-et-contraintes" id="id44">2.3 Exigences et contraintes</a><ul class="auto-toc"> +<li><a class="reference internal" href="#contraintes-d-urbanisme" id="id45">2.3.1 Contraintes d'urbanisme</a></li> +<li><a class="reference internal" href="#exigences-et-contraintes-li-es-des-fonctionnalit-s-particuli-res" id="id46">2.3.2 Exigences et contraintes liées à des fonctionnalités particuliÚres</a></li> +<li><a class="reference internal" href="#contraintes-d-ergonomie" id="id47">2.3.3 Contraintes d'ergonomie</a></li> +<li><a class="reference internal" href="#volum-trie" id="id48">2.3.4 Volumétrie</a></li> +<li><a class="reference internal" href="#contraintes-et-exigences-li-es-l-exploitation" id="id49">2.3.5 Contraintes et exigences liées à l'exploitation</a></li> +</ul> +</li> +</ul> +</li> +<li><a class="reference internal" href="#architecture-logique" id="id50">3 Architecture logique</a><ul class="auto-toc"> +<li><a class="reference internal" href="#sch-ma-d-architecture-logique" id="id51">3.1 Schéma d'architecture logique</a></li> +<li><a class="reference internal" href="#description-des-flux" id="id52">3.2 Description des flux</a></li> +<li><a class="reference internal" href="#initialisation-des-entrep-ts-de-donn-es" id="id53">3.3 Initialisation des entrepÃŽts de données</a></li> +<li><a class="reference internal" href="#les-modules-de-l-application" id="id54">3.4 Les modules de l'application</a><ul class="auto-toc"> +<li><a class="reference internal" href="#le-module-authentification" id="id55">3.4.1 Le module authentification</a></li> +<li><a class="reference internal" href="#les-modules-services" id="id56">3.4.2 Les modules services</a></li> +<li><a class="reference internal" href="#le-module-autorisation" id="id57">3.4.3 Le module autorisation</a></li> +<li><a class="reference internal" href="#le-module-stockage" id="id58">3.4.4 Le module stockage</a></li> +<li><a class="reference internal" href="#le-module-interface" id="id59">3.4.5 Le module interface</a></li> +</ul> +</li> +<li><a class="reference internal" href="#d-veloppement-de-l-application" id="id60">3.5 Développement de l'application</a></li> +</ul> +</li> +<li><a class="reference internal" href="#architecture-physique" id="id61">4 Architecture physique</a><ul class="auto-toc"> +<li><a class="reference internal" href="#architecture-logicielle" id="id62">4.1 Architecture logicielle</a><ul class="auto-toc"> +<li><a class="reference internal" href="#serveur-web" id="id63">4.1.1 Serveur Web</a></li> +<li><a class="reference internal" href="#serveur-applicatif" id="id64">4.1.2 Serveur Applicatif</a></li> +<li><a class="reference internal" href="#sgbd" id="id65">4.1.3 SGBD</a></li> +<li><a class="reference internal" href="#choix-technologiques-transverses" id="id66">4.1.4 Choix technologiques transverses</a></li> +<li><a class="reference internal" href="#solution-aux-contraintes-d-ergonomie" id="id67">4.1.5 Solution aux contraintes d'ergonomie</a></li> +<li><a class="reference internal" href="#dimensionnement" id="id68">4.1.6 Dimensionnement</a></li> +<li><a class="reference internal" href="#solution-pour-l-exploitation-du-syst-me" id="id69">4.1.7 Solution pour l'exploitation du systÚme</a></li> +</ul> +</li> +<li><a class="reference internal" href="#mod-le-conceptuel" id="id70">4.2 ModÚle conceptuel</a><ul class="auto-toc"> +<li><a class="reference internal" href="#entit-s-des-donn-es" id="id71">4.2.1 Entités des données</a></li> +<li><a class="reference internal" href="#entit-s-des-authorisations" id="id72">4.2.2 Entités des authorisations</a></li> +<li><a class="reference internal" href="#services-de-stockage" id="id73">4.2.3 Services de stockage</a></li> +<li><a class="reference internal" href="#services-d-authorisation" id="id74">4.2.4 Services d'authorisation</a></li> +<li><a class="reference internal" href="#application-web" id="id75">4.2.5 Application web</a></li> +</ul> +</li> +<li><a class="reference internal" href="#s-quences-d-utilisation" id="id76">4.3 Séquences d'utilisation</a><ul class="auto-toc"> +<li><a class="reference internal" href="#gestion-des-authorisations" id="id77">4.3.1 Gestion des authorisations</a></li> +</ul> +</li> +<li><a class="reference internal" href="#crans-de-l-application" id="id78">4.4 Ãcrans de l'application</a><ul class="auto-toc"> +<li><a class="reference internal" href="#liste-des-l-ments" id="id79">4.4.1 Liste des éléments</a></li> +<li><a class="reference internal" href="#importer-un-l-ment" id="id80">4.4.2 Importer un élément</a></li> +<li><a class="reference internal" href="#liste-des-utilisateurs" id="id81">4.4.3 Liste des utilisateurs</a></li> +<li><a class="reference internal" href="#ajouter-diter-un-utilisateur" id="id82">4.4.4 Ajouter/éditer un utilisateur</a></li> +<li><a class="reference internal" href="#liste-des-groupes" id="id83">4.4.5 Liste des groupes</a></li> +<li><a class="reference internal" href="#ajouter-diter-un-groupe" id="id84">4.4.6 Ajouter/éditer un groupe</a></li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +<div class="section" id="introduction"> +<h1><a class="toc-backref" href="#id40">1 Introduction</a></h1> +<p>Ce document détaille la solution proposée en réponse à la demande d'un outil d'exploration de simulation.</p> +</div> +<div class="section" id="architecture-conceptuelle"> +<h1><a class="toc-backref" href="#id41">2 Architecture conceptuelle</a></h1> +<div class="section" id="rappel-des-fonctions-de-l-application"> +<h2><a class="toc-backref" href="#id42">2.1 Rappel des fonctions de l'application</a></h2> +<p>L'application permet l'utilisation d'outils de simulation dans un environnement multi-utilisateurs. Un mode client léger met à disposition la gestion des utilisateurs et la consultation des paramÚtres des simulations. Ce mode est accessible avec un simple navigateur. Avec un logiciel fourni (nommé aussi client lourd), l'utilisateur peut de même gérer les utilisateurs, mais aussi les simulations afin de les lancer. Une fonction de synchronisation met à jour les données locales par rapport aux données centralisées.</p> +<p>Chaque fonction est limitée en fonction des droits de l'utilisateur connecté. Cet utilisateur, en fonction des groupes auxquels il appartient, obtient des droits sur les simulations et les utilisateurs (création, modification, suppression).</p> +<p>Les modifications des paramÚtres des simulations sont sauvegardé afin de conserver un historique. Cet historique se synchronise avec les données centralisées et les données de l'utilisateur.</p> +</div> +<div class="section" id="d-composition-de-l-application-en-modules"> +<h2><a class="toc-backref" href="#id43">2.2 Décomposition de l'application en modules</a></h2> +<p>L'authentification s'appuie sur un module unique. Celui ci permet d'authentifier les utilisateurs se connectant via le client léger ou le client lourd. Un premier niveau impératif nécessite l'appartenance de l'utilisateur à un groupe destiné à contenir les accrédités à utiliser l'application. Ce module fourni aussi les groupes d'appartenance d'un utilisateur, afin de déterminer ses droits. Enfin, ce module permet l'édition des utilisateurs et des groupes par les utilisateurs avec pouvoir.</p> +<p>Les autorisations sont gérées conjointement avec l'authentification. Une simulation a des droits associés en fonction de son propriétaire et son groupe d'appartenance. Ses droits sont décorélés des données métier, seul un identifiant technique permet aux services d'interroger le module d'autorisation afin de valider l'accÚs à une simulation. Le niveau de granularité des droits est similaire à la gestion des modes sur les fichiers. Les droits sur les actions création/modification/exécution sont alloués en fonction de l'utilisateur/groupe/autre.</p> +<p>Le stockage est un module dupliqué à la fois sur le serveur gérant les données centralisées et sur chaque client lourd. Celui-ci a la charge de conserver les données dans une base, et de stocker les données volumineuses dans le systÚme de fichier. Il est capable de persister les objets utilisés par l'application. Un mécanisme de synchronisation permet de mettre à jour les données locales et les données centralisées en fonction de rÚgles de gestion de versionnement.</p> +<p>La logique métier de l'application est contenue dans des services. Ceux ci peuvent être exécutés localement, lors de l'exécution d'une simulation sur le client lourd par exemple. Certains services sont présents uniquement sur le serveur, parce qu'ils nécessitent les modules d'autorisation et les données centralisées. Le client lourd fait alors appel à ces services dans un mode appel distant.</p> +<p>Le module d'interface est composé de deux parties. CÃŽté serveur, l'utilisateur accÚde avec un navigateur Internet standard à l'application. Les pages sont servies par un serveur web utilisant un contrÃŽleur. Celui ci interagit avec les services afin de présenter les données à l'utilisateur. CÃŽté client, l'interface graphique s'appuie aussi sur un contrÃŽleur utilisant les services.</p> +</div> +<div class="section" id="exigences-et-contraintes"> +<h2><a class="toc-backref" href="#id44">2.3 Exigences et contraintes</a></h2> +<div class="section" id="contraintes-d-urbanisme"> +<h3><a class="toc-backref" href="#id45">2.3.1 Contraintes d'urbanisme</a></h3> +<p>Le client lourd doit s'intégrer dans SimExplorer RCP.</p> +<p>Les services déployés sur le serveur et mis à disposition du client lourd doivent pouvoir être réutilisés par des applications tierces.</p> +<p>Le serveur doit être en mesure de lancer des simulations et de récupérer les résultats.</p> +</div> +<div class="section" id="exigences-et-contraintes-li-es-des-fonctionnalit-s-particuli-res"> +<h3><a class="toc-backref" href="#id46">2.3.2 Exigences et contraintes liées à des fonctionnalités particuliÚres</a></h3> +<p>Un serveur d'authentification.existant pourra être réutilisé dans la mesure où il est accessible via des protocoles standards. Une note précisant le fonctionnement de ce serveur devra être fourni afin de rendre possible son utilisation. ex : LDAP</p> +<p>Les appels de lancement des simulations devra être formalisés dans une note. Ceux ci pourront alors être intégrés dans les services.</p> +<p>L'authentification implique l'établissement d'une connexion sécurisée entre le client et le serveur, afin de ne pas faire passer en clair les mots de passe sur le réseau. Le serveur disposera d'un certificat afin de crypter les flux.</p> +</div> +<div class="section" id="contraintes-d-ergonomie"> +<h3><a class="toc-backref" href="#id47">2.3.3 Contraintes d'ergonomie</a></h3> +<p>L'application web se doit d'être compatible avec les navigateurs récents : Firefox2+ et IE6+.</p> +<p>L'application client lourd est un application standard type bureautique, et doit être compatible avec le maximum de plateformes. Le lancement de l'application doit se faire simplement par un raccourci.</p> +</div> +<div class="section" id="volum-trie"> +<h3><a class="toc-backref" href="#id48">2.3.4 Volumétrie</a></h3> +<p>Les données associées aux simulations sont parfois trÚs volumineuses (>100Mo). Ces données doivent être stockées en local mais aussi sur le serveur, avec des transferts entre le client et le serveur.</p> +</div> +<div class="section" id="contraintes-et-exigences-li-es-l-exploitation"> +<h3><a class="toc-backref" href="#id49">2.3.5 Contraintes et exigences liées à l'exploitation</a></h3> +<p>Lors de la mise à jour de l'application, la base de données doit être synchrone avec l'applicatif. De même, le client lourd doit être à jour par rapport à la version déployée sur le serveur.</p> +<p>Les données doivent pouvoir être simplement sauvegardées et restaurées.</p> +</div> +</div> +</div> +<div class="section" id="architecture-logique"> +<h1><a class="toc-backref" href="#id50">3 Architecture logique</a></h1> +<div class="section" id="sch-ma-d-architecture-logique"> +<h2><a class="toc-backref" href="#id51">3.1 Schéma d'architecture logique</a></h2> +<img alt="diagramme1.png" src="diagramme1.png" /> +</div> +<div class="section" id="description-des-flux"> +<h2><a class="toc-backref" href="#id52">3.2 Description des flux</a></h2> +<blockquote> +<ol class="arabic"> +<li><p class="first">Serveur web</p> +<p>L'interface client léger passe par ce flux. L'authentification se fera en HTTPS, le reste de l'application pourra être au choix en HTTP ou en HTTPS. Le contenu sera constitué de pages XHTML compatibles avec les navigateurs récents.</p> +</li> +<li><p class="first">Interface client lourd</p> +<p>C'est à travers ce canal que l'utilisateur interagit avec l'application.</p> +</li> +<li><p class="first">Serveur d'authentification</p> +<p>Le framework d'authentification utilise un serveur externe afin d'authentifier les utilisateurs. Ce flux dépend du serveur.</p> +</li> +<li><p class="first">Autorisations</p> +<p>Toutes les informations relatives à la protection des accÚs aux simulations sont retrouvées via ce lien vers une base de données.</p> +</li> +<li><p class="first">Persistance cÃŽté serveur</p> +<p>Les objets sont stockés dans une base de donnée à travers ce flux.</p> +</li> +<li><p class="first">Persistance cÃŽté client</p> +<p>De même, les objets sont stockés dans une base de données. Nous sommes ici en présence d'une base de données embarquée, afin de rendre le client lourd autonome.</p> +</li> +<li><p class="first">SystÚme de fichiers serveur</p> +<p>Les données volumineuses sont stockées dans le systÚme de fichier plutÃŽt que dans la base.</p> +</li> +<li><p class="first">SystÚme de fichiers client</p> +<p>De la même façon que sur le serveur, les données sont stockées sous forme de fichiers dans le systÚme de fichier de l'utilisateur.</p> +</li> +<li><p class="first">Services distants</p> +<p>La communication entre le client lourd et le serveur passe par ce flux. Celui ci est crypté et intégré à haut niveau dans l'application. Les appels de service se font de façon transparente, de façon similaire à un appel local.</p> +</li> +</ol> +</blockquote> +</div> +<div class="section" id="initialisation-des-entrep-ts-de-donn-es"> +<h2><a class="toc-backref" href="#id53">3.3 Initialisation des entrepÃŽts de données</a></h2> +<p>Pour l'authentification, un groupe d'utilisateur doit être créé afin d'accueillir les personnes accréditées. De plus, un groupe d'administrateur avec un utilisateur doit exister afin de permettre l'administration des utilisateurs. Ces deux groupes seront à spécifier lors de l'installation.</p> +<p>Si l'application doit utiliser un serveur d'authentification existant, le groupe des administrateurs doit avoir les droits de lister les utilisateurs amenés à être ajouté aux personnes accréditées.</p> +<p>Les bases de données d'autorisation et de stockage peuvent être initialisés lors du lancement de l'application de façon automatique. Si les droits de création de table et de champs n'est pas autorisé pour l'application, un script doit être exécuté avant le déploiement d'une nouvelle version afin de mettre à jour la base et migrer les données.</p> +<p>CÃŽté client, le problÚme ne se pose pas, la base de données est embarquée dans l'application.</p> +</div> +<div class="section" id="les-modules-de-l-application"> +<h2><a class="toc-backref" href="#id54">3.4 Les modules de l'application</a></h2> +<div class="section" id="le-module-authentification"> +<h3><a class="toc-backref" href="#id55">3.4.1 Le module authentification</a></h3> +<p>La technologie JAAS (Java Authentication and Authorization Service) a été retenue. La partie autorisation est utilisée uniquement pour valider l'accÚs de l'utilisateur authentifié à l'application.</p> +<p>Plusieurs méthodes d'authentification sont déjà implantées (login/mot de passe/groupes dans une base de données avec JDBC, LDAP, ...).</p> +</div> +<div class="section" id="les-modules-services"> +<h3><a class="toc-backref" href="#id56">3.4.2 Les modules services</a></h3> +<p>Les services sont contenus dans des EJB (Entreprise Java Bean). Chaque service est un composant disposant d'outils facilitant la mise en oeuvre des transactions et la distribution.</p> +<p>Ces services sont destinés à contenir toute la logique métier.</p> +<p>Les services contiennent aussi le contexte d'authentification de l'appelant.</p> +</div> +<div class="section" id="le-module-autorisation"> +<h3><a class="toc-backref" href="#id57">3.4.3 Le module autorisation</a></h3> +<p>Grâce au contexte d'authentification des EJB, les appels au module d'autorisation vont sécurisés les accÚs aux données.</p> +</div> +<div class="section" id="le-module-stockage"> +<h3><a class="toc-backref" href="#id58">3.4.4 Le module stockage</a></h3> +<p>Ce module repose en grande partie sur la technologie JPA (Java Persistence API). Elle permet un mapping entre les objets et la base de données de façon transparente et interropérable. Le choix de la base de données n'est alors plus vérouillé, de nombreux systÚmes étant compatibles. Afin de gérer les volumétries associées aux simulations, certaines propriétés seront stockées sur le disque dur.</p> +<p>Lors de l'accÚs à une donnée, le module gérant les autorisations est appelé afin de vérifier les droits. De même, lorsque l'utilisateur crée une nouvelle entité, les droits lui sont associés via ce service.</p> +</div> +<div class="section" id="le-module-interface"> +<h3><a class="toc-backref" href="#id59">3.4.5 Le module interface</a></h3> +<p>CÃŽté client léger, le site est réalisé avec Tapestry 5. Ce framework apporte le développement orienté objet au applications web. De nombreuses fonctionnalités sont incluses et facilitent le développement.</p> +<p>CÃŽté client lourd, le framework JAXX est utilisé. Ce framework transforme des XML décrivant l'interface en classes Java.</p> +</div> +</div> +<div class="section" id="d-veloppement-de-l-application"> +<h2><a class="toc-backref" href="#id60">3.5 Développement de l'application</a></h2> +<p>Lors de la construction de Simexplorer SI, nous utilisons le framework ToPIA ainsi que différents outils développés par Code Lutin. Ceux ci sont tous sous licence LGPL.</p> +<dl class="docutils"> +<dt>A partir du modÚle conceptuel, le process de développement génÚre une partie de l'application, entre autre sous la forme d'interfaces à implémenter. Nous obtenons alors :</dt> +<dd><ul class="first last simple"> +<li>les entités persistées</li> +<li>les interfaces des services</li> +<li>les interfaces des composants des pages web</li> +</ul> +</dd> +</dl> +</div> +</div> +<div class="section" id="architecture-physique"> +<h1><a class="toc-backref" href="#id61">4 Architecture physique</a></h1> +<div class="section" id="architecture-logicielle"> +<h2><a class="toc-backref" href="#id62">4.1 Architecture logicielle</a></h2> +<p>L'ensemble de l'application est développée avec le langage Java. La version de référence lors du développement de l'application est JRE 6 Update 3.</p> +<div class="section" id="serveur-web"> +<h3><a class="toc-backref" href="#id63">4.1.1 Serveur Web</a></h3> +<p>Le serveur web est constitué d'un Apache 2.2. Le module mod_proxy_ajp permet de ne pas lancer le serveur d'application en root et d'avoir accÚs au port HTTP et HTTPS.</p> +</div> +<div class="section" id="serveur-applicatif"> +<h3><a class="toc-backref" href="#id64">4.1.2 Serveur Applicatif</a></h3> +<table border="1" class="docutils"> +<colgroup> +<col width="20%" /> +<col width="20%" /> +<col width="20%" /> +<col width="20%" /> +<col width="20%" /> +</colgroup> +<thead valign="bottom"> +<tr><th class="head"> </th> +<th class="head">JBoss 4.2.2 GA</th> +<th class="head">Geronimo JEE5 2.0.2</th> +<th class="head">JOnAS 5.0 M1</th> +<th class="head">GlassFish V2</th> +</tr> +</thead> +<tbody valign="top"> +<tr><td>EJB3</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jba" id="id1">[1]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#grc" id="id2">[11]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#joa" id="id3">[21]</a></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td><ul class="first last simple"> +<li>RemoteBinding</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbb" id="id4">[2]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#grd" id="id5">[12]</a></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td><ul class="first last simple"> +<li>SSL</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbc" id="id6">[3]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gra" id="id7">[13]</a></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gfd" id="id8">[29]</a></td> +</tr> +<tr><td><ul class="first last simple"> +<li>SecurityDomain</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbd" id="id9">[4]</a></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#joc" id="id10">[22]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gfe" id="id11">[30]</a></td> +</tr> +<tr><td><ul class="first last simple"> +<li>WebService</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbe" id="id12">[5]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gre" id="id13">[14]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#job" id="id14">[23]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gfa" id="id15">[31]</a></td> +</tr> +<tr><td><ul class="first last simple"> +<li>Sécurisé</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbe" id="id16">[5]</a></td> +<td><img alt="uok" src="uok.png" /> <a class="footnote-reference" href="#gre" id="id17">[14]</a></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gff" id="id18">[32]</a></td> +</tr> +<tr><td><ul class="first last simple"> +<li>WebServiceContext</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbe" id="id19">[5]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gre" id="id20">[14]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#job" id="id21">[23]</a></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td><ul class="first last simple"> +<li>SessionContext</li> +</ul> +</td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td>JPA</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbf" id="id22">[6]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#grf" id="id23">[15]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jof" id="id24">[24]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gfb" id="id25">[33]</a></td> +</tr> +<tr><td><ul class="first last simple"> +<li>XML datasource</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbg" id="id26">[7]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#grj" id="id27">[16]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#joe" id="id28">[25]</a></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td><ul class="first last simple"> +<li>persistence.xml</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbh" id="id29">[8]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#grg" id="id30">[17]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jog" id="id31">[26]</a></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td><ul class="first last simple"> +<li>orm.xml</li> +</ul> +</td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#grh" id="id32">[18]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#joh" id="id33">[27]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gfc" id="id34">[34]</a></td> +</tr> +<tr><td>Servlet</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbi" id="id35">[9]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#gri" id="id36">[19]</a></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td><ul class="first last simple"> +<li>JAAS</li> +</ul> +</td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jbj" id="id37">[10]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#grb" id="id38">[20]</a></td> +<td><img alt="ok" src="ok.png" /> <a class="footnote-reference" href="#jod" id="id39">[28]</a></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +<tr><td>Corba</td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +<td><img alt="uok" src="uok.png" /></td> +</tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jba" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td><a class="reference external" href="http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/index.html">http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/index.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbb" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id4">[2]</a></td><td><a class="reference external" href="http://docs.jboss.org/ejb3/app-server/tutorial/jndibinding/jndi.html">http://docs.jboss.org/ejb3/app-server/tutorial/jndibinding/jndi.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbc" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id6">[3]</a></td><td><a class="reference external" href="http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/transport.html">http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/transport.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbd" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id9">[4]</a></td><td><a class="reference external" href="http://docs.jboss.org/ejb3/app-server/tutorial/security/security.html">http://docs.jboss.org/ejb3/app-server/tutorial/security/security.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbe" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label">[5]</td><td><em>(<a class="fn-backref" href="#id12">1</a>, <a class="fn-backref" href="#id16">2</a>, <a class="fn-backref" href="#id19">3</a>)</em> <a class="reference external" href="http://labs.jboss.com/jbossws/docs/jaxws_userguide-2.0/index.html">http://labs.jboss.com/jbossws/docs/jaxws_userguide-2.0/index.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbf" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id22">[6]</a></td><td><a class="reference external" href="http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/EJB3_Services-Entity_Beans.html">http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/EJB3_Services-Entity_Beans.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbg" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id26">[7]</a></td><td><a class="reference external" href="http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/Connectors_on_JBoss-Configuring_JDBC_DataSources.html">http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/Connectors_on_JBoss-Configuring_JDBC_DataSources.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbh" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id29">[8]</a></td><td><a class="reference external" href="http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/ch01s02s01.html">http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/ch01s02s01.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbi" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id35">[9]</a></td><td><a class="reference external" href="http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Getting_Started_Guide/beta422/html/ch01s07.html">http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Getting_Started_Guide/beta422/html/ch01s07.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jbj" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id37">[10]</a></td><td><a class="reference external" href="http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/Security_on_JBoss-J2EE_Declarative_Security_Overview.html">http://labs.jboss.com/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta422/html/Security_on_JBoss-J2EE_Declarative_Security_Overview.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="grc" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id2">[11]</a></td><td><a class="reference external" href="http://openejb.apache.org/">http://openejb.apache.org/</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="grd" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id5">[12]</a></td><td><a class="reference external" href="http://openejb.apache.org/jndi-names.html">http://openejb.apache.org/jndi-names.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gra" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id7">[13]</a></td><td><a class="reference external" href="http://www.ibm.com/developerworks/opensource/library/os-ag-corba1/">http://www.ibm.com/developerworks/opensource/library/os-ag-corba1/</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gre" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label">[14]</td><td><em>(<a class="fn-backref" href="#id13">1</a>, <a class="fn-backref" href="#id17">2</a>, <a class="fn-backref" href="#id20">3</a>)</em> <a class="reference external" href="http://cwiki.apache.org/GMOxPMGT/geronimo-20-web-services-support.html">http://cwiki.apache.org/GMOxPMGT/geronimo-20-web-services-support.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="grf" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id23">[15]</a></td><td><a class="reference external" href="http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_intro.html">http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_intro.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="grj" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id27">[16]</a></td><td><a class="reference external" href="http://cwiki.apache.org/GMOxDOC11/geronimo-connector-11xsd.html#geronimo-connector-1.1.xsd-definitioninstanceType">http://cwiki.apache.org/GMOxDOC11/geronimo-connector-11xsd.html#geronimo-connector-1.1.xsd-definitioninstanceType</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="grg" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id30">[17]</a></td><td><a class="reference external" href="http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_persistence.html">http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_persistence.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="grh" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id32">[18]</a></td><td><a class="reference external" href="http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_meta.html">http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_meta.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gri" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id36">[19]</a></td><td><a class="reference external" href="http://cwiki.apache.org/GMOxKB/jetty-or-tomcat.html">http://cwiki.apache.org/GMOxKB/jetty-or-tomcat.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="grb" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id38">[20]</a></td><td><a class="reference external" href="http://www.ibm.com/developerworks/opensource/library/os-ag-security/">http://www.ibm.com/developerworks/opensource/library/os-ag-security/</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="joa" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id3">[21]</a></td><td><a class="reference external" href="http://www.easybeans.org/doc/userguide/en/chunk-integrated/ejb3_introduction.html">http://www.easybeans.org/doc/userguide/en/chunk-integrated/ejb3_introduction.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="joc" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id10">[22]</a></td><td><a class="reference external" href="http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#config.security">http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#config.security</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="job" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label">[23]</td><td><em>(<a class="fn-backref" href="#id14">1</a>, <a class="fn-backref" href="#id21">2</a>)</em> <a class="reference external" href="http://wiki.easybeans.org/xwiki/bin/view/Main/JAXWS">http://wiki.easybeans.org/xwiki/bin/view/Main/JAXWS</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jof" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id24">[24]</a></td><td><a class="reference external" href="http://www.jpox.org/docs/jpa/index.html">http://www.jpox.org/docs/jpa/index.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="joe" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id28">[25]</a></td><td><a class="reference external" href="http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#N11268">http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#N11268</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jog" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id31">[26]</a></td><td><a class="reference external" href="http://www.jpox.org/docs/jpa/persistence_xml.html">http://www.jpox.org/docs/jpa/persistence_xml.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="joh" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id33">[27]</a></td><td><a class="reference external" href="http://www.jpox.org/docs/jpa/orm_xml.html">http://www.jpox.org/docs/jpa/orm_xml.html</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="jod" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id39">[28]</a></td><td><a class="reference external" href="http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#N10F4F">http://jonas.objectweb.org/current/doc/doc-en/integrated/configuration_guide.html#N10F4F</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gfd" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id8">[29]</a></td><td><a class="reference external" href="http://blogs.sun.com/swchan/entry/enterprise_java_bean_over_ssl">http://blogs.sun.com/swchan/entry/enterprise_java_bean_over_ssl</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gfe" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id11">[30]</a></td><td><a class="reference external" href="http://java.sun.com/developer/technicalArticles/J2EE/security_annotation/">http://java.sun.com/developer/technicalArticles/J2EE/security_annotation/</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gfa" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id15">[31]</a></td><td><a class="reference external" href="http://wiki.glassfish.java.net/Wiki.jsp?page=WebServicesTechnologies">http://wiki.glassfish.java.net/Wiki.jsp?page=WebServicesTechnologies</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gff" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id18">[32]</a></td><td><a class="reference external" href="https://glassfish.dev.java.net/javaee5/docs/AG/ablrk.html#ablry">https://glassfish.dev.java.net/javaee5/docs/AG/ablrk.html#ablry</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gfb" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id25">[33]</a></td><td><a class="reference external" href="https://glassfish.dev.java.net/javaee5/persistence/">https://glassfish.dev.java.net/javaee5/persistence/</a></td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="gfc" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id34">[34]</a></td><td><a class="reference external" href="https://glassfish.dev.java.net/javaee5/persistence/persistence_faq.html#5">https://glassfish.dev.java.net/javaee5/persistence/persistence_faq.html#5</a></td></tr> +</tbody> +</table> +</div> +<div class="section" id="sgbd"> +<h3><a class="toc-backref" href="#id65">4.1.3 SGBD</a></h3> +<p>Pour la base sur le serveur, les performances et la stabilité de PostgreSQL ont été retenues. CÃŽté client lourd, la base de donnée embarquée H2 est utilisée. Un export XML sera réalisé pour l'interopérabilité.</p> +</div> +<div class="section" id="choix-technologiques-transverses"> +<h3><a class="toc-backref" href="#id66">4.1.4 Choix technologiques transverses</a></h3> +<p>Dans la perspective de réutilisation, les services publiés utiliseront des protocoles standardisés et inter opérables, afin de ne pas limiter le choix du langage.</p> +<p>La technologie ... a été choisie pour son support de la sécurité et son utilisation courante dans différents langages et sur différents systÚmes d'exploitation.</p> +</div> +<div class="section" id="solution-aux-contraintes-d-ergonomie"> +<h3><a class="toc-backref" href="#id67">4.1.5 Solution aux contraintes d'ergonomie</a></h3> +<p>L'application web respectera les standards W3C XHTML.</p> +<p>L'application client lourd utilise le framework Swing, disponible sur un grand nombre de plateformes. Sur celles où Java Web Start est disponible, l'application pourra être installée par un simple clic sur le site du client léger.</p> +</div> +<div class="section" id="dimensionnement"> +<h3><a class="toc-backref" href="#id68">4.1.6 Dimensionnement</a></h3> +<p>Une attention particuliÚre devra être faite à la taille des partitions lors de l'intégration en fonction de la volumétrie cible. De même, cÃŽté client, l'utilisateur doit être informé de l'espace utilisé par l'application par rapport à son espace disponible. La synchronisation doit vérifier au préalable la suffisance d'espace.</p> +<p>En supposant que chaque simulation prend environ 100ko de paramÚtres, que 10 utilisateurs utilisent l'application en créant 5 simulations par jour, on obtient environ 10Go de paramÚtres de simulation sur 10 ans.</p> +</div> +<div class="section" id="solution-pour-l-exploitation-du-syst-me"> +<h3><a class="toc-backref" href="#id69">4.1.7 Solution pour l'exploitation du systÚme</a></h3> +<p>Lors de la mise à jour de l'application, plusieurs aspects doivent être gérés. Tout d'abord la base de données doit être synchrone avec l'applicatif. Ceci devra se faire automatiquement avec une migration des données executée lors du déploiement d'une nouvelle version.</p> +<p>Dans un environnement client/serveur, il est nécessaire de garantir la compatibilité entre les deux applications. Ainsi, le serveur mettra à disposition dans la mesure du possible les services avec une compatibilité ascendante. Si la version du client est obsolÚte, l'utilisateur est notifié et il ne peut plus utiliser l'application en mode connecté.</p> +</div> +</div> +<div class="section" id="mod-le-conceptuel"> +<h2><a class="toc-backref" href="#id70">4.2 ModÚle conceptuel</a></h2> +<div class="section" id="entit-s-des-donn-es"> +<h3><a class="toc-backref" href="#id71">4.2.1 Entités des données</a></h3> +<img alt="../../../../xmi/images/data.png" src="../../../../xmi/images/data.png" /> +</div> +<div class="section" id="entit-s-des-authorisations"> +<h3><a class="toc-backref" href="#id72">4.2.2 Entités des authorisations</a></h3> +<img alt="../../../../xmi/images/entities.png" src="../../../../xmi/images/entities.png" /> +</div> +<div class="section" id="services-de-stockage"> +<h3><a class="toc-backref" href="#id73">4.2.3 Services de stockage</a></h3> +<img alt="../../../../xmi/images/storage.png" src="../../../../xmi/images/storage.png" /> +</div> +<div class="section" id="services-d-authorisation"> +<h3><a class="toc-backref" href="#id74">4.2.4 Services d'authorisation</a></h3> +<img alt="../../../../xmi/images/authorization.png" src="../../../../xmi/images/authorization.png" /> +</div> +<div class="section" id="application-web"> +<h3><a class="toc-backref" href="#id75">4.2.5 Application web</a></h3> +<img alt="../../../../xmi/images/applications.png" src="../../../../xmi/images/applications.png" /> +</div> +</div> +<div class="section" id="s-quences-d-utilisation"> +<h2><a class="toc-backref" href="#id76">4.3 Séquences d'utilisation</a></h2> +<div class="section" id="gestion-des-authorisations"> +<h3><a class="toc-backref" href="#id77">4.3.1 Gestion des authorisations</a></h3> +<img alt="./authorization.jpg" src="./authorization.jpg" /> +</div> +</div> +<div class="section" id="crans-de-l-application"> +<h2><a class="toc-backref" href="#id78">4.4 Ãcrans de l'application</a></h2> +<div class="section" id="liste-des-l-ments"> +<h3><a class="toc-backref" href="#id79">4.4.1 Liste des éléments</a></h3> +<img alt="./screenshots/Screenshot.png" src="./screenshots/Screenshot.png" /> +</div> +<div class="section" id="importer-un-l-ment"> +<h3><a class="toc-backref" href="#id80">4.4.2 Importer un élément</a></h3> +<img alt="./screenshots/Screenshot-1.png" src="./screenshots/Screenshot-1.png" /> +</div> +<div class="section" id="liste-des-utilisateurs"> +<h3><a class="toc-backref" href="#id81">4.4.3 Liste des utilisateurs</a></h3> +<img alt="./screenshots/Screenshot-2.png" src="./screenshots/Screenshot-2.png" /> +</div> +<div class="section" id="ajouter-diter-un-utilisateur"> +<h3><a class="toc-backref" href="#id82">4.4.4 Ajouter/éditer un utilisateur</a></h3> +<img alt="./screenshots/Screenshot-3.png" src="./screenshots/Screenshot-3.png" /> +</div> +<div class="section" id="liste-des-groupes"> +<h3><a class="toc-backref" href="#id83">4.4.5 Liste des groupes</a></h3> +<img alt="./screenshots/Screenshot-4.png" src="./screenshots/Screenshot-4.png" /> +</div> +<div class="section" id="ajouter-diter-un-groupe"> +<h3><a class="toc-backref" href="#id84">4.4.6 Ajouter/éditer un groupe</a></h3> +<img alt="./screenshots/Screenshot-5.png" src="./screenshots/Screenshot-5.png" /> +</div> +</div> +</div> +</div> +</body> +</html> Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/architecture.xhtml ___________________________________________________________________ Added: svn:executable + * Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/authorization.uxf (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/authorization.uxf) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/authorization.uxf (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/authorization.uxf 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.SequenceDiagram</type><coordinates><x>20</x><y>20</y><w>790</w><h>510</h></coordinates><panel_attributes>user|_storageManager_|_loggableManager_|_credentialManager_ +1->>2:1,2:getElement(12) +2->>4:1,2,4:getCurrentLoggedActor() +4->2:1,2,4:actor +2->>2:1,2:getElement(12) +2->>3:1,2,3:getCredentials(element) +3->2:1,2,3:itemCredential +2->1:1,2:element +1->1:1:Modify element +1->>2:1,2:saveElement(element) +2->>3:1,2,3:getCredentials(element.parent) +3->2:1,2,3:itemCredential +2->>2:1,2:saveElement(element) +2->>3:1,2:registerElement(element) +2->1:1,2:element +</panel_attributes><additional_attributes></additional_attributes></element></umlet_diagram> \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/authorization.uxf ___________________________________________________________________ Added: svn:executable + * Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/developpement.abw (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/developpement.abw) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/developpement.abw (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/developpement.abw 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE abiword PUBLIC "-//ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/awml.dtd"> +<abiword template="false" styles="unlocked" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:math="http://www.w3.org/1998/Math/MathML" xid-max="32" xmlns:dc="http://purl.org/dc/elements/1.1/" fileformat="1.1" xmlns:svg="http://www.w3.org/2000/svg" xmlns:awml="http://www.abisource.com/awml.dtd" xmlns="http://www.abisource.com/awml.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.9.1" xml:space="preserve" props="dom-dir:ltr; document-footnote-restart-section:0; document-endnote-type:numeric; document-endnote-place-enddoc:1; document-endnote-initial:1; lang:fr-FR; document-endnote-restart-section:0; document-footnote-restart-page:0; document-footnote-type:numeric; document-footnote-initial:1; document-endnote-place-endsection:0"> +<!-- ======================================================================== --> +<!-- This file is an AbiWord document. --> +<!-- AbiWord is a free, Open Source word processor. --> +<!-- More information about AbiWord is available at http://www.abisource.com/ --> +<!-- You should not edit this file by hand. --> +<!-- ======================================================================== --> + +<metadata> +<m key="dc.format">application/x-abiword</m> +<m key="abiword.generator">AbiWord</m> +</metadata> +<history version="10" edit-time="2201" last-saved="1197912765" uid="f4025158-acc0-11dc-9495-ead58c2affe3"> +<version id="10" started="1197910595" uid="13efae3e-acc6-11dc-9495-ead58c2affe3" auto="0" top-xid="2"/> +</history> +<styles> +<s type="P" name="Normal" followedby="Current Settings" props="font-family:Times New Roman; margin-top:0pt; color:000000; margin-left:0pt; text-position:normal; widows:2; font-style:normal; text-indent:0in; font-variant:normal; margin-right:0pt; lang:fr-FR; line-height:1.0; font-size:12pt; text-decoration:none; margin-bottom:0pt; font-weight:normal; bgcolor:transparent; text-align:left; font-stretch:normal"/> +</styles> +<pagesize pagetype="Custom" orientation="portrait" width="450.000000" height="297.000000" units="mm" page-scale="1.000000"/> +<section xid="1" props="page-margin-right:25.4mm; page-margin-footer:12.7mm; page-margin-header:12.7mm; page-margin-left:25.4mm; page-margin-top:25.4mm; page-margin-bottom:25.4mm"> +<p style="Normal" xid="2"><c props="font-family:Bitstream Vera Sans Mono">Documentation développement Simexplorer-SI</c></p> +<p style="Normal" xid="3"></p> +<p style="Normal" xid="4"><c props="font-family:Bitstream Vera Sans Mono">Stockage des données</c></p> +<p style="Normal" xid="5"></p> +<p style="Normal" xid="6"><c props="font-family:Bitstream Vera Sans Mono">Découpage</c></p> +<p style="Normal" xid="7"></p> +<p style="Normal" xid="8" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Les données ont été décomposées en trois groupes :</c></p> +<p style="Normal" xid="9" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono"> * les meta-données de chaque élément, permettant de l'identifier, de connaître son type, son parent en version, etc</c></p> +<p style="Normal" xid="10" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono"> * le contenu indexé, provenant d'une librairie, de résultat, etc. C'est sur ce contenu que la recherche full text sera faite</c></p> +<p style="Normal" xid="11" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono"> * les données à proprement parler, qui sont stockées sur le systÚme de fichier. On conserve dans ces fichiers les meta données, afin de permettre la reconstruction d'une base à partir d'un dossier.</c></p> +<p style="Normal" xid="12" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="13" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Stockage des meta données</c></p> +<p style="Normal" xid="14" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="15" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Une interface permet la gestion de meta-données : Database.</c></p> +<p style="Normal" xid="16" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Son implémentation est faite par LuceneDatabase.</c></p> +<p style="Normal" xid="17" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="18" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Stockage des données</c></p> +<p style="Normal" xid="19" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="20" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Une interface permet la gestion du stockage de données : AttachmentHandler.</c></p> +<p style="Normal" xid="21" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Son implémentation est faite par FileSystemAttachmentHandler.</c></p> +<p style="Normal" xid="22" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="23" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Stockage des données et des meta données</c></p> +<p style="Normal" xid="24" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="25" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Les deux interfaces sont utilisées dans StorageEngine. Cette classe permet en plus de stocker des données temporaires.</c></p> +<p style="Normal" xid="26" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="27" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Service de gestion des données</c></p> +<p style="Normal" xid="28" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="31" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="32" props="text-align:left; dom-dir:ltr"></p> +<p style="Normal" xid="29" props="text-align:left; dom-dir:ltr"><c props="font-family:Bitstream Vera Sans Mono">Service publié</c></p> +</section> +</abiword> Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/developpement.abw ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/diagramme1.dia (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/diagramme1.dia) =================================================================== (Binary files differ) Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/diagramme1.dia ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/glassfish.txt (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/glassfish.txt) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/glassfish.txt (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/glassfish.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,17 @@ +GlassFish +========= + +**GlassFish** est un serveur d'applications compatible J2EE ; la licence est CDDL et GPLv2. + +Fonctions +--------- + +Au niveau des standards, GlassFish est une implémentation complÚte de la norme Java EE 5 qui recouvre: + + * EJB 3 (approche POJO, configuration par exception, injection de dépendance). L'occasion de se refaire une idée sur les EJB. + * JPA (Java Persistence API): standard implémenté par TopLink (par défaut dans GlassFish), Hibernate ou OpenJPA + * JAX-WS 2.x: nouvelle pile pour les services web + * JAXB 2.0: mise en corresponsance (mapping) XML/Java utilisée par JAX-WS 2.0 + * JSF (Java Server Faces) - Framework MVC dont Apache MyFaces et JSF RI sont des implémentations libres + * StAX - parseur de streaming XML + * JSP 2.1 & Servlet 2.5: pour faire de l'injection de dépendance dans le conteneur web Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/glassfish.txt ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/maven.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/maven.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/maven.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/maven.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,21 @@ +Les dépÃŽts suivants doivent être disponibles dans le fichier ~/.m2/settings.xml : + +:: + <repository> + <id>codelutin-lib</id> + <url>http://lutinbuilder.labs.libre-entreprise.org/maven2</url> + </repository> + <repository> + <id>openhms</id> + <url>http://open.hmsonline.com/repo/maven2</url> + </repository> + <repository> + <id>repository.jboss.com</id> + <url>http://download.java.net/maven/2</url> + </repository> + <repository> + <id>t5components</id> + <name>T5Components Maven Repository</name> + <url>http://213.160.23.119:8080/t5components/maven-repository</url> + </repository> + \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/maven.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/migration.txt (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/migration.txt) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/migration.txt (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/migration.txt 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,190 @@ +ToPIA Migration Service +======================= + +ToPIA Migration Service est un module ToPIA chargᅵ d'effectuer la migration +d'une base de donnᅵes existante sans perte de donnᅵes. + +Configuration +------------- +Ce service doit disposer de quelques proprietᅵs de configuration pour effectuer +la migration d'une base de donnᅵes. + +Ces propriᅵtᅵs sont fournies au service via un TopiaContext et font donc partie +de la configuration de l'application. + + +Configuration de la base de donnᅵes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + hibernate.dialect=org.hibernate.dialect.H2Dialect + hibernate.connection.username=sa + hibernate.connection.password= + hibernate.connection.driver_class=org.h2.Driver + + topia.persistence.directories=directory1,directory2 + topia.persistence.classes=classImpl1,classImpl2 + topia.persistence.properties.file=??? + +Ces informations servent ᅵ crᅵer une configuration hibernate (qui contient les +informations de connexion et les mappings de l'application). + +Les lignes commencant par "hibernate" sont spᅵcifiques ᅵ hibernate et au type de +base de donnᅵes utilisᅵ. Les lignes suivantes sont spᅵcifiques ᅵ ToPIA mais +contiennent les mappings indispensable pour crᅵer le schᅵma de la base de +donnᅵes aprᅵs migration. + + +Configuration des mappings +~~~~~~~~~~~~~~~~~~~~~~~~~~ +La configuration doit contenir ces propriᅵtᅵs : + +:: + + topia.service.migration.mappingsdir=oldmappings + topia.service.migration.modelnames=model1,model2,model3 + +qui spᅵcifie le rᅵpertoire de recherche des anciens mappings pour les diffᅵrents +modᅵles. + +Ce dossier contient ensuite un sous-dossier par modᅵle comportant chacun un +sous-dossier par version par version (nommᅵ X, *X* ᅵtant la version), avec pour +chaque dossier, l'ensemble des mappings hibernate de cette version. + +Exemple : + +:: + + oldmappings/ + model1/ + 1/ + Class1.hbm.xml + Class2.hbm.xml + Class3.hbm.xml + 2/ + Class1.hbm.xml + Class2New.hbm.xml + Class3.hbm.xml + 2.2/ + Class2.hbm.xml + Class3.hbm.xml + Class4New.hbm.xml + + +Configuration de la version +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +La configuration doit contenir une propriᅵtᅵ : + +:: + + topia.service.migration.version=3.5.1 (exemple) + +Cette propriᅵtᅵs renseigne la version *courante* de l'application. + + +Configuration du callback +~~~~~~~~~~~~~~~~~~~~~~~~~ +Il est possible de dᅵfinir une classe de type MigrationCallbackHandler, pour +interagir, par exemple, avec l'utilisateur et lui demander s'il faut migrer la +base de donnᅵes. + +Ces //callback// doivent implᅵmenter MigrationCallbackHandler et se trouver dans +la configuration: + +:: + + topia.service.migration.callbackhandlers=org.codelutin.test.SwingCallbackHandler + + +Configuration du service +~~~~~~~~~~~~~~~~~~~~~~~~ +Enfin pour utiliser le service, il faut l'activer. La configuration doit +contenir la propriᅵtᅵs suivante : + +:: + + topia.service.migration=org.codelutin.topia.security.TopiaSecurityServiceImpl + + +Utilisation +----------- +Ce module ᅵtant un service ToPIA, il doit ᅵtre activᅵ pour pouvoir s'exᅵcuter. + +Il commence par se connecter au SGBD, vᅵrifie si les versions diffᅵrent, et +effectue la migration si besoin. + +Classes de migration +~~~~~~~~~~~~~~~~~~~~ +Pour savoir comment migrer les donnᅵes, le dᅵveloppeur utilisant le module de +migration doit produire des classes Java de migration (une par classe +nᅵcᅵssitant une modification et par version). + +Ces classes doivent : + +- hᅵriter de la classe ``AbstractMigration`` ou de l'interface ``Migration`` +- se trouver dans un sous package des classes d'implᅵmentation rᅵfᅵrencᅵes + par les mappings. Ce package doit se nommer VnVm oᅵ: + + - *n* est la version de dᅵpart de migration + - *m* la version d'arrivᅵe + +- respecter une convention de nommage de la forme + MigrationClass oᅵ: + + - *Class* est le nom de l'entitᅵ devant ᅵtre migrᅵe + + Exemple, pour migrer une Personne d'une version 2 ᅵ 2.1: + ``V2V2_1.MigratePersonne.java`` + + Note: les "." ᅵtant interdits dans le nom de fichier, ils sont remplacᅵs par + le caractᅵre "_". + +Ensuite, chaque classe doit : + +- implᅵmenter au moins la mᅵthode ``migrate(MapAdapter, MapHelper)`` + cette mᅵthode prend une MapAdapter en paramᅵtre, pour modifier un tuple et un + MapHelper pouvant servir ᅵ retrouver des informations sur le reste des tuples + de la base +- surcharger (si besoin) la mᅵthode ``public ProxyClass migrateFrom()`` dans le + cas oᅵ les tuples ᅵ modifier proviennent d'une classe diffᅵrente de la classe + courante. + +Exemple : + +Ici, la modification porte sur la transformation de l'attribut ``timestampNaissance`` +de la classe ``domaine.Personne`` en une nouvelle table ``domaine.Naissance``, effectᅵe +dans le changement de la version 1 ᅵ la version 2 : + +:: + + // migrateFrom() + public ProxyClass migrateFrom() { + return new SimpleProxyClass("domaine.Personne"); + } + + // migrate(MapAdapter, MapHelper) + public void migrate(MapAdapter map, MapHelper helper) { + + // map d'entree vide, conversion du timestamp + // en jour, mois, annee + try { + Long timestamp = (Long) map.getOldValue("timestampNaissance"); + Calendar c = Calendar.getInstance(); + c.setTimeInMillis(timestamp); + map.setValue("jour", c.get(Calendar.DAY_OF_MONTH)); + map.setValue("mois", c.get(Calendar.MONTH)); + map.setValue("annee", c.get(Calendar.YEAR)); + } catch (ExceptionAttributeUndefined e) { + e.printStackTrace(); + } + } + +Donc cette classe : + +- doit se nommer ``MigrateNaissance.java`` et se trouver dans le package + ``domaine.V1V2`` +- redᅵfinit la methode migrateFrom() pour indiquer que les donnees proviennent de + ``domaine.Personne`` +- implᅵmente ``migrate()`` pour produire des tuples de type ``domaine.Naissance`` + ᅵ partir de tuples ``domaine.Personne`` Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/migration.txt ___________________________________________________________________ Added: svn:executable + * Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/sequence1.uxf (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/sequence1.uxf) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/sequence1.uxf (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/sequence1.uxf 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.SequenceDiagram</type><coordinates><x>0</x><y>0</y><w>750</w><h>180</h></coordinates><panel_attributes>ui|_storageManager_|_versionManager_|_loggableManager_ +1->>2:1,2:saveElement(element, true) +2->>3:1,2,3:getVersions(element.id) +3.>2:1,2,3:[1.0, 1.1, 1.2, 2.0, 2.1]</panel_attributes><additional_attributes></additional_attributes></element></umlet_diagram> \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/sequence1.uxf ___________________________________________________________________ Added: svn:executable + * Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/template.uxf (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/template.uxf) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/template.uxf (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/template.uxf 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.SequenceDiagram</type><coordinates><x>20</x><y>20</y><w>390</w><h>330</h></coordinates><panel_attributes>_alpha:A_|_beta:B_|_gamma:G_ +1->>2:1,2 +2-/>1:async Msg. +3->>>1:1,3 +1.>3:1,3:async return Msg +1->1:1:self +iframe{:interaction frame +2->3:2,3:async Msg. +iframe}</panel_attributes><additional_attributes></additional_attributes></element></umlet_diagram> \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/template.uxf ___________________________________________________________________ Added: svn:executable + * Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/old/version.uxf (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/old/version.uxf) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/old/version.uxf (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/old/version.uxf 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.SequenceDiagram</type><coordinates><x>20</x><y>20</y><w>330</w><h>390</h></coordinates><panel_attributes>_server_|user1|_user2_ +2->>2:2:création/édition +2->>1:1,2:commit + +1->>2:1,2 +2-/>1:async Msg. +3->>>1:1,3 +1.>3:1,3:async return Msg +1->1:1:self +iframe{:interaction frame +2->3:2,3:async Msg. +iframe}</panel_attributes><additional_attributes></additional_attributes></element></umlet_diagram> \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/old/version.uxf ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-1.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/screenshots/Screenshot-1.png) =================================================================== (Binary files differ) Property changes on: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-1.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-2.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/screenshots/Screenshot-2.png) =================================================================== (Binary files differ) Property changes on: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-2.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-3.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/screenshots/Screenshot-3.png) =================================================================== (Binary files differ) Property changes on: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-3.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-4.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/screenshots/Screenshot-4.png) =================================================================== (Binary files differ) Property changes on: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-4.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-5.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/screenshots/Screenshot-5.png) =================================================================== (Binary files differ) Property changes on: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot-5.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/screenshots/Screenshot.png) =================================================================== (Binary files differ) Property changes on: trunk/simexplorer-is/src/site/rst/devel/screenshots/Screenshot.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/devel/uok.png (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/devel/uok.png) =================================================================== --- trunk/simexplorer-is/src/site/rst/devel/uok.png (rev 0) +++ trunk/simexplorer-is/src/site/rst/devel/uok.png 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,8 @@ +PNG + + +IHDRóÿasBIT|d pHYsÕÕgwŠtEXtSoftwarewww.inkscape.orgî<£IDAT8ÁKAÆß³3Iíbì"j¶ +9ôà\Úz.Ä¥HJ¡B¡ÐS±=X(í¡àIzŽTðOH=ì©! êBA +(œ,dHMÝéŠD"Ò~×ïÇ÷Þ<æSÚí6ô16E)]RU5'¥Ì`kQí!6]×=îåncBV(¥Ëe¥ÃPt] À÷ýv±X¬!ÖÂ0\u]7Ÿ`¡d2Y2M3kÛ¶v~~ÛÛÛüôôô¢(J&QgggobÁqçyÕV«õÀuÝBVLÓÌæóy-ØØØrÎÇëõúÃÃÃ×ëëë\J ù|^3M3KY@7/Û¶T*Þl6Çq\ŠŸG=*ËZÖÛÝÝݶmkÒeÆØ¢.Y"0Æ÷Éd%ËœÔuý#cìòëÉÉèle¥(¥KXUÕaJ÷ªóóó###/4M#gggMÎyßBÇÆÆ]Î0EUÕRfº×èïïRVëûûûÂ0[ÒwÙlöFÓu€P³Ùq!<,/,,ÜœÆ!q-kÆðð0%Œéëë{µžž8099yÅ0Æ5EÑïûlhhHéæææŽT*õ8N+étúÚß÷ÛQí !Äf±X¬axØÛÛkJ¥[[[s~ÅÃ:¿r¹®{,Xs§ÑŽ...îFQô¹V«] p§!Xs]÷uW=Ï« + FwéééD"øŠªê³ËÉ B¡áy^5ÃUR +D8ç/S¯þ·Î¿Ôæ\(<IEND®B` \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/devel/uok.png ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/index.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/index.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/index.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/index.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,28 @@ +============== +SimExplorer-is +============== + +.. contents:: + +Abstract +-------- + +Le Cemagref développe un outil d'exploration de simulation, SimExplorer. Les explorations sont faites par la programmation de plans d'expériences qui génÚrent un grand nombre de simulations. + +Simexplorer-IS mets en place des outils qui permettent de gérer toutes les données et les codes permettant de définir une application d'exploration, aussi bien par leur stockage +que par les autorisations données aux utilisateurs pour les manipuler. + +Installation +____________ + +La page `Installation`_ décrit la procédure pour installer le logiciel et le serveur chez vous. + +RÚgles métiers +______________ + +La page `Liste`_ décrit les rÚgles métiers de l'application. + + +.. _Liste: rules.html + +.. _Installation: install.html Property changes on: trunk/simexplorer-is/src/site/rst/index.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/install.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/install.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/install.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/install.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,107 @@ +============================= +SimExplorer SI - Installation +============================= + +Logiciels +========= + +Plateforme +---------- + +SimExplorer SI étant en pur Java, toutes les plateformes supportant JBoss 4.2 sont compatibles. +Nous traiterons pour le moment uniquement des plateformes à base Linux 2.6. + +Java +---- + +Il est nécessaire d'installer au minimum un JRE 1.6 disponible sur le site de Sun. + +JBoss +----- + +L'application nécessite le serveur d'application JBoss AS 4.2.2GA. +L'archive correspondant à la version supportée est jboss-4.2.2.GA.zip. + +AprÚs avoir décompressé l'archive dans un dossier, dupliquer le dossier server/default en serveur/simexplorer. + +Installation +============ + +Dossiers +-------- + +Créer le dossier /var/local/simexplorer/h2. Ce dossier contiendra la base de données contenant les +informations de sécurité. Lorsque l'application sera lancée pour la premiÚre fois, d'autres dossiers +seront créés dans /var/local/simexplorer/ pour la base Lucene et les données. + +Applicatif +---------- + +Copier l'applicatif (simexplorer-is-ear-VERSION.ear) dans le dossier server/simexplorer/deploy de JBoss. + +Configuration +------------- + +TODO Suppression des application déployés automatiquement par JBoss + +L'application étant déployée sur la racine du serveur, il est nécessaire de désactiver l'application déjà +présente à cette place. Pour cela, renommer le dossier /opt/java/jboss-4.2.2.GA/server/simexplorer/deploy/jboss-web.deployer/ROOT.war +en /opt/java/jboss-4.2.2.GA/server/simexplorer/deploy/jboss-web.deployer/deployer.war + +L'application utilise le pool de mail intégré à JBoss. Ainsi, il est nécessaire de modifier les propriétés +mail.smtp.host et mail.from dans le fichier /opt/java/jboss-4.2.2.GA/server/simexplorer/deploy/mail-service.xml + +Exécution +========= + +Lancer JBoss via son script de lancement : + +:: + + bin/run.sh -b 0.0.0.0 -c simexplorer + +PremiÚre connexion +================== + +Si la configuration du serveur n'a pas été modifiée, se connecter à l'application +via l'URL http://ADRESSE-DU-SERVEUR:8080/simexplorer-is-web + +Se connecter avec le login superadmin et le mot de passe password. + +Initialisation +============== + +Si la configuration du serveur n'a pas été modifiée, initialiser l'application +via l'URL http://ADRESSE-DU-SERVEUR:8080/simexplorer-is-web/install en étant connecté en tant +que superadmin. Cette page permet de générer des explorations d'application aléatoires, cette +opération peut s'avérer assez longue (plus d'une minute). + +Récapitulatif +============= + +PC client +--------- + +:: + + scp jboss-4.2.2.GA.zip USER at IPSERVEUR:~/ + scp simexplorer-is-ear-VERSION.ear USER at IPSERVER:~/ + +Serveur +------- + +:: + + cd + unzip jboss-4.2.2.GA.zip + cd jboss-4.2.2.GA/server/ + cp -R default simexplorer + cd + cp simexplorer-is-ear-VERSION.ear jboss-4.2.2.GA/server/simexplorer/deploy/ + cd /var/local/ + sudo mkdir simexplorer + sudo chown USER simexplorer + cd + cd jboss-4.2.2.GA/bin + ./run.sh -b 0.0.0.0 -c simexplorer + \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/install.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/rules.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/rules.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/rules.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/rules.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,223 @@ +Security +======== + +AccÚs à l'EJB +------------- + +L'accÚs peut se faire uniquement au sein d'autres EJB déployés au sein du même serveur d'application (EJB local). + +Permissions +----------- + +Droits sur un élément : + + - owner : l'utilisateur est propriétaire, il a tous les droits + - admin : l'utilisateur peut gérer les droits sur l'élément. Il peut aussi le supprimer. Il peut bien sûr lire et écrire. + - write : l'utilisateur peut créer une nouvelle version, et le lire + - read : l'utilisateur peut uniquement lire l'élément (dans toutes ses versions) + - le superadmin possÚde tous les droits sur tous les éléments + - "atomique" : droits explicites ou d'admin ou propriétaire de l'Actor + - global : droits atomique de l'Actor ou d'un de ses parents (memberOf récursif). Ainsi + si l'utilisateur n'a pas les droits explicites, mais qu'un de ses groupes auxquels il apprtient les possÚde, + l'utilisateur acquiÚre ces droits. + - si un User est propriétaire d'un groupe sans en être membre, il n'a pas les droits du groupe + - tout utilisateur a tous les droits sur un id non encore enregistré (permet l'enregistrement d'un nouvel élément) + +Exemple : Si l'utilisateur a les droits d'écriture, il a aussi les droits de lecture. + ++--------+-------+-------+-------+-------+ +| | Owner | Admin | Write | Read | ++========+=======+=======+=======+=======+ +| Owner | O | X | X | X | ++--------+-------+-------+-------+-------+ +| Admin | O | O | X | X | ++--------+-------+-------+-------+-------+ +| Delete | O | O | X | X | ++--------+-------+-------+-------+-------+ +| Write | O | O | O | X | ++--------+-------+-------+-------+-------+ +| Read | O | O | O | O | ++--------+-------+-------+-------+-------+ + +Sauvegarde d'un élément : + + - les droits associés sont mis à jour via cette méthode + - aucune permission n'est créée si l'utilisateur est super admin + - une permission est créée si et seulement si aucune permission n'existe avec cet utilisateur. + La permission créée a pour propriétaire l'utilisateur sauvant l'élément, donc tous les droits. + +Storage +======= + +Config +------ + +Sera modifié prochainement (utilisation d'un fichier par défaut et/ou d'un fichier externe et/ou de la +configuration commandline). + +Stockage des "Attachments" +-------------------------- + +Les flux associés aux entités sont sauvées sur le disque par FileSystemAttachmentHandler. +Le dossier de base est retrouvé via la configuration. Afin de ne pas générer trop de dossiers dans +ce dossier, les données sont stockées dans une arborescence correspondant aux trois premiers caractÚres +de leur id. +Ainsi, l'élément avec l'id efjsisjd sera stocké dans le dossier /baseFolder/e/f/j/efjsisjd. +Si l'id a moins de trois caractÚres, le dossier est directement l'id. + +Le stockage des données (storeData) met à jour l'Attachment associé (hash et taille). + +Aucun contrÃŽle métier n'est fait à ce niveau. + +Database +-------- + +Cette classe gÚre uniquement le stockage des données spécifiques à SimExplorer IS. De plus, elle doit +être en mesure d'indexer les données afin d'effecture les recherches. + +L'implémentation par défaut est LuceneDatabase. + +Le dossier où est stocké l'index est spécifié dans la configuration, ainsi que l'intervalle de +compactage de l'index (réduction du nombre de fichiers utilisés pour l'index). + +Un pool de searchers permet de traiter les requêtes en parallÚle de l'insertion. Une insertion invalide +le pool et les searchers doivent être recréés à la requête suivante. + +Le filtrage des données (afin d'afficher uniquement les éléments que l'utilisateur peut lire) est détaché +du module de sécurité (les données étant stockées dans deux systÚmes différents, JPA d'un cÃŽté, Lucene +de l'autre). +Il est maintenu en mémoire une liste de filtre sur les éléments visibles pour un utilisateur. Cette liste +est gérée par le service liant sécurité et persistence. La méthode updateFilter met à jour le filtre +d'un utilisateur en passant en paramÚtre la liste des ids des éléments qu'il a le droit de visualiser. +Un filtre Lucene est créé à partir de cette liste, avec de trÚs bonnes performances (voir +http://www.nabble.com/Security-filtering-from-external-DB-td15630408.html). + +Deux types de données sont sauvées dans la base Lucene : + + - les MetaData : des méthodes permettent de transformer un Document lucene en MetaData et vice versa. + Ces méthodes ne sont appellées uniquement si c'est vraiment utile, pour l'affichage d'un élément ou le + chargement d'un élément. Tout Document d'un ensemble Hits (résultat de recherche) peut être converti, + mais c'est une opération coûteuse, nottament sur des milliers d'éléments... + - les hierarchies entre MetaData : on conserve dans l'index les relations d'un MetaData, avec ses parents + et ses enfants. Cela permettra d'appliquer les rÚgles métiers durant les ajouts/suppressions. Lors + du clonage d'un élément, une méthode permet de dupliquer les associations des éléments utilisés par le cloné. + +Pour ces deux types de données, un champ composite avec l'id et la version est créé, afin de faciliter les +recherches. + +La base peut être explorée avec Luke (http://www.getopt.org/luke). + +Aucun contrÃŽle métier n'est fait à ce niveau. + +StorageEngine +------------- + +Dans son implémentation de base, StorageEngineImpl, cette classe sert de liant entre les métadonnées et les fichiers. + +Elle délÚgue toutes ses méthodes aux implémentations de Database et AttachmentHandler. Elle permet tout de même de stocker +des fichiers temporaires avec un MetaData spécifique dédié. De plus, elle a en charge la conversion des Attachment en +données indexables, en passant par les ContentType des données (méthode saveElement). + +En mode serveur, cette classe est utilisée en EJB, via StorageEngineSecuImpl. Cela permet d'accéder à l'EJB CredentialManager. +Ainsi, on peut contrÃŽler toutes les actions de l'utilisateur en vérifiant ses droits. + +Les rÚgles évoquées dans la partie Security s'appliquent. + +Service +======= + +Authentification +---------------- + + - Droits d'administration sur un groupe : superadmin, admin du groupe ou d'un groupe parent + - Droits d'administration sur un utilisateur : superadmin, ou droits d'administration sur un groupe + des groupes de l'utilisateur + - Droits de suppression d'un groupe : droits d'administration sur le groupe + - Droits de suppression d'un utilisateur : droits d'administration sur l'utilisateur + - Droits de consultation d'un utilisateur/groupe : l'utilisateur doit être connecté (ie token valide) + - Droits de création d'un utilisateur/groupe : l'utilisateur doit être admin ou superadmin + - Droits de mise à jour = droits d'administration + +Création d'un utilisateur : un mail est envoyé à l'adresse spécifiée avec son mot de passe et son login. +Suppression d'un groupe/utilisateur : suppression logique (visible = false) +Mise à jour d'un groupe : la récursion est vérifiée et supprimée le cas échéant +Mise à jour d'un utilisateur : seul le super admin peut modifier le fait qu'il soit admin ou superadmin + +A la premiÚre connexion, on vérifie si le superadmin existe, sinon il est créé avec le mot de passe password. +Le paramÚtre password passée à la méthode de login n'est pas le mot de passe en clair, mais un hash (voir AuthenticationServiceHelper). +Au login, les token vieux de plus de 24h sont supprimés. +Chaque appel à getLoggedUser mets à jour la date de login à l'instant présent. + +La demande d'un compte envoie un mail au superadmin avec le login désiré et l'adresse mail de l'utilisateur. + +Un nouveau mot de passe peut être généré si l'administrateur possÚde les droits d'administration sur cet utilisateur. Un +mail est alors envoyé à l'adresse de l'utilisateur. + +Storage +------- + +Suppression +~~~~~~~~~~~ + +La suppression sans spécifier la version revient à supprimer toutes les versions. +On vérifiera alors que toutes les versions peuvent être supprimées avant de procéder à la suppression en elle même. + +Un élément peut être supprimé si et seulement si l'une des conditions suivantes est respectée : + - l'élément est une exploration d'application + - l'élement est un ensemble de données d'exploration ou un composant, et que celui ci n'est utilisé + que par une seule exploration d'application au plus. + - l'élément n'est pas d'un des types pré cités, et que celui-ci n'est utilisé par aucun autre élément. + +=> un élement qui va être supprimé peut avoir au maximum un seul parent. + +Lors de la suppression d'un ensemble de données d'exploration ou d'un composant, si l'élément a un parent de type +exploration d'application, celui ci est supprimé. + +La suppression est ensuite effectuée en supprimant l'élément ainsi que tous ses enfants qui étaient utilisés uniquement par sa descendance directe. +La méthode réalisant cette suppression en cascade est implentée de façon récursive, soit ES l'élément à supprimer, et E l'élément traité dans la méthode. +On initialise la suppression par un getDeletableChildren(ES) : +Dans cette méthode, si E a un parent au plus : + - E est marqué comme étant à être supprimé (toujours le cas pour ES) + - pour tous les éléments utilisés par E, on appele la méthode récursivement getDeletableChildren(E.enfant(i)) +Les éléments marqués comme étant à supprimer sont alors véritablement effacés. + +Sauvegarde +~~~~~~~~~~ + +On va dans cette procédure sauvegarder un LoggableElement et ses attachments. On ne connait pas à priori si l'élément +est présent dans le service de stockage. + +Si l'élément ne contient aucune méta données (typiquement en provenance de SimExplorer sur un nouvel élément), on créé +des méta données par défaut (UUID, version à 1, date de création). +Dans tous les cas, on met à jour les métadonnées avec les données intrinsÚques de l'élément (nom, description, type, hash, etc). + +Dans un premier temps, on regarde si l'élément existe déjà en base, de façon exacte ou non. + +On récupÚre donc le metadata du dernier élément avec le même uuid. Pour cela, on compare les hash si ils existent. +Si ils ne sont pas égaux (ou qu'aucun élément existe avec cet uuid), on continue la création (on crééra la bonne version le moment venu (TODO ref)). + +Si les deux hash des éléments sont égaux, on vérifie l'égalité de façon explicite (deux élément différents peuvent avoir le même hash). +Si le test d'égalite écoue, la création continue, les éléments sont différents. + +A ce stade, les éléments sont strictement égaux. La création est annulée. Mais les versions peuvent être différentes. +Il est alors nécessaire de synchroniser les versions, entre celle qui est reçue et celle qui est déjà stockée. + + - les deux versions sont égales : on ne mets rien à jour. + - la version en base est supérieure à celle fournie, la base n'est pas modifié. Cependant, la version de la métadonnée de l'élément + à sauvegarder est mise à jour. Cette mise à jour doit être traitée par la méthode appelant la sauvegarde (TODO ref). + - si la version en base est inférieure à celle à sauvegarder, on vérifie que l'utilisateur peut créer une nouvelle version de l'élément + - si non, l'élément sera sauvée avec nouvel UUID, mais on ne s'en occupe pas pour le moment (TODO ref). + - si oui, on duplique le dernier élément en base, en lui affectant la version de l'élément en cours de sauvegarde + +Si l'élément est à créer (ie le dernier élément en base est différent de celui en cours d'enregistrement), +on traite tout d'abord le problÚme des versions. + +L'élément en cours de création est toujours le dernier. +Ensuite, on regarde si une autre version existe déjà : + - si non, aucun traitement n'est requis, on utilise la version spécifiée + - si oui, on vérifie que l'utilisateur a le droit de créer une nouvelle version : + - si oui, on met à jour le précédent en le spécifiant comme "n'étant pas la derniÚre version" + - si oui, on incrémente la version de l'élément en cours de sauvegarde si nécessaire + - si non, on créée un nouvel élément (ie un nouvel UUID) + - dans tous les cas, on stocke les informations sur le parent en version + Property changes on: trunk/simexplorer-is/src/site/rst/rules.rst ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/simexplorer-is/src/site/rst/todo.rst (from rev 1581, trunk/simexplorer-is/src/site/fr/rst/todo.rst) =================================================================== --- trunk/simexplorer-is/src/site/rst/todo.rst (rev 0) +++ trunk/simexplorer-is/src/site/rst/todo.rst 2010-01-18 17:20:02 UTC (rev 1585) @@ -0,0 +1,76 @@ +===================== +SimExplorer SI - TODO +===================== + +Client léger +============ + +Consultation +------------ + + - Interface utilisateur : CSS, mise en page + - Page "index" + +Client lourd +============ + + - Synchronisation d'un élément avec le serveur (tests) + - export, import (tests) + - configuration + - API + +Fonctionnalités seconde réunion +=============================== + +Serveur +------- + + - (NOK) Créer les interfaces accessibles via d'autres protocoles que RMI + (WebService, CORBA). + - (NOK) Remplacer l'invoker jrmp par http afin de permettre l'utilisation de + proxy (voir http://www.jtips.info/index.php?title=JBoss/HttpInvoker et + http.proxyHost, http.proxyPort, proxySet, http.proxy.username et + http.proxy.password) (dans le module swing, les propriétés de config sont présentes) + +Interface Swing +--------------- + + - Créer des méthodes afin de permettre à SimExplorer d'utiliser le SI comme plugin + +Documentation +------------- + + - Documentation utilisateur + - Enoncer les rÚgles métiers qui ont été développées dans un document + indépendant du code + - Documentation développeur + - Documentation intégration (backup, dumps, configuration) + - Configuration log4j (hibernate, etc) + +Reste à faire (Autre) +===================== + + - Gestion des attachments transparente pour SimExplorer + - Document format du fichier zip + - Types de fichiers joints (uniquement texte pour le moment), visualisation? + +RÚgles modifiées +================ + + - Gestion des droits : + + * (NOK) Un élément possÚde un unique propriétaire + * (NOK) L'utilisateur mettant à jour un élément en devient le propriétaire + --> Un élément peut avoir plusieurs propriétaires, une personne écrivant un nouvelle version est ajouté à cette liste -> OK + + - Versionnement + + * Exceptions : + + (NOK) Export sur le serveur, aprÚs l'export d'un autre utilisateur : création d'un nouvel élément, en conservant l'historique de l'élément + --> L'élément conserve son id si l'utilisateur a les droits d'écriture, sinon un nouvel élément est créé. + * (NOK) Suppression d'un CE ou de DE : suppression des AE associées (avec message de confirmation...) + * (NOK) Suppression d'une AE : les CE et les DE orphelins (ie utilisés uniquement par cette AE) sont supprimés + --> Un élément peut être supprimer si, et seulement si, l'élement n'est utilisé que par un autre élément au maximum, qui sera lui aussi supprimé selon les même rêgles. Les + éléments supprimés sont tous les enfants (quelque soit le niveau), qui n'ont qu'un seul parent. + + \ No newline at end of file Property changes on: trunk/simexplorer-is/src/site/rst/todo.rst ___________________________________________________________________ Added: svn:mergeinfo + Modified: trunk/simexplorer-is/src/site/site_fr.xml =================================================================== --- trunk/simexplorer-is/src/site/site_fr.xml 2009-12-02 14:51:08 UTC (rev 1584) +++ trunk/simexplorer-is/src/site/site_fr.xml 2010-01-18 17:20:02 UTC (rev 1585) @@ -1,59 +1,36 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<project name="simexplorer-si"> +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> - <skin> - <groupId>org.codelutin</groupId> - <artifactId>maven-lutin-skin</artifactId> - <version>0.2.2</version> - </skin> - <bannerLeft> <name>${project.name}</name> <href>index.html</href> </bannerLeft> - <bannerRight> - <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> - <href>http://www.codelutin.com</href> - </bannerRight> - <poweredBy> - <logo href="http://maven.apache.org" name="Maven" - img="http://buix.labs.libre-entreprise.org/lutinjaxx/images/logos/maven-feather.png"/> - <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" - img="http://buix.labs.libre-entreprise.org/lutinjaxx/images/jrst-logo.png"/> + <logo href="http://maven.apache.org" name="Maven" img="images/logos/maven-feather.png"/> + <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="images/jrst-logo.png"/> <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" - img="http://buix.labs.libre-entreprise.org/lutinjaxx/images/restructuredtext-logo.png"/> - <logo href="http://buix.labs.libre-entreprise.org/jaxx/index.html" name="Jaxx" - img="http://buix.labs.libre-entreprise.org/jaxx/jaxx.png"/> - + img="images/restructuredtext-logo.png"/> </poweredBy> <body> - <links> - <item name="${project.organization.name}" href="${project.organization.url}"/> - <item name="Code Lutin" href="http://www.codelutin.com/"/> - <item name="Labs" href="http://labs.libre-entreprise.org/"/> - <!--item name="[fr" - href="http://simexplorer-si.labs.libre-entreprise.org/index.html" /> - <item name="en]" - href="http://simexplorer-si.labs.libre-entreprise.org/en/index.html" /--> - </links> - <menu ref="parent"/> + <breadcrumbs> + <item name="${project.name}" href="index.html"/> + </breadcrumbs> <menu name="Utilisateur"> - <item href="/index.html" name="Présentation"/> + <item href="/index.html" name="Présentation"/> <!--item href="/install.html" name="Installation"/--> - <item href="/todo.html" name="Reste à faire"/> + <item href="/todo.html" name="Reste à faire"/> </menu> <!--menu name="Règles métier"> <item href="/rules.html" name="Liste"/> </menu--> - <menu name="Développement"> - <item href="/devel/index.html" name="Présentation"/> + <menu name="Développement"> + <item href="/devel/index.html" name="Présentation"/> <!--item href="/devel/implementation.html" name="Implémentation"/> <item href="/devel/enviro.html" name="Environnement"/--> </menu>