pax_global_header00006660000000000000000000000064130053624320014510gustar00rootroot0000000000000052 comment=f00af0d343496afaa6b19cb477cf5180e2bac0e2 ALTER-1.3.4/000077500000000000000000000000001300536243200123645ustar00rootroot00000000000000ALTER-1.3.4/.gitignore000066400000000000000000000001171300536243200143530ustar00rootroot00000000000000.project .settings .classpath alter-lib/target/ alter-web/target/ *.iml .idea ALTER-1.3.4/COPYING.LESSER000066400000000000000000000167251300536243200144260ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 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. 0. Additional Definitions. 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. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. 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. 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". 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. 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. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. 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: 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 b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. 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: 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. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. 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: 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. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. 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. d) Do one of the following: 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. 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. 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.) 5. Combined Libraries. 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: 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. 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. 6. Revised Versions of the GNU Lesser General Public License. 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. 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. 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. ALTER-1.3.4/README.md000066400000000000000000000130351300536243200136450ustar00rootroot00000000000000ALTER Project ============= # What is ALTER ALTER stands for (ALignment Transformation EnviRonment) and it is a set of software components to transform between [Multiple Sequence Alignment](http://en.wikipedia.org/wiki/Multiple_sequence_alignment) file formats. ALTER difers from other similar tools in the way that is "program-oriented" instead of simply "format-oriented", that is, when you convert between one format into another, you have to specify which program did generate your input file and which program will consume your generated file. This is because many programs does not follow the exact format standard, making custom asumptions about it, so tranforming directly between standard formats does not always ensure that your produced file will be processed by the next program correctly. # ALTER software components ALTER contains a set of components: 1. A core library. 2. A command line interface. 3. A desktop graphical user interface (GUI). 4. A web interface (a running instance is here: [http://sing.ei.uvigo.es/alter](http://sing.ei.uvigo.es/alter)). # Building ALTER and running from source ## Build Before starting, you have to download and install: 1. Git tool for cloning the last version 2. A Java Compiler and tool 3. The Maven tool And now, you can download and build it by performing: ``` git clone https://github.com/sing-group/ALTER.git cd ALTER mvn package ``` ## Running the desktop graphical user interface ``` java -jar alter-lib/target/ALTER-1.3.4-jar-with-dependencies.jar ``` ## Running the command line user interface ``` java -jar alter-lib/target/ALTER-1.3.4-jar-with-dependencies.jar help ``` ## Running the web user interface in your own machine 1. Download a jetty-runner.jar, which is a server of Java Web applications. For example, download the 9.4.0RC1 version from here [here](http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.4.0.RC1/jetty-runner-9.4.0.RC1.jar) 2. Place the jetty-runner-9.4.0.RC1.jar inside your ALTER folder, and the run: ``` java -jar jetty-runner-9.4.0.RC1.jar alter-web/target/alter-web-1.3.4.war ``` Once the server has started, surf to [http://localhost:8080](http://localhost:8080/) # Use the core library in your projects ## Include the library in your project ### Maven project (recommended) Import our repository into your pom.xml file ``` [...] [...] sing-repository SING repository http://sing.ei.uvigo.es/maven2 [...] [...] [...] es.uvigo.ei.sing alter-lib 1.3.4 [...] ``` ### Include the .jar inside your classpath You have to include the alter-lib/target/ALTER-1.3.4-jar-with-dependencies.jar file in your classpath ## Make a sequence conversion inside your Java code Here it is an example to convert a NEXUS file to ALN. ```java package testalter; import es.uvigo.ei.sing.alter.converter.Converter; import es.uvigo.ei.sing.alter.converter.DefaultFactory; import es.uvigo.ei.sing.alter.parser.ParseException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class TestAlter { public static void main(String[] args) throws IOException { Converter converter = new DefaultFactory().getConverter( "Linux", // Input operating system (Linux, MacOS or Windows) "clustal", // Input program (Clustal, MAFFT, MUSCLE, PROBCONS or TCoffee) "NEXUS", // Input format (ALN, FASTA, GDE, MEGA, MSF, NEXUS, PHYLIP or PIR) false, // Autodetect format (other input options are omitted) false, // Collapse sequences to haplotypes true, // Treat gaps as missing data when collapsing false, // Count missing data as differences when collapsing 0, // Connection limit (sequences differing at <= l sites will be collapsed) (default is l=0) "windows", // Output operating system (Linux, MacOS or Windows) "general", // Output program (jModelTest, MrBayes, PAML, PAUP, PhyML, // ProtTest, RAxML, TCS, CodABC, // BioEdit, MEGA, dnaSP, Se-Al, Mesquite, SplitsTree, Clustal, MAFFT, // MUSCLE, PROBCONS, TCoffee, Gblocks, SeaView, trimAl or GENERAL) "aln", // Output format (ALN, FASTA, GDE, MEGA, MSF, NEXUS, PHYLIP or PIR) false, // Low case output false, // Output residue numbers (only ALN format) false, // Sequential output (only NEXUS and PHYLIP formats) false, // Output match characters "MyConverterApp" // identifier for log messages ); try { String inputSequence = new String(Files.readAllBytes(Paths.get("input.nexus"))); String converted = converter.convert(inputSequence); System.out.println("converted file:"); System.out.println(converted); } catch (ParseException e) { System.err.println("the input file seems to contain errors"); e.printStackTrace(); } } } ``` # Development Team The ALTER development team is: * Daniel Glez-Peña. * Daniel Gómez-Blanco. * Miguel Reboiro-Jato. * Florentino Fdez-Riverola. * David Posada. # Citing ALTER If you are using ALTER in your research work, please cite us: D. Glez-Peña; D. Gómez-Blanco; M. Reboiro-Jato; F. Fdez-Riverola; D. Posada (2010) ALTER: program-oriented format conversion of DNA and protein alignments. Nucleic Acids Research. Web Server issue. ISSN: 0305-1048 [http://dx.doi.org/10.1093/nar/gkq321](http://dx.doi.org/10.1093/nar/gkq321) ALTER-1.3.4/alter-lib/000077500000000000000000000000001300536243200142375ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/COPYING.LESSER000066400000000000000000000167251300536243200163010ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 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. 0. Additional Definitions. 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. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. 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. 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". 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. 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. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. 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: 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 b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. 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: 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. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. 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: 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. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. 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. d) Do one of the following: 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. 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. 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.) 5. Combined Libraries. 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: 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. 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. 6. Revised Versions of the GNU Lesser General Public License. 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. 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. 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. ALTER-1.3.4/alter-lib/pom.xml000066400000000000000000000077021300536243200155620ustar00rootroot00000000000000 4.0.0 es.uvigo.ei.sing alter-project 1.3.4 ../pom.xml es.uvigo.ei.sing alter-lib jar ALTER Core Library and Desktop app http://sing.ei.uvigo.es/ALTER UTF-8 net.java.dev.javacc javacc 5.0 args4j args4j 2.0.12 org.codehaus.mojo javacc-maven-plugin 2.6 src/main/resources true maven-compiler-plugin 3.1 1.7 1.7 org.codehaus.mojo javacc-maven-plugin 2.6 javacc javacc **/*.jj src/main/java maven-assembly-plugin make-assembly package single es.uvigo.ei.sing.alter.cmdLine.Convert jar-with-dependencies ALTER-${project.version} org.eclipse.m2e lifecycle-mapping 1.0.0 org.codehaus.mojo javacc-maven-plugin [2.6,) javacc ALTER-1.3.4/alter-lib/src/000077500000000000000000000000001300536243200150265ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/000077500000000000000000000000001300536243200157525ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/000077500000000000000000000000001300536243200166735ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/000077500000000000000000000000001300536243200173025ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/000077500000000000000000000000001300536243200204335ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/000077500000000000000000000000001300536243200210305ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/000077500000000000000000000000001300536243200217705ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/000077500000000000000000000000001300536243200230775ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/cmdLine/000077500000000000000000000000001300536243200244525ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/cmdLine/CmdLineLogHandler.java000077500000000000000000000037351300536243200306030ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.cmdLine; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; /** * Implements a handler for logging messages, printing them to the standard out stream. * @author Daniel Gomez Blanco * @version 1.0 */ public class CmdLineLogHandler extends Handler { /** * Prints messages in the adequate format. * @param record Message to print. */ @Override public void publish(LogRecord record) { if (record.getLevel() == Level.INFO) System.out.println(" : " + record.getMessage().replace("\n", "\n\t")); else if (record.getLevel() == Level.WARNING) System.out.println(" : " + record.getMessage().replace("\n", "\n\t")); else System.err.println(": " + record.getMessage().replace("\n", "\n\t")); } /** * Calls Sytem.out.flush() and System.err.flush(). */ @Override public void flush() { System.out.flush(); System.err.flush(); } /** * No behaviour has been implemented for this method. * @throws SecurityException If a Security Manager exists and the calling object does not have permission. */ @Override public void close() throws SecurityException { } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/cmdLine/CmdLineOptions.java000077500000000000000000000114641300536243200302150ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.cmdLine; import java.io.File; import org.kohsuke.args4j.Option; /** * Defines the options to be processed by args4j when ALTER is executed * from the command line. Java annotations are used. * @author Daniel Gomez Blanco * @version 1.0 */ public class CmdLineOptions { /** * Inpute file. */ @Option(name = "-i", usage = "Input file.", required = true, aliases = "--input") File in; /** * Input operating system (Linux, MacOS or Windows). */ @Option(name = "-io", usage = "Input operating system (Linux, MacOS or Windows).", aliases = "--inputOS") String inOS; /** * Input program (Clustal, MAFFT, MUSCLE, PROBCONS or TCoffee). */ @Option(name = "-ip", usage = "Input program (Clustal, MAFFT, MUSCLE, PROBCONS or TCoffee).", aliases = "--inputProgram") String inProgram; /** * Inpute format (ALN, FASTA, GDE, MSF, NEXUS, PHYLIP or PIR). */ @Option(name = "-if", usage = "Input format (ALN, FASTA, GDE, MEGA, MSF, NEXUS, PHYLIP or PIR).", aliases = "--inputFormat") String inFormat; /** * Autodetect format (other input options are omitted). */ @Option(name = "-ia", usage = "Autodetect format (other input options are omitted).", aliases = "--inputAutodetect") boolean autodetect = false; /** * Collapse sequences to haplotypes. */ @Option(name = "-c", usage = "Collapse sequences to haplotypes.", aliases = "--collapse") boolean collapse = false; /** * Treat gaps as missing data when collapsing. */ @Option(name = "-cg", usage = "Treat gaps as missing data when collapsing.", aliases = "--collapseGaps") boolean gaps = false; /** * Count missing data as differences when collapsing. */ @Option(name = "-cm", usage = "Count missing data as differences when collapsing.", aliases = "--collapseMissing") boolean missing = true; /** * Connection limit (sequences differing at <= l sites will be collapsed) (default is l=0). */ @Option(name = "-cl", usage = "Connection limit (sequences differing at <= l sites will be collapsed) (default is l=0).", aliases = "--collapseLimit") int limit = 0; /** * Output file. */ @Option(name = "-o", usage = "Output file.", required = true, aliases = "--output") File out; /** * Output operating system (Linux, MacOS or Windows). */ @Option(name = "-oo", usage = "Output operating system (Linux, MacOS or Windows).", required = true, aliases = "--outputOS") String outOS; /** * Output program (jModelTest, MrBayes, PAML, PAUP, PhyML, ProtTest, RAxML, TCS, CodABC, BioEdit, MEGA, dnaSP, Se-Al, Mesquite, SplitsTree, Clustal, MAFFT, MUSCLE, PROBCONS, TCoffee, Gblocks, SeaView, trimAl or GENERAL). */ @Option(name = "-op", usage = "Output program (jModelTest, MrBayes, PAML, PAUP, PhyML, ProtTest, RAxML, TCS, CodABC, BioEdit, MEGA, dnaSP, Se-Al, Mesquite, SplitsTree, Clustal, MAFFT, MUSCLE, PROBCONS, TCoffee, Gblocks, SeaView, trimAl or GENERAL)", required = true, aliases = "--outputProgram") String outProgram; /** * Output format (ALN, FASTA, GDE, MEGA, MSF, NEXUS, PHYLIP or PIR). */ @Option(name = "-of", usage = "Output format (ALN, FASTA, GDE, MEGA, MSF, NEXUS, PHYLIP or PIR).", required = true, aliases = "--outputFormat") String outFormat; /** * Lower case output. */ @Option(name = "-ol", usage = "Lowe case output.", aliases = "--outputLowerCase") boolean lowerCase = false; /** * Output residue numbers (only ALN format). */ @Option(name = "-on", usage = "Output residue numbers (only ALN format).", aliases = "--outputResidueNumbers") boolean residueNumbers = false; /** * Sequential output (only NEXUS and PHYLIP formats). */ @Option(name = "-os", usage = "Sequential output (only NEXUS and PHYLIP formats).", aliases = "--outputSequential") boolean sequential = false; /** * Output match characters. */ @Option(name = "-om", usage = "Output match characters.", aliases = "--outputMatch") boolean match = false; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/cmdLine/Convert.java000077500000000000000000000114021300536243200267360ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.cmdLine; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import es.uvigo.ei.sing.alter.converter.Converter; import es.uvigo.ei.sing.alter.converter.DefaultFactory; import es.uvigo.ei.sing.alter.converter.Factory; import es.uvigo.ei.sing.alter.parser.ParseException; /** * Main class to execute ALTER from the command line. * @author Daniel Gomez Blanco * @version 1.0 */ public class Convert { /** * Main method to execute ALTER from the command line. * @param args Conversion options. */ public static void main(String args[]) { //If there are no parameters launch the GUI version of ALTER if (args.length == 0) es.uvigo.ei.sing.alter.gui.MainFrame.main(args); //In other case use the command line else { //Initialize logger Logger logger = Logger.getLogger("alter" + System.currentTimeMillis()); logger.setUseParentHandlers(false); logger.setLevel(Level.ALL); logger.addHandler(new CmdLineLogHandler()); //Parse options CmdLineOptions opts = new CmdLineOptions(); CmdLineParser parser = new CmdLineParser(opts); try { parser.parseArgument(args); } catch (CmdLineException e) { System.err.println(e.getMessage()); parser.printUsage(System.err); return; } if (!opts.autodetect && (opts.inOS == null || opts.inProgram == null || opts.inFormat == null)) { System.err.println("Autodetection not enabled. Input options required."); parser.printUsage(System.err); return; } //Load input file StringBuffer in = new StringBuffer(); try { BufferedReader br = new BufferedReader(new FileReader(opts.in)); String s; while ((s = br.readLine()) != null) in.append(s + "\r\n"); br.close(); } catch (FileNotFoundException ex) { logger.log(Level.SEVERE, "Input file " + opts.in + " not found."); return; } catch (IOException ex) { logger.log(Level.SEVERE, "Failure reading input file " + opts.in + ":\r\n" + ex.getMessage()); return; } //Get converter and convert Factory factory = new DefaultFactory(); Converter converter; String out = ""; try { converter = factory.getConverter(opts.inOS, opts.inProgram, opts.inFormat, opts.autodetect, opts.collapse, opts.gaps, opts.missing, opts.limit, opts.outOS, opts.outProgram, opts.outFormat, opts.lowerCase, opts.residueNumbers, opts.sequential, opts.match, logger.getName()); out = converter.convert(in.toString()); } catch (UnsupportedOperationException ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } catch (ParseException ex) { logger.log(Level.SEVERE, "Failure parsing source file:\r\n" + ex.getMessage()); return; } //Output to file try { FileWriter fw = new FileWriter(opts.out); fw.write(out); fw.close(); } catch (IOException ex) { logger.log(Level.SEVERE, "Failure writing output file:\r\n" + ex.getMessage()); System.err.println(ex.getMessage()); } } } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/cmdLine/package-info.java000066400000000000000000000001551300536243200276420ustar00rootroot00000000000000/** * Command line interface. * * @author Daniel Gomez Blanco */ package es.uvigo.ei.sing.alter.cmdLine;ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/converter/000077500000000000000000000000001300536243200251065ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/converter/Converter.java000077500000000000000000000022741300536243200277300ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.converter; import es.uvigo.ei.sing.alter.parser.ParseException; /** * Defines the only method needed to implement a converter. * @author Daniel Gomez Blanco * @version 1.1 */ public interface Converter { /** * Takes as input a string and returns a converted string. * @param in Input string. * @return Converted string. * @throws ParseException If an error occurs while parsing the input string. */ public String convert(String in) throws ParseException; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/converter/DefaultConverter.java000077500000000000000000000065231300536243200312360ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.converter; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.reader.Reader; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.writer.Writer; /** * Implements the default converter. * @author Daniel Gomez Blanco * @version 1.1 */ public class DefaultConverter implements Converter { /** * Collapse sequences to haplotypes. */ private boolean collapse; /** * Treat gaps as missing characters when collapsing. */ private boolean gapsAsMissing; /** * Count missing characters as differences when collapsing. */ private boolean countMissing; /** * Connection limit (sequences differing at <= l sites will be collapsed) (default is l=0). */ private int limit; /** * Logger to register information messages. */ private Logger logger; /** * Reader to parse the input MSA. */ private Reader reader; /** * Writer to output the converted MSA. */ private Writer writer; /** * Class constructor * @param reader Reader to parse the input MSA. * @param writer Writer to output the converted MSA. * @param collapse Collapse sequences to haplotypes. * @param gapsAsMissing Treat gaps as missing characters when collapsing. * @param countMissing Count missing characters as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed) (default is l=0). * @param logger Name of the logger to instantiate. */ public DefaultConverter(Reader reader, Writer writer, boolean collapse, boolean gapsAsMissing, boolean countMissing, int limit, String logger) { this.reader = reader; this.writer = writer; this.collapse = collapse; this.gapsAsMissing = gapsAsMissing; this.countMissing = countMissing; this.limit = limit; this.logger = Logger.getLogger(logger); } /** * Takes as input a string and returns a converted string. * @param in Input string. * @return Converted string. * @throws ParseException If an error occurs while parsing the input string. */ public String convert(String in) throws ParseException { MSA msa = reader.read(in); if (collapse) { logger.log(Level.INFO,"*** haplotype collapse begin ***"); msa = msa.collapse(gapsAsMissing, countMissing, limit, logger.getName()); logger.log(Level.INFO,"*** haplotype collapse end ***"); } return writer.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/converter/DefaultFactory.java000077500000000000000000000700641300536243200306770ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.converter; import es.uvigo.ei.sing.alter.reader.*; import es.uvigo.ei.sing.alter.writer.*; /** * Implements the default factory for converters. * @author Daniel Gomez Blanco * @version 1.1 */ public class DefaultFactory implements Factory { /** * Returns an adequate converter for the specified options. * @param inO Input operating system. * @param inP Input program. * @param inF Input format. * @param autodetect Format autodetection. * @param collapse Collapse sequences to haplotypes. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param outO Output operating system. * @param outP Output program. * @param outF Output format. * @param lowerCase Lower case output. * @param resNumbers Output residue numbers (only ALN format). * @param sequential Sequential output (only NEXUS and PHYLIP formats). * @param match Output match characters. * @param logger Name of the logger to instantiate. * @return Adequate converter for the specified options. * @throws UnsupportedOperationException If the options combination is not possible. */ public Converter getConverter(String inO, String inP, String inF, boolean autodetect, boolean collapse, boolean gapsAsMissing, boolean countMissing, int limit, String outO, String outP, String outF, boolean lowerCase, boolean resNumbers, boolean sequential, boolean match, String logger) throws UnsupportedOperationException { Reader reader = getReader(inO, inP, inF, autodetect, logger); Writer writer = getWriter(outO, outP, outF, lowerCase, resNumbers, sequential, match, logger); return new DefaultConverter(reader, writer, collapse, gapsAsMissing, countMissing, limit, logger); } /** * Returns an adequate reader for the specified input options. * @param inO Input operating system. * @param inP Input program. * @param inF Input format. * @param autodetect Format autodetection. * @param logger Name of the logger to instantiate. * @return Adequate reader for the specified input options. * @throws UnsupportedOperationException If the options combination is not possible. */ public Reader getReader(String inO, String inP, String inF, boolean autodetect, String logger) throws UnsupportedOperationException { Reader reader; if (autodetect) reader = new AutodetectionReader(logger); else if (inO.toLowerCase().equals("windows") || inO.toLowerCase().equals("linux") || inO.toLowerCase().equals("macos")) if (inP.toLowerCase().equals("clustal")) if (inF.toLowerCase().equals("aln")) reader = new AlnReader(logger); else if (inF.toLowerCase().equals("fasta")) reader = new FastaReader(logger); else if (inF.toLowerCase().equals("gde")) reader = new GdeReader(logger); else if (inF.toLowerCase().equals("msf")) reader = new MsfReader(logger); else if (inF.toLowerCase().equals("nexus")) reader = new NexusReader(logger); else if (inF.toLowerCase().equals("phylip")) reader = new PhylipReader(logger); else if (inF.toLowerCase().equals("pir")) reader = new PirReader(logger); else throw new UnsupportedOperationException("Input format " + inF + " not supported by Clustal."); else if (inP.toLowerCase().equals("mafft")) if (inF.toLowerCase().equals("aln")) reader = new AlnReader(logger); else if (inF.toLowerCase().equals("fasta")) reader = new FastaReader(logger); else throw new UnsupportedOperationException("Input format " + inF + " not supported by Mafft."); else if (inP.toLowerCase().equals("tcoffee")) if (inF.toLowerCase().equals("aln")) reader = new AlnReader(logger); else if (inF.toLowerCase().equals("fasta")) reader = new FastaReader(logger); else if (inF.toLowerCase().equals("msf")) reader = new MsfReader(logger); else if (inF.toLowerCase().equals("phylip")) reader = new PhylipReader(logger); else if (inF.toLowerCase().equals("pir")) reader = new PirReader(logger); else throw new UnsupportedOperationException("Input format " + inF + " not supported by TCoffee."); else if (inP.toLowerCase().equals("muscle")) if (inF.toLowerCase().equals("aln")) reader = new AlnReader(logger); else if (inF.toLowerCase().equals("fasta")) reader = new FastaReader(logger); else if (inF.toLowerCase().equals("msf")) reader = new MsfReader(logger); else if (inF.toLowerCase().equals("phylip")) reader = new PhylipReader(logger); else throw new UnsupportedOperationException("Input format " + inF + " not supported by MUSCLE."); else if (inP.toLowerCase().equals("probcons")) if (inF.toLowerCase().equals("aln")) reader = new AlnReader(logger); else if (inF.toLowerCase().equals("fasta")) reader = new FastaReader(logger); else throw new UnsupportedOperationException("Input format " + inF + " not supported by PROBCONS."); else throw new UnsupportedOperationException("Input program " + inP + " not supported."); else throw new UnsupportedOperationException("Input operating system " + inO + " not supported."); return reader; } /** * Returns an adequate writer for the specified output options. * @param outO Output operating system. * @param outP Output program. * @param outF Output format. * @param lowerCase Lower case output. * @param resNumbers Output residue numbers (only ALN format). * @param sequential Sequential output (only NEXUS and PHYLIP formats). * @param match Output match characters. * @param logger Name of the logger to instantiate. * @return Adequate writer for the specified output options. * @throws UnsupportedOperationException If the options combination is not possible. */ public Writer getWriter(String outO, String outP, String outF, boolean lowerCase, boolean resNumbers, boolean sequential, boolean match, String logger) throws UnsupportedOperationException { Writer writer; if (outO.toLowerCase().equals("windows") || outO.toLowerCase().equals("linux") || outO.toLowerCase().equals("macos")) if (outP.toLowerCase().equals("jmodeltest")) if (outF.toLowerCase().equals("aln")) writer = new AlnJModelTestWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaJModelTestWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfJModelTestWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("nexus")) writer = new NexusJModelTestWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipJModelTestWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirJModelTestWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by jModeltest."); else if (outP.toLowerCase().equals("prottest")) if (outF.toLowerCase().equals("phylip")) writer = new PhylipProtTestWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("nexus")) if (sequential) writer = new NexusProtTestWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Interleaved NEXUS not supported by ProtTest."); else throw new UnsupportedOperationException("Output format " + outF + " not supported by ProtTest."); else if (outP.toLowerCase().equals("paml")) if (outF.toLowerCase().equals("nexus")) if (sequential) writer = new NexusWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Interleaved NEXUS not supported by PAML."); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipPAMLWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by PAML."); else if (outP.toLowerCase().equals("phyml")) if (outF.toLowerCase().equals("phylip")) writer = new PhylipPhyMLWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by PhyML."); else if (outP.toLowerCase().equals("paup")) if (outF.toLowerCase().equals("mega")) writer = new MegaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("nexus")) writer = new NexusWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by PAUP."); else if (outP.toLowerCase().equals("raxml")) if (outF.toLowerCase().equals("phylip")) writer = new PhylipRAxMLWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by RAxML."); else if (outP.toLowerCase().equals("mrbayes")) if (match) throw new UnsupportedOperationException("Match first not supported by MrBayes."); else if (outF.toLowerCase().equals("nexus")) writer = new NexusMrBayesWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by MrBayes."); else if (outP.toLowerCase().equals("tcs")) if (outF.toLowerCase().equals("nexus")) if (sequential) writer = new NexusTCSWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Interleaved NEXUS not supported by TCS."); else if (outF.toLowerCase().equals("phylip")) if (sequential) writer = new PhylipTCSWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Interleaved PHYLIP not supported by TCS."); else throw new UnsupportedOperationException("Output format " + outF + " not supported by TCS."); else if (outP.toLowerCase().equals("codabc")) if (outF.toLowerCase().equals("phylip")) if (sequential) writer = new PhylipCodABCWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Interleaved PHYLIP not supported by CodABC."); else throw new UnsupportedOperationException("Output format " + outF + " not supported by CodABC."); else if (outP.toLowerCase().equals("bioedit")) if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("nexus")) writer = new NexusWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipBioEditWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by BioEdit."); else if (outP.toLowerCase().equals("mega")) if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("mega")) writer = new MegaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfMegaWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("nexus")) if (sequential) throw new UnsupportedOperationException("Sequential NEXUS not supported by MEGA."); else writer = new NexusWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipMegaWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by MEGA."); else if (outP.toLowerCase().equals("dnasp")) if (outF.toLowerCase().equals("fasta")) writer = new FastaDnaSPWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("mega")) writer = new MegaDnaSPWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("nexus")) if (!match) writer = new NexusDnaSPWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Match first not supported by NEXUS for dnaSP."); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipDnaSPWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirDnaSPWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by dnaSP."); else if (outP.toLowerCase().equals("se-al")) if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("gde")) writer = new GdeSeAlWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("nexus")) writer = new NexusWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by Se-Al."); else if (outP.toLowerCase().equals("mesquite")) if (outF.toLowerCase().equals("nexus")) writer = new NexusMesquiteWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by Mesquite."); else if (outP.toLowerCase().equals("splitstree")) if (match) throw new UnsupportedOperationException("Match first not supported by SplitsTree."); else if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("nexus")) writer = new NexusSplitsTreeWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipSplitsTreeWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by SplitsTree."); else if (outP.toLowerCase().equals("clustal")) if (match) throw new UnsupportedOperationException("Match first not supported by Clustal."); else if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("gde")) writer = new GdeWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by Clustal."); else if (outP.toLowerCase().equals("mafft")) if (match) throw new UnsupportedOperationException("Match first not supported by MAFFT."); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by MAFFT."); else if (outP.toLowerCase().equals("tcoffee")) if (match) throw new UnsupportedOperationException("Match first not supported by TCoffee."); else if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by TCoffee."); else if (outP.toLowerCase().equals("gblocks")) if (!match) if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by Gblocks."); else throw new UnsupportedOperationException("Match first not supported by Gblocks."); else if (outP.toLowerCase().equals("muscle")) if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by MUSCLE."); else if (outP.toLowerCase().equals("probcons")) if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by PROBCONS."); else if (outP.toLowerCase().equals("seaview")) if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfSeaViewWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("nexus")) writer = new NexusWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) if (!sequential) writer = new PhylipWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Sequential PHYLIP not supported by SeaView."); else throw new UnsupportedOperationException("Output format " + outF + " not supported by SeaView."); else if (outP.toLowerCase().equals("trimal")) if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("mega")) writer = new MegaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("nexus")) if (!sequential) writer = new PhylipWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else throw new UnsupportedOperationException("Sequential NEXUS not supported by trimAl."); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported by trimAl."); else if (outP.toLowerCase().equals("general")) if (outF.toLowerCase().equals("aln")) writer = new AlnWriter(outO.toLowerCase(), lowerCase, resNumbers, match, logger); else if (outF.toLowerCase().equals("fasta")) writer = new FastaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("gde")) writer = new GdeWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("mega")) writer = new MegaWriter(outO.toLowerCase(), lowerCase, match, logger); else if (outF.toLowerCase().equals("msf")) writer = new MsfWriter(outO.toLowerCase(), lowerCase, logger); else if (outF.toLowerCase().equals("nexus")) writer = new NexusWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("phylip")) writer = new PhylipWriter(outO.toLowerCase(), lowerCase, sequential, match, logger); else if (outF.toLowerCase().equals("pir")) writer = new PirWriter(outO.toLowerCase(), lowerCase, match, logger); else throw new UnsupportedOperationException("Output format " + outF + " not supported."); else throw new UnsupportedOperationException("Output program " + outP + " not supported."); else throw new UnsupportedOperationException("Output operating system " + outO + " not supported."); return writer; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/converter/Factory.java000077500000000000000000000075161300536243200273740ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.converter; import es.uvigo.ei.sing.alter.reader.Reader; import es.uvigo.ei.sing.alter.writer.Writer; /** * Defines the methods needed to implement a converter factory. * @author Daniel Gomez Blanco * @version 1.1 */ public interface Factory { /** * Returns an adequate converter for the specified options. * @param inO Input operating system. * @param inP Input program. * @param inF Input format. * @param autodetect Format autodetection. * @param collapse Collapse sequences to haplotypes. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param outO Output operating system. * @param outP Output program. * @param outF Output format. * @param lowerCase Lower case output. * @param resNumbers Output residue numbers (only ALN format). * @param sequential Sequential output (only NEXUS and PHYLIP formats). * @param match Output match characters. * @param logger Name of the logger to instantiate. * @return Adequate converter for the specified options. * @throws UnsupportedOperationException If the options combination is not possible. */ public Converter getConverter(String inO, String inP, String inF, boolean autodetect, boolean collapse, boolean gapsAsMissing, boolean countMissing, int limit, String outO, String outP, String outF, boolean lowerCase, boolean resNumbers, boolean sequential, boolean match, String logger) throws UnsupportedOperationException; /** * Returns an adequate reader for the specified input options. * @param inO Input operating system. * @param inP Input program. * @param inF Input format. * @param autodetect Format autodetection. * @param logger Name of the logger to instantiate. * @return Adequate reader for the specified input options. * @throws UnsupportedOperationException If the options combination is not possible. */ public Reader getReader(String inO, String inP, String inF, boolean autodetect, String logger) throws UnsupportedOperationException; /** * Returns an adequate writer for the specified output options. * @param outO Output operating system. * @param outP Output program. * @param outF Output format. * @param lowerCase Lower case output. * @param resNumbers Output residue numbers (only ALN format). * @param sequential Sequential output (only NEXUS and PHYLIP formats). * @param match Output match characters. * @param logger Name of the logger to instantiate. * @return Adequate writer for the specified output options. * @throws UnsupportedOperationException If the options combination is not possible. */ public Writer getWriter(String outO, String outP, String outF, boolean lowerCase, boolean resNumbers, boolean sequential, boolean match, String logger) throws UnsupportedOperationException; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/converter/ProgramOptions.java000066400000000000000000000317361300536243200307460ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.converter; import java.util.*; /** * Provides methods to check the supported programs and formats, as well as * the possible options for each one of them. * @author Daniel Gonzalez Peña */ public class ProgramOptions{ /** * Supported operating systems. * @return List of strings containing the supported operating systems. */ public static List getSO(){ List so = new LinkedList(); so.add("windows"); so.add("linux"); so.add("macos"); return so; } /** * Supported input programs. * @return List of strings containing the supported input programs. */ public static List getInputPrograms(){ List in_programs = new LinkedList(); in_programs.add("clustal"); in_programs.add("mafft"); in_programs.add("tcoffee"); in_programs.add("muscle"); in_programs.add("probcons"); return in_programs; } /** * Supported input formats. * @return List of strings containing the supported input formats. */ public static List getInputFormats(){ List in_formats = new LinkedList(); in_formats.add("aln"); in_formats.add("fasta"); in_formats.add("gde"); in_formats.add("msf"); in_formats.add("nexus"); in_formats.add("phylip"); in_formats.add("pir"); return in_formats; } /** * Supported output programs. * @return List of strings containing the supported output programs. */ public static List getOutputPrograms(){ List out_programs = new LinkedList(); out_programs.add("general"); out_programs.add("jmodeltest"); out_programs.add("mrbayes"); out_programs.add("paml"); out_programs.add("paup"); out_programs.add("phyml"); out_programs.add("prottest"); out_programs.add("raxml"); out_programs.add("tcs"); out_programs.add("bioedit"); out_programs.add("se-al"); out_programs.add("mega"); out_programs.add("mesquite"); out_programs.add("splitstree"); out_programs.add("dnasp"); out_programs.add("codabc"); out_programs.add("clustal"); out_programs.add("mafft"); out_programs.add("muscle"); out_programs.add("probcons"); out_programs.add("tcoffee"); out_programs.add("gblocks"); out_programs.add("seaview"); out_programs.add("trimal"); return out_programs; } /** * Supported output formats. * @return List of strings containing the supported output formats. */ public static List getOutputFormats(){ List out_formats = new LinkedList(); out_formats.add("aln"); out_formats.add("fasta"); out_formats.add("gde"); out_formats.add("mega"); out_formats.add("msf"); out_formats.add("nexus"); out_formats.add("phylip"); out_formats.add("pir"); return out_formats; } /** * Supported output options. * @return List of strings containing the supported output options. */ public static List getOutOptions(){ List out_options = new LinkedList(); out_options.add("sequential"); out_options.add("interleaved"); out_options.add("lowercase"); out_options.add("match"); out_options.add("residue"); return out_options; } /** * Supported formats depending on the input program. * @param program Input program. * @return List of strings containing the supported input formats. */ public static List getInputProgramFormats(String program){ List formats = new LinkedList(); if (program.equalsIgnoreCase("clustal")){ formats.add("aln"); formats.add("fasta"); formats.add("gde"); formats.add("msf"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("mafft")){ formats.add("aln"); formats.add("fasta"); }else if (program.equalsIgnoreCase("tcoffee")){ formats.add("aln"); formats.add("fasta"); formats.add("msf"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("muscle")){ formats.add("aln"); formats.add("fasta"); formats.add("msf"); formats.add("phylip"); }else if (program.equalsIgnoreCase("probcons")){ formats.add("aln"); formats.add("fasta"); }else{ throw new IllegalArgumentException("Input program not found: "+program); } return formats; } /** * Supported formats depending on the output program. * @param program Output program. * @return List of strings containing the supported output formats. */ public static List getOutputProgramFormats(String program){ List formats = new LinkedList(); if (program.equalsIgnoreCase("jmodeltest")){ formats.add("aln"); formats.add("fasta"); formats.add("msf"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("mrbayes")){ formats.add("nexus"); }else if (program.equalsIgnoreCase("paml")){ formats.add("nexus"); formats.add("phylip"); }else if (program.equalsIgnoreCase("paup")){ formats.add("mega"); formats.add("msf"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("phyml")){ formats.add("phylip"); }else if (program.equalsIgnoreCase("prottest")){ formats.add("nexus"); formats.add("phylip"); }else if (program.equalsIgnoreCase("raxml")){ formats.add("phyplip"); }else if (program.equalsIgnoreCase("tcs")){ formats.add("nexus"); formats.add("phylip"); }else if (program.equalsIgnoreCase("codabc")){ formats.add("phylip"); }else if (program.equalsIgnoreCase("bioedit")){ formats.add("aln"); formats.add("fasta"); formats.add("msf"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("se-al")){ formats.add("fasta"); formats.add("gde"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("mega")){ formats.add("aln"); formats.add("fasta"); formats.add("mega"); formats.add("msf"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("mesquite")){ formats.add("nexus"); }else if (program.equalsIgnoreCase("splitstree")){ formats.add("aln"); formats.add("fasta"); formats.add("nexus"); formats.add("phylip"); }else if (program.equalsIgnoreCase("dnasp")){ formats.add("fasta"); formats.add("mega"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("clustal")){ formats.add("aln"); formats.add("fasta"); formats.add("gde"); formats.add("msf"); formats.add("pir"); }else if (program.equalsIgnoreCase("mafft")){ formats.add("fasta"); }else if (program.equalsIgnoreCase("muscle")){ formats.add("fasta"); }else if (program.equalsIgnoreCase("probcons")){ formats.add("fasta"); }else if (program.equalsIgnoreCase("tcoffee")){ formats.add("aln"); formats.add("fasta"); formats.add("msf"); formats.add("pir"); }else if (program.equalsIgnoreCase("gblocks")){ formats.add("fasta"); formats.add("pir"); }else if (program.equalsIgnoreCase("seaview")){ formats.add("aln"); formats.add("fasta"); formats.add("msf"); formats.add("nexus"); formats.add("phylip"); }else if (program.equalsIgnoreCase("trimal")){ formats.add("aln"); formats.add("fasta"); formats.add("mega"); formats.add("nexus"); formats.add("phylip"); formats.add("pir"); }else if (program.equalsIgnoreCase("general")){ formats.addAll(getOutputFormats()); }else{ throw new IllegalArgumentException("Output program not found: "+program); } return formats; } /** * Possible options depending on output program and format. * @param program Output program. * @param format Output format. * @return */ public static List getOutputProgramOptions(String program, String format){ List options = new LinkedList(); if (!getOutputPrograms().contains(program)){ throw new IllegalArgumentException("Output program not found: "+program); } if (!getOutputFormats().contains(format)){ throw new IllegalArgumentException("Output format not found: "+format); } if (!getOutputProgramFormats(program).contains(format)){ throw new IllegalArgumentException("Output Program "+program+" does not work with "+format+" format"); } //Almost all programs work with lowercase and match options.add("lowercase"); options.add("match"); if (program.equalsIgnoreCase("mrbayes")){ options.remove("match"); }else if (program.equalsIgnoreCase("splitstree")){ options.remove("match"); }else if (program.equalsIgnoreCase("dnasp") && format.equalsIgnoreCase("nexus")){ options.remove("match"); }else if (program.equalsIgnoreCase("clustal")){ options.remove("match"); }else if (program.equalsIgnoreCase("mafft")){ options.remove("match"); }else if (program.equalsIgnoreCase("tcoffee")){ options.remove("match"); }else if (program.equalsIgnoreCase("gblocks")){ options.remove("match"); } //All programs accepting ALN accept residue if (format.equalsIgnoreCase("aln")){ options.add("residue"); } if(format.equalsIgnoreCase("nexus")){ options.add("sequential"); if (program.equalsIgnoreCase("phyml")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("raxml")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("mega")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("clustal")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("mafft")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("tcoffee")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("trimal")){ options.remove("sequential"); } options.add("interleaved"); if (program.equalsIgnoreCase("paml")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("phyml")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("prottest")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("raxml")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("tcs")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("codabc")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("clustal")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("mafft")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("tcoffee")){ options.remove("interleaved"); } } if(format.equalsIgnoreCase("phylip")){ options.add("sequential"); if (program.equalsIgnoreCase("mrbayes")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("mesquite")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("clustal")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("mafft")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("tcoffee")){ options.remove("sequential"); } else if (program.equalsIgnoreCase("seaview")){ options.remove("sequential"); } options.add("interleaved"); if (program.equalsIgnoreCase("mrbayes")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("tcs")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("codabc")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("mesquite")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("clustal")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("mafft")){ options.remove("interleaved"); } else if (program.equalsIgnoreCase("tcoffee")){ options.remove("interleaved"); } } return options; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/converter/package-info.java000066400000000000000000000001521300536243200302730ustar00rootroot00000000000000/** * Converter factory. * * @author Daniel Gomez Blanco */ package es.uvigo.ei.sing.alter.converter;ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/gui/000077500000000000000000000000001300536243200236635ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/gui/ConvertPanel.java000077500000000000000000001074401300536243200271370ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.gui; import javax.swing.DefaultComboBoxModel; import javax.swing.SwingUtilities; /** * Panel that contains the conversion options. * @author Daniel Gomez Blanco * @version 1.1 */ public class ConvertPanel extends javax.swing.JPanel { /** * Class constructor. */ public ConvertPanel() { initComponents(); } /** * Returns the selected input operating system. * @return Input operating system. */ public String getInputOS() { return (String) inputOS.getItemAt(inputOS.getSelectedIndex()); } /** * Returns the selected input program. * @return Input program. */ public String getInputProgram() { return (String) inputProgram.getItemAt(inputProgram.getSelectedIndex()); } /** * Returns the selected input format. * @return Input format. */ public String getInputFormat() { return (String) inputFormat.getItemAt(inputFormat.getSelectedIndex()); } /** * Returns the state of the autodetection option. * @return Autodetection checked or not. */ public boolean getInputAutodetect() { return inputAutodetect.isSelected(); } /** * Returns the state of the collapse option. * @return Collapse checked or not. */ public boolean getCollapse() { return collapse.isSelected(); } /** * Returns the limit to collapse. * @return Limit to collapse. */ public int getCollapseLimit() { return ((Integer) collapseLimit.getModel().getValue()).intValue(); } /** * Returns the state of treat gaps as missing data. * @return Treat gaps as missing data checked or not. */ public boolean getCollapseGaps() { return collapseGaps.isSelected(); } /** * Returns the state of count missing data as differences. * @return Count missing data as differences checked or not. */ public boolean getCollapseMissing() { return collapseMissing.isSelected(); } /** * Returns the selected output operating system. * @return Selected output operating system. */ public String getOutputOS() { return (String) outputOS.getItemAt(outputOS.getSelectedIndex()); } /** * Returns the selected output program. * @return Selected output program. */ public String getOutputProgram() { return (String) outputProgram.getItemAt(outputProgram.getSelectedIndex()); } /** * Returns the selected output format. * @return Selected output format. */ public String getOutputFormat() { return (String) outputFormat.getItemAt(outputFormat.getSelectedIndex()); } /** * Returns the state of lowercase output. * @return Lowercase output checked or not. */ public boolean getOutputLowerCase() { return outputLowerCase.isSelected(); } /** * Returns the state of output residue numbers. * @return Output residue numbers checked or not. */ public boolean getOutputResidueNumbers() { return outputResidueNumbers.isSelected(); } /** * Returns the state of sequential output. * @return Sequential output checked or not. */ public boolean getOutputSequential() { return outputSequential.isSelected(); } /** * Returns the state of output match characters. * @return Output match characters checked or not. */ public boolean getOutputMatch() { return outputMatch.isSelected(); } /** Method called in the constructor to initialize components. * This method was created by Netbeans IDE and it's not meant to be modified. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { inputPanel = new javax.swing.JPanel(); inputOS = new javax.swing.JComboBox(); inputOSLabel = new javax.swing.JLabel(); inputProgramLabel = new javax.swing.JLabel(); inputProgram = new javax.swing.JComboBox(); inputFormatLabel = new javax.swing.JLabel(); inputFormat = new javax.swing.JComboBox(); inputAutodetect = new javax.swing.JCheckBox(); outputPanel = new javax.swing.JPanel(); outputProgramLabel = new javax.swing.JLabel(); outputProgram = new javax.swing.JComboBox(); outputFormatLabel = new javax.swing.JLabel(); outputFormat = new javax.swing.JComboBox(); outputLowerCase = new javax.swing.JCheckBox(); outputResidueNumbers = new javax.swing.JCheckBox(); outputOSLabel = new javax.swing.JLabel(); outputOS = new javax.swing.JComboBox(); outputSequential = new javax.swing.JCheckBox(); outputMatch = new javax.swing.JCheckBox(); collapsePanel = new javax.swing.JPanel(); collapse = new javax.swing.JCheckBox(); collapseGaps = new javax.swing.JCheckBox(); collapseLimit = new javax.swing.JSpinner(); collapseLimitLabel = new javax.swing.JLabel(); collapseMissing = new javax.swing.JCheckBox(); setName("Convert MSA"); // NOI18N inputPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Input")); inputOS.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Linux", "MacOS", "Windows" })); inputOS.setEnabled(false); inputOSLabel.setText("OS"); inputOSLabel.setEnabled(false); inputProgramLabel.setText("Program"); inputProgramLabel.setEnabled(false); inputProgram.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Clustal", "MAFFT", "MUSCLE", "PROBCONS", "TCoffee" })); inputProgram.setEnabled(false); inputProgram.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { inputProgramActionPerformed(evt); } }); inputFormatLabel.setText("Format"); inputFormatLabel.setEnabled(false); inputFormat.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ALN", "FASTA", "GDE", "MSF", "NEXUS", "PHYLIP", "PIR" })); inputFormat.setEnabled(false); inputAutodetect.setSelected(true); inputAutodetect.setText("Autodetect"); inputAutodetect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { inputAutodetectActionPerformed(evt); } }); javax.swing.GroupLayout inputPanelLayout = new javax.swing.GroupLayout(inputPanel); inputPanel.setLayout(inputPanelLayout); inputPanelLayout.setHorizontalGroup( inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(inputPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(inputPanelLayout.createSequentialGroup() .addComponent(inputOSLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(inputOS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(inputProgramLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(inputProgram, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(inputFormatLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(inputFormat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(inputAutodetect)) .addContainerGap(29, Short.MAX_VALUE)) ); inputPanelLayout.setVerticalGroup( inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(inputPanelLayout.createSequentialGroup() .addGroup(inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(inputOSLabel) .addComponent(inputOS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(inputProgramLabel) .addComponent(inputProgram, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(inputFormatLabel) .addComponent(inputFormat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE) .addComponent(inputAutodetect)) ); outputPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Output")); outputProgramLabel.setText("Program"); outputProgram.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "GENERAL", "Clustal", "MAFFT", "MUSCLE", "PROBCONS", "TCoffee", "BioEdit", "Se-Al", "Gblocks", "trimAl", "jModelTest", "ProtTest", "MEGA", "Mesquite", "MrBayes", "PAML", "PAUP", "PhyML", "RAxML", "SeaView", "SplitsTree", "TCS", "dnaSP", "CodABC" })); outputProgram.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { outputProgramActionPerformed(evt); } }); outputFormatLabel.setText("Format"); outputFormat.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ALN", "FASTA", "GDE", "MEGA", "MSF", "NEXUS", "PHYLIP", "PIR" })); outputFormat.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { outputFormatActionPerformed(evt); } }); outputLowerCase.setText("Lower case"); outputResidueNumbers.setText("Residue numbers"); outputOSLabel.setText("OS"); outputOS.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Linux", "MacOS", "Windows" })); outputSequential.setText("Sequential"); outputSequential.setEnabled(false); outputMatch.setText("Match first"); javax.swing.GroupLayout outputPanelLayout = new javax.swing.GroupLayout(outputPanel); outputPanel.setLayout(outputPanelLayout); outputPanelLayout.setHorizontalGroup( outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(outputPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(outputPanelLayout.createSequentialGroup() .addComponent(outputOSLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(outputOS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(outputProgramLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(outputProgram, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(outputFormatLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(outputFormat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(outputPanelLayout.createSequentialGroup() .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(outputResidueNumbers) .addComponent(outputLowerCase)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(outputMatch) .addComponent(outputSequential)))) .addContainerGap(28, Short.MAX_VALUE)) ); outputPanelLayout.setVerticalGroup( outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(outputPanelLayout.createSequentialGroup() .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(outputOSLabel) .addComponent(outputOS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(outputProgramLabel) .addComponent(outputProgram, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(outputFormatLabel) .addComponent(outputFormat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(outputLowerCase) .addComponent(outputMatch)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(outputResidueNumbers) .addComponent(outputSequential))) ); collapsePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Collapse")); collapse.setText("Collapse sequences to haplotypes"); collapse.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { collapseActionPerformed(evt); } }); collapseGaps.setText("Treat gaps as missing data"); collapseGaps.setEnabled(false); collapseLimit.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1))); collapseLimit.setEnabled(false); collapseLimitLabel.setText("Limit"); collapseLimitLabel.setEnabled(false); collapseMissing.setSelected(true); collapseMissing.setText("Count missing data as differences"); collapseMissing.setEnabled(false); javax.swing.GroupLayout collapsePanelLayout = new javax.swing.GroupLayout(collapsePanel); collapsePanel.setLayout(collapsePanelLayout); collapsePanelLayout.setHorizontalGroup( collapsePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(collapsePanelLayout.createSequentialGroup() .addContainerGap() .addGroup(collapsePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(collapsePanelLayout.createSequentialGroup() .addComponent(collapse) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(collapseLimitLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(collapseLimit, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE) .addGap(93, 93, 93)) .addGroup(collapsePanelLayout.createSequentialGroup() .addComponent(collapseGaps) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(collapseMissing))) .addContainerGap()) ); collapsePanelLayout.setVerticalGroup( collapsePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(collapsePanelLayout.createSequentialGroup() .addGroup(collapsePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(collapse) .addComponent(collapseLimitLabel) .addComponent(collapseLimit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(collapsePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(collapseGaps) .addComponent(collapseMissing))) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(inputPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(outputPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(collapsePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(inputPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(collapsePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(outputPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); }// //GEN-END:initComponents /** * Updates the supported output formats depending on the selected output program. * @param evt Event generated when selecting an output program. */ private void outputProgramActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_outputProgramActionPerformed {//GEN-HEADEREND:event_outputProgramActionPerformed SwingUtilities.invokeLater(new Runnable() { public void run() { String program = (String) outputProgram.getItemAt(outputProgram.getSelectedIndex()); if (program.equals("GENERAL")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN", "FASTA", "GDE", "MEGA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("jModelTest")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MrBayes")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "NEXUS" })); else if (program.equals("PAML")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "NEXUS", "PHYLIP" })); else if (program.equals("PAUP")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "MEGA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("PhyML")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "PHYLIP" })); else if (program.equals("ProtTest")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "NEXUS","PHYLIP" })); else if (program.equals("RAxML")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "PHYLIP" })); else if (program.equals("RAxML")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "NEXUS", "PHYLIP" })); else if (program.equals("TCS")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "NEXUS", "PHYLIP" })); else if (program.equals("CodABC")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "PHYLIP" })); else if (program.equals("BioEdit")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MEGA")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA", "MEGA","MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("dnaSP")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "FASTA", "MEGA","NEXUS", "PHYLIP", "PIR" })); else if (program.equals("Se-Al")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "FASTA","GDE","NEXUS","PHYLIP","PIR" })); else if (program.equals("Mesquite")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "NEXUS" })); else if (program.equals("SplitsTree")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA","NEXUS","PHYLIP" })); else if (program.equals("Clustal")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA","GDE","MSF","PIR" })); else if (program.equals("MAFFT")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "FASTA" })); else if (program.equals("MUSCLE")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "FASTA" })); else if (program.equals("PROBCONS")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "FASTA" })); else if (program.equals("TCoffee")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA","MSF","PIR" })); else if (program.equals("Gblocks")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "FASTA","PIR" })); else if (program.equals("SeaView")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA","MSF","NEXUS","PHYLIP" })); else if (program.equals("trimAl")) outputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN","FASTA","MEGA","NEXUS","PHYLIP","PIR" })); } }); outputFormatActionPerformed(evt); }//GEN-LAST:event_outputProgramActionPerformed /** * Updates the supported output options depending on the selected output program and format. * @param evt Event generated when selecting an output format. */ private void outputFormatActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_outputFormatActionPerformed {//GEN-HEADEREND:event_outputFormatActionPerformed SwingUtilities.invokeLater(new Runnable() { public void run() { String format = (String) outputFormat.getItemAt(outputFormat.getSelectedIndex()); String program = (String) outputProgram.getItemAt(outputProgram.getSelectedIndex()); //Checkbox for residueNumbers if (format.equals("ALN")) { outputResidueNumbers.setEnabled(true); } else { outputResidueNumbers.setSelected(false); outputResidueNumbers.setEnabled(false); } //Checkbox for sequential if (format.equals("PHYLIP")) { if (program.equals("TCS")) { outputSequential.setSelected(true); outputSequential.setEnabled(false); } else if (program.equals("CodABC")) { outputSequential.setSelected(true); outputSequential.setEnabled(false); } else if (program.equals("SeaView")) { outputSequential.setSelected(false); outputSequential.setEnabled(false); } else { outputSequential.setEnabled(true); } } else if (format.equals("NEXUS")) { if (program.equals("PAML") || program.equals("ProtTest") || program.equals("TCS")) { outputSequential.setSelected(true); outputSequential.setEnabled(false); } else if (program.equals("MEGA") || program.equals("trimAl")) { outputSequential.setSelected(false); outputSequential.setEnabled(false); } else { outputSequential.setEnabled(true); } } else { outputSequential.setSelected(false); outputSequential.setEnabled(false); } //Checkbox for match if (format.equals("MSF") || program.equals("MrBayes") || program.equals("SplitsTree") || program.equals("Clustal") || program.equals("MAFFT") || program.equals("Gblocks") || (program.equals("dnaSP") && format.equals("NEXUS"))) { outputMatch.setSelected(false); outputMatch.setEnabled(false); } else { outputMatch.setEnabled(true); } } }); }//GEN-LAST:event_outputFormatActionPerformed /** * Disables input options in case autodetection is checked. Enables them in other case. * @param evt Event generated when checking or unchecking autodetection. */ private void inputAutodetectActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_inputAutodetectActionPerformed {//GEN-HEADEREND:event_inputAutodetectActionPerformed SwingUtilities.invokeLater(new Runnable() { public void run() { if (inputAutodetect.isSelected()) { inputOSLabel.setEnabled(false); inputOS.setEnabled(false); inputProgramLabel.setEnabled(false); inputProgram.setEnabled(false); inputFormatLabel.setEnabled(false); inputFormat.setEnabled(false); } else { inputOSLabel.setEnabled(true); inputOS.setEnabled(true); inputProgramLabel.setEnabled(true); inputProgram.setEnabled(true); inputFormatLabel.setEnabled(true); inputFormat.setEnabled(true); } } }); }//GEN-LAST:event_inputAutodetectActionPerformed /** * Enables collapse options in case collapse is checked. Disables them in other case. * @param evt Event generated when checking or unchecking the collapse option. */ private void collapseActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_collapseActionPerformed {//GEN-HEADEREND:event_collapseActionPerformed SwingUtilities.invokeLater(new Runnable() { public void run() { if (collapse.isSelected()) { collapseLimitLabel.setEnabled(true); collapseLimit.setEnabled(true); collapseGaps.setEnabled(true); collapseMissing.setEnabled(true); } else { collapseLimitLabel.setEnabled(false); collapseLimit.setEnabled(false); collapseGaps.setEnabled(false); collapseMissing.setEnabled(false); } } }); }//GEN-LAST:event_collapseActionPerformed /** * Updates the supported input formats when selecting an input program. * @param evt Event generated when selecting an input program. */ private void inputProgramActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_inputProgramActionPerformed SwingUtilities.invokeLater(new Runnable() { public void run() { String program = (String) inputProgram.getItemAt(inputProgram.getSelectedIndex()); if (program.equals("Clustal")) inputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN", "FASTA", "GDE", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MAFFT")) inputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN", "FASTA" })); else if (program.equals("MUSCLE")) inputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN", "FASTA", "MSF", "PHYLIP" })); else if (program.equals("PROBCONS")) inputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN", "FASTA" })); else if (program.equals("TCoffee")) inputFormat.setModel(new DefaultComboBoxModel(new String[] { "ALN", "FASTA", "MSF", "PHYLIP", "PIR" })); } }); }//GEN-LAST:event_inputProgramActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox collapse; private javax.swing.JCheckBox collapseGaps; private javax.swing.JSpinner collapseLimit; private javax.swing.JLabel collapseLimitLabel; private javax.swing.JCheckBox collapseMissing; private javax.swing.JPanel collapsePanel; private javax.swing.JCheckBox inputAutodetect; private javax.swing.JComboBox inputFormat; private javax.swing.JLabel inputFormatLabel; private javax.swing.JComboBox inputOS; private javax.swing.JLabel inputOSLabel; private javax.swing.JPanel inputPanel; private javax.swing.JComboBox inputProgram; private javax.swing.JLabel inputProgramLabel; private javax.swing.JComboBox outputFormat; private javax.swing.JLabel outputFormatLabel; private javax.swing.JCheckBox outputLowerCase; private javax.swing.JCheckBox outputMatch; private javax.swing.JComboBox outputOS; private javax.swing.JLabel outputOSLabel; private javax.swing.JPanel outputPanel; private javax.swing.JComboBox outputProgram; private javax.swing.JLabel outputProgramLabel; private javax.swing.JCheckBox outputResidueNumbers; private javax.swing.JCheckBox outputSequential; // End of variables declaration//GEN-END:variables } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/gui/GUILogHandler.java000077500000000000000000000052201300536243200271140ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.gui; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; import javax.swing.JTextArea; import javax.swing.SwingUtilities; /** * Implements a handler for logging messages, printing them in a JTextArea * @author Daniel Gomez Blanco * @version 1.0 */ public class GUILogHandler extends Handler { /** * JTextArea where messages will be printed. */ private JTextArea log; /** * Class constructor. * @param log JTextArea where messages will be printed. */ public GUILogHandler(JTextArea log) { this.log = log; } /** * Prints messages in the JTextArea * @param record Message to print. */ @Override public void publish(final LogRecord record) { if (record.getLevel() == Level.INFO) SwingUtilities.invokeLater(new Runnable() { public void run() { log.append(" : " + record.getMessage().replace("\n", "\n\t") + "\n"); } }); else if (record.getLevel() == Level.WARNING) SwingUtilities.invokeLater(new Runnable() { public void run() { log.append(" : " + record.getMessage().replace("\n", "\n\t") + "\n"); } }); else SwingUtilities.invokeLater(new Runnable() { public void run() { log.append(": " + record.getMessage().replace("\n", "\n\t") + "\n"); } }); } /** * No implemented behaviour. */ @Override public void flush() {} /** * No implemented behaviour. * @throws SecurityException If a Security Manager exists and the calling object does not have permission. */ @Override public void close() throws SecurityException { } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/gui/HelpPanel.java000077500000000000000000000231031300536243200264000ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.gui; import es.uvigo.ei.sing.alter.util.AlterProperties; import javax.swing.SwingUtilities; /** * Help panel. * @author Daniel Gomez Blanco * @version 1.0 */ public class HelpPanel extends javax.swing.JPanel { /** Creates new form HelpPanel */ public HelpPanel() { initComponents(); } public void scrollUp() { SwingUtilities.invokeLater(new Runnable() { public void run() { scrollPane.getVerticalScrollBar().setValue(0); } }); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { scrollPane = new javax.swing.JScrollPane(); textPane = new javax.swing.JTextPane(); textPane.setContentType("text/html"); textPane.setEditable(false); textPane.setText("\r\n \r\n\r\n \r\n \r\n

\n\tALTER (ALignment " + "Transformation EnviRonment) "+ AlterProperties.getInstance().getProperty("project.version") +"

\n

\n\tThe following " + "document provides " + "information on " + "how to use the desktop version of ALTER, an evironment for alignment transformation. ALTER aims to solve the existing problem with different formats and different programs for multiple sequences alignments. It converts multiple sequences alignments between known formats so they can be processed by a set phylogenetic analyzers.

\n

\n\t 

\n

\n\tLoad sequences into ALTER

\n

\n\tLoading sequences into the application can be achieved by following one of these two simple steps:

\n
    \n\t
  • \n\t\tClicking on the "Load..." button (or pressing CTRL + L) will display a file chooser. Select a file containing a multiple sequences alignment in one of the supported formats (scroll down for an explanation of the supported formats) and its sequences will be loaded into the input text area.
  • \n\t
  • \n\t\tSequences can also be pasted into the input text area.
  • \n
\n
\n

\n\tSave input file

\n

\n\tSaving the input file will copy the sequences contained in the input text area to a file in the system. There are two options in this step:

\n
    \n\t
  • \n\t\tBy clicking on the "Save..." button belonging to the input area (or by pressing CTRL  + I) the file used to load the sequences into ALTER will be overwritten with the text contained in the input text area. If no file was used to load the sequences, and the sequences have not been saved before, the action taken would be the same as using the "Save As..." button.
  • \n\t
  • \n\t\tBy clicking on the "Save As..." button belonging to the input area a file selector will be displayed. After selecting a name (or a file to overwrite) in the file system, the content of the input text area will be written to the selected file.
  • \n
\n

\n\t 

\n

\n\tSave output file

\n

\n\tSaving the output file will copy the sequences contained in the output text area to a file in the system. There are two options in this step:

\n
    \n\t
  • \n\t\tBy clicking on the "Save..." button belonging to the output area (or by pressing CTRL  + O) the file previously used to save the converted sequences will be overwritten with the text contained in the output text area. If the converted sequences have not been saved before, the action taken would be the same as using the "Save As..." button.
  • \n\t
  • \n\t\tBy clicking on the "Save As..." button belonging to the output area a file selector will be displayed. After selecting a name (or a file to overwrite) in the file system, the content of the output text area will be written to the selected file.
  • \n
\n

\n\t 

\n

\n\tSave all files

\n

\n\tBy clicking on "File->Save All" button (or pressing CTRL + A) both the input and the output files will be overwritten with the sequences contained in the text areas. If a file was not used for either input or output a file chooser will be displayed to select the file.

\n\n
\n
\n
\n

\n\tConvert sequences

\n

\n\tIn order to convert the sequences loaded into one of the supported formats the "Convert..." button must be clicked. Once this button is clicked, a dialog will be displayed to select the options for conversion. These options are now explained:

\n
    \n\t
  • \n\t\tInput: Options for the input sequences\n\t\t
      \n\t\t\t
    • \n\t\t\t\tOS: Operating system used to create the input file (Linux, MacOS and Windows are supported).
    • \n\t\t\t
    • \n\t\t\t\tProgram: The program used to create the input file (Clustal, MAFFT and TCoffee are supported).
    • \n\t\t\t
    • \n\t\t\t\tFormat: The format in which the input file is (ALN, FASTA, GDE, MSF, NEXUS, PHYLIP and PIR are supported). Some restrictions can apply here due to the formats supported by the input programs.
    • \n\t\t\t
    • \n\t\t\t\tAutodetect: By selecting this option the input format will be detected automatically.
    • \n\t\t
    \n\t
  • \n\t
  • \n\t\tCollapse: Options for haplotype collapse (removing of redundant sequences)\n\t\t
      \n\t\t\t
    • \n\t\t\t\tCollapse sequences to haplotypes: This option enables the haplotype collapse feature. When checked, it activates the rest of the options to handle this process.
    • \n\t\t\t
    • \n\t\t\t\tLimit: Sets the limit to collapse the sequences. Only sequences differing in the same or less residues than the limit will be collapsed.
    • \n\t\t\t
    • \n\t\t\t\tTreat gaps as missing data: Gaps are treated as a fifth state by default. This option makes the collapse feature treat gaps as missing data.
    • \n\t\t\t
    • \n\t\t\t\tCount missing data as differences: Missing data can be ommited from the process is this option is not checked.
    • \n\t\t
    \n\t
  • \n\t
  • \n\t\tOutput: Options for the output sequences\n\t\t
      \n\t\t\t
    • \n\t\t\t\tOS: Operating system used to processed the output file (Linux, MacOS and Windows are supported).
    • \n\t\t\t
    • \n\t\t\t\tProgram: The program used to process the output file (jModelTest, MrBayes, PAML, PAUP, PhyML, PortTest, RAxML, TCS and CodABC are supported). If "ANY" is selected the sequences will be converted to an standard format.
    • \n\t\t\t
    • \n\t\t\t\tFormat: The format in which the output file will be (ALN, FASTA, GDE, MSF, NEXUS, PHYLIP and PIR are supported). Some restrictions can apply here due to the formats supported by the input programs.
    • \n\t\t\t
    • \n\t\t\t\tLower case: Outputs the sequences using lower case characters.
    • \n\t\t\t
    • \n\t\t\t\tMatch encoding: Uses match characters (character “.”) to indicate that the same residue is located in the same position of the first sequence. This option is not available for MSF format since it prints gaps as “.” characters.
    • \n\t\t\t
    • \n\t\t\t\tResidue numbers: Outputs the sum of the number of residues to that point next to each line of each sequence. This option is only available for ALN format.
    • \n\t\t\t
    • \n\t\t\t\tSequential: Outputs the sequences in sequential format. This option is only available for NEXUS and PHYLIP formats.
    • \n\t\t
    \n\t
  • \n
\n

\n\tThank you for using ALTER, we hope you enjoy it!

\n\n \r\n\r\n"); scrollPane.setViewportView(textPane); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(scrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 594, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(scrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 484, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }//
//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JScrollPane scrollPane; private javax.swing.JTextPane textPane; // End of variables declaration//GEN-END:variables } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/gui/MainFrame.java000077500000000000000000001232561300536243200264010ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.gui; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.GraphicsEnvironment; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.AbstractAction; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.TitledBorder; import javax.swing.text.BadLocationException; import es.uvigo.ei.sing.alter.converter.*; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.util.AlterProperties; import java.util.logging.Level; import java.util.logging.Logger; /** * Implements the main form to execute ALTER as a GUI application. * @author Daniel Gomez Blanco * @version 1.1 */ public class MainFrame extends javax.swing.JFrame { /** * Logger to register information messages. */ private Logger logger; /** * Input file. */ private File inputFile = null; /** * Output file. */ private File outputFile = null; /** * Current input folder. */ private File inputCurDir = null; /** * Current output folder. */ private File outputCurDir = null; /** * Java Action to display the application information. */ private AboutAction aboutAction; /** * Java Action to display the application help. */ private HelpAction helpAction; /** * Java Action to load a MSA from a file. */ private LoadMsaAction loadMsaAction; /** * Java Action to save the input MSA in the selected input file. */ private SaveInputAction saveInputAction; /** * Java Action to save the input MSA in a file after selecting it. */ private SaveInputAsAction saveInputAsAction; /** * Java Action to save the output MSA in the selected output file. */ private SaveOutputAction saveOutputAction; /** * Java Action to save the output MSA in a file after selecting it. */ private SaveOutputAsAction saveOutputAsAction; /** * Java Action to save both MSAs in their respective files. */ private SaveAllAction saveAllAction; /** * Java Action to convert the input MSA. */ private ConvertAction convertAction; /** * Java Action to exit the application asking for confirmation. */ private ExitAction exitAction; /** * Panel with the conversion options. */ ConvertPanel convertPanel; /** * Class constructor. */ public MainFrame() { //Try changing Look-And-Feel to Nimbus (do nothing in case is not installed) try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (UnsupportedLookAndFeelException e) { // handle exception } catch (ClassNotFoundException e) { // handle exception } catch (InstantiationException e) { // handle exception } catch (IllegalAccessException e) { // handle exception } //Initialize the convert panel convertPanel = new ConvertPanel(); //Initialize Java Actions aboutAction = new AboutAction("About", null, "Information about ALTER", KeyEvent.VK_A); helpAction = new HelpAction("Help Contents", null, "", KeyEvent.VK_C); loadMsaAction = new LoadMsaAction("Load...", null, "Load a new input MSA", KeyEvent.VK_L); saveInputAction = new SaveInputAction("Save", null, "Save input MSA", KeyEvent.VK_S); saveInputAsAction = new SaveInputAsAction("Save As...", null, "Save input MSA as...", KeyEvent.VK_I); saveOutputAction = new SaveOutputAction("Save", null, "Save output MSA", KeyEvent.VK_V); saveOutputAsAction = new SaveOutputAsAction("Save As...", null, "Save output MSA as...", KeyEvent.VK_O); saveAllAction = new SaveAllAction("Save All", null, "Save both input and output MSAs", KeyEvent.VK_A); convertAction = new ConvertAction("Convert...", null, "Convert MSA", KeyEvent.VK_C); exitAction = new ExitAction("Exit", null, "Exit ALTER", KeyEvent.VK_E); //Initialize components initComponents(); //Assing Java Actions to components about.setAction(aboutAction); helpContents.setAction(helpAction); loadMsaButton.setAction(loadMsaAction); loadMsaMenu.setAction(loadMsaAction); loadMsaMenu.setText("Load Input MSA..."); loadMsaMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK)); saveInputMenu.setAction(saveInputAction); saveInputMenu.setText("Save Input MSA"); saveInputMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK)); saveInputButton.setAction(saveInputAction); saveInputAsMenu.setAction(saveInputAsAction); saveInputAsMenu.setText("Save Input MSA As..."); saveInputAsButton.setAction(saveInputAsAction); saveOutputMenu.setAction(saveOutputAction); saveOutputMenu.setText("Save Output MSA"); saveOutputMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); saveOutputButton.setAction(saveOutputAction); saveOutputAsMenu.setAction(saveOutputAsAction); saveOutputAsMenu.setText("Save Output MSA As..."); saveOutputAsButton.setAction(saveOutputAsAction); saveAllMenu.setAction(saveAllAction); saveAllMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK)); convertMenu.setAction(convertAction); convertMenu.setText("Convert MSA..."); convertMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK)); convertButton.setAction(convertAction); exitMenu.setAction(exitAction); //Maximize window GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); this.setMaximizedBounds(env.getMaximumWindowBounds ()); this.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH); //Initialize logger logger = Logger.getLogger("alter" + System.currentTimeMillis()); //Add logger handler logger.addHandler(new GUILogHandler(log)); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { inputPanel = new javax.swing.JPanel(); inputScroll = new javax.swing.JScrollPane(); input = new javax.swing.JTextArea(); loadMsaButton = new javax.swing.JButton(); saveInputButton = new javax.swing.JButton(); convertButton = new javax.swing.JButton(); inputPosition = new javax.swing.JLabel(); saveInputAsButton = new javax.swing.JButton(); outputPanel = new javax.swing.JPanel(); saveOutputButton = new javax.swing.JButton(); outputScroll = new javax.swing.JScrollPane(); output = new javax.swing.JTextArea(); outputPosition = new javax.swing.JLabel(); saveOutputAsButton = new javax.swing.JButton(); logPanel = new javax.swing.JPanel(); logScroll = new javax.swing.JScrollPane(); log = new javax.swing.JTextArea(); menu = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); loadMsaMenu = new javax.swing.JMenuItem(); separator1 = new javax.swing.JSeparator(); convertMenu = new javax.swing.JMenuItem(); separator2 = new javax.swing.JSeparator(); saveInputMenu = new javax.swing.JMenuItem(); saveInputAsMenu = new javax.swing.JMenuItem(); saveOutputMenu = new javax.swing.JMenuItem(); saveOutputAsMenu = new javax.swing.JMenuItem(); saveAllMenu = new javax.swing.JMenuItem(); separator3 = new javax.swing.JSeparator(); exitMenu = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); helpContents = new javax.swing.JMenuItem(); about = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); setTitle("ALTER (ALignment Transformation EnviRonment) v"+ AlterProperties.getInstance().getProperty ("project.version")); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); setLocationByPlatform(true); setName("mainFrame"); // NOI18N addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); inputPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Input")); input.setColumns(2147483647); input.setFont(new java.awt.Font("Lucida Console", 0, 11)); input.setRows(5); input.addCaretListener(new javax.swing.event.CaretListener() { public void caretUpdate(javax.swing.event.CaretEvent evt) { inputCaretUpdate(evt); } }); inputScroll.setViewportView(input); loadMsaButton.setText("Load..."); saveInputButton.setText("Save"); convertButton.setText("Convert..."); inputPosition.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); inputPosition.setText("Ln: 1 Col: 1"); saveInputAsButton.setText("Save As..."); javax.swing.GroupLayout inputPanelLayout = new javax.swing.GroupLayout(inputPanel); inputPanel.setLayout(inputPanelLayout); inputPanelLayout.setHorizontalGroup( inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(inputPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(inputScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 410, Short.MAX_VALUE) .addGroup(inputPanelLayout.createSequentialGroup() .addComponent(loadMsaButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(saveInputButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(saveInputAsButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(convertButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(inputPosition, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE)))) ); inputPanelLayout.setVerticalGroup( inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, inputPanelLayout.createSequentialGroup() .addComponent(inputScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 418, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(inputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(loadMsaButton) .addComponent(saveInputButton) .addComponent(inputPosition) .addComponent(saveInputAsButton) .addComponent(convertButton))) ); outputPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Output")); saveOutputButton.setText("Save"); output.setColumns(2147483647); output.setFont(new java.awt.Font("Lucida Console", 0, 11)); output.setRows(5); output.setEnabled(false); output.addCaretListener(new javax.swing.event.CaretListener() { public void caretUpdate(javax.swing.event.CaretEvent evt) { outputCaretUpdate(evt); } }); outputScroll.setViewportView(output); outputPosition.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); outputPosition.setText("Ln: 0 Col:0"); outputPosition.setEnabled(false); saveOutputAsButton.setText("Save As..."); javax.swing.GroupLayout outputPanelLayout = new javax.swing.GroupLayout(outputPanel); outputPanel.setLayout(outputPanelLayout); outputPanelLayout.setHorizontalGroup( outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(outputPanelLayout.createSequentialGroup() .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(outputPanelLayout.createSequentialGroup() .addComponent(saveOutputButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(saveOutputAsButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(outputPosition, javax.swing.GroupLayout.DEFAULT_SIZE, 260, Short.MAX_VALUE)) .addComponent(outputScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 410, Short.MAX_VALUE)) .addContainerGap()) ); outputPanelLayout.setVerticalGroup( outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, outputPanelLayout.createSequentialGroup() .addComponent(outputScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 418, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(saveOutputButton) .addComponent(saveOutputAsButton)) .addComponent(outputPosition))) ); logPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Log")); log.setColumns(2147483647); log.setEditable(false); log.setFont(new java.awt.Font("Lucida Console", 0, 11)); log.setRows(5); logScroll.setViewportView(log); javax.swing.GroupLayout logPanelLayout = new javax.swing.GroupLayout(logPanel); logPanel.setLayout(logPanelLayout); logPanelLayout.setHorizontalGroup( logPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(logScroll, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 858, Short.MAX_VALUE) ); logPanelLayout.setVerticalGroup( logPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(logScroll, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) ); fileMenu.setText("File"); loadMsaMenu.setText("Load Input MSA..."); fileMenu.add(loadMsaMenu); fileMenu.add(separator1); convertMenu.setText("Convert"); fileMenu.add(convertMenu); fileMenu.add(separator2); saveInputMenu.setText("Save Input MSA"); fileMenu.add(saveInputMenu); saveInputAsMenu.setText("Save Input MSA As..."); fileMenu.add(saveInputAsMenu); saveOutputMenu.setText("Save Output MSA"); fileMenu.add(saveOutputMenu); saveOutputAsMenu.setText("Save Output MSA As..."); fileMenu.add(saveOutputAsMenu); saveAllMenu.setText("Save Both"); fileMenu.add(saveAllMenu); fileMenu.add(separator3); exitMenu.setText("Exit"); fileMenu.add(exitMenu); menu.add(fileMenu); helpMenu.setText("Help"); helpContents.setText("Help Contents"); helpMenu.add(helpContents); about.setAction(new AboutAction("About...", null, "Information about Corpus Administrator", null)); about.setText("About"); helpMenu.add(about); menu.add(helpMenu); setJMenuBar(menu); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(inputPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(outputPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(logPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(inputPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(outputPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(logPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// //GEN-END:initComponents /** * Calls exitAction.actionPerformed(null) to ask for confirmation before exiting the application. * @param evt Event generated when closing the window. */ private void formWindowClosing(java.awt.event.WindowEvent evt)//GEN-FIRST:event_formWindowClosing {//GEN-HEADEREND:event_formWindowClosing exitAction.actionPerformed(null); }//GEN-LAST:event_formWindowClosing /** * Updates line and column numbers when the input caret position changes. * @param evt Event generated when the caret position changes. */ private void inputCaretUpdate(javax.swing.event.CaretEvent evt)//GEN-FIRST:event_inputCaretUpdate {//GEN-HEADEREND:event_inputCaretUpdate try { int caretPos = input.getCaretPosition(); int line = input.getLineOfOffset(caretPos); int column = caretPos - input.getLineStartOffset(line); line += 1; column += 1; inputPosition.setText("Ln: " + line + " Col: " + column); } catch (BadLocationException ex) {} }//GEN-LAST:event_inputCaretUpdate /** * Updates line and column numbers when the output caret position changes. * @param evt Event generated when the caret position changes. */ private void outputCaretUpdate(javax.swing.event.CaretEvent evt)//GEN-FIRST:event_outputCaretUpdate {//GEN-HEADEREND:event_outputCaretUpdate try { int caretPos = output.getCaretPosition(); int line = output.getLineOfOffset(caretPos); int column = caretPos - output.getLineStartOffset(line); line += 1; column += 1; outputPosition.setText("Ln: " + line + " Col: " + column); } catch (BadLocationException ex) {} }//GEN-LAST:event_outputCaretUpdate /** * Main method that creates and shows the form * @param args Command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { MainFrame frame = new MainFrame(); frame.setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenuItem about; private javax.swing.JButton convertButton; private javax.swing.JMenuItem convertMenu; private javax.swing.JMenuItem exitMenu; private javax.swing.JMenu fileMenu; private javax.swing.JMenuItem helpContents; private javax.swing.JMenu helpMenu; private javax.swing.JTextArea input; private javax.swing.JPanel inputPanel; private javax.swing.JLabel inputPosition; private javax.swing.JScrollPane inputScroll; private javax.swing.JButton loadMsaButton; private javax.swing.JMenuItem loadMsaMenu; private javax.swing.JTextArea log; private javax.swing.JPanel logPanel; private javax.swing.JScrollPane logScroll; private javax.swing.JMenuBar menu; private javax.swing.JTextArea output; private javax.swing.JPanel outputPanel; private javax.swing.JLabel outputPosition; private javax.swing.JScrollPane outputScroll; private javax.swing.JMenuItem saveAllMenu; private javax.swing.JButton saveInputAsButton; private javax.swing.JMenuItem saveInputAsMenu; private javax.swing.JButton saveInputButton; private javax.swing.JMenuItem saveInputMenu; private javax.swing.JButton saveOutputAsButton; private javax.swing.JMenuItem saveOutputAsMenu; private javax.swing.JButton saveOutputButton; private javax.swing.JMenuItem saveOutputMenu; private javax.swing.JSeparator separator1; private javax.swing.JSeparator separator2; private javax.swing.JSeparator separator3; // End of variables declaration//GEN-END:variables /** * Java Action to show the application information. */ private class AboutAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public AboutAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); } /**Implements action. *@param e Event that triggers the action. */ public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(new JFrame(), "ALTER (ALlignment Transformation EnviRonment)\n" + "Developed by Daniel Gomez Blanco\n\n" + "Email: nanodgb@gmail.com\n", "About ALTER", JOptionPane.PLAIN_MESSAGE); } } /** * Java Action to show the application help. */ private class HelpAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public HelpAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); } /**Implements action. *@param e Event that triggers the action. */ public void actionPerformed(ActionEvent e) { JFrame help = new JFrame("ALTER Help"); help.setLocationByPlatform(true); HelpPanel helpPanel = new HelpPanel(); help.add(helpPanel); help.pack(); help.setVisible(true); helpPanel.scrollUp(); } } /** * Java Action to load a MSA from a file after selecting it. */ private class LoadMsaAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public LoadMsaAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); } /**Implements action. *@param e Event that triggers the action. */ public void actionPerformed(ActionEvent e) { //Create file chooser JFileChooser chooser = new JFileChooser(); //Only files are to be chosen chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setMultiSelectionEnabled(false); chooser.setDialogTitle("Load Input MSA"); chooser.setDialogType(JFileChooser.OPEN_DIALOG); if (inputCurDir != null) chooser.setCurrentDirectory(inputCurDir); //Display chooser int returnVal = chooser.showOpenDialog(new javax.swing.JFrame()); //If the user accepts if (returnVal == JFileChooser.APPROVE_OPTION) { //Get input file inputFile = chooser.getSelectedFile(); //Get input folder inputCurDir = inputFile.getParentFile(); //Copy file's contents to a string StringBuffer text = new StringBuffer(); try { BufferedReader br = new BufferedReader(new FileReader(inputFile)); String s; while ((s = br.readLine()) != null) text.append(s + "\r\n"); br.close(); } catch (FileNotFoundException ex) { logger.log(Level.SEVERE,"Input MSA file not found."); return; } catch (IOException ex) { logger.log(Level.SEVERE, "Failure reading input MSA file:\n" + ex.getMessage()); return; } //Update interface input.setText(text.toString()); SwingUtilities.invokeLater(new Runnable() { public void run() { ((TitledBorder) inputPanel.getBorder()).setTitle("Input - " + inputFile.getName()); inputPanel.repaint(); inputScroll.getVerticalScrollBar().setValue(0); inputScroll.getHorizontalScrollBar().setValue(0); } }); logger.log(Level.INFO, "MSA loaded from " + inputFile.getAbsolutePath() + "."); } } } /** * Java Action to save the input MSA into the selected file. */ private class SaveInputAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public SaveInputAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); } /**Implements action. *@param e Event that triggers the action. */ public void actionPerformed(ActionEvent e) { //If no file had been selected call saveInputAsAction if (inputFile == null) saveInputAsAction.actionPerformed(e); else { //Save text to file try { FileWriter fw = new FileWriter(inputFile); fw.write(input.getText()); fw.close(); } catch (IOException ex) { logger.log(Level.SEVERE, "Failure saving input MSA file:\n" + ex.getMessage()); return; } logger.log(Level.INFO, "Input MSA saved to " + inputFile.getAbsolutePath()); } } } /** * Java Action to save input MSA in a different file. */ private class SaveInputAsAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public SaveInputAsAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); } /**Implements action. *@param e Event that triggers the action. */ public void actionPerformed(ActionEvent e) { //Show file chooser JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setMultiSelectionEnabled(false); chooser.setDialogTitle("Save Input MSA As..."); chooser.setDialogType(JFileChooser.SAVE_DIALOG); int returnVal = chooser.showOpenDialog(new javax.swing.JFrame()); //If user accepts if (returnVal == JFileChooser.APPROVE_OPTION) { //Save file inputFile = chooser.getSelectedFile(); if (!inputFile.exists()) inputFile = new File(inputFile.getPath()); inputCurDir = inputFile.getParentFile(); try { FileWriter fw = new FileWriter(inputFile); fw.write(input.getText()); fw.close(); } catch (IOException ex) { logger.log(Level.SEVERE, "Failure saving input MSA file:\n" + ex.getMessage()); return; } SwingUtilities.invokeLater(new Runnable() { public void run() { ((TitledBorder) inputPanel.getBorder()).setTitle("Input - " + inputFile.getName()); inputPanel.repaint(); } }); logger.log(Level.INFO, "Input MSA saved to " + inputFile.getAbsolutePath()); } } } /** * Java Action to save the output MSA to the selected file. */ private class SaveOutputAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public SaveOutputAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Incializar la accion super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); this.setEnabled(false); } /**Implements action *@param e Event that triggers the action */ public void actionPerformed(ActionEvent e) { //If no file had been selected call saveOutputAsAction if (outputFile == null) saveOutputAsAction.actionPerformed(e); else { //Save file try { FileWriter fw = new FileWriter(outputFile); fw.write(output.getText()); fw.close(); } catch (IOException ex) { logger.log(Level.SEVERE, "Failure saving output MSA file:\n" + ex.getMessage()); return; } logger.log(Level.INFO, "Output MSA saved to " + outputFile.getAbsolutePath()); } } } /** * Java Action to save the output MSA to a different file. */ private class SaveOutputAsAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public SaveOutputAsAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); this.setEnabled(false); } /**Implements action. *@param e Event that triggers the action. */ public void actionPerformed(ActionEvent e) { //Show file chooser JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setMultiSelectionEnabled(false); chooser.setDialogTitle("Save Output MSA As..."); chooser.setDialogType(JFileChooser.SAVE_DIALOG); if (outputCurDir != null) chooser.setCurrentDirectory(outputCurDir); int returnVal = chooser.showOpenDialog(new javax.swing.JFrame()); //If user accepts if (returnVal == JFileChooser.APPROVE_OPTION) { //Save file outputFile = chooser.getSelectedFile(); if (!outputFile.exists()) outputFile = new File(outputFile.getPath()); outputCurDir = outputFile.getParentFile(); try { FileWriter fw = new FileWriter(outputFile); fw.write(output.getText()); fw.close(); } catch (IOException ex) { logger.log(Level.SEVERE, "Failure saving output MSA file:\n" + ex.getMessage()); return; } SwingUtilities.invokeLater(new Runnable() { public void run() { ((TitledBorder) outputPanel.getBorder()).setTitle("Output - " + outputFile.getName()); outputPanel.repaint(); } }); logger.log(Level.INFO,"Output MSA saved to " + outputFile.getAbsolutePath()); } } } /** * Java Action to save both input and output MSA to their respective files. */ private class SaveAllAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public SaveAllAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); this.setEnabled(false); } /**Implements action *@param e Event that triggers the action */ public void actionPerformed(ActionEvent e) { saveInputAction.actionPerformed(e); saveOutputAction.actionPerformed(e); } } /** * Java Action to convert the input MSA. */ private class ConvertAction extends AbstractAction { /**Class constructor. *@param text Text to display. *@param icon Action's icon. *@param desc Brief description. *@param mnemonic Keyboard shortcut. */ public ConvertAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); } /**Implements action *@param e Event that triggers the action */ public void actionPerformed(ActionEvent e) { //Show options panel int n = JOptionPane.showConfirmDialog(new JFrame(), convertPanel, "Convert MSA", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); //If user accepts if (n == JOptionPane.OK_OPTION) { //Get options String in = input.getText(); String inO = convertPanel.getInputOS(); String inP = convertPanel.getInputProgram(); String inF = convertPanel.getInputFormat(); boolean autodetect = convertPanel.getInputAutodetect(); boolean collapse = convertPanel.getCollapse(); boolean gaps = convertPanel.getCollapseGaps(); boolean missing = convertPanel.getCollapseMissing(); int limit = convertPanel.getCollapseLimit(); String out = ""; String outO = convertPanel.getOutputOS(); String outP = convertPanel.getOutputProgram(); String outF = convertPanel.getOutputFormat(); boolean lower = convertPanel.getOutputLowerCase(); boolean numbers = convertPanel.getOutputResidueNumbers(); boolean sequential = convertPanel.getOutputSequential(); boolean match = convertPanel.getOutputMatch(); //Get converter and convert MSA Factory factory = new DefaultFactory(); Converter converter; try { converter = factory.getConverter(inO, inP, inF, autodetect, collapse, gaps, missing, limit, outO, outP, outF, lower, numbers, sequential, match, logger.getName()); out = converter.convert(in); } catch (UnsupportedOperationException ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } catch (ParseException ex) { logger.log(Level.SEVERE, "Failure parsing input file: \n" + ex.getMessage()); return; } //Update interface output.setText(out); SwingUtilities.invokeLater(new Runnable() { public void run() { output.setEnabled(true); outputPosition.setEnabled(true); outputScroll.getVerticalScrollBar().setValue(0); outputScroll.getHorizontalScrollBar().setValue(0); saveOutputAsAction.setEnabled(true); saveOutputAction.setEnabled(true); saveAllAction.setEnabled(true); } }); } } } /** * Java Action to ask for confirmation before exiting the application. */ private class ExitAction extends AbstractAction { /**Class constructor *@param text Text to display *@param icon Action's icon *@param desc Brief description *@param mnemonic Keyboard shortcut */ public ExitAction(String text, ImageIcon icon, String desc, Integer mnemonic) { //Initialize action super(text, icon); putValue(SHORT_DESCRIPTION, desc); putValue(MNEMONIC_KEY, mnemonic); } /**Implements action *@param e Event that triggers the action */ public void actionPerformed(ActionEvent e) { //Show confirm dialog int n = JOptionPane.showConfirmDialog( new JFrame(), "Are you sure you want to exit ALTER?", "Exit", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); //If user confirms exit if (n == JOptionPane.YES_OPTION) System.exit(0); } } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/gui/package-info.java000066400000000000000000000002021300536243200270440ustar00rootroot00000000000000/** * Graphical user interface implemented with SWING. * * @author Daniel Gomez Blanco */ package es.uvigo.ei.sing.alter.gui;ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/000077500000000000000000000000001300536243200243735ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/AlnParser.java000066400000000000000000000670001300536243200271300ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. AlnParser.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Aln; import es.uvigo.ei.sing.alter.types.AlnSequence; import java.io.StringReader; import java.util.Vector; /** * ALN format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class AlnParser implements AlnParserConstants { /** * Static method that parses an input string and returns a MSA in ALN format. * @param in Input string. * @return MSA in ALN format. */ public static Aln parseMSA (String in) throws ParseException { //Parse string and return MSA AlnParser parser = new AlnParser(new StringReader(in)); return parser.Aln(); } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines * until the word "CLUSTAL", "MUSCLE" or "PROBCONS".
*   2. Any character after the word "CLUSTAL", "MUSCLE" or "PROBCONS" * until the end of that line.
*   3. Any combination of spaces, tabs and new lines * until first sequence identifier.
*   4. Sequence blocks with the following structure:
*     4a. Sequence line:
*       4a1. Identifier.
*       4a2. Data line.
*       4a3. Number of residues (optional).
*     4b. Consensus line made up of spaces, tabs, "*", ":" or ".". * @return MSA in ALN format. */ final public Aln Aln() throws ParseException { Vector seqs = new Vector(); String id, data; int cont = 0; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 10: jj_consume_token(10); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; default: jj_la1[2] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: ; break; default: jj_la1[3] = jj_gen; break label_2; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case 15: jj_consume_token(15); break; case 16: jj_consume_token(16); break; case 17: jj_consume_token(17); break; case 10: jj_consume_token(10); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 18: jj_consume_token(18); break; case 19: jj_consume_token(19); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(EOL); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[5] = jj_gen; break label_3; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[6] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } label_4: while (true) { id = Id(); jj_consume_token(BLANK); data = DataLine(); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NUMBER: ; break; default: jj_la1[7] = jj_gen; break label_5; } jj_consume_token(NUMBER); label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[8] = jj_gen; break label_6; } jj_consume_token(BLANK); } } jj_consume_token(EOL); seqs.add(new AlnSequence(id,data)); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 16: case 17: case 18: case 19: ; break; default: jj_la1[9] = jj_gen; break label_4; } } label_7: while (true) { label_8: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case 13: case 14: case 15: ; break; default: jj_la1[10] = jj_gen; break label_8; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case 15: jj_consume_token(15); break; default: jj_la1[11] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(EOL); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case 13: case 14: case 15: ; break; default: jj_la1[12] = jj_gen; break label_7; } } label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 16: case 17: case 18: case 19: ; break; default: jj_la1[13] = jj_gen; break label_9; } label_10: while (true) { IdSeq(seqs.elementAt(cont).getId()); jj_consume_token(BLANK); data = DataLine(); label_11: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NUMBER: ; break; default: jj_la1[14] = jj_gen; break label_11; } jj_consume_token(NUMBER); label_12: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[15] = jj_gen; break label_12; } jj_consume_token(BLANK); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case 0: jj_consume_token(0); break; default: jj_la1[16] = jj_gen; jj_consume_token(-1); throw new ParseException(); } seqs.elementAt(cont).concat(data); cont++; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 16: case 17: case 18: case 19: ; break; default: jj_la1[17] = jj_gen; break label_10; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case 13: case 14: case 15: label_13: while (true) { label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case 13: case 14: case 15: ; break; default: jj_la1[18] = jj_gen; break label_14; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case 15: jj_consume_token(15); break; default: jj_la1[19] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(EOL); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case 13: case 14: case 15: ; break; default: jj_la1[20] = jj_gen; break label_13; } } break; case 0: jj_consume_token(0); break; default: jj_la1[21] = jj_gen; jj_consume_token(-1); throw new ParseException(); } cont = 0; } jj_consume_token(0); {if (true) return new Aln(seqs);} throw new Error("Missing return statement in function"); } /** * Parses a sequence identifier. The identifier cannot contain spaces * and it cannot start with the characters "*",":","." to avoid * confusion with consensus lines. * @return String with the sequence identifier. */ final public String Id() throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 18: case 19: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 18: jj_consume_token(18); break; case 19: jj_consume_token(19); break; default: jj_la1[22] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_15: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 15: t = jj_consume_token(15); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[23] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: ; break; default: jj_la1[24] = jj_gen; break label_15; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 18: jj_consume_token(18); break; case 19: jj_consume_token(19); break; default: jj_la1[25] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 16: case 17: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[26] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_16: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: ; break; default: jj_la1[27] = jj_gen; break label_16; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 15: t = jj_consume_token(15); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 18: t = jj_consume_token(18); break; case 19: t = jj_consume_token(19); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[28] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); } break; default: jj_la1[29] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return s.toString();} throw new Error("Missing return statement in function"); } /** * Same behaviour as Id(), but in this case equality between the already read * identifier and the current one is checked. * @param id Identifier to parse. */ final public void IdSeq(String id) throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 18: case 19: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 18: jj_consume_token(18); break; case 19: jj_consume_token(19); break; default: jj_la1[30] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_17: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 15: t = jj_consume_token(15); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[31] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: ; break; default: jj_la1[32] = jj_gen; break label_17; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 18: jj_consume_token(18); break; case 19: jj_consume_token(19); break; default: jj_la1[33] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 16: case 17: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[34] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_18: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: ; break; default: jj_la1[35] = jj_gen; break label_18; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 15: t = jj_consume_token(15); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 18: t = jj_consume_token(18); break; case 19: t = jj_consume_token(19); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[36] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); } break; default: jj_la1[37] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (!id.equals(s.toString())) {if (true) throw new ParseException("ID for sequence \u005c"" + id + "\u005c"does not match with ID in line " + t.beginLine);} } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "-", "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ final public String DataLine() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_19: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: case LOWER_CASE: case 10: case 11: case 12: case 15: case 16: case 17: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 16: t = jj_consume_token(16); break; case 15: t = jj_consume_token(15); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[38] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); break; default: jj_la1[39] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case 10: case 11: case 12: case 15: case 16: case 17: ; break; default: jj_la1[40] = jj_gen; break label_19; } } {if (true) return s.toString().toUpperCase();} throw new Error("Missing return statement in function"); } /** Generated Token Manager. */ public AlnParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[41]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0x1c00,0xffc7c,0xffc7c,0x6,0x6,0x20,0x4,0xf1c78,0xe004,0xe004,0xe006,0xf1c78,0x20,0x4,0x3,0xf1c78,0xe004,0xe004,0xe006,0xe007,0xc0000,0x3fc7c,0x3fc7c,0xc0000,0x31c78,0xffc78,0xffc78,0xf1c78,0xc0000,0x3fc7c,0x3fc7c,0xc0000,0x31c78,0xffc78,0xffc78,0xf1c78,0x39c18,0x39c1c,0x39c1c,}; } /** Constructor with InputStream. */ public AlnParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public AlnParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new AlnParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 41; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 41; i++) jj_la1[i] = -1; } /** Constructor. */ public AlnParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new AlnParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 41; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 41; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public AlnParser(AlnParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 41; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(AlnParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 41; i++) jj_la1[i] = -1; } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[20]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 41; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", "", "", "", "", "\"%\"", "", "", "\"CLUSTAL\"", "\"MUSCLE\"", "\"PROBCONS\"", "\"*\"", "\":\"", "\".\"", "\"-\"", "\"?\"", "\"\\\"\"", "\"\\\'\"", }; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/AlnParserTokenManager.java000066400000000000000000000447701300536243200314350ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. AlnParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Aln; import es.uvigo.ei.sing.alter.types.AlnSequence; import java.io.StringReader; import java.util.Vector; /** Token Manager. */ public class AlnParserTokenManager implements AlnParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { case 0: if ((active0 & 0x1c00L) != 0L) { jjmatchedKind = 3; return -1; } return -1; case 1: if ((active0 & 0x1c00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 2: if ((active0 & 0x1c00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 3: if ((active0 & 0x1c00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 4: if ((active0 & 0x1c00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 5: if ((active0 & 0x1c00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 6: if ((active0 & 0x1400L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 34: return jjStopAtPos(0, 18); case 37: return jjStopAtPos(0, 7); case 39: return jjStopAtPos(0, 19); case 42: return jjStopAtPos(0, 13); case 45: return jjStopAtPos(0, 16); case 46: return jjStopAtPos(0, 15); case 58: return jjStopAtPos(0, 14); case 63: return jjStopAtPos(0, 17); case 67: return jjMoveStringLiteralDfa1_0(0x400L); case 77: return jjMoveStringLiteralDfa1_0(0x800L); case 80: return jjMoveStringLiteralDfa1_0(0x1000L); default : return jjMoveNfa_0(0, 0); } } private int jjMoveStringLiteralDfa1_0(long active0) { try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(0, active0); return 1; } switch(curChar) { case 76: return jjMoveStringLiteralDfa2_0(active0, 0x400L); case 82: return jjMoveStringLiteralDfa2_0(active0, 0x1000L); case 85: return jjMoveStringLiteralDfa2_0(active0, 0x800L); default : break; } return jjStartNfa_0(0, active0); } private int jjMoveStringLiteralDfa2_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(0, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(1, active0); return 2; } switch(curChar) { case 79: return jjMoveStringLiteralDfa3_0(active0, 0x1000L); case 83: return jjMoveStringLiteralDfa3_0(active0, 0x800L); case 85: return jjMoveStringLiteralDfa3_0(active0, 0x400L); default : break; } return jjStartNfa_0(1, active0); } private int jjMoveStringLiteralDfa3_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(1, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(2, active0); return 3; } switch(curChar) { case 66: return jjMoveStringLiteralDfa4_0(active0, 0x1000L); case 67: return jjMoveStringLiteralDfa4_0(active0, 0x800L); case 83: return jjMoveStringLiteralDfa4_0(active0, 0x400L); default : break; } return jjStartNfa_0(2, active0); } private int jjMoveStringLiteralDfa4_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(2, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(3, active0); return 4; } switch(curChar) { case 67: return jjMoveStringLiteralDfa5_0(active0, 0x1000L); case 76: return jjMoveStringLiteralDfa5_0(active0, 0x800L); case 84: return jjMoveStringLiteralDfa5_0(active0, 0x400L); default : break; } return jjStartNfa_0(3, active0); } private int jjMoveStringLiteralDfa5_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(3, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(4, active0); return 5; } switch(curChar) { case 65: return jjMoveStringLiteralDfa6_0(active0, 0x400L); case 69: if ((active0 & 0x800L) != 0L) return jjStopAtPos(5, 11); break; case 79: return jjMoveStringLiteralDfa6_0(active0, 0x1000L); default : break; } return jjStartNfa_0(4, active0); } private int jjMoveStringLiteralDfa6_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(4, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(5, active0); return 6; } switch(curChar) { case 76: if ((active0 & 0x400L) != 0L) return jjStopAtPos(6, 10); break; case 78: return jjMoveStringLiteralDfa7_0(active0, 0x1000L); default : break; } return jjStartNfa_0(5, active0); } private int jjMoveStringLiteralDfa7_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(5, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(6, active0); return 7; } switch(curChar) { case 83: if ((active0 & 0x1000L) != 0L) return jjStopAtPos(7, 12); break; default : break; } return jjStartNfa_0(6, active0); } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 8; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x78009b5affffd9ffL & l) != 0L) { if (kind > 6) kind = 6; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 6: if ((0x3ff000000000000L & l) != 0L) kind = 5; break; case 7: if ((0x78009b5affffd9ffL & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0x7fffffe00000000L & l) != 0L) { if (kind > 4) kind = 4; } else if ((0x7fffffeL & l) != 0L) { if (kind > 3) kind = 3; } else if ((0xf8000001f8000001L & l) != 0L) { if (kind > 6) kind = 6; } break; case 4: if ((0x7fffffeL & l) != 0L) kind = 3; break; case 5: if ((0x7fffffe00000000L & l) != 0L) kind = 4; break; case 7: if ((0xf8000001f8000001L & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 6) kind = 6; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } private int jjMoveStringLiteralDfa0_1() { return jjMoveNfa_1(0, 0); } private int jjMoveNfa_1(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 3; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x2400L & l) != 0L) { if (kind > 9) kind = 9; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 9) kind = 9; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, null, null, null, "\103\114\125\123\124\101\114", "\115\125\123\103\114\105", "\120\122\117\102\103\117\116\123", "\52", "\72", "\56", "\55", "\77", "\42", "\47", }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", "IN_COMMENT", }; /** Lex State array. */ public static final int[] jjnewLexState = { -1, -1, -1, -1, -1, -1, -1, 1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }; static final long[] jjtoToken = { 0xffc7fL, }; static final long[] jjtoSkip = { 0x200L, }; static final long[] jjtoMore = { 0x180L, }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[8]; private final int[] jjstateSet = new int[16]; protected char curChar; /** Constructor. */ public AlnParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public AlnParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 8; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 2 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } for (;;) { switch(curLexState) { case 0: jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); break; case 1: jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_1(); if (jjmatchedPos == 0 && jjmatchedKind > 8) { jjmatchedKind = 8; } break; } if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) { matchedToken = jjFillToken(); if (jjnewLexState[jjmatchedKind] != -1) curLexState = jjnewLexState[jjmatchedKind]; return matchedToken; } else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) { if (jjnewLexState[jjmatchedKind] != -1) curLexState = jjnewLexState[jjmatchedKind]; continue EOFLoop; } if (jjnewLexState[jjmatchedKind] != -1) curLexState = jjnewLexState[jjmatchedKind]; curPos = 0; jjmatchedKind = 0x7fffffff; try { curChar = input_stream.readChar(); continue; } catch (java.io.IOException e1) { } } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/AutodetectionParser.java000066400000000000000000000377651300536243200312440ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. AutodetectionParser.java */ package es.uvigo.ei.sing.alter.parser; import java.io.StringReader; /** * Autodetection parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class AutodetectionParser implements AutodetectionParserConstants { /** * Static method that parses an input string and returns the format of the input MSA. * @param in Input string. * @return String with the detected format. */ public static String detectFormat (String in) throws ParseException { //Parse string and return MSA format AutodetectionParser parser = new AutodetectionParser(new StringReader(in)); return parser.Autodetection(); } /** * Grammar's root production. After omitting spaces, tabs and new lines, * format is detected using the first words:
*   - If it starts with "#" or "%" it's GDE.
*   - If it starts with "#NEXUS" it's NEXUS.
*   - If it starts with "CLUSTAL", "MUSCLE" or "PROBCONS" it's ALN.
*   - If it starts with "PileUp", "!!AA_MULTIPLE_ALIGNMENT" or * "!!NA_MULTIPLE_ALIGNMENT" it's MSF.
*   - If it starts with a number, followed by a sequence of spaces * or tabs, and then another number, it's PHYLIP.
*   - If it starts with ">" followed by two characters and ";" it's PIR.
*   - If it starts with ">" and it doesn't meet the latter point it's FASTA. */ final public String Autodetection() throws ParseException { String toret; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 6: case 7: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 6: jj_consume_token(6); break; case 7: jj_consume_token(7); break; default: jj_la1[2] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return "gde";} break; case 8: jj_consume_token(8); {if (true) return "nexus";} break; case 9: case 10: case 11: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 9: jj_consume_token(9); break; case 10: jj_consume_token(10); break; case 11: jj_consume_token(11); break; default: jj_la1[3] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return "aln";} break; case NUMBER: Number(); label_2: while (true) { jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[4] = jj_gen; break label_2; } } Number(); {if (true) return "phylip";} break; case 12: jj_consume_token(12); if (jj_2_1(2147483647)) { Type(); jj_consume_token(13); {if (true) return "pir";} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case NUMBER: case ANY: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: Line(); {if (true) return "fasta";} break; default: jj_la1[5] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } break; case 14: case 15: case 16: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 14: jj_consume_token(14); break; case 15: jj_consume_token(15); break; case 16: jj_consume_token(16); break; default: jj_la1[6] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return "msf";} break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } /** * Parses a number. * @return Parsed number. */ final public int Number() throws ParseException { String s = ""; Token t; label_3: while (true) { t = jj_consume_token(NUMBER); s = s.concat(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NUMBER: ; break; default: jj_la1[8] = jj_gen; break label_3; } } {if (true) return Integer.parseInt(s);} throw new Error("Missing return statement in function"); } /** * Parses a PIR style type. * @return String with the type of MSA. */ final public String Type() throws ParseException { Token t1, t2; t1 = jj_consume_token(UPPER_CASE); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t2 = jj_consume_token(UPPER_CASE); break; case NUMBER: t2 = jj_consume_token(NUMBER); break; default: jj_la1[9] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return t1.image + t2.image;} throw new Error("Missing return statement in function"); } /** * Parses a line made up with any sequence of characters. * @return Parsed line. */ final public String Line() throws ParseException { String s = ""; Token t; label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 6: t = jj_consume_token(6); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 14: t = jj_consume_token(14); break; default: jj_la1[10] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s = s.concat(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case NUMBER: case ANY: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: ; break; default: jj_la1[11] = jj_gen; break label_4; } } {if (true) return s.trim();} throw new Error("Missing return statement in function"); } private boolean jj_2_1(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_1(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(0, xla); } } private boolean jj_3R_5() { if (jj_scan_token(UPPER_CASE)) return true; Token xsp; xsp = jj_scanpos; if (jj_scan_token(3)) { jj_scanpos = xsp; if (jj_scan_token(4)) return true; } return false; } private boolean jj_3_1() { if (jj_3R_5()) return true; if (jj_scan_token(13)) return true; return false; } /** Generated Token Manager. */ public AutodetectionParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; final private int[] jj_la1 = new int[12]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0xc0,0xe00,0x4,0x7ffc,0x1c000,0x1dfd0,0x10,0x18,0x7ffc,0x7ffc,}; } final private JJCalls[] jj_2_rtns = new JJCalls[1]; private boolean jj_rescan = false; private int jj_gc = 0; /** Constructor with InputStream. */ public AutodetectionParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public AutodetectionParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new AutodetectionParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 12; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 12; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Constructor. */ public AutodetectionParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new AutodetectionParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 12; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 12; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Constructor with generated Token Manager. */ public AutodetectionParser(AutodetectionParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 12; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } /** Reinitialise. */ public void ReInit(AutodetectionParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 12; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; if (++jj_gc > 100) { jj_gc = 0; for (int i = 0; i < jj_2_rtns.length; i++) { JJCalls c = jj_2_rtns[i]; while (c != null) { if (c.gen < jj_gen) c.first = null; c = c.next; } } } return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } static private final class LookaheadSuccess extends java.lang.Error { } final private LookaheadSuccess jj_ls = new LookaheadSuccess(); private boolean jj_scan_token(int kind) { if (jj_scanpos == jj_lastpos) { jj_la--; if (jj_scanpos.next == null) { jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); } else { jj_lastpos = jj_scanpos = jj_scanpos.next; } } else { jj_scanpos = jj_scanpos.next; } if (jj_rescan) { int i = 0; Token tok = token; while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } if (tok != null) jj_add_error_token(kind, i); } if (jj_scanpos.kind != kind) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; return false; } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; private int[] jj_lasttokens = new int[100]; private int jj_endpos; private void jj_add_error_token(int kind, int pos) { if (pos >= 100) return; if (pos == jj_endpos + 1) { jj_lasttokens[jj_endpos++] = kind; } else if (jj_endpos != 0) { jj_expentry = new int[jj_endpos]; for (int i = 0; i < jj_endpos; i++) { jj_expentry[i] = jj_lasttokens[i]; } jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) { int[] oldentry = (int[])(it.next()); if (oldentry.length == jj_expentry.length) { for (int i = 0; i < jj_expentry.length; i++) { if (oldentry[i] != jj_expentry[i]) { continue jj_entries_loop; } } jj_expentries.add(jj_expentry); break jj_entries_loop; } } if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; } } /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[17]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 12; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1< jj_gen) { jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; switch (i) { case 0: jj_3_1(); break; } } p = p.next; } while (p != null); } catch(LookaheadSuccess ls) { } } jj_rescan = false; } private void jj_save(int index, int xla) { JJCalls p = jj_2_rtns[index]; while (p.gen > jj_gen) { if (p.next == null) { p = p.next = new JJCalls(); break; } p = p.next; } p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; } static final class JJCalls { int gen; Token first; int arg; JJCalls next; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/AutodetectionParserConstants.java000066400000000000000000000017131300536243200331210ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. AutodetectionParserConstants.java */ package es.uvigo.ei.sing.alter.parser; /** * Token literal values and constants. * Generated by org.javacc.parser.OtherFilesGen#start() */ public interface AutodetectionParserConstants { /** End of File. */ int EOF = 0; /** RegularExpression Id. */ int EOL = 1; /** RegularExpression Id. */ int BLANK = 2; /** RegularExpression Id. */ int UPPER_CASE = 3; /** RegularExpression Id. */ int NUMBER = 4; /** RegularExpression Id. */ int ANY = 5; /** Lexical state. */ int DEFAULT = 0; /** Literal token values. */ String[] tokenImage = { "", "", "", "", "", "", "\"#\"", "\"%\"", "\"#NEXUS\"", "\"CLUSTAL\"", "\"MUSCLE\"", "\"PROBCONS\"", "\">\"", "\";\"", "\"PileUp\"", "\"!!AA_MULTIPLE_ALIGNMENT\"", "\"!!NA_MULTIPLE_ALIGNMENT\"", }; } AutodetectionParserTokenManager.java000066400000000000000000000705451300536243200334520ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/* Generated By:JavaCC: Do not edit this line. AutodetectionParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import java.io.StringReader; /** Token Manager. */ public class AutodetectionParserTokenManager implements AutodetectionParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { case 0: if ((active0 & 0x18000L) != 0L) { jjmatchedKind = 5; return -1; } if ((active0 & 0x4e00L) != 0L) { jjmatchedKind = 3; return -1; } return -1; case 1: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } if ((active0 & 0x4e00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 2: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } if ((active0 & 0x4e00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 3: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } if ((active0 & 0x4e00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 4: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } if ((active0 & 0x4e00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 5: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } if ((active0 & 0x4e00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 6: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } if ((active0 & 0xa00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 7: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } if ((active0 & 0x800L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 8: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 9: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 10: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 11: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 12: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 13: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 14: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 15: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 16: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 17: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 18: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 19: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 20: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; case 21: if ((active0 & 0x18000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 5; jjmatchedPos = 0; } return -1; } return -1; default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 33: return jjMoveStringLiteralDfa1_0(0x18000L); case 35: jjmatchedKind = 6; return jjMoveStringLiteralDfa1_0(0x100L); case 37: return jjStopAtPos(0, 7); case 59: return jjStopAtPos(0, 13); case 62: return jjStopAtPos(0, 12); case 67: return jjMoveStringLiteralDfa1_0(0x200L); case 77: return jjMoveStringLiteralDfa1_0(0x400L); case 80: return jjMoveStringLiteralDfa1_0(0x4800L); default : return jjMoveNfa_0(0, 0); } } private int jjMoveStringLiteralDfa1_0(long active0) { try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(0, active0); return 1; } switch(curChar) { case 33: return jjMoveStringLiteralDfa2_0(active0, 0x18000L); case 76: return jjMoveStringLiteralDfa2_0(active0, 0x200L); case 78: return jjMoveStringLiteralDfa2_0(active0, 0x100L); case 82: return jjMoveStringLiteralDfa2_0(active0, 0x800L); case 85: return jjMoveStringLiteralDfa2_0(active0, 0x400L); case 105: return jjMoveStringLiteralDfa2_0(active0, 0x4000L); default : break; } return jjStartNfa_0(0, active0); } private int jjMoveStringLiteralDfa2_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(0, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(1, active0); return 2; } switch(curChar) { case 65: return jjMoveStringLiteralDfa3_0(active0, 0x8000L); case 69: return jjMoveStringLiteralDfa3_0(active0, 0x100L); case 78: return jjMoveStringLiteralDfa3_0(active0, 0x10000L); case 79: return jjMoveStringLiteralDfa3_0(active0, 0x800L); case 83: return jjMoveStringLiteralDfa3_0(active0, 0x400L); case 85: return jjMoveStringLiteralDfa3_0(active0, 0x200L); case 108: return jjMoveStringLiteralDfa3_0(active0, 0x4000L); default : break; } return jjStartNfa_0(1, active0); } private int jjMoveStringLiteralDfa3_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(1, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(2, active0); return 3; } switch(curChar) { case 65: return jjMoveStringLiteralDfa4_0(active0, 0x18000L); case 66: return jjMoveStringLiteralDfa4_0(active0, 0x800L); case 67: return jjMoveStringLiteralDfa4_0(active0, 0x400L); case 83: return jjMoveStringLiteralDfa4_0(active0, 0x200L); case 88: return jjMoveStringLiteralDfa4_0(active0, 0x100L); case 101: return jjMoveStringLiteralDfa4_0(active0, 0x4000L); default : break; } return jjStartNfa_0(2, active0); } private int jjMoveStringLiteralDfa4_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(2, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(3, active0); return 4; } switch(curChar) { case 67: return jjMoveStringLiteralDfa5_0(active0, 0x800L); case 76: return jjMoveStringLiteralDfa5_0(active0, 0x400L); case 84: return jjMoveStringLiteralDfa5_0(active0, 0x200L); case 85: return jjMoveStringLiteralDfa5_0(active0, 0x4100L); case 95: return jjMoveStringLiteralDfa5_0(active0, 0x18000L); default : break; } return jjStartNfa_0(3, active0); } private int jjMoveStringLiteralDfa5_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(3, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(4, active0); return 5; } switch(curChar) { case 65: return jjMoveStringLiteralDfa6_0(active0, 0x200L); case 69: if ((active0 & 0x400L) != 0L) return jjStopAtPos(5, 10); break; case 77: return jjMoveStringLiteralDfa6_0(active0, 0x18000L); case 79: return jjMoveStringLiteralDfa6_0(active0, 0x800L); case 83: if ((active0 & 0x100L) != 0L) return jjStopAtPos(5, 8); break; case 112: if ((active0 & 0x4000L) != 0L) return jjStopAtPos(5, 14); break; default : break; } return jjStartNfa_0(4, active0); } private int jjMoveStringLiteralDfa6_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(4, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(5, active0); return 6; } switch(curChar) { case 76: if ((active0 & 0x200L) != 0L) return jjStopAtPos(6, 9); break; case 78: return jjMoveStringLiteralDfa7_0(active0, 0x800L); case 85: return jjMoveStringLiteralDfa7_0(active0, 0x18000L); default : break; } return jjStartNfa_0(5, active0); } private int jjMoveStringLiteralDfa7_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(5, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(6, active0); return 7; } switch(curChar) { case 76: return jjMoveStringLiteralDfa8_0(active0, 0x18000L); case 83: if ((active0 & 0x800L) != 0L) return jjStopAtPos(7, 11); break; default : break; } return jjStartNfa_0(6, active0); } private int jjMoveStringLiteralDfa8_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(6, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(7, active0); return 8; } switch(curChar) { case 84: return jjMoveStringLiteralDfa9_0(active0, 0x18000L); default : break; } return jjStartNfa_0(7, active0); } private int jjMoveStringLiteralDfa9_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(7, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(8, active0); return 9; } switch(curChar) { case 73: return jjMoveStringLiteralDfa10_0(active0, 0x18000L); default : break; } return jjStartNfa_0(8, active0); } private int jjMoveStringLiteralDfa10_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(8, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(9, active0); return 10; } switch(curChar) { case 80: return jjMoveStringLiteralDfa11_0(active0, 0x18000L); default : break; } return jjStartNfa_0(9, active0); } private int jjMoveStringLiteralDfa11_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(9, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(10, active0); return 11; } switch(curChar) { case 76: return jjMoveStringLiteralDfa12_0(active0, 0x18000L); default : break; } return jjStartNfa_0(10, active0); } private int jjMoveStringLiteralDfa12_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(10, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(11, active0); return 12; } switch(curChar) { case 69: return jjMoveStringLiteralDfa13_0(active0, 0x18000L); default : break; } return jjStartNfa_0(11, active0); } private int jjMoveStringLiteralDfa13_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(11, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(12, active0); return 13; } switch(curChar) { case 95: return jjMoveStringLiteralDfa14_0(active0, 0x18000L); default : break; } return jjStartNfa_0(12, active0); } private int jjMoveStringLiteralDfa14_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(12, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(13, active0); return 14; } switch(curChar) { case 65: return jjMoveStringLiteralDfa15_0(active0, 0x18000L); default : break; } return jjStartNfa_0(13, active0); } private int jjMoveStringLiteralDfa15_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(13, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(14, active0); return 15; } switch(curChar) { case 76: return jjMoveStringLiteralDfa16_0(active0, 0x18000L); default : break; } return jjStartNfa_0(14, active0); } private int jjMoveStringLiteralDfa16_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(14, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(15, active0); return 16; } switch(curChar) { case 73: return jjMoveStringLiteralDfa17_0(active0, 0x18000L); default : break; } return jjStartNfa_0(15, active0); } private int jjMoveStringLiteralDfa17_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(15, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(16, active0); return 17; } switch(curChar) { case 71: return jjMoveStringLiteralDfa18_0(active0, 0x18000L); default : break; } return jjStartNfa_0(16, active0); } private int jjMoveStringLiteralDfa18_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(16, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(17, active0); return 18; } switch(curChar) { case 78: return jjMoveStringLiteralDfa19_0(active0, 0x18000L); default : break; } return jjStartNfa_0(17, active0); } private int jjMoveStringLiteralDfa19_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(17, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(18, active0); return 19; } switch(curChar) { case 77: return jjMoveStringLiteralDfa20_0(active0, 0x18000L); default : break; } return jjStartNfa_0(18, active0); } private int jjMoveStringLiteralDfa20_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(18, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(19, active0); return 20; } switch(curChar) { case 69: return jjMoveStringLiteralDfa21_0(active0, 0x18000L); default : break; } return jjStartNfa_0(19, active0); } private int jjMoveStringLiteralDfa21_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(19, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(20, active0); return 21; } switch(curChar) { case 78: return jjMoveStringLiteralDfa22_0(active0, 0x18000L); default : break; } return jjStartNfa_0(20, active0); } private int jjMoveStringLiteralDfa22_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(20, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(21, active0); return 22; } switch(curChar) { case 84: if ((active0 & 0x8000L) != 0L) return jjStopAtPos(22, 15); else if ((active0 & 0x10000L) != 0L) return jjStopAtPos(22, 16); break; default : break; } return jjStartNfa_0(21, active0); } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 7; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0xb400ffd6ffffd9ffL & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 4) kind = 4; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 5: if ((0x3ff000000000000L & l) != 0L) kind = 4; break; case 6: if ((0xb400ffd6ffffd9ffL & l) != 0L) kind = 5; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0xfffffffff8000001L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x7fffffeL & l) != 0L) { if (kind > 3) kind = 3; } break; case 4: if ((0x7fffffeL & l) != 0L) kind = 3; break; case 6: if ((0xfffffffff8000001L & l) != 0L) kind = 5; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 5) kind = 5; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, "\43", "\45", "\43\116\105\130\125\123", "\103\114\125\123\124\101\114", "\115\125\123\103\114\105", "\120\122\117\102\103\117\116\123", "\76", "\73", "\120\151\154\145\125\160", "\41\41\101\101\137\115\125\114\124\111\120\114\105\137\101\114\111\107\116\115\105\116\124", "\41\41\116\101\137\115\125\114\124\111\120\114\105\137\101\114\111\107\116\115\105\116\124", }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[7]; private final int[] jjstateSet = new int[14]; protected char curChar; /** Constructor. */ public AutodetectionParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public AutodetectionParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 7; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 1 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); matchedToken = jjFillToken(); return matchedToken; } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/FastaParser.java000066400000000000000000000377221300536243200274640ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. FastaParser.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Fasta; import es.uvigo.ei.sing.alter.types.FastaSequence; import java.io.StringReader; import java.util.Vector; /** * FASTA format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class FastaParser implements FastaParserConstants { /** * Static method that parses an input string and returns a MSA in FASTA format. * @param in Input string. * @return MSA in FASTA format. */ public static Fasta parseMSA (String in) throws ParseException { //Parse string and return MSA FastaParser parser = new FastaParser(new StringReader(in)); return parser.Fasta(); } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until ">".
*   2. Sequences with the following format:
*     2a. ">".
*     2b. Sequence identifier.
*     2c. New line.
*     2d. Sequence data.
* @return MSA in FASTA format. */ final public Fasta Fasta() throws ParseException { Vector seqs = new Vector(); String id, data; String desc = ""; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } label_2: while (true) { jj_consume_token(7); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[2] = jj_gen; break label_3; } jj_consume_token(BLANK); } id = Word(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: desc = Line(); jj_consume_token(EOL); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[3] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case EOL: jj_consume_token(EOL); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } data = Data(); seqs.add(new FastaSequence(id, desc, data)); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: ; break; default: jj_la1[5] = jj_gen; break label_2; } } jj_consume_token(0); {if (true) return new Fasta(seqs);} throw new Error("Missing return statement in function"); } /** * Parses a word made up of any character sequence. * @return Parsed word. */ final public String Word() throws ParseException { String s = ""; Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: case 9: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: jj_consume_token(8); break; case 9: jj_consume_token(9); break; default: jj_la1[6] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 7: t = jj_consume_token(7); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s = s.concat(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 10: case 11: case 12: ; break; default: jj_la1[8] = jj_gen; break label_4; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: jj_consume_token(8); break; case 9: jj_consume_token(9); break; default: jj_la1[9] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 10: case 11: case 12: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 7: t = jj_consume_token(7); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[10] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s = s.concat(t.image); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: ; break; default: jj_la1[11] = jj_gen; break label_5; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 7: t = jj_consume_token(7); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; default: jj_la1[12] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s = s.concat(t.image); } break; default: jj_la1[13] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return s.trim();} throw new Error("Missing return statement in function"); } /** * Parses a line made up of any character sequence. * @return Parsed line. */ final public String Line() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 7: t = jj_consume_token(7); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; default: jj_la1[14] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: ; break; default: jj_la1[15] = jj_gen; break label_6; } } {if (true) return s.toString().trim();} throw new Error("Missing return statement in function"); } /** * Parses sequence data. These data can be made up of any characters * from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @return String with the sequence data (uppercase always). */ final public String Data() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case EOL: t = jj_consume_token(EOL); break; default: jj_la1[16] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case 10: case 11: case 12: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[17] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); break; default: jj_la1[18] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case 10: case 11: case 12: ; break; default: jj_la1[19] = jj_gen; break label_7; } } {if (true) return s.toString().toUpperCase();} throw new Error("Missing return statement in function"); } /** Generated Token Manager. */ public FastaParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[20]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0x4,0x1ffe,0x6,0x80,0x300,0x1cfc,0x1cfc,0x300,0x1cf8,0x1ff8,0x1ff8,0x1ff8,0x1ffc,0x1ffc,0x6,0x1c18,0x1c1e,0x1c1e,}; } /** Constructor with InputStream. */ public FastaParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public FastaParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new FastaParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** Constructor. */ public FastaParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new FastaParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public FastaParser(FastaParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(FastaParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 20; i++) jj_la1[i] = -1; } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[13]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 20; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", "", "", "", "", "\">\"", "\"\\\"\"", "\"\\\'\"", "\"-\"", "\".\"", "\"?\"", }; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/FastaParserTokenManager.java000066400000000000000000000223161300536243200317510ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. FastaParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Fasta; import es.uvigo.ei.sing.alter.types.FastaSequence; import java.io.StringReader; import java.util.Vector; /** Token Manager. */ public class FastaParserTokenManager implements FastaParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 34: return jjStopAtPos(0, 8); case 39: return jjStopAtPos(0, 9); case 45: return jjStopAtPos(0, 10); case 46: return jjStopAtPos(0, 11); case 62: return jjStopAtPos(0, 7); case 63: return jjStopAtPos(0, 12); default : return jjMoveNfa_0(0, 0); } } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 8; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x3c009f7affffd9ffL & l) != 0L) { if (kind > 6) kind = 6; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 6: if ((0x3ff000000000000L & l) != 0L) kind = 5; break; case 7: if ((0x3c009f7affffd9ffL & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0x7fffffe00000000L & l) != 0L) { if (kind > 4) kind = 4; } else if ((0x7fffffeL & l) != 0L) { if (kind > 3) kind = 3; } else if ((0xf8000001f8000001L & l) != 0L) { if (kind > 6) kind = 6; } break; case 4: if ((0x7fffffeL & l) != 0L) kind = 3; break; case 5: if ((0x7fffffe00000000L & l) != 0L) kind = 4; break; case 7: if ((0xf8000001f8000001L & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 6) kind = 6; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, "\76", "\42", "\47", "\55", "\56", "\77", }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[8]; private final int[] jjstateSet = new int[16]; protected char curChar; /** Constructor. */ public FastaParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public FastaParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 8; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 1 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); matchedToken = jjFillToken(); return matchedToken; } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/GdeParser.java000066400000000000000000000250721300536243200271200ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. GdeParser.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Gde; import es.uvigo.ei.sing.alter.types.GdeSequence; import java.io.StringReader; import java.util.Vector; /** * GDE format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class GdeParser implements GdeParserConstants { /** * Static method that parses an input string and returns a MSA in GDE format. * @param in Input string. * @return MSA in GDE format. */ public static Gde parseMSA (String in) throws ParseException { //Parse string and return MSA GdeParser parser = new GdeParser(new StringReader(in)); return parser.Gde(); } /** * Grammar's root production. Structure:
*   1. Any combinations of spaces, tabs and new lines until "#" or "%".
*   2. Sequences with the following format:
*     2a. "#" ó "%".
*     2b. Sequence identifier.
*     2c. New line.
*     2d. Sequence data.
* @return MSA in GDE format. */ final public Gde Gde() throws ParseException { Vector seqs = new Vector(); String id, data; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: jj_consume_token(7); break; case 8: jj_consume_token(8); break; default: jj_la1[2] = jj_gen; jj_consume_token(-1); throw new ParseException(); } id = Line(); jj_consume_token(EOL); data = Data(); seqs.add(new GdeSequence(id,data)); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: case 8: ; break; default: jj_la1[3] = jj_gen; break label_2; } } jj_consume_token(0); {if (true) return new Gde(seqs);} throw new Error("Missing return statement in function"); } /** * Parses a line made up of any character sequence. * @return Parsed line. */ final public String Line() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 9: t = jj_consume_token(9); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: ; break; default: jj_la1[5] = jj_gen; break label_3; } } {if (true) return s.toString().trim();} throw new Error("Missing return statement in function"); } /** * Parses sequence data. These data can be made up of any characters * from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @return String with the sequence data (uppercase always). */ final public String Data() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case EOL: t = jj_consume_token(EOL); break; default: jj_la1[6] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case 9: case 10: case 11: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); break; default: jj_la1[8] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case 9: case 10: case 11: ; break; default: jj_la1[9] = jj_gen; break label_4; } } {if (true) return s.toString().toUpperCase();} throw new Error("Missing return statement in function"); } /** Generated Token Manager. */ public GdeParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[10]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0x180,0x180,0xffc,0xffc,0x6,0xe18,0xe1e,0xe1e,}; } /** Constructor with InputStream. */ public GdeParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public GdeParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new GdeParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 10; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 10; i++) jj_la1[i] = -1; } /** Constructor. */ public GdeParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new GdeParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 10; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 10; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public GdeParser(GdeParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 10; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(GdeParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 10; i++) jj_la1[i] = -1; } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[12]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 10; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", "", "", "", "", "\"#\"", "\"%\"", "\"-\"", "\".\"", "\"?\"", }; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/GdeParserTokenManager.java000066400000000000000000000222051300536243200314070ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. GdeParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Gde; import es.uvigo.ei.sing.alter.types.GdeSequence; import java.io.StringReader; import java.util.Vector; /** Token Manager. */ public class GdeParserTokenManager implements GdeParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 35: return jjStopAtPos(0, 7); case 37: return jjStopAtPos(0, 8); case 45: return jjStopAtPos(0, 9); case 46: return jjStopAtPos(0, 10); case 63: return jjStopAtPos(0, 11); default : return jjMoveNfa_0(0, 0); } } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 8; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x7c009fd6ffffd9ffL & l) != 0L) { if (kind > 6) kind = 6; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 6: if ((0x3ff000000000000L & l) != 0L) kind = 5; break; case 7: if ((0x7c009fd6ffffd9ffL & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0x7fffffe00000000L & l) != 0L) { if (kind > 4) kind = 4; } else if ((0x7fffffeL & l) != 0L) { if (kind > 3) kind = 3; } else if ((0xf8000001f8000001L & l) != 0L) { if (kind > 6) kind = 6; } break; case 4: if ((0x7fffffeL & l) != 0L) kind = 3; break; case 5: if ((0x7fffffe00000000L & l) != 0L) kind = 4; break; case 7: if ((0xf8000001f8000001L & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 6) kind = 6; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, "\43", "\45", "\55", "\56", "\77", }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[8]; private final int[] jjstateSet = new int[16]; protected char curChar; /** Constructor. */ public GdeParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public GdeParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 8; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 1 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); matchedToken = jjFillToken(); return matchedToken; } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/MsfParser.java000066400000000000000000000710731300536243200271500ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. MsfParser.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Msf; import es.uvigo.ei.sing.alter.types.MsfSequence; import java.io.StringReader; import java.util.Vector; /** * MSF format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class MsfParser implements MsfParserConstants { /** * Static method that parses an input string and returns a MSA in MSF format. * @param in Input string. * @return MSA in MSF format. */ public static Msf parseMSA (String in) throws ParseException { //Parse string and return MSA MsfParser parser = new MsfParser(new StringReader(in)); return parser.Msf(); } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until * "PileUp", "!!AA_MULTIPLE_ALIGNMENT" or "!!NA_MULTIPLE_ALIGNMENT".
*   2. "PileUp", "!!AA_MULTIPLE_ALIGNMENT" or * "!!NA_MULTIPLE_ALIGNMENT".
*   3. Any combination of characters until "MSF:".
*   4. "MSF:" followed by the MSA's length, "Type:" * followed by the MSA's type and "Check:" followed by the MSA's total checksum. * This lines ends with ".."
*   5. Sequence information block made up by lines starting with * "Name:" followed by the sequence identifier and " oo" * as a sequence identifier end delimiter, "Len:" followed by the sequence length * (all must be equal), "Check:" followed by the sequence checksum and * "Weight" followed by the sequence weight.
*   6. "//" as an information block delimiter.
*   7. Aligned sequences. * @return MSA in MSF format. */ final public Msf Msf() throws ParseException { Vector seqs = new Vector(); String id,data; Token type; int total_length, length, total_check, check; float weight; int cont = 0; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: jj_consume_token(7); break; case 8: jj_consume_token(8); break; case 9: jj_consume_token(9); break; default: jj_la1[2] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: ; break; default: jj_la1[3] = jj_gen; break label_2; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 10: jj_consume_token(10); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case 15: jj_consume_token(15); break; case 16: jj_consume_token(16); break; case 17: jj_consume_token(17); break; case 18: jj_consume_token(18); break; case 7: jj_consume_token(7); break; case 8: jj_consume_token(8); break; case 9: jj_consume_token(9); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(19); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[5] = jj_gen; break label_3; } jj_consume_token(BLANK); } total_length = Number(); label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[6] = jj_gen; break label_4; } jj_consume_token(BLANK); } jj_consume_token(20); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[7] = jj_gen; break label_5; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 16: type = jj_consume_token(16); break; case 17: type = jj_consume_token(17); break; case 15: type = jj_consume_token(15); break; default: jj_la1[8] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: ; break; default: jj_la1[9] = jj_gen; break label_6; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 10: jj_consume_token(10); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case 15: jj_consume_token(15); break; case 16: jj_consume_token(16); break; case 17: jj_consume_token(17); break; case 18: jj_consume_token(18); break; case 7: jj_consume_token(7); break; case 8: jj_consume_token(8); break; case 9: jj_consume_token(9); break; default: jj_la1[10] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(21); label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[11] = jj_gen; break label_7; } jj_consume_token(BLANK); } total_check = Number(); label_8: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[12] = jj_gen; break label_8; } jj_consume_token(BLANK); } jj_consume_token(13); label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[13] = jj_gen; break label_9; } jj_consume_token(BLANK); } label_10: while (true) { jj_consume_token(EOL); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[14] = jj_gen; break label_10; } } label_11: while (true) { label_12: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[15] = jj_gen; break label_12; } jj_consume_token(BLANK); } jj_consume_token(22); label_13: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[16] = jj_gen; break label_13; } jj_consume_token(BLANK); } id = Id(); label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 14: ; break; default: jj_la1[17] = jj_gen; break label_14; } jj_consume_token(14); label_15: while (true) { jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[18] = jj_gen; break label_15; } } } jj_consume_token(23); label_16: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[19] = jj_gen; break label_16; } jj_consume_token(BLANK); } length = Number(); label_17: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[20] = jj_gen; break label_17; } jj_consume_token(BLANK); } jj_consume_token(21); label_18: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[21] = jj_gen; break label_18; } jj_consume_token(BLANK); } check = Number(); label_19: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[22] = jj_gen; break label_19; } jj_consume_token(BLANK); } jj_consume_token(24); label_20: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[23] = jj_gen; break label_20; } jj_consume_token(BLANK); } weight = Float(); label_21: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[24] = jj_gen; break label_21; } jj_consume_token(BLANK); } label_22: while (true) { jj_consume_token(EOL); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[25] = jj_gen; break label_22; } } seqs.add(new MsfSequence(id,length,check,weight,"")); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case 22: ; break; default: jj_la1[26] = jj_gen; break label_11; } } jj_consume_token(11); label_23: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[27] = jj_gen; break label_23; } jj_consume_token(BLANK); } label_24: while (true) { jj_consume_token(EOL); label_25: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[28] = jj_gen; break label_25; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[29] = jj_gen; break label_24; } } label_26: while (true) { IdSeq(seqs.elementAt(cont).getId()); jj_consume_token(BLANK); data = DataLine(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: label_27: while (true) { jj_consume_token(EOL); label_28: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[30] = jj_gen; break label_28; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[31] = jj_gen; break label_27; } } break; case 0: jj_consume_token(0); break; default: jj_la1[32] = jj_gen; jj_consume_token(-1); throw new ParseException(); } seqs.elementAt(cont).concat(data); cont++; if (cont == seqs.size()) cont = 0; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 15: case 16: case 17: case 18: ; break; default: jj_la1[33] = jj_gen; break label_26; } } jj_consume_token(0); {if (true) return new Msf(seqs, total_length, type.image, total_check);} throw new Error("Missing return statement in function"); } /** * Parses a number. * @return Parsed number. */ final public int Number() throws ParseException { String s = ""; Token t; label_29: while (true) { t = jj_consume_token(NUMBER); s = s.concat(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NUMBER: ; break; default: jj_la1[34] = jj_gen; break label_29; } } {if (true) return Integer.parseInt(s);} throw new Error("Missing return statement in function"); } /** * Parses a floating point number. * @return Parsed float. */ final public Float Float() throws ParseException { int n1, n2; n1 = Number(); jj_consume_token(12); n2 = Number(); {if (true) return Float.parseFloat(String.valueOf(n1) + "." + String.valueOf(n2));} throw new Error("Missing return statement in function"); } /** * Parses a sequence identifier. An identifier can be made up of any sequence * of characters, including spaces and tabs, but it must not start with any of those. * The string " oo" indicates the end of the identifier. * @return Sequence identifier. */ final public String Id() throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 10: t = jj_consume_token(10); break; case 12: t = jj_consume_token(12); break; case 11: t = jj_consume_token(11); break; case 13: t = jj_consume_token(13); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 15: t = jj_consume_token(15); break; case 18: t = jj_consume_token(18); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; default: jj_la1[35] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_30: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 15: case 16: case 17: case 18: ; break; default: jj_la1[36] = jj_gen; break label_30; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 10: t = jj_consume_token(10); break; case 12: t = jj_consume_token(12); break; case 11: t = jj_consume_token(11); break; case 13: t = jj_consume_token(13); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 15: t = jj_consume_token(15); break; case 18: t = jj_consume_token(18); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; default: jj_la1[37] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); } {if (true) return s.toString().trim();} throw new Error("Missing return statement in function"); } /** * Same behaviour as Id(), but in this case equality between the already read * identifier and the current one is checked. * @param id Identifier to parse. */ final public void IdSeq(String id) throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 10: t = jj_consume_token(10); break; case 12: t = jj_consume_token(12); break; case 11: t = jj_consume_token(11); break; case 13: t = jj_consume_token(13); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 15: t = jj_consume_token(15); break; case 18: t = jj_consume_token(18); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; default: jj_la1[38] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); if (id.length() == s.length()) if (id.equals(s.toString())) {if (true) return;} else {if (true) throw new ParseException("ID for sequence \u005c"" + id + "\u005c"does not match with ID in line " + t.beginLine);} label_31: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 15: case 16: case 17: case 18: ; break; default: jj_la1[39] = jj_gen; break label_31; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 10: t = jj_consume_token(10); break; case 12: t = jj_consume_token(12); break; case 11: t = jj_consume_token(11); break; case 13: t = jj_consume_token(13); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 15: t = jj_consume_token(15); break; case 18: t = jj_consume_token(18); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; default: jj_la1[40] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); if (id.length() == s.length()) if (id.equals(s.toString())) {if (true) return;} else {if (true) throw new ParseException("ID for sequence \u005c"" + id + "\u005c"does not match with ID in line " + t.beginLine);} } {if (true) throw new ParseException("ID for sequence \u005c"" + id + "\u005c"does not match with ID in line " + t.beginLine);} } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ final public String DataLine() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_32: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: case LOWER_CASE: case 10: case 12: case 13: case 15: case 16: case 17: case 18: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 16: t = jj_consume_token(16); break; case 17: t = jj_consume_token(17); break; case 15: t = jj_consume_token(15); break; case 18: t = jj_consume_token(18); break; case 10: t = jj_consume_token(10); break; default: jj_la1[41] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); break; default: jj_la1[42] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case 10: case 12: case 13: case 15: case 16: case 17: case 18: ; break; default: jj_la1[43] = jj_gen; break label_32; } } {if (true) return (s.toString().toUpperCase()).replace('.','-');} throw new Error("Missing return statement in function"); } /** Generated Token Manager. */ public MsfParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[44]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0x380,0x7fffe,0x7fffe,0x4,0x4,0x4,0x38000,0x7fffe,0x7fffe,0x4,0x4,0x4,0x2,0x4,0x4,0x4000,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x2,0x400004,0x4,0x4,0x2,0x4,0x2,0x3,0x7bff8,0x20,0x7bff8,0x7bffc,0x7bffc,0x7bff8,0x7bffc,0x7bffc,0x7b418,0x7b41c,0x7b41c,}; } /** Constructor with InputStream. */ public MsfParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public MsfParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new MsfParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; } /** Constructor. */ public MsfParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new MsfParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public MsfParser(MsfParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(MsfParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 44; i++) jj_la1[i] = -1; } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[25]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 44; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", "", "", "", "", "\"PileUp\"", "\"!!AA_MULTIPLE_ALIGNMENT\"", "\"!!NA_MULTIPLE_ALIGNMENT\"", "\"-\"", "\"//\"", "\".\"", "\"..\"", "\" oo\"", "\"A\"", "\"N\"", "\"P\"", "\"?\"", "\"MSF:\"", "\"Type:\"", "\"Check:\"", "\"Name:\"", "\"Len:\"", "\"Weight:\"", }; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/MsfParserTokenManager.java000066400000000000000000000737611300536243200314520ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. MsfParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Msf; import es.uvigo.ei.sing.alter.types.MsfSequence; import java.io.StringReader; import java.util.Vector; /** Token Manager. */ public class MsfParserTokenManager implements MsfParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { case 0: if ((active0 & 0x4000L) != 0L) { jjmatchedKind = 2; return -1; } if ((active0 & 0x1b80000L) != 0L) { jjmatchedKind = 3; return -1; } if ((active0 & 0xb00L) != 0L) { jjmatchedKind = 6; return -1; } return -1; case 1: if ((active0 & 0x4000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 2; jjmatchedPos = 0; } return -1; } if ((active0 & 0x1b80000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0xb00L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 2: if ((active0 & 0x4000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 2; jjmatchedPos = 0; } return -1; } if ((active0 & 0x1b80000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 3: if ((active0 & 0x1b80000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 4: if ((active0 & 0x1300000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 5: if ((active0 & 0x1200000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 6: if ((active0 & 0x1000000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 7: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 8: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 9: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 10: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 11: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 12: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 13: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 14: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 15: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 16: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 17: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 18: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 19: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 20: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 21: if ((active0 & 0x300L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 32: return jjMoveStringLiteralDfa1_0(0x4000L); case 33: return jjMoveStringLiteralDfa1_0(0x300L); case 45: return jjStopAtPos(0, 10); case 46: jjmatchedKind = 12; return jjMoveStringLiteralDfa1_0(0x2000L); case 47: return jjMoveStringLiteralDfa1_0(0x800L); case 63: return jjStopAtPos(0, 18); case 65: return jjStopAtPos(0, 15); case 67: return jjMoveStringLiteralDfa1_0(0x200000L); case 76: return jjMoveStringLiteralDfa1_0(0x800000L); case 77: return jjMoveStringLiteralDfa1_0(0x80000L); case 78: jjmatchedKind = 16; return jjMoveStringLiteralDfa1_0(0x400000L); case 80: jjmatchedKind = 17; return jjMoveStringLiteralDfa1_0(0x80L); case 84: return jjMoveStringLiteralDfa1_0(0x100000L); case 87: return jjMoveStringLiteralDfa1_0(0x1000000L); default : return jjMoveNfa_0(0, 0); } } private int jjMoveStringLiteralDfa1_0(long active0) { try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(0, active0); return 1; } switch(curChar) { case 33: return jjMoveStringLiteralDfa2_0(active0, 0x300L); case 46: if ((active0 & 0x2000L) != 0L) return jjStopAtPos(1, 13); break; case 47: if ((active0 & 0x800L) != 0L) return jjStopAtPos(1, 11); break; case 83: return jjMoveStringLiteralDfa2_0(active0, 0x80000L); case 97: return jjMoveStringLiteralDfa2_0(active0, 0x400000L); case 101: return jjMoveStringLiteralDfa2_0(active0, 0x1800000L); case 104: return jjMoveStringLiteralDfa2_0(active0, 0x200000L); case 105: return jjMoveStringLiteralDfa2_0(active0, 0x80L); case 111: return jjMoveStringLiteralDfa2_0(active0, 0x4000L); case 121: return jjMoveStringLiteralDfa2_0(active0, 0x100000L); default : break; } return jjStartNfa_0(0, active0); } private int jjMoveStringLiteralDfa2_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(0, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(1, active0); return 2; } switch(curChar) { case 65: return jjMoveStringLiteralDfa3_0(active0, 0x100L); case 70: return jjMoveStringLiteralDfa3_0(active0, 0x80000L); case 78: return jjMoveStringLiteralDfa3_0(active0, 0x200L); case 101: return jjMoveStringLiteralDfa3_0(active0, 0x200000L); case 105: return jjMoveStringLiteralDfa3_0(active0, 0x1000000L); case 108: return jjMoveStringLiteralDfa3_0(active0, 0x80L); case 109: return jjMoveStringLiteralDfa3_0(active0, 0x400000L); case 110: return jjMoveStringLiteralDfa3_0(active0, 0x800000L); case 111: if ((active0 & 0x4000L) != 0L) return jjStopAtPos(2, 14); break; case 112: return jjMoveStringLiteralDfa3_0(active0, 0x100000L); default : break; } return jjStartNfa_0(1, active0); } private int jjMoveStringLiteralDfa3_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(1, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(2, active0); return 3; } switch(curChar) { case 58: if ((active0 & 0x80000L) != 0L) return jjStopAtPos(3, 19); else if ((active0 & 0x800000L) != 0L) return jjStopAtPos(3, 23); break; case 65: return jjMoveStringLiteralDfa4_0(active0, 0x300L); case 99: return jjMoveStringLiteralDfa4_0(active0, 0x200000L); case 101: return jjMoveStringLiteralDfa4_0(active0, 0x500080L); case 103: return jjMoveStringLiteralDfa4_0(active0, 0x1000000L); default : break; } return jjStartNfa_0(2, active0); } private int jjMoveStringLiteralDfa4_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(2, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(3, active0); return 4; } switch(curChar) { case 58: if ((active0 & 0x100000L) != 0L) return jjStopAtPos(4, 20); else if ((active0 & 0x400000L) != 0L) return jjStopAtPos(4, 22); break; case 85: return jjMoveStringLiteralDfa5_0(active0, 0x80L); case 95: return jjMoveStringLiteralDfa5_0(active0, 0x300L); case 104: return jjMoveStringLiteralDfa5_0(active0, 0x1000000L); case 107: return jjMoveStringLiteralDfa5_0(active0, 0x200000L); default : break; } return jjStartNfa_0(3, active0); } private int jjMoveStringLiteralDfa5_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(3, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(4, active0); return 5; } switch(curChar) { case 58: if ((active0 & 0x200000L) != 0L) return jjStopAtPos(5, 21); break; case 77: return jjMoveStringLiteralDfa6_0(active0, 0x300L); case 112: if ((active0 & 0x80L) != 0L) return jjStopAtPos(5, 7); break; case 116: return jjMoveStringLiteralDfa6_0(active0, 0x1000000L); default : break; } return jjStartNfa_0(4, active0); } private int jjMoveStringLiteralDfa6_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(4, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(5, active0); return 6; } switch(curChar) { case 58: if ((active0 & 0x1000000L) != 0L) return jjStopAtPos(6, 24); break; case 85: return jjMoveStringLiteralDfa7_0(active0, 0x300L); default : break; } return jjStartNfa_0(5, active0); } private int jjMoveStringLiteralDfa7_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(5, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(6, active0); return 7; } switch(curChar) { case 76: return jjMoveStringLiteralDfa8_0(active0, 0x300L); default : break; } return jjStartNfa_0(6, active0); } private int jjMoveStringLiteralDfa8_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(6, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(7, active0); return 8; } switch(curChar) { case 84: return jjMoveStringLiteralDfa9_0(active0, 0x300L); default : break; } return jjStartNfa_0(7, active0); } private int jjMoveStringLiteralDfa9_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(7, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(8, active0); return 9; } switch(curChar) { case 73: return jjMoveStringLiteralDfa10_0(active0, 0x300L); default : break; } return jjStartNfa_0(8, active0); } private int jjMoveStringLiteralDfa10_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(8, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(9, active0); return 10; } switch(curChar) { case 80: return jjMoveStringLiteralDfa11_0(active0, 0x300L); default : break; } return jjStartNfa_0(9, active0); } private int jjMoveStringLiteralDfa11_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(9, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(10, active0); return 11; } switch(curChar) { case 76: return jjMoveStringLiteralDfa12_0(active0, 0x300L); default : break; } return jjStartNfa_0(10, active0); } private int jjMoveStringLiteralDfa12_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(10, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(11, active0); return 12; } switch(curChar) { case 69: return jjMoveStringLiteralDfa13_0(active0, 0x300L); default : break; } return jjStartNfa_0(11, active0); } private int jjMoveStringLiteralDfa13_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(11, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(12, active0); return 13; } switch(curChar) { case 95: return jjMoveStringLiteralDfa14_0(active0, 0x300L); default : break; } return jjStartNfa_0(12, active0); } private int jjMoveStringLiteralDfa14_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(12, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(13, active0); return 14; } switch(curChar) { case 65: return jjMoveStringLiteralDfa15_0(active0, 0x300L); default : break; } return jjStartNfa_0(13, active0); } private int jjMoveStringLiteralDfa15_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(13, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(14, active0); return 15; } switch(curChar) { case 76: return jjMoveStringLiteralDfa16_0(active0, 0x300L); default : break; } return jjStartNfa_0(14, active0); } private int jjMoveStringLiteralDfa16_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(14, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(15, active0); return 16; } switch(curChar) { case 73: return jjMoveStringLiteralDfa17_0(active0, 0x300L); default : break; } return jjStartNfa_0(15, active0); } private int jjMoveStringLiteralDfa17_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(15, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(16, active0); return 17; } switch(curChar) { case 71: return jjMoveStringLiteralDfa18_0(active0, 0x300L); default : break; } return jjStartNfa_0(16, active0); } private int jjMoveStringLiteralDfa18_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(16, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(17, active0); return 18; } switch(curChar) { case 78: return jjMoveStringLiteralDfa19_0(active0, 0x300L); default : break; } return jjStartNfa_0(17, active0); } private int jjMoveStringLiteralDfa19_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(17, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(18, active0); return 19; } switch(curChar) { case 77: return jjMoveStringLiteralDfa20_0(active0, 0x300L); default : break; } return jjStartNfa_0(18, active0); } private int jjMoveStringLiteralDfa20_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(18, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(19, active0); return 20; } switch(curChar) { case 69: return jjMoveStringLiteralDfa21_0(active0, 0x300L); default : break; } return jjStartNfa_0(19, active0); } private int jjMoveStringLiteralDfa21_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(19, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(20, active0); return 21; } switch(curChar) { case 78: return jjMoveStringLiteralDfa22_0(active0, 0x300L); default : break; } return jjStartNfa_0(20, active0); } private int jjMoveStringLiteralDfa22_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(20, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(21, active0); return 22; } switch(curChar) { case 84: if ((active0 & 0x100L) != 0L) return jjStopAtPos(22, 8); else if ((active0 & 0x200L) != 0L) return jjStopAtPos(22, 9); break; default : break; } return jjStartNfa_0(21, active0); } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 8; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x7c009ffeffffd9ffL & l) != 0L) { if (kind > 6) kind = 6; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 6: if ((0x3ff000000000000L & l) != 0L) kind = 5; break; case 7: if ((0x7c009ffeffffd9ffL & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0x7fffffe00000000L & l) != 0L) { if (kind > 4) kind = 4; } else if ((0x7febffcL & l) != 0L) { if (kind > 3) kind = 3; } else if ((0xf8000001f8000001L & l) != 0L) { if (kind > 6) kind = 6; } break; case 4: if ((0x7febffcL & l) != 0L) kind = 3; break; case 5: if ((0x7fffffe00000000L & l) != 0L) kind = 4; break; case 7: if ((0xf8000001f8000001L & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 6) kind = 6; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, "\120\151\154\145\125\160", "\41\41\101\101\137\115\125\114\124\111\120\114\105\137\101\114\111\107\116\115\105\116\124", "\41\41\116\101\137\115\125\114\124\111\120\114\105\137\101\114\111\107\116\115\105\116\124", "\55", "\57\57", "\56", "\56\56", "\40\157\157", "\101", "\116", "\120", "\77", "\115\123\106\72", "\124\171\160\145\72", "\103\150\145\143\153\72", "\116\141\155\145\72", "\114\145\156\72", "\127\145\151\147\150\164\72", }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[8]; private final int[] jjstateSet = new int[16]; protected char curChar; /** Constructor. */ public MsfParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public MsfParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 8; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 1 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); matchedToken = jjFillToken(); return matchedToken; } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/NexusParser.java000066400000000000000000001506011300536243200275200ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. NexusParser.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Nexus; import es.uvigo.ei.sing.alter.types.NexusSequence; import java.io.StringReader; import java.util.Vector; /** * NEXUS format parser. * @author Daniel Gomez Blanco * @version 1.3 */ public class NexusParser implements NexusParserConstants { /** * Static method that parses an input string and returns a MSA in NEXUS format. * @param in Input string. * @return MSA in NEXUS format. */ public static Nexus parseMSA (String in) throws ParseException { //Parse string and return MSA NexusParser parser = new NexusParser(new StringReader(in)); return parser.Nexus(); } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until "#NEXUS".
*   2. "#NEXUS".
*   3. Any combination of characters until "BEGIN DATA;".
*   4. "BEGIN DATA;"
*   5. Any combination of characters until "ntax=".
*   6. "ntax=" followed by the taxa number (number of sequences in the MSA), * "nchar=" followed by the sequences length and ";".
*   7. Any character until "datatype=".
*   8. "datatype=" followed by the MSA type.
*   9. Any character until "matrix".
*   10. Sequences in NEXUS format:
*     10a. Sequence identifier.
*     10a. Data line.
*   11. ";".
*   12. "end;".
*   13. Any combination of characters until the end of file.
* @return MSA in NEXUS format. */ final public Nexus Nexus() throws ParseException { Vector seqs = new Vector(); int taxa = 0,length = 0; String id, data; String type = ""; int cont = 0; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(10); label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: ; break; default: jj_la1[2] = jj_gen; break label_2; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 10: jj_consume_token(10); break; case 15: jj_consume_token(15); break; case 16: jj_consume_token(16); break; case 17: jj_consume_token(17); break; case 18: jj_consume_token(18); break; case 19: jj_consume_token(19); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[3] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 23: jj_consume_token(23); jj_consume_token(11); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 11: case 12: case 13: case 14: case 20: case 21: case 22: ; break; default: jj_la1[4] = jj_gen; break label_3; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[5] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 15: jj_consume_token(15); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[6] = jj_gen; break label_5; } jj_consume_token(BLANK); } jj_consume_token(20); label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[7] = jj_gen; break label_6; } jj_consume_token(BLANK); } taxa = Number(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case 11: jj_consume_token(11); break; default: jj_la1[8] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case 16: jj_consume_token(16); label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[9] = jj_gen; break label_7; } jj_consume_token(BLANK); } jj_consume_token(20); label_8: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[10] = jj_gen; break label_8; } jj_consume_token(BLANK); } length = Number(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case 11: jj_consume_token(11); break; default: jj_la1[11] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case 17: jj_consume_token(17); label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[12] = jj_gen; break label_9; } jj_consume_token(BLANK); } jj_consume_token(20); label_10: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[13] = jj_gen; break label_10; } jj_consume_token(BLANK); } type = Type(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case 11: jj_consume_token(11); break; default: jj_la1[14] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[15] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_11: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 11: case 12: case 13: case 14: case 20: case 21: case 22: ; break; default: jj_la1[16] = jj_gen; break label_11; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[17] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 15: case 16: case 17: ; break; default: jj_la1[18] = jj_gen; break label_4; } } if (taxa == 0) {if (true) throw new ParseException("Number of sequences (ntax) missing in NEXUS header.");} if (length == 0) {if (true) throw new ParseException("Sequences length (nchar) missing in NEXUS header.");} if (type.isEmpty()) {if (true) throw new ParseException("MSA type (datatype) missing in NEXUS header.");} break; case 24: jj_consume_token(24); jj_consume_token(11); label_12: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 11: case 12: case 13: case 14: case 20: case 21: case 22: ; break; default: jj_la1[19] = jj_gen; break label_12; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[20] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(15); label_13: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[21] = jj_gen; break label_13; } jj_consume_token(BLANK); } jj_consume_token(20); label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[22] = jj_gen; break label_14; } jj_consume_token(BLANK); } taxa = Number(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case 11: jj_consume_token(11); break; default: jj_la1[23] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_15: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 11: case 12: case 13: case 14: case 20: case 21: case 22: ; break; default: jj_la1[24] = jj_gen; break label_15; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[25] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(19); if (taxa == 0) {if (true) throw new ParseException("Number of sequences (ntax) missing in NEXUS header.");} label_16: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 11: case 12: case 13: case 14: case 20: case 21: case 22: ; break; default: jj_la1[26] = jj_gen; break label_16; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[27] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(25); jj_consume_token(11); label_17: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 11: case 12: case 13: case 14: case 20: case 21: case 22: ; break; default: jj_la1[28] = jj_gen; break label_17; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[29] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } label_18: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 16: jj_consume_token(16); label_19: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[30] = jj_gen; break label_19; } jj_consume_token(BLANK); } jj_consume_token(20); label_20: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[31] = jj_gen; break label_20; } jj_consume_token(BLANK); } length = Number(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case 11: jj_consume_token(11); break; default: jj_la1[32] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case 17: jj_consume_token(17); label_21: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[33] = jj_gen; break label_21; } jj_consume_token(BLANK); } jj_consume_token(20); label_22: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[34] = jj_gen; break label_22; } jj_consume_token(BLANK); } type = Type(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; case 11: jj_consume_token(11); break; default: jj_la1[35] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[36] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_23: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 11: case 12: case 13: case 14: case 20: case 21: case 22: ; break; default: jj_la1[37] = jj_gen; break label_23; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[38] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 16: case 17: ; break; default: jj_la1[39] = jj_gen; break label_18; } } if (length == 0) {if (true) throw new ParseException("Sequences length (nchar) missing in NEXUS header.");} if (type.isEmpty()) {if (true) throw new ParseException("MSA type (datatype) missing in NEXUS header.");} break; default: jj_la1[40] = jj_gen; jj_consume_token(-1); throw new ParseException(); } jj_consume_token(18); label_24: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[41] = jj_gen; break label_24; } jj_consume_token(BLANK); } label_25: while (true) { jj_consume_token(EOL); label_26: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[42] = jj_gen; break label_26; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[43] = jj_gen; break label_25; } } label_27: while (true) { id = Id(); jj_consume_token(BLANK); data = DataLine(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 11: jj_consume_token(11); label_28: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[44] = jj_gen; break label_28; } jj_consume_token(BLANK); } break; default: jj_la1[45] = jj_gen; ; } label_29: while (true) { jj_consume_token(EOL); label_30: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[46] = jj_gen; break label_30; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[47] = jj_gen; break label_29; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 11: jj_consume_token(11); label_31: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[48] = jj_gen; break label_31; } jj_consume_token(BLANK); } label_32: while (true) { jj_consume_token(EOL); label_33: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[49] = jj_gen; break label_33; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[50] = jj_gen; break label_32; } } break; default: jj_la1[51] = jj_gen; ; } seqs.add(new NexusSequence(id, data)); cont++; if (cont == taxa) { cont = 0; break; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 20: case 21: case 22: case 23: ; break; default: jj_la1[52] = jj_gen; break label_27; } } label_34: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 20: case 21: case 22: case 23: ; break; default: jj_la1[53] = jj_gen; break label_34; } IdSeq(seqs.elementAt(cont).getId()); jj_consume_token(BLANK); data = DataLine(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 11: jj_consume_token(11); label_35: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[54] = jj_gen; break label_35; } jj_consume_token(BLANK); } break; default: jj_la1[55] = jj_gen; ; } label_36: while (true) { jj_consume_token(EOL); label_37: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[56] = jj_gen; break label_37; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[57] = jj_gen; break label_36; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 11: jj_consume_token(11); label_38: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[58] = jj_gen; break label_38; } jj_consume_token(BLANK); } label_39: while (true) { jj_consume_token(EOL); label_40: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[59] = jj_gen; break label_40; } jj_consume_token(BLANK); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: ; break; default: jj_la1[60] = jj_gen; break label_39; } } break; default: jj_la1[61] = jj_gen; ; } seqs.elementAt(cont).concat(data); cont++; if (cont == seqs.size()) cont = 0; } jj_consume_token(19); label_41: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: ; break; default: jj_la1[62] = jj_gen; break label_41; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: jj_consume_token(UPPER_CASE); break; case LOWER_CASE: jj_consume_token(LOWER_CASE); break; case NUMBER: jj_consume_token(NUMBER); break; case ANY: jj_consume_token(ANY); break; case 11: jj_consume_token(11); break; case 12: jj_consume_token(12); break; case 13: jj_consume_token(13); break; case 14: jj_consume_token(14); break; case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; case 10: jj_consume_token(10); break; case 15: jj_consume_token(15); break; case 16: jj_consume_token(16); break; case 17: jj_consume_token(17); break; case 18: jj_consume_token(18); break; case 19: jj_consume_token(19); break; case 23: jj_consume_token(23); break; case 24: jj_consume_token(24); break; case 25: jj_consume_token(25); break; case 20: jj_consume_token(20); break; case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[63] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(0); {if (true) return new Nexus(taxa, length, type, seqs);} throw new Error("Missing return statement in function"); } /** * Parses a number. * @return Parsed number. */ final public int Number() throws ParseException { String s = ""; Token t; label_42: while (true) { t = jj_consume_token(NUMBER); s = s.concat(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NUMBER: ; break; default: jj_la1[64] = jj_gen; break label_42; } } {if (true) return Integer.parseInt(s);} throw new Error("Missing return statement in function"); } /** * Parses a NEXUS style type. * @return String with the type. */ final public String Type() throws ParseException { String s = ""; Token t; label_43: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; default: jj_la1[65] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s = s.concat(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: ; break; default: jj_la1[66] = jj_gen; break label_43; } } {if (true) return s.toUpperCase();} throw new Error("Missing return statement in function"); } /** * Parses a sequence identifier. An identifier cannot contain spaces or start with ";". * @return Sequence identifier. */ final public String Id() throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 21: case 22: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[67] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_44: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 18: t = jj_consume_token(18); break; case 16: t = jj_consume_token(16); break; case 15: t = jj_consume_token(15); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 23: t = jj_consume_token(23); break; case 19: t = jj_consume_token(19); break; case 20: t = jj_consume_token(20); break; default: jj_la1[68] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 23: ; break; default: jj_la1[69] = jj_gen; break label_44; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[70] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 20: case 23: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 18: t = jj_consume_token(18); break; case 16: t = jj_consume_token(16); break; case 15: t = jj_consume_token(15); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 23: t = jj_consume_token(23); break; case 20: t = jj_consume_token(20); break; default: jj_la1[71] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_45: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: ; break; default: jj_la1[72] = jj_gen; break label_45; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 18: t = jj_consume_token(18); break; case 16: t = jj_consume_token(16); break; case 15: t = jj_consume_token(15); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 23: t = jj_consume_token(23); break; case 19: t = jj_consume_token(19); break; case 20: t = jj_consume_token(20); break; case 21: t = jj_consume_token(21); break; case 22: t = jj_consume_token(22); break; default: jj_la1[73] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); } break; default: jj_la1[74] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return s.toString();} throw new Error("Missing return statement in function"); } /** * Same behaviour as Id(), but in this case equality between the already read * identifier and the current one is checked. * @param id Identifier to parse. */ final public void IdSeq(String id) throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 21: case 22: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[75] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_46: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 18: t = jj_consume_token(18); break; case 16: t = jj_consume_token(16); break; case 15: t = jj_consume_token(15); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 23: t = jj_consume_token(23); break; case 19: t = jj_consume_token(19); break; case 20: t = jj_consume_token(20); break; default: jj_la1[76] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 23: ; break; default: jj_la1[77] = jj_gen; break label_46; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 21: jj_consume_token(21); break; case 22: jj_consume_token(22); break; default: jj_la1[78] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 20: case 23: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 18: t = jj_consume_token(18); break; case 16: t = jj_consume_token(16); break; case 15: t = jj_consume_token(15); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 23: t = jj_consume_token(23); break; case 20: t = jj_consume_token(20); break; default: jj_la1[79] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_47: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: ; break; default: jj_la1[80] = jj_gen; break label_47; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; case 18: t = jj_consume_token(18); break; case 16: t = jj_consume_token(16); break; case 15: t = jj_consume_token(15); break; case 17: t = jj_consume_token(17); break; case 10: t = jj_consume_token(10); break; case 23: t = jj_consume_token(23); break; case 19: t = jj_consume_token(19); break; case 20: t = jj_consume_token(20); break; case 21: t = jj_consume_token(21); break; case 22: t = jj_consume_token(22); break; default: jj_la1[81] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); } break; default: jj_la1[82] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (!id.equals(s.toString())) {if (true) throw new ParseException("ID for sequence \u005c"" + id + "\u005c"does not match with ID in line " + t.beginLine);} } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "-", "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ final public String DataLine() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_48: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: case LOWER_CASE: case 12: case 13: case 14: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 12: t = jj_consume_token(12); break; case 13: t = jj_consume_token(13); break; case 14: t = jj_consume_token(14); break; default: jj_la1[83] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); break; default: jj_la1[84] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case 12: case 13: case 14: ; break; default: jj_la1[85] = jj_gen; break label_48; } } {if (true) return s.toString().toUpperCase();} throw new Error("Missing return statement in function"); } /** Generated Token Manager. */ public NexusParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[86]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0x7ffc7e,0x7ffc7e,0x70787e,0x70787e,0x4,0x4,0x806,0x4,0x4,0x806,0x4,0x4,0x806,0x38000,0x70787e,0x70787e,0x38000,0x70787e,0x70787e,0x4,0x4,0x806,0x70787e,0x70787e,0x70787e,0x70787e,0x70787e,0x70787e,0x4,0x4,0x806,0x4,0x4,0x806,0x30000,0x70787e,0x70787e,0x30000,0x1800000,0x4,0x4,0x2,0x4,0x800,0x4,0x2,0x4,0x4,0x2,0x800,0xf7f478,0xf7f478,0x4,0x800,0x4,0x2,0x4,0x4,0x2,0x800,0x3fffc7e,0x3fffc7e,0x20,0x18,0x18,0x600000,0x9ff478,0x9ff478,0x600000,0x97f478,0xfffc78,0xfffc78,0xf7f478,0x600000,0x9ff478,0x9ff478,0x600000,0x97f478,0xfffc78,0xfffc78,0xf7f478,0x7018,0x701c,0x701c,}; } /** Constructor with InputStream. */ public NexusParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public NexusParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new NexusParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 86; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 86; i++) jj_la1[i] = -1; } /** Constructor. */ public NexusParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new NexusParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 86; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 86; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public NexusParser(NexusParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 86; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(NexusParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 86; i++) jj_la1[i] = -1; } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[26]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 86; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", "", "", "", "", "\"[\"", "", "\"]\"", "\"#NEXUS\"", "\";\"", "\"-\"", "\".\"", "\"?\"", "\"ntax\"", "\"nchar\"", "\"datatype\"", "\"matrix\"", "\"end;\"", "\"=\"", "\"\\\"\"", "\"\\\'\"", "\"BEGIN DATA\"", "\"BEGIN TAXA\"", "\"BEGIN CHARACTERS\"", }; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/NexusParserTokenManager.java000066400000000000000000000670651300536243200320270ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. NexusParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Nexus; import es.uvigo.ei.sing.alter.types.NexusSequence; import java.io.StringReader; import java.util.Vector; /** Token Manager. */ public class NexusParserTokenManager implements NexusParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { case 0: if ((active0 & 0x38f8000L) != 0L) { jjmatchedKind = 3; return -1; } if ((active0 & 0x400L) != 0L) { jjmatchedKind = 6; return -1; } return -1; case 1: if ((active0 & 0x38f8000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x400L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 2: if ((active0 & 0x38f8000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x400L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 3: if ((active0 & 0x38f8000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x400L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 4: if ((active0 & 0x3870000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x400L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 5: if ((active0 & 0x3860000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } if ((active0 & 0x400L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 6; jjmatchedPos = 0; } return -1; } return -1; case 6: if ((active0 & 0x3820000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 7: if ((active0 & 0x3820000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 8: if ((active0 & 0x3800000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 9: if ((active0 & 0x3800000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 10: if ((active0 & 0x2000000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 11: if ((active0 & 0x2000000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 12: if ((active0 & 0x2000000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 13: if ((active0 & 0x2000000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; case 14: if ((active0 & 0x2000000L) != 0L) { if (jjmatchedPos == 0) { jjmatchedKind = 3; jjmatchedPos = 0; } return -1; } return -1; default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 34: return jjStopAtPos(0, 21); case 35: return jjMoveStringLiteralDfa1_0(0x400L); case 39: return jjStopAtPos(0, 22); case 45: return jjStopAtPos(0, 12); case 46: return jjStopAtPos(0, 13); case 59: return jjStopAtPos(0, 11); case 61: return jjStopAtPos(0, 20); case 63: return jjStopAtPos(0, 14); case 91: return jjStopAtPos(0, 7); case 66: case 98: return jjMoveStringLiteralDfa1_0(0x3800000L); case 68: case 100: return jjMoveStringLiteralDfa1_0(0x20000L); case 69: case 101: return jjMoveStringLiteralDfa1_0(0x80000L); case 77: case 109: return jjMoveStringLiteralDfa1_0(0x40000L); case 78: case 110: return jjMoveStringLiteralDfa1_0(0x18000L); default : return jjMoveNfa_0(0, 0); } } private int jjMoveStringLiteralDfa1_0(long active0) { try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(0, active0); return 1; } switch(curChar) { case 65: case 97: return jjMoveStringLiteralDfa2_0(active0, 0x60000L); case 67: case 99: return jjMoveStringLiteralDfa2_0(active0, 0x10000L); case 69: case 101: return jjMoveStringLiteralDfa2_0(active0, 0x3800000L); case 78: case 110: return jjMoveStringLiteralDfa2_0(active0, 0x80400L); case 84: case 116: return jjMoveStringLiteralDfa2_0(active0, 0x8000L); default : break; } return jjStartNfa_0(0, active0); } private int jjMoveStringLiteralDfa2_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(0, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(1, active0); return 2; } switch(curChar) { case 65: case 97: return jjMoveStringLiteralDfa3_0(active0, 0x8000L); case 68: case 100: return jjMoveStringLiteralDfa3_0(active0, 0x80000L); case 69: case 101: return jjMoveStringLiteralDfa3_0(active0, 0x400L); case 71: case 103: return jjMoveStringLiteralDfa3_0(active0, 0x3800000L); case 72: case 104: return jjMoveStringLiteralDfa3_0(active0, 0x10000L); case 84: case 116: return jjMoveStringLiteralDfa3_0(active0, 0x60000L); default : break; } return jjStartNfa_0(1, active0); } private int jjMoveStringLiteralDfa3_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(1, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(2, active0); return 3; } switch(curChar) { case 59: if ((active0 & 0x80000L) != 0L) return jjStopAtPos(3, 19); break; case 65: case 97: return jjMoveStringLiteralDfa4_0(active0, 0x30000L); case 73: case 105: return jjMoveStringLiteralDfa4_0(active0, 0x3800000L); case 82: case 114: return jjMoveStringLiteralDfa4_0(active0, 0x40000L); case 88: case 120: if ((active0 & 0x8000L) != 0L) return jjStopAtPos(3, 15); return jjMoveStringLiteralDfa4_0(active0, 0x400L); default : break; } return jjStartNfa_0(2, active0); } private int jjMoveStringLiteralDfa4_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(2, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(3, active0); return 4; } switch(curChar) { case 73: case 105: return jjMoveStringLiteralDfa5_0(active0, 0x40000L); case 78: case 110: return jjMoveStringLiteralDfa5_0(active0, 0x3800000L); case 82: case 114: if ((active0 & 0x10000L) != 0L) return jjStopAtPos(4, 16); break; case 84: case 116: return jjMoveStringLiteralDfa5_0(active0, 0x20000L); case 85: case 117: return jjMoveStringLiteralDfa5_0(active0, 0x400L); default : break; } return jjStartNfa_0(3, active0); } private int jjMoveStringLiteralDfa5_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(3, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(4, active0); return 5; } switch(curChar) { case 32: return jjMoveStringLiteralDfa6_0(active0, 0x3800000L); case 83: case 115: if ((active0 & 0x400L) != 0L) return jjStopAtPos(5, 10); break; case 88: case 120: if ((active0 & 0x40000L) != 0L) return jjStopAtPos(5, 18); break; case 89: case 121: return jjMoveStringLiteralDfa6_0(active0, 0x20000L); default : break; } return jjStartNfa_0(4, active0); } private int jjMoveStringLiteralDfa6_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(4, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(5, active0); return 6; } switch(curChar) { case 67: case 99: return jjMoveStringLiteralDfa7_0(active0, 0x2000000L); case 68: case 100: return jjMoveStringLiteralDfa7_0(active0, 0x800000L); case 80: case 112: return jjMoveStringLiteralDfa7_0(active0, 0x20000L); case 84: case 116: return jjMoveStringLiteralDfa7_0(active0, 0x1000000L); default : break; } return jjStartNfa_0(5, active0); } private int jjMoveStringLiteralDfa7_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(5, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(6, active0); return 7; } switch(curChar) { case 65: case 97: return jjMoveStringLiteralDfa8_0(active0, 0x1800000L); case 69: case 101: if ((active0 & 0x20000L) != 0L) return jjStopAtPos(7, 17); break; case 72: case 104: return jjMoveStringLiteralDfa8_0(active0, 0x2000000L); default : break; } return jjStartNfa_0(6, active0); } private int jjMoveStringLiteralDfa8_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(6, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(7, active0); return 8; } switch(curChar) { case 65: case 97: return jjMoveStringLiteralDfa9_0(active0, 0x2000000L); case 84: case 116: return jjMoveStringLiteralDfa9_0(active0, 0x800000L); case 88: case 120: return jjMoveStringLiteralDfa9_0(active0, 0x1000000L); default : break; } return jjStartNfa_0(7, active0); } private int jjMoveStringLiteralDfa9_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(7, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(8, active0); return 9; } switch(curChar) { case 65: case 97: if ((active0 & 0x800000L) != 0L) return jjStopAtPos(9, 23); else if ((active0 & 0x1000000L) != 0L) return jjStopAtPos(9, 24); break; case 82: case 114: return jjMoveStringLiteralDfa10_0(active0, 0x2000000L); default : break; } return jjStartNfa_0(8, active0); } private int jjMoveStringLiteralDfa10_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(8, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(9, active0); return 10; } switch(curChar) { case 65: case 97: return jjMoveStringLiteralDfa11_0(active0, 0x2000000L); default : break; } return jjStartNfa_0(9, active0); } private int jjMoveStringLiteralDfa11_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(9, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(10, active0); return 11; } switch(curChar) { case 67: case 99: return jjMoveStringLiteralDfa12_0(active0, 0x2000000L); default : break; } return jjStartNfa_0(10, active0); } private int jjMoveStringLiteralDfa12_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(10, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(11, active0); return 12; } switch(curChar) { case 84: case 116: return jjMoveStringLiteralDfa13_0(active0, 0x2000000L); default : break; } return jjStartNfa_0(11, active0); } private int jjMoveStringLiteralDfa13_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(11, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(12, active0); return 13; } switch(curChar) { case 69: case 101: return jjMoveStringLiteralDfa14_0(active0, 0x2000000L); default : break; } return jjStartNfa_0(12, active0); } private int jjMoveStringLiteralDfa14_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(12, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(13, active0); return 14; } switch(curChar) { case 82: case 114: return jjMoveStringLiteralDfa15_0(active0, 0x2000000L); default : break; } return jjStartNfa_0(13, active0); } private int jjMoveStringLiteralDfa15_0(long old0, long active0) { if (((active0 &= old0)) == 0L) return jjStartNfa_0(13, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(14, active0); return 15; } switch(curChar) { case 83: case 115: if ((active0 & 0x2000000L) != 0L) return jjStopAtPos(15, 25); break; default : break; } return jjStartNfa_0(14, active0); } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 7; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x54009f7affffd9ffL & l) != 0L) { if (kind > 6) kind = 6; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 4: if ((0x3ff000000000000L & l) != 0L) kind = 5; break; case 5: if ((0x54009f7affffd9ffL & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0x7fffffe07fffffeL & l) != 0L) { if (kind > 3) kind = 3; } else if ((0xf8000001f0000001L & l) != 0L) { if (kind > 6) kind = 6; } break; case 5: if ((0xf8000001f0000001L & l) != 0L) kind = 6; break; case 6: if ((0x7fffffe07fffffeL & l) != 0L) kind = 3; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 6) kind = 6; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } private final int jjStopStringLiteralDfa_1(int pos, long active0) { switch (pos) { default : return -1; } } private final int jjStartNfa_1(int pos, long active0) { return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1); } private int jjMoveStringLiteralDfa0_1() { switch(curChar) { case 93: return jjStopAtPos(0, 9); default : return jjMoveNfa_1(0, 0); } } private int jjMoveNfa_1(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 1; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: kind = 8; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0xffffffffdfffffffL & l) != 0L) kind = 8; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 8) kind = 8; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 1 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, null, null, null, null, "\73", "\55", "\56", "\77", null, null, null, null, null, "\75", "\42", "\47", null, null, null, }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", "IN_COMMENT", }; /** Lex State array. */ public static final int[] jjnewLexState = { -1, -1, -1, -1, -1, -1, -1, 1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }; static final long[] jjtoToken = { 0x3fffc7fL, }; static final long[] jjtoSkip = { 0x200L, }; static final long[] jjtoMore = { 0x180L, }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[7]; private final int[] jjstateSet = new int[14]; protected char curChar; /** Constructor. */ public NexusParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public NexusParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 7; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 2 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } for (;;) { switch(curLexState) { case 0: jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); break; case 1: jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_1(); break; } if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) { matchedToken = jjFillToken(); if (jjnewLexState[jjmatchedKind] != -1) curLexState = jjnewLexState[jjmatchedKind]; return matchedToken; } else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) { if (jjnewLexState[jjmatchedKind] != -1) curLexState = jjnewLexState[jjmatchedKind]; continue EOFLoop; } if (jjnewLexState[jjmatchedKind] != -1) curLexState = jjnewLexState[jjmatchedKind]; curPos = 0; jjmatchedKind = 0x7fffffff; try { curChar = input_stream.readChar(); continue; } catch (java.io.IOException e1) { } } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/ParseException.java000066400000000000000000000140531300536243200301720ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */ /* JavaCCOptions:KEEP_LINE_COL=null */ package es.uvigo.ei.sing.alter.parser; /** * This exception is thrown when parse errors are encountered. * You can explicitly create objects of this exception type by * calling the method generateParseException in the generated * parser. * * You can modify this class to customize your error reporting * mechanisms so long as you retain the public fields. */ public class ParseException extends Exception { /** * The version identifier for this Serializable class. * Increment only if the serialized form of the * class changes. */ private static final long serialVersionUID = 1L; /** * This constructor is used by the method "generateParseException" * in the generated parser. Calling this constructor generates * a new object of this type with the fields "currentToken", * "expectedTokenSequences", and "tokenImage" set. */ public ParseException(Token currentTokenVal, int[][] expectedTokenSequencesVal, String[] tokenImageVal ) { super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal)); currentToken = currentTokenVal; expectedTokenSequences = expectedTokenSequencesVal; tokenImage = tokenImageVal; } /** * The following constructors are for use by you for whatever * purpose you can think of. Constructing the exception in this * manner makes the exception behave in the normal way - i.e., as * documented in the class "Throwable". The fields "errorToken", * "expectedTokenSequences", and "tokenImage" do not contain * relevant information. The JavaCC generated code does not use * these constructors. */ public ParseException() { super(); } /** Constructor with message. */ public ParseException(String message) { super(message); } /** * This is the last token that has been consumed successfully. If * this object has been created due to a parse error, the token * followng this token will (therefore) be the first error token. */ public Token currentToken; /** * Each entry in this array is an array of integers. Each array * of integers represents a sequence of tokens (by their ordinal * values) that is expected at this point of the parse. */ public int[][] expectedTokenSequences; /** * This is a reference to the "tokenImage" array of the generated * parser within which the parse error occurred. This array is * defined in the generated ...Constants interface. */ public String[] tokenImage; /** * It uses "currentToken" and "expectedTokenSequences" to generate a parse * error message and returns it. If this object has been created * due to a parse error, and you do not catch it (it gets thrown * from the parser) the correct error message * gets displayed. */ private static String initialise(Token currentToken, int[][] expectedTokenSequences, String[] tokenImage) { String eol = System.getProperty("line.separator", "\n"); StringBuffer expected = new StringBuffer(); int maxSize = 0; for (int i = 0; i < expectedTokenSequences.length; i++) { if (maxSize < expectedTokenSequences[i].length) { maxSize = expectedTokenSequences[i].length; } for (int j = 0; j < expectedTokenSequences[i].length; j++) { expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' '); } if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { expected.append("..."); } expected.append(eol).append(" "); } String retval = "Encountered \""; Token tok = currentToken.next; for (int i = 0; i < maxSize; i++) { if (i != 0) retval += " "; if (tok.kind == 0) { retval += tokenImage[0]; break; } retval += " " + tokenImage[tok.kind]; retval += " \""; retval += add_escapes(tok.image); retval += " \""; tok = tok.next; } retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; retval += "." + eol; if (expectedTokenSequences.length == 1) { retval += "Was expecting:" + eol + " "; } else { retval += "Was expecting one of:" + eol + " "; } retval += expected.toString(); return retval; } /** * The end of line string for this machine. */ protected String eol = System.getProperty("line.separator", "\n"); /** * Used to convert raw characters to their escaped version * when these raw version cannot be used as part of an ASCII * string literal. */ static String add_escapes(String str) { StringBuffer retval = new StringBuffer(); char ch; for (int i = 0; i < str.length(); i++) { switch (str.charAt(i)) { case 0 : continue; case '\b': retval.append("\\b"); continue; case '\t': retval.append("\\t"); continue; case '\n': retval.append("\\n"); continue; case '\f': retval.append("\\f"); continue; case '\r': retval.append("\\r"); continue; case '\"': retval.append("\\\""); continue; case '\'': retval.append("\\\'"); continue; case '\\': retval.append("\\\\"); continue; default: if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { String s = "0000" + Integer.toString(ch, 16); retval.append("\\u" + s.substring(s.length() - 4, s.length())); } else { retval.append(ch); } continue; } } return retval.toString(); } } /* JavaCC - OriginalChecksum=16ba3edbb338127335444b2b77a37aa1 (do not edit this line) */ ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/PhylipParser.java000066400000000000000000000731171300536243200276710ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. PhylipParser.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Phylip; import es.uvigo.ei.sing.alter.types.PhylipSequence; import java.io.StringReader; import java.util.Vector; import java.util.StringTokenizer; /** * PHYLIP format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class PhylipParser implements PhylipParserConstants { /** * Static method that parses an input string and returns a MSA in PHYLIP format. * @param in Input string. * @return MSA in PHYLIP format. */ public static Phylip parseMSA (String in) throws ParseException { //Parse string and return MSA PhylipParser parser = new PhylipParser(new StringReader(in)); return parser.Phylip(); } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines * until a number is found.
*   2. Taxa number (number of sequences) followed by one or more * spaces or tabs and the sequences length. Any character can follow until * the end of the line, these characters will be omitted.
*   3. Any combination of spaces, tabs and new lines * until the first sequence identifier.
*   4. If the MSA is in sequential format sequences with the following structure follow:
*     4a. Sequence identifier.
*     4b. Sequence data.
*   5. If the MSA is in interleaved format lines with the following structure follow:
*     5a. Sequence identifier.
*     5b. Sequence data line.
* @return MSA in PHYLIP format. */ final public Phylip Phylip() throws ParseException { Vector seqs = new Vector(); int taxa, length; String id1, id2, data1, data2; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } taxa = Number(); label_2: while (true) { jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[2] = jj_gen; break label_2; } } length = Number(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: label_3: while (true) { jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[3] = jj_gen; break label_3; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: Line(); jj_consume_token(EOL); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[5] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[6] = jj_gen; break label_4; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } id1 = Id(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: label_5: while (true) { jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[8] = jj_gen; break label_5; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; default: jj_la1[9] = jj_gen; ; } break; default: jj_la1[10] = jj_gen; jj_consume_token(-1); throw new ParseException(); } data1 = DataLine(); jj_consume_token(EOL); label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[11] = jj_gen; break label_6; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[12] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } id2 = Id(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: label_7: while (true) { jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[13] = jj_gen; break label_7; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; default: jj_la1[14] = jj_gen; ; } break; default: jj_la1[15] = jj_gen; jj_consume_token(-1); throw new ParseException(); } data2 = DataLine(); jj_consume_token(EOL); label_8: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[16] = jj_gen; break label_8; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[17] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } if(data1.length() > data2.length()) { StringBuffer data = new StringBuffer(); data.append(data1); data.append(id2); data.append(data2); seqs.add(new PhylipSequence(id1, data.toString())); int read = seqs.firstElement().getData().length(); seqs.firstElement().concat(Data(length - read)); //It's sequential PhylipSeq(length, seqs); } else { seqs.add(new PhylipSequence(id1,data1)); seqs.add(new PhylipSequence(id2,data2)); //It's interleaved PhylipIntIds(taxa - 2, seqs); PhylipIntSeqs(taxa, seqs); } jj_consume_token(0); {if (true) return new Phylip(taxa, length, seqs);} throw new Error("Missing return statement in function"); } /** * Parses the first sequences of an interleaved PHYLIP, adding a new sequence * to the vector for every parsed line. * @param taxa Number of sequences to be parsed. * @param seqs Sequences vector. */ final public void PhylipIntIds(int taxa, Vector seqs) throws ParseException { if (taxa == 0) return; int cont = 0; String id, data; label_9: while (true) { id = Id(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: label_10: while (true) { jj_consume_token(BLANK); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[18] = jj_gen; break label_10; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; default: jj_la1[19] = jj_gen; ; } break; default: jj_la1[20] = jj_gen; jj_consume_token(-1); throw new ParseException(); } data = DataLine(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 0: jj_consume_token(0); break; case EOL: jj_consume_token(EOL); label_11: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[21] = jj_gen; break label_11; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[22] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } break; default: jj_la1[23] = jj_gen; jj_consume_token(-1); throw new ParseException(); } seqs.add(new PhylipSequence(id, data)); cont++; if (cont == taxa) {if (true) return;} switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: ; break; default: jj_la1[24] = jj_gen; break label_9; } } } /** * Parses de rest of the sequences of an interleaved PHYLIP, concating them to the * already read ones. * @param taxa Number of sequences to be parsed. * @param seqs Sequences vector. */ final public void PhylipIntSeqs(int taxa, Vector seqs) throws ParseException { int cont = 0; String data; label_12: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case 9: case 10: case 11: ; break; default: jj_la1[25] = jj_gen; break label_12; } data = DataLine(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 0: jj_consume_token(0); break; case EOL: jj_consume_token(EOL); label_13: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[26] = jj_gen; break label_13; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[27] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } break; default: jj_la1[28] = jj_gen; jj_consume_token(-1); throw new ParseException(); } seqs.elementAt(cont).concat(data); cont++; if (cont == taxa) cont = 0; } } /** * Parses the sequences of a sequential PHYLIP, adding a new sequence to the sequences vector * for every parsed line. * @param length Length of the sequences to be parsed. * @seqs Sequences vector. */ final public void PhylipSeq(int length, Vector seqs) throws ParseException { String id, data; label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[29] = jj_gen; break label_14; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[30] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } label_15: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: ; break; default: jj_la1[31] = jj_gen; break label_15; } id = Id(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[32] = jj_gen; jj_consume_token(-1); throw new ParseException(); } data = Data(length); label_16: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[33] = jj_gen; break label_16; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: jj_consume_token(BLANK); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[34] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } seqs.add(new PhylipSequence(id,data)); } } /** * Parses a number. * @return Parsed number. */ final public int Number() throws ParseException { String s = ""; Token t; label_17: while (true) { t = jj_consume_token(NUMBER); s = s.concat(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NUMBER: ; break; default: jj_la1[35] = jj_gen; break label_17; } } {if (true) return Integer.parseInt(s);} throw new Error("Missing return statement in function"); } /** * Parses a sequence identifier. * @return Sequence identifier. */ final public String Id() throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: case 8: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: jj_consume_token(7); break; case 8: jj_consume_token(8); break; default: jj_la1[36] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_18: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; default: jj_la1[37] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 9: case 10: case 11: ; break; default: jj_la1[38] = jj_gen; break label_18; } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: jj_consume_token(7); break; case 8: jj_consume_token(8); break; default: jj_la1[39] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 9: case 10: case 11: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; default: jj_la1[40] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_19: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: ; break; default: jj_la1[41] = jj_gen; break label_19; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; default: jj_la1[42] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); } break; default: jj_la1[43] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return s.toString().trim();} throw new Error("Missing return statement in function"); } /** * Parses a line made up of any character sequence. * @return Parsed line. */ final public String Line() throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; default: jj_la1[44] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_20: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: ; break; default: jj_la1[45] = jj_gen; break label_20; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; default: jj_la1[46] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); } {if (true) return s.toString().trim();} throw new Error("Missing return statement in function"); } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "-", "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ final public String DataLine() throws ParseException { StringBuffer s = new StringBuffer(); Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; default: jj_la1[47] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); label_21: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case 9: case 10: case 11: ; break; default: jj_la1[48] = jj_gen; break label_21; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: case LOWER_CASE: case 9: case 10: case 11: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; default: jj_la1[49] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); break; default: jj_la1[50] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } {if (true) return s.toString().toUpperCase();} throw new Error("Missing return statement in function"); } /** * Parses the data of a sequence with the given length. These data can be made up * of any characters from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @param length Length of the sequence to be parsed. * @return String with the sequence data (uppercase always). */ final public String Data(int length) throws ParseException { StringBuffer s = new StringBuffer(); Token t; int chars = 0; if (length==0) return ""; label_22: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case EOL: t = jj_consume_token(EOL); break; default: jj_la1[51] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case 9: case 10: case 11: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; default: jj_la1[52] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); chars++; if(chars == length) {if (true) return s.toString().toUpperCase();} break; default: jj_la1[53] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case 9: case 10: case 11: ; break; default: jj_la1[54] = jj_gen; break label_22; } } {if (true) return s.toString().toUpperCase();} throw new Error("Missing return statement in function"); } /** Generated Token Manager. */ public PhylipParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[55]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0x4,0x4,0xffa,0x6,0x6,0x6,0x4,0x2,0x6,0x6,0x6,0x4,0x2,0x6,0x6,0x6,0x4,0x2,0x6,0x6,0x6,0x3,0xff8,0xe18,0x6,0x6,0x3,0x6,0x6,0xff8,0x6,0x6,0x6,0x20,0x180,0xe7c,0xe7c,0x180,0xe78,0xff8,0xff8,0xff8,0xff8,0xffc,0xffc,0xe18,0xe1c,0xe18,0xe1c,0x6,0xe18,0xe1e,0xe1e,}; } /** Constructor with InputStream. */ public PhylipParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public PhylipParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new PhylipParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 55; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 55; i++) jj_la1[i] = -1; } /** Constructor. */ public PhylipParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new PhylipParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 55; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 55; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public PhylipParser(PhylipParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 55; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(PhylipParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 55; i++) jj_la1[i] = -1; } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[12]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 55; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", "", "", "", "", "\"\\\"\"", "\"\\\'\"", "\"-\"", "\".\"", "\"?\"", }; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/PhylipParserTokenManager.java000066400000000000000000000222741300536243200321630ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. PhylipParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Phylip; import es.uvigo.ei.sing.alter.types.PhylipSequence; import java.io.StringReader; import java.util.Vector; import java.util.StringTokenizer; /** Token Manager. */ public class PhylipParserTokenManager implements PhylipParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 34: return jjStopAtPos(0, 7); case 39: return jjStopAtPos(0, 8); case 45: return jjStopAtPos(0, 9); case 46: return jjStopAtPos(0, 10); case 63: return jjStopAtPos(0, 11); default : return jjMoveNfa_0(0, 0); } } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 8; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x7c009f7affffd9ffL & l) != 0L) { if (kind > 6) kind = 6; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 6: if ((0x3ff000000000000L & l) != 0L) kind = 5; break; case 7: if ((0x7c009f7affffd9ffL & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0x7fffffe00000000L & l) != 0L) { if (kind > 4) kind = 4; } else if ((0x7fffffeL & l) != 0L) { if (kind > 3) kind = 3; } else if ((0xf8000001f8000001L & l) != 0L) { if (kind > 6) kind = 6; } break; case 4: if ((0x7fffffeL & l) != 0L) kind = 3; break; case 5: if ((0x7fffffe00000000L & l) != 0L) kind = 4; break; case 7: if ((0xf8000001f8000001L & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 6) kind = 6; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, "\42", "\47", "\55", "\56", "\77", }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[8]; private final int[] jjstateSet = new int[16]; protected char curChar; /** Constructor. */ public PhylipParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public PhylipParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 8; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 1 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); matchedToken = jjFillToken(); return matchedToken; } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/PirParser.java000066400000000000000000000314061300536243200271510ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. PirParser.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Pir; import es.uvigo.ei.sing.alter.types.PirSequence; import java.io.StringReader; import java.util.Vector; /** * PIR format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class PirParser implements PirParserConstants { /** * Static method that parses an input string and returns a MSA in PIR format. * @param in Input string. * @return MSA in PIR format. */ public static Pir parseMSA (String in) throws ParseException { //Parse string and return MSA PirParser parser = new PirParser(new StringReader(in)); return parser.Pir(); } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until ">".
*   2. Sequences with the following format:
*     2a. ">".
*     2b. Sequence type.
*     2c. ";".
*     2d. Sequence identifier.
*     2e. New line.
*     2f. Description.
*     2g. New line.
*     2h. Sequence data.
* @return MSA in PIR format. */ final public Pir Pir() throws ParseException { Vector seqs = new Vector(); String type, id, desc, data; desc = ""; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[0] = jj_gen; break label_1; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } label_2: while (true) { jj_consume_token(7); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[2] = jj_gen; break label_3; } jj_consume_token(BLANK); } type = Type(); label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: ; break; default: jj_la1[3] = jj_gen; break label_4; } jj_consume_token(BLANK); } jj_consume_token(8); id = Line(); jj_consume_token(EOL); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: desc = Line(); jj_consume_token(EOL); break; case EOL: jj_consume_token(EOL); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } data = Data(); jj_consume_token(9); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: ; break; default: jj_la1[5] = jj_gen; break label_5; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: jj_consume_token(EOL); break; case BLANK: jj_consume_token(BLANK); break; default: jj_la1[6] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } seqs.add(new PirSequence(id,type,desc,data)); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 7: ; break; default: jj_la1[7] = jj_gen; break label_2; } } jj_consume_token(0); {if (true) return new Pir(seqs);} throw new Error("Missing return statement in function"); } /** * Parses a PIR style type. * @return Type. */ final public String Type() throws ParseException { Token t1, t2; t1 = jj_consume_token(UPPER_CASE); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t2 = jj_consume_token(UPPER_CASE); break; case NUMBER: t2 = jj_consume_token(NUMBER); break; default: jj_la1[8] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return t1.image + t2.image;} throw new Error("Missing return statement in function"); } /** * Parses a line made up of any character sequence. * @return Parsed line. */ final public String Line() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case NUMBER: t = jj_consume_token(NUMBER); break; case ANY: t = jj_consume_token(ANY); break; case 7: t = jj_consume_token(7); break; case 8: t = jj_consume_token(8); break; case 9: t = jj_consume_token(9); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[9] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: case UPPER_CASE: case LOWER_CASE: case NUMBER: case ANY: case 7: case 8: case 9: case 10: case 11: case 12: ; break; default: jj_la1[10] = jj_gen; break label_6; } } {if (true) return s.toString().trim();} throw new Error("Missing return statement in function"); } /** * Parses sequence data. These data can be made up of any characters * from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @return String with the sequence data (uppercase always). */ final public String Data() throws ParseException { StringBuffer s = new StringBuffer(); Token t; label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLANK: t = jj_consume_token(BLANK); break; case EOL: t = jj_consume_token(EOL); break; default: jj_la1[11] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case UPPER_CASE: case LOWER_CASE: case 10: case 11: case 12: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_CASE: t = jj_consume_token(UPPER_CASE); break; case LOWER_CASE: t = jj_consume_token(LOWER_CASE); break; case 10: t = jj_consume_token(10); break; case 11: t = jj_consume_token(11); break; case 12: t = jj_consume_token(12); break; default: jj_la1[12] = jj_gen; jj_consume_token(-1); throw new ParseException(); } s.append(t.image); break; default: jj_la1[13] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case BLANK: case UPPER_CASE: case LOWER_CASE: case 10: case 11: case 12: ; break; default: jj_la1[14] = jj_gen; break label_7; } } {if (true) return s.toString().toUpperCase();} throw new Error("Missing return statement in function"); } /** Generated Token Manager. */ public PirParserTokenManager token_source; SimpleCharStream jj_input_stream; /** Current token. */ public Token token; /** Next token. */ public Token jj_nt; private int jj_ntk; private int jj_gen; final private int[] jj_la1 = new int[15]; static private int[] jj_la1_0; static { jj_la1_init_0(); } private static void jj_la1_init_0() { jj_la1_0 = new int[] {0x6,0x6,0x4,0x4,0x1ffe,0x6,0x6,0x80,0x28,0x1ffc,0x1ffc,0x6,0x1c18,0x1c1e,0x1c1e,}; } /** Constructor with InputStream. */ public PirParser(java.io.InputStream stream) { this(stream, null); } /** Constructor with InputStream and supplied encoding */ public PirParser(java.io.InputStream stream, String encoding) { try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new PirParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 15; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.InputStream stream) { ReInit(stream, null); } /** Reinitialise. */ public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 15; i++) jj_la1[i] = -1; } /** Constructor. */ public PirParser(java.io.Reader stream) { jj_input_stream = new SimpleCharStream(stream, 1, 1); token_source = new PirParserTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 15; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 15; i++) jj_la1[i] = -1; } /** Constructor with generated Token Manager. */ public PirParser(PirParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 15; i++) jj_la1[i] = -1; } /** Reinitialise. */ public void ReInit(PirParserTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 15; i++) jj_la1[i] = -1; } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } /** Get the next Token. */ final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; } /** Get the specific Token. */ final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List jj_expentries = new java.util.ArrayList(); private int[] jj_expentry; private int jj_kind = -1; /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[13]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 15; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", "", "", "", "", "\">\"", "\";\"", "\"*\"", "\"-\"", "\".\"", "\"?\"", }; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/PirParserTokenManager.java000066400000000000000000000223001300536243200314360ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. PirParserTokenManager.java */ package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Pir; import es.uvigo.ei.sing.alter.types.PirSequence; import java.io.StringReader; import java.util.Vector; /** Token Manager. */ public class PirParserTokenManager implements PirParserConstants { /** Debug output. */ public java.io.PrintStream debugStream = System.out; /** Set debug output. */ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } private final int jjStopStringLiteralDfa_0(int pos, long active0) { switch (pos) { default : return -1; } } private final int jjStartNfa_0(int pos, long active0) { return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); } private int jjStopAtPos(int pos, int kind) { jjmatchedKind = kind; jjmatchedPos = pos; return pos + 1; } private int jjMoveStringLiteralDfa0_0() { switch(curChar) { case 42: return jjStopAtPos(0, 9); case 45: return jjStopAtPos(0, 10); case 46: return jjStopAtPos(0, 11); case 59: return jjStopAtPos(0, 8); case 62: return jjStopAtPos(0, 7); case 63: return jjStopAtPos(0, 12); default : return jjMoveNfa_0(0, 0); } } static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL }; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; jjnewStateCnt = 8; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; for (;;) { if (++jjround == 0x7fffffff) ReInitRounds(); if (curChar < 64) { long l = 1L << curChar; do { switch(jjstateSet[--i]) { case 0: if ((0x34009bfeffffd9ffL & l) != 0L) { if (kind > 6) kind = 6; } else if ((0x3ff000000000000L & l) != 0L) { if (kind > 5) kind = 5; } else if ((0x100000200L & l) != 0L) { if (kind > 2) kind = 2; } else if ((0x2400L & l) != 0L) { if (kind > 1) kind = 1; } if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 1: if (curChar == 10 && kind > 1) kind = 1; break; case 2: if (curChar == 13) jjstateSet[jjnewStateCnt++] = 1; break; case 3: if ((0x100000200L & l) != 0L) kind = 2; break; case 6: if ((0x3ff000000000000L & l) != 0L) kind = 5; break; case 7: if ((0x34009bfeffffd9ffL & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else if (curChar < 128) { long l = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((0x7fffffe00000000L & l) != 0L) { if (kind > 4) kind = 4; } else if ((0x7fffffeL & l) != 0L) { if (kind > 3) kind = 3; } else if ((0xf8000001f8000001L & l) != 0L) { if (kind > 6) kind = 6; } break; case 4: if ((0x7fffffeL & l) != 0L) kind = 3; break; case 5: if ((0x7fffffe00000000L & l) != 0L) kind = 4; break; case 7: if ((0xf8000001f8000001L & l) != 0L) kind = 6; break; default : break; } } while(i != startsAt); } else { int i2 = (curChar & 0xff) >> 6; long l2 = 1L << (curChar & 077); do { switch(jjstateSet[--i]) { case 0: if ((jjbitVec0[i2] & l2) != 0L && kind > 6) kind = 6; break; default : break; } } while(i != startsAt); } if (kind != 0x7fffffff) { jjmatchedKind = kind; jjmatchedPos = curPos; kind = 0x7fffffff; } ++curPos; if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, "\76", "\73", "\52", "\55", "\56", "\77", }; /** Lexer state names. */ public static final String[] lexStateNames = { "DEFAULT", }; protected SimpleCharStream input_stream; private final int[] jjrounds = new int[8]; private final int[] jjstateSet = new int[16]; protected char curChar; /** Constructor. */ public PirParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); input_stream = stream; } /** Constructor. */ public PirParserTokenManager(SimpleCharStream stream, int lexState){ this(stream); SwitchTo(lexState); } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream) { jjmatchedPos = jjnewStateCnt = 0; curLexState = defaultLexState; input_stream = stream; ReInitRounds(); } private void ReInitRounds() { int i; jjround = 0x80000001; for (i = 8; i-- > 0;) jjrounds[i] = 0x80000000; } /** Reinitialise parser. */ public void ReInit(SimpleCharStream stream, int lexState) { ReInit(stream); SwitchTo(lexState); } /** Switch to specified lex state. */ public void SwitchTo(int lexState) { if (lexState >= 1 || lexState < 0) throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); else curLexState = lexState; } protected Token jjFillToken() { final Token t; final String curTokenImage; final int beginLine; final int endLine; final int beginColumn; final int endColumn; String im = jjstrLiteralImages[jjmatchedKind]; curTokenImage = (im == null) ? input_stream.GetImage() : im; beginLine = input_stream.getBeginLine(); beginColumn = input_stream.getBeginColumn(); endLine = input_stream.getEndLine(); endColumn = input_stream.getEndColumn(); t = Token.newToken(jjmatchedKind, curTokenImage); t.beginLine = beginLine; t.endLine = endLine; t.beginColumn = beginColumn; t.endColumn = endColumn; return t; } int curLexState = 0; int defaultLexState = 0; int jjnewStateCnt; int jjround; int jjmatchedPos; int jjmatchedKind; /** Get the next Token. */ public Token getNextToken() { Token matchedToken; int curPos = 0; EOFLoop : for (;;) { try { curChar = input_stream.BeginToken(); } catch(java.io.IOException e) { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; } jjmatchedKind = 0x7fffffff; jjmatchedPos = 0; curPos = jjMoveStringLiteralDfa0_0(); if (jjmatchedKind != 0x7fffffff) { if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1); matchedToken = jjFillToken(); return matchedToken; } int error_line = input_stream.getEndLine(); int error_column = input_stream.getEndColumn(); String error_after = null; boolean EOFSeen = false; try { input_stream.readChar(); input_stream.backup(1); } catch (java.io.IOException e1) { EOFSeen = true; error_after = curPos <= 1 ? "" : input_stream.GetImage(); if (curChar == '\n' || curChar == '\r') { error_line++; error_column = 0; } else error_column++; } if (!EOFSeen) { input_stream.backup(1); error_after = curPos <= 1 ? "" : input_stream.GetImage(); } throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); } } private void jjCheckNAdd(int state) { if (jjrounds[state] != jjround) { jjstateSet[jjnewStateCnt++] = state; jjrounds[state] = jjround; } } private void jjAddStates(int start, int end) { do { jjstateSet[jjnewStateCnt++] = jjnextStates[start]; } while (start++ != end); } private void jjCheckNAddTwoStates(int state1, int state2) { jjCheckNAdd(state1); jjCheckNAdd(state2); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/SimpleCharStream.java000066400000000000000000000266761300536243200304620ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package es.uvigo.ei.sing.alter.parser; /** * An implementation of interface CharStream, where the stream is assumed to * contain only ASCII characters (without unicode processing). */ public class SimpleCharStream { /** Whether parser is static. */ public static final boolean staticFlag = false; int bufsize; int available; int tokenBegin; /** Position in buffer. */ public int bufpos = -1; protected int bufline[]; protected int bufcolumn[]; protected int column = 0; protected int line = 1; protected boolean prevCharIsCR = false; protected boolean prevCharIsLF = false; protected java.io.Reader inputStream; protected char[] buffer; protected int maxNextCharInd = 0; protected int inBuf = 0; protected int tabSize = 8; protected void setTabSize(int i) { tabSize = i; } protected int getTabSize(int i) { return tabSize; } protected void ExpandBuff(boolean wrapAround) { char[] newbuffer = new char[bufsize + 2048]; int newbufline[] = new int[bufsize + 2048]; int newbufcolumn[] = new int[bufsize + 2048]; try { if (wrapAround) { System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos); buffer = newbuffer; System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos); bufline = newbufline; System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos); bufcolumn = newbufcolumn; maxNextCharInd = (bufpos += (bufsize - tokenBegin)); } else { System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); buffer = newbuffer; System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); bufline = newbufline; System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); bufcolumn = newbufcolumn; maxNextCharInd = (bufpos -= tokenBegin); } } catch (Throwable t) { throw new Error(t.getMessage()); } bufsize += 2048; available = bufsize; tokenBegin = 0; } protected void FillBuff() throws java.io.IOException { if (maxNextCharInd == available) { if (available == bufsize) { if (tokenBegin > 2048) { bufpos = maxNextCharInd = 0; available = tokenBegin; } else if (tokenBegin < 0) bufpos = maxNextCharInd = 0; else ExpandBuff(false); } else if (available > tokenBegin) available = bufsize; else if ((tokenBegin - available) < 2048) ExpandBuff(true); else available = tokenBegin; } int i; try { if ((i = inputStream.read(buffer, maxNextCharInd, available - maxNextCharInd)) == -1) { inputStream.close(); throw new java.io.IOException(); } else maxNextCharInd += i; return; } catch(java.io.IOException e) { --bufpos; backup(0); if (tokenBegin == -1) tokenBegin = bufpos; throw e; } } /** Start. */ public char BeginToken() throws java.io.IOException { tokenBegin = -1; char c = readChar(); tokenBegin = bufpos; return c; } protected void UpdateLineColumn(char c) { column++; if (prevCharIsLF) { prevCharIsLF = false; line += (column = 1); } else if (prevCharIsCR) { prevCharIsCR = false; if (c == '\n') { prevCharIsLF = true; } else line += (column = 1); } switch (c) { case '\r' : prevCharIsCR = true; break; case '\n' : prevCharIsLF = true; break; case '\t' : column--; column += (tabSize - (column % tabSize)); break; default : break; } bufline[bufpos] = line; bufcolumn[bufpos] = column; } /** Read a character. */ public char readChar() throws java.io.IOException { if (inBuf > 0) { --inBuf; if (++bufpos == bufsize) bufpos = 0; return buffer[bufpos]; } if (++bufpos >= maxNextCharInd) FillBuff(); char c = buffer[bufpos]; UpdateLineColumn(c); return c; } @Deprecated /** * @deprecated * @see #getEndColumn */ public int getColumn() { return bufcolumn[bufpos]; } @Deprecated /** * @deprecated * @see #getEndLine */ public int getLine() { return bufline[bufpos]; } /** Get token end column number. */ public int getEndColumn() { return bufcolumn[bufpos]; } /** Get token end line number. */ public int getEndLine() { return bufline[bufpos]; } /** Get token beginning column number. */ public int getBeginColumn() { return bufcolumn[tokenBegin]; } /** Get token beginning line number. */ public int getBeginLine() { return bufline[tokenBegin]; } /** Backup a number of characters. */ public void backup(int amount) { inBuf += amount; if ((bufpos -= amount) < 0) bufpos += bufsize; } /** Constructor. */ public SimpleCharStream(java.io.Reader dstream, int startline, int startcolumn, int buffersize) { inputStream = dstream; line = startline; column = startcolumn - 1; available = bufsize = buffersize; buffer = new char[buffersize]; bufline = new int[buffersize]; bufcolumn = new int[buffersize]; } /** Constructor. */ public SimpleCharStream(java.io.Reader dstream, int startline, int startcolumn) { this(dstream, startline, startcolumn, 4096); } /** Constructor. */ public SimpleCharStream(java.io.Reader dstream) { this(dstream, 1, 1, 4096); } /** Reinitialise. */ public void ReInit(java.io.Reader dstream, int startline, int startcolumn, int buffersize) { inputStream = dstream; line = startline; column = startcolumn - 1; if (buffer == null || buffersize != buffer.length) { available = bufsize = buffersize; buffer = new char[buffersize]; bufline = new int[buffersize]; bufcolumn = new int[buffersize]; } prevCharIsLF = prevCharIsCR = false; tokenBegin = inBuf = maxNextCharInd = 0; bufpos = -1; } /** Reinitialise. */ public void ReInit(java.io.Reader dstream, int startline, int startcolumn) { ReInit(dstream, startline, startcolumn, 4096); } /** Reinitialise. */ public void ReInit(java.io.Reader dstream) { ReInit(dstream, 1, 1, 4096); } /** Constructor. */ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException { this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); } /** Constructor. */ public SimpleCharStream(java.io.InputStream dstream, int startline, int startcolumn, int buffersize) { this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); } /** Constructor. */ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, int startcolumn) throws java.io.UnsupportedEncodingException { this(dstream, encoding, startline, startcolumn, 4096); } /** Constructor. */ public SimpleCharStream(java.io.InputStream dstream, int startline, int startcolumn) { this(dstream, startline, startcolumn, 4096); } /** Constructor. */ public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException { this(dstream, encoding, 1, 1, 4096); } /** Constructor. */ public SimpleCharStream(java.io.InputStream dstream) { this(dstream, 1, 1, 4096); } /** Reinitialise. */ public void ReInit(java.io.InputStream dstream, String encoding, int startline, int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException { ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); } /** Reinitialise. */ public void ReInit(java.io.InputStream dstream, int startline, int startcolumn, int buffersize) { ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); } /** Reinitialise. */ public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException { ReInit(dstream, encoding, 1, 1, 4096); } /** Reinitialise. */ public void ReInit(java.io.InputStream dstream) { ReInit(dstream, 1, 1, 4096); } /** Reinitialise. */ public void ReInit(java.io.InputStream dstream, String encoding, int startline, int startcolumn) throws java.io.UnsupportedEncodingException { ReInit(dstream, encoding, startline, startcolumn, 4096); } /** Reinitialise. */ public void ReInit(java.io.InputStream dstream, int startline, int startcolumn) { ReInit(dstream, startline, startcolumn, 4096); } /** Get token literal value. */ public String GetImage() { if (bufpos >= tokenBegin) return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); else return new String(buffer, tokenBegin, bufsize - tokenBegin) + new String(buffer, 0, bufpos + 1); } /** Get the suffix. */ public char[] GetSuffix(int len) { char[] ret = new char[len]; if ((bufpos + 1) >= len) System.arraycopy(buffer, bufpos - len + 1, ret, 0, len); else { System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0, len - bufpos - 1); System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1); } return ret; } /** Reset buffer when finished. */ public void Done() { buffer = null; bufline = null; bufcolumn = null; } /** * Method to adjust line and column numbers for the start of a token. */ public void adjustBeginLineColumn(int newLine, int newCol) { int start = tokenBegin; int len; if (bufpos >= tokenBegin) { len = bufpos - tokenBegin + inBuf + 1; } else { len = bufsize - tokenBegin + bufpos + 1 + inBuf; } int i = 0, j = 0, k = 0; int nextColDiff = 0, columnDiff = 0; while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize]) { bufline[j] = newLine; nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j]; bufcolumn[j] = newCol + columnDiff; columnDiff = nextColDiff; i++; } if (i < len) { bufline[j] = newLine++; bufcolumn[j] = newCol + columnDiff; while (i++ < len) { if (bufline[j = start % bufsize] != bufline[++start % bufsize]) bufline[j] = newLine++; else bufline[j] = newLine; } } line = bufline[j]; column = bufcolumn[j]; } } /* JavaCC - OriginalChecksum=3f792f16bacbb748005fefbb08a365ec (do not edit this line) */ ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/Token.java000066400000000000000000000077771300536243200263400ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */ /* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package es.uvigo.ei.sing.alter.parser; /** * Describes the input token stream. */ public class Token implements java.io.Serializable { /** * The version identifier for this Serializable class. * Increment only if the serialized form of the * class changes. */ private static final long serialVersionUID = 1L; /** * An integer that describes the kind of this token. This numbering * system is determined by JavaCCParser, and a table of these numbers is * stored in the file ...Constants.java. */ public int kind; /** The line number of the first character of this Token. */ public int beginLine; /** The column number of the first character of this Token. */ public int beginColumn; /** The line number of the last character of this Token. */ public int endLine; /** The column number of the last character of this Token. */ public int endColumn; /** * The string image of the token. */ public String image; /** * A reference to the next regular (non-special) token from the input * stream. If this is the last token from the input stream, or if the * token manager has not read tokens beyond this one, this field is * set to null. This is true only if this token is also a regular * token. Otherwise, see below for a description of the contents of * this field. */ public Token next; /** * This field is used to access special tokens that occur prior to this * token, but after the immediately preceding regular (non-special) token. * If there are no such special tokens, this field is set to null. * When there are more than one such special token, this field refers * to the last of these special tokens, which in turn refers to the next * previous special token through its specialToken field, and so on * until the first special token (whose specialToken field is null). * The next fields of special tokens refer to other special tokens that * immediately follow it (without an intervening regular token). If there * is no such token, this field is null. */ public Token specialToken; /** * An optional attribute value of the Token. * Tokens which are not used as syntactic sugar will often contain * meaningful values that will be used later on by the compiler or * interpreter. This attribute value is often different from the image. * Any subclass of Token that actually wants to return a non-null value can * override this method as appropriate. */ public Object getValue() { return null; } /** * No-argument constructor */ public Token() {} /** * Constructs a new token for the specified Image. */ public Token(int kind) { this(kind, null); } /** * Constructs a new token for the specified Image and Kind. */ public Token(int kind, String image) { this.kind = kind; this.image = image; } /** * Returns the image. */ public String toString() { return image; } /** * Returns a new Token object, by default. However, if you want, you * can create and return subclass objects based on the value of ofKind. * Simply add the cases to the switch for all those special cases. * For example, if you have a subclass of Token called IDToken that * you want to create if ofKind is ID, simply add something like : * * case MyParserConstants.ID : return new IDToken(ofKind, image); * * to the following switch statement. Then you can cast matchedToken * variable to the appropriate type and use sit in your lexical actions. */ public static Token newToken(int ofKind, String image) { switch(ofKind) { default : return new Token(ofKind, image); } } public static Token newToken(int ofKind) { return newToken(ofKind, null); } } /* JavaCC - OriginalChecksum=5577319da3c994ced3a7d8398937b710 (do not edit this line) */ ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/parser/TokenMgrError.java000066400000000000000000000105271300536243200300030ustar00rootroot00000000000000/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */ /* JavaCCOptions: */ package es.uvigo.ei.sing.alter.parser; /** Token Manager Error. */ public class TokenMgrError extends Error { /** * The version identifier for this Serializable class. * Increment only if the serialized form of the * class changes. */ private static final long serialVersionUID = 1L; /* * Ordinals for various reasons why an Error of this type can be thrown. */ /** * Lexical error occurred. */ static final int LEXICAL_ERROR = 0; /** * An attempt was made to create a second instance of a static token manager. */ static final int STATIC_LEXER_ERROR = 1; /** * Tried to change to an invalid lexical state. */ static final int INVALID_LEXICAL_STATE = 2; /** * Detected (and bailed out of) an infinite loop in the token manager. */ static final int LOOP_DETECTED = 3; /** * Indicates the reason why the exception is thrown. It will have * one of the above 4 values. */ int errorCode; /** * Replaces unprintable characters by their escaped (or unicode escaped) * equivalents in the given string */ protected static final String addEscapes(String str) { StringBuffer retval = new StringBuffer(); char ch; for (int i = 0; i < str.length(); i++) { switch (str.charAt(i)) { case 0 : continue; case '\b': retval.append("\\b"); continue; case '\t': retval.append("\\t"); continue; case '\n': retval.append("\\n"); continue; case '\f': retval.append("\\f"); continue; case '\r': retval.append("\\r"); continue; case '\"': retval.append("\\\""); continue; case '\'': retval.append("\\\'"); continue; case '\\': retval.append("\\\\"); continue; default: if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { String s = "0000" + Integer.toString(ch, 16); retval.append("\\u" + s.substring(s.length() - 4, s.length())); } else { retval.append(ch); } continue; } } return retval.toString(); } /** * Returns a detailed message for the Error when it is thrown by the * token manager to indicate a lexical error. * Parameters : * EOFSeen : indicates if EOF caused the lexical error * curLexState : lexical state in which this error occurred * errorLine : line number when the error occurred * errorColumn : column number when the error occurred * errorAfter : prefix that was seen before this error occurred * curchar : the offending character * Note: You can customize the lexical error message by modifying this method. */ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { return("Lexical error at line " + errorLine + ", column " + errorColumn + ". Encountered: " + (EOFSeen ? " " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + "after : \"" + addEscapes(errorAfter) + "\""); } /** * You can also modify the body of this method to customize your error messages. * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not * of end-users concern, so you can return something like : * * "Internal Error : Please file a bug report .... " * * from this method for such cases in the release version of your parser. */ public String getMessage() { return super.getMessage(); } /* * Constructors of various flavors follow. */ /** No arg constructor. */ public TokenMgrError() { } /** Constructor with message and reason. */ public TokenMgrError(String message, int reason) { super(message); errorCode = reason; } /** Full Constructor. */ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); } } /* JavaCC - OriginalChecksum=7ef45f5276cce4d58ec92f075d668e1f (do not edit this line) */ ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/reader/000077500000000000000000000000001300536243200243415ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/reader/AlnReader.java000077500000000000000000000050051300536243200270440ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.AlnParser; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; /** * ALN format reader. * @author Daniel Gomez Blanco * @version 1.1 */ public class AlnReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public AlnReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Parse input MSA msa = AlnParser.parseMSA(in); //Check if MSA is correctly constructed Sequence first = (Sequence)msa.getSeqs().elementAt(0); for(int i=0;i. */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.*; import es.uvigo.ei.sing.alter.types.MSA; /** * Autodetection reader * @author Daniel Gomez Blanco * @version 1.1 */ public class AutodetectionReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public AutodetectionReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Detect format String inF = AutodetectionParser.detectFormat(in); logger.log(Level.INFO, inF.toUpperCase() + " format detected."); //Parse input in the detected format Reader reader; if (inF.equals("aln")) reader = new AlnReader(logger.getName()); else if (inF.equals("fasta")) reader = new FastaReader(logger.getName()); else if (inF.equals("gde")) reader = new GdeReader(logger.getName()); else if (inF.equals("msf")) reader = new MsfReader(logger.getName()); else if (inF.equals("nexus")) reader = new NexusReader(logger.getName()); else if (inF.equals("phylip")) reader = new PhylipReader(logger.getName()); else if (inF.equals("pir")) reader = new PirReader(logger.getName()); else throw new UnsupportedOperationException("Input format not supported."); return reader.read(in); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/reader/FastaReader.java000077500000000000000000000050101300536243200273640ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.FastaParser; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; /** * FASTA format reader. * @author Daniel Gomez Blanco * @version 1.1 */ public class FastaReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public FastaReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Parse input MSA msa = FastaParser.parseMSA(in); //Check if MSA is correctly constructed Sequence first = (Sequence)msa.getSeqs().elementAt(0); for(int i=0;i. */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.GdeParser; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; /** * GDE format reader. * @author Daniel Gomez Blanco * @version 1.1 */ public class GdeReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public GdeReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Parse input MSA msa = GdeParser.parseMSA(in); //Check if MSA is correctly constructed Sequence first = (Sequence)msa.getSeqs().elementAt(0); for(int i=0;i. */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.MsfParser; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Msf; import es.uvigo.ei.sing.alter.types.MsfSequence; import es.uvigo.ei.sing.alter.types.Sequence; /** * MSF format reader. * @author Daniel Gomez Blanco * @version 1.1 */ public class MsfReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public MsfReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Parse input Msf msa = MsfParser.parseMSA(in); //Check if MSA is correctly constructed for(int i=0;i. */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.NexusParser; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nexus; import es.uvigo.ei.sing.alter.types.Sequence; /** * NEXUS format reader. * @author Daniel Gomez Blanco * @version 1.1 */ public class NexusReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public NexusReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Parse input Nexus msa = NexusParser.parseMSA(in); //Check if the number of sequences is equal to the given one if (msa.getSeqs().size() != msa.getTaxa()) throw new ParseException("Number of sequences is not equal to the given number."); //Check if MSA is correctly constructed Sequence first = (Sequence)msa.getSeqs().elementAt(0); for(int i=0;i. */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.parser.PhylipParser; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Phylip; import es.uvigo.ei.sing.alter.types.Sequence; /** * PHYLIP format reader. * @author Daniel Gomez Blanco * @version 1.1 */ public class PhylipReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public PhylipReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Parse input Phylip msa = PhylipParser.parseMSA(in); //Check if the number of sequences is equal to the given one if (msa.getSeqs().size() != msa.getTaxa()) throw new ParseException("Number of sequences is not equal to the given number."); //Check if MSA is correctly constructed Sequence first = (Sequence)msa.getSeqs().elementAt(0); for(int i=0;i. */ package es.uvigo.ei.sing.alter.reader; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.parser.PirParser; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.PirSequence; /** * PIR format reader. * @author Daniel Gomez Blanco * @version 1.1 */ public class PirReader implements Reader { /** * Logger to register information messages. */ Logger logger; /** * Class contructor, it initializes the logger. * @param logger Name of the logger to be instatiated. */ public PirReader(String logger) { this.logger = Logger.getLogger(logger); } /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException { //Parse input MSA msa = PirParser.parseMSA(in); //Check if MSA is correctly constructed PirSequence first = (PirSequence)msa.getSeqs().elementAt(0); for(int i=0;i. */ package es.uvigo.ei.sing.alter.reader; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.types.MSA; /** * Defines the method that readers must implement. * @author Daniel Gomez Blanco * @version 1.0 */ public interface Reader { /** * Parses an input string and returns an MSA object. * @param in Input string. * @return MSA object parsed from the input string. * @throws ParseException If an error occurs while parsing. */ public MSA read(String in) throws ParseException; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/reader/ReaderUtils.java000077500000000000000000000040651300536243200274370ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.reader; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.types.Sequence; /** * Provides static methods common to every reader. * @author Daniel Gomez Blanco * @version 1.0 */ public class ReaderUtils { /** * Replaces match characters with the character in the same position of the * first sequence of the MSA. * @param seq Current sequence. * @param first First sequence of the MSA. * @throws ParseException If a match character is trying to be replaced by a "?", "." or "-" character. */ public static void replaceMatch(Sequence seq, Sequence first) throws ParseException { if (seq.getData().contains(".")) //Lanzar excepción si el caracter está en la primera secuencia if (seq == first) throw new ParseException("Match character \".\" in first sequence of MSA."); else for(int j=0;j. */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * MSA in ALN format. * @author Daniel Gomez Blanco * @version 1.0 */ public class Aln extends MSA { /** * Class constructor. * @param seqs Vector containing aligned sequences. */ public Aln(Vector seqs) { super(seqs); } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param log Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ @Override public MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String log) { Logger logger = Logger.getLogger(log); Vector newSeqs = new Vector(); newSeqs.add((AlnSequence) seqs.firstElement()); for(int i=1;i. */ package es.uvigo.ei.sing.alter.types; /** * Sequence in ALN format. * @author Daniel Gomez Blanco * @version 1.0 */ public class AlnSequence extends Sequence { /** * Class constructor. * @param id Sequence identifier. * @param data Sequence data. */ public AlnSequence(String id, String data) { super(id,data); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Checksumable.java000077500000000000000000000020341300536243200274760ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Defines method getChecksum() that all sequence or MSA classes containing * a checksum must implement. * @author Daniel Gomez Blanco * @version 1.0 */ public interface Checksumable { /** * Returns the sequence or MSA checksum. * @return Sequence or MSA checksum. */ public int getChecksum(); } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/DNA.java000077500000000000000000000014771300536243200255240ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * DNA type. * @author Daniel Gomez Blanco * @version 1.0 */ public class DNA extends Nucleotide{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/DNACircular.java000077500000000000000000000015111300536243200271760ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Circular DNA type. * @author Daniel Gomez Blanco * @version 1.0 */ public class DNACircular extends DNA{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/DNALinear.java000077500000000000000000000015041300536243200266460ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Liner DNA type. * @author Daniel Gomez Blanco * @version 1.0 */ public class DNALinear extends DNA{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Describable.java000077500000000000000000000020111300536243200273020ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Defines method getDesc() that all sequence classes containing a description * must implement. * @author Daniel Gomez Blanco * @version 1.0 */ public interface Describable { /** * Returns the sequence description. * @return Sequence description. */ public String getDesc(); } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Fasta.java000077500000000000000000000045411300536243200261530ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * MSA in FASTA format. * @author Daniel Gomez Blanco * @version 1.0 */ public class Fasta extends MSA { /** * Class constructor. * @param seqs Vector containing aligned sequences. */ public Fasta(Vector seqs) { super(seqs); } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param log Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ @Override public MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String log) { Logger logger = Logger.getLogger(log); Vector newSeqs = new Vector(); newSeqs.add((FastaSequence) seqs.firstElement()); for(int i=1;i. */ package es.uvigo.ei.sing.alter.types; /** * Sequence in FASTA format. * @author Daniel Gomez Blanco * @version 1.0 */ public class FastaSequence extends Sequence implements Describable { /** * Sequence description. */ private String desc; /** * Class constructor. * @param id Sequence identifier. * @param desc Sequence description. * @param data Sequence data. */ public FastaSequence(String id, String desc, String data) { super(id, data); this.desc = desc; } /** * Returns the sequence data. * @return Sequence data. */ public String getDesc() { return desc; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Gde.java000077500000000000000000000045151300536243200256150ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * MSA in GDE format. * @author Daniel Gomez Blanco * @version 1.0 */ public class Gde extends MSA { /** * Class constructor. * @param seqs Vector containing aligned sequences. */ public Gde(Vector seqs) { super(seqs); } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param log Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ @Override public MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String log) { Logger logger = Logger.getLogger(log); Vector newSeqs = new Vector(); newSeqs.add((GdeSequence) seqs.firstElement()); for(int i=1;i. */ package es.uvigo.ei.sing.alter.types; /** * Sequence in GDE format. * @author Daniel Gomez Blanco * @version 1.0 */ public class GdeSequence extends Sequence { /** * Class constructor. * @param id Sequence identifier. * @param data Sequence data. */ public GdeSequence(String id, String data) { super(id, data); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Lengthable.java000077500000000000000000000020331300536243200271540ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Defines method getLength() that all sequence or MSA classes containing the * length attibute must implement. * @author Daniel Gomez Blanco * @version 1.0 */ public interface Lengthable { /** * Returns the MSA or sequence length. * @return MSA or sequence length. */ public int getLength(); } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/MSA.java000077500000000000000000000101421300536243200255270ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; /** * Abstract class representing a MSA. * @author Daniel Gomez Blanco * @version 1.0 */ public abstract class MSA { /** * Aligned sequences vector. */ protected Vector seqs; /** * Class constructor. * @param seqs Aligned sequences vector. */ public MSA(Vector seqs) { this.seqs = seqs; } /** * Returns the aligned sequences. * @return Aligned sequences vector. */ public Vector getSeqs() { return seqs; } /** * Adds a sequence to the sequences vector. * @param seq Sequence to be added to the vector. */ public void addSeq(Sequence seq) { seqs.add(seq); } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param logger Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ public abstract MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String logger); /** * Checks if a sequence is unique in the vector till his position in it, * according to the given parameters. It compares all previous positions * in the vector to the given one, checking for equivalent sequences. * @param seq Sequence be checked. * @param seqs Sequences vector. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @return La secuencia a la que es equivalente la secuencia actual. Null en caso de que no exista ninguna secuencia equivalente. */ protected Sequence isUnique(Sequence seq, Vector seqs, boolean gapsAsMissing, boolean countMissing, int limit) { //Sequence data String data = seq.getData(); //Sequence to compare to (start with the first) Sequence uniqueSeq = (Sequence) seqs.firstElement(); //Counter int cont = 0; while(cont < seqs.size() && seq != uniqueSeq) { //Data to compare to String unique = uniqueSeq.getData(); //Number of differences int diff = 0; int miss = 0; int gaps = 0; //For each site for (int i=0; i. */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * MSA in MSF format. * @author Daniel Gomez Blanco * @version 1.0 */ public class Msf extends MSA implements Lengthable, Typeable, Checksumable { /** * Length of the sequences in the MSA. */ private int length; /** * MSA type. */ private Type type; /** * MSA checksum. */ private int check; /** * Class constructor. * @param seqs Sequences vector. * @param length Sequences length. * @param type MSA type. * @param check MSA checksum. */ public Msf(Vector seqs, int length, String type, int check) { super(seqs); this.length = length; this.check = check; if (type.equals("N")) this.type = new Nucleotide(); else if (type.equals("P") || type.equals("A")) this.type = new Protein(); else this.type = null; } /** * Class constructor. Gets as type an object of class Type. * @param seqs Sequences vector. * @param length Sequences length. * @param type MSA type. * @param check MSA checksum. */ public Msf(Vector seqs, int length, Type type, int check) { super(seqs); this.length = length; this.check = check; this.type = type; } /** * Returs MSA checksum. * @return MSA checksum. */ public int getChecksum() { return check; } /** * Returns the MSA length. * @return MSA length. */ public int getLength() { return length; } /** * Returns the MSA type. * @return MSA type. */ public Type getType() { return type; } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param log Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ @Override public MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String log) { Logger logger = Logger.getLogger(log); Vector newSeqs = new Vector(); newSeqs.add((MsfSequence) seqs.firstElement()); for(int i=1;i. */ package es.uvigo.ei.sing.alter.types; /** * Sequence in MSF format. * @author Daniel Gomez Blanco * @version 1.0 */ public class MsfSequence extends Sequence implements Checksumable, Lengthable, Weightable { /** * Sequence length. */ private int length; /** * Sequence checksum. */ private int check; /** * Sequence weight. */ private float weight; /** * Class constructor. * @param id Sequence identifier. * @param length Sequence length. * @param check Sequence checksum. * @param weight Sequence weight. * @param data Sequence data. */ public MsfSequence (String id, int length, int check, float weight, String data) { super(id, data); this.length = length; this.check = check; this.weight = weight; } /** * Returns the sequence checksum. * @return Sequence checksum. */ public int getChecksum() { return check; } /** * Returns sequence length. * @return Sequence length. */ public int getLength() { return length; } /** * Returns sequence weight. * @return Sequence weight. */ public float getWeight() { return weight; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Nexus.java000077500000000000000000000101261300536243200262130ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * MSA in NEXUS format. * @author Daniel Gomez Blanco * @version 1.0 */ public class Nexus extends MSA implements Lengthable, Typeable, Taxable { /** * Number of sequences in the MSA. */ private int taxa; /** * Length of the sequences in the MSA. */ private int length; /** * MSA type. */ private Type type; /** * Class constructor. * @param taxa Number of sequences in the MSA. * @param length Length of the sequences in the MSA. * @param type Type of MSA. * @param seqs Sequences vector. */ public Nexus(int taxa, int length, String type, Vector seqs) { super(seqs); this.taxa = taxa; this.length = length; if (type.equals("PROTEIN")) this.type = new Protein(); else if (type.equals("NUCLEOTIDE")) this.type = new Nucleotide(); else if (type.equals("DNA")) this.type = new DNA(); else if (type.equals("RNA")) this.type = new RNA(); else this.type = null; } /** * Class constructor. Gets as the type an object of class Type. * @param taxa Number of sequences in the MSA. * @param length Length of the sequences in the MSA. * @param type Type of MSA. * @param seqs Sequences vector. */ public Nexus(int taxa, int length, Type type, Vector seqs) { super(seqs); this.taxa = taxa; this.length = length; this.type = type; } /** * Returns the number of sequences in the MSA. * @return Number of sequences. */ public int getTaxa() { return taxa; } /** * Returns the MSA type. * @return MSA type. */ public Type getType() { return type; } /** * Returns the length of the sequences in the MSA. * @return Length of the sequences in the MSA. */ public int getLength() { return length; } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param log Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ @Override public MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String log) { Logger logger = Logger.getLogger(log); Vector newSeqs = new Vector(); newSeqs.add((NexusSequence) seqs.firstElement()); for(int i=1;i. */ package es.uvigo.ei.sing.alter.types; /** * Sequence in NEXUS format. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusSequence extends Sequence { /** * Class constructor. * @param id Sequence identifier. * @param data Sequence data. */ public NexusSequence(String id, String data) { super(id,data); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Nucleotide.java000077500000000000000000000015071300536243200272070ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Nucleotide type. * @author Daniel Gomez Blanco * @version 1.0 */ public class Nucleotide extends Type{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Phylip.java000077500000000000000000000060741300536243200263650ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * MSA in PHYLIP format. * @author Daniel Gomez Blanco * @version 1.0 */ public class Phylip extends MSA implements Lengthable, Taxable { /** * Number of sequences in the MSA. */ private int taxa; /** * Length of the sequences in the MSA. */ private int length; /** * Class constructor. * @param taxa Number of sequences in the MSA. * @param length Sequences length. * @param seqs Sequences vector. */ public Phylip(int taxa, int length, Vector seqs) { super(seqs); this.taxa = taxa; this.length = length; } /** * Returns the length of the sequences in the MSA. * @return Length of the sequences in the MSA. */ public int getLength() { return length; } /** * Returns the number of sequenes in the MSA * @return Number of sequences in the MSA. */ public int getTaxa() { return taxa; } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param log Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ @Override public MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String log) { Logger logger = Logger.getLogger(log); Vector newSeqs = new Vector(); newSeqs.add((PhylipSequence) seqs.firstElement()); for(int i=1;i. */ package es.uvigo.ei.sing.alter.types; /** * Sequence in PHYLIP format. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipSequence extends Sequence { /** * Class constructor. * @param id Sequence identifier. * @param data Sequence data. */ public PhylipSequence(String id, String data) { super(id, data); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Pir.java000077500000000000000000000052001300536243200256400ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * MSA in PIR format. * @author Daniel Gomez Blanco * @version 1.0 */ public class Pir extends MSA implements Typeable { /** * Class constructor. * @param seqs Sequences vector. */ public Pir(Vector seqs) { super(seqs); } /** * Returns the MSA type. Returns the type of the first sequence in the MSA. * It is assumed that all sequences are of the same type in a MSA. * @return Tipo del MSA. */ public Type getType() { return ((PirSequence) this.getSeqs().firstElement()).getType(); } /** * Collapse sequences to haplotypes. It creates a new MSA object with the * result sequences and then returns it. * @param gapsAsMissing Treat gaps as missing data when collapsing. * @param countMissing Count missing data as differences when collapsing. * @param limit Connection limit (sequences differing at <= l sites will be collapsed). * @param log Name of the logger to be instantiated. * @return New MSA containing the result sequences. */ @Override public MSA collapse(boolean gapsAsMissing, boolean countMissing, int limit, String log) { Logger logger = Logger.getLogger(log); Vector newSeqs = new Vector(); newSeqs.add((PirSequence) seqs.firstElement()); for(int i=1;i. */ package es.uvigo.ei.sing.alter.types; /** * Sequence in PIR format. * @author Daniel Gomez Blanco * @version 1.0 */ public class PirSequence extends Sequence implements Describable, Typeable { /** * Sequence type. In PIR format, every sequence has an individual type * but it must be equal in all of them. */ private Type type; /** * Sequence description. */ private String desc; /** * Class constructor. * @param id Sequence identifier. * @param type Sequence type. * @param desc Sequence description. * @param data Sequence data. */ public PirSequence(String id, String type, String desc, String data) { super(id,data); this.desc = desc; if (type.equals("P1")) this.type = new ProteinComplete(); else if (type.equals("F1")) this.type = new ProteinFragment(); else if (type.equals("DL")) this.type = new DNALinear(); else if (type.equals("DC")) this.type = new DNACircular(); else if (type.equals("RL")) this.type = new RNALinear(); else if (type.equals("RC")) this.type = new RNACircular(); else if (type.equals("N3")) this.type = new RNAt(); else if (type.equals("N1")) this.type = new RNAOther(); else this.type = null; } /** * Returns the sequence type. * @return Sequence type. */ public Type getType() { return type; } /** * Returns the sequence description. * @return Sequence description. */ public String getDesc() { return desc; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Protein.java000077500000000000000000000015011300536243200265260ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Protein type. * @author Daniel Gomez Blanco * @version 1.0 */ public class Protein extends Type{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/ProteinComplete.java000077500000000000000000000015261300536243200302260ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Complete protein type. * @author Daniel Gomez Blanco * @version 1.0 */ public class ProteinComplete extends Protein {} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/ProteinFragment.java000077500000000000000000000015261300536243200302210ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Fragment protein type. * @author Daniel Gomez Blanco * @version 1.0 */ public class ProteinFragment extends Protein {} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/RNA.java000077500000000000000000000014771300536243200255420ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * RNA tye. * @author Daniel Gomez Blanco * @version 1.0 */ public class RNA extends Nucleotide {} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/RNACircular.java000077500000000000000000000015101300536243200272130ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Circular ARN type * @author Daniel Gomez Blanco * @version 1.0 */ public class RNACircular extends RNA{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/RNALinear.java000077500000000000000000000015041300536243200266640ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Linear RNA type * @author Daniel Gomez Blanco * @version 1.0 */ public class RNALinear extends RNA{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/RNAOther.java000077500000000000000000000015161300536243200265360ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Other functional RNA type. * @author Daniel Gomez Blanco * @version 1.0 */ public class RNAOther extends RNA{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/RNAt.java000077500000000000000000000014711300536243200257200ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * tRNA type * @author Daniel Gomez Blanco * @version 1.0 */ public class RNAt extends RNA{} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Sequence.java000077500000000000000000000037711300536243200266710ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Sequence in a MSA. * @author Daniel Gomez Blanco * @version 1.0 */ public abstract class Sequence { /** * Sequence identifier. */ private String id; /** * Sequence data. */ private StringBuffer data; /** * Class constructor. * @param id Sequence identifier. * @param data Sequence data. */ public Sequence(String id, String data) { this.id = id; this.data = new StringBuffer(2000); this.data.append(data); } /** * Returns the sequence identifier. * @return Sequence identifier. */ public String getId() { return id; } /** * Returns the sequence data. * @return Sequence data. */ public String getData() { return data.toString(); } /** * Concats given data to the current data. * @param data Data to concat. */ public void concat(String data) { this.data.append(data); } /** * Replaces the character in the given position for the given character. * @param index Index of the character to be replaced. * @param character Character to be inserted. */ public void replaceChar(int index, char character) { this.data.setCharAt(index, character); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Taxable.java000077500000000000000000000020341300536243200264700ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Defines method getTaxa() that all MSA classes containing the number of * sequences must implement. * @author Daniel Gomez Blanco * @version 1.0 */ public interface Taxable { /** * Returns the number of sequences in the MSA. * @return Number of sequences in the MSA. */ public int getTaxa(); } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Type.java000077500000000000000000000016011300536243200260300ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Abstract class that acts as the root of the class hierarchy to define the MSA type. * @author Daniel Gomez Blanco * @version 1.0 */ public abstract class Type {} ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Typeable.java000077500000000000000000000017561300536243200266670ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Defines method getType() that all MSA or sequence classes containing the type * must implement. * @author Daniel Gomez Blanco * @version 1.0 */ public interface Typeable { /** * Returns the MSA type. * @return MSA type. */ public Type getType(); } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/Weightable.java000077500000000000000000000020121300536243200271570ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.types; /** * Defines method getWeight() that all MSA or sequence classes containing a weight * must implement. * @author Daniel Gomez Blanco * @version 1.0 */ public interface Weightable { /** * Returns the sequence or MSA weight. * @return Sequence weight. */ public float getWeight(); } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/types/package-info.java000066400000000000000000000002131300536243200274260ustar00rootroot00000000000000/** * Contains the classes needed to instantiate MSA objects. * * @author Daniel Gomez Blanco */ package es.uvigo.ei.sing.alter.types;ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/util/000077500000000000000000000000001300536243200240545ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/util/AlterProperties.java000066400000000000000000000007371300536243200300520ustar00rootroot00000000000000package es.uvigo.ei.sing.alter.util; import java.io.IOException; import java.util.Properties; public class AlterProperties extends Properties { private static final AlterProperties _singleton = new AlterProperties(); public AlterProperties() { try { this.load(AlterProperties.class.getResourceAsStream("/alter.properties")); } catch (IOException e) { throw new RuntimeException(e); } } public static AlterProperties getInstance() { return _singleton; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/000077500000000000000000000000001300536243200244135ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/AlnJModelTestWriter.java000077500000000000000000000046711300536243200311330ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class AlnWriter to adapt the output to jModelTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class AlnJModelTestWriter extends AlnWriter { /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param resNumbers Output residue numbers. * @param match Output match characters. * @param logger Logger name. */ public AlnJModelTestWriter(String os, boolean lowerCase, boolean resNumbers, boolean match, String logger) { super(os, lowerCase, resNumbers, match, logger); } /** * Writes a MSA in ALN format, adapted for jModelTest. It checks * that the MSA is not a protein MSA and that it contains 4 or more sequences. * It then calls the method in the superclass. * @param msa Input MSA. * @return String with the MSA in ALN format. */ @Override public String write(MSA msa) { if (msa.getSeqs().size() < 4) logger.log(Level.WARNING, "MSA contains less than 4 sequences. " + "It will not be processed by jModelTest."); Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) type = WriterUtils.inferType(msa); if (type instanceof Protein) logger.log(Level.WARNING, "MSA is an amino acids MSA. " + "It will not be processed by jModelTest (only DNA is processed)."); return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/AlnWriter.java000077500000000000000000000251651300536243200272010ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; /** Implements interface Writer for the ALN format. * @author Daniel Gomez Blanco * @version 1.1 */ public class AlnWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Output residue numbers. */ boolean resNumbers; /** * Output match characters. */ boolean match; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param resNumbers Output residue numbers. * @param match Output match characters. * @param logger Logger name. */ public AlnWriter(String os, boolean lowerCase, boolean resNumbers, boolean match, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.resNumbers = resNumbers; this.match = match; this.logger = Logger.getLogger(logger); } /** * Writes a MSA in ALN format. * @param msa Input MSA. * @return MSA in ALN format. */ public String write(MSA msa) { //Output StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Copy sequences and calculate longest ID in order to align String[] data = new String[msa.getSeqs().size()]; LinkedHashSet id = new LinkedHashSet(msa.getSeqs().size()); int[] residues = new int[msa.getSeqs().size()]; int longestId = 0; for (int i = 0; i < msa.getSeqs().size(); i++) { //Copy data Sequence seq = (Sequence) msa.getSeqs().elementAt(i); data[i] = getData(seq, (Sequence) msa.getSeqs().firstElement()); String uid = getId(seq, id); id.add(uid); //Update longest ID if (uid.length() > longestId) longestId = uid.length(); residues[i] = 0; } //Write header outb.append(writeHeader()); //Write sequences while (!data[0].isEmpty()) { String[] forConsensus = new String[data.length]; int i = 0; for (String uid:id) { outb.append(writeLine(uid, longestId, data, forConsensus, residues, i)); i++; } //Write consensus line outb.append(consensusLine(forConsensus, longestId)); outb.append(nl); } logger.log(Level.INFO, "MSA successfully converted to ALN format!"); return outb.toString(); } /** * Returns the sequence identifier. In case the current identifier is * repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); if (id.contains(" ") || id.contains("\t")) { logger.log(Level.WARNING, "ID for sequence \"" + id + "\" contains blanks. Blanks replaced by \"_\"."); id = id.replaceAll("[\t ]", "_"); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Returns the sequence data, using lowercase or match characters if * necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ protected String getData(Sequence seq, Sequence first) { String data; if (match) data = WriterUtils.writeMatch(seq, first); else data = seq.getData(); if (lowerCase) return data.toLowerCase(); else return data; } /** * Write the ALN header. * @return ALN header. */ protected String writeHeader() { return "CLUSTAL W (1.8) multiple sequence alignment (ALTER 1.3.3)" + nl + nl + nl; } /** * Writes a line corresponding to a sequence of the MSA. * @param id Sequence identifier. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @param forConsensus Data to calculate consensus line. * @param Residues written so far for every sequence. * @param index Index of the current sequence in the array (needed to * update data). * @return Line in ALN format. */ protected String writeLine(String id, int longestId, String data[], String forConsensus[], int residues[], int index) { StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " "); //Write a line if possible if (data[index].length() > 60) { forConsensus[index] = data[index].substring(0, 60); outb.append(forConsensus[index]); if (resNumbers) { int res = countResidues(forConsensus[index]); if (res != 0) { residues[index] += res; outb.append(" " + residues[index]); } } data[index] = data[index].substring(60); } else { forConsensus[index] = data[index]; outb.append(forConsensus[index]); if (resNumbers) { int res = countResidues(forConsensus[index]); if (res != 0) { residues[index] += res; outb.append(" " + residues[index]); } } data[index] = ""; } outb.append(nl); return outb.toString(); } /** * Counts residues (characters that are not "?" or "-") in the input string. * @param s Input string. * @return Number of residues in the string. */ protected int countResidues(String s) { int toret = 0; for(int i=0;i. */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class FastaWriter to adapt the output to dnaSP. * @author Daniel Gomez Blanco * @version 1.0 */ public class FastaDnaSPWriter extends FastaWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public FastaDnaSPWriter(String os, boolean lowerCase, boolean match, String logger) { super(os,lowerCase,match,logger); } /** * Writes a MSA in FASTA format, adapted to dnaSP. It checks that the MSA is * not a protein MSA. It then calls the method in the superclass. * @param msa Input MSA. * @return MSA in FASTA format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by dnaSP (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/FastaJModelTestWriter.java000077500000000000000000000046731300536243200314610ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class FastaWriter to adapt the output to jModelTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class FastaJModelTestWriter extends FastaWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public FastaJModelTestWriter(String os, boolean lowerCase, boolean match, String logger) { super(os,lowerCase,match,logger); } /** * Writes a MSA in FASTA format, adapted for jModelTest. It checks * that the MSA is not a protein MSA and that it contains 4 or more sequences. * It then calls the method in the superclass. * @param msa Input MSA. * @return String with the MSA in FASTA format. */ @Override public String write(MSA msa) { if (msa.getSeqs().size() < 4) logger.log(Level.WARNING, "MSA contains less than 4 sequences. " + "It will not be processed by jModelTest."); Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by jModelTest (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/FastaWriter.java000077500000000000000000000112341300536243200275150ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.Describable; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; /** * Implements interface Writer for the FASTA format. * @author Daniel Gomez Blanco * @version 1.1 */ public class FastaWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Output match characters. */ boolean match; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public FastaWriter(String os, boolean lowerCase, boolean match, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.match = match; this.logger = Logger.getLogger(logger); } /** * Writes a MSA in FASTA format. * @param msa Input MSA. * @return MSA in FASTA format. */ public String write(MSA msa) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); LinkedHashSet ids = new LinkedHashSet(msa.getSeqs().size()); //Write sequences for(int i=0;i ids) { String id = seq.getId(); if (seq instanceof Describable) id += " " + ((Describable) seq).getDesc(); return WriterUtils.getUniqueId(ids,id,logger.getName()); } /** * Returns the sequence data, using lowercase or match characters if * necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ protected String getData(Sequence seq, Sequence first) { String data; if (match) data = WriterUtils.writeMatch(seq, first); else data = seq.getData(); if (lowerCase) return data.toLowerCase(); else return data; } /** * Writes a complete sequence. * @param id Sequence identifier. * @param data Sequence data. * @return Formatted sequence. */ protected String writeSequence(String id, String data) { StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); //Escribir ID y descripcion outb.append(">" + id); outb.append(nl); //Mientras queden caracteres por escribir while(!data.isEmpty()) { //Si hay caracteres para hacer una línea if (data.length() > 60) { outb.append(data.substring(0, 60)); data = data.substring(60); } else { outb.append(data); data = ""; } outb.append(nl); } return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/GdeSeAlWriter.java000066400000000000000000000027671300536243200277330ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import es.uvigo.ei.sing.alter.types.MSA; /** * Extends class GdeWriter to adapt the output to SeAl. * @author Daniel Gomez Blanco * @version 1.0 */ public class GdeSeAlWriter extends GdeWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public GdeSeAlWriter(String os, boolean lowerCase, boolean match, String logger) { super(os,lowerCase,match,logger); } /** * Returns the character that must precede the sequence identifier. * @param msa Input MSA. * @return '#'. */ @Override protected char getStart(MSA msa) { return '#'; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/GdeWriter.java000077500000000000000000000130661300536243200271630ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.Describable; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Sequence; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Implements interface Writer for the GDE format. * @author Daniel Gomez Blanco * @version 1.1 */ public class GdeWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Output match characters. */ boolean match; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public GdeWriter(String os, boolean lowerCase, boolean match, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.match = match; this.logger = Logger.getLogger(logger); } /** * Writes a MSA in GDE format. * @param msa Input MSA. * @return MSA in GDE format. */ public String write(MSA msa) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Start character char start = getStart(msa); LinkedHashSet ids = new LinkedHashSet(msa.getSeqs().size()); //Write sequences for(int i=0;i ids) { String id = seq.getId(); if (seq instanceof Describable) id += " " + ((Describable) seq).getDesc(); return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Returns the sequence data, using lowercase or match characters if * necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ protected String getData(Sequence seq, Sequence first) { String data; if (match) data = WriterUtils.writeMatch(seq, first); else data = seq.getData(); if (lowerCase) return data.toLowerCase(); else return data; } /** * Returns the character that must precede the sequence identifier. * @param msa Input MSA. * @return '#' for nucleotides and '%' in othe case. */ protected char getStart(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); if (type instanceof Nucleotide) logger.log(Level.INFO,"Nucleotide MSA type inferred."); else logger.log(Level.INFO, "Protein MSA type inferred."); } if (type instanceof Nucleotide) return '#'; else return '%'; } /** * Writes a complete sequence. * @param id Sequence identifier. * @param data Sequence data. * @param start Start character. * @return Formatted sequence. */ protected String writeSequence(String id, String data, char start) { StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); //Write ID outb.append(start + id + nl); //While there are characters to be written while(!data.isEmpty()) { //If there are enough characters to make a line if (data.length() > 60) { outb.append(data.substring(0,60)); data = data.substring(60); } else { outb.append(data); data = ""; } outb.append(nl); } return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/MegaDnaSPWriter.java000066400000000000000000000042461300536243200302200ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class MegaWriter to adapt the output to dnaSP. * @author Daniel Gomez Blanco * @version 1.0 */ public class MegaDnaSPWriter extends MegaWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public MegaDnaSPWriter(String os, boolean lowerCase, boolean match, String logger) { super(os,lowerCase,match,logger); } /** * Writes a MSA in MEGA format, adapted to dnaSP. It checks that the MSA is * not a protein MSA. It then calls the method in the superclass. * @param msa Input MSA. * @return MSA in MEGA format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by dnaSP (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/MegaWriter.java000077500000000000000000000133011300536243200273250ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; /** * Implements interface Writer for the MEGA format. * @author Daniel Gomez Blanco * @version 1.0 */ public class MegaWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Output match characters. */ boolean match; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public MegaWriter(String os, boolean lowerCase, boolean match, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.match = match; this.logger = Logger.getLogger(logger); this.logger.setLevel(Level.ALL); } /** * Writes a MSA in MEGA format. * @param msa Input MSA. * @return MSA in MEGA format. */ public String write(MSA msa) { //Output StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); outb.append(writeHeader()); //Copy sequences String[] data = new String[msa.getSeqs().size()]; LinkedHashSet id = new LinkedHashSet(msa.getSeqs().size()); int longestId = 0; for (int i = 0; i < msa.getSeqs().size(); i++) { Sequence seq = (Sequence) msa.getSeqs().elementAt(i); //Copy data data[i] = getData(seq, (Sequence) msa.getSeqs().firstElement()); String uid = getId(seq,id); id.add(uid); //Update longest ID if(uid.length() > longestId) longestId = uid.length(); } //Write sequences while(!data[0].isEmpty()) { int i=0; for (String uid:id) { outb.append(writeLine(uid, longestId, data, i)); i++; } outb.append(nl); } logger.log(Level.INFO, "MSA successfully converted to MEGA format!"); return outb.toString(); } /** * Returns the sequence identifier. In case the current identifier is * repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Returns the sequence data, using lowercase or match characters if * necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ protected String getData(Sequence seq, Sequence first) { String data; if (match) data = WriterUtils.writeMatch(seq, first); else data = seq.getData(); if (lowerCase) return data.toLowerCase(); else return data; } /** * Writes the MEGA format header. * @return MEGA format header. */ protected String writeHeader() { return "#mega" + nl + "TITLE: MSA converted with ALTER 1.3.3" + nl + nl; } /** * Writes a line corresponding to a sequence of the MSA. * @param id Sequence identifier. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @param index Index of the current sequence in the array (needed to * update data). * @return Line in MEGA format. */ protected String writeLine(String id, int longestId, String[] data, int index) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append("#" + id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " "); //Write a line of 10 characters blocks for (int j = 0; j < 5; j++) { //If there are enough characters to make a 10 characters block if (data[index].length() > 10) { outb.append(data[index].substring(0, 10) + " "); data[index] = data[index].substring(10); } else { outb.append(data[index]); data[index] = ""; } //If there are no more data exit the loop if (data[index].isEmpty()) break; } outb.append(nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/MsfJModelTestWriter.java000077500000000000000000000045551300536243200311470ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class MsfWriter to adapt the output to jModelTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class MsfJModelTestWriter extends MsfWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param logger Logger name. */ public MsfJModelTestWriter(String os, boolean lowerCase, String logger) { super(os,lowerCase,logger); } /** * Writes a MSA in MSF format, adapted for jModelTest. It checks * that the MSA is not a protein MSA and that it contains 4 or more sequences. * It then calls the method in the superclass. * @param msa Input MSA. * @return String with the MSA in MSF format. */ @Override public String write(MSA msa) { if (msa.getSeqs().size() < 4) logger.log(Level.WARNING, "MSA contains less than 4 sequences. " + "It will not be processed by jModelTest."); Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by jModelTest (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/MsfMegaWriter.java000066400000000000000000000031641300536243200277760ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import es.uvigo.ei.sing.alter.types.Sequence; /** * Extends class MsfWriter to adapt to the output to MEGA. * @author Daniel Gomez Blanco * @version 1.0 */ public class MsfMegaWriter extends MsfWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param logger Logger name. */ public MsfMegaWriter(String os, boolean lowerCase, String logger) { super(os,lowerCase,logger); } /** * Returns the sequence data, using lowercase characters if necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ @Override protected String getData(Sequence seq) { if (lowerCase) return seq.getData().toLowerCase(); else return seq.getData(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/MsfSeaViewWriter.java000066400000000000000000000044471300536243200304750ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; /** * Extends class MsfWriter to adapt to the output to SeaView. * @author Daniel Gomez Blanco * @version 1.0 */ public class MsfSeaViewWriter extends MsfWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param logger Logger name. */ public MsfSeaViewWriter(String os, boolean lowerCase, String logger) { super(os,lowerCase,logger); } /** * Writes information of a sequence, to be placed in the information block * after the MSF header. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param length Sequence length. * @param longestLength Longest length number length. * @param check Sequence checksum. * @param longestCheck Longest checksum length. * @param weight Sequence weight. * @param longestWeight Longest weight length. * @return Sequence information. */ @Override protected String writeInfo(String id, int longestId, int length, int longestLength, int check, int longestCheck, float weight, int longestWeight) { return " Name: " + id + WriterUtils.align(id.length(),longestId) + " Len: " + WriterUtils.align(String.valueOf(length).length(),longestLength) + length + " Check: " + WriterUtils.align((String.valueOf(check)).length(),longestCheck) + check + " Weight: " + WriterUtils.align(String.valueOf(weight).length(),longestWeight) + weight + nl; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/MsfWriter.java000077500000000000000000000260161300536243200272100ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.Lengthable; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Sequence; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; import es.uvigo.ei.sing.alter.types.Weightable; /** * Implements interface Writer for the MSF format. * @author Daniel Gomez Blanco * @version 1.1 */ public class MsfWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param logger Logger name. */ public MsfWriter(String os, boolean lowerCase, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.logger = Logger.getLogger(logger); } /** * Writes a MSA in MSF format. * @param msa Input MSA. * @return MSA in MSF format. */ public String write(MSA msa) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Copy sequence data and find longest strings String[] data = new String[msa.getSeqs().size()]; LinkedHashSet id = new LinkedHashSet(msa.getSeqs().size()); int[] length = new int[msa.getSeqs().size()]; int[] check = new int[msa.getSeqs().size()]; float[] weight = new float[msa.getSeqs().size()]; int longestId = 0; int longestLength = 0; int longestCheck = 0; int longestWeight = 0; for (int i = 0; i < msa.getSeqs().size(); i++) { Sequence seq = (Sequence)msa.getSeqs().elementAt(i); data[i] = getData(seq); String uid = getId(seq,id); id.add(uid); length[i] = getLength(seq); check[i] = getChecksum(data[i]); weight[i] = getWeight(seq); if (uid.length() > longestId) longestId = uid.length(); if (String.valueOf(length[i]).length() > longestLength) longestLength = String.valueOf(length[i]).length(); if ((String.valueOf(check[i])).length() > longestCheck) longestCheck = (String.valueOf(check[i])).length(); if (String.valueOf(weight[i]).length() > longestWeight) longestWeight = String.valueOf(weight[i]).length(); } //Write header int msaLength = getLength(msa); int msaCheck = getChecksum(check); char msaType = getType(msa); outb.append(writeHeader(msaLength, msaType, msaCheck)); //Write sequences information int i=0; for (String uid:id) { outb.append(writeInfo(uid, longestId, length[i], longestLength, check[i], longestCheck, weight[i], longestWeight)); i++; } outb.append(nl + "//" + nl + nl + nl + nl); while (!data[0].isEmpty()) { i = 0; for (String uid:id) { outb.append(writeLine(uid, longestId, data, i)); i++; } outb.append(nl); } logger.log(Level.INFO, "MSA successfully converted to MSF format!"); return outb.toString(); } /** * Returns the sequence identifier. In case the current identifier is * repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); //If ID contains spaces if (id.length() > 10 && (id.contains(" ") || id.contains("\t"))) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" is longer than 10 characters and contains blanks. Blanks replaced by \"_\"."); id = id.replaceAll("[\t ]","_"); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Returns the sequence data, using lowercase characters if necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ protected String getData(Sequence seq) { if (lowerCase) return seq.getData().replace('-','.').toLowerCase(); else return seq.getData().replace('-', '.'); } /** * Returns the length of the sequence. * @param seq Sequence to get the length of. * @return Sequence length. */ protected int getLength(Sequence seq) { if (seq instanceof Lengthable) return ((Lengthable) seq).getLength(); else return seq.getData().length(); } /** * Returns the length of the sequences in the MSA. * @param msa MSA to get the length of. * @return Length of the sequences in the MSA. */ protected int getLength(MSA msa) { if (msa instanceof Lengthable) return ((Lengthable) msa).getLength(); else return ((Sequence) msa.getSeqs().firstElement()).getData().length(); } /** * Returns the sequence weight. * @param seq Sequence to get the weight of. * @return Sequence weight. */ protected float getWeight(Sequence seq) { if (seq instanceof Weightable) return ((Weightable) seq).getWeight(); else return 1.0f; } /** * Calculates the MSA checksum using the checksums of the sequences in the MSA. * @param check Checksums of the sequences in the MSA. * @return MSA checksum. */ protected int getChecksum (int[] check) { int checksum = 0; for (int i=0;i 10) { outb.append(data[index].substring(0, 10) + " "); data[index] = data[index].substring(10); } else { outb.append(data[index]); data[index] = ""; break; } } outb.append(nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusDnaSPWriter.java000066400000000000000000000044021300536243200304430ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class NexusWriter to adapt the output to dnaSP. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusDnaSPWriter extends NexusWriter { /** * Class constructor. Calls the constructor in the superclass. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusDnaSPWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os, lowerCase, sequential, match, logger); } /** * Writes a MSA in NEXUS format, adapted to dnaSP. It checks that the MSA is * not a protein MSA. It then calls the method in the superclass. * @param msa Input MSA. * @return MSA in NEXUS format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by dnaSP (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusJModelTestWriter.java000077500000000000000000000050161300536243200315150ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class NexusWriter to adapt the output to jModelTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusJModelTestWriter extends NexusWriter { /** * Class constructor. Calls the constructor in the superclass. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusJModelTestWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes a MSA in NEXUS format, adapted for jModelTest. It checks * that the MSA is not a protein MSA and that it contains 4 or more sequences. * It then calls the method in the superclass. * @param msa Input MSA. * @return String with the MSA in NEXUS format. */ @Override public String write(MSA msa) { if (msa.getSeqs().size() < 4) logger.log(Level.WARNING, "MSA contains less than 4 sequences. " + "It will not be processed by jModelTest."); Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by jModelTest (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusMesquiteWriter.java000066400000000000000000000040421300536243200312720ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; /** * Extends class NexusWriter to adapt the output to Mesquite. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusMesquiteWriter extends NexusWriter { /** * Class constructor. Calls the constructor in the superclass. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusMesquiteWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os, lowerCase, sequential, match, logger); } /** * Writes the NEXUS header adapted to Mesquite. * @param taxa Number of sequences. * @param length Sequences length. * @param type MSA type. * @return NEXUS header. */ @Override protected String writeHeader(int taxa, int length, String type) { String out = "#NEXUS" + nl; out += "BEGIN DATA;" + nl; out += "dimensions ntax=" + taxa + " nchar=" + length + ";" + nl; out += "format missing=?" + nl; out += "symbols=\"ABCDEFGHIKLMNOPQRSTUVWXYZ\"" + nl; if (!sequential) out += "interleave "; out += "datatype=" + type + " gap=-;" + nl + nl; out += "matrix" + nl; return out; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusMrBayesWriter.java000077500000000000000000000114561300536243200310520ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.DNA; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.RNA; import es.uvigo.ei.sing.alter.types.Sequence; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class NexusWriter to adapt the output to MrBayes. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusMrBayesWriter extends NexusWriter { /** * Class constructor. Calls the constructor in the superclass. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusMrBayesWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os, lowerCase, sequential, match, logger); } /** * Returns the sequence identifier, considering MrBayes limitations. In case * the current identifier is repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ @Override protected String getId(Sequence seq, LinkedHashSet ids) { //Copy ID String id = seq.getId(); //If it contains spaces if (id.contains(" ") || id.contains("\t")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains blanks. Blanks replaced by \"_\""); id = id.replaceAll("[\t ]","_"); } //If it contains characters used indicate comments if (id.contains("[") || id.contains("]")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains \"[\" or \"]\". Characters replaced by \"_\""); id = id.replaceAll("\\[\\]","_"); } if (id.replaceAll("[_.0-9a-zA-Z]", "").length() != 0) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains invalid characters. Characters replaced by \"_\""); id = id.replaceAll("[^_.0-9a-zA-Z]","_"); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Writes the NEXUS header adapted to MrBayes. * @param taxa Number of sequences. * @param length Sequences length. * @param type MSA type. * @return NEXUS header. */ @Override protected String writeHeader(int taxa, int length, String type) { String out = "#NEXUS" + nl; out += "BEGIN DATA;" + nl; out += "dimensions ntax=" + taxa + " nchar=" + length + ";" + nl; out += "format missing=?" + nl; if (sequential) out += "interleave=no "; else out += "interleave=yes "; out += "datatype=" + type + " gap=- match=.;" + nl + nl; out += "matrix" + nl; return out; } /** * Returns a string with the MSA type. MrBayes does not accept NUCLEOTIDE * type so it is changed to DNA. * @param msa MSA to get the type of. * @return MSA type. */ @Override protected String getType(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); if (type instanceof Nucleotide) logger.log(Level.INFO,"Nucleotide MSA type inferred."); else logger.log(Level.INFO, "Protein MSA type inferred."); } if (type instanceof Protein) return "PROTEIN"; else if (type instanceof Nucleotide) if (type instanceof DNA) return "DNA"; else if (type instanceof RNA) return "RNA"; else return "DNA"; else return "UNKNOWN"; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusProtTestWriter.java000077500000000000000000000044001300536243200312630ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class NexusWriter to adapt the output to ProtTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusProtTestWriter extends NexusWriter { /** * Class constructor. Calls the constructor in the superclass. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusProtTestWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes a MSA in NEXUS format adapted to ProtTest. It checks that it is * a proteins MSA and calls the superclass method. * @param msa Input MSA. * @return MSA in NEXUS format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Nucleotide) { logger.log(Level.WARNING,"MSA is a nucleotides MSA. " + "It will not be processed by ProtTest (only protein is processed)."); } return super.write(msa); } }ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusSplitsTreeWriter.java000066400000000000000000000042321300536243200315750ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; /** * Extends class NexusWriter to adapt the output to SplitsTree. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusSplitsTreeWriter extends NexusWriter { /** * Class constructor. Calls the constructor in the superclass. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusSplitsTreeWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os, lowerCase, sequential, match, logger); } /** * Writes the NEXUS header adapted to SplitsTree. * @param taxa Number of sequences. * @param length Sequences length. * @param type MSA type. * @return NEXUS header. */ @Override protected String writeHeader(int taxa, int length, String type) { String out = "#nexus" + nl; out += "begin taxa;" + nl; out += "dimensions ntax=" + taxa + ";" + nl; out += "taxlabels _detect_;" + nl; out += "end;" + nl + nl; out += "begin characters;" + nl; out += "dimensions nchar=" + length + ";" + nl; out += "format missing=?" + nl; if (!sequential) out += "interleave "; out += "datatype=" + type.toLowerCase() + " labels gap=-;" + nl + nl; out += "matrix" + nl; return out; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusTCSWriter.java000077500000000000000000000047701300536243200301420ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class NexusWriter to adapt the output to TCS. * @author Daniel Gomez Blanco * @version 1.0 */ public class NexusTCSWriter extends NexusWriter { /** * Class constructor. Calls the constructor in the superclass. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusTCSWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os, lowerCase, sequential, match, logger); } /** * Writes a MSA in NEXUS format, adapted to TCS. It checks that the MSA is * not a proteins MSA and that it not contains ambiguous caracters. It then * calls the superclass method. * @param msa Input MSA. * @return MSA in NEXUS format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is a protein MSA. " + "It will not be processed by TCS (only DNA is processed)."); } if (WriterUtils.isIUPAC(msa,type)) { logger.log(Level.WARNING,"MSA contains IUPAC ambiguous characters. " + "They will be treated as missing data by TCS."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/NexusWriter.java000077500000000000000000000254671300536243200275760ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.DNA; import es.uvigo.ei.sing.alter.types.Lengthable; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.RNA; import es.uvigo.ei.sing.alter.types.Sequence; import es.uvigo.ei.sing.alter.types.Taxable; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Implements interface Writer for the NEXUS format. * @author Daniel Gomez Blanco * @version 1.1 */ public class NexusWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Sequential output. */ boolean sequential; /** * Output match characters. */ boolean match; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public NexusWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.sequential = sequential; this.match = match; this.logger = Logger.getLogger(logger); } /** * Writes a MSA in NEXUS format. * @param msa Input MSA. * @return MSA in NEXUS format. */ public String write(MSA msa) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Copy sequences and find longest ID String[] data = new String[msa.getSeqs().size()]; LinkedHashSet id = new LinkedHashSet(msa.getSeqs().size()); int longestId = 0; for (int i = 0; i < msa.getSeqs().size(); i++) { Sequence seq = (Sequence)msa.getSeqs().elementAt(i); //Copy data data[i] = getData(seq, (Sequence) msa.getSeqs().firstElement()); //Copy ID String uid = getId(seq,id); id.add(uid); //Update longest ID if (uid.length() > longestId) longestId = uid.length(); } //Intantiate number of sequences, length and type int taxa = getTaxa(msa); int length = getLength(msa); String type = getType(msa); //Write header outb.append(writeHeader(taxa, length, type)); if (sequential) outb.append(sequential(id, longestId, data)); else outb.append(interleaved(id, longestId, data)); outb.append(writeFooter()); logger.log(Level.INFO, "MSA successfully converted to NEXUS format!"); return outb.toString(); } /** * Writes sequences of a MSA in sequential NEXUS. * @param id Sequences identifiers. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @return Sequences in sequential NEXUS. */ private String sequential (LinkedHashSet id, int longestId, String[] data) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Write sequences int i= 0; for(String uid:id) { outb.append(writeSequence(uid, longestId, data[i])); i++; } return outb.toString(); } /** * Writes sequences of a MSA in interleaved NEXUS. * @param id Sequences identifiers. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @return Sequences in interleaved NEXUS. */ private String interleaved (LinkedHashSet id, int longestId, String[] data) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Write sequences while (!data[0].isEmpty()) { int i=0; for(String uid:id) { outb.append(writeLine(uid, longestId, data, i)); i++; } outb.append(nl); } return outb.toString(); } /** * Returns the sequence identifier. In case the current identifier is * repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ protected String getId(Sequence seq, LinkedHashSet ids) { //Copiar identificador String id = seq.getId(); //Si contiene espacios if (id.contains(" ") || id.contains("\t")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains blanks. Blanks replaced by \"_\""); id = id.replaceAll("[\t ]","_"); } //Si contiene caracteres destinados a comentarios if (id.contains("[") || id.contains("]")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains \"[\" or \"]\". Characters replaced by \"_\""); id = id.replaceAll("\\[\\]","_"); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Returns the sequence data, using lowercase or match characters if * necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ protected String getData(Sequence seq, Sequence first) { String data; if (match) data = WriterUtils.writeMatch(seq, first); else data = seq.getData(); if (lowerCase) return data.toLowerCase(); else return data; } /** * Returns the number of sequences in the MSA. * @param msa MSA to get the number of sequences of. * @return Number of sequences. */ protected int getTaxa(MSA msa) { if (msa instanceof Taxable) return ((Taxable) msa).getTaxa(); else return msa.getSeqs().size(); } /** * Returns the length of the sequences in the MSA. * @param msa MSA to get the length of. * @return Length of the sequences in the MSA. */ protected int getLength(MSA msa) { if (msa instanceof Lengthable) return ((Lengthable) msa).getLength(); else return ((Sequence) msa.getSeqs().firstElement()).getData().length(); } /** * Returns a string with the MSA type. * @param msa MSA to get the type of. * @return MSA type. */ protected String getType(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); if (type instanceof Nucleotide) logger.log(Level.INFO,"Nucleotide MSA type inferred."); else logger.log(Level.INFO, "Protein MSA type inferred."); } if (type instanceof Protein) return "PROTEIN"; else if (type instanceof Nucleotide) if (type instanceof DNA) return "DNA"; else if (type instanceof RNA) return "RNA"; else return "NUCLEOTIDE"; else return "UNKNOWN"; } /** * Writes the NEXUS header. * @param taxa Number of sequences. * @param length Sequences length. * @param type MSA type. * @return NEXUS header. */ protected String writeHeader(int taxa, int length, String type) { String out = "#NEXUS" + nl; out += "BEGIN DATA;" + nl; out += "dimensions ntax=" + taxa + " nchar=" + length + ";" + nl; out += "format missing=?" + nl; out += "symbols=\"ABCDEFGHIKLMNOPQRSTUVWXYZ\"" + nl; if (!sequential) out += "interleave "; out += "datatype=" + type + " gap=- match=.;" + nl + nl; out += "matrix" + nl; return out; } /** * Writes NEXUS footer. * @return NEXUS footer. */ protected String writeFooter() { return ";" + nl + "end;" + nl; } /** * Writes a complete sequence. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ protected String writeSequence(String id, int longestId, String data) { StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(),longestId) + WriterUtils.align(longestId, 10) + " "); outb.append(data + nl); return outb.toString(); } /** * Writes a line corresponding to a sequence of the MSA. * @param id Sequence identifier. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @param index Index of the current sequence in the array (needed to * update data). * @return Line in NEXUS format. */ protected String writeLine(String id, int longestId, String[] data, int index) { StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(),longestId) + WriterUtils.align(longestId, 10) + " "); //Escribir una línea si es posible if (data[index].length() > 50) { outb.append(data[index].substring(0, 50)); data[index] = data[index].substring(50); } else { outb.append(data[index]); data[index] = ""; } outb.append(nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipBioEditWriter.java000066400000000000000000000032001300536243200311530ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; /** * Extends class PhylipWriter to adapt the output to BioEdit. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipBioEditWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipBioEditWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match, logger); } /** * Writes the PHYLIP header, adapted to BioEdit. * @param taxa Number of sequences. * @param length Sequences length. * @return PHYLIP header. */ @Override protected String writeHeader(int taxa, int length) { return " " + taxa + " " + length + nl; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipCodABCWriter.java000077500000000000000000000056021300536243200306620ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class PhylipWriter to adapt the output to CodABC. * @author Daniel Glez-Peña * @version 1.0 */ public class PhylipCodABCWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipCodABCWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes a MSA in PHYLIP format, adapted to CodABC. It checks that the MSA is * not a proteins MSA. It then calls the superclass method. * * @param msa Input MSA. * @return MSA in NEXUS format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is a protein MSA. " + "It will not be processed by CodABC (only DNA is processed)."); } return super.write(msa); } /** * Writes a complete sequence, adaptaed to CodABC. It writes the whole sequence * in a single line. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ @Override protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + data + nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipDnaSPWriter.java000066400000000000000000000056101300536243200306100ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class PhylipWriter to adapt the output to dnaSP. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipDnaSPWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipDnaSPWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes a MSA in PHYLIP format, adapted to dnaSP. It checks that the MSA is * not a protein MSA. It then calls the method in the superclass. * @param msa Input MSA. * @return MSA in PHYLIP format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by dnaSP (only DNA is processed)."); } return super.write(msa); } /** * Writes a complete sequence, adapted to dnaSP. It writes the whole sequence * in a single line. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ @Override protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " " + data + nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipJModelTestWriter.java000077500000000000000000000050111300536243200316530ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class PhylipWriter to adapt the output to jModelTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipJModelTestWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipJModelTestWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match, logger); } /** * Writes a MSA in PHYLIP format, adapted for jModelTest. It checks * that the MSA is not a protein MSA and that it contains 4 or more sequences. * It then calls the method in the superclass. * @param msa Input MSA. * @return String with the MSA in PHYLIP format. */ @Override public String write(MSA msa) { if (msa.getSeqs().size() < 4) logger.log(Level.WARNING, "MSA contains less than 4 sequences. " + "It will not be processed by jModelTest."); Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by jModelTest (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipMegaWriter.java000066400000000000000000000061761300536243200305240ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.Sequence; /** * Extends class PhylipWriter to adapt the output to MEGA. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipMegaWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipMegaWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Returns the sequence identifier, considering MEGA limitations. In case * the current identifier is repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ @Override protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); //If ID contains spaces if (id.contains(" ") || id.contains("\t")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains blanks. Blanks replaced by \"_\"."); id = id.replaceAll("[\t ]","_"); } //If ID is longer than 256 if (id.length() > 256) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" is longer than 50 characters. ID truncated to \"" + id.substring(0,256) + "\""); id = id.substring(0,256); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Writes a complete sequence, adapted to MEGA. It writes the whole sequence * in a single line. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ @Override protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10)+ " " + data + nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipPAMLWriter.java000077500000000000000000000061061300536243200304000ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.Sequence; /** * Extends class PhylipWriter to adapt the output to PAML. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipPAMLWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipPAMLWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes the PHYLIP header, adapted to PAML. It writes an "I" in case * it is interleaved. * @param taxa Number of sequences. * @param length Sequences length. * @return PHYLIP header. */ @Override protected String writeHeader(int taxa, int length) { if (sequential) return taxa + " " + length + nl; else return taxa + " " + length + " I" + nl; } /** * Returns the sequence identifier, considering PAML limitations. In case * the current identifier is repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ @Override protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); //If ID contains ",:#()$=" if (id.contains("(") || id.contains(")") || id.contains(",") || id.contains(":") || id.contains("#") || id.contains("$") || id.contains("=")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains one of \",:#()$=\". Characters removed."); id = id.replaceAll("[,:=()#$]",""); } //If ID is longer than 30 if (id.length() > 30) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" is longer than 30 characters. ID truncated to \"" + id.substring(0,30) + "\""); id = id.substring(0,30); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipPhyMLWriter.java000077500000000000000000000055171300536243200306450ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.Sequence; /** * Extends class PhylipWriter to adapt the output to PhyML. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipPhyMLWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipPhyMLWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Returns the sequence identifier, considering PhyML limitations. In case * the current identifier is repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ @Override protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); //If ID contains "(),:" if (id.contains("(") || id.contains(")") || id.contains(",") || id.contains(":")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains one of \"(),:\". Characters removed."); id = id.replaceAll("[,:()]",""); } //If ID contains spaces if (id.contains(" ") || id.contains("\t")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains blanks. Blanks replaced by \"_\"."); id = id.replaceAll("[\t ]","_"); } //If ID is longer than 100 if (id.length() > 100) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" is longer than 100 characters. ID truncated to \"" + id.substring(0,100) + "\""); id = id.substring(0,100); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipProtTestWriter.java000077500000000000000000000056201300536243200314330ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class PhylipWriter to adapt the output to ProtTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipProtTestWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipProtTestWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential, match, logger); } /** * Writes a MSA in PHYLIP format adapted to ProtTest. It checks that it is * a proteins MSA and calls the superclass method. * @param msa Input MSA. * @return MSA in PHYLIP format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Nucleotide) { logger.log(Level.WARNING,"MSA is a nucleotides MSA. " + "It will not be processed by ProtTest (only protein is processed)."); } return super.write(msa); } /** * Writes a complete sequence, adapted to ProtTest. It writes the whole sequence * in a single line. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ @Override protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " " + data + nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipRAxMLWriter.java000077500000000000000000000102061300536243200305660ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; /** * Extends class PhylipWriter to adapt the output to RAxML. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipRAxMLWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipRAxMLWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes a MSA in PHYLIP format, adapted for RAxML. It checks * that the MSA contains 4 or more sequences. * It then calls the method in the superclass. * @param msa Input MSA. * @return String with the MSA in PHYLIP format. */ @Override public String write(MSA msa) { if (msa.getSeqs().size() < 4) logger.log(Level.WARNING, "MSA contains less than 4 sequences. " + "It will not be processed by RAxML."); return super.write(msa); } /** * Returns the sequence identifier, considering RAxML limitations. In case * the current identifier is repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ @Override protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); //If ID contains "(),:;[]" if (id.contains("(") || id.contains(")") || id.contains(",") || id.contains(":") || id.contains(";") || id.contains("[") || id.contains("]")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains one of \"()[],:;\". Characters removed."); id = id.replaceAll("[,:;()\\[\\]]",""); } //If ID contains spaces if (id.contains(" ") || id.contains("\t")) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" contains blanks. Blanks replaced by \"_\"."); id = id.replaceAll("[\t ]","_"); } //If ID is longer than 256 if (id.length() > 256) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" is longer than 50 characters. ID truncated to \"" + id.substring(0,256) + "\""); id = id.substring(0,256); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Writes a complete sequence, adapted to RAxML. It writes the whole sequence * in a single line. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ @Override protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " " + data + nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipSplitsTreeWriter.java000066400000000000000000000037511300536243200317450ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; /** * Extends class PhylipWriter to adapt the output to SplitsTree. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipSplitsTreeWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipSplitsTreeWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes a complete sequence, adapted to SplitsTree. It writes the whole sequence * in a single line. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ @Override protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " " + data + nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipTCSWriter.java000077500000000000000000000061651300536243200303050ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class PhylipWriter to adapt the output to TCS. * @author Daniel Gomez Blanco * @version 1.0 */ public class PhylipTCSWriter extends PhylipWriter { /** * Class constructor. Calls superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipTCSWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { super(os,lowerCase,sequential,match,logger); } /** * Writes a MSA in PHYLIP format, adapted to TCS. It checks that the MSA is * not a proteins MSA and that it not contains ambiguous caracters. It then * calls the superclass method. * @param msa Input MSA. * @return MSA in NEXUS format. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is a protein MSA. " + "It will not be processed by TCS (only DNA is processed)."); } if (WriterUtils.isIUPAC(msa,type)) { logger.log(Level.WARNING,"MSA contains IUPAC ambiguous characters. " + "They will be treated as missing data by TCS."); } return super.write(msa); } /** * Writes a complete sequence, adaptaed to TCS. It writes the whole sequence * in a single line. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ @Override protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + data + nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PhylipWriter.java000077500000000000000000000265411300536243200277330ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.Lengthable; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Sequence; import es.uvigo.ei.sing.alter.types.Taxable; /** * Implements interface Writer for the PHYLIP format. * @author Daniel Gomez Blanco * @version 1.1 */ public class PhylipWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Sequential output. */ boolean sequential; /** * Output match characters. */ boolean match; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param sequential Sequential output. * @param match Output match characters. * @param logger Logger name. */ public PhylipWriter(String os, boolean lowerCase, boolean sequential, boolean match, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.sequential = sequential; this.match = match; this.logger = Logger.getLogger(logger); } /** * Writes a MSA in PHYLIP format. * @param msa Input MSA. * @return MSA in PHYLIP format. */ public String write(MSA msa) { //Output StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Instantiate taxa and length int taxa = getTaxa(msa); int length = getLength(msa); outb.append(writeHeader(taxa, length)); //Copy sequences String[] data = new String[msa.getSeqs().size()]; LinkedHashSet id = new LinkedHashSet(msa.getSeqs().size()); int longestId = 0; for (int i = 0; i < msa.getSeqs().size(); i++) { Sequence seq = (Sequence) msa.getSeqs().elementAt(i); //Copy data data[i] = getData(seq, (Sequence) msa.getSeqs().firstElement()); String uid = getId(seq,id); id.add(uid); //Update longest ID if(uid.length() > longestId) longestId = uid.length(); } if (sequential) outb.append(sequential(id, longestId, data)); else outb.append(interleaved(id, longestId, data)); logger.log(Level.INFO, "MSA successfully converted to PHYLIP format!"); return outb.toString(); } /** * Writes sequences of a MSA in interleaved PHYLIP. * @param id Sequences identifiers. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @return Sequences in interleaved PHYLIP. */ private String interleaved(LinkedHashSet id, int longestId, String[] data) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); //Write first sequences with identifier int i = 0; for (String uid:id) { outb.append(writeLine(uid, longestId, data, i)); i++; } outb.append(nl); //Write the rest of the sequences while (!data[0].isEmpty()) { i = 0; for (String uid:id) { outb.append(writeLine(longestId, data, i)); i++; } outb.append(nl); } return outb.toString(); } /** * Writes sequences of a MSA in sequential PHYLIP. * @param id Sequences identifiers. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @return Sequences in sequential PHYLIP. */ private String sequential(LinkedHashSet id, int longestId, String[] data) { StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); int i = 0; for (String uid:id) { outb.append(writeSequence(uid, longestId, data[i])); i++; } return outb.toString(); } /** * Returns the number of sequences in the MSA. * @param msa MSA to get the number of sequences of. * @return Number of sequences. */ protected int getTaxa(MSA msa) { if (msa instanceof Taxable) return ((Taxable) msa).getTaxa(); else return msa.getSeqs().size(); } /** * Returns the length of the sequences in the MSA. * @param msa MSA to get the length of. * @return Length of the sequences in the MSA. */ protected int getLength(MSA msa) { if (msa instanceof Lengthable) return ((Lengthable) msa).getLength(); else return ((Sequence) msa.getSeqs().firstElement()).getData().length(); } /** * Returns the sequence identifier. In case the current identifier is * repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); if (id.length() > 10) { logger.log(Level.WARNING,"ID for sequence \"" + id + "\" is longer than 10 characters. ID truncated to \"" + id.substring(0,10) + "\""); id = id.substring(0,10); } return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Returns the sequence data, using lowercase or match characters if * necessary. * @param seq Sequence containing the data. * @param first First sequence in the MSA. * @return Sequence data. */ protected String getData(Sequence seq, Sequence first) { String data; if (match) data = WriterUtils.writeMatch(seq, first); else data = seq.getData(); if (lowerCase) return data.toLowerCase(); else return data; } /** * Writes the PHYLIP header. * @param taxa Number of sequences. * @param length Sequences length. * @return PHYLIP header. */ protected String writeHeader(int taxa, int length) { return taxa + " " + length + nl; } /** * Writes a line corresponding to a sequence of the MSA. * @param id Sequence identifier. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @param index Index of the current sequence in the array (needed to * update data). * @return Line in PHYLIP format. */ protected String writeLine(String id, int longestId, String[] data, int index) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " "); //Write a row of 10 character blocks for (int j = 0; j < 5; j++) { //If there are enough characters to make a 10 character block if (data[index].length() > 10) { outb.append(data[index].substring(0, 10) + " "); data[index] = data[index].substring(10); } else { outb.append(data[index]); data[index] = ""; } //If there are no more characters to write exit the loop if (data[index].isEmpty()) break; } outb.append(nl); return outb.toString(); } /** * Writes a line corresponding to a sequence of the MSA. This method is * used in interleaved PHYLIP when the identifier is omitted before the data. * @param longestId Longest identifier length (needed to align). * @param data Sequences data. * @param index Index of the current sequence in the array (needed to * update data). * @return Line in PHYLIP format. */ protected String writeLine(int longestId, String[] data, int index) { //Write spaces to align StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(WriterUtils.align(0, longestId) + WriterUtils.align(longestId, 10) + " "); //Write a row of 10 character blocks for (int j = 0; j < 5; j++) { //If there are enough chracters to make a 10 character block if (data[index].length() > 10) { outb.append(data[index].substring(0, 10) + " "); data[index] = data[index].substring(10); } else { outb.append(data[index]); data[index] = ""; } //If there are no more characters to write, exit the loop. if (data[index].isEmpty()) break; } outb.append(nl); return outb.toString(); } /** * Writes a complete sequence. * @param id Sequence identifier. * @param longestId Longest identifier length. * @param data Sequence data. * @return Formatted sequence. */ protected String writeSequence(String id, int longestId, String data) { //Write ID StringBuffer outb = new StringBuffer(STRING_BUFFER_SEQLENGTH); outb.append(id + WriterUtils.align(id.length(), longestId) + WriterUtils.align(longestId, 10) + " "); while(!data.isEmpty()) { //Write a row with 10 character blocks for (int j = 0; j < 5; j++) { //If there are enough characters to make a 10 character block if (data.length() > 10) { outb.append(data.substring(0, 10) + " "); data = data.substring(10); } else { outb.append(data); data = ""; } //If there are no more characters to write, exit the loop if (data.isEmpty()) break; } outb.append(nl); if (!data.isEmpty()) { outb.append(WriterUtils.align(0, longestId) + WriterUtils.align(longestId, 10) + " "); } } outb.append(nl); return outb.toString(); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PirDnaSPWriter.java000066400000000000000000000044011300536243200300720ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extiende la clase PirWriter para adaptar la salida a dnaSP. * @author Daniel Gomez Blanco * @version 1.0 */ public class PirDnaSPWriter extends PirWriter { /** * Constructor de la clase. Llama al constructor de la superclase. * @param os Sistema operativo de salida. * @param lowerCase Salida en letras minúsculas. * @param match Salida codificada con caracteres match. * @param logger Nombre del logger a instanciar. */ public PirDnaSPWriter(String os, boolean lowerCase, boolean match, String logger) { super(os,lowerCase,match,logger); } /** * Escribe un MSA en formato PIR adaptado a dnaSP. Para ello * comprueba que el MSA no sea de proteínas. Luego llama al método de la superclase. * @param msa MSA de entrada. * @return Cadena con la el MSA en formato PIR. */ @Override public String write(MSA msa) { Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by dnaSP (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PirJModelTestWriter.java000077500000000000000000000046571300536243200311570ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.logging.Level; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Extends class PirWriter to adapt the output to jModelTest. * @author Daniel Gomez Blanco * @version 1.0 */ public class PirJModelTestWriter extends PirWriter { /** * Class constructor. Calls the superclass constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public PirJModelTestWriter(String os, boolean lowerCase, boolean match, String logger) { super(os,lowerCase,match,logger); } /** * Writes a MSA in PIR format, adapted for jModelTest. It checks * that the MSA is not a protein MSA and that it contains 4 or more sequences. * It then calls the method in the superclass. * @param msa Input MSA. * @return String with the MSA in PIR format. */ @Override public String write(MSA msa) { if (msa.getSeqs().size() < 4) logger.log(Level.WARNING, "MSA contains less than 4 sequences. " + "It will not be processed by jModelTest."); Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); } if (type instanceof Protein) { logger.log(Level.WARNING,"MSA is an amino acids MSA. " + "It will not be processed by jModelTest (only DNA is processed)."); } return super.write(msa); } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/PirWriter.java000077500000000000000000000170341300536243200272150ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.DNA; import es.uvigo.ei.sing.alter.types.DNACircular; import es.uvigo.ei.sing.alter.types.DNALinear; import es.uvigo.ei.sing.alter.types.Describable; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.ProteinComplete; import es.uvigo.ei.sing.alter.types.ProteinFragment; import es.uvigo.ei.sing.alter.types.RNA; import es.uvigo.ei.sing.alter.types.RNACircular; import es.uvigo.ei.sing.alter.types.RNALinear; import es.uvigo.ei.sing.alter.types.RNAOther; import es.uvigo.ei.sing.alter.types.RNAt; import es.uvigo.ei.sing.alter.types.Sequence; import es.uvigo.ei.sing.alter.types.Type; import es.uvigo.ei.sing.alter.types.Typeable; /** * Implements interface Writer for the PIR format. * @author Daniel Gomez Blanco * @version 1.1 */ public class PirWriter implements Writer { /** * New line characters according to the given output OS. */ String nl; /** * Lowercase output. */ boolean lowerCase; /** * Output match characters. */ boolean match; /** * Logger to register information messages. */ Logger logger; /** * Class constructor. * @param os Output operating system. * @param lowerCase Lowercase output. * @param match Output match characters. * @param logger Logger name. */ public PirWriter(String os, boolean lowerCase, boolean match, String logger) { if (os.equals("macos")) nl = "\r"; else if (os.equals("linux")) nl = "\n"; else nl = "\r\n"; this.lowerCase = lowerCase; this.match = match; this.logger = Logger.getLogger(logger); } /** * Writes a MSA in PIR format. * @param msa Input MSA. * @return MSA in PIR format. */ public String write(MSA msa) { //Output StringBuffer outb = new StringBuffer(STRING_BUFFER_MSALENGTH); String type = getType(msa); LinkedHashSet ids = new LinkedHashSet(msa.getSeqs().size()); //Write sequences for (int i = 0; i < msa.getSeqs().size(); i++) { //Get sequence Sequence seq = (Sequence) msa.getSeqs().elementAt(i); //Instantiate attributes String id = getId(seq, ids); ids.add(id); String data = getData(seq, (Sequence) msa.getSeqs().firstElement()); String desc = getDesc(seq); //Write sequence outb.append(writeSequence(type, id, desc, data)); } logger.log(Level.INFO, "MSA successfully converted to PIR format!"); return outb.toString(); } /** * Devuelve una cadena con el identificador de la secuencia. En caso de * que el identificador de secuencia esté repetido se renombra. * @param seq Secuencia de la cual se desea obtener el identificador. * @param ids Secuencias copiadas hasta el momento. * @return Identificador de secuencia único. */ protected String getId(Sequence seq, LinkedHashSet ids) { String id = seq.getId(); return WriterUtils.getUniqueId(ids, id, logger.getName()); } /** * Returns the sequence identifier. In case the current identifier is * repeated, it will be renamed. * @param seq Sequence containing the identifier. * @param ids Sequences copied so far. * @return Unique sequence identifier. */ protected String getData(Sequence seq, Sequence first) { String data; if (match) data = WriterUtils.writeMatch(seq, first); else data = seq.getData(); if (lowerCase) return data.toLowerCase(); else return data; } /** * Returns a sequence description. * @param seq Sequence to get the description of.. * @return Sequence description. */ protected String getDesc(Sequence seq) { if (seq instanceof Describable) return ((Describable) seq).getDesc(); else return ""; } /** * Returns a string with the type of MSA. * @param msa MSA to get the type of. * @return MSA type. */ protected String getType(MSA msa) { //Infer type if the instance is not Typeable Type type = null; if (msa instanceof Typeable) type = ((Typeable) msa).getType(); if (type == null) { type = WriterUtils.inferType(msa); if (type instanceof Nucleotide) logger.log(Level.INFO,"Nucleotide MSA type inferred."); else logger.log(Level.INFO, "Protein MSA type inferred."); } if (type instanceof Nucleotide) if (type instanceof DNA) if (type instanceof DNALinear) return "DL"; else if (type instanceof DNACircular) return "DC"; else return "DL"; else if (type instanceof RNA) if (type instanceof RNALinear) return "RL"; else if (type instanceof RNACircular) return "RC"; else if (type instanceof RNAt) return "N3"; else if (type instanceof RNAOther) return "N1"; else return "RL"; else return "DL"; else if (type instanceof Protein) if (type instanceof ProteinComplete) return "P1"; else if (type instanceof ProteinFragment) return "F1"; else return "P1"; else return "XX"; } /** * Writes a complete sequence. * @param type Sequence type. * @param id Sequence identifier. * @param desc Sequence description. * @param data Sequence data. * @return Formatted sequence. */ protected String writeSequence(String type, String id, String desc, String data) { String out = ""; //Write type, ID and description. out += ">" + type + ";" + id + nl; out += desc + nl; //While there are characters to write while (data.length() > 0) { //If there are enough characters to make a line if (data.length() > 60) { out += data.substring(0, 60); data = data.substring(60); } else { out += data; data = ""; } out += nl; } out += "*" + nl; return out; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/Writer.java000077500000000000000000000022701300536243200265360ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import es.uvigo.ei.sing.alter.types.MSA; /** * Define los métodos que deben implementar todos los escritores. * @author Daniel Gomez Blanco * @version 1.1 */ public interface Writer { /** * Devuelve una cadena con el MSA en un formato determinado. * @param msa MSA de entrada. * @return Cadena con el MSA formateado. */ public String write(MSA msa); public int STRING_BUFFER_MSALENGTH = 10000; public int STRING_BUFFER_SEQLENGTH = 2000; } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/WriterUtils.java000077500000000000000000000141101300536243200275530ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ package es.uvigo.ei.sing.alter.writer; import java.util.LinkedHashSet; import java.util.logging.Level; import java.util.logging.Logger; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.types.Nucleotide; import es.uvigo.ei.sing.alter.types.Protein; import es.uvigo.ei.sing.alter.types.Sequence; import es.uvigo.ei.sing.alter.types.Type; /** * Class with static methods commonly used by all writers. * @author Daniel Gomez Blanco * @version 1.1 */ public class WriterUtils { /** * Returns a string with the number of spaces to align two strings. * @param cur Current string length. * @param longest Longest string length. * @return String with loges - cur spaces. */ public static String align (int cur, int longest) { String toret = ""; for(int i=cur;i= 85) return new Nucleotide(); else return new Protein(); } /** * Indicates if a MSA contains ambiguous IUPAC characters or not. * @param msa Input MSA. * @param type Input MSA type. * @return Boolean indicating if the MSA contains ambiguous characters. */ public static boolean isIUPAC(MSA msa, Type type) { boolean toret = false; //If it is a protein if (type instanceof Protein) for(int i=0; i ids, String id, String logger) { String oldId = id; int cont = 0; while(ids.contains(id)) { int contChars = String.valueOf(cont).length(); id = id.substring(0, id.length() - contChars - 1) + "_" + cont; cont++; } if(!oldId.equals(id)) Logger.getLogger(logger).log(Level.WARNING, "ID for sequence \"" + oldId + "\" renamed to \"" + id + "\"."); return id; } } ALTER-1.3.4/alter-lib/src/main/java/es/uvigo/ei/sing/alter/writer/package-info.java000066400000000000000000000002041300536243200275760ustar00rootroot00000000000000/** * Writers to print MSAs in their correct formats. * * @author Daniel Gomez Blanco */ package es.uvigo.ei.sing.alter.writer;ALTER-1.3.4/alter-lib/src/main/javacc/000077500000000000000000000000001300536243200172015ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/javacc/parser/000077500000000000000000000000001300536243200204755ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/javacc/parser/AlnParser.jj000077500000000000000000000155301300536243200227200ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; } PARSER_BEGIN(AlnParser) package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Aln; import es.uvigo.ei.sing.alter.types.AlnSequence; import java.io.StringReader; import java.util.Vector; /** * ALN format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class AlnParser { /** * Static method that parses an input string and returns a MSA in ALN format. * @param in Input string. * @return MSA in ALN format. */ public static Aln parseMSA (String in) throws ParseException { //Parse string and return MSA AlnParser parser = new AlnParser(new StringReader(in)); return parser.Aln(); } } PARSER_END(AlnParser) TOKEN : { | | | | | } //When a "%" is found in DEFAULT state ignore it and change state to IN_COMMENT MORE : { "%": IN_COMMENT } //When any character is found within a comment, ignore it MORE : { < ~[] > } //When a EOL is found in IN_COMMENT state change to DEFAULT state SKIP : { <"\n" | "\r" | "\r\n">: DEFAULT } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines * until the word "CLUSTAL", "MUSCLE" or "PROBCONS".
*   2. Any character after the word "CLUSTAL", "MUSCLE" or "PROBCONS" * until the end of that line.
*   3. Any combination of spaces, tabs and new lines * until first sequence identifier.
*   4. Sequence blocks with the following structure:
*     4a. Sequence line:
*       4a1. Identifier.
*       4a2. Data line.
*       4a3. Number of residues (optional).
*     4b. Consensus line made up of spaces, tabs, "*", ":" or ".". * @return MSA in ALN format. */ Aln Aln(): { Vector seqs = new Vector(); String id, data; int cont = 0; } { ( | )* ("CLUSTAL" | "MUSCLE" | "PROBCONS") ( | | | | | "*" | ":" | "." | "-" | "?" | "CLUSTAL" | "MUSCLE" | "PROBCONS" | "\"" | "'")* ( | )* ( id = Id() data = DataLine() ( ()*)* { seqs.add(new AlnSequence(id,data)); } )+ (( | "*" | ":" | ".")* ())+ ( ( IdSeq(seqs.elementAt(cont).getId()) data = DataLine() ( ()*)* ( | ) { seqs.elementAt(cont).concat(data); cont++; } )+ ((( | "*" | ":" | ".")* ())+ | ) { cont = 0; } )* { return new Aln(seqs); } } /** * Parses a sequence identifier. The identifier cannot contain spaces * and it cannot start with the characters "*",":","." to avoid * confusion with consensus lines. * @return String with the sequence identifier. */ String Id(): { StringBuffer s = new StringBuffer(); Token t; } { ( ( ("\"" | "'") ( (t = | t = | t = | t = | t = | t = "*" | t = ":" | t= "." | t = "-" | t = "?" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS") { s.append(t.image); } )+ ("\"" | "'") ) | ( (t = | t = | t = | t = | t = "-" | t="?" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS") { s.append(t.image); } ( (t = | t = | t = | t = | t = "*" | t = ":" | t= "." | t = "-" | t = "?" | t = "\"" | t = "'" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS") { s.append(t.image); } )* ) ) { return s.toString(); } } /** * Same behaviour as Id(), but in this case equality between the already read * identifier and the current one is checked. * @param id Identifier to parse. */ void IdSeq(String id): { StringBuffer s = new StringBuffer(); Token t; } { ( ( ("\"" | "'") ( (t = | t = | t = | t = | t = | t = "*" | t = ":" | t= "." | t = "-" | t = "?" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS") { s.append(t.image); } )+ ("\"" | "'") ) | ( (t = | t = | t = | t = | t = "-" | t="?" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS") { s.append(t.image); } ( (t = | t = | t = | t = | t = "*" | t = ":" | t= "." | t = "-" | t = "?" | t = "\"" | t = "'" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS") { s.append(t.image); } )* ) ) { if (!id.equals(s.toString())) throw new ParseException("ID for sequence \"" + id + "\"does not match with ID in line " + t.beginLine); } } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "-", "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ String DataLine(): { StringBuffer s = new StringBuffer(); Token t; } { ( t = | ( (t = | t = | t = "-" | t = "." | t = "?" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS") { s.append(t.image); } ) )+ { return s.toString().toUpperCase(); } }ALTER-1.3.4/alter-lib/src/main/javacc/parser/AutodetectionParser.jj000077500000000000000000000100041300536243200250040ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; } PARSER_BEGIN(AutodetectionParser) package es.uvigo.ei.sing.alter.parser; import java.io.StringReader; /** * Autodetection parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class AutodetectionParser { /** * Static method that parses an input string and returns the format of the input MSA. * @param in Input string. * @return String with the detected format. */ public static String detectFormat (String in) throws ParseException { //Parse string and return MSA format AutodetectionParser parser = new AutodetectionParser(new StringReader(in)); return parser.Autodetection(); } } PARSER_END(AutodetectionParser) TOKEN : { | | | | ","#","%"] > } /** * Grammar's root production. After omitting spaces, tabs and new lines, * format is detected using the first words:
*   - If it starts with "#" or "%" it's GDE.
*   - If it starts with "#NEXUS" it's NEXUS.
*   - If it starts with "CLUSTAL", "MUSCLE" or "PROBCONS" it's ALN.
*   - If it starts with "PileUp", "!!AA_MULTIPLE_ALIGNMENT" or * "!!NA_MULTIPLE_ALIGNMENT" it's MSF.
*   - If it starts with a number, followed by a sequence of spaces * or tabs, and then another number, it's PHYLIP.
*   - If it starts with ">" followed by two characters and ";" it's PIR.
*   - If it starts with ">" and it doesn't meet the latter point it's FASTA. */ String Autodetection(): { String toret; } { ( | )* ( ( "#" | "%" ) { return "gde"; } | "#NEXUS" { return "nexus"; } | ("CLUSTAL" | "MUSCLE" | "PROBCONS") { return "aln"; } | (Number() ()+ Number()) { return "phylip"; } | (">" (LOOKAHEAD(Type() ";" ) ( Type() ";" { return "pir"; } ) | ( Line() { return "fasta"; } ) ) ) | ( "PileUp" | "!!AA_MULTIPLE_ALIGNMENT" | "!!NA_MULTIPLE_ALIGNMENT" ) { return "msf"; } ) } /** * Parses a number. * @return Parsed number. */ int Number(): { String s = ""; Token t; } { (t = { s = s.concat(t.image); } )+ { return Integer.parseInt(s); } } /** * Parses a PIR style type. * @return String with the type of MSA. */ String Type(): { Token t1, t2; } { (t1 = (t2 = | t2 = )) { return t1.image + t2.image; } } /** * Parses a line made up with any sequence of characters. * @return Parsed line. */ String Line(): { String s = ""; Token t; } { ( (t = | t = | t = | t = | t = ">" | t = ";" | t = "#" | t = "%" | t = "#NEXUS" | t = "CLUSTAL" | t = "MUSCLE" | t = "PROBCONS"| t = "PileUp") { s = s.concat(t.image); } )+ { return s.trim(); } }ALTER-1.3.4/alter-lib/src/main/javacc/parser/FastaParser.jj000077500000000000000000000106021300536243200232370ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; } PARSER_BEGIN(FastaParser) package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Fasta; import es.uvigo.ei.sing.alter.types.FastaSequence; import java.io.StringReader; import java.util.Vector; /** * FASTA format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class FastaParser { /** * Static method that parses an input string and returns a MSA in FASTA format. * @param in Input string. * @return MSA in FASTA format. */ public static Fasta parseMSA (String in) throws ParseException { //Parse string and return MSA FastaParser parser = new FastaParser(new StringReader(in)); return parser.Fasta(); } } PARSER_END(FastaParser) TOKEN : { | | | | | ","-",".","?","\"","'"] > } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until ">".
*   2. Sequences with the following format:
*     2a. ">".
*     2b. Sequence identifier.
*     2c. New line.
*     2d. Sequence data.
* @return MSA in FASTA format. */ Fasta Fasta(): { Vector seqs = new Vector(); String id, data; String desc = ""; } { ( | )* ( ">" ()* id = Word() (( ((desc = Line() ) | )) | ) data = Data() { seqs.add(new FastaSequence(id, desc, data)); } )+ { return new Fasta(seqs); } } /** * Parses a word made up of any character sequence. * @return Parsed word. */ String Word(): { String s = ""; Token t; } { ( ( ("\"" | "'") ( (t = | t = | t = | t = | t = | t = ">" | t = "-" | t = "." | t = "?" ) { s = s.concat(t.image); } )+ ("\"" | "'") ) | ( (t = | t = | t = | t = | t = ">" | t = "-" | t = "." | t = "?") { s = s.concat(t.image); } ) ( (t = | t = | t = | t = | t = ">" | t = "-" | t = "." | t = "?" | t = "\"" | t = "'") { s = s.concat(t.image); } )* ) { return s.trim(); } } /** * Parses a line made up of any character sequence. * @return Parsed line. */ String Line(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = | t = | t = | t = | t = ">" | t = "-" | t = "." | t = "?" | t = "\"" | t = "'") { s.append(t.image); } )+ { return s.toString().trim(); } } /** * Parses sequence data. These data can be made up of any characters * from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @return String with the sequence data (uppercase always). */ String Data(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = ) | ( (t = | t = | t = "-" | t = "." | t = "?" ) { s.append(t.image); } ) )+ { return s.toString().toUpperCase(); } }ALTER-1.3.4/alter-lib/src/main/javacc/parser/GdeParser.jj000077500000000000000000000064651300536243200227140ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; } PARSER_BEGIN(GdeParser) package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Gde; import es.uvigo.ei.sing.alter.types.GdeSequence; import java.io.StringReader; import java.util.Vector; /** * GDE format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class GdeParser { /** * Static method that parses an input string and returns a MSA in GDE format. * @param in Input string. * @return MSA in GDE format. */ public static Gde parseMSA (String in) throws ParseException { //Parse string and return MSA GdeParser parser = new GdeParser(new StringReader(in)); return parser.Gde(); } } PARSER_END(GdeParser) TOKEN : { | | | | | } /** * Grammar's root production. Structure:
*   1. Any combinations of spaces, tabs and new lines until "#" or "%".
*   2. Sequences with the following format:
*     2a. "#" ó "%".
*     2b. Sequence identifier.
*     2c. New line.
*     2d. Sequence data.
* @return MSA in GDE format. */ Gde Gde(): { Vector seqs = new Vector(); String id, data; } { ( | )* ( ("#" | "%") id = Line() data = Data() { seqs.add(new GdeSequence(id,data)); } )+ { return new Gde(seqs); } } /** * Parses a line made up of any character sequence. * @return Parsed line. */ String Line(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = | t = | t = | t = | t = "-" | t = "#" | t = "%" | t = "." | t = "?" ) { s.append(t.image); } )+ { return s.toString().trim(); } } /** * Parses sequence data. These data can be made up of any characters * from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @return String with the sequence data (uppercase always). */ String Data(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = ) | ( (t = | t = | t = "-" | t = "." | t = "?" ) { s.append(t.image); } ) )+ { return s.toString().toUpperCase(); } }ALTER-1.3.4/alter-lib/src/main/javacc/parser/MsfParser.jj000077500000000000000000000176271300536243200227440ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; } PARSER_BEGIN(MsfParser) package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Msf; import es.uvigo.ei.sing.alter.types.MsfSequence; import java.io.StringReader; import java.util.Vector; /** * MSF format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class MsfParser { /** * Static method that parses an input string and returns a MSA in MSF format. * @param in Input string. * @return MSA in MSF format. */ public static Msf parseMSA (String in) throws ParseException { //Parse string and return MSA MsfParser parser = new MsfParser(new StringReader(in)); return parser.Msf(); } } PARSER_END(MsfParser) TOKEN : { | | | | | } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until * "PileUp", "!!AA_MULTIPLE_ALIGNMENT" or "!!NA_MULTIPLE_ALIGNMENT".
*   2. "PileUp", "!!AA_MULTIPLE_ALIGNMENT" or * "!!NA_MULTIPLE_ALIGNMENT".
*   3. Any combination of characters until "MSF:".
*   4. "MSF:" followed by the MSA's length, "Type:" * followed by the MSA's type and "Check:" followed by the MSA's total checksum. * This lines ends with ".."
*   5. Sequence information block made up by lines starting with * "Name:" followed by the sequence identifier and " oo" * as a sequence identifier end delimiter, "Len:" followed by the sequence length * (all must be equal), "Check:" followed by the sequence checksum and * "Weight" followed by the sequence weight.
*   6. "//" as an information block delimiter.
*   7. Aligned sequences. * @return MSA in MSF format. */ Msf Msf(): { Vector seqs = new Vector(); String id,data; Token type; int total_length, length, total_check, check; float weight; int cont = 0; } { ( | )* ( "PileUp" | "!!AA_MULTIPLE_ALIGNMENT" | "!!NA_MULTIPLE_ALIGNMENT" ) ( | | | | | | "-" | "//" | "." | ".." | " oo" | "A" | "N" | "P" | "?" | "PileUp" | "!!AA_MULTIPLE_ALIGNMENT" | "!!NA_MULTIPLE_ALIGNMENT")* "MSF:" ()* total_length = Number() ()* "Type:" ()* (type = "N" | type = "P" | type = "A" ) ( | | | | | | "-" | "//" | "." | ".." | " oo" | "A" | "N" | "P" | "?" | "PileUp" | "!!AA_MULTIPLE_ALIGNMENT" | "!!NA_MULTIPLE_ALIGNMENT")* "Check:" ()* total_check = Number() ()* ".." ()* ()+ ( ()* "Name:" ()* id = Id() (" oo" ()+)* "Len:" ()* length = Number() ()* "Check:" ()* check = Number() ()* "Weight:" ()* weight = Float() ()* ()+ { seqs.add(new MsfSequence(id,length,check,weight,"")); } )+ "//" ()* ( ()*)+ ( IdSeq(seqs.elementAt(cont).getId()) data = DataLine() (( ()*)+ | ) { seqs.elementAt(cont).concat(data); cont++; if (cont == seqs.size()) cont = 0; } )+ { return new Msf(seqs, total_length, type.image, total_check); } } /** * Parses a number. * @return Parsed number. */ int Number(): { String s = ""; Token t; } { (t = { s = s.concat(t.image); } )+ { return Integer.parseInt(s); } } /** * Parses a floating point number. * @return Parsed float. */ Float Float(): { int n1, n2; } { n1 = Number() "." n2 = Number() { return Float.parseFloat(String.valueOf(n1) + "." + String.valueOf(n2)); } } /** * Parses a sequence identifier. An identifier can be made up of any sequence * of characters, including spaces and tabs, but it must not start with any of those. * The string " oo" indicates the end of the identifier. * @return Sequence identifier. */ String Id(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = | t = | t = | t = "-" | t = "." | t = "//" | t= ".." | t = "N" | t = "P" | t = "A" | t = "?" | t = "PileUp" | t = "!!AA_MULTIPLE_ALIGNMENT" | t = "!!NA_MULTIPLE_ALIGNMENT") { s.append(t.image); } ) ( (t = | t = | t = | t = | t = | t = "-" | t = "." | t = "//" | t= ".." | t = "N" | t = "P" | t= "A" | t = "?" | t = "PileUp" | t = "!!AA_MULTIPLE_ALIGNMENT" | t = "!!NA_MULTIPLE_ALIGNMENT") { s.append(t.image); } )* { return s.toString().trim(); } } /** * Same behaviour as Id(), but in this case equality between the already read * identifier and the current one is checked. * @param id Identifier to parse. */ void IdSeq(String id): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = | t = | t = | t = "-" | t = "." | t = "//" | t= ".." | t = "N" | t = "P" | t = "A" | t = "?" | t = "PileUp" | t = "!!AA_MULTIPLE_ALIGNMENT" | t = "!!NA_MULTIPLE_ALIGNMENT") { s.append(t.image); if (id.length() == s.length()) if (id.equals(s.toString())) return; else throw new ParseException("ID for sequence \"" + id + "\"does not match with ID in line " + t.beginLine); } ) ( (t = | t = | t = | t = | t = | t = "-" | t = "." | t = "//" | t= ".." | t = "N" | t = "P" | t = "A" | t = "?" | t = "PileUp" | t = "!!AA_MULTIPLE_ALIGNMENT" | t = "!!NA_MULTIPLE_ALIGNMENT") { s.append(t.image); if (id.length() == s.length()) if (id.equals(s.toString())) return; else throw new ParseException("ID for sequence \"" + id + "\"does not match with ID in line " + t.beginLine); } )* { throw new ParseException("ID for sequence \"" + id + "\"does not match with ID in line " + t.beginLine); } } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ String DataLine(): { StringBuffer s = new StringBuffer(); Token t; } { ( t = | ( (t = | t = | t = "." | t = ".." | t = "N" | t = "P" | t = "A" | t = "?" | t = "-" ) { s.append(t.image); } ) )+ { return (s.toString().toUpperCase()).replace('.','-'); } }ALTER-1.3.4/alter-lib/src/main/javacc/parser/NexusParser.jj000077500000000000000000000257161300536243200233170ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; IGNORE_CASE = true; } PARSER_BEGIN(NexusParser) package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Nexus; import es.uvigo.ei.sing.alter.types.NexusSequence; import java.io.StringReader; import java.util.Vector; /** * NEXUS format parser. * @author Daniel Gomez Blanco * @version 1.3 */ public class NexusParser { /** * Static method that parses an input string and returns a MSA in NEXUS format. * @param in Input string. * @return MSA in NEXUS format. */ public static Nexus parseMSA (String in) throws ParseException { //Parse string and return MSA NexusParser parser = new NexusParser(new StringReader(in)); return parser.Nexus(); } } PARSER_END(NexusParser) TOKEN : { | | | | | } //When a "[" is found in DEFAULT state ignore it and change state to IN_COMMENT MORE : { "[": IN_COMMENT } //When any character is found within a comment, ignore it MORE : { < ~["]"] > } //When a "]" is found in IN_COMMENT state change to DEFAULT state SKIP : { "]": DEFAULT } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until "#NEXUS".
*   2. "#NEXUS".
*   3. Any combination of characters until "BEGIN DATA;".
*   4. "BEGIN DATA;"
*   5. Any combination of characters until "ntax=".
*   6. "ntax=" followed by the taxa number (number of sequences in the MSA), * "nchar=" followed by the sequences length and ";".
*   7. Any character until "datatype=".
*   8. "datatype=" followed by the MSA type.
*   9. Any character until "matrix".
*   10. Sequences in NEXUS format:
*     10a. Sequence identifier.
*     10a. Data line.
*   11. ";".
*   12. "end;".
*   13. Any combination of characters until the end of file.
* @return MSA in NEXUS format. */ Nexus Nexus(): { Vector seqs = new Vector(); int taxa = 0,length = 0; String id, data; String type = ""; int cont = 0; } { ( | )* "#NEXUS" ( | | | | ";" | "-" | "." | "?" | | | "#NEXUS" | "ntax" | "nchar" | "datatype" | "matrix" | "end;" | "=" | "\"" | "'")* ( ( "BEGIN DATA" ";" ( | | | | ";" | "-" | "." | "?" | | | "=" | "\"" | "'")* ( ( ("ntax" ()* "=" ()* taxa = Number() ( | | ";")) | ("nchar" ()* "=" ()* length = Number() ( | | ";")) | ("datatype" ()* "=" ()* type = Type() ( | | ";")) ) ( | | | | ";" | "-" | "." | "?" | | | "=" | "\"" | "'")* )+ { if (taxa == 0) throw new ParseException("Number of sequences (ntax) missing in NEXUS header."); if (length == 0) throw new ParseException("Sequences length (nchar) missing in NEXUS header."); if (type.isEmpty()) throw new ParseException("MSA type (datatype) missing in NEXUS header."); } ) | ( "BEGIN TAXA" ";" ( | | | | ";" | "-" | "." | "?" | | | "=" | "\"" | "'")* "ntax" ()* "=" ()* taxa = Number() ( | | ";") ( | | | | ";" | "-" | "." | "?" | | | "=" | "\"" | "'")* "end;" { if (taxa == 0) throw new ParseException("Number of sequences (ntax) missing in NEXUS header."); } ( | | | | ";" | "-" | "." | "?" | | | "=" | "\"" | "'")* "BEGIN CHARACTERS" ";" ( | | | | ";" | "-" | "." | "?" | | | "=" | "\"" | "'")* ( ( ("nchar" ()* "=" ()* length = Number() ( | | ";")) | ("datatype" ()* "=" ()* type = Type() ( | | ";")) ) ( | | | | ";" | "-" | "." | "?" | | | "=" | "\"" | "'")* )+ { if (length == 0) throw new ParseException("Sequences length (nchar) missing in NEXUS header."); if (type.isEmpty()) throw new ParseException("MSA type (datatype) missing in NEXUS header."); } ) ) "matrix" ()* ( ()*)+ ( id = Id() data = DataLine() (";"()*)? ( ()*)+ (";"()* ( ()*)+)? { seqs.add(new NexusSequence(id, data)); cont++; if (cont == taxa) { cont = 0; break; } } )+ ( IdSeq(seqs.elementAt(cont).getId()) data = DataLine() (";"()*)? ( ()*)+ (";"()* ( ()*)+)? { seqs.elementAt(cont).concat(data); cont++; if (cont == seqs.size()) cont = 0; } )* "end;" ( | | | | ";" | "-" | "." | "?" | | | "#NEXUS" | "ntax" | "nchar" | "datatype" | "matrix" | "end;" | "BEGIN DATA" | "BEGIN TAXA" | "BEGIN CHARACTERS" | "=" | "\"" | "'")* { return new Nexus(taxa, length, type, seqs); } } /** * Parses a number. * @return Parsed number. */ int Number(): { String s = ""; Token t; } { (t = { s = s.concat(t.image); } )+ { return Integer.parseInt(s); } } /** * Parses a NEXUS style type. * @return String with the type. */ String Type(): { String s = ""; Token t; } { ( (t = | t = ) { s = s.concat(t.image); } )+ { return s.toUpperCase(); } } /** * Parses a sequence identifier. An identifier cannot contain spaces or start with ";". * @return Sequence identifier. */ String Id(): { StringBuffer s = new StringBuffer(); Token t; } { ( ( ("\"" | "'") ( (t = | t = | t = | t = | t = "-" | t = "." | t = "?" | t= "matrix" | t = "nchar" | t = "ntax" | t = "datatype" | t = "#NEXUS" | t = "BEGIN DATA" | t = "end;" | t = "=") { s.append(t.image); } )+ ("\"" | "'") ) | ( ( (t = | t = | t = | t = | t = "-" | t = "." | t = "?" | t= "matrix" | t = "nchar" | t = "ntax" | t = "datatype" | t = "#NEXUS" | t = "BEGIN DATA" | t = "=") { s.append(t.image); } ) ( (t = | t = | t = | t = | t = ";" | t = "-" | t = "." | t = "?" | t= "matrix" | t = "nchar" | t = "ntax" | t = "datatype" | t = "#NEXUS" | t = "BEGIN DATA" | t = "end;" | t = "=" | t = "\"" | t = "'") { s.append(t.image); } )* ) ) { return s.toString(); } } /** * Same behaviour as Id(), but in this case equality between the already read * identifier and the current one is checked. * @param id Identifier to parse. */ void IdSeq(String id): { StringBuffer s = new StringBuffer(); Token t; } { ( ( ("\"" | "'") ( (t = | t = | t = | t = | t = "-" | t = "." | t = "?" | t= "matrix" | t = "nchar" | t = "ntax" | t = "datatype" | t = "#NEXUS" | t = "BEGIN DATA" | t = "end;" | t = "=") { s.append(t.image); } )+ ("\"" | "'") ) | ( ( (t = | t = | t = | t = | t = "-" | t = "." | t = "?" | t= "matrix" | t = "nchar" | t = "ntax" | t = "datatype" | t = "#NEXUS" | t = "BEGIN DATA" | t = "=") { s.append(t.image); } ) ( (t = | t = | t = | t = | t = ";" | t = "-" | t = "." | t = "?" | t= "matrix" | t = "nchar" | t = "ntax" | t = "datatype" | t = "#NEXUS" | t = "BEGIN DATA" | t = "end;" | t = "=" | t = "\"" | t = "'") { s.append(t.image); } )* ) ) { if (!id.equals(s.toString())) throw new ParseException("ID for sequence \"" + id + "\"does not match with ID in line " + t.beginLine); } } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "-", "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ String DataLine(): { StringBuffer s = new StringBuffer(); Token t; } { ( t = | ( (t = | t = | t = "-" | t = "." | t = "?") { s.append(t.image); } ) )+ { return s.toString().toUpperCase(); } }ALTER-1.3.4/alter-lib/src/main/javacc/parser/PhylipParser.jj000077500000000000000000000213621300536243200234530ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; } PARSER_BEGIN(PhylipParser) package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Phylip; import es.uvigo.ei.sing.alter.types.PhylipSequence; import java.io.StringReader; import java.util.Vector; import java.util.StringTokenizer; /** * PHYLIP format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class PhylipParser { /** * Static method that parses an input string and returns a MSA in PHYLIP format. * @param in Input string. * @return MSA in PHYLIP format. */ public static Phylip parseMSA (String in) throws ParseException { //Parse string and return MSA PhylipParser parser = new PhylipParser(new StringReader(in)); return parser.Phylip(); } } PARSER_END(PhylipParser) TOKEN : { | | | | | } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines * until a number is found.
*   2. Taxa number (number of sequences) followed by one or more * spaces or tabs and the sequences length. Any character can follow until * the end of the line, these characters will be omitted.
*   3. Any combination of spaces, tabs and new lines * until the first sequence identifier.
*   4. If the MSA is in sequential format sequences with the following structure follow:
*     4a. Sequence identifier.
*     4b. Sequence data.
*   5. If the MSA is in interleaved format lines with the following structure follow:
*     5a. Sequence identifier.
*     5b. Sequence data line.
* @return MSA in PHYLIP format. */ Phylip Phylip(): { Vector seqs = new Vector(); int taxa, length; String id1, id2, data1, data2; } { ( | )* taxa = Number() ()+ length = Number() ( | (()+ ((Line() ) | ))) ( | )* id1 = Id() ( | (()+ ()?)) data1 = DataLine() ( | )* id2 = Id() ( | (()+ ()?)) data2 = DataLine() ( | )* { if(data1.length() > data2.length()) { StringBuffer data = new StringBuffer(); data.append(data1); data.append(id2); data.append(data2); seqs.add(new PhylipSequence(id1, data.toString())); int read = seqs.firstElement().getData().length(); seqs.firstElement().concat(Data(length - read)); //It's sequential PhylipSeq(length, seqs); } else { seqs.add(new PhylipSequence(id1,data1)); seqs.add(new PhylipSequence(id2,data2)); //It's interleaved PhylipIntIds(taxa - 2, seqs); PhylipIntSeqs(taxa, seqs); } } { return new Phylip(taxa, length, seqs); } } /** * Parses the first sequences of an interleaved PHYLIP, adding a new sequence * to the vector for every parsed line. * @param taxa Number of sequences to be parsed. * @param seqs Sequences vector. */ void PhylipIntIds(int taxa, Vector seqs): { if (taxa == 0) return; int cont = 0; String id, data; } { ( id = Id() ( | (()+ ()?)) data = DataLine() ( | ( ( | )*)) { seqs.add(new PhylipSequence(id, data)); cont++; if (cont == taxa) return; } )+ } /** * Parses de rest of the sequences of an interleaved PHYLIP, concating them to the * already read ones. * @param taxa Number of sequences to be parsed. * @param seqs Sequences vector. */ void PhylipIntSeqs(int taxa, Vector seqs): { int cont = 0; String data; } { ( data = DataLine() ( | ( ( | )*)) { seqs.elementAt(cont).concat(data); cont++; if (cont == taxa) cont = 0; } )* } /** * Parses the sequences of a sequential PHYLIP, adding a new sequence to the sequences vector * for every parsed line. * @param length Length of the sequences to be parsed. * @seqs Sequences vector. */ void PhylipSeq(int length, Vector seqs): { String id, data; } { ( | )* ( id = Id() (|) data = Data(length) ( | )* { seqs.add(new PhylipSequence(id,data)); } )* } /** * Parses a number. * @return Parsed number. */ int Number(): { String s = ""; Token t; } { (t = { s = s.concat(t.image); } )+ { return Integer.parseInt(s); } } /** * Parses a sequence identifier. * @return Sequence identifier. */ String Id(): { StringBuffer s = new StringBuffer(); Token t; } { ( ( ("\"" | "'") ( (t = | t = | t = | t = |t = | t = "-" | t = "." | t = "?" ) { s.append(t.image); } )+ ("\"" | "'") ) | ( (t = | t = | t = |t = | t = "-" | t = "." | t = "?" ) { s.append(t.image); } ( (t = | t = | t = |t = | t = "-" | t = "." | t = "?" | t = "\"" | t ="'") { s.append(t.image); } )* ) ) { return s.toString().trim(); } } /** * Parses a line made up of any character sequence. * @return Parsed line. */ String Line(): { StringBuffer s = new StringBuffer(); Token t; } { (t = | t = | t = | t = | t = "-" | t = "." | t = "?" | t = "\"" | t = "'") { s.append(t.image); } ( (t = | t = | t = | t = | t = | t = "-" | t = "." | t = "?" | t = "\"" | t = "'") { s.append(t.image); } )* { return s.toString().trim(); } } /** * Parses a data line. A data line can be made up of characters from "A" to "Z" * (lowercase and uppercase), "-", "." or "?". Spaces and tabs are omitted. * @return String with the data line (always uppercase). */ String DataLine(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = | t = "-" | t = "." | t = "?") { s.append(t.image); } ) ( t = | ( (t = | t = | t = "-" | t = "." | t = "?") { s.append(t.image); } ) )* { return s.toString().toUpperCase(); } } /** * Parses the data of a sequence with the given length. These data can be made up * of any characters from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @param length Length of the sequence to be parsed. * @return String with the sequence data (uppercase always). */ String Data(int length): { StringBuffer s = new StringBuffer(); Token t; int chars = 0; if (length==0) return ""; //lipido's patch needed for sequential Phylip with 2 lines per sequence } { ( (t = | t = ) | ( (t = | t = | t = "-" | t = "." | t = "?" ) { s.append(t.image); chars++; if(chars == length) return s.toString().toUpperCase(); } ) )+ { return s.toString().toUpperCase(); } } ALTER-1.3.4/alter-lib/src/main/javacc/parser/PirParser.jj000077500000000000000000000075041300536243200227420ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ options { STATIC = false; } PARSER_BEGIN(PirParser) package es.uvigo.ei.sing.alter.parser; import es.uvigo.ei.sing.alter.types.Pir; import es.uvigo.ei.sing.alter.types.PirSequence; import java.io.StringReader; import java.util.Vector; /** * PIR format parser. * @author Daniel Gomez Blanco * @version 1.2 */ public class PirParser { /** * Static method that parses an input string and returns a MSA in PIR format. * @param in Input string. * @return MSA in PIR format. */ public static Pir parseMSA (String in) throws ParseException { //Parse string and return MSA PirParser parser = new PirParser(new StringReader(in)); return parser.Pir(); } } PARSER_END(PirParser) TOKEN : { | | | | | ","*","-",".","?"] > } /** * Grammar's root production. Structure:
*   1. Any combination of spaces, tabs and new lines until ">".
*   2. Sequences with the following format:
*     2a. ">".
*     2b. Sequence type.
*     2c. ";".
*     2d. Sequence identifier.
*     2e. New line.
*     2f. Description.
*     2g. New line.
*     2h. Sequence data.
* @return MSA in PIR format. */ Pir Pir(): { Vector seqs = new Vector(); String type, id, desc, data; desc = ""; } { ( | )* ( ">" ()* type = Type() ()* ";" id = Line() (desc = Line() | ) data = Data() "*" ( | )* { seqs.add(new PirSequence(id,type,desc,data)); } )+ { return new Pir(seqs); } } /** * Parses a PIR style type. * @return Type. */ String Type(): { Token t1, t2; } { t1 = (t2 = | t2 = ) { return t1.image + t2.image; } } /** * Parses a line made up of any character sequence. * @return Parsed line. */ String Line(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = | t = | t = | t = | t = ">" | t = ";" | t = "*" | t = "-" | t = "." | t = "?" ) { s.append(t.image); } )+ { return s.toString().trim(); } } /** * Parses sequence data. These data can be made up of any characters * from "A" to "Z" (lowercase and uppercase), "-", "." or "?". * Spaces, tabs and new lines are omitted. * @return String with the sequence data (uppercase always). */ String Data(): { StringBuffer s = new StringBuffer(); Token t; } { ( (t = | t = ) | ( (t = | t = | t = "-" | t = "." | t = "?" ) { s.append(t.image); } ) )+ { return s.toString().toUpperCase(); } }ALTER-1.3.4/alter-lib/src/main/javacc/parser/package.html000077500000000000000000000004451300536243200227640ustar00rootroot00000000000000 Parsers generated with JavaCC. @author Daniel Gomez Blanco @version 1.2 ALTER-1.3.4/alter-lib/src/main/resources/000077500000000000000000000000001300536243200177645ustar00rootroot00000000000000ALTER-1.3.4/alter-lib/src/main/resources/alter.properties000066400000000000000000000000451300536243200232100ustar00rootroot00000000000000project.version = ${project.version} ALTER-1.3.4/alter-web/000077500000000000000000000000001300536243200142465ustar00rootroot00000000000000ALTER-1.3.4/alter-web/pom.xml000066400000000000000000000101041300536243200155570ustar00rootroot00000000000000 4.0.0 es.uvigo.ei.sing alter-project 1.3.4 ../pom.xml es.uvigo.ei.sing alter-web war ALTER Web app The ALTER Web application based on ZK framework 6.5.2 1.3.1 yyyy-MM-dd ${project.version} 2.13 GNU LESSER GENERAL PUBLIC LICENSE, Version 3 http://www.gnu.org/licenses/lgpl.html repo ZK CE ZK CE Repository http://mavensync.zkoss.org/maven2 zkmaven ZK Maven Plugin Repository http://mavensync.zkoss.org/maven2/ org.zkoss.zk zkbind ${zk.version} org.zkoss.zk zul ${zk.version} org.zkoss.zk zkplus ${zk.version} org.zkoss.zk zhtml ${zk.version} commons-io commons-io ${commons-io} es.uvigo.ei.sing alter-lib ${project.version} javax.servlet servlet-api 2.4 provided javax.mail mail 1.4 org.glassfish.jersey.containers jersey-container-servlet ${jersey.version} ${project.artifactId}-${packname} org.mortbay.jetty maven-jetty-plugin 6.1.10 5 foo 9999 start-jetty pre-integration-test run 0 true stop-jetty post-integration-test stop org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.7 1.7 ALTER-1.3.4/alter-web/src/000077500000000000000000000000001300536243200150355ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/000077500000000000000000000000001300536243200157615ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/assembly/000077500000000000000000000000001300536243200176005ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/assembly/webapp.xml000066400000000000000000000015411300536243200216010ustar00rootroot00000000000000 webapp zip ${project.basedir}/src/main/java /${project.artifactId}/src ${project.basedir}/src/main/webapp /${project.artifactId}/WebContent ${project.build.directory}/${project.artifactId}.war / ALTER-1.3.4/alter-web/src/main/java/000077500000000000000000000000001300536243200167025ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/java/es/000077500000000000000000000000001300536243200173115ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/java/es/uvigo/000077500000000000000000000000001300536243200204425ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/java/es/uvigo/ei/000077500000000000000000000000001300536243200210375ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/java/es/uvigo/ei/sing/000077500000000000000000000000001300536243200217775ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/java/es/uvigo/ei/sing/alter/000077500000000000000000000000001300536243200231065ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/java/es/uvigo/ei/sing/alter/web/000077500000000000000000000000001300536243200236635ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/java/es/uvigo/ei/sing/alter/web/Controller.java000077500000000000000000001157561300536243200266730ustar00rootroot00000000000000package es.uvigo.ei.sing.alter.web; /* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringWriter; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.IOUtils; import org.zkoss.util.media.Media; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.UploadEvent; import org.zkoss.zul.Button; import org.zkoss.zul.Center; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Filedownload; import org.zkoss.zul.Html; import org.zkoss.zul.Label; import org.zkoss.zul.Listbox; import org.zkoss.zul.Listitem; import org.zkoss.zul.Messagebox; import org.zkoss.zul.North; import org.zkoss.zul.SimpleListModel; import org.zkoss.zul.Spinner; import org.zkoss.zul.Textbox; import org.zkoss.zul.Window; import es.uvigo.ei.sing.alter.converter.DefaultFactory; import es.uvigo.ei.sing.alter.converter.Factory; import es.uvigo.ei.sing.alter.parser.ParseException; import es.uvigo.ei.sing.alter.reader.Reader; import es.uvigo.ei.sing.alter.types.MSA; import es.uvigo.ei.sing.alter.writer.Writer; public class Controller extends Window { Logger logger; MSA msa; String ext = ""; boolean collapsed; String filename = ""; StringBuffer inputText = new StringBuffer(20000); StringBuffer outputText = new StringBuffer(20000); final int maxChars = 20000; public Controller() { super(); } public Controller(String title, String border, boolean closable) { super(title, border, closable); } public void setInputText(String s) { inputText= new StringBuffer(s); } public void load(UploadEvent event) throws InterruptedException { Textbox input = (Textbox) getFellow("input"); Media media = event.getMedia(); String text = ""; if (media != null) { filename = media.getName(); if (media.isBinary()) if (media.inMemory()) { StringBuffer buffer = new StringBuffer(); byte[] bytes = media.getByteData(); for (int i = 0; i < bytes.length; i++) buffer.append((char) bytes[i]); text = buffer.toString(); } else { StringWriter writer = new StringWriter(); try { IOUtils.copy(media.getStreamData(), writer); } catch (IOException ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } text = writer.toString(); } else if (media.inMemory()) text = media.getStringData(); else { StringWriter writer = new StringWriter(); try { IOUtils.copy(media.getReaderData(), writer); } catch (IOException ex) { logger.log(Level.SEVERE, ex.getMessage()); return; } text = writer.toString(); } } inputText = new StringBuffer(text); if (text.length() < maxChars) input.setRawValue(text); else { input.setRawValue(inputText.substring(0, maxChars)); Messagebox.show("The complete input text is not being displayed due to its length. Text edition will be disabled to avoid erros in data.", "Input text too long", Messagebox.OK, Messagebox.INFORMATION); } input.setFocus(true); read(); } public void save() { String out = outputText.toString(); Listitem outputOSItem = ((Listbox) getFellow("outputOS")).getSelectedItem(); if (outputOSItem == null) outputOSItem = ((Listbox) getFellow("outputOS")).getItemAtIndex(0); String outputOS = (String)outputOSItem.getValue(); String name; if (filename.isEmpty()) name = "convertedmsa"; else name = filename + ".alter"; if(collapsed) name += ".haps"; if(ext.equals("ALN")) name += ".aln"; else if (ext.equals("FASTA")) name += ".fas"; else if (ext.equals("GDE")) name += ".gde"; else if (ext.equals("MEGA")) name += ".meg"; else if (ext.equals("MSF")) name += ".msf"; else if (ext.equals("NEXUS")) name += ".nex"; else if (ext.equals("PHYLIP")) name += ".phy"; else if (ext.equals("PIR")) name += ".pir"; if (outputOS.equals("Linux")) Filedownload.save(out, null, name); else if (outputOS.equals("MacOS")) Filedownload.save(out.replace("\n", "\r"), null, name); else Filedownload.save(out.replace("\n", "\r\n"), null, name); } public void onAutodetectCheck() { boolean autodetect = ((Checkbox) getFellow("autodetect")).isChecked(); Listbox inputOS = (Listbox) getFellow("inputOS"); Label inputOSLabel = (Label) getFellow("inputOSLabel"); Html andLoad = (Html) getFellow("andLoad"); Button load = (Button) getFellow("load"); Listbox inputProgram = (Listbox) getFellow("inputProgram"); Label inputProgramLabel = (Label) getFellow("inputProgramLabel"); Listbox inputFormat = (Listbox) getFellow("inputFormat"); Html andInputFormat = (Html) getFellow("andInputFormat"); Label inputFormatLabel = (Label) getFellow("inputFormatLabel"); Textbox input = (Textbox) getFellow("input"); Center step2 = (Center) getFellow("step2"); Html orPaste = (Html) getFellow("orPaste"); Label pasteLabel = (Label) getFellow("pasteLabel"); Button paste = (Button) getFellow("paste"); if(autodetect) { inputProgram.setSelectedIndex(0); inputProgram.setDisabled(true); inputProgramLabel.setSclass("gray"); inputFormat.setSelectedIndex(0); inputFormat.setDisabled(true); andInputFormat.setSclass("gray"); inputFormatLabel.setSclass("gray"); input.setDisabled(false); step2.setZclass("step2"); orPaste.setSclass("black"); pasteLabel.setSclass("black"); paste.setDisabled(false); inputOS.setDisabled(false); inputOSLabel.setSclass("black"); andLoad.setSclass("black"); load.setDisabled(false); } else { inputProgram.setDisabled(false); inputProgramLabel.setSclass("black"); inputOS.setSelectedIndex(0); inputOS.setDisabled(true); inputOSLabel.setSclass("gray"); andLoad.setSclass("gray"); load.setDisabled(true); input.setDisabled(true); step2.setZclass("step2bw"); orPaste.setSclass("gray"); pasteLabel.setSclass("gray"); paste.setDisabled(true); } } public void onInputProgramSelect() { Listbox inputProgram = (Listbox) getFellow("inputProgram"); Listbox inputFormat = ((Listbox) getFellow("inputFormat")); Html andInputFormat = (Html) getFellow("andInputFormat"); Label inputFormatLabel = (Label) getFellow("inputFormatLabel"); if (inputProgram.getSelectedItem() != null) { String program = ((Listbox) getFellow("inputProgram")).getSelectedItem().getLabel(); if (!program.equals("","ALN", "FASTA", "GDE", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MAFFT")) inputFormat.setModel(new SimpleListModel(new String[] { "","ALN","FASTA","MSF","PHYLIP" })); else if (program.equals("PROBCONS")) inputFormat.setModel(new SimpleListModel(new String[] { "","ALN", "FASTA", "MSF", "PHYLIP", "PIR" })); inputFormat.setDisabled(false); andInputFormat.setSclass("black"); inputFormatLabel.setSclass("black"); onInputFormatSelect(); } else { inputFormat.setSelectedIndex(0); inputFormat.setDisabled(true); andInputFormat.setSclass("gray"); inputFormatLabel.setSclass("gray"); onInputFormatSelect(); } } else { inputFormat.setSelectedIndex(0); inputFormat.setDisabled(true); andInputFormat.setSclass("gray"); inputFormatLabel.setSclass("gray"); onInputFormatSelect(); } } public void onInputFormatSelect() { Listbox inputFormat = (Listbox) getFellow("inputFormat"); Listbox inputOS = (Listbox) getFellow("inputOS"); Label inputOSLabel = (Label) getFellow("inputOSLabel"); Html andLoad = (Html) getFellow("andLoad"); Button load = (Button) getFellow("load"); Textbox input = (Textbox) getFellow("input"); Center step2 = (Center) getFellow("step2"); Html orPaste = (Html) getFellow("orPaste"); Label pasteLabel = (Label) getFellow("pasteLabel"); Button paste = (Button) getFellow("paste"); if (inputFormat.getSelectedItem() != null) if (!inputFormat.getSelectedItem().getLabel().equals("")) { program = program.substring(4); if (program.equals("General")) outputFormat.setModel(new SimpleListModel(new String[] { "","ALN","FASTA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MrBayes")) outputFormat.setModel(new SimpleListModel(new String[] { "","NEXUS", "PHYLIP" })); else if (program.equals("PAUP")) outputFormat.setModel(new SimpleListModel(new String[] { "","PHYLIP" })); else if (program.equals("ProtTest")) outputFormat.setModel(new SimpleListModel(new String[] { "","PHYLIP" })); else if (program.equals("RAxML")) outputFormat.setModel(new SimpleListModel(new String[] { "","NEXUS", "PHYLIP" })); else if (program.equals("CodABC")) outputFormat.setModel(new SimpleListModel(new String[] { "","ALN","FASTA", "MSF", "NEXUS", "PHYLIP", "PIR" })); else if (program.equals("MEGA")) outputFormat.setModel(new SimpleListModel(new String[] { "","FASTA","MEGA","NEXUS","PHYLIP","PIR" })); else if (program.equals("Se-Al")) outputFormat.setModel(new SimpleListModel(new String[] { "","NEXUS" })); else if (program.equals("SplitsTree")) outputFormat.setModel(new SimpleListModel(new String[] { "","ALN","FASTA","GDE","MSF","PIR" })); else if (program.equals("MAFFT")) outputFormat.setModel(new SimpleListModel(new String[] { "","FASTA" })); else if (program.equals("PROBCONS")) outputFormat.setModel(new SimpleListModel(new String[] { "","ALN","FASTA","MSF","PIR" })); else if (program.equals("Gblocks")) outputFormat.setModel(new SimpleListModel(new String[] { "","ALN","FASTA","MSF","NEXUS","PHYLIP" })); else if (program.equals("trimAl")) outputFormat.setModel(new SimpleListModel(new String[] { ""; else format = ((Listbox) getFellow("outputFormat")).getSelectedItem().getLabel(); if(!format.equals("
inO:
inP:
inF:

OUTPUT

outO:
outP:
outF:
sequential:
match:
lowercase:
resNumbers:

Collapse

collapse:
gapsAsMissing:
countMissing:
limit:

SEQUENCE


ALTER-1.3.4/alter-web/src/main/resources/mafft.aln000077500000000000000000001007701300536243200215740ustar00rootroot00000000000000CLUSTAL format alignment by MAFFT FFT-NS-2 (v6.713b) M63632 MN-----------------GTE--GDNFYVP----FS---------------------NK U22180 MN-----------------GTE--GPNFYVP----FS---------------------NI M92038 MN-----------------GTE--GINFYVP----MS---------------------NK A45229 MN-----------------GTE--GKNFYVP----MS---------------------NR B45229 MN-----------------GTE--GNNFYVP----LS---------------------NR L11864 MK-----------------QVPEFHEDFYIPIPLDIN---------------------NL M13299 MR-----------------KMS--EEEFYL-----FK---------------------NI K03494 MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYT----NS---------------------NS Z68193 MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYT----NS---------------------NS M92036 MTEAWNVAVFAARRSRDD-DDTTRGSVFTYT----NT---------------------NN M62903 MA-AWEAAFAARRRHEE--EDTTRDSVFTYT----NS---------------------NN S75720 MS-----------------SNSSQAP----------P---------------------NG M17718 MESGNVSSSLFGNVSTALRPEA----RLSA---E------------------------TR X65879 MEYHNVSSVL-GNVSSVLRPDA----RLSA---E------------------------SR M17730 ME------PLCNASEPPLRPEA----R-SSGNGD------------------------LQ X65880 MD------ALCNASEPPLRPEA----RMSSGSDE------------------------LQ D50584 MT-----------NATGPQMAYYGAASMDFGYPE------------------------GV D50583 MA-----------NVTGPQMAFYGSGAATFGYPE------------------------GM K02320 ME-----SFAVAAAQLGPHFA-----PLS-----------------------------NG K02315 ME-----SFAVAAAQLGPHFA-----PLS-----------------------------NG X65877 MD-----SFAAVATQLGPQFA-----APS-----------------------------NG M12896 MERSHLPETPFDLAHSGPRFQ-----AQSSG---------------------------NG X65878 MERSLLPEPPLAMALLGPRFE-----AQTGG---------------------------NR U26026 MI-----------AVSGPSYE-----AFSYGGQARFN---------------------NQ L03781 M-------------ANQLSYS-----SLGWPYQP------------------------NA X07797 MVE-----------------------STTLVNQTWWY---------------------NP X70498 MGR-----------------------DLR-DNETWWY---------------------NP L21195 MMDVNSSGRPDLYGHLRSFL-----LPEVGRGLPDLSPDGGADPVAGSWAPHLLS---EV L15228 M-------------------------------------------------PHLLSGFLEV A47425 M-------------------------------------------------PHLLSGFLEV M83181 MDVLSPGQ-----------------GNNTTSPPAPFETGG------------------NT A35181 MDVFSFGQ-----------------GNNTTASQEPFGTGG------------------NV L06803 MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTG------------------LV A47174 MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTG------------------LV X95604 MEGAE-GQEELDWEAL--YLRLP--LQNCSWNSTGWEPNW------------------NV * M63632 TGLARSPY----------------------EYPQY-YLAEPWK---------YSALAAYM U22180 TGVVRSPF----------------------EQPQY-YLAEPWQ---------FSMLAAYM M92038 TGVVRSPF----------------------EYPQY-YLAEPWK---------YRLVCCYI A45229 TGLVRSPF----------------------EYPQY-YLAEPWQ---------FKILALYL B45229 TGLVRSPF----------------------EYPQY-YLAEPWQ---------FKLLAVYM L11864 S--AYSPF----------------------LVPQD-HLGNQGI---------FMAMSVFM M13299 SSV--GPW----------------------DGPQY-HIAPVWA---------FYLQAAFM K03494 T---RGPF----------------------EGPNY-HIAPRWV---------YHLTSVWM Z68193 T---RGPF----------------------EGPNY-HIAPRWV---------YHLTSVWM M92036 T---RGPF----------------------EGPNY-HIAPRWV---------YNLVSFFM M62903 T---RGPF----------------------EGPNY-HIAPRWV---------YNLTSVWM S75720 T---PGPF----------------------DGPQWPYQAPQST---------YVGVAVLM M17718 LLGWNVPP----------------------EELR--HIPEHWLTYPEPPESMNYLLGTLY X65879 LLGWNVPP----------------------DELR--HIPEHWLIYPEPPESMNYLLGTLY M17730 FLGWNVPP----------------------DQIQ--YIPEHWLTQLEPPASMHYMLGVFY X65880 FLGWNVPP----------------------DQIQ--YIPEHWLTQLEPPASMHYMLGVFY D50584 SIVDFVRP----------------------EIKP--YVHQHWYNYPPVNPMWHYLLGVIY D50583 TVADFVPD----------------------RVKH--MVLDHWYNYPPVNPMWHYLLGVVY K02320 SVVDKVTP----------------------DMAH--LISPYWNQFPAMDPIWAKILTAYM K02315 SVVDKVTP----------------------DMAH--LISPYWNQFPAMDPIWAKILTAYM X65877 SVVDKVTP----------------------DMAH--LISPYWDQFPAMDPIWAKILTAYM M12896 SVLDNVLP----------------------DMAH--LVNPYWSRFAPMDPMMSKILGLFT X65878 SVLDNVLP----------------------DMAP--LVNPHWSRFAPMDPTMSKILGLFT U26026 TVVDKVPP----------------------DMLH--LIDANWYQYPPLNPMWHGILGFVI L03781 SVVDTMPK----------------------EMLY--MIHEHWYAFPPMNPLWYSILGVAM X07797 TVD----------------------------------IHPHWAKFDPIPDAVYYSVGIFI X70498 SIV----------------------------------VHPHWREFDQVPDAVYYSLGIFI L21195 TASPAPTW------------DAPPDNASGCGEQIN------------YGRVEKVVIGSIL L15228 TASPAPTW------------DAPPDNVSGCGEQIN------------YGRVEKVVIGSIL A47425 TASPAPTW------------DAPPDNVSGCGEQIN------------YGRVEKVVIGSIL M83181 TGISDVTV------------------------------------------SYQVITSLLL A35181 TSISDVTF------------------------------------------SYQVITSLLL L06803 TSDFNDSYGLTGQFINGSHSSRSRDNASANDTSATNMTDDRYWSLTVYSHEHLVLTSVIL A47174 TSDFNDSYGLTGQFINGSHSSRSRDNASANDTSATNMTDDRYWSLTVYSHEHLVLTSVIL X95604 TVVPNTTW---------WQASAPFDTPAALVRAAAK--------------------AVVL M63632 FFLILVGFPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFMVLFG-FTVTMYTSMN-GY U22180 FLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVFGG-FTTTLYTSLH-GY M92038 FFLISTGLPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFMACFG-FTVTFYTAWN-GY A45229 FFLMSMGLPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIMVCFG-FTVTFYTAIN-GY B45229 FFLICLGLPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIMVCFG-FTVTFYTAIN-GY L11864 FFIFIGGASINILTILCTIQFKKLRSHLNYILVNLSIANLFVAIFG-SPLSFYSFFN-RY M13299 GTVFLIGFPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCIFS-VFPVFVASCN-GY K03494 IFVVIASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVIA-STISVVNQVY-GY Z68193 IFVVTASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVIA-STISIVNQVS-GY M92036 IIVVIASCFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVETLVA-STISVFNQIF-GY M62903 IFVVAASVFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGETVIA-STISVINQIS-GY S75720 GTVVACASVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLVTLCG-SSVSLSNNIN-GF M17718 IFFTLMSMLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMMMVK--TPIFIYNSFH-QG X65879 IFFTVISMIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMMMIK--TPIFIYNSFH-QG M17730 IFLFCASTVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCLK--APIF--NSFH-RG X65880 IFLFFASTLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCLK--APIFIYNSFH-RG D50584 LFLGTVSIFGNGLVIYLFNKSAALRTPANILVVNLALSDLIMLTTN-VPFFTYNCFSGGV D50583 LFLGVISIAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIMLTTN-FPPFCYNCFSGGR K02320 IMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-TPMMGINLYF-ET K02315 IMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-TPMMGINLYF-ET X65877 IIIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-TPMMGINLYF-ET M12896 LAIMIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMASQ-SPVMIINFYY-ET X65878 LVILIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMASQ-SPVMIINFYY-ET U26026 GMLGFVSAMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLMMFCM-SPPMVINCYY-ET L03781 IILGIICVLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCMMAFM-MPTMTSNCFA-ET X07797 GVVGIIGILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGFPLKTISAFM-KK X70498 GICGIIGCGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGFPLMTISCFL-KK L21195 TLITLLTIAGNCLVVISVCFVKKLRQPSNYLIVSLALADLSVAVAV-MPFVSVTDLIGGK L15228 TLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVAV-MPFVSVTDLIGGK A47425 TLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVAV-MPFVSVTDLIGGK M83181 GTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVLV-LPMAALYQVL-NK A35181 GTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVLV-LPMAALYQVL-NK L06803 GLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVLV-MPLSVVSEIS-KV A47174 GLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVLV-MPLSVVSEIS-KV X95604 GLLILATVVGNVFVIAAILLERHLRSAANNLILSLAVADLLVACLV-MPLGAVYEVV-QR * .: *: * :: .::. . M63632 FV--FGPTMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-FRFGNTHAIMGVAF U22180 FV--FGPTGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-FRFGENHAIMGVAF M92038 FV--FGPVGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-FRFSATHAMMGIAF A45229 FV--LGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSSHAFAGIAF B45229 FA--LGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSTHASAGIAF L11864 FI--FGATACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-FTFKTPHAIAGCIL M13299 FV--FGRHVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-FRFSSKHALTVVLA K03494 FV--LGHPMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-VRFDAKLAIVGIAF Z68193 FV--LGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VRFDAKLAIVGIAF M92036 FI--LGHPLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-IKFDSKLAIIGIVF M62903 FI--LGHPMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-IKFDGKLAVAGILF S75720 FV--FGRRMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-FQFQRRHAVSGCAF M17718 YA--LGHLGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMIIF X65879 YA--LGHLGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMIIF M17730 FAIYLGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNII X65880 FA--LGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNII D50584 WM--FSPQYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-PKLTTGKAVVFALI D50583 WM--FSGTYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-PKLTQGKATFMCGL K02320 WV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKM-- K02315 WV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAY X65877 WV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAY M12896 WV--LGPLWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKILF X65878 WV--LGPLWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKIAF U26026 WV--LGPLFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-KPLSINGALIRIIA L03781 WI--LGPFMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-APLTHKKATLLLLF X07797 WI--FGKVACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASKKMSHRRAFLMIIF X70498 WI--FGFAACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMIIF L21195 WI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILS L15228 WI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILS A47425 WI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILS M83181 WT--LGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISL A35181 WT--LGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISL L06803 WF--LHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMV A47174 WF--LHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMV X95604 WT--LGPELCDMWTSGDVLCCTASILHLVAIALDRYWAVTN-IDYIHASTAKRVGMMIAC : : * : : :*: : : M63632 TWIMALAC-AAPPLVG-W-----SRYIPEGMQCSCGPDYYTLNPNFNNESYVVYMFVVHF U22180 TWVMALAC-AAPPLVG-W-----SRYIPEGMQCSCGIDYYTLKPEVNNESFVIYMFVVHF M92038 TWVMAFSC-AAPPLFG-W-----SRYMPEGMQCSCGPDYYTHNPDYHNESYVLYMFVIHF A45229 TWVMALAC-AAPPLFG-W-----SRYIPEGMQCSCGPDYYTLNPDYNNESYVIYMFVCHF B45229 TWVMAMAC-AAPPLVG-W-----SRYIPEGIQCSCGPDYYTLNPEYNNESYVLYMFICHF L11864 PWISALAA-SLPPLFG-W-----SRYIPEGLQCSCGPDWYTTNNKYNNESYVMFLFCFCF M13299 TWTIGIGV-SIPPFFG-W-----SRFIPEGLQCSCGPDWYTVGTKYRSESYTWFLFIFCF K03494 SWIWAAVW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSYPGVQSYMIVLMVTCC Z68193 SWIWSAVW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSYPGVQSYMIVLMVTCC M92036 SWVWAWGW-SAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSVELGCQSFMLTLMITCC M62903 SWLWSCAW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSDPGVQSYMVVLMVTCC S75720 TWGWALLW-SAPPLLG-W-----SSYVPEGLRTSCGPNWYTGGSNN--NSYILSLFVTCF M17718 IYMYATPW-VVACYTETW-----GRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF X65879 IYLYATPW-VVACYTESW-----GRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF M17730 IWLYCTPW-VVLPLTQFW-----DRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFFFSF X65880 IWLYCTPW-VVLPLTQFW-----DRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFLFSF D50584 SWVIAIGC-ALPPFFG-W-----GNYILEGILDSCSYDYLT--QDFNTFSYNIFIFVFDY D50583 AWVISVGW-SLPPFFG-W-----GSYTLEGILDSCSYDYFT--RDMNTITYNICIFIFDF K02320 -------------------------YVPEGNLTSCGIDYLE--RDWNPRSYLIFYSIFVY K02315 IWFMSSIW-CLAPAFG-W-----SRYVPEGNLTSCGIDYLE--RDWNPRSYLIFYSIFVY X65877 IWFMSTIWCCLAPVFG-W-----SRYVPEGNLTSCGIDYLE--RDWNPRSYLIFYSIFVY M12896 IWMMAVFW-TVMPLIG-W-----SAYVPEGNLTACSIDYMT--RMWNPRSYLITYSLFVY X65878 IWMMAVFW-TIMPLIG-W-----SSYVPEGNLTACSIDYMT--RQWNPRSYLITYSLFVY U26026 IWLFSLGW-TIAPMFG-W-----NRYVPEGNMTACGTDYFN--RGLLSASYLVCYGIWVY L03781 VWIWSGGW-TILPFFG-W-----SRYVPEGNLTSCTVDYLT--KDWSSASYVVIYGLAVY X07797 VWMWSIVW-SVGPVFN-W-----GAYVPEGILTSCSFDYLS--TDPSTRSFILCMYFCGF X70498 VWLWSVLW-AIGPIFG-W-----GAYTLEGVLCNCSFDYIS--RDSTTRSNILCMFILGF L21195 VWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF----------GYTIYSTAVAF L15228 VWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF----------GYTIYSTAVAF A47425 VWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF----------GYTIYSTAVAF M83181 TWLIGFLI-SIPPMLG-WRTPEDRSDPDA---CTISKDH----------GYTIYSTFGAF A35181 TWLIGFLI-SIPPMLG-WRTPEDRSDPDA---CTISKDH----------GYTIYSTFGAF L06803 VWIVALFI-SIPPLFG-WRDP--NNDPDKTGTCIISQDK----------GYTIFSTVGAF A47174 VWIVALFI-SIPPLFG-WRDP--NNDPDKTGTCIISQDK----------GYTIFSTVGAF X95604 VWTVSFFV-CIAQLLG-WKDPDWNQRVSEDLRCVVSQDV----------GYQIFATASSF : M63632 LVPFVIIFFCYGRLLCTV------------------------------------------ U22180 TIPMIVIFFCYGQLVFTV------------------------------------------ M92038 IIPVVVIFFSYGRLICKV------------------------------------------ A45229 ILPVAVIFFTYGRLVCTV------------------------------------------ B45229 ILPVTIIFFTYGRLVCTV------------------------------------------ L11864 AVPFGTIVFCYGQLLITL------------------------------------------ M13299 IVPLSLICFSYTQLLRAL------------------------------------------ K03494 ITPLSIIVLCYLQVWLAI------------------------------------------ Z68193 IIPLAIIMLCYLQVWLAI------------------------------------------ M92036 FLPLFIIIVCYLQVWMAI------------------------------------------ M62903 FFPLAIIILCYLQVWLAI------------------------------------------ S75720 VLPLSLILFSYTNLLLTL------------------------------------------ M17718 VCPTTMITYYYSQIVGHVFSH--------------------------------------- X65879 VCPTTMITYYYSQIVGHVFSH--------------------------------------- M17730 VCPTLMILYYYSQIVGHVFSH--------------------------------------- X65880 VVPTLMILYYYSQIVGHVFNH--------------------------------------- D50584 FLPAAIIVFSYVFIVKAIFAH--------------------------------------- D50583 FLPASVIVFSYVFIVKAIFAH--------------------------------------- K02320 YIPLFLICYSYWFIIAAVSAH--------------------------------------- K02315 YIPLFLICYSYWFIIAAVSAH--------------------------------------- X65877 YIPLFLICYSYWFIIAAVSAH--------------------------------------- M12896 YTPLFLICYSYWFIIAAVAAH--------------------------------------- X65878 YTPLFMICYSYWFIIATVAAH--------------------------------------- U26026 FVPLFLIIYSYWFIIQAVAAH--------------------------------------- L03781 FLPLITMIYCYFFIVHAVAEH--------------------------------------- X07797 MLPIIIIAFCYFNIVMSVSNH--------------------------------------- X70498 FGPILIIFFCYFNIVMSVSNH--------------------------------------- L21195 YIPMSVMLFMYYQIYKAAR----------------------------------------- L15228 YIPMSVMLFMYYQIYKAAR----------------------------------------- A47425 YIPMSVMLFMYYQIYKAAR----------------------------------------- M83181 YIPLLLMLVLYGRIFRAARFRIRK------------------------------------ A35181 YIPLLLMLVLYGRIFRAARFRIRK------------------------------------ L06803 YLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDCNGCNS A47174 YLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDCNGCNS X95604 YVPVLIILILYWRIYQTARKRIR------------------------------------- * : * : M63632 ------------------------------------------------------------ U22180 ------------------------------------------------------------ M92038 ------------------------------------------------------------ A45229 ------------------------------------------------------------ B45229 ------------------------------------------------------------ L11864 ------------------------------------------------------------ M13299 ------------------------------------------------------------ K03494 ------------------------------------------------------------ Z68193 ------------------------------------------------------------ M92036 ------------------------------------------------------------ M62903 ------------------------------------------------------------ S75720 ------------------------------------------------------------ M17718 ------------------------------------------------------------ X65879 ------------------------------------------------------------ M17730 ------------------------------------------------------------ X65880 ------------------------------------------------------------ D50584 ------------------------------------------------------------ D50583 ------------------------------------------------------------ K02320 ------------------------------------------------------------ K02315 ------------------------------------------------------------ X65877 ------------------------------------------------------------ M12896 ------------------------------------------------------------ X65878 ------------------------------------------------------------ U26026 ------------------------------------------------------------ L03781 ------------------------------------------------------------ X07797 ------------------------------------------------------------ X70498 ------------------------------------------------------------ L21195 ---------KSAAKHKFPGFPRVEPDSVIAL----------------------------- L15228 ---------KSAAKHKFPGFPRVQPESVISL----------------------------- A47425 ---------KSAAKHKFPGFPRVQPESVISL----------------------------- M83181 ---TVKKVEKTGADTRHGASPAPQPKKS-----------VNGESGSR---------NWRL A35181 ---TVRKVEKKGAGTSLGTSSAPPPKKS-----------LNGQPGSG---------DWRR L06803 PDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSS----------SERL A47174 PDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSS----------SERL X95604 --------RRRGATARGGVGPPP---------VPAGGALVAGGGSGGIAAAVVAVIGRPL M63632 ---------------------KEAAAAQQ----------ESASTQKA------------- U22180 ---------------------KEAAAQQQ----------ESATTQKA------------- M92038 ---------------------REAAAQQQ----------ESATTQKA------------- A45229 ---------------------KAAAAQQQ----------DSASTQKA------------- B45229 ---------------------KAAAAQQQ----------DSASTQKA------------- L11864 ---------------------KLAAKAQA----------DSASTQKA------------- M13299 ---------------------KAVAAQQQ----------ESATTQKA------------- K03494 ---------------------RAVAKQQK----------ESESTQKA------------- Z68193 ---------------------RAVAKQQK----------ESESTQKA------------- M92036 ---------------------RAVAAQQK----------ESESTQKA------------- M62903 ---------------------RAVAAQQK----------ESESTQKA------------- S75720 ---------------------RAAAAQQK----------EADTTQRA------------- M17718 --------------------EKALRDQAKKMNVESLRSNVDKNKETA------------- X65879 --------------------EKALRDQAKKMNVDSLRSNVDKSKEAA------------- M17730 --------------------EKALREQAKKMNVESLRSNVDKSKETA------------- X65880 --------------------EKALREQAKKMNVESLRSNVDKSKETA------------- D50584 --------------------EAAMRAQAKKMNVSTLRS-NEADAQRA------------- D50583 --------------------EAAMRAQAKKMNVTNLRS-NEAETQRA------------- K02320 --------------------EKAMREQAKKMNVKSLRS-SEDAEKSA------------- K02315 --------------------EKAMREQAKKMNVKSLRS-SEDAEKSA------------- X65877 --------------------EKAMREQAKKMNVKSLRS-SEDADKSA------------- M12896 --------------------EKAMREQAKKMNVKSLRS-SEDCDKSA------------- X65878 --------------------EKAMRDQAKKMNVKSLRS-SEDCDKSA------------- U26026 --------------------EKNMREQAKKMNVASLRS-SENQNTSA------------- L03781 --------------------EKQLREQAKKMNVASLRANADQQKQSA------------- X07797 --------------------EKEMAAMAKRLNAKELR--KAQAGASA------------- X70498 --------------------EKEMAAMAKRLNAKELR--KAQAGANA------------- L21195 --------------------NGIVKLQKEVEECANLSRLL-------------------- L15228 --------------------NGVVKLQKEVEECANLSRLL-------------------- A47425 --------------------NGVVKLQKEVEECANLSRLL-------------------- M83181 GVESKAGGALCANGAVRQGDDGAALEVIEVHRVGNSKEHLPLPSEAG--PTPCAPASFER A35181 CAENRAVGTPCTNGAVRQGDDEATLEVIEVHRVGNSKEHLPLPSESG--SNSYAPACLER L06803 KQIQIETAEAFANGCA----EEASIAMLERQ-CNNGKKISSNDTPYS------------- A47174 KQIQIETAEAFANGCA----EEASIAMLERQ-CNNGKKISSNDTPYS------------- X95604 PTISETTTTGFTNVSS----NNTS---PEKQSCANGLEADPPTTGYGAVAAAYYPSLVRR M63632 ----------------EKEVTRMVVLMVIGFLVCWVPYASVAFYIFTHQGSD---FGATF U22180 ----------------EKEVTRMVIIMVIFFLICWLPYASVAMYIFTHQGSN---FGPIF M92038 ----------------EKEVTRMVILMVLGFMLAWTPYAVVAFWIFTNKGAD---FTATL A45229 ----------------EREVTKMVILMVFGFLIAWTPYATVAAWIFFNKGAD---FSAKF B45229 ----------------EREVTKMVILMVLGFLVAWTPYATVAAWIFFNKGAA---FSAQF L11864 ----------------EREVTKMVVVMVLGFLVCWAPYASFSLWIVSHRGEE---FDLRM M13299 ----------------EREVSRMVVVMVGSFCVCYVPYAAFAMYMVNNRNHG---LDLRL K03494 ----------------EKEVTRMVVVMVLAFCFCWGPYAFFACFAAANPGYP---FHPLM Z68193 ----------------EKEVTRMVVVMIFAYCVCWGPYTFFACFAAANPGYA---FHPLM M92036 ----------------EREVSRMVVVMIVAFCICWGPYASFVSFAAANPGYA---FHPLA M62903 ----------------EKEVSRMVVVMIVAYCFCWGPYTFFACFAAANPGYA---FHPLA S75720 ----------------EREVTRMVIVMVMAFLLCWLPYSTFALVVATHKGII---IQPVL M17718 ----------------EIRIAKAAITICFLFFCSWTPYGVMSLIGAFGDKTL---LTPGA X65879 ----------------EIRIAKAAITICFLFFASWTPYGVMSLIGAFGDKTL---LTPGA M17730 ----------------EIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL---LTQGA X65880 ----------------EIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL---LTPGA D50584 ----------------EIRIAKTALVNVSLWFICWTPYALISLKGVMGDTSG---ITPLV D50583 ----------------EIRIAKTALVNVSLWFICWTPYAAITIQGLLGNAEG---ITPLL K02320 ----------------EGKLAKVALVTITLWFMAWTPYLVINCMGLFKF-EG---LTPLN K02315 ----------------EGKLAKVALVTITLWFMAWTPYLVINCMGLFKF-EG---LTPLN X65877 ----------------EGKLAKVALVTISLWFMAWTPYLVINCMGLFKF-EG---LTPLN M12896 ----------------EGKLAKVALTTISLWFMAWTPYLVICYFGLFKI-DG---LTPLT X65878 ----------------ENKLAKVALTTISLWFMAWTPYLIICYFGLFKI-DG---LTPLT U26026 ----------------ECKLAKVALMTISLWFMAWTPYLVINFSGIFNL-VK---ISPLF L03781 ----------------ECRLAKVAMMTVGLWFMAWTPYLIISWAGVFSSGTR---LTPLA X07797 ----------------EMKLAKISMVIITQFMLSWSPYAIIALLAQFGPAEW---VTPYA X70498 ----------------EMRLAKISIVIVSQFLLSWSPYAVVALLAQFGPLEW---VTPYA L21195 ----KHERKNISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICGTSCSCIPLWV L15228 ----KHERKNISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICGTSCSCIPLWV A47425 ----KHERKNISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICGTSCSCIPLWV M83181 KNERNAEAKRKMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPF-CESSCH-MPTLL A35181 KNERNAEAKRKMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPF-CESSCH-MPALL L06803 RTREKLELK------RERKAARTLAIITGAFLICWLPFFIIALIGPF-VDPE-G-IPPFA A47174 RTREKLELK------RERKAARTLAIITGAFLICWLPFFIIALIGPF-VDPE-G-IPPFA X95604 KPKEAADSK------RERKAAKTLAIITGAFVACWLPFFVLAILVPT-CDCE---VSPVL * . : .: *: . . M63632 MTLPAFFAKSSALYNPVIYILMNKQFRNCMITT----LCCGKNPLGDDE--SGASTSKTE U22180 MTLPAFFAKTASIYNPIIYIMMNKQFRNCMLTS----LCCGKNPLGDDE--ASATASKTE M92038 MAVPAFFSKSSSLYNPIIYVLMNKQFRNCMITT----ICCGKNPFGDEDVSSTVSQSKTE A45229 MAIPAFFSKSSALYNPVIYVLLNKQFRNCMLTT----IFCGKNPLGDDE-SSTVSTSKTE B45229 MAIPAFFSKTSALYNPVIYVLLNKQFRSCMLTT----LFCGKNPLGDEE-SSTVSTSKTE L11864 ATIPSCLSKASTVYNPVIYVLMNKQFRSCMM-K----MVCGKN-IEEDE--ASTSSQVTQ M13299 VTIPSFFSKSACIYNPIIYCFMNKQFQACIM-K----MVCGKA-MTDES--DTCSSQKTE K03494 AALPAFFAKSATIYNPVIYVFMNRQFRNCILQL----F-----GKKVDDGSELSSASKTE Z68193 AALPAYFAKSATIYNPVIYVFMNRQFRNCILQL----F-----GKKVDDGSELSSASKTE M92036 AALPAYFAKSATIYNPVIYVFMNRQFRNCIMQL----F-----GKKVDDGSEASTTSRTE M62903 AALPAYFAKSATIYNPIIYVFMNRQFRNCILQL----F-----GKKVDDGSEVST-SRTE S75720 ASLPSYFSKTATVYNPIIYVFMNKQFQSCLLEM----LCCGYQPQRTGKASPGTPGPHAD M17718 TMIPACACKMVACIDPFVYAISHPRYRMELQKRCPW-LALNEKAPES----SAVASTSTT X65879 TMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPW-LAISEKAPES----RAAISTSTT M17730 TMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPW-LGVNEKSGEI----SSAQSTTTQ X65880 TMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPW-LGVNEKSGEA----SSAQSTTTQ D50584 STLPALLAKSCSCYNPFVYAISHPKYRLAITQHLPW-FCVHETETKS-NDDSQSNSTVAQ D50583 TTLPALLAKSCSCYNPFVYAISHPKFRLAITQHLPW-FCVHEKDPND-VEENQSSNTQTQ K02320 TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPC-CVFGKVDDGK-SSDAQSQATASE K02315 TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPC-CVFGKVDDGK-SSDAQSQATASE X65877 TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPC-CVFGKVDDGK-SSEAQSQATTSE M12896 TIWGATFAKTSAVYNPIVYGISHPKYRIVLKEKCPM-CVFGNTDEPKPDAPASDTETTSE X65878 TIWGATFAKTSAVYNPIVYGISHPNDRLVLKEKCPM-CVCGTTDEPKPDAPPSDTETTSE U26026 TIWGSLFAKANAVYNPIVYGISHPKYRAALFAKFPS-LAC-AAEPSS-DAVSTTSGTTTV L03781 TIWGSVFAKANSCYNPIVYGISHPRYKAALYQRFPS-LACGSGESGS-DVKSEASATTTM X07797 AELPVLFAKASAIHNPIVYSVSHPKFREAIQTTFPWLLTCCQFDEKECEDANDAEEEVVA X70498 AQLPVMFAKASAIHNPMIYSVSHPKFREAISQTFPWVLTCCQFDDKETEDDKDAETEIPA L21195 ERTFLWLGYANSLINPFIYAFFNRDLRTTYRSL----L---QCQYRNINRKLSAAGMHEA L15228 ERTCLWLGYANSLINPFIYAFFNRDLRPTSRSL----L---QCQYRNINRKLSAAGMHEA A47425 ERTCLWLGYANSLINPFIYAFFNRDLRTTYRSL----L---QCQYRNINRKLSAAGMHEA M83181 GAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKI----I-----KCKFCRQ---------- A35181 GAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKI----I-----KCKFCRR---------- L06803 RSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKI----LFG---KYRRGHR---------- A47174 RSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKI----LFG---KYRRGHR---------- X95604 TSLSLWLGYFNSTLNPVIYTVFSPEFRHAFQRL----LCGRRVRRRRAPQ---------- :*.:* : M63632 VSS--------------------------------------------------------- U22180 ------------------------------------------------------------ M92038 VSS--------------------------------------------------------- A45229 VSS--------------------------------------------------------- B45229 VSS--------------------------------------------------------- L11864 VSS--------------------------------------------------------- M13299 VST--------------------------------------------------------- K03494 VSS--------------------------------------------------------- Z68193 VSS--------------------------------------------------------- M92036 VSS--------------------------------------------------------- M62903 VSS--------------------------------------------------------- S75720 VTA--------------------------------------------------------- M17718 QEP--------------------------------------------------------- X65879 QEQ--------------------------------------------------------- M17730 EQ---------------------------------------------------------- X65880 EQT--------------------------------------------------------- D50584 ------------------------------------------------------------ D50583 ------------------------------------------------------------ K02320 AE---------------------------------------------------------- K02315 AE---------------------------------------------------------- X65877 AE---------------------------------------------------------- M12896 AD---------------------------------------------------------- X65878 AE---------------------------------------------------------- U26026 TDN--------------------------------------------------------- L03781 EEK--------------------------------------------------------- X07797 SER--GGESRDAAQMKEMMAMMQKMQAQQAAYQPPPPPQGY--PPQGYPPQGAYPPPQGY X70498 GESSDAAPSADAAQMKEMMAMMQKMQQQQAAY----PPQGYAPPPQGYPPQGY--PPQGY L21195 LKLAERPERPEFVLQNADYCRKK------------------------------------- L15228 LKLAERPERSEFVLQNSDHCGKK------------------------------------- A47425 LKLAERPERSEFVLQNSDHCGKK------------------------------------- M83181 ------------------------------------------------------------ A35181 ------------------------------------------------------------ L06803 ------------------------------------------------------------ A47174 ------------------------------------------------------------ X95604 ------------------------------------------------------------ M63632 --------------------------------VS-TSPVSP-A--- U22180 -----------------------------------TSQVAP-A--- M92038 --------------------------------VS-SSQVSP-A--- A45229 --------------------------------------VSP-A--- B45229 --------------------------------------VSP-A--- L11864 --------------------------------------VAPEK--- M13299 --------------------------------VS-STQVGP-N--- K03494 --------------------------------V---SSVSP-A--- Z68193 --------------------------------V---SSVSP-A--- M92036 --------------------------------VS-NSSVAP-A--- M62903 --------------------------------VS-NSSVSP-A--- S75720 --------------------------------AGLRNKVMP-AHPV M17718 ------------------------------------QQTTA-A--- X65879 ------------------------------------QQTTA-A--- M17730 ------------------------------------QQTTA-A--- X65880 ------------------------------------QQTSA-A--- D50584 ---------------------------------------DK-A--- D50583 ---------------------------------------EK-S--- K02320 ---------------------------------------SK-A--- K02315 ---------------------------------------SK-A--- X65877 ---------------------------------------SK-A--- M12896 ---------------------------------------SK-A--- X65878 ---------------------------------------SK-D--- U26026 ------------------------------------EK-SN-A--- L03781 ------------------------------------PKIPE-A--- X07797 PPQGYPPQGYPPQGYPPQGAPPQVEAPQGAPPQGVDNQAYQ-A--- X70498 PPQGYPPQGYPP---PPQGAPPQ-GAPPAAPPQGVDNQAYQ-A--- L21195 ------------------------------------------GHDS L15228 ------------------------------------------GHDT A47425 ------------------------------------------GHDT M83181 ---------------------------------------------- A35181 ---------------------------------------------- L06803 ---------------------------------------------- A47174 ---------------------------------------------- X95604 ---------------------------------------------- ALTER-1.3.4/alter-web/src/main/resources/mafft.fas000077500000000000000000000661671300536243200216060ustar00rootroot00000000000000>M63632 1 Lampetra japonica rhodopsin <>[BBRC174,1125-1132'91] MN-----------------GTE--GDNFYVP----FS---------------------NK TGLARSPY----------------------EYPQY-YLAEPWK---------YSALAAYM FFLILVGFPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFMVLFG-FTVTMYTSMN-GY FV--FGPTMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-FRFGNTHAIMGVAF TWIMALAC-AAPPLVG-W-----SRYIPEGMQCSCGPDYYTLNPNFNNESYVVYMFVVHF LVPFVIIFFCYGRLLCTV------------------------------------------ ------------------------------------------------------------ ---------------------KEAAAAQQ----------ESASTQKA------------- ----------------EKEVTRMVVLMVIGFLVCWVPYASVAFYIFTHQGSD---FGATF MTLPAFFAKSSALYNPVIYILMNKQFRNCMITT----LCCGKNPLGDDE--SGASTSKTE VSS--------------------------------------------------------- --------------------------------VS-TSPVSP-A--- >U22180 1 rat opsin [J.Mol.Neurosci.5(3),207-209'94] MN-----------------GTE--GPNFYVP----FS---------------------NI TGVVRSPF----------------------EQPQY-YLAEPWQ---------FSMLAAYM FLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVFGG-FTTTLYTSLH-GY FV--FGPTGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-FRFGENHAIMGVAF TWVMALAC-AAPPLVG-W-----SRYIPEGMQCSCGIDYYTLKPEVNNESFVIYMFVVHF TIPMIVIFFCYGQLVFTV------------------------------------------ ------------------------------------------------------------ ---------------------KEAAAQQQ----------ESATTQKA------------- ----------------EKEVTRMVIIMVIFFLICWLPYASVAMYIFTHQGSN---FGPIF MTLPAFFAKTASIYNPIIYIMMNKQFRNCMLTS----LCCGKNPLGDDE--ASATASKTE ------------------------------------------------------------ -----------------------------------TSQVAP-A--- >M92038 1 chicken green sensitive cone opsin [PNAS89,5932-5936'9 MN-----------------GTE--GINFYVP----MS---------------------NK TGVVRSPF----------------------EYPQY-YLAEPWK---------YRLVCCYI FFLISTGLPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFMACFG-FTVTFYTAWN-GY FV--FGPVGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-FRFSATHAMMGIAF TWVMAFSC-AAPPLFG-W-----SRYMPEGMQCSCGPDYYTHNPDYHNESYVLYMFVIHF IIPVVVIFFSYGRLICKV------------------------------------------ ------------------------------------------------------------ ---------------------REAAAQQQ----------ESATTQKA------------- ----------------EKEVTRMVILMVLGFMLAWTPYAVVAFWIFTNKGAD---FTATL MAVPAFFSKSSSLYNPIIYVLMNKQFRNCMITT----ICCGKNPFGDEDVSSTVSQSKTE VSS--------------------------------------------------------- --------------------------------VS-SSQVSP-A--- >A45229 opsin, green-sensitive (clone GFgr-1) - goldfish MN-----------------GTE--GKNFYVP----MS---------------------NR TGLVRSPF----------------------EYPQY-YLAEPWQ---------FKILALYL FFLMSMGLPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIMVCFG-FTVTFYTAIN-GY FV--LGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSSHAFAGIAF TWVMALAC-AAPPLFG-W-----SRYIPEGMQCSCGPDYYTLNPDYNNESYVIYMFVCHF ILPVAVIFFTYGRLVCTV------------------------------------------ ------------------------------------------------------------ ---------------------KAAAAQQQ----------DSASTQKA------------- ----------------EREVTKMVILMVFGFLIAWTPYATVAAWIFFNKGAD---FSAKF MAIPAFFSKSSALYNPVIYVLLNKQFRNCMLTT----IFCGKNPLGDDE-SSTVSTSKTE VSS--------------------------------------------------------- --------------------------------------VSP-A--- >B45229 opsin, green-sensitive (clone GFgr-2) - goldfish MN-----------------GTE--GNNFYVP----LS---------------------NR TGLVRSPF----------------------EYPQY-YLAEPWQ---------FKLLAVYM FFLICLGLPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIMVCFG-FTVTFYTAIN-GY FA--LGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSTHASAGIAF TWVMAMAC-AAPPLVG-W-----SRYIPEGIQCSCGPDYYTLNPEYNNESYVLYMFICHF ILPVTIIFFTYGRLVCTV------------------------------------------ ------------------------------------------------------------ ---------------------KAAAAQQQ----------DSASTQKA------------- ----------------EREVTKMVILMVLGFLVAWTPYATVAAWIFFNKGAA---FSAQF MAIPAFFSKTSALYNPVIYVLLNKQFRSCMLTT----LFCGKNPLGDEE-SSTVSTSKTE VSS--------------------------------------------------------- --------------------------------------VSP-A--- >L11864 1 Carassius auratus blue cone opsin [Biochemistry32,208- MK-----------------QVPEFHEDFYIPIPLDIN---------------------NL S--AYSPF----------------------LVPQD-HLGNQGI---------FMAMSVFM FFIFIGGASINILTILCTIQFKKLRSHLNYILVNLSIANLFVAIFG-SPLSFYSFFN-RY FI--FGATACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-FTFKTPHAIAGCIL PWISALAA-SLPPLFG-W-----SRYIPEGLQCSCGPDWYTTNNKYNNESYVMFLFCFCF AVPFGTIVFCYGQLLITL------------------------------------------ ------------------------------------------------------------ ---------------------KLAAKAQA----------DSASTQKA------------- ----------------EREVTKMVVVMVLGFLVCWAPYASFSLWIVSHRGEE---FDLRM ATIPSCLSKASTVYNPVIYVLMNKQFRSCMM-K----MVCGKN-IEEDE--ASTSSQVTQ VSS--------------------------------------------------------- --------------------------------------VAPEK--- >M13299 1 human BCP <>[Science232(4747),193-202'86] MR-----------------KMS--EEEFYL-----FK---------------------NI SSV--GPW----------------------DGPQY-HIAPVWA---------FYLQAAFM GTVFLIGFPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCIFS-VFPVFVASCN-GY FV--FGRHVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-FRFSSKHALTVVLA TWTIGIGV-SIPPFFG-W-----SRFIPEGLQCSCGPDWYTVGTKYRSESYTWFLFIFCF IVPLSLICFSYTQLLRAL------------------------------------------ ------------------------------------------------------------ ---------------------KAVAAQQQ----------ESATTQKA------------- ----------------EREVSRMVVVMVGSFCVCYVPYAAFAMYMVNNRNHG---LDLRL VTIPSFFSKSACIYNPIIYCFMNKQFQACIM-K----MVCGKA-MTDES--DTCSSQKTE VST--------------------------------------------------------- --------------------------------VS-STQVGP-N--- >K03494 1 human GCP <>[Science232(4747),193-202'86] MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYT----NS---------------------NS T---RGPF----------------------EGPNY-HIAPRWV---------YHLTSVWM IFVVIASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVIA-STISVVNQVY-GY FV--LGHPMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-VRFDAKLAIVGIAF SWIWAAVW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSYPGVQSYMIVLMVTCC ITPLSIIVLCYLQVWLAI------------------------------------------ ------------------------------------------------------------ ---------------------RAVAKQQK----------ESESTQKA------------- ----------------EKEVTRMVVVMVLAFCFCWGPYAFFACFAAANPGYP---FHPLM AALPAFFAKSATIYNPVIYVFMNRQFRNCILQL----F-----GKKVDDGSELSSASKTE VSS--------------------------------------------------------- --------------------------------V---SSVSP-A--- >Z68193 1 human Red Opsin <>[] MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYT----NS---------------------NS T---RGPF----------------------EGPNY-HIAPRWV---------YHLTSVWM IFVVTASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVIA-STISIVNQVS-GY FV--LGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VRFDAKLAIVGIAF SWIWSAVW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSYPGVQSYMIVLMVTCC IIPLAIIMLCYLQVWLAI------------------------------------------ ------------------------------------------------------------ ---------------------RAVAKQQK----------ESESTQKA------------- ----------------EKEVTRMVVVMIFAYCVCWGPYTFFACFAAANPGYA---FHPLM AALPAYFAKSATIYNPVIYVFMNRQFRNCILQL----F-----GKKVDDGSELSSASKTE VSS--------------------------------------------------------- --------------------------------V---SSVSP-A--- >M92036 1 Gecko gecko P521 [PNAS89,6841-6845'92] MTEAWNVAVFAARRSRDD-DDTTRGSVFTYT----NT---------------------NN T---RGPF----------------------EGPNY-HIAPRWV---------YNLVSFFM IIVVIASCFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVETLVA-STISVFNQIF-GY FI--LGHPLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-IKFDSKLAIIGIVF SWVWAWGW-SAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSVELGCQSFMLTLMITCC FLPLFIIIVCYLQVWMAI------------------------------------------ ------------------------------------------------------------ ---------------------RAVAAQQK----------ESESTQKA------------- ----------------EREVSRMVVVMIVAFCICWGPYASFVSFAAANPGYA---FHPLA AALPAYFAKSATIYNPVIYVFMNRQFRNCIMQL----F-----GKKVDDGSEASTTSRTE VSS--------------------------------------------------------- --------------------------------VS-NSSVAP-A--- >M62903 1 chicken visual pigment <>[BBRC173,1212-1217'90] MA-AWEAAFAARRRHEE--EDTTRDSVFTYT----NS---------------------NN T---RGPF----------------------EGPNY-HIAPRWV---------YNLTSVWM IFVVAASVFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGETVIA-STISVINQIS-GY FI--LGHPMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-IKFDGKLAVAGILF SWLWSCAW-TAPPIFG-W-----SRYWPHGLKTSCGPDVFSGSSDPGVQSYMVVLMVTCC FFPLAIIILCYLQVWLAI------------------------------------------ ------------------------------------------------------------ ---------------------RAVAAQQK----------ESESTQKA------------- ----------------EKEVSRMVVVMIVAYCFCWGPYTFFACFAAANPGYA---FHPLA AALPAYFAKSATIYNPIIYVFMNRQFRNCILQL----F-----GKKVDDGSEVST-SRTE VSS--------------------------------------------------------- --------------------------------VS-NSSVSP-A--- >S75720 1 chicken P-opsin <>[Science267(5203),1502-1506'95] MS-----------------SNSSQAP----------P---------------------NG T---PGPF----------------------DGPQWPYQAPQST---------YVGVAVLM GTVVACASVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLVTLCG-SSVSLSNNIN-GF FV--FGRRMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-FQFQRRHAVSGCAF TWGWALLW-SAPPLLG-W-----SSYVPEGLRTSCGPNWYTGGSNN--NSYILSLFVTCF VLPLSLILFSYTNLLLTL------------------------------------------ ------------------------------------------------------------ ---------------------RAAAAQQK----------EADTTQRA------------- ----------------EREVTRMVIVMVMAFLLCWLPYSTFALVVATHKGII---IQPVL ASLPSYFSKTATVYNPIIYVFMNKQFQSCLLEM----LCCGYQPQRTGKASPGTPGPHAD VTA--------------------------------------------------------- --------------------------------AGLRNKVMP-AHPV >M17718 1 D.melanogaster Rh3 <>[J.Neurosci.7,1550-1557'87] MESGNVSSSLFGNVSTALRPEA----RLSA---E------------------------TR LLGWNVPP----------------------EELR--HIPEHWLTYPEPPESMNYLLGTLY IFFTLMSMLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMMMVK--TPIFIYNSFH-QG YA--LGHLGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMIIF IYMYATPW-VVACYTETW-----GRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF VCPTTMITYYYSQIVGHVFSH--------------------------------------- ------------------------------------------------------------ --------------------EKALRDQAKKMNVESLRSNVDKNKETA------------- ----------------EIRIAKAAITICFLFFCSWTPYGVMSLIGAFGDKTL---LTPGA TMIPACACKMVACIDPFVYAISHPRYRMELQKRCPW-LALNEKAPES----SAVASTSTT QEP--------------------------------------------------------- ------------------------------------QQTTA-A--- >X65879 1 Drosophila pseudoobscura Rh3 <>[Genetics132(1),193-204'92 MEYHNVSSVL-GNVSSVLRPDA----RLSA---E------------------------SR LLGWNVPP----------------------DELR--HIPEHWLIYPEPPESMNYLLGTLY IFFTVISMIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMMMIK--TPIFIYNSFH-QG YA--LGHLGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMIIF IYLYATPW-VVACYTESW-----GRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF VCPTTMITYYYSQIVGHVFSH--------------------------------------- ------------------------------------------------------------ --------------------EKALRDQAKKMNVDSLRSNVDKSKEAA------------- ----------------EIRIAKAAITICFLFFASWTPYGVMSLIGAFGDKTL---LTPGA TMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPW-LAISEKAPES----RAAISTSTT QEQ--------------------------------------------------------- ------------------------------------QQTTA-A--- >M17730 1 D.melanogaster Rh4 opsin <>[J.Neurosci.7,1558-1566'87] ME------PLCNASEPPLRPEA----R-SSGNGD------------------------LQ FLGWNVPP----------------------DQIQ--YIPEHWLTQLEPPASMHYMLGVFY IFLFCASTVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCLK--APIF--NSFH-RG FAIYLGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNII IWLYCTPW-VVLPLTQFW-----DRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFFFSF VCPTLMILYYYSQIVGHVFSH--------------------------------------- ------------------------------------------------------------ --------------------EKALREQAKKMNVESLRSNVDKSKETA------------- ----------------EIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL---LTQGA TMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPW-LGVNEKSGEI----SSAQSTTTQ EQ---------------------------------------------------------- ------------------------------------QQTTA-A--- >X65880 1 Drosophila pseudoobscura Rh4 <>[Genetics132(1),193-204'92 MD------ALCNASEPPLRPEA----RMSSGSDE------------------------LQ FLGWNVPP----------------------DQIQ--YIPEHWLTQLEPPASMHYMLGVFY IFLFFASTLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCLK--APIFIYNSFH-RG FA--LGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNII IWLYCTPW-VVLPLTQFW-----DRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFLFSF VVPTLMILYYYSQIVGHVFNH--------------------------------------- ------------------------------------------------------------ --------------------EKALREQAKKMNVESLRSNVDKSKETA------------- ----------------EIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL---LTPGA TMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPW-LGVNEKSGEA----SSAQSTTTQ EQT--------------------------------------------------------- ------------------------------------QQTSA-A--- >D50584 1 Hemigrapsus sanguineus opsin BcRh2 [J.Exp.Biol.1 MT-----------NATGPQMAYYGAASMDFGYPE------------------------GV SIVDFVRP----------------------EIKP--YVHQHWYNYPPVNPMWHYLLGVIY LFLGTVSIFGNGLVIYLFNKSAALRTPANILVVNLALSDLIMLTTN-VPFFTYNCFSGGV WM--FSPQYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-PKLTTGKAVVFALI SWVIAIGC-ALPPFFG-W-----GNYILEGILDSCSYDYLT--QDFNTFSYNIFIFVFDY FLPAAIIVFSYVFIVKAIFAH--------------------------------------- ------------------------------------------------------------ --------------------EAAMRAQAKKMNVSTLRS-NEADAQRA------------- ----------------EIRIAKTALVNVSLWFICWTPYALISLKGVMGDTSG---ITPLV STLPALLAKSCSCYNPFVYAISHPKYRLAITQHLPW-FCVHETETKS-NDDSQSNSTVAQ ------------------------------------------------------------ ---------------------------------------DK-A--- >D50583 1 Hemigrapsus sanguineus opsin BcRh1 [J.Exp.Biol.1 MA-----------NVTGPQMAFYGSGAATFGYPE------------------------GM TVADFVPD----------------------RVKH--MVLDHWYNYPPVNPMWHYLLGVVY LFLGVISIAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIMLTTN-FPPFCYNCFSGGR WM--FSGTYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-PKLTQGKATFMCGL AWVISVGW-SLPPFFG-W-----GSYTLEGILDSCSYDYFT--RDMNTITYNICIFIFDF FLPASVIVFSYVFIVKAIFAH--------------------------------------- ------------------------------------------------------------ --------------------EAAMRAQAKKMNVTNLRS-NEAETQRA------------- ----------------EIRIAKTALVNVSLWFICWTPYAAITIQGLLGNAEG---ITPLL TTLPALLAKSCSCYNPFVYAISHPKFRLAITQHLPW-FCVHEKDPND-VEENQSSNTQTQ ------------------------------------------------------------ ---------------------------------------EK-S--- >K02320 1 D.melanogaster opsin <>[Cell40,851-858'85] ME-----SFAVAAAQLGPHFA-----PLS-----------------------------NG SVVDKVTP----------------------DMAH--LISPYWNQFPAMDPIWAKILTAYM IMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-TPMMGINLYF-ET WV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKM-- -------------------------YVPEGNLTSCGIDYLE--RDWNPRSYLIFYSIFVY YIPLFLICYSYWFIIAAVSAH--------------------------------------- ------------------------------------------------------------ --------------------EKAMREQAKKMNVKSLRS-SEDAEKSA------------- ----------------EGKLAKVALVTITLWFMAWTPYLVINCMGLFKF-EG---LTPLN TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPC-CVFGKVDDGK-SSDAQSQATASE AE---------------------------------------------------------- ---------------------------------------SK-A--- >K02315 1 D.melanogaster ninaE <>[Cell40,839-850'85] ME-----SFAVAAAQLGPHFA-----PLS-----------------------------NG SVVDKVTP----------------------DMAH--LISPYWNQFPAMDPIWAKILTAYM IMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-TPMMGINLYF-ET WV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAY IWFMSSIW-CLAPAFG-W-----SRYVPEGNLTSCGIDYLE--RDWNPRSYLIFYSIFVY YIPLFLICYSYWFIIAAVSAH--------------------------------------- ------------------------------------------------------------ --------------------EKAMREQAKKMNVKSLRS-SEDAEKSA------------- ----------------EGKLAKVALVTITLWFMAWTPYLVINCMGLFKF-EG---LTPLN TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPC-CVFGKVDDGK-SSDAQSQATASE AE---------------------------------------------------------- ---------------------------------------SK-A--- >X65877 1 Drosophila pseudoobscura ninaE <>[Genetics132(1),193-204' MD-----SFAAVATQLGPQFA-----APS-----------------------------NG SVVDKVTP----------------------DMAH--LISPYWDQFPAMDPIWAKILTAYM IIIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMITN-TPMMGINLYF-ET WV--LGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAY IWFMSTIWCCLAPVFG-W-----SRYVPEGNLTSCGIDYLE--RDWNPRSYLIFYSIFVY YIPLFLICYSYWFIIAAVSAH--------------------------------------- ------------------------------------------------------------ --------------------EKAMREQAKKMNVKSLRS-SEDADKSA------------- ----------------EGKLAKVALVTISLWFMAWTPYLVINCMGLFKF-EG---LTPLN TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPC-CVFGKVDDGK-SSEAQSQATTSE AE---------------------------------------------------------- ---------------------------------------SK-A--- >M12896 1 D.melanogaster Rh2 <>[Cell44,705-710'86] MERSHLPETPFDLAHSGPRFQ-----AQSSG---------------------------NG SVLDNVLP----------------------DMAH--LVNPYWSRFAPMDPMMSKILGLFT LAIMIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMASQ-SPVMIINFYY-ET WV--LGPLWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKILF IWMMAVFW-TVMPLIG-W-----SAYVPEGNLTACSIDYMT--RMWNPRSYLITYSLFVY YTPLFLICYSYWFIIAAVAAH--------------------------------------- ------------------------------------------------------------ --------------------EKAMREQAKKMNVKSLRS-SEDCDKSA------------- ----------------EGKLAKVALTTISLWFMAWTPYLVICYFGLFKI-DG---LTPLT TIWGATFAKTSAVYNPIVYGISHPKYRIVLKEKCPM-CVFGNTDEPKPDAPASDTETTSE AD---------------------------------------------------------- ---------------------------------------SK-A--- >X65878 1 Drosophila pseudoobscura Rh2 <>[Genetics132(1),193-204'92 MERSLLPEPPLAMALLGPRFE-----AQTGG---------------------------NR SVLDNVLP----------------------DMAP--LVNPHWSRFAPMDPTMSKILGLFT LVILIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMASQ-SPVMIINFYY-ET WV--LGPLWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKIAF IWMMAVFW-TIMPLIG-W-----SSYVPEGNLTACSIDYMT--RQWNPRSYLITYSLFVY YTPLFMICYSYWFIIATVAAH--------------------------------------- ------------------------------------------------------------ --------------------EKAMRDQAKKMNVKSLRS-SEDCDKSA------------- ----------------ENKLAKVALTTISLWFMAWTPYLIICYFGLFKI-DG---LTPLT TIWGATFAKTSAVYNPIVYGISHPNDRLVLKEKCPM-CVCGTTDEPKPDAPPSDTETTSE AE---------------------------------------------------------- ---------------------------------------SK-D--- >U26026 1 Apis mellifera long-wavelength rhodopsin <>[] MI-----------AVSGPSYE-----AFSYGGQARFN---------------------NQ TVVDKVPP----------------------DMLH--LIDANWYQYPPLNPMWHGILGFVI GMLGFVSAMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLMMFCM-SPPMVINCYY-ET WV--LGPLFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-KPLSINGALIRIIA IWLFSLGW-TIAPMFG-W-----NRYVPEGNMTACGTDYFN--RGLLSASYLVCYGIWVY FVPLFLIIYSYWFIIQAVAAH--------------------------------------- ------------------------------------------------------------ --------------------EKNMREQAKKMNVASLRS-SENQNTSA------------- ----------------ECKLAKVALMTISLWFMAWTPYLVINFSGIFNL-VK---ISPLF TIWGSLFAKANAVYNPIVYGISHPKYRAALFAKFPS-LAC-AAEPSS-DAVSTTSGTTTV TDN--------------------------------------------------------- ------------------------------------EK-SN-A--- >L03781 1 Limulus polyphemus opsin <>[PNAS90,6150-6154'93] M-------------ANQLSYS-----SLGWPYQP------------------------NA SVVDTMPK----------------------EMLY--MIHEHWYAFPPMNPLWYSILGVAM IILGIICVLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCMMAFM-MPTMTSNCFA-ET WI--LGPFMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-APLTHKKATLLLLF VWIWSGGW-TILPFFG-W-----SRYVPEGNLTSCTVDYLT--KDWSSASYVVIYGLAVY FLPLITMIYCYFFIVHAVAEH--------------------------------------- ------------------------------------------------------------ --------------------EKQLREQAKKMNVASLRANADQQKQSA------------- ----------------ECRLAKVAMMTVGLWFMAWTPYLIISWAGVFSSGTR---LTPLA TIWGSVFAKANSCYNPIVYGISHPRYKAALYQRFPS-LACGSGESGS-DVKSEASATTTM EEK--------------------------------------------------------- ------------------------------------PKIPE-A--- >X07797 1 Octopus dofleini rhodopsin <>[FEBS232(1),69-72'88] MVE-----------------------STTLVNQTWWY---------------------NP TVD----------------------------------IHPHWAKFDPIPDAVYYSVGIFI GVVGIIGILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGFPLKTISAFM-KK WI--FGKVACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASKKMSHRRAFLMIIF VWMWSIVW-SVGPVFN-W-----GAYVPEGILTSCSFDYLS--TDPSTRSFILCMYFCGF MLPIIIIAFCYFNIVMSVSNH--------------------------------------- ------------------------------------------------------------ --------------------EKEMAAMAKRLNAKELR--KAQAGASA------------- ----------------EMKLAKISMVIITQFMLSWSPYAIIALLAQFGPAEW---VTPYA AELPVLFAKASAIHNPIVYSVSHPKFREAIQTTFPWLLTCCQFDEKECEDANDAEEEVVA SER--GGESRDAAQMKEMMAMMQKMQAQQAAYQPPPPPQGY--PPQGYPPQGAYPPPQGY PPQGYPPQGYPPQGYPPQGAPPQVEAPQGAPPQGVDNQAYQ-A--- >X70498 1 Todarodes pacificus rhodopsin [FEBS317(1-2),5-11'93] MGR-----------------------DLR-DNETWWY---------------------NP SIV----------------------------------VHPHWREFDQVPDAVYYSLGIFI GICGIIGCGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGFPLMTISCFL-KK WI--FGFAACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMIIF VWLWSVLW-AIGPIFG-W-----GAYTLEGVLCNCSFDYIS--RDSTTRSNILCMFILGF FGPILIIFFCYFNIVMSVSNH--------------------------------------- ------------------------------------------------------------ --------------------EKEMAAMAKRLNAKELR--KAQAGANA------------- ----------------EMRLAKISIVIVSQFLLSWSPYAVVALLAQFGPLEW---VTPYA AQLPVMFAKASAIHNPMIYSVSHPKFREAISQTFPWVLTCCQFDDKETEDDKDAETEIPA GESSDAAPSADAAQMKEMMAMMQKMQQQQAAY----PPQGYAPPPQGYPPQGY--PPQGY PPQGYPPQGYPP---PPQGAPPQ-GAPPAAPPQGVDNQAYQ-A--- >L21195 1 human serotonin 5-HT7 receptor protein L15228 1 rat 5HT-7 serotonin receptor <>[JBC268,18200-18204'93] M-------------------------------------------------PHLLSGFLEV TASPAPTW------------DAPPDNVSGCGEQIN------------YGRVEKVVIGSIL TLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVAV-MPFVSVTDLIGGK WI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILS VWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF----------GYTIYSTAVAF YIPMSVMLFMYYQIYKAAR----------------------------------------- ---------KSAAKHKFPGFPRVQPESVISL----------------------------- --------------------NGVVKLQKEVEECANLSRLL-------------------- ----KHERKNISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICGTSCSCIPLWV ERTCLWLGYANSLINPFIYAFFNRDLRPTSRSL----L---QCQYRNINRKLSAAGMHEA LKLAERPERSEFVLQNSDHCGKK------------------------------------- ------------------------------------------GHDT >A47425 serotonin receptor 5HT-7 - rat M-------------------------------------------------PHLLSGFLEV TASPAPTW------------DAPPDNVSGCGEQIN------------YGRVEKVVIGSIL TLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVAV-MPFVSVTDLIGGK WI--FGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILS VWLLSASI-TLPPLFG-W-----AQNVNDDKVCLISQDF----------GYTIYSTAVAF YIPMSVMLFMYYQIYKAAR----------------------------------------- ---------KSAAKHKFPGFPRVQPESVISL----------------------------- --------------------NGVVKLQKEVEECANLSRLL-------------------- ----KHERKNISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICGTSCSCIPLWV ERTCLWLGYANSLINPFIYAFFNRDLRTTYRSL----L---QCQYRNINRKLSAAGMHEA LKLAERPERSEFVLQNSDHCGKK------------------------------------- ------------------------------------------GHDT >M83181 1 human serotonin receptor <>[JBC267(11),7553-7562'92] MDVLSPGQ-----------------GNNTTSPPAPFETGG------------------NT TGISDVTV------------------------------------------SYQVITSLLL GTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVLV-LPMAALYQVL-NK WT--LGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISL TWLIGFLI-SIPPMLG-WRTPEDRSDPDA---CTISKDH----------GYTIYSTFGAF YIPLLLMLVLYGRIFRAARFRIRK------------------------------------ ---TVKKVEKTGADTRHGASPAPQPKKS-----------VNGESGSR---------NWRL GVESKAGGALCANGAVRQGDDGAALEVIEVHRVGNSKEHLPLPSEAG--PTPCAPASFER KNERNAEAKRKMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPF-CESSCH-MPTLL GAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKI----I-----KCKFCRQ---------- ------------------------------------------------------------ ---------------------------------------------- >A35181 serotonin receptor class 1A - rat MDVFSFGQ-----------------GNNTTASQEPFGTGG------------------NV TSISDVTF------------------------------------------SYQVITSLLL GTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVLV-LPMAALYQVL-NK WT--LGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISL TWLIGFLI-SIPPMLG-WRTPEDRSDPDA---CTISKDH----------GYTIYSTFGAF YIPLLLMLVLYGRIFRAARFRIRK------------------------------------ ---TVRKVEKKGAGTSLGTSSAPPPKKS-----------LNGQPGSG---------DWRR CAENRAVGTPCTNGAVRQGDDEATLEVIEVHRVGNSKEHLPLPSESG--SNSYAPACLER KNERNAEAKRKMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPF-CESSCH-MPALL GAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKI----I-----KCKFCRR---------- ------------------------------------------------------------ ---------------------------------------------- >L06803 1 Lymnaea stagnalis serotonin receptor <>[PNAS90,11-15'93] MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTG------------------LV TSDFNDSYGLTGQFINGSHSSRSRDNASANDTSATNMTDDRYWSLTVYSHEHLVLTSVIL GLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVLV-MPLSVVSEIS-KV WF--LHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMV VWIVALFI-SIPPLFG-WRDP--NNDPDKTGTCIISQDK----------GYTIFSTVGAF YLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDCNGCNS PDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSS----------SERL KQIQIETAEAFANGCA----EEASIAMLERQ-CNNGKKISSNDTPYS------------- RTREKLELK------RERKAARTLAIITGAFLICWLPFFIIALIGPF-VDPE-G-IPPFA RSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKI----LFG---KYRRGHR---------- ------------------------------------------------------------ ---------------------------------------------- >A47174 serotonin receptor, 5HTlym receptor - great pond snail MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTG------------------LV TSDFNDSYGLTGQFINGSHSSRSRDNASANDTSATNMTDDRYWSLTVYSHEHLVLTSVIL GLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVLV-MPLSVVSEIS-KV WF--LHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMV VWIVALFI-SIPPLFG-WRDP--NNDPDKTGTCIISQDK----------GYTIFSTVGAF YLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDCNGCNS PDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSS----------SERL KQIQIETAEAFANGCA----EEASIAMLERQ-CNNGKKISSNDTPYS------------- RTREKLELK------RERKAARTLAIITGAFLICWLPFFIIALIGPF-VDPE-G-IPPFA RSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKI----LFG---KYRRGHR---------- ------------------------------------------------------------ ---------------------------------------------- >X95604 1 Bombyx mori serotonin receptor [InsectBiochem.Mol.Bi MEGAE-GQEELDWEAL--YLRLP--LQNCSWNSTGWEPNW------------------NV TVVPNTTW---------WQASAPFDTPAALVRAAAK--------------------AVVL GLLILATVVGNVFVIAAILLERHLRSAANNLILSLAVADLLVACLV-MPLGAVYEVV-QR WT--LGPELCDMWTSGDVLCCTASILHLVAIALDRYWAVTN-IDYIHASTAKRVGMMIAC VWTVSFFV-CIAQLLG-WKDPDWNQRVSEDLRCVVSQDV----------GYQIFATASSF YVPVLIILILYWRIYQTARKRIR------------------------------------- --------RRRGATARGGVGPPP---------VPAGGALVAGGGSGGIAAAVVAVIGRPL PTISETTTTGFTNVSS----NNTS---PEKQSCANGLEADPPTTGYGAVAAAYYPSLVRR KPKEAADSK------RERKAAKTLAIITGAFVACWLPFFVLAILVPT-CDCE---VSPVL TSLSLWLGYFNSTLNPVIYTVFSPEFRHAFQRL----LCGRRVRRRRAPQ---------- ------------------------------------------------------------ ---------------------------------------------- ALTER-1.3.4/alter-web/src/main/resources/muscle.aln000066400000000000000000000757221300536243200217740ustar00rootroot00000000000000MUSCLE (3.6) multiple sequence alignment L21195 ----------MMDVNSSGRPDLYGHLRSFLLPEVGRGLPDLSPDGGADPVAGSWAPHLLS L15228 ---------------------------------------------MPHLLSGFL------ A47425 ---------------------------------------------MPHLLSGFL------ M83181 -----------------MDVLSPGQGNNTTSPPAPFETGG--NTTGISDVTVSY------ A35181 -----------------MDVFSFGQGNNTTASQEPFGTGG--NVTSISDVTFSY------ L06803 MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFINGS A47174 MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFINGS X95604 ------------------MEGAEGQEELDWEALYLRLPLQ-NCSWNSTGWEPNW------ M13299 --------------------------MRKMSEEEFYLFKN-----ISSVGPWDG------ L11864 ------------------------MKQVPEFHEDFYIPIPLDINNLSAYSPFLV------ M92038 --------------------------MNGTEGINFYVPMS--NKTGVVRSPFEY------ A45229 --------------------------MNGTEGKNFYVPMS--NRTGLVRSPFEY------ B45229 --------------------------MNGTEGNNFYVPLS--NRTGLVRSPFEY------ M63632 --------------------------MNGTEGDNFYVPFS--NKTGLARSPYEY------ U22180 --------------------------MNGTEGPNFYVPFS--NITGVVRSPFEQ------ S75720 -----------------------------------MSSNSSQAPPNGTPGPFDG------ M92036 -------------MTEAWNVAVFAARRSRDDDDTTRGSVFTYTNTNNTRGPFEG------ M62903 ---------------MAAWEAAFAARRRHEEEDTTRDSVFTYTNSNNTRGPFEG------ K03494 ------------MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYTNSNSTRGPFEG------ Z68193 ------------MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYTNSNSTRGPFEG------ M17730 ----------MEPLCNASEPPLRPEARSSGNGDLQFLGWN-VPPDQIQYIPEHW------ X65880 ---------MDALCNASEPPLRPEARMSSGSDELQFLGWN-VPPDQIQYIPEHW------ M17718 ------MESGNVSSSLFGNVSTALRPEARLSAETRLLGWN-VPPEELRHIPEHW------ X65879 -------MEYHNVSSVLGNVSSVLRPDARLSAESRLLGWN-VPPDELRHIPEHW------ X07797 ---------------------------MVESTTLVNQTWWYNPTVD---IHPHW------ X70498 ----------------------------MGRDLRDNETWWYNPSIVVH---PHW------ D50584 -----------MTNATGPQMAYYGAASMDFGYPEGVSIVDFVRPEIKPYVHQHW------ D50583 -----------MANVTGPQMAFYGSGAATFGYPEGMTVADFVPDRVKHMVLDHW------ L03781 ------------------MANQLSYSSLGWPYQPNASVVDTMPKEMLYMIHEHW------ U26026 ------------MIAVSGPSYEAFSYGGQARFNNQTVVDK-VPPDMLHLIDANW------ X65877 ---------------MDSFAAVATQLGPQFAAPSNGSVVDKVTPDMAHLISPYW------ K02320 ---------------MESFAVAAAQLGPHFAPLSNGSVVDKVTPDMAHLISPYW------ K02315 ---------------MESFAVAAAQLGPHFAPLSNGSVVDKVTPDMAHLISPYW------ M12896 --------MERSHLPETPFDLAHSGPRFQAQSSGNGSVLDNVLPDMAHLVNPYW------ X65878 -------MERSLLPEPPLAMALLGPRFEAQTGGNRSVLDN-VLPDMAPLVNPHW------ L21195 EVTASPAPT---------------WDAPPDNASGCGEQINYGRVEKVVIGSILTLITLLT L15228 EVTASPAPT---------------WDAPPDNVSGCGEQINYGRVEKVVIGSILTLITLLT A47425 EVTASPAPT---------------WDAPPDNVSGCGEQINYGRVEKVVIGSILTLITLLT M83181 ---------------------------------------------QVITSLLLGTLIFCA A35181 ---------------------------------------------QVITSLLLGTLIFCA L06803 HSSRSRDNASANDTSATNMTDDRYW-----------SLTVYSHEHLVLTSVILGLFVLCC A47174 HSSRSRDNASANDTSATNMTDDRYW-----------SLTVYSHEHLVLTSVILGLFVLCC X95604 NVTVVPNTT---------------W-----WQASAPFDTPAALVRAAAKAVVLGLLILAT M13299 PQY-HIAPV---------------W-------------------AFYLQAAFMGTVFLIG L11864 PQDHLGNQG---------------I--------------------FMAMSVFMFFIFIGG M92038 PQYYLAEP----------------W-------------------KYRLVCCYIFFLISTG A45229 PQYYLAEP----------------W-------------------QFKILALYLFFLMSMG B45229 PQYYLAEP----------------W-------------------QFKLLAVYMFFLICLG M63632 PQYYLAEP----------------W-------------------KYSALAAYMFFLILVG U22180 PQYYLAEP----------------W-------------------QFSMLAAYMFLLIVLG S75720 PQWPYQAPQ---------------S-------------------TYVGVAVLMGTVVACA M92036 PNY-HIAPR---------------W-------------------VYNLVSFFMIIVVIAS M62903 PNY-HIAPR---------------W-------------------VYNLTSVWMIFVVAAS K03494 PNY-HIAPR---------------W-------------------VYHLTSVWMIFVVIAS Z68193 PNY-HIAPR---------------W-------------------VYHLTSVWMIFVVTAS M17730 LTQLEPPAS---------------M--------------------HYMLGVFYIFLFCAS X65880 LTQLEPPAS---------------M--------------------HYMLGVFYIFLFFAS M17718 LTYPEPPES---------------M--------------------NYLLGTLYIFFTLMS X65879 LIYPEPPES---------------M--------------------NYLLGTLYIFFTVIS X07797 AKFDPIPDA---------------V--------------------YYSVGIFIGVVGIIG X70498 REFDQVPDA---------------V--------------------YYSLGIFIGICGIIG D50584 YNYPPVNPM---------------W--------------------HYLLGVIYLFLGTVS D50583 YNYPPVNPM---------------W--------------------HYLLGVVYLFLGVIS L03781 YAFPPMNPL---------------W--------------------YSILGVAMIILGIIC U26026 YQYPPLNPM---------------W--------------------HGILGFVIGMLGFVS X65877 DQFPAMDPI---------------W--------------------AKILTAYMIIIGMIS K02320 NQFPAMDPI---------------W--------------------AKILTAYMIMIGMIS K02315 NQFPAMDPI---------------W--------------------AKILTAYMIMIGMIS M12896 SRFAPMDPM---------------M--------------------SKILGLFTLAIMIIS X65878 SRFAPMDPT---------------M--------------------SKILGLFTLVILIIS L21195 IAGNCLVVISVCFVKKLRQPSNYLIVSLALADLSV-AVAVMPFVSVTDLIGGKWI--FGH L15228 IAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSV-AVAVMPFVSVTDLIGGKWI--FGH A47425 IAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSV-AVAVMPFVSVTDLIGGKWI--FGH M83181 VLGNACVVAAIALERSLQNVANYLIGSLAVTDLMV-SVLVLPMAALYQVL-NKWT--LGQ A35181 VLGNACVVAAIALERSLQNVANYLIGSLAVTDLMV-SVLVLPMAALYQVL-NKWT--LGQ L06803 IIGNCFVIAAVMLERSLHNVANYLILSLAVADLMV-AVLVMPLSVVSEIS-KVWF--LHS A47174 IIGNCFVIAAVMLERSLHNVANYLILSLAVADLMV-AVLVMPLSVVSEIS-KVWF--LHS X95604 VVGNVFVIAAILLERHLRSAANNLILSLAVADLLV-ACLVMPLGAVYEVV-QRWT--LGP M13299 FPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCIFSVFPVFVASCN--GYFV--FGR L11864 ASINILTILCTIQFKKLRSHLNYILVNLSIANLFV-AIFGSPLSFYSFFN-RYFI--FGA M92038 LPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFM-ACFGFTVTFYTAWN-GYFV--FGP A45229 LPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIM-VCFGFTVTFYTAIN-GYFV--LGP B45229 LPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIM-VCFGFTVTFYTAIN-GYFA--LGP M63632 FPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFM-VLFGFTVTMYTSMN-GYFV--FGP U22180 FPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFM-VFGGFTTTLYTSLH-GYFV--FGP S75720 SVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLV-TLCGSSVSLSNNIN-GFFV--FGR M92036 CFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVE-TLVASTISVFNQIF-GYFI--LGH M62903 VFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGE-TVIASTISVINQIS-GYFI--LGH K03494 VFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAE-TVIASTISVVNQVY-GYFV--LGH Z68193 VFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAE-TVIASTISIVNQVS-GYFV--LGH M17730 TVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIM--CLKAPIF--NSFH-RGFAIYLGN X65880 TLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIM--CLKAPIFIYNSFH-RGFA--LGN M17718 MLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMM--MVKTPIFIYNSFH-QGYA--LGH X65879 MIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMM--MIKTPIFIYNSFH-QGYA--LGH X07797 ILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGFPLKTISAFM-KKWI--FGK X70498 CGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGFPLMTISCFL-KKWI--FGF D50584 IFGNGLVIYLFNKSAALRTPANILVVNLALSDLIM-LTTNVPFFTYNCFSGGVWM--FSP D50583 IAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIM-LTTNFPPFCYNCFSGGRWM--FSG L03781 VLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCM-MAFMMPTMTSNCFA-ETWI--LGP U26026 AMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLM-MFCMSPPMVINCYY-ETWV--LGP X65877 WCGNGVVIYIFATTKSLRTPANLLVINLAISDFGI-MITNTPMMGINLYF-ETWV--LGP K02320 WCGNGVVIYIFATTKSLRTPANLLVINLAISDFGI-MITNTPMMGINLYF-ETWV--LGP K02315 WCGNGVVIYIFATTKSLRTPANLLVINLAISDFGI-MITNTPMMGINLYF-ETWV--LGP M12896 CCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCM-MASQSPVMIINFYY-ETWV--LGP X65878 CCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCM-MASQSPVMIINFYY-ETWV--LGP * .: *. * :: .::. . . : : L21195 FFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSAS L15228 FFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSAS A47425 FFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSAS M83181 VTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISLTWLIGFL A35181 VTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISLTWLIGFL L06803 EVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMVVWIVALF A47174 EVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMVVWIVALF X95604 ELCDMWTSGDVLCCTASILHLVAIALDRYWAVTN-IDYIHASTAKRVGMMIACVWTVSFF M13299 HVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-FRFSSKHALTVVLATWTIGIG L11864 TACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-FTFKTPHAIAGCILPWISALA M92038 VGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-FRFSATHAMMGIAFTWVMAFS A45229 TGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSSHAFAGIAFTWVMALA B45229 TGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSTHASAGIAFTWVMAMA M63632 TMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-FRFGNTHAIMGVAFTWIMALA U22180 TGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-FRFGENHAIMGVAFTWVMALA S75720 RMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-FQFQRRHAVSGCAFTWGWALL M92036 PLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-IKFDSKLAIIGIVFSWVWAWG M62903 PMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-IKFDGKLAVAGILFSWLWSCA K03494 PMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-VRFDAKLAIVGIAFSWIWAAV Z68193 PMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VRFDAKLAIVGIAFSWIWSAV M17730 TWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMN--RNMTFTKAVIMNIIIWLYCTP X65880 TWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMN--RNMTFTKAVIMNIIIWLYCTP M17718 LGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMIIFIYMYATP X65879 LGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMIIFIYLYATP X07797 VACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASKKMSHRRAFLMIIFVWMWSIV X70498 AACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMIIFVWLWSVL D50584 QYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-PKLTTGKAVVFALISWVIAIG D50583 TYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-PKLTQGKATFMCGLAWVISVG L03781 FMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-APLTHKKATLLLLFVWIWSGG U26026 LFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-KPLSINGALIRIIAIWLFSLG X65877 MMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAYIWFMSTI K02320 MMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPM------------------ K02315 MMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAYIWFMSSI M12896 LWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKILFIWMMAVF X65878 LWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKIAFIWMMAVF * : : :*: : : L21195 I-TLPPLFG-W-----AQNVNDDK-VCLISQDF----------GYTIYSTAVAFYIPMSV L15228 I-TLPPLFG-W-----AQNVNDDK-VCLISQDF----------GYTIYSTAVAFYIPMSV A47425 I-TLPPLFG-W-----AQNVNDDK-VCLISQDF----------GYTIYSTAVAFYIPMSV M83181 I-SIPPMLG-WRTPE-DRSDPDA---CTISKDH----------GYTIYSTFGAFYIPLLL A35181 I-SIPPMLG-WRTPE-DRSDPDA---CTISKDH----------GYTIYSTFGAFYIPLLL L06803 I-SIPPLFG-WRD---PNNDPDKTGTCIISQDK----------GYTIFSTVGAFYLPMLV A47174 I-SIPPLFG-WRD---PNNDPDKTGTCIISQDK----------GYTIFSTVGAFYLPMLV X95604 V-CIAQLLG-WKDPDWNQRVSEDL-RCVVSQDV----------GYQIFATASSFYVPVLI M13299 V-SIPPFFG-W-----SRFIPEGL-QCSCGPDWYTVGTKYRSESYTWFLFIFCFIVPLSL L11864 A-SLPPLFG-W-----SRYIPEGL-QCSCGPDWYTTNNKYNNESYVMFLFCFCFAVPFGT M92038 C-AAPPLFG-W-----SRYMPEGM-QCSCGPDYYTHNPDYHNESYVLYMFVIHFIIPVVV A45229 C-AAPPLFG-W-----SRYIPEGM-QCSCGPDYYTLNPDYNNESYVIYMFVCHFILPVAV B45229 C-AAPPLVG-W-----SRYIPEGI-QCSCGPDYYTLNPEYNNESYVLYMFICHFILPVTI M63632 C-AAPPLVG-W-----SRYIPEGM-QCSCGPDYYTLNPNFNNESYVVYMFVVHFLVPFVI U22180 C-AAPPLVG-W-----SRYIPEGM-QCSCGIDYYTLKPEVNNESFVIYMFVVHFTIPMIV S75720 W-SAPPLLG-W-----SSYVPEGL-RTSCGPNWYT--GGSNNNSYILSLFVTCFVLPLSL M92036 W-SAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSVELGCQSFMLTLMITCCFLPLFI M62903 W-TAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSSDPGVQSYMVVLMVTCCFFPLAI K03494 W-TAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSSYPGVQSYMIVLMVTCCITPLSI Z68193 W-TAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSSYPGVQSYMIVLMVTCCIIPLAI M17730 W-VVLPLTQFW-----DRFVPEGY-LTSCSFDYLS--DNFDTRLFVGTIFFFSFVCPTLM X65880 W-VVLPLTQFW-----DRFVPEGY-LTSCSFDYLS--DNFDTRLFVGTIFLFSFVVPTLM M17718 W-VVACYTETW-----GRFVPEGY-LTSCTFDYLT--DNFDTRLFVACIFFFSFVCPTTM X65879 W-VVACYTESW-----GRFVPEGY-LTSCTFDYLT--DNFDTRLFVACIFFFSFVCPTTM X07797 W-SVGPVFN-W-----GAYVPEGI-LTSCSFDYLS--TDPSTRSFILCMYFCGFMLPIII X70498 W-AIGPIFG-W-----GAYTLEGV-LCNCSFDYIS--RDSTTRSNILCMFILGFFGPILI D50584 C-ALPPFFG-W-----GNYILEGI-LDSCSYDYLT--QDFNTFSYNIFIFVFDYFLPAAI D50583 W-SLPPFFG-W-----GSYTLEGI-LDSCSYDYFT--RDMNTITYNICIFIFDFFLPASV L03781 W-TILPFFG-W-----SRYVPEGN-LTSCTVDYLT--KDWSSASYVVIYGLAVYFLPLIT U26026 W-TIAPMFG-W-----NRYVPEGN-MTACGTDYFN--RGLLSASYLVCYGIWVYFVPLFL X65877 WCCLAPVFG-W-----SRYVPEGN-LTSCGIDYLE--RDWNPRSYLIFYSIFVYYIPLFL K02320 --TIPLALG-------KMYVPEGN-LTSCGIDYLE--RDWNPRSYLIFYSIFVYYIPLFL K02315 W-CLAPAFG-W-----SRYVPEGN-LTSCGIDYLE--RDWNPRSYLIFYSIFVYYIPLFL M12896 W-TVMPLIG-W-----SAYVPEGN-LTACSIDYMT--RMWNPRSYLITYSLFVYYTPLFL X65878 W-TIMPLIG-W-----SSYVPEGN-LTACSIDYMT--RQWNPRSYLITYSLFVYYTPLFM : * L21195 MLFMYYQIYKAARKSAAK------HKFPGFPRVEPDSV-----IALNGIVKLQKEVEECA L15228 MLFMYYQIYKAARKSAAK------HKFPGFPRVQPESV-----ISLNGVVKLQKEVEECA A47425 MLFMYYQIYKAARKSAAK------HKFPGFPRVQPESV-----ISLNGVVKLQKEVEECA M83181 MLVLYGRIFRAARFRIRKTVKKVEKTGADTRHGASPAPQPKKSVNGESGSRNWRLGVESK A35181 MLVLYGRIFRAARFRIRKTVRKVEKKGAGTSLGTSSAPPPKKSLNGQPGSGDWRRCAENR L06803 MMIIYIRIWLVARSRIRK------DKFQMTKARLKTEET----TLVASPKTEYSVVSDCN A47174 MMIIYIRIWLVARSRIRK------DKFQMTKARLKTEET----TLVASPKTEYSVVSDCN X95604 ILILYWRIYQTARKRIRR------RRGATARGGVGPPPVPAGGALVAGGGSGGIAAAVVA M13299 ICFSYTQLLRALKAVAAQ------QQESATTQ---------------------------- L11864 IVFCYGQLLITLKLAAKA------QADSASTQ---------------------------- M92038 IFFSYGRLICKVREAAAQ------QQESATTQ---------------------------- A45229 IFFTYGRLVCTVKAAAAQ------QQDSASTQ---------------------------- B45229 IFFTYGRLVCTVKAAAAQ------QQDSASTQ---------------------------- M63632 IFFCYGRLLCTVKEAAAA------QQESASTQ---------------------------- U22180 IFFCYGQLVFTVKEAAAQ------QQESATTQ---------------------------- S75720 ILFSYTNLLLTLRAAAAQ------QKEADTTQ---------------------------- M92036 IIVCYLQVWMAIRAVAAQ------QKESESTQ---------------------------- M62903 IILCYLQVWLAIRAVAAQ------QKESESTQ---------------------------- K03494 IVLCYLQVWLAIRAVAKQ------QKESESTQ---------------------------- Z68193 IMLCYLQVWLAIRAVAKQ------QKESESTQ---------------------------- M17730 ILYYYSQIVGHVFSHEKA------LREQAKKMNVESLR---------------------- X65880 ILYYYSQIVGHVFNHEKA------LREQAKKMNVESLR---------------------- M17718 ITYYYSQIVGHVFSHEKA------LRDQAKKMNVESLR---------------------- X65879 ITYYYSQIVGHVFSHEKA------LRDQAKKMNVDSLR---------------------- X07797 IAFCYFNIVMSVSNHEKE------MAAMAKRLNAKELR---------------------- X70498 IFFCYFNIVMSVSNHEKE------MAAMAKRLNAKELR---------------------- D50584 IVFSYVFIVKAIFAHEAA------MRAQAKKMNVSTLR---------------------- D50583 IVFSYVFIVKAIFAHEAA------MRAQAKKMNVTNLR---------------------- L03781 MIYCYFFIVHAVAEHEKQ------LREQAKKMNVASLR---------------------- U26026 IIYSYWFIIQAVAAHEKN------MREQAKKMNVASLR---------------------- X65877 ICYSYWFIIAAVSAHEKA------MREQAKKMNVKSLR---------------------- K02320 ICYSYWFIIAAVSAHEKA------MREQAKKMNVKSLR---------------------- K02315 ICYSYWFIIAAVSAHEKA------MREQAKKMNVKSLR---------------------- M12896 ICYSYWFIIAAVAAHEKA------MREQAKKMNVKSLR---------------------- X65878 ICYSYWFIIATVAAHEKA------MRDQAKKMNVKSLR---------------------- : * : L21195 NLSRLLKH---------------------------------------------------- L15228 NLSRLLKH---------------------------------------------------- A47425 NLSRLLKH---------------------------------------------------- M83181 AGGAL--CANGAVRQGDDGAALEVIEVHRVGNSKEHLPLPSEAGPTPCAPAS-------- A35181 AVGTP--CTNGAVRQGDDEATLEVIEVHRVGNSKEHLPLPSESGSNSYAPAC-------- L06803 GCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLP-ENANGVNSNSSSSERLKQIQI A47174 GCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLP-ENANGVNSNSSSSERLKQIQI X95604 VIGRPLPTISETTTTGFTNVSSNNTSPEKQ---------SCANGLEADPPTT-------- M13299 ------------------------------------------------------------ L11864 ------------------------------------------------------------ M92038 ------------------------------------------------------------ A45229 ------------------------------------------------------------ B45229 ------------------------------------------------------------ M63632 ------------------------------------------------------------ U22180 ------------------------------------------------------------ S75720 ------------------------------------------------------------ M92036 ------------------------------------------------------------ M62903 ------------------------------------------------------------ K03494 ------------------------------------------------------------ Z68193 ------------------------------------------------------------ M17730 ------------------------------------------------------------ X65880 ------------------------------------------------------------ M17718 ------------------------------------------------------------ X65879 ------------------------------------------------------------ X07797 ------------------------------------------------------------ X70498 ------------------------------------------------------------ D50584 ------------------------------------------------------------ D50583 ------------------------------------------------------------ L03781 ------------------------------------------------------------ U26026 ------------------------------------------------------------ X65877 ------------------------------------------------------------ K02320 ------------------------------------------------------------ K02315 ------------------------------------------------------------ M12896 ------------------------------------------------------------ X65878 ------------------------------------------------------------ L21195 -------------------------------------ERKNISIFKREQKAATTLGIIVG L15228 -------------------------------------ERKNISIFKREQKAATTLGIIVG A47425 -------------------------------------ERKNISIFKREQKAATTLGIIVG M83181 ------------------FERK----------NERNAEAKRKMALARERKTVKTLGIIMG A35181 ------------------LERK----------NERNAEAKRKMALARERKTVKTLGIIMG L06803 ETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREKLELKRERKAARTLAIITG A47174 ETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREKLELKRERKAARTLAIITG X95604 ------GYGAVAAAYYPSLVRR---------------KPKEAADSKRERKAAKTLAIITG M13299 ---------------------------------------------KAEREVSRMVVVMVG L11864 ---------------------------------------------KAEREVTKMVVVMVL M92038 ---------------------------------------------KAEKEVTRMVILMVL A45229 ---------------------------------------------KAEREVTKMVILMVF B45229 ---------------------------------------------KAEREVTKMVILMVL M63632 ---------------------------------------------KAEKEVTRMVVLMVI U22180 ---------------------------------------------KAEKEVTRMVIIMVI S75720 ---------------------------------------------RAEREVTRMVIVMVM M92036 ---------------------------------------------KAEREVSRMVVVMIV M62903 ---------------------------------------------KAEKEVSRMVVVMIV K03494 ---------------------------------------------KAEKEVTRMVVVMVL Z68193 ---------------------------------------------KAEKEVTRMVVVMIF M17730 -------------------------------------SNVDKSKETAEIRIAKAAITICF X65880 -------------------------------------SNVDKSKETAEIRIAKAAITICF M17718 -------------------------------------SNVDKNKETAEIRIAKAAITICF X65879 -------------------------------------SNVDKSKEAAEIRIAKAAITICF X07797 ---------------------------------------KAQAGASAEMKLAKISMVIIT X70498 ---------------------------------------KAQAGANAEMRLAKISIVIVS D50584 --------------------------------------SNEADAQRAEIRIAKTALVNVS D50583 --------------------------------------SNEAETQRAEIRIAKTALVNVS L03781 -------------------------------------ANADQQKQSAECRLAKVAMMTVG U26026 --------------------------------------SSENQNTSAECKLAKVALMTIS X65877 --------------------------------------SSEDADKSAEGKLAKVALVTIS K02320 --------------------------------------SSEDAEKSAEGKLAKVALVTIT K02315 --------------------------------------SSEDAEKSAEGKLAKVALVTIT M12896 --------------------------------------SSEDCDKSAEGKLAKVALTTIS X65878 --------------------------------------SSEDCDKSAENKLAKVALTTIS * L21195 AFTVCWLPFFLLSTARPFICGTSCSC-IPLWVERTFLWLGYANSLINPFIYAFFNRDLRT L15228 AFTVCWLPFFLLSTARPFICGTSCSC-IPLWVERTCLWLGYANSLINPFIYAFFNRDLRP A47425 AFTVCWLPFFLLSTARPFICGTSCSC-IPLWVERTCLWLGYANSLINPFIYAFFNRDLRT M83181 TFILCWLPFFIVALVLPF---CESSCHMPTLLGAIINWLGYSNSLLNPVIYAYFNKDFQN A35181 TFILCWLPFFIVALVLPF---CESSCHMPALLGAIINWLGYSNSLLNPVIYAYFNKDFQN L06803 AFLICWLPFFIIALIGPF---VDPEG-IPPFARSFVLWLGYFNSLLNPIIYTIFSPEFRS A47174 AFLICWLPFFIIALIGPF---VDPEG-IPPFARSFVLWLGYFNSLLNPIIYTIFSPEFRS X95604 AFVACWLPFFVLAILVPT---CDCE--VSPVLTSLSLWLGYFNSTLNPVIYTVFSPEFRH M13299 SFCVCYVPYAAFAMYMVN---NRNHG-LDLRLVTIPSFFSKSACIYNPIIYCFMNKQFQA L11864 GFLVCWAPYASFSLWIVS---HRGEE-FDLRMATIPSCLSKASTVYNPVIYVLMNKQFRS M92038 GFMLAWTPYAVVAFWIFT---NKGAD-FTATLMAVPAFFSKSSSLYNPIIYVLMNKQFRN A45229 GFLIAWTPYATVAAWIFF---NKGAD-FSAKFMAIPAFFSKSSALYNPVIYVLLNKQFRN B45229 GFLVAWTPYATVAAWIFF---NKGAA-FSAQFMAIPAFFSKTSALYNPVIYVLLNKQFRS M63632 GFLVCWVPYASVAFYIFT---HQGSD-FGATFMTLPAFFAKSSALYNPVIYILMNKQFRN U22180 FFLICWLPYASVAMYIFT---HQGSN-FGPIFMTLPAFFAKTASIYNPIIYIMMNKQFRN S75720 AFLLCWLPYSTFALVVAT---HKGII-IQPVLASLPSYFSKTATVYNPIIYVFMNKQFQS M92036 AFCICWGPYASFVSFAAA---NPGYA-FHPLAAALPAYFAKSATIYNPVIYVFMNRQFRN M62903 AYCFCWGPYTFFACFAAA---NPGYA-FHPLAAALPAYFAKSATIYNPIIYVFMNRQFRN K03494 AFCFCWGPYAFFACFAAA---NPGYP-FHPLMAALPAFFAKSATIYNPVIYVFMNRQFRN Z68193 AYCVCWGPYTFFACFAAA---NPGYA-FHPLMAALPAYFAKSATIYNPVIYVFMNRQFRN M17730 LFFVSWTPYGVMSLIGAF---GDKSL-LTQGATMIPACTCKLVACIDPFVYAISHPRYRL X65880 LFFVSWTPYGVMSLIGAF---GDKSL-LTPGATMIPACTCKLVACIEPFVYAISHPRYRM M17718 LFFCSWTPYGVMSLIGAF---GDKTL-LTPGATMIPACACKMVACIDPFVYAISHPRYRM X65879 LFFASWTPYGVMSLIGAF---GDKTL-LTPGATMIPACTCKMVACIDPFVYAISHPRYRM X07797 QFMLSWSPYAIIALLAQF---GPAEW-VTPYAAELPVLFAKASAIHNPIVYSVSHPKFRE X70498 QFLLSWSPYAVVALLAQF---GPLEW-VTPYAAQLPVMFAKASAIHNPMIYSVSHPKFRE D50584 LWFICWTPYALISLKGVM---GDTSG-ITPLVSTLPALLAKSCSCYNPFVYAISHPKYRL D50583 LWFICWTPYAAITIQGLL---GNAEG-ITPLLTTLPALLAKSCSCYNPFVYAISHPKFRL L03781 LWFMAWTPYLIISWAGVF---SSGTR-LTPLATIWGSVFAKANSCYNPIVYGISHPRYKA U26026 LWFMAWTPYLVINFSGIF----NLVK-ISPLFTIWGSLFAKANAVYNPIVYGISHPKYRA X65877 LWFMAWTPYLVINCMGLF----KFEG-LTPLNTIWGACFAKSAACYNPIVYGISHPKYRL K02320 LWFMAWTPYLVINCMGLF----KFEG-LTPLNTIWGACFAKSAACYNPIVYGISHPKYRL K02315 LWFMAWTPYLVINCMGLF----KFEG-LTPLNTIWGACFAKSAACYNPIVYGISHPKYRL M12896 LWFMAWTPYLVICYFGLF----KIDG-LTPLTTIWGATFAKTSAVYNPIVYGISHPKYRI X65878 LWFMAWTPYLIICYFGLF----KIDG-LTPLTTIWGATFAKTSAVYNPIVYGISHPNDRL : .: *: . . :*.:* . L21195 TYRSLLQC-QYRNINRKLSAAGMHEALKLAERPER------------------------- L15228 TSRSLLQC-QYRNINRKLSAAGMHEALKLAERPER------------------------- A47425 TYRSLLQC-QYRNINRKLSAAGMHEALKLAERPER------------------------- M83181 AFKKIIKC-KFCRQ---------------------------------------------- A35181 AFKKIIKC-KFCRR---------------------------------------------- L06803 AFQKILFG-KYRRGHR-------------------------------------------- A47174 AFQKILFG-KYRRGHR-------------------------------------------- X95604 AFQRLLCG-RRVRRRRAPQ----------------------------------------- M13299 CIMKMVCG-KAMTDESDTCSSQKTEVSTVSSTQ--------------------------- L11864 CMMKMVCG-KNIEEDEASTSSQVTQVSSVAPEK--------------------------- M92038 CMITTICC-GKNPFGDEDVSSTVSQSKTEVSSV--------------------------- A45229 CMLTTIFC-GKNPLGDDESSTVSTSKTEVSS----------------------------- B45229 CMLTTLFC-GKNPLGDEESSTVSTSKTEVSS----------------------------- M63632 CMITTLCC-GKNPLGDDESGASTSKTEVSSVST--------------------------- U22180 CMLTSLCC-GKNPLGDDEASATASKTETSQ------------------------------ S75720 CLLEMLCC-GYQPQRTGKASPGTPGPHADVTAA--------------------------- M92036 CIMQLFG--KKVDDGSEASTTSRTEVSSVSNSS--------------------------- M62903 CILQLF---GKKVDDGSEVSTSRTEVSSVSNSS--------------------------- K03494 CILQLFG--KKVDDGSELSSASKTEVSSVSS----------------------------- Z68193 CILQLF------GKKVDDGSELSSASKTEVSSV--------------------------- M17730 ELQKRCPWLGVNEKSGEISSAQSTTTQEQ-QQT--------------------------- X65880 ELQKRCPWLGVNEKSGEASSAQSTTTQEQTQQT--------------------------- M17718 ELQKRCPW-LALNEKAPESSAVASTSTTQEPQQ--------------------------- X65879 ELQKRCPW-LAISEKAPESRAAISTSTTQEQQQ--------------------------- X07797 AIQTTFPWLLTCCQFDEKECEDANDAEEEVVASER--GGESRDAAQMKEMMAMMQKMQAQ X70498 AISQTFPWVLTCCQFDDKETEDDKDAETEIPAGESSDAAPSADAAQMKEMMAMMQKMQQQ D50584 AITQHLPWFCVHETETKSNDDSQSNSTVAQDKA--------------------------- D50583 AITQHLPWFCVHEKDPNDVEENQSSNTQTQEKS--------------------------- L03781 ALYQRFPS-LACGSGESGSDVKSEASATTTMEE--------------------------- U26026 ALFAKFPS-LACAAEPSSDAVSTTSGTTTVTDN--------------------------- X65877 ALKEKCPC-CVFGKVDDGKSSEAQSQATTSEAE--------------------------- K02320 ALKEKCPC-CVFGKVDDGKSSDAQSQATASEAE--------------------------- K02315 ALKEKCPC-CVFGKVDDGKSSDAQSQATASEAE--------------------------- M12896 VLKEKCPM-CVFGNTDEPKPDAPASDTETTSEA--------------------------- X65878 VLKEKCPM-CVCGTTDEPKPDAPPSDTETTSEA--------------------------- L21195 -----PEFVLQNADYCRKKGHDS------------------------------------- L15228 -----SEFVLQNSDHCGKKGHDT------------------------------------- A47425 -----SEFVLQNSDHCGKKGHDT------------------------------------- M83181 ------------------------------------------------------------ A35181 ------------------------------------------------------------ L06803 ------------------------------------------------------------ A47174 ------------------------------------------------------------ X95604 ------------------------------------------------------------ M13299 -------------------VGPN------------------------------------- L11864 ------------------------------------------------------------ M92038 ---------------SSSQVSPA------------------------------------- A45229 -------------------VSPA------------------------------------- B45229 -------------------VSPA------------------------------------- M63632 -----------------SPVSPA------------------------------------- U22180 -------------------VAPA------------------------------------- S75720 --------------GLRNKVMPAHPV---------------------------------- M92036 -------------------VAPA------------------------------------- M62903 -------------------VSPA------------------------------------- K03494 -------------------VSPA------------------------------------- Z68193 -----------------SSVSPA------------------------------------- M17730 --------------------TAA------------------------------------- X65880 --------------------SAA------------------------------------- M17718 -------------------TTAA------------------------------------- X65879 -------------------TTAA------------------------------------- X07797 QAAYQP---PPPPQGYPPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGYPPQGAPPQVEAP X70498 QAAYPPQGYAPPPQGYPPQGYPPQGY--PPQGYPPQGYPP---PPQGAPPQGAPP----- D50584 ------------------------------------------------------------ D50583 ------------------------------------------------------------ L03781 ----------------KPKIPEA------------------------------------- U26026 ------------------EKSNA------------------------------------- X65877 --------------------SKA------------------------------------- K02320 --------------------SKA------------------------------------- K02315 --------------------SKA------------------------------------- M12896 -------------------DSKA------------------------------------- X65878 -------------------ESKD------------------------------------- L21195 --------------- L15228 --------------- A47425 --------------- M83181 --------------- A35181 --------------- L06803 --------------- A47174 --------------- X95604 --------------- M13299 --------------- L11864 --------------- M92038 --------------- A45229 --------------- B45229 --------------- M63632 --------------- U22180 --------------- S75720 --------------- M92036 --------------- M62903 --------------- K03494 --------------- Z68193 --------------- M17730 --------------- X65880 --------------- M17718 --------------- X65879 --------------- X07797 QGAPPQGVDNQAYQA X70498 -AAPPQGVDNQAYQA D50584 --------------- D50583 --------------- L03781 --------------- U26026 --------------- X65877 --------------- K02320 --------------- K02315 --------------- M12896 --------------- X65878 --------------- ALTER-1.3.4/alter-web/src/main/resources/muscle.fas000066400000000000000000000574501300536243200217710ustar00rootroot00000000000000>L21195 ----------MMDVNSSGRPDLYGHLRSFLLPEVGRGLPDLSPDGGADPVAGSWAPHLLS EVTASPAPT---------------WDAPPDNASGCGEQINYGRVEKVVIGSILTLITLLT IAGNCLVVISVCFVKKLRQPSNYLIVSLALADLSV-AVAVMPFVSVTDLIGGKWI--FGH FFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSAS I-TLPPLFG-W-----AQNVNDDK-VCLISQDF----------GYTIYSTAVAFYIPMSV MLFMYYQIYKAARKSAAK------HKFPGFPRVEPDSV-----IALNGIVKLQKEVEECA NLSRLLKH---------------------------------------------------- -------------------------------------ERKNISIFKREQKAATTLGIIVG AFTVCWLPFFLLSTARPFICGTSCSC-IPLWVERTFLWLGYANSLINPFIYAFFNRDLRT TYRSLLQC-QYRNINRKLSAAGMHEALKLAERPER------------------------- -----PEFVLQNADYCRKKGHDS------------------------------------- --------------- >L15228 ---------------------------------------------MPHLLSGFL------ EVTASPAPT---------------WDAPPDNVSGCGEQINYGRVEKVVIGSILTLITLLT IAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSV-AVAVMPFVSVTDLIGGKWI--FGH FFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSAS I-TLPPLFG-W-----AQNVNDDK-VCLISQDF----------GYTIYSTAVAFYIPMSV MLFMYYQIYKAARKSAAK------HKFPGFPRVQPESV-----ISLNGVVKLQKEVEECA NLSRLLKH---------------------------------------------------- -------------------------------------ERKNISIFKREQKAATTLGIIVG AFTVCWLPFFLLSTARPFICGTSCSC-IPLWVERTCLWLGYANSLINPFIYAFFNRDLRP TSRSLLQC-QYRNINRKLSAAGMHEALKLAERPER------------------------- -----SEFVLQNSDHCGKKGHDT------------------------------------- --------------- >A47425 ---------------------------------------------MPHLLSGFL------ EVTASPAPT---------------WDAPPDNVSGCGEQINYGRVEKVVIGSILTLITLLT IAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSV-AVAVMPFVSVTDLIGGKWI--FGH FFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSAS I-TLPPLFG-W-----AQNVNDDK-VCLISQDF----------GYTIYSTAVAFYIPMSV MLFMYYQIYKAARKSAAK------HKFPGFPRVQPESV-----ISLNGVVKLQKEVEECA NLSRLLKH---------------------------------------------------- -------------------------------------ERKNISIFKREQKAATTLGIIVG AFTVCWLPFFLLSTARPFICGTSCSC-IPLWVERTCLWLGYANSLINPFIYAFFNRDLRT TYRSLLQC-QYRNINRKLSAAGMHEALKLAERPER------------------------- -----SEFVLQNSDHCGKKGHDT------------------------------------- --------------- >M83181 -----------------MDVLSPGQGNNTTSPPAPFETGG--NTTGISDVTVSY------ ---------------------------------------------QVITSLLLGTLIFCA VLGNACVVAAIALERSLQNVANYLIGSLAVTDLMV-SVLVLPMAALYQVL-NKWT--LGQ VTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISLTWLIGFL I-SIPPMLG-WRTPE-DRSDPDA---CTISKDH----------GYTIYSTFGAFYIPLLL MLVLYGRIFRAARFRIRKTVKKVEKTGADTRHGASPAPQPKKSVNGESGSRNWRLGVESK AGGAL--CANGAVRQGDDGAALEVIEVHRVGNSKEHLPLPSEAGPTPCAPAS-------- ------------------FERK----------NERNAEAKRKMALARERKTVKTLGIIMG TFILCWLPFFIVALVLPF---CESSCHMPTLLGAIINWLGYSNSLLNPVIYAYFNKDFQN AFKKIIKC-KFCRQ---------------------------------------------- ------------------------------------------------------------ --------------- >A35181 -----------------MDVFSFGQGNNTTASQEPFGTGG--NVTSISDVTFSY------ ---------------------------------------------QVITSLLLGTLIFCA VLGNACVVAAIALERSLQNVANYLIGSLAVTDLMV-SVLVLPMAALYQVL-NKWT--LGQ VTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISLTWLIGFL I-SIPPMLG-WRTPE-DRSDPDA---CTISKDH----------GYTIYSTFGAFYIPLLL MLVLYGRIFRAARFRIRKTVRKVEKKGAGTSLGTSSAPPPKKSLNGQPGSGDWRRCAENR AVGTP--CTNGAVRQGDDEATLEVIEVHRVGNSKEHLPLPSESGSNSYAPAC-------- ------------------LERK----------NERNAEAKRKMALARERKTVKTLGIIMG TFILCWLPFFIVALVLPF---CESSCHMPALLGAIINWLGYSNSLLNPVIYAYFNKDFQN AFKKIIKC-KFCRR---------------------------------------------- ------------------------------------------------------------ --------------- >L06803 MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFINGS HSSRSRDNASANDTSATNMTDDRYW-----------SLTVYSHEHLVLTSVILGLFVLCC IIGNCFVIAAVMLERSLHNVANYLILSLAVADLMV-AVLVMPLSVVSEIS-KVWF--LHS EVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMVVWIVALF I-SIPPLFG-WRD---PNNDPDKTGTCIISQDK----------GYTIFSTVGAFYLPMLV MMIIYIRIWLVARSRIRK------DKFQMTKARLKTEET----TLVASPKTEYSVVSDCN GCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLP-ENANGVNSNSSSSERLKQIQI ETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREKLELKRERKAARTLAIITG AFLICWLPFFIIALIGPF---VDPEG-IPPFARSFVLWLGYFNSLLNPIIYTIFSPEFRS AFQKILFG-KYRRGHR-------------------------------------------- ------------------------------------------------------------ --------------- >A47174 MANFTFGDLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFINGS HSSRSRDNASANDTSATNMTDDRYW-----------SLTVYSHEHLVLTSVILGLFVLCC IIGNCFVIAAVMLERSLHNVANYLILSLAVADLMV-AVLVMPLSVVSEIS-KVWF--LHS EVCDMWISVDVLCCTASILHLVAIAMDRYWAVTS-IDYIRRRSARRILLMIMVVWIVALF I-SIPPLFG-WRD---PNNDPDKTGTCIISQDK----------GYTIFSTVGAFYLPMLV MMIIYIRIWLVARSRIRK------DKFQMTKARLKTEET----TLVASPKTEYSVVSDCN GCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLP-ENANGVNSNSSSSERLKQIQI ETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREKLELKRERKAARTLAIITG AFLICWLPFFIIALIGPF---VDPEG-IPPFARSFVLWLGYFNSLLNPIIYTIFSPEFRS AFQKILFG-KYRRGHR-------------------------------------------- ------------------------------------------------------------ --------------- >X95604 ------------------MEGAEGQEELDWEALYLRLPLQ-NCSWNSTGWEPNW------ NVTVVPNTT---------------W-----WQASAPFDTPAALVRAAAKAVVLGLLILAT VVGNVFVIAAILLERHLRSAANNLILSLAVADLLV-ACLVMPLGAVYEVV-QRWT--LGP ELCDMWTSGDVLCCTASILHLVAIALDRYWAVTN-IDYIHASTAKRVGMMIACVWTVSFF V-CIAQLLG-WKDPDWNQRVSEDL-RCVVSQDV----------GYQIFATASSFYVPVLI ILILYWRIYQTARKRIRR------RRGATARGGVGPPPVPAGGALVAGGGSGGIAAAVVA VIGRPLPTISETTTTGFTNVSSNNTSPEKQ---------SCANGLEADPPTT-------- ------GYGAVAAAYYPSLVRR---------------KPKEAADSKRERKAAKTLAIITG AFVACWLPFFVLAILVPT---CDCE--VSPVLTSLSLWLGYFNSTLNPVIYTVFSPEFRH AFQRLLCG-RRVRRRRAPQ----------------------------------------- ------------------------------------------------------------ --------------- >M13299 --------------------------MRKMSEEEFYLFKN-----ISSVGPWDG------ PQY-HIAPV---------------W-------------------AFYLQAAFMGTVFLIG FPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCIFSVFPVFVASCN--GYFV--FGR HVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-FRFSSKHALTVVLATWTIGIG V-SIPPFFG-W-----SRFIPEGL-QCSCGPDWYTVGTKYRSESYTWFLFIFCFIVPLSL ICFSYTQLLRALKAVAAQ------QQESATTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEREVSRMVVVMVG SFCVCYVPYAAFAMYMVN---NRNHG-LDLRLVTIPSFFSKSACIYNPIIYCFMNKQFQA CIMKMVCG-KAMTDESDTCSSQKTEVSTVSSTQ--------------------------- -------------------VGPN------------------------------------- --------------- >L11864 ------------------------MKQVPEFHEDFYIPIPLDINNLSAYSPFLV------ PQDHLGNQG---------------I--------------------FMAMSVFMFFIFIGG ASINILTILCTIQFKKLRSHLNYILVNLSIANLFV-AIFGSPLSFYSFFN-RYFI--FGA TACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-FTFKTPHAIAGCILPWISALA A-SLPPLFG-W-----SRYIPEGL-QCSCGPDWYTTNNKYNNESYVMFLFCFCFAVPFGT IVFCYGQLLITLKLAAKA------QADSASTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEREVTKMVVVMVL GFLVCWAPYASFSLWIVS---HRGEE-FDLRMATIPSCLSKASTVYNPVIYVLMNKQFRS CMMKMVCG-KNIEEDEASTSSQVTQVSSVAPEK--------------------------- ------------------------------------------------------------ --------------- >M92038 --------------------------MNGTEGINFYVPMS--NKTGVVRSPFEY------ PQYYLAEP----------------W-------------------KYRLVCCYIFFLISTG LPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFM-ACFGFTVTFYTAWN-GYFV--FGP VGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-FRFSATHAMMGIAFTWVMAFS C-AAPPLFG-W-----SRYMPEGM-QCSCGPDYYTHNPDYHNESYVLYMFVIHFIIPVVV IFFSYGRLICKVREAAAQ------QQESATTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEKEVTRMVILMVL GFMLAWTPYAVVAFWIFT---NKGAD-FTATLMAVPAFFSKSSSLYNPIIYVLMNKQFRN CMITTICC-GKNPFGDEDVSSTVSQSKTEVSSV--------------------------- ---------------SSSQVSPA------------------------------------- --------------- >A45229 --------------------------MNGTEGKNFYVPMS--NRTGLVRSPFEY------ PQYYLAEP----------------W-------------------QFKILALYLFFLMSMG LPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIM-VCFGFTVTFYTAIN-GYFV--LGP TGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSSHAFAGIAFTWVMALA C-AAPPLFG-W-----SRYIPEGM-QCSCGPDYYTLNPDYNNESYVIYMFVCHFILPVAV IFFTYGRLVCTVKAAAAQ------QQDSASTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEREVTKMVILMVF GFLIAWTPYATVAAWIFF---NKGAD-FSAKFMAIPAFFSKSSALYNPVIYVLLNKQFRN CMLTTIFC-GKNPLGDDESSTVSTSKTEVSS----------------------------- -------------------VSPA------------------------------------- --------------- >B45229 --------------------------MNGTEGNNFYVPLS--NRTGLVRSPFEY------ PQYYLAEP----------------W-------------------QFKLLAVYMFFLICLG LPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIM-VCFGFTVTFYTAIN-GYFA--LGP TGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSTHASAGIAFTWVMAMA C-AAPPLVG-W-----SRYIPEGI-QCSCGPDYYTLNPEYNNESYVLYMFICHFILPVTI IFFTYGRLVCTVKAAAAQ------QQDSASTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEREVTKMVILMVL GFLVAWTPYATVAAWIFF---NKGAA-FSAQFMAIPAFFSKTSALYNPVIYVLLNKQFRS CMLTTLFC-GKNPLGDEESSTVSTSKTEVSS----------------------------- -------------------VSPA------------------------------------- --------------- >M63632 --------------------------MNGTEGDNFYVPFS--NKTGLARSPYEY------ PQYYLAEP----------------W-------------------KYSALAAYMFFLILVG FPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFM-VLFGFTVTMYTSMN-GYFV--FGP TMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-FRFGNTHAIMGVAFTWIMALA C-AAPPLVG-W-----SRYIPEGM-QCSCGPDYYTLNPNFNNESYVVYMFVVHFLVPFVI IFFCYGRLLCTVKEAAAA------QQESASTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEKEVTRMVVLMVI GFLVCWVPYASVAFYIFT---HQGSD-FGATFMTLPAFFAKSSALYNPVIYILMNKQFRN CMITTLCC-GKNPLGDDESGASTSKTEVSSVST--------------------------- -----------------SPVSPA------------------------------------- --------------- >U22180 --------------------------MNGTEGPNFYVPFS--NITGVVRSPFEQ------ PQYYLAEP----------------W-------------------QFSMLAAYMFLLIVLG FPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFM-VFGGFTTTLYTSLH-GYFV--FGP TGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-FRFGENHAIMGVAFTWVMALA C-AAPPLVG-W-----SRYIPEGM-QCSCGIDYYTLKPEVNNESFVIYMFVVHFTIPMIV IFFCYGQLVFTVKEAAAQ------QQESATTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEKEVTRMVIIMVI FFLICWLPYASVAMYIFT---HQGSN-FGPIFMTLPAFFAKTASIYNPIIYIMMNKQFRN CMLTSLCC-GKNPLGDDEASATASKTETSQ------------------------------ -------------------VAPA------------------------------------- --------------- >S75720 -----------------------------------MSSNSSQAPPNGTPGPFDG------ PQWPYQAPQ---------------S-------------------TYVGVAVLMGTVVACA SVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLV-TLCGSSVSLSNNIN-GFFV--FGR RMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-FQFQRRHAVSGCAFTWGWALL W-SAPPLLG-W-----SSYVPEGL-RTSCGPNWYT--GGSNNNSYILSLFVTCFVLPLSL ILFSYTNLLLTLRAAAAQ------QKEADTTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------RAEREVTRMVIVMVM AFLLCWLPYSTFALVVAT---HKGII-IQPVLASLPSYFSKTATVYNPIIYVFMNKQFQS CLLEMLCC-GYQPQRTGKASPGTPGPHADVTAA--------------------------- --------------GLRNKVMPAHPV---------------------------------- --------------- >M92036 -------------MTEAWNVAVFAARRSRDDDDTTRGSVFTYTNTNNTRGPFEG------ PNY-HIAPR---------------W-------------------VYNLVSFFMIIVVIAS CFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVE-TLVASTISVFNQIF-GYFI--LGH PLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-IKFDSKLAIIGIVFSWVWAWG W-SAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSVELGCQSFMLTLMITCCFLPLFI IIVCYLQVWMAIRAVAAQ------QKESESTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEREVSRMVVVMIV AFCICWGPYASFVSFAAA---NPGYA-FHPLAAALPAYFAKSATIYNPVIYVFMNRQFRN CIMQLFG--KKVDDGSEASTTSRTEVSSVSNSS--------------------------- -------------------VAPA------------------------------------- --------------- >M62903 ---------------MAAWEAAFAARRRHEEEDTTRDSVFTYTNSNNTRGPFEG------ PNY-HIAPR---------------W-------------------VYNLTSVWMIFVVAAS VFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGE-TVIASTISVINQIS-GYFI--LGH PMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-IKFDGKLAVAGILFSWLWSCA W-TAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSSDPGVQSYMVVLMVTCCFFPLAI IILCYLQVWLAIRAVAAQ------QKESESTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEKEVSRMVVVMIV AYCFCWGPYTFFACFAAA---NPGYA-FHPLAAALPAYFAKSATIYNPIIYVFMNRQFRN CILQLF---GKKVDDGSEVSTSRTEVSSVSNSS--------------------------- -------------------VSPA------------------------------------- --------------- >K03494 ------------MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYTNSNSTRGPFEG------ PNY-HIAPR---------------W-------------------VYHLTSVWMIFVVIAS VFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAE-TVIASTISVVNQVY-GYFV--LGH PMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-VRFDAKLAIVGIAFSWIWAAV W-TAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSSYPGVQSYMIVLMVTCCITPLSI IVLCYLQVWLAIRAVAKQ------QKESESTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEKEVTRMVVVMVL AFCFCWGPYAFFACFAAA---NPGYP-FHPLMAALPAFFAKSATIYNPVIYVFMNRQFRN CILQLFG--KKVDDGSELSSASKTEVSSVSS----------------------------- -------------------VSPA------------------------------------- --------------- >Z68193 ------------MAQQWSLQRLAGRHPQDSYEDSTQSSIFTYTNSNSTRGPFEG------ PNY-HIAPR---------------W-------------------VYHLTSVWMIFVVTAS VFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAE-TVIASTISIVNQVS-GYFV--LGH PMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VRFDAKLAIVGIAFSWIWSAV W-TAPPIFG-W-----SRYWPHGL-KTSCGPDVFSGSSYPGVQSYMIVLMVTCCIIPLAI IMLCYLQVWLAIRAVAKQ------QKESESTQ---------------------------- ------------------------------------------------------------ ---------------------------------------------KAEKEVTRMVVVMIF AYCVCWGPYTFFACFAAA---NPGYA-FHPLMAALPAYFAKSATIYNPVIYVFMNRQFRN CILQLF------GKKVDDGSELSSASKTEVSSV--------------------------- -----------------SSVSPA------------------------------------- --------------- >M17730 ----------MEPLCNASEPPLRPEARSSGNGDLQFLGWN-VPPDQIQYIPEHW------ LTQLEPPAS---------------M--------------------HYMLGVFYIFLFCAS TVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIM--CLKAPIF--NSFH-RGFAIYLGN TWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMN--RNMTFTKAVIMNIIIWLYCTP W-VVLPLTQFW-----DRFVPEGY-LTSCSFDYLS--DNFDTRLFVGTIFFFSFVCPTLM ILYYYSQIVGHVFSHEKA------LREQAKKMNVESLR---------------------- ------------------------------------------------------------ -------------------------------------SNVDKSKETAEIRIAKAAITICF LFFVSWTPYGVMSLIGAF---GDKSL-LTQGATMIPACTCKLVACIDPFVYAISHPRYRL ELQKRCPWLGVNEKSGEISSAQSTTTQEQ-QQT--------------------------- --------------------TAA------------------------------------- --------------- >X65880 ---------MDALCNASEPPLRPEARMSSGSDELQFLGWN-VPPDQIQYIPEHW------ LTQLEPPAS---------------M--------------------HYMLGVFYIFLFFAS TLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIM--CLKAPIFIYNSFH-RGFA--LGN TWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMN--RNMTFTKAVIMNIIIWLYCTP W-VVLPLTQFW-----DRFVPEGY-LTSCSFDYLS--DNFDTRLFVGTIFLFSFVVPTLM ILYYYSQIVGHVFNHEKA------LREQAKKMNVESLR---------------------- ------------------------------------------------------------ -------------------------------------SNVDKSKETAEIRIAKAAITICF LFFVSWTPYGVMSLIGAF---GDKSL-LTPGATMIPACTCKLVACIEPFVYAISHPRYRM ELQKRCPWLGVNEKSGEASSAQSTTTQEQTQQT--------------------------- --------------------SAA------------------------------------- --------------- >M17718 ------MESGNVSSSLFGNVSTALRPEARLSAETRLLGWN-VPPEELRHIPEHW------ LTYPEPPES---------------M--------------------NYLLGTLYIFFTLMS MLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMM--MVKTPIFIYNSFH-QGYA--LGH LGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMIIFIYMYATP W-VVACYTETW-----GRFVPEGY-LTSCTFDYLT--DNFDTRLFVACIFFFSFVCPTTM ITYYYSQIVGHVFSHEKA------LRDQAKKMNVESLR---------------------- ------------------------------------------------------------ -------------------------------------SNVDKNKETAEIRIAKAAITICF LFFCSWTPYGVMSLIGAF---GDKTL-LTPGATMIPACACKMVACIDPFVYAISHPRYRM ELQKRCPW-LALNEKAPESSAVASTSTTQEPQQ--------------------------- -------------------TTAA------------------------------------- --------------- >X65879 -------MEYHNVSSVLGNVSSVLRPDARLSAESRLLGWN-VPPDELRHIPEHW------ LIYPEPPES---------------M--------------------NYLLGTLYIFFTVIS MIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMM--MIKTPIFIYNSFH-QGYA--LGH LGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMIIFIYLYATP W-VVACYTESW-----GRFVPEGY-LTSCTFDYLT--DNFDTRLFVACIFFFSFVCPTTM ITYYYSQIVGHVFSHEKA------LRDQAKKMNVDSLR---------------------- ------------------------------------------------------------ -------------------------------------SNVDKSKEAAEIRIAKAAITICF LFFASWTPYGVMSLIGAF---GDKTL-LTPGATMIPACTCKMVACIDPFVYAISHPRYRM ELQKRCPW-LAISEKAPESRAAISTSTTQEQQQ--------------------------- -------------------TTAA------------------------------------- --------------- >X07797 ---------------------------MVESTTLVNQTWWYNPTVD---IHPHW------ AKFDPIPDA---------------V--------------------YYSVGIFIGVVGIIG ILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGFPLKTISAFM-KKWI--FGK VACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASKKMSHRRAFLMIIFVWMWSIV W-SVGPVFN-W-----GAYVPEGI-LTSCSFDYLS--TDPSTRSFILCMYFCGFMLPIII IAFCYFNIVMSVSNHEKE------MAAMAKRLNAKELR---------------------- ------------------------------------------------------------ ---------------------------------------KAQAGASAEMKLAKISMVIIT QFMLSWSPYAIIALLAQF---GPAEW-VTPYAAELPVLFAKASAIHNPIVYSVSHPKFRE AIQTTFPWLLTCCQFDEKECEDANDAEEEVVASER--GGESRDAAQMKEMMAMMQKMQAQ QAAYQP---PPPPQGYPPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGYPPQGAPPQVEAP QGAPPQGVDNQAYQA >X70498 ----------------------------MGRDLRDNETWWYNPSIVVH---PHW------ REFDQVPDA---------------V--------------------YYSLGIFIGICGIIG CGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGFPLMTISCFL-KKWI--FGF AACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMIIFVWLWSVL W-AIGPIFG-W-----GAYTLEGV-LCNCSFDYIS--RDSTTRSNILCMFILGFFGPILI IFFCYFNIVMSVSNHEKE------MAAMAKRLNAKELR---------------------- ------------------------------------------------------------ ---------------------------------------KAQAGANAEMRLAKISIVIVS QFLLSWSPYAVVALLAQF---GPLEW-VTPYAAQLPVMFAKASAIHNPMIYSVSHPKFRE AISQTFPWVLTCCQFDDKETEDDKDAETEIPAGESSDAAPSADAAQMKEMMAMMQKMQQQ QAAYPPQGYAPPPQGYPPQGYPPQGY--PPQGYPPQGYPP---PPQGAPPQGAPP----- -AAPPQGVDNQAYQA >D50584 -----------MTNATGPQMAYYGAASMDFGYPEGVSIVDFVRPEIKPYVHQHW------ YNYPPVNPM---------------W--------------------HYLLGVIYLFLGTVS IFGNGLVIYLFNKSAALRTPANILVVNLALSDLIM-LTTNVPFFTYNCFSGGVWM--FSP QYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-PKLTTGKAVVFALISWVIAIG C-ALPPFFG-W-----GNYILEGI-LDSCSYDYLT--QDFNTFSYNIFIFVFDYFLPAAI IVFSYVFIVKAIFAHEAA------MRAQAKKMNVSTLR---------------------- ------------------------------------------------------------ --------------------------------------SNEADAQRAEIRIAKTALVNVS LWFICWTPYALISLKGVM---GDTSG-ITPLVSTLPALLAKSCSCYNPFVYAISHPKYRL AITQHLPWFCVHETETKSNDDSQSNSTVAQDKA--------------------------- ------------------------------------------------------------ --------------- >D50583 -----------MANVTGPQMAFYGSGAATFGYPEGMTVADFVPDRVKHMVLDHW------ YNYPPVNPM---------------W--------------------HYLLGVVYLFLGVIS IAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIM-LTTNFPPFCYNCFSGGRWM--FSG TYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-PKLTQGKATFMCGLAWVISVG W-SLPPFFG-W-----GSYTLEGI-LDSCSYDYFT--RDMNTITYNICIFIFDFFLPASV IVFSYVFIVKAIFAHEAA------MRAQAKKMNVTNLR---------------------- ------------------------------------------------------------ --------------------------------------SNEAETQRAEIRIAKTALVNVS LWFICWTPYAAITIQGLL---GNAEG-ITPLLTTLPALLAKSCSCYNPFVYAISHPKFRL AITQHLPWFCVHEKDPNDVEENQSSNTQTQEKS--------------------------- ------------------------------------------------------------ --------------- >L03781 ------------------MANQLSYSSLGWPYQPNASVVDTMPKEMLYMIHEHW------ YAFPPMNPL---------------W--------------------YSILGVAMIILGIIC VLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCM-MAFMMPTMTSNCFA-ETWI--LGP FMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-APLTHKKATLLLLFVWIWSGG W-TILPFFG-W-----SRYVPEGN-LTSCTVDYLT--KDWSSASYVVIYGLAVYFLPLIT MIYCYFFIVHAVAEHEKQ------LREQAKKMNVASLR---------------------- ------------------------------------------------------------ -------------------------------------ANADQQKQSAECRLAKVAMMTVG LWFMAWTPYLIISWAGVF---SSGTR-LTPLATIWGSVFAKANSCYNPIVYGISHPRYKA ALYQRFPS-LACGSGESGSDVKSEASATTTMEE--------------------------- ----------------KPKIPEA------------------------------------- --------------- >U26026 ------------MIAVSGPSYEAFSYGGQARFNNQTVVDK-VPPDMLHLIDANW------ YQYPPLNPM---------------W--------------------HGILGFVIGMLGFVS AMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLM-MFCMSPPMVINCYY-ETWV--LGP LFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-KPLSINGALIRIIAIWLFSLG W-TIAPMFG-W-----NRYVPEGN-MTACGTDYFN--RGLLSASYLVCYGIWVYFVPLFL IIYSYWFIIQAVAAHEKN------MREQAKKMNVASLR---------------------- ------------------------------------------------------------ --------------------------------------SSENQNTSAECKLAKVALMTIS LWFMAWTPYLVINFSGIF----NLVK-ISPLFTIWGSLFAKANAVYNPIVYGISHPKYRA ALFAKFPS-LACAAEPSSDAVSTTSGTTTVTDN--------------------------- ------------------EKSNA------------------------------------- --------------- >X65877 ---------------MDSFAAVATQLGPQFAAPSNGSVVDKVTPDMAHLISPYW------ DQFPAMDPI---------------W--------------------AKILTAYMIIIGMIS WCGNGVVIYIFATTKSLRTPANLLVINLAISDFGI-MITNTPMMGINLYF-ETWV--LGP MMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAYIWFMSTI WCCLAPVFG-W-----SRYVPEGN-LTSCGIDYLE--RDWNPRSYLIFYSIFVYYIPLFL ICYSYWFIIAAVSAHEKA------MREQAKKMNVKSLR---------------------- ------------------------------------------------------------ --------------------------------------SSEDADKSAEGKLAKVALVTIS LWFMAWTPYLVINCMGLF----KFEG-LTPLNTIWGACFAKSAACYNPIVYGISHPKYRL ALKEKCPC-CVFGKVDDGKSSEAQSQATTSEAE--------------------------- --------------------SKA------------------------------------- --------------- >K02320 ---------------MESFAVAAAQLGPHFAPLSNGSVVDKVTPDMAHLISPYW------ NQFPAMDPI---------------W--------------------AKILTAYMIMIGMIS WCGNGVVIYIFATTKSLRTPANLLVINLAISDFGI-MITNTPMMGINLYF-ETWV--LGP MMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPM------------------ --TIPLALG-------KMYVPEGN-LTSCGIDYLE--RDWNPRSYLIFYSIFVYYIPLFL ICYSYWFIIAAVSAHEKA------MREQAKKMNVKSLR---------------------- ------------------------------------------------------------ --------------------------------------SSEDAEKSAEGKLAKVALVTIT LWFMAWTPYLVINCMGLF----KFEG-LTPLNTIWGACFAKSAACYNPIVYGISHPKYRL ALKEKCPC-CVFGKVDDGKSSDAQSQATASEAE--------------------------- --------------------SKA------------------------------------- --------------- >K02315 ---------------MESFAVAAAQLGPHFAPLSNGSVVDKVTPDMAHLISPYW------ NQFPAMDPI---------------W--------------------AKILTAYMIMIGMIS WCGNGVVIYIFATTKSLRTPANLLVINLAISDFGI-MITNTPMMGINLYF-ETWV--LGP MMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAYIWFMSSI W-CLAPAFG-W-----SRYVPEGN-LTSCGIDYLE--RDWNPRSYLIFYSIFVYYIPLFL ICYSYWFIIAAVSAHEKA------MREQAKKMNVKSLR---------------------- ------------------------------------------------------------ --------------------------------------SSEDAEKSAEGKLAKVALVTIT LWFMAWTPYLVINCMGLF----KFEG-LTPLNTIWGACFAKSAACYNPIVYGISHPKYRL ALKEKCPC-CVFGKVDDGKSSDAQSQATASEAE--------------------------- --------------------SKA------------------------------------- --------------- >M12896 --------MERSHLPETPFDLAHSGPRFQAQSSGNGSVLDNVLPDMAHLVNPYW------ SRFAPMDPM---------------M--------------------SKILGLFTLAIMIIS CCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCM-MASQSPVMIINFYY-ETWV--LGP LWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKILFIWMMAVF W-TVMPLIG-W-----SAYVPEGN-LTACSIDYMT--RMWNPRSYLITYSLFVYYTPLFL ICYSYWFIIAAVAAHEKA------MREQAKKMNVKSLR---------------------- ------------------------------------------------------------ --------------------------------------SSEDCDKSAEGKLAKVALTTIS LWFMAWTPYLVICYFGLF----KIDG-LTPLTTIWGATFAKTSAVYNPIVYGISHPKYRI VLKEKCPM-CVFGNTDEPKPDAPASDTETTSEA--------------------------- -------------------DSKA------------------------------------- --------------- >X65878 -------MERSLLPEPPLAMALLGPRFEAQTGGNRSVLDN-VLPDMAPLVNPHW------ SRFAPMDPT---------------M--------------------SKILGLFTLVILIIS CCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCM-MASQSPVMIINFYY-ETWV--LGP LWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKIAFIWMMAVF W-TIMPLIG-W-----SSYVPEGN-LTACSIDYMT--RQWNPRSYLITYSLFVYYTPLFM ICYSYWFIIATVAAHEKA------MRDQAKKMNVKSLR---------------------- ------------------------------------------------------------ --------------------------------------SSEDCDKSAENKLAKVALTTIS LWFMAWTPYLIICYFGLF----KIDG-LTPLTTIWGATFAKTSAVYNPIVYGISHPNDRL VLKEKCPM-CVCGTTDEPKPDAPPSDTETTSEA--------------------------- -------------------ESKD------------------------------------- --------------- ALTER-1.3.4/alter-web/src/main/resources/muscle.msf000066400000000000000000001003021300536243200217660ustar00rootroot00000000000000PileUp MSF: 675 Type: A Check: 0000 .. Name: L21195 Len: 675 Check: 6469 Weight: 0.0260001 Name: L15228 Len: 675 Check: 3381 Weight: 0.0267036 Name: A47425 Len: 675 Check: 3663 Weight: 0.0260001 Name: M83181 Len: 675 Check: 3465 Weight: 0.0353143 Name: A35181 Len: 675 Check: 4855 Weight: 0.0353143 Name: L06803 Len: 675 Check: 9897 Weight: 0.0321689 Name: A47174 Len: 675 Check: 9897 Weight: 0.0321689 Name: X95604 Len: 675 Check: 5094 Weight: 0.056125 Name: M13299 Len: 675 Check: 7099 Weight: 0.0485428 Name: L11864 Len: 675 Check: 5911 Weight: 0.0403913 Name: M92038 Len: 675 Check: 787 Weight: 0.0187736 Name: A45229 Len: 675 Check: 1412 Weight: 0.0218983 Name: B45229 Len: 675 Check: 2823 Weight: 0.0187736 Name: M63632 Len: 675 Check: 4578 Weight: 0.0457998 Name: U22180 Len: 675 Check: 8455 Weight: 0.0231128 Name: S75720 Len: 675 Check: 571 Weight: 0.0233146 Name: M92036 Len: 675 Check: 509 Weight: 0.0190842 Name: M62903 Len: 675 Check: 1077 Weight: 0.0233146 Name: K03494 Len: 675 Check: 8099 Weight: 0.022834 Name: Z68193 Len: 675 Check: 4868 Weight: 0.0190842 Name: M17730 Len: 675 Check: 909 Weight: 0.0239304 Name: X65880 Len: 675 Check: 6145 Weight: 0.0239304 Name: M17718 Len: 675 Check: 3231 Weight: 0.0366039 Name: X65879 Len: 675 Check: 3212 Weight: 0.0366039 Name: X07797 Len: 675 Check: 544 Weight: 0.0359253 Name: X70498 Len: 675 Check: 4487 Weight: 0.0386037 Name: D50584 Len: 675 Check: 8208 Weight: 0.0228904 Name: D50583 Len: 675 Check: 5002 Weight: 0.0228904 Name: L03781 Len: 675 Check: 2852 Weight: 0.0205835 Name: U26026 Len: 675 Check: 7117 Weight: 0.0205835 Name: X65877 Len: 675 Check: 3157 Weight: 0.0163871 Name: K02320 Len: 675 Check: 7552 Weight: 0.0377258 Name: K02315 Len: 675 Check: 1043 Weight: 0.0377258 Name: M12896 Len: 675 Check: 80 Weight: 0.0154485 Name: X65878 Len: 675 Check: 9572 Weight: 0.0154485 // L21195 .......... MMDVNSSGRP DLYGHLRSFL LPEVGRGLPD LSPDGGADPV L15228 .......... .......... .......... .......... .....MPHLL A47425 .......... .......... .......... .......... .....MPHLL M83181 .......... .......MDV LSPGQGNNTT SPPAPFETGG ..NTTGISDV A35181 .......... .......MDV FSFGQGNNTT ASQEPFGTGG ..NVTSISDV L06803 MANFTFGDLA LDVARMGGLA STPSGLRSTG LTTPGLSPTG LVTSDFNDSY A47174 MANFTFGDLA LDVARMGGLA STPSGLRSTG LTTPGLSPTG LVTSDFNDSY X95604 .......... ........ME GAEGQEELDW EALYLRLPLQ .NCSWNSTGW M13299 .......... .......... ......MRKM SEEEFYLFKN .....ISSVG L11864 .......... .......... ....MKQVPE FHEDFYIPIP LDINNLSAYS M92038 .......... .......... ......MNGT EGINFYVPMS ..NKTGVVRS A45229 .......... .......... ......MNGT EGKNFYVPMS ..NRTGLVRS B45229 .......... .......... ......MNGT EGNNFYVPLS ..NRTGLVRS M63632 .......... .......... ......MNGT EGDNFYVPFS ..NKTGLARS U22180 .......... .......... ......MNGT EGPNFYVPFS ..NITGVVRS S75720 .......... .......... .......... .....MSSNS SQAPPNGTPG M92036 .......... ...MTEAWNV AVFAARRSRD DDDTTRGSVF TYTNTNNTRG M62903 .......... .....MAAWE AAFAARRRHE EEDTTRDSVF TYTNSNNTRG K03494 .......... ..MAQQWSLQ RLAGRHPQDS YEDSTQSSIF TYTNSNSTRG Z68193 .......... ..MAQQWSLQ RLAGRHPQDS YEDSTQSSIF TYTNSNSTRG M17730 .......... MEPLCNASEP PLRPEARSSG NGDLQFLGWN .VPPDQIQYI X65880 .........M DALCNASEPP LRPEARMSSG SDELQFLGWN .VPPDQIQYI M17718 ......MESG NVSSSLFGNV STALRPEARL SAETRLLGWN .VPPEELRHI X65879 .......MEY HNVSSVLGNV SSVLRPDARL SAESRLLGWN .VPPDELRHI X07797 .......... .......... .......MVE STTLVNQTWW YNPTVD...I X70498 .......... .......... ........MG RDLRDNETWW YNPSIVVH.. D50584 .......... .MTNATGPQM AYYGAASMDF GYPEGVSIVD FVRPEIKPYV D50583 .......... .MANVTGPQM AFYGSGAATF GYPEGMTVAD FVPDRVKHMV L03781 .......... ........MA NQLSYSSLGW PYQPNASVVD TMPKEMLYMI U26026 .......... ..MIAVSGPS YEAFSYGGQA RFNNQTVVDK .VPPDMLHLI X65877 .......... .....MDSFA AVATQLGPQF AAPSNGSVVD KVTPDMAHLI K02320 .......... .....MESFA VAAAQLGPHF APLSNGSVVD KVTPDMAHLI K02315 .......... .....MESFA VAAAQLGPHF APLSNGSVVD KVTPDMAHLI M12896 ........ME RSHLPETPFD LAHSGPRFQA QSSGNGSVLD NVLPDMAHLV X65878 .......MER SLLPEPPLAM ALLGPRFEAQ TGGNRSVLDN .VLPDMAPLV L21195 AGSWAPHLLS EVTASPAPT. .......... ....WDAPPD NASGCGEQIN L15228 SGFL...... EVTASPAPT. .......... ....WDAPPD NVSGCGEQIN A47425 SGFL...... EVTASPAPT. .......... ....WDAPPD NVSGCGEQIN M83181 TVSY...... .......... .......... .......... .......... A35181 TFSY...... .......... .......... .......... .......... L06803 GLTGQFINGS HSSRSRDNAS ANDTSATNMT DDRYW..... ......SLTV A47174 GLTGQFINGS HSSRSRDNAS ANDTSATNMT DDRYW..... ......SLTV X95604 EPNW...... NVTVVPNTT. .......... ....W..... WQASAPFDTP M13299 PWDG...... PQY.HIAPV. .......... ....W..... .......... L11864 PFLV...... PQDHLGNQG. .......... ....I..... .......... M92038 PFEY...... PQYYLAEP.. .......... ....W..... .......... A45229 PFEY...... PQYYLAEP.. .......... ....W..... .......... B45229 PFEY...... PQYYLAEP.. .......... ....W..... .......... M63632 PYEY...... PQYYLAEP.. .......... ....W..... .......... U22180 PFEQ...... PQYYLAEP.. .......... ....W..... .......... S75720 PFDG...... PQWPYQAPQ. .......... ....S..... .......... M92036 PFEG...... PNY.HIAPR. .......... ....W..... .......... M62903 PFEG...... PNY.HIAPR. .......... ....W..... .......... K03494 PFEG...... PNY.HIAPR. .......... ....W..... .......... Z68193 PFEG...... PNY.HIAPR. .......... ....W..... .......... M17730 PEHW...... LTQLEPPAS. .......... ....M..... .......... X65880 PEHW...... LTQLEPPAS. .......... ....M..... .......... M17718 PEHW...... LTYPEPPES. .......... ....M..... .......... X65879 PEHW...... LIYPEPPES. .......... ....M..... .......... X07797 HPHW...... AKFDPIPDA. .......... ....V..... .......... X70498 .PHW...... REFDQVPDA. .......... ....V..... .......... D50584 HQHW...... YNYPPVNPM. .......... ....W..... .......... D50583 LDHW...... YNYPPVNPM. .......... ....W..... .......... L03781 HEHW...... YAFPPMNPL. .......... ....W..... .......... U26026 DANW...... YQYPPLNPM. .......... ....W..... .......... X65877 SPYW...... DQFPAMDPI. .......... ....W..... .......... K02320 SPYW...... NQFPAMDPI. .......... ....W..... .......... K02315 SPYW...... NQFPAMDPI. .......... ....W..... .......... M12896 NPYW...... SRFAPMDPM. .......... ....M..... .......... X65878 NPHW...... SRFAPMDPT. .......... ....M..... .......... L21195 YGRVEKVVIG SILTLITLLT IAGNCLVVIS VCFVKKLRQP SNYLIVSLAL L15228 YGRVEKVVIG SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL A47425 YGRVEKVVIG SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL M83181 .....QVITS LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV A35181 .....QVITS LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV L06803 YSHEHLVLTS VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV A47174 YSHEHLVLTS VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV X95604 AALVRAAAKA VVLGLLILAT VVGNVFVIAA ILLERHLRSA ANNLILSLAV M13299 ....AFYLQA AFMGTVFLIG FPLNAMVLVA TLRYKKLRQP LNYILVNVSF L11864 .....FMAMS VFMFFIFIGG ASINILTILC TIQFKKLRSH LNYILVNLSI M92038 ....KYRLVC CYIFFLISTG LPINLLTLLV TFKHKKLRQP LNYILVNLAV A45229 ....QFKILA LYLFFLMSMG LPINGLTLVV TAQHKKLRQP LNFILVNLAV B45229 ....QFKLLA VYMFFLICLG LPINGLTLIC TAQHKKLRQP LNFILVNLAV M63632 ....KYSALA AYMFFLILVG FPVNFLTLFV TVQHKKLRTP LNYILLNLAM U22180 ....QFSMLA AYMFLLIVLG FPINFLTLYV TVQHKKLRTP LNYILLNLAV S75720 ....TYVGVA VLMGTVVACA SVVNGLVIVV SICYKKLRSP LNYILVNLAV M92036 ....VYNLVS FFMIIVVIAS CFTNGLVLVA TAKFKKLRHP LNWILVNLAF M62903 ....VYNLTS VWMIFVVAAS VFTNGLVLVA TWKFKKLRHP LNWILVNLAV K03494 ....VYHLTS VWMIFVVIAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV Z68193 ....VYHLTS VWMIFVVTAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV M17730 .....HYMLG VFYIFLFCAS TVGNGMVIWI FSTSKSLRTP SNMFVLNLAV X65880 .....HYMLG VFYIFLFFAS TLGNGMVIWI FSTSKSLRTP SNMFVLNLAV M17718 .....NYLLG TLYIFFTLMS MLGNGLVIWV FSAAKSLRTP SNILVINLAF X65879 .....NYLLG TLYIFFTVIS MIGNGLVMWV FSAAKSLRTP SNILVINLAF X07797 .....YYSVG IFIGVVGIIG ILGNGVVIYL FSKTKSLQTP ANMFIINLAM X70498 .....YYSLG IFIGICGIIG CGGNGIVIYL FTKTKSLQTP ANMFIINLAF D50584 .....HYLLG VIYLFLGTVS IFGNGLVIYL FNKSAALRTP ANILVVNLAL D50583 .....HYLLG VVYLFLGVIS IAGNGLVIYL YMKSQALKTP ANMLIVNLAL L03781 .....YSILG VAMIILGIIC VLGNGMVIYL MMTTKSLRTP TNLLVVNLAF U26026 .....HGILG FVIGMLGFVS AMGNGMVVYI FLSTKSLRTP SNLFVINLAI X65877 .....AKILT AYMIIIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI K02320 .....AKILT AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI K02315 .....AKILT AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI M12896 .....SKILG LFTLAIMIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF X65878 .....SKILG LFTLVILIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF L21195 ADLSV.AVAV MPFVSVTDLI GGKWI..FGH FFCNVFIAMD VMCCTASIMT L15228 ADLSV.AVAV MPFVSVTDLI GGKWI..FGH FFCNVFIAMD VMCCTASIMT A47425 ADLSV.AVAV MPFVSVTDLI GGKWI..FGH FFCNVFIAMD VMCCTASIMT M83181 TDLMV.SVLV LPMAALYQVL .NKWT..LGQ VTCDLFIALD VLCCTSSILH A35181 TDLMV.SVLV LPMAALYQVL .NKWT..LGQ VTCDLFIALD VLCCTSSILH L06803 ADLMV.AVLV MPLSVVSEIS .KVWF..LHS EVCDMWISVD VLCCTASILH A47174 ADLMV.AVLV MPLSVVSEIS .KVWF..LHS EVCDMWISVD VLCCTASILH X95604 ADLLV.ACLV MPLGAVYEVV .QRWT..LGP ELCDMWTSGD VLCCTASILH M13299 GGFLLCIFSV FPVFVASCN. .GYFV..FGR HVCALEGFLG TVAGLVTGWS L11864 ANLFV.AIFG SPLSFYSFFN .RYFI..FGA TACKIEGFLA TLGGMVGLWS M92038 ADLFM.ACFG FTVTFYTAWN .GYFV..FGP VGCAVEGFFA TLGGQVALWS A45229 AGTIM.VCFG FTVTFYTAIN .GYFV..LGP TGCAVEGFMA TLGGEVALWS B45229 AGAIM.VCFG FTVTFYTAIN .GYFA..LGP TGCAVEGFMA TLGGEVALWS M63632 ANLFM.VLFG FTVTMYTSMN .GYFV..FGP TMCSIEGFFA TLGGEVALWS U22180 ADLFM.VFGG FTTTLYTSLH .GYFV..FGP TGCNLEGFFA TLGGEIGLWS S75720 ADLLV.TLCG SSVSLSNNIN .GFFV..FGR RMCELEGFMV SLTGIVGLWS M92036 VDLVE.TLVA STISVFNQIF .GYFI..LGH PLCVIEGYVV SSCGITGLWS M62903 ADLGE.TVIA STISVINQIS .GYFI..LGH PMCVVEGYTV SACGITALWS K03494 ADLAE.TVIA STISVVNQVY .GYFV..LGH PMCVLEGYTV SLCGITGLWS Z68193 ADLAE.TVIA STISIVNQVS .GYFV..LGH PMCVLEGYTV SLCGITGLWS M17730 FDLIM..CLK APIF..NSFH .RGFAIYLGN TWCQIFASIG SYSGIGAGMT X65880 FDLIM..CLK APIFIYNSFH .RGFA..LGN TWCQIFASIG SYSGIGAGMT M17718 CDFMM..MVK TPIFIYNSFH .QGYA..LGH LGCQIFGIIG SYTGIAAGAT X65879 CDFMM..MIK TPIFIYNSFH .QGYA..LGH LGCQIFGVIG SYTGIAAGAT X07797 SDLSFSAING FPLKTISAFM .KKWI..FGK VACQLYGLLG GIFGFMSINT X70498 SDFTFSLVNG FPLMTISCFL .KKWI..FGF AACKVYGFIG GIFGFMSIMT D50584 SDLIM.LTTN VPFFTYNCFS GGVWM..FSP QYCEIYACLG AITGVCSIWL D50583 SDLIM.LTTN FPPFCYNCFS GGRWM..FSG TYCEIYAALG AITGVCSIWT L03781 SDFCM.MAFM MPTMTSNCFA .ETWI..LGP FMCEVYGMAG SLFGCASIWS U26026 SNFLM.MFCM SPPMVINCYY .ETWV..LGP LFCQIYAMLG SLFGCGSIWT X65877 SDFGI.MITN TPMMGINLYF .ETWV..LGP MMCDIYAGLG SAFGCSSIWS K02320 SDFGI.MITN TPMMGINLYF .ETWV..LGP MMCDIYAGLG SAFGCSSIWS K02315 SDFGI.MITN TPMMGINLYF .ETWV..LGP MMCDIYAGLG SAFGCSSIWS M12896 SDFCM.MASQ SPVMIINFYY .ETWV..LGP LWCDIYAGCG SLFGCVSIWS X65878 SDFCM.MASQ SPVMIINFYY .ETWV..LGP LWCDIYAACG SLFGCVSIWS L21195 LCVISIDRYL GITRPLTYPV RQNGKCMAKM ILSVWLLSAS I.TLPPLFG. L15228 LCVISIDRYL GITRPLTYPV RQNGKCMAKM ILSVWLLSAS I.TLPPLFG. A47425 LCVISIDRYL GITRPLTYPV RQNGKCMAKM ILSVWLLSAS I.TLPPLFG. M83181 LCAIALDRYW AITDPIDYVN KRTPRRAAAL ISLTWLIGFL I.SIPPMLG. A35181 LCAIALDRYW AITDPIDYVN KRTPRRAAAL ISLTWLIGFL I.SIPPMLG. L06803 LVAIAMDRYW AVTS.IDYIR RRSARRILLM IMVVWIVALF I.SIPPLFG. A47174 LVAIAMDRYW AVTS.IDYIR RRSARRILLM IMVVWIVALF I.SIPPLFG. X95604 LVAIALDRYW AVTN.IDYIH ASTAKRVGMM IACVWTVSFF V.CIAQLLG. M13299 LAFLAFERYI VICKPFGN.F RFSSKHALTV VLATWTIGIG V.SIPPFFG. L11864 LAVVAFERWL VICKPLGN.F TFKTPHAIAG CILPWISALA A.SLPPLFG. M92038 LVVLAIERYI VVCKPMGN.F RFSATHAMMG IAFTWVMAFS C.AAPPLFG. A45229 LVVLAIERYI VVCKPMGS.F KFSSSHAFAG IAFTWVMALA C.AAPPLFG. B45229 LVVLAIERYI VVCKPMGS.F KFSSTHASAG IAFTWVMAMA C.AAPPLVG. M63632 LVVLAIERYI VICKPMGN.F RFGNTHAIMG VAFTWIMALA C.AAPPLVG. U22180 LVVLAIERYV VVCKPMSN.F RFGENHAIMG VAFTWVMALA C.AAPPLVG. S75720 LAILALERYV VVCKPLGD.F QFQRRHAVSG CAFTWGWALL W.SAPPLLG. M92036 LAIISWERWF VVCKPFGN.I KFDSKLAIIG IVFSWVWAWG W.SAPPIFG. M62903 LAIISWERWF VVCKPFGN.I KFDGKLAVAG ILFSWLWSCA W.TAPPIFG. K03494 LAIISWERWM VVCKPFGN.V RFDAKLAIVG IAFSWIWAAV W.TAPPIFG. Z68193 LAIISWERWL VVCKPFGN.V RFDAKLAIVG IAFSWIWSAV W.TAPPIFG. M17730 NAAIGYDRYN VITKPMN..R NMTFTKAVIM NIIIWLYCTP W.VVLPLTQF X65880 NAAIGYDRYN VITKPMN..R NMTFTKAVIM NIIIWLYCTP W.VVLPLTQF M17718 NAFIAYDRFN VITRPMEG.. KMTHGKAIAM IIFIYMYATP W.VVACYTET X65879 NAFIAYDRYN VITRPMEG.. KMTHGKAIAM IIFIYLYATP W.VVACYTES X07797 MAMISIDRYN VIGRPMAASK KMSHRRAFLM IIFVWMWSIV W.SVGPVFN. X70498 MAMISIDRYN VIGRPMAASK KMSHRRAFIM IIFVWLWSVL W.AIGPIFG. D50584 LCMISFDRYN IICNGFNG.P KLTTGKAVVF ALISWVIAIG C.ALPPFFG. D50583 LCMISFDRYN IICNGFNG.P KLTQGKATFM CGLAWVISVG W.SLPPFFG. L03781 MVMITLDRYN VIVRGMAA.A PLTHKKATLL LLFVWIWSGG W.TILPFFG. U26026 MTMIAFDRYN VIVKGLSG.K PLSINGALIR IIAIWLFSLG W.TIAPMFG. X65877 MCMISLDRYQ VIVKGMAG.R PMTIPLALGK IAYIWFMSTI WCCLAPVFG. K02320 MCMISLDRYQ VIVKGMAG.R PM........ .......... ..TIPLALG. K02315 MCMISLDRYQ VIVKGMAG.R PMTIPLALGK IAYIWFMSSI W.CLAPAFG. M12896 MCMIAFDRYN VIVKGING.T PMTIKTSIMK ILFIWMMAVF W.TVMPLIG. X65878 MCMIAFDRYN VIVKGING.T PMTIKTSIMK IAFIWMMAVF W.TIMPLIG. L21195 W.....AQNV NDDK.VCLIS QDF....... ...GYTIYST AVAFYIPMSV L15228 W.....AQNV NDDK.VCLIS QDF....... ...GYTIYST AVAFYIPMSV A47425 W.....AQNV NDDK.VCLIS QDF....... ...GYTIYST AVAFYIPMSV M83181 WRTPE.DRSD PDA...CTIS KDH....... ...GYTIYST FGAFYIPLLL A35181 WRTPE.DRSD PDA...CTIS KDH....... ...GYTIYST FGAFYIPLLL L06803 WRD...PNND PDKTGTCIIS QDK....... ...GYTIFST VGAFYLPMLV A47174 WRD...PNND PDKTGTCIIS QDK....... ...GYTIFST VGAFYLPMLV X95604 WKDPDWNQRV SEDL.RCVVS QDV....... ...GYQIFAT ASSFYVPVLI M13299 W.....SRFI PEGL.QCSCG PDWYTVGTKY RSESYTWFLF IFCFIVPLSL L11864 W.....SRYI PEGL.QCSCG PDWYTTNNKY NNESYVMFLF CFCFAVPFGT M92038 W.....SRYM PEGM.QCSCG PDYYTHNPDY HNESYVLYMF VIHFIIPVVV A45229 W.....SRYI PEGM.QCSCG PDYYTLNPDY NNESYVIYMF VCHFILPVAV B45229 W.....SRYI PEGI.QCSCG PDYYTLNPEY NNESYVLYMF ICHFILPVTI M63632 W.....SRYI PEGM.QCSCG PDYYTLNPNF NNESYVVYMF VVHFLVPFVI U22180 W.....SRYI PEGM.QCSCG IDYYTLKPEV NNESFVIYMF VVHFTIPMIV S75720 W.....SSYV PEGL.RTSCG PNWYT..GGS NNNSYILSLF VTCFVLPLSL M92036 W.....SRYW PHGL.KTSCG PDVFSGSVEL GCQSFMLTLM ITCCFLPLFI M62903 W.....SRYW PHGL.KTSCG PDVFSGSSDP GVQSYMVVLM VTCCFFPLAI K03494 W.....SRYW PHGL.KTSCG PDVFSGSSYP GVQSYMIVLM VTCCITPLSI Z68193 W.....SRYW PHGL.KTSCG PDVFSGSSYP GVQSYMIVLM VTCCIIPLAI M17730 W.....DRFV PEGY.LTSCS FDYLS..DNF DTRLFVGTIF FFSFVCPTLM X65880 W.....DRFV PEGY.LTSCS FDYLS..DNF DTRLFVGTIF LFSFVVPTLM M17718 W.....GRFV PEGY.LTSCT FDYLT..DNF DTRLFVACIF FFSFVCPTTM X65879 W.....GRFV PEGY.LTSCT FDYLT..DNF DTRLFVACIF FFSFVCPTTM X07797 W.....GAYV PEGI.LTSCS FDYLS..TDP STRSFILCMY FCGFMLPIII X70498 W.....GAYT LEGV.LCNCS FDYIS..RDS TTRSNILCMF ILGFFGPILI D50584 W.....GNYI LEGI.LDSCS YDYLT..QDF NTFSYNIFIF VFDYFLPAAI D50583 W.....GSYT LEGI.LDSCS YDYFT..RDM NTITYNICIF IFDFFLPASV L03781 W.....SRYV PEGN.LTSCT VDYLT..KDW SSASYVVIYG LAVYFLPLIT U26026 W.....NRYV PEGN.MTACG TDYFN..RGL LSASYLVCYG IWVYFVPLFL X65877 W.....SRYV PEGN.LTSCG IDYLE..RDW NPRSYLIFYS IFVYYIPLFL K02320 ......KMYV PEGN.LTSCG IDYLE..RDW NPRSYLIFYS IFVYYIPLFL K02315 W.....SRYV PEGN.LTSCG IDYLE..RDW NPRSYLIFYS IFVYYIPLFL M12896 W.....SAYV PEGN.LTACS IDYMT..RMW NPRSYLITYS LFVYYTPLFL X65878 W.....SSYV PEGN.LTACS IDYMT..RQW NPRSYLITYS LFVYYTPLFM L21195 MLFMYYQIYK AARKSAAK.. ....HKFPGF PRVEPDSV.. ...IALNGIV L15228 MLFMYYQIYK AARKSAAK.. ....HKFPGF PRVQPESV.. ...ISLNGVV A47425 MLFMYYQIYK AARKSAAK.. ....HKFPGF PRVQPESV.. ...ISLNGVV M83181 MLVLYGRIFR AARFRIRKTV KKVEKTGADT RHGASPAPQP KKSVNGESGS A35181 MLVLYGRIFR AARFRIRKTV RKVEKKGAGT SLGTSSAPPP KKSLNGQPGS L06803 MMIIYIRIWL VARSRIRK.. ....DKFQMT KARLKTEET. ...TLVASPK A47174 MMIIYIRIWL VARSRIRK.. ....DKFQMT KARLKTEET. ...TLVASPK X95604 ILILYWRIYQ TARKRIRR.. ....RRGATA RGGVGPPPVP AGGALVAGGG M13299 ICFSYTQLLR ALKAVAAQ.. ....QQESAT TQ........ .......... L11864 IVFCYGQLLI TLKLAAKA.. ....QADSAS TQ........ .......... M92038 IFFSYGRLIC KVREAAAQ.. ....QQESAT TQ........ .......... A45229 IFFTYGRLVC TVKAAAAQ.. ....QQDSAS TQ........ .......... B45229 IFFTYGRLVC TVKAAAAQ.. ....QQDSAS TQ........ .......... M63632 IFFCYGRLLC TVKEAAAA.. ....QQESAS TQ........ .......... U22180 IFFCYGQLVF TVKEAAAQ.. ....QQESAT TQ........ .......... S75720 ILFSYTNLLL TLRAAAAQ.. ....QKEADT TQ........ .......... M92036 IIVCYLQVWM AIRAVAAQ.. ....QKESES TQ........ .......... M62903 IILCYLQVWL AIRAVAAQ.. ....QKESES TQ........ .......... K03494 IVLCYLQVWL AIRAVAKQ.. ....QKESES TQ........ .......... Z68193 IMLCYLQVWL AIRAVAKQ.. ....QKESES TQ........ .......... M17730 ILYYYSQIVG HVFSHEKA.. ....LREQAK KMNVESLR.. .......... X65880 ILYYYSQIVG HVFNHEKA.. ....LREQAK KMNVESLR.. .......... M17718 ITYYYSQIVG HVFSHEKA.. ....LRDQAK KMNVESLR.. .......... X65879 ITYYYSQIVG HVFSHEKA.. ....LRDQAK KMNVDSLR.. .......... X07797 IAFCYFNIVM SVSNHEKE.. ....MAAMAK RLNAKELR.. .......... X70498 IFFCYFNIVM SVSNHEKE.. ....MAAMAK RLNAKELR.. .......... D50584 IVFSYVFIVK AIFAHEAA.. ....MRAQAK KMNVSTLR.. .......... D50583 IVFSYVFIVK AIFAHEAA.. ....MRAQAK KMNVTNLR.. .......... L03781 MIYCYFFIVH AVAEHEKQ.. ....LREQAK KMNVASLR.. .......... U26026 IIYSYWFIIQ AVAAHEKN.. ....MREQAK KMNVASLR.. .......... X65877 ICYSYWFIIA AVSAHEKA.. ....MREQAK KMNVKSLR.. .......... K02320 ICYSYWFIIA AVSAHEKA.. ....MREQAK KMNVKSLR.. .......... K02315 ICYSYWFIIA AVSAHEKA.. ....MREQAK KMNVKSLR.. .......... M12896 ICYSYWFIIA AVAAHEKA.. ....MREQAK KMNVKSLR.. .......... X65878 ICYSYWFIIA TVAAHEKA.. ....MRDQAK KMNVKSLR.. .......... L21195 KLQKEVEECA NLSRLLKH.. .......... .......... .......... L15228 KLQKEVEECA NLSRLLKH.. .......... .......... .......... A47425 KLQKEVEECA NLSRLLKH.. .......... .......... .......... M83181 RNWRLGVESK AGGAL..CAN GAVRQGDDGA ALEVIEVHRV GNSKEHLPLP A35181 GDWRRCAENR AVGTP..CTN GAVRQGDDEA TLEVIEVHRV GNSKEHLPLP L06803 TEYSVVSDCN GCNSPDSTTE KKKRRAPFKS YGCSPRPERK KNRAKKLP.E A47174 TEYSVVSDCN GCNSPDSTTE KKKRRAPFKS YGCSPRPERK KNRAKKLP.E X95604 SGGIAAAVVA VIGRPLPTIS ETTTTGFTNV SSNNTSPEKQ .........S M13299 .......... .......... .......... .......... .......... L11864 .......... .......... .......... .......... .......... M92038 .......... .......... .......... .......... .......... A45229 .......... .......... .......... .......... .......... B45229 .......... .......... .......... .......... .......... M63632 .......... .......... .......... .......... .......... U22180 .......... .......... .......... .......... .......... S75720 .......... .......... .......... .......... .......... M92036 .......... .......... .......... .......... .......... M62903 .......... .......... .......... .......... .......... K03494 .......... .......... .......... .......... .......... Z68193 .......... .......... .......... .......... .......... M17730 .......... .......... .......... .......... .......... X65880 .......... .......... .......... .......... .......... M17718 .......... .......... .......... .......... .......... X65879 .......... .......... .......... .......... .......... X07797 .......... .......... .......... .......... .......... X70498 .......... .......... .......... .......... .......... D50584 .......... .......... .......... .......... .......... D50583 .......... .......... .......... .......... .......... L03781 .......... .......... .......... .......... .......... U26026 .......... .......... .......... .......... .......... X65877 .......... .......... .......... .......... .......... K02320 .......... .......... .......... .......... .......... K02315 .......... .......... .......... .......... .......... M12896 .......... .......... .......... .......... .......... X65878 .......... .......... .......... .......... .......... L21195 .......... .......... .......... .......... .......... L15228 .......... .......... .......... .......... .......... A47425 .......... .......... .......... .......... .......... M83181 SEAGPTPCAP AS........ .......... ........FE RK........ A35181 SESGSNSYAP AC........ .......... ........LE RK........ L06803 NANGVNSNSS SSERLKQIQI ETAEAFANGC AEEASIAMLE RQCNNGKKIS A47174 NANGVNSNSS SSERLKQIQI ETAEAFANGC AEEASIAMLE RQCNNGKKIS X95604 CANGLEADPP TT........ ......GYGA VAAAYYPSLV RR........ M13299 .......... .......... .......... .......... .......... L11864 .......... .......... .......... .......... .......... M92038 .......... .......... .......... .......... .......... A45229 .......... .......... .......... .......... .......... B45229 .......... .......... .......... .......... .......... M63632 .......... .......... .......... .......... .......... U22180 .......... .......... .......... .......... .......... S75720 .......... .......... .......... .......... .......... M92036 .......... .......... .......... .......... .......... M62903 .......... .......... .......... .......... .......... K03494 .......... .......... .......... .......... .......... Z68193 .......... .......... .......... .......... .......... M17730 .......... .......... .......... .......... .......... X65880 .......... .......... .......... .......... .......... M17718 .......... .......... .......... .......... .......... X65879 .......... .......... .......... .......... .......... X07797 .......... .......... .......... .......... .......... X70498 .......... .......... .......... .......... .......... D50584 .......... .......... .......... .......... .......... D50583 .......... .......... .......... .......... .......... L03781 .......... .......... .......... .......... .......... U26026 .......... .......... .......... .......... .......... X65877 .......... .......... .......... .......... .......... K02320 .......... .......... .......... .......... .......... K02315 .......... .......... .......... .......... .......... M12896 .......... .......... .......... .......... .......... X65878 .......... .......... .......... .......... .......... L21195 .......ERK NISIFKREQK AATTLGIIVG AFTVCWLPFF LLSTARPFIC L15228 .......ERK NISIFKREQK AATTLGIIVG AFTVCWLPFF LLSTARPFIC A47425 .......ERK NISIFKREQK AATTLGIIVG AFTVCWLPFF LLSTARPFIC M83181 ..NERNAEAK RKMALARERK TVKTLGIIMG TFILCWLPFF IVALVLPF.. A35181 ..NERNAEAK RKMALARERK TVKTLGIIMG TFILCWLPFF IVALVLPF.. L06803 SNDTPYSRTR EKLELKRERK AARTLAIITG AFLICWLPFF IIALIGPF.. A47174 SNDTPYSRTR EKLELKRERK AARTLAIITG AFLICWLPFF IIALIGPF.. X95604 .......KPK EAADSKRERK AAKTLAIITG AFVACWLPFF VLAILVPT.. M13299 .......... .....KAERE VSRMVVVMVG SFCVCYVPYA AFAMYMVN.. L11864 .......... .....KAERE VTKMVVVMVL GFLVCWAPYA SFSLWIVS.. M92038 .......... .....KAEKE VTRMVILMVL GFMLAWTPYA VVAFWIFT.. A45229 .......... .....KAERE VTKMVILMVF GFLIAWTPYA TVAAWIFF.. B45229 .......... .....KAERE VTKMVILMVL GFLVAWTPYA TVAAWIFF.. M63632 .......... .....KAEKE VTRMVVLMVI GFLVCWVPYA SVAFYIFT.. U22180 .......... .....KAEKE VTRMVIIMVI FFLICWLPYA SVAMYIFT.. S75720 .......... .....RAERE VTRMVIVMVM AFLLCWLPYS TFALVVAT.. M92036 .......... .....KAERE VSRMVVVMIV AFCICWGPYA SFVSFAAA.. M62903 .......... .....KAEKE VSRMVVVMIV AYCFCWGPYT FFACFAAA.. K03494 .......... .....KAEKE VTRMVVVMVL AFCFCWGPYA FFACFAAA.. Z68193 .......... .....KAEKE VTRMVVVMIF AYCVCWGPYT FFACFAAA.. M17730 .......SNV DKSKETAEIR IAKAAITICF LFFVSWTPYG VMSLIGAF.. X65880 .......SNV DKSKETAEIR IAKAAITICF LFFVSWTPYG VMSLIGAF.. M17718 .......SNV DKNKETAEIR IAKAAITICF LFFCSWTPYG VMSLIGAF.. X65879 .......SNV DKSKEAAEIR IAKAAITICF LFFASWTPYG VMSLIGAF.. X07797 .........K AQAGASAEMK LAKISMVIIT QFMLSWSPYA IIALLAQF.. X70498 .........K AQAGANAEMR LAKISIVIVS QFLLSWSPYA VVALLAQF.. D50584 ........SN EADAQRAEIR IAKTALVNVS LWFICWTPYA LISLKGVM.. D50583 ........SN EAETQRAEIR IAKTALVNVS LWFICWTPYA AITIQGLL.. L03781 .......ANA DQQKQSAECR LAKVAMMTVG LWFMAWTPYL IISWAGVF.. U26026 ........SS ENQNTSAECK LAKVALMTIS LWFMAWTPYL VINFSGIF.. X65877 ........SS EDADKSAEGK LAKVALVTIS LWFMAWTPYL VINCMGLF.. K02320 ........SS EDAEKSAEGK LAKVALVTIT LWFMAWTPYL VINCMGLF.. K02315 ........SS EDAEKSAEGK LAKVALVTIT LWFMAWTPYL VINCMGLF.. M12896 ........SS EDCDKSAEGK LAKVALTTIS LWFMAWTPYL VICYFGLF.. X65878 ........SS EDCDKSAENK LAKVALTTIS LWFMAWTPYL IICYFGLF.. L21195 GTSCSC.IPL WVERTFLWLG YANSLINPFI YAFFNRDLRT TYRSLLQC.Q L15228 GTSCSC.IPL WVERTCLWLG YANSLINPFI YAFFNRDLRP TSRSLLQC.Q A47425 GTSCSC.IPL WVERTCLWLG YANSLINPFI YAFFNRDLRT TYRSLLQC.Q M83181 .CESSCHMPT LLGAIINWLG YSNSLLNPVI YAYFNKDFQN AFKKIIKC.K A35181 .CESSCHMPA LLGAIINWLG YSNSLLNPVI YAYFNKDFQN AFKKIIKC.K L06803 .VDPEG.IPP FARSFVLWLG YFNSLLNPII YTIFSPEFRS AFQKILFG.K A47174 .VDPEG.IPP FARSFVLWLG YFNSLLNPII YTIFSPEFRS AFQKILFG.K X95604 .CDCE..VSP VLTSLSLWLG YFNSTLNPVI YTVFSPEFRH AFQRLLCG.R M13299 .NRNHG.LDL RLVTIPSFFS KSACIYNPII YCFMNKQFQA CIMKMVCG.K L11864 .HRGEE.FDL RMATIPSCLS KASTVYNPVI YVLMNKQFRS CMMKMVCG.K M92038 .NKGAD.FTA TLMAVPAFFS KSSSLYNPII YVLMNKQFRN CMITTICC.G A45229 .NKGAD.FSA KFMAIPAFFS KSSALYNPVI YVLLNKQFRN CMLTTIFC.G B45229 .NKGAA.FSA QFMAIPAFFS KTSALYNPVI YVLLNKQFRS CMLTTLFC.G M63632 .HQGSD.FGA TFMTLPAFFA KSSALYNPVI YILMNKQFRN CMITTLCC.G U22180 .HQGSN.FGP IFMTLPAFFA KTASIYNPII YIMMNKQFRN CMLTSLCC.G S75720 .HKGII.IQP VLASLPSYFS KTATVYNPII YVFMNKQFQS CLLEMLCC.G M92036 .NPGYA.FHP LAAALPAYFA KSATIYNPVI YVFMNRQFRN CIMQLFG..K M62903 .NPGYA.FHP LAAALPAYFA KSATIYNPII YVFMNRQFRN CILQLF...G K03494 .NPGYP.FHP LMAALPAFFA KSATIYNPVI YVFMNRQFRN CILQLFG..K Z68193 .NPGYA.FHP LMAALPAYFA KSATIYNPVI YVFMNRQFRN CILQLF.... M17730 .GDKSL.LTQ GATMIPACTC KLVACIDPFV YAISHPRYRL ELQKRCPWLG X65880 .GDKSL.LTP GATMIPACTC KLVACIEPFV YAISHPRYRM ELQKRCPWLG M17718 .GDKTL.LTP GATMIPACAC KMVACIDPFV YAISHPRYRM ELQKRCPW.L X65879 .GDKTL.LTP GATMIPACTC KMVACIDPFV YAISHPRYRM ELQKRCPW.L X07797 .GPAEW.VTP YAAELPVLFA KASAIHNPIV YSVSHPKFRE AIQTTFPWLL X70498 .GPLEW.VTP YAAQLPVMFA KASAIHNPMI YSVSHPKFRE AISQTFPWVL D50584 .GDTSG.ITP LVSTLPALLA KSCSCYNPFV YAISHPKYRL AITQHLPWFC D50583 .GNAEG.ITP LLTTLPALLA KSCSCYNPFV YAISHPKFRL AITQHLPWFC L03781 .SSGTR.LTP LATIWGSVFA KANSCYNPIV YGISHPRYKA ALYQRFPS.L U26026 ..NLVK.ISP LFTIWGSLFA KANAVYNPIV YGISHPKYRA ALFAKFPS.L X65877 ..KFEG.LTP LNTIWGACFA KSAACYNPIV YGISHPKYRL ALKEKCPC.C K02320 ..KFEG.LTP LNTIWGACFA KSAACYNPIV YGISHPKYRL ALKEKCPC.C K02315 ..KFEG.LTP LNTIWGACFA KSAACYNPIV YGISHPKYRL ALKEKCPC.C M12896 ..KIDG.LTP LTTIWGATFA KTSAVYNPIV YGISHPKYRI VLKEKCPM.C X65878 ..KIDG.LTP LTTIWGATFA KTSAVYNPIV YGISHPNDRL VLKEKCPM.C L21195 YRNINRKLSA AGMHEALKLA ERPER..... .......... .......... L15228 YRNINRKLSA AGMHEALKLA ERPER..... .......... .......... A47425 YRNINRKLSA AGMHEALKLA ERPER..... .......... .......... M83181 FCRQ...... .......... .......... .......... .......... A35181 FCRR...... .......... .......... .......... .......... L06803 YRRGHR.... .......... .......... .......... .......... A47174 YRRGHR.... .......... .......... .......... .......... X95604 RVRRRRAPQ. .......... .......... .......... .......... M13299 AMTDESDTCS SQKTEVSTVS STQ....... .......... .......... L11864 NIEEDEASTS SQVTQVSSVA PEK....... .......... .......... M92038 KNPFGDEDVS STVSQSKTEV SSV....... .......... .......... A45229 KNPLGDDESS TVSTSKTEVS S......... .......... .......... B45229 KNPLGDEESS TVSTSKTEVS S......... .......... .......... M63632 KNPLGDDESG ASTSKTEVSS VST....... .......... .......... U22180 KNPLGDDEAS ATASKTETSQ .......... .......... .......... S75720 YQPQRTGKAS PGTPGPHADV TAA....... .......... .......... M92036 KVDDGSEAST TSRTEVSSVS NSS....... .......... .......... M62903 KKVDDGSEVS TSRTEVSSVS NSS....... .......... .......... K03494 KVDDGSELSS ASKTEVSSVS S......... .......... .......... Z68193 ..GKKVDDGS ELSSASKTEV SSV....... .......... .......... M17730 VNEKSGEISS AQSTTTQEQ. QQT....... .......... .......... X65880 VNEKSGEASS AQSTTTQEQT QQT....... .......... .......... M17718 ALNEKAPESS AVASTSTTQE PQQ....... .......... .......... X65879 AISEKAPESR AAISTSTTQE QQQ....... .......... .......... X07797 TCCQFDEKEC EDANDAEEEV VASER..GGE SRDAAQMKEM MAMMQKMQAQ X70498 TCCQFDDKET EDDKDAETEI PAGESSDAAP SADAAQMKEM MAMMQKMQQQ D50584 VHETETKSND DSQSNSTVAQ DKA....... .......... .......... D50583 VHEKDPNDVE ENQSSNTQTQ EKS....... .......... .......... L03781 ACGSGESGSD VKSEASATTT MEE....... .......... .......... U26026 ACAAEPSSDA VSTTSGTTTV TDN....... .......... .......... X65877 VFGKVDDGKS SEAQSQATTS EAE....... .......... .......... K02320 VFGKVDDGKS SDAQSQATAS EAE....... .......... .......... K02315 VFGKVDDGKS SDAQSQATAS EAE....... .......... .......... M12896 VFGNTDEPKP DAPASDTETT SEA....... .......... .......... X65878 VCGTTDEPKP DAPPSDTETT SEA....... .......... .......... L21195 .....PEFVL QNADYCRKKG HDS....... .......... .......... L15228 .....SEFVL QNSDHCGKKG HDT....... .......... .......... A47425 .....SEFVL QNSDHCGKKG HDT....... .......... .......... M83181 .......... .......... .......... .......... .......... A35181 .......... .......... .......... .......... .......... L06803 .......... .......... .......... .......... .......... A47174 .......... .......... .......... .......... .......... X95604 .......... .......... .......... .......... .......... M13299 .......... .........V GPN....... .......... .......... L11864 .......... .......... .......... .......... .......... M92038 .......... .....SSSQV SPA....... .......... .......... A45229 .......... .........V SPA....... .......... .......... B45229 .......... .........V SPA....... .......... .......... M63632 .......... .......SPV SPA....... .......... .......... U22180 .......... .........V APA....... .......... .......... S75720 .......... ....GLRNKV MPAHPV.... .......... .......... M92036 .......... .........V APA....... .......... .......... M62903 .......... .........V SPA....... .......... .......... K03494 .......... .........V SPA....... .......... .......... Z68193 .......... .......SSV SPA....... .......... .......... M17730 .......... .......... TAA....... .......... .......... X65880 .......... .......... SAA....... .......... .......... M17718 .......... .........T TAA....... .......... .......... X65879 .......... .........T TAA....... .......... .......... X07797 QAAYQP...P PPPQGYPPQG YPPQGAYPPP QGYPPQGYPP QGYPPQGYPP X70498 QAAYPPQGYA PPPQGYPPQG YPPQGY..PP QGYPPQGYPP ...PPQGAPP D50584 .......... .......... .......... .......... .......... D50583 .......... .......... .......... .......... .......... L03781 .......... ......KPKI PEA....... .......... .......... U26026 .......... ........EK SNA....... .......... .......... X65877 .......... .......... SKA....... .......... .......... K02320 .......... .......... SKA....... .......... .......... K02315 .......... .......... SKA....... .......... .......... M12896 .......... .........D SKA....... .......... .......... X65878 .......... .........E SKD....... .......... .......... L21195 .......... .......... ..... L15228 .......... .......... ..... A47425 .......... .......... ..... M83181 .......... .......... ..... A35181 .......... .......... ..... L06803 .......... .......... ..... A47174 .......... .......... ..... X95604 .......... .......... ..... M13299 .......... .......... ..... L11864 .......... .......... ..... M92038 .......... .......... ..... A45229 .......... .......... ..... B45229 .......... .......... ..... M63632 .......... .......... ..... U22180 .......... .......... ..... S75720 .......... .......... ..... M92036 .......... .......... ..... M62903 .......... .......... ..... K03494 .......... .......... ..... Z68193 .......... .......... ..... M17730 .......... .......... ..... X65880 .......... .......... ..... M17718 .......... .......... ..... X65879 .......... .......... ..... X07797 QGAPPQVEAP QGAPPQGVDN QAYQA X70498 QGAPP..... .AAPPQGVDN QAYQA D50584 .......... .......... ..... D50583 .......... .......... ..... L03781 .......... .......... ..... U26026 .......... .......... ..... X65877 .......... .......... ..... K02320 .......... .......... ..... K02315 .......... .......... ..... M12896 .......... .......... ..... X65878 .......... .......... ..... ALTER-1.3.4/alter-web/src/main/resources/muscle.phy000066400000000000000000000634501300536243200220150ustar00rootroot0000000000000035 675 L21195 ---------- MMDVNSSGRP DLYGHLRSFL LPEVGRGLPD LSPDGGADPV L15228 ---------- ---------- ---------- ---------- -----MPHLL A47425 ---------- ---------- ---------- ---------- -----MPHLL M83181 ---------- -------MDV LSPGQGNNTT SPPAPFETGG --NTTGISDV A35181 ---------- -------MDV FSFGQGNNTT ASQEPFGTGG --NVTSISDV L06803 MANFTFGDLA LDVARMGGLA STPSGLRSTG LTTPGLSPTG LVTSDFNDSY A47174 MANFTFGDLA LDVARMGGLA STPSGLRSTG LTTPGLSPTG LVTSDFNDSY X95604 ---------- --------ME GAEGQEELDW EALYLRLPLQ -NCSWNSTGW M13299 ---------- ---------- ------MRKM SEEEFYLFKN -----ISSVG L11864 ---------- ---------- ----MKQVPE FHEDFYIPIP LDINNLSAYS M92038 ---------- ---------- ------MNGT EGINFYVPMS --NKTGVVRS A45229 ---------- ---------- ------MNGT EGKNFYVPMS --NRTGLVRS B45229 ---------- ---------- ------MNGT EGNNFYVPLS --NRTGLVRS M63632 ---------- ---------- ------MNGT EGDNFYVPFS --NKTGLARS U22180 ---------- ---------- ------MNGT EGPNFYVPFS --NITGVVRS S75720 ---------- ---------- ---------- -----MSSNS SQAPPNGTPG M92036 ---------- ---MTEAWNV AVFAARRSRD DDDTTRGSVF TYTNTNNTRG M62903 ---------- -----MAAWE AAFAARRRHE EEDTTRDSVF TYTNSNNTRG K03494 ---------- --MAQQWSLQ RLAGRHPQDS YEDSTQSSIF TYTNSNSTRG Z68193 ---------- --MAQQWSLQ RLAGRHPQDS YEDSTQSSIF TYTNSNSTRG M17730 ---------- MEPLCNASEP PLRPEARSSG NGDLQFLGWN -VPPDQIQYI X65880 ---------M DALCNASEPP LRPEARMSSG SDELQFLGWN -VPPDQIQYI M17718 ------MESG NVSSSLFGNV STALRPEARL SAETRLLGWN -VPPEELRHI X65879 -------MEY HNVSSVLGNV SSVLRPDARL SAESRLLGWN -VPPDELRHI X07797 ---------- ---------- -------MVE STTLVNQTWW YNPTVD---I X70498 ---------- ---------- --------MG RDLRDNETWW YNPSIVVH-- D50584 ---------- -MTNATGPQM AYYGAASMDF GYPEGVSIVD FVRPEIKPYV D50583 ---------- -MANVTGPQM AFYGSGAATF GYPEGMTVAD FVPDRVKHMV L03781 ---------- --------MA NQLSYSSLGW PYQPNASVVD TMPKEMLYMI U26026 ---------- --MIAVSGPS YEAFSYGGQA RFNNQTVVDK -VPPDMLHLI X65877 ---------- -----MDSFA AVATQLGPQF AAPSNGSVVD KVTPDMAHLI K02320 ---------- -----MESFA VAAAQLGPHF APLSNGSVVD KVTPDMAHLI K02315 ---------- -----MESFA VAAAQLGPHF APLSNGSVVD KVTPDMAHLI M12896 --------ME RSHLPETPFD LAHSGPRFQA QSSGNGSVLD NVLPDMAHLV X65878 -------MER SLLPEPPLAM ALLGPRFEAQ TGGNRSVLDN -VLPDMAPLV AGSWAPHLLS EVTASPAPT- ---------- ----WDAPPD NASGCGEQIN YGRVEKVVIG SGFL------ EVTASPAPT- ---------- ----WDAPPD NVSGCGEQIN YGRVEKVVIG SGFL------ EVTASPAPT- ---------- ----WDAPPD NVSGCGEQIN YGRVEKVVIG TVSY------ ---------- ---------- ---------- ---------- -----QVITS TFSY------ ---------- ---------- ---------- ---------- -----QVITS GLTGQFINGS HSSRSRDNAS ANDTSATNMT DDRYW----- ------SLTV YSHEHLVLTS GLTGQFINGS HSSRSRDNAS ANDTSATNMT DDRYW----- ------SLTV YSHEHLVLTS EPNW------ NVTVVPNTT- ---------- ----W----- WQASAPFDTP AALVRAAAKA PWDG------ PQY-HIAPV- ---------- ----W----- ---------- ----AFYLQA PFLV------ PQDHLGNQG- ---------- ----I----- ---------- -----FMAMS PFEY------ PQYYLAEP-- ---------- ----W----- ---------- ----KYRLVC PFEY------ PQYYLAEP-- ---------- ----W----- ---------- ----QFKILA PFEY------ PQYYLAEP-- ---------- ----W----- ---------- ----QFKLLA PYEY------ PQYYLAEP-- ---------- ----W----- ---------- ----KYSALA PFEQ------ PQYYLAEP-- ---------- ----W----- ---------- ----QFSMLA PFDG------ PQWPYQAPQ- ---------- ----S----- ---------- ----TYVGVA PFEG------ PNY-HIAPR- ---------- ----W----- ---------- ----VYNLVS PFEG------ PNY-HIAPR- ---------- ----W----- ---------- ----VYNLTS PFEG------ PNY-HIAPR- ---------- ----W----- ---------- ----VYHLTS PFEG------ PNY-HIAPR- ---------- ----W----- ---------- ----VYHLTS PEHW------ LTQLEPPAS- ---------- ----M----- ---------- -----HYMLG PEHW------ LTQLEPPAS- ---------- ----M----- ---------- -----HYMLG PEHW------ LTYPEPPES- ---------- ----M----- ---------- -----NYLLG PEHW------ LIYPEPPES- ---------- ----M----- ---------- -----NYLLG HPHW------ AKFDPIPDA- ---------- ----V----- ---------- -----YYSVG -PHW------ REFDQVPDA- ---------- ----V----- ---------- -----YYSLG HQHW------ YNYPPVNPM- ---------- ----W----- ---------- -----HYLLG LDHW------ YNYPPVNPM- ---------- ----W----- ---------- -----HYLLG HEHW------ YAFPPMNPL- ---------- ----W----- ---------- -----YSILG DANW------ YQYPPLNPM- ---------- ----W----- ---------- -----HGILG SPYW------ DQFPAMDPI- ---------- ----W----- ---------- -----AKILT SPYW------ NQFPAMDPI- ---------- ----W----- ---------- -----AKILT SPYW------ NQFPAMDPI- ---------- ----W----- ---------- -----AKILT NPYW------ SRFAPMDPM- ---------- ----M----- ---------- -----SKILG NPHW------ SRFAPMDPT- ---------- ----M----- ---------- -----SKILG SILTLITLLT IAGNCLVVIS VCFVKKLRQP SNYLIVSLAL ADLSV-AVAV MPFVSVTDLI SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL ADLSV-AVAV MPFVSVTDLI SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL ADLSV-AVAV MPFVSVTDLI LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV TDLMV-SVLV LPMAALYQVL LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV TDLMV-SVLV LPMAALYQVL VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV ADLMV-AVLV MPLSVVSEIS VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV ADLMV-AVLV MPLSVVSEIS VVLGLLILAT VVGNVFVIAA ILLERHLRSA ANNLILSLAV ADLLV-ACLV MPLGAVYEVV AFMGTVFLIG FPLNAMVLVA TLRYKKLRQP LNYILVNVSF GGFLLCIFSV FPVFVASCN- VFMFFIFIGG ASINILTILC TIQFKKLRSH LNYILVNLSI ANLFV-AIFG SPLSFYSFFN CYIFFLISTG LPINLLTLLV TFKHKKLRQP LNYILVNLAV ADLFM-ACFG FTVTFYTAWN LYLFFLMSMG LPINGLTLVV TAQHKKLRQP LNFILVNLAV AGTIM-VCFG FTVTFYTAIN VYMFFLICLG LPINGLTLIC TAQHKKLRQP LNFILVNLAV AGAIM-VCFG FTVTFYTAIN AYMFFLILVG FPVNFLTLFV TVQHKKLRTP LNYILLNLAM ANLFM-VLFG FTVTMYTSMN AYMFLLIVLG FPINFLTLYV TVQHKKLRTP LNYILLNLAV ADLFM-VFGG FTTTLYTSLH VLMGTVVACA SVVNGLVIVV SICYKKLRSP LNYILVNLAV ADLLV-TLCG SSVSLSNNIN FFMIIVVIAS CFTNGLVLVA TAKFKKLRHP LNWILVNLAF VDLVE-TLVA STISVFNQIF VWMIFVVAAS VFTNGLVLVA TWKFKKLRHP LNWILVNLAV ADLGE-TVIA STISVINQIS VWMIFVVIAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV ADLAE-TVIA STISVVNQVY VWMIFVVTAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV ADLAE-TVIA STISIVNQVS VFYIFLFCAS TVGNGMVIWI FSTSKSLRTP SNMFVLNLAV FDLIM--CLK APIF--NSFH VFYIFLFFAS TLGNGMVIWI FSTSKSLRTP SNMFVLNLAV FDLIM--CLK APIFIYNSFH TLYIFFTLMS MLGNGLVIWV FSAAKSLRTP SNILVINLAF CDFMM--MVK TPIFIYNSFH TLYIFFTVIS MIGNGLVMWV FSAAKSLRTP SNILVINLAF CDFMM--MIK TPIFIYNSFH IFIGVVGIIG ILGNGVVIYL FSKTKSLQTP ANMFIINLAM SDLSFSAING FPLKTISAFM IFIGICGIIG CGGNGIVIYL FTKTKSLQTP ANMFIINLAF SDFTFSLVNG FPLMTISCFL VIYLFLGTVS IFGNGLVIYL FNKSAALRTP ANILVVNLAL SDLIM-LTTN VPFFTYNCFS VVYLFLGVIS IAGNGLVIYL YMKSQALKTP ANMLIVNLAL SDLIM-LTTN FPPFCYNCFS VAMIILGIIC VLGNGMVIYL MMTTKSLRTP TNLLVVNLAF SDFCM-MAFM MPTMTSNCFA FVIGMLGFVS AMGNGMVVYI FLSTKSLRTP SNLFVINLAI SNFLM-MFCM SPPMVINCYY AYMIIIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGI-MITN TPMMGINLYF AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGI-MITN TPMMGINLYF AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGI-MITN TPMMGINLYF LFTLAIMIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF SDFCM-MASQ SPVMIINFYY LFTLVILIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF SDFCM-MASQ SPVMIINFYY GGKWI--FGH FFCNVFIAMD VMCCTASIMT LCVISIDRYL GITRPLTYPV RQNGKCMAKM GGKWI--FGH FFCNVFIAMD VMCCTASIMT LCVISIDRYL GITRPLTYPV RQNGKCMAKM GGKWI--FGH FFCNVFIAMD VMCCTASIMT LCVISIDRYL GITRPLTYPV RQNGKCMAKM -NKWT--LGQ VTCDLFIALD VLCCTSSILH LCAIALDRYW AITDPIDYVN KRTPRRAAAL -NKWT--LGQ VTCDLFIALD VLCCTSSILH LCAIALDRYW AITDPIDYVN KRTPRRAAAL -KVWF--LHS EVCDMWISVD VLCCTASILH LVAIAMDRYW AVTS-IDYIR RRSARRILLM -KVWF--LHS EVCDMWISVD VLCCTASILH LVAIAMDRYW AVTS-IDYIR RRSARRILLM -QRWT--LGP ELCDMWTSGD VLCCTASILH LVAIALDRYW AVTN-IDYIH ASTAKRVGMM -GYFV--FGR HVCALEGFLG TVAGLVTGWS LAFLAFERYI VICKPFGN-F RFSSKHALTV -RYFI--FGA TACKIEGFLA TLGGMVGLWS LAVVAFERWL VICKPLGN-F TFKTPHAIAG -GYFV--FGP VGCAVEGFFA TLGGQVALWS LVVLAIERYI VVCKPMGN-F RFSATHAMMG -GYFV--LGP TGCAVEGFMA TLGGEVALWS LVVLAIERYI VVCKPMGS-F KFSSSHAFAG -GYFA--LGP TGCAVEGFMA TLGGEVALWS LVVLAIERYI VVCKPMGS-F KFSSTHASAG -GYFV--FGP TMCSIEGFFA TLGGEVALWS LVVLAIERYI VICKPMGN-F RFGNTHAIMG -GYFV--FGP TGCNLEGFFA TLGGEIGLWS LVVLAIERYV VVCKPMSN-F RFGENHAIMG -GFFV--FGR RMCELEGFMV SLTGIVGLWS LAILALERYV VVCKPLGD-F QFQRRHAVSG -GYFI--LGH PLCVIEGYVV SSCGITGLWS LAIISWERWF VVCKPFGN-I KFDSKLAIIG -GYFI--LGH PMCVVEGYTV SACGITALWS LAIISWERWF VVCKPFGN-I KFDGKLAVAG -GYFV--LGH PMCVLEGYTV SLCGITGLWS LAIISWERWM VVCKPFGN-V RFDAKLAIVG -GYFV--LGH PMCVLEGYTV SLCGITGLWS LAIISWERWL VVCKPFGN-V RFDAKLAIVG -RGFAIYLGN TWCQIFASIG SYSGIGAGMT NAAIGYDRYN VITKPMN--R NMTFTKAVIM -RGFA--LGN TWCQIFASIG SYSGIGAGMT NAAIGYDRYN VITKPMN--R NMTFTKAVIM -QGYA--LGH LGCQIFGIIG SYTGIAAGAT NAFIAYDRFN VITRPMEG-- KMTHGKAIAM -QGYA--LGH LGCQIFGVIG SYTGIAAGAT NAFIAYDRYN VITRPMEG-- KMTHGKAIAM -KKWI--FGK VACQLYGLLG GIFGFMSINT MAMISIDRYN VIGRPMAASK KMSHRRAFLM -KKWI--FGF AACKVYGFIG GIFGFMSIMT MAMISIDRYN VIGRPMAASK KMSHRRAFIM GGVWM--FSP QYCEIYACLG AITGVCSIWL LCMISFDRYN IICNGFNG-P KLTTGKAVVF GGRWM--FSG TYCEIYAALG AITGVCSIWT LCMISFDRYN IICNGFNG-P KLTQGKATFM -ETWI--LGP FMCEVYGMAG SLFGCASIWS MVMITLDRYN VIVRGMAA-A PLTHKKATLL -ETWV--LGP LFCQIYAMLG SLFGCGSIWT MTMIAFDRYN VIVKGLSG-K PLSINGALIR -ETWV--LGP MMCDIYAGLG SAFGCSSIWS MCMISLDRYQ VIVKGMAG-R PMTIPLALGK -ETWV--LGP MMCDIYAGLG SAFGCSSIWS MCMISLDRYQ VIVKGMAG-R PM-------- -ETWV--LGP MMCDIYAGLG SAFGCSSIWS MCMISLDRYQ VIVKGMAG-R PMTIPLALGK -ETWV--LGP LWCDIYAGCG SLFGCVSIWS MCMIAFDRYN VIVKGING-T PMTIKTSIMK -ETWV--LGP LWCDIYAACG SLFGCVSIWS MCMIAFDRYN VIVKGING-T PMTIKTSIMK ILSVWLLSAS I-TLPPLFG- W-----AQNV NDDK-VCLIS QDF------- ---GYTIYST ILSVWLLSAS I-TLPPLFG- W-----AQNV NDDK-VCLIS QDF------- ---GYTIYST ILSVWLLSAS I-TLPPLFG- W-----AQNV NDDK-VCLIS QDF------- ---GYTIYST ISLTWLIGFL I-SIPPMLG- WRTPE-DRSD PDA---CTIS KDH------- ---GYTIYST ISLTWLIGFL I-SIPPMLG- WRTPE-DRSD PDA---CTIS KDH------- ---GYTIYST IMVVWIVALF I-SIPPLFG- WRD---PNND PDKTGTCIIS QDK------- ---GYTIFST IMVVWIVALF I-SIPPLFG- WRD---PNND PDKTGTCIIS QDK------- ---GYTIFST IACVWTVSFF V-CIAQLLG- WKDPDWNQRV SEDL-RCVVS QDV------- ---GYQIFAT VLATWTIGIG V-SIPPFFG- W-----SRFI PEGL-QCSCG PDWYTVGTKY RSESYTWFLF CILPWISALA A-SLPPLFG- W-----SRYI PEGL-QCSCG PDWYTTNNKY NNESYVMFLF IAFTWVMAFS C-AAPPLFG- W-----SRYM PEGM-QCSCG PDYYTHNPDY HNESYVLYMF IAFTWVMALA C-AAPPLFG- W-----SRYI PEGM-QCSCG PDYYTLNPDY NNESYVIYMF IAFTWVMAMA C-AAPPLVG- W-----SRYI PEGI-QCSCG PDYYTLNPEY NNESYVLYMF VAFTWIMALA C-AAPPLVG- W-----SRYI PEGM-QCSCG PDYYTLNPNF NNESYVVYMF VAFTWVMALA C-AAPPLVG- W-----SRYI PEGM-QCSCG IDYYTLKPEV NNESFVIYMF CAFTWGWALL W-SAPPLLG- W-----SSYV PEGL-RTSCG PNWYT--GGS NNNSYILSLF IVFSWVWAWG W-SAPPIFG- W-----SRYW PHGL-KTSCG PDVFSGSVEL GCQSFMLTLM ILFSWLWSCA W-TAPPIFG- W-----SRYW PHGL-KTSCG PDVFSGSSDP GVQSYMVVLM IAFSWIWAAV W-TAPPIFG- W-----SRYW PHGL-KTSCG PDVFSGSSYP GVQSYMIVLM IAFSWIWSAV W-TAPPIFG- W-----SRYW PHGL-KTSCG PDVFSGSSYP GVQSYMIVLM NIIIWLYCTP W-VVLPLTQF W-----DRFV PEGY-LTSCS FDYLS--DNF DTRLFVGTIF NIIIWLYCTP W-VVLPLTQF W-----DRFV PEGY-LTSCS FDYLS--DNF DTRLFVGTIF IIFIYMYATP W-VVACYTET W-----GRFV PEGY-LTSCT FDYLT--DNF DTRLFVACIF IIFIYLYATP W-VVACYTES W-----GRFV PEGY-LTSCT FDYLT--DNF DTRLFVACIF IIFVWMWSIV W-SVGPVFN- W-----GAYV PEGI-LTSCS FDYLS--TDP STRSFILCMY IIFVWLWSVL W-AIGPIFG- W-----GAYT LEGV-LCNCS FDYIS--RDS TTRSNILCMF ALISWVIAIG C-ALPPFFG- W-----GNYI LEGI-LDSCS YDYLT--QDF NTFSYNIFIF CGLAWVISVG W-SLPPFFG- W-----GSYT LEGI-LDSCS YDYFT--RDM NTITYNICIF LLFVWIWSGG W-TILPFFG- W-----SRYV PEGN-LTSCT VDYLT--KDW SSASYVVIYG IIAIWLFSLG W-TIAPMFG- W-----NRYV PEGN-MTACG TDYFN--RGL LSASYLVCYG IAYIWFMSTI WCCLAPVFG- W-----SRYV PEGN-LTSCG IDYLE--RDW NPRSYLIFYS ---------- --TIPLALG- ------KMYV PEGN-LTSCG IDYLE--RDW NPRSYLIFYS IAYIWFMSSI W-CLAPAFG- W-----SRYV PEGN-LTSCG IDYLE--RDW NPRSYLIFYS ILFIWMMAVF W-TVMPLIG- W-----SAYV PEGN-LTACS IDYMT--RMW NPRSYLITYS IAFIWMMAVF W-TIMPLIG- W-----SSYV PEGN-LTACS IDYMT--RQW NPRSYLITYS AVAFYIPMSV MLFMYYQIYK AARKSAAK-- ----HKFPGF PRVEPDSV-- ---IALNGIV AVAFYIPMSV MLFMYYQIYK AARKSAAK-- ----HKFPGF PRVQPESV-- ---ISLNGVV AVAFYIPMSV MLFMYYQIYK AARKSAAK-- ----HKFPGF PRVQPESV-- ---ISLNGVV FGAFYIPLLL MLVLYGRIFR AARFRIRKTV KKVEKTGADT RHGASPAPQP KKSVNGESGS FGAFYIPLLL MLVLYGRIFR AARFRIRKTV RKVEKKGAGT SLGTSSAPPP KKSLNGQPGS VGAFYLPMLV MMIIYIRIWL VARSRIRK-- ----DKFQMT KARLKTEET- ---TLVASPK VGAFYLPMLV MMIIYIRIWL VARSRIRK-- ----DKFQMT KARLKTEET- ---TLVASPK ASSFYVPVLI ILILYWRIYQ TARKRIRR-- ----RRGATA RGGVGPPPVP AGGALVAGGG IFCFIVPLSL ICFSYTQLLR ALKAVAAQ-- ----QQESAT TQ-------- ---------- CFCFAVPFGT IVFCYGQLLI TLKLAAKA-- ----QADSAS TQ-------- ---------- VIHFIIPVVV IFFSYGRLIC KVREAAAQ-- ----QQESAT TQ-------- ---------- VCHFILPVAV IFFTYGRLVC TVKAAAAQ-- ----QQDSAS TQ-------- ---------- ICHFILPVTI IFFTYGRLVC TVKAAAAQ-- ----QQDSAS TQ-------- ---------- VVHFLVPFVI IFFCYGRLLC TVKEAAAA-- ----QQESAS TQ-------- ---------- VVHFTIPMIV IFFCYGQLVF TVKEAAAQ-- ----QQESAT TQ-------- ---------- VTCFVLPLSL ILFSYTNLLL TLRAAAAQ-- ----QKEADT TQ-------- ---------- ITCCFLPLFI IIVCYLQVWM AIRAVAAQ-- ----QKESES TQ-------- ---------- VTCCFFPLAI IILCYLQVWL AIRAVAAQ-- ----QKESES TQ-------- ---------- VTCCITPLSI IVLCYLQVWL AIRAVAKQ-- ----QKESES TQ-------- ---------- VTCCIIPLAI IMLCYLQVWL AIRAVAKQ-- ----QKESES TQ-------- ---------- FFSFVCPTLM ILYYYSQIVG HVFSHEKA-- ----LREQAK KMNVESLR-- ---------- LFSFVVPTLM ILYYYSQIVG HVFNHEKA-- ----LREQAK KMNVESLR-- ---------- FFSFVCPTTM ITYYYSQIVG HVFSHEKA-- ----LRDQAK KMNVESLR-- ---------- FFSFVCPTTM ITYYYSQIVG HVFSHEKA-- ----LRDQAK KMNVDSLR-- ---------- FCGFMLPIII IAFCYFNIVM SVSNHEKE-- ----MAAMAK RLNAKELR-- ---------- ILGFFGPILI IFFCYFNIVM SVSNHEKE-- ----MAAMAK RLNAKELR-- ---------- VFDYFLPAAI IVFSYVFIVK AIFAHEAA-- ----MRAQAK KMNVSTLR-- ---------- IFDFFLPASV IVFSYVFIVK AIFAHEAA-- ----MRAQAK KMNVTNLR-- ---------- LAVYFLPLIT MIYCYFFIVH AVAEHEKQ-- ----LREQAK KMNVASLR-- ---------- IWVYFVPLFL IIYSYWFIIQ AVAAHEKN-- ----MREQAK KMNVASLR-- ---------- IFVYYIPLFL ICYSYWFIIA AVSAHEKA-- ----MREQAK KMNVKSLR-- ---------- IFVYYIPLFL ICYSYWFIIA AVSAHEKA-- ----MREQAK KMNVKSLR-- ---------- IFVYYIPLFL ICYSYWFIIA AVSAHEKA-- ----MREQAK KMNVKSLR-- ---------- LFVYYTPLFL ICYSYWFIIA AVAAHEKA-- ----MREQAK KMNVKSLR-- ---------- LFVYYTPLFM ICYSYWFIIA TVAAHEKA-- ----MRDQAK KMNVKSLR-- ---------- KLQKEVEECA NLSRLLKH-- ---------- ---------- ---------- ---------- KLQKEVEECA NLSRLLKH-- ---------- ---------- ---------- ---------- KLQKEVEECA NLSRLLKH-- ---------- ---------- ---------- ---------- RNWRLGVESK AGGAL--CAN GAVRQGDDGA ALEVIEVHRV GNSKEHLPLP SEAGPTPCAP GDWRRCAENR AVGTP--CTN GAVRQGDDEA TLEVIEVHRV GNSKEHLPLP SESGSNSYAP TEYSVVSDCN GCNSPDSTTE KKKRRAPFKS YGCSPRPERK KNRAKKLP-E NANGVNSNSS TEYSVVSDCN GCNSPDSTTE KKKRRAPFKS YGCSPRPERK KNRAKKLP-E NANGVNSNSS SGGIAAAVVA VIGRPLPTIS ETTTTGFTNV SSNNTSPEKQ ---------S CANGLEADPP ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- -------ERK NISIFKREQK ---------- ---------- ---------- ---------- -------ERK NISIFKREQK ---------- ---------- ---------- ---------- -------ERK NISIFKREQK AS-------- ---------- --------FE RK-------- --NERNAEAK RKMALARERK AC-------- ---------- --------LE RK-------- --NERNAEAK RKMALARERK SSERLKQIQI ETAEAFANGC AEEASIAMLE RQCNNGKKIS SNDTPYSRTR EKLELKRERK SSERLKQIQI ETAEAFANGC AEEASIAMLE RQCNNGKKIS SNDTPYSRTR EKLELKRERK TT-------- ------GYGA VAAAYYPSLV RR-------- -------KPK EAADSKRERK ---------- ---------- ---------- ---------- ---------- -----KAERE ---------- ---------- ---------- ---------- ---------- -----KAERE ---------- ---------- ---------- ---------- ---------- -----KAEKE ---------- ---------- ---------- ---------- ---------- -----KAERE ---------- ---------- ---------- ---------- ---------- -----KAERE ---------- ---------- ---------- ---------- ---------- -----KAEKE ---------- ---------- ---------- ---------- ---------- -----KAEKE ---------- ---------- ---------- ---------- ---------- -----RAERE ---------- ---------- ---------- ---------- ---------- -----KAERE ---------- ---------- ---------- ---------- ---------- -----KAEKE ---------- ---------- ---------- ---------- ---------- -----KAEKE ---------- ---------- ---------- ---------- ---------- -----KAEKE ---------- ---------- ---------- ---------- -------SNV DKSKETAEIR ---------- ---------- ---------- ---------- -------SNV DKSKETAEIR ---------- ---------- ---------- ---------- -------SNV DKNKETAEIR ---------- ---------- ---------- ---------- -------SNV DKSKEAAEIR ---------- ---------- ---------- ---------- ---------K AQAGASAEMK ---------- ---------- ---------- ---------- ---------K AQAGANAEMR ---------- ---------- ---------- ---------- --------SN EADAQRAEIR ---------- ---------- ---------- ---------- --------SN EAETQRAEIR ---------- ---------- ---------- ---------- -------ANA DQQKQSAECR ---------- ---------- ---------- ---------- --------SS ENQNTSAECK ---------- ---------- ---------- ---------- --------SS EDADKSAEGK ---------- ---------- ---------- ---------- --------SS EDAEKSAEGK ---------- ---------- ---------- ---------- --------SS EDAEKSAEGK ---------- ---------- ---------- ---------- --------SS EDCDKSAEGK ---------- ---------- ---------- ---------- --------SS EDCDKSAENK AATTLGIIVG AFTVCWLPFF LLSTARPFIC GTSCSC-IPL WVERTFLWLG YANSLINPFI AATTLGIIVG AFTVCWLPFF LLSTARPFIC GTSCSC-IPL WVERTCLWLG YANSLINPFI AATTLGIIVG AFTVCWLPFF LLSTARPFIC GTSCSC-IPL WVERTCLWLG YANSLINPFI TVKTLGIIMG TFILCWLPFF IVALVLPF-- -CESSCHMPT LLGAIINWLG YSNSLLNPVI TVKTLGIIMG TFILCWLPFF IVALVLPF-- -CESSCHMPA LLGAIINWLG YSNSLLNPVI AARTLAIITG AFLICWLPFF IIALIGPF-- -VDPEG-IPP FARSFVLWLG YFNSLLNPII AARTLAIITG AFLICWLPFF IIALIGPF-- -VDPEG-IPP FARSFVLWLG YFNSLLNPII AAKTLAIITG AFVACWLPFF VLAILVPT-- -CDCE--VSP VLTSLSLWLG YFNSTLNPVI VSRMVVVMVG SFCVCYVPYA AFAMYMVN-- -NRNHG-LDL RLVTIPSFFS KSACIYNPII VTKMVVVMVL GFLVCWAPYA SFSLWIVS-- -HRGEE-FDL RMATIPSCLS KASTVYNPVI VTRMVILMVL GFMLAWTPYA VVAFWIFT-- -NKGAD-FTA TLMAVPAFFS KSSSLYNPII VTKMVILMVF GFLIAWTPYA TVAAWIFF-- -NKGAD-FSA KFMAIPAFFS KSSALYNPVI VTKMVILMVL GFLVAWTPYA TVAAWIFF-- -NKGAA-FSA QFMAIPAFFS KTSALYNPVI VTRMVVLMVI GFLVCWVPYA SVAFYIFT-- -HQGSD-FGA TFMTLPAFFA KSSALYNPVI VTRMVIIMVI FFLICWLPYA SVAMYIFT-- -HQGSN-FGP IFMTLPAFFA KTASIYNPII VTRMVIVMVM AFLLCWLPYS TFALVVAT-- -HKGII-IQP VLASLPSYFS KTATVYNPII VSRMVVVMIV AFCICWGPYA SFVSFAAA-- -NPGYA-FHP LAAALPAYFA KSATIYNPVI VSRMVVVMIV AYCFCWGPYT FFACFAAA-- -NPGYA-FHP LAAALPAYFA KSATIYNPII VTRMVVVMVL AFCFCWGPYA FFACFAAA-- -NPGYP-FHP LMAALPAFFA KSATIYNPVI VTRMVVVMIF AYCVCWGPYT FFACFAAA-- -NPGYA-FHP LMAALPAYFA KSATIYNPVI IAKAAITICF LFFVSWTPYG VMSLIGAF-- -GDKSL-LTQ GATMIPACTC KLVACIDPFV IAKAAITICF LFFVSWTPYG VMSLIGAF-- -GDKSL-LTP GATMIPACTC KLVACIEPFV IAKAAITICF LFFCSWTPYG VMSLIGAF-- -GDKTL-LTP GATMIPACAC KMVACIDPFV IAKAAITICF LFFASWTPYG VMSLIGAF-- -GDKTL-LTP GATMIPACTC KMVACIDPFV LAKISMVIIT QFMLSWSPYA IIALLAQF-- -GPAEW-VTP YAAELPVLFA KASAIHNPIV LAKISIVIVS QFLLSWSPYA VVALLAQF-- -GPLEW-VTP YAAQLPVMFA KASAIHNPMI IAKTALVNVS LWFICWTPYA LISLKGVM-- -GDTSG-ITP LVSTLPALLA KSCSCYNPFV IAKTALVNVS LWFICWTPYA AITIQGLL-- -GNAEG-ITP LLTTLPALLA KSCSCYNPFV LAKVAMMTVG LWFMAWTPYL IISWAGVF-- -SSGTR-LTP LATIWGSVFA KANSCYNPIV LAKVALMTIS LWFMAWTPYL VINFSGIF-- --NLVK-ISP LFTIWGSLFA KANAVYNPIV LAKVALVTIS LWFMAWTPYL VINCMGLF-- --KFEG-LTP LNTIWGACFA KSAACYNPIV LAKVALVTIT LWFMAWTPYL VINCMGLF-- --KFEG-LTP LNTIWGACFA KSAACYNPIV LAKVALVTIT LWFMAWTPYL VINCMGLF-- --KFEG-LTP LNTIWGACFA KSAACYNPIV LAKVALTTIS LWFMAWTPYL VICYFGLF-- --KIDG-LTP LTTIWGATFA KTSAVYNPIV LAKVALTTIS LWFMAWTPYL IICYFGLF-- --KIDG-LTP LTTIWGATFA KTSAVYNPIV YAFFNRDLRT TYRSLLQC-Q YRNINRKLSA AGMHEALKLA ERPER----- ---------- YAFFNRDLRP TSRSLLQC-Q YRNINRKLSA AGMHEALKLA ERPER----- ---------- YAFFNRDLRT TYRSLLQC-Q YRNINRKLSA AGMHEALKLA ERPER----- ---------- YAYFNKDFQN AFKKIIKC-K FCRQ------ ---------- ---------- ---------- YAYFNKDFQN AFKKIIKC-K FCRR------ ---------- ---------- ---------- YTIFSPEFRS AFQKILFG-K YRRGHR---- ---------- ---------- ---------- YTIFSPEFRS AFQKILFG-K YRRGHR---- ---------- ---------- ---------- YTVFSPEFRH AFQRLLCG-R RVRRRRAPQ- ---------- ---------- ---------- YCFMNKQFQA CIMKMVCG-K AMTDESDTCS SQKTEVSTVS STQ------- ---------- YVLMNKQFRS CMMKMVCG-K NIEEDEASTS SQVTQVSSVA PEK------- ---------- YVLMNKQFRN CMITTICC-G KNPFGDEDVS STVSQSKTEV SSV------- ---------- YVLLNKQFRN CMLTTIFC-G KNPLGDDESS TVSTSKTEVS S--------- ---------- YVLLNKQFRS CMLTTLFC-G KNPLGDEESS TVSTSKTEVS S--------- ---------- YILMNKQFRN CMITTLCC-G KNPLGDDESG ASTSKTEVSS VST------- ---------- YIMMNKQFRN CMLTSLCC-G KNPLGDDEAS ATASKTETSQ ---------- ---------- YVFMNKQFQS CLLEMLCC-G YQPQRTGKAS PGTPGPHADV TAA------- ---------- YVFMNRQFRN CIMQLFG--K KVDDGSEAST TSRTEVSSVS NSS------- ---------- YVFMNRQFRN CILQLF---G KKVDDGSEVS TSRTEVSSVS NSS------- ---------- YVFMNRQFRN CILQLFG--K KVDDGSELSS ASKTEVSSVS S--------- ---------- YVFMNRQFRN CILQLF---- --GKKVDDGS ELSSASKTEV SSV------- ---------- YAISHPRYRL ELQKRCPWLG VNEKSGEISS AQSTTTQEQ- QQT------- ---------- YAISHPRYRM ELQKRCPWLG VNEKSGEASS AQSTTTQEQT QQT------- ---------- YAISHPRYRM ELQKRCPW-L ALNEKAPESS AVASTSTTQE PQQ------- ---------- YAISHPRYRM ELQKRCPW-L AISEKAPESR AAISTSTTQE QQQ------- ---------- YSVSHPKFRE AIQTTFPWLL TCCQFDEKEC EDANDAEEEV VASER--GGE SRDAAQMKEM YSVSHPKFRE AISQTFPWVL TCCQFDDKET EDDKDAETEI PAGESSDAAP SADAAQMKEM YAISHPKYRL AITQHLPWFC VHETETKSND DSQSNSTVAQ DKA------- ---------- YAISHPKFRL AITQHLPWFC VHEKDPNDVE ENQSSNTQTQ EKS------- ---------- YGISHPRYKA ALYQRFPS-L ACGSGESGSD VKSEASATTT MEE------- ---------- YGISHPKYRA ALFAKFPS-L ACAAEPSSDA VSTTSGTTTV TDN------- ---------- YGISHPKYRL ALKEKCPC-C VFGKVDDGKS SEAQSQATTS EAE------- ---------- YGISHPKYRL ALKEKCPC-C VFGKVDDGKS SDAQSQATAS EAE------- ---------- YGISHPKYRL ALKEKCPC-C VFGKVDDGKS SDAQSQATAS EAE------- ---------- YGISHPKYRI VLKEKCPM-C VFGNTDEPKP DAPASDTETT SEA------- ---------- YGISHPNDRL VLKEKCPM-C VCGTTDEPKP DAPPSDTETT SEA------- ---------- ---------- -----PEFVL QNADYCRKKG HDS------- ---------- ---------- ---------- -----SEFVL QNSDHCGKKG HDT------- ---------- ---------- ---------- -----SEFVL QNSDHCGKKG HDT------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------V GPN------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- -----SSSQV SPA------- ---------- ---------- ---------- ---------- ---------V SPA------- ---------- ---------- ---------- ---------- ---------V SPA------- ---------- ---------- ---------- ---------- -------SPV SPA------- ---------- ---------- ---------- ---------- ---------V APA------- ---------- ---------- ---------- ---------- ----GLRNKV MPAHPV---- ---------- ---------- ---------- ---------- ---------V APA------- ---------- ---------- ---------- ---------- ---------V SPA------- ---------- ---------- ---------- ---------- ---------V SPA------- ---------- ---------- ---------- ---------- -------SSV SPA------- ---------- ---------- ---------- ---------- ---------- TAA------- ---------- ---------- ---------- ---------- ---------- SAA------- ---------- ---------- ---------- ---------- ---------T TAA------- ---------- ---------- ---------- ---------- ---------T TAA------- ---------- ---------- MAMMQKMQAQ QAAYQP---P PPPQGYPPQG YPPQGAYPPP QGYPPQGYPP QGYPPQGYPP MAMMQKMQQQ QAAYPPQGYA PPPQGYPPQG YPPQGY--PP QGYPPQGYPP ---PPQGAPP ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------KPKI PEA------- ---------- ---------- ---------- ---------- --------EK SNA------- ---------- ---------- ---------- ---------- ---------- SKA------- ---------- ---------- ---------- ---------- ---------- SKA------- ---------- ---------- ---------- ---------- ---------- SKA------- ---------- ---------- ---------- ---------- ---------D SKA------- ---------- ---------- ---------- ---------- ---------E SKD------- ---------- ---------- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- QGAPPQVEAP QGAPPQGVDN QAYQA QGAPP----- -AAPPQGVDN QAYQA ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ---------- ---------- ----- ALTER-1.3.4/alter-web/src/main/resources/probcons.aln000066400000000000000000001043601300536243200223200ustar00rootroot00000000000000PROBCONS version 1.1 multiple sequence alignment M17718 MESGNV-----------------------------------------S------------ X65879 MEYHNV-----------------------------------------S------------ M17730 MEPLCN-----------------------------------------A------------ X65880 MDALCN-----------------------------------------A------------ D50584 MTNATG-----------------------------------------P------------ D50583 MANVTG-----------------------------------------P------------ K02320 MESFAV-----------------------------------------A------------ K02315 MESFAV-----------------------------------------A------------ X65877 MDSFAA-----------------------------------------V------------ M12896 MERSHL-----------------------------------------P------------ X65878 MERSLL-----------------------------------------P------------ U26026 MIAVSG-----------------------------------------P------------ L03781 MANQLSY----------------------------------------S------------ X07797 MVESTTL----------------------------------------V------------ X70498 MGRDLR-----------------------------------------D------------ M63632 MNGTEG-----------------------------------------D------------ U22180 MNGTEG-----------------------------------------P------------ A45229 MNGTEG-----------------------------------------K------------ B45229 MNGTEG-----------------------------------------N------------ M92038 MNGTEG-----------------------------------------I------------ L11864 MKQVPEF---------------------------------------HE------------ M13299 MRKMSE-----------------------------------------E------------ K03494 MAQQWSL----------------------QRLAGRHPQDSYEDSTQSS------------ Z68193 MAQQWSL----------------------QRLAGRHPQDSYEDSTQSS------------ M92036 MTEAWNV----------------------AV-FAARRSRDDDDTTRGS------------ M62903 MAAWEAA-------------------------FAARRRHEEEDTTRDS------------ S75720 MSSNSSQ----------------------------------------------------- L15228 MPHLLS-----------------------------------------G------------ A47425 MPHLLS-----------------------------------------G------------ L21195 MMDVNSSGRPDLYGHLRSFLLPEVGRGLPDLSPDGGADPVAGSWAPHL------------ M83181 MDVLSP-----------------------------------------G------------ A35181 MDVFSF-----------------------------------------G------------ L06803 MANFTF-----------------------------------------G------------ A47174 MANFTF-----------------------------------------G------------ X95604 MEGAEG-----------------------------------------QEELDWEALYLRL * . : M17718 --------------SSLF-GNVSTALRP-----------EAR-L-----S---------- X65879 --------------S-VL-GNVSSVLRP-----------DAR-L-----S---------- M17730 --------------SE-------PPLRP-----------EAR-S-----S---------- X65880 --------------SE-------PPLRP-----------EAR-M-----S---------- D50584 --------------QMAYYG--AASMD-------------FG-Y----PE---------- D50583 --------------QMAFYG--SGAAT-------------FG-Y----PE---------- K02320 --------------A--------AQLGP-----------HFA-P----LS---------- K02315 --------------A--------AQLGP-----------HFA-P----LS---------- X65877 --------------A--------TQLGP-----------QFA-A----PS---------- M12896 --------------ETPF-DL--AHSGP-----------RFQ-A----QS---------- X65878 --------------EPPL-AM--ALLGP-----------RFE-A----QT---------- U26026 --------------SYEA-F--SYGGQ-------------AR-F-----N---------- L03781 --------------S----------LG-------------WP-Y----QP---------- X07797 --------------NQ----------T-------------W------------------- X70498 --------------NE----------T-------------W------------------- M63632 --------------N-------------------------FYVP----FS---------- U22180 --------------N-------------------------FYVP----FS---------- A45229 --------------N-------------------------FYVP----MS---------- B45229 --------------N-------------------------FYVP----LS---------- M92038 --------------N-------------------------FYVP----MS---------- L11864 --------------D-------------------------FYIPIPLDIN---------- M13299 --------------E-------------------------FYL-----FK---------- K03494 --------------I-------------------------FTYT----NS---------- Z68193 --------------I-------------------------FTYT----NS---------- M92036 --------------V-------------------------FTYT----NT---------- M62903 --------------V-------------------------FTYT----NS---------- S75720 -------------------------------------------A----PP---------- L15228 --------------FLEV------------------------------------------ A47425 --------------FLEV------------------------------------------ L21195 --------------LSEV------------------------------------------ M83181 --------------QG-------------------------------------------- A35181 --------------QG-------------------------------------------- L06803 --------------DLAL-DV--ARMGGLASTPSGLRSTGLTTP----GLSPTGLVTSDF A47174 --------------DLAL-DV--ARMGGLASTPSGLRSTGLTTP----GLSPTGLVTSDF X95604 PLQNCSWNSTGWEPNWNV------------------------------------------ * *: *********** ********** M17718 --------------------A-E--TRLL----GW-N--VPPEELRHIPEH-WLTY-PEP X65879 --------------------A-E--SRLL----GW-N--VPPDELRHIPEH-WLIY-PEP M17730 --------------------G-NGDLQFL----GW-N--VPPDQIQYIPEH-WLTQ-LEP X65880 --------------------SGSDELQFL----GW-N--VPPDQIQYIPEH-WLTQ-LEP D50584 ----------------------G--VS-I----VD-F--VRPEIKPYVHQH-WYNY-PPV D50583 ----------------------G--MT-V----AD-F--VPDRVKHMVLDH-WYNY-PPV K02320 ----------------------N--GS-V----VD-K--VTPDMAHLISPY-WNQF-PAM K02315 ----------------------N--GS-V----VD-K--VTPDMAHLISPY-WNQF-PAM X65877 ----------------------N--GS-V----VD-K--VTPDMAHLISPY-WDQF-PAM M12896 -------------------SG-N--GS-V----LD-N--VLPDMAHLVNPY-WSRF-APM X65878 -------------------GG-N--RS-V----LD-N--VLPDMAPLVNPH-WSRF-APM U26026 ----------------------N--QT-V----VD-K--VPPDMLHLIDAN-WYQY-PPL L03781 ----------------------N--AS-V----VD-T--MPKEMLYMIHEH-WYAF-PPM X07797 ------------------------------------W--YNP--TVDIHPH-WAKF-DPI X70498 ------------------------------------W--YNP--SIVVHPH-WREF-DQV M63632 ----------------------N--KT-G--------------L--ARSPYEYPQY-YLA U22180 ----------------------N--IT-G--------------V--VRSPFEQPQY-YLA A45229 ----------------------N--RT-G--------------L--VRSPFEYPQY-YLA B45229 ----------------------N--RT-G--------------L--VRSPFEYPQY-YLA M92038 ----------------------N--KT-G--------------V--VRSPFEYPQY-YLA L11864 ----------------------N--L-----------------S--AYSPFLVPQD-HLG M13299 ----------------------N--I-----------------S--SVGPWDGPQY-HIA K03494 ----------------------N--------------------S--TRGPFEGPNY-HIA Z68193 ----------------------N--------------------S--TRGPFEGPNY-HIA M92036 ----------------------N--------------------N--TRGPFEGPNY-HIA M62903 ----------------------N--------------------N--TRGPFEGPNY-HIA S75720 ----------------------N--------------------G--TPGPFDGPQWPYQA L15228 --------------------------T-ASPAPTW-D--APPDNVS--GCGEQINY-G-- A47425 --------------------------T-ASPAPTW-D--APPDNVS--GCGEQINY-G-- L21195 --------------------------T-ASPAPTW-D--APPDNAS--GCGEQINY-G-- M83181 ----------------------N--NT-TSPPAPF-E--T-GGNTT--GISD---V-T-- A35181 ----------------------N--NT-TASQEPF-G--T-GGNVT--SISD---V-T-- L06803 NDSYGLTGQFINGSHSSRSRDNA--SA-NDTSATN-M--T-DDRYW--SLTV---Y-S-- A47174 NDSYGLTGQFINGSHSSRSRDNA--SA-NDTSATN-M--T-DDRYW--SLTV---Y-S-- X95604 --------------------------T-VVPNTTWWQASAPFD---------TP-A-A-- ******************* . .: : . M17718 PESMNYLLGTLYIFFTLMSMLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMMMV--KT X65879 PESMNYLLGTLYIFFTVISMIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMMMI--KT M17730 PASMHYMLGVFYIFLFCASTVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCL--KA X65880 PASMHYMLGVFYIFLFFASTLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCL--KA D50584 NPMWHYLLGVIYLFLGTVSIFGNGLVIYLFNKSAALRTPANILVVNLALSDLIMLT-TNV D50583 NPMWHYLLGVVYLFLGVISIAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIMLT-TNF K02320 DPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMI-TNT K02315 DPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMI-TNT X65877 DPIWAKILTAYMIIIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMI-TNT M12896 DPMMSKILGLFTLAIMIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMA-SQS X65878 DPTMSKILGLFTLVILIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMA-SQS U26026 NPMWHGILGFVIGMLGFVSAMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLMMF-CMS L03781 NPLWYSILGVAMIILGIICVLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCMMA-FMM X07797 PDAVYYSVGIFIGVVGIIGILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGF X70498 PDAVYYSLGIFIGICGIIGCGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGF M63632 EPWKYSALAAYMFFLILVGFPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFMVL-FGF U22180 EPWQFSMLAAYMFLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVF-GGF A45229 EPWQFKILALYLFFLMSMGLPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIMVC-FGF B45229 EPWQFKLLAVYMFFLICLGLPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIMVC-FGF M92038 EPWKYRLVCCYIFFLISTGLPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFMAC-FGF L11864 NQGIFMAMSVFMFFIFIGGASINILTILCTIQFKKLRSHLNYILVNLSIANLFVAI-FGS M13299 PVWAFYLQAAFMGTVFLIGFPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCI-FSV K03494 PRWVYHLTSVWMIFVVIASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETV-IAS Z68193 PRWVYHLTSVWMIFVVTASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETV-IAS M92036 PRWVYNLVSFFMIIVVIASCFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVETL-VAS M62903 PRWVYNLTSVWMIFVVAASVFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGETV-IAS S75720 PQSTYVGVAVLMGTVVACASVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLVTL-CGS L15228 -RVEKVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAV-AVM A47425 -RVEKVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAV-AVM L21195 -RVEKVVIGSILTLITLLTIAGNCLVVISVCFVKKLRQPSNYLIVSLALADLSVAV-AVM M83181 -VSYQVITSLLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSV-LVL A35181 -FSYQVITSLLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSV-LVL L06803 -HEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAV-LVM A47174 -HEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAV-LVM X95604 -LVRAAAKAVVLGLLILATVVGNVFVIAAILLERHLRSAANNLILSLAVADLLVAC-LVM * .: *: * :: .::. . : M17718 PIFI-YNSFH-QG--YALGHLGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG-- X65879 PIFI-YNSFH-QG--YALGHLGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG-- M17730 PIF---NSFH-RGFAIYLGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR-- X65880 PIFI-YNSFH-RG--FALGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR-- D50584 PFFT-YNCFSGGV--WMFSPQYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-P D50583 PPFC-YNCFSGGR--WMFSGTYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-P K02320 PMMG-INLYF-ET--WVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-R K02315 PMMG-INLYF-ET--WVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-R X65877 PMMG-INLYF-ET--WVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-R M12896 PVMI-INFYY-ET--WVLGPLWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-T X65878 PVMI-INFYY-ET--WVLGPLWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-T U26026 PPMV-INCYY-ET--WVLGPLFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-K L03781 PTMT-SNCFA-ET--WILGPFMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-A X07797 PLKT-ISAFM-KK--WIFGKVACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASK X70498 PLMT-ISCFL-KK--WIFGFAACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASK M63632 TVTM-YTSMN-GY--FVFGPTMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-F U22180 TTTL-YTSLH-GY--FVFGPTGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-F A45229 TVTF-YTAIN-GY--FVLGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-F B45229 TVTF-YTAIN-GY--FALGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-F M92038 TVTF-YTAWN-GY--FVFGPVGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-F L11864 PLSF-YSFFN-RY--FIFGATACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-F M13299 FPVF-VASCN-GY--FVFGRHVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-F K03494 TISV-VNQVY-GY--FVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-V Z68193 TISI-VNQVS-GY--FVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-V M92036 TISV-FNQIF-GY--FILGHPLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-I M62903 TISV-INQIS-GY--FILGHPMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-I S75720 SVSL-SNNIN-GF--FVFGRRMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-F L15228 PFVSVTDLIG-GK--WIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPV A47425 PFVSVTDLIG-GK--WIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPV L21195 PFVSVTDLIG-GK--WIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPV M83181 PMAA-LYQVL-NK--WTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVN A35181 PMAA-LYQVL-NK--WTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVN L06803 PLSV-VSEIS-KV--WFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSI-DYIR A47174 PLSV-VSEIS-KV--WFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSI-DYIR X95604 PLGA-VYEVV-QR--WTLGPELCDMWTSGDVLCCTASILHLVAIALDRYWAVTNIDYI-H * * : * : : :*: : M17718 KMTHGKAIAMIIFIYMYATPW-VVACYTETWG-----RFVPEGY---LTSCTFDYLTDN- X65879 KMTHGKAIAMIIFIYLYATPW-VVACYTESWG-----RFVPEGY---LTSCTFDYLTDN- M17730 NMTFTKAVIMNIIIWLYCTPW-VVLPLTQFWD-----RFVPEGY---LTSCSFDYLSDN- X65880 NMTFTKAVIMNIIIWLYCTPW-VVLPLTQFWD-----RFVPEGY---LTSCSFDYLSDN- D50584 KLTTGKAVVFALISWVIAIGC-ALPPF-FGWG-----NYILEGI---LDSCSYDYLTQD- D50583 KLTQGKATFMCGLAWVISVGW-SLPPF-FGWG-----SYTLEGI---LDSCSYDYFTRD- K02320 PMTIPLALG----------------------K-----MYVPEGN---LTSCGIDYLERD- K02315 PMTIPLALGKIAYIWFMSSIW-CLAPA-FGWS-----RYVPEGN---LTSCGIDYLERD- X65877 PMTIPLALGKIAYIWFMSTIWCCLAPV-FGWS-----RYVPEGN---LTSCGIDYLERD- M12896 PMTIKTSIMKILFIWMMAVFW-TVMPL-IGWS-----AYVPEGN---LTACSIDYMTRM- X65878 PMTIKTSIMKIAFIWMMAVFW-TIMPL-IGWS-----SYVPEGN---LTACSIDYMTRQ- U26026 PLSINGALIRIIAIWLFSLGW-TIAPM-FGWN-----RYVPEGN---MTACGTDYFNRG- L03781 PLTHKKATLLLLFVWIWSGGW-TILPF-FGWS-----RYVPEGN---LTSCTVDYLTKD- X07797 KMSHRRAFLMIIFVWMWSIVW-SVGPV-FNWG-----AYVPEGI---LTSCSFDYLSTD- X70498 KMSHRRAFIMIIFVWLWSVLW-AIGPI-FGWG-----AYTLEGV---LCNCSFDYISRD- M63632 RFGNTHAIMGVAFTWIMALAC-AAPPL-VGWS-----RYIPEGM---QCSCGPDYYTLNP U22180 RFGENHAIMGVAFTWVMALAC-AAPPL-VGWS-----RYIPEGM---QCSCGIDYYTLKP A45229 KFSSSHAFAGIAFTWVMALAC-AAPPL-FGWS-----RYIPEGM---QCSCGPDYYTLNP B45229 KFSSTHASAGIAFTWVMAMAC-AAPPL-VGWS-----RYIPEGI---QCSCGPDYYTLNP M92038 RFSATHAMMGIAFTWVMAFSC-AAPPL-FGWS-----RYMPEGM---QCSCGPDYYTHNP L11864 TFKTPHAIAGCILPWISALAA-SLPPL-FGWS-----RYIPEGL---QCSCGPDWYTTNN M13299 RFSSKHALTVVLATWTIGIGV-SIPPF-FGWS-----RFIPEGL---QCSCGPDWYTVGT K03494 RFDAKLAIVGIAFSWIWAAVW-TAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSS Z68193 RFDAKLAIVGIAFSWIWSAVW-TAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSS M92036 KFDSKLAIIGIVFSWVWAWGW-SAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSV M62903 KFDGKLAVAGILFSWLWSCAW-TAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSS S75720 QFQRRHAVSGCAFTWGWALLW-SAPPL-LGWS-----SYVPEGL---RTSCGPNWYTGGS L15228 RQNGKCMAKMILSVWLLSASI-TLPPL-FGWA-----QNVNDDK---VCLISQD------ A47425 RQNGKCMAKMILSVWLLSASI-TLPPL-FGWA-----QNVNDDK---VCLISQD------ L21195 RQNGKCMAKMILSVWLLSASI-TLPPL-FGWA-----QNVNDDK---VCLISQD------ M83181 KRTPRRAAALISLTWLIGFLI-SIPPM-LGWR-----TPEDRSDPD-ACTISKD------ A35181 KRTPRRAAALISLTWLIGFLI-SIPPM-LGWR-----TPEDRSDPD-ACTISKD------ L06803 RRSARRILLMIMVVWIVALFI-SIPPL-FGWR-----DPNNDPDKTGTCIISQD------ A47174 RRSARRILLMIMVVWIVALFI-SIPPL-FGWR-----DPNNDPDKTGTCIISQD------ X95604 ASTAKRVGMMIACVWTVSFFV-CIAQL-LGWKDPDWNQRVSEDL---RCVVSQD------ : * * * : M17718 -FDTRLFVACIFFFSFVCPTTMITYYYSQIVGHVFSHEKALR------------------ X65879 -FDTRLFVACIFFFSFVCPTTMITYYYSQIVGHVFSHEKALR------------------ M17730 -FDTRLFVGTIFFFSFVCPTLMILYYYSQIVGHVFSHEKALR------------------ X65880 -FDTRLFVGTIFLFSFVVPTLMILYYYSQIVGHVFNHEKALR------------------ D50584 -FNTFSYNIFIFVFDYFLPAAIIVFSYVFIVKAIFAHEAAMR------------------ D50583 -MNTITYNICIFIFDFFLPASVIVFSYVFIVKAIFAHEAAMR------------------ K02320 -WNPRSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMR------------------ K02315 -WNPRSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMR------------------ X65877 -WNPRSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMR------------------ M12896 -WNPRSYLITYSLFVYYTPLFLICYSYWFIIAAVAAHEKAMR------------------ X65878 -WNPRSYLITYSLFVYYTPLFMICYSYWFIIATVAAHEKAMR------------------ U26026 -LLSASYLVCYGIWVYFVPLFLIIYSYWFIIQAVAAHEKNMR------------------ L03781 -WSSASYVVIYGLAVYFLPLITMIYCYFFIVHAVAEHEKQLR------------------ X07797 -PSTRSFILCMYFCGFMLPIIIIAFCYFNIVMSVSNHEKEMA------------------ X70498 -STTRSNILCMFILGFFGPILIIFFCYFNIVMSVSNHEKEMA------------------ M63632 NFNNESYVVYMFVVHFLVPFVIIFFCYGRLLCTVKEAAAAQQ------------------ U22180 EVNNESFVIYMFVVHFTIPMIVIFFCYGQLVFTVKEAAAQQQ------------------ A45229 DYNNESYVIYMFVCHFILPVAVIFFTYGRLVCTVKAAAAQQQ------------------ B45229 EYNNESYVLYMFICHFILPVTIIFFTYGRLVCTVKAAAAQQQ------------------ M92038 DYHNESYVLYMFVIHFIIPVVVIFFSYGRLICKVREAAAQQQ------------------ L11864 KYNNESYVMFLFCFCFAVPFGTIVFCYGQLLITLKLAAKAQA------------------ M13299 KYRSESYTWFLFIFCFIVPLSLICFSYTQLLRALKAVAAQQQ------------------ K03494 YPGVQSYMIVLMVTCCITPLSIIVLCYLQVWLAIRAVAKQQK------------------ Z68193 YPGVQSYMIVLMVTCCIIPLAIIMLCYLQVWLAIRAVAKQQK------------------ M92036 ELGCQSFMLTLMITCCFLPLFIIIVCYLQVWMAIRAVAAQQK------------------ M62903 DPGVQSYMVVLMVTCCFFPLAIIILCYLQVWLAIRAVAAQQK------------------ S75720 --NNNSYILSLFVTCFVLPLSLILFSYTNLLLTLRAAAAQQK------------------ L15228 ----FGYTIYSTAVAFYIPMSVMLFMYYQIYKAARKSAAKHK------------------ A47425 ----FGYTIYSTAVAFYIPMSVMLFMYYQIYKAARKSAAKHK------------------ L21195 ----FGYTIYSTAVAFYIPMSVMLFMYYQIYKAARKSAAKHK------------------ M83181 ----HGYTIYSTFGAFYIPLLLMLVLYGRIFRAARFRIRKTV------------------ A35181 ----HGYTIYSTFGAFYIPLLLMLVLYGRIFRAARFRIRKTV------------------ L06803 ----KGYTIFSTVGAFYLPMLVMMIIYIRIWLVARSRIRKDK------------------ A47174 ----KGYTIFSTVGAFYLPMLVMMIIYIRIWLVARSRIRKDK------------------ X95604 ----VGYQIFATASSFYVPVLIILILYWRIYQTARKRIRRRRGATARGGVGPPPVPAGGA * : * : M17718 ------------------------------------------------------------ X65879 ------------------------------------------------------------ M17730 ------------------------------------------------------------ X65880 ------------------------------------------------------------ D50584 ------------------------------------------------------------ D50583 ------------------------------------------------------------ K02320 ------------------------------------------------------------ K02315 ------------------------------------------------------------ X65877 ------------------------------------------------------------ M12896 ------------------------------------------------------------ X65878 ------------------------------------------------------------ U26026 ------------------------------------------------------------ L03781 ------------------------------------------------------------ X07797 ------------------------------------------------------------ X70498 ------------------------------------------------------------ M63632 ------------------------------------------------------------ U22180 ------------------------------------------------------------ A45229 ------------------------------------------------------------ B45229 ------------------------------------------------------------ M92038 ------------------------------------------------------------ L11864 ------------------------------------------------------------ M13299 ------------------------------------------------------------ K03494 ------------------------------------------------------------ Z68193 ------------------------------------------------------------ M92036 ------------------------------------------------------------ M62903 ------------------------------------------------------------ S75720 ------------------------------------------------------------ L15228 ---------------------------------F-----PGFPRVQPESVISLNGVVKLQ A47425 ---------------------------------F-----PGFPRVQPESVISLNGVVKLQ L21195 ---------------------------------F-----PGFPRVEPDSVIALNGIVKLQ M83181 ------------------------------------------------------------ A35181 ------------------------------------------------------------ L06803 ---------------------------------FQMTKARLKTEETTLVASPKTEYSVVS A47174 ---------------------------------FQMTKARLKTEETTLVASPKTEYSVVS X95604 LVAGGGSGGIAAAVVAVIGRPLPTISETTTTGFTNVSSNNTSPEKQSCANGLEADPPTTG :::. .. . M17718 -DQAKK------------------------------------------------------ X65879 -DQAKK------------------------------------------------------ M17730 -EQAKK------------------------------------------------------ X65880 -EQAKK------------------------------------------------------ D50584 -AQAKK------------------------------------------------------ D50583 -AQAKK------------------------------------------------------ K02320 -EQAKK------------------------------------------------------ K02315 -EQAKK------------------------------------------------------ X65877 -EQAKK------------------------------------------------------ M12896 -EQAKK------------------------------------------------------ X65878 -DQAKK------------------------------------------------------ U26026 -EQAKK------------------------------------------------------ L03781 -EQAKK------------------------------------------------------ X07797 -AMAKR------------------------------------------------------ X70498 -AMAKR------------------------------------------------------ M63632 -ES--------------------------------------------------------- U22180 -ES--------------------------------------------------------- A45229 -DS--------------------------------------------------------- B45229 -DS--------------------------------------------------------- M92038 -ES--------------------------------------------------------- L11864 -DS--------------------------------------------------------- M13299 -ES--------------------------------------------------------- K03494 -ES--------------------------------------------------------- Z68193 -ES--------------------------------------------------------- M92036 -ES--------------------------------------------------------- M62903 -ES--------------------------------------------------------- S75720 -EA--------------------------------------------------------- L15228 KEVEE------------------------------------------------------- A47425 KEVEE------------------------------------------------------- L21195 KEVEE------------------------------------------------------- M83181 KKVEKTGADTRHGASPAPQPKKSVNGESGSRNWRLGVESKAGGALCANGAVRQGDDGAAL A35181 RKVEKKGAGTSLGTSSAPPPKKSLNGQPGSGDWRRCAENRAVGTPCTNGAVRQGDDEATL L06803 DCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSSSERLKQI A47174 DCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSSSERLKQI X95604 YGAVA------------------------------------------------------- ...: . * ** . .. . : .:. . .: .*. ..: : M17718 --------------------------MNVESLRS----N---VDKNKETAEIRIAKAAIT X65879 --------------------------MNVDSLRS----N---VDKSKEAAEIRIAKAAIT M17730 --------------------------MNVESLRS----N---VDKSKETAEIRIAKAAIT X65880 --------------------------MNVESLRS----N---VDKSKETAEIRIAKAAIT D50584 --------------------------MNVSTLRS----N---EA-DAQRAEIRIAKTALV D50583 --------------------------MNVTNLRS----N---EA-ETQRAEIRIAKTALV K02320 --------------------------MNVKSLRS----S---ED-AEKSAEGKLAKVALV K02315 --------------------------MNVKSLRS----S---ED-AEKSAEGKLAKVALV X65877 --------------------------MNVKSLRS----S---ED-ADKSAEGKLAKVALV M12896 --------------------------MNVKSLRS----S---ED-CDKSAEGKLAKVALT X65878 --------------------------MNVKSLRS----S---ED-CDKSAENKLAKVALT U26026 --------------------------MNVASLRS----S---EN-QNTSAECKLAKVALM L03781 --------------------------MNVASLRA----N---ADQQKQSAECRLAKVAMM X07797 --------------------------LNAKELRK----A----Q-AGASAEMKLAKISMV X70498 --------------------------LNAKELRK----A----Q-AGANAEMRLAKISIV M63632 -------------------------------------------A-STQKAEKEVTRMVVL U22180 -------------------------------------------A-TTQKAEKEVTRMVII A45229 -------------------------------------------A-STQKAEREVTKMVIL B45229 -------------------------------------------A-STQKAEREVTKMVIL M92038 -------------------------------------------A-TTQKAEKEVTRMVIL L11864 -------------------------------------------A-STQKAEREVTKMVVV M13299 -------------------------------------------A-TTQKAEREVSRMVVV K03494 -------------------------------------------E-STQKAEKEVTRMVVV Z68193 -------------------------------------------E-STQKAEKEVTRMVVV M92036 -------------------------------------------E-STQKAEREVSRMVVV M62903 -------------------------------------------E-STQKAEKEVSRMVVV S75720 -------------------------------------------D-TTQRAEREVTRMVIV L15228 -------------------------CANLSRLLK----HERKNI-SIFKREQKAATTLGI A47425 -------------------------CANLSRLLK----HERKNI-SIFKREQKAATTLGI L21195 -------------------------CANLSRLLK----HERKNI-SIFKREQKAATTLGI M83181 EVIEVHRVGNSKEHLPLPSEAGPTPCAPASFERKNERNAEAKRK-MALARERKTVKTLGI A35181 EVIEVHRVGNSKEHLPLPSESGSNSYAPACLERKNERNAEAKRK-MALARERKTVKTLGI L06803 QIETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREK-LELKRERKAARTLAI A47174 QIETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREK-LELKRERKAARTLAI X95604 -------------------------AAYYPSLVR----RKPKEA-ADSKRERKAAKTLAI :: .. ..*. . . : : . : : * . M17718 ICFLFFCSWTPYGVMSLIGAFGDK--TL-LTPGAT-MIPACACKMVACIDPFVYAISHPR X65879 ICFLFFASWTPYGVMSLIGAFGDK--TL-LTPGAT-MIPACTCKMVACIDPFVYAISHPR M17730 ICFLFFVSWTPYGVMSLIGAFGDK--SL-LTQGAT-MIPACTCKLVACIDPFVYAISHPR X65880 ICFLFFVSWTPYGVMSLIGAFGDK--SL-LTPGAT-MIPACTCKLVACIEPFVYAISHPR D50584 NVSLWFICWTPYALISLKGVMGDT--SG-ITPLVS-TLPALLAKSCSCYNPFVYAISHPK D50583 NVSLWFICWTPYAAITIQGLLGNA--EG-ITPLLT-TLPALLAKSCSCYNPFVYAISHPK K02320 TITLWFMAWTPYLVINCMGLFK-F--EG-LTPLNT-IWGACFAKSAACYNPIVYGISHPK K02315 TITLWFMAWTPYLVINCMGLFK-F--EG-LTPLNT-IWGACFAKSAACYNPIVYGISHPK X65877 TISLWFMAWTPYLVINCMGLFK-F--EG-LTPLNT-IWGACFAKSAACYNPIVYGISHPK M12896 TISLWFMAWTPYLVICYFGLFK-I--DG-LTPLTT-IWGATFAKTSAVYNPIVYGISHPK X65878 TISLWFMAWTPYLIICYFGLFK-I--DG-LTPLTT-IWGATFAKTSAVYNPIVYGISHPN U26026 TISLWFMAWTPYLVINFSGIFN-L--VK-ISPLFT-IWGSLFAKANAVYNPIVYGISHPK L03781 TVGLWFMAWTPYLIISWAGVFSSG--TR-LTPLAT-IWGSVFAKANSCYNPIVYGISHPR X07797 IITQFMLSWSPYAIIALLAQFGPA--EW-VTPYAA-ELPVLFAKASAIHNPIVYSVSHPK X70498 IVSQFLLSWSPYAVVALLAQFGPL--EW-VTPYAA-QLPVMFAKASAIHNPMIYSVSHPK M63632 MVIGFLVCWVPYASVAFYIFTHQG--SD-FGATFM-TLPAFFAKSSALYNPVIYILMNKQ U22180 MVIFFLICWLPYASVAMYIFTHQG--SN-FGPIFM-TLPAFFAKTASIYNPIIYIMMNKQ A45229 MVFGFLIAWTPYATVAAWIFFNKG--AD-FSAKFM-AIPAFFSKSSALYNPVIYVLLNKQ B45229 MVLGFLVAWTPYATVAAWIFFNKG--AA-FSAQFM-AIPAFFSKTSALYNPVIYVLLNKQ M92038 MVLGFMLAWTPYAVVAFWIFTNKG--AD-FTATLM-AVPAFFSKSSSLYNPIIYVLMNKQ L11864 MVLGFLVCWAPYASFSLWIVSHRG--EE-FDLRMA-TIPSCLSKASTVYNPVIYVLMNKQ M13299 MVGSFCVCYVPYAAFAMYMVNNRN--HG-LDLRLV-TIPSFFSKSACIYNPIIYCFMNKQ K03494 MVLAFCFCWGPYAFFACFAAANPG--YP-FHPLMA-ALPAFFAKSATIYNPVIYVFMNRQ Z68193 MIFAYCVCWGPYTFFACFAAANPG--YA-FHPLMA-ALPAYFAKSATIYNPVIYVFMNRQ M92036 MIVAFCICWGPYASFVSFAAANPG--YA-FHPLAA-ALPAYFAKSATIYNPVIYVFMNRQ M62903 MIVAYCFCWGPYTFFACFAAANPG--YA-FHPLAA-ALPAYFAKSATIYNPIIYVFMNRQ S75720 MVMAFLLCWLPYSTFALVVATHKG--II-IQPVLA-SLPSYFSKTATVYNPIIYVFMNKQ L15228 IVGAFTVCWLPFFLLSTARPFICGTSCS-CIPLWVERTCLWLGYANSLINPFIYAFFNRD A47425 IVGAFTVCWLPFFLLSTARPFICGTSCS-CIPLWVERTCLWLGYANSLINPFIYAFFNRD L21195 IVGAFTVCWLPFFLLSTARPFICGTSCS-CIPLWVERTFLWLGYANSLINPFIYAFFNRD M83181 IMGTFILCWLPFFIVALVLPFCES--SCHMPTLLG-AIINWLGYSNSLLNPVIYAYFNKD A35181 IMGTFILCWLPFFIVALVLPFCES--SCHMPALLG-AIINWLGYSNSLLNPVIYAYFNKD L06803 ITGAFLICWLPFFIIALIGPFVDP--EG-IPPFAR-SFVLWLGYFNSLLNPIIYTIFSPE A47174 ITGAFLICWLPFFIIALIGPFVDP--EG-IPPFAR-SFVLWLGYFNSLLNPIIYTIFSPE X95604 ITGAFVACWLPFFVLAILVPTCD---CE-VSPVLT-SLSLWLGYFNSTLNPVIYTVFSPE : .: *: . ** * * :*.:* M17718 YRMELQKRCPWL--ALNEK----APE--SS--A--VAS-T------S------------- X65879 YRMELQKRCPWL--AISEK----APE--SR--A--AIS-T------S------------- M17730 YRLELQKRCPWL--GVNEK----SGE--IS--S--AQS-T------T------------- X65880 YRMELQKRCPWL--GVNEK----SGE--AS--S--AQS-T------T------------- D50584 YRLAITQHLPWF--CVHET-E--TKS--ND--D--SQS--------N------------- D50583 FRLAITQHLPWF--CVHEK-D--PND--VE--E--NQS--------S------------- K02320 YRLALKEKCPCC--VFGKV-D--DGK--SS--D--AQS---------------------- K02315 YRLALKEKCPCC--VFGKV-D--DGK--SS--D--AQS---------------------- X65877 YRLALKEKCPCC--VFGKV-D--DGK--SS--E--AQS---------------------- M12896 YRIVLKEKCPMC--VFGNT-D--EPK--PD--A--PAS-D-------------------- X65878 DRLVLKEKCPMC--VCGTT-D--EPK--PD--A--PPS-D-------------------- U26026 YRAALFAKFPSL--ACAAE-P--SSD--A---V--STTSG------T------------- L03781 YKAALYQRFPSL--ACGSG-E--SGS--DV--K--SEASA------T------------- X07797 FREAIQTTFPWLLTCCQFD-EKECED--AN--DAEEEVVASERGGESRDAAQMKEMMAMM X70498 FREAISQTFPWVLTCCQFD-DKETED--DK--DAETEIPA------GESSDAAPSADAAQ M63632 FRNCMITTLC-----CGKN-PLGDDE--SG--A--STS-K-------------------- U22180 FRNCMLTSLC-----CGKN-PLGDDE-AS---A--TAS-K-------------------- A45229 FRNCMLTTIF-----CGKN-PLGDDE-SST--V--STS-K-------------------- B45229 FRSCMLTTLF-----CGKN-PLGDEE-SST--V--STS-K-------------------- M92038 FRNCMITTIC-----CGKN-PFGDEDVSST--V--SQS-K-------------------- L11864 FRSCMMKMV------CGKN-IE-EDE--AS--T--SSQ-V-------------------- M13299 FQACIMKMV------CGKA-MT-DES--DT--C--SSQ-K-------------------- K03494 FRNCILQLFG-------KK-VD-DGS--EL--S--SAS-K-------------------- Z68193 FRNCILQLFG-------KK-VD-DGS--EL--S--SAS-K-------------------- M92036 FRNCIMQLFG-------KK-VD-DGS--EA--S--TTS-R-------------------- M62903 FRNCILQLFG-------KK-VD-DGS--EV-----STS-R-------------------- S75720 FQSCLLEMLC-----CGYQPQR-TGK--ASPGT--PGP-H-------------------- L15228 LRPTSRSLLQ-----CQYR-NINRKL--SA--A--G---M-------------------- A47425 LRTTYRSLLQ-----CQYR-NINRKL--SA--A--G---M-------------------- L21195 LRTTYRSLLQ-----CQYR-NINRKL--SA--A--G---M-------------------- M83181 FQNAFKKIIK-----CKF------------------------------------------ A35181 FQNAFKKIIK-----CKF------------------------------------------ L06803 FRSAFQKILF-----GKYR----------------------------------------- A47174 FRSAFQKILF-----GKYR----------------------------------------- X95604 FRHAFQRLL------CGRR-VR-------------------------------------- : ** : ** ..: . * M17718 ------------------------------------------------------------ X65879 ------------------------------------------------------------ M17730 ------------------------------------------------------------ X65880 ------------------------------------------------------------ D50584 ------------------------------------------------------------ D50583 ------------------------------------------------------------ K02320 ------------------------------------------------------------ K02315 ------------------------------------------------------------ X65877 ------------------------------------------------------------ M12896 ------------------------------------------------------------ X65878 ------------------------------------------------------------ U26026 ------------------------------------------------------------ L03781 ------------------------------------------------------------ X07797 QKMQAQQAAYQPPPPPQGYPPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGYPPQGAPPQV X70498 MKEMMAMMQKMQQQQAAYPPQGYAPPPQGYPPQGYPPQGYPPQGYPPQGYPPPPQGAPPQ M63632 ------------------------------------------------------------ U22180 ------------------------------------------------------------ A45229 ------------------------------------------------------------ B45229 ------------------------------------------------------------ M92038 ------------------------------------------------------------ L11864 ------------------------------------------------------------ M13299 ------------------------------------------------------------ K03494 ------------------------------------------------------------ Z68193 ------------------------------------------------------------ M92036 ------------------------------------------------------------ M62903 ------------------------------------------------------------ S75720 ------------------------------------------------------------ L15228 ------------------------------------------------------------ A47425 ------------------------------------------------------------ L21195 ------------------------------------------------------------ M83181 ------------------------------------------------------------ A35181 ------------------------------------------------------------ L06803 ------------------------------------------------------------ A47174 ------------------------------------------------------------ X95604 ------------------------------------------------------------ * . * ** .*** * * * ** ..* M17718 -------TT-Q-------------------EPQQTTAA X65879 -------TT-Q-------------------EQQQTTAA M17730 -------T--Q-------------------EQQQTTAA X65880 -------TQ-E-------------------QTQQTSAA D50584 -------ST-----------------------VAQDKA D50583 -------NT-----------------------QTQEKS K02320 -------QA-T-------------------ASEAESKA K02315 -------QA-T-------------------ASEAESKA X65877 -------QA-T-------------------TSEAESKA M12896 -------TE-T-------------------TSEADSKA X65878 -------TE-T-------------------TSEAESKD U26026 -------TT-V-------------------TDNEKSNA L03781 -------TTME-------------------EKPKIPEA X07797 EAPQGAPPQ-G-------------------VDNQAYQA X70498 GAPPAAPPQ-G-------------------VDNQAYQA M63632 -------TE-VSSV----------------STSPVSPA U22180 -------TE-T---------------------SQVAPA A45229 -------TE-V---------------------SSVSPA B45229 -------TE-V---------------------SSVSPA M92038 -------TE-VSSV----------------SSSQVSPA L11864 -------TQ-VS--------------------SVAPEK M13299 -------TE-VSTV----------------SSTQVGPN K03494 -------TE-VSSV------------------SSVSPA Z68193 -------TE-VSSV------------------SSVSPA M92036 -------TE-VSSV----------------SNSSVAPA M62903 -------TE-VSSV----------------SNSSVSPA S75720 -------AD-VTAA------------GLRNKVMPAHPV L15228 -------HE-ALKLAERPERSEFVLQNSDHCGKKGHDT A47425 -------HE-ALKLAERPERSEFVLQNSDHCGKKGHDT L21195 -------HE-ALKLAERPERPEFVLQNADYCRKKGHDS M83181 -----------------------------------CRQ A35181 -----------------------------------CRR L06803 ----------------------------------RGHR A47174 ----------------------------------RGHR X95604 --------------------------------RRRAPQ ** .** ******.*****. ALTER-1.3.4/alter-web/src/main/resources/probcons.fas000066400000000000000000000713271300536243200223250ustar00rootroot00000000000000>M17718 MESGNV-----------------------------------------S------------ --------------SSLF-GNVSTALRP-----------EAR-L-----S---------- --------------------A-E--TRLL----GW-N--VPPEELRHIPEH-WLTY-PEP PESMNYLLGTLYIFFTLMSMLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMMMV--KT PIFI-YNSFH-QG--YALGHLGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG-- KMTHGKAIAMIIFIYMYATPW-VVACYTETWG-----RFVPEGY---LTSCTFDYLTDN- -FDTRLFVACIFFFSFVCPTTMITYYYSQIVGHVFSHEKALR------------------ ------------------------------------------------------------ -DQAKK------------------------------------------------------ --------------------------MNVESLRS----N---VDKNKETAEIRIAKAAIT ICFLFFCSWTPYGVMSLIGAFGDK--TL-LTPGAT-MIPACACKMVACIDPFVYAISHPR YRMELQKRCPWL--ALNEK----APE--SS--A--VAS-T------S------------- ------------------------------------------------------------ -------TT-Q-------------------EPQQTTAA >X65879 MEYHNV-----------------------------------------S------------ --------------S-VL-GNVSSVLRP-----------DAR-L-----S---------- --------------------A-E--SRLL----GW-N--VPPDELRHIPEH-WLIY-PEP PESMNYLLGTLYIFFTVISMIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMMMI--KT PIFI-YNSFH-QG--YALGHLGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG-- KMTHGKAIAMIIFIYLYATPW-VVACYTESWG-----RFVPEGY---LTSCTFDYLTDN- -FDTRLFVACIFFFSFVCPTTMITYYYSQIVGHVFSHEKALR------------------ ------------------------------------------------------------ -DQAKK------------------------------------------------------ --------------------------MNVDSLRS----N---VDKSKEAAEIRIAKAAIT ICFLFFASWTPYGVMSLIGAFGDK--TL-LTPGAT-MIPACTCKMVACIDPFVYAISHPR YRMELQKRCPWL--AISEK----APE--SR--A--AIS-T------S------------- ------------------------------------------------------------ -------TT-Q-------------------EQQQTTAA >M17730 MEPLCN-----------------------------------------A------------ --------------SE-------PPLRP-----------EAR-S-----S---------- --------------------G-NGDLQFL----GW-N--VPPDQIQYIPEH-WLTQ-LEP PASMHYMLGVFYIFLFCASTVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCL--KA PIF---NSFH-RGFAIYLGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR-- NMTFTKAVIMNIIIWLYCTPW-VVLPLTQFWD-----RFVPEGY---LTSCSFDYLSDN- -FDTRLFVGTIFFFSFVCPTLMILYYYSQIVGHVFSHEKALR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVESLRS----N---VDKSKETAEIRIAKAAIT ICFLFFVSWTPYGVMSLIGAFGDK--SL-LTQGAT-MIPACTCKLVACIDPFVYAISHPR YRLELQKRCPWL--GVNEK----SGE--IS--S--AQS-T------T------------- ------------------------------------------------------------ -------T--Q-------------------EQQQTTAA >X65880 MDALCN-----------------------------------------A------------ --------------SE-------PPLRP-----------EAR-M-----S---------- --------------------SGSDELQFL----GW-N--VPPDQIQYIPEH-WLTQ-LEP PASMHYMLGVFYIFLFFASTLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMCL--KA PIFI-YNSFH-RG--FALGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR-- NMTFTKAVIMNIIIWLYCTPW-VVLPLTQFWD-----RFVPEGY---LTSCSFDYLSDN- -FDTRLFVGTIFLFSFVVPTLMILYYYSQIVGHVFNHEKALR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVESLRS----N---VDKSKETAEIRIAKAAIT ICFLFFVSWTPYGVMSLIGAFGDK--SL-LTPGAT-MIPACTCKLVACIEPFVYAISHPR YRMELQKRCPWL--GVNEK----SGE--AS--S--AQS-T------T------------- ------------------------------------------------------------ -------TQ-E-------------------QTQQTSAA >D50584 MTNATG-----------------------------------------P------------ --------------QMAYYG--AASMD-------------FG-Y----PE---------- ----------------------G--VS-I----VD-F--VRPEIKPYVHQH-WYNY-PPV NPMWHYLLGVIYLFLGTVSIFGNGLVIYLFNKSAALRTPANILVVNLALSDLIMLT-TNV PFFT-YNCFSGGV--WMFSPQYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-P KLTTGKAVVFALISWVIAIGC-ALPPF-FGWG-----NYILEGI---LDSCSYDYLTQD- -FNTFSYNIFIFVFDYFLPAAIIVFSYVFIVKAIFAHEAAMR------------------ ------------------------------------------------------------ -AQAKK------------------------------------------------------ --------------------------MNVSTLRS----N---EA-DAQRAEIRIAKTALV NVSLWFICWTPYALISLKGVMGDT--SG-ITPLVS-TLPALLAKSCSCYNPFVYAISHPK YRLAITQHLPWF--CVHET-E--TKS--ND--D--SQS--------N------------- ------------------------------------------------------------ -------ST-----------------------VAQDKA >D50583 MANVTG-----------------------------------------P------------ --------------QMAFYG--SGAAT-------------FG-Y----PE---------- ----------------------G--MT-V----AD-F--VPDRVKHMVLDH-WYNY-PPV NPMWHYLLGVVYLFLGVISIAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIMLT-TNF PPFC-YNCFSGGR--WMFSGTYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-P KLTQGKATFMCGLAWVISVGW-SLPPF-FGWG-----SYTLEGI---LDSCSYDYFTRD- -MNTITYNICIFIFDFFLPASVIVFSYVFIVKAIFAHEAAMR------------------ ------------------------------------------------------------ -AQAKK------------------------------------------------------ --------------------------MNVTNLRS----N---EA-ETQRAEIRIAKTALV NVSLWFICWTPYAAITIQGLLGNA--EG-ITPLLT-TLPALLAKSCSCYNPFVYAISHPK FRLAITQHLPWF--CVHEK-D--PND--VE--E--NQS--------S------------- ------------------------------------------------------------ -------NT-----------------------QTQEKS >K02320 MESFAV-----------------------------------------A------------ --------------A--------AQLGP-----------HFA-P----LS---------- ----------------------N--GS-V----VD-K--VTPDMAHLISPY-WNQF-PAM DPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMI-TNT PMMG-INLYF-ET--WVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-R PMTIPLALG----------------------K-----MYVPEGN---LTSCGIDYLERD- -WNPRSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVKSLRS----S---ED-AEKSAEGKLAKVALV TITLWFMAWTPYLVINCMGLFK-F--EG-LTPLNT-IWGACFAKSAACYNPIVYGISHPK YRLALKEKCPCC--VFGKV-D--DGK--SS--D--AQS---------------------- ------------------------------------------------------------ -------QA-T-------------------ASEAESKA >K02315 MESFAV-----------------------------------------A------------ --------------A--------AQLGP-----------HFA-P----LS---------- ----------------------N--GS-V----VD-K--VTPDMAHLISPY-WNQF-PAM DPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMI-TNT PMMG-INLYF-ET--WVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-R PMTIPLALGKIAYIWFMSSIW-CLAPA-FGWS-----RYVPEGN---LTSCGIDYLERD- -WNPRSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVKSLRS----S---ED-AEKSAEGKLAKVALV TITLWFMAWTPYLVINCMGLFK-F--EG-LTPLNT-IWGACFAKSAACYNPIVYGISHPK YRLALKEKCPCC--VFGKV-D--DGK--SS--D--AQS---------------------- ------------------------------------------------------------ -------QA-T-------------------ASEAESKA >X65877 MDSFAA-----------------------------------------V------------ --------------A--------TQLGP-----------QFA-A----PS---------- ----------------------N--GS-V----VD-K--VTPDMAHLISPY-WDQF-PAM DPIWAKILTAYMIIIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMI-TNT PMMG-INLYF-ET--WVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-R PMTIPLALGKIAYIWFMSTIWCCLAPV-FGWS-----RYVPEGN---LTSCGIDYLERD- -WNPRSYLIFYSIFVYYIPLFLICYSYWFIIAAVSAHEKAMR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVKSLRS----S---ED-ADKSAEGKLAKVALV TISLWFMAWTPYLVINCMGLFK-F--EG-LTPLNT-IWGACFAKSAACYNPIVYGISHPK YRLALKEKCPCC--VFGKV-D--DGK--SS--E--AQS---------------------- ------------------------------------------------------------ -------QA-T-------------------TSEAESKA >M12896 MERSHL-----------------------------------------P------------ --------------ETPF-DL--AHSGP-----------RFQ-A----QS---------- -------------------SG-N--GS-V----LD-N--VLPDMAHLVNPY-WSRF-APM DPMMSKILGLFTLAIMIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMA-SQS PVMI-INFYY-ET--WVLGPLWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-T PMTIKTSIMKILFIWMMAVFW-TVMPL-IGWS-----AYVPEGN---LTACSIDYMTRM- -WNPRSYLITYSLFVYYTPLFLICYSYWFIIAAVAAHEKAMR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVKSLRS----S---ED-CDKSAEGKLAKVALT TISLWFMAWTPYLVICYFGLFK-I--DG-LTPLTT-IWGATFAKTSAVYNPIVYGISHPK YRIVLKEKCPMC--VFGNT-D--EPK--PD--A--PAS-D-------------------- ------------------------------------------------------------ -------TE-T-------------------TSEADSKA >X65878 MERSLL-----------------------------------------P------------ --------------EPPL-AM--ALLGP-----------RFE-A----QT---------- -------------------GG-N--RS-V----LD-N--VLPDMAPLVNPH-WSRF-APM DPTMSKILGLFTLVILIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMA-SQS PVMI-INFYY-ET--WVLGPLWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-T PMTIKTSIMKIAFIWMMAVFW-TIMPL-IGWS-----SYVPEGN---LTACSIDYMTRQ- -WNPRSYLITYSLFVYYTPLFMICYSYWFIIATVAAHEKAMR------------------ ------------------------------------------------------------ -DQAKK------------------------------------------------------ --------------------------MNVKSLRS----S---ED-CDKSAENKLAKVALT TISLWFMAWTPYLIICYFGLFK-I--DG-LTPLTT-IWGATFAKTSAVYNPIVYGISHPN DRLVLKEKCPMC--VCGTT-D--EPK--PD--A--PPS-D-------------------- ------------------------------------------------------------ -------TE-T-------------------TSEAESKD >U26026 MIAVSG-----------------------------------------P------------ --------------SYEA-F--SYGGQ-------------AR-F-----N---------- ----------------------N--QT-V----VD-K--VPPDMLHLIDAN-WYQY-PPL NPMWHGILGFVIGMLGFVSAMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLMMF-CMS PPMV-INCYY-ET--WVLGPLFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-K PLSINGALIRIIAIWLFSLGW-TIAPM-FGWN-----RYVPEGN---MTACGTDYFNRG- -LLSASYLVCYGIWVYFVPLFLIIYSYWFIIQAVAAHEKNMR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVASLRS----S---EN-QNTSAECKLAKVALM TISLWFMAWTPYLVINFSGIFN-L--VK-ISPLFT-IWGSLFAKANAVYNPIVYGISHPK YRAALFAKFPSL--ACAAE-P--SSD--A---V--STTSG------T------------- ------------------------------------------------------------ -------TT-V-------------------TDNEKSNA >L03781 MANQLSY----------------------------------------S------------ --------------S----------LG-------------WP-Y----QP---------- ----------------------N--AS-V----VD-T--MPKEMLYMIHEH-WYAF-PPM NPLWYSILGVAMIILGIICVLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCMMA-FMM PTMT-SNCFA-ET--WILGPFMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-A PLTHKKATLLLLFVWIWSGGW-TILPF-FGWS-----RYVPEGN---LTSCTVDYLTKD- -WSSASYVVIYGLAVYFLPLITMIYCYFFIVHAVAEHEKQLR------------------ ------------------------------------------------------------ -EQAKK------------------------------------------------------ --------------------------MNVASLRA----N---ADQQKQSAECRLAKVAMM TVGLWFMAWTPYLIISWAGVFSSG--TR-LTPLAT-IWGSVFAKANSCYNPIVYGISHPR YKAALYQRFPSL--ACGSG-E--SGS--DV--K--SEASA------T------------- ------------------------------------------------------------ -------TTME-------------------EKPKIPEA >X07797 MVESTTL----------------------------------------V------------ --------------NQ----------T-------------W------------------- ------------------------------------W--YNP--TVDIHPH-WAKF-DPI PDAVYYSVGIFIGVVGIIGILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGF PLKT-ISAFM-KK--WIFGKVACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASK KMSHRRAFLMIIFVWMWSIVW-SVGPV-FNWG-----AYVPEGI---LTSCSFDYLSTD- -PSTRSFILCMYFCGFMLPIIIIAFCYFNIVMSVSNHEKEMA------------------ ------------------------------------------------------------ -AMAKR------------------------------------------------------ --------------------------LNAKELRK----A----Q-AGASAEMKLAKISMV IITQFMLSWSPYAIIALLAQFGPA--EW-VTPYAA-ELPVLFAKASAIHNPIVYSVSHPK FREAIQTTFPWLLTCCQFD-EKECED--AN--DAEEEVVASERGGESRDAAQMKEMMAMM QKMQAQQAAYQPPPPPQGYPPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGYPPQGAPPQV EAPQGAPPQ-G-------------------VDNQAYQA >X70498 MGRDLR-----------------------------------------D------------ --------------NE----------T-------------W------------------- ------------------------------------W--YNP--SIVVHPH-WREF-DQV PDAVYYSLGIFIGICGIIGCGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGF PLMT-ISCFL-KK--WIFGFAACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASK KMSHRRAFIMIIFVWLWSVLW-AIGPI-FGWG-----AYTLEGV---LCNCSFDYISRD- -STTRSNILCMFILGFFGPILIIFFCYFNIVMSVSNHEKEMA------------------ ------------------------------------------------------------ -AMAKR------------------------------------------------------ --------------------------LNAKELRK----A----Q-AGANAEMRLAKISIV IVSQFLLSWSPYAVVALLAQFGPL--EW-VTPYAA-QLPVMFAKASAIHNPMIYSVSHPK FREAISQTFPWVLTCCQFD-DKETED--DK--DAETEIPA------GESSDAAPSADAAQ MKEMMAMMQKMQQQQAAYPPQGYAPPPQGYPPQGYPPQGYPPQGYPPQGYPPPPQGAPPQ GAPPAAPPQ-G-------------------VDNQAYQA >M63632 MNGTEG-----------------------------------------D------------ --------------N-------------------------FYVP----FS---------- ----------------------N--KT-G--------------L--ARSPYEYPQY-YLA EPWKYSALAAYMFFLILVGFPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFMVL-FGF TVTM-YTSMN-GY--FVFGPTMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-F RFGNTHAIMGVAFTWIMALAC-AAPPL-VGWS-----RYIPEGM---QCSCGPDYYTLNP NFNNESYVVYMFVVHFLVPFVIIFFCYGRLLCTVKEAAAAQQ------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------A-STQKAEKEVTRMVVL MVIGFLVCWVPYASVAFYIFTHQG--SD-FGATFM-TLPAFFAKSSALYNPVIYILMNKQ FRNCMITTLC-----CGKN-PLGDDE--SG--A--STS-K-------------------- ------------------------------------------------------------ -------TE-VSSV----------------STSPVSPA >U22180 MNGTEG-----------------------------------------P------------ --------------N-------------------------FYVP----FS---------- ----------------------N--IT-G--------------V--VRSPFEQPQY-YLA EPWQFSMLAAYMFLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVF-GGF TTTL-YTSLH-GY--FVFGPTGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-F RFGENHAIMGVAFTWVMALAC-AAPPL-VGWS-----RYIPEGM---QCSCGIDYYTLKP EVNNESFVIYMFVVHFTIPMIVIFFCYGQLVFTVKEAAAQQQ------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------A-TTQKAEKEVTRMVII MVIFFLICWLPYASVAMYIFTHQG--SN-FGPIFM-TLPAFFAKTASIYNPIIYIMMNKQ FRNCMLTSLC-----CGKN-PLGDDE-AS---A--TAS-K-------------------- ------------------------------------------------------------ -------TE-T---------------------SQVAPA >A45229 MNGTEG-----------------------------------------K------------ --------------N-------------------------FYVP----MS---------- ----------------------N--RT-G--------------L--VRSPFEYPQY-YLA EPWQFKILALYLFFLMSMGLPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIMVC-FGF TVTF-YTAIN-GY--FVLGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-F KFSSSHAFAGIAFTWVMALAC-AAPPL-FGWS-----RYIPEGM---QCSCGPDYYTLNP DYNNESYVIYMFVCHFILPVAVIFFTYGRLVCTVKAAAAQQQ------------------ ------------------------------------------------------------ -DS--------------------------------------------------------- -------------------------------------------A-STQKAEREVTKMVIL MVFGFLIAWTPYATVAAWIFFNKG--AD-FSAKFM-AIPAFFSKSSALYNPVIYVLLNKQ FRNCMLTTIF-----CGKN-PLGDDE-SST--V--STS-K-------------------- ------------------------------------------------------------ -------TE-V---------------------SSVSPA >B45229 MNGTEG-----------------------------------------N------------ --------------N-------------------------FYVP----LS---------- ----------------------N--RT-G--------------L--VRSPFEYPQY-YLA EPWQFKLLAVYMFFLICLGLPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIMVC-FGF TVTF-YTAIN-GY--FALGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-F KFSSTHASAGIAFTWVMAMAC-AAPPL-VGWS-----RYIPEGI---QCSCGPDYYTLNP EYNNESYVLYMFICHFILPVTIIFFTYGRLVCTVKAAAAQQQ------------------ ------------------------------------------------------------ -DS--------------------------------------------------------- -------------------------------------------A-STQKAEREVTKMVIL MVLGFLVAWTPYATVAAWIFFNKG--AA-FSAQFM-AIPAFFSKTSALYNPVIYVLLNKQ FRSCMLTTLF-----CGKN-PLGDEE-SST--V--STS-K-------------------- ------------------------------------------------------------ -------TE-V---------------------SSVSPA >M92038 MNGTEG-----------------------------------------I------------ --------------N-------------------------FYVP----MS---------- ----------------------N--KT-G--------------V--VRSPFEYPQY-YLA EPWKYRLVCCYIFFLISTGLPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFMAC-FGF TVTF-YTAWN-GY--FVFGPVGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-F RFSATHAMMGIAFTWVMAFSC-AAPPL-FGWS-----RYMPEGM---QCSCGPDYYTHNP DYHNESYVLYMFVIHFIIPVVVIFFSYGRLICKVREAAAQQQ------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------A-TTQKAEKEVTRMVIL MVLGFMLAWTPYAVVAFWIFTNKG--AD-FTATLM-AVPAFFSKSSSLYNPIIYVLMNKQ FRNCMITTIC-----CGKN-PFGDEDVSST--V--SQS-K-------------------- ------------------------------------------------------------ -------TE-VSSV----------------SSSQVSPA >L11864 MKQVPEF---------------------------------------HE------------ --------------D-------------------------FYIPIPLDIN---------- ----------------------N--L-----------------S--AYSPFLVPQD-HLG NQGIFMAMSVFMFFIFIGGASINILTILCTIQFKKLRSHLNYILVNLSIANLFVAI-FGS PLSF-YSFFN-RY--FIFGATACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-F TFKTPHAIAGCILPWISALAA-SLPPL-FGWS-----RYIPEGL---QCSCGPDWYTTNN KYNNESYVMFLFCFCFAVPFGTIVFCYGQLLITLKLAAKAQA------------------ ------------------------------------------------------------ -DS--------------------------------------------------------- -------------------------------------------A-STQKAEREVTKMVVV MVLGFLVCWAPYASFSLWIVSHRG--EE-FDLRMA-TIPSCLSKASTVYNPVIYVLMNKQ FRSCMMKMV------CGKN-IE-EDE--AS--T--SSQ-V-------------------- ------------------------------------------------------------ -------TQ-VS--------------------SVAPEK >M13299 MRKMSE-----------------------------------------E------------ --------------E-------------------------FYL-----FK---------- ----------------------N--I-----------------S--SVGPWDGPQY-HIA PVWAFYLQAAFMGTVFLIGFPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCI-FSV FPVF-VASCN-GY--FVFGRHVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-F RFSSKHALTVVLATWTIGIGV-SIPPF-FGWS-----RFIPEGL---QCSCGPDWYTVGT KYRSESYTWFLFIFCFIVPLSLICFSYTQLLRALKAVAAQQQ------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------A-TTQKAEREVSRMVVV MVGSFCVCYVPYAAFAMYMVNNRN--HG-LDLRLV-TIPSFFSKSACIYNPIIYCFMNKQ FQACIMKMV------CGKA-MT-DES--DT--C--SSQ-K-------------------- ------------------------------------------------------------ -------TE-VSTV----------------SSTQVGPN >K03494 MAQQWSL----------------------QRLAGRHPQDSYEDSTQSS------------ --------------I-------------------------FTYT----NS---------- ----------------------N--------------------S--TRGPFEGPNY-HIA PRWVYHLTSVWMIFVVIASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETV-IAS TISV-VNQVY-GY--FVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-V RFDAKLAIVGIAFSWIWAAVW-TAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSS YPGVQSYMIVLMVTCCITPLSIIVLCYLQVWLAIRAVAKQQK------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------E-STQKAEKEVTRMVVV MVLAFCFCWGPYAFFACFAAANPG--YP-FHPLMA-ALPAFFAKSATIYNPVIYVFMNRQ FRNCILQLFG-------KK-VD-DGS--EL--S--SAS-K-------------------- ------------------------------------------------------------ -------TE-VSSV------------------SSVSPA >Z68193 MAQQWSL----------------------QRLAGRHPQDSYEDSTQSS------------ --------------I-------------------------FTYT----NS---------- ----------------------N--------------------S--TRGPFEGPNY-HIA PRWVYHLTSVWMIFVVTASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETV-IAS TISI-VNQVS-GY--FVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-V RFDAKLAIVGIAFSWIWSAVW-TAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSS YPGVQSYMIVLMVTCCIIPLAIIMLCYLQVWLAIRAVAKQQK------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------E-STQKAEKEVTRMVVV MIFAYCVCWGPYTFFACFAAANPG--YA-FHPLMA-ALPAYFAKSATIYNPVIYVFMNRQ FRNCILQLFG-------KK-VD-DGS--EL--S--SAS-K-------------------- ------------------------------------------------------------ -------TE-VSSV------------------SSVSPA >M92036 MTEAWNV----------------------AV-FAARRSRDDDDTTRGS------------ --------------V-------------------------FTYT----NT---------- ----------------------N--------------------N--TRGPFEGPNY-HIA PRWVYNLVSFFMIIVVIASCFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVETL-VAS TISV-FNQIF-GY--FILGHPLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-I KFDSKLAIIGIVFSWVWAWGW-SAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSV ELGCQSFMLTLMITCCFLPLFIIIVCYLQVWMAIRAVAAQQK------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------E-STQKAEREVSRMVVV MIVAFCICWGPYASFVSFAAANPG--YA-FHPLAA-ALPAYFAKSATIYNPVIYVFMNRQ FRNCIMQLFG-------KK-VD-DGS--EA--S--TTS-R-------------------- ------------------------------------------------------------ -------TE-VSSV----------------SNSSVAPA >M62903 MAAWEAA-------------------------FAARRRHEEEDTTRDS------------ --------------V-------------------------FTYT----NS---------- ----------------------N--------------------N--TRGPFEGPNY-HIA PRWVYNLTSVWMIFVVAASVFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGETV-IAS TISV-INQIS-GY--FILGHPMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-I KFDGKLAVAGILFSWLWSCAW-TAPPI-FGWS-----RYWPHGL---KTSCGPDVFSGSS DPGVQSYMVVLMVTCCFFPLAIIILCYLQVWLAIRAVAAQQK------------------ ------------------------------------------------------------ -ES--------------------------------------------------------- -------------------------------------------E-STQKAEKEVSRMVVV MIVAYCFCWGPYTFFACFAAANPG--YA-FHPLAA-ALPAYFAKSATIYNPIIYVFMNRQ FRNCILQLFG-------KK-VD-DGS--EV-----STS-R-------------------- ------------------------------------------------------------ -------TE-VSSV----------------SNSSVSPA >S75720 MSSNSSQ----------------------------------------------------- -------------------------------------------A----PP---------- ----------------------N--------------------G--TPGPFDGPQWPYQA PQSTYVGVAVLMGTVVACASVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLVTL-CGS SVSL-SNNIN-GF--FVFGRRMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-F QFQRRHAVSGCAFTWGWALLW-SAPPL-LGWS-----SYVPEGL---RTSCGPNWYTGGS --NNNSYILSLFVTCFVLPLSLILFSYTNLLLTLRAAAAQQK------------------ ------------------------------------------------------------ -EA--------------------------------------------------------- -------------------------------------------D-TTQRAEREVTRMVIV MVMAFLLCWLPYSTFALVVATHKG--II-IQPVLA-SLPSYFSKTATVYNPIIYVFMNKQ FQSCLLEMLC-----CGYQPQR-TGK--ASPGT--PGP-H-------------------- ------------------------------------------------------------ -------AD-VTAA------------GLRNKVMPAHPV >L15228 MPHLLS-----------------------------------------G------------ --------------FLEV------------------------------------------ --------------------------T-ASPAPTW-D--APPDNVS--GCGEQINY-G-- -RVEKVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAV-AVM PFVSVTDLIG-GK--WIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPV RQNGKCMAKMILSVWLLSASI-TLPPL-FGWA-----QNVNDDK---VCLISQD------ ----FGYTIYSTAVAFYIPMSVMLFMYYQIYKAARKSAAKHK------------------ ---------------------------------F-----PGFPRVQPESVISLNGVVKLQ KEVEE------------------------------------------------------- -------------------------CANLSRLLK----HERKNI-SIFKREQKAATTLGI IVGAFTVCWLPFFLLSTARPFICGTSCS-CIPLWVERTCLWLGYANSLINPFIYAFFNRD LRPTSRSLLQ-----CQYR-NINRKL--SA--A--G---M-------------------- ------------------------------------------------------------ -------HE-ALKLAERPERSEFVLQNSDHCGKKGHDT >A47425 MPHLLS-----------------------------------------G------------ --------------FLEV------------------------------------------ --------------------------T-ASPAPTW-D--APPDNVS--GCGEQINY-G-- -RVEKVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAV-AVM PFVSVTDLIG-GK--WIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPV RQNGKCMAKMILSVWLLSASI-TLPPL-FGWA-----QNVNDDK---VCLISQD------ ----FGYTIYSTAVAFYIPMSVMLFMYYQIYKAARKSAAKHK------------------ ---------------------------------F-----PGFPRVQPESVISLNGVVKLQ KEVEE------------------------------------------------------- -------------------------CANLSRLLK----HERKNI-SIFKREQKAATTLGI IVGAFTVCWLPFFLLSTARPFICGTSCS-CIPLWVERTCLWLGYANSLINPFIYAFFNRD LRTTYRSLLQ-----CQYR-NINRKL--SA--A--G---M-------------------- ------------------------------------------------------------ -------HE-ALKLAERPERSEFVLQNSDHCGKKGHDT >L21195 MMDVNSSGRPDLYGHLRSFLLPEVGRGLPDLSPDGGADPVAGSWAPHL------------ --------------LSEV------------------------------------------ --------------------------T-ASPAPTW-D--APPDNAS--GCGEQINY-G-- -RVEKVVIGSILTLITLLTIAGNCLVVISVCFVKKLRQPSNYLIVSLALADLSVAV-AVM PFVSVTDLIG-GK--WIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPV RQNGKCMAKMILSVWLLSASI-TLPPL-FGWA-----QNVNDDK---VCLISQD------ ----FGYTIYSTAVAFYIPMSVMLFMYYQIYKAARKSAAKHK------------------ ---------------------------------F-----PGFPRVEPDSVIALNGIVKLQ KEVEE------------------------------------------------------- -------------------------CANLSRLLK----HERKNI-SIFKREQKAATTLGI IVGAFTVCWLPFFLLSTARPFICGTSCS-CIPLWVERTFLWLGYANSLINPFIYAFFNRD LRTTYRSLLQ-----CQYR-NINRKL--SA--A--G---M-------------------- ------------------------------------------------------------ -------HE-ALKLAERPERPEFVLQNADYCRKKGHDS >M83181 MDVLSP-----------------------------------------G------------ --------------QG-------------------------------------------- ----------------------N--NT-TSPPAPF-E--T-GGNTT--GISD---V-T-- -VSYQVITSLLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSV-LVL PMAA-LYQVL-NK--WTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVN KRTPRRAAALISLTWLIGFLI-SIPPM-LGWR-----TPEDRSDPD-ACTISKD------ ----HGYTIYSTFGAFYIPLLLMLVLYGRIFRAARFRIRKTV------------------ ------------------------------------------------------------ KKVEKTGADTRHGASPAPQPKKSVNGESGSRNWRLGVESKAGGALCANGAVRQGDDGAAL EVIEVHRVGNSKEHLPLPSEAGPTPCAPASFERKNERNAEAKRK-MALARERKTVKTLGI IMGTFILCWLPFFIVALVLPFCES--SCHMPTLLG-AIINWLGYSNSLLNPVIYAYFNKD FQNAFKKIIK-----CKF------------------------------------------ ------------------------------------------------------------ -----------------------------------CRQ >A35181 MDVFSF-----------------------------------------G------------ --------------QG-------------------------------------------- ----------------------N--NT-TASQEPF-G--T-GGNVT--SISD---V-T-- -FSYQVITSLLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSV-LVL PMAA-LYQVL-NK--WTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVN KRTPRRAAALISLTWLIGFLI-SIPPM-LGWR-----TPEDRSDPD-ACTISKD------ ----HGYTIYSTFGAFYIPLLLMLVLYGRIFRAARFRIRKTV------------------ ------------------------------------------------------------ RKVEKKGAGTSLGTSSAPPPKKSLNGQPGSGDWRRCAENRAVGTPCTNGAVRQGDDEATL EVIEVHRVGNSKEHLPLPSESGSNSYAPACLERKNERNAEAKRK-MALARERKTVKTLGI IMGTFILCWLPFFIVALVLPFCES--SCHMPALLG-AIINWLGYSNSLLNPVIYAYFNKD FQNAFKKIIK-----CKF------------------------------------------ ------------------------------------------------------------ -----------------------------------CRR >L06803 MANFTF-----------------------------------------G------------ --------------DLAL-DV--ARMGGLASTPSGLRSTGLTTP----GLSPTGLVTSDF NDSYGLTGQFINGSHSSRSRDNA--SA-NDTSATN-M--T-DDRYW--SLTV---Y-S-- -HEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAV-LVM PLSV-VSEIS-KV--WFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSI-DYIR RRSARRILLMIMVVWIVALFI-SIPPL-FGWR-----DPNNDPDKTGTCIISQD------ ----KGYTIFSTVGAFYLPMLVMMIIYIRIWLVARSRIRKDK------------------ ---------------------------------FQMTKARLKTEETTLVASPKTEYSVVS DCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSSSERLKQI QIETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREK-LELKRERKAARTLAI ITGAFLICWLPFFIIALIGPFVDP--EG-IPPFAR-SFVLWLGYFNSLLNPIIYTIFSPE FRSAFQKILF-----GKYR----------------------------------------- ------------------------------------------------------------ ----------------------------------RGHR >A47174 MANFTF-----------------------------------------G------------ --------------DLAL-DV--ARMGGLASTPSGLRSTGLTTP----GLSPTGLVTSDF NDSYGLTGQFINGSHSSRSRDNA--SA-NDTSATN-M--T-DDRYW--SLTV---Y-S-- -HEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAV-LVM PLSV-VSEIS-KV--WFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSI-DYIR RRSARRILLMIMVVWIVALFI-SIPPL-FGWR-----DPNNDPDKTGTCIISQD------ ----KGYTIFSTVGAFYLPMLVMMIIYIRIWLVARSRIRKDK------------------ ---------------------------------FQMTKARLKTEETTLVASPKTEYSVVS DCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKNRAKKLPENANGVNSNSSSSERLKQI QIETAEAFANGCAEEASIAMLERQCNNGKKISSNDTPYSRTREK-LELKRERKAARTLAI ITGAFLICWLPFFIIALIGPFVDP--EG-IPPFAR-SFVLWLGYFNSLLNPIIYTIFSPE FRSAFQKILF-----GKYR----------------------------------------- ------------------------------------------------------------ ----------------------------------RGHR >X95604 MEGAEG-----------------------------------------QEELDWEALYLRL PLQNCSWNSTGWEPNWNV------------------------------------------ --------------------------T-VVPNTTWWQASAPFD---------TP-A-A-- -LVRAAAKAVVLGLLILATVVGNVFVIAAILLERHLRSAANNLILSLAVADLLVAC-LVM PLGA-VYEVV-QR--WTLGPELCDMWTSGDVLCCTASILHLVAIALDRYWAVTNIDYI-H ASTAKRVGMMIACVWTVSFFV-CIAQL-LGWKDPDWNQRVSEDL---RCVVSQD------ ----VGYQIFATASSFYVPVLIILILYWRIYQTARKRIRRRRGATARGGVGPPPVPAGGA LVAGGGSGGIAAAVVAVIGRPLPTISETTTTGFTNVSSNNTSPEKQSCANGLEADPPTTG YGAVA------------------------------------------------------- -------------------------AAYYPSLVR----RKPKEA-ADSKRERKAAKTLAI ITGAFVACWLPFFVLAILVPTCD---CE-VSPVLT-SLSLWLGYFNSTLNPVIYTVFSPE FRHAFQRLL------CGRR-VR-------------------------------------- ------------------------------------------------------------ --------------------------------RRRAPQALTER-1.3.4/alter-web/src/main/resources/tcoffee.aln000077500000000000000000001062521300536243200221130ustar00rootroot00000000000000CLUSTAL FORMAT for T-COFFEE Version_7.71 [http://www.tcoffee.org] [MODE: regular ], CPU=121.04 sec, SCORE=76, Nseq=35, Len=727 M63632 MNGTEGD---------------------------NFYVP-------F------------- 13 U22180 MNGTEGP---------------------------NFYVP-------F------------- 13 M92038 MNGTEGI---------------------------NFYVP-------M------------- 13 A45229 MNGTEGK---------------------------NFYVP-------M------------- 13 B45229 MNGTEGN---------------------------NFYVP-------L------------- 13 L11864 MKQVPEFH-E------------------------DFYIP-------I------------- 15 M13299 MRKMSEE---------------------------EFYL--------F------------- 12 K03494 MAQQWSLQ-RLAGRH---PQD--S--YEDSTQSSIFTYT-------N------------- 32 Z68193 MAQQWSLQ-RLAGRH---PQD--S--YEDSTQSSIFTYT-------N------------- 32 M92036 MTEAWNVA-VFAARR---SR---D--DDDTTRGSVFTYT-------N------------- 31 M62903 MAAWEAAF-AA--RR----RH--E--EEDTTRDSVFTYT-------N------------- 29 S75720 MSSNSSQA--------------------------------------P------------- 9 M17718 MESGNVSS-SL-FGN-VSTA-----------LRPEA-RL-------S------------- 25 X65879 MEYHNVSS--V-LGN-VSSV-----------LRPDA-RL-------S------------- 24 M17730 MEPLCNAS-EP--------P-----------LRPEA-RS--------------------- 18 X65880 MDALCNAS-EP--------P-----------LRPEA-RM-------S------------- 19 D50584 MTNATGPQ-MAYYGA-ASMD-----------FG-----Y-------P------------- 22 D50583 MANVTGPQ-MAFYGS-GAAT-----------FG-----Y-------P------------- 22 K02320 MESFAVAA----------AQ-----------LGPHF-AP-------L------------- 18 K02315 MESFAVAA----------AQ-----------LGPHF-AP-------L------------- 18 X65877 MDSFAAVA----------TQ-----------LGPQF-AA-------P------------- 18 M12896 MERSHLPE-TPFDL----AH-----------SGPRF-QA-------Q------------- 23 X65878 MERSLLPE-PPLAM----AL-----------LGPRF-EA-------Q------------- 23 U26026 MIAVSGPS-YE-A-----FS-----------YGGQ--AR-------F------------- 20 L03781 MANQLSYS-SL-G-----WP-----------YQ--------------------------- 15 X07797 MVESTTLV-NQ-T----------------------------------------------- 11 X70498 MGRDLR-D-NE-T----------------------------------------------- 10 L21195 MMDVNSSGRPDLY-G----HLRS-FLLPEVGRGLPDLSPDGG----A---D--------- 38 L15228 MPHLLSG-FLE------------------------------------------------- 10 A47425 MPHLLSG-FLE------------------------------------------------- 10 M83181 MDVLSPG-QGNNTTS---PP-----------------AP-------F------------- 19 A35181 MDVFSFG-QGNNTTA---SQ-----------------EP-------F------------- 19 L06803 MANFTFG-DLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFING 59 A47174 MANFTFG-DLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFING 59 X95604 MEGAEGQ-EE-LDWEALYLRL--P--LQNCSWNSTGWEP--------------------- 33 * M63632 -----------SN-KTG-----------------LA--RSPYEYPQYY-LAEPWKYSALA 41 U22180 -----------SN-ITG-----------------VV--RSPFEQPQYY-LAEPWQFSMLA 41 M92038 -----------SN-KTG-----------------VV--RSPFEYPQYY-LAEPWKYRLVC 41 A45229 -----------SN-RTG-----------------LV--RSPFEYPQYY-LAEPWQFKILA 41 B45229 -----------SN-RTG-----------------LV--RSPFEYPQYY-LAEPWQFKLLA 41 L11864 -------P--LDI-NNL-----------------SA--YSPFLVPQDH-LGNQGIFMAMS 45 M13299 -----------KN-IS-------------------S--VGPWDGPQYH-IAPVWAFYLQA 38 K03494 -----------SN---------------------ST--RGPFEGPNYH-IAPRWVYHLTS 57 Z68193 -----------SN---------------------ST--RGPFEGPNYH-IAPRWVYHLTS 57 M92036 -----------TN---------------------NT--RGPFEGPNYH-IAPRWVYNLVS 56 M62903 -----------SN---------------------NT--RGPFEGPNYH-IAPRWVYNLTS 54 S75720 -----------PN---------------------GT--PGPFDGPQWPYQAPQSTYVGVA 35 M17718 --------A--E--TR---------LLGWNVPPEELRHIPEH-WLTYP-EPPESMNYLLG 62 X65879 --------A--E--SR---------LLGWNVPPDELRHIPEH-WLIYP-EPPESMNYLLG 61 M17730 --------S-GNGDLQ---------FLGWNVPPDQIQYIPEH-WLTQL-EPPASMHYMLG 58 X65880 --------S-GSDELQ---------FLGWNVPPDQIQYIPEH-WLTQL-EPPASMHYMLG 59 D50584 --------E-G---VS----------IVDFVRPEIKPYVHQH-WYNYP-PVNPMWHYLLG 58 D50583 --------E-G---MT----------VADFVPDRVKHMVLDH-WYNYP-PVNPMWHYLLG 58 K02320 -----------SN-GS----------VVDKVTPDMAHLISPY-WNQFP-AMDPIWAKILT 54 K02315 -----------SN-GS----------VVDKVTPDMAHLISPY-WNQFP-AMDPIWAKILT 54 X65877 -----------SN-GS----------VVDKVTPDMAHLISPY-WDQFP-AMDPIWAKILT 54 M12896 --------S-SGN-GS----------VLDNVLPDMAHLVNPY-WSRFA-PMDPMMSKILG 61 X65878 --------T-GGN-RS----------VLDNVLPDMAPLVNPH-WSRFA-PMDPTMSKILG 61 U26026 -----------NN-QT----------VVDKVPPDMLHLIDAN-WYQYP-PLNPMWHGILG 56 L03781 -----------PN-AS----------VVDTMPKEMLYMIHEH-WYAFP-PMNPLWYSILG 51 X07797 ----------------------------WWYNP--TVDIHPH-WAKFD-PIPDAVYYSVG 39 X70498 ----------------------------WWYNP--SIVVHPH-WREFD-QVPDAVYYSLG 38 L21195 ------PVAGSWA-PHLLSEVTASPAPTWDAPPDNA--SGCGEQINYG----RVEKVVIG 85 L15228 --------------------VTASPAPTWDAPPDNV--SGCGEQINYG----RVEKVVIG 44 A47425 --------------------VTASPAPTWDAPPDNV--SGCGEQINYG----RVEKVVIG 44 M83181 -------ET-GGN-TTG-------------IS-------------DVT----VSYQVITS 40 A35181 -------GT-GGN-VTS-------------IS-------------DVT----FSYQVITS 40 L06803 SHSSRSRDNASAN-DTSATNM--TDDRYWSLT-------------VYS----HEHLVLTS 99 A47174 SHSSRSRDNASAN-DTSATNM--TDDRYWSLT-------------VYS----HEHLVLTS 99 X95604 ----------NWN-VTVV-----PNTTWWQAS-------APFDT-PAA----LVRAAAKA 65 M63632 AYMFFLILVGFPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFMVLF-GFTVTM-YTSM 99 U22180 AYMFLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVFG-GFTTTL-YTSL 99 M92038 CYIFFLISTGLPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFMACF-GFTVTF-YTAW 99 A45229 LYLFFLMSMGLPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIMVCF-GFTVTF-YTAI 99 B45229 VYMFFLICLGLPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIMVCF-GFTVTF-YTAI 99 L11864 VFMFFIFIGGASINILTILCTIQFKKLRSHLNYILVNLSIANLFVAIF-GSPLSF-YSFF 103 M13299 AFMGTVFLIGFPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCIF-SVFPVF-VASC 96 K03494 VWMIFVVIASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVI-ASTISV-VNQV 115 Z68193 VWMIFVVTASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVI-ASTISI-VNQV 115 M92036 FFMIIVVIASCFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVETLV-ASTISV-FNQI 114 M62903 VWMIFVVAASVFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGETVI-ASTISV-INQI 112 S75720 VLMGTVVACASVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLVTLC-GSSVSL-SNNI 93 M17718 TLYIFFTLMSMLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMMM-V-KTPIFI-YNSF 119 X65879 TLYIFFTVISMIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMMM-I-KTPIFI-YNSF 118 M17730 VFYIFLFCASTVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMC-L-KAPIFN-SFHR 115 X65880 VFYIFLFFASTLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMC-L-KAPIFI-YNSF 116 D50584 VIYLFLGTVSIFGNGLVIYLFNKSAALRTPANILVVNLALSDLIMLTT-NVPFFT-YNCF 116 D50583 VVYLFLGVISIAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIMLTT-NFPPFC-YNCF 116 K02320 AYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMIT-NTPMMG-INLY 112 K02315 AYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMIT-NTPMMG-INLY 112 X65877 AYMIIIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMIT-NTPMMG-INLY 112 M12896 LFTLAIMIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMAS-QSPVMI-INFY 119 X65878 LFTLVILIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMAS-QSPVMI-INFY 119 U26026 FVIGMLGFVSAMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLMMFC-MSPPMV-INCY 114 L03781 VAMIILGIICVLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCMMAF-MMPTMT-SNCF 109 X07797 IFIGVVGIIGILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGFPLKT-ISAF 98 X70498 IFIGICGIIGCGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGFPLMT-ISCF 97 L21195 SILTLITLLTIAGNCLVVISVCFVKKLRQPSNYLIVSLALADLSVAVA-VMPFVSVTDLI 144 L15228 SILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVA-VMPFVSVTDLI 103 A47425 SILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVA-VMPFVSVTDLI 103 M83181 LLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVL-VLPMAA-LYQV 98 A35181 LLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVL-VLPMAA-LYQV 98 L06803 VILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVL-VMPLSV-VSEI 157 A47174 VILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVL-VMPLSV-VSEI 157 X95604 VVLGLLILATVVGNVFVIAAILLERHLRSAANNLILSLAVADLLVACL-VMPLGA-VYEV 123 * .: *: * :: .::. . M63632 N-GYFVFGPTMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-FRFGNTHAIMGV 157 U22180 H-GYFVFGPTGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-FRFGENHAIMGV 157 M92038 N-GYFVFGPVGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-FRFSATHAMMGI 157 A45229 N-GYFVLGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSSHAFAGI 157 B45229 N-GYFALGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSTHASAGI 157 L11864 N-RYFIFGATACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-FTFKTPHAIAGC 161 M13299 N-GYFVFGRHVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-FRFSSKHALTVV 154 K03494 Y-GYFVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-VRFDAKLAIVGI 173 Z68193 S-GYFVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VRFDAKLAIVGI 173 M92036 F-GYFILGHPLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-IKFDSKLAIIGI 172 M62903 S-GYFILGHPMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-IKFDGKLAVAGI 170 S75720 N-GFFVFGRRMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-FQFQRRHAVSGC 151 M17718 H-QGYALGHLGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMI 176 X65879 H-QGYALGHLGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMI 175 M17730 G-FAIYLGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMN 172 X65880 H-RGFALGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMN 173 D50584 SGGVWMFSPQYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-PKLTTGKAVVFA 175 D50583 SGGRWMFSGTYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-PKLTQGKATFMC 175 K02320 F-ETWVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLAL--- 167 K02315 F-ETWVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKI 170 X65877 F-ETWVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKI 170 M12896 Y-ETWVLGPLWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKI 177 X65878 Y-ETWVLGPLWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKI 177 U26026 Y-ETWVLGPLFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-KPLSINGALIRI 172 L03781 A-ETWILGPFMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-APLTHKKATLLL 167 X07797 M-KKWIFGKVACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASKKMSHRRAFLMI 157 X70498 L-KKWIFGFAACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMI 156 L21195 G-GKWIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMI 203 L15228 G-GKWIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMI 162 A47425 G-GKWIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMI 162 M83181 L-NKWTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALI 157 A35181 L-NKWTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALI 157 L06803 S-KVWFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSIDYI-RRRSARRILLMI 215 A47174 S-KVWFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSIDYI-RRRSARRILLMI 215 X95604 V-QRWTLGPELCDMWTSGDVLCCTASILHLVAIALDRYWAVTNIDYI-HASTAKRVGMMI 181 : * : : :*: : M63632 AFTWIMALAC-AAPPL-VGWSR-----YIPEGMQ---CSCGPDYYTLNPNFNNESYVVYM 207 U22180 AFTWVMALAC-AAPPL-VGWSR-----YIPEGMQ---CSCGIDYYTLKPEVNNESFVIYM 207 M92038 AFTWVMAFSC-AAPPL-FGWSR-----YMPEGMQ---CSCGPDYYTHNPDYHNESYVLYM 207 A45229 AFTWVMALAC-AAPPL-FGWSR-----YIPEGMQ---CSCGPDYYTLNPDYNNESYVIYM 207 B45229 AFTWVMAMAC-AAPPL-VGWSR-----YIPEGIQ---CSCGPDYYTLNPEYNNESYVLYM 207 L11864 ILPWISALAA-SLPPL-FGWSR-----YIPEGLQ---CSCGPDWYTTNNKYNNESYVMFL 211 M13299 LATWTIGIGV-SIPPF-FGWSR-----FIPEGLQ---CSCGPDWYTVGTKYRSESYTWFL 204 K03494 AFSWIWAAVW-TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSYPGVQSYMIVL 223 Z68193 AFSWIWSAVW-TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSYPGVQSYMIVL 223 M92036 VFSWVWAWGW-SAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSVELGCQSFMLTL 222 M62903 LFSWLWSCAW-TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSDPGVQSYMVVL 220 S75720 AFTWGWALLW-SAPPL-LGWSS-----YVPEGLR---TSCGPNWYTGG--SNNNSYILSL 199 M17718 IFIYMYATPW-VVACYTETWGR-----FVPEGYL---TSCTFDYLTDN--FDTRLFVACI 225 X65879 IFIYLYATPW-VVACYTESWGR-----FVPEGYL---TSCTFDYLTDN--FDTRLFVACI 224 M17730 IIIWLYCTPW-VVLPLTQFWDR-----FVPEGYL---TSCSFDYLSDN--FDTRLFVGTI 221 X65880 IIIWLYCTPW-VVLPLTQFWDR-----FVPEGYL---TSCSFDYLSDN--FDTRLFVGTI 222 D50584 LISWVIAIGC-ALPPF-FGWGN-----YILEGIL---DSCSYDYLTQD--FNTFSYNIFI 223 D50583 GLAWVISVGW-SLPPF-FGWGS-----YTLEGIL---DSCSYDYFTRD--MNTITYNICI 223 K02320 -------------------GKM-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY 198 K02315 AYIWFMSSIW-CLAPA-FGWSR-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY 218 X65877 AYIWFMSTIWCCLAPV-FGWSR-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY 219 M12896 LFIWMMAVFW-TVMPL-IGWSA-----YVPEGNL---TACSIDYMTRM--WNPRSYLITY 225 X65878 AFIWMMAVFW-TIMPL-IGWSS-----YVPEGNL---TACSIDYMTRQ--WNPRSYLITY 225 U26026 IAIWLFSLGW-TIAPM-FGWNR-----YVPEGNM---TACGTDYFNRG--LLSASYLVCY 220 L03781 LFVWIWSGGW-TILPF-FGWSR-----YVPEGNL---TSCTVDYLTKD--WSSASYVVIY 215 X07797 IFVWMWSIVW-SVGPV-FNWGA-----YVPEGIL---TSCSFDYLSTD--PSTRSFILCM 205 X70498 IFVWLWSVLW-AIGPI-FGWGA-----YTLEGVL---CNCSFDYISRD--STTRSNILCM 204 L21195 LSVWLLSASI-TLPPL-FGWAQ-----NVNDDKV---CLISQD----------FGYTIYS 243 L15228 LSVWLLSASI-TLPPL-FGWAQ-----NVNDDKV---CLISQD----------FGYTIYS 202 A47425 LSVWLLSASI-TLPPL-FGWAQ-----NVNDDKV---CLISQD----------FGYTIYS 202 M83181 SLTWLIGFLI-SIPPM-LGWRT-----PEDRSDPD-ACTISKD----------HGYTIYS 199 A35181 SLTWLIGFLI-SIPPM-LGWRT-----PEDRSDPD-ACTISKD----------HGYTIYS 199 L06803 MVVWIVALFI-SIPPL-FGWRD-----PNNDPDKTGTCIISQD----------KGYTIFS 258 A47174 MVVWIVALFI-SIPPL-FGWRD-----PNNDPDKTGTCIISQD----------KGYTIFS 258 X95604 ACVWTVSFFV-CIAQL-LGWKDPDWNQRVSEDLR---CVVSQD----------VGYQIFA 226 : M63632 FVVHFLVPFVIIFFCYGRLLCTVKEAAAAQ------------------------------ 237 U22180 FVVHFTIPMIVIFFCYGQLVFTVKEAAAQQ------------------------------ 237 M92038 FVIHFIIPVVVIFFSYGRLICKVREAAAQQ------------------------------ 237 A45229 FVCHFILPVAVIFFTYGRLVCTVKAAAAQQ------------------------------ 237 B45229 FICHFILPVTIIFFTYGRLVCTVKAAAAQQ------------------------------ 237 L11864 FCFCFAVPFGTIVFCYGQLLITLKLAAKAQ------------------------------ 241 M13299 FIFCFIVPLSLICFSYTQLLRALKAVAAQQ------------------------------ 234 K03494 MVTCCITPLSIIVLCYLQVWLAIRAVAKQQ------------------------------ 253 Z68193 MVTCCIIPLAIIMLCYLQVWLAIRAVAKQQ------------------------------ 253 M92036 MITCCFLPLFIIIVCYLQVWMAIRAVAAQQ------------------------------ 252 M62903 MVTCCFFPLAIIILCYLQVWLAIRAVAAQQ------------------------------ 250 S75720 FVTCFVLPLSLILFSYTNLLLTLRAAAAQQ------------------------------ 229 M17718 FFFSFVCPTTMITYYYSQIVGHVFSHEKAL------------------------------ 255 X65879 FFFSFVCPTTMITYYYSQIVGHVFSHEKAL------------------------------ 254 M17730 FFFSFVCPTLMILYYYSQIVGHVFSHEKAL------------------------------ 251 X65880 FLFSFVVPTLMILYYYSQIVGHVFNHEKAL------------------------------ 252 D50584 FVFDYFLPAAIIVFSYVFIVKAIFAHEAAM------------------------------ 253 D50583 FIFDFFLPASVIVFSYVFIVKAIFAHEAAM------------------------------ 253 K02320 SIFVYYIPLFLICYSYWFIIAAVSAHEKAM------------------------------ 228 K02315 SIFVYYIPLFLICYSYWFIIAAVSAHEKAM------------------------------ 248 X65877 SIFVYYIPLFLICYSYWFIIAAVSAHEKAM------------------------------ 249 M12896 SLFVYYTPLFLICYSYWFIIAAVAAHEKAM------------------------------ 255 X65878 SLFVYYTPLFMICYSYWFIIATVAAHEKAM------------------------------ 255 U26026 GIWVYFVPLFLIIYSYWFIIQAVAAHEKNM------------------------------ 250 L03781 GLAVYFLPLITMIYCYFFIVHAVAEHEKQL------------------------------ 245 X07797 YFCGFMLPIIIIAFCYFNIVMSVSNHEKEM------------------------------ 235 X70498 FILGFFGPILIIFFCYFNIVMSVSNHEKEM------------------------------ 234 L21195 TAVAFYIPMSVMLFMYYQIYKAARKSAAKHKFPGFP------------------------ 279 L15228 TAVAFYIPMSVMLFMYYQIYKAARKSAAKHKFPGFP------------------------ 238 A47425 TAVAFYIPMSVMLFMYYQIYKAARKSAAKHKFPGFP------------------------ 238 M83181 TFGAFYIPLLLMLVLYGRIFRAARFRIRKTVKKVEKTGADT------------------- 240 A35181 TFGAFYIPLLLMLVLYGRIFRAARFRIRKTVRKVEKKGAGT------------------- 240 L06803 TVGAFYLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDC 318 A47174 TVGAFYLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDC 318 X95604 TASSFYVPVLIILILYWRIYQTARKRIRRRRGATARGGVGPP-------------PVPAG 273 * : * : M63632 ------------------------------------------------------------ 237 U22180 ------------------------------------------------------------ 237 M92038 ------------------------------------------------------------ 237 A45229 ------------------------------------------------------------ 237 B45229 ------------------------------------------------------------ 237 L11864 ------------------------------------------------------------ 241 M13299 ------------------------------------------------------------ 234 K03494 ------------------------------------------------------------ 253 Z68193 ------------------------------------------------------------ 253 M92036 ------------------------------------------------------------ 252 M62903 ------------------------------------------------------------ 250 S75720 ------------------------------------------------------------ 229 M17718 ------------------------------------------------------------ 255 X65879 ------------------------------------------------------------ 254 M17730 ------------------------------------------------------------ 251 X65880 ------------------------------------------------------------ 252 D50584 ------------------------------------------------------------ 253 D50583 ------------------------------------------------------------ 253 K02320 ------------------------------------------------------------ 228 K02315 ------------------------------------------------------------ 248 X65877 ------------------------------------------------------------ 249 M12896 ------------------------------------------------------------ 255 X65878 ------------------------------------------------------------ 255 U26026 ------------------------------------------------------------ 250 L03781 ------------------------------------------------------------ 245 X07797 ------------------------------------------------------------ 235 X70498 ------------------------------------------------------------ 234 L21195 ----------------------------RVE--------------PDSVI---------- 287 L15228 ----------------------------RVQ--------------PESVI---------- 246 A47425 ----------------------------RVQ--------------PESVI---------- 246 M83181 --------------------RHGASPAPQPKKSVNGESGSRNWRL--GVESKAGGALCAN 278 A35181 --------------------SLGTSSAPPPKKSLNGQPGSGDWRR--CAENRAVGTPCTN 278 L06803 NGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKN-RAKK------LPENAN---------- 361 A47174 NGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKN-RAKK------LPENAN---------- 361 X95604 GALVAGGGSGGIAAAVVAVIGRPLPTISETTTT-GF--------T--NVS---------- 312 M63632 -----------Q------------------------------------------------ 238 U22180 -----------Q------------------------------------------------ 238 M92038 -----------Q------------------------------------------------ 238 A45229 -----------Q------------------------------------------------ 238 B45229 -----------Q------------------------------------------------ 238 L11864 -----------A------------------------------------------------ 242 M13299 -----------Q------------------------------------------------ 235 K03494 -----------K------------------------------------------------ 254 Z68193 -----------K------------------------------------------------ 254 M92036 -----------K------------------------------------------------ 253 M62903 -----------K------------------------------------------------ 251 S75720 -----------K------------------------------------------------ 230 M17718 -----------RDQ------A---------------------K----------------- 260 X65879 -----------RDQ------A---------------------K----------------- 259 M17730 -----------REQ------A---------------------K----------------- 256 X65880 -----------REQ------A---------------------K----------------- 257 D50584 -----------RAQ------A---------------------K----------------- 258 D50583 -----------RAQ------A---------------------K----------------- 258 K02320 -----------REQ------A---------------------K----------------- 233 K02315 -----------REQ------A---------------------K----------------- 253 X65877 -----------REQ------A---------------------K----------------- 254 M12896 -----------REQ------A---------------------K----------------- 260 X65878 -----------RDQ------A---------------------K----------------- 260 U26026 -----------REQ------A---------------------K----------------- 255 L03781 -----------REQ------A---------------------K----------------- 250 X07797 -----------AAM------A---------------------K----------------- 240 X70498 -----------AAM------A---------------------K----------------- 239 L21195 -ALNG-IVKLQKEV------E---------------------E----------------- 301 L15228 -SLNG-VVKLQKEV------E---------------------E----------------- 260 A47425 -SLNG-VVKLQKEV------E---------------------E----------------- 260 M83181 GAVRQGDDGAA------------------------LEVIEVHRVGNSKEHLPLPSEAGPT 314 A35181 GAVRQGDDEAT------------------------LEVIEVHRVGNSKEHLPLPSESGSN 314 L06803 -GVNS-NSSSS-ERLKQIQIETAEAFANGCAEEASIAML-ERQCNNGKKIS--------- 408 A47174 -GVNS-NSSSS-ERLKQIQIETAEAFANGCAEEASIAML-ERQCNNGKKIS--------- 408 X95604 -SNNT-SP----EK------Q---------------------SCANGLEADPPTTGYG-- 337 M63632 -----------------ES-ASTQKAEKEVTRMVVLMVIGFLVCWVPYASVAFYIFTHQG 280 U22180 -----------------ES-ATTQKAEKEVTRMVIIMVIFFLICWLPYASVAMYIFTHQG 280 M92038 -----------------ES-ATTQKAEKEVTRMVILMVLGFMLAWTPYAVVAFWIFTNKG 280 A45229 -----------------DS-ASTQKAEREVTKMVILMVFGFLIAWTPYATVAAWIFFNKG 280 B45229 -----------------DS-ASTQKAEREVTKMVILMVLGFLVAWTPYATVAAWIFFNKG 280 L11864 -----------------DS-ASTQKAEREVTKMVVVMVLGFLVCWAPYASFSLWIVSHRG 284 M13299 -----------------ES-ATTQKAEREVSRMVVVMVGSFCVCYVPYAAFAMYMVNNRN 277 K03494 -----------------ES-ESTQKAEKEVTRMVVVMVLAFCFCWGPYAFFACFAAANPG 296 Z68193 -----------------ES-ESTQKAEKEVTRMVVVMIFAYCVCWGPYTFFACFAAANPG 296 M92036 -----------------ES-ESTQKAEREVSRMVVVMIVAFCICWGPYASFVSFAAANPG 295 M62903 -----------------ES-ESTQKAEKEVSRMVVVMIVAYCFCWGPYTFFACFAAANPG 293 S75720 -----------------EA-DTTQRAEREVTRMVIVMVMAFLLCWLPYSTFALVVATHKG 272 M17718 -----KMNVESL---RSNVDKNKETAEIRIAKAAITICFLFFCSWTPYGVMSLIGAFGDK 312 X65879 -----KMNVDSL---RSNVDKSKEAAEIRIAKAAITICFLFFASWTPYGVMSLIGAFGDK 311 M17730 -----KMNVESL---RSNVDKSKETAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDK 308 X65880 -----KMNVESL---RSNVDKSKETAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDK 309 D50584 -----KMNVSTL---RSNE-ADAQRAEIRIAKTALVNVSLWFICWTPYALISLKGVMGDT 309 D50583 -----KMNVTNL---RSNE-AETQRAEIRIAKTALVNVSLWFICWTPYAAITIQGLLGNA 309 K02320 -----KMNVKSL---RSSED-AEKSAEGKLAKVALVTITLWFMAWTPYLVINCMGLFK-F 283 K02315 -----KMNVKSL---RSSED-AEKSAEGKLAKVALVTITLWFMAWTPYLVINCMGLFK-F 303 X65877 -----KMNVKSL---RSSED-ADKSAEGKLAKVALVTISLWFMAWTPYLVINCMGLFK-F 304 M12896 -----KMNVKSL---RSSED-CDKSAEGKLAKVALTTISLWFMAWTPYLVICYFGLFK-I 310 X65878 -----KMNVKSL---RSSED-CDKSAENKLAKVALTTISLWFMAWTPYLIICYFGLFK-I 310 U26026 -----KMNVASL---RSSEN-QNTSAECKLAKVALMTISLWFMAWTPYLVINFSGIFN-L 305 L03781 -----KMNVASL---RANADQQKQSAECRLAKVAMMTVGLWFMAWTPYLIISWAGVFSSG 302 X07797 -----RLNAKEL---RKA--QAGASAEMKLAKISMVIITQFMLSWSPYAIIALLAQFGPA 290 X70498 -----RLNAKEL---RKA--QAGANAEMRLAKISIVIVSQFLLSWSPYAVVALLAQFGPL 289 L21195 -----CANLSRLLKHERKN-ISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICG 355 L15228 -----CANLSRLLKHERKN-ISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICG 314 A47425 -----CANLSRLLKHERKN-ISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICG 314 M83181 PCAPASFERKNERNAEAKR-KMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPFCES 373 A35181 SYAPACLERKNERNAEAKR-KMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPFCES 373 L06803 --------SNDTPYSRTRE-KLELKRERKAARTLAIITGAFLICWLPFFIIALIGPFVDP 459 A47174 --------SNDTPYSRTRE-KLELKRERKAARTLAIITGAFLICWLPFFIIALIGPFVDP 459 X95604 --AVAAAYYPSLVRRKPKE-AADSKRERKAAKTLAIITGAFVACWLPFFVLAILVPTCD- 393 * . : .: *: . M63632 SD--FGAT-FMTLPAFFAKSSALYNPVIYILMNKQFRNCMITTLC----C-GKNPLGDDE 332 U22180 SN--FGPI-FMTLPAFFAKTASIYNPIIYIMMNKQFRNCMLTSLC----C-GKNPLGDDE 332 M92038 AD--FTAT-LMAVPAFFSKSSSLYNPIIYVLMNKQFRNCMITTIC----C-GKNPFGDED 332 A45229 AD--FSAK-FMAIPAFFSKSSALYNPVIYVLLNKQFRNCMLTTIF----C-GKNPLGDDE 332 B45229 AA--FSAQ-FMAIPAFFSKTSALYNPVIYVLLNKQFRSCMLTTLF----C-GKNPLGDEE 332 L11864 EE--FDLR-MATIPSCLSKASTVYNPVIYVLMNKQFRSCMMKMV-----C-GKNIE-EDE 334 M13299 HG--LDLR-LVTIPSFFSKSACIYNPIIYCFMNKQFQACIMKMV-----C-GKAMTDESD 328 K03494 YP--FHPL-MAALPAFFAKSATIYNPVIYVFMNRQFRNCILQLFG------KKVDDGS-E 346 Z68193 YA--FHPL-MAALPAYFAKSATIYNPVIYVFMNRQFRNCILQLFG------KKVDDGS-E 346 M92036 YA--FHPL-AAALPAYFAKSATIYNPVIYVFMNRQFRNCIMQLFG------KKVDDGS-E 345 M62903 YA--FHPL-AAALPAYFAKSATIYNPIIYVFMNRQFRNCILQLFG------KKVDDGS-E 343 S75720 II--IQPV-LASLPSYFSKTATVYNPIIYVFMNKQFQSCLLEMLC----C-GYQPQRT-G 323 M17718 TL--LTPG-ATMIPACACKMVACIDPFVYAISHPRYRMELQKRCPWLA--LNEK-AP-ES 365 X65879 TL--LTPG-ATMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPWLA--ISEK-AP-ES 364 M17730 SL--LTQG-ATMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPWLG--VNEK-SG-EI 361 X65880 SL--LTPG-ATMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPWLG--VNEK-SG-EA 362 D50584 SG--ITPL-VSTLPALLAKSCSCYNPFVYAISHPKYRLAITQHLPWFC--VHET-ET-KS 362 D50583 EG--ITPL-LTTLPALLAKSCSCYNPFVYAISHPKFRLAITQHLPWFC--VHEK-DP-ND 362 K02320 EG--LTPL-NTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S 337 K02315 EG--LTPL-NTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S 357 X65877 EG--LTPL-NTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S 358 M12896 DG--LTPL-TTIWGATFAKTSAVYNPIVYGISHPKYRIVLKEKCPMCV--FGNTDEPK-P 364 X65878 DG--LTPL-TTIWGATFAKTSAVYNPIVYGISHPNDRLVLKEKCPMCV--CGTTDEPK-P 364 U26026 VK--ISPL-FTIWGSLFAKANAVYNPIVYGISHPKYRAALFAKFPSLA--CAAEPSS-DA 359 L03781 TR--LTPL-ATIWGSVFAKANSCYNPIVYGISHPRYKAALYQRFPSLA--CGSGESGSDV 357 X07797 EW--VTPY-AAELPVLFAKASAIHNPIVYSVSHPKFREAIQTTFPWLLTCCQFDEKECED 347 X70498 EW--VTPY-AAQLPVMFAKASAIHNPMIYSVSHPKFREAISQTFPWVLTCCQFDDKETED 346 L21195 TSCSCIPLWVERTFLWLGYANSLINPFIYAFFNRDLRTTYRSLLQ----C-QYRNINRK- 409 L15228 TSCSCIPLWVERTCLWLGYANSLINPFIYAFFNRDLRPTSRSLLQ----C-QYRNINRK- 368 A47425 TSCSCIPLWVERTCLWLGYANSLINPFIYAFFNRDLRTTYRSLLQ----C-QYRNINRK- 368 M83181 SC-HMPTL-LGAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIK----C-K-------- 418 A35181 SC-HMPAL-LGAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIK----C-K-------- 418 L06803 EG--IPPF-ARSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILF----G-K-Y------ 504 A47174 EG--IPPF-ARSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILF----G-K-Y------ 504 X95604 CE--VSPV-LTSLSLWLGYFNSTLNPVIYTVFSPEFRHAFQRLLC----G-R-RV----- 439 :*.:* : M63632 -SG-AS-TSKTEVS-------------S-------------------------------- 344 U22180 -AS-AT-ASKTE------------------------------------------------ 341 M92038 VSSTVS-QSKTEVS-------------S-------------------------------- 346 A45229 -SSTVS-TSKTE------------------------------------------------ 342 B45229 -SSTVS-TSKTE------------------------------------------------ 342 L11864 -AS-TS-SQVTQVS---------------------------------------------- 345 M13299 T---CS-SQKTEVS-------------T-------------------------------- 339 K03494 LSSASK----TEVS-------------S-------------------------------- 357 Z68193 LSSASK----TEVS-------------S-------------------------------- 357 M92036 ASTTSR----TEVS-------------S-------------------------------- 356 M62903 V-STSR----TEVS-------------S-------------------------------- 353 S75720 KASPGTPGPHADVT---------AAGLR-------------------------------- 342 M17718 -SAVAS-TSTT----------------Q-------------------------------- 375 X65879 -RAAIS-TSTT----------------Q-------------------------------- 374 M17730 -SSAQS-TT-T----------------Q-------------------------------- 370 X65880 -SSAQS-TTTQ----------------E-------------------------------- 372 D50584 -NDDSQ-SNS-------------------------------------------------- 370 D50583 -VEENQ-SSN-------------------------------------------------- 370 K02320 -SD-AQ-SQAT------------------------------------------------- 345 K02315 -SD-AQ-SQAT------------------------------------------------- 365 X65877 -SE-AQ-SQAT------------------------------------------------- 366 M12896 -DAPAS-DTET------------------------------------------------- 373 X65878 -DAPPS-DTET------------------------------------------------- 373 U26026 -VSTTS-GTTT----------------V-------------------------------- 369 L03781 -KSEAS-ATTT----------------M-------------------------------- 367 X07797 -ANDAE-EEVV---------------ASERGGE--SRDAAQMKEMMAMMQKMQAQQAAYQ 388 X70498 -DKDAE-TEIP---------------AGESSDAAPSADAAQMKEMMAMMQKMQQQQAAYP 389 L21195 LSAAGMH-EALKLAERPERPEFVLQNAD-------------------------------- 436 L15228 LSAAGMH-EALKLAERPERSEFVLQNSD-------------------------------- 395 A47425 LSAAGMH-EALKLAERPERSEFVLQNSD-------------------------------- 395 M83181 ------------------------------------------------------------ 418 A35181 ------------------------------------------------------------ 418 L06803 ------------------------------------------------------------ 504 A47174 ------------------------------------------------------------ 504 X95604 ------------------------------------------------------------ 439 M63632 ----------------------------------------------------------VS 346 U22180 ------------------------------------------------------------ 341 M92038 ----------------------------------------------------------VS 348 A45229 ------------------------------------------------------------ 342 B45229 ------------------------------------------------------------ 342 L11864 ------------------------------------------------------------ 345 M13299 ----------------------------------------------------------VS 341 K03494 ------------------------------------------------------------ 357 Z68193 ------------------------------------------------------------ 357 M92036 ----------------------------------------------------------VS 358 M62903 ----------------------------------------------------------VS 355 S75720 ----------------------------------------------------------NK 344 M17718 -----------------------------------------------------------E 376 X65879 -----------------------------------------------------------E 375 M17730 -----------------------------------------------------------E 371 X65880 -----------------------------------------------------------Q 373 D50584 ------------------------------------------------------------ 370 D50583 ------------------------------------------------------------ 370 K02320 -----------------------------------------------------------A 346 K02315 -----------------------------------------------------------A 366 X65877 -----------------------------------------------------------T 367 M12896 -----------------------------------------------------------T 374 X65878 -----------------------------------------------------------T 374 U26026 -----------------------------------------------------------T 370 L03781 ----------------------------------------------------------EE 369 X07797 PPPPPQGYPPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGYPPQGAPPQVEAPQGAPPQGV 448 X70498 PQG----YAPPPQGYPPQGYPPQGYPPQGYPPQGY---PPPPQGAPPQG-APPAAPPQGV 441 L21195 ----------------------------------------------------------YC 438 L15228 ----------------------------------------------------------HC 397 A47425 ----------------------------------------------------------HC 397 M83181 ------------------------------------------------------------ 418 A35181 ------------------------------------------------------------ 418 L06803 ------------------------------------------------------------ 504 A47174 ------------------------------------------------------------ 504 X95604 ------------------------------------------------------------ 439 M63632 TSPVSPA 353 U22180 TSQVAPA 348 M92038 SSQVSPA 355 A45229 VSSVSPA 349 B45229 VSSVSPA 349 L11864 -SVAPEK 351 M13299 STQVGPN 348 K03494 VSSVSPA 364 Z68193 VSSVSPA 364 M92036 NSSVAPA 365 M62903 NSSVSPA 362 S75720 VMPAHPV 351 M17718 PQQTTAA 383 X65879 QQQTTAA 382 M17730 QQQTTAA 378 X65880 TQQTSAA 380 D50584 TVAQDKA 377 D50583 TQTQEKS 377 K02320 SEAESKA 353 K02315 SEAESKA 373 X65877 SEAESKA 374 M12896 SEADSKA 381 X65878 SEAESKD 381 U26026 DNEKSNA 377 L03781 KPKIPEA 376 X07797 DNQAYQA 455 X70498 DNQAYQA 448 L21195 RKKGHDS 445 L15228 GKKGHDT 404 A47425 GKKGHDT 404 M83181 ---FCRQ 422 A35181 ---FCRR 422 L06803 --RRGHR 509 A47174 --RRGHR 509 X95604 RRRRAPQ 446 ALTER-1.3.4/alter-web/src/main/resources/tcoffee.fas000077500000000000000000000667251300536243200221240ustar00rootroot00000000000000>M63632 1 Lampetra japonica rhodopsin <>[BBRC174,1125-1132'91] MNGTEGD---------------------------NFYVP-------F------------- -----------SN-KTG-----------------LA--RSPYEYPQYY-LAEPWKYSALA AYMFFLILVGFPVNFLTLFVTVQHKKLRTPLNYILLNLAMANLFMVLF-GFTVTM-YTSM N-GYFVFGPTMCSIEGFFATLGGEVALWSLVVLAIERYIVICKPMGN-FRFGNTHAIMGV AFTWIMALAC-AAPPL-VGWSR-----YIPEGMQ---CSCGPDYYTLNPNFNNESYVVYM FVVHFLVPFVIIFFCYGRLLCTVKEAAAAQ------------------------------ ------------------------------------------------------------ -----------Q------------------------------------------------ -----------------ES-ASTQKAEKEVTRMVVLMVIGFLVCWVPYASVAFYIFTHQG SD--FGAT-FMTLPAFFAKSSALYNPVIYILMNKQFRNCMITTLC----C-GKNPLGDDE -SG-AS-TSKTEVS-------------S-------------------------------- ----------------------------------------------------------VS TSPVSPA >U22180 1 rat opsin [J.Mol.Neurosci.5(3),207-209'94] MNGTEGP---------------------------NFYVP-------F------------- -----------SN-ITG-----------------VV--RSPFEQPQYY-LAEPWQFSMLA AYMFLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVFG-GFTTTL-YTSL H-GYFVFGPTGCNLEGFFATLGGEIGLWSLVVLAIERYVVVCKPMSN-FRFGENHAIMGV AFTWVMALAC-AAPPL-VGWSR-----YIPEGMQ---CSCGIDYYTLKPEVNNESFVIYM FVVHFTIPMIVIFFCYGQLVFTVKEAAAQQ------------------------------ ------------------------------------------------------------ -----------Q------------------------------------------------ -----------------ES-ATTQKAEKEVTRMVIIMVIFFLICWLPYASVAMYIFTHQG SN--FGPI-FMTLPAFFAKTASIYNPIIYIMMNKQFRNCMLTSLC----C-GKNPLGDDE -AS-AT-ASKTE------------------------------------------------ ------------------------------------------------------------ TSQVAPA >M92038 1 chicken green sensitive cone opsin [PNAS89,5932-5936'9 MNGTEGI---------------------------NFYVP-------M------------- -----------SN-KTG-----------------VV--RSPFEYPQYY-LAEPWKYRLVC CYIFFLISTGLPINLLTLLVTFKHKKLRQPLNYILVNLAVADLFMACF-GFTVTF-YTAW N-GYFVFGPVGCAVEGFFATLGGQVALWSLVVLAIERYIVVCKPMGN-FRFSATHAMMGI AFTWVMAFSC-AAPPL-FGWSR-----YMPEGMQ---CSCGPDYYTHNPDYHNESYVLYM FVIHFIIPVVVIFFSYGRLICKVREAAAQQ------------------------------ ------------------------------------------------------------ -----------Q------------------------------------------------ -----------------ES-ATTQKAEKEVTRMVILMVLGFMLAWTPYAVVAFWIFTNKG AD--FTAT-LMAVPAFFSKSSSLYNPIIYVLMNKQFRNCMITTIC----C-GKNPFGDED VSSTVS-QSKTEVS-------------S-------------------------------- ----------------------------------------------------------VS SSQVSPA >A45229 opsin, green-sensitive (clone GFgr-1) - goldfish MNGTEGK---------------------------NFYVP-------M------------- -----------SN-RTG-----------------LV--RSPFEYPQYY-LAEPWQFKILA LYLFFLMSMGLPINGLTLVVTAQHKKLRQPLNFILVNLAVAGTIMVCF-GFTVTF-YTAI N-GYFVLGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSSHAFAGI AFTWVMALAC-AAPPL-FGWSR-----YIPEGMQ---CSCGPDYYTLNPDYNNESYVIYM FVCHFILPVAVIFFTYGRLVCTVKAAAAQQ------------------------------ ------------------------------------------------------------ -----------Q------------------------------------------------ -----------------DS-ASTQKAEREVTKMVILMVFGFLIAWTPYATVAAWIFFNKG AD--FSAK-FMAIPAFFSKSSALYNPVIYVLLNKQFRNCMLTTIF----C-GKNPLGDDE -SSTVS-TSKTE------------------------------------------------ ------------------------------------------------------------ VSSVSPA >B45229 opsin, green-sensitive (clone GFgr-2) - goldfish MNGTEGN---------------------------NFYVP-------L------------- -----------SN-RTG-----------------LV--RSPFEYPQYY-LAEPWQFKLLA VYMFFLICLGLPINGLTLICTAQHKKLRQPLNFILVNLAVAGAIMVCF-GFTVTF-YTAI N-GYFALGPTGCAVEGFMATLGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSTHASAGI AFTWVMAMAC-AAPPL-VGWSR-----YIPEGIQ---CSCGPDYYTLNPEYNNESYVLYM FICHFILPVTIIFFTYGRLVCTVKAAAAQQ------------------------------ ------------------------------------------------------------ -----------Q------------------------------------------------ -----------------DS-ASTQKAEREVTKMVILMVLGFLVAWTPYATVAAWIFFNKG AA--FSAQ-FMAIPAFFSKTSALYNPVIYVLLNKQFRSCMLTTLF----C-GKNPLGDEE -SSTVS-TSKTE------------------------------------------------ ------------------------------------------------------------ VSSVSPA >L11864 1 Carassius auratus blue cone opsin [Biochemistry32,208- MKQVPEFH-E------------------------DFYIP-------I------------- -------P--LDI-NNL-----------------SA--YSPFLVPQDH-LGNQGIFMAMS VFMFFIFIGGASINILTILCTIQFKKLRSHLNYILVNLSIANLFVAIF-GSPLSF-YSFF N-RYFIFGATACKIEGFLATLGGMVGLWSLAVVAFERWLVICKPLGN-FTFKTPHAIAGC ILPWISALAA-SLPPL-FGWSR-----YIPEGLQ---CSCGPDWYTTNNKYNNESYVMFL FCFCFAVPFGTIVFCYGQLLITLKLAAKAQ------------------------------ ------------------------------------------------------------ -----------A------------------------------------------------ -----------------DS-ASTQKAEREVTKMVVVMVLGFLVCWAPYASFSLWIVSHRG EE--FDLR-MATIPSCLSKASTVYNPVIYVLMNKQFRSCMMKMV-----C-GKNIE-EDE -AS-TS-SQVTQVS---------------------------------------------- ------------------------------------------------------------ -SVAPEK >M13299 1 human BCP <>[Science232(4747),193-202'86] MRKMSEE---------------------------EFYL--------F------------- -----------KN-IS-------------------S--VGPWDGPQYH-IAPVWAFYLQA AFMGTVFLIGFPLNAMVLVATLRYKKLRQPLNYILVNVSFGGFLLCIF-SVFPVF-VASC N-GYFVFGRHVCALEGFLGTVAGLVTGWSLAFLAFERYIVICKPFGN-FRFSSKHALTVV LATWTIGIGV-SIPPF-FGWSR-----FIPEGLQ---CSCGPDWYTVGTKYRSESYTWFL FIFCFIVPLSLICFSYTQLLRALKAVAAQQ------------------------------ ------------------------------------------------------------ -----------Q------------------------------------------------ -----------------ES-ATTQKAEREVSRMVVVMVGSFCVCYVPYAAFAMYMVNNRN HG--LDLR-LVTIPSFFSKSACIYNPIIYCFMNKQFQACIMKMV-----C-GKAMTDESD T---CS-SQKTEVS-------------T-------------------------------- ----------------------------------------------------------VS STQVGPN >K03494 1 human GCP <>[Science232(4747),193-202'86] MAQQWSLQ-RLAGRH---PQD--S--YEDSTQSSIFTYT-------N------------- -----------SN---------------------ST--RGPFEGPNYH-IAPRWVYHLTS VWMIFVVIASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVI-ASTISV-VNQV Y-GYFVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWMVVCKPFGN-VRFDAKLAIVGI AFSWIWAAVW-TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSYPGVQSYMIVL MVTCCITPLSIIVLCYLQVWLAIRAVAKQQ------------------------------ ------------------------------------------------------------ -----------K------------------------------------------------ -----------------ES-ESTQKAEKEVTRMVVVMVLAFCFCWGPYAFFACFAAANPG YP--FHPL-MAALPAFFAKSATIYNPVIYVFMNRQFRNCILQLFG------KKVDDGS-E LSSASK----TEVS-------------S-------------------------------- ------------------------------------------------------------ VSSVSPA >Z68193 1 human Red Opsin <>[] MAQQWSLQ-RLAGRH---PQD--S--YEDSTQSSIFTYT-------N------------- -----------SN---------------------ST--RGPFEGPNYH-IAPRWVYHLTS VWMIFVVTASVFTNGLVLAATMKFKKLRHPLNWILVNLAVADLAETVI-ASTISI-VNQV S-GYFVLGHPMCVLEGYTVSLCGITGLWSLAIISWERWLVVCKPFGN-VRFDAKLAIVGI AFSWIWSAVW-TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSYPGVQSYMIVL MVTCCIIPLAIIMLCYLQVWLAIRAVAKQQ------------------------------ ------------------------------------------------------------ -----------K------------------------------------------------ -----------------ES-ESTQKAEKEVTRMVVVMIFAYCVCWGPYTFFACFAAANPG YA--FHPL-MAALPAYFAKSATIYNPVIYVFMNRQFRNCILQLFG------KKVDDGS-E LSSASK----TEVS-------------S-------------------------------- ------------------------------------------------------------ VSSVSPA >M92036 1 Gecko gecko P521 [PNAS89,6841-6845'92] MTEAWNVA-VFAARR---SR---D--DDDTTRGSVFTYT-------N------------- -----------TN---------------------NT--RGPFEGPNYH-IAPRWVYNLVS FFMIIVVIASCFTNGLVLVATAKFKKLRHPLNWILVNLAFVDLVETLV-ASTISV-FNQI F-GYFILGHPLCVIEGYVVSSCGITGLWSLAIISWERWFVVCKPFGN-IKFDSKLAIIGI VFSWVWAWGW-SAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSVELGCQSFMLTL MITCCFLPLFIIIVCYLQVWMAIRAVAAQQ------------------------------ ------------------------------------------------------------ -----------K------------------------------------------------ -----------------ES-ESTQKAEREVSRMVVVMIVAFCICWGPYASFVSFAAANPG YA--FHPL-AAALPAYFAKSATIYNPVIYVFMNRQFRNCIMQLFG------KKVDDGS-E ASTTSR----TEVS-------------S-------------------------------- ----------------------------------------------------------VS NSSVAPA >M62903 1 chicken visual pigment <>[BBRC173,1212-1217'90] MAAWEAAF-AA--RR----RH--E--EEDTTRDSVFTYT-------N------------- -----------SN---------------------NT--RGPFEGPNYH-IAPRWVYNLTS VWMIFVVAASVFTNGLVLVATWKFKKLRHPLNWILVNLAVADLGETVI-ASTISV-INQI S-GYFILGHPMCVVEGYTVSACGITALWSLAIISWERWFVVCKPFGN-IKFDGKLAVAGI LFSWLWSCAW-TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSDPGVQSYMVVL MVTCCFFPLAIIILCYLQVWLAIRAVAAQQ------------------------------ ------------------------------------------------------------ -----------K------------------------------------------------ -----------------ES-ESTQKAEKEVSRMVVVMIVAYCFCWGPYTFFACFAAANPG YA--FHPL-AAALPAYFAKSATIYNPIIYVFMNRQFRNCILQLFG------KKVDDGS-E V-STSR----TEVS-------------S-------------------------------- ----------------------------------------------------------VS NSSVSPA >S75720 1 chicken P-opsin <>[Science267(5203),1502-1506'95] MSSNSSQA--------------------------------------P------------- -----------PN---------------------GT--PGPFDGPQWPYQAPQSTYVGVA VLMGTVVACASVVNGLVIVVSICYKKLRSPLNYILVNLAVADLLVTLC-GSSVSL-SNNI N-GFFVFGRRMCELEGFMVSLTGIVGLWSLAILALERYVVVCKPLGD-FQFQRRHAVSGC AFTWGWALLW-SAPPL-LGWSS-----YVPEGLR---TSCGPNWYTGG--SNNNSYILSL FVTCFVLPLSLILFSYTNLLLTLRAAAAQQ------------------------------ ------------------------------------------------------------ -----------K------------------------------------------------ -----------------EA-DTTQRAEREVTRMVIVMVMAFLLCWLPYSTFALVVATHKG II--IQPV-LASLPSYFSKTATVYNPIIYVFMNKQFQSCLLEMLC----C-GYQPQRT-G KASPGTPGPHADVT---------AAGLR-------------------------------- ----------------------------------------------------------NK VMPAHPV >M17718 1 D.melanogaster Rh3 <>[J.Neurosci.7,1550-1557'87] MESGNVSS-SL-FGN-VSTA-----------LRPEA-RL-------S------------- --------A--E--TR---------LLGWNVPPEELRHIPEH-WLTYP-EPPESMNYLLG TLYIFFTLMSMLGNGLVIWVFSAAKSLRTPSNILVINLAFCDFMMM-V-KTPIFI-YNSF H-QGYALGHLGCQIFGIIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMI IFIYMYATPW-VVACYTETWGR-----FVPEGYL---TSCTFDYLTDN--FDTRLFVACI FFFSFVCPTTMITYYYSQIVGHVFSHEKAL------------------------------ ------------------------------------------------------------ -----------RDQ------A---------------------K----------------- -----KMNVESL---RSNVDKNKETAEIRIAKAAITICFLFFCSWTPYGVMSLIGAFGDK TL--LTPG-ATMIPACACKMVACIDPFVYAISHPRYRMELQKRCPWLA--LNEK-AP-ES -SAVAS-TSTT----------------Q-------------------------------- -----------------------------------------------------------E PQQTTAA >X65879 1 Drosophila pseudoobscura Rh3 <>[Genetics132(1),193-204'92 MEYHNVSS--V-LGN-VSSV-----------LRPDA-RL-------S------------- --------A--E--SR---------LLGWNVPPDELRHIPEH-WLIYP-EPPESMNYLLG TLYIFFTVISMIGNGLVMWVFSAAKSLRTPSNILVINLAFCDFMMM-I-KTPIFI-YNSF H-QGYALGHLGCQIFGVIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMI IFIYLYATPW-VVACYTESWGR-----FVPEGYL---TSCTFDYLTDN--FDTRLFVACI FFFSFVCPTTMITYYYSQIVGHVFSHEKAL------------------------------ ------------------------------------------------------------ -----------RDQ------A---------------------K----------------- -----KMNVDSL---RSNVDKSKEAAEIRIAKAAITICFLFFASWTPYGVMSLIGAFGDK TL--LTPG-ATMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPWLA--ISEK-AP-ES -RAAIS-TSTT----------------Q-------------------------------- -----------------------------------------------------------E QQQTTAA >M17730 1 D.melanogaster Rh4 opsin <>[J.Neurosci.7,1558-1566'87] MEPLCNAS-EP--------P-----------LRPEA-RS--------------------- --------S-GNGDLQ---------FLGWNVPPDQIQYIPEH-WLTQL-EPPASMHYMLG VFYIFLFCASTVGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMC-L-KAPIFN-SFHR G-FAIYLGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMN IIIWLYCTPW-VVLPLTQFWDR-----FVPEGYL---TSCSFDYLSDN--FDTRLFVGTI FFFSFVCPTLMILYYYSQIVGHVFSHEKAL------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVESL---RSNVDKSKETAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDK SL--LTQG-ATMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPWLG--VNEK-SG-EI -SSAQS-TT-T----------------Q-------------------------------- -----------------------------------------------------------E QQQTTAA >X65880 1 Drosophila pseudoobscura Rh4 <>[Genetics132(1),193-204'92 MDALCNAS-EP--------P-----------LRPEA-RM-------S------------- --------S-GSDELQ---------FLGWNVPPDQIQYIPEH-WLTQL-EPPASMHYMLG VFYIFLFFASTLGNGMVIWIFSTSKSLRTPSNMFVLNLAVFDLIMC-L-KAPIFI-YNSF H-RGFALGNTWCQIFASIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMN IIIWLYCTPW-VVLPLTQFWDR-----FVPEGYL---TSCSFDYLSDN--FDTRLFVGTI FLFSFVVPTLMILYYYSQIVGHVFNHEKAL------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVESL---RSNVDKSKETAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDK SL--LTPG-ATMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPWLG--VNEK-SG-EA -SSAQS-TTTQ----------------E-------------------------------- -----------------------------------------------------------Q TQQTSAA >D50584 1 Hemigrapsus sanguineus opsin BcRh2 [J.Exp.Biol.1 MTNATGPQ-MAYYGA-ASMD-----------FG-----Y-------P------------- --------E-G---VS----------IVDFVRPEIKPYVHQH-WYNYP-PVNPMWHYLLG VIYLFLGTVSIFGNGLVIYLFNKSAALRTPANILVVNLALSDLIMLTT-NVPFFT-YNCF SGGVWMFSPQYCEIYACLGAITGVCSIWLLCMISFDRYNIICNGFNG-PKLTTGKAVVFA LISWVIAIGC-ALPPF-FGWGN-----YILEGIL---DSCSYDYLTQD--FNTFSYNIFI FVFDYFLPAAIIVFSYVFIVKAIFAHEAAM------------------------------ ------------------------------------------------------------ -----------RAQ------A---------------------K----------------- -----KMNVSTL---RSNE-ADAQRAEIRIAKTALVNVSLWFICWTPYALISLKGVMGDT SG--ITPL-VSTLPALLAKSCSCYNPFVYAISHPKYRLAITQHLPWFC--VHET-ET-KS -NDDSQ-SNS-------------------------------------------------- ------------------------------------------------------------ TVAQDKA >D50583 1 Hemigrapsus sanguineus opsin BcRh1 [J.Exp.Biol.1 MANVTGPQ-MAFYGS-GAAT-----------FG-----Y-------P------------- --------E-G---MT----------VADFVPDRVKHMVLDH-WYNYP-PVNPMWHYLLG VVYLFLGVISIAGNGLVIYLYMKSQALKTPANMLIVNLALSDLIMLTT-NFPPFC-YNCF SGGRWMFSGTYCEIYAALGAITGVCSIWTLCMISFDRYNIICNGFNG-PKLTQGKATFMC GLAWVISVGW-SLPPF-FGWGS-----YTLEGIL---DSCSYDYFTRD--MNTITYNICI FIFDFFLPASVIVFSYVFIVKAIFAHEAAM------------------------------ ------------------------------------------------------------ -----------RAQ------A---------------------K----------------- -----KMNVTNL---RSNE-AETQRAEIRIAKTALVNVSLWFICWTPYAAITIQGLLGNA EG--ITPL-LTTLPALLAKSCSCYNPFVYAISHPKFRLAITQHLPWFC--VHEK-DP-ND -VEENQ-SSN-------------------------------------------------- ------------------------------------------------------------ TQTQEKS >K02320 1 D.melanogaster opsin <>[Cell40,851-858'85] MESFAVAA----------AQ-----------LGPHF-AP-------L------------- -----------SN-GS----------VVDKVTPDMAHLISPY-WNQFP-AMDPIWAKILT AYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMIT-NTPMMG-INLY F-ETWVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLAL--- -------------------GKM-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY SIFVYYIPLFLICYSYWFIIAAVSAHEKAM------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVKSL---RSSED-AEKSAEGKLAKVALVTITLWFMAWTPYLVINCMGLFK-F EG--LTPL-NTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S -SD-AQ-SQAT------------------------------------------------- -----------------------------------------------------------A SEAESKA >K02315 1 D.melanogaster ninaE <>[Cell40,839-850'85] MESFAVAA----------AQ-----------LGPHF-AP-------L------------- -----------SN-GS----------VVDKVTPDMAHLISPY-WNQFP-AMDPIWAKILT AYMIMIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMIT-NTPMMG-INLY F-ETWVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKI AYIWFMSSIW-CLAPA-FGWSR-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY SIFVYYIPLFLICYSYWFIIAAVSAHEKAM------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVKSL---RSSED-AEKSAEGKLAKVALVTITLWFMAWTPYLVINCMGLFK-F EG--LTPL-NTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S -SD-AQ-SQAT------------------------------------------------- -----------------------------------------------------------A SEAESKA >X65877 1 Drosophila pseudoobscura ninaE <>[Genetics132(1),193-204' MDSFAAVA----------TQ-----------LGPQF-AA-------P------------- -----------SN-GS----------VVDKVTPDMAHLISPY-WDQFP-AMDPIWAKILT AYMIIIGMISWCGNGVVIYIFATTKSLRTPANLLVINLAISDFGIMIT-NTPMMG-INLY F-ETWVLGPMMCDIYAGLGSAFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKI AYIWFMSTIWCCLAPV-FGWSR-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY SIFVYYIPLFLICYSYWFIIAAVSAHEKAM------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVKSL---RSSED-ADKSAEGKLAKVALVTISLWFMAWTPYLVINCMGLFK-F EG--LTPL-NTIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S -SE-AQ-SQAT------------------------------------------------- -----------------------------------------------------------T SEAESKA >M12896 1 D.melanogaster Rh2 <>[Cell44,705-710'86] MERSHLPE-TPFDL----AH-----------SGPRF-QA-------Q------------- --------S-SGN-GS----------VLDNVLPDMAHLVNPY-WSRFA-PMDPMMSKILG LFTLAIMIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMAS-QSPVMI-INFY Y-ETWVLGPLWCDIYAGCGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKI LFIWMMAVFW-TVMPL-IGWSA-----YVPEGNL---TACSIDYMTRM--WNPRSYLITY SLFVYYTPLFLICYSYWFIIAAVAAHEKAM------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVKSL---RSSED-CDKSAEGKLAKVALTTISLWFMAWTPYLVICYFGLFK-I DG--LTPL-TTIWGATFAKTSAVYNPIVYGISHPKYRIVLKEKCPMCV--FGNTDEPK-P -DAPAS-DTET------------------------------------------------- -----------------------------------------------------------T SEADSKA >X65878 1 Drosophila pseudoobscura Rh2 <>[Genetics132(1),193-204'92 MERSLLPE-PPLAM----AL-----------LGPRF-EA-------Q------------- --------T-GGN-RS----------VLDNVLPDMAPLVNPH-WSRFA-PMDPTMSKILG LFTLVILIISCCGNGVVVYIFGGTKSLRTPANLLVLNLAFSDFCMMAS-QSPVMI-INFY Y-ETWVLGPLWCDIYAACGSLFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKI AFIWMMAVFW-TIMPL-IGWSS-----YVPEGNL---TACSIDYMTRQ--WNPRSYLITY SLFVYYTPLFMICYSYWFIIATVAAHEKAM------------------------------ ------------------------------------------------------------ -----------RDQ------A---------------------K----------------- -----KMNVKSL---RSSED-CDKSAENKLAKVALTTISLWFMAWTPYLIICYFGLFK-I DG--LTPL-TTIWGATFAKTSAVYNPIVYGISHPNDRLVLKEKCPMCV--CGTTDEPK-P -DAPPS-DTET------------------------------------------------- -----------------------------------------------------------T SEAESKD >U26026 1 Apis mellifera long-wavelength rhodopsin <>[] MIAVSGPS-YE-A-----FS-----------YGGQ--AR-------F------------- -----------NN-QT----------VVDKVPPDMLHLIDAN-WYQYP-PLNPMWHGILG FVIGMLGFVSAMGNGMVVYIFLSTKSLRTPSNLFVINLAISNFLMMFC-MSPPMV-INCY Y-ETWVLGPLFCQIYAMLGSLFGCGSIWTMTMIAFDRYNVIVKGLSG-KPLSINGALIRI IAIWLFSLGW-TIAPM-FGWNR-----YVPEGNM---TACGTDYFNRG--LLSASYLVCY GIWVYFVPLFLIIYSYWFIIQAVAAHEKNM------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVASL---RSSEN-QNTSAECKLAKVALMTISLWFMAWTPYLVINFSGIFN-L VK--ISPL-FTIWGSLFAKANAVYNPIVYGISHPKYRAALFAKFPSLA--CAAEPSS-DA -VSTTS-GTTT----------------V-------------------------------- -----------------------------------------------------------T DNEKSNA >L03781 1 Limulus polyphemus opsin <>[PNAS90,6150-6154'93] MANQLSYS-SL-G-----WP-----------YQ--------------------------- -----------PN-AS----------VVDTMPKEMLYMIHEH-WYAFP-PMNPLWYSILG VAMIILGIICVLGNGMVIYLMMTTKSLRTPTNLLVVNLAFSDFCMMAF-MMPTMT-SNCF A-ETWILGPFMCEVYGMAGSLFGCASIWSMVMITLDRYNVIVRGMAA-APLTHKKATLLL LFVWIWSGGW-TILPF-FGWSR-----YVPEGNL---TSCTVDYLTKD--WSSASYVVIY GLAVYFLPLITMIYCYFFIVHAVAEHEKQL------------------------------ ------------------------------------------------------------ -----------REQ------A---------------------K----------------- -----KMNVASL---RANADQQKQSAECRLAKVAMMTVGLWFMAWTPYLIISWAGVFSSG TR--LTPL-ATIWGSVFAKANSCYNPIVYGISHPRYKAALYQRFPSLA--CGSGESGSDV -KSEAS-ATTT----------------M-------------------------------- ----------------------------------------------------------EE KPKIPEA >X07797 1 Octopus dofleini rhodopsin <>[FEBS232(1),69-72'88] MVESTTLV-NQ-T----------------------------------------------- ----------------------------WWYNP--TVDIHPH-WAKFD-PIPDAVYYSVG IFIGVVGIIGILGNGVVIYLFSKTKSLQTPANMFIINLAMSDLSFSAINGFPLKT-ISAF M-KKWIFGKVACQLYGLLGGIFGFMSINTMAMISIDRYNVIGRPMAASKKMSHRRAFLMI IFVWMWSIVW-SVGPV-FNWGA-----YVPEGIL---TSCSFDYLSTD--PSTRSFILCM YFCGFMLPIIIIAFCYFNIVMSVSNHEKEM------------------------------ ------------------------------------------------------------ -----------AAM------A---------------------K----------------- -----RLNAKEL---RKA--QAGASAEMKLAKISMVIITQFMLSWSPYAIIALLAQFGPA EW--VTPY-AAELPVLFAKASAIHNPIVYSVSHPKFREAIQTTFPWLLTCCQFDEKECED -ANDAE-EEVV---------------ASERGGE--SRDAAQMKEMMAMMQKMQAQQAAYQ PPPPPQGYPPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGYPPQGAPPQVEAPQGAPPQGV DNQAYQA >X70498 1 Todarodes pacificus rhodopsin [FEBS317(1-2),5-11'93] MGRDLR-D-NE-T----------------------------------------------- ----------------------------WWYNP--SIVVHPH-WREFD-QVPDAVYYSLG IFIGICGIIGCGGNGIVIYLFTKTKSLQTPANMFIINLAFSDFTFSLVNGFPLMT-ISCF L-KKWIFGFAACKVYGFIGGIFGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMI IFVWLWSVLW-AIGPI-FGWGA-----YTLEGVL---CNCSFDYISRD--STTRSNILCM FILGFFGPILIIFFCYFNIVMSVSNHEKEM------------------------------ ------------------------------------------------------------ -----------AAM------A---------------------K----------------- -----RLNAKEL---RKA--QAGANAEMRLAKISIVIVSQFLLSWSPYAVVALLAQFGPL EW--VTPY-AAQLPVMFAKASAIHNPMIYSVSHPKFREAISQTFPWVLTCCQFDDKETED -DKDAE-TEIP---------------AGESSDAAPSADAAQMKEMMAMMQKMQQQQAAYP PQG----YAPPPQGYPPQGYPPQGYPPQGYPPQGY---PPPPQGAPPQG-APPAAPPQGV DNQAYQA >L21195 1 human serotonin 5-HT7 receptor protein L15228 1 rat 5HT-7 serotonin receptor <>[JBC268,18200-18204'93] MPHLLSG-FLE------------------------------------------------- --------------------VTASPAPTWDAPPDNV--SGCGEQINYG----RVEKVVIG SILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVA-VMPFVSVTDLI G-GKWIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMI LSVWLLSASI-TLPPL-FGWAQ-----NVNDDKV---CLISQD----------FGYTIYS TAVAFYIPMSVMLFMYYQIYKAARKSAAKHKFPGFP------------------------ ----------------------------RVQ--------------PESVI---------- -SLNG-VVKLQKEV------E---------------------E----------------- -----CANLSRLLKHERKN-ISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICG TSCSCIPLWVERTCLWLGYANSLINPFIYAFFNRDLRPTSRSLLQ----C-QYRNINRK- LSAAGMH-EALKLAERPERSEFVLQNSD-------------------------------- ----------------------------------------------------------HC GKKGHDT >A47425 serotonin receptor 5HT-7 - rat MPHLLSG-FLE------------------------------------------------- --------------------VTASPAPTWDAPPDNV--SGCGEQINYG----RVEKVVIG SILTLITLLTIAGNCLVVISVSFVKKLRQPSNYLIVSLALADLSVAVA-VMPFVSVTDLI G-GKWIFGHFFCNVFIAMDVMCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMI LSVWLLSASI-TLPPL-FGWAQ-----NVNDDKV---CLISQD----------FGYTIYS TAVAFYIPMSVMLFMYYQIYKAARKSAAKHKFPGFP------------------------ ----------------------------RVQ--------------PESVI---------- -SLNG-VVKLQKEV------E---------------------E----------------- -----CANLSRLLKHERKN-ISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICG TSCSCIPLWVERTCLWLGYANSLINPFIYAFFNRDLRTTYRSLLQ----C-QYRNINRK- LSAAGMH-EALKLAERPERSEFVLQNSD-------------------------------- ----------------------------------------------------------HC GKKGHDT >M83181 1 human serotonin receptor <>[JBC267(11),7553-7562'92] MDVLSPG-QGNNTTS---PP-----------------AP-------F------------- -------ET-GGN-TTG-------------IS-------------DVT----VSYQVITS LLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVL-VLPMAA-LYQV L-NKWTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALI SLTWLIGFLI-SIPPM-LGWRT-----PEDRSDPD-ACTISKD----------HGYTIYS TFGAFYIPLLLMLVLYGRIFRAARFRIRKTVKKVEKTGADT------------------- --------------------RHGASPAPQPKKSVNGESGSRNWRL--GVESKAGGALCAN GAVRQGDDGAA------------------------LEVIEVHRVGNSKEHLPLPSEAGPT PCAPASFERKNERNAEAKR-KMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPFCES SC-HMPTL-LGAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIK----C-K-------- ------------------------------------------------------------ ------------------------------------------------------------ ---FCRQ >A35181 serotonin receptor class 1A - rat MDVFSFG-QGNNTTA---SQ-----------------EP-------F------------- -------GT-GGN-VTS-------------IS-------------DVT----FSYQVITS LLLGTLIFCAVLGNACVVAAIALERSLQNVANYLIGSLAVTDLMVSVL-VLPMAA-LYQV L-NKWTLGQVTCDLFIALDVLCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALI SLTWLIGFLI-SIPPM-LGWRT-----PEDRSDPD-ACTISKD----------HGYTIYS TFGAFYIPLLLMLVLYGRIFRAARFRIRKTVRKVEKKGAGT------------------- --------------------SLGTSSAPPPKKSLNGQPGSGDWRR--CAENRAVGTPCTN GAVRQGDDEAT------------------------LEVIEVHRVGNSKEHLPLPSESGSN SYAPACLERKNERNAEAKR-KMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPFCES SC-HMPAL-LGAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIK----C-K-------- ------------------------------------------------------------ ------------------------------------------------------------ ---FCRR >L06803 1 Lymnaea stagnalis serotonin receptor <>[PNAS90,11-15'93] MANFTFG-DLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFING SHSSRSRDNASAN-DTSATNM--TDDRYWSLT-------------VYS----HEHLVLTS VILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVL-VMPLSV-VSEI S-KVWFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSIDYI-RRRSARRILLMI MVVWIVALFI-SIPPL-FGWRD-----PNNDPDKTGTCIISQD----------KGYTIFS TVGAFYLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDC NGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKN-RAKK------LPENAN---------- -GVNS-NSSSS-ERLKQIQIETAEAFANGCAEEASIAML-ERQCNNGKKIS--------- --------SNDTPYSRTRE-KLELKRERKAARTLAIITGAFLICWLPFFIIALIGPFVDP EG--IPPF-ARSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILF----G-K-Y------ ------------------------------------------------------------ ------------------------------------------------------------ --RRGHR >A47174 serotonin receptor, 5HTlym receptor - great pond snail MANFTFG-DLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDSYGLTGQFING SHSSRSRDNASAN-DTSATNM--TDDRYWSLT-------------VYS----HEHLVLTS VILGLFVLCCIIGNCFVIAAVMLERSLHNVANYLILSLAVADLMVAVL-VMPLSV-VSEI S-KVWFLHSEVCDMWISVDVLCCTASILHLVAIAMDRYWAVTSIDYI-RRRSARRILLMI MVVWIVALFI-SIPPL-FGWRD-----PNNDPDKTGTCIISQD----------KGYTIFS TVGAFYLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASPKTEYSVVSDC NGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKN-RAKK------LPENAN---------- -GVNS-NSSSS-ERLKQIQIETAEAFANGCAEEASIAML-ERQCNNGKKIS--------- --------SNDTPYSRTRE-KLELKRERKAARTLAIITGAFLICWLPFFIIALIGPFVDP EG--IPPF-ARSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILF----G-K-Y------ ------------------------------------------------------------ ------------------------------------------------------------ --RRGHR >X95604 1 Bombyx mori serotonin receptor [InsectBiochem.Mol.Bi MEGAEGQ-EE-LDWEALYLRL--P--LQNCSWNSTGWEP--------------------- ----------NWN-VTVV-----PNTTWWQAS-------APFDT-PAA----LVRAAAKA VVLGLLILATVVGNVFVIAAILLERHLRSAANNLILSLAVADLLVACL-VMPLGA-VYEV V-QRWTLGPELCDMWTSGDVLCCTASILHLVAIALDRYWAVTNIDYI-HASTAKRVGMMI ACVWTVSFFV-CIAQL-LGWKDPDWNQRVSEDLR---CVVSQD----------VGYQIFA TASSFYVPVLIILILYWRIYQTARKRIRRRRGATARGGVGPP-------------PVPAG GALVAGGGSGGIAAAVVAVIGRPLPTISETTTT-GF--------T--NVS---------- -SNNT-SP----EK------Q---------------------SCANGLEADPPTTGYG-- --AVAAAYYPSLVRRKPKE-AADSKRERKAAKTLAIITGAFVACWLPFFVLAILVPTCD- CE--VSPV-LTSLSLWLGYFNSTLNPVIYTVFSPEFRHAFQRLLC----G-R-RV----- ------------------------------------------------------------ ------------------------------------------------------------ RRRRAPQ ALTER-1.3.4/alter-web/src/main/resources/tcoffee.msf000077500000000000000000001062351300536243200221270ustar00rootroot00000000000000PileUp MSF: 727 Type: P Check: 2272 .. Name: M63632 oo Len: 727 Check: 7440 Weight: 1.000 Name: U22180 oo Len: 727 Check: 1359 Weight: 1.000 Name: M92038 oo Len: 727 Check: 3130 Weight: 1.000 Name: A45229 oo Len: 727 Check: 4563 Weight: 1.000 Name: B45229 oo Len: 727 Check: 3122 Weight: 1.000 Name: L11864 oo Len: 727 Check: 1050 Weight: 1.000 Name: M13299 oo Len: 727 Check: 3789 Weight: 1.000 Name: K03494 oo Len: 727 Check: 5783 Weight: 1.000 Name: Z68193 oo Len: 727 Check: 6072 Weight: 1.000 Name: M92036 oo Len: 727 Check: 7002 Weight: 1.000 Name: M62903 oo Len: 727 Check: 3617 Weight: 1.000 Name: S75720 oo Len: 727 Check: 6743 Weight: 1.000 Name: M17718 oo Len: 727 Check: 7261 Weight: 1.000 Name: X65879 oo Len: 727 Check: 7175 Weight: 1.000 Name: M17730 oo Len: 727 Check: 6970 Weight: 1.000 Name: X65880 oo Len: 727 Check: 209 Weight: 1.000 Name: D50584 oo Len: 727 Check: 2174 Weight: 1.000 Name: D50583 oo Len: 727 Check: 2043 Weight: 1.000 Name: K02320 oo Len: 727 Check: 5886 Weight: 1.000 Name: K02315 oo Len: 727 Check: 8206 Weight: 1.000 Name: X65877 oo Len: 727 Check: 9735 Weight: 1.000 Name: M12896 oo Len: 727 Check: 5794 Weight: 1.000 Name: X65878 oo Len: 727 Check: 6955 Weight: 1.000 Name: U26026 oo Len: 727 Check: 9045 Weight: 1.000 Name: L03781 oo Len: 727 Check: 6339 Weight: 1.000 Name: X07797 oo Len: 727 Check: 8158 Weight: 1.000 Name: X70498 oo Len: 727 Check: 835 Weight: 1.000 Name: L21195 oo Len: 727 Check: 3040 Weight: 1.000 Name: L15228 oo Len: 727 Check: 5119 Weight: 1.000 Name: A47425 oo Len: 727 Check: 5211 Weight: 1.000 Name: M83181 oo Len: 727 Check: 1761 Weight: 1.000 Name: A35181 oo Len: 727 Check: 3488 Weight: 1.000 Name: L06803 oo Len: 727 Check: 4533 Weight: 1.000 Name: A47174 oo Len: 727 Check: 4533 Weight: 1.000 Name: X95604 oo Len: 727 Check: 4132 Weight: 1.000 // M63632 MNGTEGD... .......... .......... ....NFYVP. ......F... .......... U22180 MNGTEGP... .......... .......... ....NFYVP. ......F... .......... M92038 MNGTEGI... .......... .......... ....NFYVP. ......M... .......... A45229 MNGTEGK... .......... .......... ....NFYVP. ......M... .......... B45229 MNGTEGN... .......... .......... ....NFYVP. ......L... .......... L11864 MKQVPEFH.E .......... .......... ....DFYIP. ......I... .......... M13299 MRKMSEE... .......... .......... ....EFYL.. ......F... .......... K03494 MAQQWSLQ.R LAGRH...PQ D..S..YEDS TQSSIFTYT. ......N... .......... Z68193 MAQQWSLQ.R LAGRH...PQ D..S..YEDS TQSSIFTYT. ......N... .......... M92036 MTEAWNVA.V FAARR...SR ...D..DDDT TRGSVFTYT. ......N... .......... M62903 MAAWEAAF.A A..RR....R H..E..EEDT TRDSVFTYT. ......N... .......... S75720 MSSNSSQA.. .......... .......... .......... ......P... .......... M17718 MESGNVSS.S L.FGN.VSTA .......... .LRPEA.RL. ......S... .......... X65879 MEYHNVSS.. V.LGN.VSSV .......... .LRPDA.RL. ......S... .......... M17730 MEPLCNAS.E P........P .......... .LRPEA.RS. .......... .......... X65880 MDALCNAS.E P........P .......... .LRPEA.RM. ......S... .......... D50584 MTNATGPQ.M AYYGA.ASMD .......... .FG.....Y. ......P... .......... D50583 MANVTGPQ.M AFYGS.GAAT .......... .FG.....Y. ......P... .......... K02320 MESFAVAA.. ........AQ .......... .LGPHF.AP. ......L... .......... K02315 MESFAVAA.. ........AQ .......... .LGPHF.AP. ......L... .......... X65877 MDSFAAVA.. ........TQ .......... .LGPQF.AA. ......P... .......... M12896 MERSHLPE.T PFDL....AH .......... .SGPRF.QA. ......Q... .......... X65878 MERSLLPE.P PLAM....AL .......... .LGPRF.EA. ......Q... .......... U26026 MIAVSGPS.Y E.A.....FS .......... .YGGQ..AR. ......F... .......... L03781 MANQLSYS.S L.G.....WP .......... .YQ....... .......... .......... X07797 MVESTTLV.N Q.T....... .......... .......... .......... .......... X70498 MGRDLR.D.N E.T....... .......... .......... .......... .......... L21195 MMDVNSSGRP DLY.G....H LRS.FLLPEV GRGLPDLSPD GG....A... D......... L15228 MPHLLSG.FL E......... .......... .......... .......... .......... A47425 MPHLLSG.FL E......... .......... .......... .......... .......... M83181 MDVLSPG.QG NNTTS...PP .......... .......AP. ......F... .......... A35181 MDVFSFG.QG NNTTA...SQ .......... .......EP. ......F... .......... L06803 MANFTFG.DL ALDVARMGGL ASTPSGLRST GLTTPGLSPT GLVTSDFNDS YGLTGQFING A47174 MANFTFG.DL ALDVARMGGL ASTPSGLRST GLTTPGLSPT GLVTSDFNDS YGLTGQFING X95604 MEGAEGQ.EE .LDWEALYLR L..P..LQNC SWNSTGWEP. .......... .......... M63632 .......... .SN.KTG... .......... ....LA..RS PYEYPQYY.L AEPWKYSALA U22180 .......... .SN.ITG... .......... ....VV..RS PFEQPQYY.L AEPWQFSMLA M92038 .......... .SN.KTG... .......... ....VV..RS PFEYPQYY.L AEPWKYRLVC A45229 .......... .SN.RTG... .......... ....LV..RS PFEYPQYY.L AEPWQFKILA B45229 .......... .SN.RTG... .......... ....LV..RS PFEYPQYY.L AEPWQFKLLA L11864 .......P.. LDI.NNL... .......... ....SA..YS PFLVPQDH.L GNQGIFMAMS M13299 .......... .KN.IS.... .......... .....S..VG PWDGPQYH.I APVWAFYLQA K03494 .......... .SN....... .......... ....ST..RG PFEGPNYH.I APRWVYHLTS Z68193 .......... .SN....... .......... ....ST..RG PFEGPNYH.I APRWVYHLTS M92036 .......... .TN....... .......... ....NT..RG PFEGPNYH.I APRWVYNLVS M62903 .......... .SN....... .......... ....NT..RG PFEGPNYH.I APRWVYNLTS S75720 .......... .PN....... .......... ....GT..PG PFDGPQWPYQ APQSTYVGVA M17718 ........A. .E..TR.... .....LLGWN VPPEELRHIP EH.WLTYP.E PPESMNYLLG X65879 ........A. .E..SR.... .....LLGWN VPPDELRHIP EH.WLIYP.E PPESMNYLLG M17730 ........S. GNGDLQ.... .....FLGWN VPPDQIQYIP EH.WLTQL.E PPASMHYMLG X65880 ........S. GSDELQ.... .....FLGWN VPPDQIQYIP EH.WLTQL.E PPASMHYMLG D50584 ........E. G...VS.... ......IVDF VRPEIKPYVH QH.WYNYP.P VNPMWHYLLG D50583 ........E. G...MT.... ......VADF VPDRVKHMVL DH.WYNYP.P VNPMWHYLLG K02320 .......... .SN.GS.... ......VVDK VTPDMAHLIS PY.WNQFP.A MDPIWAKILT K02315 .......... .SN.GS.... ......VVDK VTPDMAHLIS PY.WNQFP.A MDPIWAKILT X65877 .......... .SN.GS.... ......VVDK VTPDMAHLIS PY.WDQFP.A MDPIWAKILT M12896 ........S. SGN.GS.... ......VLDN VLPDMAHLVN PY.WSRFA.P MDPMMSKILG X65878 ........T. GGN.RS.... ......VLDN VLPDMAPLVN PH.WSRFA.P MDPTMSKILG U26026 .......... .NN.QT.... ......VVDK VPPDMLHLID AN.WYQYP.P LNPMWHGILG L03781 .......... .PN.AS.... ......VVDT MPKEMLYMIH EH.WYAFP.P MNPLWYSILG X07797 .......... .......... ........WW YNP..TVDIH PH.WAKFD.P IPDAVYYSVG X70498 .......... .......... ........WW YNP..SIVVH PH.WREFD.Q VPDAVYYSLG L21195 ......PVAG SWA.PHLLSE VTASPAPTWD APPDNA..SG CGEQINYG.. ..RVEKVVIG L15228 .......... .......... VTASPAPTWD APPDNV..SG CGEQINYG.. ..RVEKVVIG A47425 .......... .......... VTASPAPTWD APPDNV..SG CGEQINYG.. ..RVEKVVIG M83181 .......ET. GGN.TTG... .......... IS........ .....DVT.. ..VSYQVITS A35181 .......GT. GGN.VTS... .......... IS........ .....DVT.. ..FSYQVITS L06803 SHSSRSRDNA SAN.DTSATN M..TDDRYWS LT........ .....VYS.. ..HEHLVLTS A47174 SHSSRSRDNA SAN.DTSATN M..TDDRYWS LT........ .....VYS.. ..HEHLVLTS X95604 .......... NWN.VTVV.. ...PNTTWWQ AS.......A PFDT.PAA.. ..LVRAAAKA M63632 AYMFFLILVG FPVNFLTLFV TVQHKKLRTP LNYILLNLAM ANLFMVLF.G FTVTM.YTSM U22180 AYMFLLIVLG FPINFLTLYV TVQHKKLRTP LNYILLNLAV ADLFMVFG.G FTTTL.YTSL M92038 CYIFFLISTG LPINLLTLLV TFKHKKLRQP LNYILVNLAV ADLFMACF.G FTVTF.YTAW A45229 LYLFFLMSMG LPINGLTLVV TAQHKKLRQP LNFILVNLAV AGTIMVCF.G FTVTF.YTAI B45229 VYMFFLICLG LPINGLTLIC TAQHKKLRQP LNFILVNLAV AGAIMVCF.G FTVTF.YTAI L11864 VFMFFIFIGG ASINILTILC TIQFKKLRSH LNYILVNLSI ANLFVAIF.G SPLSF.YSFF M13299 AFMGTVFLIG FPLNAMVLVA TLRYKKLRQP LNYILVNVSF GGFLLCIF.S VFPVF.VASC K03494 VWMIFVVIAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV ADLAETVI.A STISV.VNQV Z68193 VWMIFVVTAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV ADLAETVI.A STISI.VNQV M92036 FFMIIVVIAS CFTNGLVLVA TAKFKKLRHP LNWILVNLAF VDLVETLV.A STISV.FNQI M62903 VWMIFVVAAS VFTNGLVLVA TWKFKKLRHP LNWILVNLAV ADLGETVI.A STISV.INQI S75720 VLMGTVVACA SVVNGLVIVV SICYKKLRSP LNYILVNLAV ADLLVTLC.G SSVSL.SNNI M17718 TLYIFFTLMS MLGNGLVIWV FSAAKSLRTP SNILVINLAF CDFMMM.V.K TPIFI.YNSF X65879 TLYIFFTVIS MIGNGLVMWV FSAAKSLRTP SNILVINLAF CDFMMM.I.K TPIFI.YNSF M17730 VFYIFLFCAS TVGNGMVIWI FSTSKSLRTP SNMFVLNLAV FDLIMC.L.K APIFN.SFHR X65880 VFYIFLFFAS TLGNGMVIWI FSTSKSLRTP SNMFVLNLAV FDLIMC.L.K APIFI.YNSF D50584 VIYLFLGTVS IFGNGLVIYL FNKSAALRTP ANILVVNLAL SDLIMLTT.N VPFFT.YNCF D50583 VVYLFLGVIS IAGNGLVIYL YMKSQALKTP ANMLIVNLAL SDLIMLTT.N FPPFC.YNCF K02320 AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGIMIT.N TPMMG.INLY K02315 AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGIMIT.N TPMMG.INLY X65877 AYMIIIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGIMIT.N TPMMG.INLY M12896 LFTLAIMIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF SDFCMMAS.Q SPVMI.INFY X65878 LFTLVILIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF SDFCMMAS.Q SPVMI.INFY U26026 FVIGMLGFVS AMGNGMVVYI FLSTKSLRTP SNLFVINLAI SNFLMMFC.M SPPMV.INCY L03781 VAMIILGIIC VLGNGMVIYL MMTTKSLRTP TNLLVVNLAF SDFCMMAF.M MPTMT.SNCF X07797 IFIGVVGIIG ILGNGVVIYL FSKTKSLQTP ANMFIINLAM SDLSFSAING FPLKT.ISAF X70498 IFIGICGIIG CGGNGIVIYL FTKTKSLQTP ANMFIINLAF SDFTFSLVNG FPLMT.ISCF L21195 SILTLITLLT IAGNCLVVIS VCFVKKLRQP SNYLIVSLAL ADLSVAVA.V MPFVSVTDLI L15228 SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL ADLSVAVA.V MPFVSVTDLI A47425 SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL ADLSVAVA.V MPFVSVTDLI M83181 LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV TDLMVSVL.V LPMAA.LYQV A35181 LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV TDLMVSVL.V LPMAA.LYQV L06803 VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV ADLMVAVL.V MPLSV.VSEI A47174 VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV ADLMVAVL.V MPLSV.VSEI X95604 VVLGLLILAT VVGNVFVIAA ILLERHLRSA ANNLILSLAV ADLLVACL.V MPLGA.VYEV M63632 N.GYFVFGPT MCSIEGFFAT LGGEVALWSL VVLAIERYIV ICKPMGN.FR FGNTHAIMGV U22180 H.GYFVFGPT GCNLEGFFAT LGGEIGLWSL VVLAIERYVV VCKPMSN.FR FGENHAIMGV M92038 N.GYFVFGPV GCAVEGFFAT LGGQVALWSL VVLAIERYIV VCKPMGN.FR FSATHAMMGI A45229 N.GYFVLGPT GCAVEGFMAT LGGEVALWSL VVLAIERYIV VCKPMGS.FK FSSSHAFAGI B45229 N.GYFALGPT GCAVEGFMAT LGGEVALWSL VVLAIERYIV VCKPMGS.FK FSSTHASAGI L11864 N.RYFIFGAT ACKIEGFLAT LGGMVGLWSL AVVAFERWLV ICKPLGN.FT FKTPHAIAGC M13299 N.GYFVFGRH VCALEGFLGT VAGLVTGWSL AFLAFERYIV ICKPFGN.FR FSSKHALTVV K03494 Y.GYFVLGHP MCVLEGYTVS LCGITGLWSL AIISWERWMV VCKPFGN.VR FDAKLAIVGI Z68193 S.GYFVLGHP MCVLEGYTVS LCGITGLWSL AIISWERWLV VCKPFGN.VR FDAKLAIVGI M92036 F.GYFILGHP LCVIEGYVVS SCGITGLWSL AIISWERWFV VCKPFGN.IK FDSKLAIIGI M62903 S.GYFILGHP MCVVEGYTVS ACGITALWSL AIISWERWFV VCKPFGN.IK FDGKLAVAGI S75720 N.GFFVFGRR MCELEGFMVS LTGIVGLWSL AILALERYVV VCKPLGD.FQ FQRRHAVSGC M17718 H.QGYALGHL GCQIFGIIGS YTGIAAGATN AFIAYDRFNV ITRPMEG..K MTHGKAIAMI X65879 H.QGYALGHL GCQIFGVIGS YTGIAAGATN AFIAYDRYNV ITRPMEG..K MTHGKAIAMI M17730 G.FAIYLGNT WCQIFASIGS YSGIGAGMTN AAIGYDRYNV ITKPMNR..N MTFTKAVIMN X65880 H.RGFALGNT WCQIFASIGS YSGIGAGMTN AAIGYDRYNV ITKPMNR..N MTFTKAVIMN D50584 SGGVWMFSPQ YCEIYACLGA ITGVCSIWLL CMISFDRYNI ICNGFNG.PK LTTGKAVVFA D50583 SGGRWMFSGT YCEIYAALGA ITGVCSIWTL CMISFDRYNI ICNGFNG.PK LTQGKATFMC K02320 F.ETWVLGPM MCDIYAGLGS AFGCSSIWSM CMISLDRYQV IVKGMAG.RP MTIPLAL... K02315 F.ETWVLGPM MCDIYAGLGS AFGCSSIWSM CMISLDRYQV IVKGMAG.RP MTIPLALGKI X65877 F.ETWVLGPM MCDIYAGLGS AFGCSSIWSM CMISLDRYQV IVKGMAG.RP MTIPLALGKI M12896 Y.ETWVLGPL WCDIYAGCGS LFGCVSIWSM CMIAFDRYNV IVKGING.TP MTIKTSIMKI X65878 Y.ETWVLGPL WCDIYAACGS LFGCVSIWSM CMIAFDRYNV IVKGING.TP MTIKTSIMKI U26026 Y.ETWVLGPL FCQIYAMLGS LFGCGSIWTM TMIAFDRYNV IVKGLSG.KP LSINGALIRI L03781 A.ETWILGPF MCEVYGMAGS LFGCASIWSM VMITLDRYNV IVRGMAA.AP LTHKKATLLL X07797 M.KKWIFGKV ACQLYGLLGG IFGFMSINTM AMISIDRYNV IGRPMAASKK MSHRRAFLMI X70498 L.KKWIFGFA ACKVYGFIGG IFGFMSIMTM AMISIDRYNV IGRPMAASKK MSHRRAFIMI L21195 G.GKWIFGHF FCNVFIAMDV MCCTASIMTL CVISIDRYLG ITRPLTYPVR QNGKCMAKMI L15228 G.GKWIFGHF FCNVFIAMDV MCCTASIMTL CVISIDRYLG ITRPLTYPVR QNGKCMAKMI A47425 G.GKWIFGHF FCNVFIAMDV MCCTASIMTL CVISIDRYLG ITRPLTYPVR QNGKCMAKMI M83181 L.NKWTLGQV TCDLFIALDV LCCTSSILHL CAIALDRYWA ITDPIDYVNK RTPRRAAALI A35181 L.NKWTLGQV TCDLFIALDV LCCTSSILHL CAIALDRYWA ITDPIDYVNK RTPRRAAALI L06803 S.KVWFLHSE VCDMWISVDV LCCTASILHL VAIAMDRYWA VTSIDYI.RR RSARRILLMI A47174 S.KVWFLHSE VCDMWISVDV LCCTASILHL VAIAMDRYWA VTSIDYI.RR RSARRILLMI X95604 V.QRWTLGPE LCDMWTSGDV LCCTASILHL VAIALDRYWA VTNIDYI.HA STAKRVGMMI M63632 AFTWIMALAC .AAPPL.VGW SR.....YIP EGMQ...CSC GPDYYTLNPN FNNESYVVYM U22180 AFTWVMALAC .AAPPL.VGW SR.....YIP EGMQ...CSC GIDYYTLKPE VNNESFVIYM M92038 AFTWVMAFSC .AAPPL.FGW SR.....YMP EGMQ...CSC GPDYYTHNPD YHNESYVLYM A45229 AFTWVMALAC .AAPPL.FGW SR.....YIP EGMQ...CSC GPDYYTLNPD YNNESYVIYM B45229 AFTWVMAMAC .AAPPL.VGW SR.....YIP EGIQ...CSC GPDYYTLNPE YNNESYVLYM L11864 ILPWISALAA .SLPPL.FGW SR.....YIP EGLQ...CSC GPDWYTTNNK YNNESYVMFL M13299 LATWTIGIGV .SIPPF.FGW SR.....FIP EGLQ...CSC GPDWYTVGTK YRSESYTWFL K03494 AFSWIWAAVW .TAPPI.FGW SR.....YWP HGLK...TSC GPDVFSGSSY PGVQSYMIVL Z68193 AFSWIWSAVW .TAPPI.FGW SR.....YWP HGLK...TSC GPDVFSGSSY PGVQSYMIVL M92036 VFSWVWAWGW .SAPPI.FGW SR.....YWP HGLK...TSC GPDVFSGSVE LGCQSFMLTL M62903 LFSWLWSCAW .TAPPI.FGW SR.....YWP HGLK...TSC GPDVFSGSSD PGVQSYMVVL S75720 AFTWGWALLW .SAPPL.LGW SS.....YVP EGLR...TSC GPNWYTGG.. SNNNSYILSL M17718 IFIYMYATPW .VVACYTETW GR.....FVP EGYL...TSC TFDYLTDN.. FDTRLFVACI X65879 IFIYLYATPW .VVACYTESW GR.....FVP EGYL...TSC TFDYLTDN.. FDTRLFVACI M17730 IIIWLYCTPW .VVLPLTQFW DR.....FVP EGYL...TSC SFDYLSDN.. FDTRLFVGTI X65880 IIIWLYCTPW .VVLPLTQFW DR.....FVP EGYL...TSC SFDYLSDN.. FDTRLFVGTI D50584 LISWVIAIGC .ALPPF.FGW GN.....YIL EGIL...DSC SYDYLTQD.. FNTFSYNIFI D50583 GLAWVISVGW .SLPPF.FGW GS.....YTL EGIL...DSC SYDYFTRD.. MNTITYNICI K02320 .......... .........G KM.....YVP EGNL...TSC GIDYLERD.. WNPRSYLIFY K02315 AYIWFMSSIW .CLAPA.FGW SR.....YVP EGNL...TSC GIDYLERD.. WNPRSYLIFY X65877 AYIWFMSTIW CCLAPV.FGW SR.....YVP EGNL...TSC GIDYLERD.. WNPRSYLIFY M12896 LFIWMMAVFW .TVMPL.IGW SA.....YVP EGNL...TAC SIDYMTRM.. WNPRSYLITY X65878 AFIWMMAVFW .TIMPL.IGW SS.....YVP EGNL...TAC SIDYMTRQ.. WNPRSYLITY U26026 IAIWLFSLGW .TIAPM.FGW NR.....YVP EGNM...TAC GTDYFNRG.. LLSASYLVCY L03781 LFVWIWSGGW .TILPF.FGW SR.....YVP EGNL...TSC TVDYLTKD.. WSSASYVVIY X07797 IFVWMWSIVW .SVGPV.FNW GA.....YVP EGIL...TSC SFDYLSTD.. PSTRSFILCM X70498 IFVWLWSVLW .AIGPI.FGW GA.....YTL EGVL...CNC SFDYISRD.. STTRSNILCM L21195 LSVWLLSASI .TLPPL.FGW AQ.....NVN DDKV...CLI SQD....... ...FGYTIYS L15228 LSVWLLSASI .TLPPL.FGW AQ.....NVN DDKV...CLI SQD....... ...FGYTIYS A47425 LSVWLLSASI .TLPPL.FGW AQ.....NVN DDKV...CLI SQD....... ...FGYTIYS M83181 SLTWLIGFLI .SIPPM.LGW RT.....PED RSDPD.ACTI SKD....... ...HGYTIYS A35181 SLTWLIGFLI .SIPPM.LGW RT.....PED RSDPD.ACTI SKD....... ...HGYTIYS L06803 MVVWIVALFI .SIPPL.FGW RD.....PNN DPDKTGTCII SQD....... ...KGYTIFS A47174 MVVWIVALFI .SIPPL.FGW RD.....PNN DPDKTGTCII SQD....... ...KGYTIFS X95604 ACVWTVSFFV .CIAQL.LGW KDPDWNQRVS EDLR...CVV SQD....... ...VGYQIFA M63632 FVVHFLVPFV IIFFCYGRLL CTVKEAAAAQ .......... .......... .......... U22180 FVVHFTIPMI VIFFCYGQLV FTVKEAAAQQ .......... .......... .......... M92038 FVIHFIIPVV VIFFSYGRLI CKVREAAAQQ .......... .......... .......... A45229 FVCHFILPVA VIFFTYGRLV CTVKAAAAQQ .......... .......... .......... B45229 FICHFILPVT IIFFTYGRLV CTVKAAAAQQ .......... .......... .......... L11864 FCFCFAVPFG TIVFCYGQLL ITLKLAAKAQ .......... .......... .......... M13299 FIFCFIVPLS LICFSYTQLL RALKAVAAQQ .......... .......... .......... K03494 MVTCCITPLS IIVLCYLQVW LAIRAVAKQQ .......... .......... .......... Z68193 MVTCCIIPLA IIMLCYLQVW LAIRAVAKQQ .......... .......... .......... M92036 MITCCFLPLF IIIVCYLQVW MAIRAVAAQQ .......... .......... .......... M62903 MVTCCFFPLA IIILCYLQVW LAIRAVAAQQ .......... .......... .......... S75720 FVTCFVLPLS LILFSYTNLL LTLRAAAAQQ .......... .......... .......... M17718 FFFSFVCPTT MITYYYSQIV GHVFSHEKAL .......... .......... .......... X65879 FFFSFVCPTT MITYYYSQIV GHVFSHEKAL .......... .......... .......... M17730 FFFSFVCPTL MILYYYSQIV GHVFSHEKAL .......... .......... .......... X65880 FLFSFVVPTL MILYYYSQIV GHVFNHEKAL .......... .......... .......... D50584 FVFDYFLPAA IIVFSYVFIV KAIFAHEAAM .......... .......... .......... D50583 FIFDFFLPAS VIVFSYVFIV KAIFAHEAAM .......... .......... .......... K02320 SIFVYYIPLF LICYSYWFII AAVSAHEKAM .......... .......... .......... K02315 SIFVYYIPLF LICYSYWFII AAVSAHEKAM .......... .......... .......... X65877 SIFVYYIPLF LICYSYWFII AAVSAHEKAM .......... .......... .......... M12896 SLFVYYTPLF LICYSYWFII AAVAAHEKAM .......... .......... .......... X65878 SLFVYYTPLF MICYSYWFII ATVAAHEKAM .......... .......... .......... U26026 GIWVYFVPLF LIIYSYWFII QAVAAHEKNM .......... .......... .......... L03781 GLAVYFLPLI TMIYCYFFIV HAVAEHEKQL .......... .......... .......... X07797 YFCGFMLPII IIAFCYFNIV MSVSNHEKEM .......... .......... .......... X70498 FILGFFGPIL IIFFCYFNIV MSVSNHEKEM .......... .......... .......... L21195 TAVAFYIPMS VMLFMYYQIY KAARKSAAKH KFPGFP.... .......... .......... L15228 TAVAFYIPMS VMLFMYYQIY KAARKSAAKH KFPGFP.... .......... .......... A47425 TAVAFYIPMS VMLFMYYQIY KAARKSAAKH KFPGFP.... .......... .......... M83181 TFGAFYIPLL LMLVLYGRIF RAARFRIRKT VKKVEKTGAD T......... .......... A35181 TFGAFYIPLL LMLVLYGRIF RAARFRIRKT VRKVEKKGAG T......... .......... L06803 TVGAFYLPML VMMIIYIRIW LVARSRIRKD KFQMTKARLK TEETTLVASP KTEYSVVSDC A47174 TVGAFYLPML VMMIIYIRIW LVARSRIRKD KFQMTKARLK TEETTLVASP KTEYSVVSDC X95604 TASSFYVPVL IILILYWRIY QTARKRIRRR RGATARGGVG PP........ .....PVPAG M63632 .......... .......... .......... .......... .......... .......... U22180 .......... .......... .......... .......... .......... .......... M92038 .......... .......... .......... .......... .......... .......... A45229 .......... .......... .......... .......... .......... .......... B45229 .......... .......... .......... .......... .......... .......... L11864 .......... .......... .......... .......... .......... .......... M13299 .......... .......... .......... .......... .......... .......... K03494 .......... .......... .......... .......... .......... .......... Z68193 .......... .......... .......... .......... .......... .......... M92036 .......... .......... .......... .......... .......... .......... M62903 .......... .......... .......... .......... .......... .......... S75720 .......... .......... .......... .......... .......... .......... M17718 .......... .......... .......... .......... .......... .......... X65879 .......... .......... .......... .......... .......... .......... M17730 .......... .......... .......... .......... .......... .......... X65880 .......... .......... .......... .......... .......... .......... D50584 .......... .......... .......... .......... .......... .......... D50583 .......... .......... .......... .......... .......... .......... K02320 .......... .......... .......... .......... .......... .......... K02315 .......... .......... .......... .......... .......... .......... X65877 .......... .......... .......... .......... .......... .......... M12896 .......... .......... .......... .......... .......... .......... X65878 .......... .......... .......... .......... .......... .......... U26026 .......... .......... .......... .......... .......... .......... L03781 .......... .......... .......... .......... .......... .......... X07797 .......... .......... .......... .......... .......... .......... X70498 .......... .......... .......... .......... .......... .......... L21195 .......... .......... ........RV E......... .....PDSVI .......... L15228 .......... .......... ........RV Q......... .....PESVI .......... A47425 .......... .......... ........RV Q......... .....PESVI .......... M83181 .......... .......... RHGASPAPQP KKSVNGESGS RNWRL..GVE SKAGGALCAN A35181 .......... .......... SLGTSSAPPP KKSLNGQPGS GDWRR..CAE NRAVGTPCTN L06803 NGCNSPDSTT EKKKRRAPFK SYGCSPRPER KKN.RAKK.. ....LPENAN .......... A47174 NGCNSPDSTT EKKKRRAPFK SYGCSPRPER KKN.RAKK.. ....LPENAN .......... X95604 GALVAGGGSG GIAAAVVAVI GRPLPTISET TTT.GF.... ....T..NVS .......... M63632 .......... .Q........ .......... .......... .......... .......... U22180 .......... .Q........ .......... .......... .......... .......... M92038 .......... .Q........ .......... .......... .......... .......... A45229 .......... .Q........ .......... .......... .......... .......... B45229 .......... .Q........ .......... .......... .......... .......... L11864 .......... .A........ .......... .......... .......... .......... M13299 .......... .Q........ .......... .......... .......... .......... K03494 .......... .K........ .......... .......... .......... .......... Z68193 .......... .K........ .......... .......... .......... .......... M92036 .......... .K........ .......... .......... .......... .......... M62903 .......... .K........ .......... .......... .......... .......... S75720 .......... .K........ .......... .......... .......... .......... M17718 .......... .RDQ...... A......... .......... ..K....... .......... X65879 .......... .RDQ...... A......... .......... ..K....... .......... M17730 .......... .REQ...... A......... .......... ..K....... .......... X65880 .......... .REQ...... A......... .......... ..K....... .......... D50584 .......... .RAQ...... A......... .......... ..K....... .......... D50583 .......... .RAQ...... A......... .......... ..K....... .......... K02320 .......... .REQ...... A......... .......... ..K....... .......... K02315 .......... .REQ...... A......... .......... ..K....... .......... X65877 .......... .REQ...... A......... .......... ..K....... .......... M12896 .......... .REQ...... A......... .......... ..K....... .......... X65878 .......... .RDQ...... A......... .......... ..K....... .......... U26026 .......... .REQ...... A......... .......... ..K....... .......... L03781 .......... .REQ...... A......... .......... ..K....... .......... X07797 .......... .AAM...... A......... .......... ..K....... .......... X70498 .......... .AAM...... A......... .......... ..K....... .......... L21195 .ALNG.IVKL QKEV...... E......... .......... ..E....... .......... L15228 .SLNG.VVKL QKEV...... E......... .......... ..E....... .......... A47425 .SLNG.VVKL QKEV...... E......... .......... ..E....... .......... M83181 GAVRQGDDGA A......... .......... .....LEVIE VHRVGNSKEH LPLPSEAGPT A35181 GAVRQGDDEA T......... .......... .....LEVIE VHRVGNSKEH LPLPSESGSN L06803 .GVNS.NSSS S.ERLKQIQI ETAEAFANGC AEEASIAML. ERQCNNGKKI S......... A47174 .GVNS.NSSS S.ERLKQIQI ETAEAFANGC AEEASIAML. ERQCNNGKKI S......... X95604 .SNNT.SP.. ..EK...... Q......... .......... ..SCANGLEA DPPTTGYG.. M63632 .......... .......ES. ASTQKAEKEV TRMVVLMVIG FLVCWVPYAS VAFYIFTHQG U22180 .......... .......ES. ATTQKAEKEV TRMVIIMVIF FLICWLPYAS VAMYIFTHQG M92038 .......... .......ES. ATTQKAEKEV TRMVILMVLG FMLAWTPYAV VAFWIFTNKG A45229 .......... .......DS. ASTQKAEREV TKMVILMVFG FLIAWTPYAT VAAWIFFNKG B45229 .......... .......DS. ASTQKAEREV TKMVILMVLG FLVAWTPYAT VAAWIFFNKG L11864 .......... .......DS. ASTQKAEREV TKMVVVMVLG FLVCWAPYAS FSLWIVSHRG M13299 .......... .......ES. ATTQKAEREV SRMVVVMVGS FCVCYVPYAA FAMYMVNNRN K03494 .......... .......ES. ESTQKAEKEV TRMVVVMVLA FCFCWGPYAF FACFAAANPG Z68193 .......... .......ES. ESTQKAEKEV TRMVVVMIFA YCVCWGPYTF FACFAAANPG M92036 .......... .......ES. ESTQKAEREV SRMVVVMIVA FCICWGPYAS FVSFAAANPG M62903 .......... .......ES. ESTQKAEKEV SRMVVVMIVA YCFCWGPYTF FACFAAANPG S75720 .......... .......EA. DTTQRAEREV TRMVIVMVMA FLLCWLPYST FALVVATHKG M17718 .....KMNVE SL...RSNVD KNKETAEIRI AKAAITICFL FFCSWTPYGV MSLIGAFGDK X65879 .....KMNVD SL...RSNVD KSKEAAEIRI AKAAITICFL FFASWTPYGV MSLIGAFGDK M17730 .....KMNVE SL...RSNVD KSKETAEIRI AKAAITICFL FFVSWTPYGV MSLIGAFGDK X65880 .....KMNVE SL...RSNVD KSKETAEIRI AKAAITICFL FFVSWTPYGV MSLIGAFGDK D50584 .....KMNVS TL...RSNE. ADAQRAEIRI AKTALVNVSL WFICWTPYAL ISLKGVMGDT D50583 .....KMNVT NL...RSNE. AETQRAEIRI AKTALVNVSL WFICWTPYAA ITIQGLLGNA K02320 .....KMNVK SL...RSSED .AEKSAEGKL AKVALVTITL WFMAWTPYLV INCMGLFK.F K02315 .....KMNVK SL...RSSED .AEKSAEGKL AKVALVTITL WFMAWTPYLV INCMGLFK.F X65877 .....KMNVK SL...RSSED .ADKSAEGKL AKVALVTISL WFMAWTPYLV INCMGLFK.F M12896 .....KMNVK SL...RSSED .CDKSAEGKL AKVALTTISL WFMAWTPYLV ICYFGLFK.I X65878 .....KMNVK SL...RSSED .CDKSAENKL AKVALTTISL WFMAWTPYLI ICYFGLFK.I U26026 .....KMNVA SL...RSSEN .QNTSAECKL AKVALMTISL WFMAWTPYLV INFSGIFN.L L03781 .....KMNVA SL...RANAD QQKQSAECRL AKVAMMTVGL WFMAWTPYLI ISWAGVFSSG X07797 .....RLNAK EL...RKA.. QAGASAEMKL AKISMVIITQ FMLSWSPYAI IALLAQFGPA X70498 .....RLNAK EL...RKA.. QAGANAEMRL AKISIVIVSQ FLLSWSPYAV VALLAQFGPL L21195 .....CANLS RLLKHERKN. ISIFKREQKA ATTLGIIVGA FTVCWLPFFL LSTARPFICG L15228 .....CANLS RLLKHERKN. ISIFKREQKA ATTLGIIVGA FTVCWLPFFL LSTARPFICG A47425 .....CANLS RLLKHERKN. ISIFKREQKA ATTLGIIVGA FTVCWLPFFL LSTARPFICG M83181 PCAPASFERK NERNAEAKR. KMALARERKT VKTLGIIMGT FILCWLPFFI VALVLPFCES A35181 SYAPACLERK NERNAEAKR. KMALARERKT VKTLGIIMGT FILCWLPFFI VALVLPFCES L06803 ........SN DTPYSRTRE. KLELKRERKA ARTLAIITGA FLICWLPFFI IALIGPFVDP A47174 ........SN DTPYSRTRE. KLELKRERKA ARTLAIITGA FLICWLPFFI IALIGPFVDP X95604 ..AVAAAYYP SLVRRKPKE. AADSKRERKA AKTLAIITGA FVACWLPFFV LAILVPTCD. M63632 SD..FGAT.F MTLPAFFAKS SALYNPVIYI LMNKQFRNCM ITTLC....C .GKNPLGDDE U22180 SN..FGPI.F MTLPAFFAKT ASIYNPIIYI MMNKQFRNCM LTSLC....C .GKNPLGDDE M92038 AD..FTAT.L MAVPAFFSKS SSLYNPIIYV LMNKQFRNCM ITTIC....C .GKNPFGDED A45229 AD..FSAK.F MAIPAFFSKS SALYNPVIYV LLNKQFRNCM LTTIF....C .GKNPLGDDE B45229 AA..FSAQ.F MAIPAFFSKT SALYNPVIYV LLNKQFRSCM LTTLF....C .GKNPLGDEE L11864 EE..FDLR.M ATIPSCLSKA STVYNPVIYV LMNKQFRSCM MKMV.....C .GKNIE.EDE M13299 HG..LDLR.L VTIPSFFSKS ACIYNPIIYC FMNKQFQACI MKMV.....C .GKAMTDESD K03494 YP..FHPL.M AALPAFFAKS ATIYNPVIYV FMNRQFRNCI LQLFG..... .KKVDDGS.E Z68193 YA..FHPL.M AALPAYFAKS ATIYNPVIYV FMNRQFRNCI LQLFG..... .KKVDDGS.E M92036 YA..FHPL.A AALPAYFAKS ATIYNPVIYV FMNRQFRNCI MQLFG..... .KKVDDGS.E M62903 YA..FHPL.A AALPAYFAKS ATIYNPIIYV FMNRQFRNCI LQLFG..... .KKVDDGS.E S75720 II..IQPV.L ASLPSYFSKT ATVYNPIIYV FMNKQFQSCL LEMLC....C .GYQPQRT.G M17718 TL..LTPG.A TMIPACACKM VACIDPFVYA ISHPRYRMEL QKRCPWLA.. LNEK.AP.ES X65879 TL..LTPG.A TMIPACTCKM VACIDPFVYA ISHPRYRMEL QKRCPWLA.. ISEK.AP.ES M17730 SL..LTQG.A TMIPACTCKL VACIDPFVYA ISHPRYRLEL QKRCPWLG.. VNEK.SG.EI X65880 SL..LTPG.A TMIPACTCKL VACIEPFVYA ISHPRYRMEL QKRCPWLG.. VNEK.SG.EA D50584 SG..ITPL.V STLPALLAKS CSCYNPFVYA ISHPKYRLAI TQHLPWFC.. VHET.ET.KS D50583 EG..ITPL.L TTLPALLAKS CSCYNPFVYA ISHPKFRLAI TQHLPWFC.. VHEK.DP.ND K02320 EG..LTPL.N TIWGACFAKS AACYNPIVYG ISHPKYRLAL KEKCPCCV.. FGKVDDGK.S K02315 EG..LTPL.N TIWGACFAKS AACYNPIVYG ISHPKYRLAL KEKCPCCV.. FGKVDDGK.S X65877 EG..LTPL.N TIWGACFAKS AACYNPIVYG ISHPKYRLAL KEKCPCCV.. FGKVDDGK.S M12896 DG..LTPL.T TIWGATFAKT SAVYNPIVYG ISHPKYRIVL KEKCPMCV.. FGNTDEPK.P X65878 DG..LTPL.T TIWGATFAKT SAVYNPIVYG ISHPNDRLVL KEKCPMCV.. CGTTDEPK.P U26026 VK..ISPL.F TIWGSLFAKA NAVYNPIVYG ISHPKYRAAL FAKFPSLA.. CAAEPSS.DA L03781 TR..LTPL.A TIWGSVFAKA NSCYNPIVYG ISHPRYKAAL YQRFPSLA.. CGSGESGSDV X07797 EW..VTPY.A AELPVLFAKA SAIHNPIVYS VSHPKFREAI QTTFPWLLTC CQFDEKECED X70498 EW..VTPY.A AQLPVMFAKA SAIHNPMIYS VSHPKFREAI SQTFPWVLTC CQFDDKETED L21195 TSCSCIPLWV ERTFLWLGYA NSLINPFIYA FFNRDLRTTY RSLLQ....C .QYRNINRK. L15228 TSCSCIPLWV ERTCLWLGYA NSLINPFIYA FFNRDLRPTS RSLLQ....C .QYRNINRK. A47425 TSCSCIPLWV ERTCLWLGYA NSLINPFIYA FFNRDLRTTY RSLLQ....C .QYRNINRK. M83181 SC.HMPTL.L GAIINWLGYS NSLLNPVIYA YFNKDFQNAF KKIIK....C .K........ A35181 SC.HMPAL.L GAIINWLGYS NSLLNPVIYA YFNKDFQNAF KKIIK....C .K........ L06803 EG..IPPF.A RSFVLWLGYF NSLLNPIIYT IFSPEFRSAF QKILF....G .K.Y...... A47174 EG..IPPF.A RSFVLWLGYF NSLLNPIIYT IFSPEFRSAF QKILF....G .K.Y...... X95604 CE..VSPV.L TSLSLWLGYF NSTLNPVIYT VFSPEFRHAF QRLLC....G .R.RV..... M63632 .SG.AS.TSK TEVS...... .......S.. .......... .......... .......... U22180 .AS.AT.ASK TE........ .......... .......... .......... .......... M92038 VSSTVS.QSK TEVS...... .......S.. .......... .......... .......... A45229 .SSTVS.TSK TE........ .......... .......... .......... .......... B45229 .SSTVS.TSK TE........ .......... .......... .......... .......... L11864 .AS.TS.SQV TQVS...... .......... .......... .......... .......... M13299 T...CS.SQK TEVS...... .......T.. .......... .......... .......... K03494 LSSASK.... TEVS...... .......S.. .......... .......... .......... Z68193 LSSASK.... TEVS...... .......S.. .......... .......... .......... M92036 ASTTSR.... TEVS...... .......S.. .......... .......... .......... M62903 V.STSR.... TEVS...... .......S.. .......... .......... .......... S75720 KASPGTPGPH ADVT...... ...AAGLR.. .......... .......... .......... M17718 .SAVAS.TST T......... .......Q.. .......... .......... .......... X65879 .RAAIS.TST T......... .......Q.. .......... .......... .......... M17730 .SSAQS.TT. T......... .......Q.. .......... .......... .......... X65880 .SSAQS.TTT Q......... .......E.. .......... .......... .......... D50584 .NDDSQ.SNS .......... .......... .......... .......... .......... D50583 .VEENQ.SSN .......... .......... .......... .......... .......... K02320 .SD.AQ.SQA T......... .......... .......... .......... .......... K02315 .SD.AQ.SQA T......... .......... .......... .......... .......... X65877 .SE.AQ.SQA T......... .......... .......... .......... .......... M12896 .DAPAS.DTE T......... .......... .......... .......... .......... X65878 .DAPPS.DTE T......... .......... .......... .......... .......... U26026 .VSTTS.GTT T......... .......V.. .......... .......... .......... L03781 .KSEAS.ATT T......... .......M.. .......... .......... .......... X07797 .ANDAE.EEV V......... ......ASER GGE..SRDAA QMKEMMAMMQ KMQAQQAAYQ X70498 .DKDAE.TEI P......... ......AGES SDAAPSADAA QMKEMMAMMQ KMQQQQAAYP L21195 LSAAGMH.EA LKLAERPERP EFVLQNAD.. .......... .......... .......... L15228 LSAAGMH.EA LKLAERPERS EFVLQNSD.. .......... .......... .......... A47425 LSAAGMH.EA LKLAERPERS EFVLQNSD.. .......... .......... .......... M83181 .......... .......... .......... .......... .......... .......... A35181 .......... .......... .......... .......... .......... .......... L06803 .......... .......... .......... .......... .......... .......... A47174 .......... .......... .......... .......... .......... .......... X95604 .......... .......... .......... .......... .......... .......... M63632 .......... .......... .......... .......... .......... ........VS U22180 .......... .......... .......... .......... .......... .......... M92038 .......... .......... .......... .......... .......... ........VS A45229 .......... .......... .......... .......... .......... .......... B45229 .......... .......... .......... .......... .......... .......... L11864 .......... .......... .......... .......... .......... .......... M13299 .......... .......... .......... .......... .......... ........VS K03494 .......... .......... .......... .......... .......... .......... Z68193 .......... .......... .......... .......... .......... .......... M92036 .......... .......... .......... .......... .......... ........VS M62903 .......... .......... .......... .......... .......... ........VS S75720 .......... .......... .......... .......... .......... ........NK M17718 .......... .......... .......... .......... .......... .........E X65879 .......... .......... .......... .......... .......... .........E M17730 .......... .......... .......... .......... .......... .........E X65880 .......... .......... .......... .......... .......... .........Q D50584 .......... .......... .......... .......... .......... .......... D50583 .......... .......... .......... .......... .......... .......... K02320 .......... .......... .......... .......... .......... .........A K02315 .......... .......... .......... .......... .......... .........A X65877 .......... .......... .......... .......... .......... .........T M12896 .......... .......... .......... .......... .......... .........T X65878 .......... .......... .......... .......... .......... .........T U26026 .......... .......... .......... .......... .......... .........T L03781 .......... .......... .......... .......... .......... ........EE X07797 PPPPPQGYPP QGYPPQGAYP PPQGYPPQGY PPQGYPPQGY PPQGAPPQVE APQGAPPQGV X70498 PQG....YAP PPQGYPPQGY PPQGYPPQGY PPQGY...PP PPQGAPPQG. APPAAPPQGV L21195 .......... .......... .......... .......... .......... ........YC L15228 .......... .......... .......... .......... .......... ........HC A47425 .......... .......... .......... .......... .......... ........HC M83181 .......... .......... .......... .......... .......... .......... A35181 .......... .......... .......... .......... .......... .......... L06803 .......... .......... .......... .......... .......... .......... A47174 .......... .......... .......... .......... .......... .......... X95604 .......... .......... .......... .......... .......... .......... M63632 TSPVSPA U22180 TSQVAPA M92038 SSQVSPA A45229 VSSVSPA B45229 VSSVSPA L11864 .SVAPEK M13299 STQVGPN K03494 VSSVSPA Z68193 VSSVSPA M92036 NSSVAPA M62903 NSSVSPA S75720 VMPAHPV M17718 PQQTTAA X65879 QQQTTAA M17730 QQQTTAA X65880 TQQTSAA D50584 TVAQDKA D50583 TQTQEKS K02320 SEAESKA K02315 SEAESKA X65877 SEAESKA M12896 SEADSKA X65878 SEAESKD U26026 DNEKSNA L03781 KPKIPEA X07797 DNQAYQA X70498 DNQAYQA L21195 RKKGHDS L15228 GKKGHDT A47425 GKKGHDT M83181 ...FCRQ A35181 ...FCRR L06803 ..RRGHR A47174 ..RRGHR X95604 RRRRAPQ ALTER-1.3.4/alter-web/src/main/resources/tcoffee.phy000077500000000000000000001004471300536243200221410ustar00rootroot00000000000000 35 727 M63632 MNGTEGD--- ---------- ---------- ----NFYVP- ------F--- ---------- U22180 MNGTEGP--- ---------- ---------- ----NFYVP- ------F--- ---------- M92038 MNGTEGI--- ---------- ---------- ----NFYVP- ------M--- ---------- A45229 MNGTEGK--- ---------- ---------- ----NFYVP- ------M--- ---------- B45229 MNGTEGN--- ---------- ---------- ----NFYVP- ------L--- ---------- L11864 MKQVPEFH-E ---------- ---------- ----DFYIP- ------I--- ---------- M13299 MRKMSEE--- ---------- ---------- ----EFYL-- ------F--- ---------- K03494 MAQQWSLQ-R LAGRH---PQ D--S--YEDS TQSSIFTYT- ------N--- ---------- Z68193 MAQQWSLQ-R LAGRH---PQ D--S--YEDS TQSSIFTYT- ------N--- ---------- M92036 MTEAWNVA-V FAARR---SR ---D--DDDT TRGSVFTYT- ------N--- ---------- M62903 MAAWEAAF-A A--RR----R H--E--EEDT TRDSVFTYT- ------N--- ---------- S75720 MSSNSSQA-- ---------- ---------- ---------- ------P--- ---------- M17718 MESGNVSS-S L-FGN-VSTA ---------- -LRPEA-RL- ------S--- ---------- X65879 MEYHNVSS-- V-LGN-VSSV ---------- -LRPDA-RL- ------S--- ---------- M17730 MEPLCNAS-E P--------P ---------- -LRPEA-RS- ---------- ---------- X65880 MDALCNAS-E P--------P ---------- -LRPEA-RM- ------S--- ---------- D50584 MTNATGPQ-M AYYGA-ASMD ---------- -FG-----Y- ------P--- ---------- D50583 MANVTGPQ-M AFYGS-GAAT ---------- -FG-----Y- ------P--- ---------- K02320 MESFAVAA-- --------AQ ---------- -LGPHF-AP- ------L--- ---------- K02315 MESFAVAA-- --------AQ ---------- -LGPHF-AP- ------L--- ---------- X65877 MDSFAAVA-- --------TQ ---------- -LGPQF-AA- ------P--- ---------- M12896 MERSHLPE-T PFDL----AH ---------- -SGPRF-QA- ------Q--- ---------- X65878 MERSLLPE-P PLAM----AL ---------- -LGPRF-EA- ------Q--- ---------- U26026 MIAVSGPS-Y E-A-----FS ---------- -YGGQ--AR- ------F--- ---------- L03781 MANQLSYS-S L-G-----WP ---------- -YQ------- ---------- ---------- X07797 MVESTTLV-N Q-T------- ---------- ---------- ---------- ---------- X70498 MGRDLR-D-N E-T------- ---------- ---------- ---------- ---------- L21195 MMDVNSSGRP DLY-G----H LRS-FLLPEV GRGLPDLSPD GG----A--- D--------- L15228 MPHLLSG-FL E--------- ---------- ---------- ---------- ---------- A47425 MPHLLSG-FL E--------- ---------- ---------- ---------- ---------- M83181 MDVLSPG-QG NNTTS---PP ---------- -------AP- ------F--- ---------- A35181 MDVFSFG-QG NNTTA---SQ ---------- -------EP- ------F--- ---------- L06803 MANFTFG-DL ALDVARMGGL ASTPSGLRST GLTTPGLSPT GLVTSDFNDS YGLTGQFING A47174 MANFTFG-DL ALDVARMGGL ASTPSGLRST GLTTPGLSPT GLVTSDFNDS YGLTGQFING X95604 MEGAEGQ-EE -LDWEALYLR L--P--LQNC SWNSTGWEP- ---------- ---------- ---------- -SN-KTG--- ---------- ----LA--RS PYEYPQYY-L AEPWKYSALA ---------- -SN-ITG--- ---------- ----VV--RS PFEQPQYY-L AEPWQFSMLA ---------- -SN-KTG--- ---------- ----VV--RS PFEYPQYY-L AEPWKYRLVC ---------- -SN-RTG--- ---------- ----LV--RS PFEYPQYY-L AEPWQFKILA ---------- -SN-RTG--- ---------- ----LV--RS PFEYPQYY-L AEPWQFKLLA -------P-- LDI-NNL--- ---------- ----SA--YS PFLVPQDH-L GNQGIFMAMS ---------- -KN-IS---- ---------- -----S--VG PWDGPQYH-I APVWAFYLQA ---------- -SN------- ---------- ----ST--RG PFEGPNYH-I APRWVYHLTS ---------- -SN------- ---------- ----ST--RG PFEGPNYH-I APRWVYHLTS ---------- -TN------- ---------- ----NT--RG PFEGPNYH-I APRWVYNLVS ---------- -SN------- ---------- ----NT--RG PFEGPNYH-I APRWVYNLTS ---------- -PN------- ---------- ----GT--PG PFDGPQWPYQ APQSTYVGVA --------A- -E--TR---- -----LLGWN VPPEELRHIP EH-WLTYP-E PPESMNYLLG --------A- -E--SR---- -----LLGWN VPPDELRHIP EH-WLIYP-E PPESMNYLLG --------S- GNGDLQ---- -----FLGWN VPPDQIQYIP EH-WLTQL-E PPASMHYMLG --------S- GSDELQ---- -----FLGWN VPPDQIQYIP EH-WLTQL-E PPASMHYMLG --------E- G---VS---- ------IVDF VRPEIKPYVH QH-WYNYP-P VNPMWHYLLG --------E- G---MT---- ------VADF VPDRVKHMVL DH-WYNYP-P VNPMWHYLLG ---------- -SN-GS---- ------VVDK VTPDMAHLIS PY-WNQFP-A MDPIWAKILT ---------- -SN-GS---- ------VVDK VTPDMAHLIS PY-WNQFP-A MDPIWAKILT ---------- -SN-GS---- ------VVDK VTPDMAHLIS PY-WDQFP-A MDPIWAKILT --------S- SGN-GS---- ------VLDN VLPDMAHLVN PY-WSRFA-P MDPMMSKILG --------T- GGN-RS---- ------VLDN VLPDMAPLVN PH-WSRFA-P MDPTMSKILG ---------- -NN-QT---- ------VVDK VPPDMLHLID AN-WYQYP-P LNPMWHGILG ---------- -PN-AS---- ------VVDT MPKEMLYMIH EH-WYAFP-P MNPLWYSILG ---------- ---------- --------WW YNP--TVDIH PH-WAKFD-P IPDAVYYSVG ---------- ---------- --------WW YNP--SIVVH PH-WREFD-Q VPDAVYYSLG ------PVAG SWA-PHLLSE VTASPAPTWD APPDNA--SG CGEQINYG-- --RVEKVVIG ---------- ---------- VTASPAPTWD APPDNV--SG CGEQINYG-- --RVEKVVIG ---------- ---------- VTASPAPTWD APPDNV--SG CGEQINYG-- --RVEKVVIG -------ET- GGN-TTG--- ---------- IS-------- -----DVT-- --VSYQVITS -------GT- GGN-VTS--- ---------- IS-------- -----DVT-- --FSYQVITS SHSSRSRDNA SAN-DTSATN M--TDDRYWS LT-------- -----VYS-- --HEHLVLTS SHSSRSRDNA SAN-DTSATN M--TDDRYWS LT-------- -----VYS-- --HEHLVLTS ---------- NWN-VTVV-- ---PNTTWWQ AS-------A PFDT-PAA-- --LVRAAAKA AYMFFLILVG FPVNFLTLFV TVQHKKLRTP LNYILLNLAM ANLFMVLF-G FTVTM-YTSM AYMFLLIVLG FPINFLTLYV TVQHKKLRTP LNYILLNLAV ADLFMVFG-G FTTTL-YTSL CYIFFLISTG LPINLLTLLV TFKHKKLRQP LNYILVNLAV ADLFMACF-G FTVTF-YTAW LYLFFLMSMG LPINGLTLVV TAQHKKLRQP LNFILVNLAV AGTIMVCF-G FTVTF-YTAI VYMFFLICLG LPINGLTLIC TAQHKKLRQP LNFILVNLAV AGAIMVCF-G FTVTF-YTAI VFMFFIFIGG ASINILTILC TIQFKKLRSH LNYILVNLSI ANLFVAIF-G SPLSF-YSFF AFMGTVFLIG FPLNAMVLVA TLRYKKLRQP LNYILVNVSF GGFLLCIF-S VFPVF-VASC VWMIFVVIAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV ADLAETVI-A STISV-VNQV VWMIFVVTAS VFTNGLVLAA TMKFKKLRHP LNWILVNLAV ADLAETVI-A STISI-VNQV FFMIIVVIAS CFTNGLVLVA TAKFKKLRHP LNWILVNLAF VDLVETLV-A STISV-FNQI VWMIFVVAAS VFTNGLVLVA TWKFKKLRHP LNWILVNLAV ADLGETVI-A STISV-INQI VLMGTVVACA SVVNGLVIVV SICYKKLRSP LNYILVNLAV ADLLVTLC-G SSVSL-SNNI TLYIFFTLMS MLGNGLVIWV FSAAKSLRTP SNILVINLAF CDFMMM-V-K TPIFI-YNSF TLYIFFTVIS MIGNGLVMWV FSAAKSLRTP SNILVINLAF CDFMMM-I-K TPIFI-YNSF VFYIFLFCAS TVGNGMVIWI FSTSKSLRTP SNMFVLNLAV FDLIMC-L-K APIFN-SFHR VFYIFLFFAS TLGNGMVIWI FSTSKSLRTP SNMFVLNLAV FDLIMC-L-K APIFI-YNSF VIYLFLGTVS IFGNGLVIYL FNKSAALRTP ANILVVNLAL SDLIMLTT-N VPFFT-YNCF VVYLFLGVIS IAGNGLVIYL YMKSQALKTP ANMLIVNLAL SDLIMLTT-N FPPFC-YNCF AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGIMIT-N TPMMG-INLY AYMIMIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGIMIT-N TPMMG-INLY AYMIIIGMIS WCGNGVVIYI FATTKSLRTP ANLLVINLAI SDFGIMIT-N TPMMG-INLY LFTLAIMIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF SDFCMMAS-Q SPVMI-INFY LFTLVILIIS CCGNGVVVYI FGGTKSLRTP ANLLVLNLAF SDFCMMAS-Q SPVMI-INFY FVIGMLGFVS AMGNGMVVYI FLSTKSLRTP SNLFVINLAI SNFLMMFC-M SPPMV-INCY VAMIILGIIC VLGNGMVIYL MMTTKSLRTP TNLLVVNLAF SDFCMMAF-M MPTMT-SNCF IFIGVVGIIG ILGNGVVIYL FSKTKSLQTP ANMFIINLAM SDLSFSAING FPLKT-ISAF IFIGICGIIG CGGNGIVIYL FTKTKSLQTP ANMFIINLAF SDFTFSLVNG FPLMT-ISCF SILTLITLLT IAGNCLVVIS VCFVKKLRQP SNYLIVSLAL ADLSVAVA-V MPFVSVTDLI SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL ADLSVAVA-V MPFVSVTDLI SILTLITLLT IAGNCLVVIS VSFVKKLRQP SNYLIVSLAL ADLSVAVA-V MPFVSVTDLI LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV TDLMVSVL-V LPMAA-LYQV LLLGTLIFCA VLGNACVVAA IALERSLQNV ANYLIGSLAV TDLMVSVL-V LPMAA-LYQV VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV ADLMVAVL-V MPLSV-VSEI VILGLFVLCC IIGNCFVIAA VMLERSLHNV ANYLILSLAV ADLMVAVL-V MPLSV-VSEI VVLGLLILAT VVGNVFVIAA ILLERHLRSA ANNLILSLAV ADLLVACL-V MPLGA-VYEV N-GYFVFGPT MCSIEGFFAT LGGEVALWSL VVLAIERYIV ICKPMGN-FR FGNTHAIMGV H-GYFVFGPT GCNLEGFFAT LGGEIGLWSL VVLAIERYVV VCKPMSN-FR FGENHAIMGV N-GYFVFGPV GCAVEGFFAT LGGQVALWSL VVLAIERYIV VCKPMGN-FR FSATHAMMGI N-GYFVLGPT GCAVEGFMAT LGGEVALWSL VVLAIERYIV VCKPMGS-FK FSSSHAFAGI N-GYFALGPT GCAVEGFMAT LGGEVALWSL VVLAIERYIV VCKPMGS-FK FSSTHASAGI N-RYFIFGAT ACKIEGFLAT LGGMVGLWSL AVVAFERWLV ICKPLGN-FT FKTPHAIAGC N-GYFVFGRH VCALEGFLGT VAGLVTGWSL AFLAFERYIV ICKPFGN-FR FSSKHALTVV Y-GYFVLGHP MCVLEGYTVS LCGITGLWSL AIISWERWMV VCKPFGN-VR FDAKLAIVGI S-GYFVLGHP MCVLEGYTVS LCGITGLWSL AIISWERWLV VCKPFGN-VR FDAKLAIVGI F-GYFILGHP LCVIEGYVVS SCGITGLWSL AIISWERWFV VCKPFGN-IK FDSKLAIIGI S-GYFILGHP MCVVEGYTVS ACGITALWSL AIISWERWFV VCKPFGN-IK FDGKLAVAGI N-GFFVFGRR MCELEGFMVS LTGIVGLWSL AILALERYVV VCKPLGD-FQ FQRRHAVSGC H-QGYALGHL GCQIFGIIGS YTGIAAGATN AFIAYDRFNV ITRPMEG--K MTHGKAIAMI H-QGYALGHL GCQIFGVIGS YTGIAAGATN AFIAYDRYNV ITRPMEG--K MTHGKAIAMI G-FAIYLGNT WCQIFASIGS YSGIGAGMTN AAIGYDRYNV ITKPMNR--N MTFTKAVIMN H-RGFALGNT WCQIFASIGS YSGIGAGMTN AAIGYDRYNV ITKPMNR--N MTFTKAVIMN SGGVWMFSPQ YCEIYACLGA ITGVCSIWLL CMISFDRYNI ICNGFNG-PK LTTGKAVVFA SGGRWMFSGT YCEIYAALGA ITGVCSIWTL CMISFDRYNI ICNGFNG-PK LTQGKATFMC F-ETWVLGPM MCDIYAGLGS AFGCSSIWSM CMISLDRYQV IVKGMAG-RP MTIPLAL--- F-ETWVLGPM MCDIYAGLGS AFGCSSIWSM CMISLDRYQV IVKGMAG-RP MTIPLALGKI F-ETWVLGPM MCDIYAGLGS AFGCSSIWSM CMISLDRYQV IVKGMAG-RP MTIPLALGKI Y-ETWVLGPL WCDIYAGCGS LFGCVSIWSM CMIAFDRYNV IVKGING-TP MTIKTSIMKI Y-ETWVLGPL WCDIYAACGS LFGCVSIWSM CMIAFDRYNV IVKGING-TP MTIKTSIMKI Y-ETWVLGPL FCQIYAMLGS LFGCGSIWTM TMIAFDRYNV IVKGLSG-KP LSINGALIRI A-ETWILGPF MCEVYGMAGS LFGCASIWSM VMITLDRYNV IVRGMAA-AP LTHKKATLLL M-KKWIFGKV ACQLYGLLGG IFGFMSINTM AMISIDRYNV IGRPMAASKK MSHRRAFLMI L-KKWIFGFA ACKVYGFIGG IFGFMSIMTM AMISIDRYNV IGRPMAASKK MSHRRAFIMI G-GKWIFGHF FCNVFIAMDV MCCTASIMTL CVISIDRYLG ITRPLTYPVR QNGKCMAKMI G-GKWIFGHF FCNVFIAMDV MCCTASIMTL CVISIDRYLG ITRPLTYPVR QNGKCMAKMI G-GKWIFGHF FCNVFIAMDV MCCTASIMTL CVISIDRYLG ITRPLTYPVR QNGKCMAKMI L-NKWTLGQV TCDLFIALDV LCCTSSILHL CAIALDRYWA ITDPIDYVNK RTPRRAAALI L-NKWTLGQV TCDLFIALDV LCCTSSILHL CAIALDRYWA ITDPIDYVNK RTPRRAAALI S-KVWFLHSE VCDMWISVDV LCCTASILHL VAIAMDRYWA VTSIDYI-RR RSARRILLMI S-KVWFLHSE VCDMWISVDV LCCTASILHL VAIAMDRYWA VTSIDYI-RR RSARRILLMI V-QRWTLGPE LCDMWTSGDV LCCTASILHL VAIALDRYWA VTNIDYI-HA STAKRVGMMI AFTWIMALAC -AAPPL-VGW SR-----YIP EGMQ---CSC GPDYYTLNPN FNNESYVVYM AFTWVMALAC -AAPPL-VGW SR-----YIP EGMQ---CSC GIDYYTLKPE VNNESFVIYM AFTWVMAFSC -AAPPL-FGW SR-----YMP EGMQ---CSC GPDYYTHNPD YHNESYVLYM AFTWVMALAC -AAPPL-FGW SR-----YIP EGMQ---CSC GPDYYTLNPD YNNESYVIYM AFTWVMAMAC -AAPPL-VGW SR-----YIP EGIQ---CSC GPDYYTLNPE YNNESYVLYM ILPWISALAA -SLPPL-FGW SR-----YIP EGLQ---CSC GPDWYTTNNK YNNESYVMFL LATWTIGIGV -SIPPF-FGW SR-----FIP EGLQ---CSC GPDWYTVGTK YRSESYTWFL AFSWIWAAVW -TAPPI-FGW SR-----YWP HGLK---TSC GPDVFSGSSY PGVQSYMIVL AFSWIWSAVW -TAPPI-FGW SR-----YWP HGLK---TSC GPDVFSGSSY PGVQSYMIVL VFSWVWAWGW -SAPPI-FGW SR-----YWP HGLK---TSC GPDVFSGSVE LGCQSFMLTL LFSWLWSCAW -TAPPI-FGW SR-----YWP HGLK---TSC GPDVFSGSSD PGVQSYMVVL AFTWGWALLW -SAPPL-LGW SS-----YVP EGLR---TSC GPNWYTGG-- SNNNSYILSL IFIYMYATPW -VVACYTETW GR-----FVP EGYL---TSC TFDYLTDN-- FDTRLFVACI IFIYLYATPW -VVACYTESW GR-----FVP EGYL---TSC TFDYLTDN-- FDTRLFVACI IIIWLYCTPW -VVLPLTQFW DR-----FVP EGYL---TSC SFDYLSDN-- FDTRLFVGTI IIIWLYCTPW -VVLPLTQFW DR-----FVP EGYL---TSC SFDYLSDN-- FDTRLFVGTI LISWVIAIGC -ALPPF-FGW GN-----YIL EGIL---DSC SYDYLTQD-- FNTFSYNIFI GLAWVISVGW -SLPPF-FGW GS-----YTL EGIL---DSC SYDYFTRD-- MNTITYNICI ---------- ---------G KM-----YVP EGNL---TSC GIDYLERD-- WNPRSYLIFY AYIWFMSSIW -CLAPA-FGW SR-----YVP EGNL---TSC GIDYLERD-- WNPRSYLIFY AYIWFMSTIW CCLAPV-FGW SR-----YVP EGNL---TSC GIDYLERD-- WNPRSYLIFY LFIWMMAVFW -TVMPL-IGW SA-----YVP EGNL---TAC SIDYMTRM-- WNPRSYLITY AFIWMMAVFW -TIMPL-IGW SS-----YVP EGNL---TAC SIDYMTRQ-- WNPRSYLITY IAIWLFSLGW -TIAPM-FGW NR-----YVP EGNM---TAC GTDYFNRG-- LLSASYLVCY LFVWIWSGGW -TILPF-FGW SR-----YVP EGNL---TSC TVDYLTKD-- WSSASYVVIY IFVWMWSIVW -SVGPV-FNW GA-----YVP EGIL---TSC SFDYLSTD-- PSTRSFILCM IFVWLWSVLW -AIGPI-FGW GA-----YTL EGVL---CNC SFDYISRD-- STTRSNILCM LSVWLLSASI -TLPPL-FGW AQ-----NVN DDKV---CLI SQD------- ---FGYTIYS LSVWLLSASI -TLPPL-FGW AQ-----NVN DDKV---CLI SQD------- ---FGYTIYS LSVWLLSASI -TLPPL-FGW AQ-----NVN DDKV---CLI SQD------- ---FGYTIYS SLTWLIGFLI -SIPPM-LGW RT-----PED RSDPD-ACTI SKD------- ---HGYTIYS SLTWLIGFLI -SIPPM-LGW RT-----PED RSDPD-ACTI SKD------- ---HGYTIYS MVVWIVALFI -SIPPL-FGW RD-----PNN DPDKTGTCII SQD------- ---KGYTIFS MVVWIVALFI -SIPPL-FGW RD-----PNN DPDKTGTCII SQD------- ---KGYTIFS ACVWTVSFFV -CIAQL-LGW KDPDWNQRVS EDLR---CVV SQD------- ---VGYQIFA FVVHFLVPFV IIFFCYGRLL CTVKEAAAAQ ---------- ---------- ---------- FVVHFTIPMI VIFFCYGQLV FTVKEAAAQQ ---------- ---------- ---------- FVIHFIIPVV VIFFSYGRLI CKVREAAAQQ ---------- ---------- ---------- FVCHFILPVA VIFFTYGRLV CTVKAAAAQQ ---------- ---------- ---------- FICHFILPVT IIFFTYGRLV CTVKAAAAQQ ---------- ---------- ---------- FCFCFAVPFG TIVFCYGQLL ITLKLAAKAQ ---------- ---------- ---------- FIFCFIVPLS LICFSYTQLL RALKAVAAQQ ---------- ---------- ---------- MVTCCITPLS IIVLCYLQVW LAIRAVAKQQ ---------- ---------- ---------- MVTCCIIPLA IIMLCYLQVW LAIRAVAKQQ ---------- ---------- ---------- MITCCFLPLF IIIVCYLQVW MAIRAVAAQQ ---------- ---------- ---------- MVTCCFFPLA IIILCYLQVW LAIRAVAAQQ ---------- ---------- ---------- FVTCFVLPLS LILFSYTNLL LTLRAAAAQQ ---------- ---------- ---------- FFFSFVCPTT MITYYYSQIV GHVFSHEKAL ---------- ---------- ---------- FFFSFVCPTT MITYYYSQIV GHVFSHEKAL ---------- ---------- ---------- FFFSFVCPTL MILYYYSQIV GHVFSHEKAL ---------- ---------- ---------- FLFSFVVPTL MILYYYSQIV GHVFNHEKAL ---------- ---------- ---------- FVFDYFLPAA IIVFSYVFIV KAIFAHEAAM ---------- ---------- ---------- FIFDFFLPAS VIVFSYVFIV KAIFAHEAAM ---------- ---------- ---------- SIFVYYIPLF LICYSYWFII AAVSAHEKAM ---------- ---------- ---------- SIFVYYIPLF LICYSYWFII AAVSAHEKAM ---------- ---------- ---------- SIFVYYIPLF LICYSYWFII AAVSAHEKAM ---------- ---------- ---------- SLFVYYTPLF LICYSYWFII AAVAAHEKAM ---------- ---------- ---------- SLFVYYTPLF MICYSYWFII ATVAAHEKAM ---------- ---------- ---------- GIWVYFVPLF LIIYSYWFII QAVAAHEKNM ---------- ---------- ---------- GLAVYFLPLI TMIYCYFFIV HAVAEHEKQL ---------- ---------- ---------- YFCGFMLPII IIAFCYFNIV MSVSNHEKEM ---------- ---------- ---------- FILGFFGPIL IIFFCYFNIV MSVSNHEKEM ---------- ---------- ---------- TAVAFYIPMS VMLFMYYQIY KAARKSAAKH KFPGFP---- ---------- ---------- TAVAFYIPMS VMLFMYYQIY KAARKSAAKH KFPGFP---- ---------- ---------- TAVAFYIPMS VMLFMYYQIY KAARKSAAKH KFPGFP---- ---------- ---------- TFGAFYIPLL LMLVLYGRIF RAARFRIRKT VKKVEKTGAD T--------- ---------- TFGAFYIPLL LMLVLYGRIF RAARFRIRKT VRKVEKKGAG T--------- ---------- TVGAFYLPML VMMIIYIRIW LVARSRIRKD KFQMTKARLK TEETTLVASP KTEYSVVSDC TVGAFYLPML VMMIIYIRIW LVARSRIRKD KFQMTKARLK TEETTLVASP KTEYSVVSDC TASSFYVPVL IILILYWRIY QTARKRIRRR RGATARGGVG PP-------- -----PVPAG ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- --------RV E--------- -----PDSVI ---------- ---------- ---------- --------RV Q--------- -----PESVI ---------- ---------- ---------- --------RV Q--------- -----PESVI ---------- ---------- ---------- RHGASPAPQP KKSVNGESGS RNWRL--GVE SKAGGALCAN ---------- ---------- SLGTSSAPPP KKSLNGQPGS GDWRR--CAE NRAVGTPCTN NGCNSPDSTT EKKKRRAPFK SYGCSPRPER KKN-RAKK-- ----LPENAN ---------- NGCNSPDSTT EKKKRRAPFK SYGCSPRPER KKN-RAKK-- ----LPENAN ---------- GALVAGGGSG GIAAAVVAVI GRPLPTISET TTT-GF---- ----T--NVS ---------- ---------- -Q-------- ---------- ---------- ---------- ---------- ---------- -Q-------- ---------- ---------- ---------- ---------- ---------- -Q-------- ---------- ---------- ---------- ---------- ---------- -Q-------- ---------- ---------- ---------- ---------- ---------- -Q-------- ---------- ---------- ---------- ---------- ---------- -A-------- ---------- ---------- ---------- ---------- ---------- -Q-------- ---------- ---------- ---------- ---------- ---------- -K-------- ---------- ---------- ---------- ---------- ---------- -K-------- ---------- ---------- ---------- ---------- ---------- -K-------- ---------- ---------- ---------- ---------- ---------- -K-------- ---------- ---------- ---------- ---------- ---------- -K-------- ---------- ---------- ---------- ---------- ---------- -RDQ------ A--------- ---------- --K------- ---------- ---------- -RDQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -RAQ------ A--------- ---------- --K------- ---------- ---------- -RAQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -RDQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -REQ------ A--------- ---------- --K------- ---------- ---------- -AAM------ A--------- ---------- --K------- ---------- ---------- -AAM------ A--------- ---------- --K------- ---------- -ALNG-IVKL QKEV------ E--------- ---------- --E------- ---------- -SLNG-VVKL QKEV------ E--------- ---------- --E------- ---------- -SLNG-VVKL QKEV------ E--------- ---------- --E------- ---------- GAVRQGDDGA A--------- ---------- -----LEVIE VHRVGNSKEH LPLPSEAGPT GAVRQGDDEA T--------- ---------- -----LEVIE VHRVGNSKEH LPLPSESGSN -GVNS-NSSS S-ERLKQIQI ETAEAFANGC AEEASIAML- ERQCNNGKKI S--------- -GVNS-NSSS S-ERLKQIQI ETAEAFANGC AEEASIAML- ERQCNNGKKI S--------- -SNNT-SP-- --EK------ Q--------- ---------- --SCANGLEA DPPTTGYG-- ---------- -------ES- ASTQKAEKEV TRMVVLMVIG FLVCWVPYAS VAFYIFTHQG ---------- -------ES- ATTQKAEKEV TRMVIIMVIF FLICWLPYAS VAMYIFTHQG ---------- -------ES- ATTQKAEKEV TRMVILMVLG FMLAWTPYAV VAFWIFTNKG ---------- -------DS- ASTQKAEREV TKMVILMVFG FLIAWTPYAT VAAWIFFNKG ---------- -------DS- ASTQKAEREV TKMVILMVLG FLVAWTPYAT VAAWIFFNKG ---------- -------DS- ASTQKAEREV TKMVVVMVLG FLVCWAPYAS FSLWIVSHRG ---------- -------ES- ATTQKAEREV SRMVVVMVGS FCVCYVPYAA FAMYMVNNRN ---------- -------ES- ESTQKAEKEV TRMVVVMVLA FCFCWGPYAF FACFAAANPG ---------- -------ES- ESTQKAEKEV TRMVVVMIFA YCVCWGPYTF FACFAAANPG ---------- -------ES- ESTQKAEREV SRMVVVMIVA FCICWGPYAS FVSFAAANPG ---------- -------ES- ESTQKAEKEV SRMVVVMIVA YCFCWGPYTF FACFAAANPG ---------- -------EA- DTTQRAEREV TRMVIVMVMA FLLCWLPYST FALVVATHKG -----KMNVE SL---RSNVD KNKETAEIRI AKAAITICFL FFCSWTPYGV MSLIGAFGDK -----KMNVD SL---RSNVD KSKEAAEIRI AKAAITICFL FFASWTPYGV MSLIGAFGDK -----KMNVE SL---RSNVD KSKETAEIRI AKAAITICFL FFVSWTPYGV MSLIGAFGDK -----KMNVE SL---RSNVD KSKETAEIRI AKAAITICFL FFVSWTPYGV MSLIGAFGDK -----KMNVS TL---RSNE- ADAQRAEIRI AKTALVNVSL WFICWTPYAL ISLKGVMGDT -----KMNVT NL---RSNE- AETQRAEIRI AKTALVNVSL WFICWTPYAA ITIQGLLGNA -----KMNVK SL---RSSED -AEKSAEGKL AKVALVTITL WFMAWTPYLV INCMGLFK-F -----KMNVK SL---RSSED -AEKSAEGKL AKVALVTITL WFMAWTPYLV INCMGLFK-F -----KMNVK SL---RSSED -ADKSAEGKL AKVALVTISL WFMAWTPYLV INCMGLFK-F -----KMNVK SL---RSSED -CDKSAEGKL AKVALTTISL WFMAWTPYLV ICYFGLFK-I -----KMNVK SL---RSSED -CDKSAENKL AKVALTTISL WFMAWTPYLI ICYFGLFK-I -----KMNVA SL---RSSEN -QNTSAECKL AKVALMTISL WFMAWTPYLV INFSGIFN-L -----KMNVA SL---RANAD QQKQSAECRL AKVAMMTVGL WFMAWTPYLI ISWAGVFSSG -----RLNAK EL---RKA-- QAGASAEMKL AKISMVIITQ FMLSWSPYAI IALLAQFGPA -----RLNAK EL---RKA-- QAGANAEMRL AKISIVIVSQ FLLSWSPYAV VALLAQFGPL -----CANLS RLLKHERKN- ISIFKREQKA ATTLGIIVGA FTVCWLPFFL LSTARPFICG -----CANLS RLLKHERKN- ISIFKREQKA ATTLGIIVGA FTVCWLPFFL LSTARPFICG -----CANLS RLLKHERKN- ISIFKREQKA ATTLGIIVGA FTVCWLPFFL LSTARPFICG PCAPASFERK NERNAEAKR- KMALARERKT VKTLGIIMGT FILCWLPFFI VALVLPFCES SYAPACLERK NERNAEAKR- KMALARERKT VKTLGIIMGT FILCWLPFFI VALVLPFCES --------SN DTPYSRTRE- KLELKRERKA ARTLAIITGA FLICWLPFFI IALIGPFVDP --------SN DTPYSRTRE- KLELKRERKA ARTLAIITGA FLICWLPFFI IALIGPFVDP --AVAAAYYP SLVRRKPKE- AADSKRERKA AKTLAIITGA FVACWLPFFV LAILVPTCD- SD--FGAT-F MTLPAFFAKS SALYNPVIYI LMNKQFRNCM ITTLC----C -GKNPLGDDE SN--FGPI-F MTLPAFFAKT ASIYNPIIYI MMNKQFRNCM LTSLC----C -GKNPLGDDE AD--FTAT-L MAVPAFFSKS SSLYNPIIYV LMNKQFRNCM ITTIC----C -GKNPFGDED AD--FSAK-F MAIPAFFSKS SALYNPVIYV LLNKQFRNCM LTTIF----C -GKNPLGDDE AA--FSAQ-F MAIPAFFSKT SALYNPVIYV LLNKQFRSCM LTTLF----C -GKNPLGDEE EE--FDLR-M ATIPSCLSKA STVYNPVIYV LMNKQFRSCM MKMV-----C -GKNIE-EDE HG--LDLR-L VTIPSFFSKS ACIYNPIIYC FMNKQFQACI MKMV-----C -GKAMTDESD YP--FHPL-M AALPAFFAKS ATIYNPVIYV FMNRQFRNCI LQLFG----- -KKVDDGS-E YA--FHPL-M AALPAYFAKS ATIYNPVIYV FMNRQFRNCI LQLFG----- -KKVDDGS-E YA--FHPL-A AALPAYFAKS ATIYNPVIYV FMNRQFRNCI MQLFG----- -KKVDDGS-E YA--FHPL-A AALPAYFAKS ATIYNPIIYV FMNRQFRNCI LQLFG----- -KKVDDGS-E II--IQPV-L ASLPSYFSKT ATVYNPIIYV FMNKQFQSCL LEMLC----C -GYQPQRT-G TL--LTPG-A TMIPACACKM VACIDPFVYA ISHPRYRMEL QKRCPWLA-- LNEK-AP-ES TL--LTPG-A TMIPACTCKM VACIDPFVYA ISHPRYRMEL QKRCPWLA-- ISEK-AP-ES SL--LTQG-A TMIPACTCKL VACIDPFVYA ISHPRYRLEL QKRCPWLG-- VNEK-SG-EI SL--LTPG-A TMIPACTCKL VACIEPFVYA ISHPRYRMEL QKRCPWLG-- VNEK-SG-EA SG--ITPL-V STLPALLAKS CSCYNPFVYA ISHPKYRLAI TQHLPWFC-- VHET-ET-KS EG--ITPL-L TTLPALLAKS CSCYNPFVYA ISHPKFRLAI TQHLPWFC-- VHEK-DP-ND EG--LTPL-N TIWGACFAKS AACYNPIVYG ISHPKYRLAL KEKCPCCV-- FGKVDDGK-S EG--LTPL-N TIWGACFAKS AACYNPIVYG ISHPKYRLAL KEKCPCCV-- FGKVDDGK-S EG--LTPL-N TIWGACFAKS AACYNPIVYG ISHPKYRLAL KEKCPCCV-- FGKVDDGK-S DG--LTPL-T TIWGATFAKT SAVYNPIVYG ISHPKYRIVL KEKCPMCV-- FGNTDEPK-P DG--LTPL-T TIWGATFAKT SAVYNPIVYG ISHPNDRLVL KEKCPMCV-- CGTTDEPK-P VK--ISPL-F TIWGSLFAKA NAVYNPIVYG ISHPKYRAAL FAKFPSLA-- CAAEPSS-DA TR--LTPL-A TIWGSVFAKA NSCYNPIVYG ISHPRYKAAL YQRFPSLA-- CGSGESGSDV EW--VTPY-A AELPVLFAKA SAIHNPIVYS VSHPKFREAI QTTFPWLLTC CQFDEKECED EW--VTPY-A AQLPVMFAKA SAIHNPMIYS VSHPKFREAI SQTFPWVLTC CQFDDKETED TSCSCIPLWV ERTFLWLGYA NSLINPFIYA FFNRDLRTTY RSLLQ----C -QYRNINRK- TSCSCIPLWV ERTCLWLGYA NSLINPFIYA FFNRDLRPTS RSLLQ----C -QYRNINRK- TSCSCIPLWV ERTCLWLGYA NSLINPFIYA FFNRDLRTTY RSLLQ----C -QYRNINRK- SC-HMPTL-L GAIINWLGYS NSLLNPVIYA YFNKDFQNAF KKIIK----C -K-------- SC-HMPAL-L GAIINWLGYS NSLLNPVIYA YFNKDFQNAF KKIIK----C -K-------- EG--IPPF-A RSFVLWLGYF NSLLNPIIYT IFSPEFRSAF QKILF----G -K-Y------ EG--IPPF-A RSFVLWLGYF NSLLNPIIYT IFSPEFRSAF QKILF----G -K-Y------ CE--VSPV-L TSLSLWLGYF NSTLNPVIYT VFSPEFRHAF QRLLC----G -R-RV----- -SG-AS-TSK TEVS------ -------S-- ---------- ---------- ---------- -AS-AT-ASK TE-------- ---------- ---------- ---------- ---------- VSSTVS-QSK TEVS------ -------S-- ---------- ---------- ---------- -SSTVS-TSK TE-------- ---------- ---------- ---------- ---------- -SSTVS-TSK TE-------- ---------- ---------- ---------- ---------- -AS-TS-SQV TQVS------ ---------- ---------- ---------- ---------- T---CS-SQK TEVS------ -------T-- ---------- ---------- ---------- LSSASK---- TEVS------ -------S-- ---------- ---------- ---------- LSSASK---- TEVS------ -------S-- ---------- ---------- ---------- ASTTSR---- TEVS------ -------S-- ---------- ---------- ---------- V-STSR---- TEVS------ -------S-- ---------- ---------- ---------- KASPGTPGPH ADVT------ ---AAGLR-- ---------- ---------- ---------- -SAVAS-TST T--------- -------Q-- ---------- ---------- ---------- -RAAIS-TST T--------- -------Q-- ---------- ---------- ---------- -SSAQS-TT- T--------- -------Q-- ---------- ---------- ---------- -SSAQS-TTT Q--------- -------E-- ---------- ---------- ---------- -NDDSQ-SNS ---------- ---------- ---------- ---------- ---------- -VEENQ-SSN ---------- ---------- ---------- ---------- ---------- -SD-AQ-SQA T--------- ---------- ---------- ---------- ---------- -SD-AQ-SQA T--------- ---------- ---------- ---------- ---------- -SE-AQ-SQA T--------- ---------- ---------- ---------- ---------- -DAPAS-DTE T--------- ---------- ---------- ---------- ---------- -DAPPS-DTE T--------- ---------- ---------- ---------- ---------- -VSTTS-GTT T--------- -------V-- ---------- ---------- ---------- -KSEAS-ATT T--------- -------M-- ---------- ---------- ---------- -ANDAE-EEV V--------- ------ASER GGE--SRDAA QMKEMMAMMQ KMQAQQAAYQ -DKDAE-TEI P--------- ------AGES SDAAPSADAA QMKEMMAMMQ KMQQQQAAYP LSAAGMH-EA LKLAERPERP EFVLQNAD-- ---------- ---------- ---------- LSAAGMH-EA LKLAERPERS EFVLQNSD-- ---------- ---------- ---------- LSAAGMH-EA LKLAERPERS EFVLQNSD-- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- --------VS ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- --------VS ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- --------VS ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- --------VS ---------- ---------- ---------- ---------- ---------- --------VS ---------- ---------- ---------- ---------- ---------- --------NK ---------- ---------- ---------- ---------- ---------- ---------E ---------- ---------- ---------- ---------- ---------- ---------E ---------- ---------- ---------- ---------- ---------- ---------E ---------- ---------- ---------- ---------- ---------- ---------Q ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------A ---------- ---------- ---------- ---------- ---------- ---------A ---------- ---------- ---------- ---------- ---------- ---------T ---------- ---------- ---------- ---------- ---------- ---------T ---------- ---------- ---------- ---------- ---------- ---------T ---------- ---------- ---------- ---------- ---------- ---------T ---------- ---------- ---------- ---------- ---------- --------EE PPPPPQGYPP QGYPPQGAYP PPQGYPPQGY PPQGYPPQGY PPQGAPPQVE APQGAPPQGV PQG----YAP PPQGYPPQGY PPQGYPPQGY PPQGY---PP PPQGAPPQG- APPAAPPQGV ---------- ---------- ---------- ---------- ---------- --------YC ---------- ---------- ---------- ---------- ---------- --------HC ---------- ---------- ---------- ---------- ---------- --------HC ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- TSPVSPA TSQVAPA SSQVSPA VSSVSPA VSSVSPA -SVAPEK STQVGPN VSSVSPA VSSVSPA NSSVAPA NSSVSPA VMPAHPV PQQTTAA QQQTTAA QQQTTAA TQQTSAA TVAQDKA TQTQEKS SEAESKA SEAESKA SEAESKA SEADSKA SEAESKD DNEKSNA KPKIPEA DNQAYQA DNQAYQA RKKGHDS GKKGHDT GKKGHDT ---FCRQ ---FCRR --RRGHR --RRGHR RRRRAPQ ALTER-1.3.4/alter-web/src/main/resources/tcoffee.pir000077500000000000000000000673121300536243200221360ustar00rootroot00000000000000>P1;M63632 1 Lampetra japonica rhodopsin <>[BBRC174,1125-1132'91] MNGTEGD---------------------------NFYVP-------F--- ---------------------SN-KTG-----------------LA--RS PYEYPQYY-LAEPWKYSALAAYMFFLILVGFPVNFLTLFVTVQHKKLRTP LNYILLNLAMANLFMVLF-GFTVTM-YTSMN-GYFVFGPTMCSIEGFFAT LGGEVALWSLVVLAIERYIVICKPMGN-FRFGNTHAIMGVAFTWIMALAC -AAPPL-VGWSR-----YIPEGMQ---CSCGPDYYTLNPNFNNESYVVYM FVVHFLVPFVIIFFCYGRLLCTVKEAAAAQ-------------------- -------------------------------------------------- -------------------------------Q------------------ -----------------------------------------------ES- ASTQKAEKEVTRMVVLMVIGFLVCWVPYASVAFYIFTHQGSD--FGAT-F MTLPAFFAKSSALYNPVIYILMNKQFRNCMITTLC----C-GKNPLGDDE -SG-AS-TSKTEVS-------------S---------------------- -------------------------------------------------- ------------------VSTSPVSPA * >P1;U22180 1 rat opsin [J.Mol.Neurosci.5(3),207-209'94] MNGTEGP---------------------------NFYVP-------F--- ---------------------SN-ITG-----------------VV--RS PFEQPQYY-LAEPWQFSMLAAYMFLLIVLGFPINFLTLYVTVQHKKLRTP LNYILLNLAVADLFMVFG-GFTTTL-YTSLH-GYFVFGPTGCNLEGFFAT LGGEIGLWSLVVLAIERYVVVCKPMSN-FRFGENHAIMGVAFTWVMALAC -AAPPL-VGWSR-----YIPEGMQ---CSCGIDYYTLKPEVNNESFVIYM FVVHFTIPMIVIFFCYGQLVFTVKEAAAQQ-------------------- -------------------------------------------------- -------------------------------Q------------------ -----------------------------------------------ES- ATTQKAEKEVTRMVIIMVIFFLICWLPYASVAMYIFTHQGSN--FGPI-F MTLPAFFAKTASIYNPIIYIMMNKQFRNCMLTSLC----C-GKNPLGDDE -AS-AT-ASKTE-------------------------------------- -------------------------------------------------- --------------------TSQVAPA * >P1;M92038 1 chicken green sensitive cone opsin [PNAS89,5932-5936'9 MNGTEGI---------------------------NFYVP-------M--- ---------------------SN-KTG-----------------VV--RS PFEYPQYY-LAEPWKYRLVCCYIFFLISTGLPINLLTLLVTFKHKKLRQP LNYILVNLAVADLFMACF-GFTVTF-YTAWN-GYFVFGPVGCAVEGFFAT LGGQVALWSLVVLAIERYIVVCKPMGN-FRFSATHAMMGIAFTWVMAFSC -AAPPL-FGWSR-----YMPEGMQ---CSCGPDYYTHNPDYHNESYVLYM FVIHFIIPVVVIFFSYGRLICKVREAAAQQ-------------------- -------------------------------------------------- -------------------------------Q------------------ -----------------------------------------------ES- ATTQKAEKEVTRMVILMVLGFMLAWTPYAVVAFWIFTNKGAD--FTAT-L MAVPAFFSKSSSLYNPIIYVLMNKQFRNCMITTIC----C-GKNPFGDED VSSTVS-QSKTEVS-------------S---------------------- -------------------------------------------------- ------------------VSSSQVSPA * >P1;A45229 opsin, green-sensitive (clone GFgr-1) - goldfish MNGTEGK---------------------------NFYVP-------M--- ---------------------SN-RTG-----------------LV--RS PFEYPQYY-LAEPWQFKILALYLFFLMSMGLPINGLTLVVTAQHKKLRQP LNFILVNLAVAGTIMVCF-GFTVTF-YTAIN-GYFVLGPTGCAVEGFMAT LGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSSHAFAGIAFTWVMALAC -AAPPL-FGWSR-----YIPEGMQ---CSCGPDYYTLNPDYNNESYVIYM FVCHFILPVAVIFFTYGRLVCTVKAAAAQQ-------------------- -------------------------------------------------- -------------------------------Q------------------ -----------------------------------------------DS- ASTQKAEREVTKMVILMVFGFLIAWTPYATVAAWIFFNKGAD--FSAK-F MAIPAFFSKSSALYNPVIYVLLNKQFRNCMLTTIF----C-GKNPLGDDE -SSTVS-TSKTE-------------------------------------- -------------------------------------------------- --------------------VSSVSPA * >P1;B45229 opsin, green-sensitive (clone GFgr-2) - goldfish MNGTEGN---------------------------NFYVP-------L--- ---------------------SN-RTG-----------------LV--RS PFEYPQYY-LAEPWQFKLLAVYMFFLICLGLPINGLTLICTAQHKKLRQP LNFILVNLAVAGAIMVCF-GFTVTF-YTAIN-GYFALGPTGCAVEGFMAT LGGEVALWSLVVLAIERYIVVCKPMGS-FKFSSTHASAGIAFTWVMAMAC -AAPPL-VGWSR-----YIPEGIQ---CSCGPDYYTLNPEYNNESYVLYM FICHFILPVTIIFFTYGRLVCTVKAAAAQQ-------------------- -------------------------------------------------- -------------------------------Q------------------ -----------------------------------------------DS- ASTQKAEREVTKMVILMVLGFLVAWTPYATVAAWIFFNKGAA--FSAQ-F MAIPAFFSKTSALYNPVIYVLLNKQFRSCMLTTLF----C-GKNPLGDEE -SSTVS-TSKTE-------------------------------------- -------------------------------------------------- --------------------VSSVSPA * >P1;L11864 1 Carassius auratus blue cone opsin [Biochemistry32,208- MKQVPEFH-E------------------------DFYIP-------I--- -----------------P--LDI-NNL-----------------SA--YS PFLVPQDH-LGNQGIFMAMSVFMFFIFIGGASINILTILCTIQFKKLRSH LNYILVNLSIANLFVAIF-GSPLSF-YSFFN-RYFIFGATACKIEGFLAT LGGMVGLWSLAVVAFERWLVICKPLGN-FTFKTPHAIAGCILPWISALAA -SLPPL-FGWSR-----YIPEGLQ---CSCGPDWYTTNNKYNNESYVMFL FCFCFAVPFGTIVFCYGQLLITLKLAAKAQ-------------------- -------------------------------------------------- -------------------------------A------------------ -----------------------------------------------DS- ASTQKAEREVTKMVVVMVLGFLVCWAPYASFSLWIVSHRGEE--FDLR-M ATIPSCLSKASTVYNPVIYVLMNKQFRSCMMKMV-----C-GKNIE-EDE -AS-TS-SQVTQVS------------------------------------ -------------------------------------------------- ---------------------SVAPEK * >P1;M13299 1 human BCP <>[Science232(4747),193-202'86] MRKMSEE---------------------------EFYL--------F--- ---------------------KN-IS-------------------S--VG PWDGPQYH-IAPVWAFYLQAAFMGTVFLIGFPLNAMVLVATLRYKKLRQP LNYILVNVSFGGFLLCIF-SVFPVF-VASCN-GYFVFGRHVCALEGFLGT VAGLVTGWSLAFLAFERYIVICKPFGN-FRFSSKHALTVVLATWTIGIGV -SIPPF-FGWSR-----FIPEGLQ---CSCGPDWYTVGTKYRSESYTWFL FIFCFIVPLSLICFSYTQLLRALKAVAAQQ-------------------- -------------------------------------------------- -------------------------------Q------------------ -----------------------------------------------ES- ATTQKAEREVSRMVVVMVGSFCVCYVPYAAFAMYMVNNRNHG--LDLR-L VTIPSFFSKSACIYNPIIYCFMNKQFQACIMKMV-----C-GKAMTDESD T---CS-SQKTEVS-------------T---------------------- -------------------------------------------------- ------------------VSSTQVGPN * >P1;K03494 1 human GCP <>[Science232(4747),193-202'86] MAQQWSLQ-RLAGRH---PQD--S--YEDSTQSSIFTYT-------N--- ---------------------SN---------------------ST--RG PFEGPNYH-IAPRWVYHLTSVWMIFVVIASVFTNGLVLAATMKFKKLRHP LNWILVNLAVADLAETVI-ASTISV-VNQVY-GYFVLGHPMCVLEGYTVS LCGITGLWSLAIISWERWMVVCKPFGN-VRFDAKLAIVGIAFSWIWAAVW -TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSYPGVQSYMIVL MVTCCITPLSIIVLCYLQVWLAIRAVAKQQ-------------------- -------------------------------------------------- -------------------------------K------------------ -----------------------------------------------ES- ESTQKAEKEVTRMVVVMVLAFCFCWGPYAFFACFAAANPGYP--FHPL-M AALPAFFAKSATIYNPVIYVFMNRQFRNCILQLFG------KKVDDGS-E LSSASK----TEVS-------------S---------------------- -------------------------------------------------- --------------------VSSVSPA * >P1;Z68193 1 human Red Opsin <>[] MAQQWSLQ-RLAGRH---PQD--S--YEDSTQSSIFTYT-------N--- ---------------------SN---------------------ST--RG PFEGPNYH-IAPRWVYHLTSVWMIFVVTASVFTNGLVLAATMKFKKLRHP LNWILVNLAVADLAETVI-ASTISI-VNQVS-GYFVLGHPMCVLEGYTVS LCGITGLWSLAIISWERWLVVCKPFGN-VRFDAKLAIVGIAFSWIWSAVW -TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSYPGVQSYMIVL MVTCCIIPLAIIMLCYLQVWLAIRAVAKQQ-------------------- -------------------------------------------------- -------------------------------K------------------ -----------------------------------------------ES- ESTQKAEKEVTRMVVVMIFAYCVCWGPYTFFACFAAANPGYA--FHPL-M AALPAYFAKSATIYNPVIYVFMNRQFRNCILQLFG------KKVDDGS-E LSSASK----TEVS-------------S---------------------- -------------------------------------------------- --------------------VSSVSPA * >P1;M92036 1 Gecko gecko P521 [PNAS89,6841-6845'92] MTEAWNVA-VFAARR---SR---D--DDDTTRGSVFTYT-------N--- ---------------------TN---------------------NT--RG PFEGPNYH-IAPRWVYNLVSFFMIIVVIASCFTNGLVLVATAKFKKLRHP LNWILVNLAFVDLVETLV-ASTISV-FNQIF-GYFILGHPLCVIEGYVVS SCGITGLWSLAIISWERWFVVCKPFGN-IKFDSKLAIIGIVFSWVWAWGW -SAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSVELGCQSFMLTL MITCCFLPLFIIIVCYLQVWMAIRAVAAQQ-------------------- -------------------------------------------------- -------------------------------K------------------ -----------------------------------------------ES- ESTQKAEREVSRMVVVMIVAFCICWGPYASFVSFAAANPGYA--FHPL-A AALPAYFAKSATIYNPVIYVFMNRQFRNCIMQLFG------KKVDDGS-E ASTTSR----TEVS-------------S---------------------- -------------------------------------------------- ------------------VSNSSVAPA * >P1;M62903 1 chicken visual pigment <>[BBRC173,1212-1217'90] MAAWEAAF-AA--RR----RH--E--EEDTTRDSVFTYT-------N--- ---------------------SN---------------------NT--RG PFEGPNYH-IAPRWVYNLTSVWMIFVVAASVFTNGLVLVATWKFKKLRHP LNWILVNLAVADLGETVI-ASTISV-INQIS-GYFILGHPMCVVEGYTVS ACGITALWSLAIISWERWFVVCKPFGN-IKFDGKLAVAGILFSWLWSCAW -TAPPI-FGWSR-----YWPHGLK---TSCGPDVFSGSSDPGVQSYMVVL MVTCCFFPLAIIILCYLQVWLAIRAVAAQQ-------------------- -------------------------------------------------- -------------------------------K------------------ -----------------------------------------------ES- ESTQKAEKEVSRMVVVMIVAYCFCWGPYTFFACFAAANPGYA--FHPL-A AALPAYFAKSATIYNPIIYVFMNRQFRNCILQLFG------KKVDDGS-E V-STSR----TEVS-------------S---------------------- -------------------------------------------------- ------------------VSNSSVSPA * >P1;S75720 1 chicken P-opsin <>[Science267(5203),1502-1506'95] MSSNSSQA--------------------------------------P--- ---------------------PN---------------------GT--PG PFDGPQWPYQAPQSTYVGVAVLMGTVVACASVVNGLVIVVSICYKKLRSP LNYILVNLAVADLLVTLC-GSSVSL-SNNIN-GFFVFGRRMCELEGFMVS LTGIVGLWSLAILALERYVVVCKPLGD-FQFQRRHAVSGCAFTWGWALLW -SAPPL-LGWSS-----YVPEGLR---TSCGPNWYTGG--SNNNSYILSL FVTCFVLPLSLILFSYTNLLLTLRAAAAQQ-------------------- -------------------------------------------------- -------------------------------K------------------ -----------------------------------------------EA- DTTQRAEREVTRMVIVMVMAFLLCWLPYSTFALVVATHKGII--IQPV-L ASLPSYFSKTATVYNPIIYVFMNKQFQSCLLEMLC----C-GYQPQRT-G KASPGTPGPHADVT---------AAGLR---------------------- -------------------------------------------------- ------------------NKVMPAHPV * >P1;M17718 1 D.melanogaster Rh3 <>[J.Neurosci.7,1550-1557'87] MESGNVSS-SL-FGN-VSTA-----------LRPEA-RL-------S--- ------------------A--E--TR---------LLGWNVPPEELRHIP EH-WLTYP-EPPESMNYLLGTLYIFFTLMSMLGNGLVIWVFSAAKSLRTP SNILVINLAFCDFMMM-V-KTPIFI-YNSFH-QGYALGHLGCQIFGIIGS YTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMIIFIYMYATPW -VVACYTETWGR-----FVPEGYL---TSCTFDYLTDN--FDTRLFVACI FFFSFVCPTTMITYYYSQIVGHVFSHEKAL-------------------- -------------------------------------------------- -------------------------------RDQ------A--------- ------------K----------------------KMNVESL---RSNVD KNKETAEIRIAKAAITICFLFFCSWTPYGVMSLIGAFGDKTL--LTPG-A TMIPACACKMVACIDPFVYAISHPRYRMELQKRCPWLA--LNEK-AP-ES -SAVAS-TSTT----------------Q---------------------- -------------------------------------------------- -------------------EPQQTTAA * >P1;X65879 1 Drosophila pseudoobscura Rh3 <>[Genetics132(1),193-204'92 MEYHNVSS--V-LGN-VSSV-----------LRPDA-RL-------S--- ------------------A--E--SR---------LLGWNVPPDELRHIP EH-WLIYP-EPPESMNYLLGTLYIFFTVISMIGNGLVMWVFSAAKSLRTP SNILVINLAFCDFMMM-I-KTPIFI-YNSFH-QGYALGHLGCQIFGVIGS YTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMIIFIYLYATPW -VVACYTESWGR-----FVPEGYL---TSCTFDYLTDN--FDTRLFVACI FFFSFVCPTTMITYYYSQIVGHVFSHEKAL-------------------- -------------------------------------------------- -------------------------------RDQ------A--------- ------------K----------------------KMNVDSL---RSNVD KSKEAAEIRIAKAAITICFLFFASWTPYGVMSLIGAFGDKTL--LTPG-A TMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPWLA--ISEK-AP-ES -RAAIS-TSTT----------------Q---------------------- -------------------------------------------------- -------------------EQQQTTAA * >P1;M17730 1 D.melanogaster Rh4 opsin <>[J.Neurosci.7,1558-1566'87] MEPLCNAS-EP--------P-----------LRPEA-RS----------- ------------------S-GNGDLQ---------FLGWNVPPDQIQYIP EH-WLTQL-EPPASMHYMLGVFYIFLFCASTVGNGMVIWIFSTSKSLRTP SNMFVLNLAVFDLIMC-L-KAPIFN-SFHRG-FAIYLGNTWCQIFASIGS YSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNIIIWLYCTPW -VVLPLTQFWDR-----FVPEGYL---TSCSFDYLSDN--FDTRLFVGTI FFFSFVCPTLMILYYYSQIVGHVFSHEKAL-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVESL---RSNVD KSKETAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL--LTQG-A TMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPWLG--VNEK-SG-EI -SSAQS-TT-T----------------Q---------------------- -------------------------------------------------- -------------------EQQQTTAA * >P1;X65880 1 Drosophila pseudoobscura Rh4 <>[Genetics132(1),193-204'92 MDALCNAS-EP--------P-----------LRPEA-RM-------S--- ------------------S-GSDELQ---------FLGWNVPPDQIQYIP EH-WLTQL-EPPASMHYMLGVFYIFLFFASTLGNGMVIWIFSTSKSLRTP SNMFVLNLAVFDLIMC-L-KAPIFI-YNSFH-RGFALGNTWCQIFASIGS YSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNIIIWLYCTPW -VVLPLTQFWDR-----FVPEGYL---TSCSFDYLSDN--FDTRLFVGTI FLFSFVVPTLMILYYYSQIVGHVFNHEKAL-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVESL---RSNVD KSKETAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL--LTPG-A TMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPWLG--VNEK-SG-EA -SSAQS-TTTQ----------------E---------------------- -------------------------------------------------- -------------------QTQQTSAA * >P1;D50584 1 Hemigrapsus sanguineus opsin BcRh2 [J.Exp.Biol.1 MTNATGPQ-MAYYGA-ASMD-----------FG-----Y-------P--- ------------------E-G---VS----------IVDFVRPEIKPYVH QH-WYNYP-PVNPMWHYLLGVIYLFLGTVSIFGNGLVIYLFNKSAALRTP ANILVVNLALSDLIMLTT-NVPFFT-YNCFSGGVWMFSPQYCEIYACLGA ITGVCSIWLLCMISFDRYNIICNGFNG-PKLTTGKAVVFALISWVIAIGC -ALPPF-FGWGN-----YILEGIL---DSCSYDYLTQD--FNTFSYNIFI FVFDYFLPAAIIVFSYVFIVKAIFAHEAAM-------------------- -------------------------------------------------- -------------------------------RAQ------A--------- ------------K----------------------KMNVSTL---RSNE- ADAQRAEIRIAKTALVNVSLWFICWTPYALISLKGVMGDTSG--ITPL-V STLPALLAKSCSCYNPFVYAISHPKYRLAITQHLPWFC--VHET-ET-KS -NDDSQ-SNS---------------------------------------- -------------------------------------------------- --------------------TVAQDKA * >P1;D50583 1 Hemigrapsus sanguineus opsin BcRh1 [J.Exp.Biol.1 MANVTGPQ-MAFYGS-GAAT-----------FG-----Y-------P--- ------------------E-G---MT----------VADFVPDRVKHMVL DH-WYNYP-PVNPMWHYLLGVVYLFLGVISIAGNGLVIYLYMKSQALKTP ANMLIVNLALSDLIMLTT-NFPPFC-YNCFSGGRWMFSGTYCEIYAALGA ITGVCSIWTLCMISFDRYNIICNGFNG-PKLTQGKATFMCGLAWVISVGW -SLPPF-FGWGS-----YTLEGIL---DSCSYDYFTRD--MNTITYNICI FIFDFFLPASVIVFSYVFIVKAIFAHEAAM-------------------- -------------------------------------------------- -------------------------------RAQ------A--------- ------------K----------------------KMNVTNL---RSNE- AETQRAEIRIAKTALVNVSLWFICWTPYAAITIQGLLGNAEG--ITPL-L TTLPALLAKSCSCYNPFVYAISHPKFRLAITQHLPWFC--VHEK-DP-ND -VEENQ-SSN---------------------------------------- -------------------------------------------------- --------------------TQTQEKS * >P1;K02320 1 D.melanogaster opsin <>[Cell40,851-858'85] MESFAVAA----------AQ-----------LGPHF-AP-------L--- ---------------------SN-GS----------VVDKVTPDMAHLIS PY-WNQFP-AMDPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTP ANLLVINLAISDFGIMIT-NTPMMG-INLYF-ETWVLGPMMCDIYAGLGS AFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLAL------------- ---------GKM-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY SIFVYYIPLFLICYSYWFIIAAVSAHEKAM-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVKSL---RSSED -AEKSAEGKLAKVALVTITLWFMAWTPYLVINCMGLFK-FEG--LTPL-N TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S -SD-AQ-SQAT--------------------------------------- -------------------------------------------------- -------------------ASEAESKA * >P1;K02315 1 D.melanogaster ninaE <>[Cell40,839-850'85] MESFAVAA----------AQ-----------LGPHF-AP-------L--- ---------------------SN-GS----------VVDKVTPDMAHLIS PY-WNQFP-AMDPIWAKILTAYMIMIGMISWCGNGVVIYIFATTKSLRTP ANLLVINLAISDFGIMIT-NTPMMG-INLYF-ETWVLGPMMCDIYAGLGS AFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAYIWFMSSIW -CLAPA-FGWSR-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY SIFVYYIPLFLICYSYWFIIAAVSAHEKAM-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVKSL---RSSED -AEKSAEGKLAKVALVTITLWFMAWTPYLVINCMGLFK-FEG--LTPL-N TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S -SD-AQ-SQAT--------------------------------------- -------------------------------------------------- -------------------ASEAESKA * >P1;X65877 1 Drosophila pseudoobscura ninaE <>[Genetics132(1),193-204' MDSFAAVA----------TQ-----------LGPQF-AA-------P--- ---------------------SN-GS----------VVDKVTPDMAHLIS PY-WDQFP-AMDPIWAKILTAYMIIIGMISWCGNGVVIYIFATTKSLRTP ANLLVINLAISDFGIMIT-NTPMMG-INLYF-ETWVLGPMMCDIYAGLGS AFGCSSIWSMCMISLDRYQVIVKGMAG-RPMTIPLALGKIAYIWFMSTIW CCLAPV-FGWSR-----YVPEGNL---TSCGIDYLERD--WNPRSYLIFY SIFVYYIPLFLICYSYWFIIAAVSAHEKAM-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVKSL---RSSED -ADKSAEGKLAKVALVTISLWFMAWTPYLVINCMGLFK-FEG--LTPL-N TIWGACFAKSAACYNPIVYGISHPKYRLALKEKCPCCV--FGKVDDGK-S -SE-AQ-SQAT--------------------------------------- -------------------------------------------------- -------------------TSEAESKA * >P1;M12896 1 D.melanogaster Rh2 <>[Cell44,705-710'86] MERSHLPE-TPFDL----AH-----------SGPRF-QA-------Q--- ------------------S-SGN-GS----------VLDNVLPDMAHLVN PY-WSRFA-PMDPMMSKILGLFTLAIMIISCCGNGVVVYIFGGTKSLRTP ANLLVLNLAFSDFCMMAS-QSPVMI-INFYY-ETWVLGPLWCDIYAGCGS LFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKILFIWMMAVFW -TVMPL-IGWSA-----YVPEGNL---TACSIDYMTRM--WNPRSYLITY SLFVYYTPLFLICYSYWFIIAAVAAHEKAM-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVKSL---RSSED -CDKSAEGKLAKVALTTISLWFMAWTPYLVICYFGLFK-IDG--LTPL-T TIWGATFAKTSAVYNPIVYGISHPKYRIVLKEKCPMCV--FGNTDEPK-P -DAPAS-DTET--------------------------------------- -------------------------------------------------- -------------------TSEADSKA * >P1;X65878 1 Drosophila pseudoobscura Rh2 <>[Genetics132(1),193-204'92 MERSLLPE-PPLAM----AL-----------LGPRF-EA-------Q--- ------------------T-GGN-RS----------VLDNVLPDMAPLVN PH-WSRFA-PMDPTMSKILGLFTLVILIISCCGNGVVVYIFGGTKSLRTP ANLLVLNLAFSDFCMMAS-QSPVMI-INFYY-ETWVLGPLWCDIYAACGS LFGCVSIWSMCMIAFDRYNVIVKGING-TPMTIKTSIMKIAFIWMMAVFW -TIMPL-IGWSS-----YVPEGNL---TACSIDYMTRQ--WNPRSYLITY SLFVYYTPLFMICYSYWFIIATVAAHEKAM-------------------- -------------------------------------------------- -------------------------------RDQ------A--------- ------------K----------------------KMNVKSL---RSSED -CDKSAENKLAKVALTTISLWFMAWTPYLIICYFGLFK-IDG--LTPL-T TIWGATFAKTSAVYNPIVYGISHPNDRLVLKEKCPMCV--CGTTDEPK-P -DAPPS-DTET--------------------------------------- -------------------------------------------------- -------------------TSEAESKD * >P1;U26026 1 Apis mellifera long-wavelength rhodopsin <>[] MIAVSGPS-YE-A-----FS-----------YGGQ--AR-------F--- ---------------------NN-QT----------VVDKVPPDMLHLID AN-WYQYP-PLNPMWHGILGFVIGMLGFVSAMGNGMVVYIFLSTKSLRTP SNLFVINLAISNFLMMFC-MSPPMV-INCYY-ETWVLGPLFCQIYAMLGS LFGCGSIWTMTMIAFDRYNVIVKGLSG-KPLSINGALIRIIAIWLFSLGW -TIAPM-FGWNR-----YVPEGNM---TACGTDYFNRG--LLSASYLVCY GIWVYFVPLFLIIYSYWFIIQAVAAHEKNM-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVASL---RSSEN -QNTSAECKLAKVALMTISLWFMAWTPYLVINFSGIFN-LVK--ISPL-F TIWGSLFAKANAVYNPIVYGISHPKYRAALFAKFPSLA--CAAEPSS-DA -VSTTS-GTTT----------------V---------------------- -------------------------------------------------- -------------------TDNEKSNA * >P1;L03781 1 Limulus polyphemus opsin <>[PNAS90,6150-6154'93] MANQLSYS-SL-G-----WP-----------YQ----------------- ---------------------PN-AS----------VVDTMPKEMLYMIH EH-WYAFP-PMNPLWYSILGVAMIILGIICVLGNGMVIYLMMTTKSLRTP TNLLVVNLAFSDFCMMAF-MMPTMT-SNCFA-ETWILGPFMCEVYGMAGS LFGCASIWSMVMITLDRYNVIVRGMAA-APLTHKKATLLLLFVWIWSGGW -TILPF-FGWSR-----YVPEGNL---TSCTVDYLTKD--WSSASYVVIY GLAVYFLPLITMIYCYFFIVHAVAEHEKQL-------------------- -------------------------------------------------- -------------------------------REQ------A--------- ------------K----------------------KMNVASL---RANAD QQKQSAECRLAKVAMMTVGLWFMAWTPYLIISWAGVFSSGTR--LTPL-A TIWGSVFAKANSCYNPIVYGISHPRYKAALYQRFPSLA--CGSGESGSDV -KSEAS-ATTT----------------M---------------------- -------------------------------------------------- ------------------EEKPKIPEA * >P1;X07797 1 Octopus dofleini rhodopsin <>[FEBS232(1),69-72'88] MVESTTLV-NQ-T------------------------------------- --------------------------------------WWYNP--TVDIH PH-WAKFD-PIPDAVYYSVGIFIGVVGIIGILGNGVVIYLFSKTKSLQTP ANMFIINLAMSDLSFSAINGFPLKT-ISAFM-KKWIFGKVACQLYGLLGG IFGFMSINTMAMISIDRYNVIGRPMAASKKMSHRRAFLMIIFVWMWSIVW -SVGPV-FNWGA-----YVPEGIL---TSCSFDYLSTD--PSTRSFILCM YFCGFMLPIIIIAFCYFNIVMSVSNHEKEM-------------------- -------------------------------------------------- -------------------------------AAM------A--------- ------------K----------------------RLNAKEL---RKA-- QAGASAEMKLAKISMVIITQFMLSWSPYAIIALLAQFGPAEW--VTPY-A AELPVLFAKASAIHNPIVYSVSHPKFREAIQTTFPWLLTCCQFDEKECED -ANDAE-EEVV---------------ASERGGE--SRDAAQMKEMMAMMQ KMQAQQAAYQPPPPPQGYPPQGYPPQGAYPPPQGYPPQGYPPQGYPPQGY PPQGAPPQVEAPQGAPPQGVDNQAYQA * >P1;X70498 1 Todarodes pacificus rhodopsin [FEBS317(1-2),5-11'93] MGRDLR-D-NE-T------------------------------------- --------------------------------------WWYNP--SIVVH PH-WREFD-QVPDAVYYSLGIFIGICGIIGCGGNGIVIYLFTKTKSLQTP ANMFIINLAFSDFTFSLVNGFPLMT-ISCFL-KKWIFGFAACKVYGFIGG IFGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMIIFVWLWSVLW -AIGPI-FGWGA-----YTLEGVL---CNCSFDYISRD--STTRSNILCM FILGFFGPILIIFFCYFNIVMSVSNHEKEM-------------------- -------------------------------------------------- -------------------------------AAM------A--------- ------------K----------------------RLNAKEL---RKA-- QAGANAEMRLAKISIVIVSQFLLSWSPYAVVALLAQFGPLEW--VTPY-A AQLPVMFAKASAIHNPMIYSVSHPKFREAISQTFPWVLTCCQFDDKETED -DKDAE-TEIP---------------AGESSDAAPSADAAQMKEMMAMMQ KMQQQQAAYPPQG----YAPPPQGYPPQGYPPQGYPPQGYPPQGY---PP PPQGAPPQG-APPAAPPQGVDNQAYQA * >P1;L21195 1 human serotonin 5-HT7 receptor protein P1;L15228 1 rat 5HT-7 serotonin receptor <>[JBC268,18200-18204'93] MPHLLSG-FLE--------------------------------------- ------------------------------VTASPAPTWDAPPDNV--SG CGEQINYG----RVEKVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQP SNYLIVSLALADLSVAVA-VMPFVSVTDLIG-GKWIFGHFFCNVFIAMDV MCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSASI -TLPPL-FGWAQ-----NVNDDKV---CLISQD----------FGYTIYS TAVAFYIPMSVMLFMYYQIYKAARKSAAKHKFPGFP-------------- --------------------------------------RVQ--------- -----PESVI-----------SLNG-VVKLQKEV------E--------- ------------E----------------------CANLSRLLKHERKN- ISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICGTSCSCIPLWV ERTCLWLGYANSLINPFIYAFFNRDLRPTSRSLLQ----C-QYRNINRK- LSAAGMH-EALKLAERPERSEFVLQNSD---------------------- -------------------------------------------------- ------------------HCGKKGHDT * >P1;A47425 serotonin receptor 5HT-7 - rat MPHLLSG-FLE--------------------------------------- ------------------------------VTASPAPTWDAPPDNV--SG CGEQINYG----RVEKVVIGSILTLITLLTIAGNCLVVISVSFVKKLRQP SNYLIVSLALADLSVAVA-VMPFVSVTDLIG-GKWIFGHFFCNVFIAMDV MCCTASIMTLCVISIDRYLGITRPLTYPVRQNGKCMAKMILSVWLLSASI -TLPPL-FGWAQ-----NVNDDKV---CLISQD----------FGYTIYS TAVAFYIPMSVMLFMYYQIYKAARKSAAKHKFPGFP-------------- --------------------------------------RVQ--------- -----PESVI-----------SLNG-VVKLQKEV------E--------- ------------E----------------------CANLSRLLKHERKN- ISIFKREQKAATTLGIIVGAFTVCWLPFFLLSTARPFICGTSCSCIPLWV ERTCLWLGYANSLINPFIYAFFNRDLRTTYRSLLQ----C-QYRNINRK- LSAAGMH-EALKLAERPERSEFVLQNSD---------------------- -------------------------------------------------- ------------------HCGKKGHDT * >P1;M83181 1 human serotonin receptor <>[JBC267(11),7553-7562'92] MDVLSPG-QGNNTTS---PP-----------------AP-------F--- -----------------ET-GGN-TTG-------------IS-------- -----DVT----VSYQVITSLLLGTLIFCAVLGNACVVAAIALERSLQNV ANYLIGSLAVTDLMVSVL-VLPMAA-LYQVL-NKWTLGQVTCDLFIALDV LCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISLTWLIGFLI -SIPPM-LGWRT-----PEDRSDPD-ACTISKD----------HGYTIYS TFGAFYIPLLLMLVLYGRIFRAARFRIRKTVKKVEKTGADT--------- ------------------------------RHGASPAPQPKKSVNGESGS RNWRL--GVESKAGGALCANGAVRQGDDGAA------------------- -----LEVIEVHRVGNSKEHLPLPSEAGPTPCAPASFERKNERNAEAKR- KMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPFCESSC-HMPTL-L GAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIK----C-K-------- -------------------------------------------------- -------------------------------------------------- -----------------------FCRQ * >P1;A35181 serotonin receptor class 1A - rat MDVFSFG-QGNNTTA---SQ-----------------EP-------F--- -----------------GT-GGN-VTS-------------IS-------- -----DVT----FSYQVITSLLLGTLIFCAVLGNACVVAAIALERSLQNV ANYLIGSLAVTDLMVSVL-VLPMAA-LYQVL-NKWTLGQVTCDLFIALDV LCCTSSILHLCAIALDRYWAITDPIDYVNKRTPRRAAALISLTWLIGFLI -SIPPM-LGWRT-----PEDRSDPD-ACTISKD----------HGYTIYS TFGAFYIPLLLMLVLYGRIFRAARFRIRKTVRKVEKKGAGT--------- ------------------------------SLGTSSAPPPKKSLNGQPGS GDWRR--CAENRAVGTPCTNGAVRQGDDEAT------------------- -----LEVIEVHRVGNSKEHLPLPSESGSNSYAPACLERKNERNAEAKR- KMALARERKTVKTLGIIMGTFILCWLPFFIVALVLPFCESSC-HMPAL-L GAIINWLGYSNSLLNPVIYAYFNKDFQNAFKKIIK----C-K-------- -------------------------------------------------- -------------------------------------------------- -----------------------FCRR * >P1;L06803 1 Lymnaea stagnalis serotonin receptor <>[PNAS90,11-15'93] MANFTFG-DLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDS YGLTGQFINGSHSSRSRDNASAN-DTSATNM--TDDRYWSLT-------- -----VYS----HEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNV ANYLILSLAVADLMVAVL-VMPLSV-VSEIS-KVWFLHSEVCDMWISVDV LCCTASILHLVAIAMDRYWAVTSIDYI-RRRSARRILLMIMVVWIVALFI -SIPPL-FGWRD-----PNNDPDKTGTCIISQD----------KGYTIFS TVGAFYLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASP KTEYSVVSDCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKN-RAKK-- ----LPENAN-----------GVNS-NSSSS-ERLKQIQIETAEAFANGC AEEASIAML-ERQCNNGKKIS-----------------SNDTPYSRTRE- KLELKRERKAARTLAIITGAFLICWLPFFIIALIGPFVDPEG--IPPF-A RSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILF----G-K-Y------ -------------------------------------------------- -------------------------------------------------- ----------------------RRGHR * >P1;A47174 serotonin receptor, 5HTlym receptor - great pond snail MANFTFG-DLALDVARMGGLASTPSGLRSTGLTTPGLSPTGLVTSDFNDS YGLTGQFINGSHSSRSRDNASAN-DTSATNM--TDDRYWSLT-------- -----VYS----HEHLVLTSVILGLFVLCCIIGNCFVIAAVMLERSLHNV ANYLILSLAVADLMVAVL-VMPLSV-VSEIS-KVWFLHSEVCDMWISVDV LCCTASILHLVAIAMDRYWAVTSIDYI-RRRSARRILLMIMVVWIVALFI -SIPPL-FGWRD-----PNNDPDKTGTCIISQD----------KGYTIFS TVGAFYLPMLVMMIIYIRIWLVARSRIRKDKFQMTKARLKTEETTLVASP KTEYSVVSDCNGCNSPDSTTEKKKRRAPFKSYGCSPRPERKKN-RAKK-- ----LPENAN-----------GVNS-NSSSS-ERLKQIQIETAEAFANGC AEEASIAML-ERQCNNGKKIS-----------------SNDTPYSRTRE- KLELKRERKAARTLAIITGAFLICWLPFFIIALIGPFVDPEG--IPPF-A RSFVLWLGYFNSLLNPIIYTIFSPEFRSAFQKILF----G-K-Y------ -------------------------------------------------- -------------------------------------------------- ----------------------RRGHR * >P1;X95604 1 Bombyx mori serotonin receptor [InsectBiochem.Mol.Bi MEGAEGQ-EE-LDWEALYLRL--P--LQNCSWNSTGWEP----------- --------------------NWN-VTVV-----PNTTWWQAS-------A PFDT-PAA----LVRAAAKAVVLGLLILATVVGNVFVIAAILLERHLRSA ANNLILSLAVADLLVACL-VMPLGA-VYEVV-QRWTLGPELCDMWTSGDV LCCTASILHLVAIALDRYWAVTNIDYI-HASTAKRVGMMIACVWTVSFFV -CIAQL-LGWKDPDWNQRVSEDLR---CVVSQD----------VGYQIFA TASSFYVPVLIILILYWRIYQTARKRIRRRRGATARGGVGPP-------- -----PVPAGGALVAGGGSGGIAAAVVAVIGRPLPTISETTTT-GF---- ----T--NVS-----------SNNT-SP----EK------Q--------- ------------SCANGLEADPPTTGYG----AVAAAYYPSLVRRKPKE- AADSKRERKAAKTLAIITGAFVACWLPFFVLAILVPTCD-CE--VSPV-L TSLSLWLGYFNSTLNPVIYTVFSPEFRHAFQRLLC----G-R-RV----- -------------------------------------------------- -------------------------------------------------- --------------------RRRRAPQ * ALTER-1.3.4/alter-web/src/main/webapp/000077500000000000000000000000001300536243200172375ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/webapp/IEmarginFix.js000077500000000000000000000161401300536243200217440ustar00rootroot00000000000000/*************************************************************************** * Internet Explorer Margin Fix * Copyright 2002-2004 by David Schontzler | www.stilleye.com * Free to use under GNU General Public License as long as this message * remains intact. * Description: This script will fix the horizontal margin support in IE5/6 * URI: http://www.stilleye.com/projects/dhtml/marginfix/ * Additional Credits: * - Bibek Sahu (BS) | http://www.dodds.net/~scorpio/ *************************************************************************** * Version: 2.2.0 ***************************************************************************/ if(!Array.prototype.push) { Array.prototype.push = function() { var i, j; for(i=0; j=arguments[i]; i++) this[this.length] = j; return this.length; } }; IEmarginFix = { list : new Array, ss : null, init : function() { var ua = navigator.userAgent.toLowerCase(); if( (ua.indexOf("msie 5.") != -1 || ua.indexOf("msie 6.") != -1) && ua.indexOf('mac') == -1 && document.compatMode != "CSS1Compat" && window.attachEvent && document.styleSheets.length > 0 ) { this.ss = document.styleSheets; var auto, lop, list, s, i, a; auto = new Array; lop = new Array; list = new Array; s = this.getRules(); for(i=0; i 0 ? lop.length > 0 ? auto.concat(lop) : auto : lop; window.attachEvent("onload", IEmarginFix.checkInline); } }, autoFix : function(elm) { var rslt = "auto", w = elm.currentStyle.width; var id = elm.id ? "#" + elm.id : elm.className ? elm.tagName + "." + elm.className : elm.tagName; // Credit: BS if(w.indexOf("%") != -1) { rslt = ( 100 - parseInt(w) )/2 + "%"; IEmarginFix.ss[IEmarginFix.ss.length-1].addRule(id, "margin-left : " + rslt + "; margin-right : " + rslt + "; width : 100%"); } else IEmarginFix.ss[IEmarginFix.ss.length-1].addRule(id, "margin-left : expression( IEmarginFix.pxAutoFix(this) );"); return rslt; }, // so we don't have to go through the if...else all over again! pxAutoFix : function(elm) { var rslt, par = elm.parentNode; rslt = par.clientWidth > 0 ? par.clientWidth : par.scrollWidth; rslt = (rslt - elm.offsetWidth) / 2; return Math.max(rslt, 0); }, lopsidedFix : function(elm) { var par = elm.parentNode, parWidth, rslt; parWidth = par.clientWidth > 0 ? par.clientWidth : par.scrollWidth; rslt = parWidth - elm.offsetWidth; if( elm.currentStyle.marginRight.indexOf("px") != -1 ) rslt -= parseInt( elm.currentStyle.marginRight ); else if( elm.currentStyle.marginRight.indexOf("%") != -1 ) rslt -= parseInt(elm.currentStyle.marginRight) * 0.01 * parWidth; rslt -= ( parseInt(par.currentStyle.paddingLeft) + parseInt(par.currentStyle.paddingRight) ); return rslt; }, checkInline : function() { var i, a, elm, blk, list = new Array, auto = IEmarginFix.list; for(i=0; a = auto[i]; i++) { if( a.indexOf(".") != -1 ) // classes list = list.concat( IEmarginFix.getClass( a.substring(a.indexOf(".")+1) ) ); else if( a.charAt(0) == '#' ) // ids list.push( document.all[a.substring(1)] ); else { // tags elm = document.getElementsByTagName(a); if(elm.length > 0) for(i=0; i < elm.length; i++) list = list.concat( elm.item(i) ); } } for(i=0; i 0 && !j.media.match(/^(screen)|(media)$/i) ) screen = false; else screen = true; if(!j.disabled && screen && is) { if(j.rules) { if(j.imports && j.imports.length) { for(k=0; k < j.imports.length; k++) for(x=0; y = j.imports[k].rules[x]; x++) s.push([y.selectorText, y.style.cssText]); } for(k=0; m = j.rules[k]; k++) s.push([m.selectorText, m.style.cssText]); } else { return null; } } if(wh && is) break; else is = true; } } return s; }, getStyle : function(obj,sty) { var sty2 = IEmarginFix.compactStyle(sty); var r = obj.style[sty2]; if(r=='') { if(document.defaultView) r = document.defaultView.getComputedStyle(obj,'').getPropertyValue(sty); else r = obj.currentStyle[sty2]; } if(!r) r = null; return r; }, compactStyle : function(str) { var s = str.split('-'); var o = [s[0]]; for(i=1;(j=s[i]);i++) { o[o.length] = j.charAt(0).toUpperCase(); o[o.length] = j.substring(1) }; return o.join(''); } }; IEmarginFix.init(); ALTER-1.3.4/alter-web/src/main/webapp/META-INF/000077500000000000000000000000001300536243200203775ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/webapp/META-INF/MANIFEST.MF000066400000000000000000000003401300536243200220260ustar00rootroot00000000000000Manifest-Version: 1.0 Specification-Title: ZK Application Specification-Version: 1.0 Specification-Vendor: Implementation-Title: Implementation-URL: http://your-website/ Implementation-Version: 1.0 Implementation-Vendor: ALTER-1.3.4/alter-web/src/main/webapp/META-INF/context.xml000077500000000000000000000013761300536243200226170ustar00rootroot00000000000000 ALTER-1.3.4/alter-web/src/main/webapp/WEB-INF/000077500000000000000000000000001300536243200202665ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/webapp/WEB-INF/web.xml000066400000000000000000000074461300536243200216000ustar00rootroot00000000000000 alter-web ZK listener for session cleanup org.zkoss.zk.ui.http.HttpSessionListener ZK loader for ZUML pages zkLoader org.zkoss.zk.ui.http.DHtmlLayoutServlet update-uri /zkau 1 zkLoader *.zul zkLoader *.zhtml The asynchronous update engine for ZK auEngine org.zkoss.zk.au.http.DHtmlUpdateServlet auEngine /zkau/* Jersey Web Application org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages es.uvigo.ei.sing.alter.web.rest com.sun.jersey.api.json.POJOMappingFeature true 1 Jersey Web Application /api/* 60 doc application/vnd.ms-word gif image/gif htm text/html html text/html jpeg image/jpeg jpg image/jpeg js text/javascript pdf application/pdf png image/png txt text/plain xls application/vnd.ms-excel xml text/xml zhtml text/html zul text/html index.zul index.zhtml index.html index.htm ALTER-1.3.4/alter-web/src/main/webapp/WEB-INF/zk.xml000066400000000000000000000003521300536243200214340ustar00rootroot00000000000000 ALTER-1.3.4/alter-web/src/main/webapp/analytics1.js000077500000000000000000000003341300536243200216500ustar00rootroot00000000000000var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); ALTER-1.3.4/alter-web/src/main/webapp/analytics2.js000077500000000000000000000001511300536243200216460ustar00rootroot00000000000000try { var pageTracker = _gat._getTracker("UA-7580134-6"); pageTracker._trackPageview(); } catch(err) {} ALTER-1.3.4/alter-web/src/main/webapp/banner.html000077500000000000000000000017201300536243200213750ustar00rootroot00000000000000
ALTER (ALignment Transformation EnviRonment)
ALTER-1.3.4/alter-web/src/main/webapp/favicon.ico000077500000000000000000000021761300536243200213710ustar00rootroot00000000000000 h(         5    S0.0 l   $"$qlq !!!!"!!&$$322WUV '! !  )0.-+))QPP! %## N #"##"$N)((7550..fee-++-+*%##} 1/1&$&)')x,*+:77422}{{:99311*((1/1;:;/-/.,.745866IGG644+)+'%'" "" "2021/1 202866?=<><;WVV<:::771/0)')-*(*423314434<::B@?DBBgff?=>@==867313s;9:><>?=>/<;<=;;A?>QOOQOQTSUmlnEDFJIJCA@@==<:;;:;DAC<;==<==<=0>;;o?<<緶OMM?<<<;;K:9;GFH320IGGR@>>X|#ALTER-1.3.4/alter-web/src/main/webapp/help/000077500000000000000000000000001300536243200201675ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide.htm000077500000000000000000002444301300536243200234540ustar00rootroot00000000000000 ALTER User's Guide

 

 

 

ALTER

ALigment Transformation EnviRonment

 

 

User guide

 

 

This document will guide you through a step by step tutorial showing the capabilities of ALTER to both (i) convert sequence file formats between existing tools and (i) collapse sequences to haplotypes (unique sequences).



Contents

Background 1

STEP 1.- select format 2

STEP 2.- upload or paste MSA. 2

STEP 3.- select output and convert! 3

STEP 4.- save converted MSA. 5

ALTER log panels 5

Links and References 7

 


Background

 

Multiple sequence alignment (MSA) can be read and written in a variety of standard formats. However, available software often does not exactly comply with the standards, so the task of converting a given MSA to another format correctly supported by a particular analysis program can be very confusing. ALTER aims to make life easier for users by taking into consideration both programs and formats.

 

ALTER implements a straightforward workflow that easily guides the user through a 4-step wizard in which the different options are automatically activated when the required information is available.

 

Currently, ALTER has been successfully tested in Internet Explorer 7, Firefox 3, Opera 9.62, Google Crome 3.0.195.38 and Safari 3 working under Windows XP/Vista, Ubuntu Linux 8.04 version and Mac OSX 10.6.


STEP 1.- select format

 

In this step the user provides information about the format of the MSA to be converted. If is selected, ALTER automatically tries to recognize the format of the input MSA; otherwise the user can specify the required information. The following table shows the input programs and formats supported at this time by ALTER. This list will grow in the future according to perceived needs and user suggestions.

Program

Formats

Clustal

ALN, FASTA, GDE, MSF, NEXUS, PHYLIP, PIR

MAFFT

ALN, FASTA

TCoffee

ALN, FASTA, MSF, PHYLIP, PIR

 

STEP 2.- upload or paste MSA

 

In order to correctly handle specific issues (i.e., line breaks, carriage returns, etc.) related to the operating system in which the input sequence file was created, the user can specify the source OS.

By clicking the button, a standard input dialog-box is accessible to select the input MSA file.

During file loading, a progress bar is automatically displayed;

 

For testing purposes, we also provide a button to load sample data in. Once the input MSA has been processed, its content is showed in read-only mode.

All the relevant information related to the process of loading and recognizing the input data is automatically categorized (info, error, warning) and displayed in a series of log panels (refer to ALTER log panels section in this document for more information).

 

STEP 3.- select output and convert!

 

In this step the user provides information about both the program and the format desired for the output MSA. The following table shows the input programs and formats currently supported by ALTER. This list will grow in the future according to perceived needs and user suggestions.

Program

Formats

ANY

ALN, FASTA, GDE, MEGA, MSF, NEXUS, PHYLIP, PIR

jModelTest

ALN, FASTA, MSF, NEXUS, PHYLIP, PIR

MrBayes

NEXUS

PAML

NEXUS, PHYLIP

PAUP

MEGA, MSF, NEXUS, PHYLIP, PIR

PhyML

PHYLIP

ProtTest

NEXUS, PHYLIP

RAxML

PHYLIP

TCS

NEXUS, PHYLIP

CodABC

PHYLIP

Additionally, there are some options that control other aspects of the MSA generated. The user can activate/deactivate them in the tab of the panel.

A brief explanation about each option is given in the following table.

Parameter

Description

Lower case

Outputs the sequences using lower case characters.

Match encoding

Uses match characters (character .) to indicate that the same residue is located in the same position of the first sequence. This option is not available for MSF format since it prints gaps as . characters.

Residue numbers

Outputs the sum of the number of residues to that point next to each line of each sequence. This option is only available for ALN format.

Sequential

Outputs the sequences in sequential format. This option is only available for NEXUS and PHYLIP formats.

SEQUENCE COLLAPSING

Importantly, ALTER can collapse sequences to haplotypes (unique sequences) during the conversion among formats. The options controlling this transformation are available in the tab of the panel.

A brief explanation about each option is given in the following table.

Parameter

Description

Collapse sequences to haplotypes

This option enables the haplotype collapse feature. When checked, it activates the rest of the options to handle this process.

Treat gaps as missing data

Indicates if gaps should be treated as missing data or not. If this option is not checked, gaps are treated as a fifth state.

Count missing data as differences

Indicates if missing data should be counted as differences or not. If this option is not checked, missing data is treated as any other kind of residue.

By pressing the button ALTER generates the output MSA file for the specified program and format. All the relevant information related with the process of converting and/or collapsing the source file is automatically categorized (info, error, warning) and displayed by ALTER through a series of log panels (refer to ALTER log panels section in this document for more information).

 

STEP 4.- save converted MSA

 

In order to download the resulting MSA, the user has to specify the target operating system. By clicking the button, a window panel opens offering the user the capability of selecting the download location.

 

ALTER log panels

 

All the information related with the conversion of MSA files is automatically classified by ALTER using three main categories: info, error and warning.

 

Each panel is independent and it has its own buttons for saving () and deleting () the information displayed. Moreover, the left and right panels can be minimized in order to gain space for the error panel.

 

Below, some examples of different program outputs are showed:

 

 

 


 

Links and References

 

[PROGRAMS]

[input]

[1] Clustal: http://www.clustal.org/

[2] MAFFT: http://align.bmr.kyushu-u.ac.jp/mafft/software/

[3] T-Coffee: http://www.tcoffee.org/

 

[output]

[4] jModelTest: http://darwin.uvigo.es/software/jmodeltest.html

[5] MrBayes: http://www.mrbayes.net

[6] PAML: http://abacus.gene.ucl.ac.uk/software/paml.html

[7] PAUP: http://paup.csit.fsu.edu/

[8] PhyML: http://www.atgc-montpellier.fr/phyml/

[9] ProtTest: http://darwin.uvigo.es/software/prottest.html

[10] RAxML: http://icwww.epfl.ch/~stamatak/index-Dateien/Page443.htm

[11] TCS: http://darwin.uvigo.es/software/tcs.html

[12] CodABC: https://code.google.com/p/codabc/

 

 

[FORMATS]

[12] The Phylogenetic Handbook: A Practical Approach to Phylogenetic Analysis and Hypothesis Testing, 2nd Edition. (2009). Philippe Lemey, Marco Salemi and Anne-Mieke Vandamme (Editors). Cambridge University Press. ISBN 978-0-521-87710-7.

 

 

 

ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/000077500000000000000000000000001300536243200246265ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/.directory000066400000000000000000000001411300536243200266270ustar00rootroot00000000000000[Dolphin] AdditionalInfo=3 Timestamp=2010,1,25,18,54,41 ViewMode=1 [Settings] ShowDotFiles=true ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/filelist.xml000077500000000000000000000040431300536243200271670ustar00rootroot00000000000000 ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/header.htm000077500000000000000000000113011300536243200265670ustar00rootroot00000000000000





http://sing.ei.uvigo.es/ALTER

ALTER: ALignment Transformation EnviRonment

2

1

ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image001.png000077500000000000000000002504051300536243200266500ustar00rootroot00000000000000PNG  IHDRrNm\ pHYs   cHRMz%u0`:o_FPIDATx}x[g}::ѳ-GyrimI#l- VH݀B lctm)_FWXi1hG[vPJ)- M$'vDlْ-8Ȳ,۹_ץ+,|st~i@ @ @ X&@ @ r@ @ `#\@ @ @ !W @ @ 8B@ @ 9r@ @ `#\@ @ @ !W @ @ 8B@ @ 9r@ @ `#\@ @ @ X&l#IX4Owk@ײi&fK fk4MCQhhh1ommm Ė@ Қ H"`;p6-@ y<o{x׻;N~j2@ sZ@ ؗ$ޅ.ndU`"2]vz׻ꪫXjUp\l@ 9p-\@ E|ǁ˺ux{ˍ7ȢEaU@ r@P/Ir7|3x ոip8Bo 2tQw);-. EQF !SUU?G>򑘢(.@ *r`r&`0~ <Ȅ2߬@NEj2@ (J2VnN@ *rO3툛j )`o/;::D1~gǵ[O)`o0LޓIxQ~6f1uy abE܂@ iEe׮]|>"@ *wa/jAhnc j?Yp-b)n@i9D"J___.jc)c^?Liw@ @$vittt?ܴiӂsϲ)F} `p^]@]`p ,FeB.W Ђ}Q1ۘ,g 0UV㶁 Ȥ+?+w}'].p:IMM  <}7Q9Uc{-~b1Epw@ "J166S=|0۶mҗ|ݒ$&AyXL^A O1d \A&硋U%/#+Wr6; 6]}P%!EDQ6+wvttA~nQ\d| )6Fy4U4Z7r64b ^}74M)p3/f~н~@<GUUn7E>@ (,˸XD"g>~_|k[mޝl`X5Y=&6Ն`oGGX7˜+N!V7t׺[Ǽ<`[rpQxܿ~=qY\̰+X pPh2.g(;'ܙQ!W Ў.ښmKQ8X 8xņ`;LJzYx'N8p9ǺIUUU"^WD-AX,l6cccDsL?墋.jz7-6jLZ pGGX':gֈjBkTMǜ<xG7 ! t"n[(Ķi*64`| ! +h0k(Q51Ѷ6] cUgnvt'Ʀad8Xr02B׋]vĉ7gsOoBo6KMcxxǃnU tbوD"RI|[nmV/.IjbռJ+JD錊XmY1#1'Qq}_{{X'(eiҌn̍c* 5|a͕Z7/_=Ψk#ˆAg7E& Bf]RX{z *;:;ys(;K_KB1Ͳ4JhHZ J$$4drddT*[J =P-ZD$a|||R~{HwY'֜l*mjqOZi^9ƅMg)UPč˲cXlYuw@oluCeFmDG\Wwtt<$EUiDtp.|>:~4MK ur,ccchb@ FQ4B׺ws,iw?ĭ]y/`WU[h"Kz6_{JYrV4mnxe5QN:.v5'kr268vu{;noo㬬rBgNܐeWlYެ`cOOIo m5݆ RPwpծ@`Y9h֡!Z#ܚztt D"Fg6ghh1E388H"~uv]7$I֚E\7}"VmJ?S oaM\Q8m qgCMw "&fc | [[V7B1aླq !,q6Q6( ywǏt7M~qӻ [`#zFW10-{@ baɒ% 3l5[|7B%qwtv,:eu` WQU-W/ Yi i13EK\.yse>}{?Zo[XRE܈*b8H{75f1tvEJy:6 6insEi%(T`O0hƭ+GT4'ڜǩm0?D{a3qA4x/SZ]*;:;ZQjmtO>|}g0q=0Sj~?ƴӺH)Wl'O\H$ɾ?L* ;J7T/8|ms!%d;g;C}XlתXcOk} eg0 * `1p7ƞ 73ͺ pV0`,l6Itŀ?###X,+%"IRZ̍&wя~[o}Kl\`]RmhLU~rCEr9D!`[) bIV94E힑90}<Čk'Ay-ȞRZz w f<`kg5`7'Z! (QE\M!wxDlيԪd7HΝHs2ua5r: 9y]Y5r`0euY`gp =dbxxEQ w@ L]]Dovڵ .xnTl^bL"l^hXyJ[riDw!\E6WmClpމxy,7E\ ,p(eF{>nj5'^nsE. &#܅~3c*[*YJ?WyѨХ(\1\.BNgZβmDF7dg|R ^|B;gkB/"K B([I J@;::_4>\r98='sKKI+StskW/}t7;Ws8N =jM7Sp粒U| AsI FGGk׿577J}=i)L!bEbD`N Isg/V_#^"6#[2+3{G8q}l{{WkC`>q*`^g3Wq@Ha9B"n٥Kٙ"VPh[| x`/ !3CX jL! rx2EL@b;G}5dJ\yJ:y mbmK֯q tv&@29aDRU>-[$&Dww7jdiWWЇ?(Af|}% xo , lRBIsagC vocMk\]d>Nܱd7\f 1`GG gb@ u 8:~g"V2 ƈU,{kr.E' Wh I!v|D_s6x`TV}+ʦ Hՙ ~3|hW Pgxs} YAikk0224-q?NccP@P"6&zzz&[~afvUĶXq?ݔ FTOZi.I/Fd`sJebn|Ss=M՚9&r6i0EܱtEg]/x+Fi܌cYa!wbdnG\yPǚ".0P"VBu:==]3q >Iw" ,U˵6vulj( }poeB}dg0XhF6y#"¾U4`O.B́p,[O_m۶{[ HGC~nj?DZesr5;+ >8&tWx茺2LM9ֈkylIf(>׻ܨħ$ #!.2\Iq0x7$M{":#7Ӎ{Q_1Li3E,\$3-dۺ[f$f";&vBhޮqYfOKK:gcEX U^tnM==y/@q/,x 1l^kӊQjkEm>{48CTXu+oDrp8---M}W(D4cSUUaʕb  ghhhR^nww7Ї?h7vSsOކCQW X1V34, r=g <x׽k_&4&͍JZ+s(=֙7B3x[_;wRIC`[WWx=͒g4Fk)'bU)5 S2?3׺#w:M *],,iP+1eG7J!ܸ9imm@QOc$RWjkizyW:44 ~_lX@ 1W_}M;?|@\dOĪD5 |,_Lj$#H'#;CĽ#PI\KN;l(IȾo3[Rf9)Ƶy3FdGLrcL\'!SvK1f}}y]YK߷3<+2U\f6^3my]du]]Ӿ  쎅튪?c3ܸ, zoՏ~+Vvk8W:T-Ph?0Nh555"bA f墩P/}W]uՑ%K~J[OT+ĈU+`<^ĪmBUD{¾LGKq r9l|#z&4wJj,8o-Dw̭]yW|鎎\+q9OZ˳{o 3bsϰH~7@`.I3x?]jvQY:W jkIgvw˲{Eӳdɒƚ@Q 㲜n988x8 8UUG|r`444pԩI ?|}3E. ۃzUc~aJƧ;3齣QO FL[-ݤy|dg"w}c N'&q\JTGk6l~7ƕL0;.};8ۺ}\DQxb"bc'q>c }`$\C}" 7CgL,w`kse`cz>0|+S/Ł!"rp8l,!mmeÇU: ĉ❈A \}MXx'.}G?BA%f62ۻZ37h"bCȿ;Wg0>o^kWX;_wo\ Bĝǖ1&m\Yxb$G:fz֮p>q֯B[0 ?iM'# qm-DyW1rih673FN,8Q !#v_ޛ ~k.± ,V鬗myjaBt7`_|"μҥ E]g{uȴզ%u#Y b禥]_D @ϗMOOO8Spwb1 @ JI cئg%|ty[ BLjU | v6 J^g32btg76Ȝ *m@3xUE75uzk r;vζP(v_mmfse6J2aU e9j @sRP aEjk3wo%}wwkv[ f~TIUUUŋBqEIg?~@$L]5p^9Bmm-{,ikkc޽"իx\hOO{ >4a0]R*d7] -AFKi>!nlsEp.1w9殩ߤ9c!l~L.Nf g4Ts f0͜(ri.{,reA8n֡/X3.T ̨Jx+Gg1"nV,]c&Iכ\ʗ-@u}""y&dcǎ)]G~޼CUU<ȹ+6@ Kcc#ǎK'\B!lnQe>}hefX| U6E96@]q`Rgu}X'ܸ @wLԚ,dwsrEN 2}IL)"5FT9sྎ@𤨚rFt.tdvS1MfQ"sUj<^H\܏k$bim-9wUPp'UFv +:0pLKKKynm h~7^-eKټ# 1::*  immdrB/z_/zU+5%3V-_BF36H;+ET3ZZ`)$?P;!Ļw ; Le4rƕLQ3ln^]Rz3cgb`2BȝBA_їD9k1AQռ}q% # 5XejMq}}E Q~Sd.YHԟad/ pNjŋׁsQ(R}]UURItGtSo:Ć /( ˖-7ޘ8ԧ>}޽ NmNĪ)f6PfYUH]3)5ȣ7K+j}1s@_x@Z {Wg0%/嚌r0F#A-.rU@ĉ\i9]( ͦg 1Dm]]ys'Zo'6n)+(xÍ?T_t݉#AccP\Bdˉ'E"aJWX!H;344DMM(@ ̀;oR祗^W/oکEvF]`>:Z#W* A:(b< Cw {uo$W26<-w`8c?XV`G1qm,P-+RaF߅rA1,a6` GS%q"QFr>Qj>1"n\3] /Ƶzz:?;~S&tTanPƝzv70::zȑ#ݦv]YreH"58^* "3@eV\ɫN$hw I5.Υ|wNĪM cz㊹|UĪ-vaj%z)lcgΣ!f!oh\HϘ@Uӑ &@$)Jqltz ;W\>r"о- yh"굹HeL/oьno7C1"ߐk3gי㡐ф{>YwAl8WMMr(.R#L>|b_qW;N?OB!i\餏'OVF f@SSGaddZk?/~|\dc\y(oBVs|3t㢋e,^(Y6FEUV`&&FFF;vmlٲS".j@cGQce@@0c;~P+w,0)-s/!u<3js#Zcs;rG1b8LOcΘDٸ $Q}>SmsE(7f>,J6=Bȝ{6Ѽn˕)}&V۠p>n4lƘ gQ Slc3@\2'~ftG Dm?dD ܸv0hbfɒ%k@wGzӑ %<-77+$p}C[x:sM]&bC4  |R#Z36ݨ޶΢1QWp@s]`\\=--M(TcM1ة&s3np~VbC+ R9D\QV&MⲜ9@S}?#ܸShmm=p,(xs%xfBcr d.Kss(@ GSSǎK˧>M>\|wfwyU@K/uy)8K1bK0WgShȟQW0枼ǟGC~sR 8Wc&r|=IdLHQ$f47{@BfНcD`cc`=nW P\ƭGyiE!חN߉sU{u;8n׌u] v G&-63= "p^ pQ(}uuYLp.*ޔu <.~/7zAjQb`ww~JƭV ntÇY6 z˙<{{6|Ōr&?}֭[GoocjUIaN<ʳM扈J]]V青hFOHrdNgN1.rĉɲLSSӔmL&'$~3GGG9y\2$I9oIe2fZlg@vijjщUMw/˟/PvF]"NjX X9Pu3j@Ӡ ;9D\q}i %gqx?3_[xb~_) &DӸ~`9VB{OK7vwwiUeq4J Eh W[Kڈ.=k~E4zr: `@}=qYޞј1"هg-Eؿ9})I\.7ecN:I1cccchtj_mɸls3ZfeHĺpbkRԄ=^S7`QV( ޢc ]P @Īpƒ|q%3`F+:`ై*omhk8@ }݌p.d<5j1 zO':NYBs=Rt~ zPv/mDh i\3!cpYޞ Dn܇vjwf Or#t^oͺ;ޘDESS$mPޘlg8qf}>F=tcOdjɤwR$IUWWWU-2r*E[290њ 7g nO&YU GG$X,SKg۱9(cc$ɴoOHY,7?YD"g-Aw) dtej $D5Ibj%n3t2zIl\.Nkdh",Y2ӳ~׮]7ܹs .sWo)>=89V{QW0u/hHĪ2ךcPFN3um|׾Q)w_'4=Eq%HI޸fZ]}3Bĝ!B= EN4GhPTp8} E-g̰ٴD) 8@C~Lݸ7bO%Ӎ;]TL&.] @8>̰iI}e^31L&####G9L&`܃J6dn5},snuW3hx<>5ߋ.OH$`:GN9s|\Ll$l6lĜ5`\ӈ& "##:q$q8d 55(N'55585ڦę|_>]ue:0o!L:Z6"oļj \lNw+:A}_Dg4c_6-OKD3ݸ_mްܸ_itȖn{p8vCw(*sl IPU5+^.yPns̃ f/ EQz I!W-1M(= ;ƉZᩮfѢEӺx^"ڶ{_q>'j_\s[wKEj^Y%V>vC<0PKgTĪUx,X[2\luN!0vJirg@)=Vd`np+]S}4^4TG:cLWˀr,_X?0Q}}ó&ffǧWĂn}n\qZ\ ݟYRN>T=athyzgf$!>lhi\>-!3@`L|H (<ʸ,Ԧcp,? k`?ݸ8.F_o?C$tSO:u 9|0W؋_-Fjeefirrv;,3p#'Hc v;IE!a12G3ek,{b؁XZݗeDoӥje۷/}ߩS?z焐U+oSB8|aCewN{}fY6\є܈p.dJrfL&ݷB9pBy٢sbzwb'o_?wD+T֍+̺{ xNl,]nDJrͶ7/2__}C9ȵ K\7r:Dg9i y\K~gA&v&[,l6[:'7?pr<N~UUU?^Ck i{s5kꫯf$]]y㾉<·"fMFtlܳOE.ocb"bOjy>o9,m=4NeŌVPh c'OL2tv;#n7Q* J*p8tQqb>O όUUl6dYօH 72BCV+vWYs+8p@CO|{=BnfB!Tug&V-<_ǣ!6 bKQٸh4%(M>&͂3#ΠD7<, 3Qvy?e@A.E5Y\9Z)Qiy7֊vEUYߟ/OK|k~*-Z@4#n\A2\7xKVdY Lq,Z4[I i2LRU$xx<A㙷`:ܬ)SȪ}||usDNE-yX$XW}V+˖-D\sϝ$?ҙzOXB Ao\V"lf#NV qgkȗ7"ܸ !#:3!~`H 7q~`ecwb~=WUdft7nQd=.#եmܸQNH:dY&5P8A%=fjPń\#V %Xݒp0v3$ ӑL&4--:BnȔwWK3-@a^ỷX,v35I}.֮][&A 1ai7PE߯)bFu:hBn'2>΢zk<-$;N.y)D:#K$TG'psbuի' |sŬwҵA+M͕U댺p "rkkW 6ĖFSBh횶D7@?\M!IZ{D_f턉r53L9t @HMYUKÈ()ƀ[nAs+F|Mܸ(_l,^x,p`3SXC!+ :ts9/$29=g­T 2x$9+IFX,v,P!׊>ncZuA}xx tGn8rpQ%Z`\ ,I& r㡵u~+VsϑLN̡U1;VځR+ x!%df>2ܸ"Vm-[{Ze wnSWx8<} -:!rtޚ˜ ,4'ÑWT6'7 [-Z`pa"4릨@ݻїKj1|D^d2=v\GSB}5000e}!Yj״8qc NjU,N(uN.D"1)V ;,hx6>>>Cdxx^|druvIwT\Mcw6бc 64DcRQZ[[9xppԩs|aY Scռ6_kj b {>I^X5qEڙbĖBb|`{7"b}A7%"F@_3sk͓/E Z5-fгPr]óz7{wE(}hiD[qYth^k|8}ωM?I,N FOhVUǥi4:::V#dK.){29^zSŦ+͇$vXR+^m|kV@{z|3(#YnV<ɔ͌H$6J7})PqVO򖫀Tc|7MroBnz/6_ET=aO}\b:A=Vp?&bu*`WV"{ J?Aٸw@ȈxXlyU@6_`3QㅁrK`?C gb k賯>MlB^vVpf5:L=ٺFnǐe6;@<㮭1"l/}R=w>uQ R[[b(H43cرcV=5777{jFCCCC'YP{BLܨ1_\'PiT 0(s2kc"V vO}%I!]7Ήqp8'Vc9GFYKY/ڊ5@N$Pƨ`$BB۴  8v}^˥KvMwԩ?br:ζtPtc!?{¾_c:ǪƋ/ѣG+I*[tBgc!?IjbJpgf(?J?#yJ0cM/pj>ؕCZ*lԸ= ]P<[(bYu( K.e۶mՆGEJT*iȲqk\'rX,L8,Ei' y"w5%IB4Si=`]c$•KHn^w%Y?pby*zg*z`˨>65id[WWWЇ>tk-m|(}:q\u:W_]w֛X-JalT Zt)q嗣?o~7x#}l+W\t:x]]i㉕+?uT$M'G21׬O̔(HdF˻el|X͆fcp2F |/O{6>Nm(TQ!7tYLLD>ƒIcV2ee8hI㴞Ku8vBt2G.Wp\)X4 ˕v6440001Y N$XZזB 44PWW|eڵ\'|)k}4籐?32bՊo3i .3ү+wF]f~PۃWbV{l0(2&͂3U@ud^c+W6}ૢ\Ag{]vYf.LR={Mv[{_~yDrireL-S=ҳ[DN|BӴR)YoѣGf\tllbq'O1"fE+Xg*v֮];c$IR]]wɒ%.omopKKZGth i -555UXl7n6.rIQl3Yj%_nɁkkYhQrlXMuu5c1)T*zgh4hkp8f䂶Ԝ\♲^آED/?(%3d+l6N'XbB5 DtZ,9L2f _.  ?6F,6jb"2 ]sm{ӛ޴ȧrCb Fj76MlBtZ>0љ`v 7pEjڃ+F}cN֣k.ylhc&N%N <۠pž\X"[ڃ.GQF`c{0s˷s *@GG[(7f9CKKL_{[o~.pdd>-*6w"L:YSōWW$I 8B)𓢁]Q5CR4^aQU8І?2dH29ٶ]FS{ ^r@E|\o+ޞ^鷣ᘛmW=7+~ol'VOnZHcWD3.6ۼc3@{|&-W88v}|Jߧpy^Ѕ<8.y`zXE+zt|x<ַ4mY*E4:L8 娞l1|mmmef=o{м?\ lWTM==tSSy'|QUg|:un=}d}N/AvBxITlh(2V̓-g @~Y iS.bf:r+Dm6pH$R5NgE],W̛(l6n&t:ϒ3ڑ.w,zhk].~?'*>*=+}[v-هߗ^z%BJeWo|@287q7qjgbgfShNKTk 8|<0ɼ[l`WVȈU1$-ⶹW'M,nI,q<]P$0X\ybʴrxׯ'АPgg&6~I E*+j47V!rݗ3Y[,?{]w}+w՚:~LJE%_*I^JR;$mPQ|>\.ׯ/fL~Eզ1:sA9Qv͑#GPT+;6J@EwC9vX,dtn,2Čr 2 R~ʵς=~?b]UU2V7xUլJ$Rr{LJ@E2ѕCf=sՌΊ TtV^. ?O8_q%smez VFgswCϕv៙&GUd*[67*Nfw\\f8.wtFF,6W{:sNXe:IP7z<~=Z}euTW[K墩7e{si!73V!G^r u(XfXfDyRr80)$(dvyM=z(R]FqeҥKs.Uϯ?;=c=!HJ6v{W+Uzv;^ѱF-E9?Du8P" (=&[G$I,_|J믿ͰtW!vL>Vev6}ƕ`ěe,20/D,~PU茺흭톓S~JynBMξ'6ۼ1($QFvrCyq"̀`08|={QӴ|t^e2WfڵR廤69L!MQh{XTt@ ` o, K[ZZ*$z{Og2cDH}{T*g/GjreXdI .kSw2ϠDb@8s429z(?H&E܌n,FGGFFbE4=m>piT8b7?edy-UUL]8Lcc㔦Oy0Ռ V19H$e}~EEXMTsXq8ekpe:X#rR GqX,iq:2>NM^]̵OEAQ}Ɋj^<_q8477WDmE֭{a8XDJnmQuXȟfreQ+GX[~-*H~ Om(H{Ak I Y$DMMdr<p|`pr4mll6Gx Yxq'@^EHihV А$ EæpH7=G{aV=J?}tC?슲XrHhp0&KFww7NۅWƕIverTpA?F|`{7ffu'6ۼț1ʓωk +BʀrOzC}橧 oiޫʯ~']BlQ-Y@__^r !9Š+NsBV!G. cKUmNd4(^u: 26F]J266VLJ"j%224T1!׊´366VҶλ}\.³fpV=rd?S8׶5Jm(1#wx>jժl!nM?^(7+w˙}?DA$9ĹtF]ZZ~drBMd}JfVbQդgjHDJqnmoI?ψUYgm$v1sU+Wx>$3Fj|5GW5Bwdp-\\՜ 2b_rbI$,Ygl6b"OG}';QSe6>444JYQbժUdYFd䂞Q:V[(O~ 4< S]]]2UUTPȕ/[vA솆>f9Lg)[O#7$IGev3\]=k4p\D+[Bo"74W'|q<%OfJ1Gۈ*6o4≸*d1Ds< L>'S|1)Vd۶m<ۀ>L#ʬYիHT$IneiXP5-cTJER5%WwJ_FFU |{[\.d}in1>74JiĢ1${SF@-/:58ț'x J3v=\([;;6OHRil|L;PU?"r_Jje+WDM&ao.kC#_ƞGY~>ŷ P87 57/s8oygot~}%nsrD| B-IHؼy$V`UW]? h~]#R /rՍk <]ܥdݎ(l7o|өS+E=}CP- ۆ0ȭsh '"2xGrPIl6'7og8^j/dPhxM N_@xXfM#z_\Ug)ͫ/VwUW(ʐ$I* ؽ{7}}}(ʎ΂;e/֬YCuueŊnjj=vXѣcdI}1P $bK:vlBnp 22B$4PMx6Csv3ZAek[bXPE=qbBnfXId&P=Td  ccQU5N'){jvpD9 HT<Mrعs}{\7}egS.师է_l޼lACB,)S3KC $4HaZd!I`@*%\^O1VF$6[5=] IHj"oe$uR?wxe5> LwX7 徆7y?KX .x(ÇNKdTJEUSX,XX1b/{'NF {2K.ȴͪ}>{Z[uCt *Up:c4#o\č[]./w%?sгw6Z8s{W}#nQ "زe9+U4l6;vX__Z"-{o/^֭[+>M!40{7՚o_׿ߢ+Vls\V;vz=qG\.z{{nx/_fY -Xbqy9QEQ---uuuu5oF4O344S7m)eV`0ȝ+{&-k=ކ /d Y,,It׬$!Y &#Bt.%kH)~ccH学[_p*r 2c`Ѽc\ؠ׵cbH4$Ibdd|wJBDݍ=᥯7,UK=qd^CKρj1b6fM&47/=9DUM066]]>[zuM[~7oO//=2[,Nqro:;UnjaZz0Rݮ)*SC4l۶͓L&oIRBKK _|1^W^y諯\vqi&,KEc ѩs,f\744G"XM6= O?tXOUU;Ogv1w^J,ݐ}ۢh6555zd|?~-%Cp=VӟG zsUxO|ICu;4 /Q-FW><5V!Ҹ_o}_x/Ӊ39FFFF X;C#wiLjأ0k{._լ,Y?wa&ڠf"pX̱`oaxA\$I& i)"#ùtiȖ͗+ʧᡝ,ޮ9]{ŷ=v\N[?twwUm,tM|s`5w,ZֺQ. rse]H$^4R__֭[Yxqڅ_&J~` c'(,[ /b\Y=rHvYk4M{mӦMq6sT*UP4,48xIUgߝ#]Z֜3_CedY*Hed:~{q+I}bd4A[{|o$䅢jB-;}{.4Mi\.۶mo~3/3 <7Ă\df%nذxfgT$Ü8q;-[HRw7mm۶yΦz)-[""ݻFrOEIEw$E=ֳT{4Ō(sb@w{ŋ媧i%K\aÆv8EZzVSYfe$q&C=#W=>=rJ(!?ZoCς/LuV& l1[)]m( G<"\@W?T*UX^\c,:t=\y(g W. _uuuTWW+aw:"Y^e٭/Ԑe}d+Hl[ /..eqX1o)faw}TUФkfpG|Ed5ܲE Y@6$HufNd^xQu,zm~K-*yzh .%I`ʕl۶ IH$1<^}U4Mx`ӦMoPOMJDNO?htZGSee˖ԈWX,&Q ~FFFh fMW"VW/嫧l˻>q|u85kj4`]MVXA0śGx pQLU ޜ K;Yj^wbP[[+E.K &{MjD%\2/}d2rljjj8V_ϩ^+k.m=z@4ގE Ϭ.*x%A6]קOrJfx<$ UGG#RӉԩSqk.}j~ߑJO3FV` Лr?PemoKbǏŋ/4}xӱY?kL՝,hV IOP&Vȝ'`m/*iHhh53fɵl456^aC_W"!W__~ٜpZO]?Բ7tҜ-/O%]]zM2y׳|rRG.Yr5mW|9.p%lX,-\xr_㰢$ȾZ9?-bM(TrClz^z^ Sj4䫫is=zV=CR$3F- ZfFn*]]MT,2F DZ3DSSSQr8ᜬ]Xə)P}> qVaPUq:eytóKyU{˪*F6n+b;,V+IPń\8x_~dK"=&S $$0tb}F.fcժUkg}vƍ_s؍7H*"Ll }SDGC~z ˹8 郖!hLr wFF_|n)M8mMcժUOc7UUULF0eWcW\qSKpii)´._nʯe#CCa~1rqsu+|d+? Ԍ,lñj##SORZ*oyg b"@ްhD79[bq6!F=cXi0qz,)Ɠk_WEg۽Zzʴ"~?Pˣ>U^wjsE(Jţ!?V-[sr?Cf:q|BnilܸO4Mp| I<i$IlXUR8L75kҝ^4$DёD"1vmZ1χ!Xyٸq#k׮M k׮~cǎK,zԌN1i^zF].hQA9 v;Agk+v m6Qd=%K|j߿qquss;%IRWݞPE=.x|jEUC.]jYNgv;ǃfbqHN4jW[[Эlٲe%i6Rd]+V,lǎr5M?Nss̾Vfkx<9ypل\ ݕ9zS˗<)9Mz./`C3/O(x4H,Ƣ }'zޱ-alll n7Yp/}yc1UD"n>!*yG`35z&ʮcRv;( v}A8rAϊr6?V=}I;|K Uk=)9TuD&;-GL9"vqP2XS|K"D-g?AMoo SWx  sW\q=JYȉ/赌 9s R1=#2W..]'$H&dM*?ϾKӴ1RrYW#2y7O5fIyP~ x,Bq)T',ILrͱ&R'ⴶ4\-B?Nn࿀`Kc!txʕ@cǎ1簲G{s6B,W(^xх,/'>[MozGRԷyҥ_yHs4.я^m-j4::9-sMrА+tС*p%IfX67$nxKKK|ҥE]c1|6.v7Wu/0܌+h7VE_{KiGovR$$Iqj,ar#ʬ]/T $M5ǧtc61'IZzHihHC$Cӌ͒o#WYT]M<k655tuwwO;[wnzY ?{ s,9~0؃> gx4ԤZ1ӨĹ3kZ_Q-ȬO=o}~xi]ـ,{b q{ _M 6\>?`FL4ƨr{\ta,Y-J/}:xe{:vo#r\QCJ&xYd W'r+%\T@:s'>(a{/lڴEL&'\-O_z)F2c9ٌjÆ XbR{y^R 3D\o3Fٿ˹ ZZZBF˹A>ߤzsC.v=] x".V"BSS_~$IT*eͼVZOZ(ɚ<pr dR=cIiIӴ?jF\1\~W_}sbŊ/ޢi3sᱫJ{饗NFtEk!K~{$I"ۍk)X(eumjjr?~\SU5}@ٽ{mfSBn555XIֈxS)Fc.)+8ƽ!V*'wHdb%>̟c2e!dpX,D3 qz1[,/_Ns]݂qv0bBi\PsHc,nZHx`=ifcz ӠNK #R[ ORZ$tלM,]]ݸb,rRT*fk\rd7T9ĕCׯn ܾnҹgwR56b!CUe#ЏyyKxeufQ@7N1F_d .dc: 4ibhd$[c'Q--4H%ICi,5|l,ae?ӛDɛl~Ψ+-+?P[Эk68[wιX,2IUN a9[?%\4Miҥ^mFMM tnp8o?pWX,Mr>4łtQ:~l6_~y5#{o+_ʋ?E{G={<-x<IN&lذ|8qK w:|#᪫2N, wwߤzqDd{B娧}p~Cf|>n7o}[OY,$PMH3w=%UUU5X]]=+ҌUpl&.IkٖÑ> r88z:7{7Ȳ<'Vzߢi[WXdI/Wv;{ZZOS%K}uz^]59Kq/B&rR$nˊXNUUUNG8L4-{O;bvQ}>8 z+D⋱74x⊌3y[|yGlSloo>-[0>>Ŭd?B\Nn?1[A7Fq{ w1Mqkkv9{6ƍ~]_Jqi˗_GMpV _| }`˖-| _H/˼$p 7ԄjرcČrK~k.l[ y睗vq۷/wwO?n2|z{{|_~Wcٿ)\X 9K9444۷ Op( p8??AA:QIQ{SL9x,Od!f>FRT@4n-Y]mm[Z|o+ȪcM7t~Ms믿xz=S͛R)R+N8̉'X,9zxxZZf8̀aZ鸛.siil֯_t8J__uroASSSɵe|zE4nN65]nb:'Ęx($em=4H"Au>am)[ )"L r8>L UeN'ɚ"##ekWi[̸ c Z--[ZXR[ҥK)|$WN/|)H(~Y)cqEιҭ-СCꪫ2H@ Z*xf_f3vF9g1fTUaF]A2޲v- b;8X2t@.u`n9v`y z )@urrܲW4E!Dab dV$J$` A ׇ+F^IZz5UVu= psq `vR41?@7\w-^ziSO>@ %.td;uM:P-hB} 9G ,I΃pIaZϢ6A.8<}O?؁ᑶQu(.5,lf` пfbHuڳ^wu݅q;w0N |D#\p{7mtM^@侾[ Loy ל;? bVچߚm'Ɛ$Ȳ 4|넽BqX*b_r瘦b =;;?߻wȓ+@n$D>u||z+B*x /Ѓ as /}uȭ޺ull \s Q,Q,!Iy~QuAΜ :sA]⥗^?իWcxx(J(Jpĝi$(6r@6&~XuxN*`xS\̷ㄮb8140$vF6m .<O} X>9\{x ˙yrlق۶mC*B2L~dž p# y '''Q*`&o6ݟ# LT*!Hq-<'Nn EQJ$.{^vmpWx0cJ)>w~w099I矿駟>!))[~O.b].TZ~̈́"+ ZEr]8rs;G:|CA|.iץߏ#Vann0t.9;ṷ]&#[*ѣ]mq:X өԊ<٩FvNYݫ m1R(0ϐd  dBXȯY5kL&166LF f2oч~vr`q i/Qv`+9@=a(Q IrT׼̳=޽WgpK ,nL*Vtp0<?yrrl.P(BXX8}.(,pHt3MPCZTy?SO͟))f$ 96~'Ϸn#s=);gUp#zAH3׿^w_:nuC7Ck׮UK%^#&zOm;&`n9Cfϯ05nޒLn;1UVaE'{cw8 }PsH$Ї>0|xkx֯__|F,7NιkzemP$NKn\˲LR8J 0_.w4(#Giڢy\(+@> F1'4orueإA3sʺ_,[1@(|potqL 306lqrp7ox^RU=J3SbSvyDB3 i\B)$JGCEס*+ww.?{E5@P}1K1\RD! m $XU̲pPmB$pXRpy_W_xbykS8qmgo GozU7ȏ'c_sHU5331.k`04 AMAh# lbGF>GCJv*G5C=ܖۿE$_ ߄gKrOcժո+pO 4vnڼ9}O8vk^\^w/{ދ[o### x{ka]vq^xCCCH0Mp⦛n֭[!IXc^>|> Խy@0 B8$I(X l޼;v$Iu@ otM򗿌|u1m۶=y|? /D; R *^`.K&Q:Z|,eAӴb`$hYvHSM\,'v :Legt@nE9&'?;mL2yƀZv9‘_́=/T*X~=FGGJӺu(JUG{7n'7-}́,N*5KBJA%Kリ 94D0o;qkg?c{w޽P(e9iz/ү՛RԝaBMȊ1X LN97,X(%ݞ9(*,[6N| o,+,pgzEC|>Ŀ>pfh0E']m#7|3t]G"H_o-5}6%,aoJ`&t!os6ʅYR?4VaphB+9Yܿ)2,暪1߰:P`ƽ{K 'd98W ]eY( g>koy[(싚x_1?8U75\x`^&0 @9|, 3 y;PT!.FG,{>l )@5mF`+6Iψ8!3{/2N<|bU?7;+3f?@a1 ;+;GYZ/ ^5xPeBP,KM7޸#pMoq'%Ҧ-7]ηݜ~7MhB@@Hl;doT$ȲRpaq13fVx衇28 ٯ #ȓ7n:!佖i]400[n*Rxň1=#xvo{t]{5gtyp3WCC_x_mW򕯽o-~}'|_IŪ/UmO诪e`Dc،X,ᑉ',nᜳ?ozWu3$Kp(I%*A2 XusZ̲ܾ_CRto6o؁z3!Fڼ͓O>ɟzz3Lޔ/Gm݆\.O|s? ^>4!2nf|w܁7Xnr4$I@ SO=UUA}$ jOI0<< MӠǎc o۫*{!7'ᮻg?Y| _s}=Je}i׮];|ICSSijIcvvY95kּq|\_Wᡇ:4RT$ pYIܻg'*i"011RB`Cf7=lT R nvQ,18jHZ*\afKf,vU]q?H4}o4E.:! HvpMNb?7>>/l޼i=ŁJE׿-|SvQ Vwx+H(yeY$QLJyPY%_ilݶ [7oP*! Z/Qb_(`)~eYlxDl>;kܚ!D:X\.دN~01N kΘ&=0Y"2#_ןP$Z*e^JDq,62!H@G}ѿ T8#B&_vϵxunWA{qiZW>igQ^=zؾ@`(5(@@ix#I@(\7(`Yę(@ '}}n$JoD"d2cGLفjؗ#HRSpr~|>_ ݸi9rUѓ"}yz{֭[|?a{[Hʼ`AQonZ rx]1Z /tzUY1<<@ %CBaP8q* cڵ^O?HpQe|/>(.(H]z/]DOL=}/l݊\>9}?2 "%ԴQ{K2 2\yŗ*bV@3rӓfmi&YV{B+(![g9\}.ET0 ]W`_@R/9t[Z<쳸{q\G@ pr mb `3JÇo>9{3vojAw( wW\qZ:84 T R J_BTUE,7 VfcF_5 z0-Φ5 C;u]kxއ~G%I?&))[XjN^wWZu,)5 a˖-x饗}ܷoߒ\>C;#ySMeYu588WH)J!a{prF.L&;Oԭ{عe ӄa+Vu,BP. ]G\F<DǑGN8߄\./ j( AQUT \ v*=(Ui2 v*b/OLNN8 #|0&ؾ}+b 088il.Qp I2y2ƪ rʒ~wB7L߯~ ;߉#8쳽8~žNO<gzzwy'oB:$PUaB(^x9NWP9"]m۪}P@.[tW=.G ۑkfC ׮LA.`r }y^7D 'Ov R,`.vahlC](u4On<V(,%_|qUAŽCxKwQ,166Gt,`NM!N)%^! 'oÙy G,q.甍.|BeڍNG k r5'Be `f:v@?ѣÚ5kJPsP *(Kp0PJP*P,DFA.,)!?J)3pKeE  14P,p lٺۯr—3yU:8oR$۷(ҙ uoĆaH p,`d|Nq+cG#G BR;$^r%~o m i# M '[%) !7xFǏė\~0@3TpadDz,HJR4qĉY)YׇP(Qqwcht`B+A7poĥ^17 ?88sgs``l6ϧrq]6Gy睷UK+T*94Vufԁٸ*wh r|_A9';x<r9)޳A l99՜ahW@811B୆8ӵnݺzbh(1D"aqmo}+,nH I2TU`są 9p]w;g؁B|6p (%eHg3x}c{q<5h j( f &3aY=N_IA8$*Jq_A܍9LAI? >fP0  `$?}=K8!SY]S X8!mN,mR"H_C8m 'ҪUBe}T*/+{ 4\ ~gX{ GP2w;EtF ThٲZ.S}[ߊ~K5ks=oߺuֽ{xz~4iPYuR8"+d2T*yo݋7-Idk9rQRo~n]A.`W:pL5KŀqNɎl?|uǑ͂&JRǖb1d:.8@hWp'(u *2jT ,EP@zBln-gDž044,/VK. O'a0u4`,˂Ŝ=4oBe$)#50H8#G0A>c hX 4H0M n0tT*Z4Mp_Դ J"vD_cP. x< (4 @,FT_?Ի匮Ӆ0e8]irL@h!r%}ND>o~?f 88׾IqᅻPT`&b8dYiu ZE iY&8c~t$ ea`p7mU ''*j I! E4V4!Qd2G_ TR.*#U9.x #.BA( ,xxx@<./ӊF;E\W>7o333u@{g%IQ8rpȢ7ЅϧsۿS[4\.L.AVUT \@@inBaIۅp.xE6G'rFcnJ+cʯPڎH$( !ۥ 33]u9֮][r}raBVd%0_ tC0 t݀evJ;waXa#u6főɓ04 i8 !pRPI$ɠUQD**ʕ2EU쥦;aRѠ( (*Y$GwH E↜s% qpq ̲@ H $}4H,TRqoY יS4CmGڈ/-vQ[np-_ ԔR/\w.mmVs}=LbrrDpT*P*?H#gRa@׿G>i$Ɇ?Bvڅ_0m۶ksgoœR277t@ וMSõϷr*V{B)CX4nفgf0eV420"Ǒqq E)ʌ!M[*8;팮=+:{rhkiJ%pvvs|>YV9*r0L}>|;e^UVP@AaLÀ8Zq C<ǖq}z]BeA&$Sg e4 Dqo`lAc(xuRh-([XڌY,EQ"CO'6#R Lp8TU`7&\8I(`.q?j&Hn͟6mD@ kpr 'wGB4 VZUWl Fy7ZԜ٬F@AeR) JU]S 7 @TX &Ծ>peᮻsK.w/DSSijF/Z*M&qΩǵQa#G`ͧBʑ#ܰix<  鰓HT3v8"$EKU`;.9t?LBPnl0P,y<~ TP( WJׯ{.#&Ae*\*#՗aޟ'0-<,qV0 162a=| 00uw$ R CCC8sQP*!IЛ S( f1HYQ'P BRn-,g9+EM1U< KDJb|(wSbĚ5kN}#>$YRGU>`&c0-a$YD\;剖t}D9mD@ Nn>U'Kons=^<ꪫc Dh 6 rsIP(H$p8\t6_wZk 4.ꪫ›fkѪU088ix֭[c{͋xxxV<E9Wizp8Sn,0M 뒔ekzE#2f>mWsu"282|7R' u DgjN(mvyr8h v a-6g տ. ;wWHRguc͚5!PB07;*H8տE jkb1! (JDISX,brj `j0`:4 ,sg`N@bC;{ߣ(LBPD,ET,IT o6feZaR#m@hޝ*儀bVeڵM]xх'4$(6,[ N-T/{H: o# ?~=pr '2.C۶m[gYֹ*9܁fggq9T-n0?Xh*4X[l}O<G4E0`6fT*UvR`BjCCC3<;o.X?xBx鮁sKЃ *;5K[tt&p<\g4P*&|:8q?pǔux(ti?z>WRׯ# \.B0fgfu6H 3Ԁt> x`Ma: ӄi$'7'OBu Y0 I$I,+@ @,( .YW*uR d<ER`@n/|Ӊ֖Gpas&?-l&C ) !OJ$hL+kE]64@(qjţAN]s!H_*K8-:}E^~}3`YVUѽι:VZ!s."<x_p@ccc7n8tiOOފ'tDUըŎSQ"7~7:$~pG. 73675nA_~-D3+O: SǑH$@XL@S;D"ѵ-0x-fJ3:CC0`}4%8ΜF3MW{\.! >$ cffe""CPUDRapL=P N_`X("^t.r]bR| Ɲwށ @U`diR,@Ω:,'PB!@|O6ECM[;k6Q.'k4a]_xjPҠ,>8s}s"'mGڈ/%ɽ'K5 ``( T^j:6Z>_[;X1P.Q*P*`w 5+R:@,`&ϗJ%X8so} W\qEåی1_;"""X,ynnVP(4@)M޸>uj%)I+>h w/&7oxCKVdY?wh6w@9bn}pf)a@USަ t=lnqH$AXDK@- HF~tu͇F!r LB8|zVA("4MC (v\ϙi0 :>4@8{Nnr'_>00๛9&&&p7Vv7Ӹf{pΡi4{0 eȲ\j*Lp1m?H@UULNNlxxؿo5"""7]_5UWn%}Vgs{"}e0  uѱXr sTH$@S)i"EJ(P(00ǑBa\ō*u? ]9$ưj*4 s>w_%I1mxRJS)2(zz9?92o{iۑ\ `Ǐcrr֭$Ő @b |~sTD*́''r%XLǁ٩D'V,lr׶ w33M]ޏ.[^ 8> #bG"MDQ۱sCP0pQ( jAQK?܁v$A\ɓHv^w177#`& Ec&) Ą|j$pQ]  ?T*LY8glP?sub,d(o# Tpr 'R.DJR` (طoW$,V-`BmJb\~GRik,6 Q(L&qK.A3nÅ[lwUC*6OOތ'tJY$U\BtmG.UU @.0`jܱ6lz]UUD"]<;l6Tj(v!''1s0NɕPFwsF9Xl6`0ؑZWL/H`jvt@jx$ LvGhUoFFFj@nWLG0$ "VcxQ,188|:۸rZ2,fOtEu$JAA%˲@*Q`#_(!(F`׼?3'?<4&'AmXz }18se^\H䦄jȝb7ܩN|@v'( L|UB~ `}Ou3b:Ӷ[Y̫h#/R_-Kur tmߨ2M333r[-lo;09ٳǛo [uƹQKr\]t/#NCQeعs'xݞ$IC8 @x333H&u( ѨpX@ISSijI)R: qM$m~~-&2\A#7X p`ׁ[qzn^ei͚58묳 Z: r@V lqr>cݲ7n?&'oq7g4 ^@P~R (P(`C_Y~KK{4::ݻw@n Y`(YD"Q-R_W_}5VYp4b>rH&P.UȊQl69H"b`h(2B0ARH$p8IɤTo\zpf{?^7R.!  y ܈΋;Wٜ~ιkuݺu)Z(iڢ.CE,q;>M;t'lm@J-?0}vP>wz:8"PkzR e5t/U"CBС攍}ۦr;yUkە* x)j0rB+ lWn>o7H`r7{wvIa PQ,P./ЗL_"@yEU%O IZ$E8YQ0=3 !@\ >H@@u&bCuX "L&F\뢋}8z(,R Zԙm hxӅ%WCM.p s{/D6"KU ^[6z굜sVsḿ9M65,ӪZ mki4q5ix! zfl0o.T*(H&;]=gC]<׉s't&i 0@NwqX@.46ۏ@0ȶҖ8]4d 4o ][/x*{R)CU, @:=4BD2(P(H$UnX9i0  yy%IB<P$,#Bhx}& dYuTI(KeYH3c1kQr) }9$ 9Ao"s@rK],kZ(d!iUWȆ.ՔB_@B 'pr/-@nb eܺ7.T_\ѲV;~p0E8Pmt^Jƒ`0XtqӕeY0 *?}UVmo{[ I I3R dYOgoƓRn:>סtuy`ܠ*|FHr׿XSw/#Nc~~5 ]<S~/2 JixRu *\ւ+tp[IGٵ׎D" ǎu7+8Qp@n~zz˫Z؎\Wg33?(aދD"^P#[.@tB!2&'y&XaWv_#Q 8d `@%H0M,Ӟ, ɍJdB vD* Eӆ 3MXBRA6q{0<^K!C"ds. iHgG<?αH«}rg/J e#9Fz/R_-X[vDu,W9\NWUlšZ@:l/ (ϻ  Buir`0X܁{#ЬNa˲]0>>Gbݺuu14y\SSij7I 0PƵQ.E*N,"I.֮T(}Ny#]٩y\4k:ݾZ+Ʈrisإ` !ϣm V2}5!VZU)y*r{Lr< ݮ-0n;oTZ(I% Jl!ۭ/ D9CA !DcQ %TIA(a-`rR]Ӑ@%fj 툳.d::;[}3o+zEuꫯG?v́TqI{߀'d5Т6"X3N^=cAeYQmSK577 6T9kl K U(m,Mres\`FXuB!hO-p"BHTSSijg㩶 "?a~~-G.DQ*Z䥢hA֯* ssZ>L&qrdNEg 882/xs׹;iO@z^p,6ω6[mD@'pr ۭyBb5jyKnfyn5.T,>^r}  ar, P0j!6h6!oRHgPT## avprP ;='Q8x\Q>_e"OM xjA! ܷ؅v- XgTwļP0LlAu-JL䎛pD.V(./nP+Gk# *pr 'ݑt[3Ldy+lk6X xF7˲g3*7hv.t8U>ܜ}ppXvmR,t[SSij7⩴koŵNrGʲ (+rEÐ`V*xin]u @ `M$Iಌi"ګ7>LÀiUNsqà,mH&n2)qH$PAajw]4Hfqj \w]L?΁x?c96[$j/%aEZ8cHg20M.@cdSvo HD'D@J($HDA/onp K MJd۔E`ZL˄(K,t Ǚ3Pflbpg]@jhRBm瓷 B62r&5]CPNp |f6\!1o*q w@qP9cܩĽ%پ۷ L/ v9'D49?U `Cr'I+ᕪY+j# ߕpr 'Q]6[ikA{^k]gUmCwٮ αE`at]n qr9>,&jaH$|>P(V>t&))ٳ4[&[qmd2V2+=X2hrm؀4-r|*0K͡X,z)xrIg)ܒX:8r kLM!֝d2 yx&!p0Q@j&́r# Z,bX=huo=y՛F7ը`aC@4M y+ fY  P0H5/5I5Ԗ${38`ZtM^QT7Y=g@ td.RM5`:y p.ʻD%K;휇U!~ Q7PKhm#;okM`h#+FT_-vz{vR Af`jځ 4o]=`b>ɕ eM,B:zjD"0ƐfNN1;;L&IUU=a}Y/W:ksᅪs~G!dNSSij79/Iĵ'Z#,v"2LjM, 7_WCCCIT y u eؾ}pNNd2 etylr9= 0P*:0D"0>CIcfM$AdsXNۨu#߅ Xp7۶# 8׎<x(kYujpUUa&* >HXS 6!BTszb^ 4ݰMQ5˲P(9lY!NE*syT5®焀c!O.%l7\u\^{kks뺎l>{/?Ծا9!C8s.|QxPS|~N6DY6"21$ܭ&V[N\9,0:: J)4MC`46 *7>==]dlk @Uժ%J?0MsEeo /{t_T*$ `dphps5DϹA4sl"""OX͊V\ !P c=[ne( ;S$R /ƍQr ' H~fg{Fa"<\(B(v g_\ի;3 EmLi0lNN&ES-##5<‘+ɧv͹`HGp2:oD"h\4MȒ0a& ]D ,˿jVNqz}0}d2+Ubp %:.x; ]B)A\V~x zs~>əHA`9^rٶjh#F) 5333900Pp[177*HXva*.u.dk$Us{{^UU*bwn22" LӄB0D8$IU8 ]~$I^ޖDdkLu92P*pc{!9z8Z,d_@6%Nn'Ohff1~kj@awj־G*@6[[ħPXfP(( P}M,"""7X !"<\EQ@TYF%j ]1q0]/11Gy||]8/"8a-W0'Oڅ,ta楊Rx<(c 'H-@BŰ;7c0gf׷APl||5`fo+܋M :~,yr C i89J(K^0z|Z"G.e1áNwM`2R'iL13% AF 1|UuRJ|:{s~*& mxP'v!7]Tg b_@J8kڛpr {zs>.R(صCάD;Fnv36X %<痻gzUv?0X k;,"4MǏg=x2Ǝ,v5MsBE\{' u.w*uժR+vܣ眃eu}ߢx Zy9UXb( ^Z`'#נyW%b_f;V*Lb t&Gd2u-xZ4.G .Vb?hyr;(;G}>u7tUj9 D0D\FPp&5*`A $X'' YA:A8F<󺁫4ecnnqq2^ej5E#9Y64cx8+KrOxs߿{N1`OΓ"H_-@n9#Gx@YitaB"<~xP;`\FPUjԓ%^j/|{9r Ú9ܟ 1~.))ٛuŎQAZGq;~lRKWώD"mEư[90T*771BaT߬bX~=ڵ+z;^aW]\uyjYV]L6mڄۇP(0+>jxm g 8cP{E%mX5 RsϩT! #0LDT=ᜃ&tMGE099 1D܁8q &v^4{[u% 9 Ju*6niWcӏ1pha+.%r 3op\T*up xcP,Dk# \ 'pr ћBƾ/ٳ_|qPA3K|F`AUUDQ;T1M1Ȳh4 EQ IbE* ml oxxxf\AGyv iXon/d]6>8,|s #i ki}veg';׍yI!k׋ 0I ,nRgo4J7]ӊ7RF)( ^{G!a0tA:k6X'N&24vw]ߟX{ MyjI6rcrQl,<] P> Jjgp Ǟ72p_WzIrh?% _Sk! kE6"˖pr 'T.{9ZM47c;~CfykC``BbS]`_h.<  zWeB;ˁ .uݻX'DgE;XB :"?~E pxE\vi8/xe1Ȳl6t:~hZaB& W  =WxeqH4 g6!xY( p\Ca2 HO_[8r]h!ÇcڵKr[l^sH r/`0BboّVUO*,\[/cnn{?yOO'Ssl/pMkZipp䚆׾g`E\B6u G>|@bd8c(裒b`AR$iBz)^< ݅Bf2h2x<Ds]L˄eu|~ai:3fUs@ah]qɃt Z 9r&e\.qX]JՓe5i 8h@sr솮ρsVq*rDzԵ!(;RHhaσ1Y Jj g+6ҫmD@OE-vR|p8%B{c=/9ځ ~ &,Hh48% # "yb=f2KX j.bf˶x |Er8JDY[-x!8`1˲ xN\q@np_@J8[NT*}4sr~a\z饐eiY~ڊhlKd2 ܜ^nAFРs]jV@anÓO>'Nw'kYֻ`x5M5M[ME\O_\!e]u'V;Wz:qn7$9p緊86P.B> ` Ӏ$Kf0 q1}kg:@?b'NN\b v%sb;j rwpnS /T].c:JJݛcgh#=FNn'Wr3cQC.,u-],?cm/R6$FNFVZUM_T`ᩧǫv;xuLiڷUU=iF,;Gns:r] 0L6U9zkM򯶳F5>7O]Ocڵ&!e"U4j8|j0D+1!y}swh -ے\.rB^_?0nDpNA#q yTF(]g鹰{}SIPR@-I{ {d{T*r9B?8`(쫐^ +H_-@n7Hn;1#*d2< F U}  =Dh\5.0 O=jwOJE@Wl0ׇLS>N wPj0F΄6"˕pr 'R\@ hO>)uYBu_FpL- ,[ŧUF`T_ib߾}xk_3|XӴ/xxx\9r֭úu/'Gc+sflu5똘P,.goœsaR\1f,˯yE\;WƘaKvi# RQ t:ZAMq ESu3$pV칥9rG|ae0LY ڰ];]`v"˃ %bh4k1>geY^Κ/&K7P[&uN JǑR .u/Q~@JA✇; bLf;ˬFmۈ/W-䮀 ]\Q[@ك{bxxׯPM\;V`4Ce~.9>|Ǐo굟}OOϞ4c{e=]?^14凜^CY%zq[2KfqFjח^AM!wq*O~iE\wyFjA. >|kl[,`~ni2-0C7cgTn=$ ''(2֯_]A0yr c`{)NԲ]¶3l&L&Ƹrs:*@x,:g0o_} D(F zEe|`焣P,ʹYII `zpYcsr`a3mi# \ 'pr b0p$Io%eW`Qx8?,^V3Ǝ3ƾN*Iҫ .+1VbNL"}َ,cxyr&U=`}|Ul9K9ż(TW\t{H+&5{wmy M~?}2me; S<>:T mC0lB,yK%@8.7;w0@(P*J=%T5ك~ S w E)A>E>seؽdvU.gͭ"(tMn萨dV]_=kh;X[)Bcv.ov ,P0p99*}ی6rf_[8]aY?$ ~ pLqq@4E2D*B*B",K¶1_̵Y<0??y>_,;J"""=_0`p[}i'l"G?צop˜sMěu& k4اBR2lk$AQ}PE_(>yd(3~t{ :gW@m<ǏcӦM r䲺DoPl7Lfr-quە8L!0`0AJYC8˫1θ vbt[?y/Jỳ !=;-e:g}]sfXRIT*O~PdX܂eZdXtNҒ3!H_-@iEnF2n&UBB p8H$X,h4P(P(@ P(6p0,;Y((( (~JU]ןxqΟp?c}X=Ǖ89$$I:s/Z)ޖ9d)Gn2ą^=l{vX9]l_9r}]epr aY^f1w0˂")d33tB#՟BPWYrEig78.P"Ng R3,9YRF`YB:$7?{U.IIXLf²,pFʊw[f8 6r&_[8=:j|:J9o$\ a%bbƋEeY(UYA) x,Ji]HXUD]׫0 4: X0!OpogW6)))⹲!cOqΟu< zD9˲~! ǡ2ެozǕp[1lp\!!!! ׿XNp&Cz~o[`,o&6A3 Fp lX0-qb6jq(%h.Kxȉ碳a_=Ͻ<.,;WwByHr+3% wBv4|[sC0B0qa;*Z1mD@+Nnr{Hc_ι lPJ/_`+L!O0aW<`/>;`?#Xc|&ۦPq%ytG!^ +@[ ?oq -6_hZȕKT`$r'p*TwqUgB38_@H8[cx1ep!C=m~!8E ˲OAs}kh#g\q&Kpr 'gd8Yr-p_RSr 2Z,bKI `qA#sq9;;Y I ^qF:甿G;i9G(Tʰ3f=eY( B*93o)i>V2!B!ܩ?FΨ6"˕pr 'i0HHHHUBEUHHHHH*giH'$$$$$$$$$$$$$$$$$$$ WHHHHHHHHHHHHHHHHHHH%@PKq GPK\!!!!!!!!!!!!!!!!!!!BBBBBBBBBBBBBBBBBBBB=.rz\ q +$$$$$$$$$$$$$$$$$$$ WHHHHHHHHHHHHHHHHHHH%@PK\!!!!!!!!!!!!!!!!!!!BBBBBBBBBBBBBBBmdW`P"0d# @t#0&c"0^h<4 @$%sx$ğV] BN B!B!rP%B!B!B.!B!B!8 !By=7@ *g@NcB#B!$mB{HLOޒM!O~Ocg|8 yq56Lۻ2m6MОf̪GBTȾb [3dGށ79ܾZ^2ss5!BkB!B{tE\`lGgKޏŨn&5--ֶ!d*Ʉ|'.,lPe6C!C!BUvv]?@lwg9&oʇJ^>k~'c1A`0;9jg|Wp$UB!B.! )*ŷزYoIJB.!BʿhB L#T⚋bJy*%q=P !j("$t/܂u$hp;ulg]B!DQvvv -[)\2`6 9]+.٥m z !B0r !čq3TZb}B?GU y̪[5mhg3sB"s 014kWX !BK+BFg;{+{OIs!݄~zq7ÁlX[y< %M3ȌP_lm?1ZS40wfˆte!r0#BAxv kmE?@鵈ш~˝𡌵qb5hǩh`kȖ+TY@%} { 3՞fþTΪ;YT8GbH!%v@)Aɒ?F;Ar^{U7TK'D#"}J;NG^#ey\ŲX}@C/t=x C;I;B!g\Bio@O`DFq?Vfa^Go~KQF 0LS>-iIs!4FFyKxm:gWBB!B2q[hb ?Rƕf߼uH-}Qn?.MAqV}zhw!{>+q9\UeyO 7ہuoT6Ze-紣{$tB!䬠KyZvm,>2X]LVh^ Ez_/OL]4X M2Tņ/>(ޘm3\NiMl]>tEkTw$;JkO(*k@1B9 (B5 'ww}E"xYmH;%b1c mNW@=׺ϸ2[[*(13X$^py˵B!{B!ޑ*[jB8ںdcDb{K$*/T{8?ٸ#F7YG4;۞,WhU oCZ3|ֲkB9(B-J'toKo#{c?NdCdXx5vKTwgf1+kv9!r& Sg PC<)Y)i-' 9mll TKx8tM6lΩDa[y!KߦwUA/8 jrlاϞ8<䘱ZǞ׎q !B.!ݡT! TbF7nBeFh{O.wف9Ds.-̆3)}޵@>;7}YOS6n-RܡF[ |;фDD#$Tۨǧ1 Ǖ]&Fu=4v8]q̧Mヒ#z>pG>E6HTov9t>5cO mx'UIcW[5Co/sգdleBs̹jm;we?M_I'XGXd_@!!=~m |~@jQ"ASmV4sK1.36ڷB"*&sF`˕>Ę-6p >ِD@'1Y+7bAQqˉsMhHll,9ޞkN<ȵrQFU0|Bn6.bqLٶ;gw-H׵u4Ta*k!B\BEiJ |E%l묡M7s*1E,C0R!ig WR^gd`8Q; {$>ΕMY(݉ϳ7 zW}zX?OvM]y^8يn~0ZJd/qY+[oYj,k/WM_;/#^6"U[;+OCVDl?~>]~Y6zoƄ|_|uy/>rqlq}~HP|WfGzn\! ;pZE0)=I)OevQ"ڴ6^Yol;%@PNnv]ڼe;m(6|.^n[o.dݯ l ŦZ;kq{)Deޡ"Up_{=Z?_iG9Ÿ}.;i,K[42e. zx0~>&FH&^t M~/#|A+5kYd͟;Η9lPCB!\r !I[l%EYxcpSN8TA +LmK4՗-tnbu+! ,M>9Tw1Sow%~~;A"[ccP@hn1nᚩ /s-xխMbN>%IcrUBĘY瑊PK ]|k>KXۊ6a&A/ܭO;ieGu=砍o·Ӊ9?Qc1$ktTug- ]g-9_|SyGB9(B.g+#Ly?#l8C7>Ń 2,N)bA7ڶ\c"T?l?vAX{H)fd?2WWe_@!B.!" ml{pc쟡5/{ă D6 KkN K{_c+ γoʾĜ+sZ{se#۞1O< 3QK)7;T9ΡC7fsߺέ{0&+c=>12cbeɠ [҇hgZ˟1R"B!& \*JgfJZY{ ٸ%dЩ\/P %*G@!8$9|_0  na9A{s)C޲-$6vV %%oOy}Y8W—6m Bf to/)wf 5;-xn{~9=~@fz֟ 3rmЄqWŽ5_{[-R-0_ ;=ᇩR 2r3(@W}1Fj]*l}?ڔ*c̗k}K(&BA!rtjZ|Y =c| c+(/"h91ΩD_ >U}2!JQ"cղop>5 m;.=3/;W?k/T|>GVmmYaZ]*ƣFWdgzƙݦݺr;H{K^C/5+֜%~7r|h ̷-@srq3FmnĈѭ;kc7k$(6}ԷXcn3}>RĝǼ#}tkFR]OkkJiڷ?y{"n6ֲՅ'q9/+) .~ !rP%\$v=ZX܍1@|k zfbD_+v @ 41@W\)zy> h'W"ݱfߡoΠ}}(7ٖ}rY$cm*ֳo{`p|O;v&wl+Tflei&6_{Fnvu>.>Mï9"}jW¢:Y)"u!7*߾r-u'`1p4q_(=13ߋ=m~cgIkYᘳ]'5?<ƥA!3B.!Rd G&gZj0\V!A n@/ 8(ۿt067 wV{e@>ޮ}b=ۭp~_.mPX=LJw$h><)}};rOsk-);N T/[ܯjF9Ǿ}0]LЭA[Nܗ]ж6e)쾾Cuqd±mch_myPػ`O芢 hOU 0G@ Gc w[MĕZc[{e˞V\+=e ]ą_ѷ9F=?{+4ed#g.e'ڟ;=*wf}}R9'l&[`*ߋ"T|bc>V{OVHup{w?΀Yz[²k*E }~bV켯䋙c__(Թხs\};"~9О5ƮY,@!\r !t|v?wh}AaV fՃnmw[?LE9=:_YǀplvbMwmD\y*s߭ z/D[*cvc HO2tkTċDElϞ>_~1w7=IWy~EιbmOlEsIf2}i٢[gҞشvl;Ma|#ڮg~G]8 z|ϯy{-*ݸ ǝyD֘(z9H}_Xkړ-f7b-E\B!zyy!Ѿz68F~ۏ:^xPU^pfnsY!l4lJnFT|cc= q:۞k!o\ܣ]7G%Ngm(0/[zQ׳?J?0AAL7د&tm[ _@cg ɝg3N횣#L !zҷ6h67m}&e݈vl9Yr\Df}C"}1ƘB9(B.\]"v6\+/Zզ @ wKOpn6p34#C{LR 'r~z` eмv.($hJ;]1aCxocmhC#9bӘq =݋;Wo47h.Vfkͦsqj_Ƞ?8g/LƄBy@!rQ*B T*i094*fW/UW^!1Uơ2%Φm̵KrȾYyZn֜9| M^f! 4~)l*+ob%B{1!!rP%\֤vuuI Q^C!eݞ*u[V'FfBSA+`g^C L&zTaLH!r !5]5Ю{%y%BoeR4z\g7!B¿hB99"Eq ڵD t־Zoi.B!BȹB!BN]L}ebK<\B!s4! D%hn _\h ߷8zɄB!r:< jh]J%ܝ{vfB!B rh K09v4qC[%B!B.! ڂ]ٸ 1G;wAB!B% ~Q Юٸq}!B!r !4KzYh.Q%YK0B!r!P%Ӡ~/BB\c't|v"!B!\K!=-PNt >B!rA\ ˙Ԯƭ)AV آws*B!LB.!&rJ Q.Em᜿ !B!\B!B!B9qX#B!B!BN B!B!rP%B!B!B.!B!B!8r !B!B!ġK!B!B!'\B!B!B9q(B!B!BȉC!B!B!BNЈ)mIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image002.png000077500000000000000000000627701300536243200266570ustar00rootroot00000000000000PNG  IHDR_BpsRGB pHYs+tEXtSoftwareMicrosoft Office5qexIDATx^]`T֞ɦC轃AE{kay,Ϯر=#BBzdK%$W{33|sΙƤ$%,f 4Kϕͮ9f 4KY$&&PLΝ;6mR_P"[)SG}T|En.?)m E?.Uu:ڄ]EE駟tׯwn c-^z\F{6R:$> V_#2|;"qĭl`XH|z^4p`0b'0êbÇs{?s=̆& Mܲ%|¡CO{'|G+Vtk;f Z{%p>cډGuHNnZYRU_]e~5aWefZوZ٨z`{-Qv35D}?>'.N #<33]^ ?`#())ȯ<gTXRsK+MPm=آ \U*iȣi;Z&df6W %MT2j'ͽCII&޿9e{M'&} {WUUgnxfۅ5 `K||Dnx֭?OD/D/A[s0ҫz0:"7ܮ].SsVtxbgTwY$c||>+įVv+6/*olnsZ9cvYT~^Ͳ6~-b-ձz[ortNݩ6]lΩS G9+|'6$4.?;z74+&2%9'N TW*, C^ᓶo IlyH|} -&Z՘X&kNεq%%Z[u#ZڵX% +.pt*ޮr3ݸլm]( D(tܘFԞ5!T;w}ǿI_Hxd*-O&NJ*bS‚ SګDNR6i|O)2I%Opf>Y=ߛP1nvBvcF '8j /6u91?36kTrSfiƚ[br[ZHLL,)i!7,tΝ OO pbٳ}}5"-[®ܿ'N"">Ql4}f^d"%AYY"f,am(T)q;5} qq8tmN/W0ltKJ*EY'230Yq2$kIzgNFDDxE͟?QFF&{Xʶx{7gt4`zWD_0$kʬMk傹?*Qr1\b۔ Zʆޗ UH*s Z8ooWSѯJ`"D. k S/*aщ |_f;EzS+w3Zft2bNjDg*Mu;Tkyĸm;fW.8q238eiHr|J11=粃?6j+۴~Z3g3>42DttX/*= UgZ,-u/LIƙn"~^DgRb~~Ɇ"]LTT36Q?,֯\#lF7=gǧ hWUXĖ ułw?kF׏Ǿ0Å$  QsCAwYX+"j^N(@ ]Un7)qlB_ns,uZ:yF7[rfƧs_?{hVJ[:j 19FgaE'N7%[WGz.o5*u?5fڗOUM_ܮݔ[G 5Dm7PϜ㳡*i€ ,+Jwn]ԯ_*Kuw / Zj kp||uꐕRLhᡡɥY{<-Z9wwgϞ}\ok~APqIxV꛽>/S3wem:ws~x1UR&?4J_ht*/L4y knBlVi1xgڶ4rwL>K_ZvԤМ:jE?̦ ircsh}X܎'4}kZ~֭_MUySJߠtx1'Nj[R"EEe62F,_ E=-71FDDwڷɮm}|!!s4A'Of2V|A+v-0l׼{9>F|j!Gggl;uhvCkXx;t"99y#k>6q%>ӯYm߿,*|Or>{BBmou i*{Kt,#EE@`}R ,yTF}d11kbb[&DwU~  ͯ <Ɉ>"(gsX@M>giidVVV8 EHQ%p Qtt8rȣ;vX_ NzMS cGwT))0(Y2!3>N}Ȣ*3T 1'-`}%wSbWrX8ΕۇO$>~2`\u"s/1°uVyg9T^īmR ^JWy}jujLƲ5"?boȑl 1..h^^'Q㳵pt\74~]Rp[Ŗ.4iɏ?RB㮐Ǿ axĔLbhWSǎUn)!{quu2 U197++ VFå94NTPPRRaÆ'Wklxc;G +OLi ֯)/]|%?tW\p)I³†%uG=.rKA;IwKy Wz>+T-r\ҌX,X8wu{U v=ީ.]sV y]?F,ƮP4S32j|}tQ'UN&=4>lZKAibvc^z `{d?hlv66r\7=["# GGm2%$bC 5lǧ@@. 9mР j]ZZ?Z1rG׀ą ?~- IθE'b˯4S1iZdⰘ\tI}oY9ߧ|NkW?.Jd׈O#6-<?;VwOK; ⇜۷?:ҤTϥs6zuάE"[K.xl#Va3OD-Zi;LSF (3,7~,WZcT΀f'On6"} t{ _ƵF𮉉ײaÞjjej̙  jv8$d#GЮq0W;zۄZXjp}DDզNa2yi;d&>.TwtUņ t9"& Z< ´nǭ2 p/Sd~PV˲R)`U*ೌg "d0e2I'm\͝&,hwQpETr$+;]GQ (iFN&,?8~zI3)Su>{OK_%+ȿ6ԇ9<%醘X;I8Ye޼}o--o)\;Bx]V+ f`gҢEOӨ]ؙ SbsDĘY[C:`wukG&;;<Ӏ4 u:bSL5J.VZ݁^{6\VV~[<22D8 rBKJ'@UcH="'QA{- l"?_>|Xx7{NW_DPFǎB=ZoFӉ IyjX*J5B`2Qv ڶm;hg6(o[rmHVW9U&ݷl܉_;~HkhmЯ׫oei̶ƴಢjC3boKն&,~VQ+W?.9C,;EzI-ڻ+KfȽk}UaҋἃȽ{왓Ӄ@W Z%ء)e6c#:ԉuls4XH-|Сdg`ԡw;ѓp]5izlnW.p / 0dV{Wm.ݐaW9:ߖ/ W.;}b1dSGq[%LϽm\XQX%X␂QzS,- n8kOSI7qo(('bP]Z,E,Wmd΄zl ̀']rImB]|mq!SS 9 Ѫa(_W 7{{3}X5Y1rwDt,/l6fI:YP J]'wɀ2!buՉwGN³VourI{}q'd |bB3uX,b(:g(G w[ r멍f31}H,+#)ӯ$0'Nڔej ;FہN 58HFVc`JR׾uVkGy\x#}]5*DÀ>Eߣ 8틃Lk;|Pvv11M2 8vaNoHvUګaرo/U y*K/۰V83ntѓ'Ó! FP.WC`+UՃW^7|vPU:ʣ/r[>X!+CZ\m(ggۻH32a6qLWA6&WhhC( 0ٵȑZ]3QFC /7loN ]OyYS>|8 c al1F/.hx۾}{ϗ^zϝw޹qHh3 RR9kDAؐ==)bڸoh?^g˪67ࠒCJ ر4 }HgduF(ޟ0B>>nz,}k;| Ԁ>-:{]6 o}"߃3[3$aO}7)w#15Ot]л:ƌ-3Rxri72ن0H2OpM@f BCѣR2d_l.]Q4ay-6۳1oOrV+di%00$L'a ѠgBqd[\|{999β2=ٯ4`lOOw15Ncc ^ed.;JKLI=>LGA-`E{#?#Ҕ:W:Qɛw9h_T,8)bI-LuC@.iPJȮ > HF>mL۲թg0z'i#RE^Y M&gl?gK8Ah冝Y)Ҕ+CǗ䎭uš w?0[GgQ#G; |4\_.+c~g>k#Ӓ\r5}Z|/n3/=YpsUU"ڶsʦ`⚨u~wu*XJ5ܕzKd s &W8.ΣG8EYb00 j0b?=ӧi8|/[v5Fԭ]ۖ,٩eP2,?_Ā.իF 5x 2nC'Ga?v{dl:j^0;ydo6455K*bEf̺\s _ -! 3' +}hzF݋8$[uASӹix&BnEFJT9|re! -aLVdGDN-mly8Y)ዕ+j{e_&gftd9M,yYTWx/I`n$P pnpne3EV7~NH:U={ͦ;[9h\Y%eЎ{\]QQF%l"sl^"#ѝ7oc.oGJ1жS;8&Rr-HZh_qYH݌u 7D9_+w^:(çV.x :7[׮Zc~6/wP,Po d{KЩw_XWzsl@XAD0P|9[n+VA FpIaTn kr޳vѨ s(%zP&k֬)©\UރP>%x3xTr:m_u - 9s,q*4#n>c҅"_y6I8ڌ>裱{8d:f^q71yʕU g7,TGM΂tClӣ[~˗/L;p|瞯puU`z-!! ޚ۶U;x#1 (ȁX- ˗뱔L5ڧqXJw+$.Ϡ+J/v s1\P|0TOzzq~}LL @㛆7t0X[|_,:t/[l`O?xe^ >YIFkf6tAa~37sa , ;.G|z2$gmu1vF<}܌3x'zsl]0;km$ s< E&p+9xW12O&L MRv̷Ϭ/<T݀ Ʈ*/@қ]%=<<^x^]2BTl؅[,PULhؠ @JvJrz%$dw7:/ktak>_"=5﫳a_kE ;_SMrB&*l7%B@x/- N",oo/[Bx'@Y59g0ګNA 7R*d!>-| E'tpyM Mq$K|>  6\7 ؿ?f2kٰ6q۱,tŒ: N0 AoRgyhAСgO14;[? ÀX'*'¥ud?%`-p;gSg'rO? & ^ X-o] R LS'jAYQ9qyTqE,swx TtJH\{8Q8rR%:C]62&ӷFx\ve?^į4ɩ @k ;IPgnX&}iц_E^FeϽ4mE _S@ϗ2xh]a|7mt-:*CYY9m=k;pt:ڶi7§CcU`|qٲYC jx嗻de\t+eIL!v<űnf+#RĘ ۄKJQm4P=2---}59`)ҸO:f` +#|km'bWE[[YԹS8LfJLLc܋IdνGP6:LPk8+☫DWo689,Uu7>D+pYoEx{CO5s I 믿5"a^ ]i0>iJO`;xصE0Kx H&:;?opУy@8t⢋.애 u8(Ґ ذ~/P E]r/p *1Xl/0$Pf= osYj'liyRg;4"nw͉k7 yR~1T.z#$1b^M*''l+7b‚{ ͛wH"ڎ"h ^4~iL!+Eŝ-SuSƝt|ks?R5;@$hy]>3}&NQV2s:A{s,<|/\m1x`V4v`2xX)Ymt쒕!G|W^Q~XH Fh{Zod2ڵg k"lo%kbQTZ<[ŋ+VzMʕmrJkMmqIflqCK\y> 苕JЋ^ol1.N/0E.\#Go\rj*tLNaQQ=<zgO *fd:6o>5L-]/:E3JC>%mټ徥Ka1gZ\VVI!g8t 0ZNsp DfJP @cͩs\;. J T(iyLYfgDxN%0;de$ qK ?GfK ,&ܟ$wЃl1 gAօ&2`tT@FhkVb); T"1w/ B|e{/ܹKmZxu?|njHCqQSGkp/bykl 0 ^^E,s~n~:#;SO%طoԄ L/ =ˆAmbWO"oM\ OġĖaBN<>uhC!q+&mA/\s|!w& u7 qɛji1+ 8:9EܟG{!U\9u0p0D:#.ae~1WϐƖw`@T{YLo…AX<={81b4zwcGS b&ȫڃDKhc\(9 /=uۖE ~;'AWVp.X:W3^pwCNP dI!KTޣ#0LTt" `E`|+`(F8x0,؉E_QDL:% 7ô Ɯ6u<J +`)?1O\|Щu0H&ue=90](  Sy;'** ? 0F  Æ  s̗LY.NjdR=euNX/ jVAW-@tL8׃[& \ʻ{<090+HW0u˜SlF`F}x22=QNz^Ե͇mJd).NBa0ݤn(WHn w^# sVᤡOlC}h"tF G\J,]TN~(\->$r]C5@QX/_;qNx+ŗOpe::DRS$R_(ށ]>Xj'"O}'%Tg2OT,{Jq/vEC+y4d6=7p|5gk:p`8V=pm&=)ЇXU-[6K"{DfH Xj><#JZn80uX׉Cٲ`ނUUN6-h罻wV/+j4-.lcu׉CF9 &kAn7o+Wb۹KgFwOOC;F{f|xѢEK6 } Τ&9gEYHtة:,4OI#ׯtlX6#AP"h;vL \v| 7ndd:!V`CFdb'Oc̓ԫ\1 X/u*#dy>٧dXUo|IVYs#r'"ڂy@CDw*eAPX+CKe9YWǺv=6c[FTRo;@uINN DL 0YSw*O0S vqsg39F;<)<; r9ƝkNE`JO,YbAT'&+7ujo'z",5U,wa{>Mq6TUss6^.BPIڊm H2g/Ŷk$QҒr|+f zX1E@ޕf&%4^+V**$ScN $W0~ǪJϊPGWݐ![&h>nO3E9' )U#H3O(lN 3 q{< o:0R+C0Kߨ`] @] `1C9Q(JN^{ !׹RR 4d9ݾ@d]Cbݯ@u5׈lit&,}KB.jTf>~TStl 8mTcf`xL5h LdH9 phx$%W6sd@+ :) +AF>Yz_;*lGd@]Gczmdmꌬ~}֜礖knORo.|kq0ѩsZN{C}ws@uuo.țUN߲OKi)c$NB #&iLF6ЏHN5u{_K Hnh=brJ|ױ#5pqVq4HW2o_DpzMHzIuʕ+q0UjV85l_iU+Wȧ9/ޒ'HTк/;#?`hJL$P::"A(|$65w5g!.)IMPe-+L7M (o]t"mbPj@'d|VMJsS5A!jʺpf];Xv&XGv$G@cDoj@R} H/ rH%&Nqm}|cE0HFO[(Qӂ1#M1 mu|:91mAY[݂<~:9o=]{Y ;Sv&0vyxJ:Q }pG$RWt5{駤ZmN(C~|xqWdgf?*3' XE"[(m7|6"[k½q𝿐Lvˌ*}JJAԜzHQ%|.,i2 N00 1)_6|$KsAQE6Km*,4"x{clB˱1h7ѵҸ墕eh&S'w.ЯJC#۷nχÕJ?+Y5\tqc@ ڐ}ɓQ>wi<k~YOM6ܹ·xUW8jss@beJ+-!G` )9rL"+VdT12rY 0A tL K0cJYN;Q,x?ejU^Ԫ <8xU%.'0RVdd X H~z^Ųh/'.dRCQL34lp0h:%nQS^{MTPN9u _xPb< $_NK2@GISvFIu eH;W[|َ`oȩ y`XH1W9Au,X) ۱Y‡;1cGt{V˲ُYvI.驎 \jХ";!IKUecj >TOT ʡ*%8BxP7qL0ta6E1 ]<VU!;^,Y.l~^[%'M*h;n;`g9.hta\u.NlF)>صgߩe/4 JK׹5d_|5%9A.Ul^-T젊³A9 Lm Ieuw3<|y)@ȥ{'Tt̟8XvYK*<*_)`$(YWʐy[ N>.`HOmw]2,Yʗe'O^gy)769f8< JQWX8>>Ł`-<ׂj - F6wB2$eu atc^jR@0|یu`Ue5n눥i_(d߄ik(|B[eؕ+LpyOíLķםxS<llB0?0hk0X^DX'"Ui2!=tLa1Q( \y3E`tZE.d.7DIK**=X[| 󗡟a,&)» aGY̗z嬬lYTYj⒇\fߛS^Dv\_/UʋdSS &` C8A˔cDNU+HmrdnJ@f wRqyM^)p"^"AY:?VY"%R,.)T,2Ov8^#Ve!a0y7׀a}v`]Ԥ<,ATr^3'wie+tul)c0Օ_YyE+}$Y>~LܝIW!vYYRʱ_d?gE8M5C.-'F4GFشC  = xdNraIWmne[Ъ(`QiwzTl͏/b]'7[a!Dvr^EGԥ?2Tl !}c*ɏfM.a F< x~8kuɀ4 {:` `ʓT~eU|tO8Eǫ=9ȕ :_ør!!&QaYhs-! NJvreB^fb8hrIc+B?&>ȸٖ.9N7$Zt/)dlDacGV :PvB6Z2sx(xb5)>K-T2 'E]$'iZ?Y9P\cZcT>uHޣ&rPl2O< \eGz2@>P=_wxp+ٵbۮlr?eۄɂl(P;Gy 7$R69am9Sz*tNꍾ ""Cf@:;9z8^ TKp.ʝ6QQ#58%"&N١׆{TXu #߉oxna N+CێbVe-B-?=?`ɥ$y5;'Wc''wb%q<(IWqYb$<8ʱ^K)Zٗ0E.&l49aYWylcԾyp^xٮP{}+ $//_N8Ef#Em|kWB4puTZ .eŏ`MpFs/8&.2sv2pN yX_gZj]viЭ4)SbêԲ_#<(02I0ETзul.N=AP-Իi^Lee)f\닙09κEo7'U)"Fb,2H<6(^pād0RVbwۭkUX=a]AQ1\ϺRV<:|b^׊z2oȿzY#q;"I@ G\)}!KTn~ sEOHtu}DK]_%\۰PFO4:̕[Doq :|sPC,k7sA$)KsMT QY^J5bK&U*ʊM8jDFK3oѝHKcdm% g ;bɄa]B$s 䤣o'+Pv]&ҫ+ gϙGWAM KD`#ƦH<Aݓ`y"0xă̞C\;\%:v-jL2fk=qDY|=h\2o0eAfR݀K*tzVGw&(n#ʬֹ$AOu̹7kT]}㛮DB# <+ XܥZ@ e$Ƀ\].ŁW 'HVK@s\eg ْɥZYdR6V,'Z嫶,ֻٳ|5&0|G۠ T0 'gs~'rAMK drF^ `btk`)LQy竼Ɂ< 4 w` ىlm^2<zJ\:{=8-zІ</–H|v1;ט~]uUjN➗+| jNsil_+7\h.w.P -.@T v6`Ҫ  Y3> x}8|]4ZW1|o[d9^CoU3)k+-C S|g͆aF n.0 DS*c MV9Q8b'[%"α  arMԻD>!g, D"'3nCdK/c|(_S7jW%~;8>p˔HIL* WdJNfHJJ"q*$8Iwn8%^AU2RńRJ Hbdԯba|+Sr4\yv8U J♧W1+BPzD~KewّfŽ?G`f ]77eJƺqPPqh*el%B*dm#}_w\+;c23m=`kW^uWXoǓւ/y];Y(;P!z/[Vu0fmyFYJ֔+@R'V!bx"h<uZt=at]я/\)B] JQ,l%%u-^)?=:tdF2IzD&٧ueY_o?.S]A/]\C-϶(`YhK^|]Hw4l|RXR0]uP9W 8F<;R!Uۆz /2&}6a+l'JƆI+5eQ4هg Ɉ8yV)?CI1|9R=`:qY"hꈗq|f8|E Eq*OJ`< n̓WZNw3"[qng ITCd3̝I!:NQ:T0S)OD}FY6 >i>\߈L#ء&H[{D9HJz)Gt+ȷI!ҤWHrzAQM9IIT] FL]&/|Ǡ5~g>F /)@!'72% M>d^+A\@`|i=Mum2y#>x Rl ፷Brф?Y?Y}!|ߙ'O) 㙸m 177s7&w' ww|(0} UxojY#s S!G7qGc~IM"xTUnĤ>@!r_4"̧9I|ؘ +07s;_]ߛ\}21 "_BH8DA/!½-3B`GvrDy uUIcw|$#}7Zw:7UI%2RӀA}7"'wbySZ~;u!nKI}x<⧈.P'q ,RI@ "Uj^0uC={1I=*o hEHX[lv9qe o"R6{ʦX+!6L>33742qmL# 4o~6o6Wtb"-+G3Dbqp@Hd⽈dC݊Ex ".$;%k6RKC%2'g."uD2bM|h"l-UrryEUdݴgy!Xc7֝A NcȐ rd|}'&72Miʼnc$D2MNLB*1nmR߭7"r d!R lXN@\ɐ%''#T8kx3oh62(|`h6j {axNL jM@ "KdTp *PJn%"v@%Pq-"Ft?/$!8![g9Aq"5 D&TNgF8ȺYNT=YK,P43yaߨE0Ш>@?}Sčp;twɶIud\gk`C\N6HG`%q6"!jz2|'3# g jDi쏓HR-/W=4|9Oև@ɇL؅H{ji8ŖxI&tTmP=zx `="'[!r"w]? H`. $1YVbb,|/.W$&ނVcBx@LJu'+V"Y I! d9R^ۅ+5~ɺ>NRH£`iKQH&О1I0؋HAFy\ !v/`G m3xf+K|'s\ j' {nRN-^7NjyRI QHl FF jN2d}(dCUOYF[>'pKHZ;|_J~DN*'l)1m~fRYXb9+a$@&LPfPuDN( #~Vsg ɬO RNcjV|/N9rbd+ S. *K@0<Āw5bu"D_8L'?  (eePO;/>S7PI{0T\P.!./vha[2'ڀ(*lԾPUf@O8q7Ӥ&(2UwmyЎ;}2P`d*=)a*j{6#fm`[J\Z#;(5g|5Qi}Ni6fYm$$A[5HنlnKW99\l: S%,s@3x;u4uIWԡlGlkvn$ 5OOuRƪ?-挚%$f_j4KY5?`1;IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image003.png000077500000000000000000000206301300536243200266450ustar00rootroot00000000000000PNG  IHDR{E4sRGB!RIDATx^] pי~si4o$0`]xcNN8kTʦE+[nd$k6v1l1s_BA [39zfz4=%_(  B Fq˧ B B# h>B BH:O.dWF!@8z%UyrjB FwB &'q1Ԥ>$9_ilT^MrV!@ċb\GYF^^x דI֯WP,zD B "0w&_d/̮\?hv'e+{KzI)vS~B I8bܺ:%qZvan$i:Vg&DQ-[G"jF!pMG_|SՇSl~7g>>:fftU@IUW^>ИA{{zH,+y<}zmGG[___L"_ѫ k&㲁!@gcܮ.ezFXZt2Jbɓ ڮ+Y__]KK Tѝ;;ŗ^b"H,R}] b^EYk23[x>6B & W<^ʱG##ͫ4t͓-gb̸*xC^N1z^7b,,̠q{56Gl6jXYm|x(84w|0sSܳ͝  OS %',}?,6kKIa[X{{@'N* B aD{]@eVo*z|^ѷt7OS9z6Vd̸ȇ;xax>R6n|qͼb1-UXXaHl.pwe+Wӧ]:}TԾ}ʾ}0446*#vb~*'Nݬ6˹s}iM B\fd>x|;X`_ KKkg ‚ov! ;47+3g 4RNnz+s:[ 9FZqFVUn k`!p CټYd0 c¹s֭ H1BCtiethξ}™32o g2qM\ ϗrsϥ%QLM@KIB !/MO0S"CLwE`.ުvLDK0VP_P,aʽ\ӆ&Egfe pНN0z) !@8A#\:9bƉ;??mAUj;'Gz5v E4vZpmzz:Gw@1+c2unkcpˈh&{8zzd54`EжmbHe\-pvP~ *]Μ`.J@#aիңpmw ms:/#% >ыIVP}b )P+YDupg`ڱÂAc#۾]\A$+z @`gp{Qf?Y$YYPkEBf!4|{K߹.<~&3.bSXEpnw-33@^~Y\0W^;YX4gkp v8XNXhu6u*D6\} T-7^`pfHvL¦M*|gv- ˲YfUTTte fvAQc7c%Y@ַ ]s3P{s8UCWݫ?#ץK)O\ϖs0`̙SLIKK#MYN!0~H۾Ꮋ1gNև3.|ֳgEL.\v9X|L/caoCӨEԑ#Bn|گ{NEE̖oӓ z=8۾ 4V ;vpW^Ν%O9FT:sާ? z+bYRQ1FbLER@ExgVp'hfv!e;+.槞blD1'{ .-GZ-.cysJkvmӧOP$)+,!B YY x엷q]3> xh8hJqG\>3ZP>1//D ~pw~#󟃍:.\C]CaMJ˂_Q("Tu6䓜|J0@|S :- 0gP2cUBik0 _pvAVBP#Q8|exO54pfՎCd_:|}}b.֛"a jl Ǻds;/}KOV#A爵A ldT!@w*kn [b5`\ֶbX,c+|\t.sA1;fYZ<y7K M&fs vS,_-dP#d^n\ZeC6UiiAi.)xpp`hhHQpk=* $Y9ZP)WƇy /57_7tw[P2ly^ g< ː`!vG{8v\]yyn9H9uB p96g k])b\<5`xl E96Ym@.V]FPK+*,)朏a-Hr) Qu!>nXÕW߆۬=JCg#R _ x91LYY{0E ]U biZzzz4M1\Xk 3XV{~,K?r=( /}dz6=]./  3;BjjZ m]^ C sȱf~ҟ A B F 9mienw-d)V#8m3XNn\nngv%mzSұd TV&͚5., `̡jF9?_n gvsxB Î}U0D2)ʫ++E}xq ACr86 :B0%ْ N$bPgg#ՇPW(ֺp7g ZZJ) Xeӛ,IRRR_b !ԡz B B@ci6+X.'“qh$qaDy9^pabY/|AHK(.>D 4dlش6+H75ZEEE$9%eJA(ry]TPfI 9z(LGf7[c.Vc5qYx!]8;ApE͘Xd |6tNN_qlpC_yy"AG(93QY.*jތ ꩨ}(+Y(AjE%%v<1b` ZJ:)1!@>I)KaSŸ=n5tޡٹϜ“.xdы\0;f  `2jccsoGy a<9YN2Z`DPJW#P_Q8R# rZ\Ym?( S8nCFD!HZ0yd F^eG< .~{RF漼t0"T_T&Q0_]@ ;J1U?63L`R0LFxBB B'?,=Z4nR ,f29 ;vLs;FzBwX_xQ/q^䮾UX~,!/O+Ia^#)"ypD$x; ypR_OC`a;6jc[ۮAc]iyd9&-x+b&eeBL>$ ^MR<#`ʜkEEkխԠL6v#n!y;t'@%Z .8ǐ# D 02tUc3(1JEu}#~2 H:(o&$Ʊ,lYܪrR[ WzYЪ"+aWk T3-@HFv)֭ZZ]MzzNf,ABE4oA0kZc5ne@a5Un\~0#Cro\dMR6fܺKP~ZW{m5[Zmk?,c5qBߧϵ7Q0swky:MژVWaG_a.%_{ giUq4R#ikg GkhmXꚚ8o"w?m\TLj]V@N 6ъ*(E<֐q9.|za-GomE+؊E#'Cѐt! +Ed0,V?`H:#{=T`rE~q%Ϲ|k9wBbCc [}Bb&rIGKڎnYsw$ܷY0fF~髑 >/_T 35}_) Q˱%ep1|_c"=o*2d?ί5щFo|IƼ{-(qQV.ڸ;A&ZSAٲ1['cA &4f72TJOF6'r RGlY&^ᢡN6FHDpyU[xbn~IJb~^؊E4j 8XM{.^d+˞Q`Y೹jx ?h6NjsP_m,6 W)&n3Z_v վ~?2c7#\>|Ep]VS&p}dN\|z4mH@!lWjmYLLW-ZsDK^_RMX3nHdr BD9>…rndPWx 6Јp.y7xQHJs5Z[Y4o{YH;39h[H ^5fCՄPx.N[thH/ͅ$x`y*||lkɽUDżQ#7U+'~AWEPU.dh6ExPqxV!E_60vi-щ9FJ󸺋K!`yka>GHZ_' e@e\BH9@ Qn$ꍒO8En492.5HK{ "0ߢ-עj!j&. &)S&'JP l4Y,`Cv(< e?u|ߠ*{:H83RXRU!,#=s#>㸤e>[ˣ 'AU‘NRQ1Xwkn!b3@'u qF(1xɆ+5Fp=Sse*JFKI qōu٣L^ČO0 .%3s%!y#$aXl./?2^Ae6lo^Bg-oӇ8LauBkQS]F(%箱Oy20=[?+cq צF&4fOd->brw 8}ܾ?kx.TWcV D=uuÊ,Ժ| 8ۂᡸMswȕbxr$֭ 8AΏҐQ}M8^)uȯ55F?M6pH}ZNŭpF|ݑ[Q?<]S7p9i SJbFv)cpWV*ԩY~:a>G0oN\lc@)&<fw=_og?ՌG}7 ;z~B97|]Ɯ U̿%bӄ.C"#7[$\4IÛl`VvyTo=Dn_Ux8Fa19wyPofc 'nppe_`nH2X.J_jg뵨?pW>"r[epr֨ 3b곘V16Q %&~ve*ȭ*wڭfLX7Г9ze´ x{sYi:3"V2#DTAj2 )nD^yT^\O-zsTbVUU#1EKh#sp1_cd1'yͫ2ϠqËR!@!@n B0G B BO.1, B GTı!@y}&QIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image004.jpg000077500000000000000000000153141300536243200266450ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;>6" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?GIIE @R1j~fT,B!fUcHQֹڮ\K}(hA ])SK+~$hugoG~fTPj} dlWo7?°񦚷7vKH 𖹪Z^{((vW?jns.oz^My5>uǐfۥN $.f^}]n KĢ'fk?c[64x4Q:fEF_[KYB.1mA^'Sv1}osBI3ج#82-VJDd,F8>Ka:??3~c+v^6 Ia]cZ7ӷa5r?3~c*j++ȇ?3~c(;ߘ .D?goG~fTQp!;ߘ >7?¦~fQv15\,~7?𩨢dCv1}oME "?3~c*j(YogoSQEȇ?3~c(;ߘ .D?goG~fTQp!;ߘ >7?¦~fQv15\,~7?𩨢dCv1}oME "?3~c*j(YogoSQEȇ?3~c(;ߘ .D?goG~fTQp!;ߘ >7?¦~fQv15\,~7?𩨢dCv1}oME "?3~c*j(YogoSQEȇ?3~c(;ߘ .D?goG~fTQp!;ߘ >7?¡R&pb!01rICr|$VG4v,AK4m#8R0[QD_q_EK-lPl/BAPǰcY!3j[$(],Fq$ZW& 8O mҌytkZ}q 2F瞼7;OE#a,e8> ufg*BN|v &y~V9rG99O> sa#=fu!QC}𮇙byu3ŬeapNr}I* W Dg,zz 3u嬗E E*a9*vݎly~\Q\lB팆qn?? ֳ<(5 vrkѴPVb#mkfg+ziJA('ԖY$Y71w?Oʈ)!zr? b^,L iNIcՏoT9? 3uRe'bj*r? T9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?ET9? 3uX.MECC}7_܇?E Uiy{۸cۄT=i~ r"V.nWUTR[oӑҊɛ-[B]kopܴJ쎊|zU?u?V?n#Dw ֟rz"kS K'D4 A# 1=Z5 Y&+]ڇj8'eGewʶ"HV|1_ SSְؖ]M]=ۀ9^i6ۭ[X!s2O6M+hhovԊ2A *5˸-WOYbo> *Yԭtm.Ȉ|r*<7G;y稡+^+hz}}c6xq4rM?#`dިme1ݢ p1w=h5c]0 l ;Slan90;wۊn{oeJInHR9'݆#$/@}M eEy w6ok1%\[;T$r9+i?offXc9_~)IZ; k:70\ dW!58FHw@Go0VCz>j{{JҢccR5;EJ![Ӭ)q#OAߊXR\iᝮyfAجG n7ƿAZKO+np30M 7[v;+{[bn&8d {TZ$7߬('XT"9<$s5MPON}wT>K-S qT1^g{O+펾ZĵOFHmj_.~`zۥ T?z6w}9=xkh/my|GGPIk\<*)gUa zK{ۭ3g_#RX,Fl`늧kWP7qg5 ehR\u ڄiw w]߃R2"70` *Q]ZL?ʒ} N~:uėrAl҈Sry\̗5}qiZZ*Hn H>c֛UӵD8IHWg0,t:[U䜪=WG[[& [ 3eQa\S늉l5[nuO4ɰ# p3Ҭéꗗ|ZyݤH2 8ԑҸluWMlW1]'d9W#@ RE׶rY% 1+'!8zյk܀Z*LGSm7v '8l.գf9l90K鎸ڻMeȗۦRYZEqۃ隞Cvyнg:1Ǹ=KUlX/+Ov0d\ĬlcOOы|øKgkZomv.oR1'hO` cI݋Ǝ2Wjm.ڸP6A8b'hO`-m#$APok>ú~q<+ϐf߀NH\U]~?-`Ogkt$a3ҝxG?tu?*n.ƌ]~bEDLU\ d+xm ddFA'ڳ|߇?LW*o%B4( ">џ\JJ{h-"[A1Q L]~?,;{x$H$TQވcX1 ޔ]~?, qm094)Z61 N8❋|߇?EQmn.> MonǦzhXDT|#>6.ƌ]~ۭ`7|Ud_54=5d;V.ƌ]~0 Yۛ+ca|x2 m#1ipMJ|߇?@\mo-p+}7>Ԙ?1w44%y<H5F3?#ݭ\]~?i+ZHԤJ߇?F.ƳW&Oы|ù5.ƌ]~ QP'hO`5.ƌ]~ QP'hO`5.ƌ]~ QP'hO`5.ƌ]~ |}WQN'Ge,}р0(ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image005.png000077500000000000000000000014021300536243200266430ustar00rootroot00000000000000PNG  IHDR]`D0sRGBIDATXGW?o@?'!*h%Cխ l  1_T/`nBZUJ%g@QTJJgwϵ)Os~~{/6("hԘԸaut*se[ͣ3a4j6zvpVgAu?QP6>n쩮8'=co01}UxaJ=0zV[,{}))aCR琖o8`uѫӓ0_k:7p?/.旗G}@ US@blPc#"GXH`Լ isz{wøK ?}/?6h LNME HWP@q\ ݤxD{&jg`_yaU6B%?hBXI8J IZkV!c EQA)}w6FX,˥ܛŞ>l^FtPnh<}^.-VPfjp()R iP?kY-GKI`$/ƒAI&F$51eAX겅¶.,Ͷ;s=?9AB!x(J/B!@ H!@ qy՜3 !@ WFѶ6]D@  8@ cvAE`"-Bu(j mQUMTk1m/| Lq- hۋ,@H1)uD]^V@d%JBc^ 2!@tY"fS*.st;%$;U7Mxw)Xp( ϒR)[jB9.ViHhS͓K{zÕL<(j?dIp ZI"@W,\Zg)SԩvCNȅsғwAC.+?"3:0I]s㸶X]*we'}&:Ql*bMaӲJ Sk5MMMZmo D @#>Tw`G>opUڑ~-_mw B%/\zvrV <͹7),Đ)wd2>mmR5K״TFm7 ]s,ԘZi:j{.ޙ7Oѯ!+*(M[5C?n1q\x<5K@ #r0w-;֨9հe岚N.{$*kdG@o28G(Oɽ΂,CA{ L3 L!H,5 DFu|aU2rvvvssޅ  dY-{;0E,IZaEoVllh!ehwC١y5.vTjϸPB!f^ձw~^/4-o8O@lRBZ@N'MXS3L!*[}ru>NcϙXT]~!+Q\[6uȂ}9?:b~c cjoF,v0vm㞿/z߮)80;wڅ6[O Q*_ҷ߻~1;;g Lg%V#& OU(I-wFᕗ'Xa,gc_~ ߼NBB!hw2Ll;)Պ x:/>J/,'`ߤѧ?Ix?gIR$jkCFkCMYɾBQ  RNV 8@W'|\rF9`/'W7V]UX=ѾkU}j4UlLlp 8zp'D! s0\˪}YXU hO\)8jv(! Kɼ kU O|e`{@F~IxzUg 99Ym؜۳-]k߮l=͑7}ވE#>;zscX؄AVVWJ$OB](W^#L twXjɡ ˄eރEm}ؾ^m\qޟbcN|l,!4J ,[2nA2B!U] ]*-5TWO6^^^m oN^9"za?~sf1ca]V2~wb)O6gXj^#_dcV}Ы+;N1s/l,NWNkO݈xO~_x1:zYՔ@+šβV.8sr~>.|jm] gFQU,ݾ4Y#)..f^+!d{ثS? <>7[lv4ccA\'/EPQYQ+y-SE ښf [{vʯ 9Rńķ8VaeU0)[X|f-+I) luɩ{p<9dx9,nѸ %옵r|9u&:fk0H(ܫ@EL Bd:oKX={Ȳ|6 [5#{Kye?}SCapkXTէolo;c  Nw.6Jdfg'[=ὌVlk<הݯ>r>1V![S3-POSMԜupqFyw~|x4 gWԈ8*$/ZmLYWnSx#慼_ O\QSlce3`g2oL"ݞwlA /fx׊: VVU՟Q7$QKxYg хyx O:و5m_ƜJӐQ|cG#yv:JU Sk#Ӑeme#xC vޤnrv2y;eNb{^g 0(t\ k6v8ڣ]Wȁ9cqT92444B"W؍g2645Bk+gsчYώwl0>8\BXqʦD>7Ax>_Oؙؕ]<_HN$)NW5əGS+յ9T#eYMuM>CJȽ8VLL~Ehqs kV `둚$M`ƌ{"@CjӦMI7a _吾RsOM{Z/r^*%aj5 `gfKKaMNPPxp3+DHpPD7xti>~,MN4.nVnN^N3~ m۟l&FP|9Zed|wڡ&LơuW zo߾ ".Hmq[OOOM[dB!н֙te{5畑AxEVjs 3E7!طdwO[(v Ȅzv fximiyCy\>vaV?{N9uun.n wB%(h60;c}V"0a`l-{*6֨kD"YQqUUee6_ B9 ‚E ^=˼+&%Otuu =}<8uee%5ÍU4*J3KqAV-v‡nor~0iQZ (ll[J2u)ľg p0F?0 de>&IЍ1XؠZAC0Qd@=@fkkU&.1w^Nh3 ~V L@P.,mBv(R!@$]3qfxó6ڗI~d@ܧ)mh`lѯNGYO;p1U؀h&3]g8.'sq'6YCzzז&BhFZ$&"c^AdS%i>!l  u}hhA`3/-ߐ < _S& K v) _IBPա6 Q2sOE vx1 |Y(9Cxķy>ch[Vxddpl\#n ҅xk8hض߆ $ Ao`b`>0G =`z80^B,Ƽ[>,p`[>>&I#5 ]Y@(n bra5@7\g@h~98}nh`fhǴS.B!@w.Buiƈ>03zp"!ڥ}x,c_g^\j0 ;4j!@ ,]ngaCDl';2x1u,~M*gcڛ@UA xH JX}5@  wB!@ EB!@ w֨'B!@ EB!@ w֨'B!@uDث,ߴ4{ʕ͛7?~DGyd֭q&B#x z"`n)cO>vz…SN7mv[F!zhno=*-~5GWft%751?ҚN*]iS,>(={vvveD#zh~\^gjruݕy.6.v\7gPu)$G JeBx[ "xײeFp-ղj vj UC K4ZeMbKm8Nh4v_@OB~4i=k}G@ԓliX{)Ʌ ˵n%ӭy]eikܴR),ؕ@8I7kPlj.;ctZ{vHР. fΪ]ޚi9m+uE? 1%AJdlllH7^Z&ĢɲPBq58@.%c,'cESxĝ'shu,BciP@BK;hzsJ! ]\4)Xz^i iZ]xRꆹPZm 2 Ӗm@]TOn6mۦNĔi6F{!K#pQhI/ጥ3Y[O{ >sɺ)\7KEtIna[дK:ff<^> 8.6! ٍVf;0? lYYVUP:i5kҲZ46m%NgknzfT4QCI :@ ͐?FR0SINGe6#@>ikL[LyZ@"t;:dL2q FQolZ I25KtTlTbҪp^RMA}t@077t~2|降ClV~Ekqf ̋h2L b"&dtӸټ<ҘI˷&@νJMsF}5RJ:CY:»Fɇïఞ[f^szxb j=D.Ku5oa-E7YHZ@(]ɬd;b]KǕ.C2Zf?̠DOTM)J %0 `QZ*È !I׬Р`װ\6p]J=эZ/o{#}u0лBtsL!Ӵ\Z 1t]h~XTUu]I2QCmGE=ޅ;e#IM*,mE|2e=d̍)ȉP#is`׮VTMS?U$k]xchDXqLxMR5I6Wcv78zrH*mM%E..uQ-t#'lt}=7:37lV]}Vne&TmHN`ffMhy+-N $IA>qYkm#&mBA"- HHӓߥdFS:nrl 3І@3.&4y1x7'_L%58 ބPeea ܯ3x/sP; "=] S x_+Q+,UVtd.ɹDu`;K;cƌkׂp_ `#VTTl߾=fц@tN-EERƮ[>}E &&&§,j !K@K.t[f*6-WfB4hΝ;-#!@ݯ !@ (;]-+B!@$[ۓlE B ޵@#@oBnoVB!4w-}PB!Л@ۛ6!@ ,z_@_(Z-?U)0:8\;@Ͷ[YYw}͑@g@w;X/Wj5KrVniu/EwfB˧s6!!x }؈wk>|vI& MjgVB8mv4DwZ/c'>ֿdQ}C $sD @yUw\'>M|l`twDnݮzIY들Vh}@J $Mz}U)T\$@:ȻƟw=N5;{_1zr*5+2DŽISXޫ6,&N}c$M}PEt ߃$1L2ۼSrLh5rP@CKCX$ʌ"ZbiIbg;u=L:Qd1G0- %@I"&0')u;Ct;R$3ˊ8At"RVĝfR-9𬓅 E$ *WVޱ۸YIM>{u˻ҤH46sYNeXL3APOR*ƈ]ZD:xfhP1 X-&O̰=yȡ!D[O[XD.@i"9tR{NccnM3۶4ܺA֎ߓ; rY䱓=oH['G +oQ-hP#ݾ}7$18&uIާqS}'ObsNdUikv_Cb]ޱ)ܧ|$D2)9zݻNSw'R!xǻ$sQ|#M$ RT\_3&BN{~I 0O`?aQDigQ:q+f@FR3tu zN[jPLG s3C}68q_ ex!a#bmo0 ڀv6oQ)U5:&iu>ń.1~f==;DZB1UUr&驅dau}} 7i䏨Ƚ81HvK',}ǜqF`NH՝ko8KݾJ05yΕ@e}£Brs 27Wr '?xv$Pl c[ҬO %uWvJ{f14tkg2wVrޗm?Elau t2EFM&rDM6T]\E2 ڴJdOM3 5K+c@cV$^Mv=IG;2%L:IZ0bM򜌖YqUߗhLE~/(};GV:5챩z]XJF<&- [ul&5}p!3HJ`^^sq!1c2dh~.P@C=ͪR)M6WdBsKю.k:f6{' k#4fd@`&EOBdA! ieL7ILq5lV&Kt=QVpz۠ٞ#ٻM[l$^GZ&?Z$ՉO>(D{.&e Gˡ@&ꄘNUu-b[gv?q!!Ka}xID6BuG/I?N1o /GSJnT]-z椑DB!;hwI gd(H9p̺T&:J4ў)4N5&@B0,tun"P[T)?e#&$Bݴ+G&Siw}+()5d25bH t%Յ0"2$5fOWWrOu%FKZ8*tun~GV=δ$}˛7k"oǩhJC-cV,X/Ma,s˪_v.&R !W,3oo/W-7 hӻgu_y{PGԢn1!K@K/|ghԸVɏgJD_,z?DwD wB"@G}_BdB!@tS:ZF @Cn׻&H#B! Y@ ]֬+Kb!KIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image007.jpg000077500000000000000000000202371300536243200266500ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;R7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?VG Aqsޏ.~G/%ƽ}mG Y2xަu-~Rߗq?#?߿J+*dI4[eEVc*#?߿#,ɍJ3(?ƫϮiн>[:Zd g1/z¦"1Zj̧R1Znu]ף˸~+mj{inէ/0ppF3n+.V62 .@CsZ:%vNCz<PgXpva>=JP.-'Yvcq^5^7˼ok?߿]ר',8e <˹EG e`@'_—Էz<XW(2lT$ĸaⶬu]A̲k9ѓb'dw?^i&!U߳%F7zuT|STdwo%Bxm1V!2GLKEN*um>HwU{Ա‚g6=w >k?jYKK$p($?Fڋk:YЩR00dˊGc?߿]קۆmʹdԕs]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,Az<SE]ף˸~=\,AJ&)$6.;@\59#~a=kӠmkÿ|Ӑ bzl }n4=KJW9^wZ4:zD=8N)l|ɔN0Ƶ} m0Q5HL7 $R攨ūn\Z]N9!gHQ7mTROMާ{H_qXFGU=y>m.iW 8P0Z>#k!ʹ3[]*m*n'兑X`6~5仂iQc}=mG>#kHa s"J29o|̓3mtb6##kHs"J29 u}R+_a#5?&Cv:%o7n⡐:|WU۾.h_?~6O_/E^SkKo6uXjH䓌JMaVdY#s+|si?N8x4I: Z'}G>#k{]P}ϼ>o z*GO|tOEA>#hIy4X.>oi?7?Ƌ=O|'}G`'Iy4}ϼ,DTi?7?ƏE螊'}G>#h]P}ϼ>o z*GO|tOEA>#hIy4X.>oi?7?Ƌ=O|'}G`'Iy4}ϼ,DTi?7?ƏE螊'}G>#h]P}ϼ>o z*GO|tOEA>#hIy4X.>oi?7?Ƌ=O|'}G`'Iy4}ϼ,DTi?7?ƏE螊'}G>#h]P}ϼ>o tSb̽cc0CZek mmFJ7(p?yXďʎgMEs ǹx2#z'n͹ު0{-7OTDgӴ+J+|c irY\֥iΟPZE"%c ;q զd+rH*x9m.+^4j0.ФREL1#7}(=Ɲ Z $.0񻍧8 6tW1o]Fm 77Iy m2#t)>%ףyQ~fmn sEKEqoi׺PO4΍Ż'W$ii-l. H[ rÑZn/a򳣢tCQPԡI-7 np6Hu{%%* A+ׂHgHt4W?qIZ[A4H#gY9 aF3j_k6 n-o-2|dH+qi-΢&hUK*ؤq؞6lA$&l8d}G=IgGupmB"8h(o_YZ1jVo n*E_^χF}|?0u;,˧!L2 H“p3e7\[_[K|6{>Q¹}^ B\C\L.ddp9d;vZD.T:[1Itk|?0k]db(%#nO6.>U;I;<`uwX$ O=}ӊZ$mmo[C(X0pG\uƯ-iaR|~>1]&st[4J1Sm٢o^&Үm,F)/&2i1fJ-Lg ۸-0R9\5ʝ_f_שTs̶Nl __ En/@uB1 pj5K+]gL[ape$s}Z6](MNhXo2Oտ ?-?£Kir1 N3+?Q,6ʖ#Kcr O4 -jhjG@Qi{jhEwMUv#89NGJgq5A vWų;N\!OCam.hhjG@Qi;ANj$qKW#Z5FZ6B̋|xEƗ@Qi훘.F, z]Yf]7ctnQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE\E6$lVBr3 ;IvVZEٛv\H(~@Ӟ"Th`#tG5E!]=@ťR/#qHOiY 4/XjEbWON69M]UX0U$G1Vm%X]SgF=wdv9hQ@m{+gffhiVR$M[t!xTW z洨vZxkIHBxpva~QÊHǔF6 CZE.ُh?آw鮧hiav=ZE7z!F UI E Q薱a}L+L1vbŁS= AӔ2E"5|Y1Adwg&h IdfVWyXaݴgSѴVU{`D?yrcWv;d.\Pd⠙ t떖&&r0{֕\p]28PAc:Pmhm*Ⴔ&Fd3r:|K4c{t#bEC$E7y ߁U$ԫ{vnfwgs [#8Eka[z]A'sgq$NO'46~GUo2 46[hm|@#eOUb,psVdD\t01ۭ3y ߁Q⩮d+r)^iI-6:%xQ?_*S)E;D_SRhD/#rQYxoHYͲDNJOou_U@]W/Yr7A7+&vn$Fk ];MHPW' IzATou_U9YGm>zc~A"[9hX+1 ~:t} ߅kMj+WnuG+ZO 1@ڛ~e+rIfrN=3X+'_j% ̀7څ{ _EH6 X-mhzL!TnszREgo HúyG.)%FKIΊ |=3p?ӥK$ڕk@\,$*{k ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( tP?!ă_h]58uIt! weݽ_:R.aK$~T ?>QBka;{ vzNG(umQc,`G#z|?{HB*FvE,l;>`Xogn=9ҝur:=6KoDSi8Üd5F3X^8IdK%|px<7i%G,TM39f$F)Q~Ӻb7rNn'7o%nUkVKXfY]&Tqޤ|Xu}MaO`֩'vfIܥ@I(f!sӎRdk<3is Ct,:7ݝ#;$sXC|[@1zlK9 A88UV4R8[8)s'a]60­' }ݛr?k[qɴK'e ž[G7l̑H(~ioRgP?~asGAYG8MD 9႐rz4lQi-KI[5{6cPRr(v>$*='ںA+yyd,*QPTwiD:1܁T71hsO5?z<a̋z.4N T@p\+d UHGQQ\[_CK ,*c2٨n+kV+Pj!Qr7(8n}A/G&i~IIE4DŚqZbK7@goS1ǭX]%`%R$!1D}D/n>ڼFyZ;鮟CQ#'PRP)~\䊫/7(bOJ%ax ne&1+VM57k;"Rɓ8#SP#V|:1a3T-eH0~#,NInk wU,cugoq a?Nӵ]NQIiZ H1p T ]Ix{sEab nOObjZM[ƥ d;Rv4l^xkyie x; k0親1ǪCtQxm##w5bT.o,+B30r售8֚M;ETQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE@?!CM/SE QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE@?!袊lHALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image008.png000077500000000000000000000017241300536243200266550ustar00rootroot00000000000000PNG  IHDRJ#NsRGBIDATXGWKAPshfEz`Тx0s h@AHIU㡴mb@{%jEB-$ٙnLii yo{3;*SMvvvꃣZzx:;;a,[[[+ >H/7ptxdfff}}jL:`j!t=A~"q*Q& ӣUVsډH zEz0A%=>uxB葐:b8PeJ @IwJO YG&7PAtQ$]9ACnMjܑ3AYt\X$ @Q%%S(SҲQ8 XG;EK=K.⤪ O^!ҺDwr@x0VX1zs:XJ)bF#v=prc7^\5ÖN(:VNDǿ/ Bq'Oa|9E'nz$i߽%X^X9޵)MTl=2 HF˼8q(4lT,,]63 MP|;E)Yt2.TC /$,DI\_?Bx %r t͓,Sf,+ '=B]ؑ-^o˝%6av;oe9g{K'G-PFk(^(z}X1owN|clh4‡))ĉ^b_j$ ,_pօ۷:sFqg&L9S]Z_-[l"[~f͛7ORUUUA9̙36 /)a 9=|xf&:$11﨤PU#q>$%%%@)444::zС_?3g$͘MOMMCH\~qƌ3gjkk/_.**{r1LšC#oߝ-9rݑ&%AoW*Plq))PFr&$ȗ-Sd3"QENN_ Riҥf0,U3߽Mnt!$bdTJ~@8DRUTkjިB$:7u$4Q҆BMJK˖^_ak׮26}_ޗ sb猿iU`Q C.^?sDMS/Z"i =ܯhJ=4 _*US^2e&?e1'Hexm?ʥn_pb0ަ+zG޷Oa,f3L8c:-d ~^D1bS989&=<2b fI9v )Rbሩ;0us# ~shyzI G!+u^ F WCʿS\6XKͽrcZ.8^[ /fzհiDl)ʐ|1821UJ>2*n> f(L> #H $L89>Zu'Ad%6'GnZ.驍e*5+WNʼn'b#9:eI%HBpIJL'樿N"PR8Cea8@H7q7omwNNY1CZpB`@"^b) nG`#H 'ǿN{**8 jdπ"k+\8x89 T%MA^xAmc87B!}װH E H}rx?o {*a)loxvr*5VbBbՓ*ݡgȠ/_Tq:˩k$8SI9D5׳z k{- =Zϖ 7rF3X9t=1B72Ԛ,!ʚ-nЂ9*[b+kyV]a39Z8bL9f>ƥFV-Jo}6q6Q)K:lC¿%[':J?1/K~ %g֒#W6 8'_>6EGjvЏ h@ Rq103?sO>b+6 dVsf|9L0)o8^[]SS$gZDPc8>=l#@W xF^񇊍@}@~ ϿT 0V $>]%Ķ%ĺ%'je+KUOr߄ӥ7½R^jz_ #H_) S'@ tL`'b~:f}mcZx" fn^jf &߂R4 PZLq76 @<}fF;=|dyDʇBď3Qn~ } dO kTADk v 贲 $E͕\B;bHGIzXA8QHUp_f,r|3ֳGk;?d?LX,k|7 .|}J8x(ah@ nHF_Y~<˯[u|+"{_Ȅ][37 k$`<#"vM*}궿GRLn? $F=Vmz? -G'AT xB θD{]rD%.;j^X('ʴh09ā>bx};"""D'&@Fg@=d/w,7N'` v7]R>=VA01z:4JJ=G]ʹr~7hq^gse/*C+C75^) 2Q)i|iWV?@la+X2S_+ 'p[x$:D&xoJ5lJQz W?Y`31_tE;fҀp%E,AC'B8,;W6rFduU[rIe6aт˰5;mP3 `'9oWE/J#d(1JdBz35>Jy=V%wC,̓ >z#EʔG|6:TuGZLEӇ d{Li{y]fD`87䆠Z'Lx3PW|C7As|O#Bex_G_S_r|>R(Y67:jU~WHbfsT=/IM?p^Rogv̓ek l~17IA>9h}w&"2t Warc;ˌ`P1(ӎ!=d"U5sd"YusVJiFpX[SztK #[hf|b„@#:&X7h+K' _.=ds 1'**0d 2Ώ'р |oC"H(Q}XӜ:MF~YF$2(#ܟSRբXW'p7vF`^THy^m5lllઊN!^&M( Y%adEwL}pܕQ`Ɩ# $! tkΛr_z]pK|+Nzj*?;.ytwǘV<`*+-S!tfBd,9h}@mUu7q,V Nfc tU&T~j>QÆJvlcXA$Lt"`98.bS Z4MضSt.,1VH`.XNp!nP08 aGM $c>ǃO$NTw@𱙚/}zQ_,rU?>9a#u2t.r]S C|. ;3e u{VS_=>E9WE7_fZva馲&7sPRIYA򖵄  waf.m s ]@GK{L}`L=3{VNX[kkII 8zlqٸH~dK^xSezr|Y$x(¾@ `6Ru H`n8Nk5z>lC"Yt81$#m૦жD@#@CɅ`NV=BfZ/#oH$:Y-^ $ <]DNGBtS˘>Wa`';&9G~[ɟ3L $|qhh=Bvߓ7a]*lc̆DQCoV] o"~%S(/'Frɷ_u7! V[e`g9W5S2jZa"p|J`"BmIr\AYL]hfܰϒ~oLD9l xt;u>Q_~XU/~9'h-74oNZ*NwnptaG;z-۝X/OÄ.S8Pv`V L/l&gc8'$G~=u㍢o +Vi]9guP_lF>1k[wc5D P(Ri~' K};`KZ̼gǃ2ڟJQZJkq*_+x!v֮۴/*4F?+[rK>7듓T*!+? IwMYUBuQC!snp#S*d~spHu6  ogD $QD5p6n# z9E)58|\B{K$rdEa*Wi?r PaAf~ h@b.=} 󘕪ayz$VTʎ /ɣqC}7fQ|p|H& DCwxGSEYQ!{~{_qp{ 뜁g_8|Czᷟ 'wԻy!_ r.qj9)<|iy&X)uCF'syR'L2g ̬6 _#^os@+}jU86o^l?,_P]՜)3d wߐW}WJpj敔SN(s,y},yʤRڬmX]%WW!A_uuٹe !}]{( ؁ƚYR[*ݗx8t4~fٿ1Ҷ;f// xO`2*{4O }o "ĥ^!_̘ !(>7j~גfJ զ 凜uĮMj: lU ,uTRM .ډz5`'x#8Zzҋ[&- KէgD{Ss=6ߣ6kՔ]q)Uȓ 1J̇.Lʤ[}]իhsS+.唔]T:b2. /ɏ/N2:MEC}<<$P&Iؗ\8n侙ĩn̩tYfUT^JI;(GE^x@KNAsXEV+|Dg߶t+}P hr:^()hl6/~Ti5*4ye0fGyHI@6W`u٭-OؓN w\mðjxy]0[:oCIuJ2 ᆼ28I&j$xi#[h ;`0.x+@v ,'Y V gS̙%ÆjJuV@ 5 FwO^$).^ΆFڼ},ʑ3ZzcN&2B#ʼn7" D"ww;P/0~H@&I%MU_:-\E lR,kĩ,*#Iϣѣ:8ȐC;@<{zJIa<'U% (S ᓠ5Q:Q)OJJQ7g3, !,72  6 Jq|u8sy7^ڬY iV8j3!׷Cy!(LS>^H*SQsZM}j> =rSz| )j0n=KB˝fc,QvD0"ܼd+.R>>>-XNxf wp$E.N7r*?2 ;X NK0s/ HVO6ұhfeh&|];tdkF҇dYkXz ~[^Yhs]Az~ *~:ds6j$"TEn\*@s@S[)|W``BE0;ۼ|z Zlـ̌ |6W&wvDcY慓:|]/XˍK_Ho)w$01s=EiJcަ>%o>m`3]5zL_)_[쇻sL%p vIwRi`Fպ{?T"gGCtbE[-UF)B&*#fӃB?YvRMk]$ dbJ@ B{8cٌߓS hvW'P&`[54~Ku@o?)Lf z|'o_l]$?^kЕ@Z!d !ob6V+OZNjFJ)!s ]g9{("H 8 IA6&X⩾'g~g6 aͶQ]o+`Y]gk ] $]`71bqc N㸄~!^"N +mP:=S'@"z^эNN(@ ꖂFt"EH  4'݆@H@q $<u V $P@H #q]BH '|@HЅ_[YH؞f) tUDHb_8ϩpcH M53I?%ٵ`V]>;\!/?v$@ )0-3 Tm2WkˑpS -o+Azĵ}=#H@q&63+s ZNhS aeH i9/d;EI=P{?ꖤ쏾x}yޑ>ݞ}J.ʷQݐw>kU*VKv-rRX8;-N@vIlHŒ1޷mbҩO _6#cwǼmNΈOb텋kk=]^`\ύݪ*\QVar)G˩+bHq"ld2///ooo__߀J_> \LId}zqMs5؄U+v7!N7_}o&^<LOxZ[x*-ξW~`|`"l2@NĩG >^uo*+eOK=\y+=T nUFzgnU ~?{kݖJ!G[4$c5*#SP&8r꛿#j$йt8uZnFq?_%YfWci+pUWVc"NQ(>m`AݠktDG9+:$o%۞./ 8+O AHM'XI8L n'ͺyƇt[NɕIk69w@1'/y  .~5~̩Z.W?f=CKx.9. 1Cvƕ]o"?dlcNma$\!;l}%9*׊2 V#R^SIN-X{GHtyט;u| LǪ䰶 7\]`Xakf@H/ĵ8p!3Y5|r|q|BI%ߥÿɎ{j rjgO ] 6҅EEm&} mz7w[N0_Pk1Q˻ڽ&HIx^Sqf"&n?Tq^KYil3XrbuLGI&Syg7>=|;{#Jefy:YS' BH i9Y` ygKȹre$O/]O?U#;n@Y ,|l!S%,},9  W\޿>ҩL$@_ Prba`)̛*I7 W%oqƝ>}X8uo}@!# K;g4aʾ[F$@!vqXl)ՓR)ӓB-)/-[RRR);i`B!zz*RrM?v++}$ܮ5.NVn=CJR1FDDdee8fRBHOLvտ p3/ 'a8Q@@r~RvMMMW+pX&@H/p8Y`̉ ܎Nc fp0tEmSyAt`ǎOFg_VzZر5]T@ܑv$@!vq> @*jiƬh42įLOXbWo2~-gjuZ/J\g2||juuM EG@_&0*N.lIXH m(//gY ^? xz%+kaE~֗,ɽ3dxMv5ݐhBtrFfN879y,7h@lTL$@+.]~q0֡L&HA''w/SѦ&O>k Y|?gD"?.nԨ=@Hv8'f}cWO\-1q K t2H!$@U_sw^4$\7[!$(2Qxp. $L $N=ץ-inn $zN'`2Ш5єͷ{ 4ro彪1H Hĩj֚m(}y6#$:@W! ʠmu-?g[GxO_mYCKgSA[[_}`mU[hEQ @JkĉƮ(.jp 5}k&x]*XccF P׮5`m\7I8څQkVwq`ѭӓnzIn 5皣P Э&τ ,mp]Y@Iݫwf,\sZ\U&*γ^l0@H t 8u Y, $t R$(N]KEH ɹ1( $LjS7Cx $xKnKkf+`;+,ܳWwIWp3v$,j\Xx֖Vmꮍ]qJ@HfcX[ٚ ]ݵR帺+>H @ũkJo9Ww % >NS"NMluZվS{WwmlGWw6 $iqbZMlm}vXFVX vqx$p/G0$,QWl4lDD%M:Jmp֣$<@k &KX$)"":z"$m=^{ $@t6gICX?$z#sꍽmBH p(N=H Hũ7* $ 8#$z#ث&$@';Pzcb@='}ɌpnO=;@=@F$ܞhcmz8;]gΩ{z螗^\d4{Gg`+@H$N\qJΪPС{^9ȆS~)yϼٛK$_n?\XXIJ,(@H q:xd=we;VH"'E?slYc8JR/ .*.6ͽKH $A~uC7q؁]&7|Ք!mv=ɽ ={c/+vϮ1,$'p"nqK$GƝ׫>=Evd{X/DWtꙙ+ئ ` 5Vb‘&|@)|Bԫ<}ЙbVx!irJ4Ϩh;}.\f"zÉmBHp8l`&5ҳ޸YӀYGrWJo#rn=^r@_ɺYy!hM])fVNgtU@Nr$ʼn㈏XR3OWi]ftߦ4*QIID2/ TIJLv?Y[[fn3@Hgp8) Q8<\f2#bx,GgTz=Β_ea={u%@H JZ))޼PJz+H@VյOb;PVug|7o@K^m9tZPۣ4s429,1Uoj/?cYJZm!hu儥!$@p81 Yٸ ᬍj#:oۛVnRV^qMˇVTf;?;H xS$\n'@lͤ:eKV^ez?X5?; ڕ7F[p/7oٳgt., $i@݊ΣM{j32rS(uE=/M'&m^-bbG5pb@=I,ge/mfkLWo(J~xe%  YbL*-=H %tFĘY[IMR ̫m6W1W%;_ <$^ou6iD<$@-N&OBX2t*7 Tn>[L'X6-/h" ZCD@z._jKjk=+ $ V[ɸ4CWA.ӅjrȐ^&.^ #^gpUE.)J`kvܝZ:EH x*wp`m\_Y!b=r`zΧ3M/#h?5Gvhw,12 $p-8qic,b<%2,QML~2Aw xώa&t,b?^$:m<,{WW.[D}@H rdZuUodW͢JiM KȆZ*]('ͫmOaVoJ~h?3//Tb=4.cC:{rdx$j'XzftOO`m->n<$Yx OU.w6M۹Hޙ=+ܿh=͹e/5z/l %NX(@HU 8'POѨ 6[e6[,QfSgnEsYlU_SY]˜6HE F|L~Rm6&@(Sy{+ Lb6ŦyuŒ@+[v?jD&y|ΛA–b 2]ʡ; `ye>* P@BBC}||ARm=^MCH)N\jw`1Uk Na$Y7|dV<87\v˝wܾlm ,6LOnS6/@H t8|tڊa{xA=)omɼsN:f̨!CGFFw$@ N##\:i7C8˖.\xˬ7N4qDžv@XX%$pn'4`@Ǝ;&!ahtttP`Ź.H ' PRBW5DH 7%rۉCH D`Ll0S@cU2 'vE*y)mIap'aX]$z.+O&ũkIF.@V.~+y\-fDH % ^:ot4̃@J[q*߷Vp=o~:uQ3hۖ53ެ_q(xwn9ЭpH $a]/N -cN *I =^$rOibߚ;IƮWFƌ54JhMJp RbE |Ÿ3lMm a0x!@H tzqj001`6avEuB Y9oTSwSQVP[9g, $@׋SکfCW ;@H .Nthr2_Vfɢ$FkY~~ƄU@Hzqj0Dy/Lnx  5 s`w9 T$9v+|( 63tOpnG5H k#@7T{M uNVa^ 7 A j{5z˩oV"$@'@qDX@H t&]$@@qh9yBG`@H#(N@ $@q. !$8ثũ?|$'@qjWp'>X'$z;6zw>$<' $ 88G3QN`!(N}#$<' $ 8D(N+X'$@'p_6 n!v-% >Nũ?|$'@q^:!$8>`@H{PGH x"'O@H@q6 $P뉏- MӉ",tFHs55e8 H q)L+-.f>#$z=x8]$rE|0|8Ip pF3عKUUh,qRl:q|(U/|Me* aҵZv@H n$N&+9]7ȋ刐E6)dTX&][[ۻ{[&^1=,q$|yjrX8YYL&S_9l;@Hs-E??#bd!%rrX`W<܋u[Ϣ)06\rNw?8#@H tnܤ+肣UaG)ȼr3IŤzr}-ԐpRƥt䲚U_|tEE7]`H qadH$*Ü `m0 1ZBBy0T#*xՒA\[m,9OOh 3|O]808O $EAhLFsI"ӿdw%U4vb#Vm.~Ub~WVDoW}ыMOdcMS'Oh4]EH 7qbMl"Fc$bh%7N ͽ!!nSnXG|,L%։-:쐫go2 NЖ4b% QP,NS]Y5j]'3> 8!^K91EWȚK~Y1$<,L2JX0@H OgAA#֛xh/=}Z=)-'x{)5RNBBJ]DT?5XUWvq蘨x $1p7\L8 68+? \I-7l|hԋED&#*]iٵUk Rϩ0thXxX, P8 +bH VH$0UK,? ' kBvr0#_:U&`|J&sB"R~C|}|E`X$@Kv8Am 5kYFC8`!#PPdal!}wE fS/ eJH $;u80:O5d981D,@ə~'\F8K[|3Z_\BP $#N"1,ZM J Kbi&da${חd(>!CQ(؝H $kt9IzZJOdl6a ?!H $~I=jqj SUVƒD<WtSyf>H ^F`LlpAbA i}"Ƒ0N޽ $%beTP Ĥ%fF2T]:s˳Gؙ6,..vР`T@[9 T]B}zzQU_.:uⳟ_Wol^s'OUo{-ckbC$iqKHP"?9?}O-/Nls_5Y}}}}j3 >M4{ 6`XHZCMq9)O][Iޯsnc}>䶻/{Ydьǎ=p|~dH `H9EoJF]Uf%"*lU:=ؔ'&s55(Vyyyr ZVLsbeߴ#s]+s!$@lƿD!zheXN u;5=en3wI!/&&$ e§ $@̻_7dਨ@0k] $G@{`Mn~̘?xd=H $`;@H8yZ`}@H]So+|[U[+_l%+va>ۅph$@ i9|jez]/ȗs 5Ip3Nq"':/SYywJx<3\w@H R6k8Q<_@Nd̟ϢKO> D8ؖfϗ~w ruup$өGq*U[hEQGɭ[v/ul@H ظv9 %.F:70=閡ZSA:Ɂ TjMMg C`j"Ok5ncFOJ5`m\7I8¨5I+W&R[V $0:v[N$x|WvɄؕOk7s@)H YLyt9IXa\7Օr(ᖎ7Bi߾92۸<ʺ;6껦ujڽӱEH B/ND5j^mNJhLլXyj=$6Q͞Z+ҍv @H80wơ#t, {(Ŏsji-J|w1Fgs:C >G6}{eyfµ+>.iXnz떪k=:"N43!|&! NXQBĶ kaɣ"nQխ&nڽ%H G{)`ˌ'߯Qqˌ҃XO$<@[f+a?trvYpnł@8@H xㆠ8yV`m@H8c@G+@(N $@q. !$(#(N}f#$<S;zuCH@qjgqno}]H x2'O@H@qFH x2'O@H@qFH x2'O@H@qFH x2'O@H/Uv&"̀\\ڻJI?5H DH )(N}H Aũg $Ч8"$zq|@H $<GuV $('|@H8%8 Y@}'Syҥ#GvJw=Ydcm8 [M_**jrr OL;|$ivedViu2cm2b0XxŜҧ>`@'nqXyyg\8p#ɿPPX_`gfG/\*,ʈ*H 9u˧N]_*p'wӮ$Ry°m6Qvv޽Gv*&'lwNm4c$6x/$@p8I$roo/8q.B2y%ks[dRL&̷-^.{)>ᡵVb1&TZ]m n6y{{t^yy>4my.E#$["-p*萉$Dg&z ГbBF[nnEqF7D$8Xi2C[^yJb1z]>H $Ѕ-N>fePeY'H'>A6R UU3g y[o?^V&D" UDlBTX4@H )4$,P&'e=OT,4O\HR:$ l,T(ZPp*hIeZ}|2:+H$$&듐*% NVk!aaCcccJ%qnWP2@'^!z{{35zh00 f-Mu'1!0Je2***"QXN!$ <ׇ/ND-'DLf!N·BpXkD€d632 b1Xc]d9KvH $@ SRUVjmVA{O7Nn=gϞY=ФPL B;"$@H |tguV&AǔV&7'VUVV5ƜЭ`9DD"JlZ8S1'7jzo9qa'ZNM@]A {y)/Յ={ ## CfR~! ,'b"Vp@'=DxWU ,9G2T ?}PrvhaL_gLF ^1LJwDH $Pgt8ũjj>;K¼ \B9[O&e*2*ҪTZoZu")ۉ0($G$RL9{ʚ/R/i3U#FTVV{h4RG#|Y]\\>< ,wʆpۅ 3#$:@T]!XtX`YuÀ9?_cšR/SBN//Ixaa^oZ][^np&8kȐh#hN $gP?سC.s~ERO'UJ" TJ8NZVVE44+* ֗FDx[.8=4:ccN$d`9=V8pP|&+|(Deb(d6:UpJvD) ",כS^:dX7$pdK._܀As',YۿX,sM'T*zx׿^1*$H);{"c]wCO.v٘ $<豫ÇCH$4(P{!">25 u`*B}:ı'/TWV[vzݩ:uɘqn_>ۦ9ȓYcݐ@HEZbYZaAq2Ge#/ >Ifx5a#AM/M9wP}`~٣s٘ $<ũj(p TࠃH< j!6OI$&^O3 N S]15vB*8@$vwC^soxr3ܳ+ӧsϞͻp!o;:w+Ox#G %F$@%7LV7@Q@|=[؜1Ccǎ}lwfUCΞ7ݲtF8T>b{qNQWlOqu0[,Qf-}N=`@loڑʊ}  $p^ٲW 5=Lo#$@/&7ũ/6 $# u8W5[ž557(K[9mzGvV $&qz|jez]/W DL*4jM ҷQe5~xuVw1NtX @Hue9z͛뼠NeyM+M7 n H]5l +úqnWr@->ˉQ<_uK;1Ѭ}yIP0ȼQ-*6@H x)N$4PNҏ2ʍ1] @-Vq 9䕥x2!5C1d\7 &|@}@Qu[ƻځJZ`U;.ìH $ct8QơFn^;OߢhӓXQ$@'=cNu8<&雵p.@b"9ۅz=H F`a$NMCƅ3-oB|Ső"$z nC'š"${8ї8 <$zWXS$@!g!Dq!}DH MGq3 EH (N=H >Cũt56 $s8š"$ *Nt%#0 Q7@H N!ƿDC9;rQZ tĞuJg`!H $Fn6KH @qr?s#@H A $8T8H $ؗ"G˩{@@q $Z"*rf(cxy)u`6&Ul"c|BiX߿ĥ;wu^vDqX}X1fgsT6fq#KF+N9M~-?hmh977<{@PW3L<9994hn [Lf>>p21^rP:hxI'p!dLVrT8&Gư,4wOi֟vɿy|ӝO~ku1~awy+96B~*A;vDAA>!AR%!b>,vqTV}AO,ľD˩abQH78i𓂥dPd l&+uὍ9+Nz&ov71<`aifwU۟bG 6I!*PPQCnK5vnԘZ R7F7q5q;h%`-QA_#4I2/7=$<DL,ce9 re0h٨E%ꐮ@U8j='3E#:-NնmY]%5q}Ps1H&SoUA. AVYlB2T N<ͳZAjF^]aYk[@=O N=>M{Z *ND8uHV֤K NMU~T7r]9KZ]( .]L$0+$*~ fVRqu+ _>vMڛ9zj)@.S뇅!v ,:`&)Fk2ˬ3)cj^{n=Zi=5k|$]CfH tj*"kBb찙 uZ{9E @MVU@mKj ]r)V:YR p>65=XJ{m7׸6V+XwZJ?; u2+λp;fkJR[KFI)_{JLǗ6J=xl.N*vE^ծ>f5$2aC^Y.V t^n, g:\3:%csuQƉL4cݺAsRlN' l +{ewUiuִ ^wajeN>=P)H𕅘XYQSӳoD}Ci6ez楃o*$8<ٟ xUl(ܫ{wfڳ#[TŎxGq 9Жu;5tmH] g5ܼ)B[@ 0CR_E>2HЇ\xܪ5]^#p0 ?p[!@Q qA#]wֶ**7)stLfUoC; V #1r%-! }!BqNڬBԃA,Dk{h+A( "}/rS<*qړeT+x#TqQHm0ި# ԍ9q+B6J޹aPAnذ3<}ٯv/TC΄Ʈr|#h#M.r ˑ@sl9{ϽɳȥO0q3:k®w蝷w]CJO}09O3G㵍BAs@n] w ː11TU:Tުr}ZY=j',4 .fyV6Y}< ~𝎿ɞNͭIztr98Z:IӱBo$ (S9]C :mzDSv|i1'TL(0T>='nq 1#OI &HIi}$^R1ΟήJ,FOe0To<ɭT* mjU/ T =D"лBvP/,6MBW=z~>DsCn/H+,c6$F`ПYNK0s/ /VbeDW3,s|ߵ%W>'Pp};>2:|Bh}z$Ȓ}[F㔪&[%%s~5i٠y?8-ӨG.~ߴ{ Љ&9'a=1'2" C(TWrʳvw:yN»x",Z)c^A&9|1]^~-t.k(*xlٷɳU{fYYQe Uzďz4eA47;SRVueVem~=$8$+dtuU, |#;VoMc8~!^2VL5m|ẍ́Fn=*Nd99jaۺ*I|SR4 Xꔔ0d\ؿM`kQW/ 3q:Q:)$X/(H&A4h(%^`a@B"f^,LI/8 J"p VDsbQn;}:Q( nY~m H N$3f_wd|{Roֻo,H`8Ӗ_xi {vJM/6r`* ܂2 78ʒtzٷL3:ױiG^G.khvz̹Tb~릏Оxn޴R5$\Ğg9 \k#.gʕ~ޑ1`BJij5UfakCBL6vbB΍#j++z5C=@{'8^(߇ˏMwzz\-Hr)#XU(``]>^BD~Q:/X1f JקtZ:R?a#d'N7uP(%եK\)>WB.Ԫ89c;ũu%T[+_[۟ >r3^a!?Ld/{ݸWCGG޳6[wzɐK oWM03n3Xm̮dtWmdž+`~=NqRW>2ĮFvnoԮw!v]J1j_ \?K|"}d5}\u}g:'2jН*DI%uOr)|<ͼmE7.jdBT3z`՟QdG(q#Orp+K;dBxCW^hʧǀt~WNU+&x<~Xr,pz:[jcQ(~QP˦yh/%bxTv+9ٽx =Uz [%7Cx4aV'~U7V LA@ޜTZej~x7TwM*>+z= f =[e!AA0y/|9ZNAsɞ卲o3JFSS|aE ބK3BaϮZ#?LAǬ\J9d3`t#aA| o 9xF!K~ۈ9O={B8>giZ)ͥJ"5nơ#z?:C|=ʌbOwJEI+`TZµ+>n:؇ hi9.2s%9_e;lɜ|J!g>ȐFg)M l7Rk_~%yY}|K(̩k#UjѲߙ }p1O"r3FӚ/]0?9{=4Or:PJ>Ya#jtDY cM4"04 ᭙&y 2&z&spsI|aCMH k>I"8;P=xU%q|@@hXp5 G$ j8|AYCr\v_Mz:ۓcwL˝_g%"+N,k%ox kz@Ӈ{bX$kP<SNnS'!$Є \;`TA$J$ DF#>!'XZ:ƚ.%ZCkuSG5H $)ǙZs>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?WQwi..scI?b[v1$Uu*#KYYSˌlT߁5ǣEe2]q+#"ݧns_wRvImt>gF}n`4}zl!/ :hO񞕗ǣd$V&ITAS0^)OOħJzZ_ggH6CH&C~sdt5g8XD n''ӆ!jjԖW硥eߗn}ۻg5/ofyW[!w~y8ӅY޵ü;v WtTn5] kO#ڬF05W rGlؙ1l%̰H!gKZoBI硣?̗oVq3+:uoo*`7erƏVqb]vm%ޡaqV-0AfGeNݧ_ijOA;8#g' 4³߅aYoSt[]F:GQ30kh(t2r>8_3~? t?+81?__/gk6{0#F% '[\βX?q>C³߅?YAw_Gu|AJȎ_/ / O~kβX?/,grPDpƏVqb]u|e>4ic?}R#g' 4³߅//K?܃?+81?__/e>4gYϬ_XT?YAƻ/:}bh G / O~hg' 5gYϬ_QRƈ0L qqvU?'å#g' 4´3߅K;%ݢ{`T[Cakpy}ig 4´3߅./f7Mig;Tu晥jh,zsrO s_!ƏVf].{yiM%dclcb ;GP2@:O>✹UM}\:/!´3߅?ZCAv^ivӌ^QEZ&,ҒαN\]I˓Dr!ƏVf[WOp֑}|n2pՇfh%0Q*DH/Z;s:˗ig 4´3߅QDWF V R?ڸ/6Q´3߅bM듫AGB=A쨤LcVs `'uO )?Hk P(.$mW[EgE//SNY7_a >"m]" ԥg**n,Z]Yv&iItBi|3>?kK>7ZZ]OV:‰ C{nngV f, #go-/¸ͮs~xԛ&rAfp8?=( )=Ѝ%y80+g)>Zz̻]{e$wC=u=5{"2}bI%NGVGFU㌳D%'&_!luX`@ !/8y?iUZQJ&= ^MT,JCq"n<뻀ł(2z5 ן܃&O?9B{7H#%F0p*{KeH jٯ??Mf4Qݛ9\G2#$N')$ܚן܃&^rq'$cs=s,I3928ݎxS_zlz[Iu1\*ّx$zjkA]Sj2W)f4}|Sy?h5 )f4}mpX^상=gp=2ݗŬT/3:/c"_ݿrz E%SՓCQ ِur;zXSb2sGcJQ{*Ֆ5P64fb@s^.尶JxzO-?uCy_2lYvlWcSR%hڜ,q)\lרz5zO-?zO-?WWg'q7)-q?/^'tז|Z?Of?əc"_ݿrz E%Tb(u[˛8mK|<1XxkhHaw # s]5.Orտ;4c19$*pz1Ƿ^PF nFg߷$˴nu9>>ǡOJ{2 U\g[B3Z?1Z7_ բ; QE@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE6OO,"~]ASSk>-ȟekk1B/k=kc"_ݿrzcުzPB}w\ڤ1mHs1[0T riW YGOʩHeտ4ۭٷF<7s1C*, 1"c:aa`|3ܽ$do5h>.:{3+3Z?1Z7_ բ; QE@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE6OO,"~]ASSk>-ȝek/k1B/k=kc"_ݿrzcުzPBۭ3Ŗ,ţf\8ƷF\iYBA眘l}+2^ vƛg6K;͓ǷRk3qOCIAJGNrS#Z/t [o:K$i 3si#"(m @ld玙NPĠZ0y9;zZ9fE&t4U{ )gHÒoCYSZ#QTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPdTϋ_'9??v_00Lʯ"ָo?(E]-w'F;ꧫ ˆTr\3|Ǡ*`s&31^uj*VtF.Z 8"Tju me8u鬇x]DXgZ$ tČЎMtN)FoCYSZ#QTEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPdTϋ_'W5OـyfU~u5ȡwoܞ|1B/kcSR>W .T{6CQSՅDkQ[m@Vw"R\QkWZI+Zlcսqԁ?:m ")|-0:ןVY,׮pVv3ɽW4IKO3멯E%vK]QzCQ ͟UnZ`̧`Vr!ee #gϔEWJ^R`6 1wqZ"ҸET`JLw\Z;yLS]50՝HJǦQAEyQ7_ լ֏_ V]B((((((((((((((((((Mygſ z^[gE ;/]|&eWS[vK]\7"֣SՅD+S'ۖ<(YvtknKIfU{`6X.,,Ԛ=:9vK"T1WQkkho~<\pА:Ku-;$r\^0 ;NGK]FI/-?*`x~s޴IKq$kQE֏_ VeMbhQEPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ Sk>-ȟekTϋ_'3* PZOZȡwoܞ( !EW!QEQE7_ լf7,cp٩~uu(ob  m~drq0di8exRXv:GmRܽ_1uUm.@I+h%`/'~ ّwsc.,506.hbq-(?) ᅵNȓcCh?ƃO^mmNY7gO$ z]Lq%-*M@A ߡ4}^~??ƏO?cQdO?cCjYGCh?E@Q?>??ƯQE~??ƏO?cQdO?cCjYGCh?E@Q?Cc8qLkod+*l1R[Ho ۱u+4\ L+p~l>kj]#(IX]FdP͹QC2gۚom;*ޒVeؿ:{u"ܭs;h[$L$L̠Nq\|Oyu|g,4sg\7vt-o^|?GiU w{#FWs5p qڶf#rXui$wVCrF+fhb3$p>A|t"{KF܋ >ax[ZͲ)_cY(Al )!x9ȭF/qX=[+ % c<<.Kj"%$"|/'"ޅO7/ l63)Y.̼y%XֳV({=Z颙"2mў0ICdF9MXAEPsl7 n<io{ԫ9ot.Ki1"HCaJ,r@X5.aFyo5IK:LBZ`d?Ü /5bz[km`<`{yKwo{xyo4a[Ro{цwlQE;ƌ7kb->yo4a[Qo01 <7آywo{[ |7h;ƶ)i S䎩p>ƤXpxݿ9Zż/[c 6 [Z_ǏEZ\Ȅ+ȷQy>K@{ w?ij[E_Pխmt(FʔSz#֟-Xڞ??:X}>[&k@+g'z`cjv52H>pNxUY{b#֟-^X=iB;J!Tk@@C,1fO=GC_еkQKc1'I֟86h]G_3U_0~g>>?һmE^&??+Y]8)9bDM%i2>?kZ?^ww_ҭ&Tbg;ş8c14!VFwB)F - ! c 0zW d11?_7{G܀F06A\,NNOp,O],O]S_/wGs 3؜7Hv9 115?MAGt;rh dg#=p,O],O]R_t=_k=f1ׯJ_'.'.G~/_/wTW 11(K?ᄁ2lGǜp,O],O]R%/\NιJ..p-NOy?p,O],O]U_};5c(,1vYC??YC?>;SYvқ+lG^T d11U?9c`'nZ_^ӿ\w?rGw?rGW_s }W7wkgRgR}&>yNp,O],O]U_})}&>yNp,O]D,9O?~z???jɿƏ^ӿ\X9*lˠ<_s ;^ӿGگ?o>[O2 ?Tbg >w}&>yNyؼYC?>$AQU?9wi 7/'*x ?T}Y?gg73>RW`.xָx ?T}ş8I,;BN'qwl.%3Y]z) 캗/'*x ?U+ _s!NN[u_ژ9? \oؼYC?>$AS"_ͩeƃmu_7^,OUbg "_.lՋE" T.1xq>,p8?J^,OUP<1붢R;\FCZ߮5(R^OnJALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image011.png000077500000000000000000004207101300536243200266470ustar00rootroot00000000000000PNG  IHDRV@\sRGBIDATx^Eրgfs,i39  x'z;1q&L b̂@9NUޞY؅׶LOW_UW{U"Cb0$%1W8BB_|?@H $@H KmZmRW.^)%&+2@_[]kHZz%TpUĀH $@H $Os#12#cqB q^3fb/vMfȄ]LB 33q 4Fj,?0?""iN:~/a<@H $o6RBH Z!c ˿ krW'?jeiye+KU}p37EOfUSOJrCn"1$!1~P!Ns q9@ N ܡS!X;ox $@H $h>vU{?[Fkv7p0oR&|F5%ncnt,Iu$xuAfѼsU]9jFlbmVjبkӿ'a1LF}lJƿ=*ïOs&._$57ݙˊ 3;H~BP P=^Qͻq*ܲQv$Z-FH $@ p|GINKFbς*lsPeNo-L R#:>RE$2Qqmj{Fs ,,X(vv;kO`kl+7B &h+A*V,V>ѢG+S鲬@E$@H $D $ p5Z-S8G+0Yjd6`4z#5T>Ld) kQa}3Z0ς5SDam608f`FAUݴ-s6}=䭄>JWkN^iڍ+&k{Q@*onq=.%DH $@H $ Cm/uׂ@7T?Vz`RxX,_W]_g yhs8e-4k/zGc=k6CfT KSӀb7W߰%L /zqIV]\1aYE- 2.&oպfI>BVWɠSo8IIU"$@H vED@pcNxc_L۟Z`G 1X0_u%1Tq|`VʺR/b{k,Ac7KG%985ج6Cqɽ:v|@IHN`2|ѸŖݱ|_w|/vXx(Z!D5سI3ļiΗK>qJvɋ @ҒVѵ 5Z&TP ےCCU$bHY9o(=+ݼ% =JŤ@<V $&@ J>(zsKFt;`U2%⳷Naײ } QÕv ?p=aEX#`!xSb,&0%_q%_۫]HqK]ÐM8 4,9YB HO HuLL9S/FEpb'+wf޼TpA(ILy.!6TfJ}BHO㒂Rya\I.2q0s<{SSx}}뗆|aTS 15qq z@W[r7Beq5c}5l4,GC&Ϯo5 K%!vQ}IH[yCq<72vdWnxszec^H $@+XOW;? w`'l@WxHw"Wx? F<8aC2 MĩųV<j-[0UTۇN_/0`Z:!QDCM3Y'T0RqQC'O&6ë` $q}}@K;$ 'Oz_SNNW!dGVnWz?&Y$qPKtT 3*CT0Z%>)O˲d0/~0* JZ%e=hM9ἠ}H{ [C1.BRGz<3v#M*t^֫DH $hLA9Nȃ+/~{*"~ODn^(>8w:2GnvX,qfz ,X,N0 ZٿY {e7gNm|vN]a:-[1hA簇?ol8䐾#HkE]0 >yz d 0Q^NȾpw@h%a/y1:%Я{躘f'9u;OY3y|n;.|vq35( II싑Rn7:*b,XL]rO3u4q q3iw_Sg CQP12UA*Wy%Z60 Ox:.({kAOaan$H6gkn2_yQOC-툩հE%746STe)}4HQ Z8q%/wVUǍ@H $.T0QmfVW"Aau'2vdoӈy,D\_>8|%Bt0`ޞCoegtl+ 0ocprH^B["㈉!Rh#пRf}xYBRSm9]fd CX'eI=c$?Yq#("k@1T~Ln~fwf>Yz>8f?ji,w1Ku$O01f?[.!_TI^JW,Ԧ&'T¾9G}Ϥ~R7 [*nr6ҤfvM/=]Dټ&Mn2̳DⲷI!GR_VhK?f?[Ό)77nre\9yBܥybm  ִ]U#Tj"-#ʫg{jAMZ"oK>H"B!/9?w;^ )y?lWŷ^P04j`5p\7A7:N9[ nKzKt vR}yҊU>kOՒkCu㢍 ?pYb ӀS q:П ,KW[ك/=\t!Ij2c璚Aִ0b1t)L͒A^=0tÀ%,Sa*5mN^TUO~B4S36+'$S@;8i#h' 02U1eIrrc&f?X}ԩwaN~7ι.@87F @y=/ZB)0Ө8ZhJT^ҵ8W'7i>yR[ʾϧk_39T_.&_`k-H}<  5{e.87N!)U˲ЕȔ.I8iΒ-3''[>fvqRV\"}U6Lwg.:xC/AwE;KM bcNr׿KꗎŐ9IOlZsp $@H > q͝N(C oׂ'?l[A88#GޠN>F86 }Ο9!ͩE¾; =^hmh-h6馕ג yHLtZTc)பI |5$ijN쏞L(v(R9?]:̫۹WDzSNr_102f꺘sĊyݮ']3Rރ!IEq] ).Y3$EGIiߧkޕ^-o:O^q:lʤT BCz_Uy=C4]M.+ۑB0~_r>zk6ݫH:%! H $@mɏ?[oO~97zw` N?W"4&lZ=^KH[ uj f^.ٚ%J :;b02E#ɤ 쓶;ǔU#fBLN .$?xP 9-X I"u? ֳso`|xQj@:PHp'C3jr>jgIK;xwOPvMt]F'| XuDdOVF< rka.ƂdA( gʸ3ѐԠ6=ulB*,Q͢9$~DRur0J8s7B?spp|l$>Q0??qS g(lQd6@~iI S]'׹鎁ǰӏ^G|7Gݥ[vcdl7'⠯;,]ZENG1;6a31첾]x=@CXڠ}EB5Fˡ2-GK,nTMW0FÄN ,%`7#$eRƚn * 5ҙS/D HC''u7{16㒙+5y~#ѹE[d= [P^'R\-"4:7Lg.}:$Mu'wur 9tmFWώEhfòv.jTtqQd[U_FXTsQ$kHwa#Oo$Yi sϠE&rU\sF颅&X^xh-%DB+z$>!&>q =n$s7OVfA ̫ ^"_*Y^*ZoĚ{CSHRv,s W@H $ f6|^:7]b݁tH;XLoF{6gB"tt {Cjy~3/yh }gOٟC1jx_+?uCE!a]co:eW8k- -{7>?.  @%5R]g / A~k;G|5QX8@O/|psziuf"nܙ &eܩLԒ*i< 4,pʤ;\s@fN!0E|>@R]F_D?ڷhaIup^ w_7BYR;kQ"@]jPv.dgh" L>)u$t L=2[*ay kAMN5T%p6w Apx2ġ ̀)ey;Ey^{ ه؊CuGm7ynDjJ:lmI7LժyVo;tɉ φ7>YTѓph $@H-!0,MGv~,V O|%L}0Iq2qȿL PMB lZL ` G@=OW OcH烤s I&aLҍw5~+.=֢ ,1!%n:]*ZBN[p m&J2b0?y ud;  ~5ҽt`R@t20PC]rܣ)s0rD-ZKRU$•jaȑGeOD.;NOs`v|jߜl浑$-Lѧ$"JNF=^iI$ޟ{'p+5 %l_>X\I 3 dS0䩠#&<"0|3jPOX"+nZ*n2_}8Դ%qD8Gن[5B)9,nZ5B}~P'"DqmпtgKZ#gݚwR a?ivϳ`ijkythJ'EAH $9&0{K>uAz0UY&ۉ&,znwSt$돯 }kĒTnN"m p[cY8D_o+) с)/.Nk_P9Oy./ WjEZoht2뀷 P9ƵҮs&1;$@H $h!c0FzqwXY:p"}mx h"qXq'`LH´0)a?,#?$69} td``($@H $@;u??.welKל }q |Ur 2, Z4l-,*.1]8qENr5tt݁{r@p<,@H O#!$.X- $ 𰷠x&7{XK{5n~M$ sh_&C5U];^fTEIB$p4AH \Zph'/(^ z' @[\ rgY``Da#BTorAF7qZba7N4sO01XO8i"aI0ry=@Hq.^͈O$5l2S ]jDV(*_Y+{Uɶ1N6^hA|%JO([[AQcP3eYyyQD}| 4w%w{AU7+MGҨ %*qh-fe"v&KHn=%\aې{ݕZR -SF*NOP4ݶݪkv>iʏ|q65] 7|*ei&dz&eIej.STx d;}h^-^7*΢@ǜ|Zݔ! #Aꞌ M^MP|$\MT$/W4( L ~H*ܴ[ yd=:Syw ALt,w~' X83Ӫ)nx"Rߔ'6lg7,pfLsZJKOP2UmX ƅ |D>d?9 \toXKO2{ŋyWmgLLw>pl&%S{BsYÑ d'X!ؘdllw>B00@H $h4a='aL'Mc7Bl<|" 巧e,X_ri Wӹhβ篞3w)aᤤI/6=\wf;ܧP.>lbދϔsz'`,ol`ﯯ޾pxc~VINXF\'UYjzkک7;{ W͙^ĊO2齋T*\kN+pe'TsW9=pyqbB VĻzO)\?ǜ^@]=Υ!ߞ^8\pwjɮoՇ 0` Ȝ{g= V́ oCF,+n z]|vS׼rk4= U\aY@gtq𱱙3dEӬ/*0pD]}\#יY> ^(^W_#O 2'SW_0yͫr)s!͂ITCK&;zM)ToxmF\ ;z.*, 펠~NgO5h'O4s߾kB =;jj ~@8j鹣׵? ] 5QcYA&j\g%ߧprIu`H@Kmʂ|D [R\`#HNAQ)*a~}:QK [h`J& YBZ*L ] C|i$%]\OO22 @Pa%,_NPђL=\Ւjޒ rg` H0A_.)Io*,?EI3,>ERci@E _r'Wq=F.H@pjVU/!Dw9D %l J _Д',=|ED̓kPO[w,ے,XC_,{g>G #Q]#7虭G@QTAݩ硸eG\DpxH<@Nxeu)r&@W^@Hȷv]} h9pPwg?t:ag[J]!L3z ^IS)%&Cki_oSJ, dp \@9o^s*h7g*Ҥx֬Y")R0uSD)Y=Lp?F3w8w |a6)8;"U'|Us$J2᝴PsV9+“#P<]o2w8L{QY̹+O`Cυ QY?zϜn%\LQj9nIh g&Lsf+e-3u3GpB |y l}Фd ov>pjp#AzPcbra$@H $ȚNcĵ Y׬:DގT8_Z{ UYXkSX9ffQ;'+)@\;Y ]8>)|SXNNet>k4 I}#˜}86k?M9z6N9yϚI#ByrNauȹ;ٙs¥t8/SN50 @H $@猀 f~{7sn~-M7dLHX# `&vFVQER2A!M|4MI(~Nq PY#zzMoTk (3wa?(?H)e2Pp8^ ۹ i|B8;SSBgΒ0عx P f;b¿\LjrMq9,|* ~DwF%^R] WmnN=rtwo??ſȚCnf7eӐ$%FH $@H Ș*?BGP/ܡ?kV4V5Y;,{Z熂*fʚI|0K4yPiALѭ2r2Zapʙ rE/!!@,$#UPEr2KXL$SN%+D$F\`!GT领!&BR @aGVWGI; 4r~KMYTt "g)_y*"D4晴*%_2hn?:W"HAe& 6$%5F2>s-[F[/ƨi@HB6Q{NIY}ds1ZWhD}2<+H#|jx}2JX.49Xr6`!l<Z~KX+nq2gAGdo&' aas,?$*%rJ5?T2҈Px,0O7LbѫPQ}є$\8j̐Cr aʏ&&-De0oq=6@' GԷTVT?B(ƲCPDVfa e"6Og&guo(@`rhT8Yx$oQ@lTDz}D1@LT0X٤x/d {_uA:Rw\l&w#-d["lJ^ޜ =` n@NOF|_/j22cǷFFbI»7$=qf&qU5pj̪VKM[^VJU&;v2v4ȶ`4 E AB:/;8^V:ND/54p y16&S1sb@/w5=̔zL|X9F;5ǦmҪTg(QkR.D̝&MJ'1&4f[QԚnZ~Q8Vו }m'o* *FH]@|TiqME6T[.`KUA@H $@H $@ {p!_K&ۍM~Q G[-+Xł}Z.ubDfp9q3E I5C&''\> ksarSDl3(?%S#'$Oi{FMce%rrCӖZ"YP:Sy^WH@Pu`囜p8aUTy @2?/W; k/*zЪHzvM]˒j*qO‡<\/- 5Cj=+ԅ\Z^OYَΝWR{'bjW6&"U1J_3Uw5HZh*HE_G" 8QdʾPLkmqMhJnͼR=PRm$]XQ?OC^WMn.t^#X-Vn4.\on U pqاV&x]%cg/قQ@H $@H =LumOj $@H $Y T18@H $@H $^ <8T.kUJX- VZK$hW7^ԭFWW/rkD9jIveB>rԮ%g)/UXa*F[&vsYŽp/ků(=4ev4LR\p H4͈Z|h@ln&A@^|?nZyOfug$(+hg&>*l^TZtv(R%BA}GSpU,˂ 1s Q-@㎪hk]<.ʵ%B7NӐT: <4-jR䞹һ\3P~6f*pi ]}& &֠L(L=o@Y8-+E3QlfPkz4"YU*40hSh2"0pXoT)_$0a$&3gjj~l?cΕ{ѷ`6""csN?c،Gx"1&ȷ!&:}.<&UTd ]: MQi$hd@Ko[MrWzS47ԢmphA+{o MjhC}nv MnBzc ߶jX6({(LH%po1Qs6P___TTWޓAS;ՖP7ii{2A]A f^hU78h&ظذ0AEHQؽ{w44~Du,k(9k6ڤE FAH $h.rS.5JyQ($pN L4N~s^ Cۤ|} ɓZ6,֥5ozg]һTU ֧a4S%:G%` ͧ @hX,qqqM=6xu/l:\:G ewlԹkFf/Fm+dTMJM$@H VB໯>T0̸af YW[#b Mn_?d#/ϧ={'jyqS[[ [GO;/,X->Ol4 ZC lh2$!!:$IA|ʑf<8v;l6'戍5ԮbbSPA9X-jR7T$K ct *,kcav8;`lsg`t$@H sOay 9"%##~%:<&:X0ϧ{323N6YM>Oi2VM0)=5P75uIxH!YH\0u/<:hhhjD~%W?Wo^-E>?7Maʪ ҁ @vvveeUs ʿp6 px}Z>OZm8h ! w6 NHO p]Mł!$@H7e`^E:S끟n'ual9u&2N G4Ǹ(8O +]spϏ>ÕXX&8M0Ӆ6uLhY>O~]cmnڰiMz]:tm0'($GDFș@wl!!!U`wPXf}rI_H,K '|pmŹu!abQpDF߿ߧ.\' /܄̎p@ {ll6f7}!3@^{Haf>@R $ C+@wp$5a7p+x&""d2R I Ɗep +yjShT8V`|(а{I.{%k7VX=&=NÇj|_SUJyP˻w~;'T7)((ذa|ٹ~Њ@q0 @H $(c۶mx[ɹf;\ qZo Ymx>cmkjYV_7tR`FH3Uaz HWim}uU%&Ĩp}i|^N 7͠{oAo0^nۼas gDHB(yش?x+]VU%q>,QWkJôѺƲK_bH8jjctЅmM,W1,,t!_={¦|_"FСC "(642 '|'ӯMV;C߾}}i-:ӧϨaz_0<@H $.FUiii0玂gZ]Z|>* 1V?2v KDG1'򎕆 [Ȟӌ$>=Qӡ >aի#V Oݴip1[Wž|oTB0 {͋y{9ؠ6<GO6~+a9of!YH07Wh{ZwSKdQP+ow߅֚T-3\_ۥK}]+p[ 9A  zͿ#[4sVsQđ@H 0Gn޼yhFp(Ρd ΁i3:^04h0Ø.3)ߛY##q!6 G+aP'Y69d1 Ǵi BuDDd& jiNK]ynĐ3{5 }F|d}LQx YwF|z"::NUhuZ_ޤo7:G "{ w<s-\d!q>XOK2PSRRIB_ PԨr_h\0oW{ӛ%b1gscbb`zh2VO7 k e?iΝKccي>W?s`2CtФ* ZN= I55ՙ \WlYj|SKw ,b*Ay!'qVDr?K_# %5ZH @H 'k׮e˖ʯjǎ#F!k׮C ٲe_| V!! kYa h]tmeߗ<4A?}.}bm^s&M#Cl[}[( .,>jOjHTx4xGu_6qړ}ކ}m311X.zx4q6p:F0//6TӅfn4;.QYe>5z1Rc){۽/--u[x_&n{ p:ku`ױ+GI_=w & JG`&e06miZ?G;i:`tJVZ ŕуz +\ C:Vy+${ =>jgERb;X}pg hrO-D>eO :K'XK!|ͼykʹ ɩsRV $POzPg͚y睗^z;. 'Lp=?uqΝS;˃tӫߐ˗C/?|}:~^vb7Sn[oпU@?c-@[;՝|+ #C 59\Hl0M""HtIҐv%F՟ĸ0 =/LjGQ RQ }^ sLXcul͞6oW֖40;F/}vsO,8^~xى *O)*+(6VkM `;@Z$ >_8_vB7MV\%U il06CxmXs5k6;i{+\ o7?:5\Y !u=aN_" (j$sN"4H&b?iԇ;v{wߛs>Qbְ `RS4+.hєT: 3ՂjJJs9ٳ;U|gϬ7ùkEl=3kDp%a=h朳>x"R$](G OٹYtQYB~'@H .rRZł7a ^,5yd?C|V/Pmmo[g^ֹGv=?$=;aZeL0䃭_Xێ?;@ #HQ}b{ >W/Ol+~'\ 14'YC. e5PR_uZ!6$BWï*!h\{?[WEmZ<8&'$ /Q gbjv i|NG0z|egkϜ+,՗T,F.|g; حbfM6=(C"$+8W|.+-l/M>?8;)t03oc6 QXs0جޖ`7U5 X⚰;b{p~ CBlpY=&NzbI}Ys̚s{CJ Z6/nX4(%)8'_fe,pKUtɨ|Ԟuu!4gi+LK+ۼ e=KfgBw^+kJ敻Bypgsq?,0>% a|G/7kb Ѐ-L:`.V-Vccq݌ݹguP_W#epIxv[Q:Kҕ#x7\L6W_<-ur6X\AG*Iܢ^?ÇrΦSyy:@3hIN&!!:htݥ{Υq`r0FP5myB;ky|9̛1O5[;$IYjctU)==/$ht\ƀ OI^w-o^W zh+8P/ÃvӦͰǡ0 %o $ p*ފc}Q}^v=_8?;|`فjf56? / ­3K/Ȥ:.]?N`?(*53x=5KØZ-+/w:=7HUiEqw4H)A@L*${%2y.3m} \ue VO ; $@VVUW]_WTX~|W_ [c9kmew^ѻ~~8%ykSf] @!13&AWuڐ0L㿳7ϧ6 ^逗{ËBRaHcB^QK:L/9 wcpk] ;4uILV.YֽjǛ;(BCQ fZIߨ):Uvo&o( N@`,l$"z+IMdb:gf^r(?{V\D< @5ilsl\|9Yn&Z*/0%(Kwƚ<ePwܽ );(l4[>S<&@H G^ .U`@}\ܖP/Λ5JIn>}*9&yo\>1i`l0 K>I4&l3W}=&üp>_ ԓ8Ƶ\ k@[HWF0b@h>'wWOlʍj4]9wߞMtq1vX&<>_ 3L P[ S#f'n935SC4!Z x N].,2 ~}wP7!8#WUY.v(:Ph!q>#p(n];'Jx; }BB ^7\J/I##|oY7KL{>ÎznG>VVc'q1kplK-!EMk ~.$t)ԩšk?#g֭%F6qT r[RvzϺStNekR}ЙA+焹{1?̺/R!`.9 yKEi\~-BBApk+a~ FA|{ $*ީE 5C9_}CW*8̚ç~__u4D,8?ڜB5^ Cg[<2k9(qקvGc5]%i; /0Cn,srw8_ܱ]_M_w:mhnݺOp/+y~= po(W֒:;Q;u£"tl^4{)cԿj`^>"^&MHdlվL>{x0dg^o/0nDJ &zXW+.4 Xx孍SzͲˮTJUWW'GAb*Llbc\j:UA_?裡C 7Z#!ʼ"F2F)aqFŃOGt]!NRKHsIw^yޏS"߮X@7}p+/5.f&d,jM;/OtGWB-ijinÇg+p//8F @ $:M Fr8g?Ag ݀ G=E=#.629>,-7Xr+9]T*1[r; 06nۮNa^=qw>M:zLf1`i_W%Iҹ,Z9]X@FgfyUx't8a|a'P3|m'Nf<687t"vϨ97&ڸ-]:&!(;`ag=Xv,[e (ntOn_wNd {庅gϞ_H~y2'RRS+Fl\뛮 K ^vvNlb ;`n}.<_D)Eq37n w[#FwwX___}NpVy_1|(h>gpL(yUP!c*{#= 5.住>eSJ5^W=uxNp~SbaCPFa?\u5 &CB ,<2*2",b? dh; :$n7:! F`v0˖|H~p_r)4=B9=򩻻<<(4N lv8gP(L})P9`oiAl H|pLuKLiW]]"xkKii=whhH|QO{l~'?nCC"A?|lW:p1P߯,܁9ۡeW@H$? KFFF;|hs+|ryc5EvNFW@*u~%0yoS}nz%`-ݛ0/ rkgy{A&Z-!P6ߐ&q{lPA#VVU F菨f|"5%tFXeLEfC {|}{pi;*qpzJ 9iDΗn BUVTٳ>=2&6NX.M߶m;|2dPJJȚ$_>^YޯM۠/ ['ݾԧK. Ap-o/ο򸸈V֛ @Z m86G/@H 6NbbbƌTjmݺFVR6`2:7-KN=jpҫߛsVSD9蜑!I GMRA$۾ۖ/~LI/>|<&y ۽Y?sP?04>T,l-/lAJ&MypPl K/ҞpGJWD|D:Tcj]b^ xaL&&GM; |n GU"UStduUY~ҹr69;a WRG%~]`H $8MSm4`apbj-A@ _+@+Y >wpM] 3w@0>ب8X;|\"O~Xm2zhz0Oa7 D VLt>  eKTvNtԄi$оcXtt'In !0AW PK @m( @H $h;BB`x؅AI [t7yOM1z,-WnñpגSA]YVVG_@?wPbjC5 u҈Cf <A%e0Q`q\^PWEmm^Sn+&ぽ$?.{I&H $@vGH / VmwT>X&*/ \?8;0'iK`i7i[8rn5>8eo۬KdlTx|xieYHKn륞Iw'+JMiY s@x@3Fh.jmhT;@< ϯNpr"8$-/ڬ;u4>Kn Ơ4a"#lv4{zQ㔌NTf\+Fɂ&iA$ys j|2 EM"o5MFA WPCM".jY7U &'iP'Pҹ/a5a߳aʂ_l*ߒ9{nL`w[Lf&ȈȈ:HёKG6.ə!jr@145 'G~l*gwQ0k*YHYU"r @Jۤ5,u,"Hڱɴ_mDiNAhS٣e<'U\-4PA55Pxoz"vH=2U6l^2ДBVD6'V6n: \Mwr=vD6m.MgPH%ʠH2 MF9j J=P`Rx-f@ @Ny(x'Ac%2NhGcZypߙey + ׹OZ֠3:+=$I&(+~7ٮAeW>Q $@H $ZhPK !$@H $hЦGH $@H $ԒpH $@H $44C@H $@H %&0@H $@H 6MMmPx$@H $@j 0UUEraY¸bXVs0D".HY,"aXF |!E#)'pU68e7!KIZjĔC, ‰Kf寎8e\A8 $YqTM|{Rc-SpH)4%w0`umJ\p741pEB/+@ IM$ߚQV/j@`)!0L\RSx+W),1mY6T8Qx 2q_*~+4s {lBJo(D" )B*]+\mխL4rV'I fdJ ^l ”A',{3233o\y69|48Fg 0.ș,d[mD/_hSW* j!hD2>'*l&,ECaRX~4U` erQ2G+5Li9,s;L}5j}Qlivx4[6@ *͞`pd%5g {`oһw"#+I7ij$͈đc #0C T9+ɌmiV+f>G "sm#ѠBUܠTrmDfeT)q:T< $@U>(}'ȏ ǜPpjWURGOL@c C3wSjȊ@vLAE5 i1yf핔Xu>xʑ#KMCAOKH.DCR?jP}CU?UrsʑBjI*k)l* p\$ZG0yC: M Aq~*kܷmS5Δ Uy(X-d} >$-} aٖsQ?4$¨|̩jMaU** >YuH>iBgwr̞kOc $@H $@mcomLd $@H $kca $@H $@H/`ٺںzʁ"hظFiɦRߑ@H $@moz^x )<}sflPp$l*):}DFf^PQ^ny6DjH#Rڱ%Z;$uq!$@H046;c!)9{>m('UUݻ  0u -!tVhH $:yߑsh&ĉO*,<%Bnfi_6k  WTTPk?wW6@,@H $Z3#C["L~Kk.ʆB` od sLM}=%@H $@Was:|Tll4,|uQQ*ca0$cH^}F鴤BlZdʒ7&ƄjBDbr۱C[CP$+JZ{3wIf&ё@H $&Z#=hv>\u͍*~o;Oe, BlѺ-g7lSH&;/?} BN}G-fYl7Q1zd Ӥ%'KІh J̧ J0$bm77DFx)/(kdsL#$@H LxGz#;w>zW_<;zO?[gͼۼEOQ#,=FD* ~3%]ڧ*?U\^)ݷzu &q6sZBXXC̈́Xq]&-![bll*`H u1qq qkkRR|iiA(FAH $ 6<{W\}/Y/7߅{t߯7 ڵ?$M$oyڰ䝝e0v~~&~+>;o?Gp1{̴H!35 0XRX;9KzVKXm& f&)丄<>2T)H7+5 ¯~~xq߾Moߣ{{PQV$E<ЁC FGH $#Z#=~/&$!!!q)I~i8RSG2ǤEWb6D`F#}tIu5EWP\s& һ}FrtX9h|?}Wiof`jP#Zw|eg/9%XP>2 0*J2_y|򙈲x|:j¸sٯ}BmBşޖN_;\RhQ^z]8URHOH $@眀_#=~?8١pκؼ t0شiS?^o+zDZ=L_u;ꡜQ [J!v͡y˺wr8|g&4z8RbX k俟~1l&&ᏝS~?G4-f]H Sߎɾlێ#yp^\3}/RR7P$q F$zPӐͱt$|ҟr2Dȧ.#`f2Ot)vj>W '.oRYKCe`0H $@珀_#=^L "sӆ[5jX}m60 |}gEEmR,ds y .G\7%?rp' .HCħiB \VJح\&k+WlZ Xm;hz}FsN<N_"+Y@5<_:  goإ]zc!#5s4l{FbYeZ !KZlכoJ?|)kD/z]tl+O\5mq%)rk qe` >0"|"$..˹xUM# -7ǝWY "UFZ5yUG>Ȧ< LU 3Uer}AؘE +  +\`rI)v(iѤT|4=@H Jsw~^#ڞc R?k|P?ka+kj CB|L$wG5Gn3ύuɬ|bl?=%?$/nXO&L|D=gFW#EIt} SZ*2kв _Y\ o;-Օcۖpe>9k$-:tڂ?~Kztb9EQ1}3csst)$ԸީQ};jڿy#7v8Msg􀏠}H|gWݐ}Sww8ށ'8c_k#*ұ´KMLNKMOo$ iuLY͟ ߶ۋ \o2csG3u)x*Dt&#;OvUlr, lvYhF?EWx @Nʯ/NȄa݇l٧w=Gu]{|#;g[hY zv=.;l Ԗ7fq0n=-; "rT~@DiI\,M3$S<+z3oYVZP[S+0us*N{? [L޾wֵKS.B0)=_w of4=f@H BHGuZI***/|+A` ͌ǿ^|a%F?X}ܕ%?fogGE+a!' +p~>1}RRjO q*1YIC͑XaKFt;xmG>w^E9(Ƴg+`/J_n?kd{ȝ_u\_|ް=?3`}F'=ngxEWR@6n]Vg%a!Dvʹ+& JץÞVûh!TUUWF-f~{{gD߲pW\$}s{ךm6zeIt_ޓSYU.===nF9:*"3#M!@Fݺ gohB" o6YojB|l۲ .;Q_ou{f}7OqlٝSV\2f谮 󣧊:ӄhlR &kwN׮MF?y`оo\k &s=v $@H%~ ?eo>vxjj/3jJ\iYjOM ^}~|gr>ĸ्)e~艾 ),m_eF8j |` ơ aǎ޽Xfx%L% H Eh!ȉ؄业;2K(((҅D$&&(Z]]c33$5ɵfFlf" $@H `;c۱}ǘKbזs&T0,1FD:Y놣mT񽯜ԵwR/}zYkfbOI~|kHClt5͉c<4PE-FcyE5 RSጊýHB&ܡFė6"FGH $@@wg{K/2sxCuq OOJh+ܴD1jի~1]ư?w`Ĥ:7w'n+G9/B`(/ksaCFGH $hwلƈHؼi:| J3m8('P P^QYUQB=/7gA $@H|-ߑs4;/ƍG;ؼ&ss:OPSYBH^^S0[$@H ;cnr'LDH'q&J<@H $@EVd,.@H $@H w1: $@H $.BaH $@H $. ˲*ǻ= SaԄ7l1DŽYf4BX;ksùyҐU[_10@H $@H VDbcl6 L?wߩͮOH| $@H $PGT|;8Ag W_xo%0N>%Mb($@H $@Naڟ!̋/w^a-` @H $@H@: //#<6ަV&UL1@H $@H VHa/@=Z  FVX(R]&m*ڳLiS(,f0EF]-".n*0 [unjtʊb:! 0 { .F 4Vm7&Djd//%&+WfحFD."[5yp1{1b(yY.F Zrl/2P҇m6;湩MMĤ䨨h%lfSyYixDlFfV+$ v^4K*cBLN VCw Ϩ a7s .{E=c6,VmA{;`EUzl.!Cb#KX]chr&Uh``hs&b1d;TO5upn]:gd^H?OQ_x`Ȱ zB%ۯ&4F @P ^f>^_?7~ۖޱͻvsf_Сe,įb`$p?> 31Iq!qa p谘g,@y/"`m^C-.?44",,2,Kψh   5`6@z0huVK?A˳_K+Ω /yhZ_Gj4paQ@ Lz2v+bcpڭpޮZjã5l͵!$0F #r98SPr V3Z` ݢY: (ֺzX;<܂Y^ :渒Yz$Mlg`avl%+k8]E g@rLR]%>Ats 㳾DAqk3 >t&s$h't;=?Z/ ~};~-8 Y붜1`vT&9U?k7U!WAD-9;]1*v)ã>p^3"jcbzvakKΩ @Y9U-4 8ـ#ڶUOoW;ڇIf(-22S{4g3l %i&G6Uyk\ǠES|kNYp#zжӤUf&p՚lR7+|<[eV';|+3[ۀ:sj;lam+[Wo,hMVB}:Ep/ȋ_'9,?pg|ዼ+Oϥ^/ϯmɞdɒ.zl@eʾ>9ř[q[rw^>$yT%ZZ`֬Ydf@HEpS, Wo-g@A1-tIr5C~dZ:ڪR2gDRVUT/9}_J=@jQ7ejXtig*b߻xelO"$u$eFwx:bF&}|?Ex>RK-G.~~v}ӟ_r7WJo=?ŝxrp/k_@(wQ |^~"0nٴCdXdG̟.E]. S`H-g"_Bvь0<lV_];Y:ïܹ$?#Xy-''p"=Pά;'g`T(['5y"Fsxp!#.O`NY:%{8kJ+(X{|˯F𑬯`8[rP2O%z p;{&dddiRT("i.),1]N,uWYԅy{e qhq;5Nm J_%a? W_|hׇ `PjK"!ڿ+eaPu[m|j8WFнJf&kxxަvSfH\Hiv@_z)>tZ{{`NÆv$Y4AǦW{Vh](oT:m8;+9:A*ɋ]nhM &=gwRȮY&J$tHsrN't*vw'2~̠$!kflH"c0$Z chxiMǏ5fgscJX ,pE e q` ee|ǒ2-r9b'd9R)$݂U.x~9W >`j׹$)D 5OE [*?n?v*$KG5k/?n8&O[rH x6Tح (t|]sN_.`$~m!9V-[JyڨLIiU-|+^]8|Bʶh{69jZyΟ+wҼ|EXNu +,0ܭ"șS6IJ\R^^%#;D!@X53.Dv2gZ{%?']w=~8b6,/>߿WnB.FO==ҽG\'Q: TPʯ:eeR @ى\5ȥGCH 0hSΩ @?o{Q w=p*]<9,"h>Tu4js<&PEH˳pWF(^24X9ۗ4Qa?;Y]G89 Ǔ`ԦZ`H ;D>tɃxJ|=PhW# IyU.>K"nuTM<ñ_,]959܇J.9N1𴢝R?ޓE/p@}B\=ocm6^ΕQw6|xϞ?vMcs֝zOͅۇH_3y6_T; Ëwjk8O~O0y܋G7xRTS 9GYğw*~!Bb I|\z]/e!PivNJ/~XIS]R|I)":u: `C]t|X S6>MPG[KI)I3SQq@GHm߱Ly#ltyk]wBc$FS?nD7rq}yԭg-LqtQ{28w w^]Q\0Q9K6"9EAV6Vԭz8=KZPan~VG!IT&d9qem8ITQ1.h~sk2V}%%'mDSUxU:=k9h3}su *AH^?GmN"%RF'(>tT 3"ifr96jCcѹy`Q{~2`sy>i:| * ''Ub kU>7|{:eSSםtj#P.@tT+"2VyW:Z6儠eQzv;NR7>`-'dZ>$ok+AXV@x]2mkP@ Zsj;ͬ^q+n]dbts)⽙;< VN.LU<<}(t{N>;u7(MV.07B ҈ꖓMIvL}q_FO2AtvX[ˉg)^uԋRH*9,$W,3s;sf%pTAjy~ wGwcpsMqJIVNۤ7^15 6#3'\fԨ٬@}t);[?>tSNR@ QY{[X {9]^d^I# ȴRgx | {udF _'tsI t^wK-6sE] |ҿI=O"N/ǿWN[6e- wo#ʀ)Y w7 6h[GvY3\uCu`)H8ο2q`SH`|I#w,( ( 87G!u,pY-<{ϔҩ}ղr%`s飢bcKX]chɻ08]ip)4G@C'j-;79zxz]ZF; l-?a[;tyn;w*MGN>2`@p5!0Eܡ'{~CmM9hmQsD@Jd9ʼgCZmoa-,up^am^Ulz-Dgz܂Zn/gн^Sv @@p8^ȩȿvHmKj%;vVd-5(@:A$s 2\\\jb1j6n'[ccΙ0mi6Yv,#(-Y! i\8΍u1'|1b(_.ܛt&l{ N-,WW;vsbRrTTja{oB`@n `!"[5xJj$\ rcm c]lF EMUqkMm.8RYQ >BRBB*4…@H mM#ж+GH @nJ 0FH $@H $V ʍ@H $@H/h FH $@H $V ʍ@H $@H/A~#_yc`$@HK!x1:@H 8\4@H $Lhh&@@H λ B15$@H $@ZiŠXH $@H $KM剩!$@H $hJ+BH $@H $\`pybjH $Z\;EAH \s! ˤyM !$h3ش-5ʌ@[!VfJe ZZ1M$@H $@Z]@H $@H $ZZ*@H $@H@@ $@H $@K@@KP4@H $ 8SOJ}%+doOye>,a"&6U](,@H $@Rvw~:k d@M@H `?k\[ԚF L)FGHB >MgŹi'j,B 4\Ո@H $ND5|8x^'ԭîz$H 8Xj#&;8D&]K!VBM"P $@@'~΁' |}c7uWJ"p%v1HQtmhJ" 4AMD@H ^5>'B:5ԛu53ze:B/i ەw(pͮ78Ss%nICtK epy4ʋB~>tv PJjwYqeM7; Z=PmvjCvt[98iEA/hXjˉ@HNo_Kε9? _|XחʠPj)léJN]߷yih!rA.+(lw>^e:;qGq_2]wÜN.#ԼVoh]Cqۜi~k@ZLDRҲ8E] 1*h-L6/(pvlHH@@k $@#F2F΂Oεs>2g b ![sQo[!3s׀+r/ I }bp]3)`0*7l "o[TΩ4jɤe)$ٵFJ bB g9icp$""X1Q$@~4xZYGxz~4y4s>.M7{8}ŭ','C\ԄQYʚaMA!$* 54ɀ=?/)\i4:i IiPCaaJw RJ @H $z)[bݒVΝ>%‹>)m×}^,&n*yP>>cD=y6\Kdi:}EqO._ ]Êz܎¸ gX|jO z}BkW(̴8 ",G >_'7Uh>Y24==Vʞd}5fcG7۪K@n*jPݨ14 fl6Z& nq8 q!@sl. $On Yָ='VLS\n||a['t@|qkt%aܹ;q;}<"p׹M ^zϘA @ ;dakkTƖZOtr=9g[M&~1Sz09$@H Δm/1=SNx~eD\@Ƣm ({ٍK=;P(`I@%zG^hjlMFiH{j9Elv2,þZCDf_R7 w˔6`*,3LV>˸  u $@H 7謅;8y[;6#B@`Y~)[z= 'L/hAm6kϹryxmqS'aM[yӈ5fj5ye]?UϾapCwx9ٻNn C*y<+^9W) *EH $@H hA#ǞY}_ߖ#?n&4vЮAm;(0[luSڛG͟c-7UCCC 9`ʝyy_[VU\Tl6A<(jꀊG<⩉a`K3czgF`sXrpQ({לe+:'hs;T1Ns9Xخ_%DGʼH)1gTnl?u'tmYJCBB!m&0@H $@H P,{OYfrϚ}>gWԩvI7ƄEuNlKCv/x.W/n[vةkž6Is }O M?Zu~ڵkFFFLL ZYkKf)146U) CǓr5k<[#DJXͩ;je$[~AckK?,zocoݳ1]aqgɐݧƯz#'~:+v|4Ηm_}оCׯ]v:N= @@[b w vS3H $rrcʭ@n䯩.хQU-|".OM@.)Y[GGž~:cN@eŃ1IÃ}˒KqEVLiWJыi!b8DW* $aL0={;$v)0"%VlnۻW@ İwG~8pM9ߖן Kb^퇤Gw c"B5׎z+d׿Tw~43[%\h;}>Q yMcûքņuO'k>-m~X0w!)) T6W 8gFf9A XZ]&~ Ђ 0}%]e^[}wgԯ/d 1w«31ջ>ƶ?pBrtۯW>5DKwMZs.DZf7vcx1Zc__w 4PUXX@JWܗ}zu)tK{U2PCT*} ƚUVҷ=^-u|GƣVL]3uO6{j?!{wmve)-*4vg @ Ny3[͟O&ݠ%Wk++Yx1g\ =aX~%;rK5ŗ_r$;SutP`B,,CNh 3&"7l]K3RzWoDzbb",}rTpzO 5 ʝع-nh$^Osդnute-. -}kã ͺP- 659\wgƱӆvLbIӢ_ةꍍs>\<~3c]Mz>/ǾP}}=8ԛln $@H $Z@K@5!9e'qnh|l7-= l?Y%OmL_t{ņ !]}6;IK̨U);CcBj=s?r^} Iݒ'vMzWV[u<-CbƢҚC9+Ӻ%~l7LϜyTLHkߧ/9VzL} }}S#?{0_7ZlP.dMy-{Fhđ@H $@H@@@?H'Stޞ`iاm_,; {D& u0^pZ{ˎb:?9GviǝoO~Wۿ8Oەg}_qگuI1ek(i;Ԟ]HuSׯX;j۫6-:<vݯ3Ԝ<=뫎9s4sqSt?r/oCbZlhsH}:XwwƆ$p{;_:{w;cF)/0aV6xU\?8Z$>T/yBxoC]h5Do _~)*\3?̟-elRxILۜ,7x1 frG+*7ު+ Ʈ{ kAH $@H u-`>6%7Rk.\_8@ݻ7̴[{>k`c4~Ο-V#o_]5.gDh?e=wbxM/z'hc C sZo^ىn"}vrgϞ `m³o0ǧ-?]/{cqnQlY%BչsgXD+v7lg7;˛>7]>~UoV:޹9ۍy?̺_}{w)Rb^ߟ9sWdmT+`cy׼IxOYFcVft&d 9Se7=-O\N[y?]=[Gol:9]x`cw?R^SRB.}q[|]wuVvlw;ʏG-ښFShxx $lN%%BIFѸEv|v'oesw]G;$ecug%v2nOmbDG{I;NZ`6חWz(jjb*h L|cX{:C]>6-s>%>77 {l87n5什vdcN~f.coϴwn:]M͖aWo>2`і5#n}ҝЃGYW^g-_\ +۲/i#o4v]S[\[mߞxэOE v?=/kVyx_yݺ]{df{}Y?r㿾Ruݱ ?yî-7l0~˝jjj?ozrKuB |G4Zݺ5?7n{sb/+-]Z>u;XM-ր>IŠVo7'&_9e=ыpځ?ߺ_ךgߕ笣G?aի{ׯN8o֒LѣGaTknn{?}hnAzo{F}moy+uK~]>a{7MyЊ5ݻN: }u[6=' vq8[k*Y㐬 0 $CψXB\8]$+&d@  $ HtSK˒kZHr,*F6WD@Nnii ?kۣ4TͦM]f׭vwA;|Խ'ma[Y痴qz/]qne-\Բ\_pWkRV.'M4|~=vk wظ?O;mw>z>wm}/q#_\wM^~ᢗ__z}O|b ,+|;HOo>|:~o+. `yȓ޺cn[z1cg}?VW;~WVll*!5kow/Mݲg݂VXu`}9M V͚t }O[.c/2k'k6ߦ&2.Fa@H@dqSKv"!يfGy@@5XsK>u`]@'8TDvi:O}tKa@[j%v}> .8gz"/Xn̗fܪgj._wgUxqEF=hAVE}CG>ʅ+?yڳg>- tt~?}Ӟ631@0tP>ѪUҏn-5f YХvU:'O%ӿ2ߨ3棗g}k_V[tuq}}F4W׮y[H8dnkY8y]Я֯|9FyrJxTպț7M`Jƾ EN>!X}kSݬVeD:[} ;}O$6ȡ|7=x`a"-ra@(3"~|+ͫongŋ+y{,O0oS_/ cP]ő^;gͼw,鲾Kʚ.Vt#γKHBkޭ[n|{Pڞkz։˩,p̖zC/in{-p!jMVXŽj{Y-YkZ1R{hYҭk7{~]n֥5dYI9@'8fc҅^=zuX7|K>\RFBۥoyoϗmk>Yݺ[4P;t+, GtAG.:-ikb$yC.Z4zx5XtЁK7߬ʓ|Kkk.u6!@! ο$J56Kms•k z<1~/ 6†kRMNe^Qj7lX@ʼOV`qMgr[&"n:Yʖ:.C<.=4hCgWwy匕{W,.OU\VqeOSc,%bbTW1OTHBurI[QY\w, .?>ݺǥ _/z6YWWnTy%MKj]Qb ")fKHrB1FLRH赡w3k"&\ccR@dnER b%^#I b(;%cSw;K{wS)4C@b %0cQI\a]l< j!XxK΂FfD οLCת%qWZ%;^*msSs?q̶[`C[$.bJR%siB,йo/%~;DRRW5t:! ֆ}N{٫IAqū=J2L,6֚p"8JXX̉M6}r$0%ddD(,ɫ#g.Ƞ)vTs։HJ1@$Uu)B'`4 L&e#CoqXC/v)@<'Og*8̀:#%'67+Ap@gZ ~w)b#=އIeZ7rb%nBz |t끣f+)VuR[Ԋ4Vbz*#$QdȜ++?6:U*q*U]ڕW Sps֢jKR(%};o_Yw6Smקokq>H7ҋ3 !@RL>`={gusc;ǔMf ^S3ֲ"q}Y*@hKVYzRY~]jجKCrm:{d r{[ӷ_]?q}~" @br+v8`ϲ&^zaY<|>گa: @ Nn\e-k֦׮Z!fCZoSzS:6̘.;tA P܋'D\wu߳n,gm'O{woNr ' ?T8c&MjNN fC  b#@Cym}>]kSRZoVZ؏ fFn3׼ o{C?Dnx0 P (S q߷n-'8cxe5L{kȔ[j܉c\j+y ^Qn 9F^6R*7l@Jʍ["?ߒz֍KBU @kz̡wLYnMKȼueӭ˦M-(߮g_\zKx@= !X0 Љ?_e0uqooe3/ݻ8mCu.H'^5wüQ{KZ CH@'2I9nX @ɄeВӟ 6[9Dw:6B b< @@1ԁ@ l @ 6{Z@/|eu 555Ǐ1C/ P &i#@<w26056BWFBF@Y|K_+wehOV)Sy䑖k&ٖi @:㴠@ ЮF} ` bLbUyIZHࡇ*k)tΜ }k i A :BEZ-mBF.cV9$gy[ ֭[9e˖M:o{h6 й K?oܘ= |ezޜznKHj&Pۨsp!\ b2hES74ojjmjIItKkKkFNuYӚn;2rH|gyCnѥKTU+Mz]GψB߯$ P.E%P.թwQpG#wL"Wzjجˀzۭ_߮rIfuMIv8e#$Qµ {_4Kc2=@ TB6"SvْUTK%צTSK9$%6#U+n+[ @ Љ TX`S?I䩥b@:R_o?tՀʳ#k$l<[$_-fq3hIol5(QV~L 'k-]iU62KS"6"A @"@ :n`.Vd!HᐁQa^;͇.9\ `iֹdCvc,-Y??ݚVe=2!dM6* eg/{\zܭ흹n( %zMP{ ]Ӽs%M~{N~Q׷7eOt @ R tiO.QU:I%L "TU)i8תPU~o~ӵKx3x;IWVOM$.}]'mۥibU% ꃶ>W̮>*q V.nwee[h:[y6Sz(RWHAS஝aG(q*A'`?nIjL) ٗ"瞧mNQr'@@%-rS_t ֘! NڂDՕv{?XX"s}c2 @@$ бQiD#2 &튚 GE @!P4daه pRsvx@rGױG^W. 48V*Z&x@^wa3#ufӴn|[nj,l#aփlD|W2홉8Qqٝ!7!cZ٫&uOw }OI.QH@!S⹶<˵>X//N&w Z%^l:0B;PYr)vtqiξՏ?Rؖ/*w"* :dOIXx'g9뼟;k-SU1ZN,d̷_朽o׷uVgK'V 9q?g*53@W8:WFkt̉/]sNV>S3FWfw&w@9 @@6Y1;nN:hMpD/s@J=,cYK?0wg ;<}\\q{DMmNyTz+K_ЪL{{ RbuMO7;Kyd@ӳdjIMAh.G=+(5/oAX̄CCcMFcϴ\MjQ:{$tzr'Nb"0&[qsWL()XvKc2媡]u\B!$N`[^v[+o׷Aǘh6AUUEObAt L!Φi.nu@琀A,̷2@`Ӗ6.{l&SQTw=SvowBլvETCBncobbad[ߘq3*=s5[ozId!xl}t˓N=46u_/ӳk]U[#w̞MoR^,-veQ{Nˇvg=dȐ^z8\zg}v>qE G7ۋ2g<ޜzn*ykWvDN'#}odzKp:ְ#DeM8ÇY^jAXe3(mѶa(FVx83Cl}i_MY{?BA(m?7Ւ}{!^淗93͆VYW6k[7[}ḅwrޭڲ c0(0DpTS{v[RsF[[eLkMK{Is/}O>vRI'lii*&@%PgDU2h9]=WjG~a?SA+ЛS{~3c/(\p6o?S 8GրئE ̯  l(#)3V.dmOik)}Ϋ؆O4读Vׇd8滽b;7C;,(Mn|(M Mڌ[ޖ&eLvL H[v;lϾ_ K p|Z}Ԁ棉өm%ps'w=^mӎ6_}>mܥ!(q.8a;lFV@k$a@עB8B ;!ȶtGwGaa{@4iR\-q-ĥ =I`gwKbGVp` ]iH.!f,\:ƹKEc6)Y-&| d6,z6Ck\dwYkvb:bXi]2WV~4^{6sժJ_Y(MeԈkUoՏQ?1(zEY;bQy;_0௎؅FLGžQ3ɠq 7l2ٙD G;y4EްN}>͹ dyU7% w݃Z kd8\:ry yJo&~{1 Ap>.XMoC#1ɿ:[ ~wٰ~u}>Zԣkl3355Ntȡ]ߙS`a$B@NjiVn6[< NFYoWkUӶQ)BdªdDg¿g#yld;1^{ɧF~on€8ZkS]7^ jOB Gٙx'C>0U>bm](v.E-;x^| uSm46$AIy:m/J!ﲌpy )dsHc˼pw ~wVI[l]k]co#I**!;w=`܇_ˤSg3̯?R%o[V6 X?~9+CSۚzLRW6.]C sO2{GzX,DɊv8!T<'=;H6vJ8ʦf]flUy ) 6t]\ iq{熕}EpF{ŅoAd|8Mypʱ7SI )Ҵ`Z,O Y[t"gvs@ /mCg( Qp%!,(lq:yK=K{!5U5_gV!x2%:l쎶ԱZq>-6Y5{&v?SLR\}"ֽʒ~O-I&Ae{{,.{yy{5O @@:aKp"_6Ыo }v9客oNmOjg^ʫhYSPr`/jݓrlMcsoė]u`CltNn|GOoesMg>47Ol?9Pn ɿ=$+˟C.Z X7>mkߠKo*)pi ~Ȑ!!H;P`gNELRޫ")RO]%Շʨ ְf8a\Ο!'CvWNU&,}o:-ia!oY䞧yՏ<ὖF'Db =ٳe9Oyߞ:6g.F*.k% s-f֬Ys[r-65א3ױIucPWϼ?>S)X?!mei;~pHDG.{I.ϟ+Sx] ѦwֽJapf(mooTLgɳmWg$˚~Qe Pzتq;Y{VZ@CRYM'P,{f=Ɋٙ]eH[rsBw^ǧj{}ό@FG%V$.*kIH@}T3,$`^kˤ$(@hbS>qg۲.!s~umNò^_ ˞-<;kr +JT5c=4^͟v{>ϯ9yhv[3[.lR=^S=O~b!kȧ$/gamv[?޶xa?`/?FƁQ2Q (>Evev?h2Kd[iR~ZN>/e$drlc 6}a;e=)+ P{7p8+H'I[CivYw9OO~c'SsO&6( yT̓iA YXpȎaCGV]{~Od+*#d+FO Ot B0/G_ݻ^]NY;i3ѓ[ ^]o?[g$Y_QnW=632umj'B4ڔiv߯謏//P#}PDs/@ woRʜNW b{jMa;O;G/ޝ^Fze #ڟүzTA6-!!?Qm |(zTƁ$)$>hDOXTYH h|ሧw9/?|pm[?J|*J.}Nk^|[浕G0<;v4)t}>x0d Ohapݪ%5)ջ[]iնZ.ܟܱ{9kV~u]v+cTÆS ] ЩZdͿZM摶H  PRӓ*,Y> 5:_-UERGsv+KdUǓ@~#_Y25uo *xȩ7ɩdKdRzIT?":π\쌃Oߑq+O-֖j6Zְî`fbӴ#?J/|Ǚ֙{4R}z,1]";yQ(O=q%gzguGgol7iK?n;o0³%?`|LLAN@,z{>_i`zл,Cݿnd* G/8AYolej%x8W0`}_M 2w e#:xv\>;N#}U\4C2a+WW8nV^r ׬o2ٳ0C <ou >bfblխ" 1= !}xLcIDATF% o:OwwWݜO>Z=֪?(C{|s)z2T`#8wNJ?g}O}.u|.y̍9が𯨵khm}gc96g>Ch]cj-u`:!ŒdkW?#GݚnM{-P|]ݣu㺽ƍr$ Įtv|+Tlw?E^ݻu"rL-Ԃ б HyM,?tmt7!#\W ]}GMJ `]oemB5!ڧ@.yGwVy1s=;Oࡷf8{׮x=u& t$r'Լ~Ӧ5~eQ:B%z;hnnjm뻞f-XTozwӳ;!l9!RFb2ԅ:BmMKXf-3u8!#Gt@)\E!q='Ogx KI]q췪#%Q2 F5,Dv7f @FZNraNxJ3oI\.,D @zR@O@X:UC @!M\@$@YI8W]:j1;8L$4N)ɓhdxg[w7IC;c+{\m M(c35&`I#@@$@C+o3f PqZV'2#o*tϦL_P}YOlU~i7 Q~1K]g_>1Z^O7ߝۃ0O ŋ>ك4z.kϴKKc#iKK 8Sg'$g:rƞX4by{k{/ۿ^ʭ|c|A S2b޽9f!ݪ @ @mM#A ~w[|aCym}>]kSYE-VMEZVMkռ o{=1NJQ@'!Fk{o7 $@ O'U&nUeknP@/>zf/m'3zm5~gǻ)sʢ \yܳl߶@{iKOl5J@/o|aұuc'H}[8Z|<úo:쌛Oqr0He;4[(B-7:ow[JjԷ`9&ݙ{%v]x)ԍ'lO괝ƴ~oetwaNN~دcG?8 Sڦf w^nvHF?J$P, 1z'2k\,ԠυV!/5 .=׵@:+O8?1d&~w7U!YrG_}}%h +ku\BK+jUYΣ@::pՎ n  NUħ U P ZNryijhrG9{+S7<چ_]^IJVm!V6AB$4& @q(qg={+^;o_yT/?!J"NeO0`g(  ,Q[Kk7n|sƎ ezA.N%ףR@G%н}f37[z8BuC^7@3 E4PQc   _eBc]MoO|]Bykf,}D  I+;ЛSm|DA!k%ߙ"tlj50 PQTp` څ6 .<۩tJvZ7[`ev ~ " P$J|6{Н|ߝ{,(YQ(!/ouoorH-ۣ.{)rAvۊIC/]'7T:s Y: @$pNw A'D :"eW]4/?t͈ߟαݿѪ*b{ҽCۈ7#_ ]<Fa\r% 6t-?d@ $5=h+xA {C].2ZVۯ-7&V~~;5 5N{ajzƟ+b_vlpXXםM|HXrWuY/FԀ @'ο*r>:hP]MBK t<+y+ݛ]eG,o?B*]jmY Kfݛ[>4Zs#qrSs{;Z A0뉫F {Qo?qgYۅ;y1gLbF[l=oңjS=%@b!\@OpLw6uwwr%e-gfĂ^\o{ܻKQ?vOwr"K翵ǖjM?ӊ8m]Ҿwe[,`[D*gaIlM]<ˮ~by< @@ a-: W.5pK;KosEl|#"'6fc_2mdS1~Z&q7Nm_ uȿ!Q}忱nYli ԩ ߹Ĭ}=zg3zp6 s5Sx(WeU%eJ T#B8j ?taɴb9'mPL6͘!7<r/E_Ln|;D“Ϲ]ү3JrYc8 Ϭ+]wj7dw 87t/^sj.{BQXԲaSǗ\W=?of#88-TA d8  <B3EyȨYQw nרmWV 7;%n/}I= >0y}~deEQgDt>ꘃ.˺j߾ @S+`fOݳ@7a,ϔBku5{I6\0GoЧ{ @@>j8ǭo8ekYtցCbRtXo,:uƤo+Uۀw1@@KJe_yyڌyٶ{9ܚaDC.^<֞}P޷ץEv3WCoN=jz5+R"в^>Qd4|kSvrOGpFDq)'T.UiPD ʡӨ#1[R:F]|aCxs}>]`pkbRؾƖƨҩ֍G' 0 % l֫k6ݭOmOl,Ouc洗!]|. -`k2]2 üKO(TD أP:4T'B9nX @ZZ!))нrsv|T>aְ#VEG@E`#@QبX  V(@U=/MYzVMkռ %soUb#@xs3 ęRnFMNUG~3*&tV9X+'aEoܮwڿ^hF_ j7mUfc}one'KpQ>7SF1 G =_d;^|6v8f/e?Puk}fZ}4o{ /iq7PoLg[h{sk#nξ)y-d#@NZo4iR\Yظtm}f}ҏtT YkV-6h@J9 5@ G}_,Ţ aޏP,_@n#֯ѣ=ʆ´ ?9 -ٟl0"0 @,$@]om׵|kȷx |ׇpxG{}ڜG8M,_%+/9dKJ ֑#Z7椵fW3Mw<Ā^XY2<۝5;ؠm,2u6:|܄ͶƮ1a\v~r>Uݍ HS_K?h-`Аw3@*X̓|+qdm=wpS1 ;D+XO$ ,B5@Ȧ%?z{4RCr jYa'MxvP܇uN%-m+YA4dvtB{E J0z9Y0R3{{4ʹ K`N h T; #($&@ i@uK^=jBGֵ쌾f>a/ ?%y1l~KZ9 #6r:eUNдEX0x">@ "`>V43캲[>mi @bjPsLi,Xa <竪Qހ%}$ڃ!N |>YZ:+9'@ Py,f]';}:t Iڸ01gȬ.;rΜ.%F%6 ~ebf߆1`_5U&a,r*e-n@ $7WmAهceThcBc3髪8X1DH :(څwh4 < Q=‡3zo>eEks}@mCw;D>:jй~'NW  '[xi 8A]a6UwX;#?^_63T~Q#:L@otB Ё,$H@n (SfxmKoU] غzUM)FE*ʘ23@ue~i?bU<[)1Ή !P!HWM;`#@  L,uxZI(IoWyn>`:XbO,? Pc(7,1[Hn@#&TFrA? &@@U_9' T *#ЯՔkjnJRj3!t%ZZi}k[8hH q@#FX juO8 R\@"`f-\_L,0n? J=@ `F@ b2`Ik$?ә\@"bͦw>7wC]bY5VK*%͹c; : @@9p@9ff`뚭鋗]^n&`FituY0KkkSkEC.:+#v? @sV;[.%׫TwԵy-qL iydoj>dj߂@UXzY/4&9Dzդ{֦OYMVjiMۺn={i }Fh.CzjxͩG6^Z1@$I**mԋ?7U~Kطn3c?^QH(yIv4-w|r߮r] Q 2h NK`劅#FF!p .uSB@ P9cQ!p<|׀:"$B|F4B&f@@@.\vӦ&{Ͽװnf5M Ta#k3jǘeBi4c !@|AWܵeF t?|,S% P$ХM?ԣ6!6KTc<$ʹ-8Ͽ1 9A(D'd5(G7Udg6BfVIJPۺz@~8kS#vZe/(k( =*@U_ޝAbpd@ $O5] zD (= ,GTe*@{~UQ_0e% kU {}{u™EG 1Pc @ 1ZV|GMQ rM:ƌ!Pq3gK)E޻; |DA 4oz٭o4i*՗CgF# 8Fy9?bŢD4NKg9a ({gGwJ"]n.mz$ۊ^kCсA  Prnr3clhΘsr)֛RD֕y't<?D">di^୷\ >oNЈyx_x% T r} _WUZ/ĥǻ^}jzY@xq3[yk%Xٸؚ0nx$y%XQlh|wVveWw^ㆊ2/^c?3~0o|I5$QG&ަHx> sS@>2Hz{;n܌aGf\5?#?Y>|AW$2uO^nCZ8z@mMoKהgLldH^dSf٥@4=T6v ;W  5Xv"i7Meyͷ(;17q&T%;l}SƷwq>ui]U텏>c]F9N%"tK=Ln Xu+-Ow)酾B:9 VZF׮YnWoܰfMM6ҲI]"/ߪY7K୅kÿ߽|CWޜW*"OfśLz:<:y]7W8ONVJV-?XVW^vRe_aA{tyMQȳ: ]vl MƷlxUN9kOmBO/9Vkme?fN{soޛVm'k*~Jlj~5J)%~VWDNmzuz^zGnz'X->^BA VÎSV=9[YWsnX!6bF987,)7emb@uOM+s0*6~S@Ͳ ]K Үw7(>(;.\T.kH.>zSmzQ/GEp / Xd @@~Ġti^_J AC is\zTs-㼤W +Lr Sk#WT-E/zoY,6 CNċ AT__?:DՎkSۏk%!G.d돩>\~#}?<(`jE\/]W>Nԧ=@:(O:z ̜rӛO{f,H] *qE.;X0]2~vB֕4z\ç`]mʇQ ) |+eN p $H6mAY`Fpc*筙_u.ЛSm|t Hv0e= `.\onmnIˆ G'iF8^k =(FPBr2FQ\_S>Q N/zQU"&!E@\$@ iZg5~X`#@q׳ղ,OХWңʎN]~_.m.z0''?\oAp1#A;X3w|]rޝ Ό6@ @`rwկGԹ= Lsۦ{KhU:ϝ*.?HO}fSG_=[w c?z8cCv=wwM=5_/mAF T֛k @ TK:%)gR5[,f:)(NnC @ d$ !@ @|fsGf  @Tq  T+P#Wq#קk[VeB'S7ZVy#@y ( }YrEsfٿ+ZK  NB Uk]o1|T}}!C_Wǹ)`' A$'݇ NJC* Q@[+_^"   tFUADRq3 (-/dDa֩dTpWQq..=ܬz9Wٴ\@=TW r! G&[})d#@'8i ^To4 # 8Qyp;*}sû T8Bg_ 呶W+RSxTj T` PT$eVGj.:iꪦ*q.W.G)]_wU?_zȈ|^u< @ CS_}Z/%K\x(| 2}ꗗnzn=Wuj"@ @ B8+{:ŶiPO!=-Wmtz_x(" @ @ B8Yʵ^;=AqV0 @ @!j J7ݻ(WzqMYF J@ @@*mx3:о%fxeG.9@:'{U\t#.t_=WP# FO.]:'J#@z @ 1G6>hTڔwѥo! q@ {hc f1* @ !+~_*@ @q Et@ @*!" @ `tKc:@ $ZrR\tkZ.ŪkT2ڀ8 99 @ I>&V,_د'\߯Oהj;-L- HT`! ?}sB6܉u,WwV?b;*FާuDMoʨWYG2)t /q-莌hz.nA7eLۢps8nLտa @*!^_Wu zjCW?ĸ =Anrب-G8<4 @ B%fL!߾LwԽ!= w"&ԃ,ѫD\y^y)7j7TX;.AR9vy@ @ ."]2U}{L]G:PE$X![7\Iz~ӸFFQ[bĨ(-e|&@ @ v"u\2u Q -bu.MBK(F[, U @ $F@$ԺYc x퉾2|pc,\gk^XpeCѭN5"Β˘߶գ  @ .D®=i JU1 $DRFeeTe_M/wYKBW/]9xv7_^yGXY>޹e> @'@ *s=c՟誜GOFQ\5UF4җ`/ ;v5.!Lr!;'ldgR~rWB8w$D @H!RQ+w`Pf_\= @!RR Rs L9ƙ^B T4B=<@ @!H @ PT` @ @ ."@ @@E `6< ?{%nxsiUq;CёqHF-@ @0/S5j֟[eTNd8ww 8E'Ph @ P:B3DCG# +@ @@ZVϒuj䟔\_:ny::q盝ۯ5Qd$V!@ *ׯXb͚5ҥK/^ظi&GDDlիV'.ʕ+ʺu뢶 tb~xr;եk *q d\Y'<7\ \\#vFOe}}VGWg= 钾ũ x^m98˗/?|'?wO?_l%"3gΜ{:%.0mڴ_ʵknܸ1cS@ta퀝RK⮸@*}hI?~ET OL Pde>{Zw]?{,J%\\WW6#%" T%\ry?D^Կ{w}GAjZT6@N@D"ͧj%.d_EJ$ BIذaCMVp{]/+/~_|Qy뮻V\!.]vWnZ`}Oro~#Q1l .AKKK#4@hgyh Pę\lGo2-L*]feT|⁋xu}}}GVe}^/VVeU_ pw\isO*I¼{/wz׏=[nWr\ӧ<iW̚Qo~<#r'>8mtW_ַ?^{ylvS>ңt$ L8+@@EYG$ N8?9;`.]PRmR2#n2GW?wl?ys?駟ZR\r*Ϛ3g%}SOz)rrE[ouIߑ=3򧨒ExqL"ʥ_?SO,! Ex._y*OA4=.(.1C>4{_K9evqK CI{dUϐF%0Q__/nd(\7~ݺ5xv?h^y^~^ziȐ!cƌI9oʔ!H/İmfw% ~' 7Vb4I+ڂ "P!"1 L@yr`wq=,Gs8JxD\e)2>k-׉~rޗ|dϞ$ Խ[GyD/"9N]W} 2t֬J6)-O0`8ꫯ*r?^ϝW^+/Zu&yTn7uT˲H'|׿3x_12rpرR?P.wzAMHc?Y$nj׿xĉM#FP׿$#EN3  v'P@˿˟*WU~OGWTv]۝;@*8ݻ8餓eǻܷ8ui#~Sx ;]:"n<~~駮믿ᤓN-__ZNurQO}kǾ曲Z.Y-tt/Rqq⽋=gsω~)H,@ZyOAM?_WOT-?]І~ivD $&H@6bHрEp‰;+^oQFDh`dp@@H(,pRN\&PWAJ $C@\LYS2l9YǖeEZ\qiO>d uwu#Jƻx⅊+n7tlk)S& _^|EIh`Ǎ'je4-<|'MT\\q[Vّ/Mm$ ?kZ/%7ng^^zE|K/[*?^#>(%[o}W,X8c4i?ɯ~/E$oG[2 | A"woiDrJzo\N 3d^(V 1U:% mnBK_;) y"Q Yq:h$ HEF X_C2 [$3mh@;|5 *% ˲?,a&qǎ+y-{ S</rNu /Jd7,^}1c{A7q}իF'7iDLRʕ7.N{IחMrs>1fY[o=LoH -u;CHրhɑ{Wk~{I?Wv&~5$)@蓍K*+;#/_!rtw5iҤEK{dKV%8k쀐?/ w[PG0?^Rzt.}IYHCн; @2 ٦!sQѣ%@ڒ`(_ZTwUl@h@N_2'Aڠ[,+̲\hq^Hw*+,PSUו_Y[^߿.K7|SkkС[Io3Z;Y$l)^{"(}YqUҢ*ri.Fʫ?ā2yum}%o_:%d+ȩ{w%W|_Jrh( ._} bÐ!%8r)'Ne$ 7CA" ɭPJD҄6 LDɛ8? o>X$BB_1\H~yDeCO, _-tʒoW9G5gTJJ3ߧ@ުD=&){`'B &}Z T>ř_?NfqřUwqe]]UYSea_֢zke]Z:(!y"7Ɠjq<,qqeY/?|9iO /Pe^]Y /{l4#$A,VD<{}&_Z2g6ie"/N8*B$ydu]Lo~+/gɑbDd<.HI7%ppɧfΜy%w4!؋ r$2{בGу5Qtr|7ZuK !uRH`Pe^Ӌ?,Mr/C9@Ԋ-*ɴZb (G vAeY^(q $'Hs_]lDj)ۗ Ґ6'~Вs]wO+8⸊?)IJx-z;U!f%.{T*xⵊBq[u՗yER^Ilq%j oKP8TKr(nb8^rYWKDL*" K4W6H-"ZvU%!Ƌ(R"HESJDRY. )KJP{￿^iBgQ)w",rHCY&$蠺 鬼$q 1RWüA JwQ7_ݣGY {tjZ'Yb[-ά%# @@eTA9⎪=-˟yvN*:_PZJO)ι\ey("\\ʥ(=bR"z4!ϥP% /BY?%xR.)=RKU.HJ&jEP-RK V}QvBELl^D]tIP E@ꪼ}J-eҊ~ H J*bb V]xf*Z @ V`#@2@@4@lUCI .l;rqS,ԬRY6*⦪)GWBWr՝ yI8E@)W.UDTuBI ŝV޸:iKގ1YV*IU]Tj42 DRč^ݯZ#%T!f (gȫs/26QHU]y~Ghs)@h -MB `N@\S9ՁEW*w] *jY^|]WW+WV|W&⯊תVIE%4jK yBAPQCL(E{T-%&/rJUzuө$U:_4(K% 0@=A)(^%6KUSaiTՕ @!N>> @M@Վiyo/b~9q˝󕣕:UBjSˉ/5 *4M+6 @3H4߮OnZ}4GQ{È TPK_*BJ$h@kZAk((X%@ @B$#!Q  @ $ $zGY0oYox])*o*ziTQH]v^j#ĥ-@NrP$ P]N}L\X__)m27Il]dGL}ۣWY7" +b3Q!ǽw .?(Т: C݁ Nq"E|PE @@gA{*'rq@ @K ug}~)!㠠  @*@B!`{UNxr} b{a8ؘ@ @@B!}ߕ oZ;͒Xv%t)H!@ @ ]3q6e !@;<ڌB#pyl;t@bCHC Tr`A4@ *-F @ ZrX5V*5nMeXuV9ObB@ @@% PM @ ) !@ @H /1.f@M 1=bɠLPrS^yoo\gLDtv*|=AovFq|X}_>^Thva?7{G|kE9fǔ<˞,tܑ @H(~yUNgԯ1r'vC1x^;}WK>F=A;=q)..T\!q/-h\ƫ޿F>L?M僾K . @0%P@_]S _u-: ўq ! kگ#h_ƫ%|v}:xg)jTFDߧc'Hΐ/l!@@ n( @ @(!RQ @ P5TPa( @ @JG]@ @@ P5C @ R$PwkZAk"002 @ v!huO&æIi-|5 @ @H@!| D-B @@UHˣ5jYv/WKK-2DCjĥr'ޕ*w Rn#lg(U10 @:DCӳUr]R/;:~{U+ʽ=RJ# @ @ \KL뙇)“/D' @ H K s8z\z  @ @ IJt}~埗b(zo? @ @h b\~oo}Un;@w@ч @  \WBcioM bdg1@ @ BIDPy~-TK\i @ @8!ߍr4(1*D @ @ I'$5ڂ @ TBU7d @ @(!bQ @ PuTݐa0 @ @ԡu9zyP^<^{LFW=ᔼ5W\vš{R5.Q_Q4' ңE?s~r7'.QU5u @@ :r_݁Ϲ؁iP :߷T|P1m״_qɛ$kL5.Az}T\cjXwqKρ8@ H45넫M/0| W=+.yS;=q%HO=qt{ꏋs\zLͮ7lFqoqW|?Lr3qS}; @E֒FTZ<~9/nMeXuVKO(~yUNgԯ1r'vC1x^;}WK>F=A;=q)..T\!q/-h\ƫ޿F>L?M僾@J$0rpkZjՆk%˵qMcf] 뙾k᫠SGCv#SPq ! kگ#h_ƫ%|v}xg)jTFDߧc'Hΐρ@MvnK:sɟrGϣ}}Fo|q\߄B  @ @>_W%}xmxK^ M? @ @ jm<mq׷7_|'љkԅ]G Q@ @@ ݇ @ @I eڀ @ ;B>@ @H@!+1aZLHV|:2 @ $pݖiyt.Ak(()snq!@ @E @{u&e(( @ NB Z0/qɺw޻]x}8bAeZIt @@#htvzֽJW\JyU'.GʫrNT\҇  @ P&ɅD,@y"i'C\AΠvMon|\+yb-qK)">:̯ :@@H.PVOyUC{W {L˃zR Ԯr:Tn3.k:_/~S{LT> z @@) b%u} z^+wy\dg\4W~v_n=5ݯjϸTb? @ Cr;^W$~@ @I狋wH-A.W"CLq ;,e5߂xկUP@D{ PPO ŧBB TCULSqqYqN5AS;M7l/S+.m+˭cK) H:~ATT?}*SeiK>sNS=A-{Deg8>ͮng霣k_~~E_y=qq(st @H:RA*u.*uA=AQS!)z{L;-qCwCqEOc4OL/qczň'IqԂ @EH:@*#jSK_KcwQu*byq/Q+Sy_uꫯrcwbG~W\zLC3.E)ٔgD^v|ME@ P4CEJE@ @J!@zԅ @ T BU3T @ @(!RQ @ P5TPa( @ @JG]@ @@H4n&Mt()ªB@ @$p9dTK&9FV/H/@ @@!NWF!NB @@ ¸xznZ*W%ArW]޷iW~R?E@ @@q xMtʕw`J%J*R  @ P! (Z;N+yީPzU[z#'\> Ǹ @ H. =NߵJ_P 8)=!S  @ @ :bBDԠh 7?A @ P9Oz{w2D}p .yfgUٛ$?dm (M@ @| $};*+CԏTNP?D+Rt @ $L @½J99) @ @ P7kGIM@ @(?BgL  @ @ @ @'@i @ P Wt~@ϧ -_xpIIETO)|T[r(Şƫ=M7K;My$Ԯ~SM5}G'h\J/S~ORPW?&@ I $_E΁y.or2A-cZnP,+.yS~S=q%HO.NSnqo:O7iAq c?.>Οr7'-s $N UԪmrSAzL˽ 꾳k\2$okL5.!z|'^tTgSq1mt[=AvV@\oU@ $hGXꇝz;rdiKp$y3^=Loώj\Xiz<~a @BBޕ!  J F @ о*utZt%;"7)tcگM.뛠W+)z\MTOx|-Ooj)OSG~Lχoǫ3mtG $tA V 2x( W-=K޴NQ\S=q>M1i?+^1)UZq)wq_$!@4IJ<0h[gG4M4^{􄯐Gtv*~S=Q+}5qK5Q>zL\ΓvA q3xeL?qaq5m|?g3[iqӀZ @@!_Hկ:r|r6Q]5*AGJ$Ne4WYɲLݔO\ΠS=T{=FsnqFC X$Z4*wV]wituJ)[{=Lm\Kxy)2 ]j_m+ԯʅ::O =h`K79˷8J @CF! @ @@\E= @ &@ @ @q I@ @*! @ E@\$@ @hnվ'.$]S|.'ڂ @ NH !K&9fFVܝ(@D[ @ K @xA"Cg!@ @]$P *3*wxA]޷i}R]ƌF!@ @EH4O;u;p=_Ut~_=!EUU΢S @  B';N[ϾYVmpyU(?i@ @(@r!|)zU(sW a?Q@ @H@!ǻ1W~ZD-\~/@ @@$PN>Nr|A]Ϊ$?|`B,oD @ @%P@_?} u?O?P:\kW^K+?hbD @  Bҷr7}I6 @ !k褀[& @ @(F%@ @@ Pm# @ (  @ @F@B @"h |U1Xu-{mqzT7wpTy5i=AJ)'b>G @@ eygLۅ}+iy4f^=^`';$ {MydV9]S$ϸ+W\*7=.;+s}< @@r!͑A@SBP@ Sr#p;Ov3.MFB*@;+- šҦ2@ @@8CW+Gs'egr=Rb |Ѵ_Aĥ_bbў5o [nΈ;̸D/b T Cڋ@ =./n|"x~ť?+^1W\U+.>qS1.s@ @E @b'piWͰ9xW*ic8W:vMq}έvϓ,Sn @)CA(W#Wԯ^r?rMN4DEq٣Fz8U2W\zLCwMۍk?hW{7!e!6 @tIJ\Σ_a)+guJr}}wwa9~BqzicagA=A*wqpe|[J=JRxhqΐρҿ@L $0y@ @b!@ ( @ T:B>B@ @!X0 @ PTa @ @ ԝޢ]2eEͩUh @ H @Н}.Yb#VW7K+GpD3 @ M @VVcJbT#Cl @  $P *`*sW+U%|Q@ @H@!oT;i9o6~=_Ut WF:WE~3E@ @N  5oKCՖ"4ޏ  @*@r! ތ*}( +! qܨ@ @ h#ĕ.h31  @ @B!Zw2D}ch]~'H^7RՊ?dBF @ _ ιʐ? Jґ>_*J3A!@ @e%P}h/"? 5 @ @ G̵ozA S @ `N93j@ @!*4L @  `Ό @ *$@  !@ @ cu#}w/ k)N-J gگM C)5^k\i3.MIOq S(}nSnI~oM @ P DCrfFu;OmN@+;l|M+vMAqq˞TO\'Ȟwqo:O=L32sﻸǥt|( : @@!_UrMrS q .!xG+.~S=q%HO=A?]S$ϸ+W\*7=.;+s}< @@!YOlPf)~%ojgC|0?yS=57ǔ~S}~vTJc:+~ @ $vX@ @^ɅKD.rsր=}vCtAz]nߐK\Sx8Ǣ9DTد#lץ'y[r ŧvFa%b @ $cuL1K Bt~%o_S(.q)nJ;^4>yUi⚷7Z+˭cK) H4~̅)\_j[n+V^vr'AK>s۸=q te8rϠϙ q3钦 L[dL?O}jA $P?ȼ*rWs9QyP!wt]~%_#nqq˞yXF׸}Ah?׸aOиWڍF'EkߔCρ⾶@J!P@_]_`կ=߅AoyP)]5$= y`Kկv'NU5.t}Rhs>Ĺyy+~q(~Sq9Pʗ7u!@@q g @ @!H @ PT` @ @ ."@ @@E PÃq @ $Pw΋bzt(JoO6V @ P"DC{,]Go:X0!|Af @ @(@!ƊŨF @ @1H4%q=U>(U; WJt  @ pO @ y$pJC@ @*@!ǻH%t=E|HG|w4D8b @ $PN3\q'_OW+!Ek3_ ׍_WYO\B @)Bs\@Ձ? Jґ>_*қf= @  D7$C)a* @ t`\=Y8P^jB @@@ @ PyTޘ` @ @ **!@ @G@ A @@ sl#+ p(|𽙅t-˽NJ޴[+^=AMAp(J$3 @:CuupsxJ'L!u"<8KW AF`.=A 4TH:̸TÒ @I0*@\,KB*n,ڍnOx^=yOqVZc\A $C 9~>(|pMB-mv*'qW[}~=ءKt>zM=Y0k B Ԃ @ $D38Au>(&\[k(Ź5Ǵ<=Rx;ǫ=~~rKj$!@@\{Ujfg|(zqg_f,Iq onD=Og/-bA^ _p>Gߔ#@H:2$!@ @!a  @ PT` @ @ Fb*@ @@ Pce @  & @ @K w%h+]FSzD\UJ  @ R$Y%K|QbA. @ $h@ @ `J ¸~dˋA r=#U1C7̔) @ $h*o7^Qr wElU P3 @ tZɅw-}|ǣvN-gVf@GWO %M#N;8 @ $F ttUܛZIw!z|4  @ @ $pDBDԠh31#-"1@ @@ (_P]ɯ'꫕ҢK޵JpFZU.} @ @'P@_} [C+'_Tq&Zu_yWaD4 @ @(B@;j 9-i@ @C@J^(^55!@ @q 7QA @*! @ M@D@ @H3\( Ag{; v}O tZ]~%E(zR5. {j+|>+ݸ/]O\<1^Aܢp_<) qr"_0  NA *r](RѩG)a o yM KK>.>AĥTO\e'q dOP)jT횾Mkz5O͔)">:/: @@H.Pu妄M{;}g2$r732׸ 'ܔ[\k~vM5^q'fTޔC} @cH.Ў>'$ܦծi⒏O\'qvoNSyS{LT1cT?`\F-@"! LPy\]E @ @3H:P/UrJt%8&o%Nw%vߩ^4 '.;=.q٩PWB}q߈#v#NXcۍPPO s:B T/CErUr *wt*GS".y\zaW_n;Mt*n"9fگmqVrRnJ @|D<0he>z5~D*7f+xkO {K>C8R873sϟ=q te< j7;\o q3钦)x?JFZ @8I~!yկ1r0r6Zbj0v%Wگ%J\xk\Bx4?MePM7m7Dguȸen˭ߔ?ڦ @(@!R޷Y%v\_g1w=z.=`nC 8eOƫทcSw27\ y\Γrϟ3hF,Ȇոn7.;C>J. @(@!⬤ @ @% P"@C @!' @ H@@ @c @ P"B%: @ @:$U;WqxTzk[[c]\@ @@r!qnza^0[" @ $P= # @څ@B!K*S/໡@/t".(WƸ ݠ;lQ@ @9{{+E{7v8UuGC[AUjO@ @NC1p;!q>(  @&qB}]׷!=BT @ B w%w,]RJ &V*'*@[4@ @'P@PQ3Uׁ׏q)׵9}Sm9/ytئ]WuC1C @ @@r!0.;yO. lFȷ0%*0 15F @ tf:3hBN C @H!{>09i  @: Be$ @ @ !& @ @S )NB @ Gf=~^rWE^'5:VEPSQbgnQm;]z;OaQ8GK)|"S]\XSQ@ڋ@r!U䜇dڅn|}%PR4E#zLT8n\zLn8G(SMeʳE|׏څ @H.`gG>_ c4iӴ.!'$均+.qø쉋C} @cH.б9Vu_}iQwtU"cʔs\v%ojki7o3.2R @!]iN/h^S%@3. @D @R`?FSqq<{RS'|q_7ݞp^=o_S[>1.f@M (GVrjشܙ]/O(NZ$8.?D|ߠq4?g9c| q\p _t iL_)(Y3A#@b!t j8栚 : YO~=G/ꯩ]t|B8N8Io/O ]̗>K jtC[㌎WOSx% 4.F|?Ib"G  @N w TJypף=ΞgV&P=1(`* @:9M[66[---&kSs%ԜniJX-Rv65-e*}ýK BZ1-?D2eO`I!> @ ܺucKY~*go/'P0>dU`]G;8;T  @# .~K%+W\uU&% 5oʿr)c$Mb;]7=t @ Hl+ M]Z[RRmMۻE,w%w#W0?ƶT9Q(mG  @ q*4]T} _rٮ.n@!2!@ @Zr%GuϲQ{ʒ[ѷu7[% KeushG%]i; f#v팇${ض<@ @r§Ry~tJ8$U|zvK'<+qGsϫ80ԭ T4|@ @('g?׈z; ?w{ZriI{ƻ$zRiWZ  @ !f=[|tmOwԊgm ?ߙ9 ʽNy[:p @ @@2Ks&ʻ)`˗\rc2|h @ }KOܯߐ~\M^w/#PjuG!@ @ qsoC{m,ks.߳!q4@ @Za>J/&F;~eczN hֿax+Hրy0oz+ &s]yŋ/~q]4Zf( /bИr;F[V7;S8)WeVu̿SVcrf 5]KV.yȴi˵ܵg{Xv:c8 @ Iw#(:2>3 V,_n57_o;F?q9g5/^ߞ'˾9ֲ&bҏQ_{lm_NG˖\•%91/XdiaK|tSwwaRn_ϏK/_/f^zq̂[y)+ιnQl-􇼺~O_m+A^'\}*1\t<ֵ|~A*rة@ @@k#|b8u~ ~g{d)~we{gJ5G6:/0ogyD UZ3v[x߻Uv-Ja8y*~[32 գa}2cO8iʩlk.gإi[I&k`7E %N]qΛvMܮ]7JAwJeX˔٥Ojɔt[xSnmf/{l?V^SmNXhR?洺|)/iS.{1MhM$cm^Vfw=13/zZHNvl  @ @@|얌n_Uiڬf%g~7G 0`5i5ڎl5`>[5fV 5~[۞80p}]|l׷Ɯ4vfL@VVZ.-Q'> |̵l{7Ϝ8~c>ryJ^}Kf6 -Aߝ8 (SFavy2ښ.; a1{_ ;'ַ5m+k϶ꔝ_]Ϥcxt݄ @ <פ\~H .e\R)#5s.ߧfA>l?˿9^ɴYgerpeH8D\\/D@uI)x,űnVt*u9ݜOHz$سs ́0s ́08`X/Y \ux`\Z\uM?)́0Ήg"{Dhbj;x>6cZ)AS``*[;}r8'}y(Fx,g G1 ؤ(MfyD?,怢l 7'>LC@vRgA\ed{jAp<ͅ\!Jph=(TùrX%9Spa9@a9@́k9^Zc I-yιbaa8px#Ρp[B|E+9֠ԍ-@k3'27aM c!,kGI$P @q`:h(՝<b%PA%$ Ѐ:/XG!8P(?"=-< d~h,<Dzp;9S }#5 pr䬕+.tمKPp9g VD3|VNJYJ~] DȺ lJ{}xE5}qq?ؖlj;G\C.DjwUH*s4<7&hW ]#!5ݮƶ|t7W)1~.&0|*=. [&N$cX`wv@,BMp:A[a <Q s#d<,.vMw\-݂Tv#MpX/r|Qn7YWqJ1FQrwC9 N6iMkd7=r1Uv1:X|$Wõ s"@#5&V .D T 5`z#}QA7Q]p`iN,>w̌mxe/z&ur5(XL%mI8 s(pdz""NTD者L{' D҇Db!Ox+s?0yX?h 8@SHU,G.s:@>E8 U s|p@ $1 '/YNi3q^0 ?r><+i6ޢL 7K7k%r9%Q8B~posdO؜6r6L=́O!8X wmixND\VVA#Usxh@4sGOv=Ncj s(R;بϑ0كV}.kV9F[\^gdIm$AbwϤ Gc~8AI#{5gウE|qRK@(rprz P ?i(h@\`Ǒ /s9U:MO p#hIv|a|XB nQr&x, 7 FTl.j_;\SyЂL9iUvk[\!Èj֕R5#IfGf;r\:8)C9C S;ls9ʜ96-PVLTa߭CsenTR8uv tt;&QG+s4b'PB_.=G2u[Rakf}2y1qn yC=pRn$ )#@0"dY¦|e b$x##*'@P~ .P2)/žtC QaQ 8€\a XH%/.g=LI/{bnF$, =wI.a鲂cQu3n9!/R9#eܒR_=[&t+$0{e u:O#ƏƁQ͏9>tY( f$:B%I"UV ŹGՔpA#$=&Hr&p$δķL<fMkJ.BQI7uQv?tCu3?zaFA)|kL냇+ƺ2:(BAzvrf U~ (3! ~5:/D|DE@5qA`xuu֮0-r.]h &BP= [k#reR[w:j-Bu[p4xVKbwB<Sk&NUe1p<]cK=ܤſ-:fvļoN2Whxt_rQ.fVr?^p~[z`AϘ] 4qzW 1tY%VwT"%1IHItHgB>}"98QGm'?g@ v WTIOCÓ[WBkC! 2 @RfؾUgqڅ0Wz~ ->q fles7Y-tR*A. ӵCgy"f-4+q?3Y5*+'M}C?8ymYчFATFDDPra%ΗSH$ސI_z%XE )% D[5ͳ)DPԼ t5wPe$Hdg 6~>i;ۓىb群#O;=CYjWsFrS6&vvoS*-D5b:H'(nB䵼@ ѐ=_4,]/Y3k9 @WM?Ϯ)3[wϓM20;-`~Zd.{UQyQJ&p ڻp z~g.لn)<#Sh]Aoݺ?EG<,2c;"TBJPH1#CQ;C! u˺__ U  D ^6៣)R(#M' Q %j@[ɟ\ag0/n7*,B&i+JNVtUb PR?Umk-5'__'4/cyU'n\4Uyˤr ]%^pN榠1!>SQnj+}w _hNgFOEFN6}ԊCD#Too.[9icA PqjYd冖O7qzTRɢE}VBz˕Vl2z%QE!wjزDٳo{;jzIӰ" b%T[I`]&9\Z^Kcd8ZQk/w;*裞߽L982'0JAp&(__ d J;8fǎBÓg\ $ zd?Jd5jTY\7'Ҽ =-[ġ/0_Ԣ*D]^}DN%އ᲼K(ٰ7ƾܶۛ~T@Wdӵ|tl&יbMEӏi/w $> `VJ}=I<1wf1չ_znK7ߢtpyU[zj8xdѡJ222RVT*a4ͷ ]#iMlK߀G8@>[WW}2{Ph@=BwW셻SL*#%sQf4\60oEVrpHfr19%]z[wn}/A C#:/. 46ū/x"g̯i)9V}&K랍=<|]1˞M7Վuu@} ,X҂Lv8NwBpl@:9Ƞ7ِ>"nRHLSV] p &x6osdd[3Yy74F7:>LvdwcloP9q2ufTg 9Nzm2 . Z8 f л8 _ G~R d,`Z<B: Su MK3"X`ǰ cdL쓖Hu0#0.7RG^SXA-Hَ'w,c/J g+Mx!nM:2^L+nS%B3D8cߟۋ6~PQ@+wtbnÁc[ dlɣ! 8b'rֿ`̀ZbgυHT[[ۡC޽{,Ge$XٱwU܀cnqCRG͹lYSg(Q8pSKrX[2]h">POqP%0eih8ݥV֚6 d/`ɻg+eɏ|w1im)z籗T )Aߺ0aprqVVoqN޼%QCWO'm;ǹ56D/|A~ږX6z!W ~?kwH^a{~{ϗPLب[D܍䈒H&H^)Zj@W*zꭨNVuJsE8Lh0Dgl?]]0=(;؜ۆFJ\FʯgAi[Bӳ{(/ZPH 푃5A4]âk :Lޏ=Oiރ@[pdF-Z-r^MSN#.IfBi9?㹄36G,_A϶T>Xv{n'ƌUduPr{sWMg++7T⏯г{LQ berrra4 O#FXqF;` >m<7}twz`ue0"U ܇yVggW `ot9m?<)6Z%}%DHR{[NX> ѧRk%h5^N﫠A?%伐tZ'`:* Ș|^~aP7>Ho8|%W 9})r|( M[u`㓏EF;VBіWJ,MsAÃ`nx% q>` NãeO<ʝ]ɠ`}EXE*bǙ, ZE)PD$/s VT jD J"Fzd:b;䰧W:;TWyzίVn%9S;sBcx=(9}^ #,7ﺽ8)g%9z9q'7͓{ 5C)H _B +%z( Zo8ò>eFl%qNJGp6MB?{> KQjoM q ~ C_6v>w} Jx`tB5 K;Bo's_PвHYZ:Nc BaWUJ*C~8/D6р2~{ǃwE/[{w~`.k__dSYB<hq bkiLSW\W߅V%5I%"}c&8M+`htkcbֱ f:>;Vɀ%? L* |'џ!9P[&yݿq!ǔn :Ȗ_!̣Q&#^~׶6gM&e |'xAj7[,Bt*?+KU8%_8I$1D(9$R]>?$Νz4%JYe]0بI"^`Z^$4dȵj{לW J0X8͙9'6lԌ- پ? .}⼏ Ybhi|6Tphd$2B3it2R> =s+Wx#XҀl'~ԞHVGȃzRO%S1h"a*C :p_7J4mr[tХژ͏-S|zÑ}h&zEE&)j99w&5˻h[f{ Zռo;lad<(?+Yū"!Jg'g.֢wܹl2ݑq]'4JjEQ}o b`x>׏`0!s'8v{g4kt2Xڀ 3̽cJj3T%M%K̛go]͠YDP1ZpF| AJ O;>ѽG[b(Q%@nbCxŚAT3)'͝1aI֓^Zʛ0j￸aR0lJu$BVC_^6|ѡVP<#V IOYF^34S+9r$_WvI>WOņ܎/߬)ИA ޝcx+7<#^ĮrmACUN=nXZj8n;-jX @RV@P['q,mAHT`:d:Fn#Û,;X]~ZdP~sp=v=fjzo"84{UG;h;K( &$ᱝ8# \#X I|Lfklq@ȴbD V wdulSu_vJT"*M]ˑ;-; U73vؔ1Y!Ӡpew1n߲`ڊ7ORwW:Z8%/6U1(E1Sz8;X}^RkhOcO˜!tgݟqW+ӧe6~(?RQ'8J!5:5%:RZqe}se42j`.XM5"Iփ/ vZ{/o 0 $ZJr`; zX0g9w7t!Tuz"\R:(3޸f~9gd'MqC>86n-f5D5mut/]qe#}$m;cxOV$DfiiM+)u q0f}AȺ9Of Gk-n R~ԯ#PnL@X 079k >^yK \d>3Mm+lG j KK~\]gln8^}Dm+r;zb5ϥJz"61Sqw6ƀƫMkVt~::C$J4&2JTBP7+^cUJ<h|6.bHoCs֏??zC{ _Я]mSfeq8|0n~K|W;mZ>FuuŐ2!'4X$>vfuoY# i'q%87 W;v"p1(5i}#/7 ~q`g,G$$&s7ܑQa1B#OFO x'1Q,cFh&̱X phTeƖ>=͉-R}»z[N"_e #3XAB ^C_^l l6˝ 1Qp1[AFZHgy+F{^toM/>z c9Dia\ Vw͘ԙ#0!&7[0öikɉ,(1RNKw5$uݳ4 eK^CCCA?r| jjJ*80`j\)8 |g_&~t@dqʙA\#6ājtjNP."4隖{#ÉVz=V|ЯWH"Abh=s3v5 iqÿ&f^ŐC/f!OK8״6[cjxPZg|RIXAJOI]ҟ_Ӕe0b)1m-Y0 p:ێǖRpX*(fҧ:Ͻ=? 5R/7m]3Ƃyr.,;Fޟ6NONyvnn% |G?6YeXq2L<8[.S}Vޔl w,-~(k) J-Bi.$9$"qsmLˣ4jJH_M3ԗϧ˩qe*=[^tb-C}P"xéL1 0le "zAJ|ȞAח+߲bw͵7]ƥH2w7ֺdl-Q9~!zѼ#3uv'YeNx J2SAʗ(P(uB}d.qŧ|@_~ |'&LG<4NM /Āw_멕G/ݑoo}+Oft IX#q^u 8;z&5 $ԨkTN CgOhrEs=2l(&:Rbo쒖Duȶ }$ N:PWa0sd&Dv~s"^2 qKHKlN;9/-isxB: Ͻ5U7g\ dKX6$jt/6ҽrUWܦi/7N>^A!86(^$"?`/;Mwgʵ.?u->Ԋ3-wu7 oU%|[P,,?Cӑ؈g38ٍow񽞅Y"IQkxrk_gw%V 9 O9ֽvPO%l(Fn u,-@WE `jI[]\SK@h n?_t'LԀ*M. Fi5ƿ;bR8ULHܥdOOs" vw6kW7hűMAt L!acy2Ps$tȱ&)\<CJ#' ɬAHE<9m} @X]4o 뽁J4j({Α*0Ƭ :`b-JNkbl;_;Zj)Ϙxԁ@#5  <#5LB[NU7mܸ Ö-[N>M'r!@B/|~`omZ,.賠͗ Yi¸P}`IBI^#ssX19?C7qG@w|@__!".r-z3n> acP* nN9S^YcwUgV9Wp[@4iKh{Q:rlԡCSlI]HF1iUaɒɝ\S3㙃3dSP灏|-?>ҸUU/6PR9i߀F1XUXV߹cUq?M_/"Št8 Tq?pW w:aþ@:`%&\ATN 2cP[rKvEͼYаr ȏ`TL *@,}8`>`zc)4$DG[ޜث;sl!.v0)㳷 ߍֆ _ܑ9{% -;_ntcpphV~.uO)+ ),f0xDURk(=A<MT[TwݕFK#:  7[޻=KXMk(-u :.KR4{}]Ők 2y5A < 8x0{u|\(%/]_?ЬgsM64`f,z8ɽpЮ:1$1" a<66S2o)5m2&ITHG`ti<:vj^{E b`3D|./緓'J7 ~gk׵ѥAu !}[1 ˭|=.kgEeuyiZț/#>h2#MjmA-yU#" n v38O"dqF *r(A[V&+ C^ #؜0џ~[bi0" 6Tg݈$ӪA?o(: G,2B1C&^504ru9;zZؾe6/2/#;Nn%7+!0,0Oj̾3tN-uob-8.2 OyF&^6+UsMD`M%Za":. u")ޞEU7S2]AlaUⳂ*6"8*-(3Jxj@3!Z_p],]V>.}ClWqJϕC俣GK@Q]}{y)))H[b}E@ڧiPWoA4)h~S\|Ti fc$}jN.qc{ wRg!rݧ9h;zrwGwoٽnOro}U"A`s &KC!P\H]"! (sU,bn.w@Z|lqzcܛj|0]sW3'_~Yoޥ||3s,om.)^>[2ӻkO9hmE?GŽ/ YP%^dPQ +<h  mq[\u$Hdb޻➧N:983u$7=?m7(b`?Zcl"R/MWt(5.%LdFQ}0`eFfZ~d(RLXvx8T:7^/f%Y}m;44P6] "4<ۻSVQI+_{vX Y6 T.J S8qhB!>$V<% Dv{>DDy!Zߚ8 ;5g# o*mbSG7V3n1LZdB9+kX j^lJ#xvf)H@/K/П/ߟcp˃)}8K% W0,Ў4"7E0""<]4Ey;/[PuJ`t,k F(OByŵ'q?gwy$\WQ3e8$ 7Xeg:Dt#VJ*1̼]oѧ~ҥK kCޡH k_F-! tBLSZF-%t6ìMI5 8rH KM^{thmt}+ہ]iBhjPx "f"_Av5VDiJWϴ|fQsQ+"q~za73ޯ+yy, {8˵`5֠rlLyA @@ afLp w.P{u0qF]>ū_% `BwtpiƾI/@)[>G/<jCZ_K{{>l^d^|)S|F!uu|Qgկ3%*ɬ_o~yq[7 B'zRt< 7A#zJzp/rI4z X PM}r4 ^9 ̉z"j !F8)R5ua~$M5'e@Dr#;}'#BܑBuTQoxg(8x5e"W /݊_1=oUvm? G'=|x~6vwx{'H{4,<MC-E ln5n۰;vlhEX_58>F]]Xv#V_MQC_8"_}Jj[Jm)ŭ۟p;Ryiѭ Ȑn̥SY H8rd޽2!铟#E4 hho p /}Ki q^4^ .Ǚ](EM.MbwPipY ej3 {%.\ѡ$1N.~9=BpА_TvDQ`;ª+3W氃[TʵyxZ?婻qLsd(.[R~lWUԳqw?̿}G7[Mb¨%nƖ|eCIYkBƗqE m'^S~NqQht"o0yƲhG-cnWܥ\F̭暪suKSpYKPHh"vΣ_~_p`r,J*DhB!d59;<\wn%Sr-fFvps共eJ@(!B(Z<58Z bMI[9 Dug'8BʑNN)$ݷa@Ǎ # 9pDK?1+,8s ^];.I`U0#8T2*LXxΪ0Uy<~U/Q;I :-:,3Q>m1/wҘk7@yΪںugAD9J9L5O1ⵙB̨ޙArUf oMLP"ǡ!N;I`bvCNZe=N_FAqH ߽-ܴǤh_}ϙvـnBYw,ͅ 2%Ajo_3iTTԄV g% S'>:].v8zXN\yap" 6C  z;r@q0׺%.V>9NֱޤsU\]:[rHcKa2x쉖L;+jA0 n-]KRf.o0fd2К`x]kS;,*ig+V>k#R׮7|zH <*KAa nfK/ɻ!Wf:҄!4Kۡ)7l╓aWjVi mw7q{4?v=[2 @1K3434_8gTTA5Xus.P^n G]vV}ұx$lh-j$/}-|bK*#7vEֺ'MA^2 9-ؤ @RŖH& ; {7w$vqClJ=Az)>)[;(4!t vXjR;Fʊ]KAT։^X8zq1 H˖ƇB[bYME{-J P'#xUDM_M@koo'^;1K',H`YyQcoPAH[zjqHe>JRGpd33?m:yTpR]u5'֟gQCJtu搨cbtYOӣ,&&Fן"LJIuC5w /F?IEuA% DcdH_MNWI5qy;+B8U=%$.VGӰoTIy]DC88q H*!ZU)U EJJ"H893-7@c*Yyu=I8ϑSO lyp3ԓVu^v՟O $ѣ-Y~ͦJM'Z?(UT8:t2d\~(w1h|q'vT$K9"XNu444E#`1hN,Ǿ<;Ʒt5gYT{@O3nN*9Bz-Y9kH'#~eNA5WB<ߐ |dCO w3zL&G7DobN}ڮx ~.._мAn#t A_4CSD]8:=Y"ߛ`+/SWC</uƪEQ"_xh9Of- Ϟþ3cuPf|ɾMJA sXy0L ,$ARVuU}.~kT U K[/9L?Vx4ժ O笿k/h +N"ZH"-|Rc8٘zqYl-LҲT?Bt"5Uɜ(G]86,hdNpeǃJ樎6L GD#vvv0eV0k׮n㳘wk;l仪 @{?` L F06_% KdEϢ#_9jL-dnϛvG߻NMȑHEG|#}\)Fbtx8k@ى}|"utmLbĊ 7e~ 還hv77H 2QEKrJKiž2&-r(hKDWy\9Bdu?&w{G Q"7-9O(Anvs?$?FW_ rgʸDPh5<.d2#AHӨ )@.̡-)nl(Ere - @f ߐ%yḃjygN?wBL 3I '>9o, G=܄A@AF_NW=3y &|b298{ш"܏m$xQ7h"!#6RHnmiJ`) :ScSmjؖD2WUSw*vM*"$Ic\y7gAUKSȩ&>(ƕ---p,Q}iJU 27OnPtڬ!)QI .c}_ͬٳVXd9Y|zߞ+Wh20z!e?u_ܣKQW\cxbel;\pmib>ٚn gZA S 6RbT;XMѪԎ}k~h6b/Q&chFw2*] ] _x-Nw3QY:6qޤ#  ʐ;/D[J&nMf-h6flƃ?XhCx ITp7'xɶ^8PMVDdxk\s\ 63IF4:Bih ǝ ZsZu ;S4?M-i*-?/C:/#7 y]9/h7][k$A~Xyf}"k=azFkRj/Ap̿E঳:ݯˡ"e[:o+ay 5kFrD懱>!3,X=Vac~튻3{#;K\GoME-ṁݻBOB [Vބ[05\"V/DFvue`^O=ׁ"vUK̬v$?dzJz$!>Ȍ*f-%)2K$M\pȞ):uU r" &4рoؚjhlYkD_gC`RSW9v wp1뾱Du |FnN Y|ih9B4a<#߫--d!Q׳j[N޷w+ޛڸ2bߙ{\(\Y11v# ''˶l)㏢ vl:rBصuؖ+5Gu$[7SoiU pvς6(aHQ "_տQ!IDAT|qIZo鐻LL5MU#G P:cF?+~|I|{ˡ`qÒs"jP d?yϫxK x&DiI2[ܟ}Vi^ 6śn|ѱ7%v9к(Z-wftL}ZE%|(M\+?_b_ɥv$Et4J/v|3U1G1r&":?0r`FHwͪHOā02gz"\e~>B\<Dj֙{鋲g#h{Ʀvn!?LFfDN:d:b"V{TE5}^}龁K&Jc #r=Ӏ fD/$RuW~l፣"a#y3mzEK/g޻r]d341m궏 IrN3$'m ȉzը2"h^m>u``2$`N Fqa _Yeϳ6&&-wXQg޳p⯦6/{.6TVG\c?)f8)[i!+vLFn"-q,R@pԬ1)擧?,}433~Kee޿?`~CMD4'b鷏BV:٩EkySOVWXġ0H4N80ʚCZ`zI#q[zy!#V1sOW֌u yu'k=TP|#0f1Scf漏\(")+ w%+E.'| ')ݷM7> `hӥ0D[%U\vb:&5B%}(r7_|; R@򪌞B lm:0ߗ6րU?szY4 RZl q 3g3Y`!~.נXu.?" {FMIx]tbOM**xd wd hragה(OTF CtELIs?%mSqj[&]tzO_9Mעc~ް޻ٻvՒYcRe2e 4G^q홰pJK2|-_uSܽl|U϶Tr9c2p..zݟN\PH -P$bM5\1b tLוivYfMvch]C4~8cK⌙Qe&\ΫT|o5~| }ěGw3uL2 C\dett<  Aq}BݏOntmR0;rVE;#B|iſ!)szb a7>:U/~(;\߰ cw/{r(" V󥙟G5`.`*.\VJ:QR tz|qeK'&Im=2gq]1мH{KPIq+w,RSF2Em7#*q2%8A!7 ]S=t +lkN?dir4V0b@ݺOIL -xDPcߟBӦw>U:% XA5秿11uk^6uEoغO޶7LA6YJet9o_\ыZ1; A%EPjGzp[ށs.+:*H|{$r/HJwEHr]gbC4'_~uk9Jc[> B]PMԖ꒛QUϧZ^m+(ouz_c琵?(--HՌdbԄ 雤^z7Abʼna\M{ݗQglVʇe S1F /`x+]s9NGP+Xqw`C3% {?XgǮ 0KndiĦ_j5<@]y7zHF ?%"Am'"@K5[jY-F*A$ؘU{? ݋ _+TJIa=]ݎ{TNN79zo5˦hUي EfFw*^C~7 lau2s~Q.$¦&kDm`-9>IArA R2sf/bvizᅰ+RdqclЂQ94aխG\֛sgNJMYT16/hFKf D@ҽ2 521 [ '$lVE#UjUխݒ])(pJ:oT O {<Ï;i;x8҃i`8G0y6NzTH+` \BK=bՔVq&'@6'1P1*!Z~=*lCY!ep9Q[Z$2W]#6K@'tv_ػeC7:hHZ30q+_("YHs)wF DHA:>O,mqQ7evB$OcH$rdqzT`ʱN rZ7; O@IػU Z'?{,0< |=^QmS@ h]dU?$u">< 9(:tty*t F k-@O;#giLDVK q= зLf^*܅f,ޮJ dh t#bsTaX-ܷe_*&oVd bK]5uwˎ$h>ū]Q~Ґ0XߢWN[uAv4//gՁ.ЂߏtYk6+R>WZ@}X<ouO8P @PƂ ݳ+`* zӼ,tʲ!s5Hٕ'}bxk:>8H/TÄ5O\x[u~Y敓Hy#4ǧX=8  $$ZT2ZĪŒ[ųv=o94cn%oY.S:cx2B}5-J|eFy\MT˹CŪHl8'B ba[Y4HHͦڈ'a;w.Vʶs+>2ڻѩt|︈ vwEmь7QDNa+}b.o,*{= dX@be< Sbxj,Zqnz#JS q<}&AJ2 $fXg&ED;tyq?UvB$a\HcBl5N혻.dώ6ިȎ&pK 6kU\JW Bg*mO_ (;]c?m`æa\)m4  !(XVNM/5+s-DJѾj%'߻MIp\.@hDž ~fm].Z9P3eɛ|eJZaZa1+;1@|* { dK(Dl'ɹ܏̢_X>?d#dÎoCȄG?y4."Ebcy"xG=s^Qpn NVkM+/SIe6Kd -́[Ƹ v"R]$a.Fk149Y7*{̸B*4Dk4YW pCڜNvhT:E8D4`S"&?m`#U-źp0.b 2W *L㧳`oi#_Ӟ'B8{/hZ `n{_~ z) Wh]U Pl@*`@p` !VMy`ݍBO1 KW" l{@ ߂?ۚ4 1hA tXUlA؏a\>uXt"p H'f" qoY<cş@Db`qFԍWHԀWO<$pu xXءl n tNRߓ8F7Q|1?Yv͈m\x ZoxWVp *C"mN&d 8tY\Tըh۬ bx0w{9e3LW!vq"P ɢ`{޺/a_ @·VbIC6'@ 4M~Jsniho@NC+0])l%pp.8 D- fYo6G~TKA{h0s ́0s ́0[$@)a9 tIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image012.jpg000077500000000000000000000053621300536243200266460ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?hZK4`lmiﺃL~w> ỉb@˂1=kGW6m7GMY"cLH#p7nu-BQc`0|܂I9hXQu5;OKcC9 #<ZW -;lg% ' IN?ECY)-U`&n}Lgh??dGόόg'?oғ'5 ٸ'$scj?/4~d2Ə?Qcjؤچq)3?{ْh??dGόtm@u~_GfI7oAoQcؤϧG6>2GfI7oAoQcj?/4b_/?ƏA̓AoGƣ_hԿ_'ƏGόό?{ْh?h7ڏڏM%O3PFen9֟5^Y+Kg0 i}g?R3XTKL_ޗ[YYEʼ1z_G5FEK:Tݼb[?|kX^KiE2Cx4ڗ+ZT1mo6-bȌODږrU:Z͓ls gvB?Դ[M= E >eO(,x-NWaO02!)?ws[RgYRVD0w7ÜO˴; /ǝ\"&ÎFiL.sS{;}-ˋgR(ěbPGۓRy";@`)s؞]Msgy-SQEQEQEQEQETsJWIor\nV+InmQNWa۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!GnQda۟!PO{p2`sEPKMALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image013.png000077500000000000000000000031321300536243200266440ustar00rootroot00000000000000PNG  IHDR~sRGBIDAThCY}LSW$tTd,# A5Yb&ul-:?ԖdX7'b: 1KIتYC>vϽ﵏*N49m;{{&pGǓ` Qϲᇃ,;݆Ob&%O' 0$OO2e*P?{~ool(o$%NKz=dǵ|0jWq`l ؝v5ϝ'_W7[=6.cFs.a'wBAU?y^]M7Lj4ᡔ7?:"|"nβHlk, $ L3&=Q.eٞtJNQv+46I(kG !բLQey#|\mM,Nǽ W=] :VFDz#ZRo/a.K!Rg8|lz?=wfю2%FJӲ ]ڢi(B )W&^C>;j?uVzs0`0DI/?CUH8<(_ʐ{ݦ'<<08VJ"%pQs)a%ӱRߐIj;^ Z*("uR^5Bj[ g\|j ,LK+lKtwoEJ:q7 e]'&9o +NƒH'׋A 9wb-Mڂ`,LrPp R|&[9S }2|{fx:G3G4pkC}`nree @@`G>vF5JGZϣOO;_fr}NSA]A@dx]_yyfy4}FΌIfF7׿վeMcnUIFQz_<g}-֏=p}po۹U8DXͥzk\yrsԬl֞,tW\6K*Ry-JӹTFW͕]}w٫H(hj&3=\H_<= E-zyWt]WХ5OPnyu5O-zfRե3" 5U?YS~/Q 4^,-Ε.gJZ5¥e5TBywesvf|-=ܘ \|, ,WwD+:2s٥zkyC'SYbLkk~fŸ1b   0rt>Ϫ!ӟ5Kć33R3ZWw69Gٛu5=]+/Jzr|]k,w:p,8i^; 2}C3էi w:}jrj >lejzmV[N|WOg\YϻY/zlT X(CFZIt6x⾬ @@`j LF\z~ cuWe߉$ %`~o_L<~};oe|w?,FQ w|xֽ;{@_1_7(;͍ld6~Ұߴ"1G_ˎ8GYSghP:wT;͜GaQvL)|g*4y^O滑\vr5|衿z/)~,{dQv-$A@&@ӟ[58*  0BO48 O?)~b/?O +\çb<¦@V  G \1o~V'Q!W?};6\3Y7y&#f  c|#N~ ܗ͏3RFx[u |1ngfgz[>qpvU?p}kmU#)TGR ̫]OE'brz*rv6/ȉ@>BYhu:j@7s+:d+nKkꈟړHk5;?W=XQ6b<܃U8]zA̓Y?RX-[<+$}iaymcw'T@@ Fwҵ?Zۯ_m?/.| eiv]e.̞9;oDwmj{x(~Z ٌ!у@@@@Hao}?yg?|g~~~~D?z䣬׾^6wg=Z-}XXL=mӝV.<[i,=X4'xXA@r!tttK/cyX7|-P\mo$B꧋#k~ W3A;H W$*h!գȞWiv3 ln[owo~ݻo߻>w:MiT5 Ͻ?\퓘} ~Xb @@xӧНK}~f)o|Tӱ1}CI(LeAQUD j @@``Eu@@N'1P #Qv8A&a;NA[׋:<#hxU & OI0>-[}oՎ܉Uj;Vk$ pL(| 2J׀޻FTp75cEbvb#قHmU^+7Tə:d5iХFXͩ?o`(*#MrTJ{W2y^1}䩪oL"jՏr!IL"QJEcTm^Q.t?X {[GL:bNCl_B&Ϡ0D^jM"&S#?S[Xk!q{POd$bD#gâh{؎4+j~KuAw⥵5o_ls~k6a޻~oܸ%jf|)ued4xlf7i NRo9f$עdwe_$xaq6TNte81NJsHwTJU{;^g!SϪM./ ^']LsTԍg=j$=jF.^۲[1L8qe_ emu9[,y^1慵P[ ;& |#z)/Z3O>Ӽuÿ0;a?+hAjJ#e$#sK0eOτa?ݗW/_q!3NTo9.8oǐHgDY눅2Mj$?wT5â( ::i7ih%׃XfDTtaJW0[8_'Rm.D+MSd60Wv jԧ|Y |٣@@g.,oKm+n;GLwbYfzSmuÕʷs]ڪ&kkWi9f(V4M7AbOF+ puSΟ9uɕX*^yr˲ռ h|B),GHv "^]Um6ͬ[?)^sKS)Ji2# RPM)`ft}7:(A8)F+5{/_4|AVchݚS2GݺD[POר7Mf.-cmV"Q躁`J8: N NJKOoc$0ed@@@`80+R(^  "QvXd.`EaQ;"g#1UQ@@ ?=݌U ]3s0'5sR)mL\Ƨ#6=b7%Ujm)_(7 0N,  L f(l̕Fux*L՚irQYTLv_InOS !=e!V9棢滼uxpj]0! o5Zf˒ǩq͜s;7ܹ}QҒ;XD  ГؚVv14y՚5sIwRf#Mb/(׭{t)]~lor(D$>I%ܬWwʁtt@@\|BovTONPPWu_v\[!r+=:~NNP (BqA@@   0,eEFY)e{o([lTokiA( @ "ہlի[QP6!7qF!P[{*(&~*ŒtTݒ?EN)cX?Lt qNrժ K|Did,]j\zv pQ (X35bzw!  '0Zb^n/o3g=ocQ?[9?Vƶ:Ӌrl%0YowQZ5ATCE<:%eR]B+n4[M=G1O)P_00#`aqn o^(6*ަ? J<+qRV有+|Hd nV1l輚bTUTC~TDNyA5U9p O֛OԼ* @k'U:)*%wJ?C? cO`Gٔ'L̬":yn\wQ"B?OlaV]dž;W|+Ubn//|* ⥶jR{"`uUɗ}*h:W ؏iH#^o 7n~rr{LCWA:g|yn1*,nw<^]A!3YSդ/ZB9[gz[~L+@x *\Znh;+nSf[@N1eӞ85 fLMj2M;%5i1Zi7󧃱IM\3Kм{߻ޠ8 feZ9:0E;罼lpvk9XJ>}T-*I?Eˈp+4~n5t6xQTO\Xjԍb,|~Hùr 5b׎B,\j޺avLvT#o- .lQ qae>?I3mC"*$tc)yz\S/ܺ|٤ynulofk[Z8I&|&!"C,*4ufԕuzfLOUHWp-|2l S$]V*іtp{ؗbA*b#%m ĺ};DP)G0%𾝤qC( =۬R_ye>O` H@`|4Z{_p4TP-%MCQG1$0e9[{c8(2K; p/L(;`@@0ʊQ! X(k A@@@L%1eCCjβE2b yVx̳$H @➻tII;ˈs=WSҥ7q*@@N1eSLSU TfFE`yߣSsS[ͻ1kqw/ 3ye}"F>(2ʬ0$# 4]h^9jKt>*0SBqMs_~!L~wE`GSjf|ɸQMHآ=jZZ-/m9{ ݉i}}V ^.dEOI,5"kKfQMJP>뵒? /2%D,u iN"Rd /*'  1e3 T}IY"c˥V+2֢"V˽ 嬭-24mx~Gke 8m43Xs&0xq@!yiڪQSʔ.C+6@ٽ+,DI~W!L`FYQk@->^O*~JϏgT3(QT*VXQ-h0ET=&l6@gFS3ʶwt;꾨NrJyݪFz&:.=X.D30jC9i`dGh_^2M; 9w.tm=Hr {b@`L6cںSؘ?N;xWZV#JEb挋 "o(;u}a5!@Cq^3剘2T0ȼvBU6?wҴQq)5_ pl`EClBx7sFWnJz䤁[UgN^݇^9sV#0iLZ1|^   0yD@MJn,vmj+oJ! OsEΤmȷV{jՕ-һUk9xRnvsW܋) \zMso*V٨=|E^~~~(DŽ   Џ  0` GA@N*}ٓZx @@N4'yP8&Qv80ʞA@@ƚFٱn>@@DH +[؃nQdws, p}'mxn \ڪ}=|Zuѭ5i3zr$p$tÌgeĦ!JV?hUMa[Dw,v'K7Y rŠ89:6~_Wlfe\Sǻ̟tAe_ 6c-5+,E\/ݐH~Hsu4wuY'd~1䏲~aZ~SF:5`Ɠ;gw:MiT5+w_vzpQ Ec`wJcF4ոr]ŢeheqZ{RzartMcE'uOk}V,i(/=b_gLx$DeꦌMa:m'}>D<4 #O7ݬWwONt|Ss/R4`~[xOxV}z4 B`T;,Er!xyF`T 6  # Qv(; jF@F  SJ`RwIsߔ6V[lSń.Ꚕ;!e )9fEP9FtɛC\$}aHuYg0#qu#@\.i Uq.acfrݘcHEG輩͌aKz6a#|o qMNLQhucÐYr6YDE.!3ug44uĚh|8d ]ucf]]"cCʭjr:)y68 x5tPxyo_ae9D.|Gs|7B؊`kl+7jp9ǃ=Զ5Dw,#OytI]a$6yrJ4{hRbKr;|GiUr.M?|mx\u|PKtGmwAw[ՙ+na[`K&2yHV昑܀&\1$nχK-9F<%&D.'UWNQ?kK,}s|׽e+ Yפ.¤βȣ 0ߕ[3O3%3j\fcHd`g-=͂tԍ)|yUk!3{ wba{wLCbp++Ѐu ެJzqfvTڼ -\jwfWcx1爴D8!Lȹ1ǐ*9f$X$G}$! ,Ƒ {v8Ztr͜cF0%3б38Fw]>ȯXMyJLȉ2ߩO@'zIuh{;s Fo5e:ד*`'C+ĵ%4-^p'2Q^ӟp-.Ԥu@8!wQS'aq(+@>F5SZ  D8   0^0ʎW{  D8   0^;VZt\LToW㠴ibfe*,b&wFkbw4 tFBJ\:n^7F]7WZ@H|iNKΆ뜆4 Y9ɝDeek쒤)mWNζwH[KfaQ)5 %y0_DHQ?).޶WIr~;F0ߗG`{J,/f6@2cQ+ƣ_1%nXUƮ^r.Z0.W| IcOGq +?MEWO4m3?oW{~6'ܒfDgBBiZ .wC?tJEZbrSB .׍9WSZsLSݑ<#%Dm}^?uN|rɋ6O]~m;~Г_~PIF~T3TlFD~\6:4eOGf'6?iu . Ny;InUn芬 bw0Qe'wewY̝i@H8~`;~J(ݧC?ӨL(QF> hm84@   0ʢs`Y   Seʭ=4:L-fNӑiؐC8hr>M;0q)2KWmB;;TI= J%WˍٚM|JPM.zs ܱؓR6ӆwncFB|GDtJr36 3SNxѩa`6k y)[4;;2Xg]q]wfݸqB"w`( $9D6"Q %I|ae톯f;OInKN&W9);V`-Qn4_u(7;S5~X' sDO4À@9|\ g{L4-ww@hJ9.w'|Uk> ~oTo' c%b8oX3I МI_`Ћ *5k9͜E:VҲ/YagZT@@@``-o  2"w&G(Q滑d  #0A  ##Qvd(;uM h͒.>Ȉ 滑u.;ȨH3EZ2JBEW5CfIVHHH-;ByA("%]~re3N|puFrW]LKb>!Dg`s,qyWʊ3dt3z,UY)ҹ R.cCZUk0Ex`ӌ _Wbt=Ey4oT-S0.MR^ݭ:"f..:rTZn#tr2J%C{PW?AU'$so; c^3YLdiZ*DM ] 'H~snw%(sXOQXr e5|+B[ݏic"oo󶻲YHEqk}fnq}MzZ0gVzx>8|v09}" 2+J#~TE:-ӓsȈ 9^圷L]1dfדGw]v)9ӱ+)H.Y*} t0yRclHL+}oz0߹tڊXkDeek쒤)c5w )Yb{@*,ƖCunK>#Oyt:Jݮo:TzL(}PfRBGFl@XxǐlCf<#^DaӱY[{&{=agr!ĞE> YT:$q,/~qEjX:w.]dr \e%blF, >J٭ƋѪ&]CO!yt,y$grH>Y2Sɏ^i״~I9:%6Jj.Thzf*j4ِȦY*7F%5AQe%]=0.NLshd1Fٶ2V&))SeVS]SpLj˾x9/O34R _yu@@&wتaQ 뛨? eǿ1P #Qv8A0ʞ@Q@@&hS)qB5a 5I-,e|t2Xh} Gd1x+}:`L!N'63C(O3ˢ(J|7`Pcc#i3mˆ|Ąj(騍ᦶ38) A)w|G>1~ٮ5VoWi6TO nSǭ|?F:k86wG͈΄lݠ>NQh+p⍃-gOmT cr3 Qs0Z䣐]vX6-)V䉀9 p@B'D&|'%bc9b"S[WŏLK$BY}233!eC_DrG=˜aOGIG.yLLPCu̿lf\ cc[S8ZltY\65 okQ8ywtk+7*r0l&M,:2y,SX4g7]8 r\rBUeB-?.iѕf; Ҍ4MH(siFx7N Rc6yi{ Op%섮DhfEQN~   0 `VFA@Əu?@&0Mx_E@@`L(;~Qb 'Qv8Fe>pSa[Mxid*+]+ ulF4x[YVFl8Ȣ'ߚC opC _s=O.q]GrYMbK)Z(p'sC Ȝn/V]K&2[; Xhjuc!leԻ.7Jȗ:hUMaEr$/9I"at,'K^&wVWD3qƍǸ f- EEZ+mQHyFrݘcHyӔGhc6Gw}tA^wy9%g{9eEFb[X,ln!{6\+7Wh+WΝ滵'U|ig,]1͗V5VjgTt[-Cx+묳_Ҝ9So[}A`'A,I*M1tNɆd]!EʬC5sȝ/+!gFFrJ71g5\,6Zf^t?'\PC6뽢Cƒ^(6;~|Ŷ)ޕbWvwģϜ7G}⥅eb;m<0=2Fgs;dk$?.2!gE" #®ػ5ٳ +? !,Q!gfiW[E\+Vݕs筺y"EO&љD7VKA#.:!ZTAG莐sE?ɶ:He-k@R㔡橭z`d!Pש2&3.)_jqtt7P(Hpr^fH_O+e }ڄ%bi-%`ih8;W2HD:~".?ok'(|*jb 2-{AQY(),I bD$O"qmQ'o8 tdlQ?]Ѧ+f>6gMJVwHcjќ> |Gi!9z(0Sƥ382cå.?rq{|'|@du=sPY^:*zH Y$JF:;WBm^U DoMZ$jpyC*@]vcɁ d#da_ ʬ.[$ xj9-rErnҔޱzFOD!y4u?Uʦ%k !eb#!"Jʢ-"* FNrXL˥3Pj.ѭ ,LJW"i02C0=tO-_Ur k2^3q637n _712?W[XHǶ\[r<< 7߱!/XXLPw=\TilF_ޫf[?a(zR#|F;sRQɑy$*?MAE((<\rk1RG݌]4,jl9me!$4e$N%H"#dq;\uwo +>>;W`  w1z|vh͗| 鎛,`¯9%Jrhe)p̰s1$_#ΪR8wVvfQ$8Eglbc9 O3/ O.dž0 !mtrFt).c3Gllʫ8aXWj1ǐ"eD2nju!gG|'OyزH"tLK .A0ߵj;3m=q/G2܀WPXdv-y022Az R^M9d4ˣ;BΌ.;8ty5SɫG.KӤh5Bυǵ[*%ISzՔ1FlHj:f'X$G蒺DH}J"'BɧNP4 滸yЇ`x**Eשe5v%VRdᳫےմ(|p' xn;jAH^2=["y\g}IrrY% gfG DA |7(9apzxf0 . L( Qv$d `Ea(;,H@@`K`7r! LX!RgeʔYԸ|5w U${.@SCh-;Byfggfg%Guct_4.w14ĪHOa:0n"wC|5,Nrt!3Lm ȴIеHsPI4߱V/(w0;> fCm~Xr 0DZr<7˲!Ycy k2m#.)vk֎YbnN+W#GoG_(-JEmny|câ[fU#Ѱwf͇/ׁ[0DZfy6{[a̡!w碃<ήdW9%e 'OS^ΑyYѻ6=Y ~L6-}Bkg-^- wᢱA&В YXT= mDݢ;I1m-hĆ##Q6/P43JLե36džy|)ӥOm Vɕ@RPW5jÕDAPn ]JpBuíH\~c; FFpj)*.l!f$ZU}JRHuh&^ jG%Tq6tN9)鸿]}a}w?FSgB)Rr:`Ֆ2 Zoġdi)ȮR<=2:=4y͕gtZ@d6_HH-Ҷ0$OG.-%6$wyC .eKV)acdi-RmX. &Fӕݵ'pp8:wjm ]~Yy>ǡgHE>5eH*i0yd82kSjx ZՍKT# p'\ry JF mlxdy,=l^4WSp,a滓1QBS9|7}O`*Gٓ,(!D(;͈JHeOdP  AD3F$M{¨ @k wI(Wz-*enXhsNw|bwڣ2_r}WHJpǜ0@m)1%wlHNk7UTZIyjarE蕟| z^RԆf7/F b3 łXM_l2H3Kc2)./<#KVPNO?ӈuluƸ&}Pz.t7 [/Lc5'1-mE٣Fޖ^0 (wHj.&P)ݤXK0f5B)<:B zGyHYzAa{71}jq32y)XVmvkz#AjAt-7&&%jPN;]Kn+i)0y!#wV'*\'iĕֱ`gY͠/&۵JV&ON%-`CPwj;{BɊy.ʺrfH@NɱH]Q^NyFvg\簢|GEpqۛ/+X;vV]eMKYW\DoK޶D;׈ZTg\aqmv&-Dڎ 49i]=-iڗӷ9גj0 [#l[RǗ-l /k89OyHEipKɵ| 3y09}@dN A@@`rEFÐL3ea. L(;B @@` `GA@Kp"ui&eS^oGNYm]XwL՝uf`Sg\B(ܩHtOvȈns.C!.Fѳb1wV%owgOǣ {[Ue SUJ[ŒCVH'ɕpY o]9F9#ezA4-;Gd pGNNjm3E`s:㝌@o:ТZ54ET 9iI >8yq0NkrwzBZ)^͝ߠ]:kOZAi RHˬB'tx9dĶCFl9q0;T3gj0%ȀК$Fe$\ixraZ$*+[c$My39VS^xǐ#wq럼9lKoq"p<zM,>}I~e#]j<89F J= থٮ4T™.$YXt ]B5A"eٗGN!A@@w.@@E aV3!]$( X@@`XreUH   cIX6   00ʎE3  cIeyXգ}gPW_mH\rݘcHU8!w 9\klÉs­BtG EUcazF7abiMSN[=ZU.f2XJI}JN wzFi5Ч{Os.C|׊\犎l囑r:]-ʗ^$CfD6[ff5ȻKGS%6IUa`(>`@m=>:d|ǵ/5SL{Pn+!Gf+sҀ&ɕr!YmH6n㘦c,].Mozu;wᄉ݃{><7Q  BYm-V*n=k4X/ʘ;xf*ŭG[k7VS͆\FjkҴC-LwW6T;} AdkKO f13\2ݘ9.?3S9 xO 9:d@yvO1V!3~A4 բB.Jz1pfvTك҂^\oe> |cیf(z7&Z<, 6ĵ$@Kč`CZ6Z2\昑l_2lLFK~p ĵ\gH3/I}asd   & L3!+Ie!C8>>Y   e@@@`X0,(ۮm 1{$9$aEYJuf]49l|` 3ytU#"(9:5܊{7wq]XO+e4SN_:&BޒhK&.EbR3$)^H+AƊ45OˣNvn滠N7qyy /WZ;;utz &:gMsNj/@K_fuJL͂i4;![I1HKnPnPژ 9,UkI^NdžG,jlA9eP N>riӟJsiGޝʪf&DkaI\W5mSCWF>#oN-gF3B.!RYCeh'ψb>[F.>;uw!CfVyyt9OR' ؗdtwnZ섟Ho9%Id~eVJ`9@A?HWKJ.]O>ӼuY6Kud+LYkDeek쒤d }QЎՔ1c簭cvEr).K4sS٣Fޖ^C1PO55w_V5X}[}0gɂ5]w )ɵhiʣg@0|gX2ǃ[;ZE"]6ܾq~ϭ6&P`W´;SUoV [ n0Y,('kUB_gR7_ [tɭj,:Ajrm$ψ vy0'/9s9[r⎓NKWkK0.wfW2dV5w`Nf7&Z_olO答Ԓ0yUcz~J;_y{/j/n[ˍr;G럼rucH >yo_n滽#!+70Ek-MkF1#;wƱ+:6ʯ>v&n_ Ce\|q-S.4Lұm[1;It"9%FoFiĆ./t 5Lds#J(,9w,%I;O`s5ߑnc\wNP_|0%yl;7yH9 ]8s>E@#hɣOhr|R::eуr:M7u#~]ҋxh(zǥֆʬ_&#lV栟8IxgmmtNG(a;Js7)|$5鰾Titsozu;wᄉ݃{><7Q }ٵ-Εjz,ZJlQ Y[^JZk+zmy5?>Ω-],]m Y  N+y`k@afπ62[cFv 3;CcIv645>;mZX1viƵ|U`7ǐV}0$OG.-%6$wy|s)h*X.L0%:m$0|g w;Q<֮sK.@;L[Ē;6$ۛa nU a]Q'ow3/򔘐CIR{WAJ'Py**x2wl7tFk>Q<N8`3כqE.e7L]+$w\؈AdBWQÙ'8x9]~Q|<: ׈   HIlU @@` aD Q;M"pF"ڀFY"tA@@`lwTZcx'KTkTi5TkvE r*q|WOX p4;Be e)e䡟:ApZc9 bؘ6dt͚ѿv>uiJTrݘc,[=g!ɋ;BӍ!ryi|guE;Iuz'|#/ 0;7Yw3#vi%itc)|P^^Rw|wJcY2C'0;5\A: xc'Ғڵ`~.~^03Lgdwƥx+zCN9kyҥ{,ldnu )׍9W"m5Dw,#OytI]a$6yrJ4{hRbKr~w;m_,_si $2ca 9!veLjY)[1 @ﲀГ.zOjBVWdO.A4{7`:g"w;oiw%kԎ`|#q1unK_gRV[L,8M"ɣyCO&GyH0%߹)oC&x]@adN/](g 5mwpX S ӼklD-me4M` nO4ݛmb˾4.ۑ'|A@@@L;1*8I;,|7†GV  # pFYF@@`N(;j#+#,@@F)mxT@@`|^U^d#" ׍9Tq|S6E%OmEl{]~n.O3um<y wW+iLGI mqP5AS?;ZdGf+sNa&sfyHv9I.c3S]x+|kyES$br8hHs #5njS]^#Ro.$OG.-%6$wy|pK[ \q0me%\3'ע9)YAytGYх'o7i|'lPLM[;9jyrM?K~15$Pc;,vc~`UHJ3x9VY!ČrA8蓐C5sr-cl.x Z(ob9dGm5v6w 滈KKTWXtЍuxٶ2{V&C|§5V0"6jp\3 B \!. JM3F  $pFYF @@`N(;"%@@ƒ}=}=ywwчyԩGNz޳gfNweDzQhQAѽ{/~{߹vozJ²q,^eu\2n/0b ʏu[2)x喕.]#n1 "9Gw '=oK.',#:i3N{x{{}=Lj}(r=ښk5+C',UlWX2q'id5^\;ޚ9yKs+fנW*җ +?,!9?:ÙãG3ރC;fj߾C.Èb/#Պ?udJTлlTHHwΧvaAsSZ4LflpnQmz"eDEG 9m1My3F]y<-S>Z%QY$iʑ9VS^xǐ#faQt6k:E%S9Bv,R!˛ضF6My/#DFÎwtxϟ}vfvoݛUw/~Ia(^4w#{_]:×! `*lTXɃl4tYz eZW2vM3+#пVtɣ5srȎiʣg_!yyt9O;!(5DZs$Ewa?s=ܽOwg<bs˪{+5E /%EC/ˑQi$)6 b3:WcדG_gR&ⶣVV^i<>zJrrt!n#<0O.Gy&Cv,8]?gL~aM տ'?Sw|'uz٢$9 P4nSGY *b3r7ş.3PT+uQu;/ajg-_KnQWG@@чzȯ)v{hwj^}}TiJ:   D01݌Ǜ>S~ϞMgzwxp9uD&@K4қ֧ՈT?C#zֆ#= s#Ϻ{ NGtQ=i=Dvo꧟fk}j>;;{peN/B@@2xlcsVwVQ?z+A  0%cV# v4,л"Հz^΁A_˿82Q^}mœ n{d~6¿pRw~k>)&@^lsg4ʒ6Dd9ZA"c,̷}imA@@@?|?>ؑ//|~lX(!^\LǛ=f:ۛ#dWJ?\>qܤ`^3   V(B/eC`<- ؟~]{䂧7=euvɴK?o&j95AhqyV vi{GxgƗSn9al5"x9ꂧg—z8tq\ggg+4}JOg v$ 1p|r4d}zJC}ʜGO=<`3o9j|6   `E@/hfԬZCCʯdVS_}.RK=~ӟjky_6V:5:rpu    @b3d &pr8@?Vl]tzG#yӯ7ɼ_ zJґz𽧢äL Bʭ^X1;j-6cɊZTJ,;&GYVQ~=,}qCߣ5%y:qǞK4giJOɞ5F^eYEw^K-iL.>Թ=؟o5? i}r>軰  `be~¼PQKKp.|/j{/.1 2,E-?7ߑ1w=~o?L'>n)%3N'n@@A fqFH@@Wn  r?@A[IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image015.jpg000077500000000000000000002022751300536243200266530ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?d[ KU II?_rK]Dsp!A@Q.m^H$$eI3F]G—\oرFsVؿ71t-m'Kxd̈́on%J6G8=F;ʎG۟¹y,..#mP<FA=h@F0{}J.(rG۟­J*}O(sU(r>'k}O*\9Jcn5 >'kn.O??cn5 ER۟??[)SrG۟­EÔ9?_rVTsQ9?_tQp*}O(sU(r>'k}O*\9Jcn5 >'kn.O??cn5 ER۟??[)SrG۟­EÔ9?_rVTsQ9?_tQp*}O(sU(r>'k}O*\9Jcn5 >'kn.O??cn5 ER۟??[)SrG۟­EÔ9?_rVTsQ9?_tQp*}O(sU(r>'k}O*\9Jcn5 >'kn.O??cn5 ER۟??[)SrG۟­EÔ%!sys3*RF~.Np 'KWusaycj˦ũRqK4l}ifU}Pƅ7Gx ,Au-ZWݾy&G!%X#[j ŔU/];x8WFj/dV&1;yl@b8aPVavA|ݿyzj.wsw-ٚH4#*6CNH'TZwsZ#x克> 0n85z3)030w%*]IqvW 9Ppi=s6qhn:f01"6q0z:o5t4 X[2`y i>9t3s7-ԯ=(n={$rN'a%6Xvnwm+ŀ]clv?tuҵ+(xv0>JBn88jEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP{F}8&17;'5G֑ SZBXgkĿfP!Wܪ[OaI ŌkY%kiNFkM2H.!'h w]j[xnicmduvLJ5I r\,W*G+ =1΋~RC<7 RU?Č([ 4֓ZP[1#'q{{hמ=gڼaBF%K8=]MTRH,'#7@lɷ~>E<;Zⶡ͚)c Sw}xG^4mjp3ߊʲ))a֙%g2)gc-՜H4מhʔ]g0RrFx*k3ZK{[0eX2"!8'9\#HE,2hc߳]r3Cԛv_f[FMba"eD𰉆8<һ $Hbiep,pnx쑰`wQfC[9WaI(rA`N3NI iZg0ؠ`N=;NgK7B$ 8ⳬ{iQ7Sz6ݬp+sqEoo n;9fpHʁ^SYPJ#SQE(((((((((((((((((o>Җo>җP!BO%seew? ժgj ERQEsVEwP6al ʊQ!nA3XV.3{{<U`76r8 v-@q}c@-ڛE;;ڙ/_=;`d@'v#ۭh[-L_mDY8;H$^$Szk9"qǙ>S+ص۫X uɰ}9&|?a6l>ecTZ20]91ݵv )JGPs٨A}CST 2-RCF?Kd+ -PtIQ,NAOR[Qk6GEo@ǭH,ir}G8~&;1Wp񧶁sϩ6\{B͓]ǧ+m/Oik4y3\۶`;(:iڄBSyG@qOQM5-B˷ѯ<қdBF\c^&W[Դ% UTw>pgaªͧ "GIZy/B;,T |ǧV׺rGyF]B1, %(}|qI2JHhmY7yGG"3׹5[of<$0oN5c%B<|ˌN(]Ei.)Ik\.^&eL,DW1!NϽS[ogw ~ȣ }P:Z+ UFr3sUοl;J417dl{4%q(v[-oy4ʮe$`g}C qv&{ſk*g<%ȊSmҜ8?LCLd$0YOp"fTq?\P[O[(|h9bEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPs}N}N rQ/-뜟-].VU[?_+V` (Š(FBH 8"D-.伹jGl@RIb-m/]Ӥb`Wyǧ_~-u{p mf #9ȤAp BÑFQT㚣>xlq}๹0#`2 3QxPM~ , tN(b>wajmG$w2LeX7u =J ~S]ljgtQ)7'\`A,)uKdtm7˷Q}ql2N{ot4FY.Ă%,,ރ&Q%0Cza,Q,rrNHyy*D_PWlF:\lVG ӟ:3>V݂{jަ+ȋJ4$[d?gw'ϸ5fosum!͓z4orۅuGl{w kxl,:4k($@Vy%1Y sr2q @.%GJg'vWe 9rintAby!AVx< 8DZ0w<;<aAYY뱺\\JM+\1^Yo')&Et\;W㰡L7×*i]Q*K0F0q^7%U5-B8W 'iʓq89GcvbԬn SPܪDbIg۞qS{ySӭb'Un_$Vd.\]0.r1^,mcLҖj^'}ܣ vwɠh"'e2 :}r3麍쬆֓rcpE{X^l# `WGZ}Xu/TBA=@AKE aSc6CCƌIPH@!R"@[FE05%*ǵ~0)@`qKE1aƊՂM+ƒ.]}dS3 g2v߿b7cS,1&vDP3U4K%Y!pJьg(iI~1 Nhm?>kƒ]}dRbH6 (zSpGr}i΂Ddl)P;-*C1|2~I*`~vPEP(di#W1,3袀 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (#"t"tese)k\h脊7vA rP6B [,!1>Uk&=`KĮ KD"\*r2jhm!nmS$jv/*x?u4~px1$ s5JzE|wq}.T:5]ʏc23w$gUإȷlHbQHc97ƍ#xܕhnYO*dhJWp13n|SKmo9A蚄`\_߸iʸ (1~4eo72¡G̀FrO kb%TZskXAi^\F)H=1nN@+ۜryEav2ÝnQvr~.4&k8geFTH3SU]6K (0$UN;VQH((((( zեMgS9d('@<JSR+Yl,-Y'hʹVm&=b<9N?=6ڥpf(9 քn⼍Zm H\S^H&̂4V21 4$V\Hm8 Tj8|9O$>c1ýt w{@_j彣;veT*ӳ9w1Yu̒xvd㿥Wf8Ե;BY8jcˋ1nsŒ9 \G~г"\+r3>.FI sxW`8үGq=,!(F ۸gI2,rjRr1Ќ/$q@As[ʳ 6ð =SGPPHb7=3?$=xmj?f۴ U{ C^I{5ܿir*ԂS׊te͑ZbĦU^Td{-\q%$S !p6qR*_.G쬀!-eCIɞYP8h,r {N=&q%(`(v(^ X7q3FFIۑ "j@cV"4%皡T)>q%̩eRኵoሬVefWex4B"`0H9P>k !"3" srN3NjHIumCm!Â:cnxjY4kU,L+4ďso|T 1ݒ8[c3c+(%$;zX?17G?v6~$KhHUS.Hx{U.틯+.Gvۏ˜\aԵwp c&0u{p8?u9c6#vq|$qqTjQL!ܒ2Z88„Rz^ 5%@ԛôR ِzڦ i߽c,w 9qS &\[ɬH.ő<ƾMW:rܬ] Zpӎ2̷^YOmy}ITc 5ݬ}knk-6[~NQx$u0&##鎔ɴ9Pkd@y kj->y$33ۓuc1Z%W2tی;C RHA#XO- dnL>?.y8[1ns拓洖%LY01P[jZŔX[oCp[qv=" RG*/3mی{f:cx r2ƇoN=_\ӪJi; 7+cn1ڥ5 v}.7݄7# ⥓Fhtծ+#{rvR_hKpIw a1)^S*tw6lYRVqLI`QGj2h\FicІٞARKN:ū]C!Eld $VxM&ap}ƛ'+݉"Q\sE )HVNqR)-zg=lI}IUqy5|fɚYmlѦ wRN=ɫh^UT $ `1x`-}(Im HwJ4[tY,# LDir[nqy'poA߇Q9xq8y *f%Y٭;h85MW?q@[g;cܣ8%e ?:eΣf$G ۯa n6hJʩ9:VMWFV;\yqn t۴=() z;XL"`7 ['#8ϵ/^IikIA,WL}GbOWtZ\BhŶs)#$4$ML^5Ԓ"hax""vP zY\ex񊝤:qڕV;k 5@bTsC\E6ppcaPi:Anu)y QJzc6ЭeVm cאOJNk[^+2,QUT`}р8<֚t]ese)k\h脌jhӮny.¡'' /'(ӂK:0GFy OӡVLYF8cW= -şĐCskoraY"O1䑑4uE|[s0+F^ăYzo5k(nTs>bz8^!dʈlQCݯ vN VY% ?!ꚭȍ/t<^JesJF<֖jf,Y&>jbB.1ٺ֭Qb7vvh|㝼zzvO$Hu$9¤Gž3TԎ,&}8I7s4I-{{ VRŕx'8ytAgɸF㯽VIcqneIܒ~=.ZI(epfMhM7<أbZJ}ԌqV䠢) (((((,Ť{IPړ擟aYCX\yhAnA-yC]$[KK$VA}A=*AEg*yZ$sCք3wTFh…tb7nr2*+Y :< Fqcl^9ݮp2/H,y{eO숡?'񣠎{Q5wQgDb #csڙu۽֟}R-f lctcIa"bH#]3H0[(D4j {򼮞L3Fb@d'>R",v Ħu_?3+y[ÏgڶOeKkeTcPzc=qڒ+=9DF];Ӄ//4U]o,>_CkV9Y[N3[ma,ʆ4>K5[KRn1Z5:gj.6kHZRqsQ(l-ƥ:ʙnFf'Y%vm#t.vP}\VdW~bJ[x%AT>ބ7s.\K}>//̱BIc bjOjHR)ִL 6bÞ=?q]dzxnym%7wxN\L;ڈ80W`1ڭ>$M#S{'yjk).&IkFa$v(Oҫ[M "ionu2yzU $ r9?fC[Mf 6mpnpzoK/Pc5NW4{Hv:k[ŅKU0pn5(̋n),R\\('͌ N:ցxodae@zvR6ڧp ~P{Q=7TgskzB$Iܱ(>ar2j{8KfO^qʡ\^FHKO5m&shv`#*+VMC FOsO3@Gwj:|G]]xQH"OSޢIZmYW%K p R1UOw웂T}*cuGNL ~% s_]42b:=_RGC{ xϭ%ˆ4h~`iђ7b= >rS?MΒ,<.͙=78RI{y4$m17퀶a{gJzk ַ-& v5*\i+|ZۨHujtB)k\h_ Z9?Z*!#7Rs5c@RK U֧e -A>ڤg5~{[Aw ǔe pj[{OK^/c_)ؓϷZ6cD2]oFy^IO~b͞1隝j&^"e.cDQ3ں_xRᣙP,.dzIyWR-q1"9. RZ˧wcE,~=y]̺m.5P`%I*11 pGb ԥ y&hgv )?OjӪK Gjg*DjHץ[V (Q@Q@Q@Q@Q@IfI-'  B6++nS B<`vnyRLTqKc*qGx,9!Xs1؟l eΝŜ-7[a'#9-F{0 B%zsTw opRP?~jO@NsX%]&T&]eVi9׿4 :dQW*t>kAOLw6d2Ƭ`K 񌌑NX`idȕdU1H`{8{gZy+H㑒9zaXF Z)cr#rxٻ991Q$rXW${2 9Ssr'g]4omX`|NsJñ_y'KIx0!X}xާҢyůa }f('+:s6'uk 2@69 wDcxi]iK>w,VJmٿr@B03Y5CK^(;b%,yH9y84sIYGqwvXp-W.31bpN8oe#[ng_ Vg,cP>elmrޘh4S]0f y {[K Nh#}J$HlCb%Gnfm:u,Fv#?G=HiW+v<[WR]Z-7Cr_^ym]-%: c?q֯Yw"P!Kه0=فe qM!d{c cۚl5V@$GB~~gqW'ms0I&OP22s,I. u$7l㌃ך]kJ͌[?$oE6F^[ŒfPDcĜkahb\$psRjwf+\r2G~Yc#:4OOm>fg4{Y%{3YWr'msqZ֋Rye.bJHz|Vudhnةg$]bxnخt?WD~`FI;ҙA|n+K)19bE@UՈAV.u۱d6zD3d\JG 9)߬" @v\u=*.,Đ&4d;v99\w;Ym^s尚5(&pvj2ŤZF3^I~z,6p2; )"x==tF DLp8lsҝ6xm- F $UR S r?vxզ:Co@Ig ~Mef>YDePpv|q-[_OlOpV`;˜̺dSG S(N3(-CPM$&-H!՘ i<9Ziny#[y9 >MkPTA#J3RRK.*I-f5F‹iw5]'A9TP0۶>\1y4rEܤʹ|펧MoWϧ4w>ą%dƳAi]ZB篠@&.5;L%6Ǒ-07wv'm9V<[}^^$]G[N.i,0o=Av_U=#{@}#I7'bH+~Tkz,-MlaeT䅎2J OASGkeq;h* Roǧ9lF]ů]KPt;9cך,=H!~jHXVvXF0QSj py+/ezү'JOqt!BO%se(]m 7-+wTPA^7 EGm+yY^9Ol^h>x{67@ `M2Կڍťl6i]fq"%BMyut11sjmIm ق{2Hf9˞T]m=4"L6|>ł#‚Kc&YP )?hQYĥ%Iv*O=ϵGy?}˻ jY9IIslPK~X 6@8'P7oi"5[,p>nU5,7g:J'y eҡ,.7rgq.(㚙H~5'r7F IO)*E&8wB}:+2[[dK~bmysy8YyNΦ(Uy={Vd^w%I3PIeYb\e? q.H8 '-84Ii]DE$[7F%DMnϑb>{}1j:OKE/'xX^?C-yQyvQ98WTm*bX܄62'4dx㘑D`,e'_cyl˨EqwuQj*T*zU,sj 9*Dt'$5eFu9Br_8x*;i5F)&?Ucc=~| F}/TN[v<1R ޫn[oRt9arr|QR V_"Lq?QЈRM+Xm*%.Xgytt2XԘ:XI䁏JNI|ƸDk"9f֚#$r[4dxGm&^QfeUsc׌p3σE0ϪI%k +K^3Me] sHU 1}jܷ$3ȗM(l˞3=ĺj6{$E'@!,mqc4q/s#F\J/ը<95XMfWz|6K1,*j?w1̠F?'5Zr)^j,ŗ?zRMa|;>WX<}1]Fm"Niu|1W'NS84B !+,[29s4ɴmBdPEqlt#9#4nn乏X8U! ͑NxP%ա\8GCepGnAy @|ԥydko`1~֣:i"1jHFR*2y<'SvE:nV܇|F3GJ]ELJH2JHN_R_E|߶lIٷnݾV3VtrC|+o1sACkSO"IZ?6ۜ,j;ku>b4AdUA(zz3hMco~J;-o9'隗R 1 Vm@Imgo7vqT`o伵n5+6~RݤW885VzM&3omXEՌdG^8C0!T;Ihfp&}J\5F@j!2NOҲ7w*ڽ ..|J7 69/Jb{ɘf${HĞD :e֯ä04[5 Q.d`1s]&sm $MXdӭi{y-b,!)$CLZOnQ [/̭q(cVm7-XOb2lK;ge)}RK#XhB+v#S=2HKw%чdm ;{Kz\ tmA$ܻnD֩"A ~59ү"=Oָ8@=:bQ^Jֱͬ1S8z\}۠gي ]r3 4 m<*D4Z-Vms?85j}/T  c?W Ϸ\^I=ݴZɼxp+6ꡱ={ի l\/IEb@ZXC%f v^ߚuhdH,mѭ|E'\rxUMBKCƧ|F`7i3慞]F"5 m${cqz wGV3Im5"/Ԙ PyngṶm'xfpG:aq6][Ks mRp ?Jx{Fv4A%e-[]#冚"Av|8'xg6#q2ʛdr+#Fxzy%B{ y5qEFUFI0z1]o9bjZ*- : B2p aQEQEQEQEQEQE^[8g`s犭y>mCIUoB`Y Sk1IrM>/9 2z;0G4 ytӨ^[oϕ_0y4ߵ]}Kcqv=kQrk\=a pG֫i4I iB()*g;!e݆ hbmib> bylI5fsյm;v2L ·֍ncL(UY/5[o2hry|@O3;֋wڄyoWr3qd@][Lnf_kq>PGvC)nR Imc&UP|SF}.||&0ϜqlQŲF~뎽*9'T_s桉Sw\K-$Gp1j6xЧS ,eB[xqfY4#"b ?҅Ҽ9irO{!ڊӯSV?h1YN61ېszIn[tG;t浆3o6"wLڲuVCS}ޥ1vna.b Y`O N_ӧ2&b-N9yjZ͔ a$ͣ9BV\ڧdÜɘlH#q+UdiJ+ʑWHl5Z\Ɣ~χO{)qukZHHBWlS  TJ=dz[NyVNzfڕrhAxݠ\0O(󍽄W7r^p@٥}?]C%qFS:JMR?e1yQ_/i$p:VrA-y5I;0 O OZze ]مkm2kkâ2A܏E&xK;(˖@X^j6imSI!gW/55\[@`љⳐJ"F $r1i5-<6YZq-x?N%Ŧ>^ϴPj UCe[ďb%XHt 69[UfgDV:xN-4XI 4HƟĹ*Iti#Og܊;YvI|c+d7H.Lpq 6; n/Isv,pF[oa=邱qq=IqP?ҔCE8[ *% ZmnVPc8wEقsFc&[-Me> p s '`n?,w8z|b}.fcF`Pƭ轳ׁT[N20LD`;䒥WZ5L-B$1f;u\A؍t{a,wRIvb>XZb]66 onyYc$ lװI.2RDrUtBEYӭ.cRDBAcC֏3ɹF#8@NYtKUF2@l:qm{VhծbٻI;1ckwKm?@^!ݷY;84lZS-eWSgkvXt!mhM s 9ᵑ5 xUr:G^xOL1s1bf K[ IuH+pRo,w/|ԭزLyMۻq)ihLU; 09wCqst}ZŬp'Sn2w˼z0S?-| "݌zs$wI![P8$F:fN%bOqw#ZtŤ-o3dHAX{T:X]A!&t$zQqbfTe .0@ps܎0T=q-jky\yG= 2ky\9#bw.21ޤx&Xd ADZFk*+$5_4l8[Ϲ?$V b7&1{Qm-fFKnxU 3Zt֏-ȀszK=ԎUcA' 5i,XntZnR{a1KEoK~r3yc~>P;+ Y3&`MHu2!Vè0ÿhMElY&+dzzsYڄkxu,?h'@8;⚚L->當-+7^NvstFuXм̎T9k|Yo|߲AexMʼ[`ľJ cހϮ h>s~nd^S{G],(]1zWQЯuuki< r$mS Oj4FSV%c{rgހ]\O-K2sN{桛^>ޯмCnqt5-a4y2jrX->/V‚n:J4{%U 7t/s$q7rB7vv^ 5OJ09F9!bw/! 6{R&(⻒ky!,mǒDض3״s06y$7;1ۓi4^2ʃ9ӡ4伴iwh[v NW~OSTW-֝ 2|v1ʼtcǩzF$Dg*?W;v5u:VU&tHZ IQZҗQt!BO%se35k/fM@i.V!G!?o%O])XVx5Kl28HX0_Jq3-pd"FqצGj#'}+}rͼR4AT,x#@(cEicod5+loJOѠ[h]1㯯SQPYC YOf@2SvۉWSt&my,r󌚻AzZWhmgEip-f] J71<~w锯-5]}=ddԥu+Ka_|jĪebq`d*oH{k0mz|8[n[|}; O~&uڸ7\*奝SG$&6X DcmΑJH  P" /(x :O҄ w i rgzRx 29ZڸIjڢsdPA u=~a;LKp0o߽1&]j]6m1%q)sӷZͬ1=o+>p<(r͐6߻x( nV1k2-X9-sH-I'< qԐ.qrn?!Y f!H w]$.,6M[!uϣh74FS R1N Z^=ݕͼ:ww+*c\Ĭ`dc,?,hɿh N:bKU]˶8 .X:t3S _d4]L.ȂkUuxb6ʡۂ'' z`|oBIhaj u?1Vfi|8qrizZr]1w~ 㰝?1\Zǹx$}ꮣwi]31gaE]یVhVW,Q y&9OJєcHh19ytm%:8 I<0@Ǫ[6%ֻ#v8烚4=+fd9t<:6/}s 2κan^9bc{ō <08=*k$SiwcU'M@Vn@9'oǪiFɌ͎|tG- ʦf˩9#TZOMKR#9 ZH.5[[85-on.6ޮhMfr)dZ!3d61zT1\G&XLX4_[÷zQ+fqkh12{R6Ii'e晉eG0ri: LZ{F6'@s9jk/I(dBaӡ\:׭v\}_ A뻌uVejA!7|6ڶ&k7d(H>>\h:9{u[XiXm {.e_x&ߦ(RoP #z֑ѽy$D&Ix;u&A{%qtY 3ڏ&1$ %26vlSOP3u$k"g]фh)Nu]*-uhs)KԉOEn1r{@-x-7sa3?ΦG.ynDN_xǨ5}>k ֩ 4˒@ vJoys%IrI1IMXc-A4}"<! 3};Ѩ:n5ͭݼ:Ww 1AY021֬ZkpXoEí{h;G$1C H^3wg' YCf':ʎ;c4MB?HvdH[2 Hc sh76\,-4@yDA#94*-N[Ċ5`L9np> ۷mzVuv,Bz `玢3D,&w,IdaB=:UmF ōHffOr)nt=nmAnqivg93@T{a#:f=i:UHl쪑3CNx⭧J]EІ_ Z9?Z(BOH"Hfkvt,fMh2Xg Q1Y`ԭ &h lLc{KZ)ffڑB?2>nHYA"7Adzg4ukc-hd|` ْ0ǎG>,g%܋oEqjȐN3'⺁i)=BIl$\?(ڋMgO b@HgA⸽OTZE%o0/pK=+Fk;+%h+rRI"+8䌃z܍F+lI|pOR!G+Lw1h< W $bEt XGʰlmM;)!7$$[?8`'\c:AmhWtrR; dZƙ=1j6AVe*g*V]N1@m#n/%Kn"`Fc?6~m>i\6d T[Ķ#cC>ÚeG9%nQU0dlqP iy69Ug'y=Gm58,"a$]9ƯQEQEQEQEQEVc]>uH%2oLҒ1_ft e,~9F/51֣n,YIUilFv9FN03ɦGfкq'<`J 8÷[6om1׊O͎ ;ή3qǠKIjJcuGĻ=Bzՙh0Nv2#n‱$dEi6ן^*;+Sp༛sͰ1*nDY0#9{QIoUPїp'nRH╴_b`Gp3orx`uUb3@ eOO|H"K1߱d<9 )_[=&= 1LhEG,љ_bm|?'W,5/[3b/.ǥZixͭ›L9=@l崭I|PB69m V{>ۇc6^ڠhJ mQIlҬ\kPۋ76?#k5Gٽee[QCCx E$d+g1&AbGwK[)Cxyx#ҷ=!uP6) iGku#LRcn` qGEks&[M#qNǶ?;I<LdrqbAk&#LľbN-؀q={UJs[.qH5[mrs w&\Io/̓ ^B;K\ۜqZkMc=[]B`}AOa fj>ybg$ی{Ұjg֏<*F-Gٝ`vϖs[;e \yCpN=ZTDzP[p<q>[Ņw9܎x9֞Ixt7UH{σ!_j0 m:-/BW0Kv?, lo$H3 \x3j$(. ܹO5׻|\ 4J[C#ZI\7`HVfumO <a_Z۸֣6`+ [IA}7sV&;kR%:H&q<#=ɣH" ;"Kwzn/'RMRm<\G$K; dPC$3\|dMm寚O籩[_bc'-dmә[+{r8^柫YGq0iQKISY|LwcF "M`9^Dx>aϑqUkqاemWdlSWw{9dӊwmzmiݥĖ󬮥)x5X޺ʳ,_v^=55RK#mGjz9ۋ-mF^icfDuXݒcӁA.Jरm$%0A8ϡj\kpg)xDPD_g֣`W($lz{qOQb[[@x#|b? j{5H~éhr+q<ѕeuP3[\-;АbuP{̓ӹס}2+Եv%<ޘ9(05+[jGI"Oe,q$m_2x8tE~.ڻtyE.XtK 2>qJueuݰΐ0v8ǽai{YtWQrc7À`T"b185fVRI?AӗF)ڣOP~lwjԚŤwRZKп́){X_H$ڽ:H޵R(tasdnqm-DA##Oﵚ]Q|$ܐqsO~KLDEQՈ݌r: .2JTpd%rӝǥt)ҩif-.S1 ΀!\@jt]ese)k\h脊As*=F\A5^N.FYH^F(6?M5J=WV%tt 9U|#'n  ^$RYO3A; #{SKPu<ҠD}dFJӯt+R8=A=ViK+M,l?I@ ]ak5ӑ";b;q۞^B-&fI;Xg]nss[${fP흤oNhA_}Aedm.!۝Jtz.ۧUFdF'~a`F? W׭#啯!P4siFo^xTUpsҺIIcmH S}wK?(zdw'rHG {ֵ.(QEQEQEQEgk6WV fppG?/g*zf g7t\I1rr3|ܞثԶzS nK:ArG7zޙF18$Áz/4kۭI؄iĒ$w5Zo-?˷hA.ZO-vpgc!wrxcޢ]_Q墖Iğ ta=J4vOsڌPEuymn]5ER_ jq!e7G=Jj^d,#o5BO$ڋxEwκV1xd+L2=(K?1NO]M٣,T|p\欥yx㚣.}om ՚[Ϛ VɓjByDrǏ0@)ؾ"y~&l.d(2ݞOCޤMT)s櫕+6>;f6b:پjL؀ G͖zwahQ 1C@Fp&f(9V}^=WX=]c,eMN%7v#iZ槦AfM!I.Q$c<(ld}i+tԴ4sA5"ޭccޔk0O"ZKgfoGN8o,#RI~QRBљnVd1&[n\1ދ )Y:r|X,m!ryo4 qX}IpVMynWS7Is #n`sv'B?}Clsnoێݟ.:sL:Ī˒Fɩ]|M6&j[Xn { K5;[h5{)n|*d2ǯz]dXX>F\{吧#zEˆm(2HY{B3Px ډ\39 <ƗP-i)6s7_IAךQ-k&[o ~O@=G< OŪ+[J#ɕ \kJ瑮Y"0Ѩvy vi9q0l>.nUTt 7{T+_˪*B$09tJ@+F\hbU7'x;}_ST|@1G#(r&>᎜c=j>wzY]Zk*RDX C/ 1+Ip,317#&[hڵ^pUkXn68-fI_S}ZI hA޻u-ypkYv亍C07d(n3IZ4^_>t=*j4VR}dݎ=;^ܴd,Y2pr3U%կ.~ժه4-vݞ)tRZͨ$ĤYCdms]nt>a'w6PeyvHmz8#EMyKjZGdzQ rA 93ݸ0vΥ66n"CqcԑӦ9u[U6;gӜTgQf5 \dH8: ISc]Ew~nJKgӠ9-OpE#e!j8w#j֭$nX۰w{^Mɩ[$Kav'$ӥԞK{cW$6Kg,}߯=*tKb)k\h_ Z9?Z*!"!g wNiQ0;Wҙ7ۋhV0Û2 ssU55kiY-nA]8S^Zۛ{9sl\m 0xJN_ 9䥆H?{v{ u4Hd(d<;Ug'5#Ļ6Rvgo1麞$bilQmzm+?1RًI$xĞ`-}1}n=uևgy$L[?>uqsHa( `c_Rx5~L%3.LwQ;W'J-t4΃`o ę$s @H{ jOT( KMԄ#w=>=Ŵe-]V-D.C қm-9@hT1P3TXFY9c>e̎ aHf#'׭Fޞlcܕ?ιeIy-R"L 3ױ:|lsT",#a3efE'I]L3snvKR;kQE((((y_~Ю 2y*xwN(Uʠ97OnoQtel#V=L̢V{i'=veI<+0W!RU, CeϠif;&C9R;F\z,7;f` \Nf{2(xd3JhKK1q"p6[Y;^`ΤK:c;A8%v交lǜެʙ$^]E^΀9;-q5@ bw=iN`lůNĂO7?QnԂܘAfe~G?2wwnӇ8U2}җZғCbICp 9tk%{|g1Ԅ'h' ǼLG]m$i_I4ăLk4l G8t#(v t,{aZR [*=O;7`]C=XMkYtkؘcoճԁ^izoDq1 zxOA*h Up݆#?$aEayL|/8&jQ\^$ypQX,H9je_-D0`ޜ函 ZÚa[bvL<{S#"d(ls^}1\\ڶtl˂BvC߿zuƵo{5z|iЖLhp@ >n3= Ҿly/cgssċ0$s\Ķ>OZNybrd*]Z>I&QYT 2gF3UoczmOi]gUTg  O?tc V@oM YE+k"8pvHK/<8+09YQŢq2ooh0}ǒ|<ԡ;u:Ζ"VjSz,*GڤprkԠdPӼ) ;ݺV,u>-X, 8G4he(;eԪX~9@vLmscoB?)'rcI6zn}2&]0麝vr+KnȻrېWwnqh .tRxO!RC%̊31 ih7Mp0v!.$U|fMta|ؚ<-L` +tUũ5(]M[ʉ8uN:zO鑄 $&}G6M}]{en?L5\[+[HDl#qpxQD Lrƅgsۨ3fe"VIS11?ӹi '| I!9OKvi!#7=HH֒E$u ugڰF'%[HYe^ w9A];MDGVV$Đ'O~zt^`hKK8˜༸ 4O=GԜ^pD7Ң`0+gQh|*xijyj=c'líj #I=>T\1$\sOA#J lBt =~j-RظX-E'fTִQEQEQEQEQE6vqq (Y@*ޙ7^İN@Bxl՛#[! evn8s,'ˊ0؏=$m< 2jvQ_Eb( qpbPɪG+*4,~Lǧ|{I{D,l#~@Ach91k D-XI3鎵,ڭ[-k%gyc@mKciH"< >Qb%MNK, k TqkzlGyCnJ)E4*(#\}9ɦAksWrFndc3*}~G}GIYCz jI5;b{a,*\ *+hG\m<M5^[mE ͇,>i[ g6fUc~h֓:ⵗByT„c'J+Kۥ%eʃ~m`cit,ΛvKy'JyԬ4ryA6cWR3'ZKie#~~L!fClbmV[x^HR6֍w2H:eŃ7 [FG7G:mńWXD[b!CJOL B %6Lx%>9}A+O*G.-vG[M[{dJV,8~NLY[)}<4.u;[߲:3moykl1Pܫ1eb Vd7E\?+a o G%ռ&"r36Ftwҍ \4+/  z3]-3yLdgw~͸+~}Tf$]$I@c^O'j_N|Sf,zGmE0HCSI+(!j6-AsPm=ojf6Sp<)!gzwԴN1F2: w;Uh-&g&ln7n(%[f@|c#?JG)Je?AKi;Sbc# vq EΡs§3F9<ԁr}jmv쀒$LUs?%ιgk}G[lgdBz`0 O{c0::C)jvbxEdV]pf%;Fߛ8HL 'X2tHbÿQoY2;[I[jD!c)oMs?JQIj ^]HU VK֬<ͲxcexLl-) =4'#9v],-8%2ԭYpX'19nc8zu$Y"1r 0R[ЁUW[~XK4$' { `> zk)Ȟ%m${x80w$6 )3ү]u2kt)ْxĶ fQ&er=wVe)QUl`ǵ:=FMJX0œ1i06*ZnNΫin\ǘHݼgONASm,R"VpǮp10sO>$[8M3`QՊ!yAMRً^C!~fّװ5Վ% @;w%5fUPսO4iq-ZҖ73…d;2@@"kWؤ˜p #zTm7Ksx,DK9`A?ZjzPV B{ԫ*j đ<lgڴOe)RpF} C%ImYBm3@ϨC}k>y#PmBK4]"f06'J$ 9GEjO0F3Hf\ q@a/eQeWr_oZI%s֤f6*v71ϭ =Z+FO"Pv 䁟9)jWrw mO9~n\g9ǭ$6kIOfF8V}%u7Xԉ6?=jKR!g"٩nu-*#":lgMK:p89ԲڬNd !U#W͜"d-Ǫcr R+1 r܆S)=Z^ItB(RPi$vۉ"ff,_ԥ&t4Or͞ T7-pBipH#񩤰I-a20n[oLW hՔ(oS"Zj3If=30>e۞ܞ*(uK٬n$P aAur_oZq}YTBL8i4k8\'6 sN>ϵ]m6'6b._y;CiqU΁ [oV,.>|ߦOjZ==rsPcR \onXJ1$t{⧓CH\\]c(7z-IpfepRbBʒHK+yr2T~*;OU}7tL#&e8[M7'K.OaL67"!t܈`0}էsb,"]߀K8L㨨!VK\i;t;JC CryV#`X$[B \t.?$UG+zA}q}8P )fN[ŕcLML7Ԟ5ֵ,sKbt*~|d nGK7"]610M1|]fVBd s(:"5ZH!2$Vp7| r7z6o4گcYwQ Tv=3U1 yơ] c뚝B]w]C5I  clm{Uծ/X؋?FXK{H#:<I 4QnQŸLUв_*.$Bާ>˜ZrBnl hQλy°5_wh9s[v,5@@*[?u Imo-w}6nI=+K$XxH 4vҰDAoAJC9庸tȤ[,,r`(d=^Ӭt5 Zݮ)#+s~=+vX`;w)*W#y6=U|ArR9ty\,B@-} 6?iRI2-.ʥA*a{zf=#o;m6{ߴ\VemQ#"f- F ֺ#m [5Piw!=7.܁F*ڥY#,#1b&* 64+][ɮF}P#%Hdx>Ѿ3ZjSڢ.~rc5u8ja7%ն܁8EDn"]']˜0'W9@zwx`hp5kApXn ۹sޒNؤd8\jH0skeSG gm[IY2@Vbl&%6?60к_϶sBn.$s'b'Lzuֺ~ymlybH|Iid'#cc]X״5ڀwJ0C%M"i|٤ܹv1BkwQykq-v8Q$!8̃xR=zZP׎mg[0)a0//EkW{UVk B&* ✺jMara#و _>\m-_6KH #lb3AVmo,$F=NJ7“+YXB)W'zpӣZGzx*sB[)1=:֬##]ee@'=ƽ~IFH >6;ijMH5/lpI=^m.LM?Ϲ([۷${1\j2-ce8`NsUxvy_.Dk pKqۚnu6ZOq^lUI O`NME4&)'- pm%p3H5L[R}&=h"7*.6 9V\xk;\^ɝs cv=k}{MLRi\p9 \TjVH[X 5Zܓ_agcxnۖ۞~)E֕5Ņןmi4kO><`EuQjvs_`hw:4L3P&c-!'M6mTǯv9m<UKݞnjK}D"[(%;<=9|UD1;m\YNx0sR*/#̸eYI3*IDPučqa\.1ۚˏTӣ#I%1#͐9Ig$eZ}fRFNC#ژClU[ɹH86O@w]kvwPFs.a3%'o GLkK:%wwZĻ%.cg9 e`/ ׾).u6m'1 qRzaI ɧMwo2;inF8gy#9f}37P{;kIΓrXb;o&S\z)?izwjjy6DN]Ln'(=nszpEIXwaԌ6(ܰ`gG;ƴ.LyL( 5/E\~]ǐѨjsfk9riR-cn3xdhf=AfQ<$mtPzts^$ab"d*}6?tdJgnE2Gq@jg_i z,H6Ħ@YT|j$kI@ ]e[Gyb11ڶDrCM>2bR0zdcJr[5c 9hMam<:X"n~1^kNSVlᑚSb&{t5m:TІ_ Z9?Z(BOH,/ f/0GF֚iMG6 \[%'Kb($㊂?Y4I :qDea9ȊM}/-NMEd|GQc\ւk]hFi)wHY5_(+q;|@ Fvt[4hȉU8,\u/WMHXЫ00k_*%4 ^y= I/6m/fBO.y>u9}Mz*:RdD5p=Nv7wpGjy`{c.Y51i֞)IU'PGQPŧ22a-ƳE3۷ru6,7ymcm}(R臨H!xV2px=3րܡx1 8l7KY(|}P6^((G gh`/[l'i.}B3uY;+k$\O}BKZgwH};YJx"զhm0|(8U&UѬC !g8QO,P"I |c =:}CHdr3ae&tV%x>vı~T%|zt9W}-G(yi"$c#qtL{ Xښ .lK}͝\g9k+h { QeF{|֬%6xuzj5_"04# rsB%+ )ll9FN)t5&@,o1@ 3/S+JU,)svm]8K d$V;0pzJ,*x$`y.uxOl}*եan+X|ˆG9[jZ I2u񞣷z|+[qHYB"L dcz+s \ YcF sڔZyaOxIic8RI۷si}n={bu $( VXIvgw_Ҵbٚh>?s"3n݌PZ͔Ad/Qw3{ޔ_ןV4kد@)==;jV@YGE:DGPC)>6/nŶ$rY6l˜)zƣhc2ǧDn >Xgnђ;uW]F$ݬZֶt2jpO cOeX!6J!.E~Dg9xuyH->ł;Lwg #皆=WTD"ol <5(V3N,Vo;?ty15JuK!iMw dNzc?j77:[Eh^7 *<<}p?3RoәΩ~ Lэg'j_\Om,ZB`"\Rr}ӫ_0ǖ.yAv'.jdAs"M'!2ыR^>x"krS.xi!$# PpCi6HI4);\*g:zVʚ]OL{[)`I㍳(:|mc6N9Z(QEQEQEQEQEQEyCR2A&[y )T ? =TOq:VfR1k!IXN3e\\jv6yoMn UӃ4-@^dىYBavߦscD6 ٧#!p1̚.V b5[numS `$O^F*7 k]\L/##@.=]2Mܜ6*IRal nª9jX,6zK:2BaH$|Ig5ōW7NE 1rGzP ȦF,#avs9qI %vk,I 5=owsqu$ Q(D\|WQ|U--J֚PhOږ:Zy(76yvY-.䐀.#g"P\kos"3Rq™yZio/dKXv3C.[$d:\_N[݄8G={ZxۻgVL">bDl PIyZH^\n \g}f_j,ZryzI)+5t9ku!"19%֗2s]xY/\Df(U;1³.i;ֻzцs =|B/"X$R'jy;}֞еMLjnwFID1J-eY]VF&ێG\mu>5mI {ltzΜ7zݤv&1MWsgp1@&]b٩_D6aʟ~D6=Fps@cw*N{{VTi?cʹld999Psm}3H~,S?!mxKl= iSUN?0r1۵:DekQ,JPznN9 _ >v#r%:Ysߌ?S+;}-I|#gSՎ3'חCmQJ1rHQ'L\GCl MdwesQǢ\2fR6n~]=+6=SMyOS Qvz)1'J]EІ_ Z9?Z(BOHVfh½H~rΝhZ29 \ yc}׫:.X6GgK_fɚI Y#3n2sGκ}B#b$PqS%[xP _ZntnJYy.Ҁ,`s8;桰ΧtP=d{xKd(}8`zZ**-APT ŸQT46ՌXaؿMOXC[[ke7)A<>0O`OjZi[3irk, P"H.t}͂MI,J!㓐: ҬH%.5ͦ2XI$?vNH.QEQEQEQEQEQEQETԮ,-ޢl1$U-CT -b{M.-piyeP6 ƹ$nRG5Z}2RK,7XfHL`<`ߥg]V{4 0>.g^=h @E @P_{Am':z`ODKT{i&Jjv=9Cmt$IG&?/v&$ԍͥ_l/79mxCE5=j[ŨQLzφKA cБ4NJ]8AQU\djq3Gi,?hx2£#Ny4 v5mn Y>D|{Вh{&m窉\caoYYGVC:G1D^?N*FoKxc2*Mrx#4hw դ'dȕ@Drx/O)$6Ҁ=1T_ۉg=n5= =]c qڡoBtߴY#O'$AN3iAHF7 YH“';gpКPnldKfM?JCgh]6Yves g*W+gcesz%cFjSl%;^BY}$3]Znqzڞ$ ql/@ @|.%KMd,8[}U"?Lܷz-CmDX}=踾/ᴞKXv4eP{3XmIQ-纫G7BrV1tFܕF2ňs9Gw][NY"$K|s![9R'Xa;]Q2@x;sF/-XM ,="JV  U+kaG^6հ)=І_ Z9?Z(BOHy& XE$,g?JKO6.m.-R>kI.Q[nGϭA/a׸G"EUurN:``QKAAe4,9VTR8 #6-wj@888\@VaD&׹8>? }<, 4`sĨqgAL$Ku'}O063qX=ǚ$KJ"y5id%Py `W7<)bf|(|к*ZjmX㍣&2%;=RbӦ/e1%?v`ÞyF"?YY Y?Qv{{HmmYb 2( tמ %WKCc#FU`ڤ|g=p)݆ͧ"|.R}yh w%̗Wgo F:QKg&3,РxW9qhjz#"Eʸ=GSϩhZ.^_4.FH;UY;-pũj^Fth`1׊RIˍJiZ#{mfo5bs(ܨr;psRZ]i&(23FoE+ǽ@<8ٹ2Yb ˞nO2 u9ؕ@~>*\kZK=$3 < ^0ԯP#0dg,bs8ۂ3?$<ͤco5FT rycW^} </6:6O@t'#vٖqSd0OQT_c[}b[H\qZDlh[Pp=*̮.fEi[ƍ2EbЁέsK)=Kr> \,<Cd_&{e8c9lM;gL~;QmiE{,WmQKoiLӬ:Ȭ2z P Z8O[LWc R4.uk+&?R:m;qOP7;M5n-`Jg=q${YpH<7|kZ//XUT TD`1Ҙ%-QI@Nߗy. n}/}?=*hD-oM $c8cFYج˧KjU S~l#Ҁ>}gR5TK" ӤFp0IFqۑS&5 K@ hݶڠCrR>WmǙn'*FȩHKmu98HШlc C5Im.N @9wuMr:-pA !'p;V~ŷ[ʌmdprڭM_OW֧34Ly62mO[!0 c,F}W{z|M ]B8RGPI\i3Z\wD"B%$`䑑UtuU{"FYBb-zWj!T_>^GN89jV55CۋC#^b5Ny^=54:MZmգj$̳c=@`Qh2XAnu~T4=vtBTXZ40hs?@1WӥehP׏v%ib "j'J]EІ_ Z9?Z(BOH-6oU oldܰK.멌u21V\p#崙)]w}>CpBrB5468=:#Ƌ F=H9AfGڨ[dW)uS'VĽabpX#iݻ=ώ]-4I`ʸ玠G@ ( ( ( ( ( ( (2|I2ŤnmU&LVuRbBI eaC= S oF}FzzF L h cy.OfEC$WuȁٷV G#>ww})J|#;1ʺ7.䴷kI52zOyaIf\|x@ IRO_&f|y# қwnԽP" 41FN$tqXe!@`pihi1@ G\9PfRuf C Fa@2pM$dRBdD!|C{2&kk;#dGԳ=֗ d(w,x8@EyYaFG9y' ԑFvSkD!CT#뚱pl Yŧå:oGԊN4xC2ӞqZjf[Do2̬(C3`,00F@[kR~\Zuӥ6Bę:T-'fo/OPԯ4I)-VM:}xpLs|m5rՇ' gZԎsy\v[ KjFvޚ/`o0vcE=)tǩO_ *ݎ vZԵkA@іpzU/<t}ȍYNLթIpk6b;:UBc2I}qO&A% 32fARԄRS1W.@xGd.#tǼ1\Fd)8:-iM XXȌ`}P̛iNK"(\# H:ց?n7rڪ2yPFR9<*C[aʣ^=@=[9/[^[&-u:<(^g@SMFuH2pDnTfazdV-V]J)۸2{VዻF>F5`$lRJv %ViIb.'#xǮ uxJRc- qQo _Oosykeu%kn^p;s5$]x'b(p lڣ}. FP6 X$8wEƤ'.ݓQQZHgS@I܌⥠AEPEPEPEPEPEPmB(氙%Jl$ÌdϤ XNխ|捕VSXs0)Z6m4*HcB`OXVxo[Frny~^Hބ$Emt\|xٻ9|c*;=2'_>Tr18K'/i5b:2~^[nc8PyO99)Xv+e<5䶖omh`b,zy{ׯXyexHi) 3'*N1'XmOG7tkH9 \mk>,i_i0c@3GIoqsoK-KOmEs!'`0iYJs} ̛pKoGL,Dim0}cR8BOxndG1|l9;kWC0.g~c뎔\yͥO5ݶ:~\^)X5+m6ER>R~d{U5!\ZCa@f|`(ϭjk,A)@}wvy ddΧ,I.Ћt$1C2Z@[ Q<`1ͻ9&׮a&%Yc2`Vcm6sz[m(dϿC5gͤ32OQԛWտg9/>ӷo_n}OқSyZI,y!?+nlou9_WK39D֠o.,g4T/[1tO 0ѮjЬI.2O͌|V m4Ɉ~ΒA 6+920 `8sOOjڽ$MyU7eL[;[V=Ч{s$pUI9sNdg\Om$;ylFL3-< MZ[H,y D̚,˦7`;A 1:ŬV c,|۳h+An%{34qpn#g[d+)SazzSnRos0I'WQE<22{S(uV8I6$(]֭͝q:ޫi9؆e"`;Қ\Grk( 9n9B+#6z3(|ĐX m7YMw&?#6Q`֥}j"yz̒h1qJZHun/]֋gD{ +gc屻1y7IsY&\ƱG:U}rY,&O)}Ȯd 0N~X-||ps8 ߨh{WS46ɑ4F5N(.αŒGGGIwd_vA9c֭M\[D4o9F2;Fx2,ZD[9Ċ#9h*۳>}#hI(MTt$`}hjA&i(`!W1.Ó@^TgɧpkH Q=*QhRz[%seuBՊo.L}QCMh;[V o2\GhQY&ݭ1"V$mMokYn ܁3VPEY|[sTE5Zn6vg[lڬGϪ,WZnO}REFmm8үnߥDiGZGour/$H@Ou?QO~=?QO~\ 7ҍ{OEAO~oߥz* {|(PoߥE|('J.m_MT(A~l}kߥE˟C/;_͍%" BXcW9_*/.آ:y|-?y|('JIM w0\E .֠:|ji$sM1|:?zO~oߥn> mZ/yci w{_^xu6aUŴP>Oҍ{%7 :XVI'8mĈn$Ң?nߥFcFE0ϫѬ5#FX,L=Z_E&Z] r]cUQ[k{|('J?qL˼nM?*1V͗-Lǖ1 ϖvkoߥE)4KOͷmõo3ёAn$6n"&=31{|)h-9SrZ]] 979?qQF֏Om?ów뚽O~oߥ;m_#/7[2KI_`ۈ@eyӊO~oߥ-5ͼڴo$7|#U<;q%]lV sř\qȭ}{|)oj6CU<Ql3#5F2j)6kxZ[F?Qq-60I䮫(2,d2Kn*?D.˸]([lI9lIϡ|('J.0<my/m۷W>j[\^Tb!@Ϝ'J7Ҁ&K<[s9` lAޙLKL Q[`z2={|(izRgVG`2}[w sֳDŽgy0%?>6;_)Aҷҍ{AX>A֑ͫoص6Lh|im6K9,푊'J7Ҁx~PXMMhe!r6ڬeC1[-I-pvmlcgC~5w|('J4 ̆SEBpQjnqwբCHOs{|(lfK>df BF5Y|>㽖xenl<ȋufy'zV?QO~\ 0隌zeիQ<ӻL-pw$STWޟ _@]bg2Zesw9&Yf᷽GUPJ)o|uBrp٭qsy"(bPȱ6*Op sZMԗ2Gard[.Sv6"mu#1:SwRFr6^1Z$'?("85 `I2Y?Y\YX`7_j$wVhd/qYzM텗%JbhЍGc]DEč$n\䅕gE?UE$f*N$#Qb_'kQi n?Zo5V86e| *Oó4a~v#3dh7#uҺ%mQ+\;5'l_5%\U;}Ub?ƏؿoKgo}l_4r;}Ub?Əؿo.YFj4f=rj6Uoؿo6/sh vQګf=ٱ{G(\ڍ[6/sh͋{9B坾mٱ{Gl_,oV͋{?b?ƎPgo}l_4r;}Ub?Əؿo.YFj4f=rj6Uoؿo6/sh vQګf=ٱ{G(\ڍ[6/sh͋{9B坾mٱ{Gl_,oV͋{?b?ƎPgo}l_4r;}Ub?Əؿo.YFj4f=rj6Uoؿo6/sh vQګf=ٱ{G(\ڍ[6/sh͋{9B坾mٱ{Gl_,oV͋{?b?ƎPgo}l_4r;}Ub?Əؿo.YFj4f=rj6Uoؿo6/sh S9vwKY.im)̒@t Z[KKpAgo=59+39'"-%eP_+$'@cxxIpiOL33qQ6TtV*ZIqF8$yj>c2fP@䁞QPGALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image016.png000077500000000000000000000332261300536243200266560ustar00rootroot00000000000000PNG  IHDR}Cf$nsRGB6PIDATx^}|TU{g2LˤBB&*6ĺ-]l?ݿZVWW] (AE {O&L}{M$Bͽwsϻ( CB!@ 9)@ ]B!p@{F%!B~RT@ B`vvXfŘ"B}U!@ w`B!"0.y7, .&.F F"IY)%:o!P3].װ,E|;s4OLPESdז]%R.[>=lF[6ˀɎC[~>.(?$հm*Ef0zIB!pwjq'YJkΪ6ی;ߤkqF01DTw)Uv65Y[Gu\en7a )Pvkm|R^dTN;C~}A6iXMs'$~̧Rl,j?'>O,( #"E /+6X!@/](nu_>ëaQQjQﳨlˌ섋[4C)ח}d/ijN|yg7i@cDx۞/ָU8@."@/띴pȚoE=桃 ].ٺ&:(nˤ>֖b_m,^rCղ: R}Y5l:sىw>B4;iW<& &pj[Үh"0I[1ԅwo͏MBɢ|)^zta1ժ'}, jsڭ~kc0Oi v10.3:(5B!%\avJ忞{{zΈqQeL?c@(2ϸ;7l^d-њHVo Vˁвwm2>fJ|*JTQ 8RE5ckWN:ok$exLMMrwmuMxɧ@EjKٻȒO0q`}-*ڣ߼)f-*1` "]ʮzZ+G}A?}US\neMB)ߠILoWbKPn l6{iUS6C0ū?~?LYڴ7添TD b 0m(ٍL!=Vx/psPX㶖< x%nR,5M[ *&cƬjc8!;&TT~\_I:(Kg텟l&,&~n f*a',SU?%SGƓ6Ca] [ $TS9΢<ͻ>ΙI}B/! 0a(US;(C%d|:o#tqeej>̥)΋\R] WL希Tţs˝lKi`ɀj-ıXSABL2a΍iZ )ǻ~%"&E9X,f)#YE@t."U .XeaEP'O 3Ec@24.Ay*Y8YtOZ2D#] JѴ퍦=Y<V!v񇷬J*z~\&MӔylRi]4OĒSy\wX1iJtU|vW '/F1  x(Rbkͦ7'Mԋ d]0Qc^A7+F($]V<.'Y"vQq N]eǤK^pSe˺Y /(ݶ?Z=,93XkV@LzV@`4I"_@>pvבH5Hkb{@[ 0SUӷlܽQ[7amo.UFD'K(Ѳ "I`&Fd@vWin+UxlC#M-Ϊ6ty?Zn=ظ8cu.ԇ޲s"1m{w_]Is.΃V~,r+` P8IX/Z >F8\KA :i#r+=+IJФ)N3~۫^nord!M7&&xz7݂YZ >uimWS._M΀f Xhl8Z l϶8?s5 U҅%B~;,b9@x/= B!p`6@'s}g5W 0?BKC.**kM z%JW*qo+u_=ݼ K~Ca'_ڸÚ-͟/nN܌y Օj}%_OouOe2@ RĹױQy~io+]Ƥ7wצRbRRR@CX7&Z3/R %=C';#K'Rc\s9sU 6˺I2QŅwM3H']vVJVyDivvvZZ O", 'V?rRK]M6;8#T~7ƣ@Z:qlZjQ6}v3 ǬmB2}z!?{L];DDp.^,+4|OjEdg'gDWCc55%L$pMK/(% uGűyL[5hKfV!Cw׌\5OyG7 eȌ \ Xp$>8CNfSc׉]7ZvYy>gl*Nd5 qӗNK vp?f%} WmUgyG 64jW(Yl뾵 X޺S u04y%5} Sz/ыy=߿Ț!(GР'-q zgRr96XVr߻dQ$]^1=+wSÄ ۭrC+`G’-ek7˻Qk.gn,P747&5 uXeBߔC'4zB[K9ÔVywlfX)n;9sɃ܎GdJ_2kTשVdXeyX;eW pc;.NnmUTzl+TܬtْKg3Osti$W۴YK9zoa<&mC)}pY]]sn%AdtwɏP2? 5_ 8LY$Iy|D\ҡm͠| /A<4{͚?$̾aV5j窦^>$KϷ8MSC ?)˘Vai~>9"Eqbl(RMeeq8E%Ebd3\$MTLO5 @S._DRH1]G7ymKVP﮶`7r#6HZ?HV ,-UByfߧ>#[t('!{Kwyf/(C(1ڡf|P/͜m((럩7q?o^WhjI 4-M)wMփ| $ΖEp@h~ޙ{38d򻜆ia˂]|Ť٠,r;N8Y`Gi(Rmo6vË,67.XznzYKqTʓHUWynGPZ6WXӲ˝Y$lIaG(\229/*sF$K [om6ziGzu'nULHPɗg-с<^ cB`!DŽ< ykUp.+ Yx{$q16umO6~.Vť/{|IXnp`s,JR*b`4 0![(gK~fË%<Â|{'I=7:c,D?WG'=.;U}lcŌJ \~m斒;QX> i8V~28W?39!&  5iT}q Aͱm𴏹qKH9E9.Rd*#4,D}!͉~2:P4P>2>Sߩ]ux AU \0ܵe{`UJ?q,yjFJsJfVWp]N?a-sfE &< A6yiWܥg5̜9d.}Hm!/;E#MXW55)R&fi'S.\+])Kϻ_=QZ@ ?:ܚ'uu"C’?o[Y3ټkOg);9ʼ+BQڢt7HfϹN{#6O?s'̸qY\c^xU"mFte\>?sɣjpC(N|7q2Ugn.ꏃ5]+e}o|[9Y1dgwَ*&͑́6wTm{ӢB6̞s~gws˄YQʔw b7r!G(KDl3|].pGOR_Ix#i ;&g\|ԑu|E8:k~["CH{\Fit4eZn l\U 2Kv'/tv55ܳ͜J/`}drpUIW?tbc-\@oRHa9gC Z{xTTƗvjNq:t0Xk8ĨAúx~llY\z>Bg [xjE=F8gg3-rz ?2M)+/YyOcd`3^*0?HMIQE#}6sEU :_ o\ltP*Uiryt>thw~x`Y~~jSyI(*5VEh4.-hŪ͙+.[lMXBI }#[n{$R*c,n. "&CbU+`d >XI,6(qOm&'se Zn /l8>[ShJ;=Z2[ ;hU u;[pJN4f_M H.X /yz mZ~?2oD08Ufme-y;:I!+46|~j%!< diMW .xVQDf;n:7=ŔODk6# ccert#`0)Q,Kݨ.nٽR&[rZɃ4LD ,7vwa[rE{4w] IO"5@*v_qcvO"Ā65n 2 d«N"H\>0*6\s3>@`2e2ꍂb nr`"*0ƋEb1 ࣦ$6Xcl\<7*ކElBla! ͑l\:Yl,ާ G$bdel")IM"hK(J)Onpt.[% U1@c4)IUf~]"Kő2JJ$ g+U).;X$ѼW,&  Y1&*)Lp= /VT$XI/dxT%5FNVJervTb-s2Fyzx/ BIđQ>3Oٱ|YO$[T7gװ$ 7$&F*6eb*CߐŦe)0 $OWgp0ɉJ?d|ꃍS,T*5;m]Z,Ԃ @vJ+o+Hq\-å{#G2O! p8 OZjw|;G`uFd+ޯ BhC&dX%o]@d *Xn7[Va f3AI3]py;@T@Had! \> d5[1CJ A~rB(*d i>ZYP~,t)l`›{;vAbdB~i?dS76rcgf>VwNp2hE 3P(d>L0|ŀW4P:&z %>|^Le/ YBX,8 0P"| zM&LFyP_(@4 `0M !/:@H@9  2'EpvChZhz`hٝpcR!0Gi~05C{ͦVU\9   03aJ0b2vd`( P-H!}!WPf^;$`׌Ì̓pFЖL}3ȁ\pr1E_]_1%?oܽzo?ܥr

`Z0(nD`ښQYaw$s?2 ֿwKAv1; ޝC!00y)t0,ػ$E;DNO <0S3131& oXkmTO󟛚r2##er_`"$MѭQ`pS3CO@0i8L#)zhA?V0f=3`&^g*ʎ@ xw2FI5SٲjGظ9g]AǡK{c3ǧ)i UqPM:=C u9bz\ žaKIF2W#Trd #QA yZ So{A &)(ʼW$,}N0h;ñ(cU:@ 1)x I[ʸ,cǀwdC4ɛD-*T$C84B4: B!@>뻣̋#B!0<1 0qU C)B!U!$B!CD!B`.@ ss5* !@ wQ@ C3;QI(% ,L< 3A`t3II/K}ſd4TrKULAKM^ voVygI>/d$wե! EY*= =[&,Vraq ]{z۸GrVf΋F._Nyal UD7_\`l#i Ļg l̄ކ{=്IT>CxVq3x0#=wGw6kժ޴`xNVݪOn/.CxnQ\(1TK#pʥ*H,'܏%B^SA6pm #7^|ٴ4M~_V!ҝпGpY0oP8=L$,#0ښHp/_6-.1Oxܬ g~?/x @?Ki4z.2$_մ͑:{N/k'}׏8^^f\FA9c&X+f kH7(nMg Ny=>g:3>w{1f0sVzUe/nWMbŊ;؋< a5@F7 ȕ"O ~ ?lwcG%zOMy* 6kZ0Cyg麣ыި\WzMfk^kTo"'N[`ڸyOzY+ dž JZkvzC k]pE/z`՛;JG]dEd6UKUU_;: e@P꾓;zhrp^Sw*CC4n {J^Yu=dmKKw9)LI{)&W`5?Nxw~cU̐/Nάa}Ҋe l ݪWX51=Q-X T; aݒF V|mآ0Yo;{sq|ڦO ]֥{>a6vE2?fMJl__=(4!\2= |8Hj=cjzS݋x{-:XЅ)zL_~Ue>gI;E!ڝwŮJhݠry*qGNCu +f9LCCzEQt;G;@~`Έu7zϬ| rTI>py4U ɪ֤->c)ʾ>iM5Gf;~d'U$)w9 #,ʗnʤW2[ޙD'+zj#ZisUx oc  g{(H ]v+BuI@/L>Dy +5қa/0׻BOW_A}ۆ;=$JA0Nߡ۶v8NO9N=:]vؗv߅,A`p+e'I>R8l7 b*Ń%`0j?hǠ5w`Q4t2_Z,goA5m8>أ,a/2}m˲\9˾yմC}*:Q@ΓG@;w_c۞Z`R/z4#=1Ȉis X s19{>#cN/.֗z.?EPW>\?x }A'f;B0ycqC0FN-mza*xgu:MĶANf%aI蘋~Cg{u$Uud-OK$9i{kJHX(f ۫zp)b <=tmot O#- UC.d*4sё/4ѴGdAu &JSCv |iS9/i80 {ԑdeCyk/#.x/>ϛzGDvF3 nҡ$ К*\cHٓ:NNvQ7.jYow5L+잷߿!|{{V@'a>@K`RG- o36~B,6}o#TY=)5*.UxJ!҄ /h;H:Gd>F[+p"`8 lSO2&܁tPQ8Ɖi]8Wyɸ^Yp^ /s98 1ă4gNp G t6r3`7lx`ctm6h뎮M=M?:HU7}_ƺyR)bsrRwiNM7g?!'?,-))mZTBw ${ٖ=ɔ>:pڸy]GP8~n($BEOkRtc$lеn{`xN9Cnacl,")6m4@0Ӽ 9o|@qN8ƅM"{$KiزDݩ"~R[K|};%w%ӻ`Me$WATE<>^Dz!?w ~ 8& ,L< 3A"B`tG J@ h<ʠB!p#xo`T=B!W ẂA  ? oO6IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image017.jpg000077500000000000000000000152721300536243200266540ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?vGz?D??B]_q8Q:Q}J9M6/=Cuwoe Uv5nI+T[vB֌CZ\Fy#ֹKR{gH g؃vLDakksjxyJYLZ?@bdSp@=qWtŭw K?p_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏cQp_1hK?OE ֏c4ҙ(01~|?4du(ݻӳ&|2H"H+sE$_?QI)2]*uT*\匊5Cx7ʠ޼鞤W컘}i1Ag VxaRﱭ:qk闩ͻkK)K.wZpK{*[y>JI%Q-e`;<4eʆ&QrClXC>P=֣6@ȋ p$SZՖ84+{(U>8!V7CmG#C=NnklSQL,pƭBucxGVs۠CSJ;9ү S"Jgo߀qQr[˱|b)lWz&@E=FMϤSn>v8ca rN[{}ks\4H"QdBl´+?= Zbbp7ަR9MM,{bpGLcտ], ŗp$r}sumH^#ĭm$GYƜԯu1\mN %<fm8cKC{ D 9bzL&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.>L&(O0.7/Rܐʹp~cl,,EI"MT >;֋nۍ GbA6 e?vr4_?QM}_ V,;>/5=A}_Xk5]Ӳ$& $ 'Ep[\騮2_iX߭VH$MH, =M[ oGb[Gۙ7rGz,SM#O\N=p8db\!ܻHГZuh{hRG!K8^EӢ|E[r[qAR"VW?r1JR;&Tcempm^Iڋ07 phixc'uۡRRWfrL쭧L>f‡s)RA5Tٿ봟7H䷖Үz<@|1 w5i{EyW'> eIwD4Bo.H9׊غֵ6BebxUX8ݓjoO/{Es!B=3FB$nPHjHxla7?c惴rsVbW3o=V #mT%[ڤ^:q4^i K6rq!#cm Z,b@ 9<J'\bJ-\J|(24R{2$#U_g]CdoqB@X]e@ 3ԚⲁUFXmv;$].@?/^H5_u/5KfX v ㊋Mu kƷW8b˴@qiA˹ kJ+h pȻqIs׽gxWZ6WD{QEIAEPEPEPEPEPEPEPEE6$EQ4+4ederѣOnn?=le=c&th/ Ÿ.k%\,P:c" _7p1hEe4@e˸ؤU眎҅褧ZFy>V xӢs6 OSGIl8Xx4K㬛ea̙#H+B>|.ϯ}KQ7&1\rNUt l@ᙑc ykJws1<;G!r dbJnsԒNjODH'*Yݙo.m+ 쌐PiKo=ita3/ܩ~E;nYGeg2wB"8ڋ`dޤLȞڛS#z\w}3LM3xen5rXP)'to鹭*(ũSA >_ LkXh05Uki[Y>7WGEkҊ!=ʖM+Jσ  L&ՈpO$5Ec7t;l &16VRʼn9O)?F{by7,zݫrr +{ʼnfMT^4K}lofq ( )CۥG c#'nA=jGtnܘだP\G^E;ݙ:w,nnivnKiJX( i(Ē{:@#-]׷W?¯CWF=WQ*\)V0?U&v+3d=я)c0Y6!K2N~[EP&QP!,H Ǧ+^;2SBCq.6k(FmѨ!G'ОzsGh-Ϳʹ-Ԉ2rTykzlmt8X aGV-_M84߶C-ΒG2.7#tTSq4r6wO]+@B >]:'QˣYCnb NO#ֻ (ӰY9h#{w_ ͛XLf#8?7?tTQ]æ.bFNwݐy]u]v {m,3 YaVT{l2[miY <~?(-+s7mLXЫGDN&*dN2I?֯E[QEQEQEQEQEQEQEQEA}OTQ}OTSbGALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image018.png000077500000000000000000000012411300536243200266500ustar00rootroot00000000000000PNG  IHDR9H:sRGB[IDATHKc+3331`|# +ЭL ۭ?eeaa:1`|Э,`gr b20 fǡ %\٘h븮^"l Tgohg ANo Z'?t6^zp-[ogG ya&DD} lZ@P{"x<,EՀn,o|;}8Ǣ|㟿aCw#d*s İs hD/ԣZ҂0|3.`Wp;@Ӻдa_ Q9;8qQOXwrcA:5A caj6"Ob`œT`]`hȘHV3g8y-FL c`0׬mC*D~ WT 79.Ys`WX!O QfVo0Cl@u2Կyqj>H0wpZ,`׸uw+V5Z 1@rGR0 ^Ⱦjcu6)@3`!8=wP7P8x@J ˨[iR;IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image019.png000077500000000000000000000020631300536243200266540ustar00rootroot00000000000000PNG  IHDR| {sRGBIDATXGXKQ~ A xr xR!*޼5x@.M, "İ$,5$ ̼&ME]#{3;p{{˼ xZw7d#݅l-"H fGg˺ ormTK;٧)D2\IcF:,^T+Bhg]7W7T?E:b n~c vHSyfe]^JU µmi$!VjHu|6}܉̉4Lmivކo(7:~PPab;xvW0'MJXjն%:`)Sr,kug3/~VOUC;Wߝ  ~QHQR nգ(=cI?{z#3W7IP[ԏȏD:0]'jm%4;Aޭ2yĕ$Sb$(T,<ve$lzeRάFfQajvu'z%(ΤIzqƼD 1P.롑(tTڐA1K5]jN2 WṋsT Gaxxqe1zzxs+'paLEczo#<`{4O^ VHNGMASr\*Ҟ-͞n{7@%_?2݅KHHw\n)6]VIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image020.png000077500000000000000000000074731300536243200266560ustar00rootroot00000000000000PNG  IHDR=sRGBIDATx^l߻+(у'V:jڰui-qNq%fbO5)Yba1%lKVԠgt.v\BҌ!Mlbv3~ϟZ4{=HR kO x]#:K ~䧗/~9r4p P2ke+nn-0 0;+W __ )*@_iխ7QH%=7qqmHxP(4eK0܂@d?4W {WfWP^7Ȳ_T u7O)ssggǧ?. FpqW,_VVl^:;{\ߢ CoWU(/'-Z{l <+sĀ_:ٕ+ t\5 ='< ay Į   ,<Ms/d@@ 8cJi#_s}_Or,ޖRY:wpy-#~ѐ;onyl5Mkݖa EB^pϞ|eKMٔ-̷-0`|̈{{}wPMlŕm0@JJu}T;[[}$K -_'GeU"{7Cŝ[Kyf0v#(Sb mAwZ704#~fqݎNj7 Pl uoVVxs#/}`F~siݖta @ dSG;|J|+ЇR_Lfde?=5~JZ?Z$@E@n O_]==JuY롥Dw[:$i2Yd)}e0[34lμEQ iuŦoqUP10&y>zTMvv_ha!S`'?L)@ccٛ.0ƙP*EY!::)Zq=2թ$`cG6HDǚD? %)6?}GkBo] 9&dl3|(ہ35ʍ:b'L:P ?2zFmc,vLHͮ&s5}NRG\m>%ܩgGzۨljhĊk1F$݊YLƶ^C,o<4vw==XS2m?}PQ6e2i13[yIIƓ]sfqk >:Tfgj7]p'eP2IoǶtUT0qkؔZ蹯V\W~vK͝Zl;IVb<`~ף,(==]Bq'~[yL-2whI vgTXzTY5`ud \hiGrKѰ7/9Y&?1;>tաL.fJ-C5f^7/rI8e^"ckz.KGJ qޭVJ7͘V` y^!x>=MC'Y3we&Z^"cuڜ:=4f90Z.5!Sia^Yǵ-[L7t^n 48>^M\ z$%Y6%yI@{EwCy&r&߂""姅 @rMS @@@pnJ1 |%יA\ EG[tS+9|q@6\)L~skjnR\!](W(/in("j$0jK .FI\%!ԜjImE+uVR|7 PxȤt3V{B|IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image021.png000077500000000000000000000021651300536243200266500ustar00rootroot00000000000000PNG  IHDRxC=sRGB/IDATXGOhP_h+zQ/ZAH5YTdӤQZ/zs2\VY=UM7Eg2ApRГ광d27K^#>1?gWխ`@ڱ *̬4wcˀVj*@du]]`p,y.<ȇF?XP]9nE־0TasPKSq-]}2W%-p1<;̈́/vώg&6P->l=dV ,)CNRtgGca `J2vF)K- <)(Fa ̹h+ХC٣7S©X>]J{yShj* I"[2:>D a9/㓦=e7s'G´ɵaWKw a `\As=aSvvafݦ0tT$B<_eaɩM!7.:vQK8$H6Dx'{#K,mɯtPc{vD;3?$=WYT"RD;Kb 'Ƥ*NUu?Wc=vIx`Q$g 1|_4=:N7ݶ|6nmdR{m?ss~CL"aP&b{vNq/Dض!R M$sM+Tj+a|ȩq M6Ă]o3]7@+_SuIn\qv PYи+ <B!I̓VuJMl*l֚[ 8>ZΑ1IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image022.png000077500000000000000000000124111300536243200266440ustar00rootroot00000000000000PNG  IHDRZhcsRGBIDATx^p}Y&X0 O3u,; S&@ xXM<2SN,`liI+=C )&菫![zw{{vv{{=5޾eŢ%,SSSٳgB1#~mM2TZ-[F655\%_0%Kњi@@D>K>J4@@*DTs39   Ps /[K^B2:[\"9wEntAC.TBԻS/ŬPOs~KZ.@fi P^zˮ''řK?q>ytz@UoNw㼆5oo+\|颅ɵ, @,Ds/.NOѷw|*O|yтDsmdX!xq ~yzO=7=&o>78Υ.$LjoNbupHu4H-D8MIZpORD+g9)a@&h7a6\=nTd~:'=?;_Ͷ;7{3! Csnbxiː[b ZOeԐ5ԅ*Hͳq߸sJi{J7N֟ Xx_сd3r,ZR㣇{/9l5|C8mn{kuϴ:s+IazR#t&sVDRZ!l?|HV|Bm \TL ^[=/ZCG-. [rԮTg>Nx6&ϽN!P9#ո~! @ ܋aP |uǧ,7׻)}YyڼfKl ݰ.Ͻ[ܰҶP`|j؞+,+r =<ZZbAQA^cRgMmO@u:\G{&FjWG_!EY&i/iߴ-OG͑y%XrV1%oۛTƯ)>dn9122ALHe2`U| TU&\ W>&B%Dsk(gmwMoZK#yyڪ9Osd˪A>XZ%QW[C^g3p:vndxlc A>I{/>;yn`;~.=;|1ғtȂ10|33ȦDOxՐ+m~EEY_OWmԷaҤB3iHC)` Yvsz%C'm_)>uYG/Iެv|%cz٬4Ovb YB ˒b)i/M 9E@244+.--ЪpAKHZ@jaIƘ=;K3HZt;ܡcv5? r]o޴K٧;=R,ö -t]H:_3ge sB2t !}̰{-Pa0:e,Ŏ@rbSRSP%.:I+ Gzh.RxdnA}v<6 +A?wOg$W eye;fx:i%B,V;K^ߪ^[8g;3O!2;3.bUT}k8r rSZ0o B>s"K.KS߲m Ĭ?6:e3}DIFa_+.М:+Si#./Pp :rjλo9J_H"Jr, gfz{X.[0H.<=h˕s ыlOTUA`y7h ~Q4wo49]]TnIo:."@gLᕪKR|!Ei0kpHMųs]I+h6|0G{ٺ^請}􎇗oz#S3(Ԟ|`Xбx^gMLJt2n)bg}q` Q=D`L"!1EIr,ā4bo0±j ?ڻvonm_3Շh1yƫ&S)~%HXqnB"3 "@VLxw͖>%5},K}S'bDNH=- @ @sEsS 9o'g,-^b>7 :9ι&CKs]5`Tl*i6OiY 2ZIˑ2%iɺeogJKo9\ s&ǥuB߹ A_-hQN|HESTS?t7MkpŝR8A[f# t aS J \NC0셷;wzx譚ɨAzPP$еaVg .lݺ}.B4[{ 47d+&% 65AIcGr *߿ߋ(s3k&cazXOny?{V'海k'xr.kl2iw[84z&賢H"10UְzV7s<ٻ'vL/|)ԗ@s}RX_H\AIcEr  V3f2Z\u ꟧#CW\6υ_WďddLi43M-LuFM&['q#UU lW5qHjAJ*tv;(eKp87J5R#>d**PMէ[wAIGr *YdL`c`JV&X0El}s.#[˳ㅁG{Pп图h_e\8.(i\S5Pj6LEW ]^c:'=ٷ}#tyŎǟ^[ !c۔57(7QSAI+c@+Εn ;=KɒBalp[1g'VRSez ṕQ x_9'ي]Ir@ͮݾqmߵ?k794*VSs{>b05%OkWj@jT\U;knI M&l@j <1H1G&tNb )A@\r "?BJ(4\ |gCJ#YA{K>LMM={}?^'3F@@44W~iٲe䯳3bėn@@L\5Ls\vP  tmq.r-1E8eB=\f.Yjy@@ c91h.`TyeIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image023.jpg000077500000000000000000000232571300536243200266530ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Y" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?$3#!xFJO"o I? 6Aʱy6rLhqR:JW5 yv+ r>QQOsO]Ս_"oDݿ ʏMfեF\7c n0N?#'_mֲF쌍w F-t񃻡5cKț{G7o±l<]m f1X^+N8=t>7o"oMFO+| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| yv*lZ2}hXț{G7o¦'֋| 8trFzt}jދ')]*K)!\Cv]JHF EYhR[߻XN?hNdm2F ED# "}ˌSϵ5CvMÇvp[c>44V:o/e1v l|KSC2 #5s,5\{s2!($)6 wF#cGpOGƕYm֓']-~Z@vǶnVic>44nh;pOGƕY}i[h?tcsFic>44]њwƏM?Af74f8opOEY}i[h?tcsFic>44]њwƏM?Af74f8opOEY}i[h?tcsFic>44]њwƏM?Af74f8opOEY}i[h?tcsFic>44]њwƏM?Af74f8opOEY}i[h?tcsFic>44]w'*oM?G=h~D&n(,Oͫ?^?mn7F7x mHTv?6|'1M$pɅ* 2pdӽRܗ4 S//IRnK d~ EiW4Y.uVkb$QXM^EHܬM:U~ORy?Rm}²-2}KyP]4p9<'&4uB[·K/,fXFt Yo4ۛ+hWbd=wմ]&oZ.,T|43W?=RiڒzEŜmOFi l7 =Ni]̓Gce}5Q+F%чV덻XEսYZD.㷊-JO:1M4mhr`ezgvGZT~_=*SRK]5-i\F"[.a}ke :37jtn#lNӝGYV;+#t(̡`6rZ] HK*cW7i0jtr˦Ii8lJ]FRR{\ay^c*=1 ;Hw {?Nht=KK9<&Y.r~HNֆ3E$~e˪#mi A֡{NVeIɿ{$un#5Z-i,**]@o5\tZKx{Vw2H2 dG8Z &T&Y"".ɡOz֪,<dp;`atIjw\q 2n{g0F*0)) H)l s׆KEs~2W aV0sMOF=xdiWZǕ%KKaX#dsz֬jmٴ Eo8 6KQdq v5N6vVvQYӕ'̀ dhP'h屁ɮ;Nd[=n4YKF,YflY _SШCiXAiLf 'YFіNr9X|; YM>YukwB1TE-/u#20cVRLF8<'=89}q:eOg+}N0!V >Q@1=5XcKx]"z$־i IWcAn#+K)s$X^@e#0NNHq44)Dz`K7}Z#/o0L1R3TAM>vgԽBD|xn ).]?3+[EմJt֒L#y2"VPIIcK2]ضg%ktkdfU@${B5(hURi!!(C*qO{#ɤ#HʩP=?:m!jon1s( 7cC5ƹd:k80<;"mS *v1kBR[%;WxyLT %pp S㾩%0n/tOT {QEB'sO5B'sOՓ{xnΕѽHSӵ77(|3E'QAxnY|wp7 $ Q4oYzϜNYZl-|e*GF gO]*k{v2Ic]C(.Kf2Hby"Ghtedz?Uou eƓv7:';䅿PqO蒠h繐4bXYNLq #;s!E;,c*WnyR9zr*Ȩdu@pY #z,hYv>"ugnkF'i,i"evP>a'u-fKسI+RV5$G'i=E` 7P̼Y3̪Hb޽>/ͮfG5bp],̗Id;N1O `pj7Oj1W#99Z+ڻl3ܽŌF˜eQ";I#<Լgsmy I"@tˉ7H_ ˁ3c2)o?bYE P)HbHԱb@xI$ uFW㱙R0AG_F0yiI=M]9H3rc$g,SB+JwHB\ ^f'_>T&[iP4kв1GG#SG\*-FHU]YQRG#R) QFQB: }fE:[9n\GD%7bzmFPϞh9< ?!M<ɶ <+V͍9=CsNU/@#hpAVЊeW7񫆳E!`0IE~9+j}sNͨj63].+mq$;s6 kmc,*1d>tvqmjgc'?R&}Q/mc@e]%W9 gPi3EmGVһ hȓgO:Ej?WK럳Kcwe+FenB~͌eril&cjVu>YHٞݜt]/W6 6 4 JRҖvKn%u ] AΟ?QQQ{??~4l_??~4l_Ug#{Av7gO*.V6bpu?aZ4i7F@Tq~;Icthn,s4.E*@2/QGE>QsPGqZl)t]*[M2lNNX jPEPEPP_K]B{QEB'sOOX6R٤/%ǚRi 7N[?Tf+]K& ӿ=D5$P]5ܣdHeNKqpkj/Im^O-m- xO34 =OUе=b9R6 64͹v l/=O5J&Ӻ9;]z}f٢p1r0{uϪ 4qӮmI &;Jޢ3Ƥkt)}B[8vҮ1%/@dN{Yvt\v/edrvӚ R忳mmDm3/9'z3*AM5q(`qmsuPnnM]J֜uwmɞMRy(\<kGV_SgZHW;fO[Qjm[+KX׭n~ySvvyO"/luiZ.-u1f*˄m}:kfw%;hrCúzf`dxm#EQˑFĹGzXMWF-'Q[ܖСw̃aߝǂW^xhPm__H֓30gN n9`p ]OXW+$Cp{-cĥ0Fއw'[Rn}nr#hֶ3=ԹtY$,12u [ixqۦILbWil~E'w9+^awlMQ  9A|#qɫsxzHInu k?+p,kv*Ū6IdS FzSڶ}, M;hw jKmĚK gʐc]c@TAu m.?u8?{MbJk.^64us/?Rzկ_??8y#`NGEяZ:F(((T?!ST7?')&) | rgβ~կ~Q@sjcj>կ~Q@wZGڵXZ*(VQ?֮~կ~}_9ߵk߿jcj訠wZGڵXZ*(VQ?֮~կ~}_9ߵk߿jcj訠wZGڵXZ*(VQ?֮~կ~}_9ߵk߿jcj訠wZGڵXZ*(VQ?֮~կ~}_9ߵk߿jcj訠wZGڵXZ*(VQ?֮~կ~}_9ߵk߿jcj訠wZGڵXZ*(VQ?֮~կ~}_9ߵk߿jcj訠wZGڵXZ*(VQ?֮~կ~v_cpt9V`(ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image024.png000077500000000000000000000022411300536243200266460ustar00rootroot00000000000000PNG  IHDRN\sRGB[IDATXGXoL[U׬A`$`E$d/"t&~l٦ے6|0Ψ,C#u|kɔdU\b&b$񺎑tFWWFזv&ӗ{=c̭*Y0 J*BB rU>ZRp7{+^<xh9ccj,\%aѩ7);Ejʢ3%;0K\a?E#J)p󔵟s &jP]Vq:|Y* vhgAobp$26 Jd2R8p+>{R3v4(I۫2]dLD9ȇǼ8pti VT8%_`arfƲ fi.8:}9iDZM.pG&$jf>jd+;r(WrU#,ӕ94 I70b,y7b4 ۧx6sg[6 Yg32Uy8ky:M̎*6_Y=3ZZӧݗ67 o};%ͥFrfUjӰ4;.Rc|~Uth! B2|3L0$r{>e:YF5fn_Z# .\%?OlyP`Gue%p [l~oJwlDH9Hkjbcۉzjp;+#l1Rc]_W ~BM] o= :BEHd"G3]B}F(:W0i WfO0 )K w|ݽ-[몊r)#~kf~O>Qtod2X|qL_G#Ksi2j_IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image025.png000077500000000000000000001013511300536243200266510ustar00rootroot00000000000000PNG  IHDR| phssRGBIDATx^} |\Ut,B3ԂC+1lljkx|TY ZKyE1KVڦB-MҦ3{grgΙIfg{~{~@ xZ@ H@ zWpyM=&@ I:mt|@ @hNLX^N P @nkK^`@8DI!` :۵hUU6ov}9ئS:;pn ڿ߷cɄ @ ;HcǭQڢ]կqGNٰu9s6Y㯩16Nok|C>8`۳]{67@@H Ff}TZUeVicFױc_ځ7S^?|ػo_,i ݻ{WZ]S?>nzZNnoo $]::D#ַv?<Ž ȑwyyy~ mw?=sf=W9_ѣZ[[;oSo>T%#@At}mku]1i5Cy*AZbq?ҢE ;돻hjHy7dMopm :̷ Jϯ]e׮S55#@ $tt}|YU̗{:E~^:r䅂Wטڮ՝ڽ-[Vq JDH_яdesA wEWU}n„O{{ oj0w.ͳs.}g߾cFvv\>E7L\|۶V>_VVM3@7or9iFBe͛mٛnjii8zThٛn?pYW^ĉ'ORuhX|(qtEZ?dȸi=yşmii9r̘MSΕW1h'X|0hl<űc߸'o(.>c1c|.<Ha&tbH%]߇ֽ|Qh O}aĉ&NpBvV[KY}<?qڴ>S>eѷު߾󟏜6; ?5jԠAt  mC+{3oE,T8n,Z<~'mu/Vwk^oc#=!u򺿭B';v5]-۷;wtj{d+Y?#@Ȁ'o>-XF,J䡿,{ixq@?Nw^]_OJMSTtniF/R55f6=zTinx>:uϩS}9rСC釰-i>qby絞>IY O?_2c޼G 2dرȑj/?_o9cΡ|/ۿvߵ~}ݧx?t)Kn  K+ڧϺұӧ7:EeϡCMM4ߟTr=~[hk]{{}mGO#FDH3]#_Ylo={vɵמ9sf/owu ̹s?}y.zϞmk{_嵟3flZV$P 8$IY3d_cO>|ބ 3=ziT@Kh-PJ-~?1{w'o?>}hPSc#^coSOQCz*ywmZ[{b6eW##=dqF'~pe 2TzoՅ 7'?8Q]MV2tUUo9GZ5^Cw-X@{喏ׯ~rHVg'M+:tֿ{ɦMj@s_p@ޚ=>uyZ[?tذ_ʻG2/eÇ\im}^&eyi7pر#F3~6С"wsO3l{Ɩ-nP-xsn}޽M2z[.h@Ċ,׿x;\PPs/VW7r0Z tSTu9J?IN?>Id⋟.(}=wӯK.y߿x<5Є̋/#M駼2~7.\{OP74Y_xeޱ]{<~qf-\D [W7[Oٓ&}v"2lOYل/'#>5k?s>١_o5lu߾Xj'͚hC~?Ҭnpg-zzW?|q^h:{ m'Of3ݓOh J՟Do_ @'OMP_Ѽy=z?aÚ^}um6,G??;uذU3fl\23n+~c}ڊv"hI7 A@tO~2:'ǣi {7;thMk+h@75߼3wW,zdf/4{ ׿^Y{?n]w}䓃yuˋ/~dͳrb /\o={=vazlC 82m7E8oSőÇd NZ꣏WGvS[Y{47 ^#񳟍3f9nj8xyy-^|8n\ggo_uwyLgno9MG <;v,ͪL7!W  $]׸qWW7o߽¹s>^o 6{/g_[wzE̱ht2zm:lq3lk|O Huu;5~3L7`@s}窕+'} O=5s7r8eC\cёE3~)G>Koy kOKキe41ro3fa;_|׋&|ӟ[;-(zd׫sdvZw{_-_}uM7o 7} jÆw׮=w/~0rO>INo4O>()7dI/Q"ӟv>\Ss-9q瞻όGhEk~-{/.,LΝp5`@Kc3[Z* nV D@tmT\7;vt?SMM>ͷ<99n[j-ۚh)kkh 2`dž c( V{K.)+*s#=&N\MӮo|c?O1ޢy37 G~]6C9z5+g xLJw]}wU kv46N55t2dzuݺ۷ϸApԿvqL/|SOz%8oÆ|g߾P83Ǻ{/#G>/]?T?\c'see#4?~$W4+z=쳛Ozl֬KwE߾Lܿ?-g^瞼t˷޸;_?jwYg[Ci(˵WY8..7=]vox[y&{ʔg=9O#G^LuΥw~hBkȔwi3ryM:5''Ϧ4SA|_}azy&_C7k3NIo^TV2-a͛G_s͟6mG{tЫ4z:'Æ1d7/968pʕ+館b~ߟ~=wjG|sY^lUըl:x/_onPqPV߾t1w+0hywE}m=ҥ}][$O7i ?N'-7iH^vaR2vwcRF蕬;vnI^}/|z9˵Y[G,J+6mQ8ztkAG(@$zlԦ[g-/g ٟ|7~~4H &\4~oAGufJ`2{{/355{Ѯ[)S:xpSN־woכ=f'N8fJ3vVz s'l9x#Z>& }kOh៛<^31b=4sk2(MF?n?hu]ݶC8quԳ"€Ç9 RlmW[SCs1#FLH]ݮiWLJ`foE%t0Ӈ$)Q!i1СC'N o h&=$FzdUBFY$0zo֎0$"1,C]%:in"BJ$CULOjtLmdI֒$iUv#ѡ]TH"TH )N7(ޡC+mxOz)k~I]*@ p.J'teA)>tѴ64PuC$]_I2#qRF "LF*FJ[I$OM"6駼E+~Jhd4@EJgTU$alB#Z*4_kQhm8n0<#sSEa`EO$`, XpmZ빉4 eiRѫ$.$ɍy@ 3$ݘCE n&G @"nƀ@dl %@"`rb v fR+@*H ?@LBI7 _@Wg^U8@CG߹j4eJw^zb @ k1t0S#X%by$Ā@ {}MJoW6Nۋo<{v: ͂.I7|@>5 Y#1vƨaFOÇ :"B I t{;5]^xNzN/k>.:@Xux|^W'ZN`{ϥ,JAҍf@ mgFZʯ~ [g"Fp֕/=v-*jnGh#E(,2auBIdC;V[G'@ /(z}nr+Ho}د}K_- '钖E9,Jwn,۰0ʸsm (/*Eԕ*<[+Thτ h@ @KG c+4eMݨLNI]yVuqC PdC[KTgK[ HbK>G6`RGEշRu35$sg*V%κcᒊ0̙ [VlՁ@7W^Zd^lͻ'$Mܤ=~cmL5X8ti'.]dJeb )Du A-=ӽ{d˵bKK]!7L+OpW-&k.,ZT񏜙+w㬐k(PAm">@ m]t%Qu{EJkv92.(C( d8zjL7,\QܜNDz:eF*}kA zKI`W$`D5^lKZw[I7*TԎ, f./3fF~ eO4itj>@ N)TT^ʻ?)&7Rc2~:#@d,24r݇wl9R߇`K|w}s& |jǡc`ǁ@@ mΟ4K]y+.b|5D߯~CE/f8fJp2@d,4kښZe IfM}OY v,O}t>],/gl_@  G@ sDy *{+}{G7/1w/{h  @R!Fb7${kڣ[T1@ t=~[onjjCo B]TjGҭ(2yBz*t{zD&]l Y_G0Bv +/_gDJ ׸ͺdH": B&ȮuH7)J] pH/pT qvɇ^IXt2 tFY}gE_ʵt$8d7]^szU+n"ӝZhGҊ[; Y1C0.16}iU8{Q+ ;$*Գ `hc#S\҆4S$l xd׺H)J:pS Б\٭k;vWwNp8ddnʯ#K_+/X]}4fee<}ݲO뫹eus,tuQқY#2W^g\5x8*pzfK2^H?ӊ~s c-f91:(r@X_": +WBzsM>f|ٶpA̒N^)$  HzIuJM Ync}ud!I=rp4c7~u8X&˙s&ڏ\vә93e*t$)*r5PW&xz&5; Խ*W]6HMɩeߙ _r$ՐLTwl{|BH:mD!_TJ =RɇNjm3,pMg&7_g΃*E-%Kf{;]~MBLnk{`:+dc<]f96o=mtW7Nf֓e"HM9Յ W$$]~fm9OX Bi_ +"AaH:G"H=RTtSZݩCUD_ݩ1woIuFq3fBG0ZvqtuS㥩x8=gV,f҂H$̾Dq>&ĺ9 6Y([uJM"G|7v՝.$Bx9튜L82v})R?p3z |dILW, jfLWv8zrSW^8 9WW^P{DW*5( 6@ iϪoohnhhklj/}Z[ZJNj 0+C @"=$Ae$__q_ Q<8e Hv #';:T Ρ ɚoN֍TɌ4l@ oxtӄگ!0B6Oj?`)J Y zAg]QD]]jp~Oԓ~&5AOo! ~|B4EIP_rJGP3i8^`:Pg#xP+s0[FANF5?) )2W" 4M(_ uc']ܲCs G#x})^<>84"̖0GAR o"Qt*6^D% @)ns6E$~]S8W/O{鴆|B4EDBqO a:a"NoO(nS+ML,q"58nGGᡌ[Kna%/ m.H> =#j?>V=#K|,սMW^4iV3]V} ~2&d/gI_oň1ڏUH?I` jޣ2uHbA)%0iTo !qW,+6zq'%6%jƆ&677li>y%yP Z@tC N_O=MKP I@&ݤDF HH j@#>@@! @^Myj?-p`ز:l7 % x@IAV_`_:봽9nSQ'R[S 63l]0 JB) h h 'tj?ިKԥT-a)](L#SvMzƹϒƧᓎ!j_5v ~bNV pQB{KTSP G|v<4%/gI3I[WWɼa8HOu:wt &]>gSIAgQ)IhtatUh*cH"+[ܳYSJǥE՝Z3$>|Q܌#Wttl[SחZϕPMԪz^J("o1R6:wӎ ~V{4|qTי1/OP111^ӱI ej?ذS@%䞻 WıU0M.]U1$'UJzv4.#Pa=/pp:Eɠ1(Ԙw촚=1q2ܤoI^̙nw[U%Z]HIvqWnKpЬ@l,~R2;5&_#7)>&E秛Z(և*WLiInx;"S%^GRMumv둣)]yI)]|]&6 -/~9qvbZaUHoNCu N'T7伓2YҤgR|7)\R t}%|_=#EI|>?9fBR!?63I|:I@KU_~%,hVQH&k𢅂Ӎ M7mE%4o+. ֹXRڵ}dz%0;#p=!_#{G!n聁o_װ qptiLc)u&Eiu/Eb/unrצ!pcCm}뛛N4jmmlokjooxejx2zjSB>w^?s @!^~?x n".FO@ г{ҵPZq,Fv3tO2@AI7iBC@ @M? HxIe^Q cl&00*R_<;(;R^(e_\^H[j?[H8h %j?2ьTn4kR|4>t WWL?j?G3_K]= ե%Llnm:b4E+ ܑ mbL'MJGwi^M\Yڏ&auIh'ߤ8vD)uN}/vuFq3fB_ynuF"~3ʸA B mQ/2 f-a+]Ih$>KqAU.RJ)#b'"%]y@G`E_q/`CV“vvob$,~Npe4ΪHgo'(X I6o;^`ڲꊢoKܸErVGt1=I/a{\-X=wҺ^s$״mGI;;Qh9en1'JT#``Fܬ҅RSף9J뚾toT2pRgR>胒xI:ټ=(mS ebx1u s Nh{sH'#EI tĈyX$/:-jPvlZ?GPL oߗ2J2yGۘъA#S.ӷy]&c҆d:gR7)Jݔ3()zzT"WڗnMwotϓ6~lIviYC<|֍Ksk{pTu;iCJ&\_wM'[O65z9 /#eٚ~zQmܙIW8۝.F*=7ѓ-lLi$eD|A>s%_ř#(/ꖧ8նPgO#@e&.IIiPdJcdgYP'Qx;%lU"`GaLl n.Ii#cjXMqnzRoVh.LBWiE&UBь4>f"<> 8#$72&YQJ^BoY3VQJ[<צDR׿nrmY  QU낦Th@԰2TJG[eخe.̦1YA[!,0Ax@oڼKFkbӖWo5?[m8f)|(tqq`THTn?m1 kKg۾s-7.I mZMƥ9UyswmX; cD|!tU? @GRf`2Hkp4sP\75#)P! ״*=Z]q?O ̓KE#0N9јU 47edp|M;7]ƍ4S16̪2?IҾ$ﳠ뉁7-I3j@mY~nqζqf]1} EEtZYOdӇI֤L~JMBz8"糹I:T'+C,m~A نavMGj?:82p^ZE'=arI);IuYl#auG|7WWC*Dygyx[Iu$5^Qg΃.ARܤ~~4tFjoRJ2OGbgR)J*)O][ܳrOSgM)Z&t~E9Xeb|xuFq3fB_ynMgj?-g m#-ś,zaXNY=([kѱ1="U*|7v՝.$Bx15> ;선ccb+C2s+3|ΆKyv-<]^orГO6%aZwlZ/e.(,t*J >=k!o/}4'WO#`hJP*9Tǂ r߁e ɊŎ6.Z(^/~hm6֫-uisY"-n7bŷ0 IaiZ!]ԻӆtL4 k1koWuDKu#Br`)dþ!ij!uN>|I]xBy温d!vӾ/X1pcCm}뛛N4jmmlokjoox<ΰdjM tt?@P@@ U=MUă"""wR7 {_MXH;=]@.H;X)n  @"O,F3)R&pPFlH5[]B6|Wm[ `Ny~.逆m|ْ=G'm^H|&:V53J Un YrE8GdĠslزlnW|[G \"侳A~!gV4p}IP)IK2fYc:*eEEoON0xk|]r8Ѽ'ZV^^=ӮMSˊhb-$>8BꑒmE6DgQ=m΢* ';YsF'tJ̦d{Wsq&(JR~Y:tj-N++W:n㯙. p鰮bY2j)'-Չ+gHf]`MG՛M;^l RER~H&uO'&x ~)%|.NGCRO 󒮦YW:<Ƣ9S UZ1.?ŮhsS%3ImN!qv&%TKHOj; ,~z>ԥP[z ڟEJd[lؐ\-Z(т n{*:6}O'-]I,%n>n =#%7^O껢Dŝ_$YIQJGKl:|#Y~q,AحB))}GgFp%f#EIE7Di88&)"ϯ1*sǓ31{ʳn"XRڏK֤o2NS>5)ՋI&>s9_I|2j鑢$zwS߭oRd@u&"p̎Nb<"JNGw/2.*fG "dt{#k dR5al|7\O滜Nf#EI|=IꊒpH%("ϯο$?|7W?F|$||wGdQЂ֗o2ϕe+,,ٰД!_Q)ZZѴ-Dاڥph6VHUnnYH7%d5j\&BA0#؁ilZ^^', ".mH祅2==e#BB`)dþ!>lIdYC<|:%:⸩d!vӾ/XθUpcCm}뛛N4jmmlokjoox<ΰdjM @ Cg@ 馪wN 1  ~1tT@' :A @ @UU@8AI Z@ ?ͤ>8olI 1Ȭl2 d֐O()_,r=K(."^u[X^Sn728贽92nFSQ'RlٛJ/֐O( j M>r_(gR~Bq@?>B~]ln|2}%,i|n>Ij]\ֺSC⥇tAg.jȾ]~Z|2c=sz" ln|%mBWt3]T` m(QqA )VuvzRoVh;H_FeP'z)JXViaCDK_ϒgu%AW_h`W\|%X$dX6~!2RV j?#fq8 D ἖zy3@( jPj?3گgg @6Kz dxt3!PeB#@W@ j^h  fB#@$HIn&D> @R O|pҀڏ\80"`(dǖ UQ$8"-4l7圌l;pSMQ&($Փ3f4o6mXؓI}BUSPHj|)2;<[jҭ&8|B)Mbu9,*e/~4D+XKt?^'^Ua҅ȤGR{MPNY83 j?P+=zZYW=W܉TuNTs'ibYr*|s kڂ\FB{g$tєHj|/(7 g3__|i+LT%@7upQX\''K /MB)u׹XR|*::]OZ(7ɐ/vuFq3fB_yVMkR Q^[0M<,Xtv0d61o1S6M 4XE>RNP0[EyK ŻS2ʹhh/K4==zSyzi'K,7YG6,\QS!atHj|gE,~|;ᏴR7W)LW_$(>XZX3]1.+g{8N1%̣klŔhHo-^X_:è^ 2OQ";Nil:CB(*t_PU}C(0nb2š81.lO_"@g褐OǗ)j\H嬈RD?b_\@ /%#@H`2ȁ/# 'n}Pf?D@@I7# '@ @M( t3"p ~P Q @ m,q.N?#h0 <ϖ*QA+~a0pIF'S4IbEIX=nJyQ(#“ɯ A j?!u63e{*Oe@jUm14$‰W=;O.~He _]y HsldpNrt)\qO$w7m;-,ز"XIE;tT4rIWj?Kf Tailw|p_/j?|?>|Q,'|]2EGѥ[<יG o{!Tj? 4pD'n(i A-$dJ2u PQ01[+Cƍ-DS4I$O7mK 5GEI|ʼLI%u/Ѵ%yޱӖldpEz2gwZPVRʼDKỵWE武Zu@W:Lp%gt~1@d2w Hm{9U_Fv R$@@2 R$T@CI7B@ U@Mn H9I7k|kK޵SF)g]xe$kl7u%Ct<[Rں$F޽YnZZF?X#ֵC3ʙ֧:xqN9T[1`cAL iieUphsw j? 4u:!wZLU+:j$=x+١:BaqX҇qt*}f4f#EIE7՝t&$E՝sǓ31{ʳ=)EgzJ ՛wbc vE/.puNúթ~!D29&!$M>$~uEI~Vd#~u;m2[:^'\(/[܍+K)7DʋwOgsńEG.xMO՛vش=~*ضW@<׃HZ'6a㇃}&uO(gwP雞]&(Үi#~34;[voUɢ`DW+Ve֗ Ue+M _lXhJ,ZaEeX+B!k /LRP4AEm U*QOȌ%FУ]k@(!`F*vn5?;@W}@)Gg A浵r֣^\ftQRwI\:MNp(u#OشlN:=Nb:Wk+1ƫÍ Mmon:|ixv|K:Ò5oFT},5=w^]VH 2PeP*@giPeB#@W@ j^h  fB#@$HIn&D> @R J]m z;3tr%YzR#%}Sg<G!NgI|%nv]m; ~YIW6пS)c-)H:NJB+hI^_25)]a$ś#0PR<3Nu$׳KE<>>*x6"M6] +%ͳ/B#R6L|!\j@v9sB4Ev , 9#y3,/ae(zqXt~:PY@e8`oԵ"[~|~]X3]NAc&G-uPK j?-gq~QD1(i{U)tEg:yc'w4|Ru&*| Oby9b{C]:ټIP ^V/a+HQRMyZ%:˺:Wy~u1V7$>|Q܌#WtES g%ykVTbX6|jRƽni-&.P> ~b'fե(@}vӮȹ?$9XA^2ҺcB(,fml*)LǦs@缓*J]]&q$MPZy~uj?>V="bY|\b\)%JK!%Y~HvKt`}ZfXHbWY[M96v>SEW?A͆e h}N0FBZ֫Fx49ZOQtM~~!KM0 }C|ْ‘-SO'y%nSUzpd!vӾpUĝet͆ @ܓn,˩,@ $>2/ @ H|e^26 @ N ɀn2D6 @F a@ ,.Л!/3 SPuK(eگ(J|]gqK&)bu逋3/q՘IOde)y2Y҅R(<]q|B4EIPS.P10+sSxi_\j?)y]\ʮ!5P/YV$|F0n v2:k,.t`9+R|Kn)Lǔ.ė!ΰ<\'" j)3 -n/z+8RJf6L9whmAnY>QUhϔӬUiu_[Wj B⃤hiݸzC.9?@g7%:wfP/XyI=r%L$z9jʲ9Qڥ3bRZ4|q9)J fc~#i:i8E+KBFE'N`_tY ]BiGw!@`JI..kSb'lO mvxIWk"k̃TzxqP蔥(0ihAN>0V/"M-)4l {~mMPrALø:}=Xa>3[4}{(٭#18=&VII;uQ*Ǔ31{Zb6l<).֙TI 8^N8:I)9tJog53=R&+JڅiW-Ċᰫ1dV3ެUz"ätw3Ơźy՛r7mD8U-hxf؜gK^^Rs4a2ʨLaR¾1sOXc)dTt|7]Q֐4|:E{[@~|zFCIg/YEsWXSu=]ҷo@(4JBF/)PqX҇qtF Lv3F}r i@J: HA3wh @r j@ gtZ4|N<@AC =xAG 4303зofesnu3]CMշ 3yEN* @ -呣&=i:ڽNi> ˢߝ>gwބ(ysϏs kzMnZN @ @woe;c԰#C rTsgttS' zwj4z]^xNzN5WVDAM H::}_I֫i{ϥ,JGMjj?:zYyU bZ)O,/_'z8PQR@/cY$!ζ!NvuLR?MrS1K~z3BrZ14hR+A.Ml'g`[mRvmfILӱM)X%cN=[~CYH"|j}ņJn<ôhq##:1 u@T4^bN2QRS4]î,})_zi*LGQgF5@u*LW$ktl=ϸ'm_]MӢ[rp/+ -)Ӄ۟=9Giy]e\*1gno+T$/_]yVk  ;E@OO%9 j?kA~uEIuE~_scER<å̯V,Q_,{9!OIJG1ܥyV @ %Cej?X %}qO a:a"NoO(nSHz{]#)ƏI7;-UCGSƭ]iZtzS>5PU4IUH( AVd^c]3]afGa ["MNKYP@'et@qu$Hb:ڏ{evo}I|qy^fφwڟg#I>Җ˂;%8{uk! @ח7 ?OV-=h|*z?8{9 \@ i6i.OھގNϴа}7L7>Djc@mΟ4K]y+.b|5D߯~Cs& |Gё2z@9;45:iE*\7kԐΛ(Hj@ d9)4DEgNA<@#t24 xI7IگwzO,yʄrPگ-v?4|}~aOV(!46#ߥ(8l"֩ #SJI8$^G$!0[@j?IA7'[(#RE>]a8N>%)~ƊDVO |j|7a0O͑NPY{#@7U˙i]l|xVwMڏSInRR /l @ej?P%c;3uc21%N(nS+Oj&ϴ=Cjv!j?Ds.FKiؘ|VEdi]v9׈ 1ҺvqWHQ'wZ&nSLHG[h&$h#@;OMQRJ&|r=PX}/yd?K| ~!;^2UBXKR*&rV/[29)}Gg uEQxu f͎Zj?KCbpHoEWn ^RG//?,X@C$j< @ 14]fq3DG@ (6v_Y~B@$kv@87H$@GfYuCb =@hIGmDc@ 6U:܈t0|@DI7)@ @MǨ' HJt2,0  $t*|@DI7)@ @MǨ' HJt2,0  $t*|@DI7)@ 1|ٓv'VmW?^og{k5^jh3]>ӧoCX@"fb7ۋy]g[N{;[s]O57v䠂ܜ_~FlJP  Hz7)iW{[gH>1|~_s7:t?Pn✋>{T߾86mП~ f=9ZIo@xMs(1}GF8j؀ӗʇ0t`=; uttOigKKʶ!&C i6RY@wj4z]^FߎNt*qyZW#} ϡǛ_q޻E@)qM'^uk'ڐK g&&-VUhU^W'%Z+>^GkNy'mK\I$FM͑@@Iw^F<-̒10aLX#xvvR(}4_ͥS]m"ؽw(4 *"W"KmBqs L4Lz& UmMJ 劰>UZ`J/x+|OX0>j\[גXW~7ڲ0t#>Q_Y}>~W.RXb>i0g!㢤B$8 o.dukczSa;\2$=v>9;#mA?։`@Jb}F3?L"w]Y6cȸ=¯>זvZ`eYW[dwK.%p֕;h {oY.YWvY"+ >=ț4$zQ@tLfsO#W25W26|F`#퉱WL L.%\:b57T K#+i``e*(/nĺeՒhb#oćcE0kKot0t}m_ZzzKhUѽGQ5>Znw̜{ʲWRLMwm6*6ONN55w ھc/B/}/6QxcwM?#WM}ϐߗw]X-K,u@#}y;$JQ L\tՒ#!lh[us kOZ{uIdĢWQN`>%lhsJL\o8|kW1~rKM#%ÔFs¼%aqU hJļjO-fsqczEf]c?Gl} % xg jw|0?%z^=TW2mo~[qmջ_uɴE UnSԦ=M`/j DH=֑V7W#>U d݉mBmªOO~Y*=%S&tXp׭Uz9`-go{"8 IґAdI<{/Gߍ]~媪eěC|՚s{͛/n*hʹkF{X F!=6GURۮ/ן7uT=]QJXv#l/\u2ςB@Hꢫ躦k[/nI}*wGBj5|j5D^]ւ@yV[]O LdY";a]ODK",Ăun$ 7`螵˶$OYq.F R}#YئlE_LSa o`n(ne}9k:,[$?y#ƌ\ee/=3 ,^.m׸ڲ/[Jƌ8)Ovj^|40BPRe› <[5w9PUu}h}!sCge-,!, ڃ.1ts{pJt2wO+~,T@A-ylw }Ȗǹ݉8l9V M~1 TiVh#}PkSCsS-MI567~@Hn1<;S{ۉe2chB3i`:=y^'T}qƝ=%"L@|h>na{NP?ymkۗMտ]ۯ&=[\z"q{Ey/?4.  h`6@Hz1@ 89* ܅ @ z$- @!a@ { h 2 $ 8@C D3- H[nE %ӕtW8@ 9rrV @ A@  &G`@d\;IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image026.jpg000077500000000000000000001512101300536243200266450ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?fDIB*i|L3Go-:"3<)xV+m (ef(iNFR[#?߿]שwqg5SUkQqy!UcT;z:݈Prv[yw?^.~Gmtkɭ qS>+xGKo!o =":hTN/.w?^.~GԐ)4LS+5|M[!: EZ{`=ZlSyW;q"PyHڟ{M83ZI(; 1ӭmt]o3JguvGgy/3E!CڠtαP^n(Kk;HBRu89?xnKM#l} ӍF݌a)<Gq?#z+[V ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שb.~Gz. ?߿]שbU1I q0;qފ?{cBXE WZ*d3rI'wR01Ln Fq֜f 0me ?ƦP:pي|/lu$˼N~T|c^_SYGR8\|s]H `[MGn3cI5a8JkR{UKE9D)= tޡo\-1̲n!#z_?oh?7?ƧBC-qk/ ,RHy1J䏇5ӄqPZx E A^ҽ'}GvTeO:w]O9³+f՘ǿc~'/i͒#XSqI\v{uK3SGϴc_ jWq$knTFXc=&։8T@) 06 0נ}ϴ>o?eV:w>de(Ѽd)*0I篭uw^[Fh7'f1cA#bmhTҽ.Sqr7#{mlp oϭ&jvDֺ;hcXdHWGM9ll)DHZ|id| i5 leS*OEA>#hIy5v1'Iy4}ϼ,DTi?7?ƏE螊'}G>#h]P}ϼ>o z*GO|tOEA>#hIy4X.>oi?7?Ƌ=O|'}G`'Iy4}ϼ,DTi?7?ƏE螊'}G>#h]P}ϼ>o z*GO|tOEA>#hIy4X.>oi?7?Ƌ=O|'}G`'Iy4}ϼ,DTi?7?ƏE螊'}G>#h]P}ϼ>o z*GO|tOEA>#hIy4X.>oi?7?Ƌ=O|'}G`'Iy4}ϼ,@?!ؤ/XtchSeFq}4 L5y?FbAl1ǿȖH 0҆$t~e'^ߟbͩ0eDD2r|$S4nu;)rt 8`t*/?^2~S7[-%B;gLִ[TL#7 #z}MW̽?zөW,d.q>rޢ1sXzvbg٭-I>k޴m:1M(Ù!ffDWK+tp΃  zHWou{ȭŊƑClY'\6ҐD[i/071 r {F?#EխKV r,: R]QhJR犫qm6: ix]FAś Dk-Đ*K]SݫOM+A^iMs1,#,8axGZF[ g UˑA杅궮WwLUG+Pwk4%c\B`ڥv bIY&x6wN~ڝC ҄D$:~5=aսXiq$ ̱a'uV$H#Ҁ((((((hh?MYF/8`[jyQ0ȋ%2;y?'S \u,EyK)W_ҚV0pc1=:sQ4ZjHKVea&quZ&KׂV˔{"*q7g]_b^s12p>Q2qSCY\\mCH`#5BZ(}Y,YS' 0{ x=Ebyj$E;67O.(c%w Je m#95[x(To5yB $ 3ڮ\\Ein#e}&/$&iLB@#-ح&%T!sLbG{G[F Ҭ^j~c{ hu{UKIZrev%$q4lጾĥ<  ޼S :wk7]qg9sDz֝-pZ+#yO??Q b;9Zmu9 *x$Cw>ێr7~y7%4-$WD_c8qR6h6.weqְZ2GV$w^#{h|K;tDQ4hܬW6nVM]qQ:\Y Lyv2p{4V:-5QHw.am ڲ`yb`(,: KRM/.Ein;p=źKcxkh q9d_h[2?-եXs{T`6Ztse|P>3H 4IL VVeeGbj/Htln1GunNiaFI)|2@ł9?7So.)_}w#oL4&"-}&]1HiZ Z}˜ wт}J.ByTBGbҚ_Ok8žmє|Ah0oʄԙq8*T״[+ 18A?To.>tJH(Kc;jm$ 1ڈ6IwKOȦfi>ڤ+ w5v,]>t i|_%s|qwTMj mn$:F0rnjl:[li4eI Χ@˷Y&@IPdA# =jKm>5ԾZ|>Ig_Uᶂ#U9Nx`6_F\ ?C06-oMkxbW{L8F8xNjH+9-c3[ ʛd_s,[n Y#ܯ>Jx/N,fwa?5E>npyR^-cNd%Yʰ 3lsQiLO-gc NN?&,IVK:MHvmlaq+io< lRw5a$){%q4F5?da&~^/j&$>T0"S {&]J{W[a`Ǡٍ=:sVnmU&L1kI/巒ID#?Z+[O !V=ZQE* SyfF!gwN3(!88 `zNmtm+ۏP {ZqTȲ1U'܎qUKʗq*#G\MH~UI :z]]G[:[\Ƌ4XdXSm BI1˜ʉ5R;Grڿ\xTHl˷fMȾ V_M5Њ)<Ռ?/L v`X ڲ&BadE {|hm-#ͱBUX42l/ .!/?,~AФ5=g.+2 i+P/Vn#-"@&!'c#BRHqMonWdW3"Hl;8i^ iTLEvu3ޠTd5F`zq~ c2ݥ3/D&0 vcr8+v ["F#Bg$@\ujgͼAq+W'AZVWRټ`61ߎ{RGKkkxc"h>z wk6dsw@uKYFFd3\]EeRO)8($}ycIv'8R7MXdjq5rF :Csj6 >~K4|~,7m H1$0#{[ Y޹ya#MsI^ڙ=o񝙯@pF )5}-g@Ʋ-#8sj'5{Xi7Rf9@38qڛm{+"dkmѪ("ȐKqk/75`Fs6Gl`{S_G-GdLՎp0p{T#Q5AVRb93C1ϷJ|%iM%(Pu ^gzyvHV$Y$+EHoV]j1[ˎi=۫]G$Df?ڱ1v=Ax#,!7 (րlcɔ{ MQy>t|=MZ??*ԟrZDf?!0B'|0ItfΑ-Bq̋ y"WŎO[+{g,a'3~ҐD-CNoŰ"U3ǠkCij^Ey,3eUĞX;A$A'J*żAFƣ%{X1ܱΧB}n].)gm\nK!~Vcw5]B0qr@ |+-omMplB#KX0mPeAtt.9KE+ I)@F^-2AN@u[ׅj iBqNպ`s e`A>GXLM,ͅw:`!VKYWf|Ʒ~^y.psȮ hԜ<*apytռkֲY"yBϥDE (((((+:]Vbuy6N~b}1֍D[%qI,+;0þJpڽk|Ң̌l,~>nUxeRɪ#_6?tsd}kV9ycXZdǚnyu. pԶLJRހ.r}t;[ o+*WvUiƽGz̆2lvmU1DV{( `|N*Xu>haA zrG#abwO$hvXG@5KsڜKf9̑IO| a-Web$}y#$M.3l_ݓn21╂K[%|B'?1Zl )#FqYkzBK hz|`gH]'.(Y'9TLtUŽv]+xc(G{,2|Ǡbx:{S:Xpq#!*Xy_l=4{8p( -q3,bgިYGMsxtyI&6:t>Ѷ5ik\S%3q9Mb𽽹ݑr?*:jCWgu 1ˋd7#s,!}Z B 1;G8kx|6#u"[RD' q׾)hin$]O8Ck//VߙyďccM%`n rg~8'?tˆ-ْ%^(QFO&˪!B= ~tM\ڵڥ%"jep;bLYMZ!n_YP]t-p9>h=] pxj2ä*Hu뗎8 Er ?ß O-msN_-<>?ڠ)%v|bWd&D Xo^W=CԿql$2sXV(˖Zy$tmt @UPp?4%iڠܟq%afC峏ARoO޴͒8gEc- "MȆ`bq$+^=wA6u"3W08gץYk2BΞaAjb.y.3eۖcVW,\_chIH߹\s]$WzUė.֜#LћO!kd;|$cr?*Sk?P-dqjoL ;:-,PEs(ȰnyGNXyZ"& OLg꼚Ə,1{ S 7m^j )5p\\\;uGCT#5-Yϛ"d\TgTs{-T8<&/"@î(ʆ=nsZ_ݭ[gޛ cO]`n7vh;\[clGhM$q1{8-%,^N6{4j-NNԡ{K'ǒXgӵ hRtw<) rN{Z5,2!ggFΆVIFDD|qF?k[M$cWI[!qojힵ0{eiY7D.7lh?[0_1D"oaqn. @c &W1h~q'R+| ;x4B1Ow;fwX}{zƆ2LepQ16c$W.mkIHO ҍ@֊ZGǴ?Tz{G]Ѕ5/b_~?3EfDWo#H [̓(ޟxWTq#X/{uhzRA"98 `{JA{}u"7;dUIVI$!$(ĴC9s[mۮt ל0w L3֡\A#\cމF7rq CخM3XZZ_h+yd!$B(p:=.tmCPE6dQxrZv-gou WW p̨CAKw-:kXy ]1LN{5JZֺfk^^po>5G?'_N5; ᵴkw=ibQm0'[VS7z . :㚦#PGM5+n邹% Z Mf2BX.K\ˬC5d\w9 U&fQ9C%վZۋI"LIdߜ QEQEQEQEQEQEF-Q qJToMB("_9{T=,N9Z,-ͽAG2}j=Be>h(9LS[Ydm9ݝ^RR(٭>,RƆ>I`ßsP<~ QmA,yjmo01>\fe,KP :(gsuԒѭ$ɐi`3N)ŵmf*aYcĊyC*ʹZ-dǑ$ЫƧĠ)~zFY6I!PȅA:af:qM6WYH<6;5ETc;#T,$ AĪUG!s.mWnfܠF[NO:U;Tu4M>olKk+N|֒D"n, ԶkZCI-ĥ<tPH?w]R[yi X/%\ɫXCxH3 7=ژ\,wmq rۣ d}nUt~)ʎ]湂1טE#18)v̌*5d-jmQeKBlɽq)@RX˨\_(L\6{rRϵu[yG岙U6sG7IZbO*qzTW8OwT')A}=4U\#O1\JfZkXAdEb wg'i5&1d:3/Л#ozS`o᧴\#"r@ SyX f;O*-aGriqʷ!R{;_ޓbQ/՗2M "z㟗4Qt*oiv6kh3`v}Y,i/iFts; sWWT?k #$ F߽׃ǽZPPD'<'1֟P~f`_Gvڊ#A,a\ ɻ8p@2bHrlA}vVA"gȑdb#z&%-b#+l`zv知b( ݜrJAO.&2. qٱX38~RqCwj il!$2rq>iZX]J8[fCo 1n:9@!tߠභIG! rjF2B[A<*sq}OI$fHnCLxܘ#"\\g r) yUIwȿ^e`2E}ᴌH"izu!`]~hF@|:W6qcqb8q9jXonSV%]㌐GL]lO-RaSTZޢVqY.ܻ$laTÓ@6^G|n c9$چm-6k!YU'f~Ss{%Da1̑H9az0j~`t!CҩYNrQj_\&-M "us1JjZF}:y}z0ǫd%I]K4;cd׶24,Z5`]BM%`]F2KqqZVs% D}} M@EY??*H=C=Bܗ/?~?3ES"sszW8Ъ?ƹںDWMF+7fmPs"ɥ d׿i:FA<(9֪x";G|91}xjs\RbH#2o8;}(\`,<,O\uS5-?$kuHglc%qw=}FDT]#!S봌ז6/{HgĊvv:{m׈N[gHei8FO|`7NqMyCE4㼒;ޮ ۿ.AMGŻ}{#iVI % Xz2wmq%"Hꮻ:{gZQ7p칉b!09 $lޝ}@[7zcC'qjX4_SWpK"ct@?Neyt%YnRoqn7vk$&}AIr1%S8t2ڬPN\#v*I##TWUnc6 qU=}Cح{i"y^axc( K&kA;iv&?boʐ: Ūܽ,<'͓J/5HW?.ˁ2<9Ҟctچ[JP&s$6q+3\6J+009sX/y m%%)"}c/b213TDo-廾_5Dies`:ZANk`&p\"es۷M5qo1rTHqlW/q.kn:me1F\aFs"3zOXo19]?#׭=t cO,#*@@ g4VrZ+o.c >ߔz\[kK3Jܽ|I!,lYop{8!}3 C'kY"p6A.p?[$Zܘ+1%I϶qUcnjDR##ڠSh/KksCЬX\x1n? X//#I}=c1$1ɫ!Nltnpnsځhi6H=F- B;# UF7 nIQ3YZ4{Q>iecӡjUhf]^n`s h Ile$o/tk~$P^xjQ 뉮DPHOj,:q7NŽjl|ڠŽG\f+)ܯ(gO&hi^bҪInd۩]e+6C?Zdge]7!SsXvܣn׮V-6p?pOkikyu=g(Y5*["E T^[h#SM`i$6YxtCg%7W¦at18j}AgKfs%^l )yqM4VζD˜B.r{êHrI?7(ܶjؓXu$Q3-Ç?wnaրۏ[[jVqFyѕ}ػq}p>yl\ k-GO}Vqln݃Z%xnQ[xlxڥ"IB~I j塻B\Km"mܾxXEI*usrB1ktFCw!8Vc+w7il|o+m*rږ}yF|AS'ߧ-φ]^ՀY277`/vՙjQ`O{yIL2 %Y;{nힴեvg_:ʾEQѰ~d997[뙮/20pWF?z}tHR,Rsk!#yow<2flv}~([ 3>_m0@+t/ǡ?iwc+8⹋}g/'YI.#ʡ_`}h5 BLygFH aʞsЇ2} iz]kg TXvk^ޭ\$>olJeYivKyrBr~%mbMg+Kh}H>N9m@CHT:uždjpYEst@lǯr'3@"*C8T۸gsϱ3 ?1<^ 6)q3Zqجw,IGzK?ҹu+G vS  MV An ?҆K쬖'${o_ƨihlldU!]ʦb^NbMj9̪o891HS"$+cMgE = " HN9$41Qv?1;x!,g!8yb=A=4qctRFOhax#֘ol|ٱ~GҿrFAf#f"f?'کAbc>?6W,c ;3}-Nkh&Wbg _qf^[fdW4.1l%gcچ[1& fPs8 ~[X"^HD HrHdŋ۬m/L7o`h#3}ʠ1? =C1yxgo4i,bK`ŀ/*2y>[l"%a :h`$s'R=ǎv=FCf$e8}m ۪> ǿ|U+5X㈨iHRȫ2GjYZ*"q( l׊b%C50)>i]wv-$QM XB";{:|acj`wϹ. Qh;8+lRQB*T 'u$S{rFZy$ϭNܣ-glP"iLzt;c1JQGgn$s )n;x֟q#Cel2򐅣Qb-Z{IO*ѝ#joo Δ47| |v'qQ}>l"P.Q[,q޻X"  w=RiΙ}ʑ6ͬǸ= 5^M_EV[9. 1={dO,Vd.#3϶j-Ėnm  N1'>ZUZMnK(Ey9~j[+KS&,p'9?NS[<†炸ǩvNսxX:9-#haԆ=GDx`[W?t<v1:SGY[g{_X||cVmZ̩%Vou1B)E4%Ԇ{A$bD])2oF@ @jE`l֨ m/¢M[A$LTDEӎ*op1aT<˜\*MF=kQX ԇC#$laA > SIeEio`2=SF7ͨP| [6;k,.{1 AM=#U3ʅe9(Dt*OiE`, Ǡ)V-Fjl֓H.$m!׎3Vѥ[wnLJA3 hhu 1z{G]ЅIGǴ?S[%\4Q/h`OuM=cX$A1r1 cs܊OujֺPw+8j?ƹ#ڔ%R:y@0z6\D$1tL1N2-ۋ{ߴu0(t+``=H|3]D;Rd|mC*zK 4. GP@i^!l嵎Y$&)e ϧZeֱƱWˑȎ!`.4xxy&s"۪(G/i9ە'3jf}B]{pK\\zl,[8#2rtjVN¬KB"Dm yI68K2zE TЛ{qImk{=$8$gPD5QB1AfWl¨]߅.,ymΥΆ2O9?Al+繉AddG SQ@Q@Q@Q@Q@Q@T{{a6RS8e z *A- !l& $d )D- 3.&r׭@I"6dۄ2Kn\t}tr<~ҡx `t@Ͽ9Kt"1*iPh&Y[L7*9`cyS}vֳDԫ!;n:14APi}=!#hyp;Ui<- \5_\Ez3H̘#9\c o$w%Gv8'@8;Scu -,n*9=*; SۖUjȐ{T6-}qQ|v;PUP!"*D@ec.;lօN9$>𪍦?Hc]LGrH?B*Tbu2jz~o8q#cuwH%p~np=OePE)T6p 'X4ko6<w9֘ѽ3ojH0^,#RCɧ\vuJG1Ewmcҝ6]ȡ{#ḁ=mGw<)"T<\/>}VQxvceyqReNlW̻D5n? Q nDPz' =8_{SaU,OdjˎY ǥu k1^95FhyZb8UX4٭́u;BbF ~/8k4t)fEvuIAׯcޭM\G[FwO+c$wn---o/&ԓTLIlblho#pF.?<т<, r+tJ=SPHP-0&f!}*"q7 \볙/8 ?.1H<%y윯vb( M`O4q=!G'SJں1]巪n8ۃxScjֺͼ1yx^sezgc#`OM\n; Z<G"" r\gɎ3׌}ss;8#yI %($?Piys$TK"&bRsCĚyhqKiP%)e>J:w6qaqD#⥆+YmH~U!8Z˩ȓN7X/g*cs 0G`8M\[4F@D!,1֡MI'ު޳q5^8.1xiMnU @='M@Ox$;с19+I.%W`tjjzoT݈Wiз#is$ʀ%uր,QvB$uh!MnKؗ_rG??F);R]>% qc=Ou)o4[1l|:q NZ-X13'cOCF_[)^:1ySsnN'+ٮmnN$Q4JۇnHS'綷wRЯ xqT-4`-X\ҲVioڝPs _saGNֹ0b>WAیP,ь#yK8}mmjAoĮC\y : Yun"̬[ !ϥm۝2kˁo\vV I85:ZضP(;D*91H:%dS$FC|$dpzm r9HeXrd/nW?{;Uq[AnOkn+n}jri&lmVTHcHW+pc90R'֪hйi c(g TQEQEQEQEQEx+,7eUn0>$vЪlS}WUAN(Z161J2(XX13Ttt$b9uǿhz Kkh73%LZ] ԓqBi2Z5mq)Y_P[ &i劂{6z uϥXvhe(Y.^͟WcY-vK[`LOLR^M3B0 p:Q:S]ߡ ,~黀P>zxt1d/"}O\Re sj eQ|ɨWІui2Swq>Rkպ wKuD֓T pOj.[_6E$IW..!.$S. .vjo1ǸצG֋5YLW,@HϜǠl:)ɮy$/- OqF;Voo! 0q=>J+‰vLl=/7b »FDHucwVldG6-WHkṃM*g4%:)%.qy.ps$tZp<74Tbmћ{֬D6lmr@>G'1OyO[5˽hir9ámƷowtq$zLrsZLvVp2\yzg}Ƒ;JЛ&!= t)t*]tm)ˬ Ԍ΀w+SݬwZ|Ks6zޞ Bmj.PtgޯWUjr[(f؝Cs2>taFqiQ 4ʓKv~JHB6nG\LaR&v7y  ZVqkqu.$ s#=j|>A7TEYAqOTA|?ۇ_80]SЕ6Yav`qTho \Z 09[\Yf]I#fqtz/5i'}JZJ[ĀF6늖-K@[yRّt Pb07QOjz$<dW]T7sXZܣّ-pvÞN?:qDX$h0F :l/|a[~Bc,06F-WQMai$YxtAhw]ܲ* 7~=y5ῳGsŐI3V h^8g* O[2 ֬aկ ec'rp^UVk9o54;ep9J#D3c9/%q=S #U/fѝa21@jfKqmsK:-Eٷbw`c[$^ 9R5=IetJuqn `'ɗ9FS.D2)khճ# Պs=%I|p8]ÓKi{O<6rڵ\#P~6qcmh_QxVܐ`=nggZnj3sL{SXn̗"Vh)drpQZzW2`'2hd'^#n@YA%Awz`w#*hƺ.⾖cл!`\3o6xjm-l>҉,cif&0 @R<ڇfDe#;YJ{֫Ps@ -oB&d>i4FH.dryl$cIbbTɎffp7̭#ީ$^$ c{b;&_~+YuKHͤ ;prミjHuK4뙞%c󘤋n{{oIӾHbpA7Ii[9[,cvc 6 iϩGcmq ^[DXĊma0mXq>Ӎotf|O5^=Rd[EEɈ&8܁=VE?=PwiiKyFTQ)M'ύ0Nw `c5=sllo|XQ6;[QӮ} ˵cwitł1.wt=Dh&V`mؼ۞1ץjMipآ8ܲ rxMBt1>r۶zs@XhPM"]*o $aafP:ސAtɧ6Cy[t(۹~NpxPäίrR{.?}:r!,R1zs#}6t^)^TižN=U5(K[5G폙8 8r*̚lxW<#zVԵ(Ri>p్{0~n=qL ZYBA(q#ʨ=I>PZV99^qZD Yqk)xv:;u'] EiV6~ӔPq3czKC`"k8rg`ܔ"L'}uoL/$P׌~5j]Bx hdeqdsO[2x;FgQj1$k2m# pG"$r}&t )sB3[P_]Ium-HȐJHO#{Ti\ Cm PexI䲵t H?w9Q]ZAm-b2N6?V]F8l eTcq۷𽽵&0dsG3ԃ~&ຂծ?VUnF2 2> ssyMm1c;t:v6, C֐7RCLExĨF_F@ և\ڤtq(>qhp8dr*XoR4eYIq76GLME՚\ G8OSX4ӒHy$3-BHVծ2Ibvdgn z۽$o-.&Bc<S;$ƾC4m#$ڽOfy7hjo.g6Ip*_\&-Z?.BHcsPR+\>e g`q'ހ^%|5摖m` q3ZͲ4ٛ GVrjk3bw2K6ˎۜui%Ķ6SчPP:=C=B??){C(\4U0B'|'d D%V޾p8km?FHjxs7'c)H"MyԬVX8DT`IGcG7mVTTxA⢹f_ث1ܬ~aߩ{bϯ߭su` gܝI'+٩[jyn_>InU}H"rF1v NV&2$+ Adl{VM@,ngiY~(3E?[mKP{8bN@$x}ΧRb:uN3.q$W(Q `ޠFXFRCe{aTG_=o Ա|e)6Br"ZkڍՃn"˰(Up\ ]AKWjI+q%~P >F}GZ:D/2% FAO %#uV8.^\xoӎ&iw{|Z]*]OG {ckUFė2]K+YtP%ok,ȤI,}k?÷Li|٥+MQ>sҠ_B/RIVPX`sıơac@#sjoJy5&9uǻhrG֗@$D<0g}5E!8ǚ3F/SqUmpבz3FF6`czMEl,]W,T!91TC\t,U۾sbv.-UND#C4z m%g|v;SF(7pP&:&Ro&2.~Q)\eeBIsl`)IU 0ǽg\Xρ%ƥ_l~*B8&2{,5 S#+ƃ;N0$Kk#+|rIxuIeх7>|xZK5ZH/< !<N˜AY{*bb#K\gHx:#򠾞\Ƈ9dqlVt(Y {S-/7DQv@:17vt(Z3 dn Lͩ\MqEᣌ4z` uЌͨ0rRɌzT/~m #@YO 1y)D 8ńqZVVګ^3cUU=PP]mI!j"~<<})tqp'7HmB0i!E *;sL}6o4w0FܘUP쑟|gmkt`}*ռ==q=Y1(m{-U̍d>(ýb<:g3 gU;zէTנO'd J wLfEKK5U D$3xMYkʹT9IcUb ?d7;D շ]*kۏEhQCnqjelFCmXr:b]BK]2tW$S${ns8,{Nu4h7Ol$t6Z0fBZtT6o%\D 19yMy?7nQ%1tN'#J;MA$[KBI{͸ Sq9J4 四viItqJ#EPEPEPEPEPQ?'c~;KYKqKU;إoE9Zg;7f7{n?0 oj6k\m$)8UvybH9=11ڠO7?,MunG }y< )>/o^sKcfҳntZ vBL+ԑ˒;TdGsU]X\6" ]~F7;fgwXX7}3n*I|cI>AEUI=[ @V;n Q sg2y>w>^o۞*.tV8*/'#'e Xd)?dpo\ӟa2yw'~gfZmKtYm< qi^O=ңm2YHR4&yb8.qځj_hO3oW6kR[%[Zcpr.;c]>$V4b09["j~1;o>Vn۞*p]ty]َvOsF8ખ/Ar2}"}l3n7{Io'f+ߧz(un>ȱhURrAqQًUqjlDZHe}g@+N33o|wS69g OV4Mbk6 P<,n6bGwgp'1@6鼯'v}ns|zxd鿱%qo| =U]N=b;t2?'Q^E=H$XEDQUz+3OñE\W'w7Z#KA+̄PGPkD;'#+s<4-O\r"( 8&+Ayqp "lsҳVҬm";qpN{`z,2gyMg|lfs0⧥`ya 9 #t=ꥬ3nLjB`#Ğ !3 [\ɴ0[ؒCs: sJCNÖB#~|BF9NiNG7TGgU:6C.$thZ5VqNjH2}ekdجH#F-֑-YhnT92yu gԚ==k?MQ]B51+G9>pR*7Vh c #40[cI%4xE!SGҢ v8l$6tWRZ^f$l7Q8995I^RQ]4ʍ#p6c&d1@iGsObڪ`(꧎Զh[ŷ yk"lVUEՊN1P\PsAqWk1@IdTi8&xZCb5 :1_h"](>~Сwuu82J![x3S7RZ=HB6ɝd H PxtrIC TQ\u+BkY'C6 ~tS0h\@ q3[& A۟\qM@EY??*H=C=Bܗ/?~?3ES"aȠn@&`pr{b}kkim拾)U4V޾08Rmf$+1Y]dNj(ki'ekHeKzO底-ZK I9QMᷞ=\%K<6qʃIjL\K$ yLdqO]4p㿥W轅~z\D>F1m*i[K+oY~.}QD+#00xV_ibohĂ".@4w2˪LܡCs0?WYFT춉W@u ~D!R$-H8* A #U&M`i[퐪0evo8T3Ik$XC7]\WҮ72AwcO =j'PvyPlOqN Q9<8l TkN),Νij/­i/Y5SS 0}sך[((((( 쒐ubnk^ApqlFPIj5 ג={HbP:p3ڙZ(Ӯ8Clvo$9ݷO{=ѓ{JP vSKlӥ4L#PrOCK WX [;"eʅ2(Sw'<q'gdZ /$GI=F=0(EH44,f#vޞj,[+N\(\-I횑43C`opDjC;z@[Z}p7c;z{bԌ\FW1+UfU2E$~CjI/譍%\`l݌=_hdک vcW>DhUc( *gO\,bW*8 㱦CU ":LB_,-n}_Χm4?ڋL2E :`皌MWJċ&RnAǽ9=Fyؗ' rXĽ|0Ҥ̻k+y5iba `sU|7"ײ"ęW =8>=HPI<k.=CVKǣDZt%=O~7V4V,vD 2_܁UO2NT(cLCTt*fGvT;]zRG[D&I!< :dsU_ëqiii{}-6Ē靸=nOO3Ċ4H #p,ӂKY-#G&A)"_c򍧑ҠUHi G0>i4'8 #*Xo_R~Q)"CizW~K ZJFED{g"7Kηv!M`m3H PjR^-ט YǯKViH HVP;޸_c=vؖ6ú5SND瞼t-ׇGPcV]F/ǧJ`\kWlfdȸYI!+:sP VkN^-Jv8l<(y9滌p 1P 41,O5X g`2q4Z/ ߙcKё[\tZ5Ϳ9EgC)+-7imLrm"'Q޳!|xwR_g7M?WsnN $N٭M"X$cV5w9=)wPG<6raR8=RZ}jФPgsrҲ0H Hƭ=՜Qg$x.N=W.aml ,iRF23:͎_yqjR[o#֗dk 6BP8U ]wR|o" ][ؤpV3t lNiL]ڢ6#Rbjeh,a(%ie d$b>xж*6jQHV=HfY$hlt78p%uFyź̧'vh [DO|R{ͻ,ֵ)jaУm-mU֢w+h mX%pH% 8-agkqGH"զR,M#ӵE,ō(owDѸ̠l }H:oR[ѣ&RO a^>4OD>j:rzL"t.B=\o$s^<.B'JHf6ﶺK$s܃#-Q| r2jBѶgbfJJm.qj6ax-գilkKp=EC d46c?0ԃ`@x?)uKF0@22k3}.3:VDm?y.?= .oY%1&6Hsץ-CS:khƝrEKltlv5MFwEik9^qWFd/@T[bgӛ*ajpQxOP4U4$:L5ǹEwhJ:[x LXRCR"UsUj+B;|w ۈPTzr8Z⾡tUyHTdnF^=UVFЧPԖpbv޷ #sⶣO,֑Hda8M3qUc5D"]Є FYRؽa2۸IcZuWfd?@W*TS}φfȄΏDӎƍs`uǝ^GѨ}M/.Yt*; _>so ^Ig wcgQiqpOfo(G&ef[d@ C0/lկn)RxK`08'ImtPkiK i(ʹ;JI f]G"*9==ctd;BD}J㎝hZ:vf{C^!gF3܂lyG`ݳK\vt#J˜r}MkG6=lP]U'=88&lUA=QxFEqu.-+619xϬZ<63PFz.7b~lu %9 p+F7i"Y6Q8$gXcj[Rm`ŗ2sX:^y[og_63MiT#lo>"C 9ڄ-ΖuVX ˏ)}1GXEgOiJRf">j:Ȋr2:eu-ɸ[y  tӟZ(((((/Fu"*I̧xrzTq@ֳJBF'<`}GPQxnNdE%L&R&@$g꺡]AR |8j[fbIF@=FYFv%›byŷ֗@(Z{g1-!îv㜝5>ڂfHƍ`Mn͸qn܁3Zr+iu$rT-REmpϴyesw=遇k `.6~pܩ/jŲjMw#B#9P698m8=+F-O7 lxF2r;N~ÔxWz'v>󘆍GrQO/d8'?/lZp1ю:.n>*>*I4 5I- MTMŲ_$:#h\}Lx r}B=QA݉a`ܪl1cr1jp-ԉ'.Fa}2}3L.P=JH,򢙧, $/!dƩ ѝ7{P!b>fd᭯+%b13\* rvsQêI\z%q}C=xu`o#QppD=i^O\KҚ3j hVV61F4Fl4X~l`~4GkUkiS?hq@ǎfI.,z$FowA>Q޶%s$d̅ 8T1j /V10y{n/.xR۠ ~tߞk߬yEPTg<#=*%fxFӫI Pǰp9 ӑV/onCea L#z >zu nť0GΡˎTtsI ʵNX#&dPcX#\R$Ef o|Z\I=}Ē rx:Dtl*}ye@msw@X,hdwJ {aHu $ӛK;GVydOJu=Atvr CryU17beKz<O( F<iN49C"8#F{jqۥ2'Q^GZR#V2. W<#9KD|З;Kه })/$H#Y ďʨY4 WOFU$9982BIrMeʥсG]ЖQgO~7RbR=RIN0HVT 7|>n2f4Jͻ,08Z jٱ6$D{}vrzR3G[BgLĜ=29=n Y_RK΢vy06c&2Nj(flϖ|P#q< /dc&ȗ)zzDcNAsc>Z&Ԣe U13n;j'ka/Sp6+9ީG zbN&°(o9)NҢiMܪ1 R 6F=-8Tpw W,oVt1>TeC1@Ge]laԼOf#?ĝTd{Sۈ\+aQ2Ilž]bYc{-)-㶌H0R]Ba 9H&R!;# <]i-m@sZCS[X<c8-@ 9z5+I-1Dg`mR4*Bd0Bq#\-PAIQ\-؇gO $~Z-6ha|٣@@<)m ͱ&e YD0r2@֦mZXn#ImHInOp#ک&{ZN{1_&+;y1v"_S)98zIiu5|i-cœr{kNިġkWS#f 1qH:.m՞%f#ѝTϩܥɈhzmjh@lnmn&Q{yf@9Q@Q@Q@Q@Q@Q@Wμvmv#(Iثs%}!b-VlSөiC^+_.k&*@;gN)KhyKD$[7e]nS WXKmYt_:&I)!R@{<ҋ++,vTV)޼S@] B9!%A^؈4U,_3yn%Va6z{P Ix5R c@o6n-%]) 5^ÃR &@bLF G>*) -/_d^nDNcOjP̎nN3`|qLgCMp)w8VO%h I}pH,8eܸ9V=\ǹCwt"$6^>@:bqtE%6ĒX\n[>4D|F8oj dkm)f:?FI+Lw.5,n㼺JE|Cש)K7)̗dT 0FɆX\'L,N$Smh#oc}Bɟ.2'|mUX5Umx$u2ee<rs)5[[jCwr/g!2$g=ϪGy$f3m) w^²dKOuF;K+ =?oG\P\w4ƉE>hdC;@=7{k%)fCP>=FS7"4f9; _Hmdq|0F8 J"C-֥4A"ryLK``"St~^J6j At3yt#L˱w[х8$U=z6.Mk;+u@Wkq֒jQEQEQEQEQEQEQEVy][٬Z;|M,c0?SZޝ]wD@AEs!9=Fh+up3pZٹ[G=7d(t n4Ɗk*e`F #8WUԌcp߾p!Y+8x|Cfn_Nzy63ӷJU@i:s yCl'STa>ӥ\E帎(F78gM&,n}r4mɯ#|biEA QLfF?2tfCB.2K>`ܩ/c:ՋdnӦgy`9P69 6Ӝ`lJep;>JṵAm$N24sڳ簊k=EE>@#nO( )3s'# A6KЎ⧻@HR-:y B\+ק5E6T,KReH9KjobDF̪#;>h^)u/._/>dd#ߒ1QgWB-')XpzUPR rM*{Q w+EdZL΍|;BzRdV0He1&@6-DV$O1|KGxi fSv\Z>{"2m8Zi̒%aW2OO@h&&<ڂ9Фgkx <~H+" 1ʩT7l|}_&SFqVURҶ|I*z\xv%K}2Tb"B!=\px)O jEKB`}r+Ԇ+$@z n2NzQGMW7>[ydO;h K<3h#7pO9cG'4jцӎ@X)r8֩ڄvϤM,&@07>vگHj(OXTՉwx@g&څ/g# grQ}=,ZnHRYdWQdkh-hUz #{{{G#] CC-i%xX¡3 czq5vlDD}JZν]ZIc{!`1"ꤳ>jcG-_=WhI6 thiM}XM8T(uR}=TqO'J 6 E秽gYB/4*T\Ts}8R+_$qie i ©^4m, b@H;g:)Oܬ/`.Eݞaw?e4wRDhbWlO^zU"W{bm>s䟛@4sxo&V߼ n3Zl6ہqlqXЭMJm>y;f CaNqسP_np2=hzQ~$11ORj /%VUbkm]Xܽ&7$ziici{%_3K&]8?3_rG?Y?Fut{kd8{meoaMt75l4wn!W냻'RG+6.clq;5ZOu4qCee8R2цAKM-*$Y.ӓvP7WXAt<"nL:N"$RM#ǵ`2FnsҞu4\oyUYHahRG J ֝&9GH#\y ܫnO'MI\C٤w+n8IRB ɱ$BGFoZjjW pʙb p-֍,w4jh@˔QF (Ҁ (Ҁ (Ҁ (Ҁ (Ҁ (Ҁ &,,K8yjX>7:ߛVGq>f~$Vt$fbUہ֝|#(ZV1vK{J4Lڃȗx* A{uHeEMpq~0C'F'1Z?,7̟hAc{qjh5 5%Pc y :pCesD<^O nZ-RXZV? 򑍻 Ӿ3@0ja$ϧY$`x;8վhcw]ۢR ?x< *ǟDLjߙ?N;jh4 ,ޭvg;Dls@[S1ctl`$=~W,p;(${>PI-žIlcv{kc8> u53hH" vlUNŎׄ%qzZ?40YROṢ$ʐF <[}8uibٕ-+^OQ֘u%ƺq l262~^2LVNm9RܜBn>Wۏl£"GGhnWs->R?;$($5*Ǣ1F]г\3\|zт8fʁYʅҪbNFiX$=1t*.fx:#[ĩx{uSj2Ũ[@-wN7^P\ts{K;KBI$yf_L {u*[?p>85 odCOdKxO#ׯAw&%@m>U_EnSX/s䃼06}@ 0Gj Lrc ONOUW²Yե3?bkgԊ4,OJ̤ETŞwVlcT6ٓbDJ$8M==[Hs̓@e;KdnD ֥RE$4Hc 2(= Fw [OcH7Vh͏ſz#Q0TQ'n"[z։V4!C)1#j!Yƥ>/lI??ӓEc*e64e65n.ȩg<7g<7պ( "]oG]oV,vͿvͿZ3ϥ-adT˳mh˳mj]S.yo.yotQvEO?Ə?ƭEY??uFM\p0 ֿS׸vͿvͿD#cR{.yo.yocR{.yo.yo$w3Z ;˳mh˳mjn|77L @Gr0sqWbN,]oG]oV註*ȩg<7g<7պ( "]oG]oUVx5nRKH8n? "[˳mh˳mj۵A Qgog<7g<7Ok >ݮ)Z_vͿvͿSmG[ U;/A8kJ;Hn9dCfCg<7g<7պ)]ȩg<7g<7պ( "]oG]oV,vͿvͿ[*e64e65n.ȩg<7g<7պ( "]oG]oV,vͿvͿ[*e64e65n.ȩg<7g<7պ( "]oG]oV,vͿvͿ[*e64e65n.ȩg<7f?EadUζƔilbT3#GNEYC(f >/f%_kv+/؃SpfhZdZ^ ^amt lc4u>]kWԴBI{)"D$) *? ޯvmLH"řdii:ϔ_%w8<N2sN멢i!ǖBɎ$qN7_V.[h큜F$C|Af d淯tn@vmRKg'VLlm g1.ю9Z[{{am G$@L*zX.s_[/ڠl6qM_ 6Z^s޽núM͜VMaZ0Aj=W5h&&cG^=6CQ֯/m }!rdF}IzO}ùֵ4^06؊"B0=sW$MLLmq̙'9]i:|Mg 9wH} gIn1 Ǣ߅}59(Gf]_4NyEXrkYm9`;{yL(S炻^&̚m?(2sy6ŚgIA09Z̊?, TtuiK&<yTz&2[ k!*[nAR?SO{{.e%ҐD#ͷ4qm-ZGp8JFr+Mu˩.#፤$*T>֗ cme Wz9'56hfa%w09;rx$U6컖t s|U vշTNWKd Bw8RyE[ZmOyCtwQk@l&U $xܭFox]}g?mQ:W*֝i5F|I'oRqpfqR8kc"># Ku$F6V4kmwOJ[DbVHݗ8ܸ 1gj3hC\ L18ǭ6->l1t^NOgom[VQxgn%7n8$0$z| {u{n.8n3B /Ljˡh3i6RGHV1~v8(8QUQtU=+m}O%"u 63$K+.)`BU4V_&S3%6UӁU4]bH事E9ءȋE]S7oi;jA4gO-Y `d*q$]FA`9/Be\hoq݋Ӟ:xdy#-9.+v+hz֡3K.;Sf8IkFSke, QX1Xx{RbУ3+l?7>3iZ,4rY10$t' 2nlM'dtkLHTĒ!Cs aʒ?3[6caogH"XԞ6A')QEQEQEQEQEQEQEQEQEQEQEQEQEQE@?!?3E6$ ; ֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X?G_1h/֊(X#_<)OϭQHALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image027.png000077500000000000000000000017431300536243200266570ustar00rootroot00000000000000PNG  IHDRB)^sRGBIDATXGc?@oo~NbcLLL\, o|ݫwԲ r۪ugqn<dmoDSe/ҔK?S oο?wl <%;}  ~_s5qxyW߿r` ~~'Q `܅?14R?7yz +~*&ܨ xpC@PHT y<ٝ>|Dw71RB 6 Y } ;6u 3DT@yszXBKx Fȥ3] Ц!wۛEU )01(Б@nsRt*e `nd7@C„/75Bۗ)xih$8h=q(oȋM.zϟl_w+Cٓ ~bhzЪdAOIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image028.png000077500000000000000000000257321300536243200266640ustar00rootroot00000000000000PNG  IHDRBsRGB+IDATx^ytTe[Y A6!,aqDQpm"o>ʸ;Ǟ;ۯ9~iFV -n"(`&JUާVnzR7EUo2ܺY>֭' i<@@@ K @@D@@IESsC3nxj v* H񫞂)iayrey\{Nth#M%q2eCx% vձ BgWZ)L-&ܠfs2t69e('}:e41(eXvUYCviQ `ӌve6 2]:iV\)X"y)fm$h^\=niqsVU3bY 7Ms3"l랺&3hz\$pYc/seumk Mz4# z7}zyVwX2㶵s;_uYB0ܿz*c/7ݬ|vD rtY:nJ eq@Um9-nq909F-1â#4+ɈwĥȄ'#^ݩ(t:86wsF^I?RMFvUS+%]9Jϒb6FvQ_֍=2mm&sP]wn,Z(T{~yfcmq;CѓRK"ġiDzey]VSQ _+Ej/ŶyXvcO7|b\³I>6w6W뫮tEE͵_ͽ&4bYSC@+ϖ򬨷ݒa?cY.N g]żCCƸS /[N#ReoljL$"s0z^eΌTsQ~ iÞ j%u%nYNq2%YM*nw]]7 gB#ݷ݄Z5H~(g7 yF:ң7BB>:*]tZ_w%1_Y[bעfQS3Pv (ד5f8@>2k:7:FbK(d88|y#t񪒣nYd7\:Άre!+fY-;@Jo1^kYsN"~+wx 榑Ō eಆs7 /_̥f^Arjtd+{c_?h&٥l͍CJ) aѫ̘!*5yyetruaE@I_v-cˮtgbYG*rh ~p8NBOW{gMnn=mz(˫UkfApPEHY CT b#e_1i9)t| behmj;/=CY;D&byCZDh¨h_ޭkp99 @@/p{r/lߛB#  {k"7vL@@@ =r^,@@"@FA@@ MDi&@@"@FA@@ M}E'YDN6  y,=ֶD?hFL3QC 'Dy}:  @z=5ys3KJ cc_4}tcA?V_pbCbCNؗ|FVB!  eZYVZuշ^?Ŷ/ .NKJo\wTV_k6gE@@`KbHf fZ-6O-6~gqwZ>[Q߻{i:?|O  8 *JsdmZbOif-zBAigZooy&y  #+N\Tx4"Ϊֻ@BS?>{p[~IW=UC@8%H-O- D@ P}5-rO E=i   W ͎@@@ iI֤@@@ |\"@@@ >ɚA(   +p)  @ ILo!ʇ  7@@&"lj-ʊ  <}@@l$Y>AY@ "`|J]` /Olwjch䏻A WÖmMp`*{ hr  @ QcSU@@ ρF   y$@GMU@@r@h@m"= e# rΨr>-K9HSAJyI bM|[H@'/xc9vƉ睳ƵGl;ܾh{ D  @t"ZH@}[`舡77nqݣ<︠jƘMݩ, i# @bM6rXG B<ܜxu9<x EŽ2k <8=STT@Hњޏ~Ϛp\?+hU%oطg(C S 3zz.~Fo/( xԮ72"[6\+[Ś/;1WPqErcMvj D95k%r֯`P%/hZ' >'^hU0.{yɿ)JQp9)5޽ZӖVOdnIXsO@Y .qޏ^5\ɫx|zU7EUk+g=7^wFi×Lշ!|%7Zy(^ȦcVB1^M[[/"WiίԶ4D%Z3㍷ԕo hS\ѷ|URi2A`5],bA˺!VS3k[f{ fqM;6?[Q'Xiju<@@Gkmտ`REFW@k_n:F3;Fۤc{u)@ F'2oW^{Í͇{ǎ羅t䝺:_[ěӅ kjoDX .tH`M?=Ss&oyl[]DZZ{iOZ۫ -^j j'F_>iwm{OxϢzjY9%p D-74!474oѴ@WS.~kMr'h" ƚ.r|kz?"GO"Ɇ?jmEVTۊĿ ƔTi%ٓß[%Z?E2Vto   ^zҧg*^UXU/c䉀\b576vk'$䣦}ݳȈ=yBL5pڎsGj" -4ecN.9{^f@ d*hoM&Q- Ϗx8}pr~\OvHJ"RY'3ZΣZփ# =u_R)ʗ~z>{*@I@t"~#3C>Oы}4iةM L7%_9* A僒hZ,PX]>sFY֓MGkP"?lcu -8tY6ו# )Zӹ>; u7,5ߚ"nt)p\O9I"  2"ђ0  ).$$`l@` 'o!|SI*,i͛@ SD(E\ `+OqN^ޜ cWRu M@*o=(Odka@ <끚 2"E2F,Yԓ(j @AJ @ d9hrwQ/@@ vV "P-beˮѫ_[^zi/j_~۷y捧~eÿ]R;ʉp7S!N)`X8 ڽ]@0  F~' )so}84XN"||?g]Kk-Mvk{f*poő5h6  e{yϿ>Hm]̿㎅wu7-[v#kn3ӯdiޮήnG;9ѴmW HV _ k:wo@ E,)%YK >[bV>qNkW@KK{ww8#5>sv59FJE?qg_4}%UOOU_%d@t"j} _,_wu7zoϘ8Q 'ێh=rEWsXs5uǏvvӛ44D(O lQcSUKw흟~ǟom憐j7ny_y?m_o};MOB ҼgZx&5>ڟv>6uEV@{[{*//<,sРA’BM _EHNQOaKe;ڛ"`w/amm ?[Zvg[[+>~]4'2K k:|f5?+njo*@WSF7NjGOOqO|k&2M k:|uʓG,yT{D)NS yŤ3#Ywp .@f yM'Ϭ4y%WMevu465twwF?ůmm>oGO0'd@t"j} _,n{<۫W]?s+l~׭'6lv[,}rp"@F yMBǿ}ݳOk( @   @Dq&   O99"  |v  @oN  xO|˷ҭi_{I@C΀@lgJKPH/\Ň}wLE%?ŋ6o].\xl@^Ӊ@*XSJd'<%KxI??z֬,Gœז.3U/J@ gMB!!wϞ"?97Щ/)xn׏^eX7nz㮸|@({{%K.[1+Tn*XtiAGE=*,S!z4-TPuum/|Ӧ=vmT/.FY`t9\<-[.{aӦu66vMMs^_[t J x_]ԟ44hИ/.3 Q<~3ft}ɻ\OM[*"5TZs8%SdrB@ʕUU#FJǞw^Imm_ҿP*#=mEIHMw;QW'g6媫~0c]~_76~iS G N`@t"xwQ$Ue;$@ mZ){Ν55[V8]em߾m޽]{i(Mݺ5[kN!YӉsQ`ΞP^Oė_v~_޽,~gO>YQ[۱}{AciZ{),"I#@<YӉ5 #$',vq+W_yj=r\C={O4m|Pb_`@t"8 X(2(m>|/9u|sNW?v]'w| ==#Ep!0 k:-lQC +&Λ/)"_"QYyêU\w]MnzѢk:4|hʼyYYm @n ȚN[dv4D \}вѣ;˯of,Z$k}WS#Y7sOP+*>S[>RGhA ,%=R@!3gN|uW/_m`{9:qbqAw#Gfe)4%0 k:|nu"j%,YP 'y[Y8|ZWor}zzzK/>#p!0 k:R TD FM0ȧԼ>_]C ]i־xݻk|``u˗0!jKQD9ڕV lg|Q@$pٲE|ݻ_O~ _(~vc{{{[-KS\M'w,@jXSJdkNx55v٧]yeEӧΘQp…sMs统~z_k\HNevfC }-[v;5꣚CzOWcずwXUQw6,{ڄ@:t" G#t Y*0f„G7n{+W~q [&OpY}-+W^kܸ{߳e)vmMB$wϞ">97ĩ))xn׏^Eɓ6mڷukW}.͛yէq 6+#_7SAts RYtOVIENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image029.jpg000077500000000000000000000146631300536243200266620ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?I.. @!r)hr@YIg("[xvϿYi/$}}T[ߴ9>{<+Neدfhr}y|Vs.s37_⏴^9Ӣe=f}y|Q/ZtQ̻}ϴ9>{<+N9`o/Go眿iG23>{<(M:(]پg/眿hrE˰{7M_裙vfir}y|Vs.s3_⏴9Ӣe=f}y|Q/ZtQ̻}ϴ^9>{<+N9`o/G/眿iG23>{<)ie+R9`oG?tzdL~^9Ӣe=aulrIk"Mp:+v~ȟcb$ڦ,?ҧ7Ne3ZP~Tՙ?hԳN3<3OE:)s.o/G/眿iG23>{<(M:(]پg/眿hrE˰{7M_裙vfhr}y|Vs.s37_⏴^9Ӣe=f}y|Q/ZtQ̻}ϴ^9>{<+N9`o/Go眿iG23>{<(E:(]پg/眿hrE˰{7M_裙vfir}y|Vs.s37_⏴9Ӣe=f}y|Q/Zu}|r˳ T}dyU$w$8ܸ11- 7QTKsHlhKj&Uv#pR35}A6O43ԡ5`~Pj7,aW)SW'od5Z{ @bbT1LxU/MƮ̓x7?Ə2O>_ʏ<@_ʏ<@_ʏ<@_ʏ<@_ʣ8PD(I8(Z$$ }̓x7?ƪG%Zd@x8>饷[P،$mXJWسI<G'oT[)Xn!d`Ӄ='d*kf.TS{o!d4yO;MIug#ߡ67 A+Fp_2O_ʖyI<GKQxTh'od4}俕gy/FyI<GKQxTh'od4}俕gy/FyI<GKQxTh'od4}俕gy/FyI<GKQxTh'oE$fF$8t"8;Fq4a!2 ' ێj{d2d ',AQEK* 'Y':Cn<[vIgv*ЫtLOʋ}QE=<$ M:/t_?Oʋ}QE=<$ M:/t_?Oʋ}QE=<$ M:/t_?Oʋ}TsS _6>p[V#b6p:_e&nV+}n؋6cT{>̹ZH,@<:;kYdwlAC_fyX^$}K( 5=ʫ^S3ݩɻ%!hQ,$plsJ1:FasR%*#g (yq4E\?K1m=?:<yq4EMmoTi|<"-{Gm~uSˏy(i|.̷omO.?ȣˏy( 2m~t}{U<".?Ȣ,moTi|<"-{Gm~uSˏy(i|.̷omO.?ȣˏy( 2m~t}{U<".?Ȣ,mӾk>h$}#ғRQ\JkP_h5 8%}XxK;>2dǴ|+jhAPGSjܣswZϜ^68)qp*_ETZG3Oʦz>t_?<Ux~T}䟕AE=΋z'Ygy'GIQt>t_?<Ux~T}䟕AE=΋z'Ygy'GIQt>t_?<Ux~T}䟕AE=΋z'Ygy'GIQt>t_?O>/g䟕'18[07nd6xb_hx9*ԹP(=)zdE,]I>bcWn?6lor9I#qPEEq\ MYmQP0(((((((((-KI8cet'9 RO\~Dgmr!Ys's;j .Nǰ忈5[B7[d27Ojo6<^BE'l 8_Ƿ ?!O%QE@Q@Q@Q@Q@Q@Q@Q@Q@5?!Nޏ'([VkmE1R.p Aj^}_\A 8c,HXIִ5X` L嶤d<55\hqWϥi\?E"~Ί'dtTpER(((((((((cӹ_cI v$<;GJ5/ <, zoVfVe>nRxMTon,UP0?6F?_jV>f6(@QEQEQEQEQEQEQEQEQEɿIUkVxG٣袀}?[ΏGuEp4~_fhn:>E~t}?[Ί( ٣4~_PGuhn:(.>(A [`U?LhyO栖$O0¶xPhn:>E~t}?[Ί( ٣4~_PGuhn:(.f~tQ@\>G٣袀}?[ΏGuEp4~_fhn:>E~t}?[Ί( mce*~A<ա(Eq|e'QVhm@(~G٣袁\>G٣袀}?[ΏGuEp4~_fhn:>E~t}?[Ί( ٣4~_PGuhn:(.f~tQ@\>J- Em OQ@\)?\߹3vBĔ=#D<#IRNO z\jJ)eQ%it!DWJ@%3\ gO&a8a%I'vNܙvGlߤDeB T0abRcVЬI\>5<<}uAx]]&s:ͯ&WWk`ļP),̱Xoï\9֖:jk^U䓸^R_RB`v$DٕղmPFF3NbF߯3)s.)X2yi8[lY[ZRk4'Pg9@ uo-ڼy}}}ټen= *Z"FFuuE uqC%Ig9t2s7<{(kڧflhh^&s1lo9t؍AqC>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?kVNigF3}9ᰙC)Aʾ.5[T) ]e?)SU5HpGfFoЛlq=`gCEp:-߈u++~ޙj^$->yv[HnmusGSAX/ xk]M[X{h?+ecvN>)9?ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image032.jpg000077500000000000000000000015731300536243200266500ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?mOVM(\NHz}_Yyk`!3-Ѿ(K+BfHX>N=5ikmv/l6̅a3=k5.fvN\m3\wMaw U*꧿^}6W!60'FiUҧڵηĺ&]hWe8`tuzԾ#Kxv1׹o^\f#|-)k+nAexRAaa>z]qZ]F-ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image033.png000077500000000000000000000302201300536243200266440ustar00rootroot00000000000000PNG  IHDRe|sRGB0JIDATx^ p\ř[<-[`H#MH A !{ebQ9))LmUTQjoڸKTdik`IX,1~F6i_>93LKԔ<>ӏs>}(   4K2,"$b]~1ץ  SM#M)>|%J@@`P" @@8)AwH{gAzDs셗f5X_NFT&042ܖ>?kY,ł|_}` i%\s9Na#ՅˮY`&#AZ_&gX~P|_v튼 z=nה4@@`bdѪ+Y0 x _; M<{Af}]qĆ@@iӸf##zꪽڛ{ *RS7=V޵v9sO~s[3|UO\  @E94_k鶽oW{3hJRێc-&۞8|7_fl`+ ̵Y,Nk@@`jSL_~gI GR/l?+^k>Aл<{6ͮiHr/փL g1U,]7zY7M_:/Cܾt;_`&p]c=K)ݿGYgƃLJsg93٬s{^ .IesE5teSZ皓-H"sg9}٬{n۱|C1r:K<:ʷ8>Ob)<QbsVDœOd'l4@@`=͚fmjoh)h/Mڞ  j_;NOeRi;Mgl߾D+#@R)+0!v}fKIH*Nys{FɥE>?vXM1ƀH taF|H1[rya8@xR_b<@x!?溴mysL   0 ~pcu@(2F/F  Sl4@@ jQCF)D/Pg  4/jn;qӧ]?4;e[뙞޾8K~ 0JiEwQ?xϷM1z]V& La.XP]꫶u6iir,2f3I+zxi;ٹk$)MT@@`c_m<x{z}ުow?7jw7W2hAeQ3\,-h1rӂBּ-׃ uPg]:Gk|[Ť3c}d~,ʖ]MnvlzwHSN/E;7H{yu\ϙγ;Μoi:u_>S_72zq$4,v'-fEl1ye6dK6rY&4lm|1NU_7L2s6^"8;kmΠB?Vy-: IK`Hǎ\2gKf͛;kOKMaFSGgH3̚wɬ~ZMJ/wUk7im[g*JYo7_Ƹrib)ZC3MtW?-\E)+7͔ye,$5^it͓<2"Zv_hn|+m VZ$F_=kƃ+;+lûo==r_NE^+w}CCC&=`˫UH&'  +x;n^2cFW|VgLKOXۛ;O7_GLD"YR  2poOɓ|}Pí>ڎm=v^ǏS̼ }eAYhW!v` gI {SRFΝ~%I3={7u֬ԙ3SH_f"D/@2@ zxy:w z{zh?FF&X ?HwwҝKUI0G-{t_%K  S gKQFGCh^n'Sl  uw]8s݃Eoz{/B=#ã/Vu RI&z<KzK#LYw̮V$c>l.1kw1IiZf*}4v8nնk% JC:*biO-C"竉c\ Ga G|x䣿z?{v|o7o~zoNY)2ux$Q"7,72G ,=T]V4g|huyU\QcYk4U1G۳JZS!F]NO'Y2=Z3{ RU,j9]X]ٟaO02:4>'rH[M[Qۤ1!U[XyJrYu`xQ]ܙ|.FGwR !ېQ)sJc T;̓r1ـV)ΣּTvk fIa./ykVK6@w<g <@OI>#ARw@YOժ-Z},RV3I\ӈ 547!,%Աhnir4XGs$vCψzy#i^G kcypBtB+HNS'=jQR_ ]%fJcϏ#'6}cӰ1\Q{U6)k.Rƛ46b|Vz(V~JN3~]NI?NSjd &OttxךkmWoR_7э1^wh5%SFv r~uĘzE3x,\9Rz&},]Lw1_KPNiF**tme(tZahzpbsqC??~Kl;!mZY_0h#!o-< rVZd<2]Ak<( 7Z9L\2, !$[҅1)tE(7l|d2/7}_/eUSPr4;SںF\4A.-$18$>z exZ`=pٲe2T!uignߎrmAwZfҎ@OѤ]$nѕlWErC?(7ؾT^4iFF:.svk#+!f| IiU7pb6R<o(&yM†H %%๔1VI ZC`"=Od"jDZ$yr˘hqr3ڊ}SSZH_&G?  F֣hF̙;󩧪yGx΋gB @@ t)cA?ٽ}Wٳ _W^*)QG/,x{<&D1khIiX ]iDeBGТk,.o`i0BW2$4=6)opȮLT]]+mI'PhN՛-5!nhX(L t#+]y}oܹWxܥK/\&.\u׸\[wwe7xZe:KR:x֮Iޑ)tԧNBʄdzIBd.QIq䷬xi$dMxAWm8&H"@1DXe")fTRQ*M14$M P^Ԯ .뮔._~e==߾gXrӮʓ'> U!P,bRSO+)u|@` 8WZk/|egSgy景}$|_zO 9F&By`|Tr*08vFoI!$Q@W@^{lیK/^Ywທ^\z`O c`?{wh4_ Kbs\G/iOB*Rld$E(E^  sZjW_ٝ%qǧ4&$0/E _R w}t _zi˿\}Yg_SA@@ 2K/`AܹwAvl>tjď}LJp7_~Ddž5 @@@ Vg-L;7>xees㏷,Y2cڴ[n*0,_I  0_n>}Eo7=YnذyG>~\hddd^Jʺ_VRҀLti_/~McC׿2N&W#|z_ɽ{]{*m צ\Uj4ZjxFP* ]7㆛!E:'ySJQa@M AEQ'kX51ػ>xR tF cNV2[i󀫙Kj]&oFNI{ Y#P= 9_T\9yJqA *.Mw|!vshA}dWSL+7^6g eg8W"ƕ5zdZ[fIivF+z(0<.dSܲ,|> mE*`oq"SOtϞO?ʎL>Bџ:G`R_Z";Ğ(]Q ]bYvoJWM],ɊH89.'CN4UgU\x2-ѕ)eJM(IޒWmL^Xijr#JlS`˔"8SU(SoѸ02f˒z_~jrYzGs;c:y*cnD_^|.] 7j9gՁx,'ѕ|({30$%emv)@t"TX`NI2MvUS*S0it䦺ʪb}zGS*@xr5h|)*hG:e2H,OȑMrOK"M yRjrrۓ"naZKwR_a|1`u| ]F򫮺k'^xw|nzbjGG+>*~sIŞ #FMޭeZd$۪IHUm R:L̰E9%IwIGjbQiF5I4jl! 3`Zg94hY׸_+i)3 ~޵vQ b W3M|>eƭPP 8KZ8V_:=_c_c`mY0RSN:Ykފ* B%-K`4WZ 엠!ʌ?e]Ҳb#GyRR@LY$&Ũsඬi oRee;Xv,;3j,>Xjo6d&E@8h|>de_v>QHrPs2IfDIAsMBMlR:}ڷ&{ŷ#-njMct]8\f3Ydrl-/0ckoE };|55$.G28Z A\tU]EH?19:4&F"(Z4GQ &ArVM%k<%_%_c\ĭNtGPH ˉD  t&2: @c@@e-Z  ?c@@@h)}L^̢$v]I*Rɪ6Z@'ƫ8  ?^B$b׵ԪRR#h(b iʉJX rAKmaeaTO:n HYDeڵdRZ-zNCe̩dc_j7Q^ϲgۡ>B)A/K6l&kth2,e:'Uź-jۊ=ZM:G!@Zγ~-V ZdJo:&(0D (ε)j9QU֯.te +N>B)#$  0v_WBVrRk; M\I@HC>巂K@+JJ:bC'dcW!$@կR%R˫E&Na3v NB_ra˂ ! \O"r_1$>>ՏRȑbIa@\?OVJY'" jWR2j ۋH D`'q*6CjЊ R|@u}v"u'1*f$; WʔBh-q 0vV~.)Jk 7k*HyکTUAvG*%4\S"9uD^Lˡkcu&xHMjWr N4_LT  0$6z>G[K*,^-n܂JN\EqX4q팶L9oO̕UMn='./ٴ'!B&xS"A@`Hr$_&C   0v}@@&/w@@`_k  0y Hx.-.9g n^^.ºÝO:&ʛ\1vNl! H՟^ 9~0S5G ;>eLm1;=DDUrAH%=ɾy=x:xƿnΪDQ<)ߎu-Q^'6uUDl7Ǥ& W@B$#([eZ*,ʧ|jSFŝxA )$poNQ(=Ku*r8B):$tB7?2͘V Qp^uei}1=w<[INnM?_14 `Suu]rR%Lkuc|l-O>MRB,s)km.22 u+%T mi9OE=/2[kJ/^v7lRꥀD+Yb,2 B_U't79@D_.^Yk<%8W-k,49?UW2kןWxpN- 6X+VL>LRpS^E901ZJehs&4Z%S EK^Fz&穮%SRk 4)jƶe4ŕfeu(^u6PppKE"䖕4*|k8}[- :lm1 0bW!AFIY)ҐqB%/|= \D~Hud'+k'0[ɁlQqAAk+gH12ZK"Wdz^B#\7{.pd6j[vYEI*R+%T!ZP%r63T $r,:jpN1M^c=3ce%YTMsVڝ TivCciR1tŘ=>M4c 1^El'6r *\FZ;҃DK $Y.,f[}b$+jIV?xTR,'5oq"ڥl&EW&f/!r`b.[O.y *]9AgyˌA,2c:mW"BP" 6V9Ml$bG̦Dt)%Ru-#eb]EZoaEt'$ԯ>vI\Ƿ ɺSQO/h>gd@Q8Kz&LttӝN1hw.>ףJz~^BFy%g}VM:Bd*rvȾC,ͿM˞3h9}"t5+ *#x ӉXK>SL8,15T#xxfmn! ޵<L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / L,_  / *6>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ZSpFabJ]/#d]xkWVwvikk;3GZMm-Y߯]/bC+s ${A+9=kJ:uILK o)$eXH${}˾]/߯OEEʱs? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/Qps? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/Qps? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/Qps? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/Qps? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/Qps? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/Qps? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/Qps? ~yw?SE]/߯OE yw?Gs? ~=\,A߯]/)緀527W9$Smfݮ"C_;|z#̹h@$`Q)!AVll?r?V6_;ۙuUo-~ѬkL`j)}1&@O~j^q_vprn b]} :Z?ڥ id݀NxpLՏ?Ty_qr.ƭߵZ?TEբSQߵZױEey?k|AcVO-G~j.^ƭߵZ?T]Z++?k|~_娺 {VW~j`q3WXbHxǯZ#E&4 $w^bSau?/.g5g<; ;?Ўݹ8eM c;[8jW(z~ ( (^( u ~4QGNu@Q@Q@Q@Rdz:@ E&F3\EPEPEPEPEPEPEPEPEPEPEPEP٫Weyb7%$ nXW8Ǫj||u)"ơxj+isyCl=q\]ܷ˱i$OWPϔ[s} o23:s;"5i(-Ϊ(J0I}@4&v%^h wD[ˎA»+PCbUX[Ix2R-]AʹKK}:<'\C?umjZtq$FqϽ%wvm@}*Ib]brq{w'ĊIm voNF c>泴[Tm3Pi$DE9P؜s@޺{nՖ9QJ>U<=Ap7,d8 J]ZVmդ5K32t N+_/v$"]0AW.u(m [y6`S&2qgN"Ȫp֋#j6Q{v#`I¶Ny&K h! lIai,w/b:q~n]YC̪Ji@o1Pe>_@LVtm>3&h9B=GZgOY[j7[e"FkU{opc<@SU=# 7ܶ7Pz–㶊XLkodX2Iׯ9J.[I%L* `v) uso^yq '9A2NeȾygUb@Y`*NBnx<0*S{-Ə]jזĖ BO vkewE2G*7+ r7 gc2 7N㱬[/O s~5dd)amDfmr&-lt=PC;FEb즣ZmHok$U";fPbS#GyeaUcq4˝F+XGGT I'~YsZ7zsL(yѰkO,TGwq]dOrN߯jmB+y%[ dVկ^N;G@$i@I7EorX4oUc7! _1w[GWmo d7zSA8>=AhB8="Yj F7]2_.53'n>t@Zb$y^L`9lp3M++5brn88~X_(#f[[x $ӈ?#z\  lqϮi n~o4܈dfao )3'rgg*[BKtSG%2@6y$dJ϶+?V{ I/ѮPae9ܲEiwH!h"CwxAҶ4{]5 FK.HEjn9dM"i%T6Nzg8ۜQjW3E;jEBI +'## #ZzphP$  n7d &٬{gGF0UJp?Wڜ}%uuUy;k[H~BA#h=;V yYk82 I1$88㞕\\ɥ[BF$q쓑=rs֮Χ&>o5;q֕o8mDۈ[Gi-J5F5ipܪmHl3WZҵMZ G6Hćkv|w9vlw7Pj+f*6OH)[hN|= Tϩ=C[Vi]./7̉+@B(; \? z!ܺԶi$K̗![(+$V޿cgæ 2UIpD֋qzeҢY-^e!MU iu:tm)mq׊mݤ +I=0;ۄW'$ ZnɛW_F9.1G*IB3ޒP*KIfI%3S,WH}v;k7iK+ yT7/}umU:9C#DeӚ, YE8P Ts8}/V-{G$#lu`)EgzD49o\vv S/n-mU(d% Vm+q Q[4m$KS'ީ6Hc"8T#H,oQY-\eo-O$Hu#{d|Si`,Xb0]31?;lӳ}.jQYz\i 8%F1d@Šuit"4b 3U'' 1Kuogu eB2F[-hעW6X#-h%I>ek D>^gGwc8 ҭi7ZlWU|)8EEPEPEPEPEPEP@,) Ksirټ44cY'lWW'wk^}FOGsk|@VOGuqq6v6Ew.)$2?}-ޓطen {ffg6 K Dǩ$: ^2BI]z3? "ܤ7Х*RkTEVǘfdčkvת9Oo*^3]B,QM#O$[)l`*}BZP o9gS@X*4$2@%OeK;:<&+dP.rs8?LT^jgTIt m)%r\U5J,M$ ï'ҋԹhPiZt0J\ϝwv%5ž5C8wڳZ! gFWin: 湱kv/c*3F!-=Oֳt =;WmGn#Ds4{}%Qc.qM%ʗIP]#4-o!#<(C5*y:B&Н\M'>e Rqvޜ-l.~Mڜ C[>eK\!V@wO$O_[yFcJ5u]GBV Cim"+~WPAF{P75Ěz5QK$R#s&]v֯jR d2=@lUt+aoqJ,eW9 ScWu-<:ڮO֢5mBk{}7O7rʬÞznC[JfQL>LDNq\8ij޶<(h B>Y-Mo2mDFEvo9Kc o,Dne8;?|LtBպZn$\n^UnLX[f&l:t7h׋k,7Q*ӝĐN#RN<5j HV܂`Iۀ~cp?a܂"RHAzhk%גί4q1 ʙ|,iɼ,F8yk-MwFo 4Xr7PX躂9LB@ǭoQE>@-_^Kxe2($S2yZm&Fg?18?ZѢ^kiv*g`|fiyӠh۷yŏl Q@eˤ\KE!B{pEPITo:Ց tP+u:G[knS\{ 0 `dr i@/$F"Y& r02}1NLin nXڍ9##j\5'f1NvA*N衷, '9e%x"h=m[=7C#.-n)Û'gފd2iʐ6{\ ia]JPa.w%Ip (u=hcaծc#t\Vڣ^rB30"<>yWo-[t2.1@A5nne\hmucK4 J\<1ROà;pڤ€ )SJآ3dHcnQ>)_Fx.%ݜg~?Y<օT:$ZqjrG0zO(W.tfMFKeA$ZTQp ( ( ( ( ( (c'W~\5^; (AEPu꼎 1u&C|ɣL.=꿈vgD)pcX˖prkhV"],X00A^*M2)m.y?J.m~, }ǏrVHd{ {;}(\3K$IZ`G'p+nO'tD({@=i`tՑd]>:;H# X{O2KY`K7䶍ϵf]x}Zp"RF C6uu QuU?d;INǑu3E:IdeFۖ&vqf>>le1Y;.'MvY>8sS:hD ZK+;g0F@ZkV.P6xmUڳzTP]=ۛ<&o/~xx-r (^A>uWFԮ.uWx F<$?M+[6n60[[̑)VȅCgnP `i[i6ZǪK)H%l=ӅEc=Ֆ,JIgY `~_3h1z7J-MO6_"Gw5bJӬkk xd>k>#G4MYaCi!9 מƤk-Ix,C N. vqsZLU Q!1-eFYtw*́>5hɠ^ M̍X{tݪ}kD[Jr(3C6)&M: h߻vf.^w 6(AkS۸yq}iTmK:Ӣ2Mh5)dY%ac` :ޚ@oZ},坜.7N{?JT5f"GVېmܣsG?fM"Ϯfu?NpzڐB/mfn3.KF%]ˎȤ?h$˰n,0It(,ld/F7]،2z}gmmirzW9Y#n&R3 HE OjMΟu<,ә:r00Ҁ:mR{!w$hv BU?9c^˦>pYwX\ |/8⚶q⫝hFp@=TPn."ayr}:S/ʍ>ොd?JබaW/IX˿#i\J˦5ֵ)2ɟ>V7PoucI(&ӆ+}LQK;P2I8m07w2w9\2yO#t<v1G7o,j 7]ܒ`bh@7dE2 1dc> ( ( ( ( ( ( ( ( ( ( ( ( ( (c'W~\5^; (AEP q? JaES((((mlË[XmÝ"&qPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP٪QˏfG`aEU(u!'B_O!IQՌ(`QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE:?.?OUq?jDvQEP( _O!IV'EEeAG+36/qMEǡ/l_?bѨhEEKؿ4jQRf=n?6/qMTTٱ[h͋zF/l_?bѨhEEKؿ4jQRf=n?6/qMTTٱ[h͋zF/l_?bѨhEEKؿ4jQRf=n?6/qMTTٱ[h͋zF/l_?bѨhEEKؿ4jQRf=n?6/qMTTٱ[h͋zF/l_?bѨhEEKؿ4jQRf=n?6/qMTTٱ[h͋zF/l_?bѨhEEKؿ4jQRf=n?6/qMTTٱ[h͋zF/l_?bѨhEEKؿ4jQRf=n?6/qMTTٱ[h͋zF/l_?bѨhEEKؿ4jQRf=n?6/qMUȀPWjՉ죹ٱ[iK`CQhA9s#I)w-թP[Gl[OSG`aESQEALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image035.png000077500000000000000000000150001300536243200266450ustar00rootroot00000000000000PNG  IHDR~@\sRGBIDATx^ pTUā'D$/:C=4S3#cM,LgT*+>K0#8̂K XM% d%{owINNt$s9wOrν} HVU  .@e  T ɿNҚ @BoF" ]1 ,8G# Gː@@@W)7! @e  TЫ@ 2@P*@UMe z (7V8j~&M2@a+~޴P<_Z8j( '@ z{5'{@o5a}gAe@oh:n7۾;:0gɟ^+kա6h f(;,|C/̝,^;W>w>  p z-Z|فֲ2e.6ڃ @.(hGL@ 8 f ī<+h#Ekˋ~|Fn@$cO"(n@H4>vYo_@*@*/;G@1 RBRn*C@@@@W)7! Ep  @4~5ۢQD@bx+>h@ CC/zcxĩ@ x3 @ 1ħj@D\o"u ` X=}ѣ::R[ۜήNuJggWGGevgMm+ߓ!J蕄  >{ʹ4Ͼץd-x(߻owsg! d|tvXY8nK{)٠XP"Ъhsf2Uck+5-[ @ w8#詺&=FS[>le蝖_qgyqST2 }\YɠE}ߧjشWjv}C8?G|YQ\Wm\VZ@{ 0V::DG̜~͕Ӯ"To=6GӒ/:TOY沽fQ\1 ogZy9^[a7g`YrcZߜۘx8ź6zk157x:?j>-{dM'չwmS; ]Qzvn*-c/:;@#[CT1h3oG7]7ɲ/=-M-ԯ|gC^܂=΃yYWNmL}9 R{[춱,;-+ֽd|lUH魾_9ӴY;WlFESn5bҙm7kKK^nbܧecD~BpW}2۲'x lFzӵim9Q@jkqޗ7晓'[LCf}LӉچ}UΜu s9U^n1=\`tWJy'sbbW xq7ꈕU2ivHs.5OΚ^kA\Fx.ѿhdz@k^AԋYh 3Dhcy\p.[o_n2kQ2?x<膱@"0[\o~g;_Vꃊض/wcy黟7ݞ^ûԬi_ߋѓsԕfZEO<v;)~6K,zEj+˭c瘜G>c,/[_[ki;AB#;\q xkvmr4kk8rdjᇓε9n+" νyO^9a^E ^Q{Ͼlm}xtu,/}y8S5c'ucƂ (GFt[dx"v-`+V.{>c-Vfu?lXs\o/A4Gd 1,=59%IKJ"H.Veβ._㻆V,9`d_yzǐo^0O,{Ww6s$*כ *5coPz|Uebں/.YZ6^"NSWn6V HgA'U2kV?!F,hdA8)ޠiU}q@.JWr1!&n\f5<=' o7ƻrwpxɢKYxһny[G Ks;;;{׷`1#R-~bA @XR^4e䴴.jwsx% x߾w7=gN=kc6ZE߃"WNGѠ z\o=YUu.u9|N<7omw{=]8{r.(2+o G Exi \@]1mms%%df:|xMIOO6,EӺ4D'dz^NR@yO{nt--Y.S\b?p|) @\ KuELn㼯8,B/޸>4@ "]F==" G|ƙaf1=bT .rqttO4oVGkK#8?N.)yb<}a;J#K(8%+EQ)!< <$wqd˫׷Go_RygWe˗W~lwGR簢jkN!D.~:)dEoNk"\E8͉@YE`B pz?CTI\o4* gz] |gsЗO3+ 7_pC-xI}*-`x긆Q{pЙwI3*?`p>ab闱{O*cHπ5 oޤpr#[Ĕ Y1Jj4jMyiRaqcAVI~޲M1+c'eA?7u蔅A d;'af<ێ0j/e/?aX 0 O.C{]MeXI5B qzvw9ś, il7죷dDd{x?rbFܧ/]XEȂ?akA4)W39Zf9(S*8ɧ,g=%i$3/on97'eT&Aلa$ao|d_6uWNG;at_>M #˝\p7-^RiweR70G,2᭷Lhժ8Ea@x/?ߟ|rwuܸyySoU 7,. # }1L_goNvOÑvUcftS;.^y+J" }q~wwqą /l­gf^qW_hm_ls:G_{6[̛),.>#}ޗ;=Dx򔦦q&~{RRU3gzxν|ԴɷܒGtnϞ$ߟ=awۻ;tߟݝMyLE^% $wiFGTU}ZTTwhٹuF24mUU ?Q@ AO0{zxmoOݷW]ع3Aۼ.Bo ' 0@O@6qAgmm˩S[֊ѣ56k>e Tw !~ 0'iԨy>;;r{L/Ϧ9M״7FMEG@:'c0Lcğ_w5kR~K)ozzkjjNQ  @BL\rI;233/m}UU;?TӣviZqFqn WF2  ! nP5kVjffʔ)7sO`z督/]Zy>zzdY-DQ  @kե^=~YW__[-K>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?fDIB*9i|EFjvRdE Z{t:/.~GGq?#񎘓4RwH/nb|3za y⺅H|?8q>x5]?Ɵo0`E EˑЎƤԫ".~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#b.~GGq?#bO6Xp1EES0[_?Kiufgkk.FbۉdsOKN^X>G~ŴRǪfJ2lBF[(3;j~Ӑ)wA,rI>_AK%>uyfHD v7mQXawawN4V7GGGFv6hoƏƍlXb\wYGi~?4{Ec}4b\wYڢ?>?4{Ec}4@ɼh=mrZqe[G_ۢ?>?4{Ec}4}4hcfhh=?w?wѠ{ݍ+#~#~@4V7GGGFv6hoƏƍlXawaw٢?>?4{Ec}4}4hcfhh=?w?wѠ{ݍ+#~#~@4V7GGGFv6hoƏƍlXawaw٢?>?4{Ec}4}4hcfhh=?w?wѠ{ݍ+#~#~@4V7GGGFv6hoƏƍlX[ Ȯ8?YOVk5A% =e+ڍ(LK5d#;CD5?Oi٩_4|-$1`0Oc ՠXvs޷h+Ϩ-MAз\=*^9:T}Ve=Nm{IJ$=;+4'I|IC/㨮VM"Ia.%kuXXjr52!WFAj")#ͬm-и$;sm'8>Ի/oCErQBΞJO*mBMDk6ַG6DIp6wcڶVӖ;A3lS VӜ HYSZ1t2-ֱOh$e90pqϵD.eXռhKy2;zg#mjX 'o]1SQIiluiqbl>RtDҡLH̄@$Գ}R:Uy,=j QKh , x$Pb\B$fM=];ARᎣQJ 6?fDXӉ P[a9#$3]:jtoxxהH6'֧{yhe] B3²['V@/ZfsE ZΗ:Hj6,I@h`g&5vޭM9Ҁ-QU .#7oRӮHNl8< bZ6Ҁ,Uo$].}2]WN澷eh@gn`Q^8ĮwF>֛. Zu =:('H>4r;+]gLh-X ) T֚F[;#ih0Ң /aFnP*Yy;؏%o`1NjK[K sm-} XE+tvڭ#TiYKs7F.䏥[Ǭiz|~=qޚu(Z [ r< ۻ}hȥxh]deu9 =ED{0J# gs= U1if=0OjX;-9Lk@hAu!#]J*1 ˃V( nΞ̫ͬ/n9cۚԢ0kgK`S EVsЂ1Vei>R.I~}j\ C].U\H_co?*iЮ4˫KƱ-,j<: ۷|6O@8 6b`uXssbsǭEyu4h!o'$R}nesd6ydH I9{hLwEP9$U(\nOn]gգEsōPΨfl8`Gn楿m{hgiqqoCw&M-aCoos8g^[[hR6& F{wjQEiu[y1/{2p10*z((((((((((!+$kJc u9nHG$S,y M6&tǞ_wi,Gb+Cz֭gY6 9L7 wpG.T쮝͚(ө!Su)n(C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Iu1WR"#Sp<̍>QJ?Z]͎2ApU.!8p>ڔtUnKЫyxOԴVXnYo^Ċ>iv˪\IV0sZ/:b̽9<j,Hm"XaUj#6%k5jQNTdOEVǜfnOi:QE!Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ BVI֕f!+$kJ=B(aEPkFFMөKpAERQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE%o-iVlrO(QEfnOi:QE!Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ BVI֕f!+$kJ=B(aEPkFFQM,qWD%SƗ0xIAQQ(L/R QQ(L/Qf$L/Q?_آ.IEG?_أ0xE\0xG`b0%`b=arJ*?=i{},Ti{}>Y(}( QQ(L/Qf$L/Q?_آ.IEG?_أ0xE\0xG`b0%`b=arJ*?=i{},Ti{}>Y(}( QQ(L/Qf$L/Q?_آ.IEG?_أ0xE\0xG`b0%`b=arJ*?=i{},Ti{}>Y(}( QQ(L/Qf$L/Q?_آ.IEG?_أ0xE\0xG`b0%`b=arJ*?=i{},Ti{}{?tHpr{ ,J?ZҬ--j(Ń˖#zVWAQ@Š(4QƬ}JIxȢ>}(}(QE>}(}(QE>}(}(QE>}(}(QEU49HOP)Q@Q@Q@ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image037.png000077500000000000000000000213571300536243200266630ustar00rootroot00000000000000PNG  IHDR^sRGB"IDATx^ tTչL^7^5PDW[k*o,dq-+f Ur)FQzĖ Hy&  ȋ<>gf233g2g0^>όr1   z%iD{?:@@OguF٤傊$'" l5@HF4#iDH#&m8h  Wvxs+f{WrC/覍72[sm8ƫA2  Nצ9# ƥg0Vr5$~IrP}j 4tه uc&]N!ioV7]J6}b  lMR٘,N`@gv}ZxlsVo|ޏtV}/W}4KNNQ]~c41R}JJҘK\v_ȑ=;ϖ9'%o{ }\trɃvܳ`Ҧoflщp# 0^I=ؒrٮ˂L{ #bp{Oҁ8V/mcT$2&: z8@@@@;GO/7tT3vqj[jH +|]~$=v$c#o~[blxҽ>y䛥̺I;җ>N)%8@@@ *=Vf1l(V6sA;oL6Ø!p&FDbs{H)v14zzqp蜷ǮOV4U#FcyIIC5׳&FA@@@$adffò};_GVr={/aCsb5{ 5FkK^!8@@@@Y,3e0ӝӌ7~Qtg ohܾc {{sx,2eRD*  D +eTv󖝛Xp7RlC#srgzYFƮo1QsE9#?@+,MҢ#SYz*ߡ:s:IC<ŵۏw2*6   dNu^2>b`j zMd}tkŝ~rt1O={y.@2R?"_'鰳N#;xs1Z&  sEi 8`vcQ^#1* WVu9mVnAs8]N͚^3xwx?R]}-5@_kz@@b!XƵ   AF  E'm8i@&әbzq΋(@xvDVOoV,,XkD?F44 @hXkD$5]inbw}l+}I)7Ntٙr iC q@@T# )_:4e8z"wWi<(ՕJCG2wtOT#xDq#K.ZUBjIɫ[9xMCXxB-6ecTbF~&<km_!R@(rH+tKK3|9fӺf,BƜ،Jn6ڼj.?ïb3&@ŦvXFzɴf4N-ZU x.7Oi-M[jX,-]WqTF-Y4Q+?!7>(>o5ekv)U5%qսX/IxCœWy+KcIcP R~0:dK.|9ZfSZE tfjf7f=6ox9#*),n~Bry_|UѰfJ6;C :itV{GGuTbj~a'}'5np9Z7xF~űII|PRΡ\m :omw+r߸y4玵^5č-n:]m 19A >܍ӋXa)tmRF=ކ10Ik_k[)9 dG:)}ՐqWMA"La-o*ْ%}r4Ljy/{=)ذA5 hS;Q<$`Aw[m6= oڛ tutvuwңA24wa֪w'5oeQŴAǡ3uF~ex%:VwEO41R:oXXf^-{.Ʀ bIzi^?Ry:w^-SH̝~'D( ixvEXw ͗tfㄪP|NB!>+!RjFu9ՠJ 44{g6v>{g\y9~|޻B_%Nkc,xТՔϕV7]6 <(dV sFeX҈ CětA#n(w"'?廫7e3kR.gTZDke < 4E/G0qsLR#H2 Ns`fz쬌T}]c@Z aw8,4=.QZqAXټ\,tk!Bwy \lʒweK# lUCoQ-/n~= [=[l7A੯wBeT'jJNplMaZT. 7֚!mmɷy[BݝX3ZYrk =GlKd$Il+)g$ +5,[)m]M*O L@k ̊  hBV'tyP#ʇS6qv+_ktÇ/\l0Ph:qɓMN/knnK>Qf @@@$ƒޛT0Å4=^Qwm쫆Ʈr|yr8  Z'`himno7vvA&d4~8rFH֛ HlhDҼa ~$A4ݡ iL&: #fڲk$@q _~9?se:o i 1A@T J?).N1oZ•s8tAEs2ټ뗿4,+/YzLh  ŋ]rKZN ===icǎ(,4gd"q/֯YHLP  _ⷥ mYY.kҤ.SK nqu׍ϧm8S:WS{_lIǨQ (be !@?"@_p=}zjVV߽~ߒú+=p;|ĉizqa2~ ؏썢!RS'{s]|9~p曷t:ҍiC q@@&Lkj>~5Ų7\HCuG{z6-_=~q+W0AN5Tr(!jB(UYqk׮ɳg79wnkHP=sΞ]~ǎ{3 Ҩ1a~ʘ~g0#chNNјn6z}fvvzvvjfOM!O? ~Xk0Hߙ%klf +dj13XPƍ2Q45ja  Kȅ~OPeɪ*sC=𘑛;yEEr4&okCA@@HUey"54jބ Dj  'iԼ Qe @@@4OҨy  4*hQ&D@@%iT'R<HM (KҨ,O  yF͛PQYH @@@ 7!*  ,H< @5oBT@@@YFey"54jބ Dj  'iԼ Qe @@@4OҨy  4*hQ&D@@%iT'R<HM (KҨ,O  yF͛PQYH @@@ 7!*  ,H< @5oBT@@@YFey"54jބ Dj  'iԼ Qe @@@4OҨy  4*hQ&D@@%iT'R<HM (KҨ,O  yF͛PQYH @@@ 7!*  ,H< @5oBT@@@YFey"54jބ Dj  'iԼ Qe @@@4OҨy  4*hQ&D@@%iT'R<+~^B@@%aF[.gXI#4]i0d5Q]"?q/,'QIdGSZVd's"tOU8)mʘ&/l8)!MB ϒ 'Y}K.8(*Ly`mR$~RYVȪҨFQjҨar[[Ͻ}; dejD[Kc6IIƬvzWklvut)|n?I0=KѰK|'dUBJ9e!dU'宯0V[m8^ U JcIINš;\$tf 7m: #M!;j&b0>J/uķ!ě7u ;T!`ȽMVTf엗mxW_5VYkP6Xuv;#/.:ݺH=|WU& H$9tN^{JPԖhVj',HkhC8MՀԁfe٫:}J<~VvPF5PIh -1A/g?[EV%_w 'Rb#[(uxRb~gFU#PiVeQV Hg/I'f7r)*Uo~[FP|6"q!(N,dAUi6@=t)IDW5 f+=I!f:FR QtNS溵{]̵ϾyU,oJ-&*T> *U!c^G}$ $bHGO-_T\6avQzJN45:tVڛ*,hJ׭MMuL TC0m%/=G\xajSO#MgV߅Eeeejp,oá?6 NOÐ_sV_{vJqZݚ/cqR*zU!Q0Jf9(0 [̖:G_.@AIW2V<"j)"'@iZeAҘCaׯE^#"y|3?j.-1趹:]Զ+u%FY&eU a>ʪYTYq@ZLfg1tзoKMR-ydU*U! nT:YJ'XmeQn}YJKqX[3Myc<#M>v۴}<ⅮѪF*ƈ@@O@2N|U#Cj=^QH   @@@@T7IENDB`ALTER-1.3.4/alter-web/src/main/webapp/help/ALTER-UserGuide_archivos/image038.jpg000077500000000000000000000231001300536243200266440ustar00rootroot00000000000000JFIF``C    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?i9O)>Ծ]'~MZ$w)n.$sZHأթrj>թrj-FKQKQo04ϵj_ܵڏj_ܵڋy7Ef}R}R[9:+3Z-6Z-6aiYjԿkjԿko#NV_ͨV_ͨsytVgڵ/ZmGڵ/ZmEÛӢ>թrj>թrj-FKQKQo04ϵj_ܵڏj_ܵڋy7Ef}R}R[9:+3Z-6Z-6aiYjԿkjԿko#NV_ͨV_ͨsytVgڵ/ZmGڵ/ZmEÛӢ>թrj>թrj-FKQKQo04ϵj_ܵڏj_ܵڋy7Ef}R}R[9:+3Z-6Z-6aiYjԿkjԿko#Noq{,BU'=jۯ?IwTY$d.&>dqfY<ٞAs:phm߳4m߳5v"6 VGhGfGV%Bފ͚r[[6UDdPNWK.IO)󹂱$8Ԭkyͅcor *A: 4v$rwr& ajeq2֮mmt^2b28'*æyx# VrasOk]-m-#P˜{i msr Eo'e77N FNcq~bNрIOztyeiwr6xCNqkWr4hE%3)8{ Oֺ1]-rΡFIߌj K47&)N(:%[\܅W.$2 rz3;ZPWn`LP8ʤ1bmuZW%e2 8ϵO&dVs v ԑT穧&gY̅LcF7q*Q=MOY>NcARYx[2is7X98ǷZm$Β'Vk*.v%Zz{JΤud~AEN\%dF@#k8{fծ.6qmy*Nz`z >L5ǸFs9$O5_,sgn\CH59xy&xS0&%_xU˗;vk[qq0yqU,."QROLܭ@h^HF:]]rW7}aޤWKd,M܈^7XjIP~{~jFm䑦$KXIsh5/r|9|0cz_@vγr/mD6̖Ot!7$y)$m{ۥ&!Mmֿ!hdb2APqVЬ'[1$*? ;sSѭ-̾TjRM8OlciadTx%vclnxۜקС_RKlϢ qc-ߑ1ŲkI&{jIԉ&= 8Oj:B}gl|%B$vn=\q$c}\>A 2܇-qsJ%ދAmL–\"]~߱FdbhLOAYQjoco,VbBpKnk?KIen+D 'qy5ۅdh(K+LC$0ێHnp5IA"`qSh6)VL"Ec=ӆh5.6cnp*`%5[)1QPfAOMPY YUS!I47O{n"[ 1` ?^ܓSA 3 fh#*A oH%hdd@8al@ґ5yKnkf›7gn޴` 'mx{`wdMoil~~ӜNvxlZiww6$F p:@h6dy6?kIg{+A-9EV$uSY5Z=Y lvqGTwյrij<*In흜60y0,ZYFb{bI۵qy=~TEcO.29?)=ļrډLw*D˷cw>ޜ&K>H 1I2بۚMzj f#RCYA$+yT;*LP;~Oyﴉazq`~#犎Fo&\3Wo{HP N8?Ы_ 1vj+袊ģ>oQ7Z(ETQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-rn &鮮lcfYA })ֿ3Omt33Jr(s==۰vE&{LIv=ӭc1o.1x4hsuauo*s+bfE7VSE.k*Pq($ϛ?q?M֊%QE%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@C-+jPK VFvV_o?!ll|GU kp9&?bOJU/:p3WocN֣y#J"G| X /_) }?\v:t)N5׼naEVg֊&OEQ((((((((((((((((((((((((((((((((C$i*VZ!_dYeCIE"op(7Z(?q?KqG`*J ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?jPCVAERQE7Z(?q?KqG`*J ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?jPCVAERQE7Z)sy72 _&kpaO'.A\JQsoU)9@¢DO꒠QKi?>/ywhU/K=DOꏫ˸{D]}o'G&T}]hU/M=DOꏫv紟h{I}Qw=.T7i?>E*&Tyy?>E*7ϛ{}Qw=.T缟h{I}Qw=.T/i?>.v紟h{I}QywhU/M=DOꏫv紟h{I}Qw=.TE)>)'#zQw^^|O>o'GqD]yy?>7{D]}_'G%T}^]"Ki?>/h_h{I}Q紟W}"Ki?>7{D]}o'G7{D]yy?<缟W}"Kϛ{}Q紟W}"Ki?>/h_h{I}Q紟WpERDOꏴM=h_h{I}Q紟W}"H+W`A'=J)'ⳝ7+QV6Q(E:1 y5saw/6$IE\4 )vOOӦiP9!T׭\lRw(ڂ/ jVIsG4ؐQEQEcjFMd=~aiak{=ͽqo1ٻZ 9* Vف#h]Cz=2/?].TlOB`g5E?pG("?OFT{3"?y v'Wbu*=y <ؿtQ?=y <ؿtQ?=y <ؿtQ?=y <ؿtQ?=y <tQ?=y <tQ?=y <ػ}bu*6'W92/?G}bu*6'Wٜי}̋~WK?Qٜכ}͋~WK?Qk͋~Q?pG+؟_ʍAe&yLp҉"KO= v'Wbu*>96??G}bu*6'W96??G}bu*6'W92/?G}bu*6'Wٜי}̋~WK?Qٜכ}͋~WK?Qk͋~Q?pG+؟_ʍAk͋~Q?pG+؟_ʍAk͏~Q?pG+؟_ʍAk͏~QE?pG+؟_ʍAk̋~QE?pG+؟_ʍCg5E?pG("?OFT{ g5?pG(b?OFT{!{3b?y v'Wbu*={3I"/Bx<rxVVƍsU?8*Tyi9ϟr_أ*o-?Zq*B2Kg=Q I{{VZ&5^G, )v'_E'bt~U*XPl&#,n"U8ϭKy{򈭦3w=y>iVmZM+HQ.Uwn[HW-iX(C (?ALTER-1.3.4/alter-web/src/main/webapp/img/000077500000000000000000000000001300536243200200135ustar00rootroot00000000000000ALTER-1.3.4/alter-web/src/main/webapp/img/.directory000066400000000000000000000001621300536243200220170ustar00rootroot00000000000000[Dolphin] AdditionalInfo=3 ShowPreview=false Timestamp=2010,2,2,17,26,50 ViewMode=1 [Settings] ShowDotFiles=true ALTER-1.3.4/alter-web/src/main/webapp/img/citing.png000066400000000000000000000013131300536243200217740ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<]IDATxڍ_HSQƿ{.3B LZȴ ˠB!|XYS/,Eȥ , z^jD!JP-{H݈9knt@;;%Tk+s '$<<@614+DIHx#v1I@8lu#F$wQLJ^`ac 'eL&P%LDaL6.PXPD)A4"U_6[_?o-]VO<8$v G{]R%0 @ZD$*b +DGJҡ.F|Z X@7i6ݫ,&~ q@c?5Ǭ%Xp>CsH028{|^@K=, N?$ CƊ:?(x WgIENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/export.png000077500000000000000000000014651300536243200220530ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs  ~tIME7S{"IDATxՔ=Eٝ5w>2?1"uEbH@ A!sB2ddɾw3U3;k;vK O[6?Q]OT3zBvĤd)f,jnq9wb7>_ẞʵKPq>~ &p]>}޺_ᔔ. հryzm/#&a{U _•O1)8w*,1z·x_dҳu/,,?,͔b4:Jq;x͌t!bfۈ{+;e2}Ƚ1bH4˖:p|xrק/rn3f9Y!>* ߾ex P b`daefQVz7o103AG  loIH>4[>* 8' %-A6AF0\:13$  [C1<<RA j+1% 3& kETZK^2h'# dx7'wU1w_0|, ?CDH Xx^~p 69!Fdggi, !0o#;< ,\lA1 ,cH _f`/wl2y/PO` L@@18˯ L 10^jZp#ÝG_3o`Pٯׯӗw}zpAZ 䀊~mao),LL!' :_ĸ2`à`J@~8߸y߯UA EF$ Z G?}3%~n5> !3FNFnƷd~oF5@12A2$?gf3(}׫7~x3caK̢ZtIENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/irkick.png000077500000000000000000000020571300536243200220040ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbf2OÙXXX޲@5瘘V  F$LX@@m¬@r@yk?5-9 f...$%%׊ Č@yU/@W{ P=FF#d H_DO@@Ohq!@, t? @>mۋe@0~a @D 6 8 tENnnfn_۸Yyw:̜y +_| &nnw@ok{6.}qx Uۯ_2; 4%;<6vv;7^]& GPh}FUDžؘyxXyT afP=;0>c~ @@` b`bff_#}R/q?0Ԃ0(-(5g~F7qv|tÛ@Ȗqvc@-d @LT&Ç7{1dX 00bg > ZŀܧOT@) ? . @(T-BU2R`}?|9ýիxXXDtXY؁NnOwݻwLL .~~QM%%%`@q00>9s7_zug"H/@0@I o:/&.!!M``PbMXIA~102F%P''# ߿¯_3gf wdzIENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/konsole.png000066400000000000000000000017001300536243200221710ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<RIDATxb >?101110221f`` #77'k7wo߾h X`H3.NNsS}^yYTbӌϞa`ecf; mA e/ï_?TXXp88@@DVl[B,$YkZE)HA f1'Dk R:xbaeae#gOjkkrsΞ=Pjd9bbaee=/;w2:۷ ?A ` YXAPP bef a`i <&fp 2@14}ܹ oN^f Ûv͐0qD... `C@119l@ׯ^2$3~h++Y0  `(2Սl/tgf{?͠f30 3 ;+Ï=z @6͚ @?@v@,@?00vI `1m4Y&`Hg` L ` $bafafdUSex7Pf?2|Ѐ_@0B8/@s3571a`,##RPr&=`3oPJe w0p;X([B,c!/0Lx/_`+@1Hڨ T@&@5A,Pc8; *zݨIENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/logo_small.png000077500000000000000000001235631300536243200226660ustar00rootroot00000000000000PNG  IHDR\|& cHRMz%u0`:o_FbKGDԂ pHYs   vpAg\_= IDATxw\Wy>3۫ծ]]{ۘb Ɛ@B %PBIH |!Ih۔lEdҮm̭*O3ڕt{y.E(\rQ.E(\rQ.E(\B.p+V`ppi^h}.ʛ$85e~{ z]s  ps@ח?|@&dR*h"8yg"QwJt mLhmmMn``o?O@/E(oL׽A-Wc~<mTz?o("+X5ܺuӭs ('8ӢiiT+i&҅>XjSU?o!0EhL5M/oR3M ʀm(M'!0flAU *9>hIq,KA˲z(.ʛ RUUq,Xpoʗ_/'Wd08@ ЫmB).и |Bk#4Pl$3fFI"BUWtҥfY,[Df4w_\{Bo'̍u|Pu6-14'mrn%I"HDrJ!IY4ϪiVM벪jȪ.,Έ0&JЗ:˅?}"~AT>.ax(F(P4< @5=sATא9G\?RxgTw\3(X,:{7!,P@j]՞L~oOf}Zt) 9r[K:HdA(Pa1S@m>9D)=gF7{f3N'֩6U]Pas!W$]oe ~&|lnw @EWR1MP(حV+$I?"p,?^ʙu WRRe( JO%]שd!@w/[IUd[K''K%(%Str繴gђ%(pXdA,Wۦie92k۞zBKp!5C{ť|_(NEi(E^] BP8h, a1 B`0 5@cZ823L닼T/=hf_.0 z^E9w<A@:GGG?qm۶}W%iؖß~G *'rzN߹G/•w.]1a ۥ(ԹwO(o؅ֹ&{l/ {R jWBTk$K(r`PIh *_P/uvO0`-CE!Aٙ~`Oo%]G;[oLM K(,2NE9o:-Z9Ar/D>xv*2=@(_0;83c #Rj9衡!dXVjd})4kHJ@aYB0 XrIYު2̬qIN9߮hZ'Dz;{^ȇR7i;)٬eYl.ʹ[<2/wuGYłM [Mo?V{ YaY8nBe9T-XBMMZ,IYޝ Q/}3n#x`&4ۘ ̓c;dD`͢dŪLL{2Hd[1(,fmќ lq(9GF`QU \ r8LqI¦nx'9#)IHK֧{.Ρso<<%3.'[4M,[F]i"!I8>,2ߣ-? s4GeڂźaA@<@cC8Gj" arrҳy~8ŵzF4lڗ\I|ӱ+gCDq;cO޺xI:c_AXIZ|;n *N:֔δ嵾rq8kؘq;v#<͋m P&AL1^\sbDlݺ[ d- iX&"GDW(\ߞH诤| Ķ"? 3_KuuA˫yP 4g~lWt,毾ܝy`rxVFOx0i".ˋ:.a`1wU5T@bѲnt9$FDژNvvS*AaYcng.;zt68K%FWw$lNIV0pl ǹ$NsSBe_g2D0vI[܌rvȻ=rꛞfJ@ctn_I @>Ç>ۗ92_xhf|k%20nrv等*5`Gs7NTY:;r`nKA%^^|ԇb[c͛p$IKU7E.`X;Z~9y|o)AZņlS}s9EBvgm$7"-Hrܒ>wܫ!PB=]قXLf)1{dےIsgk+=ƒ> )Ix֧D:|v^>m~,Gm$Ow8=BeO(r9 ma;y+R)R*wx<Cy>ΦRT*`0xBCC&''׭[m۶}?]r>atr7gbF ~ d{Ԗ~[-8=ɹႼZaų)|Ͻ ? `&QQXB% \e)b(c%fb_v{+)B^3δ]-C,`cډ`/mRIWLfYG?xy垞O9ƌ㇇8rNt|t0ߺww41 vE9wӦW,ZgB("#NNsIR$RDYtiQκ-+vU +;F[]4^?1cX/xϼxת(pF= ICt ,^{pnC/ѴA5ka:^Ab|R~?DQGzq9rk֬({_+o]t'wze>_,ه*ykiF/ႼZXQ/u>}W 4*~ݞb2W;kW;D3 ~vߞo)d*9e`pnspfn/I?:oxbǑYƝ XQf6[NPἕDu/+P%"8V>FϕhR|wxxXz#K)|ڨh[* .˅ Tbph]*]וH~rSQ,}lpf׫z<ߊY, l;4nd@sipo#Gy穟(xTX˂C)Jxi:y7  n}6X,:n qhii}ߵkק׮]r-\tο™poPT^l_ j|KkPMEy:…O284?%<sL_F/ ڳ{e$u.‘k\3lXtG>RꔋS#K\Yk_Y3Q_3•;5P44lJ;X/*cqGB%{niB~88RW27ΝadyےJu_8nuLl&&޶y~Xl !HȲ™J}zR\`BR\8pj}.C)8Ӕ$]hL=sg]ݏ˿xE|662וHt۽#-IP8zxFs vefPAwykiC_E)IykR 䝿:{\g `0p8h4wH$uq 82xw}fU[M*%ܾRUGKީu:pڤ y1b}څǽ?ܟ֠8}5%ÎrugֆO*XM.oEp®U|':51^6~z$N[¨-[znG蒋Lo D W8x? ]dzu/fQv{=84md/oa,vuP@㰫= ԓ\\Յd~U}ph\C7z^II?>bTḘ;WtE 7Lf}w5k>mƥK_R/*<~-2&%]1gq7[ݳϚQP h&sW6c ϷJoQj oقeLu(lRv<}]¥6ab= == u0L$xQE*`Pj~"ǭU8nioux'}OS&TVkl6>lF]˅ ўJuaޕ5A!hv¹r82W9qPjq] g:11!枮a8u³I@UaD74=c(. @<0BSnr!q0p YuשK%pjEfɼ1^Ù |va { %xw}^x~Jxz+$ę"@Rp/fW"kI dp(c(H\|MJ޷}R{*yɤ;7o|K!]:%ڷ `s.拽 WpAiSGs[l!rMw_N֋ dX>X|o5luVl mݦ{5=7A@Ze#E㚅Kio(-: )Z,zj&dywZ,'&VK%8V݁} L~כMUQz]K*cu9G])Iq_P>8ز0>[&L4ll@zʞ9 l .WT#V+2t.IXZ\,dYӼhBLJarm*SH f{܄r!qp SU) xt"#ߜ݅\R9r!#80 `X$tB ;qSnjhSU`UG-NݎVڵ^Z611v]eҾƯZL;QT=R@W %i<5q &vuP`aU"[M;44-؂5s'naM+Jx.z"k}3{#-+k;"(֥\rJ9вxWǠ={âbC9۶)4¿;` ]yahjGR\*Dbf'Yu}J̋)ey{9xeFѐr@^7,IMQf!8JC,IlhhvUg׷& $]²wD7jADg@pۋEGyfS@Qnuwe rUyEQ\333L}}k @C&D}sZs$,m4mk싽 w2j|<;^ֵŷ144Ab̫;2քnuF"ɺN&N"k׮(T*BuҖx$"Q4 :z5!%p(>87MYx*{"0uL&eK&ip*`K dRbs\!vJOY@]8BSwIQp̜LEJ!KCC8s^j:/;Bsbp'yI$P=(m6/_j= ,)B$pBVnׇIuРis^קapBttt`bbi||p8|phh_o|[=Зo ۲oΪ3 Y)Mfa8"VĩO7'ZٴSzg r- Ǧ03n(0=UCQ52cCuwp~+*ٴsqE|,DžFKK.%kWJCT x'qOXk{%|||^:#0 t:~89I\ @+/`i4a(L)uypWԤ _Wxh';Y!J)WFiKV7dw]]E{gy ð:@4L܉H Ihw7v0>gW{=txQa L]:[Z*3hò,)J05"P@RJNЯ199vuu^0_2^88 `zvl P q{<( /ˡim6\:Ν3oE'&,, KK˜!eEB@Kv傣townGnN5* XfSN'c98q 4D !hnnfc3y{?::h[|  *Yb=ϿHݏ~.l :*4vxZDǚ;sD|x`M@&2cyo@1ߝ^LVD#̹Y.A[ŕ_Lۍ]\"5 G(6].DAg3g;2D(tεؚ?t7m[+.uz|}/uV,m۞p]]CCW\ʎx cn7V!Øce2R,0M<q 64'&zJWǃ g!%Uu'W,򂀣NQ,T ڵk+ <; {7\V~?BXi6;ݻ@e \UJQ$48=z{ ;vW)q\s(GS5̌iVI!ByibV aDe]̞U!y,(0 J6 N'htPET t:!=$ 8EŮ(`2pg 7K Jn73>x%fvr9e8YՊF([ 82hpuFh"9kGr }X5%ZdIbdڟ_"6ߜOme<~^Xh) ENc0%_/^jR; ϓj' K{?@a$bgd:Qw߰ abL ?ݗnrr:Նkg}y;NfYջ̿ :WweA /[{i<[nb<6m`h{!JwlUs4^r5׼/>3$w/l,!x1V ѕ+P(`]ʲǎv[:;;Q__7yG ʨp\g\|(8r۶S*aS[t:7 "&yЋ-B2$ַ\wuaY^]kX41g&'ȱ,nhM)(k  % BA.\'AOv&!0L#`pV ,gY>Y٬F7$I9HrU! (Uz\3)+(ϣ#;Kgf0V_j SFY3ްMU)QB"A9|VfXit,l|Bj= @[ \: el"B((?cT AB lz<"J A_gTaatt!N/8xaoGݿڏ?,Ȩ 4ѻfE)Geny~K >ZN̨wH3p dt]˲d'|%CV!$ݗjѠ^1(AnlRߘh=T{ĝ7ov{fMnR:EU(t&'Iqd؝YxUUcG !{x_sZ(Nj_{?QV:S؞ _µ!PbXݻ`~n<)ERDuh}Z=% `P,|>ߟ{dYFyt'eG K/6GlR %\?e˂t*жotGTbE$ }r B u: ɩ){&N,t%~k=_!144]]mmmΛ7jtm&!lݻ^i\$A;!H)*=11&UUh8BH hC {{`#dY8vR)ܸƓObpb ' ^6>66=~xNQE4sjj7oI`DgrQ(YLLijò @vAJabv 0|R s NPxRWJ&Al,t-χ yXDP    ŪlnYh4>R*.+jٌLՁ!0Mds9q᚛_%hx>-!q&R?S(Ō&Bԃ㘲}LJaL$;mY#P3㛖on|P/%5]y<]t&ތ>>5dtc;P 5oC𪤮_r%C!PL@cۍt&92g~zc؞9k3u`o;_صc;u]Ms}}}$---ӳ0M"jD)< Vtw a;1MiB4P8,\{9d2/ }}}Pz?4o޼O744|>SZd+!MeY8rBLaJ)ffg1S;r hw7:/b>|jj/sk~R4? ͢En766*JOG8r200* *Ο?^˵`߾}f)R{{+z aq"?67ߏ޽hI&T@BEOSb444p^zɲsl&'&&0NjI #0'Z&U9S ѣ0FF Z-k8=}F`H<0}>% Զ@6 TO}>8'FUcNtZ.MQ!6>~Fovm3jߏ`0erK`޼y˿v'|zO 2uA -DZ8bcYE4x0)qmrϻiPx] IRH$"w~GNxiVGT$S8w߲xWn}}f;!l6 JbC)-yUD8܊, ~,lj!cu yE].]m6h hk8 !x1l e z{{q>(H$l6Km6}&8À "v#>9r;Y.bY~(8;04 MW/N y[gh$`YF8B(,g^P#'? đy`67C8. NYbD/]^nb)Dymhtފ+4Wz=ۼo~ŗaAQr`@9@ Jgf@` ߉2)pn=_ 0dw ^vƨ?|TCQTQӟL6͏?[pl~,J⦦KVOϹ"4ͫ!^EP(,233DwU&m-z20 L%DiܳghJ),Jӫo +_ RCQ(){O^ -ݮwe2'#osT cժUNu?y`omŢ;lw!xT9b,2Qt: ]](knf b^.Vu[>CDWL2iblhhw5kְ6m(Ցaя9淿=Xa9#, ϓl Hc#W_mtvuX(p8z(p=r ۶m;꺎RB~ pv8P(pǏ;g)ryסR?bh ,%I !atz>|7|3Z[[Aw?HxuWT[__ߕ`駟˲|p:n/ۆ 8Ʋb"f X0aES6 6@yhF1::oRJ#ųzyt"5$13>2oXBE,D1[6d>盳pvÌFdiS1q Q!({4\btN%͆ 3q\*!PAnGl2PO yޡj<ܦMmڳEt:o{{oZŋ0 <UK,>\6ma(r92E܌F )E4440<]׉+F!I֬YF#GBp%TR(csʇ,+.X??YtwYlݺ7t, x<9oօÈóp!Z҂FCG󆇉#R088׋I\qo~X,pB0 Sfgڻ3xqIQY:q E) e*ݻ:KV.8j:ayᛘ8EH2ŋ!gY={ gүH)==p`9pÇa(*F;;Q2/] )qعs'JRt`` Yiuw/b4x)0EA6?W6555aΝX,kNk.yL&_wu,˘'y,@ aӄ(a۱{n,Zr sر=OO %n0V\obƍXf ϟY166neoݭȤӈb0Mm =DY@)TMnGww7<}Y:tWƽ럜]vkppz҄yg(wܱt``vP$,FFF@ iƐy tLR @SS|Iy\r%\D߿ 㬝`H([xDQK B ²}ڊDD,us_U@g. E<011q /lX922Rg4MQƊ吝--{#ccfT>6?%]T@A! iӋ/},ˮ_lM6u̾aݏ= a_Z_Pu4,/ꥍi^=Gm3@y󦺺:UQUhR^O}˯}3 o$rVZ(yfǁ,?'~/x1A3,v>kMu @aBT'zc9zV5C) \ 8( Q! t8@Ua9FM/9| kGDQ|C Dss tCaZ,LtXئ&3W]y>T0L¢&A6ſw=SS?響Qlkk;vT/x= ,\sˡ*v؁F8* ҂`0X nYPWWӉY444`ppux׋kqllH6A*}>ߟ\q ߏK.eY<~eY477bp`vvUR4144rab[l122֮]{ !ݻ@94w ,UW]%k"8A?:`0ze1==l$8~ՕÐ$ K.5 4 áCpB!\ۯLRGJR0Դsx<D"a͚5,"p!Hfݎp8 ]kt:f`_]]DrU6;20M ۷֭۰lreKX|9Z[[qXAٱ#KrT==5 /l@[{z-SO=㹅,{aHem+W~zɒesn_zg^Yxbnah4ڞf:ӤԄ$Hr!4Ns[e}q]la֮]k <,7onk> uږ-o~o+/ݿrJ(D"e]Veq|>G  @6E}}}--"A0BpqE طozzzh"̛7mx4;QG[[[o8r<OVAup\ B,$p(0 ~all p:XzuTU$IP(|>T*U;tr(g_UǮ.kעw",]ѣPUE"^g=gY=v#L >lذBr`2sܻmO. O$eLw 읜\ 1 c1)RR7b [nå]m[K4`ŪUXz5`ҩR!زy3Y?< † 57)Pzag9qOJ驡gġQ- "\wXx1N'a+G 2}RuLNNbSOc֭CĺuπRJ!. ì&(cMM͛4M{q:Jhxln4!dYkke(J8rH-|zq4M˲5PB.˗Y, EQ`FSncc#6n܈P(144عscS`jjg_ed2LNNbhh4X}J0== UUQ(zk@>b4LDCCFGGӃftuu- ×SJei-ܾxbZ ݎBpraiH$)LBQRTcIX0 LOOvchha`0 ~?> ӉZhT= -:J6aqh<,;JQyv>˗CeXP$xBвr%:;e qޞcNUBjؓeNBի  3esxux橧p:UP( l'L 膁7N30GKMӼOq<?Ł+J5Msi `tI%q1K\UpEّ%5 0VӮ6)p8b~aGp\.D)uR⤰I c=![4Ml߶ _z ?PЀFSihzykS˅B.G19=Sv8*i@B1s7qoij8߉7"f]EQˋ&pڢ}a(B*H=ǃC@ë({+H0lzhnnFT:S }>DQ\Jt<ы혞F0DCCNt:dx.].ך0 qI^ȩ,s5}PLϦf+{-$xG{{;oR}-rsssC$r9DQtvv*C-nqfp8g5$ Y199R$ YB {OIw~ռw"@, 0jO]f'yϕFP52 x<Պ`0Hx_FLR4L&aAxUWխ jtT*T*BZnZL~UUk:fñc`!2^oDi ,KCTB$n\FNUG![[ZJj$VǯT*ffavv~@v8Yu+rs0$#){$lƱgu:u"t]톢(Hscu>nx<jVY@D)=XAIDZ'l8ݮ|*7Me@$… ي6zh (U.LDWI`,ˢ<#ApC{{; ˁyX,b1,[%uK䘞VG鄢(H$5ag'H$jW󡩩JUU{n(F jRR)<%Xd)-V5$я)2::+)%ev/0}5@j?@)E!_fR*Bdr ,_uuu(G`֭X~==lBt<.8|җ 갚L&w3&@~[UEyiaI`0 ;~ ] ۱bJ\rx'q!bVBeIjPZߤ&4U5si[o~UP(T]x- z ,UU= I2 ǏѣU2!T*arr6lᨅUUq(<χ(.Jie٦j3ˡ9SOUU!J8qOK*B;wBUUTd.  ôrr`A`&|M*Po۶ ,n" wJmd=h@\aTBЬS*%pRfd8C?m#!vBjn].Cs٬"5MɁl0p#fcs:Of lC[ .v<8 1No2h-Te;K]MTh]'pǝwT*V0 a%@$ãر}^xaNcqBXyU+/}ޅ6,{a\ȗXqid"n~x}^%0,YkC .RȲ eqAؾ6lC{`LiTUobCCQhsjl.YqӍ7bނ@@xrjDU˅hii -[P(Q_NO-`8"R: }}}E4-s+zR4MdYxn _Ѝ&ԇBXr%:r,Ԅ-7(&]T ](+IeY+zR)hA*<BTUE>5joa5z/7E(,06`FfYVNtgPeg6EP$I'qr\Un͚5(50 E8X,V;(I@Ń>-_n(6۷O9{N[)EdoΆg* ;wvc[n7  E"P 8ӈb@a4=fvļ;"I]v̓҂B63Gb1(,>W]PF-`ܼ/}R!X=; VЉD~]PmQM2\rDG{[K){=Ԥ躞) x[y^w?|{l:8 :;&Ydс]vCQT̀:Q00' ‹wlwoH$re O˞bR 8].J%Pj>ь$Ihjj mx֌_)xٸ4Mfc$*F+Ƀ0S!^x+W::W:9N:Î~ AeLOMc׮ؼyKaD21:'7utaX(5/0ZRcWA\3!՜nPK5/PJo274 \扟 ~s5"RUZA@&^c#W# ըBtHuꃶ,QJ@s0,oyB.:nNgSL*Un,WۍV[7TcBOay~g oWsU2`U窱TG( "LDUkX˲ep.TY ":!K$ G;:+8cc̟@ `sLLBli îͽ7@H$PJWTE.H}=}DK[Ur _K ^ c1 rV%EAR<(jL((,$, ]. ld2& ! u<ìʳ4b',,HWM?fpn M7 ;ꉞ|njH3f_UcW ]ӡҩWԟ.__ӵtz X|l]ccc!KD<EU@Z] `(@݆iTRPdk'nkRRߘH&Tc?|>SO>@iC@NnK{ⓠB%#KVY](5kYv $eZX<³Ͽ.9cJԤ()'O=^VyC]jHLxW3UC\]׫,|gXi2jĩ*RxDzUU]9lYrjuҫ\.W)BXՓ/Ju@ĸsgzĉ誧QTUF _6EXDTSٴ,:rXS il05zVw[lP<vb L,!65aF4z0#Eb4 ml{YK)Gqvܔv;Hp S,v Blm >ͧ  &SSe~B}=.YǤbrOSuŴjc \kneuޝ rUwVOj \.D2N)/<4 o4MF9JIۚF4&T2?яЯ /[l-eՊaP, @7ҟm +9=xqÔd9\N4k^n^/jO~t(ҺŽ]{ʵhhϻ\ݑHjej a3AQ*H$kXJ !N7ӤȤ3嵧D?OOvޫs<կM}Y@0t]ϟd,چa !˝DP qF(Jk4K[3MH)*VC+߉$j_Z:kXPmb@< BٺVv@t6(,";10pc=@*SS>' 0@E?(R :̩3.i"[ݪf"qFffJY-U.X}8,34˲p\ zH&0 leVB/kG1_ު!]R5ӗ*șfT*=k:{{{HdY^$aɋ1a`c8$@0A%!l  &,!' f `cIe’].USuNg$Ye=OvS˭kifCu_s' ;R `pt2RO)qJ z8Ҿ`hkV'9ZR2ƬSJZ*xnVtoGrV9pYOXپW>Ul4.N(>33sWXkVsE|>]ct:8hm&Ja`SѤVAhh#AqžEa}y΂ 1Fk=QTh4=6zΞ={#{/uhrLcGqOjxzz_`AiagjOrd=11PR>3=֬q,9[oC,X~Zh0w$C/㎣y3|&oߎcRԴX&?U--dxtmںfRu t;'wwÞ= ,vcw |a19Y! g9ǻ}cSA(bd ap{R j3@J%-Zzc\~? r BL. uP.P)m Ð{jcJv{e;sZ@\?yK.cpp01+;ӽh7=2==]T*Gt%ǟiϮusMqVյZ7felllQGHb)Nњ 87nu%n ;x?O/vJ:ʽ4O"?lJW^tO"c姝W0hi)< ߠ40艹mȭ\ #?+JUy+V+/MS7) `PYϢslqr˖aa,2}=Lf ?(r];{SgKS2edHETNLĩ$g7Q399IјJԛ30qu:}9JѮ]jyR̸EEv;)L(o!xbiؚaݾ0&dIDAT/ gvΰ]|>7p1u/! J .7*eP쏎CQSvO56Lgll|`fO:JbƘujut||f/'.w=iKWK gƘo۳gKW^=/\d{/ڙbqZk&&&(˓Ƙ;Cw~E( `sn!%i>u+(<뵯%Қ֭r/XO3074DaWફ`rRZ b(DF_4{ վ{۷}֞x ^xfkJѯ57ݧ)fh>r/'9zUO~/L53Vj-`$m<5}l_~ʼ.S%YXnޫթ$k<3n_jیlcS\{fݺq)kCx{BcOK'ePV3W1}uM'366CȺccc6b:%vםsjn:y-a`r +m'5dnT&v{lu/Vլ.=n{ 3ۛ5s:cLY3JEPZ*j'_zrJfu)*Z])Q=2Әٚv(Tnߴe˖?Xl+ymΧ삽܃6<<{|"{;w2666aU2|orr-۷o_y'r9IR\dHb6?!v7oLѸU)c~۶mX|4yOưh$.bkEE'wqrr۷ao : pv*p cZZ'·=00HR@ ,/BHk׾їx2Vk2yyxe GK9S#u)ة >OOWs|2ny~cj~|XC Q|S b+G&rτ~#'_T}gqYZR@?a(|'E]u38"B(rG} g sc̘R0|SV+ TSe^,YQ'V>ǿ("z}}cfNhJk}RJ@Da,9dS@")'e}x>Ģ*24ꕦ 1뒊kt aX_LшXSSSsASm%m%N&v ov\.}?|5kȼԧMiW=FFFfv2f 6j) mӦMY,=Ws>q=K a ,Htk[neǎƘcf\ cW++7nxљgc:eP($&m la0 Hm*ݍFcÃ>x۬IUPs8fQEM,jA= YT% ?LMӧ uYש_'xj[|;B>=~ieVBHIQ{ϸ~' O=@-hYaQ(4$-v3:NPddN(~^*=i+p1X8䭵*폔3(JDQh⚂})bQ(5 x (m296vOS DsFx.'ā(Vd{桡!yul%u)ToZmƘol߾}" jk]k$r|Wq,\qpp0 ;q m۶e(JNK|݉J:&gMnm2r|RM˭fIZ!#r&`t'G[M fKRj8B%%! qSBq&O_{~{q;puc͈ "}}Po.0hYMb7[1g+E9$u&s*z kYsI\aV5kKLيvl4ЩzesOe~jm@("" R>v1x~Y,&BN5beOGQD"fyg%`σn6 h5v߰aû+իW3<<,ѹu.]v=ܼys<==}yf}HcJJwyիslQK7-ji`ӭR -Z&|ΌNU^4xV)Dt{ 6Ŭ\*nG33{ k8l5yܙm>[n󱱱g-[lcIL b6nX70.2T*1::j*ʶ(U)uz,O $[RoÎ;NZ|t$'-Pⳛn>Z-cll]|nEaUuF={Y\bҥ/_4lrQJRn3ܤk֭0|R\nݺ/^<|rdɒNNry>qtj{266fz1>s\a#brpphE*0Xpa⃮`E-$Ly ןK ~z]|;@{=uYcSf`㿰$X8v+o'ڤJjiRK? MU`derS>׻$sYh1'׭֚A|ϷթZ6YrrRivV-3="ĖvZ;5CC(u/ӢJq@A5GVS^bm>gnA)rVu4~\MĤ6l$ŧT*33` Sb&#H% uk4Z7v?gqv\7cJƘ%;kr<|auh21.ņT_}1 J5K0dlau<$.v%jw VuqLW ^c̙̦KY.RL ${x>߹ibb8qt| A']?h6nA~#3 AprZ=8Q)uRhy^ф3nh#cLS5Ɣ1$ 4]h }(xwXh4X,PJ=+x{}UJh1&2D{9&g_I<ȬAy,^,0Efְ_:d'?Th i*{J) BEn  tttVh6N7/i[(1f<={VRfB?@bcL΁@q`:uY R]pJ& }¿Y8ftt^"X |!˹zw?ٹ{ws..>JIa$`îba.7^á'1Dccch'% dĢt͙8n4Hّ =ƘP(.$ӗZmJJhSy(=!;(˓KLZР#h8k?ŸOצ7~wvd7=9cLNkEQ? mWX)Ӧc(wn $/pՎ:8ðb]вc:Z1pѷcX#^ew "@| s:c88\M5\õ^{HS 5| +>e $ۤ4T )/qT.T|>O?Z3uuY9=KI|Iڏ$PrA&>c *{h7[F/ M,:jѷc5BSC:QƈeĶ޹ u{6umzڹ%Fcru^WRǵGP1<slUJ77aj OujYkՖ>5<8cC8oZڏ`6͌]X~}x p&l_@T"1O @ aRi~.x)b^ 'O "p4.ھs8FS% do1K*]|}d 2udSxpawFe}Sj}b|bw}X>C4x{`A#Bj!> Bn}CeȦtb!Ӏi" (4>#($/x1 5\}3W_A4m96: ز~<nn@?Dd{,ߓKlvTл6ofЎ{#x9?A"HGl; "~64;_cWwR[G3G.AA, <=5]\,2\[r)Z(oy3w5'rd+D@a;y 1D3Wk9\Udwޱ#EFvH4=9a4:\ VG1? c?׶b~Kc1 S}}T;-?A@p7"NݶY*$v^#.ma^m۩"Х$8 vo#X=^c7(S켝mHt !K|-bhdvY>hm`@َo<ϻƍ)W4+\l/#3nB`- nDz+\;7Ko# m3[(#2>(}9b" |A@N B,kMo >9yȆ7#Z{EҜF4 hO>dy{C% 6_ ڟC4ܓ ߍvL_cۺڶt!~DǺ#9>hW#BwE ]R,/A4<ێmXeǮY0pֶ~߮ji$D܆-yDh/'"/n;v?XNCo!V2p舤 |~wD@tҋlF qL qMDKB,u$s=b{*I=x G4R׃W#I;n|.A@>D|ww]. B?"թۯ y@\}V}ȎI <}}w6"8݌WQFG eI/FώF4m*}W6O# ؓoFyd"2{4brm QL_l1lȯ@L?Ta/#G=o2{VX~h>n  yV~D؈hw"^:At S>On|.GL̷ \]my}}-D~5y:8a>KJ:~"@\lr-?_җslD,0W^gTvl`bQYej3:֍Slη}t;N߲m׵vN|etRA!UL.Yh%d<X Objl#Z#$ѶD&s^haml/C"As܈`hd_nm/?eD#NW{v\G/E|' o.BD lg}خkmVms]ٵwîS07رx'[F=7yPdYz9b/d3>1 hqSJ ?tNph5"uy]A`1hb]pھ}pfl_GF4ތX1.*{M"tS[S xb58 Qc} oم%(B[2 CGRb߫gDŽRyk d#Agg`Ì2:(_=3+ kA)+xVJ좵&9HRpcjHFea f3nb|$<:M2(tʂ~Hpy  A>2(eAbz4 ".rL_J\92(2h$hf)JRHFeQFeQFeQFeQFeQFeQF7NG_r%tEXtcreate-date2009-12-23T19:47:13+01:00 %tEXtmodify-date2009-12-23T19:47:13+01:00}IENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/mail.png000077500000000000000000000021741300536243200214520ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbtwcRQ^w͚ͯ^ݘ?^^^!?2|-ڟ@ ,%_o~1pqfg[g9x/?~ßL e/bVP 44TWPfq100 Wȳß@> gח\c ç ?02(+0zz:Ͼxzh@1z2𰥦$[ʈ3z_ ߿30nNNF)}9CWg*A!KK+-+"=@/W[JɢdECSrݏ?{ =~ l@fd`HJeABZ_0@,Ғa8|*7XYDD89~bdcHJdf10ܼ@18gZ9(3K00033q1gfaHUbPS 'g;vF(nemcŠ$`h Ơ)t;ï? Z ߾ a߾\>]_@@dD5$|f`ANAOADWF_@:h?FGs>~|(@1sr~3d:PwbF`1ߠ]/ L' ~t7^7W@H_10? N|p]&8x/`j`b D^"\˱oVWˮ rggy33ՕjZIrE!snwhbXe={~p>>ˎDDDXXX HHHVVVFFFnnn"""222iiidddNNN000AAA888@@@;;;...zzz555JJJ<<<(((444+++&&& $$$,,,]]]mmmrrrkkksssjjj\\\Ōlll3!,e&||/5 $$-/Fv4;E^j@e*?—ΈD$=wh I]tg1W9Rυ켂Ik>AT'('oQ~kF<3+.Ɂ& X# #Y4hP$7xR|0s c,ΉI@2dd U:*`0@4`6t`P"|^d%)5f%`уk& 4fY5`X5@qUhl|ki+>$.EH9@'"`O ꘝ`A4r11Mb(`;)&a&nx-+ .bZ4'7&G{Ըɡ 9cpC4Y$o(SXKq#2xpI;8 hPE(YsWa!4CO:Z!'XȡN>Tah< !E"AE:~cX[c@q 4a% ;@yEy椒u'fc]gE$m!OP 1Pdd c tjB(@E.wqXRk'|4q nY^F @l!, F$cc$RۮBXdX@z$̴~$[i8KF]cP! mˈF `?" 9FRp'8p pI`\!o_ At.`+/PB `$i6o$1 N%|x!iX,ӕ%D\E\Aȵ~-͂h@F8GѪVc`Pt׽J1G@ Ya7\XG~(_E`o9`y8@@+@ "9`Ar+@PAg."`Da ~t ;bȉə#? =BW@1&Є`0FS FB7R 0p$t x` `0 XЂ" &8 *Ca@ dp]0`-8!!H0CBh#A!Tg6(@ >B^y`,CTHŪ^2@DpX@"zmҰDV  hJ/*H`@jpEAZp;@@6@@XRD3 k@ AЀ31`B05 *Y z 0!0 8;0(@ĀeD `E  KF`& t,,Ցc&ph.0PPOUB   2h\1"`"`A8 P P\@U@ha` M0 r` \A%F@ЀAcM ,DiN C .(`8 >PaX8@ ֡TArAo|A $-v!u4WM]xˊ>Mz{;ALTER-1.3.4/alter-web/src/main/webapp/img/source.png000066400000000000000000000015431300536243200220240ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxڍKhAIWSj&[T*bŃ< zЛ"*Ѣhgki4&;ԃ~a0EQMMMhu=!I=Kcp8p:4m 2.ki544D"{zz\.9l6]5A9JˊŢB{eEpX8_D cFP("T[|Rw K4 I#*DxND7.>!#ݩGGHś}G T6[Rwmu,/v(Liٕ?I)M3IENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/step_01_color.png000077500000000000000000000100261300536243200231740ustar00rootroot00000000000000PNG  IHDRrv8 cHRMz%u0`:o_F pHYs  ~IDAThCti0AEdFHA!̄LHBY,Ŗ֊#,|{7 PI'9|>)=Fbn3fIdԂ틍=v8;;BZC:D츍TsN~dz5kAv{4tǟ(^C:ed]aƬ_O6Νw[bWkm =fcƌSU75}B>2(dے%0uE Aer5oCԐrbˬw7lGsAj<I?4CƍҸ1n#,4/`;OMg_ eg,9qi23]86 5&'=@s МKg׷n! uS y^ M_xGLlmε/LKڟ`;%:26RJO4kqX؆Ww+In]ǎ#6Ҥ>(P3ZH}T%[%i7v:onDM(:e~>BƠ80l֯ȿFnf߾!1\ !q؂G_{ FKS<6Mw_ ͒&K]khtPz&-@)Ї,>~~vF`̘ٺ3, "@+$T;}?$)kVw`\EW/Lz([2@_w2t'TY1h1`,^_ O^οʺ d2(44aB6b`=zoP>;:}3cD B7]1D)"/Rlu$O;cƛ}6ӧ^=u괝TV'AuQp YYtvI $脠4m,@d ]/YFVviȽǡt8u{LRHd:ml4P7(Ї`#zFV/>dȊW@.lZ^hG[~!&z ljҕ>ݏ2lł IDc;ꓐDhd%.yJŸzx&sjgf^0mg~fŊ8Nr:+= U2 p69{9K;ͲSScbn]%M$PUYg47C`YiY]@5bhի)RKF$%=됁N|+IҰ=39#m3K4f*@@9IH}=/8NX;֜రsq3G 9J15Z9pG߇6.11'%>ABǘ#c$\6S'n a#1+;ʥSy2SFs9Rgm_755oS|.[82rM (ܷLϡ$ڹ{Bߩ9]k` ))Wަ)xC^] ?I)5jԝg$5?82쐐%UW\3pحǎ̓VRv|}tA\TVk7n}zAb:/_(_m<ߠo՞y#UݼMZlR{yyMa,g]II|ZRuJ&m%Kk!]edmԆ {ΓbbeOʕ^î9+3\Xe Bjg|{YxSjl0Qkpk @$Ўu; nx.aJ>>\~G74;jlkI] 5(g\Qn֐Yi4iȄ=Sh@JYf񊋳Y@7 Aj1= @;>\$\nlx9wC`^b';bt*Ujd8* zpq F$ JS{q2YO pȃx:u=GXѬ:8G0q6k(:?[#]%3ћ/НvXe!1cT_f6"؎>5sa4JJ Yll^aڠ ` w33ǡla,3áy}ܪqlMVZE,\ؓYѣh&&uw9:B͙n?(ǂl4:EHob!#8D9w\֣Bǭc˝xR[?=9r973LBM ;qV@Tԡiiw'%99N@%Vvwѣcs"t>fS(tsz]N \"k)IENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/step_02_bw.png000077500000000000000000000136421300536243200224760ustar00rootroot00000000000000PNG  IHDR)n cHRMz%u0`:o_F pHYs  ~(IDATx^tUFar#⥨DHBB$z ХR,PH"R""`( "  AZ}eeB;d}~#jjj@xqS9} )4po|ر2Ǐ_+4dㄣGƝ8qœ:uHO={v'Ozi`-.Kf,vܭKIiwamfM*w+W^СC pFm>hI/ͥgS~=Ӷm)^cWkAhGfܸqf˖-Fdև֍ۿѣt;͹8= x,X`W4~ٳfرGGi]HGpO+<EEEYFF{ƍ&::#s@[F f_siye  UV-`}MְŖR@ 3|pSfM{y] Μ9s"&&ԫWO6'N|Jka[ E; t˗-[fAX㏭>kU\|ӧO[x@زeK z޽,\мòu` ܰaaV< /-/&KOiG~(^y:u%KX/5kip<ѝפիWJ^3 Zki0;<%%%lse׮ݰAr{=GQ!0_ǎc+U1U3®ț7oMk׮e5k|ڮ W%o/^9iȆƋ:=F?wܥ/R5#G]KupRA>z9LHHp$[ʻо}{ӴiH t;;$Ml!: Џ˱/uapng:-ЏQ>h:t"UkČmϞ=-;~fժUsP3tR++2k>\[ r׻wn7jРU0n]"lth oݺULef̘i6lpXhTр݂Hwn:rPW_}VjiS|Fud*qw}.xRX-.Jnil׹sgaVttzax}RwK͚5SmZիW`f׮]4]˗/߶bo}sҜ4r2ԕVZ u'(LI`$~_ﴈ`bbbl }ٞ#F4:>|Q*nb}֭ %\ /`24;sg #\ꗱs`(ZEEEZ]8gy{!Z-1O>1+as&M|gϳ!CEBA6GTs4wMя'esL(&8p ɉHnO+VS_ZCCC1emAzO?\7byw =9>ΚwBz,*5gdCs8ֳpSӞf-J$}dhR,o^r^'DoW=+>2~/Cʃ.Y]t1r sL4 VK۹sٸq# t$eB2eQd`-[R:b w.jڛJw]2gƍwIRhMeS^zJ`@Ν;;O< qBBBDDtE C. mM.m^~=S(^P AHZbN*s,siG!p'l9RyQl kj/?c X\Μ9 wFV-6a/&dVnk&M[ֳX`]z E|Ν:j@d=L'L k7.nwܹs kT OCqްaC>[r 灙ϫZŔ8RQ..1 3 N`G1(*Y(4$X=,U~}ټy͛J7(tF*WHH0sfԩV/ݳg!O?[6i~typ 0V(")цoiP+K-EK\^0sZ@+QJIg!j䓢,3VXP9>Pt~-xƾY,_!t9믿n QR&*1 4cL _-[: t/kX6$<Ӷm[솑0NAxyE4kWXi92!<~*T(oR8ϝ@&C/DFFy 951ZΧ ab.RR b83@Xn֭kOHHHnM6`Ϻuk;2'/_~iQ%()(` }u֬YIl]OUtǗ/IKKI7 }H [e3HÐN 5jjAaG;%'/׫WO P߰@b/"}jj8l8ap nh/1` 2j # X8 1w0`|  ޙRSS\x3D^1"T'wuɵ1Z{bc[FΛe`09#ҥKiqNt.gH_wLNN)[ٲe*: D9tONs.kq:ɖVEi8R/R\?NEOxI -IH:?Q˫צM2 `1 QIҝM{6-".HHQ0E_ Z!4 i= tQrE C (Fa %>~FRz*3Rw^`NXwR;=#uplaý`D &*uɇh[ g+W~]jk ]!Ϥ]@x{"'LHx" 7ˆܛ6|1v7[IxPp<;..,XF橁 ȁLѻwxz^_C}ݩ;e/R3rk?D4J!;A"cR82L)(}: aa HHu,ҩ4r7)rl<]BF ^GH'2&o+tN l#+VԩyXܐ p9By֧9!uqС0o6k4q+*S6Ĝ;21!ViMFm 9 .]dޖh ҳdJ [}̍rH6wmm8vV2:4  4l/fWB бB;D#.P䬤8iذa'4ihVxk?o"#-ݧ9$n;/d /0@%J9b%@mHS0:m oBB׀Y:2nO֗:qd},:% %*9ҿ ag[/suGٲe<ɸEa"JկBaBfUR2@!vu/DljLnk/^y%>ORD:yXoP dEӼx+T޸N0? 1J*TxVFQke!ٳg"vW8S)Q_="AD4F\wk.b.ykMD.E tК)#G?"覄FVJ _ioHMGX< ^r* \x/K~q7 TdTi> 5^#5iGplߵ5B]r m "G 1 Bi%$5| :mrbչj܀t "ŊC&ĞEPGxdöi/2"ZF9k;3s/۟[1a9 |t?Cƻ0J2׭%=)hHiGSԆ \D&`fs.e,v!c}9sOx~Ն [?rG*+tPm ?mq?ss͡w%g򫾩ts[>;mjkUWJ.MNK~*NWKhM)A~t.sUtG^ߺJwobJ^K+x)->ϲ00h#ȒEko'iItdUPL+2$h7kϋ,ӫe~w<*jsxnl)a[;c~㵄wAZXVIdY{CG'9 4v^`qxJ 'Krel-w(TmkJ% IEjS%]fVe4P%SU +]n]Vb̎VJHy'N wn+L(-wS!уiW'tm$??3aa?zǍCh {~LdI2ѷz`DȖ[دH \Soagˮ3kަfU 4V]%;[L$JeI"0~ -e zv䓤%J׍Ga[rbsn w vmzhq]Rې6_"s"0*'siߧjUeg+}t.w{>5ZtU5T r/MȊ<*ռoJ^/[+M;^ʪ|}/P˥=qOE?]AƬOKzDnrX)G 4hz$UKH;TT-#J*r"08͠vr2S |?qcHNԒs"7+ Hp[=1@0?o&vi ϶:ɏÐ>֫Η%%|ÓS3 vX"4?/[O,ky@D>pGs/)ˠ՜0 e8Wi:ZK e~w='[:OyàA=@tʳx޳d㬜-q8xhÐj己~A~%Kc?n{z3: .+Qw}vHD~B:/m*+6bUA%xraD)a͊,-8OvQC7$ ʋs>\&Cp?հvs(48YK P  bc(tf'>K.W׌ ӵX{ )KЃa˜zir&p8(IK-^.hC.9ֵܭh6"q *k鳿[|0y>ܟA!Q/xhwD<6Z|i$0)&NR%FaߓwbtJ U E@.xrj:JB=Zk!޷]eM7JlsW) \&4 <UM U#u:Re/FCO8s 9ZZA}_59xA7w?"(OyH'WPۢxQ]ء>"7\Nj>e*th%N~ZXZ'|;{8V&uC `d[(&U**Ϊ,O}5࡞G>6Wrw*TpG c\lrw%oIM>kv{*ˬa3$27ruZ@s+S JtBB_}$ yI !v{HJa]ǫе6y7u'VE)סɁKU獢Sb% G{ [-@׺zNy,UC1hpV=]|q*zwA9^R",7<*l,s"F~./ ;%oo@! ̾^8ؿ4!0fU}>kg+5n <%kbv^,A/y=Oœp_)twWNQ@z{X/w s0svwjcOLalZbcpAزk˭`KPPeĄ 4H|+6a{WX2e@p( LT{KpUXⴣw^dđfM&ZQɓzJaj s޷ 29CpQ*ca l~3ֻ@}PF堧3/TdSUGJW:L٢Qw\lH[ 7]yWCDGegŨg~VP|g?x9d4ȼpDߜKcpn/7=awXSt.?e LgU;\ت79pQ-йљOZyYHR/HW߼~SGTE |QЅ@VjWW`]ȭCV_ zCނ hwnbﬦlo)~C )qq6K$o{5K?˾zufj<;5ܲǦ%s5$4 4UM-qp! ?a`x1e6Ba%Tb1}TY\U sKy,鏐ւ/PCBxò*.Cq0 ,eC,a嬚,nLu3sbJ:uVF7ާZ&PΉCp}Xj<T5g c%rFY?ET/;xKK7{\Q,}ܯ;ɔ x/E1 9{WeRҾB}p۱m {έS^iLV&ΐC'%?ޞ#ZHxloGHZ@7܅T11[ WF^7oT'M`PMO%lo~c!ܬotC6vȐFB%VHkP]P) *#QfT mkMa )eႼ4^MOw/.?>yݡYu啒 eztDo1"N^Zx!uHȧ$To׫7d bSNb8.ԉS!0z>^g^2O^ߎEb cZ|N0[pH^ {_0Eo5|Xm9%9x(2|(̳9vHް%{ؼў*B2hLwM~Q>v7E G7)# y6f,a9@ hi9= 9TEL BF*ߛ+R3Bp l^$;fdnDBTl$A`s]rr[hb6]"v08$=f8oYY,ː.t~x% QJ<*q -?@ficU_އcX- ¤l&8څB04D_ ƻY,gsbnFؿ~L 6/&,4N+3 8ט$ڜ^NoƢetZYk1n&hh]]=x8y󎜾z;a)ZB >_k ۺkkʁa-&g<.YKG2ddž-xkɼ*c\ )olv2ܣ ?Z Y\Ǘ2a:6<3=/.y|Jc#nYO9sԩU+dtYkfɓ'lQt3Ϭ_UUI܈#M7ݴg D.^sgs~W^yed*G/،N=#_>}裏"szftiƖ`'<, 6:`ꦛnz3T=d!v0/Ʃ~NDŽej4iRX{ b?ۺVCBlu38,Hy䑞}FpuL~Ql}eUκۇkzE¦Q!s]@nUutGFsO0"{&Z ÇW_Yx0{GydueU7YJO3zetzjՅ^pi#g'p@uǢ}gV~{{ɞK4{ņf_Ԣvgg{L o]N&ʊ~`?&UP9]q{lmY5r*>vuZ˽gOftNe53jPY ?1@-ܲ:쳫zHnj-uahsSg8V o Ijy5Dnx|W⇤#\y饗it1Q"/cx j$2B YV[mUg=(c:O~Cvi*ٕ S^{b+}*;MN^elḷ{6lXMT Hz* X,"}(|;A!Cd;eO{Y2G`Ryso-Ɏ f_ &ˡ |@XoFKt CcҿX>5k *nVHS r> /lsz:q9x3~LY A4|/u{إ`iVg'Ɲ, ǡOft)8Q6Ҧ aek#Io>"F^r%eٚOlBB<@;ׄj]w==ewEQ3㏯m(ՌSN 8 1B/|7kV1+43ObXJ}ݷ6&NřVQ}6-Fr%&[Աhxvʽr0N3=tPʐZ7MkjsEC1|k:7pC%{]uUWg_fET Ԍ|38 qI}0y~ tXE\gݙsN~1]7F>S;)] <ף^#;~7gaq2||F4뮻f 5QnX;;#\_snc| 3Gac3-8i?`Ք4hP RdRqk+ OL pƙ.>[eQ=?_HNTW=8YEdԝ==ޔd(I6sNk#[M(Aй 8:d/G_P؇ ѝa7tRaMvsg'Wp=|u&԰}g_}mXal,`hNt0~[h}? {f8_Qgq_q"yU=Х\k$T焜Avm@?4<S(6K|ogi0G326xƃM=%d,2=_9s _|q[F{j%r-$ oBRGu8-1J #DsN s-dr=|(7C#u e0Dʡdʠ=أ{キkD(*g;0psA.sO'xby,[o=͠ПN# B>d}㡩DPAKp ޿ s*=ۃ\D@PpVŽwbtbzF!o`"okbkd8/Ôy"8c5 L٧F#HM!2&:kQ  `%jE1(>(^!J㼜OX#6%{'Q Nrp"t( DPɪJZ Ap7g]}BF>|mp!၁.ِCOa4,uAeɋ61:Ų : A,ES͘k?Gfp6HB3 |Kzt}(5C;[˓7ez3GOK{1BS#ΥW9p26k搙C- oF#LͅC4tٴHr>}EBAi Μ=|Ό(%vaנ8Y!D)&g '٨>3({e8HG؛2G)k-N99r>\ '&%94%5g@4˚̠;[_-,,DmL(9,B۞@M e+a/O& 38aH4R&18v_Gp Ců}B [)?9/3Ƣu'I%1T- G8>+a{f5i¡ˀ ")"h❓fw?c!Sj7S$FE|?Er!nnS:^E/439 9=Edg> 2BѮK!\>}Qh;sg~ r9hg /)m4I)~[ʲH͸tvb6 e,Q|JipygoFHTߌ.SίQb2a|MS(2#>8 W2Jro(ƹgUx8!`R9fеD[G~?\iy,$OɈlA9)「m2wd+ȔͲc֪z/?0[\n_G cd 󣔮P йg3*7FOq<0XݤMCOSK)G h?ݻwsW^w)_aW*ܳiYwu/\W&ٻކ ' XvVSʌnq ?H&gvκwq39[jB:4:6:rwpޡ%H~/vuM2%lmlwOuweC/JUTw߉]K!+8i){+dNep2,{ kL1W9r /s/RlJ^]:M@eeKɳ͞[jDpد}z;:h9h[5+}3*0y֯x/Fq @k` o4KSs[dq rXE[9ckhaRZ?&sQrP& N\y~ި 2ԲCVgtڣio%H]`kwy~ %%;{vy0e9ۨۙqsdq6sS^-_樺lizd8CM?XPl 7}j24}d<t uq۩! M6g+.4y u#@,翃,PpMƛWfAx,͕BDwYRR&wnF+]P~/?hP/kZpVja ;TbIENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/step_03_color.png000077500000000000000000000225241300536243200232040ustar00rootroot00000000000000PNG  IHDR cHRMz%u0`:o_F pHYs  ~$IDATx^\xTնBE+KTT\ =Kۤ(HIo$3s91z>7S^{ 5j8 qʹC?-uߍIR|W op;׹3ာhz֌ݞój>8ӾRVhaIg9$Dms,7AbX3z}&n4WxSrHܺI"o(-y$zx YK$ {}u0j\mjq'_1D$<`Z_SJŸzK~-r\_">!KA[)Ÿ'+c=aWcCmqZ7R}.FhA ovn-4% GFM-+گ%rqP)sOK@uZk]Z}-g_U.wSjTD~\DҢ 3w/k zZaoao0i]ݬ%8hCo7Ōj ?L5;rrے8~ Fk~Z&ޢE޼ 7Ăo񁚤i|QORDRF\Z8jh-ft=9Y1%ӼQWL Q~dc3˓D4kXL|IDa|wxG,Jmu;ּs5 ݈4b_icʱE,; 茸?w|-ʰXb r=9ƜXY$OJvSu1v3U[$>@4㚞H3{\,@˞n: ^+f=*v1@nhn-ķH%m3bgހُHPx(7Ym;l1 =`EYKH?OE>-!貅[jDZ fV4Xv#:/cYuE8,HthG_InE )=WN^xџ:Z9fLCč/#jH{Rp{o @SWpUp9&5䬡첧"kFX-;{O5GłuwMcZŸ(~/'8,V907w( _Xh}*)Y\tϽ"۞ag& rL% e5gd%:y4yrlR^ШA1 ]K7{_?< ITLbA)HyO.^?][t 6þh"^ft~S8L2)A bc=j@ݒ~|iG9S'hޙ1FÜ /_dBQr}HŻWpgW/sr4uT6(o3%ԑeK $z]SqhƃPB:f8wȀ^x>(+n`hs9lqG$k Uh-nDyxri)C6PI3h`3 K%y]]-n#RD~:mX1-5sW὇0m> /ۻHeKѧhD0t-G+Qp@)LB{FK\QN̵PIsl'ㄚ|*I^k } E Y*pC3J7P4$Mm%YKٮyRGO窜;QKZa.b _aY+^9i%1P}y].{-:%FU=gԈ#KZJ:DyCKHO0(7XCg!j%z4Πc>lA"\{#Ix!wK;1ЦI~2()`b\1Y`pըP4m%٭.7yQ]=`|yլNil6U 20*b'Oup-w{vJSoI.P܊8=*cJ*D(߲MA PJ"xZt#"a<`Q!n&HJrR"ZI8ZeL}ԕ>HDDh07kr`HJ0CgRL7-X6@gO?B [C3ƭ9}ȆGh5Hd}y706G}EkGWyK2#F?tI ZCaq 5/eK9_bt`RZK=a2~Jew|%ir I|r~[}@D2zK^;Xkݴ$ɃVI NЌ=rdbK7>Aep%i<` kwTE6"N"-<ez+hl%S.ݔ1ÁA9XY9aA\\,rxJ`o+ _VP]$C.pޟ~N&`WƳԕZP~[94:dTčk ^tꃶR~p :Kf/r/;:/S2h#0DD|%} %zDmW8HF: װ:j!Neth_OJcsD-uVF)Et*%l* BuQ: *dM , $03 z%G@ʴnvc93Bέet# %!@1,ms˲x@z9O"v'iH|2b*MOF1(n|cLd$<8A@(d8*ObS0>ŨZ▛VKXtcl6KDSEfġGzL {􇅉NAt0aix3􌒲J{T=\!ҕC5+HE xSѳ*li( 1XR>oy8HA'.\;U`h$ PelY|ئEljRsN St(Rg=Q8K}'9I B*NDx尽BCGt3L oc<[ĉe5$_KDJsbf4hTN.þ`YQ޷yVL)Fg FW }J>y`sYJvRz| |RƏ="=G/sPב+#a] ,Tօ7ե蝕nJ\yg[&K Ps:9ֵ_i:IgA?bcثGW#Y .oqj!Bhf Pm?RnBaCɍLg:}}⪯4siWOr/ E8b|) 6tWNM)]:MrT:ee KFa w,ke!4~_|Tꁺl/S bR%&ԠF}'Q+#}( X. wcM3 |FS\Eų}}geP/3#W{j{Z~}VTP*?{ʇ7.HYRePk$r/,uihݔ@D*^0tJ@slq{?*j֊s5WNi+硁V'eϳxVgd_o ј k'Lhּ`qKwK+UrI//Rϰ<iw4%MGuP<5G4҂'V'4,A+/"YPr<%Wa?tTt[%Jҗ0s44>M=^aVS/y< D:.NekT͠|ђ|51:BH> HC6ZV,%R)1w_9eID)o +S8PG%[&mg4oWESR(yaʣXFg͋{xJ.#u& 7ǂ<+c)Ek ZMaJ mP\@LONe8 dtC$~IXrx Rڒa~Wc<4QRJʷ^r+/ h+o[1]:}2<MsƱ(^Tft*8E@MuNQ9.uy:OE.3mi+puGg%o-^= ->CzN^} Nf ӘONcKPvyNJB棞#ISZ)Ʒ)L^Xlhs錀UZT3U}Gâf@5*;3"at6z:|xN%;m5 8?-N^>qn:OISZpi<yjs`&reeI5U'ʶ\ѫ8gSSep ۦ)9CpcjM'Gggi%oswk p}1:.[6bI{v~} vٳȬPohjHS12)eZkC,Y~Y5GzD`Fzy7Sf#C6QD;)1͠'L8+_Q98&7ӢLOp`_sd]1A`$k|V e{I;Z_íbvco\# kmgHbUd*" ]=R4Gp:dƨhRՓí 9H|#yd-S~lfTи EP0Q91O~]9'a<+فΊuT Q ᄑ+tP;ʛ h`k]}5n\C8HJ3Ob3\>蚯6 ~ @SnPYx)lQ[&8Vu |*T$E|g)3Tn(F_kpO%ו ZgZbivCQࣱ1?qAh)*I`s s$ȑM6ݒQ:0}nG6ö* N\](ho6|4|k#OlyqC/PhӅ_\;L# U cUWAFZ"6fO,R5cyTֳH3.=>>2R1p0XK5]BNOa v3yjB@.?yQusծ=+ )69M5YUx!# zf<` aň- ƲKo,kӮ0uV/ ;4?!ifN#lр |M΁Wk_hcnɈU9  Ff+BC$Baרz}!T*:@1M̛#@3_UQ$vXYBnS׺EӗaQOAy*\BbZ)L|h zk[3E{\+uǒ1]%0INTp'9 leACVK앗ﳣi[~RL[5õ )-TLO d?sO ffC_O\/Ta%L= 7Ey3A+8m\:ǜ#hIXgȌzE]cm, kl#1$쑳槱>qG,!)șK3zv|z&b*Ec?g899{lTv CkUOiX6 :*O=+g~g`s͛CQLV 4-Ge{2X/ vsVV-u|w'|T բ#v$ia;}(u߫^.6SjRR7FƭYZW|VtRH@7/>>ch5hp{׽%<$Zvj 1u?~"S_EѳWgF o]a6ٟctl=W68L?yFܟ 4ܩ6op1i1pZY㖶Czͽ8૱u 2k9{ Ӈx (ĭ4$`Z(e$ゼ}Nˈ/d?iN,2ۣw;D3p poM\3{~)=)Czua;!i?.Zcg~ar~jz>kĜ N_,7sBߪZtƹcB|ă}Y%Ԕp'-aʓcHy|ϝӸԫW ggL߷Eӻ^F/?v1%JGPzPИ>ֺVVV 4&a`ۂLuX ׫j?H:==KoOZy"УUFƱ2%-\αo*?`aGJT_wxx (|>G,Bߣi1<G2+GO\uuEz%YǠ"Pz=_}^\UXuܵ@aehU0&x/xѣN[-5x_ǿIWuT֕s%r]>O]A#> 9=W5t3:mD/s:{џ\kz?^uF8 w8p6p: oC3N^jnإͩIENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/step_04_bw.png000077500000000000000000000127161300536243200225010ustar00rootroot00000000000000PNG  IHDR_T0 cHRMz%u0`:o_F pHYs  ~TIDATx^ xgf:C:ZF)*bKkEE,J-j'ZDRjVUQK.e,DK{7u_o繟s}Ϲ͐~=N:Uo`BN8Q㧟~~^ht=?n=vuw)-IHHȥgj9sfӧg~,ݱcGvəyUƯz`߾}Y?P(=5߿;x0Z ,.${wXAUٳp|:u;rϽZ?w=zt7:t''=?'|Ym6@2Ys_p{W\]llN>|UVU^ͭ]ڵkޜsι:|oNXXoteSs~.44լY}wnÆ UtQr6gOz`1\<%PW1Ru^Jщ'xxk74ibUKLLt_/4h t}hذalٗ wF|jժ&/_vW[ EFF`@pG/a+ ~mXʍ;Vj@ٴi[l٦nݺ2ի6m6(ŵkv#F\b֤uvL6nܸC+k~xM&@Znm,,{lNzR4il8GUɆ0i%@}}bP_jCh͟Ӥ4L+f7_u2ARAc{?0:u=ڵkF4C qmz꺣Gԯ3f!(7V OCjjO3*h JP/NծC=њ@[)vj!1yi^ؑ1eeS3~ 0!~fԩSuGoq课 .5Fr$>Wr%7jh\J<=21˗ot2e")*;Joke׹sgc.T߽{כ 0v<2hѢ%ΘJ( 4iSWMP- QnY&Zi5 y@+ivAr?(7d%}ȠkNkE }ֽ)o~g}_S؟N;|:YϻP?zi]ǥ#Q\~\fM-h;vt/v4ל%0c޽Ň@.]&C g$>}"]TT׶mӁNJ*9susYd?r^F8/]0`@愽{jvݔ縸0믿r,!1P'%'\RT4ݼy1=S#Dq #lٲɓ' K.3& Yh{yx̙IrƴWʕ+rpoځRIr_ty -YvZʶ %ҝ RdCٳ2&r4N ٌ|%pizƜ0sFAz뭷?VpO3ZkZ}޽{VZV^=nTHk׮MkP_إ#g̘1r+Xp=TomJN633eTGL[X#yȉK1,7aNp v$B-f4sεO6m52j1/ /'Mrdiv9DGG sS28p%=|eРAn|.]?˗Vs1 8#&իWwW^MS|̿ɰLLp c( 4O=r`v.ƍZhpͻ99 YCO Ҹ6P, &fd8@V簋AA/Npfcfٗ13Gl Efͬl[| ""ZZ`CN퍡`=z G b*o} kYK*Iez:G'0 @8$yoV[rǚ~*D:4?Xesz7C as@[dPfҊ6ڐJ&*Ns}$;nީ euW8%{*$8h9$8d2/T; $кNr/ZfiyKZiyz4hBH.#a=d0*äџ0y+'!X8pPd\g-'HiӦٚ1Igy^KUrja|^bŊZFHӳ;5[WY~ب1gΜEU%Lo=, &NZ;zQjIyo&/x8_PPУR #Wh][QZxX 愆ڢ7AC*TPUѢx❤U0)Yd ҳU2=Zy]7Yi)1|Cuʝ;w% "Zy_YKE DtJm͕q(4 &@āܣI/ iJ l]HbxX 'jɨp UGͭwtgcͰl^Nr*&Aټy3`+(]?~2 6jQK=0IŮWYY7룔q]_G7.\dل||f'jӢPycSD͑af ħv̺|yS/͇$6ȕN'idP+sA޽5[tzDZxxmPY4`F )˗/7Ơ!x2:V*9s~GLlCޑ.((`nHY9*(}֡7$u-Ql(yaJ!9p:Tw[lSwֈPk)HB#ϧghN2Z.*ا箂EuF6)j#v \^דؘJ|z=P454xZ?&N'QjD|D X'P FuQ;:A_MUzw?)T"9 =.˕+gSK?Y,#3\KV$Zϩ@iȗ~+-2H<^6.2GA.*sC1h< /peU\bŢfE5(+ ق3yCm*`Wu.7Z;ͥs^\5j`#V"D"0 ̞=;Dh&@+Nj^㞞YLl؞n2,%f,^r妲!VZ@|mNI]_3]py 5 & D9 z1^Ǐ+Ĉ?i3,RDVlJxyVH]* }o$[G䧵#1e1B'aqjdrzl H`Oê>cY$*v}m>5&kpjM‚rc7g;,.`FfEVrz(rSO5C U7ցs/@^LL\|\'S(_ղYF>[%3RXH>`> $ fr@/Ŕ`tgvF8Zy>L .t?FFw*ɻkBHhΰ_*Uy0I`-`Pkg|p0bd}#,وM>9ؙV|F?pr#K" [iOfaytrs&arwSd7gщ]<daϢ{u@ slU'. Dd-$}gN@Rp\HLt`L|/WJy)T/N@קybtλ`@"0Ln>ay'x^j; 蘇LEQOЋLagwJ{gyHs#϶2 Owr=RF.05eB2_>KXc|ɉ^ ZJې,|R^ҡ8Eqzij eˆn ǮI/V@RhJ0N=NjS>%yJx`Mh1 _y @=~=6`IENDB`ALTER-1.3.4/alter-web/src/main/webapp/img/step_04_color.png000077500000000000000000000140501300536243200232000ustar00rootroot00000000000000PNG  IHDR_T0 cHRMz%u0`:o_F pHYs  ~IDATx^ | !BI)GNIG.$BW$%H0cm6fW߯0\r6>ģs~?}Kjj-PkZ Z 823;:nm9pA3p=Mu`GsgCGzzٸј,HJRS}B{ S99ގ'ΥIKkgs4&_{ϜvL^^}`RRn5IJ2) 5o$.[f~R:dqdgiKY"5>h>3om*cbLUJWg'%hYydf\\nc-`I^Ԙ _SYcM̢2sDlyG呑f>#{][ԑlbr#0rߨqlTܫŖ?yz16֣:eJcL-/jBlGB&'XʵSWuƏ7Xő+i ,Nέ[ט[>}ذaYXͻqcY=})Wȍ_61}4LIy_\vrKW=o)삆N@`#CMT;7Y@#?J e7&;,m, [Of,2h_|(7 lf^ÆfWxs*6@b}>w|Zrs3mZ Jn\gRrlys3C T_oҤ1R혳- 457fvn8GjTqde- l7ߘ=k׆jI;>Vd!u֠+%Lo9!g8eĄyk r#5&_nK={qLm%\s_ꮻ,6}y]ny),DFh xUqqfۊYuyM@.R#GL/bD}_~՟kHZ3.2– t_EE\}2tGJJ?fq[o!];[dge]s{կoVtd#|ӥУK92;@cTwIu$Tw۷Q5`B֣T ,HnhjC]~d`ےO`׬!T>{0,`̙V_|ase A_ԮGwNGER"y_Q`׮5N};`z -πzճ* ?NO+i#t0}m.+gJ#ٱysF]${%; k]r %&j7}Zh|)^yH-;bZd}Ԥ~IӦRyeڵ"/?)SfW5`=N`nW |9kPo7nksy{@&?߬v+htӳ/$`1];{.sOZe \[UV땼׋p40:IFUh 41\lSeVE-Zqא*\8L`sN1yZZKvttfH+)̱V¡Jه/K Zn$6| w| k1t U\pq?oӔ!kIEaaoT)bD%))Gb<=¦U,kO7nIH v9<<ҚSS' yslԓO{2RyI=x:͉J Ͱ##w:f;֮m e=)}TDH8"ð6ߓ[RG)4ts2owe:Ygs! ÆYo('  g-[b3:mەW_X*ƴ(V0BsFXD||ΐSguu P^$|ٳ9q!+$;9i -WgYȯa JQ{H`jS9DpR=ɑ)kܸ@-GJ}h@+;EGibi?*cGs*) !Qq됩T<[b^*ū*׵hArOS6p;d*s﷡`J,jJ$J%^@\ ~{SN_#CW)ek}¯{.Gپ݄=/K ?h?n~^{BR“ia͵9'MH%4%N{MC 9ŝW:/&iZme`1ɾGr,ضR9tp"''° $ {!kSٕӦiݲ`X?B`xAq $ն}k*~s zwz֤G$ lB/rwappD5 aۛ^5F-\rCDʉ0bK/yƆb9D< !Y+ݭ+Vi_*"ˑub.?K z\$ӌGy11GHQ$C%Ћb]&LɹJ^.{+lS`Z;&@-(Tw|Fon ËȀ1ߓNiV7{e9ʸ'['ީ¬B CTZ497"'fqsss>af!FSO%=ݍ7 @MJ2/N/It܋޽{Cb!wR1rdٿĒ'bbm*{ywۆםRXP c$RJ=!°8ewy jFkҰ͛VSF d_܉V$Z&K'\ŨC BxR^1KCZyLHGéZ( wy<0|YYhzP!yr2E{2+먯SyWD йxrz GhaWRY5,"§6H%ب Wt%P8 SSRJ TH7aa69c*_1x;a?Omd^UDyNe=W/{ @x&̙3WbD[Xq%KN!Pn/}o٘""9M`b3V 8.==,tHImm/UT$$8rkN~S`y "\~7OX*=ݱ_P377T}$9u@/U Mr#U7nUC޺/4=;hE#9q8~^O~[")ߑsժhf(V^Z9f?=Z)&g%l#$]v""Gzz|T)g o&vڇgf:SmV.''zέiCU,޳v [s7(mz@@-FWUbiw:)0<~.1Bk}pÆDu>=z|(Zr&<9؅xgcHT%Kf('0`6.oȽE yNގ;,\8Y^xgc/H+$M`KJZu:k1Ʊ|yTUzC7i2 v^+qժ$%0?ds4?Ou놳ةm۾pvhO b/4j^}αee_Z F…zH0{:w%&~} .!p XQj*51-g!oE]:s. 0&eo~0s1*9HggX@8D]e/>|ǾebXһ>9zu[Eqƾ5d]k湾wu]:\uNXk:$9\ɾw5uc=9. -->

Help]]> | | | alter@sing.ei.uvigo.es]]> Source code]]>Web service for developers]]>
OR]]> AND]]>
AND]]>
OR]]>
true 1 1 font-family: Courier;white-space:pre;word-wrap:normal true true converter.setInputText(event.value); input.setValue(event.value);converter.read()
AND]]> AND]]>
1 1 font-family: Courier;white-space:pre;word-wrap:normal true true true
AND]]>
1 1 font-family: Courier;white-space:pre;word-wrap:normal true true
1 1 font-family: Courier;white-space:pre;word-wrap:normal; true true
1 1 font-family: Courier;white-space:pre;word-wrap:normal true true
ALTER-1.3.4/alter-web/src/main/webapp/styles.css000077500000000000000000000127721300536243200213100ustar00rootroot00000000000000/* * This file is part of ALTER. * * ALTER 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. * * ALTER 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 Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ALTER. If not, see . * */ .singbanner{ width: 100%; height:25px; border-width: 0px; padding:0px; background-color: #000000; border-spacing: 0px; margin-top: 0px; margin-bottom: 0px; border-collapse:collapse; color:white; } .singbanner td{ border-width: 0px; padding:0px; height:0px; border-spacing: 0px; margin-top: 0px; margin-bottom:0px; margin:0px; background-image: url("img/fondosing.gif"); } .singbanner td#second{ border-width: 0px; padding:0px; border-spacing: 0px; margin-top: 0px; background-image: url("img/fondosing.gif"); text-align:right; } a.sing:active{ color: white; text-decoration: none; } a.sing:visited{ color: white; text-decoration: none; } a.sing:hover { color: white; text-decoration: underline; } .gray { color:gray; } .black{ color:black } .step1-header,.step3-header,.step3bw-header{ color: #0F3B82; font: normal 11px tahoma, arial, verdana, sans-serif; font-weight:bold; padding: 8px 3px 4px 5px; border-bottom: 1px solid #9ecad8; background-repeat:no-repeat; white-space: nowrap; overflow: hidden; line-height: 15px; zoom: 1; } .step2-header,.step2bw-header,.step4-header,.step4bw-header{ color: #0F3B82; font: normal 11px tahoma, arial, verdana, sans-serif; font-weight:bold; padding: 25px 3px 4px 5px; border-bottom: 1px solid #9ecad8; background-repeat:no-repeat; white-space: nowrap; overflow: hidden; line-height: 15px; zoom: 1; } .step1-header { background-image: url("img/step_01_color.png"); } .step2-header { background-image: url("img/step_02_color.png"); } .step2bw-header { background-image: url("img/step_02_bw.png"); } .step3-header { background-image: url("img/step_03_color.png"); } .step3bw-header { background-image: url("img/step_03_bw.png"); } .step4-header { background-image: url("img/step_04_color.png"); } .step4bw-header { background-image: url("img/step_04_bw.png"); } .step1,.step2,.step2bw,.step3,.step3bw,.step4,.step4bw{border:1px solid #9ECAD8;position:absolute;overflow:hidden;background-color:white;} .step1,.step2,.step2bw,.step3,.step3bw,.step4,.step4bw{width:100%;} .step1-noborder,.step2-noborder,.step2bw-noborder,.step3-noborder,.step3bw-noborder,.step4-noborder,.step4bw-noborder{border:0;} .step2,.step2bw,.step4,.step4bw{z-index:8;} .step1,.step1-colpsd,.step1bw-colpsd,.step3,.step3bw,.step3-colpsd,.step3bw-colpsd{z-index:16;} .step1-exp,.step3-exp,.step3bw-exp{margin:3px;float:right;} .step1-colps,.step3-colps,.step3bw-colps{background-position:0 0;} .step1-colps-over,.step3-colps-over,.step3bw-colps-over{background-position:-16px 0;} .step1-exp,.step3-exp,.step3bw-exp{background-position:0 -32px;} .step1-exp-over,.step3-exp-over,.step3bw-exp-over{background-position:-16px -32px;} .step1-colpsd,.step3-colpsd,.step3bw-colpsd{background-color:#E1F0F2;width:22px;height:22px;border:1px solid #9ECAD8;overflow:hidden;position:absolute;} .step1-colpsd-over,.step3-colpsd-over,.step3bw-colpsd-over{cursor:pointer;background-color:#EEFCFF;} .z-south-header { color: #0F3B82; font: normal 11px tahoma, arial, verdana, sans-serif; font-weight:bold; padding: 5px 3px 4px 5px; border-bottom: 1px solid #9ecad8; background:transparent repeat-x 0 0; white-space: nowrap; overflow: hidden; line-height: 15px; zoom: 1; } .z-center-header { color: #0F3B82; font: normal 11px tahoma, arial, verdana, sans-serif; font-weight:bold; padding: 5px 3px 4px 5px; border-bottom: 1px solid #9ecad8; background:transparent repeat-x 0 0; border: 1px solid #9ecad8; white-space: nowrap; overflow: hidden; line-height: 15px; zoom: 1; } .z-east-header { color: #0F3B82; font: normal 11px tahoma, arial, verdana, sans-serif; font-weight:bold; padding: 5px 3px 4px 5px; border-bottom: 1px solid #9ecad8; border: 1px solid #9ecad8; background:transparent repeat-x 0 0; white-space: nowrap; overflow: hidden; line-height: 15px; zoom: 1; } .z-west-header { color: #0F3B82; font: normal 11px tahoma, arial, verdana, sans-serif; font-weight:bold; padding: 5px 3px 4px 5px; border-bottom: 1px solid #9ecad8; border: 1px solid #9ecad8; background:transparent repeat-x 0 0; white-space: nowrap; overflow: hidden; line-height: 15px; zoom: 1; } .z-panel-header { overflow: hidden; zoom: 1; color: #15428b; font: normal; padding: 5px 3px 4px 5px; border: 1px solid #B1CBD5; line-height: 15px; background:transparent repeat-x 0 -1px; font-weight:bold; } body{ font-family:Verdana,Tahoma,Arial,Helvetica,sans-serif; font-size:12px; font-weight:normal; } ALTER-1.3.4/pom.xml000066400000000000000000000027221300536243200137040ustar00rootroot00000000000000 4.0.0 es.uvigo.ei.sing alter-project 1.3.4 The ALTER Project http://sing.ei.uvigo.es/alter pom UTF-8 sing-maven2-repository ftp://sing.ei.uvigo.es sing-repository SING repository http://sing.ei.uvigo.es/maven2 alter-lib alter-web org.apache.maven.plugins maven-source-plugin 3.0.1 attach-sources jar