Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 1.1 Source Code Directory
JDK 1.1 source code directory contains Java source code for JDK 1.1 core classes: "C:\fyicenter\jdk-1.1.8\src".
Here is the list of Java classes of the JDK 1.1 source code:
✍: FYIcenter
⏎ java/lang/Character.java
/* * @(#)Character.java 1.47 01/12/10 * * Copyright 2002 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.lang; /** * The Character class wraps a value of the primitive type <code>char</code> * in an object. An object of type <code>Character</code> contains a * single field whose type is <code>char</code>. * <p> * In addition, this class provides several methods for determining * the type of a character and converting characters from uppercase * to lowercase and vice versa. * <p> * Many of the methods of class <code>Character</code> are defined * in terms of a "Unicode attribute table" that specifies * a name for every defined Unicode code point. The table also * includes other attributes, such as a decimal value, an uppercase * equivalent, a lowercase equivalent, and/or a titlecase equivalent. * The Unicode attribute table is available on the World Wide Web as * the file: * <ul><code> * ftp://unicode.org/pub/MappingTables/UnicodeData1.1.5.txt * </code></ul> * <p> * For a more detailed specification of the <code>Character</code> * class, one that encompasses the exact behavior of methods such as * <code>isDigit</code>, <code>isLetter</code>, * <code>isLowerCase</code>, and <code>isUpperCase</code> over the * full range of Unicode values, see Gosling, Joy, and Steele, <i>The * Java Language Specification</i>. * * @author Lee Boynton * @author Guy Steele * @author Akira Tanaka * @version 1.47 12/10/01 * @since JDK1.0 */ public final class Character extends Object implements java.io.Serializable { /** * The minimum radix available for conversion to and from Strings. * The constant value of this field is the smallest value permitted * for the radix argument in radix-conversion methods such as the * <code>digit</code> method, the <code>forDigit</code> * method, and the <code>toString</code> method of class * <code>Integer</code>. * * @see java.lang.Character#digit(char, int) * @see java.lang.Character#forDigit(int, int) * @see java.lang.Integer#toString(int, int) * @see java.lang.Integer#valueOf(java.lang.String) * @since JDK1.0 */ public static final int MIN_RADIX = 2; /** * The maximum radix available for conversion to and from Strings. * The constant value of this field is the largest value permitted * for the radix argument in radix-conversion methods such as the * <code>digit</code> method, the <code>forDigit</code> * method, and the <code>toString</code> method of class * <code>Integer</code>. * * @see java.lang.Character#digit(char, int) * @see java.lang.Character#forDigit(int, int) * @see java.lang.Integer#toString(int, int) * @see java.lang.Integer#valueOf(java.lang.String) * @since JDK1.0 */ public static final int MAX_RADIX = 36; /** * The constant value of this field is the smallest value of type * <code>char</code>. * * @since JDK1.0.2 */ public static final char MIN_VALUE = '\u0000'; /** * The constant value of this field is the largest value of type * <code>char</code>. * * @since JDK1.0.2 */ public static final char MAX_VALUE = '\uffff'; /** * The Class object representing the primitive type char. * * @since JDK1.1 */ public static final Class TYPE = Class.getPrimitiveClass("char"); /* * Public data for enumerated Unicode general category types * * @since JDK1.1 */ public static final byte UNASSIGNED = 0, UPPERCASE_LETTER = 1, LOWERCASE_LETTER = 2, TITLECASE_LETTER = 3, MODIFIER_LETTER = 4, OTHER_LETTER = 5, NON_SPACING_MARK = 6, ENCLOSING_MARK = 7, COMBINING_SPACING_MARK = 8, DECIMAL_DIGIT_NUMBER = 9, LETTER_NUMBER = 10, OTHER_NUMBER = 11, SPACE_SEPARATOR = 12, LINE_SEPARATOR = 13, PARAGRAPH_SEPARATOR = 14, CONTROL = 15, FORMAT = 16, PRIVATE_USE = 18, SURROGATE = 19, DASH_PUNCTUATION = 20, START_PUNCTUATION = 21, END_PUNCTUATION = 22, CONNECTOR_PUNCTUATION = 23, OTHER_PUNCTUATION = 24, MATH_SYMBOL = 25, CURRENCY_SYMBOL = 26, MODIFIER_SYMBOL = 27, OTHER_SYMBOL = 28; /** * The value of the Character. */ private char value; /** use serialVersionUID from JDK 1.0.2 for interoperability */ private static final long serialVersionUID = 3786198910865385080L; /** * Constructs a <code>Character</code> object and initializes it so * that it represents the primitive <code>value</code> argument. * * @param value value for the new <code>Character</code> object. * @since JDK1.0 */ public Character(char value) { this.value = value; } /** * Returns the value of this Character object. * @return the primitive <code>char</code> value represented by * this object. * @since JDK1.0 */ public char charValue() { return value; } /** * Returns a hash code for this Character. * @return a hash code value for this object. * @since JDK1.0 */ public int hashCode() { return (int)value; } /** * Compares this object against the specified object. * The result is <code>true</code> if and only if the argument is not * <code>null</code> and is a <code>Character</code> object that * represents the same <code>char</code> value as this object. * * @param obj the object to compare with. * @return <code>true</code> if the objects are the same; * <code>false</code> otherwise. * @since JDK1.0 */ public boolean equals(Object obj) { if ((obj != null) && (obj instanceof Character)) { return value == ((Character)obj).charValue(); } return false; } /** * Returns a String object representing this character's value. * Converts this <code>Character</code> object to a string. The * result is a string whose length is <code>1</code>. The string's * sole component is the primitive <code>char</code> value represented * by this object. * * @return a string representation of this object. * @since JDK1.0 */ public String toString() { char buf[] = {value}; return String.valueOf(buf); } /** * Determines if the specified character is a lowercase character. * A character is lowercase if it is not in the range * <code>'\u2000'</code> through <code>'\u2FFF'</code>, the Unicode * attribute table does not specify a mapping to lowercase for the * character, and at least one of the following is true: * <ul> * <li>The attribute table specifies a mapping to uppercase for the * character. * <li>The name for the character contains the words "<code>SMALL * LETTER</code>". * <li>The name for the character contains the words "<code>SMALL * LIGATURE</code>". * </ul> * <p> A character is considered to be lowercase if and only if * it is specified to be lowercase by the Unicode 2.0 standard * (category "Ll" in the Unicode specification data file). * <p> * Of the ISO-LATIN-1 characters (character codes 0x0000 through 0x00FF), * the following are lowercase: * <p><blockquote><pre> * a b c d e f g h i j k l m n o p q r s t u v w x y z * \u00DF \u00E0 \u00E1 \u00E2 \u00E3 \u00E4 \u00E5 \u00E6 \u00E7 * \u00E8 \u00E9 \u00EA \u00EB \u00EC \u00ED \u00EE \u00EF \u00F0 * \u00F1 \u00F2 \u00F3 \u00F4 \u00F5 \u00F6 \u00F8 \u00F9 \u00FA * \u00FB \u00FC \u00FD \u00FE \u00FF * </pre></blockquote> * <p> Many other Unicode characters are lowercase, too. * * @param ch the character to be tested. * @return <code>true</code> if the character is lowercase; * <code>false</code> otherwise. * @see java.lang.Character#isLowerCase(char) * @see java.lang.Character#isTitleCase(char) * @see java.lang.Character#toLowerCase(char) * @since JDK1.0 */ public static boolean isLowerCase(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) == LOWERCASE_LETTER; } /** * Determines if the specified character is an uppercase character. * A character is uppercase if it is not in the range * <code>'\u2000'</code> through <code>'\u2FFF'</code>, the Unicode * attribute table does not specify a mapping to uppercase for the * character, and at least one of the following is true: * <ul> * <li>The attribute table specifies a mapping to lowercase for the * character. * <li>The name for the character contains the words * "<code>CAPITAL LETTER</code>". * <li>The name for the character contains the words * "<code>CAPITAL LIGATURE</code>". * </ul> * <p> * Of the ISO-LATIN-1 characters (character codes 0x0000 through 0x00FF), * the following are uppercase: * <p><blockquote><pre> * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z * \u00C0 \u00C1 \u00C2 \u00C3 \u00C4 \u00C5 \u00C6 \u00C7 * \u00C8 \u00C9 \u00CA \u00CB \u00CC \u00CD \u00CE \u00CF \u00D0 * \u00D1 \u00D2 \u00D3 \u00D4 \u00D5 \u00D6 \u00D8 \u00D9 \u00DA * \u00DB \u00DC \u00DD \u00DE * </pre></blockquote> * <p> Many other Unicode characters are uppercase, too. * * @param ch the character to be tested. * @return <code>true</code> if the character is uppercase; * <code>false</code> otherwise. * @see java.lang.Character#isLowerCase(char) * @see java.lang.Character#isTitleCase(char) * @see java.lang.Character#toUpperCase(char) * @since 1.0 */ public static boolean isUpperCase(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) == UPPERCASE_LETTER; } /** * Determines if the specified character is a titlecase character. * A character is considered to be titlecase if and only if * it is specified to be titlecase by the Unicode 2.0 standard * (category "Lt" in the Unicode specification data file). * <p> * The printed representations of four Unicode characters look like * pairs of Latin letters. For example, there is an uppercase letter * that looks like "LJ" and has a corresponding lowercase letter that * looks like "lj". A third form, which looks like "Lj", * is the appropriate form to use when rendering a word in lowercase * with initial capitals, as for a book title. * <p> * These are the Unicode characters for which this method returns * <code>true</code>: * <ul> * <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON</code> * <li><code>LATIN CAPITAL LETTER L WITH SMALL LETTER J</code> * <li><code>LATIN CAPITAL LETTER N WITH SMALL LETTER J</code> * <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z</code> * </ul> * * @param ch the character to be tested. * @return <code>true</code> if the character is titlecase; * <code>false</code> otherwise. * @see java.lang.Character#isLowerCase(char) * @see java.lang.Character#isUpperCase(char) * @see java.lang.Character#toTitleCase(char) * @since JDK1.0.2 */ public static boolean isTitleCase(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) == TITLECASE_LETTER; } /** * Determines if the specified character is a digit. * A character is considered to be a digit if it is not in the range * <code>'\u2000' <= ch <= '\u2FFF'</code> * and its Unicode name contains the word * "<code>DIGIT</code>". For a more complete * specification that encompasses all Unicode characters that are * defined as digits, see Gosling, Joy, and Steele, <i>The Java * Language Specification</i>. * <p> * These are the ranges of Unicode characters that are considered digits: * <table> * <tr><td>0x0030 through 0x0039</td> * <td>ISO-LATIN-1 digits ('0' through '9')</td></tr> * <tr><td>0x0660 through 0x0669</td> <td>Arabic-Indic digits</td></tr> * <tr><td>0x06F0 through 0x06F9</td> * <td>Extended Arabic-Indic digits</td></tr> * <tr><td>0x0966 through 0x096F</td> <td>Devanagari digits</td></tr> * <tr><td>0x09E6 through 0x09EF</td> <td>Bengali digits</td></tr> * <tr><td>0x0A66 through 0x0A6F</td> <td>Gurmukhi digits</td></tr> * <tr><td>0x0AE6 through 0x0AEF</td> <td>Gujarati digits</td></tr> * <tr><td>0x0B66 through 0x0B6F</td> <td>Oriya digits</td></tr> * <tr><td>0x0BE7 through 0x0BEF</td> <td>Tamil digits</td></tr> * <tr><td>0x0C66 through 0x0C6F</td> <td>Telugu digits</td></tr> * <tr><td>0x0CE6 through 0x0CEF</td> <td>Kannada digits</td></tr> * <tr><td>0x0D66 through 0x0D6F</td> <td>Malayalam digits</td></tr> * <tr><td>0x0E50 through 0x0E59</td> <td>Thai digits</td></tr> * <tr><td>0x0ED0 through 0x0ED9</td> <td>Lao digits</td></tr> * <tr><td>0x0F20 through 0x0F29</td> <td>Tibetan digits</td></tr> * <tr><td>0xFF10 through 0xFF19</td> <td>Fullwidth digits</td></tr> * </table> * * @param ch the character to be tested. * @return <code>true</code> if the character is a digit; * <code>false</code> otherwise. * @see java.lang.Character#digit(char, int) * @see java.lang.Character#forDigit(int, int) * @since JDK1.0 */ public static boolean isDigit(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) == DECIMAL_DIGIT_NUMBER; } /** * Determines if a character has a defined meaning in Unicode. * A character is defined if at least one of the following is true: * <ul> * <li>It has an entry in the Unicode attribute table. * <li>Its value is in the range * <code> * '\u3040' <= ch <= '\u9FA5'</code>. * <li>Its value is in the range * <code> * '\uF900' <= ch <= '\uFA2D'</code>. * </ul> * * @param ch the character to be tested * @return <code>true</code> if the character has a defined meaning * in Unicode; <code>false</code> otherwise. * @see java.lang.Character#isDigit(char) * @see java.lang.Character#isLetter(char) * @see java.lang.Character#isLetterOrDigit(char) * @see java.lang.Character#isLowerCase(char) * @see java.lang.Character#isTitleCase(char) * @see java.lang.Character#isUpperCase(char) * @since JDK1.0.2 */ public static boolean isDefined(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) != UNASSIGNED; } /** * Determines if the specified character is a letter. For a * more complete specification that encompasses all Unicode * characters, see Gosling, Joy, and Steele, <i>The Java Language * Specification</i>. * * <p> A character is considered to be a letter if and only if * it is specified to be a letter by the Unicode 2.0 standard * (category "Lu", "Ll", "Lt", "Lm", or "Lo" in the Unicode * specification data file). * * <p> Note that most ideographic characters are considered * to be letters (category "Lo") for this purpose. * * <p> Note also that not all letters have case: many Unicode characters are * letters but are neither uppercase nor lowercase nor titlecase. * * @param ch the character to be tested. * @return <code>true</code> if the character is a letter; * <code>false</code> otherwise. * @see java.lang.Character#isDigit(char) * @see java.lang.Character#isJavaIdentifierStart(char) * @see java.lang.Character#isJavaLetter(char) * @see java.lang.Character#isJavaLetterOrDigit(char) * @see java.lang.Character#isLetterOrDigit(char) * @see java.lang.Character#isLowerCase(char) * @see java.lang.Character#isTitleCase(char) * @see java.lang.Character#isUnicodeIdentifierStart(char) * @see java.lang.Character#isUpperCase(char) * @since JDK1.0 */ public static boolean isLetter(char ch) { return (((((1 << UPPERCASE_LETTER) | (1 << LOWERCASE_LETTER) | (1 << TITLECASE_LETTER) | (1 << MODIFIER_LETTER) | (1 << OTHER_LETTER)) >> (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F)) & 1) != 0); } /** * Determines if the specified character is a letter or digit. * For a more complete specification that encompasses all Unicode * characters, see Gosling, Joy, and Steele, <i>The Java Language * Specification</i>. * * <p> A character is considered to be a letter if and only if * it is specified to be a letter or a digit by the Unicode 2.0 standard * (category "Lu", "Ll", "Lt", "Lm", "Lo", or "Nd" in the Unicode * specification data file). In other words, isLetterOrDigit is true * of a character if and only if either isLetter is true of the character * or isDigit is true of the character. * * @param ch the character to be tested. * @return <code>true</code> if the character is a letter or digit; * <code>false</code> otherwise. * @see java.lang.Character#isDigit(char) * @see java.lang.Character#isJavaIdentifierPart(char) * @see java.lang.Character#isJavaLetter(char) * @see java.lang.Character#isJavaLetterOrDigit(char) * @see java.lang.Character#isLetter(char) * @see java.lang.Character#isUnicodeIdentifierPart(char) * @since JDK1.0.2 */ public static boolean isLetterOrDigit(char ch) { return (((((1 << UPPERCASE_LETTER) | (1 << LOWERCASE_LETTER) | (1 << TITLECASE_LETTER) | (1 << MODIFIER_LETTER) | (1 << OTHER_LETTER) | (1 << DECIMAL_DIGIT_NUMBER)) >> (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F)) & 1) != 0); } /** * Determines if the specified character is a * "Java" letter, that is, the character is permissible * as the first character in an identifier in the Java language. * <p> * A character is considered to be a Java letter if and only if it * is a letter, the ASCII dollar sign character <code>'$'</code>, or * the underscore character <code>'_'</code>. * * @param ch the character to be tested. * @return <code>true</code> if the character is a Java letter; * <code>false</code> otherwise. * @see java.lang.Character#isJavaIdentifierStart(char) * @see java.lang.Character#isJavaLetterOrDigit(char) * @see java.lang.Character#isLetter(char) * @see java.lang.Character#isLetterOrDigit(char) * @see java.lang.Character#isUnicodeIdentifierStart(char) * @since JDK1.0.2 * @deprecated Replaced by isJavaIdentifierStart(char). */ public static boolean isJavaLetter(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00070000) >= 0x00050000; } /** * Determines if the specified character is a * "Java" letter or digit, that is, the character is * permissible as a non-initial character in an identifier in the * Java language. * <p> * A character is considered to be a Java letter or digit if and * only if it is a letter, a digit, the ASCII dollar sign character * <code>'$'</code>, or the underscore character <code>'_'</code>. * * @param ch the character to be tested. * @return <code>true</code> if the character is a Java letter or digit; * <code>false</code> otherwise. * @see java.lang.Character#isJavaIdentifierPart(char) * @see java.lang.Character#isJavaLetter(char) * @see java.lang.Character#isLetter(char) * @see java.lang.Character#isLetterOrDigit(char) * @see java.lang.Character#isUnicodeIdentifierPart(char) * @since JDK1.0.2 * @deprecated Replaced by isJavaIdentifierPart(char). */ public static boolean isJavaLetterOrDigit(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00030000) != 0; } /** * Determines if the specified character is * permissible as the first character in a Java identifier. * A character may start a Java identifier if and only if * it is one of the following: * <ul> * <li> a letter * <li> a currency symbol (such as "$") * <li> a connecting punctuation character (such as "_"). * </ul> * * @param ch the character to be tested. * @return true if the character may start a Java identifier; * false otherwise. * @see java.lang.Character#isJavaIdentifierPart(char) * @see java.lang.Character#isLetter(char) * @see java.lang.Character#isUnicodeIdentifierStart(char) * @since JDK1.1 */ public static boolean isJavaIdentifierStart(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00070000) >= 0x00050000; } /** * Determines if the specified character may be part of a Java * identifier as other than the first character. * A character may be part of a Java identifier if and only if * it is one of the following: * <ul> * <li> a letter * <li> a currency symbol (such as "$") * <li> a connecting punctuation character (such as "_"). * <li> a digit * <li> a numeric letter (such as a Roman numeral character) * <li> a combining mark * <li> a non-spacing mark * <li> an ignorable control character * </ul> * * @param ch the character to be tested. * @return true if the character may be part of a Unicode identifier; * false otherwise. * @see java.lang.Character#isIdentifierIgnorable(char) * @see java.lang.Character#isJavaIdentifierStart(char) * @see java.lang.Character#isLetterOrDigit(char) * @see java.lang.Character#isUnicodeIdentifierPart(char) * @since JDK1.1 */ public static boolean isJavaIdentifierPart(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00030000) != 0; } /** * Determines if the specified character is * permissible as the first character in a Unicode identifier. * A character may start a Unicode identifier if and only if * it is a letter. * * @param ch the character to be tested. * @return true if the character may start a Unicode identifier; * false otherwise. * @see java.lang.Character#isJavaIdentifierStart(char) * @see java.lang.Character#isLetter(char) * @see java.lang.Character#isUnicodeIdentifierPart(char) * @since JDK1.1 */ public static boolean isUnicodeIdentifierStart(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00070000) == 0x00070000; } /** * Determines if the specified character may be part of a Unicode * identifier as other than the first character. * A character may be part of a Unicode identifier if and only if * it is one of the following: * <ul> * <li> a letter * <li> a connecting punctuation character (such as "_"). * <li> a digit * <li> a numeric letter (such as a Roman numeral character) * <li> a combining mark * <li> a non-spacing mark * <li> an ignorable control character * </ul> * * @param ch the character to be tested. * @return true if the character may be part of a Unicode identifier; * false otherwise. * @see java.lang.Character#isIdentifierIgnorable(char) * @see java.lang.Character#isJavaIdentifierPart(char) * @see java.lang.Character#isLetterOrDigit(char) * @see java.lang.Character#isUnicodeIdentifierStart(char) * @since JDK1.1 */ public static boolean isUnicodeIdentifierPart(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00010000) != 0; } /** * Determines if the specified character should be regarded as * an ignorable character in a Java identifier or a Unicode identifier. * The following Unicode characters are ignorable in a Java identifier * or a Unicode identifier: * <table> * <tr><td>0x0000 through 0x0008,</td> * <td>ISO control characters that</td></tr> * <tr><td>0x000E through 0x001B,</td> <td>are not whitespace</td></tr> * <tr><td>and 0x007F through 0x009F</td></tr> * <tr><td>0x200C through 0x200F</td> <td>join controls</td></tr> * <tr><td>0x200A through 0x200E</td> <td>bidirectional controls</td></tr> * <tr><td>0x206A through 0x206F</td> <td>format controls</td></tr> * <tr><td>0xFEFF</td> <td>zero-width no-break space</td></tr> * </table> * * @param ch the character to be tested. * @return true if the character may be part of a Unicode identifier; * false otherwise. * @see java.lang.Character#isJavaIdentifierPart(char) * @see java.lang.Character#isUnicodeIdentifierPart(char) * @since JDK1.1 */ public static boolean isIdentifierIgnorable(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00070000) == 0x00010000; } /** * The given character is mapped to its lowercase equivalent; if the * character has no lowercase equivalent, the character itself is * returned. * <p> * A character has a lowercase equivalent if and only if a lowercase * mapping is specified for the character in the Unicode attribute * table. * <p> * Note that some Unicode characters in the range * <code>'\u2000'</code> to <code>'\u2FFF'</code> have lowercase * mappings; this method does map such characters to their lowercase * equivalents even though the method <code>isUpperCase</code> does * not return <code>true</code> for such characters. * * @param ch the character to be converted. * @return the lowercase equivalent of the character, if any; * otherwise the character itself. * @see java.lang.Character#isLowerCase(char) * @see java.lang.Character#isUpperCase(char) * @see java.lang.Character#toTitleCase(char) * @see java.lang.Character#toUpperCase(char) * @since JDK1.0 */ public static char toLowerCase(char ch) { int val = A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)]; if ((val & 0x00200000) != 0) return (char)(ch + (val >> 22)); else return ch; } /** * Converts the character argument to uppercase. A character has an * uppercase equivalent if and only if an uppercase mapping is * specified for the character in the Unicode attribute table. * <p> * Note that some Unicode characters in the range * <code>'\u2000'</code> to <code>'\u2000FFF'</code> have uppercase * mappings; this method does map such characters to their titlecase * equivalents even though the method <code>isLowerCase</code> does * not return <code>true</code> for such characters. * * @param ch the character to be converted. * @return the uppercase equivalent of the character, if any; * otherwise the character itself. * @see java.lang.Character#isLowerCase(char) * @see java.lang.Character#isUpperCase(char) * @see java.lang.Character#toLowerCase(char) * @see java.lang.Character#toTitleCase(char) * @since JDK1.0 */ public static char toUpperCase(char ch) { int val = A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)]; if ((val & 0x00100000) != 0) return (char)(ch - (val >> 22)); else return ch; } /** * Converts the character argument to titlecase. A character has a * titlecase equivalent if and only if a titlecase mapping is * specified for the character in the Unicode attribute table. * <p> * Note that some Unicode characters in the range * <code>'\u2000'</code> through <code>'\u2FFF'</code> have titlecase * mappings; this method does map such characters to their titlecase * equivalents even though the method <code>isTitleCase</code> does * not return <code>true</code> for such characters. * <p> * There are only four Unicode characters that are truly titlecase forms * that are distinct from uppercase forms. As a rule, if a character has no * true titlecase equivalent but does have an uppercase mapping, then the * Unicode 2.0 attribute table specifies a titlecase mapping that is the * same as the uppercase mapping. * * @param ch the character to be converted. * @return the titlecase equivalent of the character, if any; * otherwise the character itself. * @see java.lang.Character#isTitleCase(char) * @see java.lang.Character#toLowerCase(char) * @see java.lang.Character#toUpperCase(char) * @since JDK1.0.2 */ public static char toTitleCase(char ch) { int val = A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)]; if ((val & 0x00080000) != 0) { // There is a titlecase equivalent. Perform further checks: if ((val & 0x00100000) == 0) { // The character does not have an uppercase equivalent, so it must // already be uppercase; so add 1 to get the titlecase form. return (char)(ch + 1); } else if ((val & 0x00200000) == 0) { // The character does not have a lowercase equivalent, so it must // already be lowercase; so subtract 1 to get the titlecase form. return (char)(ch - 1); } else { // The character has both an uppercase equivalent and a lowercase // equivalent, so it must itself be a titlecase form; return it. return ch; } } else if ((val & 0x00100000) != 0) { // This character has no titlecase equivalent but it does have an // uppercase equivalent, so use that (subtract the signed case offset). return (char)(ch - (val >> 22)); } else return ch; } /** * Returns the numeric value of the character <code>ch</code> in the * specified radix. * <p> * If the radix is not in the range <code>MIN_RADIX</code> <= * <code>radix</code> <= <code>MAX_RADIX</code> or if the * value of <code>ch</code> is not a valid digit in the specified * radix, <code>-1</code> is returned. A character is a valid digit * if at least one of the following is true: * <ul> * <li>The method <code>isDigit</code> is true of the character * and the Unicode decimal digit value of the character (or its * single-character decomposition) is less than the specified radix. * In this case the decimal digit value is returned. * <li>The character is one of the uppercase Latin letters * <code>'A'</code> through <code>'Z'</code> and its code is less than * <code>radix + 'A' - 10</code>. * In this case, <code>ch - 'A' + 10</code> * is returned. * <li>The character is one of the lowercase Latin letters * <code>'a'</code> through <code>'z'</code> and its code is less than * <code>radix + 'a' - 10</code>. * In this case, <code>ch - 'a' + 10</code> * is returned. * </ul> * * @param ch the character to be converted. * @param radix the radix. * @return the numeric value represented by the character in the * specified radix. * @see java.lang.Character#forDigit(int, int) * @see java.lang.Character#isDigit(char) * @since JDK1.0 */ public static int digit(char ch, int radix) { int value = -1; if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) { int val = A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)]; int kind = val & 0x1F; if (kind == DECIMAL_DIGIT_NUMBER) { value = ((ch + (val >> 9)) & 0x1F); } else if ((val & 0x0000C000) == 0x0000C000) { // Java supradecimal digit value = ((ch + (val >> 9)) & 0x1F) + 10; } } return (value < radix) ? value : -1; } /** * Returns the Unicode numeric value of the character as a * nonnegative integer. * If the character does not have a numeric value, then -1 is returned. * If the character has a numeric value that cannot be represented as a * nonnegative integer (for example, a fractional value), then -2 * is returned. * * @param ch the character to be converted. * @return the numeric value of the character, as a nonnegative int value; * -2 if the character has a numeric value that is not a * nonnegative integer; -1 if the character has no numeric value. * @see java.lang.Character#forDigit(char) * @see java.lang.Character#isDigit(char) * @since JDK1.1 */ public static int getNumericValue(char ch) { int val = A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)]; switch ((val >> 14) & 0x3) { default: // cannot occur case (0x00000000 >> 14): // not numeric return -1; case (0x00004000 >> 14): // simple numeric return (ch + (val >> 9)) & 0x1F; case (0x00008000 >> 14) : // "strange" numeric switch (ch) { case '\u0BF1': return 100; // TAMIL NUMBER ONE HUNDRED case '\u0BF2': return 1000; // TAMIL NUMBER ONE THOUSAND case '\u216C': return 50; // ROMAN NUMERAL FIFTY case '\u216D': return 100; // ROMAN NUMERAL ONE HUNDRED case '\u216E': return 500; // ROMAN NUMERAL FIVE HUNDRED case '\u216F': return 1000; // ROMAN NUMERAL ONE THOUSAND case '\u217C': return 50; // SMALL ROMAN NUMERAL FIFTY case '\u217D': return 100; // SMALL ROMAN NUMERAL ONE HUNDRED case '\u217E': return 500; // SMALL ROMAN NUMERAL FIVE HUNDRED case '\u217F': return 1000; // SMALL ROMAN NUMERAL ONE THOUSAND case '\u2180': return 1000; // ROMAN NUMERAL ONE THOUSAND C D case '\u2181': return 5000; // ROMAN NUMERAL FIVE THOUSAND case '\u2182': return 10000; // ROMAN NUMERAL TEN THOUSAND default: return -2; } case (0x0000C000 >> 14): // Java supradecimal return ((ch + (val >> 9)) & 0x1F) + 10; } } /** * Determines if the specified character is ISO-LATIN-1 white space. * This method returns <code>true</code> for the following five * characters only: * <table><code> * <tr><td>'\t'</td> <td>\u0009</td> <td>HORIZONTAL TABULATION</td></tr> * <tr><td>'\n'</td> <td>\u000A</td> <td>NEW LINE</td></tr> * <tr><td>'\f'</td> <td>\u000C</td> <td>FORM FEED</td></tr> * <tr><td>'\r'</td> <td>\u000D</td> <td>CARRIAGE RETURN</td></tr> * <tr><td>' '</td> * <td>\u0020</td> <td>SPACE</td></tr> * </code></table> * * @param ch the character to be tested. * @return <code>true</code> if the character is ISO-LATIN-1 white * space; <code>false</code> otherwise. * @see java.lang.Character#isSpaceChar(char) * @see java.lang.Character#isWhitespace(char) * @since JDK1.0 * @deprecated Replaced by isWhitespace(char). */ public static boolean isSpace(char ch) { return (ch <= 0x0020) && (((((1L << 0x0009) | (1L << 0x000A) | (1L << 0x000C) | (1L << 0x000D) | (1L << 0x0020)) >> ch) & 1L) != 0); } /** * Determines if the specified character is a Unicode space character. * A character is considered to be a space character if and only if * it is specified to be a space character by the Unicode 2.0 standard * (category "Zs", "Zl, or "Zp" in the Unicode specification data file). * * @param ch the character to be tested. * @return true if the character is a space character; false otherwise. * @see java.lang.Character#isWhitespace(char) * @since JDK1.1 */ public static boolean isSpaceChar(char ch) { return (((((1 << SPACE_SEPARATOR) | (1 << LINE_SEPARATOR) | (1 << PARAGRAPH_SEPARATOR)) >> (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F)) & 1) != 0); } /** * Determines if the specified character is white space according to Java. * A character is considered to be a Java whitespace character if and only * if it satisfies one of the following criteria: * <ul> * <li> It is a Unicode space separator (category "Zs"), but is not * a no-break space (\u00A0 or \uFEFF). * <li> It is a Unicode line separator (category "Zl"). * <li> It is a Unicode paragraph separator (category "Zp"). * <li> It is \u0009, HORIZONTAL TABULATION. * <li> It is \u000A, LINE FEED. * <li> It is \u000B, VERTICAL TABULATION. * <li> It is \u000C, FORM FEED. * <li> It is \u000D, CARRIAGE RETURN. * <li> It is \u001C, FILE SEPARATOR. * <li> It is \u001D, GROUP SEPARATOR. * <li> It is \u001E, RECORD SEPARATOR. * <li> It is \u001F, UNIT SEPARATOR. * </ul> * * @param ch the character to be tested. * @return true if the character is a Java whitespace character; * false otherwise. * @see java.lang.Character#isSpaceChar(char) * @since JDK1.1 */ public static boolean isWhitespace(char ch) { return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00070000) == 0x00040000; } /** * Determines if the specified character is an ISO control character. * A character is considered to be an ISO control character if its * code is in the range \u0000 through \u001F or in the range * \u007F through \u009F. * * @param ch the character to be tested. * @return true if the character is an ISO control character; * false otherwise. * * @see java.lang.Character#isSpaceChar(char) * @see java.lang.Character#isWhitespace(char) * @since JDK1.1 */ public static boolean isISOControl(char ch) { return (ch <= 0x009F) && ((ch <= 0x001F) || (ch >= 0x007F)); } /** * Returns a value indicating a character category. * * @param ch the character to be tested. * @return a value of type int, the character category. * @see java.lang.Character#COMBINING_SPACING_MARK * @see java.lang.Character#CONNECTOR_PUNCTUATION * @see java.lang.Character#CONTROL * @see java.lang.Character#CURRENCY_SYMBOL * @see java.lang.Character#DASH_PUNCTUATION * @see java.lang.Character#DECIMAL_DIGIT_NUMBER * @see java.lang.Character#ENCLOSING_MARK * @see java.lang.Character#END_PUNCTUATION * @see java.lang.Character#FORMAT * @see java.lang.Character#LETTER_NUMBER * @see java.lang.Character#LINE_SEPARATOR * @see java.lang.Character#LOWERCASE_LETTER * @see java.lang.Character#MATH_SYMBOL * @see java.lang.Character#MODIFIER_LETTER * @see java.lang.Character#MODIFIER_SYMBOL * @see java.lang.Character#NON_SPACING_MARK * @see java.lang.Character#OTHER_LETTER * @see java.lang.Character#OTHER_NUMBER * @see java.lang.Character#OTHER_PUNCTUATION * @see java.lang.Character#OTHER_SYMBOL * @see java.lang.Character#PARAGRAPH_SEPARATOR * @see java.lang.Character#PRIVATE_USE * @see java.lang.Character#SPACE_SEPARATOR * @see java.lang.Character#START_PUNCTUATION * @see java.lang.Character#SURROGATE * @see java.lang.Character#TITLECASE_LETTER * @see java.lang.Character#UNASSIGNED * @see java.lang.Character#UPPERCASE_LETTER * @since JDK1.1 */ public static int getType(char ch) { return A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F; } /** * Determines the character representation for a specific digit in * the specified radix. If the value of <code>radix</code> is not a * valid radix, or the value of <code>digit</code> is not a valid * digit in the specified radix, the null character * (<code>'\u0000'</code>) is returned. * <p> * The <code>radix</code> argument is valid if it is greater than or * equal to <code>MIN_RADIX</code> and less than or equal to * <code>MAX_RADIX</code>. The <code>digit</code> argument is valid if * <code>0 <= digit <= radix</code>. * <p> * If the digit is less than 10, then * <code>'0' + digit</code> is returned. Otherwise, the value * <code>'a' + digit - 10</code> is returned. * * @param digit the number to convert to a character. * @param radix the radix. * @return the <code>char</code> representation of the specified digit * in the specified radix. * @see java.lang.Character#MIN_RADIX * @see java.lang.Character#MAX_RADIX * @see java.lang.Character#digit(char, int) * @since JDK1.0 */ public static char forDigit(int digit, int radix) { if ((digit >= radix) || (digit < 0)) { return '\0'; } if ((radix < MIN_RADIX) || (radix > MAX_RADIX)) { return '\0'; } if (digit < 10) { return (char)('0' + digit); } return (char)('a' - 10 + digit); } /* The character properties are currently encoded into 32 bits in the following manner: 10 bits signed offset used for converting case 1 bit if 1, adding the signed offset converts the character to lowercase 1 bit if 1, subtracting the signed offset converts the character to uppercase 1 bit if 1, this character has a titlecase equivalent (possibly itself) 3 bits 0 may not be part of an identifier 1 ignorable control; may continue a Unicode identifier or Java identifier 2 may continue a Java identifier but not a Unicode identifier (unused) 3 may continue a Unicode identifier or Java identifier 4 is a Java whitespace character 5 may start or continue a Java identifier; may continue but not start a Unicode identifier (underscores) 6 may start or continue a Java identifier but not a Unicode identifier ($) 7 may start or continue a Unicode identifier or Java identifier Thus: 5, 6, 7 may start a Java identifier 1, 2, 3, 5, 6, 7 may continue a Java identifier 7 may start a Unicode identifier 1, 3, 5, 7 may continue a Unicode identifier 1 is ignorable within an identifier 4 is Java whitespace 2 bits 0 this character has no numeric property 1 adding the digit offset to the character code and then masking with 0x1F will produce the desired numeric value 2 this character has a "strange" numeric value 3 a Java supradecimal digit: adding the digit offset to the character code, then masking with 0x1F, then adding 10 will produce the desired numeric value 5 bits digit offset 4 bits reserved for future use 5 bits character type */ // The following tables and code generated using: // java GenerateCharacter -string -o Character.java.x [10 5 1] [-spec UnicodeData-2.1.2.txt] [-template Character.java.template] // The X table has 1024 entries for a total of 1024 bytes. private static final byte X[] = new byte[1024]; private static final String X_DATA = "\u0100\u0302\u0504\u0706\u0908\u0B0A\u0D0C\u0F0E\u1110\u1312\u1514\u1716\u1918"+ "\u1B1A\u1C1C\u1C1C\u1C1C\u1C1C\u1E1D\u201F\u2221\u2423\u2625\u2827\u2A29\u2C2B"+ "\u2E2D\u1C1C\u302F\u3231\u3433\u1C35\u1C1C\u3736\u3938\u3B3A\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u3C3C\u3E3D\u403F\u4241\u4443"+ "\u4645\u4847\u4A49\u4C4B\u4E4D\u504F\u1C1C\u5251\u5453\u5555\u5756\u5758\u1C1C"+ "\u5A59\u1C5B\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u5D5C\u5F5E\u3860\u1C61\u6362\u6564\u6766\u6866"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u1C69\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C"+ "\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u1C1C\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838\u3838"+ "\u3838\u3838\u1C6A\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B"+ "\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B\u6B6B\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C"+ "\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C"+ "\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C"+ "\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C\u6C6C"+ "\u6C6C\u6C6C\u6C6C\u6C6C\u3838\u3838\u1C6D\u1C1C\u6F6E\u7170\u7272\u7272\u7473"+ "\u7675\u7877\u7972\u7B7A\u7D7C"; // The Y table has 4032 entries for a total of 8064 bytes. private static final short Y[] = new short[4032]; private static final String Y_DATA = "\000\000\000\000\002\004\004\000\000\000\000\000\000\000\004\004\006\010\012"+ "\014\016\020\022\024\026\026\026\026\026\030\032\034\036\040\040\040\040\040"+ "\040\040\040\040\040\040\040\042\044\046\050\052\052\052\052\052\052\052\052"+ "\052\052\052\052\054\056\060\000\000\000\000\000\000\000\000\000\000\000\000"+ "\000\000\000\000\062\064\064\066\070\072\074\076\100\102\104\106\110\112\114"+ "\116\120\120\120\120\120\120\120\120\120\120\120\122\120\120\120\124\126\126"+ "\126\126\126\126\126\126\126\126\126\130\126\126\126\132\134\134\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134"+ "\136\134\134\134\140\142\142\142\142\142\142\142\144\134\134\134\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\146\142"+ "\142\150\152\134\134\154\156\160\144\162\164\156\166\170\134\172\174\176\134"+ "\134\134\200\202\204\134\206\210\212\142\214\134\216\134\220\220\220\222\224"+ "\226\222\230\142\142\142\142\142\142\142\232\134\134\134\134\134\134\134\134"+ "\134\234\226\134\236\236\134\134\134\134\134\134\134\134\134\134\134\134\134"+ "\134\134\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\236\236\236\236\172\240\242\244\246\250\172\172"+ "\252\254\172\172\256\172\172\260\172\262\264\172\172\172\172\172\172\266\172"+ "\172\270\272\172\172\172\274\172\172\172\172\172\172\172\172\172\172\276\236"+ "\236\236\300\300\300\300\302\304\300\300\300\306\306\306\306\306\306\306\300"+ "\306\306\306\306\306\306\310\300\300\302\306\306\236\236\236\236\236\236\236"+ "\236\236\236\236\312\312\312\312\312\312\312\312\312\312\312\312\312\312\312"+ "\312\312\312\312\312\312\312\312\312\312\312\312\312\312\312\312\312\312\312"+ "\312\236\236\236\236\236\236\236\236\236\236\236\236\236\312\236\236\236\236"+ "\236\236\236\236\236\314\236\236\316\236\320\236\236\306\322\324\326\330\332"+ "\334\120\120\120\120\120\120\120\120\336\120\120\120\120\340\342\344\126\126"+ "\126\126\126\126\126\126\346\126\126\126\126\350\352\354\356\360\362\236\364"+ "\364\364\364\134\134\134\134\134\134\134\366\216\236\236\236\236\236\236\370"+ "\372\372\372\372\372\374\372\120\120\120\120\120\120\120\120\120\120\120\120"+ "\120\120\120\120\126\126\126\126\126\126\126\126\126\126\126\126\126\126\126"+ "\126\376\u0100\u0100\u0100\u0100\u0100\u0102\u0100\134\134\134\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\134\u0104\312\u0106\236\236\236\236"+ "\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134"+ "\134\134\134\134\134\u0108\142\u010A\u010C\u010A\u010C\u010A\236\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\134\236\134\134\134\134\236\134\236"+ "\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\u010E\u0110\u0110\u0110\u0110\u0110\u0110\u0110"+ "\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0112\u0114"+ "\314\314\314\u0116\u0118\u0118\u0118\u0118\u0118\u0118\u0118\u0118\u0118\u0118"+ "\u0118\u0118\u0118\u0118\u0118\u0118\u0118\u0118\u011A\u011C\236\236\236\u011E"+ "\u0120\u0120\u0120\u0120\u0120\u0120\u0120\u0120\u011E\u0120\u0120\u0120\u0120"+ "\u0120\u0120\u0120\u0120\u0120\u0120\u0120\u011E\u0120\u0122\u0122\u0124\u0126"+ "\236\236\236\236\236\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u012A\236\236\u0128\u012C\u012E\236\236\236\236\236"+ "\236\236\236\236\236\236\u012E\236\236\236\236\236\236\u0130\236\u0130\u0132"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u012A"+ "\236\236\u0134\u0128\u0128\u0128\u0128\u0136\u0120\u0120\u0120\u0126\236\236"+ "\236\236\236\236\u0138\u0138\u0138\u0138\u0138\u013A\u013C\236\u013E\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\236\u0128\u0128\u012A\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u012A\u0128\u0128\u0140\u0120\u0120\u0120"+ "\u0142\u0144\u0120\u0120\u0146\u0148\u014A\u0120\u0120\236\026\026\026\026"+ "\026\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\u014C"+ "\u014E\u0150\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\236\u0152\u0154\u0156\312\312\312"+ "\u014E\u0154\u0156\236\u0104\312\u0106\236\220\220\220\220\220\312\314\u0158"+ "\u0158\u0158\u0158\u0158\320\236\236\236\236\236\236\236\u014C\u0154\u0150"+ "\220\220\220\u015A\u0150\u015A\u0150\220\220\220\220\220\220\220\220\220\220"+ "\u015A\220\220\220\u015A\u015A\236\220\220\236\u0106\u0154\u0156\312\u0106"+ "\u015C\u015E\u015C\u0156\236\236\236\236\u015C\236\236\220\u0150\220\312\236"+ "\u0158\u0158\u0158\u0158\u0158\220\u0160\u0162\u0162\u0164\u0166\236\236\236"+ "\u0106\u0150\220\220\u015A\236\u0150\u015A\u0150\220\220\220\220\220\220\220"+ "\220\220\220\u015A\220\220\220\u015A\220\u0150\u015A\220\236\u0106\u0154\u0156"+ "\u0106\236\u014C\u0106\u014C\312\236\236\236\236\236\u0150\220\u015A\u015A"+ "\236\236\236\u0158\u0158\u0158\u0158\u0158\312\220\u015A\236\236\236\236\236"+ "\u014C\u014E\u0150\220\220\220\u0150\u0150\220\u0150\220\220\220\220\220\220"+ "\220\220\220\220\u015A\220\220\220\u015A\220\u0150\220\220\236\u0152\u0154"+ "\u0156\312\312\u014C\u014E\u015C\u0156\236\u0166\236\236\236\236\236\236\236"+ "\u015A\236\236\u0158\u0158\u0158\u0158\u0158\236\236\236\236\236\236\236\236"+ "\u014C\u0154\u0150\220\220\220\u015A\u0150\u015A\u0150\220\220\220\220\220"+ "\220\220\220\220\220\u015A\220\220\220\u015A\220\236\220\220\236\u0152\u0156"+ "\u0156\312\236\u015C\u015E\u015C\u0156\236\236\236\236\u014E\236\236\220\u0150"+ "\220\236\236\u0158\u0158\u0158\u0158\u0158\u0166\236\236\236\236\236\236\236"+ "\236\u014E\u0150\220\220\u015A\236\220\u015A\220\220\236\u0150\u015A\u015A"+ "\220\236\u0150\u015A\236\220\u015A\236\220\220\220\220\u0150\220\236\236\u0154"+ "\u014E\u015E\236\u0154\u015E\u0154\u0156\236\236\236\236\u015C\236\236\236"+ "\236\236\236\236\u0168\u0158\u0158\u0158\u0158\u016A\u016C\236\236\236\236"+ "\236\236\u015C\u0154\u0150\220\220\220\u015A\220\u015A\220\220\220\220\220"+ "\220\220\220\220\220\220\u015A\220\220\220\220\220\u0150\220\220\236\236\312"+ "\u014E\u0154\u015E\312\u0106\312\312\236\236\236\u014C\u0106\236\236\236\236"+ "\220\236\236\u0158\u0158\u0158\u0158\u0158\236\236\236\236\236\236\236\236"+ "\236\u0154\u0150\220\220\220\u015A\220\u015A\220\220\220\220\220\220\220\220"+ "\220\220\220\u015A\220\220\220\220\220\u0150\220\220\236\236\u0156\u0154\u0154"+ "\u015E\u014E\u015E\u0154\312\236\236\236\u015C\u015E\236\236\236\u015A\220"+ "\236\236\u0158\u0158\u0158\u0158\u0158\236\236\236\236\236\236\236\236\236"+ "\u0154\u0150\220\220\220\u015A\220\u015A\220\220\220\220\220\220\220\220\220"+ "\220\220\u015A\220\220\220\220\220\220\220\220\236\236\u0154\u0156\312\236"+ "\u0154\u015E\u0154\u0156\236\236\236\236\u015C\236\236\236\236\220\236\236"+ "\u0158\u0158\u0158\u0158\u0158\236\236\236\236\236\236\236\236\u0150\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\u016E\u0170\220\312\312\312\u0106\236\u0172\220\220\220\u0174\312\312"+ "\312\u0176\u0178\u0178\u0178\u0178\u0178\314\236\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\236\236\236\u0150\u015A\u015A\u0150\u015A\u015A"+ "\u0150\236\236\236\220\220\u0150\220\220\220\u0150\220\u0150\u0150\236\220"+ "\u0150\u016E\u0170\220\312\312\312\u014C\u0152\236\220\220\u015A\316\312\312"+ "\312\236\u0178\u0178\u0178\u0178\u0178\236\220\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\236\236\236\u017A\u017A\314\314\314\314\314\314"+ "\314\u017C\u017A\u017A\312\u017A\u017A\u017A\u017E\u017E\u017E\u017E\u017E"+ "\u0180\u0180\u0180\u0180\u0180\u0104\u0104\u0104\u0182\u0182\u0154\220\220"+ "\220\220\u0150\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\236\236\236\u014C\312\312\312\312\312\312\u014E\312\312\u0184\312\312"+ "\312\236\236\312\312\312\u014C\u014C\312\312\312\312\312\312\312\312\312\312"+ "\236\u014C\312\312\312\u014C\236\236\236\236\236\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110"+ "\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\u0110\236\236"+ "\236\236\236\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172"+ "\172\172\172\276\236\u011C\236\236\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\236\236\u0150"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\u015A\236\236\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\236\236\236\134\134\134\134\134\134\134\134\134\134\134\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\172\172\u0186\236\236\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134"+ "\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134\134"+ "\134\134\134\134\236\236\236\u0188\u0188\u0188\u0188\u018A\u018A\u018A\u018A"+ "\u0188\u0188\u0188\236\u018A\u018A\u018A\236\u0188\u0188\u0188\u0188\u018A"+ "\u018A\u018A\u018A\u0188\u0188\u0188\u0188\u018A\u018A\u018A\u018A\u0188\u0188"+ "\u0188\236\u018A\u018A\u018A\236\u018C\u018C\u018C\u018C\u018E\u018E\u018E"+ "\u018E\u0188\u0188\u0188\u0188\u018A\u018A\u018A\u018A\u0190\u0192\u0192\u0194"+ "\u0196\u0198\u019A\236\u0188\u0188\u0188\u0188\u018A\u018A\u018A\u018A\u0188"+ "\u0188\u0188\u0188\u018A\u018A\u018A\u018A\u0188\u0188\u0188\u0188\u018A\u018A"+ "\u018A\u018A\u0188\u019C\276\172\u018A\u019E\u01A0\u01A2\306\u019C\276\172"+ "\u01A4\u01A4\u01A0\306\u0188\172\236\172\u018A\u01A6\u01A8\306\u0188\172\u01AA"+ "\172\u018A\u01AC\u01AE\306\236\u019C\276\172\u01B0\u01B2\u01A0\310\u01B4\u01B4"+ "\u01B4\u01B6\u01B4\u01B4\u01B8\u01BA\u01BC\u01BC\u01BC\014\u01BE\u01C0\u01BE"+ "\u01C0\014\014\014\014\u01C2\u01B8\u01B8\u01C4\u01C6\u01C6\u01C8\014\u01CA"+ "\u01CC\014\u01CE\u01D0\014\u01D2\u01D4\236\236\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\236\u01B8\u01B8\u01B8\u01D6\236\102\102\102\u01D8"+ "\u01D2\u01DA\u01DC\u01DC\u01DC\u01DC\u01DC\u01D8\u01D2\u01D4\236\236\236\236"+ "\236\236\236\236\064\064\064\064\064\064\u01DE\236\236\236\236\236\236\236"+ "\236\236\236\236\236\236\236\236\236\236\312\312\312\312\312\312\u01E0\u01E2"+ "\u01E4\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\066\u01E6"+ "\066\u01E8\066\u01EA\u01EC\u01EE\u01EC\u01F0\u01E8\066\u01EC\u01EC\u01EC\066"+ "\066\066\u01E6\u01E6\u01E6\u01EC\u01EC\u01EE\u01EC\u01E8\u01F2\u01F4\u01F6"+ "\236\236\236\236\236\236\236\236\236\236\236\236\u01F8\114\114\114\114\114"+ "\u01FA\u01FC\u01FC\u01FC\u01FC\u01FC\u01FC\u01FE\u01FE\u0200\u0200\u0200\u0200"+ "\u0200\u0200\u0202\u0202\u0204\u0206\236\236\236\236\236\236\u0208\u0208\u020A"+ "\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066"+ "\066\066\066\066\066\066\066\066\066\066\066\u020A\u020A\066\066\066\066\066"+ "\066\066\066\066\066\u020C\236\236\236\236\236\236\236\236\236\236\u020E\u0210"+ "\032\u0208\u0210\u0210\u0210\u0208\u020E\u01D8\u020E\032\u0208\u0210\u0210"+ "\u020E\u0210\032\032\032\u0208\u020E\u0210\u0210\u0210\u0210\u0208\u0208\u020E"+ "\u020E\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\032\u0208\u0208\u0210"+ "\u0210\u0208\u0208\u0208\u0208\u020E\032\032\u0210\u0210\u0210\u0210\u0208"+ "\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210"+ "\u0210\u0210\032\u020E\u0210\032\u0208\u0208\032\u0208\u0208\u0208\u0208\u0210"+ "\u0208\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\032\u0208\u0208"+ "\u0210\u0208\u0208\u0208\u0208\u020E\u0210\u0210\u0208\u0210\u0208\u0208\u0210"+ "\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0210\u0208\u0210"+ "\236\236\236\236\236\236\236\u020C\066\066\066\u0210\u0210\066\066\066\066"+ "\066\066\066\066\066\066\u0210\066\066\066\u0212\u0214\066\066\066\066\066"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u0166\236\236\066\066\066"+ "\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\u020C\236\236"+ "\236\236\236\236\236\236\236\236\236\236\236\066\066\066\066\066\u020C\236"+ "\236\236\236\236\236\236\236\236\236\u0216\u0216\u0216\u0216\u0216\u0216\u0216"+ "\u0216\u0216\u0216\u0218\u0218\u0218\u0218\u0218\u0218\u0218\u0218\u0218\u0218"+ "\u021A\u021A\u021A\u021A\u021A\u021A\u021A\u021A\u021A\u021A\066\066\066\066"+ "\066\066\066\066\066\066\066\066\066\u021C\u021C\u021C\u021C\u021C\u021C\u021C"+ "\u021C\u021C\u021C\u021C\u021C\u021C\u021E\u021E\u021E\u021E\u021E\u021E\u021E"+ "\u021E\u021E\u021E\u021E\u021E\u021E\u0220\236\236\236\236\236\236\236\236"+ "\236\236\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066"+ "\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066"+ "\066\066\066\066\066\066\066\236\236\236\236\236\066\066\066\066\066\066\066"+ "\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066"+ "\066\066\066\066\066\066\066\066\066\066\066\066\066\066\236\236\236\236\236"+ "\236\236\236\066\066\066\066\066\066\066\066\066\066\236\236\236\066\066\066"+ "\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\u0222\066"+ "\u020C\066\066\236\066\066\066\066\066\066\066\066\066\066\066\066\066\066"+ "\u0222\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066\066"+ "\u0222\u0222\066\u020C\236\u020C\066\066\066\u020C\u0222\066\066\066\236\236"+ "\236\236\236\236\236\u0224\u0224\u0224\u0224\u0224\u0216\u0216\u0216\u0216"+ "\u0216\u0226\u0226\u0226\u0226\u0226\u020C\236\066\066\066\066\066\066\066"+ "\066\066\066\066\066\u0222\066\066\066\066\066\066\u020C\006\014\u0228\u022A"+ "\016\016\016\016\016\066\016\016\016\016\u022C\u022E\u0230\u0232\u0232\u0232"+ "\u0232\312\312\312\u0234\u0236\u0236\066\236\236\236\u0222\u0150\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\u015A\236\u014C\u0238\300\316\u0150\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\u016E\300\316"+ "\236\236\u0150\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\u015A\236\u0150\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\u015A\u017A\u0180\u0180\u017A\u017A\u017A\u017A\u017A\236\236"+ "\236\236\236\236\236\236\236\236\236\236\236\236\236\236\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u0166\236"+ "\u0180\u0180\u0180\u0180\u0180\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\236\236\236\236\236\236\236\236\236\236\236"+ "\236\236\236\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\236\u023A\u023C\u023C\u023C\u023C\u023C\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u0166\236\236\236\236\236\236\236\u017A\u017A\u017A\u017A"+ "\u017A\u017A\236\236\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u0166\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u0166\236\u023A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\236\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A\u017A"+ "\u017A\u017A\u017A\u017A\u017A\u017A\u0166\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\236\236\236\236\236\236\236\236"+ "\236\236\236\236\236\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\236\236\236\236\236\236\236\236\236\236\236\236\236\236\u023E"+ "\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E"+ "\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E\u023E"+ "\u023E\u023E\u023E\u023E\u023E\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240"+ "\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240"+ "\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\u0240\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\236\236\236\236\236\236\236\236\236\172\172\172\276\236\236\236\236"+ "\236\u0242\172\172\236\236\236\u013E\u0128\u0128\u0128\u0128\u0244\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u012A\u0128\u0128\u012A\u012A\u0128\u0132\u012A\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\u0132"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u01BE\236\236\236\236\236\236\236"+ "\236\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\236\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\236\236\236\236\236"+ "\236\236\236\236\236\236\236\236\236\236\236\236\236\236\236\u0128\u0128\u0128"+ "\u0128\u0128\u0128\236\236\236\236\236\236\236\236\236\236\236\236\236\236"+ "\236\236\236\236\u0246\u0246\236\236\236\236\236\236\u0248\u024A\u024C\u024E"+ "\u024E\u024E\u024E\u024E\u024E\u024E\u0250\236\u0252\014\u01CE\u0254\014\u0256"+ "\014\014\u022C\u024E\u024E\u01CC\014\074\u0208\u0258\u025A\014\236\236\u0128"+ "\u012A\u012A\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128"+ "\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u0128\u012A\u025C"+ "\u0252\014\u025E\014\u01BE\u0260\u0248\014\026\026\026\026\026\014\u0208\u0262"+ "\036\040\040\040\040\040\040\040\040\040\040\040\040\u0264\u0266\046\050\052"+ "\052\052\052\052\052\052\052\052\052\052\052\u0268\u026A\u0258\u0252\u01BE"+ "\u026C\220\220\220\220\220\u026E\220\220\220\220\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\220\220\220\300\220\220\220\220\220\220\220"+ "\220\220\220\220\220\220\220\220\u015A\236\220\220\220\236\220\220\220\236"+ "\220\220\220\236\220\u015A\236\u0270\u0272\u0274\u0276\u0208\u0208\u020A\u020C"+ "\236\236\236\236\236\236\066\236"; // The A table has 632 entries for a total of 2528 bytes. private static final int A[] = new int[632]; private static final String A_DATA = "\001\u018F\001\u018F\001\u018F\004\u012F\004\u018F\004\u018F\004\u014C\000"+ "\u0198\000\u0198\000\270\006\272\000\270\000\u0198\000\u0198\000\u0175\000"+ "\u0176\000\u0198\000\271\000\370\000\264\000\370\000\230\003\u6069\003\u6069"+ "\000\370\000\u0198\000\u0179\000\u0199\000\u0179\000\u0198\000\u0198\u0827"+ "\uFE21\u0827\uFE21\u0827\uFE21\u0827\uFE21\000\u0175\000\u0198\000\u0176\000"+ "\u019B\005\u0197\000\u019B\u0817\uFE22\u0817\uFE22\u0817\uFE22\u0817\uFE22"+ "\000\u0175\000\u0199\000\u0176\000\u0199\001\u018F\000\u014C\000\u0198\006"+ "\272\006\272\000\u019C\000\u019C\000\u019B\000\u019C\007\u0182\000\u0195\000"+ "\u0199\000\u0194\000\u019C\000\u019B\000\274\000\271\000\u606B\000\u606B\000"+ "\u019B\007\u0182\000\u019C\000\u0198\000\u019B\000\u506B\007\u0182\000\u0196"+ "\000\u818B\000\u818B\000\u818B\000\u0198\u0827\041\u0827\041\u0827\041\000"+ "\u0199\u0827\041\007\042\u0817\042\u0817\042\u0817\042\000\u0199\u0817\042"+ "\uE1D7\042\147\041\127\042\uCE67\041\u3A17\042\007\042\147\041\127\042\147"+ "\041\127\042\007\042\uE1E7\041\147\041\127\042\u4B17\042\007\042\u34A7\041"+ "\u33A7\041\147\041\127\042\u3367\041\u3367\041\147\041\u13E7\041\u32A7\041"+ "\u32E7\041\147\041\u33E7\041\007\042\u34E7\041\u3467\041\007\042\007\042\u34E7"+ "\041\u3567\041\007\042\u35A7\041\007\041\147\041\127\042\u36A7\041\007\045"+ "\007\042\u36A7\041\147\041\127\042\u3667\041\u3667\041\147\041\127\042\u36E7"+ "\041\007\042\007\045\007\045\007\045\257\041\177\043\237\042\257\041\177\043"+ "\237\042\237\042\147\041\127\042\u13D7\042\007\042\257\041\000\000\000\000"+ "\007\042\u3497\042\u3397\042\007\042\u3357\042\u3357\042\007\042\u3297\042"+ "\007\042\u32D7\042\u3357\042\007\042\007\042\u33D7\042\u3457\042\u34D7\042"+ "\007\042\u34D7\042\u3557\042\007\042\007\042\uCAA7\042\007\042\u3697\042\u3697"+ "\042\007\042\u3657\042\u3657\042\u36D7\042\007\042\007\042\000\000\007\044"+ "\007\044\007\044\000\073\000\073\007\044\000\073\000\073\000\073\000\000\003"+ "\046\003\046\000\070\000\070\007\044\000\000\000\070\000\000\u09A7\041\000"+ "\070\u0967\041\u0967\041\u0967\041\000\000\u1027\041\000\000\u0FE7\041\u0FE7"+ "\041\007\042\u0827\041\000\000\u0827\041\u0997\042\u0957\042\u0957\042\u0957"+ "\042\007\042\u0817\042\u07D7\042\u0817\042\u1017\042\u0FD7\042\u0FD7\042\000"+ "\000\u0F97\042\u0E57\042\007\041\007\041\007\041\u0BD7\042\u0D97\042\000\000"+ "\007\041\000\000\u1597\042\u1417\042\000\000\u1427\041\u1427\041\u1427\041"+ "\u1427\041\000\000\000\000\u1417\042\u1417\042\u1417\042\u1417\042\000\000"+ "\000\074\003\046\003\046\000\000\007\045\147\041\127\042\000\000\000\000\147"+ "\041\000\000\u0C27\041\u0C27\041\u0C27\041\u0C27\041\000\000\000\000\007\044"+ "\000\000\u0C17\042\u0C17\042\u0C17\042\u0C17\042\007\042\000\000\000\070\000"+ "\000\003\106\003\106\003\106\000\130\003\106\003\106\000\130\003\106\000\000"+ "\007\105\007\105\007\105\000\000\007\105\000\130\000\130\000\000\000\000\000"+ "\130\000\000\007\105\007\104\007\105\007\105\003\106\003\u40C9\003\u40C9\000"+ "\270\000\330\000\330\000\130\003\106\007\105\000\130\007\105\003\106\000\107"+ "\000\107\003\106\003\106\007\104\007\104\003\106\003\106\000\134\000\000\003"+ "\046\003\046\003\050\000\000\007\045\003\046\007\045\003\050\003\050\003\050"+ "\003\046\003\u7429\003\u7429\007\045\000\000\000\000\003\050\003\050\000\000"+ "\006\072\006\072\000\u5A2B\000\u5A2B\000\u802B\000\u6E2B\000\074\000\000\000"+ "\000\003\u7429\000\u742B\000\u802B\000\u802B\000\000\007\045\000\070\007\045"+ "\003\046\000\000\006\072\007\044\003\046\003\046\000\074\003\u6029\003\u6029"+ "\000\074\000\074\000\070\000\074\003\u4029\003\u4029\000\053\000\053\000\065"+ "\000\066\003\046\000\070\007\042\u0ED7\042\uFE17\042\uFE17\042\uFE27\041\uFE27"+ "\041\007\042\uFE17\042\000\000\uFE27\041\uED97\042\uED97\042\uEA97\042\uEA97"+ "\042\uE717\042\uE717\042\uE017\042\uE017\042\uE417\042\uE417\042\uE097\042"+ "\uE097\042\007\042\uFDD7\042\uEDA7\041\uEDA7\041\uFDE7\041\000\073\007\041"+ "\000\073\uEAA7\041\uEAA7\041\uE727\041\uE727\041\000\000\000\073\007\042\uFE57"+ "\042\uE427\041\uE427\041\uFE67\041\000\073\uE027\041\uE027\041\uE0A7\041\uE0A7"+ "\041\004\u014C\004\u014C\004\u014C\004\354\001\u0190\001\u0190\001\060\001"+ "\120\000\u0194\000\u0194\000\u0195\000\u0196\000\u0195\000\u0195\004\u010D"+ "\004\u010E\001\u0190\000\000\000\270\000\270\000\270\000\u0198\000\u0198\000"+ "\u0195\000\u0196\000\u0198\000\u0198\005\u0197\005\u0197\000\u0198\000\u0199"+ "\000\u0175\000\u0176\000\000\000\u606B\000\000\000\271\000\271\000\u0176\007"+ "\u0182\000\u406B\000\u406B\006\272\000\000\003\046\000\047\000\047\000\047"+ "\000\047\003\046\007\u0181\000\u019C\000\u019C\007\u0181\007\u0182\007\u0181"+ "\007\u0181\007\u0181\007\u0182\007\u0182\007\u0181\007\u0182\007\u0182\007"+ "\u0185\007\u0185\007\u0185\007\u0185\000\000\000\000\000\u818B\000\u818B\000"+ "\u458B\u0427\u422A\u0427\u422A\u0427\u802A\u0427\u802A\u0417\u622A\u0417\u622A"+ "\u0417\u802A\u0417\u802A\007\u802A\007\u802A\007\u802A\000\000\000\u0199\000"+ "\u0199\000\u0199\000\u019C\000\u019C\000\000\000\u0199\000\u0179\000\u0179"+ "\000\u0179\000\u019C\000\u0175\000\u0176\000\u019C\000\u438B\000\u438B\000"+ "\u5B8B\000\u5B8B\000\u738B\000\u738B\u06A0\u019C\u06A0\u019C\u0690\u019C\u0690"+ "\u019C\000\u6D8B\000\000\000\000\000\u019C\000\u578B\000\u578B\000\u6F8B\000"+ "\u6F8B\000\u019C\007\u0184\000\u0198\007\u738A\000\u0194\000\u0195\000\u0196"+ "\000\u0196\000\u019C\007\u402A\007\u402A\007\u402A\000\u0194\007\u0184\007"+ "\u0184\007\u0184\003\046\007\044\000\000\000\074\000\u422B\000\u422B\000\063"+ "\000\063\000\062\000\062\000\000\007\042\007\105\000\131\003\u0186\003\u0186"+ "\000\u0198\000\u0194\000\u0194\005\u0197\005\u0197\000\u0195\000\u0196\000"+ "\u0195\000\u0196\000\000\000\000\000\u0198\005\u0197\005\u0197\000\u0198\000"+ "\000\000\u0199\000\000\000\u0198\006\u019A\000\000\001\u0190\006\u019A\000"+ "\u0198\000\u0198\000\u0199\000\u0199\000\u0198\u0827\uFE21\000\u0195\000\u0198"+ "\000\u0196\u0817\uFE22\000\u0195\000\u0199\000\u0196\000\u0198\000\070\007"+ "\044\007\045\006\u019A\006\u019A\000\u0199\000\u019B\000\u019C\006\u019A\006"+ "\u019A\000\000"; // In all, the character property tables require 11616 bytes. static { { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter: int len = X_DATA.length(); int j=0; for (int i=0; i<len; ++i) { int c = X_DATA.charAt(i); for (int k=0; k<2; ++k) { X[j++] = (byte)c; c >>= 8; } } if (j != 1024) throw new RuntimeException(); } { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter: if (Y_DATA.length() != 4032) throw new RuntimeException(); for (int i=0; i<4032; ++i) Y[i] = (short)Y_DATA.charAt(i); } { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter: int len = A_DATA.length(); int j=0; int charsInEntry=0; int entry=0; for (int i=0; i<len; ++i) { entry |= A_DATA.charAt(i); if (++charsInEntry == 2) { A[j++] = entry; entry = 0; charsInEntry = 0; } else { entry <<= 16; } } if (j != 632) throw new RuntimeException(); } } }
⏎ java/lang/Character.java
Or download all of them as a single archive file:
File name: jdk-1.1.8-src.zip File size: 1574187 bytes Release date: 2018-11-16 Download
⇒ Backup JDK 1.1 Installation Directory
2018-11-17, 150600👍, 0💬
Popular Posts:
commons-lang-2.6.jar is the JAR file for Apache Commons Lang 2.6, which provides a host of helper ut...
JDK 11 jdk.compiler.jmod is the JMOD file for JDK 11 Compiler tool, which can be invoked by the "jav...
JDK 11 jdk.dynalink.jmod is the JMOD file for JDK 11 Dynamic Linking module. JDK 11 Dynamic Linking ...
GJT (Giant Java Tree) implementation of XML Pull Parser. JAR File Size and Download Location: File n...
Where to find answers to frequently asked questions on Download and Installing of Older Versions? He...