/branches/live/test/test.js |
---|
0,0 → 1,1028 |
/** |
* <title>PointedEars' JSX: Test Library<title> |
* @file $Id$ |
* @requires object.js |
* |
* @section Copyright & Disclaimer |
* |
* @author (C) 2011-2013 Thomas Lahn <js@PointedEars.de> |
* |
* @partof PointedEars' JavaScript Extensions (JSX) |
* |
* JSX 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. |
* |
* JSX is distributed in the hope that it will be useful, |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
* GNU General Public License for more details. |
* |
* You should have received a copy of the GNU General Public License |
* along with JSX. If not, see <http://www.gnu.org/licenses/>. |
*/ |
if (typeof jsx == "undefined") |
{ |
var jsx = {}; |
} |
if (typeof jsx.test == "undefined") |
{ |
/* (for JSDT only) */ |
jsx.test = {}; |
} |
/** |
* @type jsx.test |
* @memberOf __jsx.test |
* @namespace |
*/ |
jsx.test = (/** @constructor */ function () { |
var _isArray = jsx.object.isArray; |
var _isObject = jsx.object.isObject; |
var _throwThis = jsx.throwThis; |
/** |
* Number of assertions made |
* @private |
*/ |
var _assertCount = 0; |
function _increaseAssertCount () |
{ |
return ++_assertCount; |
} |
/** |
* @constructor |
* @namespace __jsx.test.AssertionError |
* @type jsx.test.AssertionError |
* @extends jsx.Error |
*/ |
var _AssertionError = ( |
/** |
* @param {string} s |
*/ |
function jsx_test_AssertionError (s) { |
var _super = jsx_test_AssertionError._super; |
if (_super) |
{ |
_super.call(this); |
} |
this.message = "Assertion failed: " + s; |
} |
).extend(jsx.Error, { |
/** |
* @memberOf jsx.test.AssertionError#prototype |
*/ |
name: "jsx.test.AssertionError" |
}); |
/** |
* @constructor |
* @namespace __jsx.test.ArrayComparisonFailure |
* @type jsx.test.ArrayComparisonFailure |
* @extends jsx.InvalidArgumentError |
* @private |
* @memberOf __jsx.test |
*/ |
var _ArrayComparisonFailure = ( |
function jsx_test_ArrayComparisonFailure () { |
jsx_test_ArrayComparisonFailure._super.call(this, "Arrays expected"); |
} |
).extend(jsx.InvalidArgumentError, { |
/** |
* @memberOf __jsx.test.ArrayComparisonFailure.prototype |
*/ |
name: "jsx.test.ArrayComparisonFailure" |
}); |
/** |
* @constructor |
* @namespace __jsx.test.ObjectComparisonFailure |
* @type jsx.test.ObjectComparisonFailure |
* @extends jsx.InvalidArgumentError |
* @private |
* @memberOf __jsx.test |
*/ |
var _ObjectComparisonFailure = ( |
function jsx_test_ObjectComparisonFailure () { |
jsx_test_ObjectComparisonFailure._super.call(this, "Objects expected"); |
} |
).extend(jsx.InvalidArgumentError, { |
/** |
* @memberOf __jsx.test.ObjectComparisonFailure.prototype |
*/ |
name: "jsx.test.ObjectComparisonFailure" |
}); |
return { |
/** |
* @version |
* @memberOf jsx.test |
*/ |
version: "$Revision$", |
/** |
* Increases the assertion count |
* |
* @return {Number} The new assertion count |
*/ |
increaseAssertCount: _increaseAssertCount, |
/** |
* Resets the assertion count |
* |
* @return {Number} <code>0</code> |
*/ |
resetAssertCount: function () { |
return (_assertCount = 0); |
}, |
/** |
* @function |
*/ |
AssertionError: _AssertionError, |
/** |
* Asserts that a condition converts to true. If it does not, it throws |
* an {@link #AssertionError} with a default message. |
* |
* @param {string|any} x |
* If a string, it is evaluated as a <i>Program</i>; the assertion |
* fails if its result, type-converted to <i>boolean</i>, is |
* <code>false</code>. |
* If not a string, the value is type-converted to <i>boolean</i>; |
* the assertion fails if the result of the conversion is |
* <code>false</code>. |
* @throws |
* {@link #AssertionError} if the assertion fails and this exception |
* can be thrown. |
* @return {boolean} |
* <code>false</code>, if the assertion fails and no exception can be thrown; |
* <code>true</code>, if the assertion is met. |
* @see Global#eval(String) |
*/ |
assert: function (x) { |
_increaseAssertCount(); |
var origX = x; |
if (typeof x == "string") |
{ |
x = eval(x); |
} |
if (!x) |
{ |
return _throwThis(jsx.test.AssertionError, |
'"assert("' + (typeof origX == "string" ? origX : "...") + '");"'); |
} |
return !!x; |
}, |
/** |
* Asserts that a condition is boolean <code>true</code>. If it isn't, |
* it throws an {@link #AssertionError} with a default message. |
* |
* @param {string|any} x |
* If a string, it is evaluated as a <i>Program</i>; the assertion |
* fails if its result, type-converted to <i>boolean</i>, is |
* <code>false</code>. |
* If not a string, the value is type-converted to <i>boolean</i>; |
* the assertion fails if the result of the conversion is |
* <code>false</code>. |
* @throws |
* {@link #AssertionError} if the assertion fails and this exception |
* can be thrown. |
* @return {boolean} |
* <code>false</code>, if the assertion fails and no exception can be thrown; |
* <code>true</code>, if the assertion is met. |
* @see Global#eval(String) |
*/ |
assertTrue: function (x) { |
_increaseAssertCount(); |
var origX = x; |
if (typeof x == "string") |
{ |
x = eval(x); |
} |
if (typeof x != "boolean" || !x) |
{ |
return _throwThis(_AssertionError, |
"assertTrue(" + (typeof origX == "string" ? origX : "...") + ");"); |
} |
return !!x; |
}, |
/** |
* Asserts that a condition is false. If it isn't, it throws |
* an {@link #AssertionError} with a default message. |
* |
* @param {string|any} x |
* If a string, it is evaluated as a <i>Program</i>; the assertion |
* fails if its result, type-converted to <i>boolean</i>, is |
* <code>true</code>. |
* If not a string, the value is type-converted to <i>boolean</i>; |
* the assertion fails if the result of the conversion is |
* <code>true</code>. |
* @param {boolean} bThrow = true |
* If <code>true</code> (default), an exception will be thrown if |
* the assertion fails, otherwise a warning will be issued to the |
* error console in that case. |
* @param {String} sContext (optional) |
* Description of the context in which the assertion was made. |
* Ignored if <code><var>bThrow</var> == true</code>. |
* @throws |
* {@link #AssertionError} if the assertion fails and this exception |
* can be thrown. |
* @return {boolean} |
* <code>false</code>, if the assertion fails and no exception can be thrown; |
* <code>true</code>, if the assertion is met. |
* @see Global#eval(String) |
*/ |
assertFalse: function (x, bThrow, sContext) { |
_increaseAssertCount(); |
var origX = x; |
if (typeof x == "string") |
{ |
x = eval(x); |
} |
if (typeof x != "boolean" || x) |
{ |
if (typeof bThrow == "undefined" || bThrow) |
{ |
return _throwThis(_AssertionError, |
"assertFalse(" + (typeof origX == "string" ? origX : "...") + ");"); |
} |
jsx.dmsg((sContext ? sContext + ": " : "") + "Assertion failed: " |
+ (typeof origX == "string" ? origX : "Value") + " must be false.", "warn"); |
} |
return !!x; |
}, |
/** |
* Asserts that a condition is <code>undefined</code>. If it isn't, it throws |
* an {@link #AssertionError} with a default message. |
* |
* @param {string|any} x |
* If a string, it is evaluated as a <i>Program</i>; the assertion |
* fails if its result, type-converted to <i>boolean</i>, is |
* <code>true</code>. |
* If not a string, the value is type-converted to <i>boolean</i>; |
* the assertion fails if the result of the conversion is |
* <code>true</code>. |
* @param {boolean} bThrow = true |
* If <code>true</code> (default), an exception will be thrown if |
* the assertion fails, otherwise a warning will be issued to the |
* error console in that case. |
* @param {String} sContext (optional) |
* Description of the context in which the assertion was made. |
* Ignored if <code><var>bThrow</var> == true</code>. |
* @throws |
* {@link #AssertionError} if the assertion fails and this exception |
* can be thrown. |
* @return {boolean} |
* <code>false</code>, if the assertion fails and no exception can be thrown; |
* <code>true</code>, if the assertion is met. |
* @see Global#eval(String) |
*/ |
assertUndefined: function (x, bThrow, sContext) { |
_increaseAssertCount(); |
var origX = x; |
if (typeof x == "string") |
{ |
x = eval(x); |
} |
if (typeof x != "undefined") |
{ |
if (typeof bThrow == "undefined" || bThrow) |
{ |
return _throwThis(_AssertionError, |
"assertUndefined(" + (typeof origX == "string" ? origX : "...") + ");"); |
} |
jsx.warn((sContext ? sContext + ": " : "") + "Assertion failed: " |
+ (typeof origX == "string" ? origX : "Value") + " must be undefined."); |
} |
return !!x; |
}, |
/** |
* Asserts that two arrays are equal. If they are not, |
* an {@link #AssertionError} is thrown with a default message. |
* Two arrays are considered equal only if their elements are |
* strictly equal (shallow strict comparison). |
* |
* @function |
* @throws |
* {@link #ArrayComparisonFailure} |
* if either of the given values is not a reference to an |
* {@link Array}. |
* @throws |
* {@link #AssertionError} |
* if the assertion fails and either exception can be thrown. |
* @see Global#eval() |
*/ |
assertArrayEquals: (function () { |
function _thrower (expecteds, actuals) |
{ |
return _throwThis(_AssertionError, |
"assertArrayEquals([" + expecteds + "], [" + actuals + "])"); |
} |
/** |
* @param {string|Array} expecteds |
* Expected value; if a string, it is evaluated as a <i>Program</i>. |
* @param {string|Array} actuals |
* Actual value; if a string, it is evaluated as a <i>Program</i>. |
* @return {boolean} |
* <code>false</code>, if comparison is not possible |
* or the assertion fails, and no exception can be thrown; |
* <code>true</code>, if the assertion is met. |
*/ |
return function (expecteds, actuals) { |
_increaseAssertCount(); |
if (typeof expecteds == "string") |
{ |
expecteds = eval(expecteds); |
} |
if (typeof actuals == "string") |
{ |
actuals = eval(actuals); |
} |
if (typeof expecteds == typeof actuals |
&& expecteds == null && actuals == null) |
{ |
return true; |
} |
if (!_isArray(expecteds) || !_isArray(actuals)) |
{ |
return _throwThis(_ArrayComparisonFailure); |
} |
var len = expecteds.length; |
var len2 = actuals.length; |
if (len != len2) |
{ |
return _thrower(expecteds, actuals); |
} |
for (var i = len; i--;) |
{ |
if (expecteds[i] !== actuals[i]) |
{ |
return _thrower(expecteds, actuals); |
} |
} |
return true; |
}; |
}()), |
/** |
* Asserts that two objects are equal. If they are not, |
* an {@link #AssertionError} is thrown with a default message. |
* Two object are considered equal only if their keys are |
* strictly equal (shallow strict comparison). |
* |
* @function |
* @throws |
* {@link #ObjectComparisonFailure} |
* if either of the given values is not a reference to an |
* object. |
* @throws |
* {@link #AssertionError} |
* if the assertion fails and either exception can be thrown. |
* @see Global#eval() |
*/ |
assertObjectEquals: (function () { |
function _thrower (expecteds, actuals) |
{ |
return _throwThis(_AssertionError, |
"assertObjectEquals(expecteds, actuals)"); |
} |
/** |
* @param {string|Object} expecteds |
* Expected value; if a string, it is evaluated as a <i>Program</i>. |
* @param {string|Object} actuals |
* Actual value; if a string, it is evaluated as a <i>Program</i>. |
* @return {boolean} |
* <code>false</code>, if comparison is not possible |
* or the assertion fails, and no exception can be thrown; |
* <code>true</code>, if the assertion is met. |
*/ |
return function (expecteds, actuals) { |
_increaseAssertCount(); |
if (typeof expecteds == "string") |
{ |
expecteds = eval(expecteds); |
} |
if (typeof actuals == "string") |
{ |
actuals = eval(actuals); |
} |
if (typeof expecteds == typeof actuals |
&& expecteds == null && actuals == null) |
{ |
return true; |
} |
if (!_isObject(expecteds) || !_isObject(actuals)) |
{ |
return _throwThis(_ObjectComparisonFailure); |
} |
var keys = jsx.object.getKeys(expecteds); |
for (var i = keys.length; i--;) |
{ |
var key = keys[i]; |
if (expecteds[key] !== actuals[key]) |
{ |
return _thrower(expecteds, actuals); |
} |
} |
return true; |
}; |
}()), |
runner: { |
tests: [], |
_table: null, |
/** |
* @protected |
*/ |
_appendTable: function () { |
if (typeof document != "object" || !document) |
{ |
return; |
} |
if (!document.body) |
{ |
this._printMsg( |
"No document.body found (at this point)." |
+ " Use {updateDocument: false} if not in HTML context," |
+ " or wait until document.body exists (`load' event).", |
"warn"); |
return; |
} |
var id = "test-results" + new Date().getTime(); |
var context = "table#" + id; |
var style = document.createElement("style"); |
style.type = "text/css"; |
var styleText = |
context + " { border: 2px solid black;" |
+ " border-collapse: collapse; }" |
+ context + " thead { border-bottom: 1px solid black; }" |
+ context + " thead th { vertical-align: baseline; }" |
+ context + " tfoot { border-top: 1px solid black; }" |
+ context + " thead th { text-align: left; }" |
+ context + " thead th:first-child { text-align: right; }" |
+ context + " tbody th { text-align: right; }" |
+ context + " tbody td.info {" |
+ " background-color: green; color: white; }" |
+ context + " tbody td.error {" |
+ " background-color: red;" |
+ " color: white; font-family: monospace; }" |
+ context + " thead th," |
+ context + " tbody th," |
+ context + " tbody td," |
+ context + " tfoot td {" |
+ " padding: 0 0.5em;" |
+ " vertical-align: top;" |
+ " vertical-align: baseline; }"; |
if (typeof style.styleSheet != "undefined") |
{ |
/* Older MSHTML */ |
style.styleSheet.cssText = styleText; |
} |
else |
{ |
style.appendChild(document.createTextNode(styleText)); |
} |
(document.head || document.getElementsByTagName("head")[0]).appendChild(style); |
var table = document.createElement("table"); |
table.id = id; |
this._table = table; |
var thead = document.createElement("thead"); |
var tr = document.createElement("tr"); |
var th = document.createElement("th"); |
th.appendChild(document.createTextNode("#")); |
tr.appendChild(th); |
th = document.createElement("th"); |
th.appendChild(document.createTextNode("Source File")); |
tr.appendChild(th); |
th = document.createElement("th"); |
th.appendChild(document.createTextNode("Feature")); |
tr.appendChild(th); |
th = document.createElement("th"); |
th.appendChild(document.createTextNode("Testcase Description")); |
tr.appendChild(th); |
th = document.createElement("th"); |
th.appendChild(document.createTextNode("Result")); |
tr.appendChild(th); |
thead.appendChild(tr); |
table.insertBefore(thead, table.firstChild); |
var tbody = document.createElement("tbody"); |
table.appendChild(tbody); |
var tests = this._tests; |
for (var i = 0, len = tests.length; i < len; ++i) |
{ |
var test = tests[i]; |
var number = i + 1; |
var file = this._file; |
var feature = this._feature; |
var description = ""; |
if (test && typeof test != "function") |
{ |
if (test.file) |
{ |
file = test.file; |
} |
if (test.feature) |
{ |
feature = test.feature; |
} |
description = test.description || test.desc || test.name; |
test = test.code; |
} |
this._appendRow(number, file, feature, description); |
} |
document.body.appendChild(table); |
}, |
/** |
* @protected |
* @param {String} text |
*/ |
_htmlEscape: function (text) { |
return text.replace(/&/g, "&").replace(/</g, "<") |
.replace(/>/g, ">").replace(/ /g, " "); |
}, |
/** |
* @protected |
* @param {int} num |
* @param {string} file |
* @param {string} feature |
* @param {string} desc |
*/ |
_appendRow: function (num, file, feature, desc) { |
var table = this._table; |
if (!table) |
{ |
return; |
} |
var tbody = table.tBodies[0]; |
var tr = document.createElement("tr"); |
var th = document.createElement("th"); |
th.appendChild(document.createTextNode(num)); |
tr.appendChild(th); |
var td = document.createElement("td"); |
if (file) |
{ |
var tt = document.createElement("tt"); |
tt.appendChild(document.createTextNode(this._htmlEscape(file))); |
td.appendChild(tt); |
} |
tr.appendChild(td); |
td = document.createElement("td"); |
if (feature) |
{ |
var code = document.createElement("code"); |
code.appendChild(document.createTextNode(this._htmlEscape(feature))); |
td.appendChild(code); |
} |
tr.appendChild(td); |
td = document.createElement("td"); |
if (desc) |
{ |
td.innerHTML = desc; |
} |
tr.appendChild(td); |
td = document.createElement("td"); |
td.id = table.id + "-" + num; |
td.innerHTML = "testing…"; |
tr.appendChild(td); |
tbody.appendChild(tr); |
}, |
/** |
* Updates a result cell |
* |
* @protected |
* @param {int} rowNum |
* Row number |
* @param {string} result |
* @param {string} msgType |
*/ |
_updateResult: function (rowNum, result, msgType) { |
var td = document.getElementById(this._table.id + "-" + rowNum); |
if (td) |
{ |
/* FIXME: Use standards-compliant methods instead */ |
td.innerHTML = this._htmlEscape(result).replace(/\r?\n|\r/g, "<br>"); |
td.className = msgType; |
} |
}, |
/** |
* @protected |
*/ |
_appendSummary: function (text) { |
if (this._table) |
{ |
var tbody = this._table.tBodies[0]; |
var tfoot = document.createElement("tfoot"); |
var tr = document.createElement("tr"); |
var td = document.createElement("td"); |
td.colSpan = 5; |
td.appendChild(document.createTextNode(text)); |
tr.appendChild(td); |
tfoot.appendChild(tr); |
this._table.insertBefore(tfoot, tbody); |
} |
}, |
/** |
* @protected |
* @param {String} msg |
* @param {String} msgType |
*/ |
_printMsg: function (msg, msgType) { |
return jsx[msgType]("jsx.test.runner: " + msg); |
}, |
/** |
* Strips tags from markup and unescapes basic character |
* entity references. |
* |
* @protected |
* @param {String} markup |
*/ |
_stripTags: function (markup) { |
return markup |
.replace(/<\/?[^\s>]+(:[^\s>]+)?(\s+[^\s=>]+(\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)?)?)*\s*>/g, "") |
.replace(/</, "<").replace(/>/, ">").replace(/&/, "&"); |
}, |
/** |
* Prints the result to the error console, and, if supported, |
* to the document. |
* |
* @protected |
* @param num |
* @param file |
* @param feature |
* @param desc |
* @param result |
* @param msgType |
*/ |
_printResult: function (num, file, feature, desc, result, msgType) { |
this._updateResult(num, result, msgType); |
this._printMsg("Test " + num |
+ (file || feature ? ", " : "") |
+ file |
+ (feature ? ":" + feature : "") |
+ (file || feature ? "," : "") |
+ (desc ? ' "' + this._stripTags(desc) + '"' : "") |
+ (file || feature ? "," : "") |
+ " " + result, |
msgType); |
}, |
/** |
* @protected |
* @param result |
*/ |
_printSummary: function (result) { |
var failed = result.failed; |
var passed = result.passed; |
var total = failed + passed; |
var summary = "Failed: " + failed + " (" + (failed * 100 / total).toFixed(1) + "\xA0%)." |
+ " Passed: " + passed + " (" + (passed * 100 / total).toFixed(1) + "\xA0%)."; |
this._appendSummary(summary); |
this._printMsg(summary, "info"); |
}, |
/** |
* Runs test cases. |
* |
* @param {Object} spec |
* Test specification. Supported properties incude: |
* <table> |
* <thead> |
* <th>Property</th> |
* <th>Type</th> |
* <th>Meaning</th> |
* </thead> |
* <tbody> |
* <tr> |
* <th><code>file</code></th> |
* <td><code>String</code></td> |
* <td>Name of the file that contains the code |
* to be tested. The default is the empty string. |
* <em>NOTE: This is a purely descriptive value. |
* No resources will be accessed based on this |
* value.</em></td> |
* </tr> |
* <tr> |
* <th><code>feature</code></th> |
* <td><code>String</code></td> |
* <td>Code describing the feature that is tested. |
* The default is the empty string.</td> |
* </tr> |
* <tr> |
* <th><code>setUp</code></th> |
* <td><code>Function</code></td> |
* <td>Function that is called before each test case</td> |
* </tr> |
* <tr> |
* <th><code>tearDown</code></th> |
* <td><code>Function</code></td> |
* <td>Function that is called after each test case</td> |
* </tr> |
* <tr> |
* <th><code>tests</code></th> |
* <td><code>Array</code> of <code>Function</code>s or of |
* <code>Object</code>s with the following properties: |
* <table> |
* <thead> |
* <th>Property</th> |
* <th>Type</th> |
* <th>Meaning</th> |
* </thead> |
* <tbody> |
* <tr> |
* <th><code>file</code></th> |
* <td><code>String</code></td> |
* <td>Name of the file that contains the code |
* to be tested. The default is the |
* value of the specification's |
* <code>file</code> property. |
* <em>NOTE: This is a purely descriptive value. |
* No resources will be accessed based on this |
* value.</em></td></td> |
* </tr> |
* <tr> |
* <th><code>feature</code></th> |
* <td><code>String</code></td> |
* <td>Code describing the feature that is tested. |
* The default is the value of the specification's |
* <code>feature</code> property.</td> |
* </tr> |
* <tr> |
* <th><code>description</code> | <code>desc</code> |
* | <code>name</code></th> |
* <td><code>String</code></td> |
* <td>Description/name of the test case. |
* Use <code>description</code> or |
* <code>desc</code> for newer |
* test code.</td> |
* </tr> |
* <tr> |
* <th><code>code</code></th> |
* <td><code>Function</code></td> |
* <td>Test case</td> |
* </tr> |
* </tbody> |
* </table></td> |
* <td>Test cases</td> |
* </tr> |
* <tr> |
* <th><code>updateDocument</code></th> |
* <td><code>boolean</code></td> |
* <td>If <code>false</code>, the (X)HTML document |
* containing or including the call is not updated, and |
* diagnostics are only written to the error console. |
* The default is <code>true</code>. Set to |
* <code>false</code> automatically if there is |
* no <code>document.body</code> object.</td> |
* </tr> |
* </tbody> |
* </table> |
*/ |
run: function (spec) { |
var hasSetUp = false; |
var hasTearDown = false; |
if (spec) |
{ |
this._file = jsx.object.getProperty(spec, "file", ""); |
this._feature = jsx.object.getProperty(spec, "feature", ""); |
hasSetUp = (typeof spec.setUp == "function"); |
if (hasSetUp) |
{ |
this._setUp = spec.setUp; |
} |
hasTearDown = (typeof spec.tearDown == "function"); |
if (hasTearDown) |
{ |
this._tearDown = spec.tearDown; |
} |
var tests = spec.tests; |
if (tests) |
{ |
this.setTests(tests); |
} |
} |
var tests = this._tests; |
if (tests.length == 0) |
{ |
return this._printMsg("No tests defined.", "info"); |
} |
this._appendTable(); |
tests.result = { |
failed: 0, |
passed: 0 |
}; |
var hasSetTimeout = jsx.object.isMethod(jsx.global, "window", "setTimeout"); |
var hasClearTimeout = jsx.object.isMethod(jsx.global, "window", "clearTimeout"); |
var me = this; |
for (var i = 0, len = tests.length; i < len; ++i) |
{ |
if (hasSetTimeout) |
{ |
/* Asynchronous testing allows GUI thread to paint table */ |
(function (i) { |
var timeout = window.setTimeout(function () { |
me._runTest(i, hasSetUp, hasTearDown); |
if (hasClearTimeout) |
{ |
window.clearTimeout(timeout); |
} |
}, 50); |
}(i)); |
} |
else |
{ |
this._runTest(i, hasSetUp, hasTearDown); |
} |
} |
}, |
/** |
* @protected |
*/ |
_runTest: function (i, hasSetUp, hasTearDown) { |
var tests = this._tests; |
var test = tests[i]; |
var number = i + 1; |
var file = this._file; |
var feature = this._feature; |
var description = ""; |
if (test && typeof test != "function") |
{ |
if (test.file) |
{ |
file = test.file; |
} |
if (test.feature) |
{ |
feature = test.feature; |
} |
description = test.description || test.desc || test.name; |
test = test.code; |
} |
if (hasSetUp) |
{ |
this._setUp(i, test); |
} |
try |
{ |
test(i); |
++tests.result.passed; |
this._printResult(number, file, feature, description, |
"passed", "info"); |
} |
catch (e) |
{ |
++tests.result.failed; |
this._printResult(number, file, feature, description, |
"threw " + e + (e.stack ? "\n\n" + e.stack : ""), |
"error"); |
} |
if (hasTearDown) |
{ |
this._tearDown(i, test); |
} |
if (i == tests.length - 1) |
{ |
this._printSummary(tests.result); |
} |
}, |
setFile: function (file) { |
this._file = file; |
return this; |
}, |
setFeature: function (feature) { |
this._feature = feature; |
return this; |
}, |
setSetUp: function (f) { |
if (typeof f != "function") |
{ |
_throwThis("jsx.InvalidArgumentError", |
["", typeof f, "function"], "jsx.test.runner.setSetUp"); |
} |
this._setUp = f; |
return this; |
}, |
setTearDown: function (f) { |
if (typeof f != "function") |
{ |
_throwThis("jsx.InvalidArgumentError", ["", typeof f, "function"]); |
} |
this._tearDown = f; |
return this; |
}, |
setTests: function (tests) { |
var _class = jsx.object.getClass(tests); |
if (_class != "Array") |
{ |
_throwThis("jsx.InvalidArgumentError", ["", _class, "Array"]); |
} |
this._tests = tests; |
return this; |
} |
} |
}; |
}()); |
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedRevision Id |
\ No newline at end of property |
Index: live/test/ani.html |
=================================================================== |
--- live/test/ani.html (nonexistent) |
+++ live/test/ani.html (revision 520) |
@@ -0,0 +1,155 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>Script Test Case: Animation Framework (new)</title> |
+ <style type="text/css"> |
+ <!-- |
+ div { |
+ background-color: red; |
+ color: white; |
+ width: 5px; |
+ height: 5px; |
+ } |
+ --> |
+ </style> |
+ |
+ <script src="../object.js" type="text/javascript"></script> |
+ <script src="../collection.js" type="text/javascript"></script> |
+ <script src="../dom.js" type="text/javascript"></script> |
+ <script src="../dom/css.js" type="text/javascript"></script> |
+ <script src="../dom/css/color.js" type="text/javascript"></script> |
+ <script src="../types.js" type="text/javascript"></script> |
+ <script src="../string.js" type="text/javascript"></script> |
+ <!-- <script src="../ani.bak.js" type="text/javascript"></script> --> |
+ <script src="../dom/ani.js" type="text/javascript"></script> |
+ <!-- <script src="firebug/firebug.js" type="text/javascript"></script> --> |
+ <script type="text/javascript"> |
+ /* |
+ var anim, anim2; |
+ function body_load() |
+ { |
+ anim = new Animation( |
+ 'test-object', |
+ [ |
+ new Timeline({ |
+ style: { |
+ left: { from: 400, to: 0 }, |
+ top: { from: 200, by: -100 }, |
+ width: { from: 200, to: 100 }, |
+ height: { from: 200, to: 100 } |
+ }, |
+ duration: 1000 |
+ }), |
+ { |
+ style: { |
+ top: { to: 0 } |
+ }, |
+ duration: 1000 |
+ } |
+ ]); |
+ |
+ anim2 = new Animation( |
+ 'test-object', |
+ new Timeline([ |
+ new KeyFrame({ |
+ time: 0, |
+ style: { |
+ left: 400, |
+ top: 200, |
+ width: 200, |
+ height: 200 |
+ } |
+ }), |
+ new KeyFrame({ |
+ time: 1000, |
+ style: { |
+ left: 0, |
+ top: {by: -100}, |
+ width: 100, |
+ height: 100 |
+ } |
+ }), |
+ new Pause(1000), |
+ new KeyFrame({ |
+ style: { |
+ top: 1000 |
+ } |
+ }) |
+ ]) |
+ ); |
+ } |
+ */ |
+ |
+ var anim; |
+ function body_load() |
+ { |
+ var target = document.getElementById("test-object"); |
+ var Animation = jsx.dom.animation.Animation; |
+ var Timeline = jsx.dom.animation.Timeline; |
+ var KeyFrame = jsx.dom.animation.KeyFrame; |
+ var Color = jsx.dom.css.Color; |
+ anim = new Animation({ |
+ target: target, |
+ preferNative: false, |
+ timelines: [ |
+ new Timeline({ |
+ keyFrames: [ |
+ new KeyFrame({ |
+ time: 0, |
+ values: { |
+ style: { |
+ left: 0, |
+ top: 0, |
+ width: 10, |
+ height: 10, |
+ opacity: 1, |
+ //backgroundColor: new Color(255, 0, 0) |
+ } |
+ } |
+ }), |
+ new KeyFrame({ |
+ time: "50%", |
+ values: { |
+ style: { |
+ left: 100, |
+ top: 100, |
+ width: 100, |
+ height: 100, |
+ opacity: 0.5, |
+ backgroundColor: new Color(0, 255, 0) |
+ } |
+ } |
+ }), |
+ new KeyFrame({ |
+ time: "4s", |
+ values: { |
+ style: { |
+ left: 200, |
+ top: 200, |
+ width: 100, |
+ height: 100, |
+ opacity: 0, |
+ backgroundColor: new Color(0, 0, 255) |
+ } |
+ } |
+ }) |
+ ], |
+ autoReverse: true |
+ }) |
+ ] |
+ }); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body onload="body_load();" debug="true"> |
+ <input type="button" value="Action!" onclick="anim.play();"> |
+ <input type="button" value="More Action!" onclick="anim2.play();"> |
+ |
+ <div id="test-object"> |
+ |
+ </div> |
+ </body> |
+</html> |
/live/test/ani.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/array-test.js |
=================================================================== |
--- live/test/array-test.js (nonexistent) |
+++ live/test/array-test.js (revision 520) |
@@ -0,0 +1,309 @@ |
+function runTests() |
+{ |
+ var _test = jsx.test; |
+ var assert = _test.assert; |
+ var assertArrayEquals = _test.assertArrayEquals; |
+ var _createComparator = jsx.array.createComparator; |
+ var BigArray = jsx.array.BigArray; |
+ |
+ _test.runner.run({ |
+ file: "array.js", |
+ tests: [ |
+ { |
+ feature: 'jsx.array.BigArray()', |
+ description: 'Return new instance (factory)', |
+ code: function () { |
+ assert(BigArray() instanceof BigArray); |
+ } |
+ }, |
+ { |
+ feature: 'new jsx.array.BigArray()', |
+ description: 'Return new empty instance (constructor)', |
+ code: function () { |
+ assert(new BigArray() instanceof BigArray); |
+ } |
+ }, |
+ { |
+ feature: 'new BigArray(BigArray)', |
+ description: 'Clone instance', |
+ code: function () { |
+ var s = (new BigArray(new BigArray("x"))).toString(); |
+ assert(s === "x"); |
+ } |
+ }, |
+ { |
+ feature: 'new BigArray("")', |
+ description: 'Return one-element array', |
+ code: function () { |
+ assertArrayEquals([""], new BigArray("").toArray()); |
+ } |
+ }, |
+ { |
+ feature: 'new BigArray("x")', |
+ description: 'Convert to <code>BigArray("x")</code>', |
+ code: function () { |
+ assertArrayEquals(["x"], new BigArray("x").toArray()); |
+ } |
+ }, |
+ { |
+ feature: 'new BigArray(int)', |
+ description: 'Create <code>BigArray</code> of specified length', |
+ code: function () { |
+ var a = []; |
+ a.length = 42; |
+ assertArrayEquals(a, new BigArray(42).toArray()); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'BigArray.prototype.toArray()', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assertArrayEquals([], new BigArray().toArray()); |
+ assertArrayEquals([""], new BigArray("").toArray()); |
+ assertArrayEquals(["x"], new BigArray("x").toArray()); |
+ assertArrayEquals([23, 42], new BigArray(23, 42).toArray()); |
+ } |
+ }, |
+ { |
+ feature: 'BigArray.length', |
+ description: 'Getter works', |
+ code: function () { |
+ var i = Math.pow(2, 53); |
+ assert(new BigArray(i).length == i); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'BigArray.getLength()', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new BigArray().getLength() === 0); |
+ assert(new BigArray(42).getLength() === 42); |
+ assert(new BigArray("").getLength() === 1); |
+ assert(new BigArray("x").getLength() === 1); |
+ assert(new BigArray("x", "y").getLength() === 2); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'BigArray.prototype.get()', |
+ description: 'Throw <code>jsx.InvalidArgumentError</code>', |
+ code: function () { |
+ var failure = jsx.tryThis( |
+ function () { |
+ new BigArray().get(); |
+ return false; |
+ }, |
+ function (e) { |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assert(failure); |
+ } |
+ }, |
+ { |
+ feature: 'BigArray.prototype.get(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new BigArray("x").get(0) === "x"); |
+ assert(typeof new BigArray("x").get(1) == "undefined"); |
+ |
+ assert(new BigArray("x", "y").get(-2) === "x"); |
+ assert(new BigArray("x", "y").get(-1) === "y"); |
+ assert(typeof new BigArray("x", "y").get(-4) == "undefined"); |
+ } |
+ }, |
+ |
+ /* TODO: Override and test Array methods that are not MAX_LENGTH-safe */ |
+ |
+ { |
+ feature: 'BigArray.prototype.toString(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new BigArray().toString() === ""); |
+ assert(new BigArray(0).toString() === ""); |
+ assert(new BigArray(1).toString() === ""); |
+ assert(new BigArray(2).toString() === ","); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'BigArray.prototype.valueOf(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ var a = new BigArray("x\uD834\uDD1Ey"); |
+ var v = a.valueOf(); |
+ assert(v === a); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.array.createComparator(aKeys)', |
+ description: 'Sort <code>Array</code> as specified', |
+ code: function () { |
+ var o1 = {x: 2}; |
+ var o2 = {x: 1}; |
+ var a = [o1, o2]; |
+ a.sort(_createComparator(["x"])); |
+ assertArrayEquals([o2, o1], a); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.array.createComparator(aKeys, oOptions)', |
+ description: 'Sort <code>Array</code> as specified', |
+ code: function () { |
+ var o1 = {x: 1}; |
+ var o2 = {x: 2}; |
+ var a = [o1, o2]; |
+ a.sort(_createComparator(["x"], {descending: true})); |
+ assertArrayEquals([o2, o1], a); |
+ |
+ o1 = {x: "1 "}; |
+ o2 = {x: 1}; |
+ a = [o1, o2]; |
+ a.sort(_createComparator(["x"], {strict: true})); |
+ assertArrayEquals([o2, o1], a); |
+ |
+ o1 = {x: 1}; |
+ o2 = {x: "1 "}; |
+ a = [o1, o2]; |
+ a.sort(_createComparator(["x"], {descending: true, strict: true})); |
+ assertArrayEquals([o2, o1], a); |
+ |
+ o1 = {x: "20"}; |
+ o2 = {x: "1"}; |
+ a = [o1, o2]; |
+ a.sort(_createComparator(["x"], {numeric: true})); |
+ assertArrayEquals([o2, o1], a); |
+ |
+ o1 = {x: "1"}; |
+ o2 = {x: "1"}; |
+ a = [o1, o2]; |
+ a.sort(_createComparator(["x"], {numeric: true, strict: true})); |
+ assertArrayEquals([o1, o2], a); |
+ |
+ o1 = {x: 1}; |
+ o2 = {x: "1"}; |
+ a = [o1, o2]; |
+ a.sort(_createComparator(["x"], {numeric: true})); |
+ assertArrayEquals([o1, o2], a); |
+ |
+ o1 = {x: "1 "}; |
+ o2 = {x: 1}; |
+ a = [o1, o2]; |
+ a.sort(_createComparator(["x"], {numeric: true, strict: true})); |
+ assertArrayEquals([o1, o2], a); |
+ |
+ o1 = {x: 2}; |
+ o2 = {x: "12"}; |
+ a = [o1, o2]; |
+ a.sort(_createComparator(["x"], { |
+ descending: true, |
+ numeric: true, |
+ strict: true |
+ })); |
+ assertArrayEquals([o2, o1], a); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.array.createComparator([{key: …, callback: …}])', |
+ description: 'Sort <code>Array</code> as specified', |
+ code: function () { |
+ var o1 = { |
+ x: "10" |
+ }; |
+ var o2 = { |
+ x: "2" |
+ }; |
+ var a = [o1, o2]; |
+ a.sort(_createComparator([ |
+ { |
+ key: "x", |
+ callback: Number |
+ } |
+ ])); |
+ assertArrayEquals([o2, o1], a); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.array.createComparator([{key: …, constructor: …}])', |
+ description: 'Sort <code>Array</code> as specified', |
+ code: function () { |
+ var o1 = { |
+ x: "10" |
+ }; |
+ var o2 = { |
+ x: "2" |
+ }; |
+ var a = [o1, o2]; |
+ a.sort(_createComparator([ |
+ { |
+ key: "x", |
+ constructor: Number |
+ } |
+ ])); |
+ assertArrayEquals([o2, o1], a); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.array.createComparator([{key: …, comparator: …}])', |
+ description: 'Sort <code>Array</code> as specified', |
+ code: function () { |
+ var o1 = { |
+ engine: { |
+ liters: 4.0, |
+ cylinders: 4 |
+ }, |
+ }; |
+ var o2 = { |
+ engine: { |
+ liters: 3.0, |
+ cylinders: 4 |
+ }, |
+ }; |
+ var a = [o1, o2]; |
+ a.sort(_createComparator([ |
+ { |
+ key: "engine", |
+ comparator: _createComparator(["cylinders", "liters"]) |
+ } |
+ ])); |
+ assertArrayEquals([o2, o1], a); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.array.createComparator("…", {callback: …, constructor: …, comparator: …})', |
+ description: 'Sort <code>Array</code> as specified', |
+ code: function () { |
+ function Bar (baz) |
+ { |
+ this.baz = String(baz); |
+ } |
+ |
+ Bar.prototype.toString = function () { |
+ return this.baz; |
+ }; |
+ |
+ function Baz (bla) |
+ { |
+ this.length = bla.length; |
+ } |
+ |
+ var o1 = {"bar": new Bar("burpbarbazbla")}; |
+ var o2 = {"bar": new Bar("foo")}; |
+ |
+ var foo = [o1, o2]; |
+ |
+ foo.sort(_createComparator(["bar"], { |
+ callback: String, |
+ constructor: Baz, |
+ comparator: _createComparator(["length"], {numeric: true}) |
+ })); |
+ |
+ assertArrayEquals([o2, o1], foo); |
+ } |
+ } |
+ ] |
+ }); |
+} |
\ No newline at end of file |
/live/test/array-test.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/regexp-test.js |
=================================================================== |
--- live/test/regexp-test.js (nonexistent) |
+++ live/test/regexp-test.js (revision 520) |
@@ -0,0 +1,1003 @@ |
+var RegExp2 = jsx.regexp.RegExp; |
+var String2 = jsx.regexp.String; |
+ |
+function runTests () |
+{ |
+ var message = document.createElement("p"); |
+ |
+ function removeMessage () |
+ { |
+ message.parentNode.removeChild(message); |
+ message = null; |
+ } |
+ |
+ var _runAsync = jsx.dom.timeout.runAsync; |
+ _runAsync(function () { |
+ message.appendChild(document.createTextNode("Unit test in progress…")); |
+ |
+ var hint = document.createElement("p"); |
+ var strong = document.createElement("strong"); |
+ strong.appendChild(document.createTextNode("See error console for details.")); |
+ hint.appendChild(strong); |
+ |
+ var body = document.body; |
+ body.appendChild(message); |
+ body.appendChild(hint); |
+ }); |
+ |
+ _runAsync(function () { |
+ var assert = jsx.test.assert; |
+ var assertTrue = jsx.test.assertTrue; |
+ var assertFalse = jsx.test.assertFalse; |
+ var out = []; |
+ |
+ jsx.test.runner.run({ |
+ file: "regexp.js", |
+ feature: "jsx.regexp.RegExp", |
+ tests: [ |
+ { |
+ feature: "jsx.regexp.toString2(RegExp)," |
+ + " regexp.toString2()", |
+ desc: "Return the literal that was used to create" |
+ + " the <code>RegExp</code>, without delimiters" |
+ + " and flags", |
+ code: function () { |
+ var s = "\\bfo?o+"; |
+ var rx = new RegExp(s); |
+ assert(jsx.regexp.toString2(rx) === s); |
+ assert(rx.toString2() === s); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.concat(…)," |
+ + " RegExp.prototype.concat(…)", |
+ desc: "Concat <code>RegExp</code>s", |
+ code: function () { |
+ assert(jsx.regexp.concat(/foo/, /bar/).source == "foobar"); |
+ assert(/foo/.concat(/bar/).source == "foobar"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.concat(…)," |
+ + " RegExp.prototype.concat(…)", |
+ desc: "Concat <code>RegExp</code>s, merge flags", |
+ code: function () { |
+ var rx = jsx.regexp.concat(/foo/, /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, /bar/); |
+ assertTrue(!rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, /bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, /bar/m); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, /bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, /bar/); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, /bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, /bar/m); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, /bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, /bar/); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, /bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, /bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, /bar/m); |
+ assertTrue(!rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, /bar/gm); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, /bar/); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, /bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, /bar/m); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, /bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, /bar/); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, /bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, /bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, /bar/m); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, /bar/gm); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, /bar/); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, /bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, /bar/m); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, /bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, /bar/); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, /bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, /bar/gm); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/); |
+ assertTrue(!rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/m); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/.concat(/bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/g.concat(/bar/); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/g.concat(/bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/g.concat(/bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/g.concat(/bar/m); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/g.concat(/bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/g.concat(/bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/g.concat(/bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/i.concat(/bar/); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/i.concat(/bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/i.concat(/bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/i.concat(/bar/m); |
+ assertTrue(!rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/i.concat(/bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/i.concat(/bar/gm); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/i.concat(/bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/m.concat(/bar/); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/m.concat(/bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/m.concat(/bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/m.concat(/bar/m); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/m.concat(/bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/m.concat(/bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/m.concat(/bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gi.concat(/bar/); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/gi.concat(/bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/gi.concat(/bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/gi.concat(/bar/m); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gi.concat(/bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = /foo/gi.concat(/bar/gm); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gi.concat(/bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gm.concat(/bar/); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gm.concat(/bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gm.concat(/bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gm.concat(/bar/m); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gm.concat(/bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gm.concat(/bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gm.concat(/bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gim.concat(/bar/); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gim.concat(/bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gim.concat(/bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gim.concat(/bar/gm); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = /foo/gim.concat(/bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.concat(…)," |
+ + " RegExp.prototype.concat(…)", |
+ desc: "Concat <code>RegExp</code>s and <code>String</code>s", |
+ code: function () { |
+ assert(jsx.regexp.concat(/foo/, "|", /bar/).source == "foo|bar"); |
+ assert(jsx.regexp.concat(/foo/, "|", "bar").source == "foo|bar"); |
+ assert(jsx.regexp.concat("foo", "|", "bar").source == "foo|bar"); |
+ |
+ assert(/foo/.concat("|", /bar/).source == "foo|bar"); |
+ assert(/foo/.concat("|", "bar").source == "foo|bar"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.concat(…)," |
+ + " RegExp.prototype.concat(…)", |
+ desc: "Concat <code>RegExp</code>s and <code>String</code>s, merge flags", |
+ code: function () { |
+ var rx = jsx.regexp.concat(/foo/, "|", /bar/); |
+ assertTrue(!rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, "|", /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, "|", /bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, "|", /bar/m); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, "|", /bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/, "|", /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/m); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/g, "|", /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, "|", /bar/); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, "|", /bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, "|", /bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, "|", /bar/m); |
+ assertTrue(!rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/i, "|", /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, "|", /bar/); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, "|", /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, "|", /bar/i); |
+ assertTrue(!rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, "|", /bar/m); |
+ assertTrue(!rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/m, "|", /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, "|", /bar/); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, "|", /bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, "|", /bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, "|", /bar/m); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && !rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gi, "|", /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, "|", /bar/); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, "|", /bar/g); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, "|", /bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, "|", /bar/m); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, "|", /bar/gm); |
+ assertTrue(rx.global && !rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gm, "|", /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, "|", /bar/); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, "|", /bar/g); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, "|", /bar/i); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, "|", /bar/m); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, "|", /bar/gi); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, "|", /bar/gm); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ |
+ rx = jsx.regexp.concat(/foo/gim, "|", /bar/gim); |
+ assertTrue(rx.global && rx.ignoreCase && rx.multiline); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.regexp.intersect(), /foo/.intersect(),' |
+ + ' jsx.regexp.intersect(…)', |
+ desc: "Return <code>null</code>", |
+ code: function () { |
+ assert(jsx.regexp.intersect() === null); |
+ assert(/foo/.intersect() === null); |
+ assert(jsx.regexp.intersect("foo") === null); |
+ assert(jsx.regexp.intersect(/foo/) === null); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.intersect(String, …)", |
+ desc: "Return <code>null</code>", |
+ code: function () { |
+ assert(jsx.regexp.intersect("foo", "bar") === null); |
+ assert(jsx.regexp.intersect("foo", /bar/) === null); |
+ } |
+ }, |
+ { |
+ feature: "regexp.intersect(String)", |
+ desc: "Return <code>null</code>", |
+ code: function () { |
+ assert(/foo/.intersect("bar") === null); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.intersect(/foo/, /bar/)," |
+ + " /foo/.intersect(/bar/)", |
+ desc: 'Return <code>/()/</code>', |
+ code: function () { |
+ assert(jsx.regexp.intersect(/foo/, /bar/).source === "()"); |
+ assert(/foo/.intersect(/bar/).source === "()"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.intersect(/foo|bar/, /baz|bar/)," |
+ + " /foo|bar/.intersect(/baz|bar/)", |
+ desc: 'Return <code>/(bar)/</code>', |
+ code: function () { |
+ assert(jsx.regexp.intersect(/foo|bar/, /baz|bar/).source == "(bar)"); |
+ assert(/foo|bar/.intersect(/baz|bar/).source == "(bar)"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.intersect(/foo|bar|baz/, /baz|bla|bar/)", |
+ desc: 'Return <code>/(bar|baz)/</code> or <code>/(baz|bar)/</code>', |
+ code: function () { |
+ var rx = jsx.regexp.intersect(/foo|bar|baz/, /baz|bla|bar/); |
+ assert(rx.source == "(bar|baz)" || rx.source == "(baz|bar)"); |
+ } |
+ }, |
+ { |
+ name: 'Use statically loaded' |
+ + ' <acronym title="Unicode Character Database"' |
+ + '>UCD</acronym> (script)', |
+ code: function () { |
+ assert(typeof RegExp2.propertyClasses != "undefined"); |
+ |
+ var rx = new RegExp2("\\p{Zp}"); |
+ assert(rx.source == "[\u2029]"); |
+ |
+ if (!jsx.info(rx)) |
+ { |
+ out.push(rx); |
+ } |
+ } |
+ }, |
+ { |
+ name: 'Load UCD dynamically with' |
+ + ' <acronym title="XMLHttpRequest">XHR</acronym> (script)', |
+ code: function () { |
+ delete RegExp2.propertyClasses; |
+ assert(typeof RegExp2.propertyClasses == "undefined"); |
+ |
+ var rx = new RegExp2("\\p{Zp}"); |
+ assert(rx.source == "[\u2029]"); |
+ |
+ if (!jsx.info(rx)) |
+ { |
+ out.push(rx); |
+ } |
+ } |
+ }, |
+ { |
+ name: 'Load UCD dynamically with' |
+ + ' <acronym title="XMLHttpRequest">XHR</acronym> (text)', |
+ code: function () { |
+ var propertyClasses = RegExp2.propertyClasses; |
+ delete RegExp2.propertyClasses; |
+ assert(typeof RegExp2.propertyClasses == "undefined"); |
+ |
+ var ucdScriptPath = RegExp2.ucdScriptPath; |
+ delete RegExp2.ucdScriptPath; |
+ assert(typeof RegExp2.ucdScriptPath == "undefined"); |
+ assert(typeof RegExp2.ucdTextPath == "string"); |
+ |
+ var rx; |
+ jsx.tryThis( |
+ function () { |
+ rx = new RegExp2("\\p{Ll}"); |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ }); |
+ |
+ var classLl = "[" + RegExp2.propertyClasses["Ll"] + "]"; |
+ RegExp2.ucdScriptPath = ucdScriptPath; |
+ RegExp2.propertyClasses = propertyClasses; |
+ assert(rx && (rx.source == classLl)); |
+ |
+ if (!jsx.info(rx)) |
+ { |
+ out.push(rx); |
+ } |
+ } |
+ }, |
+ { |
+ name: "Throw exception on undefined property class", |
+ code: function () { |
+ RegExp2.deletePropertyClass("Zp"); |
+ var thrown = false; |
+ jsx.tryThis( |
+ function () { |
+ var rx = new RegExp2("\\p{Zp}"); |
+ if (!jsx.info(rx)) |
+ { |
+ out.push(rx); |
+ } |
+ }, |
+ function (e) { |
+ if (e.name == "jsx.regexp.UndefinedPropertyClassError") |
+ { |
+ thrown = true; |
+ if (!jsx.info(e)) |
+ { |
+ out.push(e); |
+ } |
+ } |
+ else |
+ { |
+ jsx.rethrowThis(e); |
+ } |
+ }); |
+ |
+ assertTrue(thrown); |
+ } |
+ }, |
+ { |
+ name: '<acronym title="Perl-Compatible Regular Expressions"' |
+ + '>PCRE</acronym> option flags:' |
+ + ' <code>x</code> (PCRE_EXTENDED)' |
+ + ' – remove single-line comments' |
+ + ' and unescaped whitespace', |
+ code: function () { |
+ var rx = new RegExp2(" x#foo\n\\ y#bar", "x"); |
+ assert(rx.source == "x y"); |
+ } |
+ }, |
+ { |
+ name: 'PCRE pattern-match modifiers <code>(?x)</code> and <code>(?-x)</code>', |
+ code: function () { |
+ var rx = new RegExp2("a b#foo\n(?-x)c d#bar\r\n(?x)d e#baz\r(?-x)f g", "x"); |
+ assert(rx.source == "abc d#bar\r\ndef g"); |
+ } |
+ }, |
+ { |
+ name: 'PCRE combined pattern-match modifier <code>(?x-x)</code>' |
+ + ' (no change)', |
+ code: function () { |
+ var rx = new RegExp2("(?x-x)a b#foo"); |
+ assert(rx.source == "a b#foo"); |
+ } |
+ }, |
+ { |
+ name: "PCRE option flags: <code>extended</code> property", |
+ code: function () { |
+ assertFalse(new RegExp2("\\w", "").extended); |
+ assertTrue(new RegExp2("\\w", "x").extended); |
+ } |
+ }, |
+ { |
+ name: "PCRE option flags: <code>s</code> (PCRE_DOTALL)" |
+ + " – <code>.</code> matches newline too", |
+ code: function () { |
+ var rx = new RegExp2(".", "s"); |
+ assert(rx.source == "[\\S\\s]"); |
+ |
+ assert("\n".match(rx)[0] == "\n"); |
+ } |
+ }, |
+ { |
+ name: 'PCRE pattern-match modifiers <code>(?s)</code> and <code>(?-s)</code>', |
+ code: function () { |
+ var rx = new RegExp2("a.b(?-s)c.d(?s)e.f", "s"); |
+ assert(rx.source == "a[\\S\\s]bc.de[\\S\\s]f"); |
+ |
+ assert(("a\nbc.de\nf".match(rx) || [])[0] === "a\nbc.de\nf"); |
+ assert("a\nbc\nde\nf".match(rx) === null); |
+ } |
+ }, |
+ { |
+ name: 'PCRE combined pattern-match modifier <code>(?s-s)</code>' |
+ + ' (no change)', |
+ code: function () { |
+ var rx = new RegExp2("a.b(?s-s)c.de.f"); |
+ assert(rx.source == "a.bc.de.f"); |
+ } |
+ }, |
+ { |
+ name: "PCRE option flags: <code>dotAll</code> property", |
+ code: function () { |
+ assertFalse(new RegExp2("\\w", "").dotAll); |
+ assertTrue(new RegExp2("\\w", "s").dotAll); |
+ } |
+ }, |
+ { |
+ name: "PCRE named subpatterns: <code>?<name></code>" |
+ + "(Perl style)", |
+ code: function () { |
+ var rx = new RegExp2("(?<foo>bar)"); |
+ assert(rx.groups[1] === "foo"); |
+ |
+ assert(rx.exec("bar").groups.foo === "bar"); |
+ |
+ var m = new String2("bar").match(rx); |
+ assert(m.groups.foo === "bar"); |
+ } |
+ }, |
+ { |
+ name: "PCRE named subpatterns: <code>?'name'</code>" |
+ + " (Perl style)", |
+ code: function () { |
+ var rx = new RegExp2("(?P'foo'bar)"); |
+ assert(rx.groups[1] === "foo"); |
+ |
+ assert(rx.exec("bar").groups.foo === "bar"); |
+ |
+ var s = new String2("bar"); |
+ var m = s.match(rx); |
+ assert(m.groups.foo === "bar"); |
+ } |
+ }, |
+ { |
+ name: "PCRE named subpatterns: <code>?P<name></code>" |
+ + " (Python style)", |
+ code: function () { |
+ var rx = new RegExp2("(?P<foo>bar)"); |
+ assert(rx.groups[1] === "foo"); |
+ |
+ assert(rx.exec("bar").groups.foo === "bar"); |
+ |
+ var s = new String2("bar"); |
+ var m = s.match(rx); |
+ assert(m.groups.foo === "bar"); |
+ } |
+ }, |
+ { |
+ name: "PCRE named subpatterns with modifiers: <code>(?sx'name'…)</code>" |
+ + " (Perl style)", |
+ code: function () { |
+ var rx = new RegExp2("(?s'foo'.)"); |
+ assert(rx.source === "([\\S\\s])"); |
+ assert(rx.groups[1] === "foo"); |
+ assert(rx.names["foo"] === 1); |
+ } |
+ }, |
+ { |
+ name: "PCRE named subpatterns with modifiers: <code>(?sx<name>…)</code>" |
+ + " (Python style)", |
+ code: function () { |
+ var rx = new RegExp2("(?s<foo>.)"); |
+ assert(rx.source === "([\\S\\s])"); |
+ assert(rx.groups[1] === "foo"); |
+ assert(rx.names["foo"] === 1); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>unicodeMode</code> property", |
+ code: function () { |
+ assertFalse(new RegExp2("\\w", "").unicodeMode); |
+ assertTrue(new RegExp2("\\w", "u").unicodeMode); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\d</code> matches non-ASCII digit", |
+ code: function () { |
+ var rx = new RegExp2("\\d", "u"); |
+ assert(rx.exec("\uFF19") != null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>[\\d]</code> matches non-ASCII digit", |
+ code: function () { |
+ var rx = new RegExp2("[\\d]", "u"); |
+ assert(rx.exec("\uFF19") != null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\s</code> matches non-ASCII whitespace", |
+ code: function () { |
+ var rx = new RegExp2("\\s", "u"); |
+ assert(rx.exec("\u3000") != null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>[\\s]</code> matches non-ASCII whitespace", |
+ code: function () { |
+ var rx = new RegExp2("[\\s]", "u"); |
+ assert(rx.exec("\u3000") != null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\w</code> matches non-ASCII letter", |
+ code: function () { |
+ var rx = new RegExp2("\\w", "u"); |
+ assert(rx.exec("ä") != null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>[\\w]</code> matches" |
+ + " non-ASCII letter", |
+ code: function () { |
+ var rx = new RegExp2("[\\w]", "u"); |
+ assert((rx.exec("ä") || [])[0] == "ä"); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\W</code> does not match" |
+ + " non-ASCII letter", |
+ code: function () { |
+ var rx = new RegExp2("\\W", "u"); |
+ assert(rx.exec("ä") === null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>[\\W]</code> does not match" |
+ + " non-ASCII letter", |
+ code: function () { |
+ var rx = new RegExp2("[\\W]", "u"); |
+ assert(rx.exec("ä") === null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>[^\\W]</code> matches" |
+ + " non-ASCII letter", |
+ code: function () { |
+ var rx = new RegExp2("[^\\W]", "u"); |
+ assert((rx.exec("ä") || [])[0] == "ä"); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\b</code> matches" |
+ + " at the start of input", |
+ code: function () { |
+ var rx = new RegExp2("\\ba", "u"); |
+ assert((rx.exec("a") || [])[0] === "a"); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\b</code> matches" |
+ + " after initial opening group parenthesis", |
+ code: function () { |
+ assert(((new RegExp2("(\\ba)", "u")).exec("a") || [])[0] === "a"); |
+ assert(((new RegExp2("(?:\\ba)", "u")).exec("a") || [])[0] === "a"); |
+ assert(((new RegExp2("(?<foo>\\ba)", "u")).exec("a") || [])[0] === "a"); |
+ assert(((new RegExp2("(?'foo'\\ba)", "u")).exec("a") || [])[0] === "a"); |
+ assert(((new RegExp2("(?P<foo>\\ba)", "u")).exec("a") || [])[0] === "a"); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\b</code> matches" |
+ + " at the end of input", |
+ code: function () { |
+ var rx = new RegExp2("a\\b", "u"); |
+ assert((rx.exec("a") || [])[0] === "a"); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\b</code> does not" |
+ + " match after non-ASCII letter", |
+ code: function () { |
+ var rx = new RegExp2("\\ba", "u"); |
+ assert(rx.exec("äa") === null); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\b</code> does not" |
+ + " match before non-ASCII letter", |
+ code: function () { |
+ var rx = new RegExp2("a\\b", "u"); |
+ assert(rx.exec("aä") === null); |
+ } |
+ }, |
+ { |
+ feature: '(new jsx.regex.RegExp(…, "u")).exec(String)', |
+ name: "Unicode mode: <code>\\b</code> matches" |
+ + " after non-letter, match is trimmed", |
+ code: function () { |
+ var rx = new RegExp2("\\bä", "u"); |
+ assert((rx.exec(" ä") || [])[0] === "ä"); |
+ } |
+ }, |
+ { |
+ name: "Unicode mode: <code>\\b</code> matches" |
+ + " before non-letter", |
+ code: function () { |
+ var rx = new RegExp2("ä\\b", "u"); |
+ assert((rx.exec("ä ") || [])[0] === "ä"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.regexp.RegExp(…, "su"))', |
+ desc: "Unicode mode: <code>.</code> works with PCRE_DOTALL", |
+ code: function () { |
+ var rx = new RegExp2("x.y", "su"); |
+ assert(rx.source === "x[\\S\\s]y"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.regexp.RegExp.exec(jsx.regexp.RegExp, String)", |
+ desc: "Unicode mode: <code>\\b</code> match" |
+ + " before non-ASCII letter is trimmed", |
+ code: function () { |
+ var rx = new RegExp2("\\bä", "u"); |
+ assert((RegExp2.exec(" ä", rx) || [])[0] === "ä"); |
+ } |
+ }, |
+ { |
+ feature: 'new jsx.regexp.String(String)', |
+ desc: "Convert correctly", |
+ code: function () { |
+ var s = new jsx.regexp.String("bar"); |
+ assert(s == "bar"); |
+ assert("bar" == s); |
+ assertFalse(s === "bar"); |
+ assertFalse("bar" === s); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.regexp.String.prototype.match(new jsx.regexp.RegExp(…, "u"))', |
+ desc: "Unicode mode: <code>\\b</code> match" |
+ + " before non-ASCII letter is trimmed (all captures)", |
+ code: function () { |
+ var rx = new RegExp2("(\\bä)", "u"); |
+ var m = (new String2(" ä")).match(rx); |
+ assertTrue(m[0] === "ä" && m[1] === "ä"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.regexp.String.prototype.match(new jsx.regexp.RegExp(…, "gu"))', |
+ desc: "Unicode mode: <code>\\b</code> match" |
+ + " before non-ASCII letter is trimmed (all matches)", |
+ code: function () { |
+ var rx = new RegExp2("\\b\\w", "gu"); |
+ var m = new String2(" ä ö").match(rx); |
+ assert(m[0] === "ä" && m[1] === "ö"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.regexp.String.prototype.replace(jsx.regexp.RegExp), String)', |
+ desc: "Named backreferences are supported", |
+ code: function () { |
+ var rx = new RegExp2(" (?'foo'ä) ö", "g"); |
+ var s = new String2(" ä ö").replace(rx, "${foo}"); |
+ assert(s === "ä"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.regexp.String.prototype.replace(jsx.regexp.RegExp, Function)', |
+ desc: "Named backreferences are supported", |
+ code: function () { |
+ var rx = new RegExp2(" (?'foo'ä) ö", "g"); |
+ var s = new String2(" ä ö").replace(rx, function () { |
+ return this.groups["foo"]; |
+ }); |
+ assert(s === "ä"); |
+ } |
+ } |
+ ] |
+ }); |
+ |
+ removeMessage(); |
+ |
+ if (out.length > 0) |
+ { |
+ window.alert(out.join("\n")); |
+ } |
+ }); |
+} |
\ No newline at end of file |
/live/test/regexp-test.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/regexp.php |
=================================================================== |
--- live/test/regexp.php (nonexistent) |
+++ live/test/regexp.php (revision 520) |
@@ -0,0 +1,30 @@ |
+<?php header('Content-Type: text/html; charset=utf8'); ?> |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>regexp.js Test Case</title> |
+ <style type="text/css"> |
+ <!-- |
+ [title] { |
+ border-bottom: 1px dotted #666; |
+ cursor: help; |
+ } |
+ --> |
+ </style> |
+ <script type="text/javascript" |
+ src="../builder?src=object,string/unicode,dom,dom/timeout,test/test,http&verbose=1"></script> |
+ <script type="text/javascript" src="../regexp.js"></script> |
+ <script type="text/javascript" src="../UnicodeData.js"></script> |
+ <script type="text/javascript" src="regexp-test.js"></script> |
+ </head> |
+ |
+ <body> |
+ <h1><tt>regexp.js</tt> Unit Test</h1> |
+ <div><a href="view-source:http://<?php |
+ echo $_SERVER['HTTP_HOST'] . htmlspecialchars($_SERVER['REQUEST_URI']); |
+ ?>">View source</a></div> |
+ <script type="text/javascript">runTests()</script> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/regexp.php |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/debug.js |
=================================================================== |
--- live/test/debug.js (nonexistent) |
+++ live/test/debug.js (revision 520) |
@@ -0,0 +1,2408 @@ |
+/** |
+ * <title>Debug Library<title> |
+ * |
+ * @filename debug.js |
+ * @version $Id$ |
+ * @requires object.js, types.js, array.js (for #Properties) |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2001‒2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+jsx.debug = { |
+ /** @version */ |
+ version: "0.99.$Revision$", |
+ copyright: "Copyright \xA9 1999-2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/test/", |
+ enabled: false |
+}; |
+ |
+// debug.docURL = debug.path + "../debug.htm"; |
+ |
+/* global undefined value (for implementations without it) */ |
+var undefined; |
+ |
+/** @section Exceptions */ |
+ |
+/** |
+ * @param msg : string |
+ */ |
+function DebugException(msg) |
+{ |
+ alert( |
+ "debug.js " |
+ + jsx.debug.version + "\n" |
+ + jsx.debug.copyright |
+ + " " + jsx.debug.author |
+ + " <" + jsx.debug.email + ">\n\n" |
+ + msg); |
+ return false; |
+} |
+ |
+/** @section Features */ |
+ |
+/** |
+ * Returns a value depending on whether an expression evaluates to |
+ * a true-value or a false-value. |
+ * |
+ * @param expression |
+ * Expression to be evaluated. Parsed as a <i>Program</i> if a |
+ * <code>String</code>. |
+ * @param trueValue |
+ * The value to be returned if <var>expression</var> evaluates to |
+ * a true-value; the default is the empty string. |
+ * @param falseValue |
+ * The value to be returned if <var>expression</var> evaluates to |
+ * a false-value; the default is the empty string. |
+ * @return mixed |
+ * <var>trueValue</var> if <var>expression</var> evaluates to |
+ * a true-value; <var>falseValue</var> otherwise. |
+ * @see Global#eval(String) |
+ */ |
+jsx.debug.test = function (expression, trueValue, falseValue) { |
+ var sDefault = ""; |
+ var result = sDefault; |
+ |
+ jsx.setErrorHandler(); |
+ |
+ /* NOTE: Must pass "false" so that any exception is considered failure */ |
+ if (jsx.tryThis(expression, "false")) |
+ { |
+ result = (arguments.length > 1 ? trueValue : sDefault); |
+ } |
+ else |
+ { |
+ result = (arguments.length > 2 ? falseValue : sDefault); |
+ } |
+ |
+ jsx.clearErrorHandler(); |
+ return result; |
+}; |
+ |
+if (typeof test2 == "undefined") |
+{ |
+ /** |
+ * @param sExpression : string |
+ * @param sTest : string |
+ * @param expected |
+ * @return mixed |
+ */ |
+ var test2 = function (sExpression, sTest, expected) |
+ { |
+ var out = new Array(), result; |
+ |
+ if (sExpression) |
+ { |
+ out.push(sExpression); |
+ } |
+ |
+ setErrorHandler(); |
+ eval(new Array( |
+ 'try {', |
+ ' eval(sExpression.replace(/\\bvar\\s+/g, ""));', |
+ ' try {', |
+ ' result = eval(sTest.replace(/\\bvar\\s+/g, ""));', |
+ " out.push('// ' + sTest + ' === ' + result", |
+ " + ' (expected: ' + expected + ')');", |
+ ' } catch(e) {', |
+ " out.push('// ' + sTest + ' \\u21d2 ' + e.name + ': '", |
+ " + e.message);", |
+ ' }', |
+ '} catch(e) {', |
+ " out.push('// ' + sExpression + ' \\u21d2 ' + e.name + ': '", |
+ " + e.message);", |
+ '}').join("\n")); |
+ clearErrorHandler(); |
+ |
+ document.write(out.join('\n') + '\n\n'); |
+ |
+ return result; |
+ }; |
+} |
+/* |
+var o; |
+test('var o = {foo: 23};', 'o.foo', 23); |
+test('addProperties({foo: 42}, o);', 'o.foo', 23); |
+test('addProperties({foo: 42}, Object.ADD_OVERWRITE, o);', 'o.foo', 42); |
+ |
+var o2; |
+test(new Array( |
+ 'var o2 = {x: 42};', |
+ 'addProperties({bar: o2}, Object.ADD_OVERWRITE, o);').join('\n'), |
+ 'o.bar.x', 42); |
+test('o2.x = null;', 'o.bar.x', null); |
+test(new Array( |
+ 'o2 = {x: 42};', |
+ 'addProperties({baz: o2}, Object.COPY_ENUM_DEEP, o);').join('\n'), |
+ 'o.baz.x', 42); |
+test('o2.x = null;', 'o.baz.x', '!= null (TODO)'); |
+*/ |
+ |
+//if (!isMethod("profile")) |
+//{ |
+// /** |
+// * @param s |
+// * @return |
+// */ |
+// var profile = function (s) { |
+// var me = arguments.callee; |
+// me.start = new Date(); |
+// me.description = s || ""; |
+// }; |
+// |
+// if (!isMethod("profileEnd")) |
+// { |
+// /** |
+// * @return string |
+// */ |
+// var profileEnd = function () { |
+// var |
+// descr = profile.description, |
+// msg = (descr ? (descr + ": ") : "") + (new Date() - profile.start) |
+// + " ms"; |
+// |
+// if (isMethod("window", "alert")) |
+// { |
+// window.alert(msg); |
+// } |
+// |
+// delete profile.start; |
+// delete profile.description; |
+// |
+// return msg; |
+// }; |
+// } |
+//} |
+ |
+/** |
+ * Returns evaluation statistics. |
+ * |
+ * @param expr : string|Array |
+ * Expression or array of expressions to be evaluated. |
+ * @param bPrintResult : optional boolean = false |
+ * If <code>true</code>, the method returns a printable result. |
+ * @param loops : optional number = 1 |
+ * Specifies the number of times the expression should be evaluated. |
+ * @param repeats : optional number = 1 |
+ * Specifies the number of times the evaluation loop(s) of the expression |
+ * should be repeated. If greater than 1, the method also returns the |
+ * minimum, maximum and average of the evaluation time. |
+ * @return Array|string |
+ * An array containing the number of milliseconds the evaluation of the |
+ * expression(s) took if bPrintResult is <code>false</code>; |
+ * a human-readable table string to indicate the test results otherwise. |
+ * @requires types#isArray() |
+ */ |
+function time(expr, bPrintResult, loops, repeats) |
+{ |
+ if (!isArray(expr)) |
+ { |
+ expr = [expr]; |
+ } |
+ |
+ if (!loops || loops < 1) |
+ { |
+ loops = 1; |
+ } |
+ |
+ if (!repeats || repeats < 1) |
+ { |
+ repeats = 1; |
+ } |
+ |
+ var |
+ result = ["Expressions:\n\n"], |
+ stats = []; |
+ |
+ /* loop through expressions */ |
+ for (var i = 0, cnt = expr.length; i < cnt; i++) |
+ { |
+ var cur_expr = expr[i]; |
+ if (bPrintResult) |
+ { |
+ result.push("[", i + 1, "] ", cur_expr, "\n"); |
+ } |
+ |
+ /* reset stats for this expression */ |
+ var repeat_stats = stats[i] = []; |
+ |
+ /* repeat loops */ |
+ for (var j = 0; j < repeats; j++) |
+ { |
+ /* reset stats for this repeat */ |
+ repeat_stats[j] = -1; |
+ var eval_loop_start = new Date(); |
+ |
+ /* repeat evaluation */ |
+ for (var k = 0; k < loops; k++) |
+ { |
+ jsx.tryThis(function () { expr[i]; }); |
+ } |
+ |
+ repeat_stats[j] = new Date() - eval_loop_start; |
+ } |
+ } |
+ |
+ if (bPrintResult) |
+ { |
+ // debugger |
+ result.push( |
+ "\nEvaluation Results (ms):\n\n\\", |
+ pad("n|", cnt.toString().length - 1)); |
+ |
+ var col_width = Math.maxN(repeats, stats).toString().length + 1; |
+ |
+ for (j = 0; j < repeats; j++) |
+ { |
+ result.push(format("%*2$d", j + 1, col_width)); |
+ } |
+ |
+ var expr_width = (cnt + 1).toString().length; |
+ |
+ result.push( |
+ format("\xA0%*4$s\xA0%*4$s\xA0%*4$s\n", "min", "max", "avg", col_width), |
+ format("%*2$d\\|", "e", expr_width), |
+ strRepeat("_", col_width * repeats), |
+ "\n"); |
+ |
+ /* loop through expressions */ |
+ for (i = 0; i < cnt; i++) |
+ { |
+ result.push(format("%*2$d|", i + 1, expr_width < 2 ? 2 : expr_width)); |
+ |
+ for (j = 0; j < repeats; j++) |
+ { |
+ result.push(format("%*2$d", stats[i][j], col_width)); |
+ } |
+ |
+ result.push( |
+ format( |
+ "\xA0%*4$s\xA0%*4$s\xA0%*4$s\n", |
+ Math.minN(stats[i]), |
+ Math.maxN(stats[i]), |
+ Math.avgN(stats[i]).toFixed(1), |
+ col_width)); |
+ } |
+ |
+ result = result.join(""); |
+ } |
+ else |
+ { |
+ result = stats; |
+ } |
+ |
+ return result; |
+} |
+ |
+function time2(aFunctions, repeats) |
+{ |
+ if (!aFunctions) |
+ { |
+ jsx.throwThis( |
+ "TypeError", |
+ "benchmark: Expected aFunctions : Function|Array, saw " + aFunctions |
+ + " : " + typeof aFunctions); |
+ } |
+ |
+ if (aFunctions.constructor != Array) |
+ { |
+ aFunctions = [aFunctions]; |
+ } |
+ |
+ var results = []; |
+ |
+ for (var i = 0, len = aFunctions.length; i < len; i++) |
+ { |
+ var |
+ f = aFunctions[i], |
+ start = new Date(); |
+ |
+ for (var j = repeats; j--;) |
+ { |
+ f(); |
+ } |
+ |
+ results[i] = { |
+ code: f, |
+ duration: new Date() - start |
+ }; |
+ } |
+ |
+ return results; |
+} |
+ |
+/** |
+ * @param e : Error |
+ * @return string |
+ * Serialization of error properties and stack trance, if available. |
+ */ |
+function getError(e) |
+{ |
+ var sError = e; |
+ |
+ if (typeof e.name != "undefined") |
+{ |
+ sError += "\nName: " + e.name; |
+} |
+ |
+if (typeof e.number != "undefined") |
+{ |
+ sError += "\nCode: " + e.number; |
+} |
+ |
+if (typeof e.message != "undefined") |
+{ |
+ sError += "\nMessage: " + e.message; |
+} |
+ |
+if (typeof e.description != "undefined") |
+{ |
+ sError += "\nDescription: " + e.description; |
+} |
+ |
+if (typeof e.fileName != "undefined") |
+{ |
+ sError += "\nFilename: " + e.fileName; |
+} |
+ |
+jsx.setErrorHandler(); |
+eval(new Array( |
+ 'try {', |
+ ' if (e.lineNumber) {', |
+ ' sError += "\\nLine: " + e.lineNumber;', |
+ ' }', |
+ '} catch (e2) {', |
+ ' sError += "\\nLine: " + e2;', |
+ '}').join("\n")); |
+jsx.clearErrorHandler(); |
+ |
+if (typeof e.stack != "undefined") |
+{ |
+ sError += "\nStack:\n" + e.stack; |
+ } |
+ |
+ return sError; |
+} |
+ |
+/** |
+ * Returns the type of a reference and, if possible, of its object properties |
+ * (nested only one level deep), and optionally displays that in an alert() |
+ * box. |
+ * |
+ * @param a |
+ * Value to be displayed along with its type. If a string or an array of |
+ * strings and bDontEval is not provided or false, each string is evaluated |
+ * using eval() and that value is used. |
+ * @param bDontAlert : boolean = false |
+ * If <code>true</code>, returns the value instead of displaying it. |
+ * @param bDontEval : boolean |
+ * If <code>true</code>, does not evaluate arguments but uses their value. |
+ * @requires jsx.types#isArray() |
+ * @return string |
+ * Serialization of the value(s) |
+ */ |
+function alertValue(a, bDontAlert, bDontEval) |
+{ |
+ if (!isArray(a)) |
+ { |
+ a = [a]; |
+ } |
+ |
+ for (var as = [], i = 0, len = a.length; i < len; i++) |
+ { |
+ var |
+ o = !bDontEval ? eval(a[i]) : a[i], |
+ t = typeof o, |
+ delim = (t == "string" ? '"' : ''), |
+ s = delim + a[i] + delim + " : " + t + " = " + delim + o + delim; |
+ |
+ if (t == "object" || t == "function") |
+ { |
+ for (var j in o) |
+ { |
+ t = typeof o[j]; |
+ delim = (t == "string" ? '"' : ''); |
+ s += "\n" + a[i] + '["' + j + '"] : ' + t + " = " |
+ + delim + o[j] + delim; |
+ } |
+ } |
+ |
+ as.push(s); |
+} |
+ |
+var result = as.join("\n"); |
+ |
+ if (!bDontAlert) |
+ { |
+ window.alert(result); |
+ } |
+ |
+ return result; |
+} |
+ |
+ |
+/* |
+ * JavaScript Beautifier and Uglyfier ;-) |
+ * |
+ * Test input: |
+ |
+javascript: |
+ function resizeToHelp() |
+ { |
+ alert("Usage: resizeTo clientWidth [clientHeight]"); |
+ }; |
+ |
+ if ("%s".length > 0) |
+ { |
+ var a = "%s".split(" "); |
+ if (a[0] && !isNaN(a[0])) |
+ { |
+ void (window.innerWidth=parseInt('%s'.split(' ')[0]); |
+ } |
+ else |
+ { |
+ resizeToHelp(); |
+ } |
+ |
+ if (a[1] && !isNaN(a[1])) |
+ { |
+ void (window.innerHeight=parseInt(a[0])); |
+ } |
+ else |
+ { |
+ resizeToHelp(); |
+ } |
+ } |
+ else |
+ { |
+ resizeToHelp(); |
+ } |
+ |
+ */ |
+/** |
+ * @param s : string |
+ * @return string |
+ * The beautified version of <var>s</var> |
+ */ |
+function beautify(s) |
+{ |
+ return s |
+ .replace(/(\s*\{\s*)/g, "\n$1\n ") |
+ .replace(/(\s*\}([^,;])\s*)/g, "\n$1\n") |
+ .replace(/,([^\s])/g, ", $1") |
+ .replace(/([^}]?;\s*)/g, "$1\n"); |
+} |
+ |
+//alert(beautify('javascript:function resizeToHelp() { alert("Usage: resizeTo clientWidth [clientHeight]"); } if ("%s".length > 0) { var a = "%s".split(" "); if (a[0] && !isNaN(a[0])) { void (window.innerWidth=parseInt(a[0])); if (a[1] && !isNaN(a[1])) { void (window.innerHeight=parseInt(a[1])); } else resizeToHelp(); } else resizeToHelp(); } else resizeToHelp();')); |
+ |
+/** |
+ * @param s : string |
+ * @return string |
+ * <var>s</var> with all whitespace reduced to a single space |
+ */ |
+function uglyfy(s) |
+{ |
+ return s.replace(/\s/g, " "); // .replace |
+} |
+ |
+ |
+// DEBUG |
+// var rxCode; |
+ |
+jsx.debug.synhlMatches = [ |
+ [ 1, 'comm'], |
+ [ 4, 'scr'], |
+ [ 7, 'regexp'], |
+ [ 9, 'tag'], |
+ [11, 'str'], |
+ // [14, 'entity'], |
+ [15, 'rswd'], |
+ [18, 'ident'], |
+ [21, 'punct'], |
+ [22, 'num'] |
+]; |
+ |
+/** |
+ * Applies syntax highlighting on contents of <code>code</code> |
+ * elements unless their <code>class</code> attribute has the |
+ * value "donthl", or on the given context if provided. |
+ * |
+ * Requires support for the (currently proprietary) |
+ * <code>innerHTML</code> property of element objects |
+ * if no arguments are provided or if a {@link Node} |
+ * argument is provided. |
+ * |
+ * @param context : Node|String |
+ * Reference to the context node or a text string to be |
+ * syntax-highlighted. The default is the <code>document</code> |
+ * node. |
+ * @return string |
+ * @see jsx.object#isMethod() |
+ */ |
+var synhl = (function () { |
+ var |
+ jsx_debug = jsx.debug, |
+ jsx_object = jsx.object, |
+ _isMethod = jsx_object.isMethod, |
+ _getFeature = jsx_object.getFeature, |
+ reservedWords = [ |
+ /* ES5 keywords */ |
+ "break", "case", "catch", "continue", "debugger", "default", "delete", |
+ "do", "else", "finally", "for( +each)?", "function", "if", "in", |
+ "instanceof", "new", "return", "switch", "this", "throw", "try", |
+ "typeof", "var", "void", "while", "with", |
+ |
+ /* ES5 future reserved words */ |
+ "class", "const", "enum", "export", "extends", "super", |
+ |
+ /* ES5 future reserved words in strict mode */ |
+ "implements", "interface", "let", "package", "private", "protected", |
+ "public", "static", "yield", |
+ |
+ /* ES5 special words not specified as reserved */ |
+ "get", "set", "null", "true", "false", "undefined", |
+ |
+ /* ES4 additional keywords */ |
+ "abstract", "final", "import", "internal", |
+ |
+ /* ES4 additional data types */ |
+ "boolean", "byte", "char", "decimal", "double", "float", "int", |
+ "long", "sbyte", "short", |
+ |
+ /* JScript keywords */ |
+ "expando", "hide", "override", "endif" |
+ ], |
+ |
+ identifiers = [ |
+ "(encode|decode)URI(Component)?", "undefined", |
+ "Object", "prototype", "__defineGetter__", "__defineSetter__", |
+ "__iterator__", "__proto__", "constructor", "hasOwnProperty", |
+ "isPrototypeOf", "propertyIsEnumerable", |
+ "Array", "concat", "every", "indexOf", "join", "length", "pop", "push", |
+ "reverse", "shift", "slice", "some", "sort", "splice", "unshift", |
+ "Boolean", |
+ "Date", "getFullYear", "getMilliseconds", "getUTCDate", "getUTCDay", |
+ "getUTCFullYear", "getUTCHours", "getUTCMilliseconds", "getUTCMinutes", |
+ "getUTCMonth", "getUTCSeconds", "getVarDate", "setFullYear", |
+ "setMilliseconds", "setUTCDate", "setUTCDay", "setUTCFullYear", |
+ "setUTCHours", "setUTCMilliseconds", "setUTCMinutes", "setUTCMonth", |
+ "setUTCSeconds", |
+ "Function", "arguments", "arity", "apply", "call", "callee", "caller", |
+ "toSource", |
+ "Math", "max", "min", |
+ "Number", "MAX_VALUE", "MIN_VALUE", "NEGATIVE_INFINITY", |
+ "POSITIVE_INFINITY", |
+ "Error", "description", "message", "name", "number", "stack", |
+ "RegExp", "compile", "exec", "global", "ignoreCase", "index", |
+ "multiline", "source", |
+ "String", |
+ "close", "next", "send", |
+ "Iterator", |
+ "ActiveXObject", "Enumerator", "GetObject", "isFinite", "print", |
+ "VBArray", |
+ "XMLHttpRequest", |
+ "document", "write", |
+ "window", "clearInterval", "clearTimeout", "setInterval", "setTimeout" |
+ ], |
+ |
+ bUnicode = ("\uFFFD".length == 1), |
+ |
+ sElementType = ( |
+ "[:\\w[UNICODE_START]]" |
+ + "[:\\w[UNICODE_START].\\d[UNICODE_NAME]-]*" |
+ ) |
+ .replace( |
+ /\[UNICODE_START\]/g, |
+ bUnicode |
+ ? "\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D" |
+ + "\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF" |
+ + "\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD" |
+ : "") |
+ .replace( |
+ /\[UNICODE_NAME\]/, |
+ bUnicode ? "\u00B7\u0300-\u036F\u203F-\u2040" : ""), |
+ |
+ sOptAttr = "(\\s+[^>]+|)", |
+ |
+ rxCode = new RegExp( |
+ "(//.*|/\\*([^*/]|\\*[^/]|/)*\\*/)" |
+ + "|(</?script(.|\\r?\\n|\\r)*?>|^script$)" |
+ + "|(^|[^<])(/(</[^>]*>|[^/\\\\\\[]|\\\\.|\\[[^\\]]*\\])+/)" |
+ + "|</?" + sElementType + sOptAttr + ">" |
+ + "|(</?" + sElementType + sOptAttr + ">)" |
+ + "|('([^'\\\\]|\\\\.)*'" + '|"([^"\\\\]|\\\\.)*")' |
+ + "|(&#?[0-9A-Za-z]+;)|&#?[0-9A-Za-z]+;" |
+ + "|([\\{\\}]|\\b(" + reservedWords.join("|") + ")\\b(?!>))" |
+ + "|\\b(" + identifiers.join("|") + ")\\b" |
+ + "|([.:\\[\\]\\(\\),;])" |
+ + "|\\b(0x[0-9A-Fa-f]+|[0-9]+|Infinity|NaN)\\b", |
+ "g"), |
+ |
+ aReplace = jsx.debug.synhlMatches, |
+ |
+ fReplace = (function () { |
+ var len = aReplace.length; |
+ |
+ return function (match) { |
+ for (var i = 0; i < len; ++i) |
+ { |
+ var r = aReplace[i]; |
+ |
+ if (arguments[r[0]]) |
+ { |
+ return '<span class="' + r[1] + '">' + match + '<\/span>'; |
+ } |
+ } |
+ |
+ return match; |
+ }; |
+ }()); |
+ |
+// /** |
+// * @param node : Node |
+// * @param needle : string |
+// * @param replacement : string |
+// */ |
+// var recursiveReplace = function (node, needle, replacement) { |
+// if (node.nodeType == Node.ELEMENT_NODE) |
+// { |
+// for (var i = 0, cs = node.childNodes, len = cs.length; i < len; i++) |
+// { |
+// arguments.callee(cs[i], needle, replacement); |
+// } |
+// } |
+// else if (node.nodeType == Node.TEXT_NODE) |
+// { |
+// var v = node.nodeValue; |
+// var m = v.match(needle); |
+// if (m) |
+// { |
+// var mLength = m[0].length; |
+// var prefix = document.createTextNode(v.substring(0, m.index)); |
+// var suffix = document.createTextNode(v.slice(m.index + mLength)); |
+// var infix = document.createTextNode(v.slice(m.index, mLength)); |
+// var span = document.createElement("span"); |
+// span.style.color = "red"; |
+// span.appendChild(infix); |
+// var parentNode = node.parentNode; |
+// var nextSibling = node.nextSibling; |
+// parentNode.removeChild(node); |
+// parentNode.insertBefore(suffix, nextSibling); |
+// parentNode.insertBefore(span, suffix); |
+// parentNode.insertBefore(prefix, span); |
+// } |
+// } |
+// }; |
+ |
+ return function (context) { |
+ if (jsx_debug.enabled && _isMethod("console", "profile")) |
+ { |
+ console.profile("synhl()"); |
+ } |
+ |
+ if (_isMethod(context, "valueOf") |
+ && typeof context.valueOf() == "string") |
+ { |
+ var passedCode = context; |
+ context = { |
+ getElementsByTagName: function () { |
+ return [{innerHTML: passedCode}]; |
+ } |
+ }; |
+ } |
+ else if (!context) |
+ { |
+ context = document; |
+ } |
+ |
+ var jsx_xpath = _getFeature(jsx, "dom", "xpath"); |
+ if (jsx.object.isNativeMethod(jsx_xpath, "evaluate")) |
+ { |
+ var collCode = jsx_xpath.evaluate( |
+ '//code[not(contains(concat(" ", @class, " "), " donthl "))]', |
+ context); |
+ } |
+ |
+ var useXPath = false; |
+ if ((collCode && (useXPath = true) |
+ || (_isMethod(context, "getElementsByTagName") |
+ && (collCode = context.getElementsByTagName('code')))) |
+ && collCode.length) |
+ { |
+ var sNew; |
+ |
+ for (var i = collCode.length; i--;) |
+ { |
+ var o = collCode[i]; |
+ if (useXPath || !/(^\s*|\s+)donthl(\s*$|\s+)/.test(o.className)) |
+ { |
+ if (typeof o.innerHTML != "undefined") |
+ { |
+ var s = o.innerHTML; |
+ jsx.tryThis( |
+ function () { |
+ o.innerHTML = sNew = s.replace(rxCode, fReplace); |
+ }, |
+ function () { |
+ sNew = s; |
+ }); |
+ } |
+ else |
+ { |
+ // recursiveReplace(o, ...) |
+ } |
+ } |
+ } |
+ } |
+ |
+ if (jsx_debug.enabled && _isMethod("console", "profileEnd")) |
+ { |
+ console.profileEnd(); |
+ } |
+ |
+ return sNew; |
+ }; |
+}()); |
+ |
+/** |
+ * Returns a string or the HTML content of a {@link Node} |
+ * with all syntax highlighting removed that was added |
+ * with <code>synhl</code> before. |
+ * |
+ * Requires support for the (currently proprietary) |
+ * <code>innerHTML</code> property of element objects |
+ * if no arguments are provided or if a {@link Node} |
+ * argument is provided. Unlike {@link #synhl}, the |
+ * content of elements is <em>not</em> modified. |
+ * |
+ * @param context : Node|String |
+ * Reference to the context node or a text string that |
+ * contains syntax highlighting. The default is the |
+ * <code>document</code> node. |
+ * @return string |
+ * @see jsx.object#isMethod() |
+ */ |
+var unsynhl = (function () { |
+ var _jsx = jsx; |
+ var _tryThis = _jsx.tryThis; |
+ var _jsx_object = _jsx.object; |
+ var _isMethod = _jsx_object.isMethod; |
+ var _getFeature = _jsx_object.getFeature; |
+ var _jsx_debug = _jsx.debug; |
+ |
+ var synhlClasses = _jsx.array.map( |
+ _jsx_debug.synhlMatches, function (e) { return e[1]; }); |
+ var rxSynhlClasses = new RegExp( |
+ '<span class="(' + synhlClasses.join("|") + ')">([^<]+)</span>', 'g'); |
+ |
+ return function (context) { |
+ if (_jsx_debug.enabled && _isMethod("console", "profile")) |
+ { |
+ console.profile("unsynhl()"); |
+ } |
+ |
+ if (_isMethod(context, "valueOf") |
+ && typeof context.valueOf() == "string") |
+ { |
+ var passedCode = context; |
+ context = { |
+ getElementsByTagName: function () { |
+ return [{innerHTML: passedCode}]; |
+ } |
+ }; |
+ } |
+ else if (!context) |
+ { |
+ context = document; |
+ } |
+ |
+ var jsx_xpath = _getFeature(_jsx, "dom", "xpath"); |
+ if (_jsx_object.isNativeMethod(jsx_xpath, "evaluate")) |
+ { |
+ var collCode = jsx_xpath.evaluate( |
+ '//code[not(contains(concat(" ", @class, " "), " donthl "))]', |
+ context); |
+ } |
+ |
+ var useXPath = false; |
+ if ((collCode && (useXPath = true) |
+ || (_isMethod(context, "getElementsByTagName") |
+ && (collCode = context.getElementsByTagName('code')))) |
+ && collCode.length) |
+ { |
+ var sNew; |
+ |
+ for (var i = collCode.length; i--;) |
+ { |
+ var o = collCode[i]; |
+ if (useXPath || !/(^\s*|\s+)donthl(\s*$|\s+)/.test(o.className)) |
+ { |
+ if (typeof o.innerHTML != "undefined") |
+ { |
+ var s = o.innerHTML; |
+ _tryThis( |
+ function () { |
+ sNew = s.replace(rxSynhlClasses, "$2"); |
+ }, |
+ function () { |
+ sNew = s; |
+ }); |
+ } |
+ else |
+ { |
+ // recursiveReplace(o, ...) |
+ } |
+ } |
+ } |
+ } |
+ |
+ if (_jsx_debug.enabled && _isMethod("console", "profileEnd")) |
+ { |
+ console.profileEnd(); |
+ } |
+ |
+ return sNew; |
+ }; |
+}()); |
+ |
+/** |
+ * Stores references to objects in an array |
+ * to be used for the Property constructor. |
+ * |
+ * @param aOwners : optional [Object...] |
+ * Array of the owner references to store. The |
+ * default is an array with <code>null</code> as |
+ * sole element. |
+ * @property items : Array |
+ */ |
+function Owners(aOwners) |
+{ |
+ this.items = aOwners || new Array(null); |
+} |
+ |
+/** |
+ * Retrieves type of the object or property specified by the |
+ * string <code>sName</code> and its value <code>sValue</code> |
+ * and stores that information in an object. You may optionally |
+ * provide an identifier for the property with <code>iID</code> |
+ * and an array of references to the owner objects with |
+ * <code>aoOwners</code>. |
+ * <p> |
+ * If you provide the latter, the constructor function will |
+ * utilize <code>inArray()</code>, trying to determine if the |
+ * object/property references one of owners |
+ * (<code>referencesOwners</code>; <code>false</code> if |
+ * <code>aoOwners</code> is not provided) and how many properties |
+ * the object/property has itself (<code>hasProperties</code>; |
+ * <code>false</code> if <code>aoOwners</code> is not |
+ * provided or if detection fails.) TODO: This is now |
+ * achieved through creating a new <code>ObjectInfo</code> object |
+ * from either <code>aoOwners[aoOwners.length-1][sName]</code> |
+ * or <code>aoOwners[sName]</code>. In order to avoid |
+ * infinite recursion when the Property(...) constructor is |
+ * called within ObjectInfo(...), it passes its fourth argument |
+ * <code>bCalledFromObjectInfo</code> as fifth one to |
+ * ObjectInfo(...) if present (<code>true</code> otherwise), |
+ * while ObjectInfo(...) passes its fifth argument |
+ * (<code>bCalledFromProperty</code>) as fourth to it. (Previous |
+ * versions did not call ObjectInfo(...) and thus did not allow |
+ * to count non-enumerable properties of a property; it seemed |
+ * ineffective to copypaste the ObjectInfo(...) code into this |
+ * constructor, thus the cross-calling.) |
+ * </p><p> |
+ * For reasons of backwards compatibility the object also provides |
+ * the `referencesOwner' property to specify if it references |
+ * its direct owner and allows for passing an object reference |
+ * for <code>aoOwners</code> beside of an Owners object to |
+ * specify that owner object. To determine if |
+ * <code>aoOwners</code> is an Owners object or not, the |
+ * <code>isInstanceOf()</code> method is required. |
+ * </p> |
+ * @param sName : string |
+ * Name of the property. |
+ * @param sValue |
+ * Value of the property. |
+ * @param iID : optional number |
+ * (Unique) ID of the property. |
+ * @param aoOwners : optional Owners|Object |
+ * Reference to an Owners object storing references to the |
+ * owner (object) of the property and its owners, where the |
+ * last element references the direct owner. Allows also |
+ * for a reference to a non-Owners object to specify only |
+ * the direct owner. |
+ * @param bNonEnum : optional boolean |
+ * <code>true</code> specifies that the property is |
+ * non-enumerable. Optional. The default <code>false</code> |
+ * determines the property to be enumerable. |
+ * @param bCalledFromObjectInfo : optional boolean |
+ * @see jsx.types#isArray |
+ * @see jsx.array#inArray |
+ */ |
+function Property(sName, sValue, iID, aoOwners, bNonEnum, |
+ bCalledFromObjectInfo) |
+{ |
+ this.id = iID; |
+ this.name = sName; |
+ this.type = typeof sValue; |
+ this.value = sValue; |
+ this.referencesOwner = false; |
+ this.referencesOwners = false; |
+ this.propertyCount = 0; |
+ this.hasProperties = false; |
+ this.enumerable = !bNonEnum; |
+ |
+ var oOwner = null; |
+ if (isInstanceOf(aoOwners, Owners)) |
+ { |
+ this.owner = aoOwners.items[aoOwners.items.length - 1]; |
+ } |
+ else |
+ { |
+ this.owner = aoOwners; |
+ } |
+ |
+ setErrorHandler(); |
+ |
+ eval(new Array( |
+ 'try { /* for IE */', |
+ ' if (typeof this.owner != "undefined"', |
+ ' && typeof this.owner[sName] != "undefined")', |
+ ' {', |
+ ' setErrorHandler();', |
+ ' if (isInstanceOf(this.owner, Owners)) {', |
+ ' this.referencesOwners =', |
+ ' inArray(this.owner[sName], aoOwners.items);', |
+ ' } else {', |
+ ' this.referencesOwner = (this.owner[sName] == this.owner);', |
+ ' }', |
+/* |
+ ' if (!bCalledFromObjectInfo)', |
+ ' {', |
+ ' var propertyInfo = new ObjectInfo(this.owner[sName], sName, false, true);', |
+ ' this.hasProperties = propertyInfo.hasProperties;', |
+ ' }', |
+*/ |
+ ' try { /* for IE */', |
+ ' if (!(sName == "toString" /* for IE6 SP-1 */', |
+ ' || (this.owner == location &&', |
+ ' inArray(sName, ["assign", "reload", "replace"]))))', |
+ ' {', |
+ ' for (var p in this.owner[sName]) {', |
+ ' this.propertyCount++;', |
+ ' }', |
+ ' }', |
+ ' } catch (e) {', |
+ |
+/* |
+ ' alert(sName + "\n"', |
+ ' + "for (var p in this.owner[sName])\n\n"', |
+ ' + getError(e));', |
+*/ |
+ |
+ ' try { /* for IE */', |
+ ' this.propertyCount = this.owner[sName].length;', |
+ ' } catch (e) {', |
+ |
+/* |
+ ' alert(sName + "\n"', |
+ ' + "for (var j = 0; i < this.owner[sName].length; j++)"', |
+ ' + getError(e));', |
+*/ |
+ |
+ ' }', |
+ ' }', |
+ ' }', |
+ '} catch (e) {', |
+ '}').join("\n")); |
+ |
+ clearErrorHandler(); |
+ |
+ this.hasProperties = (this.propertyCount > 0); |
+} |
+ |
+/** |
+ * @param a : optional Array |
+ */ |
+function PropertyArray(a) |
+{ |
+/** |
+ * Note that the <code>properties</code> extended |
+ * <code>Array</code> object defines properties for |
+ * both sort order and sort direction which can be |
+ * recognized by their identifier's prefix. These |
+ * are: |
+ */ |
+ /* default */ |
+ this.soNone = -1; |
+ this.soByID = this.soNone; |
+ this.soByName = 0; |
+ this.soByType = 1; |
+ this.soByValue = 2; |
+ this.sdNone = 0; |
+ this.sdAscending = 1; |
+ this.sdDescending = -1; |
+ /** |
+ * The current sort order and direction is stored in the |
+ * `sortOrder' and `sortDir' properties of the `properties' |
+ * extended Array object. |
+ * |
+ * For the sort direction constants are the negative opposite |
+ * of each other, you may toggle the sort direction easily: |
+ * |
+ * var p = bar.properties; |
+ * p.sortBy(p.sortOrder, -p.sortDir); |
+ * |
+ * If `sortDir' was `0' (zero) before and therefore the |
+ * properties were unsorted (i.e. sorted by ID), the array |
+ * will then be sorted ascending by the current criteria. |
+ */ |
+ this.sortOrder = this.soNone; |
+ this.sortDir = this.sdNone; |
+ this.items = a || new Array(); |
+ this.length = |
+ (typeof this.items.length == "number" |
+ ? this.items.length |
+ : 0); |
+} |
+ |
+/** |
+ * Adds the property to the property array. |
+ * |
+ * @param oProperty : Property |
+ * @return number|Property |
+ * (implementation-dependent) Either the number of properties added so far, |
+ * or the last <code>Property</code> added |
+ */ |
+PropertyArray.prototype.push = function (oProperty) { |
+ return this.items.push(oProperty); |
+}; |
+ |
+/** |
+ * With a reference to an ObjectInfo object having a valid |
+ * `target' reference, you may sort the property array by |
+ * properties of the Property prototype: |
+ * |
+ * if (bar && bar.properties) |
+ * { |
+ * bar.properties.unsort(); |
+ * bar.properties.sortById(...); |
+ * bar.properties.sortByName(...); |
+ * bar.properties.sortByType(...); |
+ * bar.properties.sortByValue(...); |
+ * } |
+ * |
+ * Except for the unsort() method, each specific sort method |
+ * takes an optional argument, specifying the sort direction |
+ * (ascending or descending.) If the argument is left out, |
+ * the properties are sorted in ascending direction by the |
+ * selected criteria. unsort() sorts the properties as if |
+ * they were retrieved with a `for (property in object)' loop |
+ * and is therefore identical to sortById() or |
+ * sortById(sdAscending). |
+ */ |
+/* Specific sort methods */ |
+/** @type Comparator */ |
+PropertyArray.prototype.cmpSortByIdAsc = function (a, b) { |
+ return a.id - b.id; |
+}; |
+ |
+/** @type Comparator */ |
+PropertyArray.prototype.cmpSortByIdDesc = function (a, b) { |
+ return b.id - a.id; |
+}; |
+ |
+/** |
+ * @param iDir : number |
+ */ |
+PropertyArray.prototype.sortById = function (iDir) { |
+ if (iDir && iDir < 0) |
+ { |
+ this.items.sort(this.cmpSortByIdDesc); |
+ } |
+ else |
+ { |
+ this.items.sort(this.cmpSortByIdAsc); |
+ } |
+ |
+ this.sortOrder = this.soById; |
+ this.sortDir = iDir ? iDir : this.sdAscending; |
+}; |
+ |
+PropertyArray.prototype.unsort = |
+ PropertyArray.prototype.sortById; |
+ |
+/** |
+ * @param a : Property |
+ * @param b : Property |
+ * @type Comparator |
+ * @return number |
+ * -1 if the name of <var>a</var> is to be sorted before the name of |
+ * <var>b</var>; 1 if vice-versa; 0 if the existing order should be kept. |
+ */ |
+PropertyArray.prototype.cmpSortByNameAsc = function (a, b) { |
+ if (a && b) |
+ { |
+ if (a.name < b.name) |
+ { |
+ return -1; |
+ } |
+ else if (a.name > b.name) |
+ { |
+ return 1; |
+ } |
+ } |
+ |
+ return 0; |
+}; |
+ |
+/** |
+ * @param a : Property |
+ * @param b : Property |
+ * @type Comparator |
+ * @return number |
+ * -1 if the name of <var>a</var> is to be sorted before the name of |
+ * <var>b</var>; 1 if vice-versa; 0 if the existing order should be kept. |
+ */ |
+PropertyArray.prototype.cmpSortByNameDesc = function (a, b) { |
+ if (a && b) |
+ |
+ { |
+ if (a.name > b.name) |
+ { |
+ return -1; |
+ } |
+ else if (a.name < b.name) |
+ { |
+ return 1; |
+ } |
+ } |
+ |
+ return 0; |
+}; |
+ |
+/** |
+ * @param iDir : number |
+ */ |
+PropertyArray.prototype.sortByName = function (iDir) { |
+ if (iDir && iDir < 0) |
+ { |
+ this.items.sort(this.cmpSortByNameDesc); |
+ } |
+ else |
+ { |
+ this.items.sort(this.cmpSortByNameAsc); |
+ } |
+ |
+ this.sortOrder = this.soByName; |
+ this.sortDir = iDir ? iDir : this.sdAscending; |
+}; |
+ |
+/** |
+ * @param a : Property |
+ * @param b : Property |
+ * @type Comparator |
+ * @return number |
+ * -1 if the name of <var>a</var> is to be sorted before the name of |
+ * <var>b</var>; 1 if vice-versa; 0 if the existing order should be kept. |
+ */ |
+PropertyArray.prototype.cmpSortByTypeAsc = function (a, b) { |
+ if (a && b) |
+ { |
+ if (a.type < b.type) |
+ { |
+ return -1; |
+ } |
+ else if (a.type > b.type) |
+ { |
+ return 1; |
+ } |
+ } |
+ |
+ return 0; |
+}; |
+ |
+/** |
+ * @param a : Property |
+ * @param b : Property |
+ * @type Comparator |
+ * @return number |
+ * -1 if the name of <var>a</var> is to be sorted before the name of |
+ * <var>b</var>; 1 if vice-versa; 0 if the existing order should be kept. |
+ */ |
+PropertyArray.prototype.cmpSortByTypeDesc = function (a, b) { |
+ if (a && b) |
+ { |
+ if (a.type > b.type) |
+ { |
+ return -1; |
+ } |
+ else if (a.type < b.type) |
+ { |
+ return 1; |
+ } |
+ } |
+ |
+ return 0; |
+}; |
+ |
+/** |
+ * @param iDir : number |
+ */ |
+PropertyArray.prototype.sortByType = function (iDir) { |
+ if (iDir && iDir < 0) |
+ { |
+ this.items.sort(this.cmpSortByTypeDesc); |
+ } |
+ else |
+ { |
+ this.items.sort(this.cmpSortByTypeAsc); |
+ } |
+ |
+ this.sortOrder = this.soByType; |
+ this.sortDir = iDir ? iDir : this.sdAscending; |
+}; |
+ |
+/** |
+ * @param a : Property |
+ * @param b : Property |
+ * @type Comparator |
+ * @return number |
+ * -1 if the name of <var>a</var> is to be sorted before the name of |
+ * <var>b</var>; 1 if vice-versa; 0 if the existing order should be kept. |
+ */ |
+PropertyArray.prototype.cmpSortByValueAsc = function (a, b) { |
+ if (a && b) |
+ { |
+ if (a.value < b.value) |
+ { |
+ return -1; |
+ } |
+ else if (a.value > b.value) |
+ { |
+ return 1; |
+ } |
+ } |
+ |
+ return 0; |
+}; |
+ |
+/** |
+ * @param a : Property |
+ * @param b : Property |
+ * @type Comparator |
+ * @return number |
+ * -1 if the name of <var>a</var> is to be sorted before the name of |
+ * <var>b</var>; 1 if vice-versa; 0 if the existing order should be kept. |
+ */ |
+PropertyArray.prototype.cmpSortByValueDesc = function (a, b) { |
+ if (a && b) |
+ { |
+ if (a.value > b.value) |
+ { |
+ return -1; |
+ } |
+ else if (a.value < b.value) |
+ { |
+ return 1; |
+ } |
+ } |
+ |
+ return 0; |
+}; |
+ |
+/** |
+ * @param iDir : number |
+ */ |
+PropertyArray.prototype.sortByValue = function (iDir) { |
+ if (iDir && iDir < 0) |
+ { |
+ this.items.sort(this.cmpSortByValueDesc); |
+ } |
+ else |
+ { |
+ this.items.sort(this.cmpSortByValueAsc); |
+ } |
+ |
+ this.sortOrder = this.soByValue; |
+ this.sortDir = iDir ? iDir : this.sdAscending; |
+}; |
+ |
+///** |
+// * `properties' also defines a general method for sorting |
+// * the array, sortBy(...), which calls the other specific |
+// * sort methods. This method takes up to two optional |
+// * arguments, the first defining the sort criteria, the |
+// * second the sort direction. You are recommended to use |
+// * the sort order and direction constants for arguments: |
+// * |
+// * var p = bar.properties; |
+// * p.sortBy(p.soByName, p.sdDescending); |
+// * |
+// * If the second argument is not provided, `sdAscending' is |
+// * assumed. Leaving the first argument out or providing an |
+// * invalid value causes no error, but the array not to be |
+// * re-sorted. |
+// * |
+// * @param iSortOrder : optional number |
+// * Sort order. |
+// * @param iSortDir : optional number |
+// * Sort direction. |
+// */ |
+//PropertyArray.prototype.sortBy = |
+//function (iSortOrder, iSortDir) |
+//{ |
+// switch (iSortOrder) |
+// { |
+// case this.soNone: |
+// case this.soByID: |
+// this.sortById(iSortDir); |
+// break; |
+// |
+// case this.soByName: |
+// this.sortByName(iSortDir); |
+// break; |
+// |
+// case this.soByType: |
+// this.sortByType(iSortDir); |
+// break; |
+// |
+// case this.soByValue: |
+// this.sortByValue(iSortDir); |
+// } |
+//}; |
+ |
+/** |
+ * @param sName : string |
+ * @param sValue : _ |
+ * @param iID : optional number |
+ * @param oOwner : optional Object |
+ * @param bNonEnum : optional boolean |
+ * @param bCalledFromProperty : optional boolean |
+ */ |
+PropertyArray.prototype.addProperty = |
+function ( |
+ sName, sValue, iID, oOwner, bNonEnum, bCalledFromProperty) |
+{ |
+ /* avoid dupes */ |
+ if ((typeof this.items.hasOwnProperty == "function" |
+ /* IE does not allow reference shortcut here! */ |
+ && this.items.hasOwnProperty != null |
+ && !this.items.hasOwnProperty(sName)) |
+ || (!isMethodType(typeof this.items.hasOwnProperty) |
+ && typeof this.items[sName] == "undefined")) |
+ { |
+ this.items[this.items.length] = |
+ new Property( |
+ sName, |
+ sValue, |
+ iID, |
+ oOwner, |
+ bNonEnum, |
+ bCalledFromProperty); /* avoid infinite recursion */ |
+ |
+ /* BUGFIX: Don't overwrite numeric properties */ |
+ var bMethod = (typeof this.items.hasOwnProperty == "function"); |
+ if ((bMethod && !this.items.hasOwnProperty(sName)) |
+ || (!bMethod && typeof this.items[sName] == "undefined")) |
+ { |
+ this.items[sName] = sValue; |
+ } |
+ |
+ this.length = this.items.length; |
+ } |
+}; |
+ |
+/** |
+ * @param rxPattern : RegExp |
+ * @param asPropertyNames : [string] |
+ * @param sType : optional string |
+ * @param fConstructor : optional Object |
+ */ |
+function NonEnumProperties(rxPattern, asPropertyNames, sType, fConstructor) |
+{ |
+ this.pattern = rxPattern || new RegExp("."); |
+ this.names = asPropertyNames || new Array(); |
+ this.type = sType || ""; |
+ this.fConstructor = fConstructor || null; |
+} |
+ |
+/** |
+ * Retrieves all properties of an object and stores them |
+ * in the `properties' array property. That array can be |
+ * sorted by the properties <code>id</code> (by declaration), |
+ * <code>name</code>, <code>type</code> and <code>value</code> |
+ * of the <code>Property</code> prototype. [See the sort |
+ * methods defined in the <code>forObject(...)</code> method.] |
+ * |
+ * Requires JavaScript 1.5+ for inline <code>function</code> |
+ * statement (1.2+) and <code>try...catch</code> statement (1.5+). |
+ * |
+ * Usage: |
+ * |
+ * <code>var foo = new ObjectInfo(myObject, sMyObjectName);</code> |
+ * |
+ * whereas <code>foo</code> is then a reference to the |
+ * <code>ObjectInfo</code> object containing property |
+ * information about the object referenced by |
+ * <code>myObject</code> or the object evaluated from |
+ * it (so that the argument can be a string, therefore |
+ * <code><strong>s</strong>Object</code>.) |
+ * |
+ * The <code>foo.name</code> property contains the name of the |
+ * string to be evaluated to an object. However, if you pass a |
+ * reference for first argument or want to fake the object's |
+ * name for some reason, you may pass a string for the second |
+ * argument in order to overwrite the default (see below.) |
+ * |
+ * Note that it is also tried to retrieve known but non-enumerable |
+ * properties if either <code>sObject</code> is a string or |
+ * <code>sName</code> is a string, matching either value against a |
+ * set of known object/property identifiers. If you fake the |
+ * object's name in <code>sName</code>, only enumerable properties |
+ * can be retrieved. |
+ * |
+ * If <code>myObject</code> cannot be evaluated to an object, |
+ * the resulting <code>ObjectInfo</code> object's |
+ * <code>target</code> property ist <code>null</code>: |
+ * |
+ * <code> |
+ * if (! foo.target) |
+ * alert("Not an object!"); |
+ * </code> |
+ * |
+ * Otherwise, <code>foo.target</code> is a reference to the |
+ * object which properties are accessed by <code>foo</code>: |
+ * |
+ * <code> |
+ * if (foo && foo.target && foo.target == anyOtherObject) |
+ * alert("anyOtherObject references myObject."); |
+ * </code> |
+ * |
+ * @param sObject : string|Object |
+ * Reference to an object or property, or string to be evaluated |
+ * to an object or a property. |
+ * (TODO: Throws NotAnObjectException if not provided or cannot |
+ * be evaluated.) |
+ * @param sName : optional string |
+ * Name of the object/property. |
+ * If this argument is not provided, the value of the |
+ * <code>name</code> property depends on <code>sObject</code>. |
+ * If the latter is a reference, the default is `_odo', otherwise |
+ * the default is the value of <code>sObject</code>. |
+ * @param bCalledFromProperty : optional boolean |
+ */ |
+function ObjectInfo(sObject, sName, bCalledFromProperty) |
+{ |
+ this.forObject(sObject, sName, bCalledFromProperty); |
+} |
+ |
+/** |
+ * Once you have a reference to an <code>ObjectInfo</code> |
+ * object, you may use this method to access another object's |
+ * properties while the property information of the former |
+ * <code>ObjectInfo</code> object will be overwritten: |
+ * |
+ * <code> |
+ * if (foo) |
+ * foo.forObject(myOtherObject); |
+ * </code> |
+ * |
+ * The <code>forObject(...)</code> method returns |
+ * <code>null</code> as well if <code>myOtherObject</code> |
+ * cannot be evaluated to an object, otherwise a reference |
+ * to the <code>ObjectInfo</code> object. In the first case |
+ * the properties of the former <code>ObjectInfo</code> object |
+ * are preserved: |
+ * |
+ * <code> |
+ * var myObject = new Something(...); |
+ * ... |
+ * var foo = new ObjectInfo(myObject); |
+ * if (foo) |
+ * { |
+ * var myOtherObject = new SomethingElse(...); |
+ * ... |
+ * var bar = foo.forObject(myOtherObject); |
+ * if (! bar) |
+ * alert("myOtherObject is not an object!"); |
+ * else |
+ * alert(foo.toString()); |
+ * } |
+ * </code> |
+ * |
+ * @param sObject: string|Object |
+ * See contract of this() |
+ * @param sName: optional string |
+ * See contract of this() |
+ * @param bCalledFromProperty: optional boolean |
+ * @property name: string |
+ * @property properties: PropertyArray |
+ * @property target: object |
+ * @property type: string |
+ */ |
+ObjectInfo.prototype.aStringProperties = [ |
+ "length", "anchor", "big", "blink", "bold", "charAt", "charCodeAt", |
+ "concat", "fixed", "fontcolor", "fontsize", "fromCharCode", |
+ "indexOf", "italics", "localeCompare", "lastIndexOf", "link", |
+ "match", "replace", "search", "slice", "small", "split", "strike", |
+ "sub", "substr", "substring", "sup", "toLowerCase", |
+ "toLocaleLowerCase", "toUpperCase", "toLocaleUpperCase" |
+]; |
+ |
+jsx.object.extend(ObjectInfo.prototype, { |
+ aNonEnumProperties: [ |
+ new NonEnumProperties( |
+ new RegExp("^\\w"), /* any object */ |
+ [ |
+ "NaN", "Infinity", "__proto__", "eval", "prototype", "toSource", |
+ "unwatch", "watch", "undefined", "constructor", "toString", |
+ "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", |
+ "propertyIsEnumerable", |
+ "__defineGetter__", "__defineSetter__", |
+ "all" |
+ ], |
+ 'object', |
+ Object), |
+ new NonEnumProperties( |
+ /jsx\.global/, /* global object */ |
+ [ |
+ "NaN", "Infinity", "length", "undefined", |
+ "parseInt", "parseFloat", "isNaN", "isFinite", |
+ "decodeURI", "decodeURIComponent", "encodeURI", |
+ "encodeURIComponent", |
+ "Object", "Function", "Array", "String", "Boolean", |
+ "Number", "Date", "RegExp", "Error", "EvalError", |
+ "RangeError", "ReferenceError", "SyntaxError", |
+ "TypeError", "URIError", |
+ "Math", |
+ "Components", "sidebar" |
+ ]), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)Array(\\.prototype)?$"), |
+ [ |
+ "every", "filter", "forEach", "index", "indexOf", "input", |
+ "lastIndexOf", "length", "map", "concat", "join", "pop", |
+ "push", "reverse", "shift", "slice", "splice", "some", |
+ "sort", "unshift" |
+ ], |
+ '', |
+ typeof Array != "undefined" ? Array : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)Date(\\.prototype)?$"), |
+ [ |
+ "getDate", "getDay", "getFullYear", "getHours", "getMilliseconds", |
+ "getMinutes", "getMonth", "getSeconds", "getTime", |
+ "getTimezoneOffset", "getUTCDate", "getUTCDay", "getUTCFullYear", |
+ "getUTCHours", "getUTCMilliseconds", "getUTCMinutes", |
+ "getUTCMonth", "getUTCSeconds", "getYear", |
+ "parse", "setDate", |
+ "setFullYear", "setHours", "setMilliseconds", "setMinutes", |
+ "setMonth", "setSeconds", "setTime", "setUTCDate", "setUTCFullYear", |
+ "setUTCHours", "setUTCMilliseconds", "setUTCMinutes", "setUTCMonth", |
+ "setUTCSeconds", "setYear", |
+ "toDateString", "toGMTString", "toLocaleString", "toTimeString", |
+ "toLocaleString", "toLocaleDateString", "toLocaleTimeString", |
+ "toUTCString", "UTC" |
+ ], |
+ '', |
+ typeof Date != "undefined" ? Date : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)Function(\\.prototype)?$"), |
+ [ |
+ "arguments", "arguments.callee", "arguments.caller", |
+ "arguments.length", "arity", "length", "apply", "call" |
+ ], |
+ 'function', |
+ typeof Function != "undefined" ? Function : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)Math$"), |
+ ["E", "LN2", "LN10", "LOG2E", "LOG10E", "PI", "SQRT1_2", "SQRT2", |
+ "abs", "acos", "asin", "atan", "atan2", "ceil", "cos", "exp", |
+ "floor", "log", "max", "min", "pow", "random", "round", "sin", |
+ "sqrt", "tan"]), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)Number(\\.prototype)?$"), |
+ ["MAX_VALUE", "MIN_VALUE", "NaN", "NEGATIVE_INFINITY", |
+ "POSITIVE_INFINITY", "toExponential", "toFixed", "toPrecision"], |
+ 'number', |
+ typeof Number != "undefined" ? Number : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)RegExp(\\.prototype)?$"), |
+ [ |
+ "global", "ignoreCase", "lastIndex", "multiline", |
+ "source", "exec", "test" |
+ ], |
+ '', |
+ typeof RegExp != "undefined" ? RegExp : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)String(\\.prototype)?$"), |
+ ObjectInfo.prototype.aStringProperties, |
+ 'string', |
+ typeof String != "undefined" ? String : null), |
+ new NonEnumProperties( |
+ new RegExp("Error(\\.prototype)?$"), |
+ ["message", "name"]), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)Packages(\\.prototype)?$"), |
+ ["className", "java", "netscape", "sun"]), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)location$", "i"), |
+ [ |
+ "assign", "hash", "host", "hostname", "href", "pathname", |
+ "port", "protocol", "reload", "replace", "search" |
+ ].concat(ObjectInfo.prototype.aStringProperties)), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)history$"), |
+ [ |
+ 'current', 'length', 'next', 'previous', |
+ 'back', 'forward', 'go' |
+ ]), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)screen$"), |
+ [ |
+ "availHeight", "availLeft", "availTop", "availWidth", "colorDepth", |
+ "height", "left", "pixelDepth", "top", "width" |
+ ]), |
+ /* LiveConnect -- Java System Library classes as of version 1.4.2_03 */ |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)java$"), |
+ [ |
+ "awt", "beans", "io", "lang", "math", "net", "nio", "rmi", |
+ "security", "sql", "text", "util" |
+ ]), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)java\\.awt$"), |
+ [ |
+ "color", "datatransfer", "dnd", "event", "font", "geom", "im", |
+ "image", "peer", "print", |
+ "ActiveEvent", "Adjustable", "AlphaComposite", "AttributeValue", |
+ "AWTError", "AWTEvent", "AWTEventMulticaster", "AWTException", |
+ "AWTKeyStroke", "AWTPermission", "BasicStroke", "BorderLayout", |
+ "Frame" |
+ ]), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)java\\.lang$"), |
+ ["System"]), |
+ new NonEnumProperties( |
+ new RegExp("^StyleSheet(\\.prototype)?$"), |
+ [ |
+ "type", "disabled", "ownerNode", "parentStyleSheet", "href", |
+ "title", "media" |
+ ], |
+ '', |
+ typeof StyleSheet != "undefined" ? StyleSheet : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)StyleSheetList(\\.prototype)?$"), |
+ ["length", "item"], |
+ '', |
+ typeof StyleSheetList != "undefined" ? StyleSheetList : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)LinkStyle(\\.prototype)?$"), |
+ ["sheet"], |
+ '', |
+ typeof LinkStyle != "undefined" ? LinkStyle : null), |
+ new NonEnumProperties( |
+ new RegExp("(^|\\.)DocumentStyle(\\.prototype)?$"), |
+ ["styleSheets"], |
+ '', |
+ typeof DocumentStyle != "undefined" ? DocumentStyle : null) |
+ ], |
+ |
+ /** |
+ * @param sObject : Object |
+ * @param sName : string |
+ * @param bCalledFromProperty : boolean |
+ * @return ObjectInfo |
+ */ |
+ forObject: function (sObject, sName, bCalledFromProperty) { |
+ this.name = |
+ (typeof sObject == "string" |
+ ? sObject |
+ : (sName ? sName : "_odo")); |
+ |
+ this.properties = new PropertyArray(); |
+ |
+ if (typeof sObject == "string") |
+ { |
+ var tc = false; |
+ setErrorHandler(); |
+ eval(new Array( |
+ 'try {', |
+ ' tc = true;', |
+ ' this.target = eval(dotsToBrackets(sObject, true));', |
+ '} catch (e) {', |
+ ' try {', |
+ ' this.target = eval(dotsToBrackets(sObject));', |
+ ' } catch (e) {', |
+ ' try {', |
+ ' this.target = jsx.global["' + sObject + '"];', |
+ ' } catch (e) {', |
+ ' this.target = null;', |
+ ' }', |
+ ' }', |
+ '}').join("\n")); |
+ window.onerror = null; |
+ if (! tc) |
+ { |
+ this.target = null; |
+ } |
+ } |
+ else |
+ { |
+ this.target = sObject; |
+ } |
+ |
+ if (this.target) |
+ { |
+ this.type = typeof this.target; |
+ var ti, t, i; |
+ |
+ /* Retrieve enumerable properties */ |
+ for (i in this.target) |
+ { |
+ /* Fixes problem with document.config (Mozilla 1.5b) */ |
+ ti = ""; |
+ t = null; |
+ setErrorHandler(); |
+ eval(new Array( |
+ 'try {', |
+ ' ti = this.target[i];', |
+ ' t = this.target;', |
+ '} catch (e) {', |
+ ' ti = null;', |
+ ' t = null;', |
+ '}').join("\n")); |
+ clearErrorHandler(); |
+ |
+ /* avoid dupes */ |
+ this.properties.addProperty( |
+ i, /* name */ |
+ ti, /* value */ |
+ this.properties.length, /* ID */ |
+ t, /* owner reference */ |
+ bCalledFromProperty); /* avoid infinity recursion */ |
+ } |
+ |
+ /* Retrieve non-enumerable properties by guessing them */ |
+ /** @property boolean */ this.hasNonEnumProperties = false; |
+ |
+ for (i = this.aNonEnumProperties.length; i--; 0) |
+ { |
+ var j = this.aNonEnumProperties[i]; |
+ if (j.pattern.test(this.name) |
+ || typeof this.target == j.type |
+ || (typeof this.target.constructor != "undefined" |
+ && this.target.constructor == j.fConstructor)) |
+ { |
+ for (var k = j.names.length; k--; 0) |
+ { |
+ var p = undefined; |
+ eval(new Array( |
+ 'try {', |
+ ' if (typeof this.target[j.names[k]] != "undefined") {', |
+ ' p = this.target[j.names[k]];', |
+ ' }', |
+ '} catch (e) {', |
+ '}').join("\n")); |
+ |
+ /* see object.js */ |
+ if (typeof this.target._hasOwnProperty == "function" |
+ && this.target._hasOwnProperty(j.names[k])) |
+ { |
+ this.hasNonEnumProperties = true; |
+ |
+ ti = ""; |
+ t = null; |
+ setErrorHandler(); |
+ eval(new Array( |
+ 'try {', |
+ ' ti = p;', |
+ ' t = this.target;', |
+ '} catch (e) {', |
+ ' ti = null;', |
+ ' t = null;', |
+ '}').join("\n")); |
+ clearErrorHandler(); |
+ |
+ /* avoid dupes */ |
+ this.properties.addProperty( |
+ j.names[k], /* name */ |
+ ti, /* value */ |
+ this.properties.length, /* ID */ |
+ t, /* owner reference */ |
+ true); /* is non-enumerable */ |
+ } |
+ } |
+ } |
+ } |
+ this.hasProperties = (this.properties.length > 0); |
+ |
+ return this; |
+ } |
+ else |
+ { |
+ this.type = "undefined"; |
+ this.hasProperties = false; |
+ |
+ return null; |
+ } |
+ }, |
+ |
+ /** |
+ * @param rxName : optional RegExp = .* |
+ * @param rxType : optional string = // |
+ * @param bInvert : optional boolean = false |
+ * @param aValue : optional _ = undefined |
+ * @return PropertyArray |
+ * An array with the data of all properties that |
+ * match the passed conditions as elements. |
+ */ |
+ getProperties: function (rxName, rxType, bInvert, aValue) { |
+ if (typeof rxType == "string") |
+ { |
+ rxType = new RegExp(rxType, "i"); |
+ } |
+ |
+ if (typeof rxName != "object" || !rxName.test) |
+ { |
+ rxName = new RegExp(rxName); |
+ } |
+ |
+ if (!rxName.test) |
+ { |
+ rxName = null; |
+ } |
+ |
+ var a = new PropertyArray(); |
+ |
+ for (var i = 0, len = this.properties.length; i < len; i++) |
+ { |
+ var p = this.properties.items[i]; |
+ |
+ var b = ((rxName && rxName.test(p.name)) || !rxName) |
+ && ((rxType && rxType.test(p.type.toLowerCase())) |
+ || !rxType) |
+ && ((arguments.length >= 4 && aValue == p.value) |
+ || arguments.length < 4); |
+ |
+ if (bInvert) |
+ { |
+ b = !b; |
+ } |
+ |
+ if (b) |
+ { |
+ a.addProperty(p.name, p.value, p.id, p.owner, !p.enumerable); |
+ } |
+ } |
+ |
+ return a; |
+ }, |
+ |
+ /** |
+ * @return string |
+ */ |
+ toString: function () { |
+ var s = ""; |
+ setErrorHandler(); |
+ eval(new Array( |
+ 'try {', |
+ ' for (var i = 0; i < this.properties.length; i++) {', |
+ ' var p = this.properties[i];', |
+ ' s += "[" + p.id + "] "', |
+ ' + p.name', |
+ ' + " : " + p.type', |
+ ' + " = "', |
+ ' + (p.type == "string" ? "\\"" : "")', |
+ ' + p.value', |
+ ' + (p.type == "string" ? "\\"" : "")', |
+ ' + "\\n";', |
+ ' }', |
+ '} catch (e) {', |
+ ' s = e;', |
+ '}').join("\n")); |
+ clearErrorHandler(); |
+ |
+ return s; |
+ } |
+}); |
+ |
+var sDefaultInspectorPath = jsx.debug.path + "ObjectInspector/obj-insp.html"; |
+var sNoObj = "[Not an object]"; |
+var CH_NBSP = unescape("%A0"); |
+ |
+/** |
+ * @param sObject : string|Object |
+ * @param aWhat : optional string|RegExp |
+ * @param sStyle : optional string |
+ * @param sHeader : optional string |
+ * @param sFooter : optional string |
+ * @param sInspectorPath : optional string |
+ * @return string |
+ */ |
+function getObjInfo(sObject, aWhat, sStyle, sHeader, sFooter, sInspectorPath) |
+{ |
+ var o, tc; |
+ |
+ // alert("1: " + sObject + "[" + typeof sObject + "]"); |
+ if (sObject) |
+ { |
+ // alert("2: " + sObject + "[" + typeof sObject + "]"); |
+ if (typeof sObject == "string") |
+ { |
+ tc = false; |
+ setErrorHandler(); |
+ eval(new Array( |
+ 'try {', |
+ ' tc = true;', |
+ ' try {', |
+ ' var o = eval(sObject);', |
+ // alert("3: " + sObject + "[" + typeof sObject + "]"); |
+ ' } catch (e) {', |
+ ' sObject = "jsx.global." + sObject;', |
+ // alert("4: " + sObject + "[" + typeof sObject + "]"); |
+ ' try {', |
+ ' var o = eval(sObject);', // TODO |
+ // alert("5: " + sObject + "[" + typeof sObject + "]"); |
+ ' } catch (e) {', |
+ // alert("6: " + "[Not an object]"); |
+ ' return (sNoObj);', |
+ ' }', |
+ ' }', |
+ + '}').join("\n")); |
+ clearErrorHandler(); |
+ if (! tc) |
+ { |
+ o = eval(sObject); |
+ // alert("7: " + "[Not an object]"); |
+ } |
+ } |
+ else |
+ { |
+ o = sObject; |
+ // alert("8: " + o); |
+ } |
+ } |
+ else |
+ { |
+ // alert("9: " + "[Not an object]"); |
+ return (sNoObj); |
+ } |
+ |
+ if (!aWhat) |
+ { |
+ aWhat = ""; /* v1.29.2002.10b3 bugfix */ |
+ } |
+ var bShowProps = |
+ (aWhat && (!aWhat.test && aWhat.toUpperCase().indexOf("P") > -1)); |
+ var bShowMethods = |
+ (aWhat && (!aWhat.test && aWhat.toUpperCase().indexOf("M") > -1)); |
+ var bShowObjects = |
+ (aWhat && (!aWhat.test && aWhat.toUpperCase().indexOf("O") > -1)); |
+ var bTextLineStyle = (sStyle && (sStyle.toUpperCase().indexOf("L") > -1)); |
+ var bFormatAsLines = (sStyle && (sStyle.toUpperCase().indexOf("H") > -1)); |
+ var bFormatAsTable = (sStyle && (sStyle.toUpperCase().indexOf("T") > -1)); |
+ var bShowType = (sStyle && (sStyle.toUpperCase().indexOf("S") > -1)); |
+ var bShowConstructor = (sStyle && (sStyle.toUpperCase().indexOf("C") > -1)); |
+ var bFormatAsHTML = (bFormatAsLines || bFormatAsTable); |
+ |
+ if (sHeader && (sHeader == "-")) |
+ { |
+ sHeader = ""; |
+ } |
+ else if (!sHeader || (sHeader == "")) |
+ { |
+ sHeader = ""; |
+ if (bShowObjects || bShowProps || bShowMethods) |
+ { |
+ if (bShowProps) |
+ { |
+ sHeader = "Properties"; |
+ } |
+ else if (bShowObjects) |
+ { |
+ sHeader = "Composed Objects"; |
+ } |
+ |
+ if (bShowMethods) |
+ { |
+ if (bShowObjects || bShowProps) |
+ { |
+ sHeader += " and "; |
+ } |
+ sHeader += "Methods"; |
+ } |
+ } |
+ else |
+ { |
+ sHeader = "Attributes"; |
+ } |
+ |
+ sHeader += " of " |
+ + (bFormatAsHTML ? '<code>': '') |
+ + sObject |
+ + (typeof aWhat.test != "undefined" |
+ ? ' matching ' + String(aWhat) |
+ : '') |
+ + (bFormatAsHTML ? '<\/code>': ''); |
+ } |
+ var sProp = |
+ (bFormatAsTable |
+ ? '<table border="1" cellpadding="5" cellspacing="0">\n' |
+ : '') |
+ + (sHeader != "" |
+ ? (bFormatAsTable |
+ ? '<tr><th align="left" colspan="' |
+ + (2 + +(bShowType) + +(bShowConstructor)) + '">' |
+ : '') |
+ + sHeader |
+ + (bFormatAsHTML && bFormatAsLines |
+ ? "<br>\n" |
+ : (!bFormatAsHTML |
+ ? "\n__________________________________________________\n" |
+ : "")) |
+ + (bFormatAsTable |
+ ? ('<\/th><\/tr>\n<tr><th align="left">Name<\/th> ' |
+ + (bShowType |
+ ? '<th align="left">Type<\/th>' |
+ : '') |
+ + (bShowConstructor |
+ ? '<th align="left">Constructor<\/th>' |
+ : '') |
+ + '<th align="left">Value<\/th><\/tr>\n') |
+ : '') |
+ : ""); |
+ var bCondition = false; |
+ var aProperties = new Array(); |
+ var t; |
+ |
+ for (var property in o) |
+ { |
+ if ((aWhat.constructor == RegExp |
+ && ((t = typeof aWhat.test) == "function" || t == "object") |
+ && aWhat.test(property)) || true) |
+ { |
+ aProperties[aProperties.length] = property; |
+ } |
+ } |
+ |
+ /* sort properties lexically */ |
+ if (typeof aProperties.sort == "function") |
+ { |
+ aProperties.sort(); |
+ } |
+ |
+ var isError; |
+ var propValue; |
+ var bMethod; |
+ var bProperty; |
+ var propType; |
+ var bObject; |
+ var s; |
+ var propName; |
+ var sPropName; |
+ for (var i = 0; i < aProperties.length; i++) |
+ { |
+ bCondition = false; |
+ isError = false; |
+ |
+ tc = false; |
+ setErrorHandler(); |
+ eval(new Array( |
+ 'try {', |
+ ' tc = true;', |
+ ' if (o[aProperties[i]])', |
+ ' propValue = o[aProperties[i]];', |
+ ' else', |
+ ' propValue = eval("o." + aProperties[i]);', |
+ ' bMethod =', |
+ ' ((t = typeof propValue) == "function" || t == "object");', |
+ '} catch (e) {', |
+ ' propValue = "[" + e + "]";', |
+ ' bMethod = false;', |
+ ' isError = true;', |
+ '}').join("\n")); |
+ clearErrorHandler(); |
+ if (! tc) |
+ { |
+ if (o[aProperties[i]]) |
+ { |
+ propValue = o[aProperties[i]]; |
+ } |
+ else |
+ { |
+ propValue = eval("o." + aProperties[i]); |
+ } |
+ bMethod = (String(propValue).toLowerCase().indexOf("function ") > -1); |
+ } |
+ |
+ bProperty = !bMethod; |
+ propType = typeof propValue; |
+ var propConstructor = |
+ (typeof propValue != "undefined" |
+ && propValue != null |
+ && propValue.constructor != "undefined") |
+ ? propValue.constructor.toString().replace(/function\s+/, "") |
+ .replace(/\s*\((.|[\r\n])*/, "") |
+ : ""; |
+ bObject = (propType == "object"); |
+ if (aWhat && (aWhat != "") && (!aWhat.test)) |
+ { |
+ bCondition = |
+ (bProperty && bShowProps) |
+ || (bMethod && bShowMethods) |
+ || (bObject && bShowObjects); |
+ } |
+ else |
+ { |
+ bCondition = true; |
+ } |
+ |
+ if (bCondition) |
+ { |
+ s = |
+ ((isNaN(propValue) || String(propValue) == "") && !bObject && !isError) |
+ ? '"' |
+ : ''; |
+ |
+ propName = String(aProperties[i]); |
+ sPropName = propName; |
+ if (bFormatAsHTML) |
+ { |
+ sPropName = "<code><b>" + propName + "<\/b><\/code>"; |
+ propValue = |
+ replaceText(replaceText(String(propValue), "<", "<"), ">", ">"); |
+ } |
+ sProp |
+ += (bFormatAsTable ? '<tr valign="top"><td> ' : '') |
+ + ((bObject && bFormatAsHTML) |
+ ? '<a href="javascript:void(ObjectInspector(\'' |
+ + sObject |
+ + '\'))">' |
+ : '') |
+ + sPropName |
+ + (bObject && bFormatAsHTML ? '<\/a>': '') |
+ + (bFormatAsTable ? '<\/td>': "") |
+ + (bShowType |
+ ? bFormatAsTable |
+ ? '<td><code>'+propType + '<\/code><\/td>' |
+ : CH_NBSP + ":" + CH_NBSP + propType |
+ : "") |
+ + (bShowConstructor |
+ ? (bFormatAsTable |
+ ? '<td><code>'+propConstructor + '<\/code><\/td>' |
+ : "[" + propConstructor + "]") |
+ : "") |
+ + (bFormatAsTable |
+ ? '<td><code>' |
+ : CH_NBSP + "=" + CH_NBSP) |
+ + s |
+ + propValue |
+ + s; |
+// ("<a href='javascript:ObjectInspector(\'' + sObject + '[\"' + propName + '\"]\'', \'' + aWhat + '\', \'' + sStyle +'\');"' |
+// + ' !onclick="window.open(\'' |
+// + (sInspectorPath ? escape(sInspectorPath) : sDefaultInspectorPath) |
+// + '?obj=' + escape(sObject) + "." + escape(propName) |
+// + '&what=' + escape(aWhat) |
+// + '&style=' + escape(sStyle) |
+// + '\', \'wndObjectInspector\', \'scrollbars=yes,resizable=yes\'); return false;"' |
+ if (bFormatAsHTML) |
+ { |
+ if (bFormatAsTable) |
+ { |
+ sProp += "<\/code><\/td><\/tr>\n"; |
+ } |
+ else |
+ { |
+ sProp += "<br>\n"; |
+ } |
+ } |
+ else if (bTextLineStyle) |
+ { |
+ sProp += "; "; |
+ } |
+ else |
+ { |
+ sProp += "\n"; |
+ } |
+ } |
+ } |
+ |
+ switch (String(sFooter)) |
+ { |
+ case "-": |
+ sFooter = ""; |
+ break; |
+ |
+ case "undefined": |
+ case "": |
+ case "null": |
+ if (bFormatAsHTML) |
+ { |
+ sFooter = |
+ '<code><a href="' + jsx.debug.docURL + '" target="_blank"' |
+ + ' title="Show documentation for JSX:objinfo.js."' |
+ + '>JSX:objinfo.js<\/a>:<a href="' + jsx.debug.docURL + '#getObjInfo"' |
+ + ' target="_blank"' |
+ + ' title="Show documentation for JSX:debug.js:getObjInfo(...)"' |
+ + '>getObjInfo<\/a>(...)<\/code><br>'; |
+ } |
+ else |
+ { |
+ sFooter = "JSX:debug.js:getObjInfo(...)\n"; |
+ } |
+ sFooter += "Library version " + jsx.debug.version; |
+ sFooter += (bFormatAsHTML ? "<br>" : "\n"); |
+ sFooter += jsx.debug.copyright |
+ + (bFormatAsHTML ? " " : " ") |
+ + jsx.debug.author |
+ + " "; |
+ if (bFormatAsHTML) |
+ { |
+ sFooter = replaceText(sFooter, "\xA9", "©"); |
+ sFooter += |
+ '<<a href="mailto:' + jsx.debug.email |
+ + '%20%28Thomas%20\'PointedEars\'%20Lahn%20%29"' |
+ + ' title="E-mail the author of this fabulous script ;-)' |
+ + ' E-mail client required.">' + jsx.debug.email + '<\/a>>'; |
+ } |
+ else |
+ { |
+ sFooter += "<" + jsx.debug.email + ">"; |
+ } |
+ } |
+ |
+ if (sFooter != "") |
+ { |
+ sProp |
+ += (bFormatAsHTML |
+ ? bFormatAsTable |
+ ? '<tr>\n<td colspan="'+ (2 + +(bShowType) + +(bShowConstructor)) |
+ + '">' |
+ : '' |
+ : "\n__________________________________________________\n") |
+ + sFooter |
+ + (bFormatAsHTML |
+ ? bFormatAsTable |
+ ? '<\/td>\n<\/tr>\n' |
+ : '<br>' |
+ : ""); |
+ } |
+ |
+ if (bFormatAsTable) |
+ { |
+ sProp += '<\/table>'; |
+ } |
+ |
+ return sProp; |
+} |
+ |
+/** |
+ * Returns an object storing the minimum version required |
+ * of the requested implementations in a piece of source code. |
+ * |
+ * @param s : string |
+ * Source code to be analyzed |
+ * @param implementations : Object |
+ * Dictionary of requested implementations. The following |
+ * property names are supported: |
+ * |
+ * <table> |
+ * <tr valign="top"> |
+ * <th align="left">javascript</th> |
+ * <td>Netscape/Mozilla.org JavaScript™<sup>®</sup></td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <th align="left">jscript</th> |
+ * <td>Microsoft JScript™</td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <th align="left">es</th> |
+ * <td>ECMAScript</td> |
+ * </tr> |
+ * <table> |
+ * |
+ * @return Object |
+ * An object having the same properties as <var>implementations</var>. |
+ * The property values specify the minimum version required of an |
+ * implementation in order to run <var>s</var>. |
+ */ |
+function getMinimalVersions(s, implementations) |
+{ |
+ /* TODO: Let this be generated by PHP */ |
+ var features = { |
+ "RegExp": {javascript: 1.2, jscript: "3.0", es: 3}, |
+ |
+ /* anonymous function expression */ |
+ "function\\s*\\(": {javascript: 1.3, jscript: "3.1.3510", es: 3}, |
+ |
+ "\\.\\s*constructor": {javascript: 1.1, jscript: "2.0", es: 1}, |
+ "\\.\\s*source": {jscript: "3.0", es: 3}, |
+ "\\.\\s*replace": {javascript: 1.2, jscript: "3.0", es: 3}, |
+ "\\.\\s*split": {javascript: 1.1, jscript: "3.0", es: 1}, |
+ |
+ /* Object initializer */ |
+ "[[(=]\\s*\\{": {javascript: 1.3, jscript: "3.0", es: 3}, |
+ |
+ /* Array initializer */ |
+ "\\[[^]]+\\]": {javascript: 1.3, jscript: "2.0", es: 3}, |
+ |
+ "\\.\\s*hasOwnProperty\\s*\\(": {javascript: 1.5, jscript: "5.5", es: 3} |
+ }; |
+ |
+ var implMap = { |
+ javascript: "JavaScript", |
+ jscript: "JScript", |
+ es: "ECMAScript Edition" |
+ }; |
+ |
+ var result = {}; |
+ var lines = s.split(/\r?\n|\n/); |
+ var obj = jsx.object; |
+ |
+ for (var f in features) |
+ { |
+ var rx = new RegExp("\\b" + f + "\\b"); |
+ if (rx.test(s)) |
+ { |
+ for (var i in implementations) |
+ { |
+ if (typeof result[i] == "undefined") |
+ { |
+ result[i] = 0; |
+ } |
+ |
+ if (result[i] < features[f][i]) |
+ { |
+ result[i] = features[f][i]; |
+ dmsg( |
+ f + " requires " + obj.getProperty(implMap, i, i) |
+ + " " + features[f][i], |
+ "warn"); |
+ } |
+ } |
+ } |
+ } |
+ |
+ return result; |
+} |
+// var o = getMinimalVersions(e, {javascript: true, jscript: true, es: true}); |
\ No newline at end of file |
/live/test/debug.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/test/object.js |
=================================================================== |
--- live/test/object.js (nonexistent) |
+++ live/test/object.js (revision 520) |
@@ -0,0 +1,911 @@ |
+function runTests () |
+{ |
+ var assert = jsx.test.assert; |
+ var assertFalse = jsx.test.assertFalse; |
+ var assertTrue = jsx.test.assertTrue; |
+ |
+ jsx.test.runner.run({ |
+ file: "object.js", |
+ tests: [ |
+ { |
+ feature: 'jsx.dmsg(…)', |
+ desc: "Callable, generates messages", |
+ code: function () { |
+ jsx.dmsg("log message"); |
+ jsx.dmsg("info message", "info"); |
+ jsx.dmsg("warning", "warn"); |
+ jsx.dmsg("error message", "error"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.info(…)', |
+ desc: "Callable, generates info message", |
+ code: function () { |
+ jsx.info("info message"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.warn(…)', |
+ desc: "Callable, generates warning", |
+ code: function () { |
+ jsx.warn("warning"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.error(…)', |
+ desc: "Callable, generates error message", |
+ code: function () { |
+ jsx.error("error message"); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.object.isMethod()", |
+ desc: "Missing argument throws exception", |
+ code: function () { |
+ var ok = true; |
+ jsx.tryThis("jsx.object.isMethod()", function() { ok = false; }); |
+ assertFalse(ok); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.isMethod(false)", |
+ desc: "Returns <code>false</code>", |
+ code: function () { |
+ assertFalse("jsx.object.isMethod(false)"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.isMethod(…)", |
+ desc: "Returns correct values", |
+ code: function () { |
+ assertTrue("jsx.object.isMethod(eval)"); |
+ assertFalse("jsx.object.isMethod(this, null)"); |
+ assertTrue("jsx.object.isMethod(this, 'eval')"); |
+ assertFalse("jsx.object.isMethod(this, '')"); |
+ assertTrue("jsx.object.isMethod(window, 'location', 'reload')"); |
+ assertFalse("jsx.object.isMethod(window, 'location', 'hash')"); |
+ assertFalse("jsx.object.isMethod('window', 'location', 'hash')"); |
+ assertFalse("jsx.object.isMethod('window', 'location')"); |
+ assertTrue("jsx.object.isMethod(window, 'location')"); |
+ assertFalse("jsx.object.isMethod('foo', 'location')"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.areMethods()", |
+ desc: "Missing argument throws exception", |
+ code: function () { |
+ var ok = true; |
+ jsx.tryThis("jsx.object.areMethods()", function() { ok = false; }); |
+ assertFalse(ok); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.areMethods(this, [false])", |
+ desc: "Returns false", |
+ code: function () { |
+ assertFalse("jsx.object.areMethods(this, [false])"); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.areMethods(…)", |
+ desc: "Returns correct values", |
+ code: function () { |
+ assertTrue("jsx.object.areMethods(this, ['eval', 'toString'])"); |
+ /*assertTrue("jsx.object.isMethod(this, 'eval')"); |
+ assertFalse("jsx.object.isMethod(this, '')"); |
+ assertTrue("jsx.object.isMethod(window, 'location', 'reload')"); |
+ assertFalse("jsx.object.isMethod(window, 'location', 'hash')"); |
+ assertFalse("jsx.object.isMethod('window', 'location', 'hash')"); |
+ assertFalse("jsx.object.isMethod('window', 'location')"); |
+ assertTrue("jsx.object.isMethod(window, 'location')"); |
+ assertFalse("jsx.object.isMethod('foo', 'location')"); |
+ */ } |
+ }, |
+ { |
+ feature: "jsx.object.isNativeMethod()", |
+ desc: "Missing argument throws exception", |
+ code: function () { |
+ var ok = true; |
+ jsx.tryThis("jsx.object.isNativeMethod()", function() { ok = false; }); |
+ assertFalse(ok); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.isNativeMethod(function)", |
+ desc: "Returns <code>true</code>", |
+ code: function () { |
+ assertTrue(jsx.object.isNativeMethod(function () {})); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.isNativeMethod(object.toString)", |
+ desc: "Returns <code>true</code>", |
+ code: function () { |
+ assertTrue(jsx.object.isNativeMethod(({}).toString)); |
+ } |
+ }, |
+ { |
+ feature: "jsx.object.isNativeMethod(object)", |
+ desc: "Returns <code>false</code>", |
+ code: function () { |
+ assertFalse(jsx.object.isNativeMethod({})); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.isMethodType(typeof "")', |
+ desc: "Returns <code>false</code>", |
+ code: function () { |
+ assertFalse(jsx.object.isMethodType(typeof "")); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.isMethodType(typeof function () {})', |
+ desc: "Returns <code>true</code>", |
+ code: function () { |
+ assertTrue(jsx.object.isMethodType(typeof function () {})); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object._hasOwnProperty("_hasOwnProperty")', |
+ desc: "Return <code>true</code>", |
+ code: function () { |
+ assertTrue(jsx.object._hasOwnProperty("_hasOwnProperty")); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object._hasOwnProperty({}, "foo")', |
+ desc: "Return <code>false</code>", |
+ code: function () { |
+ assertFalse(jsx.object._hasOwnProperty({}, "foo")); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object._hasOwnProperty({foo: "bar"}, "foo")', |
+ desc: "Return <code>true</code>", |
+ code: function () { |
+ assertTrue(jsx.object._hasOwnProperty({foo: "bar"}, "foo")); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object._hasOwnProperty(new Foo(), "bar")', |
+ desc: "Return <code>false</code> (inherited)", |
+ code: function () { |
+ function Foo () {} |
+ Foo.prototype.bar = 42; |
+ |
+ /* Inherited, not own property */ |
+ assertFalse(jsx.object._hasOwnProperty(new Foo(), "bar")); |
+ |
+ /* Simulate unavailable hasOwnProperty() method on Foo instance */ |
+ Foo.prototype.hasOwnProperty = null; |
+ assertFalse(jsx.object._hasOwnProperty(new Foo(), "bar")); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.getKeys()', |
+ desc: 'Throw exception', |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.getKeys(); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return false; |
+ }); |
+ |
+ assertFalse(success); |
+ |
+ /* Simulate missing Object.keys() */ |
+ var Object_keys = Object.keys; |
+ delete Object.keys; |
+ |
+ success = jsx.tryThis( |
+ function () { |
+ jsx.object.getKeys(); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return false; |
+ }); |
+ |
+ Object.keys = Object_keys; |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.getKeys({})', |
+ desc: 'Return <code>[]</code>', |
+ code: function () { |
+ var result = jsx.object.getKeys({}); |
+ assertTrue(result && result.length === 0); |
+ |
+ /* Simulate missing Object.keys() */ |
+ var Object_keys = Object.keys; |
+ delete Object.keys; |
+ |
+ result = jsx.object.getKeys({}); |
+ |
+ Object.keys = Object_keys; |
+ |
+ assertTrue(result && result.length === 0); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.getKeys({foo: "bar"})', |
+ desc: 'Return <code>["foo"]</code>', |
+ code: function () { |
+ var result = jsx.object.getKeys({foo: "bar"}); |
+ assertTrue(result && result.length === 1 && result[0] === "foo"); |
+ |
+ /* Simulate missing Object.keys() */ |
+ var Object_keys = Object.keys; |
+ delete Object.keys; |
+ |
+ result = jsx.object.getKeys({foo: "bar"}); |
+ |
+ Object.keys = Object_keys; |
+ |
+ assertTrue(result && result.length === 1 && result[0] === "foo"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.getKeys(new Foo("baz"))', |
+ desc: 'Return <code>["baz"]</code>', |
+ code: function () { |
+ function Foo (propertyName) |
+ { |
+ this[propertyName] = 42; |
+ } |
+ |
+ Foo.prototype.bar = 42; |
+ |
+ var foo = new Foo("baz"); |
+ |
+ var result = jsx.object.getKeys(foo); |
+ assertTrue(result && result.length === 1 && result[0] === "baz"); |
+ |
+ /* Simulate missing Object.keys() */ |
+ var Object_keys = Object.keys; |
+ delete Object.keys; |
+ |
+ result = jsx.object.getKeys(foo); |
+ |
+ Object.keys = Object_keys; |
+ |
+ assertTrue(result && result.length === 1 && result[0] === "baz"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.clone()', |
+ desc: "Returns a shallow clone of <code>jsx.object</code>", |
+ code: function () { |
+ var clone1 = jsx.object.clone(); |
+ assertTrue(clone1.clone == jsx.object.clone); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.clone({foo: {bar: "baz"}})', |
+ desc: "Returns a shallow clone", |
+ code: function () { |
+ var o2 = {bar: "baz"}; |
+ var o = {foo: o2}; |
+ |
+ var clone1 = jsx.object.clone(o); |
+ assertTrue(clone1 != o && clone1.foo == o2); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.clone({foo: {bar: "baz"}}, 0)', |
+ desc: "Returns a shallow clone", |
+ code: function () { |
+ var o2 = {bar: "baz"}; |
+ var o = {foo: o2}; |
+ |
+ var clone1 = jsx.object.clone(o, 0); |
+ assertTrue(clone1 != o && clone1.foo == o2); |
+ |
+ var clone2 = jsx.object.clone(0, o); |
+ assertTrue(clone2 != o && clone2.foo == o2); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.clone({foo: {bar: "baz"}}, jsx.object.COPY_ENUM)', |
+ desc: "Returns a shallow clone", |
+ code: function () { |
+ var o2 = {bar: "baz"}; |
+ var o = {foo: o2}; |
+ |
+ var clone1 = jsx.object.clone(o, jsx.object.COPY_ENUM); |
+ assertTrue(clone1 != o && clone1.foo == o2); |
+ |
+ var clone2 = jsx.object.clone(jsx.object.COPY_ENUM, o); |
+ assertTrue(clone2 != o && clone2.foo == o2); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.clone({foo: {bar: "baz"}}, jsx.object.COPY_ENUM_DEEP)', |
+ desc: "Returns a deep clone", |
+ code: function () { |
+ var o2 = {bar: "baz"}; |
+ var o = {foo: o2}; |
+ |
+ var clone1 = jsx.object.clone(o, jsx.object.COPY_ENUM_DEEP); |
+ assertTrue(clone1 != o && clone1.foo != o2 && clone1.foo.bar === "baz"); |
+ |
+ var clone2 = jsx.object.clone(jsx.object.COPY_ENUM_DEEP, o); |
+ assertTrue(clone2 != o && clone2.foo != o2 && clone2.foo.bar === "baz"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.clone({foo: {bar: "baz"}}, jsx.object.COPY_INHERIT)', |
+ desc: "Returns a new inheriting object", |
+ code: function () { |
+ var o2 = {bar: "baz"}; |
+ var o = {foo: o2}; |
+ |
+ var clone1 = jsx.object.clone(o, jsx.object.COPY_INHERIT); |
+ assertTrue(clone1 != o && !clone1.hasOwnProperty("foo") |
+ && clone1.foo == o2 && clone1.foo.bar === "baz"); |
+ |
+ var clone2 = jsx.object.clone(jsx.object.COPY_INHERIT, o); |
+ assertTrue(clone2 != o && !clone2.hasOwnProperty("foo") |
+ && clone2.foo == o2 && clone2.foo.bar === "baz"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.object.extend()', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.extend(); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.extend({})', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.extend({}); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.extend({}, {foo: "bar"})', |
+ desc: "Sets property, no cloning", |
+ code: function () { |
+ var o = {}; |
+ var o2 = {bar: "baz"}; |
+ jsx.object.extend(o, {foo: o2}); |
+ |
+ assertTrue(o.foo && o.foo == o2 && o.foo.bar === "baz"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.extend({foo: "bar"}, {foo: "baz"})', |
+ desc: "Does not modify existing property", |
+ code: function () { |
+ var o = {foo: "bar"}; |
+ jsx.object.extend(o, {foo: "baz"}); |
+ |
+ assertTrue(o.foo === "bar"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.extend({foo: "bar"}, {foo: "baz"}, jsx.object.ADD_OVERWRITE)', |
+ desc: "Modifies existing property", |
+ code: function () { |
+ var o = {foo: "bar"}; |
+ jsx.object.extend(o, {foo: "baz"}, jsx.object.ADD_OVERWRITE); |
+ |
+ assertTrue(o.foo === "baz"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.extend({foo: "bar"}, {foo: "baz"}, jsx.object.COPY_ENUM_DEEP)', |
+ desc: "Sets property, with cloning", |
+ code: function () { |
+ var o = {}; |
+ var o2 = {bar: "baz"}; |
+ jsx.object.extend(o, {foo: o2}, jsx.object.COPY_ENUM_DEEP); |
+ |
+ assertTrue(o.foo && o.foo != o2 && o.foo.bar === "baz"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.extend({foo: "bar"}, {foo: "baz"}, jsx.object.ADD_OVERWRITE | jsx.object.COPY_ENUM_DEEP)', |
+ desc: "Modifies existing property, with cloning", |
+ code: function () { |
+ var o = {foo: "bar"}; |
+ var o2 = {bar: "baz"}; |
+ jsx.object.extend(o, {foo: o2}, jsx.object.ADD_OVERWRITE | jsx.object.COPY_ENUM_DEEP); |
+ |
+ assertTrue(o.foo && o.foo != o2 && o.foo.bar === "baz"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.object.defineProperty()', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperty(); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty(42)', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperty(42); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty(null)', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperty(null); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({})', |
+ desc: "Missing descriptor throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperty({}); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({}, "foo")', |
+ desc: "Missing descriptor throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperty({}, "foo"); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({}, "foo", 42)', |
+ desc: "Invalid descriptor throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperty({}, "foo", 42); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({}, "foo", {})', |
+ desc: 'Defines read-only <code>foo</code> property' |
+ + ' with value <code>undefined</code>' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperty(o, "foo", {}); |
+ |
+ assertTrue("foo" in o); |
+ o.foo = 42; |
+ assertTrue(typeof o.foo == "undefined"); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({}, "foo", {value: 42})', |
+ desc: 'Defines read-only <code>foo</code> property' |
+ + ' with value <code>42</code>' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperty(o, "foo", { |
+ value: 42 |
+ }); |
+ |
+ o.foo = "23"; |
+ assertTrue(o.foo === 42); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({}, "foo", {value: 42, writable: true})', |
+ desc: 'Defines writable <code>foo</code> property' |
+ + ' with initial value <code>42</code>' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperty(o, "foo", { |
+ value: 42, |
+ writable: true |
+ }); |
+ |
+ assertTrue(o.foo === 42); |
+ o.foo = "23"; |
+ assertTrue(o.foo === "23"); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({}, "foo", {"get": …})', |
+ desc: 'Defines read-only <code>foo</code> property with getter' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperty(o, "foo", { |
+ "get": function () { return 42; } |
+ }); |
+ |
+ assertTrue(o.foo === 42); |
+ o.foo = "23"; |
+ assertTrue(o.foo === 42); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperty({}, "foo", {"set": …})', |
+ desc: 'Defines <code>foo</code> property with setter' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var _x = "23"; |
+ var result = jsx.object.defineProperty(o, "foo", { |
+ "set": function (value) { _x = value; } |
+ }); |
+ |
+ o.foo = 42; |
+ assertTrue(_x === 42); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.object.defineProperties()', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperties(); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties(42)', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperties(42); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties(null)', |
+ desc: "Throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperties(null); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties({})', |
+ desc: "Missing descriptor throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperties({}); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties({}, {foo: 42})', |
+ desc: "Invalid descriptor throws <code>TypeError</code>", |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ jsx.object.defineProperties({}, {foo: 42}); |
+ return true; |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties({}, {foo: {}})', |
+ desc: 'Defines read-only <code>foo</code> property' |
+ + ' with value <code>undefined</code>' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperties(o, {foo: {}}); |
+ |
+ assertTrue("foo" in o); |
+ o.foo = 42; |
+ assertTrue(typeof o.foo == "undefined"); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties({}, {foo: {value: 42}})', |
+ desc: 'Defines read-only <code>foo</code> property' |
+ + ' with value <code>42</code>' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperties(o, { |
+ foo: { |
+ value: 42 |
+ } |
+ }); |
+ |
+ o.foo = "23"; |
+ assertTrue(o.foo === 42); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties({}, {foo: {value: 42, writable: true}})', |
+ desc: 'Defines writable <code>foo</code> property' |
+ + ' with initial value <code>42</code>' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperties(o, { |
+ foo: { |
+ value: 42, |
+ writable: true |
+ } |
+ }); |
+ |
+ assertTrue(o.foo === 42); |
+ o.foo = "23"; |
+ assertTrue(o.foo === "23"); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties({}, {foo: {"get": …}})', |
+ desc: 'Defines read-only <code>foo</code> property with getter' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var result = jsx.object.defineProperties(o, { |
+ foo: { |
+ "get": function () { return 42; } |
+ } |
+ }); |
+ |
+ assertTrue(o.foo === 42); |
+ o.foo = "23"; |
+ assertTrue(o.foo === 42); |
+ assertTrue(result === o); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.defineProperties({}, {foo: {"set": …}})', |
+ desc: 'Defines <code>foo</code> property with setter' |
+ + ' and returns correct value', |
+ code: function () { |
+ var o = {}; |
+ var _x = "23"; |
+ var result = jsx.object.defineProperties(o, { |
+ "foo": { |
+ "set": function (value) { _x = value; } |
+ } |
+ }); |
+ |
+ o.foo = 42; |
+ assertTrue(_x === 42); |
+ assertTrue(result === o); |
+ }, |
+ }, |
+ |
+ { |
+ feature: 'jsx.object._propertyIsEnumerable()', |
+ desc: 'Returns <code>false</code>', |
+ code: function () { |
+ assertFalse(jsx.object._propertyIsEnumerable()); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object._propertyIsEnumerable("_propertyIsEnumerable")', |
+ desc: 'Returns <code>true</code>', |
+ code: function () { |
+ assertTrue(jsx.object._propertyIsEnumerable("_propertyIsEnumerable")); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object._propertyIsEnumerable(object, "…")', |
+ desc: 'Returns correct value', |
+ code: function () { |
+ function MyType () {} |
+ MyType.prototype.answer = 42; |
+ |
+ var o = new MyType(); |
+ o.x = 42; |
+ |
+ assertFalse(jsx.object._propertyIsEnumerable(o, "prototype")); |
+ assertFalse(jsx.object._propertyIsEnumerable(o, "answer")); |
+ assertTrue(jsx.object._propertyIsEnumerable(o, "x")); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.object.hasPropertyValue()', |
+ desc: 'Missing object returns <code>false</code>' |
+ + ' or throws <code>TypeError</code>', |
+ code: function () { |
+ var success = jsx.tryThis( |
+ function () { |
+ return jsx.object.hasPropertyValue(); |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ return !(e instanceof TypeError); |
+ }); |
+ |
+ assertFalse(success); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.hasPropertyValue({x: void 0})', |
+ desc: 'Missing needle searches for <code>undefined</code>', |
+ code: function () { |
+ assertTrue(jsx.object.hasPropertyValue({x: void 0})); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.hasPropertyValue({x: …}, 42)', |
+ desc: 'Returns correct value', |
+ code: function () { |
+ assertFalse(jsx.object.hasPropertyValue({x: 23}, 42)); |
+ assertTrue(jsx.object.hasPropertyValue({x: 42}, 42)); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.hasPropertyValue({x: 42}, 42, {exclude: ["x"]})', |
+ desc: 'Returns <code>false</code>', |
+ code: function () { |
+ assertFalse(jsx.object.hasPropertyValue({x: 42}, 42, {exclude: ["x"]})); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.hasPropertyValue({x: {y: 42}}, 42, {recursive: true}))', |
+ desc: 'Returns <code>true</code>', |
+ code: function () { |
+ assertTrue(jsx.object.hasPropertyValue({x: {y: 42}}, 42, {recursive: true})); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.object.hasPropertyValue({x: 42}, "42", {strict: true}))', |
+ desc: 'Returns <code>false</code>', |
+ code: function () { |
+ assertFalse(jsx.object.hasPropertyValue({x: 42}, "42", {strict: true})); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.object.findNewProperty(…)', |
+ desc: 'Returns the correct value', |
+ code: function () { |
+ assert(jsx.object.findNewProperty() === "a_"); |
+ assert(jsx.object.findNewProperty({}) === "a_"); |
+ assert(jsx.object.findNewProperty({"a_": true}) === "b_"); |
+ assert(jsx.object.findNewProperty({"a_": true, "b_": true}) === "c_"); |
+ |
+ var o = {}; |
+ for (var i = "a".charCodeAt(0), max = "z".charCodeAt(0); i <= max; ++i) |
+ { |
+ o[String.fromCharCode(i) + "_"] = true; |
+ } |
+ assert(jsx.object.findNewProperty(o, 1) === ""); |
+ } |
+ } |
+ ] |
+ }); |
+} |
\ No newline at end of file |
/live/test/object.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/array.html |
=================================================================== |
--- live/test/array.html (nonexistent) |
+++ live/test/array.html (revision 520) |
@@ -0,0 +1,18 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+ <meta http-equiv="Content-Language" content="en"> |
+ <title>PointedEars' JSX:array.js Unit Test</title> |
+ <script type="text/javascript" src="../builder?src=object,string,test/test"></script> |
+ <script type="text/javascript" src="../array.js"></script> |
+ <script type="text/javascript" src="array.js"></script> |
+ </head> |
+ |
+ <body onload="runTests()"> |
+ <h1>PointedEars' <a href="/websvn/filedetails.php?repname=JSX&path=%2Ftrunk%2Farray.js" |
+ >JSX:<tt>array.js</tt></a> Unit Test</h1> |
+ <p>See error console for details.</p> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/array.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/unicode.js |
=================================================================== |
--- live/test/unicode.js (nonexistent) |
+++ live/test/unicode.js (revision 520) |
@@ -0,0 +1,462 @@ |
+function runTests() |
+{ |
+ var _test = jsx.test; |
+ var assert = _test.assert; |
+ var assertArrayEquals = _test.assertArrayEquals; |
+ var WideString = jsx.string.unicode.WideString; |
+ |
+ _test.runner.run({ |
+ file: "unicode.js", |
+ tests: [ |
+ { |
+ feature: 'jsx.string.unicode.WideString()', |
+ description: 'Return new instance (factory)', |
+ code: function () { |
+ assert(WideString() instanceof WideString); |
+ } |
+ }, |
+ { |
+ feature: 'new jsx.string.unicode.WideString()', |
+ description: 'Return new empty instance', |
+ code: function () { |
+ var s = new WideString(); |
+ assert(s instanceof WideString); |
+ assertArrayEquals([], s.getChars()); |
+ } |
+ }, |
+ { |
+ feature: 'new WideString(wideString)', |
+ description: 'Clone instance', |
+ code: function () { |
+ var chars = new WideString(new WideString(("x"))).getChars(); |
+ assertArrayEquals(["x"], chars); |
+ } |
+ }, |
+ { |
+ feature: 'new WideString("")', |
+ description: 'Return new empty instance', |
+ code: function () { |
+ assertArrayEquals([], new WideString("").getChars()); |
+ } |
+ }, |
+ { |
+ feature: 'new WideString("x")', |
+ description: 'Convert to <code>WideString("x")</code>', |
+ code: function () { |
+ assertArrayEquals(["x"], new WideString("x").getChars()); |
+ } |
+ }, |
+ { |
+ feature: 'new WideString(42)', |
+ description: 'Convert to <code>WideString("42")</code>', |
+ code: function () { |
+ assertArrayEquals(["4", "2"], new WideString(42).getChars()); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.getChars()', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assertArrayEquals([], new WideString().getChars()); |
+ assertArrayEquals([], new WideString("").getChars()); |
+ assertArrayEquals(["x"], new WideString("x").getChars()); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], new WideString("x\uD834\uDD1E").getChars()); |
+ assertArrayEquals(["x", "\uD834\uDD1E", "y"], new WideString("x\uD834\uDD1Ey").getChars()); |
+ } |
+ }, |
+ { |
+ feature: 'wideString.chars', |
+ description: 'Getter works', |
+ code: function () { |
+ assertArrayEquals(["x"], new WideString("x").chars); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.getLength()', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new WideString().getLength() === 0); |
+ assert(new WideString("").getLength() === 0); |
+ assert(new WideString("x").getLength() === 1); |
+ assert(new WideString("x\uD834\uDD1E").getLength() === 2); |
+ assert(new WideString("x\uD834\uDD1Ey").getLength() === 3); |
+ } |
+ }, |
+ { |
+ feature: 'wideString.length', |
+ description: 'Inherited getter works', |
+ code: function () { |
+ assert(new WideString("x").length === 1); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'WideString.fromCharCode(0x110000)', |
+ description: 'throw <code>jsx.InvalidArgumentError</code>', |
+ code: function () { |
+ var error = false; |
+ jsx.tryThis( |
+ function () { |
+ WideString.fromCharCode(0x110000); |
+ }, |
+ function (e) { |
+ jsx.error(e); |
+ if (e instanceof jsx.InvalidArgumentError) |
+ { |
+ error = true; |
+ } |
+ } |
+ ); |
+ |
+ assert(error); |
+ } |
+ }, |
+ { |
+ feature: 'WideString.fromCharCode(0x1D11E)', |
+ description: 'Return <code>WideString("\\uD834\\uDD1E")</code>', |
+ code: function () { |
+ var chars = WideString.fromCharCode(0x1D11E).getChars(); |
+ assertArrayEquals(["\uD834\uDD1E"], chars); |
+ } |
+ }, |
+ { |
+ feature: 'WideString.fromCharCode(0x20AC)', |
+ description: 'Return <code>WideString("\\u20AC")</code>', |
+ code: function () { |
+ var chars = WideString.fromCharCode(0x20AC).getChars(); |
+ assertArrayEquals(["\u20AC"], chars); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.charAt(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new WideString("x\uD834\uDD1E").charAt(1) === "\uD834\uDD1E"); |
+ assert(new WideString("\uD834\uDD1Ex").charAt(1) === "x"); |
+ assert(typeof new WideString("\uD834\uDD1Ex").charAt(2) == "undefined"); |
+ |
+ assert(new WideString("xy\uD834\uDD1E").charAt(-1) === "\uD834\uDD1E"); |
+ assert(new WideString("x\uD834\uDD1Ey").charAt(-1) === "y"); |
+ assert(typeof new WideString("x\uD834\uDD1Ey").charAt(-4) == "undefined"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.charCodeAt(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new WideString("x\uD834\uDD1E").charCodeAt(1) === 0x1D11E); |
+ assert(new WideString("\uD834\uDD1EA").charCodeAt(1) === 65); |
+ |
+ var result = new WideString("\uD834\uDD1EA").charCodeAt(2); |
+ assert(typeof result == "number" && isNaN(result)); |
+ |
+ assert(new WideString("xy\uD834\uDD1E").charCodeAt(-1) === 0x1D11E); |
+ assert(new WideString("A\uD834\uDD1EB").charCodeAt(-1) === 66); |
+ |
+ result = new WideString("A\uD834\uDD1EB").charCodeAt(-4); |
+ assert(typeof result == "number" && isNaN(result)); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.concat(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ var s = new WideString("x").concat(new WideString("\uD834\uDD1E")); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834").concat(new WideString("\uDD1E")); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1E").concat(new WideString("")); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1E").concat(new WideString()); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x").concat("\uD834\uDD1E"); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834").concat("\uDD1E"); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1E").concat(""); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1E").concat(42); |
+ assertArrayEquals(["x", "\uD834\uDD1E", "4", "2"], s.getChars()); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.indexOf(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new WideString("x\uD834\uDD1Ez").indexOf( |
+ new WideString("\uDD1E")) === -1); |
+ assert(new WideString("x\uD834\uDD1Ez").indexOf( |
+ new WideString("\uD834\uDD1Ey")) === -1); |
+ assert(new WideString("x\uD834\uDD1Ey\uD834\uDD1E").indexOf( |
+ new WideString("\uD834\uDD1Ey")) === 1); |
+ assert(new WideString("\uD834\uDD1EA\uD834\uDD1EA").indexOf( |
+ new WideString("A")) === 1); |
+ assert(new WideString("\uD834\uDD1EA\uD834\uDD1EA").indexOf( |
+ new WideString("A"), 2) === 3); |
+ |
+ assert(new WideString("x\uD834\uDD1Ez").indexOf("\uDD1E") === -1); |
+ assert(new WideString("x\uD834\uDD1Ez").indexOf("\uD834\uDD1Ey") === -1); |
+ assert(new WideString("x\uD834\uDD1Ey\uD834\uDD1Ey").indexOf("\uD834\uDD1Ey") === 1); |
+ assert(new WideString("\uD834\uDD1EA\uD834\uDD1EA").indexOf("A") === 1); |
+ assert(new WideString("\uD834\uDD1EA\uD834\uDD1EA").indexOf("A", 2) === 3); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.lastIndexOf(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert(new WideString("x\uD834\uDD1E").lastIndexOf( |
+ new WideString("\uDD1E")) === -1); |
+ assert(new WideString("x\uD834\uDD1E\uD834\uDD1E").lastIndexOf( |
+ new WideString("\uD834\uDD1E")) === 2); |
+ assert(new WideString("A\uD834\uDD1EA").lastIndexOf( |
+ new WideString("A")) === 2); |
+ assert(new WideString("A\uD834\uDD1EA").lastIndexOf( |
+ new WideString("A"), 1) === 0); |
+ |
+ assert(new WideString("x\uD834\uDD1E").lastIndexOf("\uDD1E") === -1); |
+ assert(new WideString("\uD834\uDD1Ex\uD834\uDD1E").lastIndexOf("\uD834\uDD1E") === 2); |
+ assert(new WideString("A\uD834\uDD1EA").lastIndexOf("A") === 2); |
+ assert(new WideString("A\uD834\uDD1EA").lastIndexOf("A", 1) === 0); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.localeCompare("…")', |
+ description: 'Return the correct value (inherited generic method)', |
+ code: function () { |
+ assert(new WideString("x").localeCompare("y") === "x".localeCompare("y")); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.match("…")', |
+ description: 'Return the correct value (inherited generic method)', |
+ code: function () { |
+ assertArrayEquals("x".match("x"), new WideString("x").match("x")); |
+ assert(new WideString("x").match("y") === "x".match("y")); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.replace("…")', |
+ description: 'Return the correct value (inherited generic method)', |
+ code: function () { |
+ assert(new WideString("x").replace("x", "y").toString() === "x".replace("x", "y")); |
+ assert(new WideString("xx").replace(/x/g, "y").toString() === "xx".replace(/x/g, "y")); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.search("…")', |
+ description: 'Return the correct value (inherited generic method)', |
+ code: function () { |
+ assert(new WideString("x").search(/y/) === "x".search(/y/)); |
+ assert(new WideString("x").search(/x/) === "x".search(/x/)); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.slice(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ var s = new WideString("x\uD834\uDD1Ey").slice(1); |
+ assertArrayEquals(["\uD834\uDD1E", "y"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").slice(0, 1); |
+ assertArrayEquals(["x"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").slice(0, 2); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").slice(1, 1); |
+ assertArrayEquals([], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").slice(1, 3); |
+ assertArrayEquals(["\uD834\uDD1E", "y"], s.getChars()); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.substr(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ var s = new WideString("x\uD834\uDD1Ey").substr(1); |
+ assertArrayEquals(["\uD834\uDD1E", "y"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substr(0, 1); |
+ assertArrayEquals(["x"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substr(0, 2); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substr(1, 1); |
+ assertArrayEquals(["\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substr(1, 3); |
+ assertArrayEquals(["\uD834\uDD1E", "y"], s.getChars()); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.substring(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ var s = new WideString("x\uD834\uDD1Ey").substring(1); |
+ assertArrayEquals(["\uD834\uDD1E", "y"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substring(0, 1); |
+ assertArrayEquals(["x"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substring(0, 2); |
+ assertArrayEquals(["x", "\uD834\uDD1E"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substring(1, 1); |
+ assertArrayEquals([], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substring(1, 3); |
+ assertArrayEquals(["\uD834\uDD1E", "y"], s.getChars()); |
+ |
+ s = new WideString("x\uD834\uDD1Ey").substring(3, 1); |
+ assertArrayEquals(["\uD834\uDD1E", "y"], s.getChars()); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.toString(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ var s = new WideString("x\uD834\uDD1Ey").toString(); |
+ assert(s === "x\uD834\uDD1Ey"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'wideString.valueOf(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ var s = new WideString("x\uD834\uDD1Ey").valueOf(); |
+ assert(s === "x\uD834\uDD1Ey"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'String.fromCharCode(0x1D11E)', |
+ description: 'Return <code>"\\uD834\\uDD1E"</code>', |
+ code: function () { |
+ assert(String.fromCharCode(0x1D11E) === "\uD834\uDD1E"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'string.charAt(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert("x\uD834\uDD1E".charAt(1) === "\uD834\uDD1E"); |
+ assert("\uD834\uDD1Ex".charAt(1) === "x"); |
+ assert(typeof "\uD834\uDD1Ex".charAt(2) == "undefined"); |
+ |
+ assert("xy\uD834\uDD1E".charAt(-1) === "\uD834\uDD1E"); |
+ assert("x\uD834\uDD1Ey".charAt(-1) === "y"); |
+ assert(typeof "x\uD834\uDD1Ey".charAt(-4) == "undefined"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'string.charCodeAt(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert("x\uD834\uDD1E".charCodeAt(1) === 0x1D11E); |
+ assert("\uD834\uDD1EA".charCodeAt(1) === 65); |
+ |
+ var result = "\uD834\uDD1EA".charCodeAt(2); |
+ assert(typeof result == "number" && isNaN(result)); |
+ |
+ assert("xy\uD834\uDD1E".charCodeAt(-1) === 0x1D11E); |
+ assert("A\uD834\uDD1EB".charCodeAt(-1) === 66); |
+ |
+ result = "A\uD834\uDD1EB".charCodeAt(-4); |
+ assert(typeof result == "number" && isNaN(result)); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'string.getLength()', |
+ description: 'Return the correct value (augmented prototype)', |
+ code: function () { |
+ assert("x\uD834\uDD1Ey".getLength() === 3); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'string.slice(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert("xyz".slice(1) === "yz"); |
+ assert("xyz".slice(0, 1) === "x"); |
+ assert("xyz".slice(0, 2) === "xy"); |
+ assert("xyz".slice(1, 1) === ""); |
+ assert("xyz".slice(1, 3) === "yz"); |
+ |
+ assert("x\uD834\uDD1Ey".slice(1) === "\uD834\uDD1Ey"); |
+ assert("x\uD834\uDD1Ey".slice(0, 1) === "x"); |
+ assert("x\uD834\uDD1Ey".slice(0, 2) === "x\uD834\uDD1E"); |
+ assert("x\uD834\uDD1Ey".slice(1, 1) === ""); |
+ assert("x\uD834\uDD1Ey".slice(1, 3) === "\uD834\uDD1Ey"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'string.substr(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert("xyz".substr(1) === "yz"); |
+ assert("xyz".substr(0, 1) === "x"); |
+ assert("xyz".substr(0, 2) === "xy"); |
+ assert("xyz".substr(1, 1) === "y"); |
+ assert("xyz".substr(1, 3) === "yz"); |
+ |
+ assert("x\uD834\uDD1Ey".substr(1) === "\uD834\uDD1Ey"); |
+ assert("x\uD834\uDD1Ey".substr(0, 1) === "x"); |
+ assert("x\uD834\uDD1Ey".substr(0, 2) === "x\uD834\uDD1E"); |
+ assert("x\uD834\uDD1Ey".substr(1, 1) === "\uD834\uDD1E"); |
+ assert("x\uD834\uDD1Ey".substr(1, 3) === "\uD834\uDD1Ey"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'string.substring(…)', |
+ description: 'Return the correct value', |
+ code: function () { |
+ assert("xyz".substring(1) === "yz"); |
+ assert("xyz".substring(0, 1) === "x"); |
+ assert("xyz".substring(0, 2) === "xy"); |
+ assert("xyz".substring(1, 1) === ""); |
+ assert("xyz".substring(1, 3) === "yz"); |
+ assert("xyz".substring(3, 1) === "yz"); |
+ |
+ assert("x\uD834\uDD1Ey".substring(1) === "\uD834\uDD1Ey"); |
+ assert("x\uD834\uDD1Ey".substring(0, 1) === "x"); |
+ assert("x\uD834\uDD1Ey".substring(0, 2) === "x\uD834\uDD1E"); |
+ assert("x\uD834\uDD1Ey".substring(1, 1) === ""); |
+ assert("x\uD834\uDD1Ey".substring(1, 3) === "\uD834\uDD1Ey"); |
+ assert("x\uD834\uDD1Ey".substring(3, 1) === "\uD834\uDD1Ey"); |
+ } |
+ } |
+ ] |
+ }); |
+} |
\ No newline at end of file |
/live/test/unicode.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/unicode.html |
=================================================================== |
--- live/test/unicode.html (nonexistent) |
+++ live/test/unicode.html (revision 520) |
@@ -0,0 +1,19 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+ <meta http-equiv="Content-Language" content="en"> |
+ <meta name="GENERATOR" content="PHPEclipse 1.0"> |
+ <title>PointedEars' String Library Test Case: Unicode support</title> |
+ <script type="text/javascript" src="../builder?src=object,string,test/test"></script> |
+ <script type="text/javascript" src="../string/unicode.js"></script> |
+ <script type="text/javascript" src="unicode.js"></script> |
+ </head> |
+ |
+ <body onload="runTests()"> |
+ <h1>PointedEars' String Library Unit Test: |
+ <a href="/websvn/filedetails.php?repname=JSX&path=%2Ftrunk%2Fstring%2Funicode.js">Unicode Support</a></h1> |
+ <p>See error console for details.</p> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/unicode.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/date.html |
=================================================================== |
--- live/test/date.html (nonexistent) |
+++ live/test/date.html (revision 520) |
@@ -0,0 +1,16 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>date.js Unit Test</title> |
+ <script type="text/javascript" src="../builder?src=object,string,test/test"></script> |
+ <script type="text/javascript" src="../date.js"></script> |
+ <script type="text/javascript" src="date.js"></script> |
+ </head> |
+ |
+ <body onload="runTests()"> |
+ <h1><tt><a href="/websvn/filedetails.php?repname=JSX&path=%2Ftrunk%2Fdate.js">date.js</tt></a> |
+ Unit Test</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/date.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/date.js |
=================================================================== |
--- live/test/date.js (nonexistent) |
+++ live/test/date.js (revision 520) |
@@ -0,0 +1,600 @@ |
+function runTests () |
+{ |
+ var assertFalse = jsx.test.assertFalse; |
+ var assertTrue = jsx.test.assertTrue; |
+ |
+ jsx.test.runner.run({ |
+ file: "date.js", |
+ tests: [ |
+ { |
+ feature: "jsx.date.dayOfYear(new Date(…))", |
+ desc: "Return the correct day number", |
+ code: function () { |
+ assertTrue(jsx.date.dayOfYear(new Date(2013, 0, 31)) === 31); |
+ assertTrue(jsx.date.dayOfYear(new Date(2013, 1, 28)) === 59); |
+ assertTrue(jsx.date.dayOfYear(new Date(2013, 2, 1)) === 60); |
+ assertTrue(jsx.date.dayOfYear(new Date(2013, 2, 31)) === 90); |
+ |
+ /* Leap year has 366 days */ |
+ assertTrue(jsx.date.dayOfYear(new Date(2016, 11, 31)) === 366); |
+ } |
+ }, |
+ { |
+ feature: "new Date(…).getDayOfYear()", |
+ desc: "Return the correct day number", |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 31).getDayOfYear() === 31); |
+ assertTrue(new Date(2013, 1, 28).getDayOfYear() === 59); |
+ assertTrue(new Date(2013, 2, 1).getDayOfYear() === 60); |
+ assertTrue(new Date(2013, 2, 31).getDayOfYear() === 90); |
+ |
+ /* Leap year has 366 days */ |
+ assertTrue(new Date(2016, 11, 31).getDayOfYear() === 366); |
+ } |
+ }, |
+ { |
+ feature: "jsx.date.isValid()", |
+ desc: "Missing <code><var>year</var></code>" |
+ + "/<code><var>month</var></code>" |
+ + "/<code><var>date</var></code>" |
+ + " throws <code>jsx.InvalidArgumentError</code>", |
+ code: function () { |
+ /* no year */ |
+ var error = jsx.tryThis("jsx.date.isValid()", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ |
+ /* no month */ |
+ error = jsx.tryThis("jsx.date.isValid(2013)", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ |
+ /* no date */ |
+ error = jsx.tryThis("jsx.date.isValid(2013, 2)", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ } |
+ }, |
+ { |
+ feature: "jsx.date.isValid(…)", |
+ desc: "Detect valid and invalid datetimes", |
+ code: function () { |
+ /* date */ |
+ assertTrue(jsx.date.isValid(2013, 1, 28)); |
+ assertFalse(jsx.date.isValid(2013, 1, 0)); |
+ assertFalse(jsx.date.isValid(2013, 1, 29)); |
+ |
+ /* hours */ |
+ assertTrue(jsx.date.isValid(2013, 1, 1, 0)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, -1)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, 25)); |
+ |
+ /* minutes */ |
+ assertTrue(jsx.date.isValid(2013, 1, 1, 0, 0)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, 0, -1)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, 0, 60)); |
+ |
+ /* seconds */ |
+ assertTrue(jsx.date.isValid(2013, 1, 1, 0, 0, 0)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, 0, 0, -1)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, 0, 0, 60)); |
+ |
+ /* milliseconds */ |
+ assertTrue(jsx.date.isValid(2013, 1, 1, 0, 0, 0, 0)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, 0, 0, 0, -1)); |
+ assertFalse(jsx.date.isValid(2013, 1, 1, 0, 0, 0, 1000)); |
+ } |
+ }, |
+ { |
+ feature: "Date.isValid()", |
+ desc: "Missing <code><var>year</var></code>" |
+ + "/<code><var>month</var></code>" |
+ + "/<code><var>date</var></code>" |
+ + " throws <code>jsx.InvalidArgumentError</code>", |
+ code: function () { |
+ /* no year */ |
+ var error = jsx.tryThis("Date.isValid()", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ |
+ /* no month */ |
+ error = jsx.tryThis("Date.isValid(2013)", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ |
+ /* no date */ |
+ error = jsx.tryThis("Date.isValid(2013, 2)", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ } |
+ }, |
+ { |
+ feature: "Date.isValid(…)", |
+ desc: "Detect valid and invalid datetimes", |
+ code: function () { |
+ /* date */ |
+ assertTrue(Date.isValid(2013, 1, 28)); |
+ assertFalse(Date.isValid(2013, 1, 0)); |
+ assertFalse(Date.isValid(2013, 1, 29)); |
+ |
+ /* hours */ |
+ assertTrue(Date.isValid(2013, 1, 1, 0)); |
+ assertFalse(Date.isValid(2013, 1, 1, -1)); |
+ assertFalse(Date.isValid(2013, 1, 1, 25)); |
+ |
+ /* minutes */ |
+ assertTrue(Date.isValid(2013, 1, 1, 0, 0)); |
+ assertFalse(Date.isValid(2013, 1, 1, 0, -1)); |
+ assertFalse(Date.isValid(2013, 1, 1, 0, 60)); |
+ |
+ /* seconds */ |
+ assertTrue(Date.isValid(2013, 1, 1, 0, 0, 0)); |
+ assertFalse(Date.isValid(2013, 1, 1, 0, 0, -1)); |
+ assertFalse(Date.isValid(2013, 1, 1, 0, 0, 60)); |
+ |
+ /* milliseconds */ |
+ assertTrue(Date.isValid(2013, 1, 1, 0, 0, 0, 0)); |
+ assertFalse(Date.isValid(2013, 1, 1, 0, 0, 0, -1)); |
+ assertFalse(Date.isValid(2013, 1, 1, 0, 0, 0, 1000)); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.date.isLeapYear(…)", |
+ desc: "Return the correct value", |
+ code: function () { |
+ /* not divisible by 4 */ |
+ assertFalse(jsx.date.isLeapYear(1995)); |
+ |
+ /* divisible by 4 */ |
+ assertTrue(jsx.date.isLeapYear(1996)); |
+ |
+ /* divisible by 4, but also by 100 */ |
+ assertFalse(jsx.date.isLeapYear(2100)); |
+ |
+ /* divisible by 4, and by 100, but also by 400 */ |
+ assertTrue(jsx.date.isLeapYear(2000)); |
+ } |
+ }, |
+ { |
+ feature: "Date.isLeapYear(…)", |
+ desc: "Return the correct value", |
+ code: function () { |
+ /* not divisible by 4 */ |
+ assertFalse(Date.isLeapYear(1995)); |
+ |
+ /* divisible by 4 */ |
+ assertTrue(Date.isLeapYear(1996)); |
+ |
+ /* divisible by 4, but also by 100 */ |
+ assertFalse(Date.isLeapYear(2100)); |
+ |
+ /* divisible by 4, and by 100, but also by 400 */ |
+ assertTrue(Date.isLeapYear(2000)); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.date.isoWeekday(new Date(…))", |
+ desc: "Return the correct value", |
+ code: function () { |
+ assertTrue(jsx.date.isoWeekday(new Date(2013, 0, 1)) === 2); |
+ assertTrue(jsx.date.isoWeekday(new Date(2013, 0, 7)) === 1); |
+ assertTrue(jsx.date.isoWeekday(new Date(2013, 0, 13)) === 7); |
+ } |
+ }, |
+ { |
+ feature: "new Date(…).getISOWeekday()", |
+ desc: "Return the correct value", |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).getISOWeekday() === 2); |
+ assertTrue(new Date(2013, 0, 7).getISOWeekday() === 1); |
+ assertTrue(new Date(2013, 0, 13).getISOWeekday() === 7); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.date.isoWeekNumber(new Date(…))", |
+ desc: "Return the correct value", |
+ code: function () { |
+ assertTrue(jsx.date.isoWeekNumber(new Date(2012, 0, 1)) === 52); |
+ assertTrue(jsx.date.isoWeekNumber(new Date(2012, 0, 7)) === 1); |
+ assertTrue(jsx.date.isoWeekNumber(new Date(2013, 0, 1)) === 1); |
+ assertTrue(jsx.date.isoWeekNumber(new Date(2013, 0, 7)) === 2); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.date.tzOffsetHours(new Date(…))', |
+ desc: "Return the correct value (works in CE[S]T only)", |
+ code: function () { |
+ var d = new Date(2013, 0, 1); |
+ var d2 = new Date(2013, 3, 1); |
+ |
+ var o = jsx.date.tzOffsetHours(d); |
+ assertTrue(o.hours === 1 && o.minutes === 0); |
+ |
+ var o = jsx.date.tzOffsetHours(d2); |
+ assertTrue(o.hours === 2 && o.minutes === 0); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.date.tzOffsetHours(new Date(…), null)', |
+ desc: "Return the correct value (works in CE[S]T only)", |
+ code: function () { |
+ var d = new Date(2013, 0, 1); |
+ var d2 = new Date(2013, 3, 1); |
+ |
+ var s = jsx.date.tzOffsetHours(d, null); |
+ assertTrue(s === "+1"); |
+ |
+ var s = jsx.date.tzOffsetHours(d2, null); |
+ assertTrue(s === "+2"); |
+ } |
+ }, |
+ |
+ { |
+ feature: 'jsx.date.tzOffsetHours(new Date(…), {…})', |
+ desc: "Return the correct value (works in CE[S]T only)", |
+ code: function () { |
+ var d = new Date(2013, 0, 1); |
+ var d2 = new Date(2013, 3, 1); |
+ |
+ var options = {leadingZero: true}; |
+ assertTrue(jsx.date.tzOffsetHours(d, options) === "+01"); |
+ assertTrue(jsx.date.tzOffsetHours(d2, options) === "+02"); |
+ |
+ options = {zeroMinutes: true}; |
+ assertTrue(jsx.date.tzOffsetHours(d, options) === "+100"); |
+ assertTrue(jsx.date.tzOffsetHours(d2, options) === "+200"); |
+ |
+ options = {leadingZero: true, zeroMinutes: true}; |
+ assertTrue(jsx.date.tzOffsetHours(d, options) === "+0100"); |
+ assertTrue(jsx.date.tzOffsetHours(d2, options) === "+0200"); |
+ |
+ options = {zeroMinutes: true, delimiter: ":"}; |
+ assertTrue(jsx.date.tzOffsetHours(d, options) === "+1:00"); |
+ assertTrue(jsx.date.tzOffsetHours(d2, options) === "+2:00"); |
+ |
+ options = {leadingZero: true, zeroMinutes: true, delimiter: ":"}; |
+ assertTrue(jsx.date.tzOffsetHours(d, options) === "+01:00"); |
+ assertTrue(jsx.date.tzOffsetHours(d2, options) === "+02:00"); |
+ } |
+ }, |
+ |
+ { |
+ feature: "new Date().format()", |
+ desc: "Missing <code><var>format</var></code>" |
+ + " throws <code>jsx.InvalidArgumentError</code>", |
+ code: function () { |
+ var error = jsx.tryThis("new Date().format()", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ } |
+ }, |
+ { |
+ feature: 'new Date().format("")', |
+ desc: 'Return <code>""</code>', |
+ code: function () { |
+ assertTrue(new Date().format("") === ""); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).format("\\\\W")', |
+ desc: 'Return <code>"W"</code> (literal)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).format("\\W") === "W"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).format("W|WW|WWW|WWWW")', |
+ desc: 'Return <code>"T|Tu|Tue|Tuesday"</code> (weekday)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).format("W|WW|WWW|WWWW") === "T|Tu|Tue|Tuesday"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).format("w")', |
+ desc: 'Return <code>"2"</code> (ISO 8601 Tuesday)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).format("w") === "2"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).format("ww")', |
+ desc: 'Return <code>"01"</code> (ISO 8601: 2013W01)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).format("ww") === "01"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).format("YY|YYYY")', |
+ desc: 'Return <code>"13|2013"</code> (year)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).format("YY|YYYY") === "13|2013"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 8, 1).format("M|MM|MMM|MMMM")', |
+ desc: 'Return <code>"9|09|Sep|September"</code>', |
+ code: function () { |
+ assertTrue(new Date(2013, 8, 1).format("M|MM|MMM|MMMM") === "9|09|Sep|September"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).format("D|DD")', |
+ desc: 'Return <code>"1|01"</code> (day of month)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).format("D|DD") === "1|01"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 2, 1).format("DDD")', |
+ desc: 'Return <code>"60"</code> (day of year)', |
+ code: function () { |
+ assertTrue(new Date(2013, 2, 1).format("DDD") === "60"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 9).format("H|HH")', |
+ desc: 'Return <code>"9|09"</code> (hours)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 9).format("H|HH") === "9|09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 0).format("h")', |
+ desc: 'Return <code>"12"</code> (am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 0).format("h") === "12"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 9).format("h")', |
+ desc: 'Return <code>"9"</code> (am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 9).format("h") === "9"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 13).format("h")', |
+ desc: 'Return <code>"1"</code> (pm)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 13).format("h") === "1"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 0).format("hh")', |
+ desc: 'Return <code>"12"</code> (am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 0).format("hh") === "12"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 9).format("hh")', |
+ desc: 'Return <code>"09"</code> (am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 9).format("hh") === "09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 13).format("hh")', |
+ desc: 'Return <code>"01"</code> (pm)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 13).format("hh") === "01"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 13, 9).format("m|mm")', |
+ desc: 'Return <code>"9|09"</code> (minutes)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 13, 9).format("m|mm") === "9|09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 0, 0, 9).format("s|ss")', |
+ desc: 'Return <code>"9|09"</code> (seconds)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 0, 0, 9).format("s|ss") === "9|09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 0, 0, 0, 9).format("sss|ssss")', |
+ desc: 'Return <code>"9|009"</code> (milliseconds)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 0, 0, 0, 9).format("sss|ssss") === "9|009"); |
+ } |
+ }, |
+ |
+ { |
+ feature: "new Date().strftime()", |
+ desc: "Missing <code><var>format</var></code>" |
+ + " throws <code>jsx.InvalidArgumentError</code>", |
+ code: function () { |
+ var error = jsx.tryThis("new Date().strftime()", |
+ function (e) { |
+ jsx.dmsg(e); |
+ return (e instanceof jsx.InvalidArgumentError); |
+ }); |
+ assertTrue(error); |
+ } |
+ }, |
+ { |
+ feature: 'new Date().strftime("")', |
+ desc: 'Return <code>""</code>', |
+ code: function () { |
+ assertTrue(new Date().strftime("") === ""); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%a|%A")', |
+ desc: 'Return <code>"Tue|Tuesday"</code> (weekday)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%a|%A") === "Tue|Tuesday"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%d")', |
+ desc: 'Return <code>"01"</code>', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%d") === "01"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%e")', |
+ desc: 'Return <code>"\\u00A01"</code> (<code>=== "\u00A01"</code>)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%e") === "\u00A01"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 2, 1).strftime("%j")', |
+ desc: 'Return <code>"060"</code> (day of year)', |
+ code: function () { |
+ assertTrue(new Date(2013, 2, 1).strftime("%j") === "060"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 6).strftime("%u")', |
+ desc: 'Return <code>"7"</code> (ISO 8601 Sunday)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 6).strftime("%u") === "7"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 6).strftime("%w")', |
+ desc: 'Return <code>"0"</code> (Sunday)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 6).strftime("%w") === "0"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%V")', |
+ desc: 'Return <code>"01"</code> (ISO 8601: 2013W01)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%V") === "01"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%b")', |
+ desc: 'Return <code>"Jan"</code> (January)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%b") === "Jan"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%h")', |
+ desc: 'Return <code>"Jan"</code> (January)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%h") === "Jan"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%B")', |
+ desc: 'Return <code>"January"</code>', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%B") === "January"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 8, 1).strftime("%m")', |
+ desc: 'Return <code>"09"</code> (September)', |
+ code: function () { |
+ assertTrue(new Date(2013, 8, 1).strftime("%m") === "09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%C")', |
+ desc: 'Return <code>"20"</code> (21st century)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%C") === "20"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1).strftime("%y|%Y")', |
+ desc: 'Return <code>"13|2013"</code> (year)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1).strftime("%y|%Y") === "13|2013"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 9).strftime("%H")', |
+ desc: 'Return <code>"09"</code> (hours)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 9).strftime("%H") === "09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 9).strftime("%k")', |
+ desc: 'Return <code>"\\u00A09"</code> (<code>=== "\u00A09"</code> hours)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 9).strftime("%k") === "\u00A09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 0).strftime("%I")', |
+ desc: 'Return <code>"12"</code> (am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 0).strftime("%I") === "12"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 9).strftime("%I")', |
+ desc: 'Return <code>"09"</code> (am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 9).strftime("%I") === "09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 13).strftime("%I")', |
+ desc: 'Return <code>"01"</code> (pm)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 13).strftime("%I") === "01"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 0).strftime("%l")', |
+ desc: 'Return <code>"12"</code> (am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 0).strftime("%l") === "12"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 9).strftime("%l")', |
+ desc: 'Return <code>"\\u00A09"</code> (<code>=== "\u00A09"</code> am)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 9).strftime("%l") === "\u00A09"); |
+ } |
+ }, |
+ { |
+ feature: 'new Date(2013, 0, 1, 13).strftime("%l")', |
+ desc: 'Return <code>"\\u00A01"</code> (<code>=== "\u00A01"</code> pm)', |
+ code: function () { |
+ assertTrue(new Date(2013, 0, 1, 13).strftime("%l") === "\u00A01"); |
+ } |
+ }, |
+ ] |
+ }); |
+} |
\ No newline at end of file |
/live/test/date.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/string.js |
=================================================================== |
--- live/test/string.js (nonexistent) |
+++ live/test/string.js (revision 520) |
@@ -0,0 +1,131 @@ |
+function runTests() |
+{ |
+ var assert = jsx.test.assert; |
+ var sprintf = jsx.string.sprintf; |
+ var format = jsx.string.format; |
+ |
+ var tests = [ |
+ { |
+ feature: 'addSlashes("\'\\"")', |
+ description: 'return <code>"\\\'\\""</code>', |
+ code: function () { |
+ assert(addSlashes("'\"") === "\\\'\\\""); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.parseFloat()', |
+ description: 'return <code>NaN</code>', |
+ code: function () { |
+ assert(isNaN(jsx.string.parseFloat())); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.parseFloat("0.25abc")', |
+ description: 'return <code>0.25</code>', |
+ code: function () { |
+ assert(jsx.string.parseFloat("0.25abc") === 0.25); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.parseFloat("0.1abc", 2)', |
+ description: 'return <code>0.5</code>', |
+ code: function () { |
+ assert(jsx.string.parseFloat("0.1abc", 2) === 0.5); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.parseFloat("10.1abc", 8)', |
+ description: 'return <code>8.125</code>', |
+ code: function () { |
+ assert(jsx.string.parseFloat("10.1abc", 8) === 8.125); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.parseFloat("20AC.11", 16)', |
+ description: 'return <code>8364.06640625</code>', |
+ code: function () { |
+ assert(jsx.string.parseFloat("20AC.11", 16) === 8364.06640625); |
+ } |
+ } |
+ ]; |
+ |
+ var formats = [ |
+ ["|%d|%d|", "|12345.2|-12345.2|", ], |
+ ["|%9d|%9d|", "|\xA0\xA012345.2|\xA0-12345.2|", |
+ "left-padded with NBSPs"], |
+ ['|%-9d|%-9d|', "|\xA0\xA012345.2|\xA0-12345.2|"], |
+ ['|%+9d|%+9d|', "|\xA0\xA012345.2|\xA0-12345.2|"], |
+ ["|%-+9d|%-+9d|", "|\xA0\xA012345.2|\xA0-12345.2|", |
+ "second align flag overrides first one"], |
+ ['|%09d|%09d|', "|0012345.2|-012345.2|", |
+ "left-padded with zeroes"], |
+ ['|% 9d|% 9d|', "|\xA0\xA012345.2|\xA0-12345.2|", |
+ "left-padded with spaces"], |
+ ['|% 09d|% 09d|', "|0012345.2|-012345.2|", |
+ "second padding flag overrides first\xA0one"], |
+ ['|%+09d|%+09d|', "|0012345.2|-012345.2|"], |
+ ['|%10.8f|%10.8f|', "|12345.20000000|-12345.20000000|"], |
+ ['|%10.-2f|%10.-2f|', "|\xA0\xA0\xA0\xA0\xA012300|\xA0\xA0\xA0\xA0-12300|", |
+ "left-padded with NBSPs, rounded to hundreds"] |
+ ]; |
+ |
+ for (var j = 0, len = formats.length; j < len; j++) |
+ { |
+ var f = formats[j]; |
+ tests.push({ |
+ feature: 'jsx.string.sprintf("' + f[0] + '", 12345.2, -12345.2)', |
+ desc: 'return <code>"' + f[1] + '"</code>' + (f[2] ? " (" + f[2] + ")" : ""), |
+ code: (function (f) { |
+ return function () { |
+ assert(sprintf(f[0], 12345.2, -12345.2) === f[1]); |
+ } |
+ }(f)) |
+ }); |
+ } |
+ |
+ var s = 1235; |
+ var i = 12345; |
+ var l = 12345678; |
+ var u = 65535; |
+ |
+ tests = tests.concat([ |
+ { |
+ feature: 'jsx.string.sprintf("|%*d|", i, 14)', |
+ desc: 'return <code>"|\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA012345|"</code>' |
+ + ' (left-padded according to next argument)', |
+ code: function () { |
+ assert(sprintf("|%*d|", i, 14) === "|\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA012345|"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.sprintf("|x%%dy|", i, 1, 9)', |
+ desc: 'return <code>"|x%dy|"</code>', |
+ code: function () { |
+ assert(sprintf("|x%%dy|", i, 1, 9) === "|x%dy|"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.format("|{0}|{1}|", 12345, -12345)', |
+ desc: 'return <code>"|12345|-12345|"</code>', |
+ code: function () { |
+ assert(format("|{0}|{1}|", 12345, -12345) === "|12345|-12345|"); |
+ } |
+ }, |
+ { |
+ feature: 'jsx.string.format("|{x}|{y}|", {x: 12345, y: -12345})', |
+ desc: 'return <code>"|12345|-12345|"</code>', |
+ code: function () { |
+ assert(format("|{x}|{y}|", {x: 12345, y: -12345}) === "|12345|-12345|"); |
+ } |
+ }, |
+ { |
+ feature: '"|{x}|{y}|".format({x: 12345, y: -12345})', |
+ desc: 'return <code>"|12345|-12345|"</code>', |
+ code: function () { |
+ assert("|{x}|{y}|".format({x: 12345, y: -12345}) === "|12345|-12345|"); |
+ } |
+ } |
+ ]); |
+ |
+ jsx.test.runner.run({file: "string.js", tests: tests}); |
+} |
\ No newline at end of file |
/live/test/string.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/string.html |
=================================================================== |
--- live/test/string.html (nonexistent) |
+++ live/test/string.html (revision 520) |
@@ -0,0 +1,25 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+ <meta http-equiv="Content-Language" content="en"> |
+ <meta name="GENERATOR" content="PHPEclipse 1.0"> |
+ <title>PointedEars' String Library Test Case</title> |
+ <script type="text/javascript" src="jsunit/app/jsUnitCore.js"></script> |
+ <script type="text/javascript" src="../object.js"></script> |
+ <script type="text/javascript" src="../types.js"></script> |
+ <script type="text/javascript" src="../string.js"></script> |
+<!-- |
+ <script type="text/javascript" src="../exception.js"></script> |
+ <script type="text/javascript" src="debug.js"></script> |
+--> |
+ <script type="text/javascript" src="test.js"></script> |
+ <script type="text/javascript" src="string.js"></script> |
+ </head> |
+ |
+ <body onload="runTests()"> |
+ <h1><a href="../string.js">PointedEars' String Library</a> Unit Test</h1> |
+ <p>See error console for details.</p> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/string.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/object.html |
=================================================================== |
--- live/test/object.html (nonexistent) |
+++ live/test/object.html (revision 520) |
@@ -0,0 +1,15 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>object.js Unit Test</title> |
+ <script type="text/javascript" src="../object.js"></script> |
+ <script type="text/javascript" src="../test/test.js"></script> |
+ <script type="text/javascript" src="object.js"></script> |
+ </head> |
+ |
+ <body onload="runTests()"> |
+ <h1><tt><a href="/websvn/filedetails.php?repname=JSX&path=%2Ftrunk%2Fobject.js">object.js</a></tt> Unit Test</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/object.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/builder-test.html |
=================================================================== |
--- live/test/builder-test.html (nonexistent) |
+++ live/test/builder-test.html (revision 520) |
@@ -0,0 +1,15 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+ |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
+ <title>Builder Test</title> |
+ <meta name="author" content="Thomas 'PointedEars' Lahn"> |
+ <meta name="DC.created" content="2011-08-13"> |
+ <script type="text/javascript" src="../builder?src=object,types"></script> |
+ </head> |
+ <body> |
+ |
+ </body> |
+</html> |
/live/test/builder-test.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/python.html |
=================================================================== |
--- live/test/python.html (nonexistent) |
+++ live/test/python.html (revision 520) |
@@ -0,0 +1,17 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>python.js Test Case</title> |
+ <script type="text/javascript" src="../object.js"></script> |
+ <script type="text/javascript" src="test.js"></script> |
+ <script type="text/javascript" src="../map.js"></script> |
+ <script type="text/javascript" src="../python.js"></script> |
+ <script type="text/javascript" src="python-test.js"></script> |
+ </head> |
+ |
+ <body onload="runTests()"> |
+ <h1><tt>python.js</tt> Test Case</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
Index: live/test/python-test.js |
=================================================================== |
--- live/test/python-test.js (nonexistent) |
+++ live/test/python-test.js (revision 520) |
@@ -0,0 +1,96 @@ |
+function runTests () |
+{ |
+ jsx._import(jsx.test); |
+ jsx._import(jsx.python); |
+ |
+ jsx.test.runner.run({ |
+// setUp: function(i, f) { |
+// jsx.info("Setting up test " + (i + 1) + ":\n" + f); |
+// }, |
+ |
+// tearDown: function(i, f) { |
+// jsx.info("Tearing down test " + (i + 1)); |
+// }, |
+ |
+ file: "python.js", |
+ tests: [ |
+ { |
+ feature: "jsx.python.list()", |
+ desc: "<code>list()<\/code> returns <code>[]<\/code>", |
+ code: function () { |
+ var obj = list(); |
+ assert(obj.length == 0); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.python.list()", |
+ desc: "<code>list([1])<\/code> returns <code>[1]<\/code>", |
+ code: function() { |
+ var obj = list([1]); |
+ assert(obj[0] === 1); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.python.list()", |
+ desc: '<code>list({foo: "bar"})<\/code> returns' |
+ + ' <code>["foo"]</code>', |
+ code: function() { |
+ var obj = list({foo: "bar"}); |
+ assert(obj[0] === "foo"); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.python.dict()", |
+ desc: "<code>dict()<\/code> returns <code>{}<\/code>", |
+ code: function() { |
+ var obj = dict(); |
+ assert(typeof obj.foo == "undefined"); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.python.dict()", |
+ desc: '<code>dict({"foo": "bar"})<\/code> returns' |
+ + ' <code>{foo: "bar"}<\/code>', |
+ code: function() { |
+ var obj = dict({foo: "bar"}); |
+ assert(obj.foo === "bar"); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.python.dict()", |
+ desc: '<code>dict(["foo"], ["bar"])<\/code> returns' |
+ + ' <code>{foo: "bar"}<\/code>', |
+ code: function() { |
+ var obj = dict(["foo"], ["bar"]); |
+ assert(obj.foo === "bar"); |
+ } |
+ }, |
+ |
+ { |
+ feature: "jsx.python.set()", |
+ desc: '<code>set(["a", "b", "a", "b"])<\/code> returns' |
+ + ' <code>new set(["a", "b"])<\/code> or <code>new set(["b", "a"])<\/code>', |
+ code: function() { |
+ var _map = jsx.map; |
+ |
+ delete jsx.map; |
+ var a = set(["a", "b", "a", "b"]).toArray(); |
+ assert(a.length === 2 |
+ && ((a[0] === "a" && a[1] === "b") |
+ || (a[0] === "b" && a[1] === "a"))); |
+ |
+ jsx.map = _map; |
+ a = set(["a", "b", "a", "b"]).toArray(); |
+ assert(a.length === 2 |
+ && ((a[0] === "a" && a[1] === "b") |
+ || (a[0] === "b" && a[1] === "a"))); |
+ } |
+ } |
+ ] |
+ }); |
+} |
\ No newline at end of file |
/live/test/python-test.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/dom/mailto.html |
=================================================================== |
--- live/test/dom/mailto.html (nonexistent) |
+++ live/test/dom/mailto.html (revision 520) |
@@ -0,0 +1,173 @@ |
+<!DOCTYPE html> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>mailto: URI scheme triggered with client-side scripting – |
+ DOM Test Cases — PointedEars' Website</title> |
+ <style type="text/css"> |
+ <!-- |
+ th |
+ { |
+ text-align: left; |
+ } |
+ |
+ td input[type="text"], |
+ td input[type="email"] |
+ { |
+ width: 100%; |
+ } |
+ |
+ iframe.hidden |
+ { |
+ display: none; |
+ } |
+ |
+ section |
+ { |
+ display: block; |
+ } |
+ |
+ li article { |
+ display: inline; |
+ } |
+ --> |
+ </style> |
+ <script type="text/javascript"> |
+ function random () |
+ { |
+ var r = Math.random(); |
+ if (r === 1) |
+ { |
+ r = 0; |
+ } |
+ |
+ return r; |
+ } |
+ |
+ function randomIntInRange (leftBound, rightBound) |
+ { |
+ return (+leftBound) + Math.floor(random() * ((+rightBound) - leftBound)); |
+ } |
+ |
+ function randomASCIIString (length) |
+ { |
+ var a = []; |
+ a.length = length; |
+ var leftBound = "A".charCodeAt(0); |
+ var rightBound = "z".charCodeAt(0); |
+ |
+ for (var i = 0, len = a.length; i < len; ++i) |
+ { |
+ var rnd = randomIntInRange(leftBound, rightBound); |
+ a[i] = String.fromCharCode(rnd); |
+ } |
+ |
+ return a.join(""); |
+ } |
+ |
+ function generateMail (form) |
+ { |
+ var el = form.elements; |
+ var subject = el["subject"].value; |
+ var uri = "mailto:" + el["to"].value + "?" |
+ + (subject ? "subject=" + encodeURIComponent(subject) + "&" : "") |
+ + "body=" |
+ + encodeURIComponent(el["body"].value || randomASCIIString(447)); |
+ |
+ var item = document.createElement("li"); |
+ var article = document.createElement("article"); |
+ article.appendChild(document.createTextNode(uri)); |
+ item.appendChild(article); |
+ |
+ var output = document.getElementById("output"); |
+ |
+ if (!output.firstChild) |
+ { |
+ var heading = document.createElement("h2"); |
+ heading.appendChild(document.createTextNode("Output")); |
+ output.appendChild(heading); |
+ |
+ var list = document.createElement("ol"); |
+ list.id = "list"; |
+ output.appendChild(list); |
+ } |
+ else |
+ { |
+ list = document.getElementById("list"); |
+ } |
+ |
+ list.appendChild(item); |
+ |
+ try |
+ { |
+ window.location = uri; |
+ return false; |
+ } |
+ catch (e) |
+ { |
+ window.alert("location = 'mailto:' not supported." |
+ + " Please copy the displayed information to the e-mail" |
+ + " window if necessary."); |
+ form.action = uri; |
+ } |
+ } |
+ |
+ function store (form) |
+ { |
+ var el = form.elements; |
+ window.localStorage.setItem('emailgen_to', el['to'].value); |
+ window.localStorage.setItem('emailgen_subject', el['subject'].value); |
+ window.localStorage.setItem('emailgen_body', el['body'].value); |
+ } |
+ |
+ function restore (form) |
+ { |
+ var el = form.elements; |
+ el['to'].value = window.localStorage.getItem('emailgen_to'); |
+ el['subject'].value = window.localStorage.getItem('emailgen_subject'); |
+ el['body'].value = window.localStorage.getItem('emailgen_body'); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body> |
+ <h1>mailto: URI scheme triggered with client-side scripting</h1> |
+ <section> |
+ <form target="iframe" onsubmit="return generateMail(this)"> |
+ <table> |
+ <tr> |
+ <th><label for="to" |
+ title="Semicolon-separated list of recipient(s)" |
+ >To:</label></th> |
+ <td><input name="to" id="to" type="email" |
+ value="foo@bar" |
+ placeholder="semicolon-separated list of recipient(s)" |
+ ></td> |
+ </tr> |
+ <tr> |
+ <th><label for="subject">Subject:</label></th> |
+ <td><input name="subject" id="subject" type="text" |
+ value="baz" placeholder="e-mail subject"></td> |
+ </tr> |
+ <tr> |
+ <th style="vertical-align: top; vertical-align: baseline" |
+ ><label for="body">Body:</label></th> |
+ <td><textarea name="body" id="body" cols="30" |
+ placeholder="447 random characters if empty" |
+ ></textarea></td> |
+ </tr> |
+ <tr> |
+ <td colspan="2" style="text-align: right"><input |
+ type="button" value="♻ Restore from Local Storage" |
+ onclick="restore(this.form)"><input |
+ type="button" value="✍ Save in Local Storage" |
+ onclick="store(this.form)"><br><input |
+ type="submit" value="✉ Generate E-mail"></td> |
+ </tr> |
+ </table> |
+ </form> |
+ <iframe name="iframe" class="hidden"></iframe> |
+ </section> |
+ <section id="output"></section> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/dom/mailto.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/dom/css.html |
=================================================================== |
--- live/test/dom/css.html (nonexistent) |
+++ live/test/dom/css.html (revision 520) |
@@ -0,0 +1,36 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>dom/css.js Test Case</title> |
+ <link rel="stylesheet" type="text/css" href="../../style.css"> |
+ <script type="text/javascript" src="../../object.js"></script> |
+ <script type="text/javascript" src="../../types.js"></script> |
+ <script type="text/javascript" src="../../dom.js"></script> |
+ <script type="text/javascript" src="../../collection.js"></script> |
+ <script type="text/javascript" src="../../dom/css.js"></script> |
+ <script type="text/javascript" src="../../test/test.js"></script> |
+ <script type="text/javascript"> |
+ var assertFalse = jsx.test.assertFalse; |
+ var assertTrue = jsx.test.assertTrue; |
+ |
+ function test() |
+ { |
+ jsx.test.runner.run({ |
+ tests: [ |
+ function () { |
+ var list = new jsx.dom.css.RuleList(); |
+ //debugger; |
+ console.log(list.findBySimpleSelector("code")); |
+ } |
+ ] |
+ }); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body onload="test()"> |
+ <h1><tt>dom/css.js</tt> Test Case</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/dom/css.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/dom/countdown/index.php |
=================================================================== |
--- live/test/dom/countdown/index.php (nonexistent) |
+++ live/test/dom/countdown/index.php (revision 520) |
@@ -0,0 +1,81 @@ |
+<?php header('Content-Type: text/html; charset=UTF-8'); ?> |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
+ "http://www.w3.org/TR/html4/loose.dtd"> |
+<html lang="en"> |
+ <head> |
+ <title>DOM Test Case: Simple Countdown Timer</title> |
+ <link rel="Stylesheet" href="/styles/lcars.css" type="text/css"> |
+ <style type="text/css"> |
+ <!-- |
+ .num { |
+ text-align: right; |
+ border: 1px solid transparent; |
+ width: 1.25em; |
+ } |
+ |
+ .num:focus { |
+ border: 1px solid white; |
+ } |
+ |
+ input { |
+ width: 215px; |
+ } |
+ --> |
+ </style> |
+ |
+ <meta http-equiv="Content-Script-Type" content="text/javascript"> |
+ <script type="text/javascript" src="/scripts/object.js"></script> |
+ <script type="text/javascript" src="/scripts/string.js"></script> |
+ <script type="text/javascript" src="/scripts/dom.js"></script> |
+ <script type="text/javascript" src="/scripts/dom/events.js"></script> |
+ <script type="text/javascript" src="/scripts/dom/audio.js"></script> |
+ <script type="text/javascript" src="/scripts/dom/widgets.js"></script> |
+ <script type="text/javascript" src="/scripts/dom/timer.js"></script> |
+ <script type="text/javascript"> |
+ var timer = new jsx.dom.Timer(); |
+ var oHours, oMins, oSec; |
+ |
+ function handleLoad() |
+ { |
+ var f = document.forms[0]; |
+ var es = f.elements; |
+ |
+ var SpinnerInput = jsx.dom.widgets.SpinnerInput; |
+ oHours = new SpinnerInput(es['hours'], null, { |
+ minValue: 0 |
+ }); |
+ |
+ oMins = new SpinnerInput(es['minutes'], null, { |
+ leadingZero: true, |
+ minValue: 0, |
+ maxValue: 59 |
+ }); |
+ |
+ oSec = new SpinnerInput(es['seconds'], null, { |
+ leadingZero: true, |
+ minValue: 0, |
+ maxValue: 59 |
+ }); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body onload="handleLoad()"> |
+ <h1>DOM Test Case: Simple Countdown Timer</h1> |
+ |
+<!-- onkeypress="if (typeof event != 'undefined') handleKeypress(event)" |
+ onkeyup="if (typeof event != 'undefined') handleKeypress(event)" --> |
+ <form action=""> |
+ <input name="hours" value="0" maxlength="3" class="num"> : |
+ <input name="minutes" value="0" maxlength="2" class="num"> : |
+ <input name="seconds" value="0" maxlength="2" class="num"> |
+ <input type="button" value="START" class="button" |
+ onclick="timer.start(this)"> |
+ <input type="button" value="STOP" class="button" |
+ onclick="timer.stop(this)"> |
+ <input type="button" value="RESET" class="button" |
+ onclick="timer.reset(this)"> |
+ |
+ </form> |
+ </body> |
+</html> |
\ No newline at end of file |
Index: live/test/dom/LiveEdit/liveedit.js |
=================================================================== |
--- live/test/dom/LiveEdit/liveedit.js (nonexistent) |
+++ live/test/dom/LiveEdit/liveedit.js (revision 520) |
@@ -0,0 +1,61 @@ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.dom.liveedit = { |
+ version: "0.1" |
+}; |
+ |
+/** |
+ * Creates and displays the LiveEdit editor |
+ * |
+ * @param target : Element |
+ * Target element for the editor (optional) |
+ * @param parent : Element |
+ * Parent element for the editor (optional) |
+ */ |
+jsx.dom.liveedit.LiveEdit = function(target, parent) { |
+ this._toolbox = new jsx.dom.Toolbox(target, parent, { |
+ style: { |
+ position: "fixed", |
+ top: "0", |
+ right: "0", |
+ width: "20%", |
+ bottom: "0", |
+ backgroundColor: "#ccc" |
+ }, |
+ resizable: true, |
+ resizeFlags: { |
+ n: true, |
+ nw: true, |
+ w: true, |
+ s: true |
+ } |
+ }); |
+ |
+ this.showToolbox(); |
+}; |
+ |
+jsx.dom.liveedit.LiveEdit.extend(); |
+ |
+/** |
+* Shows the toolbox of this editor |
+*/ |
+jsx.dom.liveedit.LiveEdit.prototype.showToolbox = function() { |
+ this._toolbox.render(); |
+}; |
/live/test/dom/LiveEdit/liveedit.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/dom/LiveEdit/index.html |
=================================================================== |
--- live/test/dom/LiveEdit/index.html (nonexistent) |
+++ live/test/dom/LiveEdit/index.html (revision 520) |
@@ -0,0 +1,17 @@ |
+<!DOCTYPE html> |
+<html lang="en"> |
+ <head> |
+ <meta charset="UTF-8"> |
+ <title>LiveEdit</title> |
+ <script src="/scripts/object.js"></script> |
+ <script src="/scripts/dom.js"></script> |
+ <script src="/scripts/dom/events.js"></script> |
+ <script src="/scripts/dom/widgets2.js"></script> |
+ <script src="liveedit.js"></script> |
+ <script>var liveEdit;</script> |
+ </head> |
+ |
+ <body onload="liveEdit = new jsx.dom.liveedit.LiveEdit()"> |
+ <h1>LiveEdit</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/dom/LiveEdit/index.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/dom/dom.htm |
=================================================================== |
--- live/test/dom/dom.htm (nonexistent) |
+++ live/test/dom/dom.htm (revision 520) |
@@ -0,0 +1,103 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
+<html> |
+<head> |
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> |
+<meta http-equiv="expires" content="0"> |
+<meta name="keywords" |
+ content="SGML, HTML, Event, Handler, Character Reference, Script"> |
+<meta name="DC.Title" |
+ content="Referencing Document Elements Utilizing the W3C Document Object Model (DOM)"> |
+<meta name="DC.Creator" content="Thomas Lahn (PointedEars@gmx.de)"> |
+<meta name="DC.Subject" content="Test Case"> |
+<meta name="DC.Description" content=""> |
+<meta name="DC.Publisher" content="Thomas Lahn (PointedEars@gmx.de)"> |
+<meta name="DC.Date" content="2002-08-03T22:16:00+02:00"> |
+<meta name="DC.Type" content="Service"> |
+<meta name="DC.Format" content="text/html"> |
+<meta name="DC.Identifier" |
+ content="http://pointedears.de.vu/scripts/dom.htm"> |
+<meta name="DC.Source" content="Discussion in de.comp.lang.javascript"> |
+<meta name="DC.Language" content="de"> |
+<meta name="DC.Rights" content="All rights reserved to the author."> |
+<meta name="GENERATOR" content="Quanta Plus"> |
+<title>Referencing Document Elements Utilizing the W3C Document |
+Object Model (DOM)</title> |
+<style type="text/css"> |
+<!-- |
+body { |
+ color: black; |
+ background-color: white; |
+} |
+ |
+a:link,a:visited,a:active,a:focus { |
+ text-decoration: none |
+} |
+ |
+a:link { |
+ color: blue; |
+ background-color: white; |
+} |
+ |
+a:visited { |
+ color: #800080; |
+ background-color: #ffffff; |
+} |
+ |
+a:link :hover { |
+ text-decoration: underline; |
+ background-color: white; |
+ color: red; |
+} |
+ |
+strong.textmarker { |
+ color: black; |
+ background-color: yellow; |
+} |
+--> |
+</style> |
+</head> |
+<body> |
+<h1>Referencing Document Elements Utilizing the W3C Document Object |
+Model (DOM)</h1> |
+<p style="font-size: small;">Available online: <a |
+ href="http://pointedears.de.vu/scripts/dom.htm">http://pointedears.de.vu/scripts/dom.htm</a><br> |
+Copyright © 2002 <img src="../media/mail.gif" width="14" |
+ height="15" border="0" alt="@"> <a href="mailto:Thomas%20'PointedEars'%20Lahn%20<PointedEars |
+ @gmx.de>?subject=dev/js/events">Thomas 'PointedEars' Lahn</a>. |
+All rights reserved.</p> |
+<h2>Source Code</h2> |
+<pre> |
+[...] |
+<a href="..." ...> ... </a> |
+[...] |
+<a href="..." ...> ... </a> |
+[...] |
+<script type="text/javascript"> |
+ function showType() { |
+ alert(typeof document.getElementById("hello1")); |
+ alert(typeof document.getElementsByName("hello2")); |
+ alert(typeof document.getElementsByTagName("a")); |
+ alert(document.getElementById("hello1").firstChild.nodeValue); |
+ alert(document.getElementsByName("hello2")[0].firstChild.nodeValue); |
+ alert(document.getElementsByTagName("a")[2].firstChild.nodeValue); |
+ } |
+</script> |
+<p><a href="#" id="hello1" name="hello2" onclick="showType(); return false;">Click Me!</a></p> |
+ </pre> |
+<h2>Example</h2> |
+<span style="font-size: small">(requires JavaScript)</span> |
+<br> |
+<script type="text/javascript"> |
+ function showType() { |
+ alert(typeof document.getElementById("hello1")); |
+ alert(typeof document.getElementsByName("hello2")); |
+ alert(typeof document.getElementsByTagName("a")); |
+ alert(document.getElementById("hello1").firstChild.nodeValue); |
+ alert(document.getElementsByName("hello2")[0].firstChild.nodeValue); |
+ alert(document.getElementsByTagName("a")[2].firstChild.nodeValue); |
+ } |
+ </script> |
+<p><a href="#" id="hello1" name="hello2" |
+ onclick="showType(); return false;">Click Me!</a></p> |
+</body> |
+</html> |
Index: live/test/dom/flash.html |
=================================================================== |
--- live/test/dom/flash.html (nonexistent) |
+++ live/test/dom/flash.html (revision 520) |
@@ -0,0 +1,93 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>DOM Test Case: Cross-browser Flash movies</title> |
+ <script type="text/javascript" src="../../object.js"></script> |
+ <script type="text/javascript" src="../../types.js"></script> |
+ <script type="text/javascript" src="../../dhtml.js"></script> |
+ <script type="text/javascript" src="../../flash.js"></script> |
+ </head> |
+ |
+ <body onload="jsx.dom.flash.fix()"> |
+ <h1>DOM Test Case: Cross-browser Flash movies</h1> |
+ |
+ <h2><code>OBJECT</code> with flash.js</h2> |
+ <object width="640" height="385" |
+ data="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ type="application/x-shockwave-flash"> |
+ <param |
+ name="movie" |
+ value="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ > |
+ <param name="allowFullScreen" value="true"> |
+ <param name="allowScriptAccess" value="always"> |
+ </object> |
+ |
+ <h2>YouTube HTML4-compliant: <code>OBJECT</code> with data, no type, |
+ no <code>EMBED</code>, no <code></param></code></h2> |
+ <object width="640" height="385" |
+ data="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1"> |
+ <param |
+ name="movie" |
+ value="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ > |
+ <param name="allowFullScreen" value="true"> |
+ <param name="allowScriptAccess" value="always"> |
+ </object> |
+ |
+ <h2>YouTube HTML4-compliant: <code>OBJECT</code> without data, no type, |
+ no <code>EMBED</code>, no <code></param></code></h2> |
+ <object width="640" height="385"> |
+ <param |
+ name="movie" |
+ value="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ > |
+ <param name="allowFullScreen" value="true"> |
+ <param name="allowScriptAccess" value="always"> |
+ </object> |
+ |
+ <h2>YouTube HTML5-compliant: <code>OBJECT</code> without data or type, |
+ and <code>EMBED</code>, no <code></param></code>, |
+ no <code></embed></code></h2> |
+ <object width="640" height="385"> |
+ <param |
+ name="movie" |
+ value="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ > |
+ <param name="allowFullScreen" value="true"> |
+ <param name="allowScriptAccess" value="always"> |
+ <embed |
+ src="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ type="application/x-shockwave-flash" |
+ allowfullscreen="true" |
+ allowScriptAccess="always" |
+ width="640" |
+ height="385"> |
+ </object> |
+ |
+ <h2>YouTube partially fixed: <code>OBJECT</code> without data or type, |
+ and <code>EMBED</code>, no <code></param></code></h2> |
+ <object width="640" height="385"> |
+ <param |
+ name="movie" |
+ value="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ > |
+ <param name="allowFullScreen" value="true"> |
+ <param name="allowScriptAccess" value="always"> |
+ <embed |
+ src="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" |
+ type="application/x-shockwave-flash" |
+ allowfullscreen="true" |
+ allowScriptAccess="always" |
+ width="640" |
+ height="385" |
+ ></embed> |
+ </object> |
+ |
+ <h2>YouTube original: <code>OBJECT</code> without data or type, |
+ and <code>EMBED</code></h2> |
+ <object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/swoOX7vnuv4&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"></embed></object> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/dom/flash.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/dom |
=================================================================== |
--- live/test/dom (nonexistent) |
+++ live/test/dom (revision 520) |
/live/test/dom |
---|
Property changes: |
Added: svn:ignore |
## -0,0 +1,195 ## |
+AOP |
+ |
+autocompleter |
+ |
+doc |
+ |
+dragable |
+ |
+events |
+ |
+gecko |
+ |
+Google Video_files |
+ |
+hoverMe |
+ |
+IE7 |
+ |
+JSON |
+ |
+loadScript |
+ |
+MSXML |
+ |
+multimedia |
+ |
+cookie-frameset.html |
+ |
+computed-style.php |
+ |
+circular-reference.odp |
+ |
+dom-body.html |
+ |
+dhtml-brute.html |
+ |
+collision.html |
+ |
+close.html |
+ |
+body.html |
+ |
+cookie.html |
+ |
+applet.html |
+ |
+find.html |
+ |
+editItem.html |
+ |
+dom.xhtml.php |
+ |
+dom2.htm |
+ |
+fade-lieb.js |
+ |
+dom.html |
+ |
+fade1.html |
+ |
+outline-horiz.html |
+ |
+text-save.html |
+ |
+insert.html |
+ |
+offsetHeight.xhtml |
+ |
+tagsoup.php |
+ |
+iframe.html |
+ |
+window.html |
+ |
+tabbed-menu.html |
+ |
+form-name.html |
+ |
+random-iframe.html |
+ |
+mono.html |
+ |
+script.xhtml |
+ |
+iframe-scroll.php |
+ |
+Google Video.html |
+ |
+popup.html |
+ |
+layer2.html |
+ |
+scroll-iPhone.html |
+ |
+overflow.html |
+ |
+status.html |
+ |
+Google Local.html |
+ |
+print.html |
+ |
+img-getter.php |
+ |
+opera-style.php |
+ |
+names-and-ids.php |
+ |
+layer1.html |
+ |
+select.php |
+ |
+open.html |
+ |
+referrer.html |
+ |
+opacity.html |
+ |
+frmbustr.html |
+ |
+homepage.html |
+ |
+framebreak.html |
+ |
+Test.class |
+ |
+input-onblur.html |
+ |
+fullscreen.htm |
+ |
+insert2.html |
+ |
+htmlcoll.html |
+ |
+gfx-reset.html |
+ |
+parseReverse.html |
+ |
+password.html |
+ |
+window-name.html |
+ |
+getSelection.html |
+ |
+img-transition.html |
+ |
+removeControl.html |
+ |
+treeview.js |
+ |
+img-refresh.html |
+ |
+reset.html |
+ |
+form-navillus.html |
+ |
+window2.html |
+ |
+selection.html |
+ |
+popup2.html |
+ |
+scrollbars2.html |
+ |
+source.html |
+ |
+menu.htm |
+ |
+select-value.html |
+ |
+mathml.xhtml |
+ |
+scrollbars.html |
+ |
+innerHeight.html |
+ |
+resize.html |
+ |
+resizeable-table.php |
+ |
+stylesheets.html |
+ |
+radioButton.html |
+ |
+treewidget.html |
+ |
+table-hover.html |
+ |
+body-onload-redirect.html |
+ |
+offset.html |
+ |
+treewalker.html |
+ |
+treewalker.js |
Index: live/test/cyrillic2.php |
=================================================================== |
--- live/test/cyrillic2.php (nonexistent) |
+++ live/test/cyrillic2.php (revision 520) |
@@ -0,0 +1,98 @@ |
+<?php |
+ if (isset($_GET['correct'])) |
+ { |
+ header('Content-Type: text/html; charset=UTF-8'); |
+ } |
+ |
+ // Demonstrates what the wrong default encoding can do to a resource |
+ else |
+ { |
+ header('Content-Type: text/html; charset=Windows-1251'); |
+ } |
+?> |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+ |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>Scripting Test Case: Encoding vs. Document Character Set</title> |
+ |
+ <meta name="DCTERMS.created" content="2006-04-04"> |
+ |
+ <script type="text/javascript"> |
+ function foo() |
+ { |
+ alert("Понимаешь?"); |
+ } |
+ </script> |
+ |
+ <style type="text/css"> |
+ body { |
+ background-color: white; |
+ color: black; |
+ } |
+ |
+ div, p { |
+ margin: 1em auto; |
+ } |
+ |
+ acronym { |
+ border-bottom:1px dotted #999; |
+ cursor: help; |
+ } |
+ </style> |
+ </head> |
+ |
+ <body> |
+ <?php |
+ if (!isset($_GET['correct'])) |
+ { |
+ ?> |
+ <p>This <a href="http://en.wikipedia.org/wiki/UTF-8"><acronym |
+ title="8-bit Unicode Transformation Format">UTF-8</acronym></a> |
+ encoded resource is served with the wrong encoding declaration in |
+ the <tt>Content-Type</tt> <a |
+ href="http://en.wikipedia.org/wiki/HyperText_Transfer_Protocol" |
+ ><acronym title="HyperText Transfer Protocol" |
+ >HTTP</acronym></a> header (<tt>charset=<a |
+ href="http://en.wikipedia.org/wiki/Windows-1251" |
+ >Windows-1251</a></tt>). That the included <a |
+ href="http://www.w3.org/TR/html4/struct/global.html#edef-META" |
+ ><tt>meta</tt></a> element "declares" the correct encoding does |
+ not matter; the HTTP header takes precedence.</p> |
+ |
+ <p>Nevertheless, the <a |
+ href="http://www.w3.org/TR/html4/charset.html#h-5.1" |
+ >Document Character Set for <acronym |
+ title="HyperText Markup Language">HTML</acronym> 4.01 |
+ documents</a> is still <a |
+ href="http://en.wikipedia.org/wiki/Universal_Character_Set" |
+ ><acronym title="the Universal Character Set">UCS</acronym></a>, |
+ so character references can be used in <a |
+ href="http://en.wikipedia.org/wiki/CDATA"><tt>CDATA</tt></a> |
+ attribute values to represent non-<a |
+ href="http://en.wikipedia.org/wiki/ASCII"><acronym |
+ title="American Standard Code for Information Interchange" |
+ >ASCII</acronym></a> characters:</p> |
+ <?php |
+ } |
+ ?> |
+ |
+ <div><input type="button" |
+ value="Выбери меня!" |
+ lang="ru" |
+ onclick="foo();"></div> |
+ |
+ <?php |
+ if (!isset($_GET['correct'])) |
+ { |
+ ?> |
+ <div><a href="?correct=1" |
+ >Serve (almost) the same content with the correct encoding declaration |
+ (<tt>charset=UTF-8</tt>)</a></div> |
+ <?php |
+ } |
+ ?> |
+ </body> |
+</html> |
\ No newline at end of file |
Index: live/test/xpath.html |
=================================================================== |
--- live/test/xpath.html (nonexistent) |
+++ live/test/xpath.html (revision 520) |
@@ -0,0 +1,26 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>xpath.js Test Case</title> |
+ <script type="text/javascript" src="../object.js"></script> |
+ <script type="text/javascript" src="../dom/xpath.js"></script> |
+ <script type="text/javascript" src="../test/test.js"></script> |
+ <script type="text/javascript"> |
+ var assertFalse = jsx.test.assertFalse; |
+ var assertTrue = jsx.test.assertTrue; |
+ |
+ jsx.test.runner.run({ |
+ tests: [ |
+ function() { |
+ }, |
+ ] |
+ }); |
+ </script> |
+ </head> |
+ |
+ <body> |
+ <h1><tt>xpath.js</tt> Test Case</h1> |
+ </body> |
+</html> |
/live/test/xpath.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/httprequest.html |
=================================================================== |
--- live/test/httprequest.html (nonexistent) |
+++ live/test/httprequest.html (revision 520) |
@@ -0,0 +1,73 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
+<html> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
+ <title>JSX:HTTPRequest Test Case</title> |
+ |
+ <!-- 1. Include prerequisites and dependencies using Resource Builder (recommended) --> |
+ <script type="text/javascript" src="builder.php?src=object,string,http,xpath"></script> |
+ |
+ <script type="text/javascript" src="test.js"></script> |
+ |
+ <script type="text/javascript"> |
+ function makeRequest(s) |
+ { |
+ var assert = jsx.test.assert; |
+ |
+ jsx.test.runner.run({ |
+ tests: [ |
+ function () { |
+ /* |
+ * 2. Construct the HTTP request wrapper; |
+ * the default is a GET request with asynchronous handling |
+ */ |
+ var req = new jsx.net.http.Request("test.xml"); |
+ |
+ /* 3. Prepare processing of the HTTP response */ |
+ req.setSuccessListener( |
+ function (x) { |
+ /* 5. Get the reference to the XMLDocument object */ |
+ var doc = x.responseXML; |
+ |
+ /* 6. Create the namespace resolver that fits your query best */ |
+ var nsResolver = jsx.dom.xpath.createFullNSResolver(null, doc); |
+ |
+ /* 7. Make the XPath query */ |
+ var nodes = jsx.dom.xpath.evaluate("//res:UNDO_COUNT/text()", doc, nsResolver); |
+ |
+ assert(nodes); |
+ assert(nodes.length == 1); |
+ assert(nodes[0].nodeName == "#text"); |
+ assert(nodes[0].data == "1.0"); |
+ |
+ /* |
+ * 8. Process the result. jsx.dom.xpath.evaluate() returns a reference |
+ * to an Array instance if you do not specify the result type. |
+ */ |
+ |
+ /* "1.0" */ |
+ var data = nodes[0].data; |
+ if (!jsx.dmsg(data)) |
+ { |
+ window.alert(data); |
+ } |
+ }); |
+ |
+ /* 4. Make the HTTP request */ |
+ req.send(); |
+ } |
+ ] |
+ }); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body> |
+ <form action=""> |
+ <input name="URI" /> |
+ <input type="button" |
+ value="Test" onclick="makeRequest(this.form.elements['URI'].value);" /> |
+ </form> |
+ </body> |
+</html> |
\ No newline at end of file |
Index: live/test/compat.js |
=================================================================== |
--- live/test/compat.js (nonexistent) |
+++ live/test/compat.js (revision 520) |
@@ -0,0 +1,2 @@ |
+var debug = jsx.debug; |
+var sGlobal = "_global"; |
\ No newline at end of file |
/live/test/compat.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/map.php |
=================================================================== |
--- live/test/map.php (nonexistent) |
+++ live/test/map.php (revision 520) |
@@ -0,0 +1,287 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>map.js Test Case</title> |
+<!-- <script type="text/javaScript" src="jsunit/app/jsUnitCore.js"></script> --> |
+ <script type="text/javascript" src="object.js"></script> |
+ <script type="text/javascript" src="../map.js"></script> |
+<!-- <script type="text/javascript" src="debug.js"></script>--> |
+ <script type="text/javascript" src="test.js"></script> |
+ <script type="text/javascript"> |
+ jsx._import(jsx.object, ["dmsg"]); |
+ jsx._import(jsx.map, ["Map", "KeyError"]); |
+ jsx._import(jsx.test, ["assert", "assertTrue", "assertFalse", |
+ "assertUndefined", "runner"]); |
+ function test() |
+ { |
+ var m; |
+ runner.run({ |
+ setUp: function () { |
+ /* Instantiation */ |
+ m = new Map(); |
+ }, |
+ tests: [ |
+ { |
+ name: "put() and get()", |
+ code: function() { |
+ /* */ |
+ assertUndefined(m.put("foo", "bar")); |
+ assertTrue(m.get("foo") == "bar"); |
+ |
+ assertUndefined(m.put("constructor", "a")); |
+ assertTrue(m.get("constructor") == "a"); |
+ } |
+ }, |
+ |
+ { |
+ name: "remove()", |
+ code: function () { |
+ assertUndefined(m.put("foo", "bar")); |
+ assertTrue(m.get("foo") == "bar"); |
+ |
+ assertUndefined(m.put("constructor", "a")); |
+ assertTrue(m.get("constructor") == "a"); |
+ |
+ assertTrue(m.remove("constructor") == "a"); |
+ assertFalse(m.get("constructor", false)); |
+ } |
+ }, |
+ |
+ { |
+ name: "_maxAliasLength", |
+ code: function () { |
+ assertTrue(m.setMaxAliasLength(1)); |
+ assertTrue(m.getMaxAliasLength() === 1); |
+ } |
+ }, |
+ |
+ { |
+ name: "Undefined key, no default --> KeyError", |
+ code: function () { |
+ var x = 0; |
+ |
+ jsx.tryThis( |
+ function () { |
+ m.get("constructor"); |
+ }, |
+ function (e) { |
+ x = e; |
+ }); |
+ |
+ assertTrue(x.constructor === KeyError); |
+ } |
+ }, |
+ |
+ { |
+ name: "size()", |
+ code: function () { |
+ assertTrue(m.setMaxAliasLength(255)); |
+ assertTrue(m.size() === 0); |
+ |
+ m.put("baz", "bla"); |
+ assertTrue(m.size() === 1); |
+ |
+ m.remove("baz"); |
+ assertTrue(m.size() === 0); |
+ } |
+ }, |
+ |
+ { |
+ name: "mappings()", |
+ code: function () { |
+ var mappings = m.mappings(); |
+ |
+ if (typeof dmsg == "function") dmsg(mappings); |
+ assertFalse(mappings.length > 0); |
+ |
+ m.put("baz", 42); |
+ mappings = m.mappings(); |
+ if (typeof dmsg == "function") dmsg(mappings); |
+ assertTrue(mappings.length > 0); |
+ } |
+ }, |
+ |
+ { |
+ name: "isEmpty()", |
+ code: function () { |
+ m.put("foo"); |
+ assertFalse(m.isEmpty()); |
+ |
+ m.remove("foo"); |
+ assertTrue(m.isEmpty()); |
+ } |
+ }, |
+ |
+ { |
+ name: "containsKey()", |
+ code: function () { |
+ assertFalse(m.containsKey("constructor")); |
+ assertFalse(m.containsKey("foo")); |
+ |
+ m.put("foo", "bar"); |
+ assertFalse(m.containsKey("constructor")); |
+ assertTrue(m.containsKey("foo")); |
+ } |
+ }, |
+ |
+ { |
+ name: "putAll()", |
+ code: function () { |
+ m.put("answer", 42); |
+ m.put("foo", "bar"); |
+ |
+ var m2 = new Map(); |
+ m2.put("answer", 23); |
+ m2.putAll(m); |
+ assertTrue(m2.containsKey("answer")); |
+ assertTrue(m2.get("answer", false) === 42); |
+ assertTrue(m2.containsKey("foo")); |
+ |
+ m2 = new Map(m); |
+ assertTrue(m2.containsKey("foo")); |
+ assertTrue(m2.get("answer", false) === 42); |
+ } |
+ }, |
+ |
+ { |
+ name: "put()ing and get()ing with object key", |
+ code: function() { |
+ var o = {}; |
+ assertUndefined(m.put(o, "bar")); |
+ assertTrue(m.get(o) == "bar"); |
+ } |
+ }, |
+ |
+ { |
+ name: "remove() with object key", |
+ code: function () { |
+ var o = {}; |
+ assertUndefined(m.put(o, "bar")); |
+ assertTrue(m.get(o) == "bar"); |
+ |
+ assertTrue(m.remove(o) == "bar"); |
+ assertFalse(m.get(o, false)); |
+ } |
+ }, |
+ |
+ { |
+ name: "Undefined object key, no default --> KeyError", |
+ code: function () { |
+ var x = 0; |
+ |
+ jsx.tryThis( |
+ function () { |
+ var o = {}; |
+ m.get(o); |
+ }, |
+ function (e) { |
+ x = e; |
+ }); |
+ |
+ assertTrue(x.constructor === KeyError); |
+ } |
+ }, |
+ |
+ { |
+ name: "size() with object key", |
+ code: function () { |
+ assertTrue(m.setMaxAliasLength(255)); |
+ assertTrue(m.size() === 0); |
+ |
+ var o = {}; |
+ m.put(o, "bla"); |
+ assertTrue(m.size() === 1); |
+ |
+ m.remove(o); |
+ assertTrue(m.size() === 0); |
+ } |
+ }, |
+ |
+ { |
+ name: "mappings() with object key", |
+ code: function () { |
+ var mappings = m.mappings(); |
+ |
+ if (typeof dmsg == "function") dmsg(mappings); |
+ assertFalse(mappings.length > 0); |
+ |
+ var o = {}; |
+ m.put(o, 42); |
+ mappings = m.mappings(); |
+ if (typeof dmsg == "function") dmsg(mappings); |
+ assertTrue(mappings.length > 0); |
+ } |
+ }, |
+ |
+ { |
+ name: "isEmpty() with object key", |
+ code: function () { |
+ var o = {}; |
+ m.put(o); |
+ assertFalse(m.isEmpty()); |
+ |
+ m.remove(o); |
+ assertTrue(m.isEmpty()); |
+ } |
+ }, |
+ |
+ { |
+ name: "containsKey() with object key", |
+ code: function () { |
+ var o = {}; |
+ assertFalse(m.containsKey("constructor")); |
+ assertFalse(m.containsKey(o)); |
+ |
+ m.put(o, "bar"); |
+ assertFalse(m.containsKey("constructor")); |
+ assertTrue(m.containsKey(o)); |
+ } |
+ }, |
+ |
+ { |
+ name: "putAll() with object key", |
+ code: function () { |
+ m.put("answer", 42); |
+ var o = {}; |
+ m.put(o, "bar"); |
+ |
+ var m2 = new Map(); |
+ m2.put("answer", 23); |
+ m2.putAll(m); |
+ assertTrue(m2.containsKey("answer")); |
+ assertTrue(m2.get("answer", false) === 42); |
+ assertTrue(m2.containsKey(o)); |
+ |
+ m2 = new Map(m); |
+ assertTrue(m2.containsKey(o)); |
+ assertTrue(m2.get("answer", false) === 42); |
+ } |
+ } |
+ ] |
+ }); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body onload="test()"> |
+ <h1><tt>map.js</tt> Test Case</h1> |
+ <ul> |
+ <li><a href="view-source:http://<?php |
+ echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
+ ?>">View HTML source</a> (uses view-source scheme)</li> |
+ |
+ <li><a href="../map.js">View script source</a> |
+ (<a href="view-source:http://<?php |
+ echo $_SERVER['HTTP_HOST'] |
+ . preg_replace('/[^\/]+$/', '', $_SERVER['REQUEST_URI']); |
+ ?>../map.js">use view-source scheme</a>)</li> |
+ |
+ <!-- <li><a href="jsunit/testRunner?testPage=<?php |
+ echo urlencode(htmlentities($_SERVER['REQUEST_URI'])); |
+ ?>&autoRun=true" |
+ >Run unit test</a></li> --> |
+ </ul> |
+ </body> |
+</html> |
\ No newline at end of file |
Index: live/test/grammar.html |
=================================================================== |
--- live/test/grammar.html (nonexistent) |
+++ live/test/grammar.html (revision 520) |
@@ -0,0 +1,51 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>grammar.js Test Case</title> |
+ <script type="text/javascript" src="../object.js"></script> |
+ <script type="text/javascript" src="../grammar.js"></script> |
+ <script type="text/javascript" src="test.js"></script> |
+ <script type="text/javascript"> |
+ var Grammar2 = jsx.grammar.Grammar2; |
+ |
+ jsx.test.runner.run({ |
+ tests: [ |
+ function () { |
+ var g = new Grammar2({ |
+ ID: "#{nmchar}+", |
+ nmchar: "[_a-z0-9-]|{nonascii}|{escape}", |
+ nonascii: "[\\xA0-\\xFF]", |
+ escape: "{unicode}|\\\\[^\\r\\n\\f0-9a-f]", |
+ unicode: "\\\\{h}\\{1,6\\}(\\r\\n|[ \\t\\r\\n\\f])?", |
+ h: "[0-9a-f]", |
+ CLASS: "\\.{IDENT}", |
+ IDENT: "-?{nmstart}{nmchar}*", |
+ nmstart: "[_a-z]|{nonascii}|{escape}", |
+ ATTRIBUTE: "\\[\\s*({IDENT}\\|)?{IDENT}\\s*((=|{INCLUDES}|{DASHMATCH})\\s*({IDENT}|{STRING})\\s*)?\\]", |
+ INCLUDES: "~=", |
+ DASHMATCH: "\\|=", |
+ STRING: "{string1}|{string2}", |
+ string1: '"([^\\n\\r\\f\\\\"]|\\\\{nl}|{escape})*"', |
+ string2: "'([^\\n\\r\\f\\\\']|\\\\{nl}|{escape})*'", |
+ nl: "(\\n|\\r\n|\\r|\\f)", |
+ PSEUDOCLASS: ":(link|visited|hover|active|focus|target|lang" |
+ + "|enabled|disabled|checked|indeterminate" |
+ + "|root|nth-child|nth-last-child|nth-of-type|nth-last-of-type" |
+ + "|first-child|last-child|first-of-type|last-of-type" |
+ + "|only-child|only-of-type|empty|not)\\b", |
+ ELEMENT: "(^|\\s)(({IDENT}|\\*)\\|)?{IDENT}", |
+ PSEUDOELEMENT: "::?(first-line|first-letter|before|after)\\b" |
+ }, |
+ true); |
+ } |
+ ] |
+ }) |
+ </script> |
+ </head> |
+ |
+ <body> |
+ <h1>grammar.js Test Case</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/test/grammar.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/test/test.xml.php |
=================================================================== |
--- live/test/test.xml.php (nonexistent) |
+++ live/test/test.xml.php (revision 520) |
@@ -0,0 +1,26 @@ |
+<?php |
+header('Content-Type: text/xml; charset=utf-8'); |
+echo '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'; |
+?> |
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" |
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" |
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
+> |
+ <soap:Body> |
+ <res:Response |
+ xmlns:res="http://www.ebasetech.com/LADRA_COPYMOVE_TERM_OP/Response" |
+ > |
+ <res:OUTPUT> |
+ <res:UNDO_COUNT>1.0</res:UNDO_COUNT> |
+ <res:MSG>Undo complete (No more to undo)</res:MSG> |
+ </res:OUTPUT> |
+ </res:Response> |
+ <res:OUTPUT |
+ xmlns:res="http://www.ebasetech.com/LADRA_COPYMOVE_TERM_OP/Response" |
+ >foo</res:OUTPUT> |
+ </soap:Body> |
+ <foo xmlns="bar"> |
+ <baz/> |
+ </foo> |
+ <bla/> |
+</soap:Envelope> |
Index: live/test/.htaccess |
=================================================================== |
--- live/test/.htaccess (nonexistent) |
+++ live/test/.htaccess (revision 520) |
@@ -0,0 +1,7 @@ |
+RedirectMatch permanent (.*/)preloadImages(\.html?)?(.*) $1hoverMe/ |
+RedirectMatch permanent (.*/test/(hoverMe))(-\d.\d\d?)?(\.html?)$ $1/$2/$2$3 |
+RedirectMatch permanent (.*/test)/(hoverMe.*)$ $1/dom/$2 |
+RedirectMatch permanent (.*/whatami)-(de)(\.html?)?(.*) $1.html.$2$4 |
+# RedirectMatch permanent ^(.*)/(liveconn)[^/]+$ $1/$2.html |
+ |
+# RedirectMatch permanent (.*/)obj-?insp(?!\.(css|js)) $1ObjectInspector/nightly/latest/ |
Index: live/test/datefmt.html |
=================================================================== |
--- live/test/datefmt.html (nonexistent) |
+++ live/test/datefmt.html (revision 520) |
@@ -0,0 +1,21 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
+<html lang="de"> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+<title>Untitled</title> |
+<script src="../string.js" type="text/javascript"></script> |
+<script src="debug.js" type="text/javascript"></script> |
+<script src="../time.js" type="text/javascript"></script> |
+</head> |
+ |
+<body> |
+<script type="text/javascript"> |
+ var d = new Date(2001, 11, 30, 23, 59, 59, 59); |
+ alert( |
+ getDateFmt( |
+ d, |
+ "_dddd_, _d_. _MMMM_ _yyyy_ _h_:_mm_:_ss_,_S_ _TTTTT_", |
+ oDateNames_de)); |
+ </script> |
+</body> |
+</html> |
\ No newline at end of file |
Index: live/test/close.html |
=================================================================== |
--- live/test/close.html (nonexistent) |
+++ live/test/close.html (revision 520) |
@@ -0,0 +1,23 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
+<html lang="de"> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+<title>kuckuck</title> |
+</head> |
+ |
+<body> |
+hallo |
+<script type="text/javascript"> |
+ <!-- |
+ function closeMe() { |
+ var w = window.open(null, "test_mich", "width=34, height=40"); |
+ w.document.open("text/plain"); |
+ w.document.write("bla"); |
+ w.document.close(); |
+ self.close(); |
+ } |
+ closeMe(); |
+ //--> |
+ </script> |
+</body> |
+</html> |
\ No newline at end of file |
Index: live/test/hexdit.html |
=================================================================== |
--- live/test/hexdit.html (nonexistent) |
+++ live/test/hexdit.html (revision 520) |
@@ -0,0 +1,111 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
+"http://www.w3.org/TR/html4/loose.dtd"> |
+<html> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
+<title>Untitled Document</title> |
+<style type="text/css"> |
+textarea { |
+ border: thin solid black; |
+ background-color: #ccc; |
+} |
+</style> |
+<script src="math.js" type="text/javascript"></script> |
+<script type="text/javascript"> |
+ function esrever(s) |
+ { |
+ if (s && s.length > 1) |
+ { |
+ var s2 = ""; |
+ for (var i = s.length -1; i > -1; i--) |
+ { |
+ s2 += s.charAt(i); |
+ } |
+ s = s2; |
+ } |
+ |
+ return s; |
+ } |
+ |
+ function update(o, cbBE) |
+ { |
+ var oSource = o.what; |
+ var oHex = oSource.form.elements['hex']; |
+ var oBin = oSource.form.elements['bin']; |
+ var oTxt = oSource.form.elements['txt']; |
+ |
+ switch (oSource.name) |
+ { |
+ case "hex": |
+ oSource.value = |
+ oSource.value.replace(/([0-9A-F]{2})([0-9A-F]{2,})/ig, "$1 $2"); |
+ oBin.value = ""; |
+ oTxt.value = ""; |
+ var aOctets = oSource.value.split(" "); |
+ |
+ for (var i = 0; i < aOctets.length; i++) |
+ { |
+ oBin.value |
+ += Math.dec2base(parseInt(aOctets[i], 16), 2, 8) + " "; |
+ oTxt.value += String.fromCharCode(parseInt(aOctets[i], 16)); |
+ } |
+ break; |
+ |
+ case "bin": |
+ oSource.value = oSource.value.replace(/([01]{8})([01]{8,})/g, "$1 $2"); |
+ /* |
+ |
+ (11111111)(1111111111111111111111111) |
+ 11111111 1111111111111111111111111 |
+ 11111111 (11111111)(11111111111111111) |
+ 11111111 11111111 11111111111111111 |
+ |
+ */ |
+ |
+ oHex.value = ""; |
+ oTxt.value = ""; |
+ var aOctets = oSource.value.split(" "); |
+ |
+ for (var i = 0; i < aOctets.length; i++) |
+ { |
+ oHex.value |
+ += Math.dec2base(parseInt(aOctets[i], 2), 16, 2) + " "; |
+ oTxt.value += String.fromCharCode(parseInt(aOctets[i], 2)); |
+ } |
+ |
+ break; |
+ |
+ case "txt": |
+ oHex.value = ""; |
+ oBin.value = ""; |
+ |
+ for (var i = 0; i < oSource.value.length; i++) |
+ { |
+ oHex.value += |
+ Math.dec2base(oSource.value.charCodeAt(i), 16, 2) + " "; |
+ oBin.value += |
+ Math.dec2base(oSource.value.charCodeAt(i), 2, 8) + " "; |
+ } |
+ } |
+ o.disabled = true; |
+ } |
+ |
+ function change(o) |
+ { |
+ var o2 = o.form.elements['btUpdate']; |
+ o2.what = o; |
+ o2.disabled = false; |
+ } |
+ </script> |
+</head> |
+<body> |
+<div style="text-align: center"> |
+<form action="" onSubmit="return false"><textarea name="hex" |
+ cols="47" rows="10" onKeyPress="change(this);"></textarea> <textarea |
+ name="txt" cols="16" rows="10" onKeyPress="change(this);"></textarea><br> |
+<textarea name="bin" cols="71" rows="20" onKeyPress="change(this);"></textarea><br> |
+<input type="button" name="btUpdate" value="Aktualisieren" |
+ onclick="update(this);" disabled></form> |
+</div> |
+</body> |
+</html> |
Index: live/test |
=================================================================== |
--- live/test (nonexistent) |
+++ live/test (revision 520) |
/live/test |
---|
Property changes: |
Added: svn:ignore |
## -0,0 +1,204 ## |
+_debug.js |
+ |
+ASP |
+ |
+devel |
+ |
+dom-matrix |
+ |
+dom-testpath |
+ |
+charset2.html |
+ |
+charset.html |
+ |
+all.html |
+ |
+charset.php |
+ |
+mime-types |
+ |
+JS17 |
+ |
+XMLHTTP |
+ |
+jslint |
+ |
+jsunit-2.1a-pe |
+ |
+SHL |
+ |
+jsunit |
+ |
+tmpdoc |
+ |
+firebug |
+ |
+E4X |
+ |
+language-extensions |
+ |
+SELFHTML |
+ |
+WSH |
+ |
+whatami |
+ |
+date-dst-algo.txt |
+ |
+compile.html |
+ |
+contexts.html |
+ |
+date2.html |
+ |
+date3.html |
+ |
+ |
+cyrillic.html |
+ |
+debug-time.html |
+ |
+hashfind.html |
+ |
+dst.html |
+ |
+events.htm |
+ |
+encrypt.htm |
+ |
+hashTable.html |
+ |
+find.html |
+ |
+dst.js |
+ |
+dhtml.html |
+ |
+diegoder.html |
+ |
+Fortu-Net_de Private Nachricht senden.htm |
+ |
+opera-style.phps |
+ |
+liveconn.html |
+ |
+random.html |
+ |
+math.html |
+ |
+plusop.xhtml |
+ |
+js1.html |
+ |
+test.htm |
+ |
+number.txt |
+ |
+jscript-named-functions.html |
+ |
+regexp2.html |
+ |
+menuitems.js |
+ |
+replace.html |
+ |
+strict.htm |
+ |
+test3.html |
+ |
+test5.html |
+ |
+popup.html |
+ |
+test8.html |
+ |
+scope.html |
+ |
+test6.html |
+ |
+Winamp-CDDB.html |
+ |
+whitespace.html |
+ |
+matrix.php |
+ |
+js2.html |
+ |
+test2.html |
+ |
+objref2.html |
+ |
+singleton.js |
+ |
+test.xhtml |
+ |
+objref.html |
+ |
+mixMe.html |
+ |
+ident-replace.html |
+ |
+sum.html |
+ |
+substring.html |
+ |
+syntax-error.html |
+ |
+uri-matcher.html |
+ |
+time.html |
+ |
+plusop.png |
+ |
+linkMe.html |
+ |
+include.html |
+ |
+properties.html |
+ |
+test.html |
+ |
+img-src.html |
+ |
+location.html |
+ |
+scope2.html |
+ |
+object2.html |
+ |
+inline.html |
+ |
+wordlist_2.js |
+ |
+webicq.html |
+ |
+mixed.html |
+ |
+RndInRng.html |
+ |
+test4.html |
+ |
+jscript-blocks.html |
+ |
+index.php |
+ |
+object.php |
+ |
+test7.html |
+ |
+jasmine |
+ |
+jQuery |
+ |
+throw.html |
+ |
+es-matrix |
+ |
+exception.html |
+ |
+es-matrix2 |
+ |
+builder.php |
+ |
+array-random.html |
Index: live/dom/timeout.js |
=================================================================== |
--- live/dom/timeout.js (nonexistent) |
+++ live/dom/timeout.js (revision 520) |
@@ -0,0 +1,174 @@ |
+/** |
+ * <title>PointedEars' DOM Library: Timeout</title> |
+ * @requires object.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2002-2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.dom.timeout = (function () { |
+ /* Imports */ |
+ var _isMethod = jsx.object.isMethod; |
+ |
+ /* Private variables */ |
+ var _Timeout = ( |
+ /** |
+ * Creates a container for code that can be run later. |
+ * |
+ * @constructor |
+ * @param {Function} f |
+ * Code to be run later. The default is <code>null</code>. |
+ * @param {int} delay |
+ * Milliseconds after which the code will be run by default. |
+ */ |
+ function jsx_dom_timeout_Timeout (f, delay) { |
+ this.running = false; |
+ this.code = f || null; |
+ this.delay = parseInt(delay, 10) || 50; |
+ } |
+ ).extend(null, { |
+ /** |
+ * Runs the associated code after <var>delay</var> milliseconds; |
+ * cancels any planned but not yet performed executions. |
+ * |
+ * @memberOf jsx.dom.timeout.Timeout.prototype |
+ * @param {Function} f |
+ * Code to be run later. The default is the value of the |
+ * <code>code</code> property as initialized upon construction. |
+ * This argument's value will modify that property if the type |
+ * is correct. |
+ * @param {int} delay |
+ * Milliseconds after which the code will be run by default. |
+ * The default is the value of the <code>delay</code> property |
+ * as initialized upon construction. |
+ * This argument's value will modify that property if the type |
+ * is correct. |
+ * @return {jsx.dom.timeout.Timeout} |
+ * This object |
+ */ |
+ run: function(f, delay) { |
+ this.unset(); |
+ |
+ if (typeof f == "function") |
+ { |
+ this.code = f; |
+ } |
+ |
+ if (delay) |
+ { |
+ this.delay = parseInt(delay, 10); |
+ } |
+ |
+ if (_isMethod(jsx.global, "window", "setTimeout")) |
+ { |
+ this.running = true; |
+ var me = this; |
+ this.data = window.setTimeout(function() { |
+ me.code(); |
+ me.unset(); |
+ }, this.delay); |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Cancels the execution of the associated code |
+ */ |
+ unset: function() { |
+ if (this.running) |
+ { |
+ if (_isMethod(jsx.global, "window", "clearTimeout")) |
+ { |
+ window.clearTimeout(this.data); |
+ } |
+ |
+ this.running = false; |
+ } |
+ } |
+ }); |
+ |
+ return { |
+ /** |
+ * @memberOf jsx.dom.timeout |
+ */ |
+ Timeout: _Timeout, |
+ |
+ TimeoutList: ( |
+ /** |
+ * Provides a container for {@link #Timeout}s. |
+ * |
+ * @constructor |
+ * @param {Array} timeouts |
+ * The list of {@link jsx.dom.timeout#Timeout Timeouts} to be considered |
+ */ |
+ function jsx_dom_timeout_TimeoutList (timeouts) { |
+ this.timeouts = timeouts || []; |
+ } |
+ ).extend(null, { |
+ /** |
+ * Unsets all {@link #Timeout}s in this container |
+ * |
+ * @memberOf jsx.dom.timeout.TimeoutList.prototype |
+ */ |
+ unsetAll: function() { |
+ for (var i = 0, timeouts = this.timeouts, len = timeouts.length; i < len; ++i) |
+ { |
+ timeouts[i].unset(); |
+ } |
+ } |
+ }), |
+ |
+ /** |
+ * Schedules code for later execution. |
+ * |
+ * @param {String|Function} code |
+ * Code to be executed or function to be called. |
+ * @param {number} iTimeout |
+ * Number of milliseconds after which <var>code</var> should be run. |
+ * The time of execution is implementation-dependent, but the timer |
+ * will usually not start before control has returned to the caller. |
+ * @return {jsx.dom.timeout.Timeout} |
+ * The created <code>Timeout</code> |
+ */ |
+ runAsync: function (code, iTimeout) { |
+ return (new _Timeout(code, iTimeout)).run(); |
+ } |
+ }; |
+}()); |
\ No newline at end of file |
/live/dom/timeout.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/widgets.js |
=================================================================== |
--- live/dom/widgets.js (nonexistent) |
+++ live/dom/widgets.js (revision 520) |
@@ -0,0 +1,1848 @@ |
+"use strict"; |
+/** |
+ * <title>PointedEars' DOM Library: Widgets</title> |
+ * |
+ * @version $Id$ |
+ * @requires dom.js, events.js |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author (C) 2010-2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ * (must be provided by object.js, here for JSDT only) |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ * (must be provided by dom.js, here for JSDT only) |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * @type jsx.dom.widgets |
+ * @memberOf __jsx.dom.widgets |
+ * @namespace |
+ */ |
+jsx.dom.widgets = (/** @constructor */ function () { |
+ /* Imports */ |
+ var _jsx_dom = jsx.dom; |
+ var _gEBTN = _jsx_dom.getElemByTagName; |
+ |
+ /* Constant-like private variables */ |
+ var _AFTER = 1; |
+ |
+ /* Other private variables */ |
+ /** |
+ * Constructor of the abstract prototype for widgets. It provides |
+ * shallow copying of the passed properties, stores the reference to the |
+ * manipulated DOM object, and applies the given properties to the |
+ * display of that object. Widgets should inherit from this prototype, |
+ * and this constructor should be called only from the constructors of |
+ * prototypes of specialized widgets. |
+ * |
+ * @function |
+ */ |
+ var _Widget = ( |
+ /** |
+ * @constructor |
+ * @param {Element} oTarget |
+ * Reference to the DOM object that represents the |
+ * element that provides the client area for the widget. Pass a |
+ * false-value to create a new element. |
+ * @param {jsx.dom.widgets.Container} oParent |
+ * Reference to the <code>Container</code> that should contain |
+ * this widget. Pass <code>null</code> so that the widget will |
+ * not be automatically appended. You can call its |
+ * {@link #appendTo()} method later to append it. |
+ * @param {Object} oProperties |
+ */ |
+ function (oTarget, oParent, oProperties) { |
+ this._target = oTarget || document.createElement(this.elementType); |
+ |
+ if (oParent && !(oParent instanceof _Container)) |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ [null, jsx.object.getFunctionName(oParent.constructor), "jsx.dom.widgets.Container"]); |
+ } |
+ |
+ this._parent = oParent || null; |
+ |
+ /** |
+ * @type Array[Widget] |
+ */ |
+ this.children = []; |
+ |
+ for (var propertyName in oProperties) |
+ { |
+ /* Do not overwrite methods */ |
+ if (typeof this[propertyName] != "function") |
+ { |
+ var setter = this._getSetterFor(propertyName); |
+ if (setter) |
+ { |
+ setter.call(this, oProperties[propertyName]); |
+ } |
+ else |
+ { |
+ this[propertyName] = oProperties[propertyName]; |
+ } |
+ } |
+ } |
+ |
+ if (this._target) |
+ { |
+ this.init(); |
+ this.update(); |
+ } |
+ } |
+ ).extend(null, (function () { |
+ var _getKeys = jsx.object.getKeys; |
+ var _css = _jsx_dom.css; |
+ |
+ return { |
+ /** |
+ * Widgets are `div' elements by default. Inheriting classes should |
+ * override this when appropriate (e. g., a menu should be a `ul'). |
+ * |
+ * @memberOf jsx.dom.widgets.Widget.prototype |
+ */ |
+ elementType: "div", |
+ |
+ /** |
+ * @type Element |
+ */ |
+ _target: null, |
+ |
+ /** |
+ * Defines actions to be performed when the widget is initialized. |
+ * Can be overridden by inheriting types. If it is overridden, |
+ * it must also be called. |
+ */ |
+ init: function () { |
+ if (this._parent) |
+ { |
+ /* |
+ * Automagically append widget to parent |
+ * (without necessarily rendering it) |
+ */ |
+ this.appendTo(); |
+ } |
+ }, |
+ |
+ /** |
+ * Gets a property of this widget's target object. |
+ * |
+ * @param {String} name |
+ * @return {any} |
+ */ |
+ getTargetProperty: function (name) { |
+ return this._target[name]; |
+ }, |
+ |
+ /** |
+ * Sets a property of this widget's target object. |
+ * |
+ * Use {@link #setStyleProperty()}, {@link #resetStyleProperty()} |
+ * or {@link #setStyle()} for setting style properties instead. |
+ * |
+ * @param {String} name |
+ * @param value |
+ * @return {jsx.dom.widgets.Widget} |
+ */ |
+ setTargetProperty: function (name, value) { |
+ this._target[name] = value; |
+ return this; |
+ }, |
+ |
+ /** |
+ * Sets several property of this widget's target object. |
+ * |
+ * Use {@link #setStyleProperty()}, {@link #resetStyleProperty()} |
+ * or {@link #setStyle()} for setting style properties instead. |
+ * |
+ * @param {String} name |
+ * @param value |
+ * @return {jsx.dom.widgets.Widget} |
+ */ |
+ setTargetProperties: function (properties) { |
+ var keys = _getKeys(properties); |
+ for (var i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var propertyName = keys[i]; |
+ this.setTargetProperty(propertyName, properties[propertyName]); |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Sets a style property of this widget |
+ * |
+ * @param {String} name |
+ * @param value |
+ * @return {boolean} |
+ * @see jsx.dom.css.setStyleProperty() |
+ */ |
+ setStyleProperty: function (name, value) { |
+ return _css.setStyleProperty(this._target, name, value); |
+ }, |
+ |
+ /** |
+ * Resets a style property of this widget to its inherited value |
+ * |
+ * @param {String} name |
+ */ |
+ resetStyleProperty: function (name) { |
+ _css.resetStyleProperty(this._target, name); |
+ }, |
+ |
+ /** |
+ * Sets several style properties of this widget at once |
+ * |
+ * @param {Object} style |
+ */ |
+ setStyle: function (style) { |
+ var result = true; |
+ |
+ for (var propertyName in style) |
+ { |
+ var resultPart = this.setStyleProperty(propertyName, style[propertyName]); |
+ if (result && !resultPart) |
+ { |
+ result = false; |
+ } |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Defines actions to be performed when the widget's canvas should be |
+ * updated to reflect its current status; should be overridden |
+ * and called by inheriting types. |
+ */ |
+ update: function () { |
+ this.setStyle(this.style); |
+ |
+ for (var i = 0, len = this.children.length; i < len; ++i) |
+ { |
+ this.children[i].update(); |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Causes the widget to be rendered. |
+ */ |
+ render: function (parent) { |
+ this.update(); |
+ this._target.style.display = ""; |
+ return this; |
+ }, |
+ |
+ /** |
+ * Causes the widget not to be rendered, without removing it |
+ * from the document tree. |
+ */ |
+ unrender: function () { |
+ this._target.style.display = "none"; |
+ return this; |
+ }, |
+ |
+ /** |
+ * Shows the widget |
+ */ |
+ show: function () { |
+ this._target.style.visibility = "visible"; |
+ return this; |
+ }, |
+ |
+ /** |
+ * Hides the widget, but keeps its box |
+ */ |
+ hide: function () { |
+ this._target.style.visibility = "hidden"; |
+ return this; |
+ }, |
+ |
+ /** |
+ * Appends the widget as a child element |
+ * |
+ * @param {jsx.dom.widgets.Container} parent (optional) |
+ * The widget that this widget should be appended to. |
+ * The default is the current parent widget. |
+ * @see jsx.dom.widgets.Container.prototype.appendChild() |
+ */ |
+ appendTo: function (parent) { |
+ if (typeof parent == "undefined") |
+ { |
+ parent = this._parent; |
+ } |
+ |
+ return parent.appendChild(this); |
+ }, |
+ |
+ /** |
+ * Removes the widget from the document |
+ * |
+ * @see jsx.dom.widgets.Container.prototype.removeChild() |
+ */ |
+ remove: function () { |
+ for (var i = 0, len = this.children.length; i < len; ++i) |
+ { |
+ this.children[i].remove(); |
+ } |
+ |
+ /* TODO: Clean-up event listener */ |
+ |
+ return this._parent.removeChild(this); |
+ }, |
+ |
+ _getSetterFor: function (propertyName) { |
+ var setterName = |
+ "set" + propertyName.charAt(0).toUpperCase() + propertyName.substring(1); |
+ var setter = this[setterName]; |
+ return (typeof setter == "function") ? setter : null; |
+ } |
+ }; |
+ }())); |
+ |
+ /** |
+ * @function |
+ */ |
+ var _Container = ( |
+ /** |
+ * <code>Container</code>s are collapsible widgets |
+ * that may have content, such as other widgets and text. |
+ * |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_Container (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Container._super.apply(this, arguments); |
+ } |
+ ).extend(_Widget, { |
+ /** |
+ * Defines whether the widget should be collapsed |
+ * |
+ * @private |
+ */ |
+ _collapsed: false, |
+ |
+ innerHTML: null, |
+ _defaultInnerHTML: null, |
+ text: null, |
+ |
+ init: function () { |
+ _Container._super.prototype.init.call(this); |
+ |
+ this._defaultContent = this.innerHTML || this._target.innerHTML || ""; |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widget.Widget.prototype.update |
+ */ |
+ update: (function () { |
+ var _isArray = jsx.object.isArray; |
+ var _createNodesFromObj = _jsx_dom.createNodesFromObj; |
+ var _setTextContent = _jsx_dom.setTextContent; |
+ |
+ return function () { |
+ _Container._super.prototype.update.call(this); |
+ |
+ var target = this._target; |
+ |
+ var html = this.innerHTML; |
+ if (html !== null) |
+ { |
+ if (typeof html.valueOf() == "string") |
+ { |
+ target.innerHTML = html; |
+ } |
+ else |
+ { |
+ _jsx_dom.removeChildren(target, target.childNodes); |
+ |
+ if (_isArray(html)) |
+ { |
+ html = _createNodesFromObj(html); |
+ } |
+ |
+ if (_isArray(html)) |
+ { |
+ _jsx_dom.appendChildren(target, html); |
+ } |
+ else |
+ { |
+ target.appendChild(html); |
+ } |
+ } |
+ } |
+ else if (this.text != null) |
+ { |
+ _setTextContent(target, this.text); |
+ } |
+ |
+ target.onclick = this.onclick || null; |
+ target.onmouseover = this.onmouseover || null; |
+ target.onmousedown = this.onmousedown || null; |
+ |
+ return this; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns the collapsed state of the <code>Container</code> |
+ * |
+ * @return {boolean} |
+ * <code>true</code> if the widget is collapsed, |
+ * <code>false</code> otherwise. |
+ */ |
+ isCollapsed: function () { |
+ return !!this._collapsed; |
+ }, |
+ |
+ /** |
+ * Sets the collapsed state of the <code>Container</code> |
+ * |
+ * @param {boolean} value |
+ * @return {jsx.dom.widgets.Container} |
+ */ |
+ setCollapsed: function (value) { |
+ var oldValue = this.isCollapsed(); |
+ var newValue = this._collapsed = !!value; |
+ |
+ if (newValue != oldValue) |
+ { |
+ if (newValue && typeof this.oncollapse == "function") |
+ { |
+ this.oncollapse(); |
+ } |
+ else if (!newValue && typeof this.onexpand == "function") |
+ { |
+ this.onexpand(); |
+ } |
+ |
+ if (typeof this.oncollapsedchange == "function") |
+ { |
+ this.oncollapsedchange(newValue); |
+ } |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Collapses the <code>Container</code> |
+ */ |
+ collapse: function () { |
+ this.setCollapsed(true); |
+ }, |
+ |
+ /** |
+ * Expands the <code>Container</code> |
+ */ |
+ expand: function () { |
+ this.setCollapsed(false); |
+ }, |
+ |
+ /** |
+ * @memberOf jsx.dom.widgets.Container.prototype |
+ * @return {string} |
+ */ |
+ getText: function () { |
+ this.text = this._target.textContent; |
+ return this.text; |
+ }, |
+ |
+ /** |
+ * @param {string} text |
+ * @return {jsx.dom.widgets.Container} |
+ */ |
+ setText: function (text) { |
+ this.text = text; |
+ this.innerHTML = null; |
+ return this; |
+ }, |
+ |
+ /** |
+ * @param {string} html |
+ * @return {jsx.dom.widgets.Container} |
+ */ |
+ setInnerHTML: function (html) { |
+ this.text = ""; |
+ this.innerHTML = html; |
+ return this; |
+ }, |
+ |
+ resetContent: function () { |
+ this.setInnerHTML(this._defaultContent); |
+ }, |
+ |
+ setChildren: function (children) { |
+ for (var i = 0, len = children.length; i < len; ++i) |
+ { |
+ children[i].appendTo(this); |
+ } |
+ }, |
+ |
+ /** |
+ * @param {jsx.dom.widgets.Widget} child |
+ * @return {jsx.dom.widgets.Widget} |
+ * The appended widget. |
+ */ |
+ appendChild: function (child) { |
+ var result = null; |
+ var childTarget = child._target; |
+ var target = this._target; |
+ var success = true; |
+ |
+ /* |
+ * If the child widget's element is not in the document tree, |
+ * or if it is not already a child of this widget's element … |
+ */ |
+ if (childTarget.parentNode != target) |
+ { |
+ /* |
+ * … append it as child element |
+ */ |
+ target.appendChild(child._target); |
+ success = (target.lastChild == childTarget); |
+ } |
+ |
+ if (success) |
+ { |
+ /* |
+ * If we already have the widget as a child, |
+ * move it to the end of the list |
+ */ |
+ var childIndex = this.children.indexOf(child); |
+ if (childIndex >= 0) |
+ { |
+ this.children.splice(childIndex, 1); |
+ } |
+ |
+ this.children.push(child); |
+ |
+ result = child; |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ removeChild: function (child) { |
+ var childIndex = this.children.indexOf(child); |
+ if (childIndex >= 0) |
+ { |
+ this._target.removeChild(child._target); |
+ this.children.splice(childIndex, 1); |
+ } |
+ } |
+ }); |
+ |
+ var _Section = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_Section (oTarget, oParent, oProperties) { |
+ _Section._super.apply(this, arguments); |
+ } |
+ ).extend(_Container, { |
+ /** |
+ * @memberOf jsx.dom.widgets.Section.prototype |
+ */ |
+ elementType: "section" |
+ }); |
+ |
+ var _Anchor = ( |
+ function jsx_dom_widgets_Anchor () { |
+ jsx_dom_widgets_Anchor._super.apply(this, arguments); |
+ } |
+ ).extend(_Container, { |
+ elementType: "a" |
+ }); |
+ |
+ var _Label = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_Label (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Label._super.apply(this, arguments); |
+ } |
+ ).extend(_Container, { |
+ /** |
+ * @memberOf jsx.dom.widgets.Label.prototype |
+ */ |
+ elementType: "label" |
+ }); |
+ |
+ var _TextArea = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_TextArea (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_TextArea._super.apply(this, arguments); |
+ } |
+ ).extend(_Container, { |
+ /** |
+ * @memberOf jsx.dom.widgets.TextArea.prototype |
+ */ |
+ elementType: "textarea" |
+ }); |
+ |
+ /** |
+ * @function |
+ */ |
+ var _Input = ( |
+ /** |
+ * An <code>Input</code> widget enhances the default |
+ * <code>INPUT</code> element text box with a restriction to the |
+ * characters that may be typed into it. |
+ * |
+ * @constructor |
+ * @param {Element} oTarget |
+ * Reference to the DOM object that represents the |
+ * element that provides the client area for the widget. Pass a |
+ * false-value to create a new element. |
+ * @param {Element} oParent |
+ * Reference to the DOM object that represents the parent |
+ * element for this widget. Pass <code>null</code> so that the |
+ * widget will not be automatically attached to the document |
+ * tree. You can call its {@link #appendTo()} method later to |
+ * attach it. |
+ * @param {Object} oProperties |
+ * @see Widget |
+ */ |
+ function jsx_dom_widgets_Input (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Input._super.apply(this, arguments); |
+ |
+ var me = this; |
+ _jsx_dom.addEventListener(this._target, "keypress", _jsx_dom.createEventListener( |
+ function (e) { |
+ var charCode = |
+ (typeof e.charCode != "undefined") |
+ ? e.charCode |
+ : (typeof e.keyCode != "undefined" ? e.keyCode : charCode); |
+ |
+ if (! (charCode < 32 |
+ || me.allowedChars.test(String.fromCharCode(charCode)) |
+ && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey)) |
+ { |
+ return e.preventDefault(); |
+ } |
+ } |
+ )); |
+ } |
+ ).extend(_Widget, { |
+ /** |
+ * Regular Expression specifying the format allowed to be input into |
+ * this widget. CAUTION: Too restrictive an expression could render |
+ * the widget unusable. |
+ * |
+ * @memberOf jsx.dom.widgets.Input.prototype |
+ * @type RegExp |
+ */ |
+ allowedChars: /./, |
+ |
+ elementType: "input", |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.update() |
+ */ |
+ update: function () { |
+ _Input._super.prototype.update.call(this); |
+ |
+ if (typeof this.value != "undefined") |
+ { |
+ this._target.value = this.value; |
+ } |
+ |
+ if (typeof this.tabIndex != "undefined") |
+ { |
+ this._target.tabIndex = this.tabIndex; |
+ } |
+ |
+ return this; |
+ } |
+ }); |
+ |
+ /** |
+ * @function |
+ */ |
+ var _NumberInput = ( |
+ /** |
+ * A <code>NumberInput</code> widget restricts the characters to be |
+ * typed into it to decimal digits and the decimal point (".") by default. |
+ * |
+ * @constructor |
+ * @param {Element} oTarget |
+ * Reference to the DOM object that represents the element that |
+ * provides the client area for the widget. Pass a false-value |
+ * to create a new element. |
+ * @param {Element} oParent |
+ * Reference to the DOM object that represents the parent element |
+ * for this widget. Pass <code>null</code> so that the widget will |
+ * not be automatically attached to the document tree. You can call |
+ * its {@link #appendTo()} method later to attach it. |
+ * @param {Object} oProperties |
+ * @see jsx.dom.widgets#Input |
+ */ |
+ function jsx_dom_widgets_NumberInput (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_NumberInput._super.apply(this, arguments); |
+ |
+ var me = this; |
+ |
+ var target = this._target; |
+ _jsx_dom.addEventListener(target, "blur", function () { |
+ me.update(); |
+ }); |
+ |
+ _jsx_dom.addEventListener(target, "focus", function () { |
+ if (me.leadingZero) |
+ { |
+ this.value = parseInt(this.value, 10); |
+ } |
+ }); |
+ |
+ if (typeof this.oninput == "function") |
+ { |
+ _jsx_dom.addEventListener(target, "input", this.oninput); |
+ } |
+ } |
+ ).extend(_Input, { |
+ /** |
+ * @memberOf jsx.dom.widgets.NumberInput.prototype |
+ * @type RegExp |
+ */ |
+ allowedChars: /[\d.]/, |
+ |
+ leadingZero: false, |
+ |
+ /** |
+ * @type Number |
+ */ |
+ minValue: -Infinity, |
+ |
+ /** |
+ * @type Number |
+ */ |
+ maxValue: Infinity, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.init() |
+ */ |
+ init: function () { |
+ _NumberInput._super.prototype.init.call(this); |
+ |
+ var target = this._target; |
+ |
+ if (target.type != "number") |
+ { |
+ jsx.tryThis(function () { target.type = "number"; }); |
+ } |
+ |
+ if (target.type == "number") |
+ { |
+ /* HTML5 support */ |
+ if (this.minValue != -Infinity) |
+ { |
+ target.min = this.minValue; |
+ } |
+ |
+ if (this.maxValue != Infinity) |
+ { |
+ target.max = this.maxValue; |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Input.prototype.update() |
+ */ |
+ update: function () { |
+ _NumberInput._super.prototype.update.call(this); |
+ |
+ var target = this._target; |
+ |
+ var v = parseFloat(target.value); |
+ |
+ if (isNaN(v)) |
+ { |
+ v = 0; |
+ } |
+ |
+ if (this.minValue != -Infinity && v < this.minValue) |
+ { |
+ v = this.minValue; |
+ } |
+ else if (this.maxValue != Infinity && v > this.maxValue) |
+ { |
+ v = this.maxValue; |
+ } |
+ |
+ if (this.leadingZero && this.maxValue != Infinity) |
+ { |
+ v = leadingZero(v, String(this.maxValue).length); |
+ } |
+ |
+ v = String(v); |
+ |
+ if (v != target.value) |
+ { |
+ target.value = v; |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * @protected |
+ * @param valueType |
+ * @param value |
+ * @return {Number} |
+ */ |
+ _setBoundary: function (valueType, value) { |
+ value = parseFloat(value); |
+ |
+ if (!isNaN(value)) |
+ { |
+ if (this._target.type == "number") |
+ { |
+ /* HTML5 support */ |
+ this._target[valueType] = String(value); |
+ } |
+ |
+ this[valueType + "Value"] = value; |
+ } |
+ else |
+ { |
+ jsx.throwThis(null, "Invalid boundary: " + valueType + "Value"); |
+ } |
+ |
+ return this[valueType + "Value"]; |
+ }, |
+ |
+ setMinValue: function (value) { |
+ return this._setBoundary("min", value); |
+ }, |
+ |
+ setMaxValue: function (value) { |
+ return this._setBoundary("max", value); |
+ } |
+ }); |
+ |
+ var _ListItem = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_ListItem () { |
+ jsx_dom_widgets_ListItem._super.apply(this, arguments); |
+ } |
+ ).extend(_Container, { |
+ /** |
+ * @memberOf jsx.dom.widgets.ListItem.prototype |
+ */ |
+ elementType: "li" |
+ }); |
+ |
+ /** |
+ * @function |
+ */ |
+ var _List = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_List () { |
+ jsx_dom_widgets_List._super.apply(this, arguments); |
+ } |
+ ).extend(_Container, { |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.init() |
+ */ |
+ init: function () { |
+ _List._super.prototype.init.call(this); |
+ |
+ if (!this.items) |
+ { |
+ var target = this._target; |
+ if (target) |
+ { |
+ var childNodes = target.children || target.childNodes; |
+ for (var i = 0, len = childNodes.length; i < len; ++i) |
+ { |
+ var node = childNodes[i]; |
+ if (node.nodeType == 1) |
+ { |
+ var item = new _ListItem(node); |
+ item.appendTo(this); |
+ this.addItem(item); |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * @memberOf jsx.dom.widgets.List.prototype |
+ * @param {any} listItem |
+ */ |
+ addItem: function (listItem) { |
+ if (!this.items) |
+ { |
+ this.items = []; |
+ } |
+ |
+ this.items.push(listItem); |
+ }, |
+ |
+ /** |
+ * @param {any} listItem |
+ */ |
+ removeItem: function (item) { |
+ var items = this.items; |
+ if (items) |
+ { |
+ var i = items.indexOf(item); |
+ if (i > -1) |
+ { |
+ items.splice(i, 1); |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.List.prototype.update() |
+ */ |
+ update: function () { |
+ _List._super.prototype.update.call(this); |
+ |
+ var items = this._items; |
+ var i; |
+ var len = items && items.length || 0; |
+ |
+ for (i = len; i--;) |
+ { |
+ var item = items[i]; |
+ if (item._target.tagName.toUpperCase() != "LI") |
+ { |
+ items[i] = new _ListItem(null, null, { |
+ children: [item] |
+ }); |
+ } |
+ |
+ items[i].update(); |
+ } |
+ |
+ var target = this._target; |
+ var listItems = _gEBTN("li", -1, target); |
+ var len2 = listItems.length; |
+ for (i = 0; i < len && i < len2; ++i) |
+ { |
+ var listItem = listItems[i]; |
+ item = items[i]; |
+ |
+ if (listItem != item._target) |
+ { |
+ target.replaceChild(item._target, listItem); |
+ } |
+ } |
+ |
+ for (var j = listItems.length; j-- > i;) |
+ { |
+ target.removeChild(listItems[j]); |
+ } |
+ |
+ for (++j; j < len; ++j) |
+ { |
+ items[j].appendTo(this); |
+ } |
+ |
+ return this; |
+ } |
+ }); |
+ |
+ var _OrderedList = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_OrderedList () { |
+ jsx_dom_widgets_OrderedList._super.apply(this, arguments); |
+ } |
+ ).extend(_List, { |
+ /** |
+ * @memberOf jsx.dom.widgets.OrderedList.prototype |
+ */ |
+ elementType: "ol" |
+ }); |
+ |
+ /** |
+ * @function |
+ */ |
+ var _UnorderedList = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_UnorderedList () { |
+ jsx_dom_widgets_UnorderedList._super.apply(this, arguments); |
+ } |
+ ).extend(_List, { |
+ /** |
+ * @memberOf jsx.dom.widgets.UnorderedList.prototype |
+ */ |
+ elementType: "ul" |
+ }); |
+ |
+ var _Checkbox = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_Checkbox (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Checkbox._super.apply(this, arguments); |
+ } |
+ ).extend(_Widget, { |
+ /** |
+ * @memberOf jsx.dom.widgets.Checkbox.prototype |
+ */ |
+ elementType: "input", |
+ |
+ labelPosition: _AFTER, |
+ |
+ /** |
+ * Unique ID of this control |
+ */ |
+ _uid: -1, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.init() |
+ */ |
+ init: function () { |
+ _Checkbox._super.prototype.init.call(this); |
+ |
+ this._target.type = "checkbox"; |
+ this._target.id = "checkbox" + (++this._uid); |
+ |
+ var label = this.label; |
+ if (label) |
+ { |
+ if (typeof label.valueOf() == "string") |
+ { |
+ this.label = new _jsx_dom.widgets.Label(null, this._parent, { |
+ innerHTML: [label] |
+ }); |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.render() |
+ */ |
+ render: function () { |
+ _Checkbox._super.prototype.render.call(this); |
+ |
+ var label = this.label; |
+ if (label) |
+ { |
+ label._target.htmlFor = this._target.id; |
+ label.render(); |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.unrender() |
+ */ |
+ unrender: function () { |
+ _Checkbox._super.prototype.unrender.call(this); |
+ |
+ if (this.label) |
+ { |
+ this.label.unrender(); |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.show() |
+ */ |
+ show: function () { |
+ _Checkbox._super.protoype.show.call(this); |
+ |
+ if (this.label) |
+ { |
+ this.label.show(); |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.hide() |
+ */ |
+ hide: function () { |
+ _Checkbox._super.prototype.hide.call(this); |
+ |
+ if (this.label) |
+ { |
+ this.label.hide(); |
+ } |
+ }, |
+ |
+ /** |
+ * Appends the widget as a child element |
+ * |
+ * @param parent |
+ * @return {Array[Widget]} |
+ * An {@link Array} containing the Checkbox widget and its |
+ * label widget, if specified. |
+ * @see jsx.dom.widgets.Widget.prototype.appendTo() |
+ */ |
+ appendTo: function (parent) { |
+ _Checkbox._super.prototype.appendTo.call(this, parent); |
+ |
+ var label = this.label; |
+ if (label) |
+ { |
+ if (this.labelPosition === _jsx_dom.widgets.position.BEFORE) |
+ { |
+ parent._target.insertBefore(label._target, this._target); |
+ } |
+ else |
+ { |
+ if (this.labelPosition === _jsx_dom.widgets.position.AFTER) |
+ { |
+ parent._target.insertBefore(label._target, this._target.nextSibling); |
+ } |
+ } |
+ |
+ label.appendTo(parent); |
+ } |
+ |
+ return [this, label]; |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.remove() |
+ */ |
+ remove: function () { |
+ var CheckboxTarget = _Checkbox._super.prototype.remove.call(this); |
+ var labelTarget = this.label.remove(); |
+ return [CheckboxTarget, labelTarget]; |
+ } |
+ }); |
+ |
+ var _Button = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_Button (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Button._super.apply(this, arguments); |
+ } |
+ ).extend(_Container, { |
+ /** |
+ * @memberOf jsx.dom.widgets.Button.prototype |
+ */ |
+ elementType: "button", |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.init() |
+ */ |
+ init: function jsx_dom_widgets_Button_prototype_init () { |
+ _Button._super.prototype.init.call(this); |
+ |
+ var me = this; |
+ |
+ jsx.tryThis( |
+ function () { |
+ me._target.type = "button"; |
+ }, |
+ |
+ function () { |
+ /* IE 7 and other borken UAs that don't support inline-block properly */ |
+ jsx.throwThis("jsx.dom.widgets.InitError", "jsx.dom.widgets.Button", |
+ jsx_dom_widgets_Button_prototype_init); |
+ } |
+ ); |
+ } |
+ }); |
+ |
+ var _SpinnerInput = ( |
+ /** |
+ * @constructor |
+ * @param {Element} oTarget |
+ * Reference to the DOM object that represents the element that |
+ * provides the client area for the widget. Pass a false-value |
+ * to create a new element. |
+ * @param {Element} oParent |
+ * Reference to the DOM object that represents the parent element |
+ * for this widget. Pass <code>null</code> so that the widget |
+ * will not be automatically attached to the document tree. |
+ * You can call its {@link #appendTo()} method later to attach it. |
+ * @param {Object} oProperties |
+ */ |
+ function jsx_dom_widgets_SpinnerInput (oTarget, oParent, oProperties) { |
+ var me = this; |
+ |
+ jsx_dom_widgets_SpinnerInput._super.apply(this, arguments); |
+ |
+ var target = this._target; |
+ if (target.type != "number") |
+ { |
+ /* If no HTML5 support, try adding arrow controls */ |
+ jsx.tryThis( |
+ function () { |
+ me.buttonUp = new _jsx_dom.widgets.Button(null, null, { |
+ text: "\u25B4", |
+ tabIndex: target.tabIndex, |
+ style: { |
+ display: "block", |
+ margin: "0", |
+ width: "1em", |
+ minWidth: "0", |
+ padding: "0", |
+ lineHeight: "1em" |
+ }, |
+ onclick: function () { |
+ me.inc(); |
+ |
+ if (typeof me._target.onchange == "function") |
+ { |
+ me._target.onchange(); |
+ } |
+ } |
+ }); |
+ |
+ me.buttonDown = new _jsx_dom.widgets.Button(null, null, { |
+ text: "\u25BE", |
+ tabIndex: target.tabIndex, |
+ style: { |
+ display: "block", |
+ margin: "0", |
+ width: "1em", |
+ minWidth: "0", |
+ padding: "0", |
+ lineHeight: "1em" |
+ }, |
+ onclick: function () { |
+ me.dec(); |
+ |
+ if (typeof me._target.onchange == "function") |
+ { |
+ me._target.onchange(); |
+ } |
+ } |
+ }); |
+ |
+ var buttonContainer = document.createElement("div"); |
+ buttonContainer.style.display = "inline-block"; |
+ buttonContainer.style.lineHeight = "1em"; |
+ buttonContainer.style.verticalAlign = "middle"; |
+ |
+ buttonContainer.appendChild(me.buttonUp._target); |
+ buttonContainer.appendChild(me.buttonDown._target); |
+ target.parentNode.insertBefore(buttonContainer, target.nextSibling); |
+ }, |
+ |
+ function (e) { |
+ if (!e || e.name !== "jsx.dom.widgets.InitError") |
+ { |
+ /* Rethrow unhandled exception */ |
+ jsx.rethrowThis(e); |
+ } |
+ } |
+ ); |
+ |
+ /* Add event listeners */ |
+ _jsx_dom.addEventListener(target, "keydown", _jsx_dom.createEventListener( |
+ function (e) { |
+ /** |
+ * Increases the value of the <code>value</code> property. |
+ */ |
+ // function inc() |
+ // { |
+ // var v; |
+ // if ((me.maxValue == Infinity || this.value < me.maxValue) |
+ // && !isNaN(v = parseInt(this.value, 10) + 1) |
+ // && (this.maxLength < 1 || v.toString().length <= |
+ // this.maxLength)) |
+ // { |
+ // this.value = v; |
+ // } |
+ // } |
+ // |
+ // function dec() |
+ // { |
+ // var v; |
+ // if ((me.minValue == -Infinity || this.value > me.minValue) |
+ // && !isNaN(v = parseInt(this.value, 10) - 1) |
+ // && (this.maxLength < 1 || v.toString().length <= |
+ // this.maxLength)) |
+ // { |
+ // this.value = v; |
+ // } |
+ // } if (me.minValue != -Infinity || me.maxValue != Infinity) |
+ |
+ if (typeof e.keyIdentifier != "undefined") |
+ { |
+ /* DOM Level 3 Events draft */ |
+ switch (e.keyIdentifier) |
+ { |
+ case "Up": |
+ me.inc(); |
+ break; |
+ |
+ case "Down": |
+ me.dec(); |
+ } |
+ } |
+ else |
+ { |
+ /* currently proprietary */ |
+ switch (e.keyCode) |
+ { |
+ case 38: |
+ me.inc(); |
+ break; |
+ |
+ case 40: |
+ me.dec(); |
+ } |
+ } |
+ |
+ me.update(); |
+ } |
+ )); |
+ |
+ _jsx_dom.addEventListener(target, "keyup", function () { me.update(); }); |
+ } |
+ } |
+ ).extend(_NumberInput, { |
+ /** |
+ * Increases the value of the input by 1 |
+ * |
+ * @memberOf jsx.dom.widgets.SpinnerInput.prototype |
+ */ |
+ inc: function () { |
+ var v, t = this._target; |
+ |
+ if ( (this.maxValue == Infinity || t.value < this.maxValue) |
+ && !isNaN(v = parseInt(t.value, 10) + 1) |
+ && (t.maxLength < 1 || v.toString().length <= t.maxLength)) |
+ { |
+ t.value = v; |
+ } |
+ }, |
+ |
+ /** |
+ * Decreases the value of the input by 1 |
+ */ |
+ dec: function () { |
+ var v, t = this._target; |
+ |
+ if ( (this.minValue == -Infinity || t.value > this.minValue) |
+ && !isNaN(v = parseInt(t.value, 10) - 1) |
+ && (t.maxLength < 1 || v.toString().length <= t.maxLength)) |
+ { |
+ t.value = v; |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.NumberInput.prototype.update() |
+ */ |
+ update: function () { |
+ _NumberInput.prototype.update.call(this); |
+ |
+ var target = this._target; |
+ if (typeof target.onchange == "function") |
+ { |
+ target.onchange(); |
+ } |
+ |
+ return this; |
+ } |
+ }); |
+ |
+ var _CheckboxList = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_CheckboxList () { |
+ jsx_dom_widgets_CheckboxList._super.apply(this, arguments); |
+ } |
+ ).extend(_UnorderedList, { |
+ update: function () { |
+ /* FIXME: Disabled update for now */ |
+ }, |
+ |
+ /** |
+ * Adds a checkbox to this list as child of a {@link ListItem} |
+ * |
+ * @memberOf jsx.dom.widgets.CheckboxList.prototype |
+ * @param {jsx.dom.widget.Checkbox} checkbox |
+ * @return {jsx.dom.widget.ListItem} |
+ * The added list item |
+ */ |
+ addItem: function (item) { |
+ if (!(item instanceof _Checkbox)) |
+ { |
+ if (!(item instanceof _ListItem)) |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ [null, jsx.object.getFunctionName(item.constructor), |
+ "jsx.dom.widgets.Checkbox or jsx.dom.widgets.ListItem"]); |
+ } |
+ |
+ /* Add the contained checkbox as item */ |
+ var checkbox = _gEBTN("input", 0, item._target); |
+ if (!checkbox|| checkbox.type.toLowerCase() != "checkbox") |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ [null, jsx.object.getFunctionName(checkbox.constructor), |
+ "jsx.dom.widgets.ListItem containing a checkbox"]); |
+ } |
+ |
+ checkbox = new _Checkbox(checkbox); |
+ } |
+ else |
+ { |
+ checkbox = item; |
+ } |
+ |
+ _CheckboxList._super.prototype.addItem.call(this, checkbox); |
+ |
+ return item; |
+ } |
+ }); |
+ |
+ var _Tree = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_Tree (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Tree._super.apply(this, arguments); |
+ } |
+ ).extend(_Widget, { |
+ /** |
+ * @memberOf jsx.dom.widgets.Tree.prototype |
+ */ |
+ _list: null, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.init() |
+ */ |
+ init: function () { |
+ _Tree._super.prototype.init.call(this); |
+ |
+ if (!this._list) |
+ { |
+ this._list = new _UnorderedList(); |
+ this._list.addItem(new _ListItem()); |
+ } |
+ }, |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @see jsx.dom.widgets.Widget.prototype.update() |
+ */ |
+ update: (function () { |
+ var update = _Tree._super.prototype.update; |
+ |
+ return function () { |
+ update.call(this); |
+ |
+ return this; |
+ }; |
+ }) |
+ }); |
+ |
+ var _Table = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_Table (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Table._super.apply(this, arguments); |
+ } |
+ ).extend(_Widget, { |
+ filterColumns: [], |
+ |
+ /** |
+ * (non-JSdoc) |
+ * @memberOf jsx.dom.widgets.Table.prototype |
+ * @see jsx.dom.widgets.Widget.prototype.init() |
+ */ |
+ init: function () { |
+ _jsx_dom.widgets.Table._super.prototype.init.call(this); |
+ |
+ if (this.addTitles) |
+ { |
+ var id2title = {}; |
+ var rxSpace = /[ \t\n\x0C\r]+/; |
+ |
+ for (var rows = this._target.tBodies[0].rows, i = rows.length; i--;) |
+ { |
+ var row = rows[i]; |
+ for (var cells = row.cells, j = cells.length; j--;) |
+ { |
+ var cell = cells[j]; |
+ var headerIds = cell.headers; |
+ if (headerIds) |
+ { |
+ headerIds = headerIds.split(rxSpace); |
+ var titlePrefixes = []; |
+ |
+ for (var k = 0, len3 = headerIds.length; k < len3; ++k) |
+ { |
+ var headerId = headerIds[k]; |
+ var titlePrefix = id2title[headerId]; |
+ if (!titlePrefix) |
+ { |
+ var header = document.getElementById(headerId); |
+ if (header) |
+ { |
+ titlePrefix = id2title[headerId] = |
+ header.abbr |
+ || header.title |
+ || header.textContent; |
+ } |
+ } |
+ |
+ if (titlePrefix) |
+ { |
+ titlePrefixes.push(titlePrefix); |
+ } |
+ } |
+ |
+ titlePrefixes = titlePrefixes.join("/"); |
+ cell.title = (cell.title |
+ ? titlePrefixes + ": " + cell.title |
+ : titlePrefixes); |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * Filters the rows of the table's first tbody, searching a filter |
+ * string in the filter columns. |
+ * |
+ * @function |
+ */ |
+ applyFilter: (function () { |
+ var _getContent = _jsx_dom.getContent; |
+ |
+ /** |
+ * @param {String} filterString |
+ * The string by which rows should be filtered |
+ * @return {boolean} |
+ * <code>true</code> if the filter could be applied, |
+ * <code>false</code> otherwise. Note that <code>true</code> means only |
+ * that the filter could be applied, not that any rows are filtered out. |
+ */ |
+ function _applyFilter (filterString) |
+ { |
+ /* Imports */ |
+ var _escape = jsx.regexp.escape; |
+ |
+ var filterColumns = this.filterColumns; |
+ |
+ if (!filterColumns || filterColumns.length < 1) |
+ { |
+ return false; |
+ } |
+ |
+ var expressions = []; |
+ |
+ for (var rows = this._target.tBodies[0].rows, i = rows.length; i--;) |
+ { |
+ var row = rows[i]; |
+ row.style.display = "none"; |
+ |
+ for (var j = 0, len = filterColumns.length; j < len; ++j) |
+ { |
+ var column = filterColumns[j]; |
+ |
+ if (!expressions[j]) |
+ { |
+ var srx = (column.prefix ? "^" : "") + filterString; |
+ jsx.tryThis( |
+ function () { |
+ expressions[j] = column.ignoreCase ? new RegExp(srx, "i") : new RegExp(srx); |
+ }, |
+ function (e) { |
+ if (e.name == "SyntaxError") |
+ { |
+ srx = (column.prefix ? "^" : "") + _escape(filterString); |
+ expressions[j] = column.ignoreCase ? new RegExp(srx, "i") : new RegExp(srx); |
+ } |
+ else |
+ { |
+ jsx.rethrowThis(e); |
+ } |
+ }); |
+ } |
+ |
+ if (expressions[j].test(_getContent(row.cells[column.index]))) |
+ { |
+ row.style.display = ""; |
+ break; |
+ } |
+ } |
+ } |
+ |
+ return true; |
+ } |
+ |
+ return _applyFilter; |
+ }()) |
+ }); |
+ |
+ /** |
+ * A <code>Timer</code> widget uses several <code>NumberInput</code> |
+ * widgets to implement a digital timer. |
+ */ |
+ var _Timer=( |
+ /** |
+ * @constructor |
+ * @param {Element} oTarget |
+ * Reference to the DOM object that represents the |
+ * element that provides the client area for the widget. Pass a |
+ * false-value to create a new element. |
+ * @param {Element} oParent |
+ * Reference to the DOM object that represents the parent |
+ * element for this widget. Pass <code>null</code> so that the |
+ * widget will not be automatically attached to the document |
+ * tree. You can call its {@link #appendTo()} method later to |
+ * attach it. |
+ * @param {Object} oProperties |
+ * @base jsx.dom.Widget |
+ * @see NumberWidget |
+ */ |
+ function jsx_dom_widgets_Timer (oTarget, oParent, oProperties) { |
+ jsx_dom_widgets_Timer._super.apply(this, arguments); |
+ } |
+ ).extend(_Container); |
+ |
+ var _InitError = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_widgets_InitError (widgetType) { |
+ jsx_dom_widgets_InitError._super.call(this, widgetType); |
+ } |
+ ).extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.dom.widgets.InitError.prototype |
+ */ |
+ name: "jsx.dom.widgets.InitError" |
+ }); |
+ |
+ return { |
+ /** |
+ * @memberOf jsx.dom.widgets |
+ * @version |
+ */ |
+ version: "$Id$", |
+ |
+ /** |
+ * @namespace |
+ */ |
+ position: { |
+ BEFORE: -1, |
+ AFTER: _AFTER |
+ }, |
+ |
+ Widget: _Widget, |
+ Container: _Container, |
+ |
+ /** |
+ * @function |
+ */ |
+ Section: _Section, |
+ |
+ /** |
+ * @function |
+ */ |
+ Anchor: _Anchor, |
+ |
+ /** |
+ * @function |
+ */ |
+ Label: _Label, |
+ |
+ /** |
+ * @function |
+ */ |
+ TextArea: _TextArea, |
+ |
+ /** |
+ * @function |
+ */ |
+ Checkbox: _Checkbox, |
+ |
+ /** |
+ * @function |
+ */ |
+ Input: _Input, |
+ |
+ /** |
+ * @function |
+ */ |
+ Button: _Button, |
+ |
+ /** |
+ * @function |
+ */ |
+ NumberInput: _NumberInput, |
+ |
+ /** |
+ * Input widget that allows the user to increase or decrease its |
+ * current value |
+ * |
+ * <p>A <code>SpinnerInput</code> is a |
+ * {@link jsx.dom.widgets#NumberInput NumberInput} |
+ * that allows the user to increase or decrease its current value |
+ * with the arrow keys or the attached arrow buttons ("to spin" it). |
+ * It is possible to define a minimum or maximum value.</p> |
+ * |
+ * <p>If buttons are generated by JSX, they are accessible as |
+ * {@link jsx.dom.widgets#Button Button} instances via the |
+ * <code>buttonUp</code> and <code>buttonDown</code> properties |
+ * of the widget, respectively.</p> |
+ * |
+ * @see jsx.dom.widgets#NumberInput |
+ */ |
+ SpinnerInput: _SpinnerInput, |
+ |
+ /** |
+ * @function |
+ */ |
+ ListItem: _ListItem, |
+ |
+ /** |
+ * @function |
+ */ |
+ List: _List, |
+ |
+ /** |
+ * @function |
+ */ |
+ OrderedList: _OrderedList, |
+ |
+ /** |
+ * @function |
+ */ |
+ UnorderedList: _UnorderedList, |
+ |
+ CheckboxList: _CheckboxList, |
+ |
+ /** |
+ * @type function |
+ */ |
+ Tree: _Tree, |
+ |
+ /** |
+ * A <code>Table</code> widget provides a default <code>TABLE</code> |
+ * element object with additional features, such as filtering rows. |
+ */ |
+ Table: _Table, |
+ |
+ /** |
+ * @function |
+ */ |
+ Timer: _Timer, |
+ |
+ /** |
+ * @function |
+ */ |
+ InitError: _InitError |
+ }; |
+}()); |
+ |
+function handleKeypress(e) |
+{ |
+ console.log("e = ", e); |
+ if (e) |
+ { |
+ var t = e._target || e.srcElement; |
+ console.log("t = ", t); |
+ if (t && /^\s*\binput\b\s*$/i.test(t.tagName) |
+ && /^\s*\btext\b\s*$/i.test(t.type)) |
+ { |
+ var keyCode = |
+ (typeof e.which != "undefined" ? e.which |
+ : (typeof e.keyCode != "undefined" ? e.keyCode : 0)); |
+ |
+ /* Allow control characters and numbers only */ |
+ console.log("keyCode = ", keyCode); |
+ if (! (keyCode < 32 || (keyCode >= "0".charCodeAt(0) && keyCode <= "9" |
+ .charCodeAt(0)))) |
+ { |
+ /* W3C DOM */ |
+ if (jsx.object.isMethod(e, "stopPropagation")) |
+ { |
+ e.stopPropagation(); |
+ } |
+ |
+ /* MSHTML DOM */ |
+ if (typeof e.cancelBubble != "undefined") |
+ { |
+ e.cancelBubble = true; |
+ } |
+ |
+ /* W3C DOM */ |
+ /* |
+ * Order is important for Firefox 2: cancelBubble exists after |
+ * preventDefault() and changes DOM behavior (event is NOT |
+ * canceled then if cancelBubble is assigned `true') |
+ */ |
+ if (jsx.object.isMethod(e, "preventDefault")) |
+ { |
+ e.preventDefault(); |
+ } |
+ else |
+ { |
+ e.returnValue = false; |
+ } |
+ |
+ /* DEBUG */ |
+ // console.log(e); |
+ } |
+ } |
+ } |
+} |
\ No newline at end of file |
/live/dom/widgets.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/ani.js |
=================================================================== |
--- live/dom/ani.js (nonexistent) |
+++ live/dom/ani.js (revision 520) |
@@ -0,0 +1,1225 @@ |
+"use strict"; |
+/** |
+ * @author PointedEars |
+ * @requires dom.js |
+ * @requires dom/css.js |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+/** |
+ * Retrieves an {@link Array} element as if by the expression |
+ * <code><var>a</var>.slice(<var>index</var>, |
+ * <var>index</var> + 1)[0]</code>. |
+ * |
+ * If <var>index</var> is negative, its absolute is counted |
+ * from the end of <var>a</var>. |
+ * |
+ * @param {Array} a |
+ * @param {Number} index |
+ * @return {any} |
+ */ |
+Array.get = function (a, index) { |
+ if (isNaN(index)) |
+ { |
+ jsx.throwThis("jsx.InvalidArgumentError", ["", |
+ "(" + typeof a + ", " + typeof index + ")", |
+ "(object[Array], number)"]); |
+ } |
+ |
+ index = +index; |
+ |
+ if (index >= 0) |
+ { |
+ return a[index]; |
+ } |
+ |
+ return a[a.length + index]; |
+}; |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.dom.animation = (/** @constructor */ function () { |
+ /* Imports */ |
+ var _jsx = jsx; |
+ var _jsx_object = _jsx.object; |
+ var _getKeys = _jsx_object.getKeys; |
+ var _getProperty = _jsx_object.getProperty; |
+ var _jsx_dom = _jsx.dom; |
+ var _jsx_dom_css = _jsx_dom.css; |
+ var _Color = _jsx_dom_css.Color; |
+ var _types = _jsx_dom_css.types; |
+ |
+ /** |
+ * @type jsx.dom.animation.NoTimelineError |
+ * @function |
+ */ |
+ var _NoTimelineError = ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_animation_NoTimelineError () { |
+ jsx_dom_animation_NoTimelineError._super.call( |
+ this, "Need at least one Timeline for an Animation"); |
+ } |
+ ).extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.dom.animation.NoTimelineError.prototype |
+ */ |
+ name: "jsx.dom.animation.NoTimelineError" |
+ }); |
+ |
+ /** |
+ * Built-in interpolator that provides linear time interpolation. |
+ * |
+ * @function |
+ */ |
+ var _interpolator_LINEAR = (function () { |
+ var _isInstanceOf = _jsx_object.isInstanceOf; |
+ |
+ /** |
+ * @param startValue |
+ * @param endValue |
+ * @param {Number} fraction |
+ * @return |
+ * <var>startValue</var> |
+ * + (<var>endValue</var> − <var>startValue</var>) |
+ * × <var>fraction</var> |
+ */ |
+ function jsx_dom_animation_interpolator_LINEAR |
+ (startValue, endValue, fraction) { |
+ if (_isInstanceOf(startValue, _Color) |
+ && _isInstanceOf(endValue, _Color)) |
+ { |
+ return new _Color( |
+ startValue.red + (endValue.red - startValue.red) * fraction, |
+ startValue.green + (endValue.green - startValue.green) * fraction, |
+ startValue.blue + (endValue.blue - startValue.blue) * fraction, |
+ startValue.opacity + (endValue.opacity - startValue.opacity) * fraction |
+ ); |
+ } |
+ |
+ return startValue + (endValue - startValue) * fraction; |
+ } |
+ |
+ return jsx_dom_animation_interpolator_LINEAR; |
+ }()); |
+ |
+ var keyFrameComparator = function (a, b) { |
+ return a.compareTo(b); |
+ }; |
+ |
+ var _MIN_TIMEOUT = 10; |
+ var _MIN_FRAME_LENGTH = _MIN_TIMEOUT + 1; |
+ |
+ /** |
+ * A <code>Timeline</code> consists of {@link #KeyFrame KeyFrames} |
+ * and can have subordered timelines ("child timelines"). Unless |
+ * specified otherwise, the time offset of an item in one timeline |
+ * depends on the previous item in that timeline. |
+ * |
+ * <pre> |
+ * Timeline: ---Action0------Action1------Action2-----Action3-> |
+ * </pre> |
+ * <p> |
+ * A <code>Timeline</code> may be standalone or part an |
+ * {@link #Animation}, specified by the <code>Animation</code>'s |
+ * <code>timelines</code> property, which allows it to be played |
+ * parallel to other timelines: |
+ * </p> |
+ * <pre> |
+ * Animation ---. |
+ * Timeline 1: :--Action0------Action1------Action2-----Action3-> |
+ * Timeline 2: `----------Action0------Action1-------Action2----> |
+ * </pre> |
+ * <p> |
+ * An item in a timeline can also be a <code>Timeline</code> itself |
+ * ("child timeline"), in which case the time offset of the child |
+ * timeline depends on the previous action in the parent timeline, |
+ * however the time offset of the next action in the parent is |
+ * independent of the child. |
+ * In that case, the child timeline affects the same target object |
+ * as its parent unless specified otherwise. |
+ * </p> |
+ * <pre> |
+ * Animation ---. |
+ * Timeline 1: :---Action0------+----------Action1a-------------> |
+ * Timeline 1a: | `---Action1a:0---Action1a:1-----> |
+ * Timeline 2: `-------Action0------Action1-------Action2-------> |
+ * </pre> |
+ * <p> |
+ * There is no explicit limit as to how deep timelines may be nested. |
+ * However, for playing the frames of the animation each timeline's |
+ * play() method must call the play() method of its child timelines. |
+ * As a result, nesting depth is limited implicitly by the available |
+ * stack space or limits imposed by the ECMAScript implementation, |
+ * whichever comes first. Further, the more timelines are nested, |
+ * the more operations need be performed at approximately the same |
+ * time; this can slow down the entire animation considerably and |
+ * lead to considerably higher CPU load. |
+ * </p> |
+ * @type jsx.dom.animation.Timeline |
+ */ |
+ var _Timeline = jsx.object.extend( |
+ /** |
+ * @constructor |
+ * @param {Object} oParams |
+ * @throws jsx.InvalidArgumentError if no parameters were specified |
+ */ |
+ function jsx_dom_animation_Timeline (oParams) { |
+ if (!oParams) |
+ { |
+ jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Not enough arguments", typeof oParams, "Object"]); |
+ } |
+ |
+ var uid = (new Date()).getTime(); |
+ this.id = uid; |
+ |
+ _jsx_object.defineProperties(this, { |
+ currentRate: { |
+ get: function () { |
+ return this.getCurrentRate(); |
+ } |
+ }, |
+ |
+ frameRate: { |
+ get: function () { |
+ return this.getFrameRate(); |
+ }, |
+ |
+ set: function (frameRate) { |
+ return this.setFrameRate(frameRate); |
+ } |
+ }, |
+ |
+ id: { |
+ value: uid |
+ } |
+ }, "jsx.dom.animation.Timelime"); |
+ |
+ for (var param in this) |
+ { |
+ var paramValue = oParams[param]; |
+ |
+ if (typeof paramValue != "undefined") |
+ { |
+ if (param == "frameLength" && paramValue < 11) |
+ { |
+ paramValue = 11; |
+ jsx.warn("Normalizing frameLength to 11"); |
+ } |
+ |
+ this[param] = paramValue; |
+ } |
+ } |
+ |
+ /* Sort keyFrames by time */ |
+ var keyFrames = this.keyFrames; |
+ var duration = Array.get(keyFrames, -1).time; |
+ |
+ /* Compute keyframe times that are percentages of the duration */ |
+ var rxTimePercentage = /^\s*\+?(\d+|\d*\.\d+)\s*%\s*$/; |
+ for (var i = 0, len = keyFrames.length; i < len; ++i) |
+ { |
+ var keyFrame = keyFrames[i]; |
+ |
+ if (!(keyFrame instanceof _Frame)) |
+ { |
+ keyFrame = new _KeyFrame(keyFrame); |
+ keyFrames[i] = keyFrame; |
+ } |
+ |
+ keyFrame._timeline = this; |
+ |
+// if (len < keyFrames.length - 1) |
+// { |
+ var time = keyFrame.time; |
+ if (typeof time == "string") |
+ { |
+ var match = time.match(rxTimePercentage); |
+ if (match) |
+ { |
+ keyFrame.time = Math.floor(duration * (match[1] / 100)); |
+ } |
+ } |
+// } |
+ } |
+ |
+ keyFrames.sort(keyFrameComparator); |
+ |
+// if (this.autoReverse) |
+// { |
+// if (keyFrames.length > 0) |
+// { |
+// /* Add mirrored keyframes */ |
+// var lastKeyFrame = Array.get(keyFrames, -1); |
+// for (var i = keyFrames.length - 2; i > -1; --i) |
+// { |
+// var keyFrameToClone = keyFrames[i]; |
+// var keyFrameClone = jsx_object.clone( |
+// jsx_object.COPY_ENUM_DEEP, keyFrameToClone); |
+// keyFrameClone.time = |
+// 2 * lastKeyFrame.time - keyFrameToClone.time; |
+// keyFrames.push(keyFrameClone); |
+// } |
+// } |
+// } |
+ }, |
+ { |
+ INDEFINITE: Number.POSITIVE_INFINITY, |
+ MIN_TIMEOUT: _MIN_TIMEOUT, |
+ MIN_FRAME_LENGTH: _MIN_FRAME_LENGTH, |
+ |
+ /** |
+ * Sets the <code>position</code> property of the target |
+ * so that it can be animated. |
+ * |
+ * Sets the <code>position</code> property of the target |
+ * to <code>relative</code> if it has been declated to be |
+ * <code>static</code> or not declared at all. |
+ * |
+ * @function |
+ */ |
+ _setPosition: (function () { |
+ var _getComputedStyle = jsx.dom.css.getComputedStyle; |
+ |
+ /** |
+ * @param {Element} target |
+ */ |
+ function jsx_dom_animation_Timeline_setPosition (target) |
+ { |
+ if (_getComputedStyle(target, null, "position") == "static") |
+ { |
+ target.style.position = "relative"; |
+ } |
+ } |
+ |
+ return jsx_dom_animation_Timeline_setPosition; |
+ }()) |
+ }).extend(null, { |
+ /** |
+ * @memberOf jsx.dom.animation.Timeline.prototype |
+ * @type Object |
+ */ |
+ target: null, |
+ |
+ /** |
+ * @type Array[#KeyFrame] |
+ */ |
+ keyFrames: [], |
+ |
+ /** |
+ * Defines whether this animation reverses direction on |
+ * alternating cycles. |
+ * |
+ * If <code>true</code>, the animation will proceed forward |
+ * on the first cycle, then* reverses on the second cycle, |
+ * and so on. Otherwise, animation will loop such that each |
+ * cycle proceeds forward from the initial {@link #KeyFrame}. |
+ */ |
+ autoReverse: false, |
+ |
+ /** |
+ * Length of a frame in milliseconds (ms). The default value |
+ * is MIN_FRAME_LENGTH so that frames at 0 ms normalized |
+ * to MIN_TIMEOUT are played before the second frame. |
+ */ |
+ frameLength: _MIN_FRAME_LENGTH, |
+ |
+ /** |
+ * If <code>true</code> (default), native (CSS3) animations |
+ * are preferred. Overridden by the <code>preferNative</code> |
+ * property of an enclosing {@link #Animation}. |
+ */ |
+ preferNative: true, |
+ |
+ /** |
+ * Defines the number of cycles in this animation. The |
+ * repeatCount may be <code>INDEFINITE</code> for animations |
+ * that repeat indefinitely, but must otherwise be >e; 0. |
+ */ |
+ repeatCount: 1, |
+ |
+ /** |
+ * Indicates the current direction/speed at which the |
+ * <code>Timeline</code> is being played, in frames per second. |
+ * |
+ * @return {Number} |
+ */ |
+ getCurrentRate: function () { |
+ return (this._playing) ? this.getFrameRate() : 0.0; |
+ }, |
+ |
+ /** |
+ * Indicates the total duration of this <code>Timeline</code>, |
+ * including repeats. A <code>Timeline</code> with a |
+ * <code>repeatCount</code> of <code>Timeline.INDEFINITE</code> |
+ * will have a <code>totalDuration</code> of |
+ * <code>Duration.INDEFINITE</code>. |
+ * |
+ * @return {Number} |
+ */ |
+ getTotalDuration: function () { |
+ return Array.get(this.keyFrames, -1).time |
+ * (this.autoReverse ? 2 : 1) * this.repeatCount; |
+ }, |
+ |
+ /** |
+ * Retrieves the maximum frame rate at which this |
+ * <code>Timeline</code> will play, in frames per second. |
+ * |
+ * @return {Number} |
+ */ |
+ getFrameRate: function () { |
+ return 1000 / this.frameLength; |
+ }, |
+ |
+ /** |
+ * Sets the maximum frame rate at which this |
+ * <code>Timeline</code> will play, in frames per second. |
+ * |
+ * This can be used, for example, to keep particularly complex |
+ * <code>Timelines</code> from over-consuming system resources. |
+ * By default a <code>Timeline</code>'s frame rate is not |
+ * explicitly limited, meaning the <code>Timeline</code> will |
+ * play at an optimal frame rate for the underlying platform. |
+ * |
+ * @param {Number} frameRate |
+ * The maximum frame rate at which this <code>Timeline</code> |
+ * will play, in frames per second. Frame rates above 90 fps |
+ * that result in a frame length shorter than 11 ms are |
+ * normalized. |
+ * @return {Number} |
+ * The effective maximum frame rate, in frames per second |
+ */ |
+ setFrameRate: function (frameRate) { |
+ if (this._playing) |
+ { |
+ jsx.info("Cannot change frame rate while playing"); |
+ return false; |
+ } |
+ |
+ /* |
+ * NOTE: Rounding down the frame length up and number of frames |
+ * should help with odd frame lengths/times; frame length not |
+ * rounded down (faster) to avoid animtion stall. |
+ */ |
+ var frameLength = Math.ceil(1000 / frameRate); |
+ if (frameLength < _Timeline.MIN_FRAME_LENGTH) |
+ { |
+ jsx.info("Requested frame rate of " + frameRate |
+ + " fps (frame length of " + frameLength + " ms)" |
+ + " was normalized to ca. " |
+ + (1000 / _Timeline.MIN_FRAME_LENGTH) + " fps" |
+ + " (" + _Timeline.MIN_FRAME_LENGTH + " ms)"); |
+ frameLength = _Timeline.MIN_FRAME_LENGTH; |
+ } |
+ |
+ this.frameLength = frameLength; |
+ |
+ return frameLength; |
+ }, |
+ |
+ /** |
+ * Instructs the <code>Timeline</code> to evaluate all |
+ * <code>KeyValue.value</code>s in the <code>Timeline</code>. |
+ * |
+ * @function |
+ */ |
+ evaluateKeyValues: function () { |
+ var keyFrames = this.keyFrames; |
+ |
+ for (var i = 1, len = keyFrames.length; i < len; ++i) |
+ { |
+ var nextValues = keyFrames[i].values; |
+ var previousValues = keyFrames[i - 1].values; |
+ |
+ for (var propertyName in nextValues) |
+ { |
+ var newPropertyValue = nextValues[propertyName]; |
+ var oldPropertyValue = previousValues[propertyName]; |
+ |
+ if (propertyName == "style") |
+ { |
+ /* Compute the original values if not given */ |
+ for (var stylePropertyName in newPropertyValue) |
+ { |
+ var oldStylePropertyValue = oldPropertyValue[stylePropertyName]; |
+ if (typeof oldStylePropertyValue == "undefined") |
+ { |
+ oldStylePropertyValue = _jsx_dom_css.getComputedStyle( |
+ this.target, null, stylePropertyName); |
+ } |
+ |
+ var propertyType = _getProperty( |
+ _jsx_dom_css.propertyInfo, stylePropertyName, |
+ {type: null}).type; |
+ switch (propertyType) |
+ { |
+ case _types.LENGTH: |
+ if (isNaN(oldStylePropertyValue)) |
+ { |
+ oldStylePropertyValue = parseFloat(oldStylePropertyValue); |
+ |
+ if (isNaN(oldStylePropertyValue)) |
+ { |
+ switch (stylePropertyName) |
+ { |
+ case "width": |
+ oldStylePropertyValue = this.target.offsetWidth; |
+ break; |
+ |
+ case "height": |
+ oldStylePropertyValue = this.target.offsetHeight; |
+ break; |
+ } |
+ } |
+ } |
+ break; |
+ |
+ case _types.COLOR: |
+ if (!_jsx_object.isInstanceOf(oldStylePropertyValue, _Color)) |
+ { |
+ oldStylePropertyValue = new _Color(oldStylePropertyValue); |
+ } |
+ break; |
+ } |
+ |
+ if (typeof oldPropertyValue[stylePropertyName] == "undefined") |
+ { |
+ oldPropertyValue[stylePropertyName] = oldStylePropertyValue; |
+ } |
+ } |
+ |
+ /* |
+ * Set the old style value if the new one was not given. |
+ * NOTE: Objects are _not_ cloned here, but this |
+ * should not matter. |
+ */ |
+ for (stylePropertyName in oldPropertyValue) |
+ { |
+ if (typeof newPropertyValue[stylePropertyName] == "undefined") |
+ { |
+ newPropertyValue[stylePropertyName] = |
+ oldPropertyValue[stylePropertyName]; |
+ } |
+ } |
+ } |
+ else |
+ { |
+ if (typeof oldPropertyValue == "undefined") |
+ { |
+ previousValues[propertyName] = this.target[propertyName]; |
+ } |
+ } |
+ } |
+ |
+ /* Set old value if the new one was not given */ |
+ for (var propertyName in previousValues) |
+ { |
+ if (typeof nextValues[propertyName] == "undefined") |
+ { |
+ nextValues[propertyName] = oldPropertyValue[propertyName]; |
+ } |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * Returns the name of the CSS property for native animation. |
+ * |
+ * @function |
+ */ |
+ _getNativeProperty: (function () { |
+ var _camelize = jsx.dom.css.camelize; |
+ |
+ /** |
+ * @return {string} |
+ * Returns the first CSS property available for native |
+ * animation, preferring the unprefixed name, or |
+ * the empty string if no such property is available. |
+ */ |
+ function _getNativeProperty () |
+ { |
+ var result = ""; |
+ var cssPropertyNames = [ |
+ "animation-name", |
+ "-moz-animation-name", |
+ "-webkit-animation-name" |
+ ]; |
+ var style = this.target.style; |
+ |
+ for (var i = 0, len = cssPropertyNames.length; i < len; ++i) |
+ { |
+ var cssPropertyName = cssPropertyNames[i]; |
+ var propertyName = _camelize(cssPropertyName); |
+ if (typeof style[propertyName] != "undefined") |
+ { |
+ return cssPropertyName; |
+ } |
+ } |
+ |
+ return result; |
+ } |
+ |
+ return _getNativeProperty; |
+ }()), |
+ |
+ /** |
+ * Defines a native (CSS3) animation |
+ * |
+ * @param {String} animationPropertyName |
+ * Name of the animation property, with optional |
+ * vendor-specific prefix. |
+ * @returns {Boolean} |
+ * <code>true</code> if the definition is successful, |
+ * <code>false</code> otherwise. |
+ */ |
+ _playNative: function (animationNameProperty) { |
+ var target = this.target; |
+ var timelineId = this.id; |
+ if (typeof target.id == "undefined") |
+ { |
+ target.id = "timeline-" + timelineId + "-target"; |
+ } |
+ |
+ var targetId = target.id; |
+ |
+ _Timeline._setPosition(target); |
+ |
+ /* FIXME: Reset _here_ has no effect */ |
+ var styleId = "jsx-style-" + timelineId; |
+ var style = document.getElementById(styleId); |
+ if (style) |
+ { |
+ style.parentNode.removeChild(style); |
+ } |
+ |
+ style = document.createElement("style"); |
+ style.type = "text/css"; |
+ style.id = styleId; |
+ var prefix = (animationNameProperty.match(/^-[^-]+/) || [""])[0]; |
+ if (prefix) |
+ { |
+ prefix += "-"; |
+ } |
+ |
+ style.appendChild(document.createTextNode([ |
+ "@" + prefix + "keyframes jsx-timeline-" + timelineId + " {", |
+ this.keyFrames.join("\n"), |
+ "}", |
+ "#" + targetId + " {", |
+ " " + animationNameProperty + ": jsx-timeline-" + timelineId + ";", |
+ " " + prefix + "animation-duration: " |
+ + Array.get(this.keyFrames, -1).time + "ms;", |
+ " " + prefix + "animation-fill-mode: forwards;", |
+ " " + prefix + "animation-timing-function: linear;", |
+ "}" |
+ ].join("\n"))); |
+ |
+ var head = document.head || document.getElementsByTagName("head")[0]; |
+ head.appendChild(style); |
+ |
+ return true; |
+ }, |
+ |
+ /** |
+ * Plays this <code>Timeline</code> |
+ * |
+ * @function |
+ */ |
+ play: (function () { |
+ var |
+ getPropertySetter = function (target, values, bDontPlay, oTimeline) { |
+ function _propertySetter () |
+ { |
+ var setToRelative = false; |
+ |
+ for (var property in values) |
+ { |
+ if (property == "style") |
+ { |
+ var style = values.style; |
+ for (var styleProperty in style) |
+ { |
+ var thisPropertyInfo = _jsx_dom_css.propertyInfo[styleProperty]; |
+ if (thisPropertyInfo && thisPropertyInfo.type == _types.LENGTH) |
+ { |
+ if (!setToRelative && typeof style.position == "undefined") |
+ { |
+ _Timeline._setPosition(target); |
+ setToRelative = true; |
+ } |
+ |
+ _jsx_dom_css.setStyleProperty( |
+ target, styleProperty, style[styleProperty] + "px"); |
+ } |
+ else |
+ { |
+ _jsx_dom_css.setStyleProperty( |
+ target, styleProperty, style[styleProperty]); |
+ } |
+ } |
+ } |
+ else |
+ { |
+ target[property] = values[property]; |
+ } |
+ } |
+ |
+ if (bDontPlay) |
+ { |
+ oTimeline._playing = false; |
+ } |
+ } |
+ |
+ return _propertySetter; |
+ }; |
+ |
+ function jsx_animation_Timeline_play () |
+ { |
+ /* First clear all remaining timeouts */ |
+ this.stop(); |
+ |
+ if (this.preferNative) |
+ { |
+ var nativeProperty = this._getNativeProperty(); |
+ if (nativeProperty) |
+ { |
+ return this._playNative(nativeProperty); |
+ } |
+ } |
+ |
+ if (!this._keyValuesEvaluated) |
+ { |
+ this.evaluateKeyValues(); |
+ this._keyValuesEvaluated = true; |
+ } |
+ |
+ /* Fix frame length to be integer and long enough */ |
+ this.setFrameRate(this.getFrameRate()); |
+ var dt = this.frameLength; |
+ |
+ this._playing = true; |
+ |
+ for (var i = 1, len = this.keyFrames.length; i < len; ++i) |
+ { |
+ var nextKeyFrame = this.keyFrames[i]; |
+ var previousKeyFrame = this.keyFrames[i - 1]; |
+ var previousValues = previousKeyFrame.values; |
+ var nextValues = nextKeyFrame.values; |
+ |
+ /* Display the previous keyframe, then play the tween */ |
+ |
+ /* |
+ * NOTE: Rounding the frame length up (see above) and the number |
+ * of frames down should help with odd frame lengths/times; |
+ * frame length not rounded down (faster) to avoid animation stall. |
+ */ |
+ var numFrames = Math.floor( |
+ (nextKeyFrame.time - previousKeyFrame.time) / dt); |
+ |
+ var frameValues = _jsx_object.clone( |
+ _jsx_object.COPY_ENUM_DEEP, previousValues); |
+ var t = previousKeyFrame.time; |
+ |
+ var lastFrameIndex = numFrames - 1; |
+ for (var currentFrameIndex = 0; |
+ currentFrameIndex < lastFrameIndex; |
+ ++currentFrameIndex) |
+ { |
+ for (var property in frameValues) |
+ { |
+ var interpolate = nextKeyFrame.interpolate; |
+ if (property == "style") |
+ { |
+ var previousStyle = previousValues.style; |
+ var frameStyle = frameValues.style; |
+ var nextStyle = nextValues.style; |
+ |
+ for (var styleProperty in frameStyle) |
+ { |
+ interpolate = nextKeyFrame.interpolate; |
+ var nextStyleValue = nextStyle[styleProperty]; |
+ if (_jsx_object.isInstanceOf(nextStyleValue, _KeyValue)) |
+ { |
+ nextStyleValue = nextStyleValue.value; |
+ interpolate = nextStyleValue.interpolate; |
+ } |
+ |
+ frameStyle[styleProperty] = interpolate( |
+ previousStyle[styleProperty], |
+ nextStyleValue, |
+ currentFrameIndex / numFrames); |
+ } |
+ } |
+ else |
+ { |
+ var nextValue = nextValues[property]; |
+ |
+ if (_jsx_object.isInstanceOf(nextValue, _KeyValue)) |
+ { |
+ nextValue = nextValue.value; |
+ interpolate = nextValue.interpolate; |
+ } |
+ |
+ frameValues[property] = interpolate( |
+ previousValues[property], |
+ nextValue, |
+ currentFrameIndex / numFrames); |
+ } |
+ } |
+ |
+ this._timeouts.push( |
+ window.setTimeout( |
+ getPropertySetter(this.target, |
+ _jsx_object.clone(_jsx_object.COPY_ENUM_DEEP, frameValues), |
+ false, this), |
+ t)); |
+ |
+ t += dt; |
+ } |
+ |
+ /* Display the last keyframe */ |
+ if (i == this.keyFrames.length - 1) |
+ { |
+ this._timeouts.push( |
+ window.setTimeout( |
+ getPropertySetter(this.target, nextValues, true, this), |
+ t)); |
+ } |
+ } |
+ } |
+ |
+ return jsx_animation_Timeline_play; |
+ }()), |
+ |
+ /** |
+ * Prevents the <code>Timeline</code> from continuing to play. |
+ */ |
+ stop: function () { |
+ var timeouts = this._timeouts; |
+ for (var i = 0, len = timeouts && timeouts.length; i < len; ++i) |
+ { |
+ window.clearTimeout(timeouts[i]); |
+ } |
+ |
+ /** |
+ * @private |
+ */ |
+ this._timeouts = []; |
+ } |
+ }); |
+ |
+ /** |
+ * A <code>Frame</code> defines target values at a specified point |
+ * in time for a set of properties of the target object of |
+ * a {@link #Timeline Timeline}. |
+ * |
+ * <p> |
+ * This type is usually used only internally to compute the frames |
+ * between a set of given {@link #KeyFrame KeyFrame}s. |
+ * </p><p> |
+ * By contrast to <code>KeyFrame</code>s, inserting a |
+ * <code>Frame</code> into a <code>Timeline</code> does not cause |
+ * computation of additional <code>Frame</code>s with regard to |
+ * adjacent <code>Keyframe</code>s. You can do so if you need |
+ * full control over the <code>Timeline</code>, for example |
+ * if you want an object to "jump" from one screen area to a |
+ * more distant one instead of producing a gradual change of |
+ * its coordinates, or if you want to use a set of |
+ * <code>Frame</code>s or <code>Frame</code>-compatible objects |
+ * that are the result of computation by another framework. |
+ * </p> |
+ * |
+ * @type jsx.dom.animation.Frame |
+ */ |
+ var _Frame = ( |
+ /** |
+ * @constructor |
+ * @param {Object} oParams |
+ * @throws jsx.InvalidArgumentError if no parameters were specified |
+ */ |
+ function (oParams) { |
+ if (!oParams) |
+ { |
+ jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Not enough arguments", typeof oParams, "Object"]); |
+ } |
+ |
+ var keys = _getKeys(oParams); |
+ for (var i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var paramName = keys[i]; |
+ var param = oParams[paramName]; |
+ |
+ if (typeof param != "undefined") |
+ { |
+ if (paramName == "time" && typeof param != "number") |
+ { |
+ /* |
+ * Convert duration to milliseconds |
+ */ |
+ var rxTime = /^\s*\+?(\d+|\d*\.\d+)\s*(ms|s|m(in)?|h|%)\s*$/; |
+ var match = param.match(rxTime); |
+ if (match) |
+ { |
+ /* |
+ * NOTE: Percentages are supported but can only |
+ * be resolved later in jsx.dom.animation.Timeline(). |
+ */ |
+ switch (match[2]) |
+ { |
+ case "ms": |
+ param = +match[1]; |
+ break; |
+ |
+ case "s": |
+ param = +match[1] * 1000; |
+ break; |
+ |
+ case "m": |
+ case "min": |
+ param = +match[1] * 60000; |
+ break; |
+ |
+ case "h": |
+ param = +match[1] * 3600000; |
+ break; |
+ } |
+ } |
+ else |
+ { |
+ return jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Invalid time", "'" + param + "'", |
+ "one matching " + rxTime.source]); |
+ } |
+ } |
+ |
+ this[paramName] = param; |
+ } |
+ } |
+ } |
+ ).extend(null, { |
+ /** |
+ * @memberOf jsx.dom.animation.Frame.prototype |
+ */ |
+ time: 0, |
+ values: {} |
+ }); |
+ |
+ /** |
+ * A <code>KeyFrame</code> is a special {@link #Frame Frame} that |
+ * defines target values at a specified point in time for a set |
+ * of properties that are interpolated along a {@link #Timeline}. |
+ * |
+ * The developer controls the interpolation of a set of properties |
+ * for the interval between successive key frames by providing |
+ * a target value and an {@link #interpolator} associated with |
+ * each property, or that of the KeyFrame itself which is used |
+ * for all properties defined for the <code>KeyFrame</code> unless |
+ * specified otherwise. The properties are interpolated such that |
+ * they will reach their target value at the specified time. |
+ * An <var>action</var> function is invoked on each |
+ * <code>KeyFrame</code> if one is specified. |
+ * |
+ * @type jsx.dom.animation.KeyFrame |
+ */ |
+ var _KeyFrame = ( |
+ /** |
+ * @constructor |
+ * @param oParams |
+ * @throws jsx.InvalidArgumentError if no parameters were specified |
+ */ |
+ function jsx_dom_animation_KeyFrame (oParams) { |
+ jsx_dom_animation_KeyFrame._super.call(this, oParams); |
+ } |
+ ).extend(_Frame, { |
+ /** |
+ * A comparison function used to sort <code>KeyFrames</code> |
+ * by their specified reference time. |
+ * |
+ * @memberOf jsx.dom.animation.KeyFrame.prototype |
+ * @param {KeyFrame} targetFrame |
+ * @return {number} |
+ * An integer value <var>i</var> where |
+ * <ul> |
+ * <li><var>i</var> > 0 if <var>targetFrame</var>'s |
+ * timing is ahead of this one's</li> |
+ * <li><var>i</var> = 0 if they have the same timing</li> |
+ * <li><var>i</var> < 0 if <var>targetFrame</var>'s |
+ * timing is behind this one's</li> |
+ * </ul> |
+ */ |
+ compareTo: function (targetFrame) { |
+ return this.time - targetFrame.time; |
+ }, |
+ |
+ /** |
+ * {@link #interpolator} to be used for calculating the |
+ * key values along the particular interval. By default, |
+ * {@link #interpolator.LINEAR} is used. |
+ */ |
+ interpolate: _interpolator_LINEAR, |
+ |
+ toString: function () { |
+ var style = this.values.style; |
+ var keys = _getKeys(style); |
+ var aValues = []; |
+ for (var i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var stylePropertyName = keys[i]; |
+ var propertyValue = style[stylePropertyName]; |
+ |
+ var propertyType = _getProperty( |
+ _jsx_dom_css.propertyInfo, stylePropertyName, {type: null}).type; |
+ switch (propertyType) |
+ { |
+ case _types.LENGTH: |
+ propertyValue += "px"; |
+ break; |
+ } |
+ |
+ var cssPropertyName = _jsx_dom_css.uncamelize(stylePropertyName); |
+ |
+ aValues.push(" " + cssPropertyName + ": " + propertyValue + ";"); |
+ } |
+ |
+ var time = this.time + "ms"; |
+ if (this._timeline) |
+ { |
+ time = (this.time / Array.get(this._timeline.keyFrames, -1).time * 100) |
+ + "%"; |
+ } |
+ |
+ return " " + time + " {\n" |
+ + aValues.join("\n") |
+ + "\n }"; |
+ } |
+ }); |
+ |
+ /** |
+ * @type jsx.dom.animation.KeyValue |
+ */ |
+ var _KeyValue = ( |
+ /** |
+ * @constructor |
+ * @param {Object} oParams |
+ */ |
+ function (oParams) { |
+ if (!oParams) |
+ { |
+ jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Not enough arguments", typeof oParams, "Object"]); |
+ } |
+ |
+ for (var paramName in this) |
+ { |
+ var param = oParams[paramName]; |
+ if (typeof param != "undefined") |
+ { |
+ this[paramName] = param; |
+ } |
+ } |
+ } |
+ ).extend(null, { |
+ /** |
+ * {@link #interpolator} to be used for calculating the |
+ * key value along the particular interval. By default, |
+ * {@link #interpolator.LINEAR} is used. |
+ * |
+ * @memberOf jsx.dom.animation.KeyValue.prototype |
+ */ |
+ interpolate: _interpolator_LINEAR, |
+ |
+ value: null |
+ }); |
+ |
+ return { |
+ /** |
+ * @memberOf jsx.dom.animation |
+ */ |
+ version: "0.1.$Revision$", |
+ |
+ NoTimelineError: _NoTimelineError, |
+ |
+ /** |
+ * An <code>Animation</code> is a set of one or more |
+ * {@link #Timeline Timelines} being played in parallel |
+ * when the animation is played. Each <code>Timeline</code> |
+ * is supposed to animate another target object (but that |
+ * is not required). |
+ * |
+ * @type jsx.dom.animation.Animation |
+ */ |
+ Animation: ( |
+ /** |
+ * @constructor |
+ * @param {Object} oParams |
+ * The parameters of this animation. Supported parameters, |
+ * to be specified as properties of <var>oParams</var>, |
+ * include: |
+ * <dl> |
+ * <dt><code><var>target</var> : Object</code></dt> |
+ * <dd>Reference specifying the object to animate. |
+ * If specified, the timelines of this animation |
+ * automatically inherit its target; if not specified |
+ * for the animation, each timeline of an animation |
+ * MUST specify its target.</dd> |
+ * <dt><code><var>timelines</var> : Array</code></dt> |
+ * <dd>{@link #Timeline Timelines} of this animation |
+ * (required)</dd> |
+ * </dl> |
+ * @throws jsx.InvalidArgumentError if no parameters were specified |
+ */ |
+ function jsx_dom_animation_Animation (oParams) { |
+ if (!oParams) |
+ { |
+ jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Not enough arguments", typeof oParams, "Object"]); |
+ } |
+ |
+ for (var param in this) |
+ { |
+ if (typeof oParams[param] != "undefined") |
+ { |
+ this[param] = oParams[param]; |
+ } |
+ } |
+ |
+ var timelines = this.timelines; |
+ for (var i = timelines.length; i--;) |
+ { |
+ var timeline = timelines[i]; |
+ |
+ if (timeline.constructor != _Timeline) |
+ { |
+ timeline = new _Timeline(timeline); |
+ timelines[i] = timeline; |
+ } |
+ |
+ timeline.preferNative = this.preferNative; |
+ |
+ if (!timeline.target) |
+ { |
+ timeline.target = this.target; |
+ } |
+ } |
+ } |
+ ).extend(null, { |
+ /** |
+ * If <code>true</code> (default), native (CSS3) animations |
+ * are preferred. Overridden by the <code>preferNative</code> |
+ * property of an enclosing {@link #Animation}. |
+ * |
+ * @memberOf jsx.dom.animation.Animation.prototype |
+ */ |
+ preferNative: true, |
+ |
+ /** |
+ * @type Object |
+ */ |
+ target: null, |
+ timelines: [], |
+ |
+ /** |
+ * Plays the animation by playing all of its |
+ * {@link #Timeline Timelines}. |
+ * |
+ * @throws #NoTimelineError |
+ * if no <code>Timelines</code> have been defined |
+ */ |
+ play: function () { |
+ var timelines = this.timelines; |
+ if (!timelines || timelines.length < 1) |
+ { |
+ jsx.throwThis(_NoTimelineError); |
+ } |
+ |
+ for (var i = 0, len = timelines.length; i < len; ++i) |
+ { |
+ timelines[i].play(); |
+ } |
+ }, |
+ |
+ /** |
+ * Stops the animation by stopping all of its |
+ * {@link #Timeline Timelines}. |
+ * |
+ * @throws #NoTimelineError |
+ * if no <code>Timelines</code> have been defined |
+ */ |
+ stop: function () { |
+ var timelines = this.timelines; |
+ if (!timelines || timelines.length < 1) |
+ { |
+ jsx.throwThis(_NoTimelineError); |
+ } |
+ |
+ for (var i = 0, len = timelines.length; i < len; ++i) |
+ { |
+ timelines[i].stop(); |
+ } |
+ } |
+ }), |
+ |
+ /** |
+ * @type jsx.dom.animation.NoKeyFramesError |
+ * @todo currently unused |
+ */ |
+ NoKeyFramesError: ( |
+ /** |
+ * @constructor |
+ */ |
+ function jsx_dom_animation_NoKeyFramesError () { |
+ jsx_dom_animation_NoKeyFramesError._super.call( |
+ this, "Need at least two KeyFrames in a Timeline"); |
+ } |
+ ).extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.dom.animation.NoKeyFramesError.prototype |
+ */ |
+ name: "jsx.dom.animation.NoKeyFramesError" |
+ }), |
+ |
+ Timeline: _Timeline, |
+ Frame: _Frame, |
+ |
+ /** |
+ * Namespace for a set of functions that take a |
+ * <var>startValue</var> and an <var>endValue</var> together |
+ * with a <var>fraction</var> between 0.0 and 1.0, and return |
+ * a value that corresponds to the <var>fraction</var> with |
+ * regard to <var>startValue</var> and <var>endValue</var>. |
+ * |
+ * The purpose of those functions is to define how time |
+ * (represented as a 0.0 to 1.0 fraction of the duration |
+ * of an animation) is altered to derive different value |
+ * calculations during an animation. |
+ * |
+ * @namespace |
+ */ |
+ interpolator: { |
+ LINEAR: _interpolator_LINEAR |
+ }, |
+ |
+ KeyFrame: _KeyFrame, |
+ KeyValue: _KeyValue |
+ }; |
+}()); |
\ No newline at end of file |
/live/dom/ani.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/dom/forms.js |
=================================================================== |
--- live/dom/forms.js (nonexistent) |
+++ live/dom/forms.js (revision 520) |
@@ -0,0 +1,464 @@ |
+/** |
+ * <title>PointedEars' DOM Library: Forms</title> |
+ * @version $Id$ |
+ * @requires dom.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2004-2011, 2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * Sets the <code>value</code> property of an <code>HTMLInputElement</code> |
+ * object, and its <code>title</code> property accordingly if specified. |
+ * |
+ * @author |
+ * (C) 2004 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLInputElement} oInput |
+ * Required. Reference to an HTMLInputElement object. |
+ * @param {string} sValue |
+ * New value of the <code>value</code> property of the |
+ * HTMLInputElement object. |
+ * @param {boolean} bSetTitle = false |
+ * Specifies if the <code>title</code> property should be set to |
+ * the same value as the <code>value</code> property. The default |
+ * is <code>false</code>. |
+ * @return {boolean} |
+ * If <var>bSetTitle</var> evaluates to <code>false</code> |
+ * or omitted: |
+ * |
+ * <code>true</code> if the <code>value</code> property could be set |
+ * properly, <code>false</code> otherwise. |
+ * |
+ * If <var>bSetTitle</var> is <code>true</code>: |
+ * |
+ * <code>true</code> if <em>both</em> the <code>value</code> and |
+ * <code>title</code> properties could be set properly, |
+ * <code>false</code> otherwise. |
+ */ |
+jsx.dom.setValue = function(oInput, sValue, bSetTitle) { |
+ if (oInput && typeof oInput.value != "undefined") |
+ { |
+ oInput.value = sValue; |
+ if (bSetTitle && typeof oInput.title != "undefined") |
+ { |
+ oInput.title = sValue; |
+ return (oInput.value == sValue && oInput.title == sValue); |
+ } |
+ return (oInput.value == sValue); |
+ } |
+ |
+ return false; |
+}; |
+ |
+/** |
+ * Retrieves the checked radio button of a radio button group. |
+ * |
+ * @author |
+ * Copyright (C) 2004, 2007 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLFormElement} oForm |
+ * Required. Reference to an HTMLFormElement object to contain |
+ * the radio button group. |
+ * @param {string} sGroup |
+ * Name of the radio button group from which the |
+ * checked radio button should be retrieved. |
+ * @return {Object|boolean|HTMLInputElement} |
+ * <code>null</code> if <var>oForm</var> is invalid or there is no such |
+ * <var>sGroup</var>; |
+ * <code>false</code> if no radio button of <var>sGroup</var> is checked; |
+ * a reference to the checked radio button otherwise |
+ */ |
+jsx.dom.getCheckedRadio = function(oForm, sGroup) { |
+ var result = null, e, ig; |
+ if (oForm && (e = oForm.elements) && (ig = e[sGroup])) |
+ { |
+ result = false; |
+ for (var i = ig.length; i--;) |
+ { |
+ if (ig[i].checked) |
+ { |
+ result = ig[i]; |
+ break; |
+ } |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Removes all options from a HTMLSelectElement object. |
+ * |
+ * @author |
+ * (C) 2003 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLSelectElement} oSelect |
+ * Reference to a HTMLSelectElement object. |
+ * @param {boolean} bAllowReload |
+ * If <code>true</code>, reloads the document. |
+ * @return {boolean} |
+ * <code>true</code> if successful, <code>false</code> |
+ * otherwise. |
+ */ |
+jsx.dom.removeOptions = function(oSelect, bAllowReload) { |
+ if (oSelect |
+ && oSelect.tagName |
+ && oSelect.tagName.toLowerCase() == "select") |
+ { |
+ var o = oSelect.options; |
+ if (o && o.length > 0) |
+ { |
+ /* shortcut if "length" property is not read-only */ |
+ o.length = 0; |
+ while (o.length > 0) |
+ { |
+ if (jsx.object.isMethod(o, "remove")) |
+ { |
+ o.remove(o.length - 1); |
+ } |
+ else |
+ { |
+ o[o.length - 1] = null; |
+ if (bAllowReload) |
+ { |
+ history.go(0); |
+ } |
+ } |
+ } |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+}; |
+ |
+/** |
+ * Adds an option to an HTMLSelectElement object. |
+ * |
+ * @author |
+ * (C) 2003, 2012 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLSelectElement} oSelect |
+ * Required reference to an HTMLSelectElement object. |
+ * @param {string} sText |
+ * Required text of the new HTMLOptionElement object. |
+ * @param {string} sValue (optional) |
+ * Optional value of the new HTMLOptionElement object. |
+ * @return {Option|HTMLOptionElement} |
+ * A reference to the new option if successful, |
+ * <code>null</code> otherwise. |
+ */ |
+jsx.dom.addOption = function (oSelect, sText, sValue) { |
+ if (!(oSelect |
+ && oSelect.tagName |
+ && typeof oSelect.tagName == "string" |
+ && oSelect.tagName.toLowerCase |
+ && oSelect.tagName.toLowerCase() == "select" |
+ && oSelect.options)) |
+ { |
+ return null; |
+ } |
+ |
+ var oNew = new Option(sText, (arguments.length < 3) ? "" : sValue); |
+ |
+ var o = oSelect.options; |
+ o[o.length] = oNew; |
+ |
+ return oNew; |
+}; |
+ |
+/** |
+ * Select a radio button depending on its value and, optionally, |
+ * its name. |
+ * |
+ * @author |
+ * (C) 2003 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLFormElement} oForm |
+ * Reference to the <code>HTMLFormElement</code> object |
+ * which contains the <code>HTMLInputElement</code> object. |
+ * @param aName |
+ * Name of the radio button, i.e. the value of the |
+ * <code>name</code> attribute of the respective |
+ * <code>input</code> (X)HTML element or the value |
+ * of the <code>name</code> property of the respective |
+ * <code>HTMLInputElement</code> object. Use an expression |
+ * that is evaluated to <code>false</code> for the argument |
+ * to be ignored. |
+ * @param {string} sValue |
+ * Value of the radio button, i.e. the value of the |
+ * <code>value</code> attribute of the respective |
+ * <code>input</code> (X)HTML element or the value |
+ * of the <code>value</code> property of the respective |
+ * <code>HTMLInputElement</code> object. |
+ */ |
+jsx.dom.selectRadioBtn = function(oForm, aName, sValue) { |
+ for (var i = 0; i < oForm.elements.length; i++) |
+ { |
+ var curEl = oForm.elements[i]; |
+ |
+ if (!curEl.disabled |
+ && curEl.type == "radio" |
+ && (!sName || curEl.name == sName) |
+ && curEl.value == sValue) |
+ { |
+ curEl.checked = true; |
+ } |
+ } |
+}; |
+ |
+/** |
+ * Disables a form element or a collection of form elements. |
+ * |
+ * @author |
+ * (C) 2003, 2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLElement|HTML(Options)Collection} oElementGroup |
+ * Reference to the <code>HTMLElement</code> or to |
+ * the <code>HTML(Options)Collection</code> object. |
+ * @param {Number|String} index (optional) |
+ * Optional number or string to specify |
+ * one element within the collection. |
+ */ |
+jsx.dom.disableElementGroup = function(oElementGroup, index) { |
+ if (oElementGroup) |
+ { |
+ if (oElementGroup[index] |
+ && typeof oElementGroup[index].disabled != "undefined") |
+ { |
+ oElementGroup[index].disabled = true; |
+ } |
+ else if (typeof oElementGroup.disabled != "undefined") |
+ { |
+ oElementGroup.disabled = true; |
+ } |
+ } |
+}; |
+ |
+/** |
+ * Disables or enables form controls by name/ID. |
+ * |
+ * @param {HTMLFormElement} oForm |
+ * Reference to the <code>form</code> element object. |
+ * @params String|HTMLElement |
+ * Names/IDs of the elements or references |
+ * to the element objects to disable/enable. |
+ * @param {boolean} bDisable (optional) |
+ * If <code>false</code>, elements will be |
+ * enabled, otherwise disabled. |
+ */ |
+jsx.dom.disableElements = function(oForm) { |
+ if (oForm) |
+ { |
+ var len = arguments.length - 1, bDisable = arguments[len]; |
+ if (bDisable && typeof bDisable == "boolean") |
+ { |
+ len = arguments.length - 2; |
+ } |
+ |
+ for (var i = 1; i < len; i++) |
+ { |
+ var a = arguments[i], o; |
+ if (typeof a != "object") |
+ { |
+ o = oForm.elements[a]; |
+ } |
+ else |
+ { |
+ o = a; |
+ } |
+ |
+ var len2; |
+ if (typeof o.disabled != "undefined") |
+ { |
+ o.disabled = bDisable; |
+ } |
+ else if (typeof (len2 = o.length) != "undefined") |
+ { |
+ for (var j = len2; j--; 0) |
+ { |
+ var o2; |
+ if (typeof (o2 = o[j]).disabled != "undefined") |
+ { |
+ o2.disabled = bDisable; |
+ } |
+ } |
+ } |
+ } |
+ } |
+}; |
+ |
+/** |
+ * @function |
+ */ |
+jsx.dom.serializeForm = (function() { |
+ var _getFeature = jsx.object.getFeature; |
+ var |
+ rxSubmit = /(^|\s)(submit|image)(\s|$)/i, |
+ rxSelect = /(^|\s)(select(-one)?|undefined)(\s|$)/i, |
+ rxFileReset = /^\s*(file|reset)\s*$/i, |
+ rxObject = /^\s*object\s*$/i; |
+ |
+ /** |
+ * @param {HTMLFormElement} form |
+ * @param {HTMLInputElement} submitButton (optional) |
+ * Reference to the submit button that should be successful. |
+ * By default, only the first submit button is successful. |
+ * @return {string} |
+ * The serialization of this form |
+ */ |
+ return function(form, submitButton) { |
+ /** |
+ * @param {HTMLSelectElement|HTMLInputElement|HTMLTextAreaElement|HTMLButtonElement} control |
+ */ |
+ function serializeControl(control) |
+ { |
+ /* HTML 4.01: Controls that are disabled cannot be successful. */ |
+ if (control.disabled) |
+ { |
+ return; |
+ } |
+ |
+ /* |
+ * If a form contains more than one submit button, |
+ * only the activated submit button is successful. |
+ * (here: the first one or the specified one) |
+ */ |
+ var isSubmit = rxSubmit.test(control.type); |
+ if ((!gotSubmit && !submitButton || control != submitButton) || !isSubmit) |
+ { |
+ if (isSubmit) |
+ { |
+ gotSubmit = true; |
+ } |
+ |
+ /* |
+ * For menus, the control name is provided by a SELECT element |
+ * and values are provided by OPTION elements. Only selected |
+ * options may be successful. When no options are selected, |
+ * the control is not successful and neither the name nor any |
+ * values are submitted to the server when the form is submitted. |
+ */ |
+ var m = rxSelect.exec(control.type); |
+ if (m) |
+ { |
+ /* select-one */ |
+ if (m[3]) |
+ { |
+ if (control.selectedIndex > -1) |
+ { |
+ /* |
+ * MSHTML 6 is buggy with <option>foo</option>; |
+ * always provide a `value' attribute! |
+ */ |
+ items.add(control.name, control.options[control.selectedIndex].value); |
+ } |
+ } |
+ |
+ /* select */ |
+ else if (m[2]) |
+ { |
+ for (var i = 0, opts = control.options, len = opts && opts.length; i < len; i++) |
+ { |
+ var opt = opts[i]; |
+ if (opt.selected) |
+ { |
+ /* |
+ * MSHTML 6 is buggy with <option>foo</option>; |
+ * always provide a `value' attribute! |
+ */ |
+ items.add(control.name, opt.value); |
+ } |
+ } |
+ } |
+ } |
+ |
+ /* |
+ * All "on" checkboxes may be successful. |
+ * For radio buttons that share the same value of the |
+ * name attribute, only the "on" radio button may be successful. |
+ */ |
+ else if (!rxFileReset.test(control.type) |
+ && !(rxObject.test(control.tagName) && control.declare) |
+ && !/^\s*(checkbox|radio)\s*$/i.test(control.type) |
+ || control.checked) |
+ { |
+ items.add(control.name, control.value); |
+ } |
+ } |
+ } |
+ |
+ var es = _getFeature(form, "elements"); |
+ if (!es) |
+ { |
+ return ""; |
+ } |
+ |
+ var items = []; |
+ |
+ items.add = function(sName, sValue) { |
+ var s = encodeURIComponent(sName) + "=" + encodeURIComponent(sValue); |
+ this.push(s); |
+ }; |
+ |
+ if (!jsx.object.isMethod(items, "push")) |
+ { |
+ items.push = function() { |
+ for (var i = 0, len = arguments.length; i < len; i++) |
+ { |
+ this[this.length] = arguments[i]; |
+ } |
+ }; |
+ } |
+ |
+ var gotSubmit = false; |
+ |
+ for (var i = 0, len = es.length; i < len; i++) |
+ { |
+ var e = es[i]; |
+ |
+ /* |
+ * Elements with the same name create a NodeList object, |
+ * however options of select objects are also indexable in Gecko. |
+ */ |
+ if (typeof e[0] != "undefined" && typeof e.options == "undefined") |
+ { |
+ for (var j = 0, len2 = e.length; j < len2; j++) |
+ { |
+ serializeControl(e[j]); |
+ } |
+ } |
+ else |
+ { |
+ serializeControl(e); |
+ } |
+ } |
+ |
+ return items.join("&"); |
+ }; |
+})(); |
\ No newline at end of file |
/live/dom/forms.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/geocoding.js |
=================================================================== |
--- live/dom/geocoding.js (nonexistent) |
+++ live/dom/geocoding.js (revision 520) |
@@ -0,0 +1,257 @@ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ * @type jsx.dom.geocoding |
+ */ |
+jsx.dom.geocoding = { |
+ /** |
+ * @function |
+ */ |
+ Geocoder: (/** @constructor */ function () { |
+ /* stub */ |
+ }).extend(null, { |
+ /** |
+ * @memberOf jsx.dom.geocoding.Geocoder#prototype |
+ * @param {GeocoderRequest} request |
+ * @param {Callable(Array[GeocoderResult], GeocoderStatus)} callback |
+ */ |
+ geocode: function (request, callback) { |
+ /* stub */ |
+ } |
+ }), |
+ |
+ /** |
+ * @constructor |
+ * @property {string} street |
+ * @property {string} zip |
+ * @property {string} place |
+ * @property {string} region |
+ * @property {string} country |
+ * @property {number} latitude |
+ * @property {number} longitude |
+ */ |
+ GeocodingInput: function (properties) { |
+ jsx.object.extend(this, properties); |
+ }, |
+ |
+ /** |
+ * @namespace |
+ */ |
+ GeocoderStatus: { |
+ /** |
+ * There was a problem contacting the geocoding service. |
+ */ |
+ ERROR: "ERROR", |
+ |
+ /** |
+ * This GeocoderRequest was invalid. |
+ */ |
+ INVALID_REQUEST: "INVALID_REQUEST", |
+ |
+ /** |
+ * The response contains a valid GeocoderResponse. |
+ */ |
+ OK: "OK", |
+ |
+ /** |
+ * The client application has gone over the requests limit |
+ * in too short a period of time. |
+ */ |
+ OVER_QUERY_LIMIT: "OVER_QUERY_LIMIT", |
+ |
+ /** |
+ * The client application is not allowed to use the geocoder. |
+ */ |
+ REQUEST_DENIED: "REQUEST_DENIED", |
+ |
+ /** |
+ * A geocoding request could not be processed due to a |
+ * server error. The request may succeed if you try again. |
+ */ |
+ UNKNOWN_ERROR: "UNKNOWN_ERROR", |
+ |
+ /** |
+ * No result was found for this GeocoderRequest. |
+ */ |
+ ZERO_RESULTS: "ZERO_RESULTS", |
+ |
+ setProperties: function (source) { |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ var keys = jsx.object.getKeys(this); |
+ for (var i = keys.length; i--;) |
+ { |
+ var key = keys[i]; |
+ if (_hasOwnProperty(this, key) && typeof this[key] != "function") |
+ { |
+ this[key] = source[key]; |
+ } |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * @constructor |
+ * @property {boolean} continueFromLast = false |
+ * @property {boolean} dontOverwrite = false |
+ * @property {Callable(Array[GeocodingInput], int)} onbeforecode = null |
+ * @property {Callable(Array[GeocodingInput], int)} onaftercode = null |
+ * @property {Callable(Array[GeocodingInput])} oncomplete = null |
+ * @property {Callable(Array[GeocodingInput], GeocoderStatus)} onerror = null |
+ * @property {int} timeout |
+ */ |
+ GeocodingOptions: function (properties) { |
+ jsx.object.extend(this, properties); |
+ }, |
+ |
+ /** |
+ * @function |
+ */ |
+ geocode: (function () { |
+ var _runAsync = jsx.object.getFeature(jsx, "dom", "timeout", "runAsync"); |
+ var haveWarned = false; |
+ var lastData = null; |
+ var lastIndex = -1; |
+ |
+ /** |
+ * @param {Geocoder} geocoder |
+ * @param {Array[GeocodingInput]} data |
+ * @param {GeocodingOptions} options |
+ * @param {int} index = 0 |
+ * Start index |
+ * @return {boolean} |
+ */ |
+ return function _geocode (geocoder, data, options, index) { |
+ function runNext (quick) |
+ { |
+ if (!_runAsync && !haveWarned) |
+ { |
+ jsx.warn( |
+ "You should provide jsx.dom.timeout.runAsync" |
+ + "in order to avoid server hammering"); |
+ haveWarned = true; |
+ } |
+ |
+ (_runAsync || function (f) { f(); })( |
+ function () { |
+ _geocode(geocoder, data, options, index + 1); |
+ }, |
+ quick ? null : (options.timeout || 200) |
+ ); |
+ } |
+ |
+ if (!options) |
+ { |
+ options = {}; |
+ } |
+ |
+ if (!index) |
+ { |
+ if (data != lastData || lastIndex < 0) |
+ { |
+ index = 0; |
+ } |
+ else if (options.continueFromLast) |
+ { |
+ index = lastIndex + 1; |
+ } |
+ } |
+ |
+ if (index >= data.length) |
+ { |
+ return false; |
+ } |
+ |
+ lastData = data; |
+ lastIndex = index; |
+ |
+ var location = data[index]; |
+ |
+ var street = location.street; |
+ var zip = location.zip; |
+ var place = location.place; |
+ var region = location.region; |
+ var country = location.country; |
+ var address = (street || "") |
+ + (zip ? (street ? ", " : "") + zip : "") |
+ + (place ? ((street && !zip) ? ", " : " ") + place : "") |
+ + (region ? ((street || zip || place) ? ", " : "") + region : "") |
+ + (country ? ((street || zip || place || region) ? ", " : "") + country : ""); |
+ |
+ if (location.latitude !== null |
+ && location.longitude !== null |
+ && options.dontOverwrite) |
+ { |
+ jsx.info('Ignoring already geocoded "' + address + '"'); |
+ runNext(true); |
+ return true; |
+ } |
+ |
+ var GeocoderStatus = jsx.dom.geocoding.GeocoderStatus; |
+ if (options.statusPropertySource) |
+ { |
+ GeocoderStatus.setProperties(options.statusPropertySource); |
+ } |
+ |
+ if (typeof options.onbeforecode == "function") |
+ { |
+ options.onbeforecode(data, index); |
+ } |
+ |
+ jsx.info("jsx.dom.geocoding.geocode: " + address); |
+ |
+ geocoder.geocode( |
+ { |
+ 'address': address |
+ }, |
+ function (results, status) { |
+ switch (status) |
+ { |
+ case GeocoderStatus.OK: |
+ var loc = results[0].geometry.location; |
+ location.latitude = String(loc.lat()); |
+ location.longitude = String(loc.lng()); |
+ |
+ if (typeof options.onaftercode == "function") |
+ { |
+ options.onaftercode(data, index); |
+ } |
+ |
+ if (index < data.length - 1) |
+ { |
+ runNext(); |
+ } |
+ else if (typeof options.oncomplete == "function") |
+ { |
+ options.oncomplete(data); |
+ } |
+ break; |
+ |
+ default: |
+ if (typeof options.onerror == "function") |
+ { |
+ return options.onerror(data, index, status); |
+ } |
+ break; |
+ } |
+ } |
+ ); |
+ |
+ return true; |
+ }; |
+ }()) |
+}; |
\ No newline at end of file |
/live/dom/geocoding.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/compat.js |
=================================================================== |
--- live/dom/compat.js (nonexistent) |
+++ live/dom/compat.js (revision 520) |
@@ -0,0 +1,5 @@ |
+var dhtml = jsx.dom; |
+var getElem = jsx.dom.getElem; |
+var setCont = jsx.dom.setCont; |
+jsx.dom.css.removeClassName = jsx.dom.removeClassName; |
+jsx.dom.css.addClassName = jsx.dom.addClassName; |
\ No newline at end of file |
/live/dom/compat.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/css.js |
=================================================================== |
--- live/dom/css.js (nonexistent) |
+++ live/dom/css.js (revision 520) |
@@ -0,0 +1,1234 @@ |
+/** |
+ * <title>PointedEars' DOM Library: CSS</title> |
+ * @version $Id$ |
+ * @requires dom.js |
+ * @recommends collection.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2005-2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ if (typeof jsx.importFrom == "function") |
+ { |
+ jsx.importFrom(jsx.absPath("../dom.js", jsx.importFrom.lastImport)); |
+ } |
+ else |
+ { |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+ } |
+} |
+ |
+/* for JSDT only */ |
+/** |
+ * @namespace |
+ */ |
+jsx.dom.css = {}; |
+ |
+/** |
+ * @type jsx.dom.css |
+ * @memberOf __jsx.dom.css |
+ * @namespace |
+ */ |
+jsx.dom.css = (/** @constructor */ function () { |
+ var _jsx_object = jsx.object; |
+ |
+ var _LENGTH = 1; |
+ var _COLOR = 5; |
+ var _FLOAT = 7; |
+ var _TRANSFORM = 8; |
+ |
+ return { |
+ /** |
+ * @memberOf jsx.dom.css |
+ */ |
+ version: "0.1.$Revision$", |
+ |
+ /** |
+ * Supported CSS data types. Properties include: |
+ * <dl> |
+ * <dt><code>NUMBER</code></dt> |
+ * <dd></dd> |
+ * |
+ * <dt><code>LENGTH</code></dt> |
+ * <dd></dd> |
+ * |
+ * <dt><code>PERCENTAGE</code></dt> |
+ * <dd></dd> |
+ * |
+ * <dt><code>URI</code></dt> |
+ * <dd>Uniform Resource Identifier or URI-reference (see RFC 3986), |
+ * enclosed in <code>url(…)</code></dd> |
+ * |
+ * <dt><code>COUNTER</code></dt> |
+ * <dd>CSS counter</dd> |
+ * |
+ * <dt><code>COLOR</code></dt> |
+ * <dd>Color in RGB(A) or HSV format</dd> |
+ * |
+ * <dt><code>STRING</code></dt> |
+ * <dd>Unicode string</dd> |
+ * </dl> |
+ * |
+ * @namespace |
+ */ |
+ types: { |
+ /** |
+ * Numeric scalar value |
+ */ |
+ NUMBER: 0, |
+ |
+ /** |
+ * Length given relative in <code>em</code> (width of the |
+ * M square) or <code>ex</code> (height of the x square), |
+ * or absolute in <code>in</code> (inches), <code>cm</code> |
+ * (centimeters), <code>mm</code> (millimeters), <code>pt</code> |
+ * (points), <code>pc</code> (picas), or <code>px</code> |
+ * (pixels). |
+ */ |
+ LENGTH: _LENGTH, |
+ |
+ /** |
+ * Length given in percentage of the parent |
+ */ |
+ PERCENTAGE: 2, |
+ |
+ /** |
+ * Uniform Resource Identifier or URI-reference (see RFC 3986), |
+ * enclosed in <code>url(…)</code>. |
+ */ |
+ URI: 3, |
+ |
+ /** |
+ * CSS counter |
+ */ |
+ COUNTER: 4, |
+ |
+ /** |
+ * Color given in RGB(A) or HSV format |
+ */ |
+ COLOR: _COLOR, |
+ |
+ /** |
+ * String of Unicode characters |
+ */ |
+ STRING: 6, |
+ |
+ /** |
+ * List of transformations |
+ */ |
+ FLOAT: _FLOAT, |
+ |
+ /** |
+ * List of transformations |
+ */ |
+ TRANSFORM: _TRANSFORM |
+ }, |
+ |
+ prefixedProperties: { |
+ transition: true, |
+ animation: true |
+ }, |
+ |
+ /** |
+ * Property name prefixes |
+ */ |
+ prefixes: { |
+ camelized: ["Moz", "Ms", "O", "Webkit", ""], |
+ uncamelized: ["-moz-", "-ms-", "-o-", "-webkit-", ""] |
+ }, |
+ |
+ /** |
+ * Provides information about the type of a CSS property and its relation |
+ * to other CSS properties |
+ * |
+ * @namespace |
+ */ |
+ propertyInfo: { |
+ "float": { |
+ type: _FLOAT, |
+ aliases: ["cssFloat", "styleFloat"] |
+ }, |
+ left: { |
+ type: _LENGTH, |
+ correspondsTo: "top" |
+ }, |
+ top: { |
+ type: _LENGTH, |
+ correspondsTo: "left" |
+ }, |
+ right: { |
+ type: _LENGTH, |
+ correspondsTo: "bottom" |
+ }, |
+ bottom: { |
+ type: _LENGTH, |
+ correspondsTo: "right" |
+ }, |
+ width: { |
+ type: _LENGTH, |
+ correspondsTo: "height" |
+ }, |
+ height: { |
+ type: _LENGTH, |
+ correspondsTo: "width" |
+ }, |
+ color: { |
+ type: _COLOR |
+ }, |
+ |
+ /* FIXME */ |
+ backgroundColor: { |
+ type: _COLOR |
+ }, |
+ "background-color": { |
+ type: _COLOR |
+ }, |
+ |
+ transform: { |
+ type: _TRANSFORM |
+ } |
+ }, |
+ |
+ /** |
+ * @function |
+ */ |
+ camelize: (function () { |
+ if (typeof jsx.map != "undefined" && typeof jsx.map.Map == "function") |
+ { |
+ var cache = new jsx.map.Map(); |
+ } |
+ else |
+ { |
+ var prefix = " ", suffix = ""; |
+ |
+ cache = _jsx_object.getDataObject(); |
+ cache.get = function (s) { |
+ return _jsx_object.getProperty(this, prefix + s + suffix, false); |
+ }; |
+ |
+ cache.put = function (s, v) { |
+ this[prefix + s + suffix] = v; |
+ }; |
+ } |
+ |
+ function f (match, p1) |
+ { |
+ return p1.toUpperCase(); |
+ } |
+ |
+ var rxHyphenated = /-([a-z])/gi; |
+ |
+ /** |
+ * @param {String} sProperty |
+ * @return {string} |
+ * <var>sProperty</var> with all hyphen-minuses followed by an |
+ * ASCII letter replaced by the letter's uppercase counterpart |
+ */ |
+ return function (sProperty) { |
+ var p; |
+ if ((p = cache.get(sProperty, false))) |
+ { |
+ return p; |
+ } |
+ |
+ var s2 = sProperty.replace(rxHyphenated, f); |
+ cache.put(sProperty, s2); |
+ return s2; |
+ }; |
+ })(), |
+ |
+ /** |
+ * @function |
+ */ |
+ uncamelize: (function () { |
+ if (typeof jsx.map != "undefined" && typeof jsx.map.Map == "function") |
+ { |
+ var cache = new jsx.map.Map(); |
+ } |
+ else |
+ { |
+ var prefix = " ", suffix = ""; |
+ |
+ cache = _jsx_object.getDataObject(); |
+ cache.get = function (s) { |
+ return _jsx_object.getProperty(this, prefix + s + suffix, false); |
+ }; |
+ |
+ cache.put = function (s, v) { |
+ this[prefix + s + suffix] = v; |
+ }; |
+ } |
+ |
+ function f (match) |
+ { |
+ return "-" + match.toLowerCase(); |
+ } |
+ |
+ var rxUppercase = /[A-Z]/g; |
+ |
+ /** |
+ * @param {String} sProperty |
+ * @return {string} |
+ * <var>sProperty</var> with all capital ASCII letters replaced |
+ * by the letter's lowercase counterpart, and preceded by a |
+ * hyphen-minus. |
+ */ |
+ return function (sProperty) { |
+ var p; |
+ if ((p = cache.get(sProperty, false))) |
+ { |
+ return p; |
+ } |
+ |
+ var s2 = sProperty.replace(rxUppercase, f); |
+ cache.put(sProperty, s2); |
+ return s2; |
+ }; |
+ })(), |
+ |
+ /** |
+ * Returns the computed style of an {@link Element} or the |
+ * computed value of an <code>Element</code>'s style property. |
+ * |
+ * @function |
+ */ |
+ getComputedStyle: (function () { |
+ var _isMethod = _jsx_object.isMethod; |
+ var _defaultView; |
+ |
+ /** |
+ * @param {Element} oElement |
+ * Element for which the computed style should be retrieved. |
+ * @param {string} sPseudoEl |
+ * The name of the pseudo-element, such as ":first-child". |
+ * Use <code>null</code> (default) for the element itself. |
+ * @param {string} sProperty |
+ * The property name in CSS or script syntax (names are mapped |
+ * automatically according to the feature used). If not passed |
+ * or empty, the entire computed style is returned. |
+ * @return {CSSStyleDeclaration|currentStyle|string|null} |
+ * The return value depends on both the passed arguments |
+ * and the capabilities of the user agent: |
+ * |
+ * If the UA supports either ViewCSS::getComputedStyle() |
+ * from W3C DOM Level 2 CSS or MSHTML's currentStyle |
+ * property, then |
+ * a) if <var>sProperty</var> was passed, the value of the |
+ * CSS property with name <var>sProperty</vr> is returned; |
+ * it is a string if the property is supported; |
+ * b) if <var>cssProperty</var> was not passed, the corresponding |
+ * style object is returned |
+ * |
+ * However, MSHTML's currentStyle does not support pseudo-elements. |
+ * If you attempt to retrieve pseudo-element's computed style, |
+ * <code>null</code> is returned (without error). |
+ * |
+ * If the UA supports neither of the above, <code>null</code> |
+ * is returned. |
+ */ |
+ function _getComputedStyle (oElement, sPseudoEl, sProperty) |
+ { |
+ var computedStyle; |
+ |
+ if (_isMethod(document, "defaultView", "getComputedStyle") |
+ && (typeof _defaultView != "undefined" || (_defaultView = document.defaultView))) |
+ { |
+ computedStyle = _defaultView.getComputedStyle(oElement, sPseudoEl || null); |
+ } |
+ else |
+ { |
+ if (sPseudoEl) |
+ { |
+ return null; |
+ } |
+ |
+ computedStyle = obj.currentStyle; |
+ } |
+ |
+ if (typeof computedStyle != "undefined") |
+ { |
+ if (!sProperty) |
+ { |
+ return computedStyle; |
+ } |
+ |
+ return jsx.dom.css.getStyleProperty({style: computedStyle}, sProperty); |
+ } |
+ |
+ return null; |
+ } |
+ |
+ return _getComputedStyle; |
+ }()) |
+ }; |
+})(); |
+ |
+/** |
+ * Retrieves the value of a style property of an {@link Element}. |
+ * |
+ * @author |
+ * (C) 2005, 2013 Thomas Lahn <js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/dom/css.js |
+ */ |
+jsx.dom.css.getStyleProperty = (function () { |
+ var _isHostMethod = jsx.object.isHostMethod; |
+ var _camelize = jsx.dom.css.camelize; |
+ var _uncamelize = jsx.dom.css.uncamelize; |
+ |
+ var _prefixedProperties = jsx.dom.css.prefixedProperties; |
+ var _prefixes = jsx.dom.css.prefixes; |
+ var _propertyInfo = jsx.dom.css.propertyInfo; |
+ |
+ /** |
+ * @param {Element} oElement |
+ * Reference to the element object whose style is to be retrieved. |
+ * @param {String} sPropertyName |
+ * Name of the style property whose value is to be retrieved. |
+ * Both camelCased and dash-property names are supported. |
+ * Mapping to supported prefix properties is done automatically, |
+ * i. e. <code>"transition"</code> would cause |
+ * <code>"-webkit-transition"</code> to be retrieved if |
+ * the former but not <code>"transition"</code> was available. |
+ * If the <code>style</code> property is available on the element, |
+ * the faster property-accessor approach is attempted first, |
+ * then the slower setProperty() call. |
+ * Otherwise <code>"visibility"</code> is used instead |
+ * (fallback for the NN4 DOM). |
+ * @return {string|null} |
+ * <code>null</code> if no matching object exists or if the |
+ * DOM does not provide for retrieval of the property value. |
+ */ |
+ function _getStyleProperty (oElement, sPropertyName) |
+ { |
+ if (oElement) |
+ { |
+ /* TODO: Needed for NN4 DOM as well? */ |
+ var camelized_name = _camelize(sPropertyName); |
+ |
+ if (typeof oElement.style != "undefined") |
+ { |
+ var style = oElement.style; |
+ |
+ var thisPropertyInfo = _propertyInfo[camelized_name]; |
+ var thisAliases = thisPropertyInfo && thisPropertyInfo.aliases; |
+ if (thisAliases) |
+ { |
+ for (var i = thisAliases.length; i--;) |
+ { |
+ var alias = thisAliases[i]; |
+ if (typeof style[alias] != "undefined") |
+ { |
+ return style[alias]; |
+ } |
+ } |
+ |
+ return null; |
+ } |
+ |
+ if (_prefixedProperties[sPropertyName]) |
+ { |
+ for (i = _prefixes.camelized.length; i--;) |
+ { |
+ var prefix = _prefixes.camelized[i]; |
+ var prefixed_name = (prefix |
+ ? prefix |
+ + camelized_name.charAt(0).toUpperCase() |
+ + camelized_name.substring(1) |
+ : camelized_name); |
+ if (typeof style[prefixed_name] != "undefined") |
+ { |
+ return style[prefixed_name]; |
+ } |
+ } |
+ |
+ return null; |
+ } |
+ |
+ if (typeof style[camelized_name] != "undefined") |
+ { |
+ return style[camelized_name]; |
+ } |
+ |
+ /* If the quick, backwards-compatible method failed for some reason */ |
+ if (_isHostMethod(style, "getPropertyValue")) |
+ { |
+ var uncamelized_name = _uncamelize(sPropertyName); |
+ |
+ /* NOTE: Works because of no dash-properties in _prefixedProperties */ |
+ if (_prefixedProperties[sPropertyName]) |
+ { |
+ for (i = _prefixes.uncamelized.length; i--;) |
+ { |
+ var value = style.getPropertyValue( |
+ _prefixes.uncamelized[i] + uncamelized_name); |
+ if (value) |
+ { |
+ return value; |
+ } |
+ } |
+ |
+ return null; |
+ } |
+ |
+ return style.getPropertyValue(uncamelized_name); |
+ } |
+ } |
+ else |
+ { |
+ if (camelized_name == "display") |
+ { |
+ camelized_name = "visibility"; |
+ } |
+ |
+ if (typeof oElement[camelized_name] != "undefined") |
+ { |
+ return oElement[camelized_name]; |
+ } |
+ } |
+ } |
+ |
+ return null; |
+ } |
+ |
+ return _getStyleProperty; |
+}()); |
+ |
+/** |
+ * Determines whether an {@link Element} has a style property. |
+ * |
+ * @author |
+ * (C) 2006 Thomas Lahn <js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/dom/css.js |
+ * @param {HTMLElement} oElement |
+ * Reference to the element object which style property is to be retrieved. |
+ * @param {string} sPropertyName |
+ * Name of the style property which is to be checked. |
+ * If "display", and there is no |
+ * <code>style[<var>sPropertyName</var>]</code> property, |
+ * "visibility" is used instead (fallback for the NN4 DOM). |
+ * @return {boolean} |
+ * <code>false</code> if no matching object exists or if the |
+ * DOM does not provide for retrieval of the property value; |
+ * <code>true</code> otherwise. |
+ */ |
+jsx.dom.hasStyleProperty = function (oElement, sPropertyName) { |
+ return (jsx.dom.css.getStyleProperty(oElement, sPropertyName) != null); |
+}; |
+ |
+/** |
+ * Sets the value of a style property of an {@link Element}. |
+ * |
+ * @function |
+ * @author |
+ * (C) 2003-2013 Thomas Lahn <js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/dom/css.js |
+ */ |
+jsx.dom.css.setStyleProperty = (function () { |
+ var _isHostMethod = jsx.object.isHostMethod; |
+ var _camelize = jsx.dom.css.camelize; |
+ var _uncamelize = jsx.dom.css.uncamelize; |
+ |
+ var _prefixedProperties = jsx.dom.css.prefixedProperties; |
+ var _prefixes = jsx.dom.css.prefixes; |
+ var _propertyInfo = jsx.dom.css.propertyInfo; |
+ |
+ /** |
+ * @param {Element} oElement |
+ * Reference to the element object whose style is to be modified. |
+ * @param {string} sPropertyName |
+ * Name of the style property whose value should be set. |
+ * Both camelCased and dash-property names are supported. |
+ * Mapping to supported prefix properties is done automatically, |
+ * i. e. <code>"transition"</code> would cause only |
+ * <code>"-webkit-transition"</code> to be set if the former |
+ * but not <code>"transition"</code> was available. |
+ * If the <code>style</code> property is available on the element, |
+ * the faster property-accessor approach is attempted first, |
+ * then the slower setProperty() call. |
+ * If <code>"display"</code>, and there is no <code>style</code> |
+ * property, and <code>altValue</code> was provided, "visibility" |
+ * is used instead (fallback for the NN4 DOM). |
+ * @param propValue |
+ * Value of the style property to be set. |
+ * @param {_} altValue (optional) |
+ * Alternative value to be set if the the style property is a |
+ * property of the object itself instead of its `style' property. |
+ * Fallback for the NN4 DOM. |
+ * @return {boolean} |
+ * <code>false</code> if no such object exists, the |
+ * DOM does not provide for setting the property value, |
+ * or if the assignment failed (invalid value). |
+ * CAVEAT: Some property values are normalized by the DOM API |
+ * when read; test before using the return value as a discriminator. |
+ */ |
+ function _setStyleProperty (oElement, sPropertyName, propValue, altValue) |
+ { |
+ if (oElement) |
+ { |
+ /* TODO: Needed for NN4 DOM as well? */ |
+ var camelized_name = _camelize(sPropertyName); |
+ |
+ if (typeof oElement.style != "undefined") |
+ { |
+ var style = oElement.style; |
+ |
+ var thisPropertyInfo = _propertyInfo[camelized_name]; |
+ var thisAliases = thisPropertyInfo && thisPropertyInfo.aliases; |
+ if (thisAliases) |
+ { |
+ for (var i = thisAliases.length; i--;) |
+ { |
+ var alias = thisAliases[i]; |
+ if (typeof style[alias] != "undefined") |
+ { |
+ style[alias] = propValue; |
+ return (String(style[alias]).toLowerCase() |
+ == String(propValue).toLowerCase()); |
+ } |
+ } |
+ |
+ return false; |
+ } |
+ |
+ if (_prefixedProperties[sPropertyName]) |
+ { |
+ var len; |
+ for (i = 0, len = _prefixes.camelized.length; i < len; ++i) |
+ { |
+ var prefix = _prefixes.camelized[i]; |
+ var prefixed_name = (prefix |
+ ? prefix |
+ + camelized_name.charAt(0).toUpperCase() |
+ + camelized_name.substring(1) |
+ : camelized_name); |
+ if (typeof style[prefixed_name] != "undefined") |
+ { |
+ style[prefixed_name] = propValue; |
+ } |
+ } |
+ |
+ return (String(style[prefixed_name]).toLowerCase() |
+ == String(propValue).toLowerCase()); |
+ } |
+ |
+ if (typeof style[camelized_name] != "undefined") |
+ { |
+ style[camelized_name] = propValue; |
+ return (String(style[camelized_name]).toLowerCase() |
+ == String(propValue).toLowerCase()); |
+ } |
+ |
+ /* If the quick, backwards-compatible method failed for some reason */ |
+ if (_isHostMethod(style, "setProperty")) |
+ { |
+ var uncamelized_name = _uncamelize(sPropertyName); |
+ |
+ /* NOTE: Works because of no dash-properties in _prefixedProperties */ |
+ if (_prefixedProperties[sPropertyName]) |
+ { |
+ for (i = 0, len = _prefixes.uncamelized.length; i < len; ++i) |
+ { |
+ style.setProperty( |
+ _prefixes.uncamelized[i] + uncamelized_name, |
+ propValue); |
+ } |
+ |
+ if (!_isHostMethod(style, "getPropertyValue")) |
+ { |
+ return true; |
+ } |
+ |
+ return (String(style.getPropertyValue(sPropertyName)).toLowerCase() |
+ == String(propValue).toLowerCase()); |
+ } |
+ |
+ style.setProperty(uncamelized_name, propValue); |
+ return (String(style.getPropertyValue(uncamelized_name)).toLowerCase() |
+ == String(propValue).toLowerCase()); |
+ } |
+ } |
+ else |
+ { |
+ /* NN4 DOM */ |
+ if (camelized_name == "display" && altValue) |
+ { |
+ camelized_name = "visibility"; |
+ } |
+ |
+ if (typeof oElement[camelized_name] != "undefined") |
+ { |
+ var newValue = (altValue || propValue); |
+ oElement[camelized_name] = newValue; |
+ return (String(oElement[camelized_name]).toLowerCase() |
+ == String(newValue).toLowerCase()); |
+ } |
+ } |
+ } |
+ |
+ return false; |
+ } |
+ |
+ return _setStyleProperty; |
+}()); |
+ |
+/** |
+ * Resets a style property to its inherited value |
+ * |
+ * @param {Element} oElement |
+ * @param {String} sPropertyName |
+ * @return {boolean} |
+ * @see jsx.dom.css.setStyleProperty() |
+ */ |
+jsx.dom.css.resetStyleProperty = function (oElement, sPropertyName) { |
+ return jsx.dom.css.setStyleProperty(oElement, sPropertyName, ""); |
+}; |
+ |
+/** |
+ * Retrieves the rendering state or (dis)allows rendering of a DOM object. |
+ * |
+ * @author |
+ * (C) 2004-2006 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/dhtml.js |
+ * @param {HTMLElement} oElement |
+ * Reference to the DOM object to be rendered or not. |
+ * @param {boolean} bShow |
+ * Renders the object referenced by <code>o</code> if |
+ * <code>true</code>, does not render it if <code>false</code>. |
+ * Note that not to render an element is different from |
+ * hiding it, as the space it would take up is then no |
+ * longer reserved. |
+ * |
+ * If this argument is omitted, the current property value is returned. |
+ * @return {boolean} |
+ * When retrieving: <code>true</code> if visible, <code>false</code> |
+ * otherwise; when setting: <code>true</code> if successful, |
+ * <code>false</code> otherwise. |
+ * @see #visible |
+ */ |
+jsx.dom.display = function (oElement, bShow) { |
+ var result; |
+ |
+ if (oElement) |
+ { |
+ if (arguments.length > 1) |
+ { |
+ result = jsx.dom.css.setStyleProperty(oElement, "display", |
+ bShow ? "" : "none", |
+ bShow ? "show" : "hide"); |
+ } |
+ else |
+ { |
+ result = /^(\s*|show)$/.test(jsx.dom.css.getStyleProperty(oElement, "display")); |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Retrieves or sets the visibility of a DOM object. |
+ * |
+ * @author |
+ * (C) 2004-2006 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/dhtml.js |
+ * @param {HTMLElement} oElement |
+ * Reference to the DOM object to be either shown or hidden. |
+ * @param {Boolean} bVisible (optional) |
+ * Shows the object referenced by <code>o</code> if <code>true</code>, |
+ * hides it if <code>false</code>. Note that hiding an element is |
+ * different from not rendering it, as the space it takes up is still |
+ * reserved. |
+ * |
+ * If this argument is omitted, the current property value is returned. |
+ * @return {boolean} |
+ * When retrieving: <code>true</code> if visible, <code>false</code> |
+ * otherwise; when setting: <code>true</code> if successful, |
+ * <code>false</code> otherwise. |
+ * @see #display |
+ */ |
+jsx.dom.visibility = jsx.dom.visible = function (oElement, bVisible) { |
+ var result; |
+ |
+ if (oElement) |
+ { |
+ if (arguments.length > 1) |
+ { |
+ result = jsx.dom.css.setStyleProperty(oElement, "visibility", |
+ bVisible ? "visible" : "hidden", |
+ bVisible ? "show" : "hide"); |
+ } |
+ else |
+ { |
+ result = /^(visible|show)$/.test( |
+ jsx.dom.css.getStyleProperty(oElement, "visibility")); |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * @param {Number|String} imgID |
+ * @param {Number} state (optional) |
+ * @return {boolean} |
+ * The return value of {@link #setStyleProperty} for setting the |
+ * borderColor of the image |
+ */ |
+jsx.dom.hoverImg = function (imgID, state) { |
+ var img = null; |
+ |
+ if (document.images) |
+ { |
+ img = document.images[imgID]; |
+ } |
+ |
+ var me = arguments.callee; |
+ return jsx.dom.css.setStyleProperty(img, "borderColor", |
+ (state == 0 ? me.clMouseout : me.clMouseover)); |
+}; |
+jsx.dom.hoverImg.clMouseout = "#000"; |
+jsx.dom.hoverImg.clMouseover = "#fff"; |
+ |
+jsx.dom.getAbsPos = function (oNode) { |
+ /* TODO: One initialization for all properties? */ |
+ var result = {}; |
+ result.x = result.y = 0; |
+ result.toString = function () { |
+ return "{x: " + this.x + ", y: " + this.y + "}"; |
+ }; |
+ |
+ if (oNode.offsetParent) |
+ { |
+ while (oNode.offsetParent) |
+ { |
+ result.x += oNode.offsetLeft; |
+ result.y += oNode.offsetTop; |
+ oNode = oNode.offsetParent; |
+ } |
+ } |
+ else if (typeof oNode.x != "undefined" |
+ && typeof oNode.y != "undefined") |
+ { |
+ result.x += oNode.x; |
+ result.y += oNode.y; |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.dom.css.selectors = { |
+ ID: "#{nmchar}+" |
+ .replace(/\{nmchar\}/, "[_a-z0-9-]|{nonascii}|{escape}") |
+ .replace(/\{nonascii\}/g, "[\\xA0-\\xFF]") |
+ .replace(/\{escape\}/g, "{unicode}|\\\\[^\\r\\n\\f0-9a-f]") |
+ .replace(/\{unicode\}/g, "\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?") |
+ .replace(/\{h\}/g, "[0-9a-f]"), |
+ CLASS: "\\.IDENT" |
+ .replace(/IDENT/, "-?{nmstart}{nmchar}*") |
+ .replace(/\{nmstart\}/, "[_a-z]|{nonascii}|{escape}") |
+ .replace(/\{nmchar\}/, "[_a-z0-9-]|{nonascii}|{escape}") |
+ .replace(/\{nonascii\}/g, "[\\xA0-\\xFF]") |
+ .replace(/\{escape\}/g, "{unicode}|\\\\[^\\r\\n\\f0-9a-f]") |
+ .replace(/\{unicode\}/g, "\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?") |
+ .replace(/\{h\}/g, "[0-9a-f]"), |
+ ATTRIBUTE: "\\[\\s*(IDENT\\|)?IDENT\\s*((=|INCLUDES|DASHMATCH)\\s*(IDENT|STRING)\\s*)?\\]" |
+ .replace(/IDENT/g, "-?{nmstart}{nmchar}*") |
+ .replace(/INCLUDES/, "~=") |
+ .replace(/DASHMATCH/, "\\|=") |
+ .replace(/STRING/, "{string1}|{string2}") |
+ .replace(/\{string1\}/, '"([^\\n\\r\\f\\\\"]|\\\\{nl}|{escape})*"') |
+ .replace(/\{string2\}/, "'([^\\n\\r\\f\\\\']|\\\\{nl}|{escape})*'") |
+ .replace(/\{nl\}/g, "(\\n|\\r\n|\\r|\\f)") |
+ .replace(/\{nmstart\}/g, "[_a-z]|{nonascii}|{escape}") |
+ .replace(/\{nmchar\}/g, "[_a-z0-9-]|{nonascii}|{escape}") |
+ .replace(/\{nonascii\}/g, "[\\xA0-\\xFF]") |
+ .replace(/\{escape\}/g, "{unicode}|\\\\[^\\r\\n\\f0-9a-f]") |
+ .replace(/\{unicode\}/g, "\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?") |
+ .replace(/\{h\}/g, "[0-9a-f]"), |
+ PSEUDOCLASS: ":(link|visited|hover|active|focus|target|lang" |
+ + "|enabled|disabled|checked|indeterminate" |
+ + "|root|nth-child|nth-last-child|nth-of-type|nth-last-of-type" |
+ + "|first-child|last-child|first-of-type|last-of-type" |
+ + "|only-child|only-of-type|empty|not)\\b", |
+ ELEMENT: "(^|\\s)((IDENT|\\*)\\|)?IDENT" |
+ .replace(/IDENT/g, "-?{nmstart}{nmchar}*") |
+ .replace(/\{nmstart\}/g, "[_a-z]|{nonascii}|{escape}") |
+ .replace(/\{nmchar\}/g, "[_a-z0-9-]|{nonascii}|{escape}") |
+ .replace(/\{nonascii\}/g, "[\\xA0-\\xFF]") |
+ .replace(/\{escape\}/g, "{unicode}|\\\\[^\\r\\n\\f0-9a-f]") |
+ .replace(/\{escape\}/g, "{unicode}|\\\\[^\\r\\n\\f0-9a-f]") |
+ .replace(/\{unicode\}/g, "\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?") |
+ .replace(/\{h\}/g, "[0-9a-f]"), |
+ PSEUDOELEMENT: "::?(first-line|first-letter|before|after)\\b" |
+}; |
+ |
+/** |
+ * A <code>RuleList</code> object encapsulates |
+ * all CSS selectors linked to from a document in a |
+ * {@link Collection}. |
+ * |
+ * @constructor |
+ * @param {Object} oDocument (optional) |
+ * Object reference to override the default |
+ * <code>document</code> object reference. |
+ * @return {jsx.dom.css.RuleList} |
+ */ |
+jsx.dom.css.RuleList = function (oDocument) { |
+ arguments.callee._super.call(this); |
+ this.document = oDocument || document; |
+ this.get(); |
+}; |
+ |
+jsx.dom.css.RuleList.extend(jsx.Collection, { |
+ /** |
+ * @type Document |
+ */ |
+ document: null, |
+ |
+ /** |
+ * Populates the collection with the selectors |
+ * of the document. |
+ * |
+ * @memberOf jsx.dom.css.RuleList#prototype |
+ * @param {Object} oDocument (optional) |
+ * Object reference to override the default |
+ * <code>document</code> object reference. |
+ * @return {boolean} |
+ */ |
+ get: function (oDocument) { |
+ if (oDocument) |
+ { |
+ this.document = oDocument; |
+ } |
+ |
+ this.clear(); |
+ |
+ var d, oSheets; |
+ if ((d = this.document) && (oSheets = d.styleSheets)) |
+ { |
+ for (var i = 0, oRules; i < oSheets.length; i++) |
+ { |
+ var oSheet = oSheets[i]; |
+ if ((oRules = oSheet.cssRules || oSheet.rules)) |
+ { |
+ for (var j = 0; j < oRules.length; j++) |
+ { |
+ this.add(oRules[j], oRules[j].selectorText); |
+ } |
+ } |
+ } |
+ |
+ return true; |
+ } |
+ |
+ return false; |
+ }, |
+ |
+ /** |
+ * Returns a reference to the first rule |
+ * with a simple selector. |
+ * |
+ * @param {String} sSelector |
+ * Simple selector |
+ * @return {CSSStyleRule|Null} |
+ */ |
+ findBySimpleSelector: function (sSelector) { |
+ var i = this.iterator(); |
+ while ((s = i.next()) != null) |
+ { |
+ if ((new RegExp("(^|\\s)" + sSelector + "([+>\\s]|$)")).test(s.value.selectorText)) |
+ { |
+ return s.value; |
+ } |
+ } |
+ |
+ return null; |
+ } |
+}); |
+ |
+jsx.dom.css.findRules = (function () { |
+ var a = []; |
+ var _slice = a.slice; |
+ var _concat = a.concat; |
+ |
+ function toArray (obj) |
+ { |
+ return _slice.call(obj || a); |
+ } |
+ |
+ return function (selector, exactMatch) { |
+ var prefix = "(^|\\s)"; |
+ if (exactMatch) |
+ { |
+ prefix = "^\\s*"; |
+ } |
+ |
+ var rxSelector = new RegExp( |
+ prefix + selector.replace(/[$.(){}\[\]^]/g, "\\$&") + "\\s*$"); |
+ |
+ var hits = toArray(document.styleSheets).map(function (styleSheet) { |
+ return toArray(styleSheet.cssRules || styleSheet.rules).filter( |
+ function (rule) { |
+ return rxSelector.test(rule.selectorText); |
+ }); |
+ }).filter(function (hit) { |
+ return hit.length > 0; |
+ }); |
+ |
+ return _concat.apply([], hits); |
+ }; |
+}()); |
+ |
+/** |
+ * Calculate the specificity of a CSS3 selector |
+ * |
+ * @see http://www.w3.org/TR/css3-selectors/#specificity |
+ */ |
+jsx.dom.css.getSpecificity = (function () { |
+ var selectors = jsx.dom.css.selectors; |
+ var rxID = new RegExp(selectors.ID, "g"); |
+ var rxAttr = new RegExp( |
+ selectors.CLASS + "|" + selectors.ATTRIBUTE + "|" + selectors.PSEUDOCLASS, |
+ "g"); |
+ var rxElem = new RegExp( |
+ selectors.ELEMENT + "|" + selectors.PSEUDOELEMENT, "g"); |
+ |
+ /** |
+ * @param {String} selector |
+ * @return {Number} |
+ * The specificity of <var>selector</var> where the value modulo 100 |
+ * is the number of ID selectors, the value modulo 10 is the number of |
+ * class selectors, attributes selectors, and pseudo-classes, and the |
+ * value modulo 1 is the number of element names and pseudo-elements |
+ * in the selector. |
+ */ |
+ return function (selector) { |
+ selector = String(selector || ""); |
+ var idNum = (selector.match(rxID) || []).length; |
+ var attrNum = (selector.match(rxAttr) || []).length; |
+ var elemNum = (selector.match(rxElem) || []).length; |
+ |
+ return (idNum * 100) + (attrNum * 10) + elemNum; |
+ }; |
+}()); |
+ |
+/** |
+ * Retrieves all elements matching all specified CSS class names |
+ */ |
+jsx.dom.css.getElemByClassName = jsx.dom.css.gEBCN = (function () { |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ var _getElemByTagName = jsx.dom.getElemByTagName; |
+ var sWhiteSpace = "[ \\t\\f\\u200B\\r\\n]+"; |
+ var rxWhiteSpace = new RegExp(sWhiteSpace); |
+ |
+ /** |
+ * @param {Array|String} sClassNames |
+ * @param {Element} contextNode (optional) |
+ * @return {Array} |
+ * An <code>Array</code> of references to objects representing |
+ * matching elements |
+ */ |
+ return function (sClassNames, contextNode) { |
+ var |
+ result = [], |
+ classNames = !Array.isArray(sClassNames) |
+ ? String(sClassNames || "").split(rxWhiteSpace) |
+ : sClassNames, |
+ classNameSet = {}; |
+ |
+ if (classNames.length > 0) |
+ { |
+ /* Remove duplicates */ |
+ for (var i = classNames.length; i--;) |
+ { |
+ classNameSet[classNames[i]] = true; |
+ } |
+ |
+ classNames = []; |
+ if (typeof Object.keys == "function") |
+ { |
+ classNames = Object.keys(classNameSet); |
+ } |
+ else |
+ { |
+ for (var className in classNameSet) |
+ { |
+ if (_hasOwnProperty(classNameSet, className)) |
+ { |
+ classNames.push(className); |
+ } |
+ } |
+ } |
+ |
+ var aElements = _getElemByTagName("*", -1, contextNode || document); |
+ } |
+ |
+ if (aElements) |
+ { |
+ /* |
+ * NOTE: There are many more elements than potential class names, so loop |
+ * through those only once |
+ */ |
+ outer: for (var i = 0, len = aElements.length; i < len; ++i) |
+ { |
+ var element = aElements[i]; |
+ var elementClassName = element.className; |
+ |
+ for (var j = classNames.length; j--;) |
+ { |
+ if (!new RegExp("(^|" + sWhiteSpace + ")" + classNames[j] |
+ + "($|" + sWhiteSpace + ")") |
+ .test(elementClassName)) |
+ { |
+ continue outer; |
+ } |
+ } |
+ |
+ result[result.length] = element; |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+}()); |
+ |
+jsx.dom.css.showByClassName = (function () { |
+ var _getEBCN = jsx.dom.css.getElemByClassName; |
+ |
+ /** |
+ * Shows or hides elements with a certain class name. |
+ * |
+ * @param {string} sClassName |
+ * Class name of the elements to be hidden/shown. |
+ * @param {boolean} bShow (optional) |
+ * If <code>false</code> (default), elements will be |
+ * hidden, otherwise shown. |
+ * @requires dhtml.js |
+ * @return {boolean} |
+ * <code>true</code> if successful, <code>false</code> otherwise. |
+ */ |
+ return function (sClassName, bShow) { |
+ var newDisplay = bShow ? "" : "none"; |
+ var ruleList, selector; |
+ if (typeof jsx.dom.css != "undefined" |
+ && typeof jsx.dom.css.RuleList == "function" |
+ && (ruleList = new jsx.dom.css.RuleList()) |
+ && (selector = |
+ ruleList.findBySimpleSelector("\\." + sClassName))) |
+ { |
+ selector.display = newDisplay; |
+ return (selector.display == newDisplay); |
+ } |
+ |
+ var es = _getEBCN(sClassName); |
+ |
+ for (var i = es.length; i--; 0) |
+ { |
+ var o = es[i]; |
+ if (typeof o.display != "undefined") |
+ { |
+ o.display = newDisplay; |
+ } |
+ } |
+ |
+ return true; |
+ }; |
+}()); |
+ |
+/** |
+ * Makes all non-default stylesheet declarations for an element inline |
+ */ |
+jsx.dom.css.makeInline = (function () { |
+ var defaultValues = { |
+ "background-image": "none" |
+ }; |
+ |
+ /** |
+ * @param {Element} obj |
+ */ |
+ return function (obj) { |
+ var computedStyle = jsx.dom.css.getComputedStyle(obj); |
+ if (!computedStyle) |
+ { |
+ return; |
+ } |
+ |
+ for (var i = 0, len = computedStyle.length; i < len; ++i) |
+ { |
+ var propertyName = computedStyle[i]; |
+ var propertyValue = computedStyle.getPropertyValue(propertyName); |
+ |
+ if (propertyValue != defaultValues[propertyName]) |
+ { |
+ obj.style.setProperty(propertyName, propertyValue); |
+ } |
+ } |
+ }; |
+}()); |
+ |
+jsx.dom.css.isHidden = (function () { |
+ var _getComputedStyle = jsx.dom.css.getComputedStyle; |
+ |
+ return function (o) { |
+ while (o) |
+ { |
+ if (typeof o.style == "undefined" |
+ || typeof o.style.visibility != "undefined" |
+ && /hidden/i.test(o.style.visibility) |
+ || /hidden/i.test(_getComputedStyle(o, "visibility"))) |
+ { |
+ return true; |
+ } |
+ |
+ o = o.parentNode; |
+ } |
+ |
+ return false; |
+ }; |
+}()); |
+ |
+jsx.dom.css.focusElement = function (s) { |
+ var o = document.getElementById(s); |
+ if (o && jsx.object.isMethod(o, "focus") && !jsx.dom.css.isHidden(o)) |
+ { |
+ o.focus(); |
+ } |
+}; |
\ No newline at end of file |
/live/dom/css.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/dom/geolocation.js |
=================================================================== |
--- live/dom/geolocation.js (nonexistent) |
+++ live/dom/geolocation.js (revision 520) |
@@ -0,0 +1,300 @@ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ * @type jsx.dom.geolocation |
+ */ |
+jsx.dom.geolocation = { |
+ /** |
+ * Character used to separate a number from a unit of length. |
+ * |
+ * The default is U+2009 THIN SPACE. |
+ */ |
+ TEXT_THIN_SPACE: "\u2009", |
+ |
+ TEXT_LATITUDE: "Latitude", |
+ |
+ /** |
+ * Abbreviation used for latitudes at the equator or in the |
+ * Northern hemisphere |
+ */ |
+ TEXT_NORTH_ABBR: "N", |
+ |
+ /** |
+ * Abbreviation used for latitudes in the Southern hemisphere. |
+ */ |
+ TEXT_SOUTH_ABBR: "S", |
+ |
+ TEXT_LONGITUDE: "Longitude", |
+ |
+ /** |
+ * Abbreviation used for longitudes at or west of |
+ * the IERS Reference Meridian. |
+ */ |
+ TEXT_WEST_ABBR: "W", |
+ |
+ /** |
+ * Abbreviation used for longitudes east of |
+ * the IERS Reference Meridian. |
+ */ |
+ TEXT_EAST_ABBR: "E", |
+ TEXT_LAT_LNG_ACCURACY: "Lat/Lng Accuracy", |
+ TEXT_ALTITUDE: "Altitude", |
+ |
+ /** |
+ * Text to use for altitude accuracy |
+ */ |
+ TEXT_ALT_ACCURACY: "Alt. Accuracy", |
+ |
+ TEXT_SPEED: "Speed", |
+ TEXT_HEADING: "Heading", |
+ TEXT_NOT_AVAILABLE: "N/A", |
+ |
+ /** |
+ * @return {Position} |
+ * The <code>Position</code> stored in this object. |
+ */ |
+ getPosition: function () { |
+ return this._position; |
+ }, |
+ |
+ /** |
+ * Sets the {Position} stored in this object. |
+ * |
+ * Automatically called from {@link #runAsync()} when |
+ * geolocation is successful. Can be manually called |
+ * to ease calling several methods of this object that |
+ * return human-readable string representations of that |
+ * <code>Position</code>. |
+ * |
+ * @param {Position} value |
+ * @return {jsx.dom.geolocation} |
+ */ |
+ setPosition: function (value) { |
+ this._position = value; |
+ return this; |
+ }, |
+ |
+ /** |
+ * @return {boolean} |
+ * <code>true</code> if geolocation is available, |
+ * <code>false</code> otherwise. |
+ */ |
+ isAvailable: function () { |
+ return jsx.object.isHostMethod(navigator, "geolocation", "getCurrentPosition"); |
+ }, |
+ |
+ /** |
+ * Runs geolocation asynchronously. |
+ * |
+ * @param {Callable} callback |
+ * Called when geolocation was completed |
+ * @return {boolean} |
+ * <code>true</code> if geolocation is supported, |
+ * <code>false</code> otherwise. |
+ */ |
+ runAsync: function (callback) { |
+ if (this.isAvailable()) |
+ { |
+ var me = this; |
+ navigator.geolocation.getCurrentPosition(function (position) { |
+ me.setPosition(position); |
+ me = null; |
+ callback(position); |
+ }); |
+ |
+ return true; |
+ } |
+ |
+ return false; |
+ }, |
+ |
+ /** |
+ * Sets the texts used for human-readable string representations |
+ * of a {Position} as returned by methods of this object. |
+ * |
+ * @param {Object} texts |
+ * Object whose keys identify the keys of this object to be |
+ * set. Usually an external i18n provider would define the |
+ * values. |
+ * @return {jsx.dom.geolocation} |
+ */ |
+ setTexts: function (texts) { |
+ var keys = jsx.object.getKeys(texts); |
+ for (var i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var key = keys[i]; |
+ if (typeof this[key] == "string") |
+ { |
+ this[key] = texts[key]; |
+ } |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position}'s latitude |
+ * in human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getLatitudeString: function (position) { |
+ if (!position) |
+ { |
+ position = this.getPosition(); |
+ } |
+ |
+ var latitude = position.coords.latitude; |
+ return (latitude != null |
+ ? Math.abs(latitude) + "°\xA0" |
+ + (latitude < 0 ? this.TEXT_SOUTH_ABBR : this.TEXT_NORTH_ABBR) |
+ : this.TEXT_NOT_AVAILABLE); |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position}'s longitude |
+ * in human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getLongitudeString: function (position) { |
+ if (!position) |
+ { |
+ position = this.getPosition(); |
+ } |
+ |
+ var longitude = position.coords.longitude; |
+ return (longitude != null |
+ ? Math.abs(longitude) + "°\xA0" |
+ + (longitude < 0 ? this.TEXT_WEST_ABBR : this.TEXT_EAST_ABBR) |
+ : this.TEXT_NOT_AVAILABLE); |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position}'s |
+ * latitude/longitude accuracy in human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getLatLngAccuracyString: function (position) { |
+ if (!position) |
+ { |
+ position = this.getPosition(); |
+ } |
+ |
+ return position.coords.accuracy + this.TEXT_THIN_SPACE + "m"; |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position}'s altitude |
+ * in human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getAltitudeString: function (position) { |
+ if (!position) |
+ { |
+ position = this.getPosition(); |
+ } |
+ |
+ var altitude = position.coords.altitude; |
+ return (altitude != null |
+ ? altitude + this.TEXT_THIN_SPACE + "m" |
+ : this.TEXT_NOT_AVAILABLE); |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position}'s altitude |
+ * accuracy in human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getAltAccuracyString: function (position) { |
+ if (!position) |
+ { |
+ position = this.getPosition(); |
+ } |
+ |
+ var altitudeAccuracy = position.coords.altitudeAccuracy; |
+ return (altitudeAccuracy != null |
+ ? altitudeAccuracy + this.TEXT_THIN_SPACE + "m" |
+ : this.TEXT_NOT_AVAILABLE); |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position}'s speed |
+ * in human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getSpeedString: function (position) { |
+ if (!position) |
+ { |
+ position = this.getPosition(); |
+ } |
+ |
+ var speed = position.coords.speed; |
+ return (speed != null && !isNaN(speed) |
+ ? speed + " m/s" |
+ : this.TEXT_NOT_AVAILABLE); |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position}'s heading |
+ * in human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getHeadingString: function (position) { |
+ if (!position) |
+ { |
+ position = this.getPosition(); |
+ } |
+ |
+ var heading = position.coords.heading; |
+ return (heading != null && !isNaN(heading) |
+ ? heading + "°" |
+ : this.TEXT_NOT_AVAILABLE); |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {Position} in |
+ * human-readable form. |
+ * |
+ * @param {Position} position = this.getPosition() |
+ * @return {string} |
+ */ |
+ getText: function (position) { |
+ return [ |
+ this.TEXT_LATITUDE + ": " + this.getLatitudeString(position), |
+ this.TEXT_LONGITUDE + ": " + this.getLongitudeString(position), |
+ this.TEXT_LAT_LNG_ACCURACY + ": " + this.getLatLngAccuracyString(position), |
+ this.TEXT_ALTITUDE + ": " + this.getAltitudeString(position), |
+ this.TEXT_ALT_ACCURACY + ": " + this.getAltAccuracyString(position), |
+ this.TEXT_SPEED + ": " + this.getSpeedString(position), |
+ this.TEXT_HEADING + ": " + this.getHeadingString(position) |
+ ].join("\n"); |
+ } |
+}; |
\ No newline at end of file |
/live/dom/geolocation.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/css/compat.js |
=================================================================== |
--- live/dom/css/compat.js (nonexistent) |
+++ live/dom/css/compat.js (revision 520) |
@@ -0,0 +1,29 @@ |
+/** |
+ * <title>PointedEars' DOM Library: CSS Compatibility Layer</title> |
+ * @version $Id$ |
+ * @requires dom.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2011, 2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+var CSS = jsx.dom.css; |
+var setStyleProperty = jsx.dom.setStyleProperty = jsx.dom.css.setStyleProperty; |
+jsx.dom.getElemByClassName = jsx.dom.css.getElemByClassName; |
\ No newline at end of file |
/live/dom/css/compat.js |
---|
Property changes: |
Added: svn:executable |
## -0,0 +1 ## |
+* |
\ No newline at end of property |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/css/color.js |
=================================================================== |
--- live/dom/css/color.js (nonexistent) |
+++ live/dom/css/color.js (revision 520) |
@@ -0,0 +1,1172 @@ |
+"use strict"; |
+/** |
+ * <title>PointedEars' DOM Library: CSS Colors</title> |
+ * @version $Id$ |
+ * @requires dom/css.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2011-2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+if (typeof jsx.dom.css == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom.css = {}; |
+} |
+ |
+/** |
+ * The <code>Color</code> prototype encapsulates |
+ * color data given in RGB format. |
+ * |
+ * @param {Number|Color|String} iRed |
+ * Red value or RGB color. Supported formats for RGB color are: |
+ * <code>rgb(<var>r</var>, <var>g</var>, <var>b</var>)</code>, |
+ * <code>#rgb</code> and <code>#rrggbb</code>. If a <code>Color</code>, |
+ * its red component is used. |
+ * @param {Number|Color} iGreen |
+ * Green value (optional). If both <code>iRed</code> and this argument |
+ * are <code>Color</code>s, this arguments's green component is used. |
+ * @param {Number|Color} iBlue |
+ * Blue value (optional). If both <code>iRed</code> and this argument |
+ * are <code>Color</code>s, this arguments's blue component is used. |
+ * @param {Number|Color} fOpacity |
+ * Opacity value (optional). If both <code>iRed</code> and this argument |
+ * are <code>Color</code>s, this arguments's opacity value is used. |
+ * @property red : Number |
+ * Red value |
+ * @property green : Number |
+ * Green value. |
+ * @property blue : Number |
+ * Blue value. |
+ * @property opacity : Number |
+ * Opacity value |
+ * @return {jsx.dom.css.Color} |
+ */ |
+jsx.dom.css.Color = function (iRed, iGreen, iBlue, fOpacity) { |
+ return this.set(iRed, iGreen, iBlue, fOpacity); |
+}; |
+ |
+jsx.dom.css.Color.MIN_VALUE = 0; |
+jsx.dom.css.Color.MAX_VALUE = 255; |
+ |
+/** |
+ * Returns the difference between two colors. |
+ * |
+ * @param {jsx.dom.css.Color|String} color1 |
+ * @param {jsx.dom.css.Color|String} color2 |
+ * @returns {red, green, blue, opacity} |
+ * @see jsx.dom.css.Color.prototype.diff() |
+ */ |
+jsx.dom.css.Color.diff = function (color1, color2) { |
+ return (new jsx.dom.css.Color(color1)).diff(color2); |
+}; |
+ |
+/** |
+ * Returns a <code>Color</code> object, identifying a color in the |
+ * sRGB color space, defined by given coordinates for that color |
+ * in the HSV (Hue, Saturation, Value) color space. |
+ * If any of the coordinates is not provided, it is assumed to be |
+ * 0 (zero). |
+ * |
+ * @param {number} iHue |
+ * Hue, from 0 to 360 (degrees). |
+ * @param {number} fSaturation |
+ * Saturation, from 0.0 to 1.0 (0 to 100%). |
+ * @param {number} fValue |
+ * Brightness value, from 0.0 to 1.0 (0 to 100%). |
+ * @return {jsx.dom.css.Color} |
+ */ |
+jsx.dom.css.Color.hsv2rgb = function (iHue, fSaturation, fValue) { |
+ return (new jsx.dom.css.HSVColor(iHue, fSaturation, fValue)).toRGB(); |
+}; |
+ |
+jsx.dom.css.Color.extend(null, { |
+ /** |
+ * Sets the color values from Red, Green, Blue and Opacity values or a |
+ * RGB(A) value. |
+ * |
+ * @memberOf jsx.dom.css.Color.prototype |
+ * @param iRed {number|Color|string} |
+ * Red value or RGB color. Supported formats |
+ * for RGB color are the same as for {@link #Color}. |
+ * @param iGreen {number|Color} |
+ * Green value (optional) |
+ * @param iBlue {number|Color} |
+ * Blue value (optional) |
+ * @param fOpacity : {number|Color} |
+ * Opacity value (optional) |
+ * @return {jsx.dom.css#Color} |
+ */ |
+ set: function (iRed, iGreen, iBlue, fOpacity) { |
+ if (typeof iRed != "undefined") |
+ { |
+ /* rgb(...) or /#xxx(xxx)?/ */ |
+ if (typeof iRed == "string") |
+ { |
+ this.setRGB(iRed); |
+ } |
+ else |
+ { |
+ if (jsx.object.isInstanceOf(iRed, this.constructor)) |
+ { |
+ this.setRed(iRed.red); |
+ |
+ var argc = arguments.length; |
+ if (jsx.object.isInstanceOf(iGreen, this.constructor) |
+ && jsx.object.isInstanceOf(iBlue, this.constructor) |
+ && (jsx.object.isInstanceOf(fOpacity, this.constructor) |
+ || argc < 4)) |
+ { |
+ this.setGreen(iGreen.green); |
+ this.setBlue(iBlue.blue); |
+ if (argc < 4) |
+ { |
+ this.setOpacity(fOpacity.opacity); |
+ } |
+ } |
+ else |
+ { |
+ this.setGreen(iRed.green); |
+ this.setBlue(iRed.blue); |
+ this.setOpacity(iRed.opacity); |
+ } |
+ } |
+ else |
+ { |
+ this.setRed(iRed); |
+ this.setGreen(iGreen); |
+ this.setBlue(iBlue); |
+ this.setOpacity(typeof fOpacity == "undefined" ? 1.0 : fOpacity); |
+ } |
+ } |
+ } |
+ |
+ this.fix(); |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * @private |
+ * @param {String} sComponent |
+ * @param {Number} value |
+ */ |
+ _setComponent: function (sComponent, value) { |
+ if (String(value).indexOf("%") > -1) |
+ { |
+ value = this.constructor.MAX_VALUE * (parseFloat(value, 10) / 100); |
+ } |
+ |
+ if (isNaN(value)) |
+ { |
+ return jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Invalid component value", String(value), "number"]); |
+ } |
+ |
+ this[sComponent] = parseFloat(value, 10); |
+ }, |
+ |
+ setRed: function (value) { |
+ this._setComponent("red", value); |
+ }, |
+ |
+ setGreen: function (value) { |
+ this._setComponent("green", value); |
+ }, |
+ |
+ setBlue: function (value) { |
+ this._setComponent("blue", value); |
+ }, |
+ |
+ setOpacity: function (value) { |
+ if (isNaN(value)) |
+ { |
+ return jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Invalid opacity value", String(value), "number"]); |
+ } |
+ |
+ this.opacity = parseFloat(value); |
+ }, |
+ |
+ /** |
+ * Returns the difference between two colors. |
+ * |
+ * @param {jsx.dom.css.Color} color2 |
+ * @return {Object} |
+ * The difference between the current color (A) |
+ * and another color (B) as a tuple (Object) consisting |
+ * of the differences between each RGB color component and |
+ * the opacity of each color. That is, if A := (r1, g1, b1, o1) |
+ * and B := (r2, g2, b2, o2) then <code>A.diff(B)</code> |
+ * returns B - A := (r2 - r1, g2 - g1, b2 - b1, o2 - o1). |
+ * |
+ * Note that since each component value of the result |
+ * may be negative, the result is normalized through |
+ * {@link jsx.dom.css.Color.prototype#fix} if its properties |
+ * are used for creating a <code>Color</code> object. |
+ * @type {red, green, blue, opacity} |
+ */ |
+ diff: function (color2) { |
+ var _Color = jsx.dom.css.Color; |
+ if (color2.constructor != _Color) |
+ { |
+ color2 = new _Color(color2); |
+ } |
+ |
+ return { |
+ red: color2.red - this.red, |
+ green: color2.green - this.green, |
+ blue: color2.blue - this.blue, |
+ opacity: color2.opacity - this.opacity |
+ }; |
+ }, |
+ |
+ /** |
+ * Fixes RGB values, i.e. brings them into range |
+ * if they are out of range, and returns the new value. |
+ * NOTE: Disregards brightness and contrast. |
+ * |
+ * @return {jsx.dom.css#Color} |
+ */ |
+ fix: function () { |
+ var rgbMin = this.constructor.MIN_VALUE; |
+ var rgbMax = this.constructor.MAX_VALUE; |
+ |
+ for (var component in {red: 1, green: 1, blue: 1}) |
+ { |
+ this[component] = Math.round(this[component]); |
+ |
+ if (isNaN(this[component]) || this[component] < rgbMin) |
+ { |
+ this[component] = rgbMin; |
+ } |
+ else |
+ { |
+ if (this[component] > rgbMax) |
+ { |
+ this[component] = rgbMax; |
+ } |
+ } |
+ } |
+ |
+ if (typeof this.opacity == "undefined" || this.opacity > 1) |
+ { |
+ this.opacity = 1; |
+ } |
+ else if (this.opacity < 0) |
+ { |
+ this.opacity = 0; |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Increase/decrease one or more RGB components of a color. |
+ * |
+ * @param iRed |
+ * @param iGreen |
+ * @param iBlue |
+ * @return {jsx.dom.css#Color} |
+ */ |
+ inc: function (iRed, iGreen, iBlue) { |
+ switch (iRed.constructor) |
+ { |
+ case String: |
+ iRed = new jsx.dom.css.Color(iRed); |
+ break; |
+ |
+ case Object: |
+ case this.constructor: |
+ if (typeof iRed.green != "undefined") |
+ { |
+ iGreen = iRed.green; |
+ } |
+ |
+ if (typeof iRed.blue != "undefined") |
+ { |
+ iBlue = iRed.blue; |
+ } |
+ |
+ iRed = iRed.red; |
+ break; |
+ |
+ case Array: |
+ if (typeof iRed[1] != "undefined") |
+ { |
+ iGreen = iRed[1]; |
+ } |
+ |
+ if (typeof iRed[2] != "undefined") |
+ { |
+ iBlue = iRed[2]; |
+ } |
+ |
+ iRed = iRed[0]; |
+ break; |
+ } |
+ |
+ this.red += (parseFloat(iRed, 10) || 0); |
+ this.green += (parseFloat(iGreen, 10) || 0); |
+ this.blue += (parseFloat(iBlue, 10) || 0); |
+ |
+ return this.fix(); |
+ }, |
+ |
+ /** |
+ * Sets the color values from an RGB(A) value. |
+ * |
+ * @param {string} v |
+ * RGB(A) value as supported by @{#Color()}. |
+ * @return {jsx.dom.css#Color} |
+ */ |
+ setRGB: function (v) { |
+ /* |
+ * <http://www.w3.org/TR/css3-values/#percentages>: |
+ * "A percentage value is denoted by <percentage>, consists of |
+ * a <number> immediately followed by a percent sign ‘%’." |
+ * "A number is either an integer, or zero or more decimal |
+ * digits followed by a dot (.) followed by one or more |
+ * decimal digits." |
+ */ |
+ var |
+ integer = "\\d+", |
+ number = "(" + integer + "|\\d*\\.\\d+)", |
+ percentage_opt = number + "%?"; |
+ |
+ var rx = new RegExp( |
+ "rgb(a)?\\(\\s*(" + percentage_opt + ")" |
+ + "\\s*,\\s*(" + percentage_opt + ")" |
+ + "\\s*,\\s*(" + percentage_opt + ")" |
+ + "(\\s*,\\s*("+ number + "))?\\s*\\)" |
+ + "|#([0-9a-f]{3})([0-9a-f]{3})?", |
+ "i"); |
+ |
+ var m; |
+ if ((m = rx.exec(v))) |
+ { |
+ /* rgb(...) */ |
+ var |
+ rgba = m[1], |
+ red = m[2], |
+ green = m[4], |
+ blue = m[6], |
+ opacity = m[9], |
+ hex3 = m[11], |
+ hex6 = m[12]; |
+ |
+ if (red) |
+ { |
+ this.setRed(red); |
+ this.setGreen(green); |
+ this.setBlue(blue); |
+ |
+ if (rgba) |
+ { |
+ this.setOpacity(opacity); |
+ } |
+ } |
+ else |
+ { |
+ /* #xxx(xxx)? */ |
+ if (hex6) |
+ { |
+ /* #xxxxxx */ |
+ if ((m = |
+ /([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i.exec(hex3 + hex6))) |
+ { |
+ this.setRed(parseInt(m[1], 16)); |
+ this.setGreen(parseInt(m[2], 16)); |
+ this.setBlue(parseInt(m[3], 16)); |
+ } |
+ } |
+ else |
+ { |
+ /* #xxx */ |
+ var ch; |
+ this.setRed(parseInt((ch = hex3.charAt(0)) + ch, 16)); |
+ this.setGreen(parseInt((ch = hex3.charAt(1)) + ch, 16)); |
+ this.setBlue(parseInt((ch = hex3.charAt(2)) + ch, 16)); |
+ } |
+ } |
+ } |
+ |
+ this.fix(); |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Returns the monochrome version of a color as an object. |
+ * |
+ * @return {jsx.dom.css#Color} |
+ */ |
+ getMono: function () { |
+ var v = this.toHSV().getValue(); |
+ return new this.constructor(v, v, v); |
+ }, |
+ |
+ /** |
+ * Sets the color values from Red, Green and Blue values or |
+ * an RGB value and returns a monochrome version of the color |
+ * as an object. |
+ * |
+ * @param {number|string} iRed |
+ * Red value or RGB color. Supported formats |
+ * for RGB color are the same as for @{#Color()}. |
+ * @param {number} iGreen (optional) |
+ * Green value. |
+ * @param {number} iBlue (optional) |
+ * Blue value. |
+ * @return {jsx.dom.css.Color} |
+ */ |
+ setMono: function (iRed, iGreen, iBlue) { |
+ this.set(iRed, iGreen, iBlue); |
+ |
+ var c = this.getMono(); |
+ this.red = c.red; |
+ this.green = c.green; |
+ this.blue = c.blue; |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Returns the next similar color to the represented color on the |
+ * 214-color Web-safe palette, i.e. a color where each sRGB component |
+ * is one of the hexadecimal values 0x00 (0), 0x33 (51), 0x66 (102), |
+ * 0x99 (153), 0xCC (204), and 0xFF (255). |
+ * |
+ * @return {jsx.dom.css.Color} |
+ */ |
+ getWebSafe: function () { |
+ function getNearestSafeValue (value) |
+ { |
+ if (value >= 0xFF) |
+ { |
+ return 0xFF; |
+ } |
+ |
+ if (value <= 0) |
+ { |
+ return 0; |
+ } |
+ |
+ for (var safeValues = [0, 0x33, 0x66, 0x99, 0xCC, 0xFF], |
+ i = safeValues.length - 1; |
+ i--;) |
+ { |
+ var item = safeValues[i]; |
+ |
+ if (value >= item) |
+ { |
+ if (value == item) |
+ { |
+ return value; |
+ } |
+ |
+ var nextItem = safeValues[i + 1]; |
+ if (value - item < nextItem - value) |
+ { |
+ return item; |
+ } |
+ |
+ return nextItem; |
+ } |
+ } |
+ return -1; |
+ } |
+ |
+ return new this.constructor( |
+ getNearestSafeValue(this.red), |
+ getNearestSafeValue(this.green), |
+ getNearestSafeValue(this.blue)); |
+ }, |
+ |
+ setWebSafe: function (iRed, iGreen, iBlue) { |
+ this.set(iRed, iGreen, iBlue); |
+ |
+ var c = this.getWebSafe(); |
+ this.red = c.red; |
+ this.green = c.green; |
+ this.blue = c.blue; |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Returns the color in the sRGB color space as an object |
+ * identifying the coordinates of that color in the |
+ * HSL (Hue, Saturation, Lightness) color space. |
+ * |
+ * @requires jsx.math.max(), jsx.math.min() from <tt>math/float.js</tt> |
+ * @return {jsx.dom.css.HSLColor} |
+ */ |
+ toHSL: function () { |
+ /* Cf. <http://www5.informatik.tu-muenchen.de/lehre/vorlesungen/graphik/info/csc/COL_26.htm#topic25> */ |
+ |
+ jsx.importOnce(jsx.absPath("../../math/float.js", jsx.importFrom.lastImport)); |
+ |
+ var |
+ red = this.red, |
+ green = this.green, |
+ blue = this.blue, |
+ min = jsx.math.min(red, green, blue), |
+ max = jsx.math.max(red, green, blue), |
+ hue = 0, |
+ saturation, |
+ lightness = ((max + min) / 2) / this.constructor.MAX_VALUE; |
+ |
+ if (max == min) |
+ { |
+ saturation = 0; |
+ } |
+ else |
+ { |
+ if (lightness <= 0.5) |
+ { |
+ saturation = (max - min) / (max + min); |
+ } |
+ else |
+ { |
+ saturation = (max - min) / (2 - max - min); |
+ } |
+ } |
+ |
+ var delta = max - min; |
+ |
+ if (red == max) |
+ { |
+ hue = (green - blue) / delta; |
+ } |
+ else if (green == max) |
+ { |
+ hue = 2 + (blue - red) / delta; |
+ } |
+ else if (blue == max) |
+ { |
+ hue = 4 + (red - green) / delta; |
+ } |
+ |
+ hue *= 60; |
+ |
+ if (hue < 0) |
+ { |
+ hue += 360; |
+ } |
+ |
+ return new jsx.dom.css.HSLColor(hue, saturation * 100, lightness * 100, this.opacity); |
+ }, |
+ |
+ /** |
+ * Returns the color in the sRGB color space as an object |
+ * identifying the coordinates of that color in the |
+ * HSV (Hue, Saturation, Value) color space. |
+ * |
+ * @requires jsx.math.max(), jsx.math.min() from <tt>math/float.js</tt> |
+ * @return {jsx.dom.css.HSVColor} |
+ */ |
+ toHSV: function () { |
+ /* Cf. http://en.wikipedia.org/wiki/HSV_color_space#Transformation_between_HSV_and_RGB */ |
+ var |
+ rgbMax = this.constructor.MAX_VALUE, |
+ red = this.red / rgbMax, |
+ green = this.green / rgbMax, |
+ blue = this.blue / rgbMax, |
+ max = jsx.math.max(red, green, blue), |
+ min = jsx.math.min(red, green, blue), |
+ hue = 0, |
+ saturation = 0, |
+ value, |
+ delta = max - min; |
+ |
+ if (max != min) |
+ { |
+ if (red == max) |
+ { |
+ hue = (green - blue) / delta * 60; |
+ } |
+ else if (green == max) |
+ { |
+ hue = (2 + (blue - red) / delta) * 60; |
+ } |
+ else if (blue == max) |
+ { |
+ hue = (4 + (red - green) / delta) * 60; |
+ } |
+ } |
+ |
+ if (hue < 0) |
+ { |
+ hue += 360; |
+ } |
+ |
+ if (max == 0) |
+ { |
+ saturation = 0; |
+ } |
+ else |
+ { |
+ saturation = 100 * (delta / max); |
+ } |
+ |
+ value = 100 * max; |
+ |
+ return new jsx.dom.css.HSVColor(hue, saturation, value, this.opacity); |
+ }, |
+ |
+ /** |
+ * @requires jsx.string.leadingZero() from string.js |
+ * @return {string} |
+ */ |
+ toHex: function () { |
+ var _leadingZero = jsx.string.leadingZero; |
+ var |
+ red = _leadingZero(this.red.toString(16), 2), |
+ green = _leadingZero(this.green.toString(16), 2), |
+ blue = _leadingZero(this.blue.toString(16), 2), |
+ rx = /([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3/i, |
+ m; |
+ |
+ if ((m = rx.exec(red + green + blue))) |
+ { |
+ red = m[1]; |
+ green = m[2]; |
+ blue = m[3]; |
+ } |
+ |
+ return '#' + red + green + blue; |
+ }, |
+ |
+ /** |
+ * Returns the color as a string |
+ * <code>rgb(<var>red</var>,<var>green</var>,<var>blue</var>)</code> |
+ * representation supported by CSS. |
+ * |
+ * @function |
+ * @return {string} |
+ */ |
+ toRGBString: function () { |
+ return 'rgb(' + this.red + ',' + this.green + ',' + this.blue + ')'; |
+ }, |
+ |
+ /** |
+ * Returns the JavaScript Object Notation for the instance. |
+ * |
+ * Returns |
+ * <code>{"red": <var>r</var>, "green": <var>g</var>, "blue": <var>b</var>, |
+ * "opacity": <var>op</var>}</code> |
+ * as supported by e.g. JSON. |
+ * |
+ * @return {string} |
+ */ |
+ toJSON: function () { |
+ return '{' |
+ + '"red": ' + this.red |
+ + ', "green": ' + this.green |
+ + ', "blue": '+ this.blue |
+ + ', "opacity": ' + this.opacity |
+ + '}'; |
+ } |
+}); |
+ |
+/** |
+ * Revives a <code>Color</code> instance from its JavaScript Object Notation. |
+ * |
+ * Pass as second argument to {@link JSON#parse()} or call in another reviver: |
+ * <pre><code> var Color = jsx.dom.css.Color; |
+ * var myColor = JSON.parse(new Color("#f00"), Color.reviver);</code></pre> |
+ * |
+ * @see jsx.dom.css.Color#fromJSON |
+ * @return {number|jsx.dom.css.Color} |
+ */ |
+jsx.dom.css.Color.reviver = function (property, value) { |
+ return (typeof value == "object") |
+ ? new this(value.red, value.green, value.blue, value.opacity) |
+ : value; |
+}; |
+ |
+/** |
+ * Creates a <code>Color</code> instance from JavaScript Object Notation. |
+ * |
+ * @param {String} sJSON |
+ * @return {jsx.dom.css.Color|null} |
+ * The <code>Color</code> if successful, <code>null</code> otherwise. |
+ */ |
+jsx.dom.css.Color.fromJSON = function (sJSON) { |
+ if (jsx.isNativeMethod(jsx.tryThis("JSON"), "parse")) |
+ { |
+ return JSON.parse(sJSON, this.reviver); |
+ } |
+ |
+ var |
+ color = null, |
+ error = null; |
+ |
+ jsx.tryThis( |
+ function () { color = eval("(" + sJSON + ")"); }, |
+ function (e) { error = e; } |
+ ); |
+ |
+ if (!color || error && error.name == "SyntaxError") |
+ { |
+ return null; |
+ } |
+ |
+ return new this(color.red, color.green, color.blue, color.opacity); |
+}; |
+ |
+/** |
+ * Returns the color as a string |
+ * <code>rgba(<var>red</var>,<var>green</var>,<var>blue</var>, <var>opacity</var>)</code> |
+ * representation supported by CSS. |
+ * |
+ * @function |
+ * @return {string} |
+ */ |
+jsx.dom.css.Color.prototype.toString = |
+jsx.dom.css.Color.prototype.toRGBAString = function () { |
+ return ('rgba(' + this.red + ',' + this.green + ',' + this.blue |
+ + ',' + this.opacity + ')'); |
+}; |
+ |
+/** |
+ * Creates a HSV color value (not to be confused with |
+ * {@link jsx.dom.css#HSLColor}). |
+ * |
+ * If any of the coordinates is not provided, it is assumed to be |
+ * 0 (zero). |
+ * |
+ * @param {int} iHue |
+ * @param {float} fSaturation |
+ * @param {float} fValue |
+ * @constructor |
+ * @property hue : int |
+ * Hue value |
+ * @property saturation : float |
+ * Saturation value |
+ * @property value : float |
+ * Value component |
+ * @property opacity : float |
+ * Opacity value |
+ */ |
+jsx.dom.css.HSVColor = function (iHue, fSaturation, fValue, fOpacity) { |
+ this.setHue(iHue); |
+ this.setSaturation(fSaturation); |
+ this.setValue(fValue); |
+ this.setOpacity(fOpacity); |
+}; |
+ |
+jsx.dom.css.HSVColor.extend(null, { |
+ /** |
+ * @memberOf jsx.dom.css.HSVColor.prototype |
+ * @param {int} value |
+ */ |
+ setHue: function (value) { |
+ this.hue = value || 0; |
+ }, |
+ |
+ /** |
+ * @param {float} value |
+ */ |
+ setSaturation: function (value) { |
+ this.saturation = value || 0; |
+ }, |
+ |
+ /** |
+ * @param {float} value |
+ */ |
+ setValue: function (value) { |
+ this.value = value || 0; |
+ }, |
+ |
+ setOpacity: (function () { |
+ var _setOpacity = jsx.dom.css.Color.prototype.setOpacity; |
+ |
+ return function (value) { |
+ return _setOpacity.call(this, value); |
+ }; |
+ }()), |
+ |
+ /** |
+ * @return {number} |
+ */ |
+ getValue: function () { |
+ return this.value; |
+ }, |
+ |
+ /** |
+ * Returns the RGB color for the HSV color |
+ */ |
+ toRGB: (function () { |
+ var _Color = jsx.dom.css.Color; |
+ |
+ /** |
+ * @return {jsx.dom.css.Color} |
+ */ |
+ return function () { |
+ /* Cf. http://en.wikipedia.org/wiki/HSV_color_space#Transformation_between_HSV_and_RGB */ |
+ var |
+ v = this.value, |
+ rgbMax = _Color.MAX_VALUE; |
+ |
+ if (this.saturation == 0.0) |
+ { |
+ return new _Color(v * rgbMax, v * rgbMax, v * rgbMax); |
+ } |
+ |
+ var |
+ h_i = Math.floor(this.hue / 60) % 6, |
+ f = (this.hue / 60) - h_i, |
+ p = v * (1 - this.saturation), |
+ q = v * (1 - f * this.saturation), |
+ t = v * (1 - (1 - f) * this.saturation), |
+ red, green, blue; |
+ |
+ switch (h_i) |
+ { |
+ case 0: |
+ red = v; green = t; blue = p; |
+ break; |
+ |
+ case 1: |
+ red = q; green = v; blue = p; |
+ break; |
+ |
+ case 2: |
+ red = p; green = v; blue = t; |
+ break; |
+ |
+ case 3: |
+ red = p; green = q; blue = v; |
+ break; |
+ |
+ case 4: |
+ red = t; green = p; blue = v; |
+ break; |
+ |
+ case 5: |
+ red = v; green = p; blue = q; |
+ break; |
+ |
+ default: |
+ return null; |
+ } |
+ |
+ return new _Color(red * rgbMax, green * rgbMax, blue * rgbMax, this.opacity); |
+ }; |
+ }()) |
+}); |
+ |
+/** |
+ * Creates a HSL color value (not to be confused with |
+ * {@link jsx.dom.css#HSVColor}). |
+ * |
+ * If any of the coordinates is not provided, it is assumed to be |
+ * 0 (zero). |
+ * |
+ * @param {int} iHue |
+ * Hue in degrees |
+ * @param {float} fSaturation |
+ * Saturation per cent |
+ * @param {float} fLightness |
+ * Lightness per cent |
+ * @param {float} fOpacity |
+ * Opacity between 0 (0%) and 1 (100%) inclusive |
+ * @constructor |
+ * @property hue : int |
+ * Hue value |
+ * @property saturation : float |
+ * Saturation value |
+ * @property lightness : float |
+ * Lightness value |
+ * @property opacity : float |
+ * Opacity value |
+ */ |
+jsx.dom.css.HSLColor = function (iHue, fSaturation, fLightness, fOpacity) { |
+ this.setHue(iHue); |
+ this.setSaturation(fSaturation); |
+ this.setLightness(fLightness); |
+ this.setOpacity(fOpacity); |
+}; |
+ |
+/** |
+ * Revives a <code>Color</code> instance from its JavaScript Object Notation. |
+ * |
+ * Pass as second argument to {@link JSON#parse()} or call in another reviver: |
+ * <pre><code> var Color = jsx.dom.css.Color; |
+ * var myColor = JSON.parse(new Color("#f00"), Color.reviver);</code></pre> |
+ * |
+ * @see jsx.dom.css.Color#fromJSON |
+ * @return {number|jsx.dom.css.Color} |
+ */ |
+jsx.dom.css.HSLColor.reviver = function (property, value) { |
+ return (typeof value == "object") |
+ ? new this(value.hue, value.saturation, value.lightness, value.opacity) |
+ : value; |
+}; |
+ |
+/** |
+ * Creates a <code>HSLColor</code> instance from JavaScript Object Notation. |
+ * |
+ * @param {String} sJSON |
+ * @return {jsx.dom.css.HSLColor|null} |
+ * The <code>HSLColor</code> if successful, |
+ * <code>null</code> otherwise. |
+ * @see JSON#parse(String, Function) |
+ */ |
+jsx.dom.css.HSLColor.fromJSON = function (sJSON) { |
+ if (jsx.isNativeMethod(jsx.tryThis("JSON"), "parse")) |
+ { |
+ return JSON.parse(sJSON, this.reviver); |
+ } |
+ |
+ var |
+ color = null, |
+ error = null; |
+ |
+ jsx.tryThis( |
+ function () { color = eval("(" + sJSON + ")"); }, |
+ function (e) { error = e; } |
+ ); |
+ |
+ if (!color || error && error.name == "SyntaxError") |
+ { |
+ return null; |
+ } |
+ |
+ return new this(color.hue, color.saturation, color.lightness, color.opacity); |
+}; |
+ |
+ |
+jsx.dom.css.HSLColor.extend(null, { |
+ /** |
+ * @memberOf jsx.dom.css.HSLColor.prototype |
+ * @param {int} value |
+ */ |
+ setHue: function (value) { |
+ this.hue = value || 0; |
+ }, |
+ |
+ /** |
+ * @param {float} value |
+ */ |
+ setSaturation: function (value) { |
+ this.saturation = value || 0; |
+ }, |
+ |
+ /** |
+ * @param {float} value |
+ */ |
+ setLightness: function (value) { |
+ this.lightness = value || 0; |
+ }, |
+ |
+ /** |
+ * @function |
+ */ |
+ setOpacity: (function () { |
+ var _setOpacity = jsx.dom.css.Color.prototype.setOpacity; |
+ |
+ /** |
+ * @param {float} value |
+ */ |
+ return function (value) { |
+ return _setOpacity.call(this, value); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns the RGB color for the HSL color |
+ * |
+ * @function |
+ */ |
+ toRGB: (function () { |
+ var _Color = jsx.dom.css.Color; |
+ |
+ /** |
+ * @return {jsx.dom.css.Color} |
+ */ |
+ return function () { |
+ /* Cf. <http://www5.informatik.tu-muenchen.de/lehre/vorlesungen/graphik/info/csc/COL_26.htm#topic25> */ |
+ function getRGBValue(n1, n2, hue) |
+ { |
+ if (hue > 360) |
+ { |
+ hue = hue - 360; |
+ } |
+ else if (hue < 0) |
+ { |
+ hue = hue + 360; |
+ } |
+ |
+ var value; |
+ |
+ if (hue < 60) |
+ { |
+ value = n1 + (n2 - n1) * hue / 60; |
+ } |
+ else if (hue < 180) |
+ { |
+ value = n2; |
+ } |
+ else if (hue < 240) |
+ { |
+ value = n1 + (n2 - n1) * (240 - hue) / 60; |
+ } |
+ else |
+ { |
+ value = n1; |
+ } |
+ |
+ return value; |
+ } |
+ |
+ var |
+ hue = this.hue, |
+ saturation = this.saturation / 100, |
+ lightness = this.lightness / 100, |
+ m2, red, green, blue; |
+ |
+ if (lightness <= 0.5) |
+ { |
+ m2 = lightness * (1 + saturation); |
+ } |
+ else |
+ { |
+ m2 = lightness + saturation - lightness * saturation; |
+ } |
+ |
+ var m1 = 2 * lightness - m2; |
+ |
+ if (saturation == 0) |
+ { |
+ red = green = blue = lightness; |
+ } |
+ else |
+ { |
+ red = getRGBValue(m1, m2, hue + 120); |
+ green = getRGBValue(m1, m2, hue); |
+ blue = getRGBValue(m1, m2, hue - 120); |
+ } |
+ |
+ var rgbMax = _Color.MAX_VALUE; |
+ |
+ return new _Color(red * rgbMax, green * rgbMax, blue * rgbMax, this.opacity); |
+ }; |
+ }()), |
+ |
+ toHSLString: function () { |
+ return ('hsl(' + this.hue |
+ + ', ' + this.saturation + '%' |
+ + ', ' + this.lightness + '%)'); |
+ }, |
+ |
+ /** |
+ * Returns the JavaScript Object Notation for the instance. |
+ * |
+ * Returns |
+ * <code>{"red": <var>r</var>, "green": <var>g</var>, "blue": <var>b</var>, |
+ * "opacity": <var>op</var>}</code> |
+ * as supported by e.g. JSON. |
+ * |
+ * @return {string} |
+ */ |
+ toJSON: function () { |
+ return '{' |
+ + '"hue": ' + this.hue |
+ + ', "saturation": ' + this.saturation |
+ + ', "lightness": '+ this.lightness |
+ + ', "opacity": ' + this.opacity |
+ + '}'; |
+ } |
+}); |
+ |
+jsx.dom.css.HSLColor.prototype.toString = |
+jsx.dom.css.HSLColor.prototype.toHSLAString = function () { |
+ return ('hsla(' + this.hue |
+ + ', ' + this.saturation + '%' |
+ + ', ' + this.lightness + '%' |
+ + ', ' + this.opacity + ')'); |
+}; |
+ |
+/** |
+ * Changes the current document into a monochrome version of itself. |
+ * |
+ * @function |
+ */ |
+jsx.dom.css.makeMono = (function () { |
+ var _Color = new jsx.dom.css.Color(); |
+ |
+ return function () { |
+ var |
+ ruleList = new jsx.dom.css.RuleList(), |
+ iter = ruleList.iterator(), |
+ rule, |
+ colorProperties = [ |
+ 'backgroundColor', 'borderColor', 'borderTopColor', |
+ 'borderRightColor', 'borderBottomColor', 'borderLeftColor', |
+ 'outlineColor', 'color' |
+ ], |
+ j, propertyValue; |
+ |
+ while ((rule = iter.next())) |
+ { |
+ for (j = colorProperties.length; j--;) |
+ { |
+ propertyValue = rule[colorProperties[j]]; |
+ if (propertyValue) |
+ { |
+ rule[colorProperties[j]] = _Color.setMono(propertyValue).toString(); |
+ } |
+ } |
+ } |
+ |
+ for (var elems = dhtml.getElemByTagName('*'), i = elems && elems.length; i--;) |
+ { |
+ var elem = elems[i]; |
+ for (j = colorProperties.length; j--;) |
+ { |
+ if ((propertyValue = elem.style[colorProperties[j]])) |
+ { |
+ elem.style[colorProperties[j]] = _Color.setMono(propertyValue).toString(); |
+ } |
+ } |
+ } |
+ }; |
+}()); |
\ No newline at end of file |
/live/dom/css/color.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/events.js |
=================================================================== |
--- live/dom/events.js (nonexistent) |
+++ live/dom/events.js (revision 520) |
@@ -0,0 +1,496 @@ |
+/** |
+ * <title>PointedEars' DOM Library: Events</title> |
+ * @version $Id$ |
+ * @requires dom.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2004-2012 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * Adds an event-handling function (event listener) for a |
+ * DOM object as event target. The following methods are |
+ * used (in order of preference): |
+ * |
+ * <ul> |
+ * <li>addEventListener(...) method (W3C-DOM Level 2 Events)</li> |
+ * <li>Assignment to event-handling property (MSIE 4+ and others)</li> |
+ * </ul> |
+ * |
+ * The attachEvent(...) method (proprietary to MSIE 5+) is not |
+ * used anymore because of the arbitrary execution order of |
+ * event listeners attached with it and because of `this' in |
+ * the event listener not referring to the event target then. |
+ * |
+ * @author |
+ * (C) 2004-2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @partof |
+ * <a href="http://pointedears.de/scripts/dhtml.js">dhtml.js</a> |
+ * @param {Object} oNode |
+ * Reference to the DOM object. |
+ * @param {string} sEvent |
+ * Required string to be used as event identifier. |
+ * If the addEventListener(...) method is not available, |
+ * `on' is used as its prefix to reference the respective |
+ * proprietary event-handling property. |
+ * @param {Function} fListener |
+ * Reference to the Function object that provides |
+ * event-handling code. Use <code>null</code> to |
+ * detach the event listener if, and only if, the |
+ * proprietary event handler property is available. |
+ * @return {Object} |
+ * A reference to the added listener on success, |
+ * <code>null</code> otherwise. |
+ * Since addEventListener(...) returns no value and throws |
+ * no exceptions (what a bad design!), it is considered to be |
+ * successful always, while the new value of the proprietary |
+ * event-handling property must match the assigned value for |
+ * the method to be successful. |
+ * @see <a href="http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.html">QuirksBlog: addEvent() considered harmful (2005-08 CE)</a> |
+ * @see <a href="dom2-events#Events-EventTarget-addEventListener">W3C DOM Level 2 Events: EventTarget::addEventListener</a> |
+ * @see <a href="msdn#workshop/author/dhtml/reference/methods/attachevent.asp">MSDN Library: attachEvent()</a> |
+ */ |
+jsx.dom.addEventListener = function(oNode, sEvent, fListener) { |
+ var |
+ jsx_object = jsx.object, |
+ result = null, |
+ sHandler = "on" + sEvent; |
+ |
+ if (oNode && sEvent && jsx_object.isNativeMethod(fListener)) |
+ { |
+ if (jsx_object.isMethod(oNode, "addEventListener")) |
+ { |
+ jsx.tryThis( |
+ function() { |
+ oNode.addEventListener(sEvent, fListener, false); |
+ result = fListener; |
+ }, |
+ function() { |
+ result = null; |
+ }); |
+ } |
+ else |
+ { |
+ /* |
+ * NOTE: |
+ * No more bogus feature tests here; MSHTML yields `null' for unset |
+ * listeners, Gecko yields `undefined'. |
+ * |
+ * We also don't attempt to use MSHTML's buggy attachEvent() anymore; |
+ * thanks to Peter-Paul Koch for insight: |
+ * http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.html |
+ */ |
+ |
+ var oldListener = oNode[sHandler]; |
+ |
+ if (!oldListener || typeof oldListener._listeners == "undefined") |
+ { |
+ var newListener = function(e) { |
+ if (!e) |
+ { |
+ e = (typeof window != "undefined" && window |
+ && typeof window.event != "undefined" |
+ && window.event); |
+ } |
+ |
+ var |
+ listeners = arguments.callee._listeners, |
+ fpCall = Function.prototype.call; |
+ |
+ for (var i = 0, len = listeners.length; i < len; i++) |
+ { |
+ /* May be undefined because _replaceEventListener() was applied */ |
+ if (jsx_object.isMethod(listeners[i])) |
+ { |
+ /* Host object's methods need not implement call() */ |
+ fpCall.call(listeners[i], this, e); |
+ } |
+ } |
+ }; |
+ |
+ newListener._listeners = []; |
+ |
+ if (oldListener) |
+ { |
+ /* Avoid dependencies, so no Array.prototype.push() call */ |
+ listeners = newListener._listeners; |
+ listeners[listeners.length] = oldListener; |
+ } |
+ |
+ oldListener = newListener; |
+ } |
+ |
+ listeners = oldListener._listeners; |
+ listeners[listeners.length] = fListener; |
+ |
+ /* TODO: Why this way? */ |
+ oNode[sHandler] = oldListener; |
+ |
+ result = (oNode[sHandler] == oldListener) && oldListener || null; |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Adds a capturing event-handling function (event listener) for |
+ * a DOM object as event target. Capturing means that the event |
+ * target receives the event before all other targets, before |
+ * event bubbling. The following methods are used (in order of |
+ * preference): |
+ * |
+ * <ul> |
+ * <li>addEventListener(...) method (W3C DOM Level 2 Events)</li> |
+ * <li>TODO: captureEvent(...) method (NS 4)</li> |
+ * </ul> |
+ * |
+ * @author |
+ * (C) 2007-2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/dhtml.js |
+ * @param {Node} oNode |
+ * Reference to the DOM object. |
+ * @param {string} sEvent |
+ * Required string to be used as event identifier. |
+ * If the addEventListener(...) method is not available, |
+ * `on' is used as its prefix to reference the respective |
+ * proprietary event-handling property. |
+ * @param {Function} fListener |
+ * Reference to the Function object that provides |
+ * event-handling code. Use <code>null</code> to |
+ * remove the event handler if, and only if, the |
+ * proprietary event-handling property is available. |
+ * @return {boolean} |
+ * <code>true</code> on success, <code>false</code> otherwise. |
+ * @see <a href="dom2-events#Events-EventTarget-addEventListener">W3C DOM Level 2 Events: EventTarget::addEventListener()</a> |
+ */ |
+jsx.dom.addEventListenerCapture = function(oNode, sEvent, fListener) { |
+ if (oNode && sEvent && jsx.object.isMethod(fListener)) |
+ { |
+ oNode.addEventListener(sEvent, fListener, true); |
+ return true; |
+ } |
+ |
+ return false; |
+}; |
+ |
+/** |
+ * Replaces the event-handling function (event listener) for a |
+ * DOM object as event target. The following methods are |
+ * used (in order of preference): |
+ * |
+ * <ul> |
+ * <li>removeEventListener() and addEventListener(...) methods |
+ * (W3C-DOM Level 2)</li> |
+ * <li>Assignment to event-handling property (MSIE 4+ and others)</li> |
+ * </ul> |
+ * |
+ * Note that this still relies on the existence of the proprietary |
+ * event-handling property that yields a reference to the (first added) |
+ * event listener for the respective event. |
+ * |
+ * @author |
+ * (C) 2007-2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/dhtml.js |
+ * @param {Node} oNode |
+ * Reference to the DOM object. |
+ * @param {string} sEvent |
+ * Required string to be used as event identifier. |
+ * `on' is used as its prefix to reference the respective |
+ * proprietary event-handling property. |
+ * @param {Function} fListener |
+ * Reference to the Function object that provides |
+ * event-handling code. Use <code>null</code> to |
+ * remove the event handler if, and only if, the |
+ * proprietary event-handling property is available. |
+ * @param {boolean} bUseCapture (optional) |
+ * Optional. If <code>true</code>, the argument indicates that |
+ * the user wishes to initiate capture. Corresponds to the |
+ * third parameter of the addEventListener(...) method, is |
+ * ignored if that method is not supported by the DOM (object). |
+ * @return {boolean} |
+ * <code>true</code> on success, <code>false</code> otherwise. |
+ * Since addEventListener(...) returns no value and throws |
+ * no exceptions, it is considered to be |
+ * successful always, while the new value of the proprietary |
+ * event-handling property must match the assigned value for |
+ * the method to be successful. |
+ * @see <a href="dom2-events#Events-EventTarget-removeEventListener">W3C DOM Level 2 Events: EventTarget::removeEventListener()</a> |
+ * @see <a href="dom2-events#Events-EventTarget-addEventListener">W3C DOM Level 2 Events: EventTarget::addEventListener()</a> |
+ */ |
+jsx.dom.replaceEventListener = function(oNode, sEvent, fListener, bUseCapture) { |
+ var |
+ jsx_object = jsx.object, |
+ result = false, |
+ sHandler = "on" + sEvent; |
+ |
+ if (oNode && sEvent && jsx_object.isMethod(fListener)) |
+ { |
+ if (jsx_object.areMethods(oNode, ["removeEventListener", "addEventListener"])) |
+ { |
+ if (jsx_object.isMethod(oNode[sHandler])) |
+ { |
+ var fOldListener = oNode[sHandler]; |
+ oNode.removeEventListener(sEvent, fOldListener, !!bUseCapture); |
+ } |
+ |
+ oNode.addEventListener(sEvent, fListener, !!bUseCapture); |
+ result = true; |
+ } |
+ else |
+ { |
+ oNode[sHandler] = fListener; |
+ result = (oNode[sHandler] == fListener); |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Removes an event-handling function (event listener) for a |
+ * DOM object as event target. |
+ * <ul> |
+ * <li>removeEventListener() and addEventListener(...) methods |
+ * (W3C-DOM Level 2)</li> |
+ * <li>Assignment to event-handling property (MSIE 4+ and others)</li> |
+ * </ul> |
+ * |
+ * Note that this still relies on the existence of the proprietary |
+ * event-handling property that yields a reference to the (first added) |
+ * event listener for the respective event. |
+ * |
+ * @author |
+ * (C) 2010, 2013 Thomas Lahn <js@PointedEars.de> |
+ * @param {Node} oNode |
+ * Reference to the DOM object. |
+ * @param {string} sEvent |
+ * Required string to be used as event identifier. |
+ * `on' is used as its prefix to reference the respective |
+ * proprietary event-handling property. |
+ * @param {Function} fListener |
+ * Reference to the Function object that provides |
+ * event-handling code. Is ignored to (re)set the |
+ * proprietary event-handling property if available. |
+ * @param {boolean} bUseCapture (optional) |
+ * Optional. If <code>true</code>, the argument indicates that |
+ * the user wished to initiate capture. Corresponds to the |
+ * third parameter of the removeEventListener(...) method, is |
+ * ignored if that method is not supported by the DOM (object). |
+ * @return {boolean} |
+ * <code>true</code> on success, <code>false</code> otherwise. |
+ * Since removeEventListener(...) returns no value and throws |
+ * no exceptions (what a bad design!), it is considered to be |
+ * successful always, while attachEvent(...) returns success |
+ * or failure, and the new value of the proprietary |
+ * event-handling property must be <code>null</code> for |
+ * the method to be successful. |
+ * @see <a href="dom2-events#Events-EventTarget-removeEventListener">W3C DOM Level 2 Events: EventTarget::removeEventListener()</a> |
+ * @see <a href="msdn#workshop/author/dhtml/reference/methods/detachevent.asp">MSDN Library: detachEvent()</a> |
+ */ |
+jsx.dom.removeEventListener = function(oNode, sEvent, fListener, bUseCapture) { |
+ var |
+ result = false, |
+ jsx_object = jsx.object, |
+ sHandler = "on" + sEvent; |
+ |
+ if (oNode && sEvent) |
+ { |
+ if (jsx_object.isMethod(fListener)) |
+ { |
+ if (jsx_object.isMethod(oNode, "removeEventListener")) |
+ { |
+ oNode.removeEventListener(sEvent, fListener, bUseCapture); |
+ return true; |
+ } |
+ } |
+ |
+ if (jsx_object.isMethod(oNode, sHandler)) |
+ { |
+ var |
+ handler = oNode[sHandler], |
+ listeners = handler._listeners; |
+ |
+ if (listeners) |
+ { |
+ for (var i = listeners.length; i--;) |
+ { |
+ if (listeners[i] == fListener) |
+ { |
+ delete listeners[i]; |
+ result = (typeof listeners[i] == "undefined"); |
+ } |
+ } |
+ } |
+ else |
+ { |
+ handler = oNode[sHandler] = null; |
+ result = (handler == null); |
+ } |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Returns a reference to a <code>Function</code> that can be used as event listener. |
+ * Differences between DOM implementations are smoothed out as much as |
+ * possible (e.g., the first argument of that function will be a reference |
+ * to the <code>Event</code> instance regardless if the DOM implementation passes it, |
+ * and you can use the <code>target</code> property even if |
+ * the DOM implementation supports <code>srcElement</code> instead.) |
+ * |
+ * @param {Callable} f |
+ * Reference to the object that contains the actual listener code |
+ * @return {Function} |
+ * A reference to a <code>Function</code> that can be used as event listener. |
+ */ |
+jsx.dom.createEventListener = function(f) { |
+ var jsx_object = jsx.object; |
+ |
+ function listener(e) |
+ { |
+ if (typeof e == "undefined" |
+ && typeof window != "undefined" |
+ && typeof window.event != "undefined" |
+ && window.event) |
+ { |
+ e = window.event; |
+ } |
+ |
+ /* |
+ * NOTE: Should not augment host objects, and cannot inherit from Events, |
+ * so values need to be copied |
+ */ |
+ var e2 = {originalEvent: e}; |
+ var properties = ["type", "charCode", "keyCode", "which", "keyIdentifier", |
+ "clientX", "clientY", "offsetX", "offsetY", |
+ "shiftKey", "ctrlKey", "altKey", "metaKey"]; |
+ for (var i = properties.length; i--;) |
+ { |
+ var property = properties[i]; |
+ e2[property] = e[property]; |
+ } |
+ |
+ /* FIXME: jsx.object.extend() does not work well with host objects */ |
+ e2.getProperty = function(p) { |
+ return e[p]; |
+ }; |
+ |
+ e2.target = (typeof e.target != "undefined") |
+ ? e.target |
+ : (typeof e.srcElement != "undefined") |
+ ? e.srcElement |
+ : null, |
+ |
+ e2.stopPropagation = (function(e) { |
+ if (jsx_object.isMethod(e, "stopPropagation")) |
+ { |
+ return function() { |
+ e.stopPropagation(); |
+ }; |
+ } |
+ |
+ if (typeof e.cancelBubble != "undefined") |
+ { |
+ return function() { |
+ e.cancelBubble = true; |
+ }; |
+ } |
+ })(e); |
+ |
+ e2.preventDefault = (function(e) { |
+ if (jsx_object.isMethod(e, "preventDefault")) |
+ { |
+ return function() { |
+ return e.preventDefault(); |
+ }; |
+ } |
+ |
+ return function() { |
+ e.returnValue = false; |
+ }; |
+ })(e); |
+ |
+ e2.initEvent = (function() { |
+ if (jsx_object.isMethod(e, "initEvent")) |
+ { |
+ return function(eventTypeArg, canBubbleArg, cancelableArg) { |
+ return e.initEvent(eventTypeArg, canBubbleArg, cancelableArg); |
+ }; |
+ } |
+ |
+ return function() {}; |
+ })(); |
+ |
+ return f.call(this, e2); |
+ } |
+ |
+ /* Strict W3C DOM Level 2 Events compatibility */ |
+ listener.handleEvent = function(e) { |
+ return this(e); |
+ }; |
+ |
+ return listener; |
+}; |
+ |
+/** |
+ * Prevents the default action for an event. |
+ * |
+ * @param {Event} e |
+ * @return {boolean} |
+ * <code>true</code> if <var>e</var> is not a valid value, |
+ * <code>false</code> otherwise. The return value of this |
+ * method can be used to return a value to the event-handler. |
+ */ |
+jsx.dom.preventDefault = function(e) { |
+ if (!e) |
+ { |
+ return true; |
+ } |
+ |
+ if (jsx.object.isMethod(e, "preventDefault")) |
+ { |
+ e.preventDefault(); |
+ } |
+ |
+ if (typeof e.returnValue != "undefined") |
+ { |
+ e.returnValue = false; |
+ } |
+ |
+ return false; |
+}; |
\ No newline at end of file |
/live/dom/events.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/flash.js |
=================================================================== |
--- live/dom/flash.js (nonexistent) |
+++ live/dom/flash.js (revision 520) |
@@ -0,0 +1,76 @@ |
+/** |
+ * <title>Flash Support Library</title> |
+ * @file flash.js |
+ * @requires dhtml.js |
+ * @author |
+ * (C) 2010, 2011 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+jsx.dom.flash = { |
+ /** @version */ |
+ version: "0.1.0.2010070915", |
+ copyright: "Copyright \xA9 2010", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://PointedEars.de/scripts/", |
+ |
+ /** |
+ * Fixes Shockwave Flash movies embedded with the <code>object</code> |
+ * element (having type="application/x-shockwave-flash" specified) |
+ * so that they work in ActiveX/COM-supporting browsers (most notably |
+ * IE/MSHTML). |
+ * |
+ * @return boolean |
+ * <code>true</code> if successful, <code>false</code> otherwise. |
+ */ |
+ fix: (function () { |
+ var |
+ jsx_object = jsx.object, |
+ jsx_global = jsx.global, |
+ jsx_dom = jsx.dom; |
+ |
+ return function () { |
+ if (!jsx_object.isMethod(jsx_global, "ActiveXObject")) |
+ { |
+ return false; |
+ } |
+ |
+ var objs = jsx_dom.getElemByTagName("object"); |
+ if (objs && objs.length) |
+ { |
+ for (var i = objs.length; i--;) |
+ { |
+ var o = objs[i]; |
+ if (o.type == "application/x-shockwave-flash") |
+ { |
+ if (jsx_object.isMethod(o, "removeAttribute")) |
+ { |
+ o.removeAttribute("data"); |
+ } |
+ |
+ o.classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540001"; |
+ } |
+ } |
+ |
+ return true; |
+ } |
+ |
+ return false; |
+ }; |
+ }()) |
+}; |
\ No newline at end of file |
/live/dom/flash.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/window.js |
=================================================================== |
--- live/dom/window.js (nonexistent) |
+++ live/dom/window.js (revision 520) |
@@ -0,0 +1,582 @@ |
+/** |
+ * <title>Window Function Library</title> |
+ * @file window.js |
+ * @author |
+ * (C) 1999‒2013 Thomas Lahn <window.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+/* |
+ * Refer window.htm file for general documentation. |
+ * |
+ * This document contains JavaScriptDoc. Refer |
+ * http://pointedears.de/scripts/JSDoc/ |
+ * for details. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ jsx.dom = {}; |
+} |
+ |
+jsx.dom.window = { |
+ version: "1.29.$Revision$", |
+ copyright: "Copyright \xA9 1999-2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/", |
+ |
+ screenInfo: { |
+ getDim: function () { |
+ return { |
+ width: screen.width, |
+ height: screen.height |
+ }; |
+ }, |
+ |
+ getAvailDim: function () { |
+ return { |
+ width: screen.availWidth, |
+ height: screen.availHeight |
+ }; |
+ }, |
+ |
+ getInnerDim: function () { |
+ return { |
+ width: window.innerWidth, |
+ height: window.innerHeight |
+ }; |
+ }, |
+ |
+ getColorDepth: function () { |
+ return (screen.colorDepth || screen.pixelDepth); |
+ } |
+ } |
+}; |
+ |
+var windowVersion = jsx.dom.window.version; |
+var windowCopyright = jsx.dom.window.copyright; |
+var windowAuthor = jsx.dom.window.author; |
+var windowEmail = jsx.dom.window.email; |
+var windowPath = jsx.dom.window.path; |
+// var windowDocURL = windowPath + "window.htm"; |
+ |
+/* Script exceptions */ |
+ |
+/** |
+ * @param Msg : string |
+ * @type boolean |
+ * @return false |
+ */ |
+function windowException(Msg) |
+{ |
+ alert( |
+ "window.js " |
+ + windowVersion |
+ + "\n" |
+ + windowCopyright |
+ + " " |
+ + windowAuthor |
+ + " <" |
+ + windowEmail |
+ + ">\n\n" |
+ + Msg); |
+ return false; |
+} |
+ |
+/** |
+ * @param sFunctionName : string |
+ * @param iArg : number |
+ * @return boolean |
+ */ |
+function EInvalidArgNum(sFunctionName, iArg) |
+{ |
+ // if (arguments.length < 2) iArg = "?"; |
+ return windowException( |
+ sFunctionName |
+ + ": The user script did not pass the required number of arguments (" |
+ + iArg |
+ + ").\nRefer documentation in script file for correct function call."); |
+} |
+ |
+/* Script features */ |
+ |
+/** |
+ * @param sCaption : string |
+ * @type boolean |
+ * @return true |
+ */ |
+function setStatus (sCaption) |
+{ |
+ window.status = String(sCaption); |
+ return true; |
+} |
+ |
+/** |
+ * @type boolean |
+ * @return true |
+ */ |
+function resetStatus () |
+{ |
+ window.status = window.defaultStatus; |
+ return true; |
+} |
+ |
+var sLinkOutMsg_de = |
+ "Dieser Link ist offline nicht verfügbar.\n\n" |
+ + "Wenn Sie mit dem Internet verbunden sind, steht Ihnen die Seite online" |
+ + " zur Verfügung.\n\n" |
+ + "Möchten Sie jetzt eine Verbindung zu dieser Seite herstellen?"; |
+var sLinkOutMsg_us = |
+ "This link is not available offline.\n\n" |
+ + "If you are connected to the Internet, the website is available online.\n\n" |
+ + "Do you wish to connect to this website now?';"; |
+var sLinkOutMsg = sLinkOutMsg_de; |
+ |
+/** |
+ * @param sURL : string |
+ * @param sLink : string |
+ * @param bShowURL : optional boolean |
+ * @param aTarget : optional string|number |
+ * @param iWidth : optional number |
+ * @param iHeight : optional number |
+ * @param sOptions : optional string |
+ */ |
+function linkOut(sURL, sLink, bShowURL, aTarget, iWidth, iHeight, sOptions) |
+{ |
+ if (arguments.length < 1) |
+ { |
+ EInvalidArgNum("linkOut", 1); |
+ return false; |
+ } |
+ |
+ var arg = sLinkOutMsg; |
+ /* |
+ * version 1.05.2000.3 update, formerly bShowURL as 2nd argument; |
+ * fixed problem with websites created earlier |
+ */ |
+ if (arguments.length < 3) |
+ { |
+ bShowURL = true; |
+ } |
+ |
+ var oldArg; |
+ if ((sURL != "" && bShowURL == true) |
+ || (arguments.length >= 2 && sLink != "")) |
+ { |
+ oldArg = arg; |
+ arg = "\n\n" + oldArg; |
+ } |
+ |
+ if (sURL != "" && bShowURL) |
+ { |
+ oldArg = arg; |
+ arg = sURL + oldArg; |
+ } |
+ |
+ if (arguments.length >= 2 && sLink != "") |
+ { |
+ if (sURL != "" && bShowURL) |
+ { |
+ oldArg = arg; |
+ arg = sLink + "\n" + oldArg; |
+ } |
+ else |
+ { |
+ oldArg = arg; |
+ arg = sLink + oldArg; |
+ } |
+ } |
+ |
+ if (window.confirm(arg)) |
+ { |
+ var oTarget = document; |
+ if (arguments.length >= 4 |
+ && aTarget != "" |
+ && aTarget.toLowerCase() != "_self") |
+ { |
+ /* |
+ * version 1.05.2000.3 update, formerly neither empty strings |
+ * nor "_self" supported |
+ */ |
+ if (isNaN(aTarget)) |
+ { |
+ if (aTarget.toLowerCase() == "_new" |
+ || aTarget.toLowerCase() == "_blank") |
+ { |
+ popUp(sURL, iWidth, iHeight, sOptions); |
+ return false; |
+ } |
+ oTarget = parent.frames[aTarget].document; |
+ /* and below: v1.09.2000.3 bugfix */ |
+ } |
+ else |
+ { |
+ oTarget = parent.frames[aTarget].document; |
+ } |
+ } |
+ oTarget.location = ""; |
+ oTarget.location.href = sURL; |
+ } |
+ |
+ /* version 1.15.2000.11 update */ |
+ return false; |
+} |
+ |
+/** |
+ * @param sURL : string |
+ * @param iWidth : number |
+ * @param iHeight : number |
+ * @param sOptions : string |
+ * @type boolean |
+ * @return false |
+ */ |
+function popUp(sURL, iWidth, iHeight, sOptions) |
+{ |
+ var sFeatures = "height=" + iHeight + ",width=" + iWidth; |
+ if (arguments.length > 3) |
+ { |
+ sFeatures += "," + sOptions; |
+ } |
+ var wndChild = window.open(sURL, null, sFeatures); |
+ return false; |
+} |
+ |
+/* |
+ * OpenChildWin(...) call redirected to popUp(...) for compatibility to |
+ * previous versions |
+ */ |
+var OpenChildWin = popUp; |
+ |
+/** |
+ * @param sURL : string |
+ * @param targetFrame : number|string |
+ * @return Window |
+ */ |
+function LoadFrame(sURL, targetFrame) |
+{ |
+ if (arguments.length < 2) |
+ { |
+ /* Raise exception if required arguments are missing */ |
+ return EInvalidArgNum("LoadFrame", 2); |
+ } |
+ |
+ if (parent.frames[targetFrame]) |
+ { |
+ parent.frames[targetFrame].location.href = sURL; |
+ return sURL; |
+ } |
+ |
+ return targetFrame; |
+} |
+var sEnlargeImgTitle_en = "Click to close window"; |
+var sEnlargeImgTitle_de = "Klicken, um Fenster zu schliessen"; |
+var sEnlargeImgTitle = sEnlargeImgTitle_en; |
+ |
+/** |
+ * Opens a dependent browser child window containing an (enlarged) |
+ * image. A primary mouse button click on the image or the window |
+ * closes the window. |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * @author |
+ * (c) 2000-2005 Thomas Lahn <PointedEars@gmx.de> |
+ * Protected under the terms of the GNU General Public License. |
+ * See http://www.fsf.org/copyleft/gpl.html for details. |
+ * @param sImageURL : string |
+ * Required. URL of the (enlarged) image. |
+ * @param sCaption : optional string |
+ * Optional. Caption of the browser child window. |
+ * If not provided, sImageURL will be used as caption. |
+ * @param iWidth : optional number |
+ * Optional. Width of the browser child window in pixels. |
+ * If not provided or 0, the window will be resized to fit |
+ * image width. |
+ * @param iHeight : optional number |
+ * Height of the browser child window in pixels. |
+ * If not provided or 0, the window will be resized to fit |
+ * image height. |
+ * @param bCenter : optional boolean |
+ * Optional. If <code>true</code>, the window will be centered |
+ * on the desktop. Note: Use with caution! Not all desktops |
+ * return the correct/viable position for the centered window. |
+ * @return type boolean |
+ * Always <code>false</code> which allows for |
+ * <a href="..." ... onclick="return enlargeImg(...);"> |
+ */ |
+function enlargeImg(sImageURL, sCaption, iWidth, iHeight, bCenter) |
+{ |
+ var ident = enlargeImg; |
+ var argnum = ident.arguments.length; |
+ if (sImageURL.charAt(0) != "/") |
+ { |
+ /* |
+ * Version 1.17.2002.2 bugfix: |
+ * Calculates absolute image file paths of relative ones |
+ * Fixes bug with Mozilla 0.9.7 and above (includes Netscape 6.1+) |
+ * that generated pages have no path except about:blank which causes |
+ * relative paths for their resources to fail |
+ */ |
+ /* Windows local path */ |
+ var iPathEnd = window.location.pathname.lastIndexOf('\\'); |
+ if (iPathEnd < 0) |
+ { |
+ iPathEnd = window.location.pathname.lastIndexOf('/'); |
+ } |
+ |
+ /* URL */ |
+ if (iPathEnd > -1) |
+ { |
+ /* Extend filename to full path */ |
+ sImageURL = window.location.pathname.substring(0, iPathEnd) |
+ + "/" + sImageURL; |
+ } |
+ } |
+ |
+ if (argnum < 1) |
+ { |
+ return (EInvalidArgNum("Level 2: enlargeImg", 1)); |
+ } |
+ |
+ /* preset also window position and size in the case the temporary script below fails */ |
+ var sOptions = |
+ "toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=yes" |
+ + ((argnum > 2) && !isNaN(iWidth)) ? (",width=" + iWidth + 12) : "" |
+ + ((argnum > 3) && !isNaN(iHeight)) ? (",height=" + iHeight + 32) : "" |
+ + ",left=" |
+ + parseInt(screen.width / 2 - (argnum > 2 |
+ && !isNaN(iWidth) ? iWidth / 2 : 0)) |
+ + ",top=" |
+ + parseInt(screen.height / 2 - (argnum > 3 |
+ && !isNaN(iHeight) ? iHeight / 2 : 0)); |
+ |
+ var w = window.open("", "wndZoom", sOptions); |
+ if (w) |
+ { |
+ var d = w.document; |
+ if (d) |
+ { |
+ d.open("text/html"); |
+ var s = [ |
+ '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"', |
+ ' "http://www.w3.org/TR/html4/loose.dtd">', |
+ '<html>', |
+ ' <head>', |
+ ' <meta http-equiv="Content-Type" content="text/html;' |
+ + ' charset=UTF-8">', |
+ |
+ ' <meta name="generator" value="JSX:window.js{', |
+ + windowVersion + '}:enlargeImg(...) ' + windowCopyright |
+ + ' ' + windowAuthor + ' <' + windowEmail + '>">', |
+ |
+ ' <title>' + ((argnum > 1 && sCaption != "") ? sCaption : sImageURL) |
+ + '<\/title>', |
+ |
+ /* |
+ * temporary script and updated inline code to fix |
+ * BUG_Enlarge:ALWAYS_FIT-TO-IMAGE |
+ */ |
+ ' <script type="text/javascript">', |
+ ' var orig = {};\n', |
+ |
+ ' function fitWindowToImage()', |
+ ' {', |
+ ' var imgWidth = ' |
+ + (argnum > 2 && iWidth != 0 ? iWidth : "document.images[0].width + 12") |
+ + ';', |
+ ' var imgHeight = ' |
+ + (argnum > 3 && iHeight != 0 ? iHeight : "document.images[0].height + 32") |
+ + ';\n', |
+ |
+ /* MSHTML */ |
+ ' if (typeof window.resizeTo == "object")', |
+ ' {', |
+ ' orig.left = window.screenLeft;', |
+ ' orig.top = window.screenTop;', |
+ ' orig.width = window.width;', |
+ ' orig.height = window.height;', |
+ ' window.resizeTo(imgWidth, imgHeight);', |
+ ' }', |
+ /* Gecko */ |
+ ' else if (typeof window.sizeToContent == "function")', |
+ ' {', |
+ ' orig.left = window.screenX;', |
+ ' orig.top = window.screenY;', |
+ ' orig.width = window.innerWidth;', |
+ ' orig.height = window.innerHeight;', |
+ ' window.sizeToContent();', |
+ ' }', |
+ /* NN4 */ |
+ ' else if (typeof document.layers == "object")', |
+ ' {', |
+ ' orig.left = window.screenX;', |
+ ' orig.top = window.screenY;', |
+ ' orig.width = window.innerWidth;', |
+ ' orig.height = window.innerHeight;', |
+ ' window.innerWidth = document.width;', |
+ ' window.innerHeight = document.height;', |
+ ' }', |
+ |
+ (argnum < 5 || argnum > 4 && bCenter && window.moveTo) |
+ ? (' window.moveTo(\n' |
+ + ' screen.width/2 - imgWidth/2,\n' |
+ + ' screen.height/2 - imgHeight/2);\n') |
+ : '', |
+ ' }\n', |
+ |
+ ' function restoreWindowSize()', |
+ ' {', |
+ ' if (typeof orig.left != "undefined"', |
+ ' && typeof orig.top != "undefined"', |
+ ' && typeof window.resizeTo != "undefined")', |
+ ' window.resizeTo(orig.left, orig.top);\n', |
+ ' if (document.all && window.resizeTo)', |
+ ' {', |
+ ' try', |
+ ' {', |
+ ' window.screenLeft = orig.left;', |
+ ' window.screenTop = orig.top;', |
+ ' }', |
+ ' catch (e)', |
+ ' {}', |
+ ' }', |
+ ' else if (typeof window.sizeToContent == "function"', |
+ ' || typeof document.layers == "object")', |
+ ' {', |
+ ' window.screenX = orig.left;', |
+ ' window.screenY = orig.top;', |
+ ' window.innerWidth = orig.width;', |
+ ' window.innerHeight = orig.height;', |
+ ' }', |
+ ' }', |
+ ' <\/script>', |
+ ' <\/head>\n', |
+ ' <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"' |
+ + ' style="margin: 0 !important">', |
+ ' <a href="javascript:restoreWindowSize();window.close();"', |
+ ' title="' + sEnlargeImgTitle + '"', |
+ ' onclick="restoreWindowSize(); window.close(); return false;">' |
+ + '<img', |
+ ' src="' + sImageURL + '" border="0"', |
+ ' onload="fitWindowToImage(this);"><\/a>', |
+ ' <\/body>', |
+ '<\/html>' |
+ ].join("\n"); |
+ d.write(s); |
+ d.close(); |
+ w.focus(); |
+ } |
+ else |
+ { |
+ w.close(); |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+} |
+/* |
+ * Enlarge(...) call redirects to enlargeImg(...) for |
+ * compatibility with previous versions |
+ */ |
+var Enlarge = enlargeImg; |
+ |
+jsx.dom.window.fullscreen = (function () { |
+ var _isHostMethod = jsx.object.isHostMethod; |
+ |
+ return { |
+ getSupportedPropertyName: function (base, names, test) { |
+ for (var i = 0, len = names.length; i < len; ++i) |
+ { |
+ var name = names[i]; |
+ if (test.call(null, base, name)) |
+ { |
+ return name; |
+ } |
+ } |
+ |
+ return null; |
+ }, |
+ |
+ getCancelMethodName: (function () { |
+ var _supportedCancel; |
+ |
+ return function () { |
+ if (typeof _supportedCancel == "undefined") |
+ { |
+ var properties = ["cancelFullScreen", "mozCancelFullScreen", |
+ "webkitCancelFullScreen"]; |
+ |
+ _supportedCancel = this.getSupportedPropertyName(document, properties, _isHostMethod); |
+ } |
+ |
+ return _supportedCancel; |
+ }; |
+ }()), |
+ |
+ getElementPropertyName: (function () { |
+ var _supportedElement; |
+ |
+ return function () { |
+ if (typeof _supportedElement == "undefined") |
+ { |
+ var properties = ["fullscreenElement", "mozFullScreenElement", |
+ "webkitFullscreenElement"]; |
+ |
+ _supportedElement = this.getSupportedPropertyName(document, properties, |
+ function (base, name) { |
+ return typeof base[name] != "undefined"; |
+ }); |
+ } |
+ |
+ return _supportedElement; |
+ }; |
+ }()), |
+ |
+ isSupportedBy: function (elem) { |
+ var methods = ["requestFullscreen", "mozRequestFullScreen", |
+ "webkitRequestFullscreen"]; |
+ return this.getSupportedPropertyName(elem, methods, _isHostMethod); |
+ }, |
+ |
+ isFullscreen: function () { |
+ var supportedProperty = this.getElementPropertyName(); |
+ return supportedProperty && document[supportedProperty] != null; |
+ }, |
+ |
+ cancel: function () { |
+ var supportedCancel = this.getCancelMethodName(); |
+ if (supportedCancel) |
+ { |
+ document[supportedCancel](); |
+ } |
+ }, |
+ |
+ requestOn: function (elem) { |
+ var requestMethodName; |
+ |
+ if (elem && (requestMethodName = this.isSupportedBy(elem))) |
+ { |
+ elem[requestMethodName](); |
+ } |
+ } |
+ }; |
+}()); |
/live/dom/window.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/dom/storage.js |
=================================================================== |
--- live/dom/storage.js (nonexistent) |
+++ live/dom/storage.js (revision 520) |
@@ -0,0 +1,209 @@ |
+/** |
+ * <title>PointedEars' DOM Library: Web Storage</title> |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2012, 2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+if (typeof jsx.dom.storage == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom.storage = {}; |
+} |
+ |
+/** |
+ * @param storageName : string (optional) Storage name ("local" and "session" are supported) |
+ * @returns |
+ * <code>true</code> if any or the specified Storage is supported, |
+ * <code>false</code> otherwise. |
+ */ |
+jsx.dom.storage.isSupported = function (storageName) { |
+ if (storageName) |
+ { |
+ return jsx.tryThis( |
+ function () { |
+ return (typeof window[storageName + "Storage"] != "undefined"); |
+ }, |
+ function () { |
+ return false; |
+ } |
+ ); |
+ } |
+ |
+ var _storage = jsx.dom.storage; |
+ return _storage.localStorage.isSupported() || _storage.sessionStorage.isSupported(); |
+}; |
+ |
+/** |
+ * Sets an item in a {@link Storage}. Used internally. |
+ * |
+ * @param storage : Storage |
+ * @param key : string |
+ * @param value |
+ */ |
+jsx.dom.storage.setItem = function (storage, key, value) { |
+ storage.setItem(key, JSON.stringify(value)); |
+}; |
+ |
+/** |
+ * Retrieves an item from a {@link Storage}. Used internally. |
+ * |
+ * @param storage : Storage |
+ * @param key : string |
+ * @return any item value |
+ */ |
+jsx.dom.storage.getItem = function (storage, key) { |
+ var value = storage.getItem(key); |
+ |
+ /* |
+ * NOTE: Shortcut evaluation for handling "" only |
+ */ |
+ return value && JSON.parse(value); |
+}; |
+ |
+if (typeof jsx.dom.storage.localStorage == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom.storage.localStorage = {}; |
+} |
+ |
+/** |
+ * @returns |
+ * <code>true</code> if Local Storage is supported, |
+ * <code>false</code> otherwise. |
+ * @function |
+ */ |
+jsx.dom.storage.localStorage.isSupported = (function () { |
+ var _storage = jsx.dom.storage; |
+ |
+ return function () { |
+ return _storage.isSupported("local"); |
+ }; |
+}()); |
+ |
+/** |
+ * Sets an item in the Local {@link Storage} |
+ * |
+ * @function |
+ */ |
+jsx.dom.storage.localStorage.setItem = (function () { |
+ var _storage = jsx.dom.storage; |
+ |
+ /** |
+ * @param key : string |
+ * @param value |
+ */ |
+ return function (key, value) { |
+ _storage.setItem(window.localStorage, key, value); |
+ }; |
+}()); |
+ |
+/** |
+ * Retrieves an item from the Local {@link Storage} |
+ * |
+ * @function |
+ */ |
+jsx.dom.storage.localStorage.getItem = (function () { |
+ var _storage= jsx.dom.storage; |
+ |
+ /** |
+ * @param key : string |
+ * @return any item value |
+ */ |
+ return function (key) { |
+ return _storage.getItem(window.localStorage, key); |
+ }; |
+}()); |
+ |
+if (typeof jsx.dom.storage.sessionStorage == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom.storage.sessionStorage = {}; |
+} |
+ |
+/** |
+ * @returns |
+ * <code>true</code> if Session {@link Storage} is supported |
+ * <code>false</code> otherwise. |
+ * @function |
+ */ |
+jsx.dom.storage.sessionStorage.isSupported = (function () { |
+ var _storage = jsx.dom.storage; |
+ |
+ return function () { |
+ return _storage.isSupported("session"); |
+ }; |
+}()); |
+ |
+/** |
+ * Sets an item in the Session {@link Storage} |
+ * |
+ * @function |
+ */ |
+jsx.dom.storage.sessionStorage.setItem = (function () { |
+ var _storage = jsx.dom.storage; |
+ |
+ /** |
+ * @param key : string |
+ * @param value |
+ */ |
+ return function (key, value) { |
+ _storage.setItem(window.sessionStorage, key, value); |
+ }; |
+}()); |
+ |
+/** |
+ * Retrieves an item from the Session {@link Storage} |
+ * |
+ * @function |
+ */ |
+jsx.dom.storage.sessionStorage.getItem = (function () { |
+ var _storage= jsx.dom.storage; |
+ |
+ /** |
+ * @param key : string |
+ * @return any item value |
+ */ |
+ return function (key) { |
+ return _storage.getItem(window.sessionStorage, key); |
+ }; |
+}()); |
\ No newline at end of file |
/live/dom/storage.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/ani.bak.js |
=================================================================== |
--- live/dom/ani.bak.js (nonexistent) |
+++ live/dom/ani.bak.js (revision 520) |
@@ -0,0 +1,364 @@ |
+/** |
+ * @author PointedEars |
+ * @depends dhtml.js |
+ */ |
+ |
+function InitializedObject() {} |
+InitializedObject.prototype = { |
+ setParameters: function(oParams) { |
+ for (var p in oParams) |
+ { |
+ this[p] = oParams[p]; |
+ } |
+ } |
+}; |
+ |
+/** |
+ * This framework implements animation of objects as a set of one or more |
+ * {@link #Timeline}s, starting in parallel when the animation is played. |
+ * Each timeline is supposed to animate another target object (although |
+ * that is not required). |
+ * |
+ * @param aTarget |
+ * @param aTimelines |
+ * @returns {Animation} |
+ */ |
+var Animation = function(aTarget, aTimelines) { |
+ this.setTarget(aTarget); |
+ this.timelines = aTimelines; |
+}.extend(InitializedObject, { |
+ setTarget: function(aTarget) { |
+ this.target = |
+ typeof aTarget == "string" |
+ ? dhtml.getElemById(aTarget) |
+ : aTarget; |
+ }, |
+ |
+ play: function() { |
+ var |
+ types = { |
+ NUMBER: 0, |
+ LENGTH: 1, |
+ PERCENTAGE: 2, |
+ URI: 3, |
+ COUNTER: 4, |
+ COLOR: 5, |
+ STRING: 6 |
+ }, |
+ |
+ /* |
+ * TODO: |
+ * The `correspondsTo' property helps to identify the corresponding |
+ * property in order to determine the optimum animation frame length |
+ * (see below). |
+ */ |
+ propertyInfo = { |
+ left: { type: types.LENGTH, correspondsTo: "top" }, |
+ top: { type: types.LENGTH, correspondsTo: "left" }, |
+ right: { type: types.LENGTH, correspondsTo: "bottom" }, |
+ bottom: { type: types.LENGTH, correspondsTo: "right" }, |
+ width: { type: types.LENGTH, correspondsTo: "height" }, |
+ height: { type: types.LENGTH, correspondsTo: "width" }, |
+ color: { type: types.COLOR }, |
+ backgroundColor: { type: types.COLOR }, |
+ "background-color": { type: types.COLOR } |
+ }; |
+ |
+ function getCurrentStyle(oTarget, oStyle) |
+ { |
+ for (var p in oStyle) |
+ { |
+ if (typeof oStyle[p] != "undefined") |
+ { |
+ var oProperty = oStyle[p]; |
+ |
+ oProperty.current = |
+ typeof oProperty.from != "undefined" |
+ ? oProperty.from |
+ : currentStyle(oTarget, p); |
+ |
+ if (typeof oProperty.unit == "undefined") |
+ { |
+ switch (propertyInfo[p].type) |
+ { |
+ case types.LENGTH: |
+ oProperty.unit = "px"; |
+ } |
+ } |
+ } |
+ } |
+ } |
+ |
+ /* FIXME: Array change workaround */ |
+ this.timeline = this.timelines[0]; |
+ |
+ /* |
+ * 1. Determine the current style (position, color etc.) of the |
+ * target object |
+ */ |
+ getCurrentStyle(this.target, this.timeline.style); |
+ |
+ var |
+ s = this.timeline.style, |
+ duration = this.timeline.duration, |
+ dt = 10, |
+ steps = Math.floor(duration / dt), |
+ timeout = []; |
+ |
+ /* |
+ * 2. For each set property, calculate the value difference for |
+ * each step |
+ */ |
+ // var lengthProperties = new Object(); |
+ for (var p in s) |
+ { |
+ /* TODO: Handle unsupported/untyped properties */ |
+ switch (propertyInfo[p].type) |
+ { |
+ case types.LENGTH: |
+ // lengthProperties[p] = true; |
+ |
+ s[p].current = parseFloat(s[p].current) || 0; |
+ |
+ if (typeof s[p].by != "undefined") |
+ { |
+ s[p].to = (parseFloat(s[p].from) || 0) |
+ + (parseFloat(s[p].by) || 0); |
+ } |
+ |
+ s[p].difference = |
+ ((parseFloat(s[p].to) || 0) - s[p].current) |
+ / steps; |
+ |
+ /* DEBUG */ |
+ // window.alert([dx, dy, dt]); |
+ |
+ break; |
+ |
+ case types.COLOR: |
+ s[p].current = new Color(s[p].current); |
+ var diffCol = s[p].difference = s[p].current.diff(new Color(s[p].to)); |
+ |
+ for (var i in diffCol) |
+ { |
+ diffCol[i] /= steps; |
+ } |
+ |
+ break; |
+ |
+ default: |
+ } |
+ |
+ if (typeof s[p].from != "undefined") |
+ { |
+ dhtml.setStyleProperty( |
+ this.target, |
+ p, |
+ s[p].from |
+ + (typeof s[p].unit != "undefined" |
+ ? s[p].unit |
+ : "")); |
+ } |
+ } |
+ |
+ /* |
+ * TODO |
+ * 2b. For all properties of type `length' that are given in the |
+ * unit `px', calculate the optimum number of pixel-wise steps. |
+ */ |
+// if (dx < 1 || dy < 1) |
+// { |
+// if (dx < dy) |
+// { |
+// dx = 1; |
+// steps = x_new - x; |
+// dy = (y_new - y) / steps; |
+// } |
+// else |
+// { |
+// dy = 1; |
+// steps = y_new - y; |
+// dx = (x_new - x) / steps; |
+// } |
+// |
+// dt = duration / steps; |
+// } |
+ |
+ /* DEBUG */ |
+ // window.alert([dx, dy, dt]); |
+ |
+ /* |
+ * 3. If there is a property to be set that requires positioning, |
+ * and no positioning mode was defined, set "relative" |
+ * FIXME: *Iff*, not always! |
+ */ |
+ if (currentStyle(this.target).position == "static") |
+ { |
+ dhtml.setStyleProperty(this.target, "position", "relative"); |
+ } |
+ |
+ /* |
+ * 4. Set the timeouts required for each property change in the |
+ * animation, thereby starting the animation after the last |
+ * loop. |
+ */ |
+ for (var t = 0, i = steps; i--;) |
+ { |
+ for (var p in s) |
+ { |
+ /* TODO: Handle unsupported/untyped properties */ |
+ switch (propertyInfo[p].type) |
+ { |
+ case types.LENGTH: |
+ s[p].current += s[p].difference; |
+ break; |
+ |
+ case types.COLOR: |
+ var curCol = s[p].current; |
+ /* TODO: Have a Color.prototype.inc() do the computation */ |
+ s[p].current = curCol.inc(s[p].difference).toString(); |
+ } |
+ } |
+ |
+ var f = ( |
+ function(oTarget, oStyle, t) |
+ { |
+ var s2 = new Object(); |
+ for (var p in oStyle) |
+ { |
+ s2[p] = oStyle[p].current; |
+ s2[p + "_unit"] = oStyle[p].unit; |
+ } |
+ |
+ return ( |
+ function() |
+ { |
+ // DEBUG |
+ if (typeof console != "undefined") |
+ { |
+ console.log("t = " + t); |
+ } |
+ |
+ for (var p in oStyle) |
+ { |
+ // DEBUG |
+ if (typeof console != "undefined") |
+ { |
+ console.log("s2['" + p + "'] = " + s2[p]); |
+ } |
+ |
+ // TODO: units |
+ var unit = s2[p + "_unit"]; |
+ dhtml.setStyleProperty( |
+ oTarget, |
+ p, |
+ s2[p] + (unit ? unit : "")); |
+ } |
+ |
+// oTarget.style.left = x + "px"; |
+// oTarget.styl |
+// e.top = y + "px"; |
+ } |
+ ); |
+ } |
+ )(this.target, s, t += dt); |
+ |
+ timeout[i] = window.setTimeout(f, t); |
+ |
+ f = null; |
+ } |
+ |
+ /* DEBUG */ |
+// window.setTimeout( |
+// function() { window.alert(new Date() - dStart); }, |
+// t + dt); |
+ } |
+}); |
+ |
+/** |
+ * A <code>Timeline</code> of an {@link Animation} consists of |
+ * {@link Keyframe}s or delays, property changes, and subordered timelines |
+ * ("child timelines"). Unless specified otherwise, the time offset of an |
+ * item in one timeline depends on the previous item in that timeline: |
+ * |
+ * <pre> |
+ * Animation ---. |
+ * Timeline 1: :--Action0------Action1------Action2-----Action3-> |
+ * Timeline 2: `----------Action0------Action1-------Action2----> |
+ * </pre> |
+ * |
+ * An item can also be a <code>Timeline</code> ("child timeline"), in which |
+ * case the time offset of the child timeline depends on the previous action |
+ * in the parent timeline, however the time offset of the next action in the |
+ * parent is independent of the child. In that case, the child timeline |
+ * affects the same target object as its parent unless specified otherwise. |
+ * |
+ * <pre> |
+ * Animation ---. |
+ * Timeline 1: :---Action0------+----------Action1a-------------> |
+ * Timeline 1a: | `---Action1a:0---Action1a:1-----> |
+ * Timeline 2: `-------Action0------Action1-------Action2-------> |
+ * </pre> |
+ * |
+ * There is no explicit limit as to how deep timelines may be nested. |
+ * However, for computing the frames of the animation each timeline's |
+ * render() method must call the render() method of its child timelines, |
+ * if it has any, so that its animation frames can be prepared, and the |
+ * timeline played. As a result, nesting depth is limited implicitly |
+ * by the available stack space or limits imposed by the ECMAScript |
+ * implementation, whichever comes first. Further, the more timelines |
+ * are nested, the more operations need be performed at approximately |
+ * the same time; this can slow down the entire animation considerably |
+ * and lead to considerably higher CPU load. |
+ * |
+ * @param {Object} oParams |
+ * Parameters of this timeline. Supported properties include: |
+ * <table> |
+ * <th> |
+ * </table> |
+ */ |
+function Timeline(oParams) |
+{ |
+ for (var p in oParams) |
+ { |
+ this[p] = oParams[p]; |
+ } |
+} |
+ |
+Timeline.prototype = { |
+ constructor: Timeline, |
+ |
+ toString: function() { |
+ return serialize(this, {depth: -1}); |
+ } |
+}; |
+ |
+/** |
+ * A <code>KeyFrame</code> defines which properties an animated object |
+ * should have relative to the {@link Timeline} it is defined for. It is |
+ * used as a reference point to compute the frames of the animation between |
+ * it and other <code>Keyframe</code>s or {@link Pause}s. |
+ * |
+ * @param {Object} oParams |
+ * |
+ */ |
+function KeyFrame(oParams) |
+{ |
+ for (var p in oParams) |
+ { |
+ this[p] = oParams[p]; |
+ } |
+} |
+ |
+/** |
+ * A <code>Pause</code> is a deliberate temporary stop of animation in a |
+ * {@link Timeline}. Whenever a <code>Pause</code> is inserted as an |
+ * item of a timeline, no tween will be computed between adjacent |
+ * {@link KeyFrame}s. |
+ * |
+ * @param {Object} oParams |
+ */ |
+function Pause(oParams) |
+{ |
+ |
+} |
\ No newline at end of file |
Index: live/dom/xpath.js |
=================================================================== |
--- live/dom/xpath.js (nonexistent) |
+++ live/dom/xpath.js (revision 520) |
@@ -0,0 +1,512 @@ |
+"use strict"; |
+/** |
+ * <title>PointedEars' XPath Library</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author (C) 2008‒2012 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+/* |
+ * Refer xpath.js.diff for changes to the last version, |
+ * and xpath.htm file for a printable documentation. |
+ * |
+ * This document contains JavaScriptDoc. See |
+ * http://pointedears.de/scripts/JSdoc/ |
+ * for details. |
+ */ |
+ |
+if (typeof XPathResult == "undefined") |
+{ |
+ var XPathResult = { |
+ ANY_TYPE: 0, |
+ NUMBER_TYPE: 1, |
+ STRING_TYPE: 2, |
+ BOOLEAN_TYPE: 3, |
+ UNORDERED_NODE_ITERATOR_TYPE: 4, |
+ ORDERED_NODE_ITERATOR_TYPE: 5, |
+ UNORDERED_NODE_SNAPSHOT_TYPE: 6, |
+ ORDERED_NODE_SNAPSHOT_TYPE: 7, |
+ ANY_UNORDERED_NODE_TYPE: 8, |
+ FIRST_ORDERED_NODE_TYPE: 9 |
+ }; |
+} |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.dom.xpath = { |
+ version: "0.1.$Revision$ ($Date$)", |
+ copyright: "Copyright \xA9 2008-2011", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://PointedEars.de/scripts/", |
+ |
+ /** |
+ * Returns the result of evaluating an XPath expression against a context node |
+ * |
+ * @function |
+ * @param expression : String |
+ * XPath expression. You may use a namespace prefix starting with "_" |
+ * to indicate a default namespace of the context node (that XPath |
+ * usually cannot resolve directly). You then need to provide a custom |
+ * namespace resolver, like one created with |
+ * {@link jsx.dom.xpath#createCustomNSResolver}, to return the namespace |
+ * URI for those prefixes. This workaround is necessary because MSXML |
+ * XPath for JScript does not require or support a custom namespace |
+ * resolver for elements in the default namespace, and those virtual |
+ * prefixes must be trimmed from the expression by this method beforehand. |
+ * @param contextNode : Node |
+ * Context node |
+ * @param namespaceResolver : Function |
+ * Namespace resolver. If not provided, a default namespace |
+ * resolver will be created using {@link jsx.dom.xpath#createDefaultNSResolver}. |
+ * Is ignored if MSXML is used, as MSXML for JScript supports only |
+ * the default namespace resolver. See the section |
+ * {@ref "Namespace Resolvers"} for details. |
+ * @param resultType : Number |
+ * Expected XPath result type. Should be one of the XPathResult.* constants. |
+ * Is ignored if MSXML is used, as MSXML only supports the equivalent of |
+ * {@link XPathResult#ORDERED_NODE_ITERATOR_TYPE}. |
+ * @param oResult : XPathResult |
+ * Optional XPathResult. For backwards compatibility only. |
+ * @return Result of the XPath expression, |
+ * or <code>null</code> on recoverable error |
+ * @type Null|number|string|boolean|Array |
+ * @throws DOMException on unrecoverable XPath error |
+ */ |
+ evaluate: |
+ (function () { |
+ var isMethod = jsx.object.isMethod; |
+ var _XPathResult = XPathResult; |
+ var createDefaultNSResolver = null; |
+ |
+ return function (expression, contextNode, namespaceResolver, |
+ resultType, oResult) { |
+ var result = null; |
+ |
+ if (!contextNode) |
+ { |
+ contextNode = document; |
+ var documentNode = contextNode; |
+ } |
+ else |
+ { |
+ documentNode = contextNode.ownerDocument || contextNode; |
+ } |
+ |
+ if (isMethod(documentNode, "evaluate")) |
+ { |
+ var nsResolver = namespaceResolver |
+ || ( |
+ createDefaultNSResolver |
+ || (createDefaultNSResolver = jsx.dom.xpath.createDefaultNSResolver) |
+ )(contextNode, documentNode); |
+ var iResultType = resultType || 0; |
+ var objResult = oResult || null; |
+ |
+ /* Make DOM exception recoverable in WebCore */ |
+ jsx.tryThis( |
+ function () { |
+ result = documentNode.evaluate(expression, contextNode, nsResolver, |
+ iResultType, objResult); |
+ }, |
+ function (e) { |
+ jsx.rethrowThis(e); |
+ } |
+ ); |
+ } |
+ else if (isMethod(contextNode, "selectNodes")) |
+ { |
+ result = contextNode.selectNodes(expression.replace(/_\w*:/g, "")); |
+ resultType = _XPathResult.ORDERED_NODE_ITERATOR_TYPE; |
+ } |
+ |
+ if (result) |
+ { |
+ var found = []; |
+ |
+ switch (typeof result.resultType != "undefined" |
+ ? result.resultType |
+ : resultType) |
+ { |
+ case _XPathResult.NUMBER_TYPE: |
+ if (typeof result.numberValue != "undefined") |
+ { |
+ result = result.numberValue; |
+ } |
+ break; |
+ |
+ case _XPathResult.STRING_TYPE: |
+ if (typeof result.stringValue != "undefined") |
+ { |
+ result = result.stringValue; |
+ } |
+ break; |
+ |
+ case _XPathResult.BOOLEAN_TYPE: |
+ if (typeof result.booleanValue != "undefined") |
+ { |
+ result = result.booleanValue; |
+ } |
+ break; |
+ |
+ case _XPathResult.UNORDERED_NODE_ITERATOR_TYPE: |
+ case _XPathResult.ORDERED_NODE_ITERATOR_TYPE: |
+ if (isMethod(result, "iterateNext")) |
+ { |
+ /* DOM Level 3 XPath: NodeIterator */ |
+ var res; |
+ while ((res = result.iterateNext())) |
+ { |
+ found.push(res); |
+ } |
+ |
+ result = found; |
+ } |
+ else if (typeof result.length != "undefined") |
+ { |
+ /* MSXML DOM: NodeList */ |
+ for (var i = 0, len = result.length; i < len; ++i) |
+ { |
+ found.push(result[i]); |
+ } |
+ |
+ result = found; |
+ } |
+ break; |
+ |
+ case _XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE: |
+ case _XPathResult.ORDERED_NODE_SNAPSHOT_TYPE: |
+ if (typeof result.snapshotLength != "undefined" |
+ && isMethod(result, "snapshotItem")) |
+ { |
+ for (var i = 0, len = result.snapshotLength; i < len; i++) |
+ { |
+ found.push(result.snapshotItem(i)); |
+ } |
+ |
+ result = found; |
+ } |
+ break; |
+ |
+ case _XPathResult.ANY_UNORDERED_NODE_TYPE: |
+ case _XPathResult.FIRST_ORDERED_NODE_TYPE: |
+ if (typeof result.singleNodeValue != "undefined") |
+ { |
+ result = result.singleNodeValue; |
+ } |
+ break; |
+ |
+ default: |
+ jsx.throwThis("jsx.dom.xpath.InvalidImplementationError"); |
+ result = null; |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+ }()), |
+ |
+/** |
+ * @section Namespace Resolvers |
+ * |
+ * To facilitate matching of elements and attributes in namespaces |
+ * with XPath, a namespace resolver is required. A namespace resolver |
+ * is a function that returns the namespace URI for a given namespace |
+ * prefix found in an XPath expression. |
+ * |
+ * JSX:xpath.js provides three ways to create a namespace resolver: |
+ * <ul> |
+ * <li>{@link jsx.dom.xpath#createDefaultNSResolver} creates a built-in |
+ * namespace resolver (if available) that can resolve elements |
+ * and attributes in the document in the null namespace (in no |
+ * namespace) or in namespaces with prefixes (declared with |
+ * <code>xmlns:<var>prefix</var>="<var>URI</var>"</code>. |
+ * It cannot resolve elements and attributes in a default |
+ * namespace (declared with <code>xmlns="<var>URI</var>"</code>). |
+ * </li> |
+ * <li>{@link jsx.dom.xpath#createCustomNSResolver} creates a custom |
+ * namespace resolver that can resolve only namespace prefixes |
+ * that you specify. You can use this kind of resolver |
+ * to select elements and attributes in known default namespaces, |
+ * by giving those prefixes starting with <code>_</code>, and |
+ * namespaces with other prefixes.</li> |
+ * <li>{@link jsx.dom.xpath#createFullNSResolver} gives you the |
+ * best of both worlds. It creates a customizable namespace |
+ * resolver that scans the document starting from a given context |
+ * node (the document element node by default) for the first |
+ * default namespace declaracation and for declarations of |
+ * namespaces with a prefix. |
+ * </ul> |
+ */ |
+ |
+ /** |
+ * Creates and returns a default namespace resolver, as created and |
+ * returned by <code>Document::createNSResolver()</code>, if available, |
+ * or <code>null</code>. |
+ * |
+ * Note that despite its name a default namespace resolver cannot |
+ * resolve elements in a default namespace. Use |
+ * {@link jsx.dom.xpath#createCustomNSResolver()} to create such a resolver |
+ * instead. |
+ * |
+ * @param contextNode : Node |
+ * Context node for which the default namespace resolver should be |
+ * created. |
+ * @param documentNode : Document |
+ * Document node, required for calling the <code>createNSResolver()</code> |
+ * method. If not specified, <code>document</code> is used. |
+ * @return NSResolver|null |
+ */ |
+ createDefaultNSResolver: function (contextNode, documentNode) { |
+ if (!documentNode) |
+ { |
+ documentNode = document; |
+ } |
+ |
+ return (jsx.object.isMethod(documentNode, "createNSResolver") |
+ ? documentNode.createNSResolver( |
+ (contextNode.ownerDocument == null |
+ ? contextNode.documentElement |
+ : contextNode.ownerDocument.documentElement)) |
+ : null); |
+ }, |
+ |
+ /** |
+ * Collects and returns the namespaces of a node and its descendants. |
+ * |
+ * Collects the namespace prefixes and URIs of <var>contextNode</var> and |
+ * its descendant element nodes. Duplicate prefixes with different namespace |
+ * URI are ignored and must be resolved manually using the <var>namespaces</var> |
+ * argument of {@link jsx.dom.xpath#createFullNSResolver()}. |
+ * |
+ * @param namespaces : Object |
+ * Contains the collected namespace declarations. Existing properties |
+ * are preserved. |
+ * @param contextNode : Document|Element |
+ * The parent node from where to start searching for namespace |
+ * declarations. If it is a Document node, the document element node |
+ * is used instead. The default is the document element node. |
+ * @return {Object} |
+ * The resulting value of <var>namespaces</var> if successful, |
+ * <code>null</code> otherwise. |
+ * @throws jsx.dom.xpath.InvalidNodeError if a value has been specified |
+ * for <var>contextNode</var> that is not a reference to a Document |
+ * node or an Element node. |
+ * @see jsx.dom.xpath#createFullNSResolver() |
+ */ |
+ collectNamespaces: function jsx_xpath_collectNamespaces (namespaces, contextNode) { |
+ if (!namespaces) |
+ { |
+ jsx.warn("`namespaces' is not convertible to an Object; argument is not modified."); |
+ namespaces = {}; |
+ } |
+ |
+ /* Scan entire document by default */ |
+ if (!contextNode) |
+ { |
+ contextNode = document.documentElement; |
+ } |
+ |
+ /* if DOCUMENT_NODE, use root element */ |
+ if (contextNode.nodeType == 9) |
+ { |
+ contextNode = contextNode.documentElement; |
+ } |
+ |
+ if (!contextNode || contextNode.nodeType != 1) |
+ { |
+ jsx.throwThis("jsx.dom.xpath.InvalidNodeError", contextNode); |
+ return null; |
+ } |
+ |
+ for (var i = 0, attribs = contextNode.attributes, len = attribs && attribs.length; |
+ i < len; |
+ ++i) |
+ { |
+ var attr = attribs[i]; |
+ var attrName = attr.name; |
+ var matches; |
+ |
+ if ((matches = String(attrName).match(/^xmlns($|:(.+))/))) |
+ { |
+ var originalPrefix = matches[2]; |
+ var prefix = originalPrefix || "_"; |
+ |
+ if (typeof namespaces[prefix] == "undefined") |
+ { |
+ var attrValue = attr.value; |
+ |
+ /* |
+ * Default NS declaration with empty value means _no_ namespace, |
+ * see <http://www.w3.org/TR/REC-xml-names/#defaulting> |
+ */ |
+ if (!originalPrefix && attrValue == "") |
+ { |
+ attrValue = null; |
+ } |
+ |
+ namespaces[prefix] = attrValue; |
+ } |
+ } |
+ } |
+ |
+ for (var i = 0, childNodes = contextNode.childNodes, len = childNodes && childNodes.length; |
+ i < len; |
+ ++i) |
+ { |
+ var childNode = childNodes[i]; |
+ |
+ /* If ELEMENT_NODE, recurse */ |
+ if (childNode.nodeType == 1) |
+ { |
+ jsx.tryThis( |
+ function() { |
+ jsx_xpath_collectNamespaces(namespaces, childNode); |
+ }, |
+ function (e) { |
+ if (e.name === "jsx.dom.xpath.InvalidArgumentError") |
+ { |
+ jsx.throwThis(e); |
+ } |
+ }); |
+ } |
+ } |
+ |
+ return namespaces; |
+ }, |
+ |
+ /** |
+ * Creates and returns a custom namespace resolver. |
+ * |
+ * This method exists primarily to facilitate the matching of elements |
+ * that are in the default namespace as XPath defines <tt>QNames</tt> |
+ * without prefix to match only elements in the null namespace. Use it |
+ * instead of {@link jsx.dom.xpath#createFullNSResolver} if you only want |
+ * to match elements in custom default namespaces. |
+ * |
+ * See also the description of the <var>expression</var> argument of |
+ * {@link jsx.dom.xpath#evaluate} for details. |
+ * |
+ * @param namespaces : Object |
+ * Namespace declarations. The property names are the namespace |
+ * prefixes, the property values are the namespace URIs. |
+ * @return {Function} A namespace resolver that can resolve the |
+ * declared namespaces. A selector in an undeclared namespace is |
+ * considered to be in the null namespace. |
+ */ |
+ createCustomNSResolver: function (namespaces) { |
+ return function (prefix) { |
+ return namespaces[prefix] || null; |
+ }; |
+ }, |
+ |
+ /** |
+ * Creates and returns a customizable full namespace resolver. |
+ * |
+ * Creates and returns a customizable namespace resolver that |
+ * considers the namespaces already declared in the document first. |
+ * |
+ * Like {@link jsx.dom.xpath#createCustomNSResolver}, this method exists |
+ * primarily to facilitate the matching of elements that are in a |
+ * default namespace. Use it instead of |
+ * {@link jsx.dom.xpath#createCustomNSResolver} if you need to match elements |
+ * in the context node's default namespace, or in one of the namespaces |
+ * with prefix declared in the context node or its descendant elements. |
+ * |
+ * See also the description of the <var>expression</var> argument of |
+ * {@link jsx.dom.xpath#evaluate} for details. |
+ * |
+ * @param namespaces : Object |
+ * Namespace declarations. The property names are the namespace |
+ * prefixes, the property values are the namespace URIs. |
+ * @param contextNode : Document|Element |
+ * The parent node from where to start searching for namespace |
+ * declarations. If it is a Document node, the document element node |
+ * is used instead. The default is the document element node. |
+ * @return {Function} A namespace resolver that can resolve the |
+ * declared namespaces. A selector in an undeclared namespace is |
+ * considered to be in the null namespace. |
+ * @throws jsx.dom.xpath#InvalidNodeError if a value has been specified |
+ * for <var>contextNode</var> that is not a reference to a Document |
+ * node or an Element node. |
+ * @see jsx.dom.xpath#collectNamespaces(string, Element|Document) |
+ * @function |
+ */ |
+ createFullNSResolver: (function () { |
+ var collectNamespaces = null; |
+ |
+ return function (namespaces, contextNode) { |
+ if (contextNode) |
+ { |
+ if (!namespaces) |
+ { |
+ namespaces = {}; |
+ } |
+ |
+ ( |
+ collectNamespaces || (collectNamespaces = jsx.dom.xpath.collectNamespaces) |
+ )(namespaces, contextNode); |
+ } |
+ |
+ return function (prefix) { |
+ return namespaces[prefix] || null; |
+ }; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Exception thrown if an unsupported XPath implementation is encountered |
+ * |
+ * @function |
+ */ |
+ InvalidImplementationError: (function () { |
+ jsx.Error.call(this); |
+ }).extend(jsx.Error, { |
+ name: "jsx.dom.xpath.InvalidImplementationError" |
+ }), |
+ |
+ /** |
+ * Exception thrown if an invalid Node reference is passed |
+ * |
+ * @function |
+ */ |
+ InvalidNodeError: (function (contextNode) { |
+ jsx.Error.call(this, contextNode); |
+ }).extend(jsx.Error, { |
+ name: "jsx.dom.xpath.InvalidNodeError" |
+ }) |
+}; |
\ No newline at end of file |
/live/dom/xpath.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/dom/timer.js |
=================================================================== |
--- live/dom/timer.js (nonexistent) |
+++ live/dom/timer.js (revision 520) |
@@ -0,0 +1,105 @@ |
+ |
+ |
+jsx.dom.Timer = function(f, oProperties) { |
+ if (f){this.form = f;} |
+ this.message = ""; |
+ |
+ if (typeof Object.keys == "function") |
+ { |
+ var keys = Object.keys(oProperties); |
+ for (var i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var p = keys[i]; |
+ this[p] = oProperties[p]; |
+ } |
+ } |
+ else |
+ { |
+ for (p in oProperties) |
+ { |
+ this[p] = oProperties[p]; |
+ } |
+ } |
+}; |
+ |
+jsx.dom.Timer.prototype = { |
+ constructor: jsx.dom.Timer, |
+ |
+ start: function(o) |
+ { |
+ if (o){this.form = o.form;} |
+ |
+ // clear the previous timeout |
+ this.stop(); |
+ |
+ if (jsx.object.isMethod(window, "setTimeout")) |
+ { |
+ var me = this; |
+ this.timeout = window.setTimeout( |
+ function() { me.tick(1000); me = null; }, |
+ 1000); |
+ } |
+ }, |
+ |
+ tick: function(interval) |
+ { |
+ var |
+ es = this.form.elements, |
+ hours = +es["hours"].value, |
+ mins = +es["minutes"].value, |
+ secs = +es["seconds"].value; |
+ |
+ if (--secs < 0) |
+ { |
+ secs = 59; |
+ mins--; |
+ } |
+ |
+ if (mins < 0) |
+ { |
+ mins = 59; |
+ hours--; |
+ } |
+ |
+ if (hours < 0) |
+ { |
+ this.ring(); |
+ } |
+ else |
+ { |
+ es["hours"].value = hours; |
+ es["minutes"].value = leadingZero(mins, 2); |
+ es["seconds"].value = leadingZero(secs, 2); |
+ |
+ var me = this; |
+ this.timeout = window.setTimeout( |
+ function() { me.tick(interval); me = null; }, |
+ interval); |
+ } |
+ }, |
+ |
+ ring: function() |
+ { |
+ this.stop(); |
+ playSound('/media/audio/sound/display.wav'); |
+ window.alert(this.message || "RING!"); |
+ }, |
+ |
+ stop: function(o) |
+ { |
+ if (!this.form && o){this.form = o.form;} |
+ |
+ if (typeof this.timeout != "undefined" |
+ && jsx.object.isMethod(window, "clearTimeout")) |
+ { |
+ window.clearTimeout(this.timeout); |
+ delete this.timeout; |
+ } |
+ }, |
+ |
+ reset: function(o) |
+ { |
+ this.stop(); |
+ if (this.form){this.form.reset();} |
+ } |
+}; |
/live/dom/timer.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/audio.js |
=================================================================== |
--- live/dom/audio.js (nonexistent) |
+++ live/dom/audio.js (revision 520) |
@@ -0,0 +1,80 @@ |
+function playSound(sSoundFile, Loop, sAttrib) |
+{ |
+ var b = document.body, o; |
+ if (b |
+ && jsx.object.isMethod(b, "appendChild") |
+ && (o = b.appendChild(jsx.dom.createElement("object")))) |
+ { |
+ o.data = sSoundFile; |
+/* |
+ var p = dhtml.createElement("param"); |
+ if (p) |
+ { |
+ p.name = "FileName"; |
+ p.value = sSoundFile; |
+ o.appendChild(p); |
+ } |
+ |
+ p = dhtml.createElement("param"); |
+ if (p) |
+ { |
+ p.name = "AutoPlay"; |
+ p.value = "1"; |
+ o.appendChild(p); |
+ } |
+ |
+ p = dhtml.createElement("param"); |
+ if (p) |
+ { |
+ p.name = "EnableJavaScript"; |
+ p.value = "true"; |
+ o.appendChild(p); |
+ } |
+*/ |
+ var me = arguments.callee; |
+ |
+ if (typeof me.sounds == "undefined") |
+ { |
+ me.sounds = new Array(); |
+ } |
+ |
+ me.sounds.push(o); |
+ |
+ if (typeof me.handlerAdded == "undefined") |
+ { |
+ jsx.dom.addEventListener( |
+ b, |
+ "unload", |
+ function() { |
+ for (var i = me.sounds && me.sounds.length; i--;) |
+ { |
+ b.removeChild(me.sounds[i]); |
+ } |
+ |
+ b = null; |
+ }); |
+ |
+ me.handlerAdded = true; |
+ } |
+ } |
+/* |
+ if (document.all) |
+ { |
+ var sAdjacent = "<bgsound "; |
+ if ((playSound.arguments.length == 3) && (sAttrib.length != "")) |
+ { |
+ sAdjacent += sAttrib; |
+ sAdjacent += " "; |
+ } |
+ sAdjacent += "src=\""; |
+ sAdjacent += sSoundFile; |
+ sAdjacent += "\" loop=\""; |
+ if (isNaN(Loop)) |
+ sAdjacent += Loop; |
+ else |
+ sAdjacent += String(Loop); |
+ sAdjacent += "\">"; |
+ document.all.tags("head")[0].insertAdjacentHTML("BeforeEnd", sAdjacent); |
+ } |
+*/ |
+} |
\ No newline at end of file |
/live/dom/audio.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/dom/widgets2.js |
=================================================================== |
--- live/dom/widgets2.js (nonexistent) |
+++ live/dom/widgets2.js (revision 520) |
@@ -0,0 +1,323 @@ |
+/** |
+ * @requires dom.js, events.js |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.dom == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.dom = {}; |
+} |
+ |
+/** |
+ * Constructor of the abstract prototype for widgets. It provides shallow |
+ * copying of the passed properties, stores the reference to the manipulated DOM |
+ * object, and applies the given properties to the display of that object. |
+ * Widgets should inherit from this prototype, and this constructor should be |
+ * called only from the constructors of prototypes of specialized widgets. |
+ * |
+ * @param oTarget : Element |
+ * Reference to the DOM object that provides the client area |
+ * for the widget (optional) |
+ * @param oParent : Element |
+ * Parent element (optional) |
+ * @param oProperties |
+ * Properties to initialize this object with (optional) |
+ */ |
+jsx.dom.Widget = function(oTarget, oParent, oProperties) { |
+ this.target = oTarget || document.createElement(this.elementType); |
+ this._parent = oParent || document.body; |
+ |
+ if (!this.target) |
+ { |
+ jsx.throwThis("TypeError", "No or invalid target"); |
+ } |
+ |
+ for (var property in oProperties) |
+ { |
+ var propertyValue = oProperties[property]; |
+ if (property == "style") |
+ { |
+ for (var styleProperty in propertyValue) |
+ { |
+ this.target.style[styleProperty] = propertyValue[styleProperty]; |
+ } |
+ } |
+ else |
+ { |
+ this[property] = propertyValue; |
+ } |
+ } |
+ |
+ if (oProperties.resizable) |
+ { |
+ this.makeResizeable(); |
+ } |
+ |
+ var me = this; |
+ document.body.addEventListener("unload", function() { |
+ /* break circular reference */ |
+ me.target = null; |
+ }, false); |
+}; |
+ |
+jsx.dom.Widget.prototype = { |
+ /** |
+ * @type Function |
+ */ |
+ constructor: jsx.dom.Widget, |
+ |
+ /** |
+ * Widgets are `div' elements by default. Inheriting classes should |
+ * override this when appropriate (e. g., a menu should be a `ul') |
+ */ |
+ elementType: "div", |
+ |
+ /** |
+ * @type Element |
+ */ |
+ target: null, |
+ |
+ /* Move to Resizeable type? */ |
+ resizeable: false, |
+ resizeFlags: { |
+ n: false, |
+ ne: false, |
+ e: false, |
+ se: false, |
+ s: false, |
+ sw: false, |
+ w: false, |
+ nw: false |
+ }, |
+ |
+ /* |
+ * The height/width in pixels of the edges of the widget |
+ * where the resize handles are located |
+ */ |
+ resizeEdges: { |
+ top: 4, |
+ right: 4, |
+ bottom: 4, |
+ left: 4 |
+ }, |
+ |
+ /** |
+ * Causes the widget to be rendered, and attached to the document tree |
+ * if not already attached. |
+ * |
+ * @param parent |
+ * Reference to the object representing the parent element to which |
+ * the widget should be appended as child. The default is document.body. |
+ */ |
+ render: function(parent) { |
+ this.appendTo(parent); |
+ this.target.style.display = ""; |
+ }, |
+ |
+ /** |
+ * Causes the widget not to be rendered, without removing it from |
+ * the document tree. |
+ */ |
+ unrender: function() { |
+ this.target.style.display = "none"; |
+ }, |
+ |
+ /** |
+ * Shows the widget |
+ */ |
+ show: function() { |
+ target.style.display.visibility = "visible"; |
+ }, |
+ |
+ /** |
+ * Hides the widget, but keeps its box |
+ */ |
+ hide: function() { |
+ this.target.style.display.visibility = "hidden"; |
+ }, |
+ |
+ /** |
+ * Appends the widget as a child element |
+ * |
+ * @param parent |
+ * @returns |
+ */ |
+ appendTo: function(parent) { |
+ var result = null; |
+ |
+ if (typeof parent == "undefined") |
+ { |
+ parent = this._parent; |
+ } |
+ |
+ var target = this.target; |
+ if (!target.parentNode || (parent != target.parentNode)) |
+ { |
+ result = parent.appendChild(target); |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ remove: function() { |
+ return this.target.parentNode.removeChild(this.target); |
+ }, |
+ |
+ /** |
+ * @protected |
+ * @param properties : Object |
+ * @param propertyName : String |
+ * @param defaultValue : mixed |
+ */ |
+ _setStylePropertyOrDefault: function(properties, propertyName, defaultValue) { |
+ if (typeof properties.style == "undefined" |
+ || typeof properties.style[propertyName] == "undefined") |
+ { |
+ properties.style[propertyName] = defaultValue; |
+ } |
+ }, |
+ |
+ /** |
+ * Makes this widget resizeable |
+ */ |
+ makeResizeable: function() { |
+ var |
+ _jsx_dom = jsx.dom, |
+ _addEventListener = _jsx_dom.addEventListener, |
+ _createEventListener = _jsx_dom.createEventListener; |
+ |
+ var defaultCursor = this.target.style.cursor; |
+ |
+ var me = this; |
+ _addEventListener(this.target, "mousemove", |
+ _createEventListener(function(e) { |
+ var resizeEdges = me.resizeEdges; |
+ var inLeftMargin = (e.offsetX <= resizeEdges.left); |
+ var inTopMargin = (e.offsetY <= resizeEdges.top); |
+ if (inLeftMargin || inTopMargin) |
+ { |
+ var resizeFlags = me.resizeFlags; |
+ if (inLeftMargin && inTopMargin) |
+ { |
+ if (resizeFlags.nw) |
+ { |
+ this.style.cursor = "nw-resize"; |
+ } |
+ } |
+ else if (inLeftMargin) |
+ { |
+ if (resizeFlags.w) |
+ { |
+ this.style.cursor = "w-resize"; |
+ } |
+ } |
+ else |
+ { |
+ if (resizeFlags.n) |
+ { |
+ this.style.cursor = "n-resize"; |
+ } |
+ } |
+ } |
+ else |
+ { |
+ this.style.cursor = defaultCursor; |
+ } |
+ })); |
+ |
+ _addEventListener(this.target, "mouseout", |
+ _createEventListener(function() { |
+ this.style.cursor = defaultCursor; |
+ })); |
+ } |
+}; |
+ |
+/** |
+ * Creates a window |
+ * |
+ * @param target : Element |
+ * Target element (optional) |
+ * @param parent : Element |
+ * Parent element (optional) |
+ * @param properties |
+ * Properties to initialize this object with (optional) |
+ */ |
+jsx.dom.Window = function(target, parent, properties) { |
+ this._setStylePropertyOrDefault(properties, "backgroundColor", this.defaultBackground); |
+ arguments.callee._super.call(this, target, parent, properties); |
+}; |
+ |
+jsx.dom.Window.extend(jsx.dom.Widget); |
+jsx.dom.Window.prototype.defaultBackgroundColor = "ButtonFace"; |
+ |
+/** |
+ * Creates a toolbox |
+ * |
+ * @param target : Element |
+ * Target element (optional) |
+ * @param parent : Element |
+ * Parent element (optional) |
+ * @param properties |
+ * Properties to initialize this object with (optional) |
+ */ |
+jsx.dom.Toolbox = function(target, parent, properties) { |
+ this._setStylePropertyOrDefault(properties, "border", this.defaultBorder); |
+ |
+ arguments.callee._super.call(this, target, parent, properties); |
+}; |
+ |
+jsx.dom.Toolbox.extend(jsx.dom.Window); |
+jsx.dom.Toolbox.prototype.defaultBorder = "2px outset"; |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.dom.liveedit = { |
+ version: "0.1" |
+}; |
+ |
+/** |
+ * Creates and displays the LiveEdit editor |
+ * |
+ * @param target : Element |
+ * Target element for the editor (optional) |
+ * @param parent : Element |
+ * Parent element for the editor (optional) |
+ */ |
+jsx.dom.liveedit.LiveEdit = function(target, parent) { |
+ this._toolbox = new jsx.dom.Toolbox(target, parent, { |
+ style: { |
+ position: "fixed", |
+ top: "0", |
+ right: "0", |
+ width: "20%", |
+ bottom: "0", |
+ backgroundColor: "#ccc" |
+ }, |
+ resizable: true, |
+ resizeFlags: { |
+ w: true |
+ } |
+ }); |
+ |
+ this.showToolbox(); |
+}; |
+ |
+jsx.dom.liveedit.LiveEdit.extend(); |
+ |
+/** |
+ * Shows the toolbox of this editor |
+ */ |
+jsx.dom.liveedit.LiveEdit.prototype.showToolbox = function() { |
+ this._toolbox.render(); |
+}; |
/live/dom/widgets2.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/engine.js |
=================================================================== |
--- live/engine.js (nonexistent) |
+++ live/engine.js (revision 520) |
@@ -0,0 +1,348 @@ |
+/** |
+ * <title>Script Engine Detection Library</title> |
+ * @file $Id$ |
+ * |
+ * @author (C) 2004, 2013 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = new Object(); |
+} |
+ |
+if (typeof jsx.engine == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.engine = new Object(); |
+} |
+ |
+/** @version */ |
+jsx.engine.version = "$Revision$"; |
+ |
+jsx.engine.copyright = "Copyright \xA9 2004, 2013"; |
+jsx.engine.author = "Thomas Lahn"; |
+ |
+/** |
+ * Contact address of the author |
+ */ |
+jsx.engine.email = "js@PointedEars.de"; |
+ |
+/** |
+ * Base path of the script file resource |
+ */ |
+jsx.engine.path = "http://PointedEars.de/scripts/"; |
+// jsx.engine.docURL = this.path + "global.htm"; |
+ |
+/** |
+ * Encapsulates information about the used script engine. |
+ */ |
+function _EngineInfo () |
+{ |
+ /** |
+ * @param {string} version |
+ * @param {Array} versionMap |
+ * @param {string} fallback |
+ * @return {string|boolean} |
+ */ |
+ function _inferVersion (version, versionMap, fallback) |
+ { |
+ function gte (v1, v2) |
+ { |
+ v1 = v1.split("."); |
+ v2 = v2.split("."); |
+ for (var i = 0, len = v1.length; i < len; ++i) |
+ { |
+ if (parseInt(v1[i], 10) < parseInt(v2[i], 10)) |
+ { |
+ return false; |
+ } |
+ } |
+ |
+ return true; |
+ } |
+ |
+ var s = ""; |
+ |
+ for (var i = versionMap.length; i--;) |
+ { |
+ var mapping = versionMap[i]; |
+ if (gte(version, mapping[0])) |
+ { |
+ s = mapping[1]; |
+ break; |
+ } |
+ } |
+ |
+ if (!s && fallback) |
+ { |
+ s = fallback; |
+ } |
+ |
+ return s; |
+ } |
+ |
+ if (typeof ScriptEngine == "function") |
+ { |
+ /* JScript */ |
+ |
+ /** |
+ * @type string |
+ */ |
+ var _vendor = "Microsoft"; |
+ |
+ /** |
+ * @type string |
+ */ |
+ var _name = ScriptEngine(); |
+ |
+ /** |
+ * @type string |
+ */ |
+ var _majorVersion = |
+ typeof ScriptEngineMajorVersion == "function" |
+ ? ScriptEngineMajorVersion() |
+ : 'x'; |
+ |
+ /** |
+ * @type string |
+ */ |
+ var _minorVersion = |
+ typeof ScriptEngineMinorVersion == "function" |
+ ? ScriptEngineMinorVersion() |
+ : 'xx'; |
+ |
+ /** |
+ * @type string |
+ */ |
+ var _buildVersion = |
+ typeof ScriptEngineBuildVersion == "function" |
+ ? ScriptEngineBuildVersion() |
+ : 'xxxx'; |
+ |
+ /** |
+ * @type string |
+ */ |
+ var _version = |
+ (_majorVersion != 'x' |
+ ? _majorVersion |
+ + (_minorVersion != 'xx' |
+ ? '.' + _minorVersion |
+ + (_buildVersion != 'xxxx' ? '.' + _buildVersion : '') |
+ : '') |
+ : ''); |
+ } |
+ else |
+ { |
+ var _inferred = true; |
+ |
+ if (typeof navigator != "undefined") |
+ { |
+ var ua = navigator.userAgent || ""; |
+ |
+ if (typeof window != "undefined" |
+ && jsx.object.getFeature(window, "opera")) |
+ { |
+ _vendor = "Opera"; |
+ _name = "ECMAScript"; |
+ } |
+ else if (ua.indexOf("Konqueror") > -1) |
+ { |
+ _vendor = "KDE"; |
+ _name = "JavaScript"; |
+ } |
+ else if (ua.indexOf("WebKit") > -1) |
+ { |
+ var m = null; |
+ |
+ if (jsx.object.isMethod(ua, "match")) |
+ { |
+ if (ua.indexOf("Chrome") > -1) |
+ { |
+ m = ua.match(/\bChrome\/(\d+\.\d+(\.\d+)?)\b/); |
+ |
+ _vendor = "Google"; |
+ _name = "V8"; |
+ |
+ if (m) |
+ { |
+ var _minVersion = true; |
+ var s = _inferVersion(m[1], |
+ [ |
+ [ "2.0.172", "0.4"], |
+ [ "3.0.195", "1.2"], |
+ [ "4.0.249", "1.3"], |
+ [ "5.0.375", "2.1"], |
+ [ "6.0.472", "2.2"], |
+ [ "7.0.517", "2.3.11.22"], |
+ [ "8.0.552", "2.4.9.19"], |
+ [ "9.0.597", "2.5.9.6"], |
+ ["10.0.648", "3.0.12.30"], |
+ ["11.0.696", "3.1.8.16"], |
+ ["12.0.742", "3.2.10.21"], |
+ ["13.0.782", "3.3.10.17"], |
+ ["14.0.835", "3.4.14.2"], |
+ ["15.0.874", "3.5.10.9"], |
+ ["16.0.891", "3.6.4"], |
+ ["17.0.963", "3.7.12.29"], |
+ ["18.0.1025", "3.8.9.19"], |
+ ["19.0.1084", "3.9.24.7"], |
+ ["20.0.1132", "3.10.6.0"], |
+ ["21.0.1180", "3.11.10.6"], |
+ ["22.0.1229", "3.12.19.4"], |
+ ["23.0.1271", "3.13.7.1"], |
+ ["24.0.1297", "3.14.4.1"], |
+ ["25.0.1364", "3.15.11.5"], |
+ ["26.0.1410", "3.16.14.9"], |
+ ["27.0.1453", "3.17.6.14"], |
+ ["28.0.1500", "3.18.5.5"], |
+ ["29.0.1530", "3.19.9"] |
+ ], |
+ "0.3"); |
+ |
+ if (s) |
+ { |
+ _version = s; |
+ } |
+ } |
+ } |
+ else |
+ { |
+ _vendor = "Apple"; |
+ _name = "JavaScriptCore"; |
+ |
+ m = ua.match(/\bAppleWebKit\/(\d+\.\d+(\.\d+)*)\b/); |
+ |
+ if (m) |
+ { |
+ _version = m[1]; |
+ } |
+ } |
+ } |
+ } |
+ else if (typeof netscape != "undefined" || ua.indexOf("Gecko") > -1) |
+ { |
+ m = null; |
+ |
+ if (jsx.object.isNativeMethod(ua, "match")) |
+ { |
+ m = ua.match(/\brv:((\d+)\.\d+(\.\d+)*)\b/); |
+ } |
+ |
+ _vendor = "Netscape/Mozilla"; |
+ _name = "JavaScript"; |
+ |
+ if (m) |
+ { |
+ _minVersion = true; |
+ |
+ if (parseInt(m[2], 10) >= 5) |
+ { |
+ s = m[2]; |
+ } |
+ else |
+ { |
+ s = _inferVersion(m[1], |
+ [ |
+ ["0.6", "1.5"], |
+ ["1.8", "1.6"], |
+ ["1.8.1", "1.7"], |
+ ["1.9", "1.8"], |
+ ["1.9.1", "1.8.1"], |
+ ["1.9.2", "1.8.2"], |
+ ["1.9.3", "1.8.5"] |
+ ]); |
+ } |
+ |
+ if (s) |
+ { |
+ _version = s; |
+ } |
+ } |
+ } |
+ } |
+ } |
+ |
+ function _getVendor () |
+ { |
+ return _vendor; |
+ } |
+ this.getVendor = _getVendor; |
+ |
+ function _getName () |
+ { |
+ return _name; |
+ } |
+ this.getName = _getName; |
+ |
+ function _getFullName () |
+ { |
+ var vendor = _getVendor(); |
+ return (vendor ? vendor + " " : "") + _getName(); |
+ } |
+ this.getFullName = _getFullName; |
+ |
+ function _getMajorVersion () |
+ { |
+ return _majorVersion; |
+ } |
+ this.getMajorVersion = _getMajorVersion; |
+ |
+ function _getMinorVersion () |
+ { |
+ return _minorVersion; |
+ } |
+ this.getMinorVersion = _getMinorVersion; |
+ |
+ function _getVersion () |
+ { |
+ return _version; |
+ } |
+ this.getVersion = _getVersion; |
+ |
+ function _isInferred () |
+ { |
+ return !!_inferred; |
+ } |
+ this.isInferred = _isInferred; |
+ |
+ function _isMinVersion () |
+ { |
+ return !!_minVersion; |
+ } |
+ this.isMinVersion = _isMinVersion; |
+} |
+ |
+/** |
+ * Returns name and version of the used script engine, |
+ * if available. |
+ * |
+ * @return {string} |
+ */ |
+function _EngineInfo_prototype_toString () |
+{ |
+ var name = this.getName(); |
+ return (name ? name + ' ' : '') + this.getVersion(); |
+} |
+_EngineInfo.prototype.toString = _EngineInfo_prototype_toString; |
+ |
+jsx.engine.EngineInfo = _EngineInfo; |
\ No newline at end of file |
/live/engine.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/string/parser-old.js |
=================================================================== |
--- live/string/parser-old.js (nonexistent) |
+++ live/string/parser-old.js (revision 520) |
@@ -0,0 +1,414 @@ |
+/** |
+ * Generic parser implementation |
+ * |
+ * @author |
+ * Copyright (c) 2010 Thomas 'PointedEars' Lahn <js@PointedEars.de> |
+ */ |
+ |
+if (typeof jsx.string.parser == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.string.parser = {}; |
+} |
+ |
+/** |
+ * A token as recognized by a {@link #Lexer}. |
+ * |
+ * @param pattern : RegExp|String |
+ * The pattern to match the token. <strong>Parenthesized subexpressions |
+ * must be marked as <em>non-capturing</em> (<code>(?:…)</code>) for |
+ * the correct token to be returned by the lexer.</strong> |
+ * @param type : optional any |
+ * A value to set the object's <code>type</code> property which can be used |
+ * for recognizing the type of the matched token in the parser's |
+ * {@link Parser.prototype#parseToken parseToken()} method. Using |
+ * a constant value is recommended, the default is the constructor |
+ * identifier or <code>"Token"</code> if the identifier is unavailable. |
+ * However, whenever a token requires further parsing, it is recommended |
+ * to use an object which constructor calls {@link Token Token()}, and |
+ * to compare against its <code>constructor</code> property instead. |
+ * @property pattern : RegExp|String |
+ * See the constructor's <var>pattern</var> argument |
+ * @property type |
+ * See the constructor's <var>type</var> argument |
+ * @property match : Array |
+ * The text and substrings that the token matched. If the {@link #Lexer}'s |
+ * {@link #Lexer.keepHistory keepHistory} property is <code>false</code>, |
+ * the text and substrings that the token matched last. |
+ * @method parse(lexer : Lexer) |
+ * When this method is defined, a {@link #Parser} calls it instead of |
+ * the parser's {@link Parser.prototype#parseToken parseToken(Token)} method. |
+ * A <code>Token</code> may implement this method to parse the token using |
+ * a specialized {@link #Lexer}. An implementation may |
+ * {@link jsx.object#clone clone()} the referred lexer to create a lexer |
+ * that can find more or less tokens than the suggested one. |
+ */ |
+jsx.string.parser.Token = function (pattern, type) { |
+ this.pattern = pattern; |
+ this.type = type || jsx.object.getFunctionName(this.constructor) || "Token"; |
+}; |
+ |
+/** |
+ * A <code>Lexer</code> (lexical analyzer) converts a sequence |
+ * of characters in an input string into a sequence of |
+ * {@link #Token Tokens} which can be used by a {@link Parser}. |
+ * |
+ * <p>The list of patterns to match the tokens can be built with calling |
+ * {@link Lexer.prototype#addToken addToken()}, whereas the calls |
+ * for the preferred matches must come first, or with |
+ * {@link Lexer.prototype#addTokens addTokens()}, whereas the arguments |
+ * for the preferred matches must come first.</p> |
+ * |
+ * @param text : optional String |
+ * The text to be analyzed by this lexer; the default is the empty string. |
+ * @property text : string |
+ * The text to be analyzed |
+ * @property _tokens : Array[Token] |
+ * The list of {@link #Token Tokens} |
+ * @property keepHistory : boolean = false |
+ * If <code>true</code>, each match initializes and returns a new {@link #Token}; |
+ * use this if you need to retain a history of tokens. Otherwise the |
+ * existing {@link #Token Tokens} are reused which requires less memory. |
+ */ |
+jsx.string.parser.Lexer = function (text) { |
+ /** |
+ * @type String |
+ */ |
+ this.text = text ? String(text) : ""; |
+ |
+ this._tokens = []; |
+ this.keepHistory = false; |
+}; |
+ |
+jsx.string.parser.Lexer.extend(null, { |
+ /** |
+ * <code>true</code> if the tokens have been compiled into a |
+ * single regular expression. Always false if the longest match |
+ * should win. |
+ * |
+ * @see _longestMatchWins |
+ */ |
+ _compiled: false, |
+ |
+ /** |
+ * <code>true</code> if character case should not matter |
+ */ |
+ _ignoreCase: false, |
+ |
+ /** |
+ * <code>true</code> if newline should be included in `.' matches |
+ */ |
+ _dotAll: false, |
+ |
+ /** |
+ * <code>true</code> if the longest match, not the first one |
+ * in the list of token expressions, should be used. This is |
+ * important where there is ambiguity in token prefixes, but |
+ * wasteful in runtime complexity where there is not, because |
+ * the length of the matches for each token need to be compared |
+ * against one another then. Use with caution. |
+ */ |
+ _longestMatchWins: false, |
+ |
+ /** |
+ * Text position where to continue scanning |
+ */ |
+ _offset: 0, |
+ |
+ /** |
+ * Appends a {@link #Token} to the list of tokens. |
+ * |
+ * @memberOf jsx.string.parser.Lexer#prototype |
+ * @param token : RegExp|String|Token |
+ * If a reference to a <code>RegExp</code> or a <code>String</code>, |
+ * the value is used for the token pattern;<br> |
+ * if a reference to a <code>Token</code>, the reference is used and |
+ * <var>tokenType</var> is ignored. |
+ * |
+ * <p><strong>NOTE: Parenthesized subexpressions must be marked as |
+ * <em>non-capturing</em> (<code>(?:…)</code>) for the correct |
+ * token to be returned by the lexer.</strong></p> |
+ * @param tokenType : optional String|Function |
+ * If a <code>String</code>, passed for the the type name to {@link #Token Token()};<br> |
+ * if a reference to a <code>Function</code>, the function is used as |
+ * constructor to which <var>token</var> is passed. |
+ * @return {Lexer} |
+ * This object |
+ */ |
+ addToken: function (token, tokenType) { |
+ if (!token) |
+ { |
+ jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Invalid token", token + " : " + typeof token |
+ + (token ? "[" + token.constructor + "]" : ""), |
+ "(token: RegExp|String)"]); |
+ } |
+ |
+ if (token.constructor == RegExp |
+ || typeof token == "string") |
+ { |
+ if (typeof tokenType == "function") |
+ { |
+ token = new tokenType(token); |
+ } |
+ else |
+ { |
+ token = new jsx.string.parser.Token(token, tokenType); |
+ } |
+ } |
+ |
+ this._tokens.push(token); |
+ this._compiled = false; |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Appends one or more {@link #Token Tokens} to the list of tokens. |
+ * |
+ * @params : [RegExp|String|Token, optional String|Function] |
+ * @return {Lexer} |
+ * This object |
+ */ |
+ addTokens: function () { |
+ for (var i = 0, len = arguments.length; i < len; ++i) |
+ { |
+ var arg = arguments[i]; |
+ this.addToken(arg[0], arg[1]); |
+ } |
+ |
+ return this; |
+ }, |
+ |
+ _jsx_RegExp: jsx.object.getFeature(jsx, "regexp", "RegExp"), |
+ |
+ _RegExp: jsx.object.getFeature(jsx, "regexp", "RegExp") || RegExp, |
+ |
+ /** |
+ * Compiles <code>_expression</code> from token patterns |
+ * |
+ * @protected |
+ */ |
+ _compile: (function () { |
+ var _jsx_RegExp; |
+ var _RegExp; |
+ |
+ return function () { |
+ var pattern = this._tokens.map(function (e) { |
+ return e.pattern.source ? e.pattern.source : e.pattern; |
+ }); |
+ |
+ this._expression = new this._RegExp( |
+ "(" + pattern.join(")|(") + ")", |
+ "g" + (this._ignoreCase ? 'i' : '') |
+ + ((this._RegExp == this._jsx_RegExp && this._dotAll) ? 's' : '')); |
+ |
+ this._compiled = true; |
+ |
+ return this._expression; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns the next token in an input string. |
+ * |
+ * @return Token |
+ * The next token in the text assigned with this lexer |
+ */ |
+ nextToken: function () { |
+ var tokens = this._tokens; |
+ var keepHistory = this.keepHistory; |
+ var match; |
+ |
+ if (this._longestMatchWins) |
+ { |
+ var token_matches = []; |
+ var max_match_len = 0; |
+ var max_index = -1; |
+ for (var index = tokens.length; index--;) |
+ { |
+ var token = tokens[index]; |
+ |
+ /* match from where we left */ |
+ match = this._jsx_RegExp |
+ ? this._jsx_RegExp.exec(token, this._text.substring(this._offset)) |
+ : token.exec(this._text.substring(this._offset)); |
+ |
+ if (match) |
+ { |
+ var token_match = token_matches[index] = match[0]; |
+ var token_match_len = token_match.length; |
+ if (token_match_len > max_match_len) |
+ { |
+ max_match_len = token_match_len; |
+ max_index = index; |
+ } |
+ } |
+ } |
+ |
+ if (max_index > -1) |
+ { |
+ token = token_matches[max_index]; |
+ |
+ if (token.match && keepHistory) |
+ { |
+ token = new token.constructor(token.pattern, token.type); |
+ } |
+ |
+ /* correct for offsetted search */ |
+ match.index += this._offset; |
+ match.input = this._text; |
+ |
+ token.match = match; |
+ } |
+ } |
+ else |
+ { |
+ var expression = this._expression; |
+ |
+ if (!this._compiled) |
+ { |
+ expression = this._compile(); |
+ } |
+ |
+ if (expression.source == "()") |
+ { |
+ jsx.throwThis(jsx.Error, "No tokens added"); |
+ return null; |
+ } |
+ |
+ match = this._jsx_RegExp |
+ ? this._jsx_RegExp.exec(expression, this.text) |
+ : expression.exec(this.text); |
+ |
+ if (match) |
+ { |
+ for (var i = 1, len = match.length; i < len; ++i) |
+ { |
+ if (match[i]) |
+ { |
+ token = tokens[i - 1]; |
+ |
+ if (token.match && keepHistory) |
+ { |
+ token = new token.constructor(token.pattern, token.type); |
+ } |
+ |
+ token.match = match; |
+ break; |
+ } |
+ } |
+ } |
+ } |
+ |
+ if (match) |
+ { |
+ /* advance offset for next _longestMatchWins search */ |
+ this._offset += match[0].length; |
+ } |
+ |
+ return token; |
+ }, |
+ |
+ getIgnoreCase: function () { |
+ return this._ignoreCase; |
+ }, |
+ |
+ setIgnoreCase: function (value) { |
+ value = !!value; |
+ if (value !== this._ignoreCase) |
+ { |
+ this._compiled = false; |
+ } |
+ |
+ this._ignoreCase = value; |
+ }, |
+ |
+ getDotAll: function () { |
+ return this._dotAll; |
+ }, |
+ |
+ setDotAll: function (value) { |
+ value = !!value; |
+ if (value !== this._dotAll) |
+ { |
+ this._compiled = false; |
+ } |
+ |
+ this._dotAll = value; |
+ }, |
+ |
+ getExpression: function () { |
+ return this._expression; |
+ }, |
+ |
+ getOffset: function () { |
+ return this._offset; |
+ }, |
+ |
+ getTokens: function () { |
+ return this._tokens; |
+ } |
+}); |
+ |
+/** |
+ * A <code>Parser</code> handles {@link #Token Tokens} in an input string |
+ * as provided by a {@link #Lexer}. |
+ * |
+ * @param lexer : Lexer |
+ * The lexer to be used by this parser |
+ * @property _lexer : Lexer |
+ * The lexer used by this parser |
+ */ |
+jsx.string.parser.Parser = function Parser (lexer) { |
+ if (!jsx.object.isInstanceOf(lexer, jsx.string.parser.Lexer)) |
+ { |
+ jsx.warn("jsx.string.parser.Parser: saw " + lexer + ", expected jsx.string.parser.Lexer"); |
+ } |
+ |
+ this._lexer = lexer; |
+}; |
+ |
+jsx.string.parser.Parser.extend(null, { |
+ /** |
+ * Request the next token from the {@link #Lexer}. |
+ * |
+ * @memberOf jsx.string.parser.Parser#prototype |
+ * @return jsx.string.parser#Token |
+ */ |
+ nextToken: function () { |
+ return this._lexer.nextToken(); |
+ }, |
+ |
+ /** |
+ * Parses an input string requesting the next token from a {@link #Lexer}. |
+ */ |
+ parse: function () { |
+ var |
+ token, |
+ oLexer = this._lexer; |
+ |
+ while ((token = oLexer.nextToken())) |
+ { |
+ if (typeof token.parse == "function") |
+ { |
+ token.parse(oLexer); |
+ } |
+ else |
+ { |
+ this.parseToken(token); |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * Parses an input token as provided by a {@link #Lexer}. |
+ * |
+ * @param token : Token |
+ */ |
+ parseToken: function (token) { |
+ /* stub */ |
+ } |
+}); |
\ No newline at end of file |
/live/string/parser-old.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/string/compat.js |
=================================================================== |
--- live/string/compat.js (nonexistent) |
+++ live/string/compat.js (revision 520) |
@@ -0,0 +1,65 @@ |
+/** |
+ * <title>PointedEars' JSX: String Compatibility Layer</title> |
+ * @version $Id$ |
+ * @requires object.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2002-2012 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/* |
+ * Fix String.prototype.replace(..., Function) for Safari <= 2.0.2; |
+ * thanks to kangax <kangax@gmail.com> |
+ */ |
+if ("x".replace(/x/, function () { return "u"; }) != "u") |
+{ |
+ var jsx_string_compat_origReplace = String.prototype.replace; |
+ String.prototype.replace = function (searchValue, replaceValue) { |
+ if (jsx_object.isMethod(replaceValue)) |
+ { |
+ if (searchValue.constructor == RegExp) |
+ { |
+ var |
+ result = this, |
+ m, |
+ i = searchValue.global ? -1 : 1; |
+ |
+ while (i-- && (m = searchValue.exec(result))) |
+ { |
+ result = result.replace( |
+ m[0], |
+ String(replaceValue.apply(null, m.concat(m.index, this)))); |
+ } |
+ |
+ return result; |
+ } |
+ |
+ i = this.indexOf(searchValue); |
+ if (i > -1) |
+ { |
+ return replaceValue(String(searchValue), i, this); |
+ } |
+ |
+ return this; |
+ } |
+ |
+ return jsx_string_compat_origReplace.apply(this, arguments); |
+ }; |
+} |
\ No newline at end of file |
/live/string/compat.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/string/unicode.js |
=================================================================== |
--- live/string/unicode.js (nonexistent) |
+++ live/string/unicode.js (revision 520) |
@@ -0,0 +1,767 @@ |
+/* vim:set fileencoding=utf-8 tabstop=2 shiftwidth=2 softtabstop=2 expandtab: */ |
+/** |
+ * @fileOverview <title>PointedEars' JSX: String Library -- Unicode Support</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * |
+ * @section {Abstract} |
+ * |
+ * A value of the primitive type {@link String} is defined in |
+ * ECMAScript, Editions 1 to 5.1 inclusive, as a sequence of 16-bit |
+ * units. Each unit is assumed, unless specified otherwise, to be |
+ * the UTF-16 code sequence for a Unicode character. The length |
+ * of a String is defined as the number of 16-bit units in the |
+ * value, and the position of a character is defined as the position |
+ * of the corresponding 16-bit unit in the String value. |
+ * |
+ * However, Unicode characters with code points beyond the Basic |
+ * Multilingual Plane (BMP) require two UTF-16 code units, thus two |
+ * 16-bit units, to be encoded. This makes it hard to use them |
+ * in ECMAScript because they are not considered by ECMAScript's |
+ * string-related algorithms. For example, for a string value that |
+ * contains only one character but that has a code point beyond |
+ * the multilingual plane (non-BMP character), the specified length |
+ * and the value of the <code>length</code> property is |
+ * <code>2</code>. Retrieving the (code point of the) first |
+ * character from a string with |
+ * <code>{@link String.prototype#charAt}(0)</code>. |
+ * where the character has a code point beyond the multilingual |
+ * plane, returns the (code point of the) (non-)character for its |
+ * <em>lead surrogate</em>. Retrieving with |
+ * <code>{@link String.prototype#charAt}(1)</code> |
+ * the (code point of) the second character from a string that |
+ * contains a first non-BMP character returns the first character's |
+ * <em>trail surrogate</em> instead. |
+ * {@link String.fromCharCode()} returns the character for the |
+ * normalized code point value for arguments that are code point |
+ * values beyond the BMP (e.g., <code>String.fromCharCode(0x1DD1E) |
+ * === "\uDD1E"</code>). |
+ * |
+ * This library provides a new object type, <code>WideString</code>, |
+ * whose prototype object inherits from the <code>String</code> |
+ * prototype object, that is intended to be used as a drop-in |
+ * replacement for <code>String</code> values that may contain |
+ * Unicode characters from both inside and beyond the BMP, from |
+ * code points U+0000 to U+10FFFF inclusive. |
+ * |
+ * It also replaces by default the values of certain built-in |
+ * properties of the <code>String</code> constructor and |
+ * <code>String</code> prototype object such as the ones mentioned |
+ * above, and add others to the prototype object, so as to |
+ * support non-BMP characters as well in implementations of those |
+ * ECMAScript Editions almost seamlessly. However, non-callable |
+ * built-in own and inherited properties of <code>String</code> |
+ * values, like <code>length</code>, <em>cannot</em> be modified. |
+ * (In case of <code>length</code>, you would need to use |
+ * <code>getLength()</code> instead.) Whether and to what extent |
+ * built-in objects are modified, can be controlled with |
+ * {@link jsx#options}. (See {@link "object.js"} for details.) |
+ * |
+ * Your feedback is appreciated. |
+ * |
+ * <em>NOTE: Due to {@link Array} limitations, the maximum |
+ * supported string length is 2³²−1 characters.</em> |
+ * |
+ * @section {Copyright & Disclaimer} |
+ * |
+ * @author (C) 2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.string == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.string = {}; |
+} |
+ |
+/** |
+ * @type jsx.string.unicode |
+ * @memberOf __jsx.string.unicode |
+ * @namespace |
+ */ |
+jsx.string.unicode = (/** @constructor */ function () { |
+ var String_prototype_charCodeAt = "".charCodeAt; |
+ |
+ var _isArray = jsx.object.isArray; |
+ |
+ /* Handles characters in UTF-16 encoding from U+0000 to U+10FFFF */ |
+ var _rxWideString = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; |
+ var _rxString = /[\uD800-\uDBFF][\uDC00-\uDFFF]|[\S\s]/g; |
+ |
+ /** |
+ * @private |
+ * @param {String} s |
+ * String to be split into an array of characters |
+ * @return {Array} |
+ */ |
+ function _toCharArray (s) |
+ { |
+ return (s ? (String(s).match(_rxString) || []) : []); |
+ } |
+ |
+ /** |
+ * Converts a {@link String} value to a wide string. |
+ * <p> |
+ * A <code>WideString</code> supports all operations and methods |
+ * supported on <code>String</code> values also for Unicode |
+ * characters outside the Basic Multilingual Plane (BMP), that |
+ * is, code points from U+0000 to U+10FFFF inclusive. Because |
+ * strings of characters are stored as an {@link Array} of |
+ * <code>String</code>s, operations where such characters are |
+ * more common are faster than with the <code>String</code> |
+ * prototype augmentation. In other cases you should use |
+ * the augmentation instead. |
+ * </p><p> |
+ * You may call a <code>WideString</code>'s |
+ * {@link WideString#prototype.toString toString()} method |
+ * (implicitly called in string context, like concatenation) |
+ * to convert it back to a <code>String</code> value. |
+ * </p><p> |
+ * <em>NOTE: Due to <code>Array</code> limitations, a |
+ * <code>WideString</code> may not contain more than |
+ * 2³²−1 Unicode characters. Also note that normalization |
+ * is <strong>not</strong> performed at the moment.</em> |
+ * </p> |
+ * @type jsx.string.unicode.WideString |
+ * @extends String |
+ * @constructor |
+ */ |
+ var _WideString = ( |
+ /** |
+ * @param {String} s |
+ * @return {jsx.string.unicode.WideString} |
+ */ |
+ function _jsx_string_unicode_WideString (s) { |
+ /* Factory support */ |
+ if (!(this instanceof _jsx_string_unicode_WideString)) |
+ { |
+ return new _jsx_string_unicode_WideString(s); |
+ } |
+ |
+ /** |
+ * @private |
+ * @type Array |
+ */ |
+ var _chars = |
+ _isArray(s) |
+ ? s |
+ : (s instanceof _jsx_string_unicode_WideString |
+ ? s.getChars() |
+ : _toCharArray(s)); |
+ |
+ /** |
+ * Returns the characters in this object as an {@link Array} |
+ * of {@link String}s. |
+ * |
+ * @protected |
+ * @return {Array} |
+ */ |
+ this.getChars = function () { |
+ return _chars; |
+ }, |
+ |
+ /** |
+ * @field |
+ * @name chars |
+ * @type Array |
+ * @memberOf jsx.string.unicode.WideString |
+ * @see #getChars() |
+ */ |
+ jsx.object.defineProperty(this, "chars", {"get": this.getChars}); |
+ } |
+ ).extend(String, { |
+ /** |
+ * Returns the character at the specified position. |
+ * |
+ * <em>NOTE: A single Unicode character may be composed out of |
+ * several other characters. Normalization is not performed.</em> |
+ * |
+ * @memberOf jsx.string.unicode.WideString#prototype |
+ * @param {int} position |
+ * If not an integer, replaced with the closest integer. |
+ * @return {string} |
+ * If <code><var>position</var></code> is greater than or |
+ * equal to zero, the character at that position, counted |
+ * from zero. |
+ * If <code><var>position</var></code> is less than zero, |
+ * it is treated as the number of characters in this object |
+ * + <code><var>position</var></code>; that is, |
+ * <code><var>position</var> === -1</code> |
+ * returns the last character. |
+ * If <code><var>position</var></code> is replaceable with |
+ * an integer out of this range, <code>undefined</code> |
+ * is returned. |
+ * By contrast, if <code><var>position</var></code> is |
+ * not a <code>Number</code>, the return value is |
+ * <strong>not defined</strong>. |
+ */ |
+ charAt: function (position) { |
+ var chars = this.getChars(); |
+ position = (position < 0 ? Math.ceil(position) : Math.floor(position)); |
+ return (position < 0 |
+ ? chars[chars.length + position] |
+ : chars[position]); |
+ }, |
+ |
+ /** |
+ * Returns the Unicode code point value of the character |
+ * in this object at the specified position. |
+ * |
+ * <em>NOTE: A single Unicode character may be composed out of |
+ * several other characters. Normalization is not performed.</em> |
+ * |
+ * @memberOf jsx.string.unicode.WideString#prototype |
+ * @param {Number} position |
+ * If not an integer, replaced with the closest integer. |
+ * @return {number} |
+ * If <code><var>position</var></code> is greater than or |
+ * equal to zero, the code point value of the character |
+ * at that position, counted from zero. |
+ * If <code><var>position</var></code> is less than zero, |
+ * it is treated as the number of characters in this object |
+ * + <code><var>position</var></code>; that is, |
+ * <code><var>position</var> === -1</code> |
+ * returns the code point value of the last character. |
+ * If <code><var>position</var></code> is replacable with |
+ * an integer value out of this range, <code>NaN</code> |
+ * is returned. |
+ * By contrast, if <code><var>position</var></code> is |
+ * not a <code>Number</code>, the return value is |
+ * <strong>not defined</strong>. |
+ * @see #charAt() |
+ */ |
+ charCodeAt: function (position) { |
+ var ch = this.charAt(position); |
+ if (typeof ch == "undefined") |
+ { |
+ return NaN; |
+ } |
+ |
+ if (/^[\uD800-\uDBFF]/.test(ch)) |
+ { |
+ var leadSurrogate = String_prototype_charCodeAt.call(ch, 0); |
+ var trailSurrogate = String_prototype_charCodeAt.call(ch, 1); |
+ |
+ var leadBits = (leadSurrogate - 0xD800) << 10; |
+ var trailBits = trailSurrogate - 0xDC00; |
+ var bmpOffset = 0x10000; |
+ |
+ return leadBits + trailBits + bmpOffset; |
+ } |
+ |
+ return String_prototype_charCodeAt.call(ch, 0); |
+ }, |
+ |
+ /** |
+ * Concatenates this string with other strings |
+ * and returns the result. |
+ * |
+ * Returns the <code>WideString</code> resulting from |
+ * concatenating the list of characters in this object with |
+ * the list of the arguments' characters. |
+ * |
+ * @function |
+ */ |
+ concat: (function () { |
+ var _slice = [].slice; |
+ |
+ /** |
+ * @params {WideString|String} |
+ * @return {WideString} |
+ */ |
+ function _concat () |
+ { |
+ return new this.constructor(this.toString() |
+ + _slice.call(arguments).join("")); |
+ } |
+ |
+ return _concat; |
+ }()), |
+ |
+ /** |
+ * Returns the number of characters in this string |
+ * |
+ * @return {int} |
+ * @see #length |
+ */ |
+ getLength: function () { |
+ return this.getChars().length; |
+ }, |
+ |
+ /** |
+ * Returns the index of the first position of a substring |
+ * in this string. |
+ * |
+ * @param {jsx.string.unicode.WideString|String} searchString |
+ * Substring to look for. |
+ * @param {int} position |
+ * Position from where to start searching. The default is |
+ * <code>0</code>. |
+ * @return {number} |
+ */ |
+ indexOf: function (searchString, position) { |
+ var needleChars = searchString instanceof this.constructor |
+ ? searchString.getChars() |
+ : _toCharArray(searchString); |
+ var needleLen = needleChars.length; |
+ var needleString = needleChars.join(""); |
+ var chars = this.getChars(); |
+ for (var i = (typeof position == "undefined" |
+ ? 0 |
+ : (position < 0 ? 0 : Math.floor(position))), |
+ len = chars.length - needleLen + 1; |
+ i < len; ++i) |
+ { |
+ if (chars.slice(i, i + needleLen).join("") == needleString) |
+ { |
+ return i; |
+ } |
+ } |
+ |
+ return -1; |
+ }, |
+ |
+ /** |
+ * Returns the index of the last position of a substring |
+ * in this string. |
+ * |
+ * @param {jsx.string.unicode.WideString|String} searchString |
+ * Substring to look for. |
+ * @param {int} position |
+ * Position from where to start searching backwards. |
+ * The default is the position of the last character. |
+ * @return {number} |
+ */ |
+ lastIndexOf: function (searchString, position) { |
+ var needleChars = searchString instanceof this.constructor |
+ ? searchString.getChars() |
+ : _toCharArray(searchString); |
+ var needleLen = needleChars.length; |
+ var needleString = needleChars.join(""); |
+ var chars = this.getChars(); |
+ for (var i = (typeof position == "undefined" |
+ ? chars.length - needleLen |
+ : (position < 0 ? 0 : Math.floor(position))) |
+ + 1; |
+ i--;) |
+ { |
+ if (chars.slice(i, i + needleLen).join("") == needleString) |
+ { |
+ return i; |
+ } |
+ } |
+ |
+ return -1; |
+ }, |
+ |
+ /** |
+ * Returns a slice (substring) of this string. |
+ * |
+ * @param {int} start |
+ * Position of the Unicode character from where to start slicing. |
+ * @param {int} end |
+ * Position of the first Unicode character that should not be |
+ * included in the slice. |
+ * @return {jsx.string.unicode.WideString} |
+ * @see String.prototype#slice() |
+ */ |
+ slice: function (start, end) { |
+ return new this.constructor( |
+ this.getChars().slice(start, end).join("")); |
+ }, |
+ |
+ /** |
+ * Returns a substring of this string. |
+ * |
+ * @param {int} start |
+ * Position of the Unicode character from where to start slicing. |
+ * @param {int} length |
+ * Number of Unicode characters in the substring. |
+ * If omitted or <code>undefined</code>, the substring |
+ * contains all characters from <code>start</code> |
+ * to the end of this string. |
+ * @return {jsx.string.unicode.WideString} |
+ * @see #slice() |
+ * @see String.prototype#substr() |
+ */ |
+ substr: function (start, length) { |
+ return this.slice(start, |
+ typeof length == "undefined" |
+ ? length |
+ : start + length); |
+ }, |
+ |
+ /** |
+ * Returns a substring of this string. |
+ * |
+ * @param {int} start |
+ * Position of the Unicode character from where to start slicing. |
+ * @param {int} end (optional) |
+ * Position of the first Unicode character that should not be |
+ * included in the slice. If <code><var>start</var></code> |
+ * is larger than <code><var>end</var></code>, they are swapped. |
+ * @return {jsx.string.unicode.WideString} |
+ * @see String.prototype#substring() |
+ */ |
+ substring: function (start, end) { |
+ if (start > end) |
+ { |
+ var tmp = start; |
+ start = end; |
+ end = tmp; |
+ } |
+ |
+ return new this.constructor( |
+ this.getChars().slice(start, end).join("")); |
+ }, |
+ |
+ /** |
+ * Returns the characters in this object as a primitive |
+ * string value. |
+ * |
+ * @return {string} |
+ */ |
+ toString: function () { |
+ return this.getChars().join(""); |
+ }, |
+ |
+ /** |
+ * @see #toString() |
+ */ |
+ valueOf: function () { |
+ return this.toString(); |
+ } |
+ }); |
+ |
+ /** |
+ * @name length |
+ * @type int |
+ * @memberOf jsx.string.unicode.WideString#prototype |
+ * @see #getLength() |
+ */ |
+ jsx.object.defineProperty(_WideString.prototype, "length", { |
+ "get": function () { |
+ return this.getLength(); |
+ } |
+ }); |
+ |
+ /** |
+ * Returns the <code>string</code> value consisting of the |
+ * characters specified by their code point values. |
+ * |
+ * @function |
+ * @name jsx.string.unicode.WideString.fromCharCode |
+ */ |
+ _WideString.fromCharCode = (function () { |
+ var String_fromCharCode = String.fromCharCode; |
+ |
+ /** |
+ * @params {int} |
+ * @return {jsx.string.unicode.WideString} |
+ */ |
+ function _fromCharCode () |
+ { |
+ var chars = []; |
+ |
+ for (var i = 0, len = arguments.length; i < len; ++i) |
+ { |
+ var arg = Math.floor(arguments[i]); |
+ var ch; |
+ |
+ if (arg > 0x10FFFF) |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Unsupported Unicode code point value", |
+ "0x" + arg.toString(16).toUpperCase(), |
+ "0x0000..0x10FFFF"]); |
+ } |
+ |
+ if (arg > 0xFFFF) |
+ { |
+ var bmpOffset = arg - 0x10000; |
+ var leadSurrogate = 0xD800 + ((bmpOffset >> 10) & 0x3FF); |
+ var trailSurrogate = 0xDC00 + (bmpOffset & 0x3FF); |
+ |
+ ch = String_fromCharCode(leadSurrogate, trailSurrogate); |
+ } |
+ else |
+ { |
+ ch = String_fromCharCode(arg); |
+ } |
+ |
+ chars.push(ch); |
+ } |
+ |
+ return new _WideString(chars); |
+ } |
+ |
+ return _fromCharCode; |
+ }()); |
+ |
+ if (jsx.options.augmentBuiltins) |
+ { |
+ if (jsx.options.augmentPrototypes) |
+ { |
+ jsx.object.extend(String.prototype, (function () { |
+ /** |
+ * @type jsx.string.unicode.WideString |
+ */ |
+ var _prevWideString = null; |
+ |
+ /** |
+ * Returns the {@link jsx.string.unicode.WideString WideString} |
+ * created from this <code>String</code>. |
+ * <p> |
+ * NOTE: The previously created <code>WideString</code> is |
+ * retained in <code><var>prevWideString</var></code>, which |
+ * increases runtime efficiency with subsequent method calls |
+ * on the same string. Caching <em>all</em> previous values |
+ * would also increase runtime efficiency, but decrease memory |
+ * efficiency at the same time, as unused <code>WideString</code>s |
+ * could not be garbage-collected.<br> |
+ * Calling <code>toString</code> is required so that primitive |
+ * values, not object references, are compared (the latter |
+ * would always be <code>false</code> with internal wrapper |
+ * <code>String</code> objects created from primitive |
+ * string values). |
+ * </p> |
+ * @param {String} s |
+ * @return {jsx.string.unicode.WideString} |
+ */ |
+ function _createWideString (s) |
+ { |
+ return (_prevWideString && _prevWideString.toString() == s |
+ ? _prevWideString |
+ : (_prevWideString = new _WideString(s))); |
+ } |
+ |
+ return { |
+ /** |
+ * Returns the character in this string |
+ * at the specified position. |
+ * <p> |
+ * Differs from the built-in {@link String.prototype#charAt} |
+ * method in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units, |
+ * and that the position may be negative, counting from |
+ * the end of the string. |
+ * </p> |
+ * @memberOf String.prototype |
+ * @param {Number} position |
+ * @return {string} |
+ * @see String.prototype#charAt() |
+ * @see jsx.string.unicode.WideString.prototype#charAt() |
+ */ |
+ charAt: function (position) { |
+ return _createWideString(this).charAt(position); |
+ }, |
+ |
+ /** |
+ * Returns the Unicode code point value of the character |
+ * in this string at the specified position. |
+ * <p> |
+ * Differs from the built-in {@link String.prototype#charCodeAt} |
+ * method in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units, |
+ * and that the position may be negative, counting from |
+ * the end of the string. |
+ * </p> |
+ * @param {Number} position |
+ * @return {number} |
+ * @see String.prototype#charCodeAt() |
+ * @see jsx.string.unicode.WideString.prototype#charCodeAt() |
+ */ |
+ charCodeAt: function (position) { |
+ return _createWideString(this).charCodeAt(position); |
+ }, |
+ |
+ /** |
+ * Returns the number of Unicode characters in this string. |
+ * <p> |
+ * Differs from the built-in {@link string#length length} |
+ * property in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units. |
+ * </p> |
+ * @return {number} |
+ * @see string#length |
+ */ |
+ getLength: function () { |
+ return _createWideString(this).getLength(); |
+ }, |
+ |
+ /** |
+ * Returns the index of the first position of a substring |
+ * in this string. |
+ * <p> |
+ * Differs from the built-in {@link String.prototype#indexOf} |
+ * method in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units. |
+ * </p> |
+ * @param {jsx.string.unicode.WideString|String} searchString |
+ * Substring to look for. |
+ * @param {int} position |
+ * Position from where to start searching. The default is |
+ * <code>0</code>. |
+ * @return {number} |
+ * @see String.prototype#indexOf() |
+ */ |
+ indexOf: function (searchString, position) { |
+ return _createWideString(this).indexOf(searchString, position); |
+ }, |
+ |
+ /** |
+ * Returns the index of the last position of a substring |
+ * in this string. |
+ * <p> |
+ * Differs from the built-in {@link String.prototype#lastIndexOf} |
+ * method in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units. |
+ * </p> |
+ * @param {jsx.string.unicode.WideString|String} searchString |
+ * Substring to look for. |
+ * @param {int} position |
+ * Position from where to start searching backwards. |
+ * The default is the position of the last character. |
+ * @return {number} |
+ * @see String.prototype#lastIndexOf() |
+ */ |
+ lastIndexOf: function (searchString, position) { |
+ return _createWideString(this).lastIndexOf(searchString, position); |
+ }, |
+ |
+ /** |
+ * Returns a slice (substring) of this string. |
+ * <p> |
+ * Differs from the built-in {@link String.prototype#slice} |
+ * method in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units. |
+ * </p> |
+ * @see String.prototype#slice() |
+ */ |
+ slice: (function () { |
+ var String_prototype_slice = "".slice; |
+ |
+ /** |
+ * @param {int} start |
+ * Position of the Unicode character from where to start slicing. |
+ * @param {int} end |
+ * Position of the first Unicode character that should not be |
+ * included in the slice. |
+ * @return {string} |
+ */ |
+ return function (start, end) { |
+ return _rxWideString.test(this) |
+ ? _createWideString(this).slice(start, end).toString() |
+ : String_prototype_slice.apply(this, arguments); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns a substring of this string. |
+ * <p> |
+ * Differs from the built-in (non-standard) |
+ * {@link String.prototype#substr} method in that it |
+ * considers characters with code points beyond U+FFFF |
+ * that require several UTF-16 code units. |
+ * </p> |
+ * @param {int} start |
+ * Position of the Unicode character from where to start slicing. |
+ * @param {int} length |
+ * Number of Unicode characters in the substring. |
+ * If omitted or <code>undefined</code>, the substring |
+ * contains all characters from <code>start</code> |
+ * to the end of this string. |
+ * @return {string} |
+ * @see String.prototype#substr() |
+ * @see jsx.string.unicode.WideString.prototype#substr() |
+ */ |
+ substr: function (start, length) { |
+ return _createWideString(this).substr(start, length).toString(); |
+ }, |
+ |
+ /** |
+ * Returns a substring of this string. |
+ * <p> |
+ * Differs from the built-in {@link String.prototype#substring} |
+ * method in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units. |
+ * </p> |
+ * @see String.prototype#substring() |
+ */ |
+ substring: (function () { |
+ var String_prototype_substring = "".substring; |
+ |
+ /** |
+ * @param {int} start |
+ * Position of the Unicode character from where to start slicing. |
+ * @param {int} end (optional) |
+ * Position of the first Unicode character that should not be |
+ * included in the slice. If <code><var>start</var></code> |
+ * is larger than <code><var>end</var></code>, they are swapped. |
+ * @return {string} |
+ */ |
+ return function (start, end) { |
+ return _rxWideString.test(this) |
+ ? _createWideString(this).substring(start, end).toString() |
+ : String_prototype_substring.apply(this, arguments); |
+ }; |
+ }()) |
+ }; |
+ }()), jsx.object.ADD_OVERWRITE); |
+ } |
+ } |
+ |
+ if (jsx.options.replaceBuiltins) |
+ { |
+ jsx.object.extend(String, { |
+ /** |
+ * Returns a {@link String} containing the Unicode characters |
+ * specified by the code point arguments. |
+ * <p> |
+ * Differs from the built-in {@link String#fromCharCode} |
+ * method in that it considers characters with code points |
+ * beyond U+FFFF that require several UTF-16 code units. |
+ * </p> |
+ * @memberOf String |
+ * @params {Number} |
+ * Code points of the characters from <code>0</code> to |
+ * <code>0x10FFFF</code> inclusive. |
+ * @return {string} |
+ */ |
+ fromCharCode: function () { |
+ return _WideString.fromCharCode.apply(this, arguments).toString(); |
+ } |
+ }, jsx.object.ADD_OVERWRITE); |
+ } |
+ |
+ return { |
+ /** |
+ * @memberOf jsx.string.unicode |
+ */ |
+ WideString: _WideString |
+ }; |
+}()); |
\ No newline at end of file |
/live/string/unicode.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/string/hyphenation.js |
=================================================================== |
--- live/string/hyphenation.js (nonexistent) |
+++ live/string/hyphenation.js (revision 520) |
@@ -0,0 +1,192 @@ |
+/** |
+ * @fileOverview <title>PointedEars' JSX: String Library -- Hyphenation</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author (C) 2012, 2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.string == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.string = {}; |
+}; |
+ |
+jsx.string.hyphenation = (function () { |
+ "use strict"; |
+ var _jsx = jsx; |
+ var _jsx_object = _jsx.object; |
+ var _getDataObject = _jsx_object.getDataObject; |
+ var _getKeys = _jsx_object.getKeys; |
+ var _map = _jsx.array.map; |
+ |
+ var _dictionary = _getDataObject(); |
+ var _hyphenateAll = false; |
+ var _rxWord = /(^|\s)(\S+)([\s,;:.?!\)\]]|$)/g; |
+ var _rxWords; |
+ |
+ /* U+00B7 MIDDLE DOT (often found in online dictionaries) */ |
+ var _rxHyphen = /[-\u00b7]/g; |
+ |
+ var _chShy = "\u00ad"; |
+ var _rxShy = new RegExp(_chShy, "g"); |
+ |
+ var _compiled = false; |
+ var _compile = function () { |
+ _rxWords = new RegExp("(^|\\s)(" |
+ + _getKeys(_dictionary).join("|") |
+ + ")([\\s,;:.?!\\)\\]]|$)", "g"); |
+ _compiled = true; |
+ }; |
+ |
+ var hyphenation = { |
+ /** |
+ * Loads a dictionary. The dictionary should contain at least |
+ * one {@link jsx.string.hyphenation#addRule} or |
+ * {@link jsx.string.hyphenation#addRules} call. |
+ * |
+ * @param {String} dictionary |
+ * URI of the dictionary |
+ * @return {boolean} |
+ * <code>true</code> if the dictionary could be successfully |
+ * <em>loaded</em> (not: included), <code>false</code> otherwise. |
+ * @requires jsx.net.http#Request |
+ * @see jsx#importFrom |
+ */ |
+ loadDictionary: function (dictionary) { |
+ return jsx.importFrom(dictionary); |
+ }, |
+ |
+ /** |
+ * Loads several dictionaries. A dictionary should contain |
+ * at least one {@link jsx.string.hyphenation#addRule} or |
+ * {@link jsx.string.hyphenation#addRules} call. |
+ * |
+ * @param {Array} dictionaries |
+ * URIs of the dictionaries |
+ * @param {Boolean} returnEarly (optional) |
+ * If <code>true</code>, return as soon as loading one |
+ * dictionary fails. The default is <code>false</code>. |
+ * @return {boolean} |
+ * <code>true</code> if all dictionaries could be successfully |
+ * <em>loaded</em> (not: included), <code>false</code> otherwise. |
+ * @requires jsx.net.http#Request |
+ * @see jsx#importFrom |
+ */ |
+ loadDictionaries: function (dictionaries, returnEarly) { |
+ var success = true; |
+ |
+ for (var i = 0, len = dictionaries.length; i < len; ++i) |
+ { |
+ if (!this.addDictionary(dictionaries[i])) |
+ { |
+ success = false; |
+ } |
+ |
+ if (returnEarly && !success) |
+ { |
+ return success; |
+ } |
+ } |
+ |
+ return success; |
+ }, |
+ |
+ /** |
+ * @memberOf jsx.string.hyphenation |
+ * @param rule |
+ * @returns |
+ */ |
+ addRule: function (rule) { |
+ _dictionary[rule.replace(_rxHyphen, "")] = rule.replace(_rxHyphen, _chShy); |
+ _compiled = false; |
+ }, |
+ |
+ addRules: function (rules) { |
+ for (var i = 0, len = rules.length; i < len; ++i) |
+ { |
+ this.addRule(rules[i]); |
+ } |
+ }, |
+ |
+ getRules: function () { |
+ return _map( |
+ _getKeys(_dictionary), |
+ function (key) { |
+ return _dictionary[key].replace(_rxShy, "-"); |
+ }); |
+ }, |
+ |
+ removeRule: function (rule) { |
+ delete _dictionary[rule]; |
+ _compiled = false; |
+ }, |
+ |
+ reset: function () { |
+ _dictionary = _getDataObject(); |
+ _compiled = false; |
+ }, |
+ |
+ getHyphenateAll: function () { |
+ return _hyphenateAll; |
+ }, |
+ |
+ setHyphenateAll: function (hyphenateAll) { |
+ _hyphenateAll = !!hyphenateAll; |
+ }, |
+ |
+ hyphenate: function (s) { |
+ if (!_compiled) |
+ { |
+ _compile(); |
+ } |
+ |
+ return s.replace(_hyphenateAll ? _rxWord : _rxWords, |
+ function (match, wsp1, word, wsp2) { |
+ if (_hyphenateAll && !_dictionary[word]) |
+ { |
+ return match; |
+ } |
+ |
+ return wsp1 + _dictionary[word] + wsp2; |
+ }); |
+ } |
+ }; |
+ |
+ _jsx_object.defineProperties(hyphenation, { |
+ rules: { |
+ "get": function () { |
+ return this.getRules(); |
+ } |
+ } |
+ }); |
+ |
+ return hyphenation; |
+}()); |
\ No newline at end of file |
/live/string/hyphenation.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/array.js |
=================================================================== |
--- live/array.js (nonexistent) |
+++ live/array.js (revision 520) |
@@ -0,0 +1,1508 @@ |
+/** |
+ * @fileOverview <title>Array Library</title> |
+ * @file $Id$ |
+ * |
+ * @author (C) 2004-2013 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * <pre> |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ * </pre> |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.array == "undefined") |
+{ |
+ jsx.array = {}; |
+} |
+ |
+/** |
+ * @type jsx.array |
+ * @memberOf __jsx.array |
+ * @namespace |
+ */ |
+jsx.array = (/** @constructor */ function () { |
+ /* Imports */ |
+ var _jsx = jsx; |
+ var _jsx_object = _jsx.object; |
+ var _defineProperty = _jsx_object.defineProperty; |
+ var _getClass = _jsx_object.getClass; |
+ var _getKeys = _jsx_object.getKeys; |
+ var _hasOwnProperty = _jsx_object._hasOwnProperty; |
+ var _isArray = _jsx_object.isArray; |
+ var _isNativeObject = _jsx_object.isNativeObject; |
+ |
+ /* Constant-like variables */ |
+ var _MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1; |
+ var _isNativeMethod = _jsx_object.isNativeMethod; |
+ |
+ /** |
+ * @param {Array} a (optional) |
+ * Array to which an element should be appended. Is used instead |
+ * of the <code>Array</code> object the function is applied to. |
+ * @param value (optional) |
+ * @return {Array} |
+ * The changed array. |
+ */ |
+ function _array_push (a, value) |
+ { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ value = a; |
+ a = this; |
+ } |
+ |
+ for (var i = 0, len = arguments.length; i < len; i++) |
+ { |
+ a[a.length] = arguments[i]; |
+ } |
+ |
+ return a; |
+ } |
+ |
+ /** |
+ * Takes input array <code>a</code> or the <code>Array</code> object |
+ * it is applied to as method and returns a new <code>Array</code> |
+ * object with all string elements (optionally all elements regardless |
+ * of their type) either lowercased or uppercased. |
+ * |
+ * @param {Array} a (optional) |
+ * Array which elements should be changed. Is used instead |
+ * of the Array object the function is applied to. |
+ * @param {boolean} bUppercase = false |
+ * If <code>false</code> (default), changes the elements to |
+ * be all lowercase. If <code>true</code>, changes them to |
+ * be all uppercase. |
+ * @param {boolean} bConvertNonStrings = false |
+ * If <code>false</code> default, changes only the case of |
+ * string elements. If <code>true</code>, converts non-string |
+ * elements to <code>string</code> and changes their case. |
+ * @return {Array} |
+ * A copy of <code>a</code> or the Array object with its |
+ * elements' value uppercased or lowercased. If <code>a</code> |
+ * has no elements, an empty array is returned. |
+ */ |
+ function _changeCase (a, bUppercase, bConvertNonStrings) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ bConvertNonStrings = bUppercase; |
+ bUpperCase = a; |
+ a = this; |
+ } |
+ |
+ if (_isArray(a)) |
+ { |
+ for (var i = 0; i < a.length; i++) |
+ { |
+ if (bConvertNonStrings || typeof a[i] == "string") |
+ { |
+ if (bUppercase) |
+ { |
+ a[i] = String(a[i]).toUpperCase(); |
+ } |
+ else |
+ { |
+ a[i] = String(a[i]).toLowerCase(); |
+ } |
+ } |
+ } |
+ |
+ return a; |
+ } |
+ |
+ return []; |
+ } |
+ |
+ /** |
+ * Array index out of range |
+ * |
+ * @type jsx.array.RangeError |
+ * @extends RangeError|jsx.InvalidArgumentError |
+ * @constructor |
+ */ |
+ var _RangeError = ( |
+ function (sReason, sGot, sExpected) { |
+ _jsx.InvalidArgumentError.apply(this, arguments); |
+ } |
+ ).extend( |
+ typeof RangeError == "function" |
+ ? RangeError |
+ : _jsx.InvalidArgumentError, |
+ { |
+ name: "jsx.array.RangeError" |
+ }); |
+ |
+ /** |
+ * Array-like object which can hold up to 2<sup>53</sup> elements |
+ * |
+ * @function |
+ * @type jsx.array.BigArray |
+ * @extends Array |
+ * @constructor |
+ */ |
+ var _BigArray = jsx.object.extend( |
+ /** |
+ * @type __jsx.array.BigArray |
+ * @param {Array|Object} src (optional) |
+ * Array-like object to be converted |
+ * @return {jsx.arrayBigArray} |
+ */ |
+ function jsx_array_BigArray (src) { |
+ if (!(this instanceof jsx_array_BigArray)) |
+ { |
+ return jsx_array_BigArray.construct(arguments); |
+ } |
+ |
+ /** |
+ * @memberOf __jsx.array.BigArray |
+ * @private |
+ */ |
+ var _length = 0; |
+ |
+ /** |
+ * Sets the real length of this array |
+ * |
+ * @param {int} value |
+ * @throws jsx.array.RangeError |
+ * if the value is less than <code>0</code> or |
+ * greater than {@link BigArray.MAX_LENGTH} |
+ */ |
+ this.setLength = function BigArray_setLength (value) { |
+ if (value < 0 || value > _BigArray.MAX_LENGTH) |
+ { |
+ return _jsx.throwThis(_RangeError, |
+ ["Invalid length", value, |
+ "0.." + _BigArray.MAX_LENGTH |
+ + " (2^" + Math.floor(Math.log(_BigArray.MAX_LENGTH) / Math.log(2)) + ")"], |
+ BigArray_setLength); |
+ } |
+ |
+ _length = Math.floor(value); |
+ |
+ return this; |
+ }; |
+ |
+ /** |
+ * Returns the real length of this array |
+ * |
+ * @return {int} |
+ */ |
+ this.getLength = function () { |
+ return _length; |
+ }; |
+ |
+ /** |
+ * @memberOf jsx.array.BigArray |
+ * @name length |
+ */ |
+ _defineProperty(this, "length", { |
+ "get": this.getLength, |
+ "set": this.setLength |
+ }, "jsx.array.BigArray"); |
+ |
+ this.clear(); |
+ |
+ var arglen = arguments.length; |
+ if (arglen > 1) |
+ { |
+ for (var i = arglen; i--;) |
+ { |
+ this.set(i, arguments[i]); |
+ } |
+ } |
+ else if (arglen == 1) |
+ { |
+ var t = typeof src; |
+ if (t == "number") |
+ { |
+ this.setLength(src); |
+ } |
+ else |
+ { |
+ if (!_isArray(src) && _isNativeObject(src) |
+ && _getClass(src) != "Object") |
+ { |
+ this.set(0, src); |
+ } |
+ else |
+ { |
+ this.setAll(src); |
+ } |
+ } |
+ } |
+ }, |
+ { |
+ /** |
+ * Maximum number of elements that can be stored in |
+ * a <code>BigArray</code>. Successor of the greatest |
+ * integer value that can be used as index. |
+ * |
+ * @memberOf jsx.array.BigArray |
+ */ |
+ MAX_LENGTH: Math.pow(2, 53), |
+ |
+ /** |
+ * Determines if a value can be used as <code>BigArray</code> |
+ * index. |
+ * |
+ * @param {any} i |
+ */ |
+ isIndex: function (i) { |
+ return parseInt(i, 10).toString() == i |
+ && i > -1 && i < _BigArray.MAX_LENGTH; |
+ }, |
+ |
+ /** |
+ * Determines if an object is a <code>BigArray</code>. |
+ * |
+ * @param {Object} o |
+ * @return {boolean} |
+ */ |
+ isInstance: function (o) { |
+ return o.constructor == _BigArray; |
+ } |
+ } |
+ ).extend(Array, { |
+ /** |
+ * Removes all elements from the array |
+ * |
+ * @memberOf jsx.array.BigArray.prototype |
+ */ |
+ clear: function () { |
+ for (var i in this) |
+ { |
+ if (_BigArray.isIndex(i)) |
+ { |
+ delete this[i]; |
+ } |
+ } |
+ |
+ this.setLength(0); |
+ }, |
+ |
+ /** |
+ * @param {int} index |
+ * @return {any} the element of this array at <var>index</var> |
+ */ |
+ get: function BigArray_get (index) { |
+ if (arguments.length < 1) |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Not enough arguments", "", "(int)"], |
+ BigArray_get); |
+ } |
+ |
+ if (index < 0) |
+ { |
+ index = this.getLength() + Math.ceil(index); |
+ } |
+ else |
+ { |
+ index = Math.floor(index); |
+ } |
+ |
+ return this[index]; |
+ }, |
+ |
+ /** |
+ * Sets the element at <var>index</var> to <var>value</var> |
+ * |
+ * @param {int} index |
+ * @param {any} value |
+ */ |
+ set: function (index, value) { |
+ var length = this.getLength(); |
+ |
+ if (index < 0) |
+ { |
+ index = length + Math.ceil(index); |
+ } |
+ else |
+ { |
+ index = Math.floor(index); |
+ } |
+ |
+ if (length < index + 1) |
+ { |
+ this.setLength(index + 1); |
+ } |
+ |
+ this[index] = value; |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Sets all elements based on another object. |
+ * |
+ * @param {Object} src |
+ * If an <code>Array</code> or </code>BigArray</code>, |
+ * copies all array elements (enumerable properties whose |
+ * name is an array index) to this array. |
+ * Otherwise, copies all properties with numeric name, from |
+ * 0 to the name specified by the value of the object's |
+ * <code>length</code> property, to this array. |
+ */ |
+ setAll: function (src) { |
+ if (_isArray(src) || src instanceof _BigArray) |
+ { |
+ for (var i in src) |
+ { |
+ if (_BigArray.isIndex(i)) |
+ { |
+ this.set(i, src[i]); |
+ } |
+ } |
+ } |
+ else |
+ { |
+ for (i = src.length; i--;) |
+ { |
+ if (_BigArray.isIndex(i)) |
+ { |
+ this.set(i, src[i]); |
+ } |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * Returns the string representations of this array's |
+ * elements, separated by another string (representation). |
+ * |
+ * @param {String} glue |
+ * The separator between the string representations |
+ * @return {string} |
+ */ |
+ join: function (glue) { |
+ var len = this.getLength(); |
+ var _join = [].join; |
+ |
+ if (len <= _MAX_ARRAY_LENGTH) |
+ { |
+ return _join.apply(this, arguments); |
+ } |
+ |
+ if (arguments.length < 1) |
+ { |
+ glue = ","; |
+ } |
+ |
+ var chunks = []; |
+ var chunk_index = 0; |
+ |
+ for (var i = 0; i < len; ++i) |
+ { |
+ var chunk = chunks[chunk_index]; |
+ if (typeof chunk == "undefined") |
+ { |
+ chunk = chunks[chunk_index] = []; |
+ } |
+ |
+ if (chunk.length < _MAX_ARRAY_LENGTH) |
+ { |
+ chunk.push(this.get(i)) |
+ } |
+ else |
+ { |
+ chunks[chunk_index++] = _join.apply(chunk, arguments); |
+ } |
+ } |
+ |
+ return _join.apply(chunks, arguments); |
+ }, |
+ |
+ /** |
+ * Returns this <code>BigArray</code> as an {@link Array}, |
+ * with extra indexes if necessary. |
+ * |
+ * <em>Note that the returned <code>Array</code>'s {@link Array#length} |
+ * property does not reflect the highest index in the array if |
+ * it is greater than the one supported by the implementation |
+ * for <code>Array</code>s (ES 5.x: 2³²−1). However, the extra |
+ * indexes are enumerable.</em> |
+ * |
+ * <strong>There is no point in calling this method unless you |
+ * really need an <code>Array</code>. The original object |
+ * inherits from <code>Array.prototype</code>, known methods are |
+ * overridden if necessary, and all its indexes are enumerable.</strong> |
+ * |
+ * @return {Array} |
+ */ |
+ toArray: function () { |
+ var a = []; |
+ |
+ /* Speed up addition of elements */ |
+ a.length = Math.min(_MAX_ARRAY_LENGTH, this.getLength()); |
+ |
+ for (var i in this) |
+ { |
+ if (_BigArray.isIndex(i)) |
+ { |
+ a[i] = this.get(i); |
+ } |
+ } |
+ |
+ return a; |
+ }, |
+ |
+ /** |
+ * Returns the string representation of this array |
+ * as a comma-separated list. |
+ */ |
+ toString: function () { |
+ return this.join(","); |
+ } |
+ }); |
+ |
+ return { |
+ /** |
+ * @memberOf jsx.array |
+ */ |
+ version: "0.1.$Rev$", |
+ copyright: "Copyright \xA9 2004-2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/", |
+ |
+ /** |
+ * @param {string} sMsg (optional) |
+ * @return {boolean} false |
+ */ |
+ ArrayError: function(sMsg) { |
+ alert( |
+ "array.js " |
+ + Array.version |
+ + "\n" |
+ + Array.copyright |
+ + " " |
+ + Array.author |
+ + " <" |
+ + Array.Email |
+ + ">\n\n" |
+ + sMsg); |
+ return false; |
+ }, |
+ |
+ BigArray: _BigArray, |
+ RangeError: _RangeError, |
+ |
+ /** |
+ * Splits the array <code>a</code> into several arrays with |
+ * <code>iSize</code> values in them. |
+ * |
+ * @param {Array} a |
+ * (optional) Array which should be split. Is used instead of |
+ * the <code>Array</code> instance the function is applied to. |
+ * @param {Number} iSize |
+ * Maximum size of the resulting arrays. |
+ * An array of arrays indexed with numbers starting from zero. |
+ */ |
+ chunk: function (a, iSize) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ iSize = a; |
+ a = this; |
+ } |
+ |
+ var arrays = new Array([]); |
+ |
+ var i = 0; |
+ if (_jsx_object.isMethod(a, "slice")) |
+ { |
+ while (i < a.length) |
+ { |
+ arrays[arrays.length] = a.slice(i, i + iSize); |
+ i += iSize; |
+ } |
+ } |
+ else |
+ { |
+ var index; |
+ for (i = 0, index = 0; i < a.length; i++) |
+ { |
+ if (arrays[index].length == iSize) |
+ { |
+ arrays[++index] = []; |
+ } |
+ |
+ _array_push(arrays[index], a[i]); |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * Returns an object using the values of the array <code>a</code> |
+ * as properties and their frequency in <code>a</code> as values. |
+ * |
+ * @param {Array} a |
+ * (optional) Array which values should be counted. Is used |
+ * instead of the <code>Array</code> instance the function is |
+ * applied to. |
+ * @return {Object} |
+ */ |
+ countValues: function (a) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ a = this; |
+ } |
+ |
+ var o = {}; |
+ |
+ for (var i = 0; i < a.length; i++) |
+ { |
+ if (typeof o[a[i]] != "undefined") |
+ { |
+ o[a[i]]++; |
+ } |
+ else |
+ { |
+ o[a[i]] = 1; |
+ } |
+ } |
+ |
+ return o; |
+ }, |
+ |
+ /** |
+ * Fills an array with <code>iNumber</code> entries of the value |
+ * of the <code>value</code> argument, indexes starting at the |
+ * value of the <code>iStart</code> argument. |
+ * |
+ * @param {Array} a |
+ * (optional) Array which should be filled. Is used instead |
+ * of the {@link Array} object the function is applied to. |
+ * @param {Number} iStart |
+ * Index where to start filling |
+ * @param {Number} iNumber |
+ * Number of elements to be filled, starting from <code>iStart</code> |
+ * @param value (optional) |
+ * The value the array should be filled with |
+ * @return {Array} The filled array |
+ */ |
+ fill: function (a, iStart, iNumber, value) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ a = this; |
+ } |
+ |
+ if (!_isArray(a)) |
+ { |
+ a = []; |
+ } |
+ |
+ for (var i = iStart; i < iStart + iNumber; i++) |
+ { |
+ a[i] = value; |
+ } |
+ |
+ return a; |
+ }, |
+ |
+ /** |
+ * Returns an array containing all the elements of another |
+ * array filtered according to a callback function. |
+ * |
+ * @param {Function} fCallback |
+ * A function accepting a single argument that returns |
+ * a value to be interpreted either as <code>true</code> |
+ * or <code>false</code>. If it returns <code>true</code> |
+ * for the element of <code>a</code>, that element is |
+ * included in the resulting array, otherwise it is not. |
+ * @param {Array} a (optional) |
+ * Array which should be filtered. Is used instead of the |
+ * <code>Array</code> object the function is applied to. |
+ * @return Array |
+ */ |
+ filter: function (fCallback, a) { |
+ if (a) |
+ { |
+ /* support for old-style calls */ |
+ if (typeof a == "function") |
+ { |
+ if (_isArray(fCallback)) |
+ { |
+ var tmp = a; |
+ fCallback = a; |
+ a = tmp; |
+ } |
+ else |
+ { |
+ _jsx.throwThis('TypeError'); |
+ } |
+ } |
+ else |
+ { |
+ /* intentionally generic */ |
+ a = this; |
+ } |
+ } |
+ |
+ var len = this.length; |
+ |
+ if (typeof fCallback != "function") |
+ { |
+ _jsx.throwThis('TypeError'); |
+ } |
+ |
+ var res = []; |
+ |
+ for (var i = 0; i < len; i++) |
+ { |
+ if (i in this) |
+ { |
+ /* mozilla.org: in case fCallback mutates `this'(?) */ |
+ var val = this[i]; |
+ |
+ if (fCallback.call(a, val, i, this)) |
+ { |
+ res.push(val); |
+ } |
+ } |
+ } |
+ |
+ return res; |
+ }, |
+ |
+ /** |
+ * Returns a function that can be used for filtering an {@link Array} |
+ * by the property values of its elements. |
+ * |
+ * @param {Object} filter |
+ * Object whose property names are the elements' property |
+ * names, and whose property values are the element's property |
+ * values to compare against |
+ * @param {boolean} bStrict = false |
+ * If <code>true</code>, perform strict comparison. |
+ * @return {Function} |
+ * The filter function |
+ * @see jsx.array.filter |
+ */ |
+ createFilter: function (filter, bStrict) { |
+ var keys = _getKeys(filter); |
+ |
+ /** |
+ * @param {any} element |
+ * @return {boolean} |
+ */ |
+ return function (element) { |
+ for (var i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var key = keys[i]; |
+ if (bStrict) |
+ { |
+ if (element[key] === filter[key]) |
+ { |
+ return true; |
+ } |
+ } |
+ else |
+ { |
+ if (element[key] == filter[key]) |
+ { |
+ return true; |
+ } |
+ } |
+ } |
+ }; |
+ }, |
+ |
+ /** |
+ * Removes the last element from an array and returns that |
+ * element. This method changes the length of the array, if |
+ * applied directly to an array object. |
+ * |
+ * @param {Array} a (optional) |
+ * Array from which the last element should be removed. Is used |
+ * instead of the {@link Array} object the function is |
+ * applied to. |
+ * @return {any} |
+ * The element removed from the array changed array. |
+ */ |
+ pop: function (a) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ a = this; |
+ } |
+ |
+ var result = null; |
+ |
+ if (a.length > 0) |
+ { |
+ result = a[a.length - 1]; |
+ if (_isArray(this)) |
+ { |
+ this.length = this.length - 1; |
+ } |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ push: _array_push, |
+ |
+ /** |
+ * Takes input array <code>a</code> or the calling <code>Array</code> |
+ * object and returns a new <code>Array</code> object with the |
+ * order of the elements reversed. |
+ * |
+ * @param {Array} a (optional) |
+ * <code>Array</code> object which order of elements should be |
+ * reversed. Is used instead of the calling <code>Array</code> |
+ * object. |
+ * @return {Array} |
+ * A copy of <code>a</code> or the calling <code>Array</code> |
+ * object with its elements in reverse order. If <code>a</code> |
+ * has no elements, an empty array is returned. |
+ */ |
+ reverse: function (a) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ a = this; |
+ } |
+ |
+ var result = []; |
+ |
+ if (_isArray(a)) |
+ { |
+ for (var i = a.length - 1; i > -1; i--) {result[result.length] = a[i];} |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Searches an array for a given value and returns |
+ * the corresponding index or vector if successful. |
+ * |
+ * @param needle |
+ * Value to be searched for. |
+ * @param {Array} aHaystack |
+ * <code>Array</code> to be searched for. Is used instead of |
+ * the calling <code>Array</code> object. |
+ * @param {boolean} bStrict (optional) |
+ * If <code>true</code> then the function will also check the |
+ * types of the <code>needle</code> in the <code>aHaystack</code>. |
+ * @param {boolean} bDeepSearch (optional) |
+ * If <code>true</code>, a deep search, if necessary, will be |
+ * performed, i.e. also elements of the array are searched if |
+ * they refer to <code>Array</code> objects. (Note that this |
+ * method pays attention to the possibility that an element may |
+ * refer to one of its parents, so that infinite recursion is |
+ * not performed in this case. However, this additional check |
+ * reduces efficiency as another {@link jsx.array#search()} |
+ * must be invoked for every ancestor relationship. Also |
+ * note that this compares only references, not content. |
+ * If <code>needle</code> is a reference to an <code>Array</code> |
+ * object, it is compared as reference with every single |
+ * element, not its content with the content of elements |
+ * [that refer to <code>Array</code> objects].) |
+ * @param {Array} aAncestors (optional) |
+ * Used internally by {@linkplain (bDeepSearch) deep search} to refer |
+ * to an <code>Array</code> object storing the ancestors of a |
+ * "child" array element that refers to an <code>Array</code> |
+ * object itself. Usage prevents infinite recursion, see |
+ * <code>bDeepSearch</code>. |
+ * @param {Array} aResultVector (optional) |
+ * Used internally by {@linkplain (bDeepSearch) deep search} |
+ * to refer to an <code>Array</code> object storing the |
+ * vector of a matching array element that refers to an |
+ * <code>Array</code> object itself. |
+ * @param {number} iLevel (optional) |
+ * Used internally by {@linkplain (bDeepSearch) deep search} |
+ * to specify the level for index of the coordinate of |
+ * <code>aResultVector</code> if there is a match. The default |
+ * level (also used for non-deep searches) is 0 for the |
+ * first coordinate of <code>aResultVector</code>. |
+ * @param {number} index (optional) |
+ * Used internally by {@linkplain (bDeepSearch) deep search} |
+ * to specify the current index for the coordinate of |
+ * <code>aResultVector</code> if there is a match. |
+ * @return {number} |
+ * Without {@linkplain (bDeepSearch) deep search}: |
+ * The zero-based index of the first matching element |
+ * if <code>needle</code> is found in the array, |
+ * -1 |
+ * otherwise. |
+ * |
+ * With {@linkplain (bDeepSearch) deep search}: |
+ * A reference to an Array object indicating the vector of |
+ * the first matching element (i.e. its coordinates) |
+ * if <code>needle</code> is found in the array, |
+ * <code>null</code> |
+ * otherwise. |
+ * |
+ * If neither the calling object is an <code>Array</code> |
+ * object nor <code>aHaystack</code> is a reference to such: |
+ * 0 or <code>index</code> |
+ * if <code>needle</code> is equal to <code>aHaystack</code> |
+ * (<code>bStrict</code> is noted), |
+ * -1 |
+ * otherwise. |
+ */ |
+ search: function array_search (needle, aHaystack, bStrict, bDeepSearch, |
+ aAncestors, aResultVector, iLevel, index) { |
+ var result = -1; |
+ |
+ if (typeof index == "undefined" || index < 0) |
+ { |
+ index = 0; |
+ } |
+ |
+ /* |
+ array_search(4, [[1, 2, 3], [4, 5, 6], [7, 8, 9]], true, true); |
+ |
+ {0: {0: 1, |
+ 1: 2, |
+ 2: 3}, |
+ 1: {0: 4, |
+ 1: 5, |
+ 2: 6}, |
+ 2: {0: 7, |
+ 1: 8, |
+ 2: 9}} |
+ |
+ array_search(4, [[1, 2, 3], [4, 5, 6], [7, 8, 9]], true, true) == [1, 0] |
+ array_search(4, [1, 2, 3], true, true) == null |
+ array_search(4, [4, 5, 6], true, true) == 0 |
+ array_search(4, [7, 8, 9], true, true) == null |
+ */ |
+ |
+ if (_isArray(aHaystack)) |
+ { |
+ for (var i = 0; i < aHaystack.length; i++) |
+ { |
+ if (bDeepSearch) |
+ { |
+ result = null; |
+ |
+ if (!aAncestors) |
+ { |
+ aAncestors = []; |
+ } |
+ |
+ /* avoid dupes */ |
+ if (aAncestors.length == 0 |
+ || aAncestors[aAncestors.length - 1] != aHaystack) |
+ { |
+ _array_push(aAncestors, aHaystack); |
+ } |
+ |
+ if (!aResultVector) |
+ { |
+ aResultVector = []; |
+ } |
+ |
+ if (typeof iLevel == "undefined") |
+ { |
+ iLevel = 0; |
+ } |
+ |
+ /* avoid inf. recursion */ |
+ if (!inArray(aHaystack[i], aAncestors, false)) |
+ { |
+ var res = |
+ array_search( |
+ needle, |
+ aHaystack[i], |
+ bStrict, |
+ bDeepSearch, |
+ aAncestors, |
+ aResultVector, |
+ iLevel + 1, |
+ i); |
+ |
+ if (res != null && res > -1) |
+ { |
+ result = aResultVector; |
+ break; |
+ } |
+ } |
+ } |
+ else |
+ { |
+ if (bStrict) |
+ { |
+ eval( |
+ 'if (aHaystack[i] === needle) {' |
+ + ' result = i;' |
+ + ' break;' |
+ + '}'); |
+ } |
+ |
+ if (aHaystack[i] == needle) |
+ { |
+ result = i; |
+ break; |
+ } |
+ } |
+ } |
+ } |
+ else |
+ { |
+ if (bStrict) |
+ { |
+ eval( |
+ 'if (aHaystack === needle) {' |
+ + ' if (bDeepSearch) {' |
+ + ' aResultVector[iLevel - 1] = index;' |
+ + ' }' |
+ + ' result = index;' |
+ + '}'); |
+ } |
+ |
+ if (aHaystack == needle) |
+ { |
+ if (bDeepSearch) |
+ { |
+ aResultVector[iLevel - 1] = index; |
+ } |
+ result = index; |
+ } |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * @param value |
+ * @param {Array} a |
+ * Array which should be searched. Is used instead of the |
+ * <code>Array</code> object the function is applied to. |
+ * @param {boolean} bExactMatch |
+ * If <code>true</code> then the function will also check the |
+ * types of the <code>needle</code> in the <code>aHaystack</code> |
+ * (optional). |
+ * @param {boolean} bDeepSearch = false |
+ * If <code>true</code>, a {@linkplain #array_search(bDeepSearch) |
+ * deep search}, if necessary, will be performed. |
+ * @return {boolean} |
+ * <code>true</code> if <code>value</code> is an element of |
+ * <code>a</code>, <code>false</code> otherwise. |
+ */ |
+ contains: function (value, a, bExactMatch, bDeepSearch) { |
+ var result = null; |
+ |
+ if (bDeepSearch) |
+ { |
+ result = !!array_search(value, a, bExactMatch, true); |
+ } |
+ else |
+ { |
+ result = array_search(value, a, bExactMatch, false) > -1; |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * @function |
+ */ |
+ changeCase: _changeCase, |
+ |
+ /** |
+ * Takes input array <code>a</code> or the Array object it is |
+ * applied to as method and returns a new Array object with all |
+ * string elements (optionally all elements regardless of their |
+ * type) lowercased. |
+ * |
+ * @param {Array} a (optional) |
+ * Array which elements should be converted. Is used instead |
+ * of the Array object the function is applied to. |
+ * @param {boolean} bConvertNonStrings = false |
+ * If <code>false</code> (default), changes only the case of |
+ * string elements. If <code>true</code>, converts non-string |
+ * elements to <code>string</code> and changes their case. |
+ * @return {Array} |
+ * A copy of <code>a</code> or the Array object with its |
+ * elements' value lowercased. If <code>a</code> has no |
+ * elements, an empty array is returned. |
+ */ |
+ toLowerCase: function (a, bConvertNonStrings) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ bConvertNonStrings = a; |
+ a = this; |
+ } |
+ |
+ return _changeCase.call(a, a, false, bConvertNonStrings); |
+ }, |
+ |
+ /** |
+ * Takes input array <code>a</code> or the Array object it is |
+ * applied to as method and returns a new Array object with all |
+ * string elements (optionally all elements regardless of their |
+ * type) uppercased. |
+ * |
+ * @param {Array} a (optional) |
+ * Array which elements should be converted. Is used instead |
+ * of the Array object the function is applied to. |
+ * @param {boolean} bConvertNonStrings = false |
+ * If <code>false</code> default, changes only the case of |
+ * string elements. If <code>true</code>, converts non-string |
+ * elements to <code>string</code> and changes their case. |
+ * @return {Array} |
+ * A copy of <code>a</code> or the Array object with its |
+ * elements' value uppercased. If <code>a</code> has no |
+ * elements, an empty array is returned. |
+ */ |
+ toUpperCase: function (a, bConvertNonStrings) { |
+ if (!_isArray(a) && _isArray(this)) |
+ { |
+ bConvertNonStrings = a; |
+ a = this; |
+ } |
+ |
+ return _changeCase.call(a, a, true, bConvertNonStrings); |
+ }, |
+ |
+ /** |
+ * @function |
+ */ |
+ splice: (function() { |
+ if (typeof _jsx.global.array_splice != "undefined") |
+ { |
+ return _jsx.global.array_splice; |
+ } |
+ else if (typeof Array != "undefined" |
+ && _jsx_object.isNativeMethod(Array, "prototype", "splice")) |
+ { |
+ return function(a, start, del, ins) { |
+ var proto = Array.prototype; |
+ ins = proto.slice.call(arguments, 3); |
+ return proto.splice.apply(a, [start, del].concat(ins)); |
+ }; |
+ } |
+ |
+ return function(a, start, del, ins) { |
+ var aDeleted = []; |
+ |
+ for (var i = start + del, len = a.length; i < len; i++) |
+ { |
+ aDeleted[aDeleted.length] = a[i - del]; |
+ a[i - del] = a[i]; |
+ } |
+ |
+ a.length = len - del; |
+ |
+ for (i = 3, len = arguments.length; i < len; i++) |
+ { |
+ a[a.length] = arguments[i]; |
+ } |
+ |
+ return aDeleted; |
+ }; |
+ }()), |
+ |
+ every: function (callback, thisObject) { |
+ /* NOTE: Checks for null or undefined */ |
+ if (thisObject == null && _isArray(this)) |
+ { |
+ thisObject = this; |
+ } |
+ |
+ if (_isNativeMethod(thisObject, "every")) |
+ { |
+ return thisObject.every(callback); |
+ } |
+ |
+ for (var i = 0, len = thisObject.length; i < len; i++) |
+ { |
+ if (!callback(thisObject[i])) |
+ { |
+ return false; |
+ } |
+ } |
+ |
+ return true; |
+ }, |
+ |
+ equals: function (otherObject, thisObject, strict) { |
+ /* NOTE: Check for null or undefined */ |
+ if (thisObject == null && _isArray(this)) |
+ { |
+ thisObject = this; |
+ } |
+ |
+ if (thisObject.length != otherObject.length) |
+ { |
+ return false; |
+ } |
+ |
+ for (var i = 0, len = thisObject.length; i < len; ++i) |
+ { |
+ if (strict) |
+ { |
+ if (thisObject[i] !== otherObject[i]) |
+ { |
+ return false; |
+ } |
+ } |
+ else |
+ { |
+ if (thisObject[i] != otherObject[i]) |
+ { |
+ return false; |
+ } |
+ } |
+ } |
+ |
+ return true; |
+ }, |
+ |
+ /** |
+ * Returns an {@link Array} from which all duplicates |
+ * have been removed. |
+ * |
+ * NOTE: Warns and falls back to {@link #uniqStr()} if |
+ * {@link jsx.map.Map()} is unavailable. |
+ * |
+ * @function |
+ */ |
+ uniq: (function () { |
+ var _Map; |
+ |
+ /** |
+ * @param {Object} thisObject |
+ * The object to operate on. Is used instead of the calling |
+ * object if this method is called as a method of an |
+ * {@link Array}. |
+ */ |
+ return function (thisObject) { |
+ /* NOTE: Check for null or undefined */ |
+ if (thisObject == null && _isArray(this)) |
+ { |
+ thisObject = this; |
+ } |
+ |
+ if (!_Map) |
+ { |
+ _Map = jsx.object.getFeature(jsx, "map", "Map"); |
+ if (!_Map) |
+ { |
+ jsx.warn("jsx.array.uniq(): jsx.map.Map N/A, falling back to jsx.array.uniqStr()"); |
+ return jsx.array.uniqStr(thisObject); |
+ } |
+ } |
+ |
+ var condensed = new _Map(); |
+ |
+ for (var i = 0, len = thisObject.length; i < len; ++i) |
+ { |
+ if (_hasOwnProperty(thisObject, i)) |
+ { |
+ condensed.put(thisObject[i], true); |
+ } |
+ } |
+ |
+ return condensed.getKeys(); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns an {@link Array} from which all {@link String} |
+ * duplicates have been removed. |
+ * |
+ * This method is more efficient than {@link #uniq} if you |
+ * can be sure that either all elements are string values |
+ * or their string representations can be compared. However, |
+ * different to <code>uniq()</code>, the order of the |
+ * resulting elements is implementation-dependent. |
+ * |
+ * @param {Object} thisObject |
+ * The object to operate on. Is used instead of the calling |
+ * object if this method is called as a method of an |
+ * {@link Array}. |
+ */ |
+ uniqStr: function (thisObject) { |
+ /* NOTE: Check for null or undefined */ |
+ if (thisObject == null && _isArray(this)) |
+ { |
+ thisObject = this; |
+ } |
+ |
+ var condensed = jsx.object.getDataObject(); |
+ |
+ for (var i = 0, len = thisObject.length; i < len; ++i) |
+ { |
+ if (_hasOwnProperty(thisObject, i)) |
+ { |
+ condensed[thisObject[i]] = true; |
+ } |
+ } |
+ |
+ return _getKeys(condensed); |
+ }, |
+ |
+ /** |
+ * Returns a function that can be used for sorting an {@link Array}. |
+ * |
+ * @author (C) 2013 Thomas 'PointedEars' Lahn <js@PointedEars.de> |
+ */ |
+ createComparator: (function () { |
+ var _isObject = _jsx_object.isObject; |
+ |
+ /** |
+ * @param {Array} aKeys |
+ * Array of keys that should be sorted by, in order. |
+ * A key may be a {@link string} value or a native object. |
+ * If it is a <code>string</code>, it specifies the property name |
+ * of the sort key. If it is another native object, the following |
+ * of its properties are used as options. See the <var>options</var> |
+ * parameter for the default values of these options. |
+ * <table> |
+ * <tr> |
+ * <th><code>key</code></th> |
+ * <td>The name of the property of the elements whose values |
+ * should be sorted by (sort values). If this option is |
+ * not present or a false-value, the element values are |
+ * used as sort values.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>callback</code></th> |
+ * <td>A reference to the <code>Function</code> whose |
+ * return value, when passed the current sort value, |
+ * defines the new sort value.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>constructor</code></th> |
+ * <td>A reference to the <code>Function</code> whose |
+ * return value when passed the current sort value |
+ * and called as a constructor, defines the new |
+ * sort value. This is useful if data can be converted |
+ * to an object whose <code>toString</code> or |
+ * <code>valueOf</code> methods can return a |
+ * valid sort value. If both <code>callback</code> |
+ * and <code>constructor</code> are specified, the |
+ * return value of the callback is passed to |
+ * the constructor.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>comparator</code></th> |
+ * <td>A reference to the <code>Function</code> that |
+ * should be passed the first and second current |
+ * sort values and whose return value defines |
+ * the relation between the first and second sort |
+ * value. If the return value is not (loosely) equal |
+ * to 0 or if the key is the last key, its return |
+ * value is returned. Otherwise the subsequent |
+ * sort values are compared.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>descending</code></th> |
+ * <td>If a true-value, the sort order for this key |
+ * is descending.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>numeric</code></th> |
+ * <td>If a true-value, the sort values are compared as if |
+ * both of them were <code>Number</code> values.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>strict</code></th> |
+ * <td>If a true-value, the sort values are sorted |
+ * using the <code>===</code> operator.</td> |
+ * </tr> |
+ * </table> |
+ * @param {Object} options (optional) |
+ * Default sort options. The following properties are used: |
+ * <table> |
+ * <tr> |
+ * <th><code>callback</code></th> |
+ * <td>A reference to the <code>Function</code> whose |
+ * return value, when passed the current sort value, |
+ * defines the new sort value. The factory default |
+ * is not to use a callback.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>constructor</code></th> |
+ * <td>A reference to the <code>Function</code> whose |
+ * return value when passed the current sort value |
+ * and called as a constructor, defines the new |
+ * sort value. The factory default is not to use |
+ * a constructor.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>comparator</code></th> |
+ * <td>A reference to the <code>Function</code> that |
+ * should be passed the first and second current |
+ * sort values and whose return value defines |
+ * the relation between the first and second sort |
+ * value. The factory default is not to use a |
+ * special sort value comparator.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>descending</code></th> |
+ * <td>If a true-value, the default sort order is |
+ * descending. The factory default is ascending.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>numeric</code></th> |
+ * <td>If a true-value, by default the sort values are compared |
+ * as if they were <code>Number</code> values. The factory |
+ * default is a generic comparison that uses the operators |
+ * <code>==</code> (non-strict) or <code>===</code> |
+ * (strict), and <code><</code>, and <code>></code>.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>strict</code></th> |
+ * <td>If a true-value, use strict comparison by default. |
+ * The factory default is non-strict comparison.</td> |
+ * </tr> |
+ * </table> |
+ * @return {Function} |
+ */ |
+ function _createComparator (aKeys, options) |
+ { |
+ if (aKeys == null || !_isArray(aKeys)) |
+ { |
+ aKeys = [aKeys]; |
+ } |
+ |
+ if (options == null || !_isObject(options)) |
+ { |
+ options = {}; |
+ } |
+ |
+ return function (el1, el2) { |
+ for (var i = 0, len = aKeys.length; i < len; ++i) |
+ { |
+ var key = aKeys[i]; |
+ var propertyName = ((key == null || typeof key.valueOf() == "string") |
+ ? key |
+ : key.key); |
+ |
+ var el1Value = (propertyName != null ? el1[propertyName] : el1); |
+ var el2Value = (propertyName != null ? el2[propertyName] : el2); |
+ |
+ if (key && typeof key.callback == "function") |
+ { |
+ el1Value = key.callback(el1Value); |
+ el2Value = key.callback(el2Value); |
+ } |
+ else if (typeof options.callback == "function") |
+ { |
+ el1Value = options.callback(el1Value); |
+ el2Value = options.callback(el2Value); |
+ } |
+ |
+ if (key && _hasOwnProperty(key, "constructor")) |
+ { |
+ el1Value = new key.constructor(el1Value); |
+ el2Value = new key.constructor(el2Value); |
+ } |
+ else if (_hasOwnProperty(options, "constructor")) |
+ { |
+ el1Value = new options.constructor(el1Value); |
+ el2Value = new options.constructor(el2Value); |
+ } |
+ |
+ var isLastKey = (i == len - 1); |
+ var hasKeySpecificComparator = (typeof key.comparator == "function"); |
+ if (hasKeySpecificComparator |
+ || (typeof options.comparator == "function")) |
+ { |
+ var comparatorResult = (hasKeySpecificComparator |
+ ? key.comparator(el1Value, el2Value) |
+ : options.comparator(el1Value, el2Value)); |
+ |
+ if (isLastKey || comparatorResult != 0) |
+ { |
+ return comparatorResult; |
+ } |
+ |
+ continue; |
+ } |
+ |
+ equals = ((key && key.strict) || (options.strict) |
+ ? (el1Value === el2Value) |
+ : (el1Value == el2Value)); |
+ |
+ if (equals) |
+ { |
+ if (isLastKey) |
+ { |
+ /* last key, same value */ |
+ return 0; |
+ } |
+ } |
+ else |
+ { |
+ var descending = ((key && key.descending) || options.descending); |
+ |
+ return ((key && key.numeric) || options.numeric |
+ ? (descending |
+ ? el2Value - el1Value |
+ : el1Value - el2Value) |
+ : (descending |
+ ? (el1Value > el2Value ? -1 : 1) |
+ : (el1Value < el2Value ? -1 : 1))); |
+ } |
+ } |
+ }; |
+ } |
+ |
+ return _createComparator; |
+ }()) |
+ }; |
+}()); |
+ |
+//jsx.array.docURL = jsx.array.path + "array.htm"; |
+ |
+if (jsx.options.augmentPrototypes) |
+{ |
+ jsx.object.extend(Array.prototype, { |
+ /** |
+ * @memberOf Array.prototype |
+ */ |
+ chunk: jsx.array.chunk, |
+ changeCase: jsx.array.changeCase, |
+ contains: jsx.array.contains, |
+ countValues: jsx.array.countValues, |
+ equals: jsx.array.equals, |
+ fill: jsx.array.fill, |
+ filter: jsx.array.filter, |
+ pop: jsx.array.pop, |
+ push: jsx.array.push, |
+ reverse: jsx.array.reverse, |
+ search: jsx.array.search, |
+ splice: jsx.array.splice, |
+ toLowerCase: jsx.array.toLowerCase, |
+ toUpperCase: jsx.array.toUpperCase, |
+ uniq: jsx.array.uniq, |
+ uniqStr: jsx.array.uniqStr, |
+ |
+ /* JavaScript 1.6 (1.5 in Gecko 1.8b2 and later) emulation */ |
+ every: jsx.array.every, |
+ |
+ /* TODO */ |
+ iterate: function () { |
+ var a = []; |
+ |
+ for (var i = 0, len = this.length; i < len; i++) |
+ { |
+ a.push(this[i]); |
+ } |
+ |
+ return a; |
+ } |
+ }); |
+} |
\ No newline at end of file |
/live/array.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/UniCalc/unicalc.js |
=================================================================== |
--- live/UniCalc/unicalc.js (nonexistent) |
+++ live/UniCalc/unicalc.js (revision 520) |
@@ -0,0 +1,150 @@ |
+function toASCII (unicode) |
+{ |
+ var ascii = new jsx.regexp.String(unicode.value).replace( |
+ jsx.regexp.RegExp( |
+ "(?<operand>[−×∕])|(?<root>[√])|(?<delim>'+)" |
+ + "|(?<exponent>[⁰¹²³\u2074-\u2079⁺⁻⁽⁾]+)" |
+ + "|\\b(?<const>g)\\b", |
+ "g"), |
+ function (match) { |
+ var groups = this.groups; |
+ if (groups["operand"]) |
+ { |
+ switch (match) |
+ { |
+ case "−": return "-"; |
+ case "×": return "*"; |
+ case "∕": return "/"; |
+ } |
+ } |
+ |
+ if (groups["root"]) |
+ { |
+ switch (match) |
+ { |
+ case "√": return "sqrt"; |
+ default: |
+ return match; |
+ } |
+ } |
+ |
+ if (groups["delim"]) |
+ { |
+ return ""; |
+ } |
+ |
+ if (groups["exponent"]) |
+ { |
+ var exponent = match.replace( |
+ /./g, |
+ function (match) { |
+ switch (match) |
+ { |
+ case "⁰": return "0"; |
+ case "¹": return "1"; |
+ case "²": return "2"; |
+ case "³": return "3"; |
+ case "⁺": return "+"; |
+ case "⁻": return "-"; |
+ case "⁼": return "="; |
+ case "⁽": return "("; |
+ case "⁾": return ")"; |
+ default: |
+ if (/[\u2074-\u2079]/.test(match)) |
+ { |
+ return String.fromCharCode( |
+ 0x30 + (match.charCodeAt(0) - 0x2070)); |
+ } |
+ |
+ return match; |
+ } |
+ }); |
+ |
+ return "^(" + exponent + ")"; |
+ } |
+ |
+ if (groups["const"]) |
+ { |
+ switch (match) |
+ { |
+ case "g": return "9.81 m/s^2"; |
+ } |
+ } |
+ |
+ return match; |
+ }); |
+ |
+ unicode.form.elements["q"].value = ascii; |
+} |
+ |
+function toUnicode (ascii) |
+{ |
+ var unicode = new jsx.regexp.String(ascii.value).replace( |
+ jsx.regexp.RegExp( |
+ "(?<operand>[-*/])|\\b(?<root>(sq|cub)rt)\\b|\\^(?<exponent>[\\d()]+)", |
+ "g"), |
+ function (match) { |
+ var groups = this.groups; |
+ if (groups["operand"]) |
+ { |
+ return jsx.object.getProperty({ |
+ "-": "−", |
+ "*": "×", |
+ "/": "∕" |
+ }, match); |
+ } |
+ |
+ if (groups["root"]) |
+ { |
+ switch (match) |
+ { |
+ case "cubrt": return "∛"; |
+ case "sqrt": return "√"; |
+ default: |
+ return match; |
+ } |
+ } |
+ |
+ if (groups["exponent"]) |
+ { |
+ var exponent = groups["exponent"].replace( |
+ /./g, |
+ function (match) { |
+ switch (match) |
+ { |
+ case "0": return "⁰"; |
+ case "1": return "¹"; |
+ case "2": return "²"; |
+ case "3": return "³"; |
+ case "+": return "⁺"; |
+ case "-": return "⁻"; |
+ case "=": return "⁼"; |
+ case "(": return "⁽"; |
+ case ")": return "⁾"; |
+ default: |
+ if (/[4-9]/.test(match)) |
+ { |
+ return String.fromCharCode( |
+ match.charCodeAt(0) - 0x30 + 0x2070); |
+ } |
+ |
+ return match; |
+ } |
+ }); |
+ |
+ return exponent; |
+ } |
+ |
+ return match; |
+ }); |
+ |
+ ascii.form.elements["unicode"].value = unicode; |
+} |
+ |
+function calc (form) |
+{ |
+ return !window.open( |
+ form.action + "?q=" + encodeURIComponent(form.elements["q"].value), |
+ form.target, |
+ "width=720,height=630,resizable"); |
+} |
\ No newline at end of file |
/live/UniCalc/unicalc.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/UniCalc/index.html |
=================================================================== |
--- live/UniCalc/index.html (nonexistent) |
+++ live/UniCalc/index.html (revision 520) |
@@ -0,0 +1,60 @@ |
+<!DOCTYPE html> |
+<html lang="en"> |
+ <head> |
+ <meta charset="UTF-8"> |
+ <title>UniCalc (Unicode Calculator) — PointedEars’ Website</title> |
+ <style type="text/css"> |
+ <!-- |
+ table { |
+ width: 100%; |
+ } |
+ |
+ th { |
+ width: 8em; |
+ text-align: right; |
+ } |
+ |
+ th:after { |
+ content: ":"; |
+ } |
+ |
+ [lang^="fr"] th:after { |
+ content: "\00A0 :"; |
+ } |
+ |
+ .td3 { |
+ width: 8em; |
+ } |
+ |
+ input { |
+ width: 100%; |
+ } |
+ --> |
+ </style> |
+ <script type="text/javascript" src="../builder?src=object,regexp"></script> |
+ <script type="text/javascript" src="unicalc.js"></script> |
+ </head> |
+ <body> |
+ <h1>UniCalc – Unicode Calculator</h1> |
+ <form action="http://www.google.com/search" target="result" |
+ onsubmit="return calc(this)"> |
+ <table> |
+ <tr> |
+ <th><label for="unicode">Unicode <u>f</u>ormula</label></th> |
+ <td><input type="search" id="unicode" name="unicode" accesskey="f" |
+ onkeyup="toASCII(this)" |
+ oninput="toASCII(this)" |
+ ></td> |
+ </tr> |
+ <tr> |
+ <th><label for="ascii"><u>A</u>SCII formula</label></th> |
+ <td><input type="search" id="ascii" name="q" accesskey="a" |
+ onkeyup="toUnicode(this)" |
+ oninput="toUnicode(this)" |
+ ></td> |
+ <td class="td3"><input type="submit" value="Calculate (Google)"></td> |
+ </tr> |
+ </table> |
+ </form> |
+ </body> |
+</html> |
/live/UniCalc/index.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/object.js |
=================================================================== |
--- live/object.js (nonexistent) |
+++ live/object.js (revision 520) |
@@ -0,0 +1,3188 @@ |
+/** |
+ * @fileOverview <title>Basic Object Library</title> |
+ * @file $Id$ |
+ * |
+ * @author (C) 2004-2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+/* allows for de.pointedears.jsx.object */ |
+if (typeof de == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var de = {}; |
+} |
+ |
+if (typeof de.pointedears == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ de.pointedears = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+de.pointedears.jsx = jsx; |
+ |
+/** |
+ * Reference to the ECMAScript Global Object |
+ * @type Global |
+ * @field |
+ */ |
+jsx.global = this; |
+ |
+/* |
+ * NOTE: Cannot use jsx.object.extend() for the following |
+ * because values have not been defined yet! |
+ * |
+ * TODO: Should syntactic sugar be provided to work around |
+ * this issue? See Function.prototype.extend(). |
+ */ |
+ |
+jsx.MSG_INFO = "info"; |
+jsx.MSG_WARN = "warn"; |
+jsx.MSG_ERROR = "error"; |
+jsx.MSG_DEBUG = "debug"; |
+ |
+if (typeof jsx.options == "undefined") |
+{ |
+ /** |
+ * Holds the runtime options for JSX. |
+ * |
+ * Due to the dynamic nature of ECMAScript, it is very flexible. |
+ * Built-in objects can be augmented and built-in methods can be |
+ * overwritten to allow for "syntactic sugar" that make programs |
+ * easier to write and to read, should the implementation not |
+ * already provide suitable features. However, augmentation |
+ * and replacement do have disadvantages if you are not aware |
+ * of the fact. Allowing for a maximum of flexibility, JSX |
+ * uses options that govern to which degree JSX components may |
+ * modify built-in objects. Options include, with increasing |
+ * degree of flexibility and side-effects by nesting level: |
+ * |
+ * <table> |
+ * <thead> |
+ * <tr> |
+ * <td></td> |
+ * <th>mod. builtins</th> |
+ * <th>augment</th> |
+ * <th>augmentproto</th> |
+ * <th>augmentobjectproto</th> |
+ * </tr> |
+ * </thead> |
+ * <tbody> |
+ * <tr> |
+ * <th><code>augmentBuiltins</code></th> |
+ * <td>yes</td> |
+ * <td>yes</td> |
+ * <td>no</td> |
+ * <td>no</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>augmentPrototypes</code></th> |
+ * <td>yes</td> |
+ * <td>yes</td> |
+ * <td>yes</td> |
+ * <td>no</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>augmentObjectPrototype</code></th> |
+ * <td>yes</td> |
+ * <td>yes</td> |
+ * <td>yes</td> |
+ * <td>yes</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>replaceBuiltins</code></th> |
+ * <td>yes</td> |
+ * <td>depends</td> |
+ * <td>depends</td> |
+ * <td>depends</td> |
+ * </tr> |
+ * </tbody> |
+ * </table> |
+ * |
+ * <dl> |
+ * <dt><code>augmentBuiltins</code></dt> |
+ * <dd>Allow built-ins to be augmented with new |
+ * properties. This allows new properties on |
+ * the built-in constructors, but not on |
+ * prototype objects of built-in objects. |
+ * See <code>augmentPrototypes</code>. |
+ * Since there usually is no harm in that, |
+ * the default is <code>true</code>. |
+ * Set to <code>false</code> if you are testing features |
+ * of ECMAScript implementations with JSX, |
+ * like with the ECMAScript Support Matrix. |
+ * <dl> |
+ * <dt><code>augmentPrototypes</code></dt> |
+ * <dd>Allow prototype objects to be augmented, |
+ * except <code>Object.prototype</code>. |
+ * This allows for new, inherited methods for |
+ * <code>String</code>s, for example. |
+ * Since there usually is no harm in that, the |
+ * default is <code>true</code>. |
+ * <dl> |
+ * <dt><code>augmentObjectPrototype</code></dt> |
+ * <dd>Allow <code>Object.prototype</code> |
+ * to be augmented. <em>CAUTION: |
+ * The new properties are inherited |
+ * to all native objects, and |
+ * host objects that have |
+ * <code>Object.prototype</code> |
+ * in their prototype chain. The new |
+ * properties will show up everywhere, |
+ * including <code>for-in</code> |
+ * iteration. If you do not know |
+ * what this is all about, leave it |
+ * at the default <code>false</code>.</em></dd> |
+ * </dl> |
+ * </dd> |
+ * <dt><code>replaceBuiltins</code></dt> |
+ * <dd>Allow built-ins to be replaced with native user-defined |
+ * implementations.</dd> |
+ * </dl> |
+ * @namespace |
+ */ |
+ jsx.options = {}; |
+} |
+ |
+if (typeof jsx.options.augmentBuiltins == "undefined") |
+{ |
+ /** |
+ * If <code>false</code>, built-ins are not modified. |
+ * The default is <code>true</code>. |
+ * |
+ * @type boolean |
+ */ |
+ jsx.options.augmentBuiltins = true; |
+} |
+ |
+if (typeof jsx.options.augmentPrototypes == "undefined") |
+{ |
+ /** |
+ * If <code>false</code>, built-in prototypes are not modified. |
+ * The default is <code>true</code>. |
+ * |
+ * @type boolean |
+ */ |
+ jsx.options.augmentPrototypes = true; |
+} |
+ |
+if (typeof jsx.options.augmentObjectPrototype == "undefined") |
+{ |
+ /** |
+ * If <code>false</code> (default), the Object prototype object is |
+ * not modified. The default is <code>false</code>. |
+ * |
+ * @type boolean |
+ */ |
+ jsx.options.augmentObjectPrototype = false; |
+} |
+ |
+if (typeof jsx.options.replaceBuiltins == "undefined") |
+{ |
+ /** |
+ * If <code>false</code>, built-ins are not replaced. |
+ * The default is <code>true</code>. |
+ * |
+ * @type boolean |
+ */ |
+ jsx.options.replaceBuiltins = true; |
+} |
+ |
+if (typeof jsx.options.emulate == "undefined") |
+{ |
+ /** |
+ * If <code>false</code>, missing language features are not emulated. |
+ * The default is <code>true</code>. |
+ * <p> |
+ * WARNING: JSX features may depend on emulation; intended for |
+ * testing only. |
+ * </p> |
+ * @type boolean |
+ */ |
+ jsx.options.emulate = true; |
+} |
+ |
+if (jsx.options.emulate) |
+{ |
+ jsx.options.augmentBuiltins = true; |
+ jsx.options.augmentPrototypes = true; |
+ jsx.options.replaceBuiltins = true; |
+} |
+ |
+/** |
+ * Wrapper for a safer <code>try</code>...<code>catch</code>. |
+ * |
+ * Attempts to evaluate a value as a <i>StatementList</i>, and attempts |
+ * to evaluate another value as a <i>StatementList</i> if an exception |
+ * is thrown in the process. The following words may be used within: |
+ * |
+ * <table> |
+ * <thead> |
+ * <tr> |
+ * <th align="left">Word</th> |
+ * <th align="left">Refers to</th> |
+ * </tr> |
+ * </thead> |
+ * <tbody> |
+ * <tr valign="top"> |
+ * <td><code>statements</code><br> |
+ * <code>errorHandlers</code></td> |
+ * <td>the passed values</td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <td>code</td> |
+ * <td>the entire constructed <code>try</code>...<code>catch</code> |
+ * string that is evaluated as a <i>Program</i></td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <td>e</td> |
+ * <td>Only within <var>errorHandlers</var>: |
+ * the value thrown in case of an exception</td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <td>result</td> |
+ * <td>Only within <var>finalizer</var>: |
+ * the previous evaluation value</td> |
+ * </tr> |
+ * </tbody> |
+ * </table> |
+ * |
+ * NOTE: This method has previously been provided by {@link exception.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @function |
+ * @param {Function|string|any} statements |
+ * Value to be evaluated as a <i>StatementList</i>. |
+ * Called if a <code>Function</code>, used as-is otherwise. |
+ * @param {Function|string|any} errorHandler |
+ * Value to be evaluated as a <i>StatementList</i> in case of an |
+ * exception. Called if a <code>Function</code>, |
+ * used as-is otherwise. |
+ * @param {Function|string|any} finalizer |
+ * Value to be evaluated as a <i>StatementList</i> in any case, |
+ * after the statements and error handler. Called if a |
+ * <code>Function</code>, used as-is otherwise. |
+ * @return {any} |
+ * The result of <code>statements</code>, or the result |
+ * of <code>errorHandlers</code> if an error occurred, |
+ * unless <var>finalizer</var> is provided; if it is, |
+ * the evaluation result of <var>finalizer</var>. |
+ */ |
+jsx.tryThis = |
+// (function () { |
+// /** |
+// * @param s Value to be stringified |
+// * @param {String} sCall |
+// * CallStatement that should be used instead of the value |
+// * @return {string} Stringified version of <code>s</code> |
+// */ |
+// function stringify(s, sCall) |
+// { |
+// if (typeof s == "function") |
+// { |
+// s = sCall; |
+// } |
+// else if (typeof s == "undefined") |
+// { |
+// s = ""; |
+// } |
+// |
+// return s; |
+// } |
+ |
+ /*return*/ function (statements, errorHandler, finalizer) { |
+ /* |
+ * Replaced because eval() performs magnitudes worse; |
+ * TODO: Backwards compatibility (branching for NN4 & friends?) |
+ */ |
+// var sStatements = stringify(statements, "statements();"); |
+// var sErrorHandlers = stringify(errorHandlers, "errorHandlers(e);"); |
+// |
+// var code = 'try {\n ' + sStatements + '\n}\n' |
+// + 'catch (e) {\n ' + sErrorHandlers + '\n}'; |
+// |
+// return eval(code); |
+ var t = typeof statements; |
+ var result; |
+ try |
+ { |
+ result = (t == "function" |
+ ? statements() |
+ : eval(statements)); |
+ } |
+ catch (e) |
+ { |
+ t = typeof errorHandler; |
+ result = (t == "function" |
+ ? errorHandler(e) |
+ : eval(errorHandler)); |
+ } |
+ finally |
+ { |
+ if (finalizer != null) |
+ { |
+ t = typeof finalizer; |
+ result = (t == "function" |
+ ? finalizer() |
+ : eval(finalizer)); |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+//}()); |
+ |
+/* only for JSDT JSDoc */ |
+jsx.object = {}; |
+ |
+/** |
+ * @type jsx.object |
+ * @memberOf __jsx.object |
+ * @namespace |
+ */ |
+jsx.object = (/** @constructor */ function () { |
+ var |
+ rxUnknown = /^unknown$/, |
+ rxMethod = /^(function|object)$/; |
+ |
+ /** |
+ * Determines whether an object is, or several objects are, |
+ * likely to be callable. |
+ * |
+ * @author (C) 2003-2010 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * @param {Object} obj |
+ * Object which should be tested for a method, or checked |
+ * for being a method if no further arguments are provided. |
+ * <p> |
+ * <em>NOTE: If you pass a primitive value for this argument, |
+ * the properties of the object created from that value are considered. |
+ * In particular, if you pass a string value containing |
+ * a <i>MemberExpression</i>, the properties of the corresponding |
+ * <code>String</code> instance are considered, not of the object that |
+ * the <i>MemberExpression</i> might refer to. If you need to use such |
+ * a string to refer to an object (e.g., if you do not know whether it |
+ * is safe to refer to the object), use the return value of |
+ * {@link jsx#tryThis jsx.tryThis("<var>MemberExpression</var>")} |
+ * as argument to this method instead.</em> |
+ * </p> |
+ * @param {string|Array} prop (optional) |
+ * Path of the property to be determined a method, i.e. a reference to |
+ * a callable object assigned as property of another object. |
+ * Use a string argument for each component of the path, e.g. |
+ * the argument list <code>(o, "foo", "bar")</code> for testing whether |
+ * <code>o.foo.bar</code> is a method. |
+ * If the last argument is an {@link Array}, all elements of |
+ * this array are used for property names; e.g. |
+ * <code>(o, "foo", ["bar", "baz"])</code>. This allows for testing |
+ * several properties of the same object with one call. |
+ * @return {boolean} |
+ * <code>true</code> if all arguments refer to methods, |
+ * <code>false</code> otherwise. |
+ */ |
+ function _isMethod (obj, prop) |
+ { |
+ var len = arguments.length; |
+ if (len < 1) |
+ { |
+ jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Not enough arguments", "saw 0", "(obj : Object[, prop : string])"]); |
+ return false; |
+ } |
+ |
+ /* |
+ * Determine if we were apply'd by jsx.object.isNativeMethod; |
+ */ |
+ var checkNative = (this == _isNativeMethod); |
+ |
+ var t = typeof obj; |
+ |
+ /* When no property names are provided, test if the first argument is a method */ |
+ if (len < 2) |
+ { |
+ if (checkNative) |
+ { |
+ return t == "function" && obj && true || false; |
+ } |
+ |
+ return rxUnknown.test(t) || rxMethod.test(t) && obj && true || false; |
+ } |
+ |
+ /* otherwise the first argument must refer to a suitable object */ |
+ /* FIXME: Does not recognize the zero-length string as convertible */ |
+ if (rxUnknown.test(t) || !obj) |
+ { |
+ return false; |
+ } |
+ |
+ for (var i = 1; i < len; i++) |
+ { |
+ prop = arguments[i]; |
+ |
+ /* NOTE: Handle null _and_ undefined */ |
+ if (prop == null) |
+ { |
+ return false; |
+ } |
+ |
+ var isLastSeg = (i == len - 1); |
+ if (isLastSeg) |
+ { |
+ if (typeof prop.valueOf() == "string") |
+ { |
+ prop = [prop]; |
+ } |
+ |
+ var aProp = prop; |
+ } |
+ |
+ for (var j = (isLastSeg && aProp.length || 1); j--;) |
+ { |
+ if (isLastSeg) |
+ { |
+ prop = aProp[j]; |
+ } |
+ |
+ t = typeof obj[prop]; |
+ |
+ /* |
+ * NOTE: Test for "unknown" required in any case; |
+ * this order speeds up evaluation |
+ */ |
+ if (rxUnknown.test(t) || (rxMethod.test(t) && obj[prop])) |
+ { |
+ if (i < len - 1) |
+ { |
+ obj = obj[prop]; |
+ if (!(rxUnknown.test(typeof obj) || obj)) |
+ { |
+ return false; |
+ } |
+ } |
+ else if (checkNative && t != "function") |
+ { |
+ return false; |
+ } |
+ } |
+ else |
+ { |
+ return false; |
+ } |
+ } |
+ } |
+ |
+ return true; |
+ } |
+ |
+ /** |
+ * Determines whether an object is, or several objects are, |
+ * likely to be a native method. |
+ * |
+ * @author (C) 2011 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * @param {Object} obj |
+ * Object which should be tested for a method, or checked |
+ * for being a method if no further arguments are provided. |
+ * <p> |
+ * <em>NOTE: If you pass a primitive value for this argument, |
+ * the properties of the object created from that value are considered. |
+ * In particular, if you pass a string value containing |
+ * a <i>MemberExpression</i>, the properties of the corresponding |
+ * <code>String</code> instance are considered, not of the object that |
+ * the <i>MemberExpression</i> might refer to. If you need to use such |
+ * a string to refer to an object (e.g., if you do not know whether it |
+ * is safe to refer to the object), use the return value of |
+ * {@link jsx#tryThis jsx.tryThis("<var>MemberExpression</var>")} |
+ * as argument to this method instead.</em> |
+ * </p> |
+ * @param {string|Array} prop (optional) |
+ * Path of the property to be determined a method, i.e. a reference to |
+ * a callable object assigned as property of another object. |
+ * Use a string argument for each component of the path, e.g. |
+ * the argument list <code>(o, "foo", "bar")</code> for testing whether |
+ * <code>o.foo.bar</code> is a method. |
+ * If the last argument is an {@link Array}, all elements of |
+ * this array are used for property names; e.g. |
+ * <code>(o, "foo", ["bar", "baz"])</code>. This allows for testing |
+ * several properties of the same object with one call. |
+ * @return {boolean} |
+ * <code>true</code> if all arguments refer to methods, |
+ * <code>false</code> otherwise. |
+ */ |
+ function _isNativeMethod (obj, prop) |
+ { |
+ /* NOTE: Thread-safe, argument-safe code reuse -- `this' is our ID */ |
+ return _isMethod.apply(_isNativeMethod, arguments); |
+ } |
+ |
+ /** |
+ * Determines if an object has a (non-inherited) property |
+ * |
+ * @param {Object} obj (optional) |
+ * Object which property should be checked for existence. |
+ * @param {string} sProperty |
+ * Name of the property to check. |
+ * @return {boolean} |
+ * <code>true</code> if there is such a property; |
+ * <code>false</code> otherwise. |
+ */ |
+ function _hasOwnProperty (obj, sProperty) |
+ { |
+ if (arguments.length < 2 && obj) |
+ { |
+ sProperty = obj; |
+ obj = jsx_object; |
+ } |
+ |
+ var proto; |
+ |
+ return (_isMethod(obj, "hasOwnProperty") |
+ ? obj.hasOwnProperty(sProperty) |
+ : (typeof obj[sProperty] != "undefined" |
+ && (null == obj.constructor |
+ || ((proto = obj.constructor.prototype) |
+ && typeof proto[sProperty] == "undefined")))); |
+ } |
+ |
+ /** |
+ * Determines if a value refers to an object. |
+ * |
+ * <p>Returns <code>true</code> if the value is a reference |
+ * to an object; <code>false</code> otherwise.</p> |
+ * |
+ * <p>An value "is an object" if it is a function or |
+ * <code>typeof "object"</code> but not <code>null</code>. |
+ * |
+ * @return {boolean} |
+ */ |
+ function _isObject (a) |
+ { |
+ var t = typeof a; |
+ return t == "function" || t == "object" && a !== null; |
+ } |
+ |
+ /** |
+ * Returns the own enumerable properties of an object |
+ * |
+ * @param {Object} obj |
+ * Object from which to get the keys |
+ * @return {Array} |
+ * Own enumerable properties of <var>obj</var> |
+ * @see Object#keys |
+ */ |
+ function _getKeys (obj) |
+ { |
+ if (typeof Object.keys == "function" && !Object.keys._emulated) |
+ { |
+ return Object.keys(obj); |
+ } |
+ |
+ if (!_isObject(obj)) |
+ { |
+ return jsx.throwThis("TypeError", |
+ "jsx.object.getKeys() called on non-object"); |
+ } |
+ |
+ var names = new Array(); |
+ |
+ for (var p in obj) |
+ { |
+ if (_hasOwnProperty(obj, p)) |
+ { |
+ names.push(p); |
+ } |
+ } |
+ |
+ return names; |
+ } |
+ |
+ function Dummy () {} |
+ |
+ /** |
+ * Lets one object inherit from another |
+ * |
+ * @param {Object} obj = Object.prototype |
+ * Object from which to inherit. The default is |
+ * <code>Object.prototype</code>. |
+ * @return {Object} |
+ * Inheriting (child) object |
+ */ |
+ function _inheritFrom (obj) |
+ { |
+ if (typeof obj == "object" && obj == null) |
+ { |
+ if (typeof Object.create == "function" && !Object.create._emulated) |
+ { |
+ return Object.create(null); |
+ } |
+ |
+ var result = new Object(); |
+ result.__proto__ = null; |
+ return result; |
+ } |
+ |
+ Dummy.prototype = (typeof obj == "undefined" |
+ ? Object.prototype |
+ : (obj || null)); |
+ return new Dummy(); |
+ } |
+ |
+ /** |
+ * Returns the value of an object's internal <code>[[Class]]</code> |
+ * property. |
+ * |
+ * Calls the <code>Object.prototype.toString()</code> method on |
+ * the object and returns the result of matching against |
+ * the specified return value, which includes the value of |
+ * the object's internal <code>[[Class]]</code> property. Although |
+ * implementations use prototype-based inheritance, the property |
+ * value is useful for determining the type of an object regardless |
+ * of the current value of its <code>constructor</code> property. |
+ * For example, that makes it possible to recognize <code>Array</code> |
+ * instances independent of the global context in which they were |
+ * constructed. |
+ * |
+ * @function |
+ * Determines if a value refers to an {@link Array}. |
+ * <p> |
+ * Returns <code>true</code> if the value is a reference to an object |
+ * whose <code>[[Class]]</code> internal property is <code>"Array"</code>; |
+ * <code>false</code> otherwise. |
+ * </p> |
+ * |
+ * @function |
+ * @param obj |
+ * @return {string|Undefined} |
+ * The value of an object's internal [[Class]] property, or |
+ * <code>undefined</code> if the property value cannot be determined. |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.3.2 |
+ */ |
+ var _getClass = (function () { |
+ var _toString = ({}).toString; |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ function getClass (obj) |
+ { |
+ return (_toString.call(obj) |
+ .match(/^\s*\[object\s+(\S+)\s*\]\s*$/) || [, ""])[1]; |
+ } |
+ |
+ return getClass; |
+ }()); |
+ |
+ /** |
+ * Determines if an object is an {@link Array}. |
+ * |
+ * @param a |
+ * Potential <code>Array</code> |
+ * @return {boolean} |
+ */ |
+ function _isArray (a) |
+ { |
+ return (typeof Array.isArray == "function" && !Array.isArray._emulated |
+ ? Array.isArray(a) |
+ : (a && a.constructor == Array) || _getClass(a) == "Array"); |
+ } |
+ |
+ var _rxPrimitive = /^(boolean|function|number|object|string)$/; |
+ |
+ /** |
+ * Determines if a value is a primitive value convertible to |
+ * an object or a reference to a native object. |
+ * |
+ * @param value |
+ * @return {boolean} |
+ */ |
+ function _isNativeObject (value) |
+ { |
+ var t = (typeof value != "undefined" && value !== null |
+ && typeof value.valueOf == "function" |
+ && typeof value.valueOf()); |
+ |
+ return (t |
+ && (_rxPrimitive.test(t) |
+ || _isArray(value) |
+ || /^(Date|Error|RegExp)$/.test(_getClass(value)) |
+ || (typeof Math != "undefined" && value == Math) |
+ || (typeof JSON != "undefined" && value == JSON)) |
+ ); |
+ } |
+ |
+ /** |
+ * Used by {@link #extend()} and {@link #setProperties()} |
+ * to overwrite existing properties. |
+ */ |
+ var _ADD_OVERWRITE = 1; |
+ |
+ /** |
+ * Used by {@link #extend()} and {@link #clone()} |
+ * to make a shallow copy of all enumerable properties (default). |
+ */ |
+ var _COPY_ENUM = 0; |
+ |
+ /** |
+ * Used by {@link #extend()} and {@link #clone()} |
+ * to make a deep copy of all enumerable properties. |
+ */ |
+ var _COPY_ENUM_DEEP = 2; |
+ |
+ /** |
+ * Used by {@link #extend()} and {@link #clone()} |
+ * to copy a property by inheritance. |
+ */ |
+ var _COPY_INHERIT = 4; |
+ |
+ function _createTypedObject (oOriginal) |
+ { |
+ if (oOriginal.constructor) |
+ { |
+ return _inheritFrom(oOriginal.constructor.prototype); |
+ } |
+ |
+ return new Object(); |
+ } |
+ |
+ /** |
+ * Creates a duplicate (clone) of an object |
+ * |
+ * @param {Object} oSource (optional) |
+ * Object to be cloned. If omitted or <code>null</code>, |
+ * the calling object is cloned. |
+ * @param {Number} iLevel (optional) |
+ * Use the {@link #COPY_ENUM jsx.object.COPY_*} |
+ * properties to specify the level of cloning. |
+ * The default is {@link #COPY_ENUM}. |
+ * @return {Object} |
+ * A reference to the clone. |
+ */ |
+ function _clone (oSource, iLevel) |
+ { |
+ if (typeof oSource == "number") |
+ { |
+ var tmp = oSource; |
+ oSource = iLevel; |
+ iLevel = tmp; |
+ } |
+ |
+ if (!oSource) |
+ { |
+ oSource = jsx_object; |
+ } |
+ |
+ if (typeof iLevel == "undefined") |
+ { |
+ iLevel = _COPY_ENUM; |
+ } |
+ |
+ var me = _clone; |
+ |
+ if (!iLevel || (iLevel & _COPY_ENUM_DEEP)) |
+ { |
+ /* |
+ * NOTE: For objects, valueOf() only copies the object reference, |
+ * so we are creating an instance that inherits from the |
+ * original's prototype, if possible. |
+ */ |
+ var o2 = (typeof oSource == "object" && oSource |
+ ? _createTypedObject(oSource) |
+ : oSource.valueOf()); |
+ |
+ /* if "var p in ..." does not copy the array elements */ |
+ if (_isArray(o2)) |
+ { |
+ for (var i = e.length; i--;) |
+ { |
+ if (iLevel && typeof oSource[i] == "object" && null != oSource[i]) |
+ { |
+ jsx.tryThis(function () { o2[i] = me(oSource[i], iLevel); }); |
+ } |
+ else |
+ { |
+ jsx.tryThis(function () { o2[i] = oSource[i]; }); |
+ } |
+ } |
+ } |
+ |
+ for (var p in oSource) |
+ { |
+ if (iLevel && typeof oSource[p] == "object" && null != oSource[p]) |
+ { |
+ jsx.tryThis(function () { o2[p] = me(oSource[p], iLevel); }); |
+ } |
+ else |
+ { |
+ jsx.tryThis(function () { o2[p] = oSource[p]; }); |
+ } |
+ } |
+ |
+ return o2; |
+ } |
+ |
+ if (iLevel & _COPY_INHERIT) |
+ { |
+ return _inheritFrom(oSource); |
+ } |
+ |
+ return null; |
+ } |
+ |
+ /** |
+ * Defines a property of an object. |
+ * |
+ * Emulation of the Object.defineProperty() method from ES 5.1, |
+ * section 15.2.3.6. |
+ * |
+ * Uses {@link Object.prototype#__defineGetter__} and |
+ * {@link Object.prototype#__defineSetter__} (JavaScript only) as fallback. |
+ * |
+ * @function |
+ * @return {Object} Reference to the object |
+ */ |
+ var _defineProperty = (function () { |
+ function _toPropertyDescriptor (obj) |
+ { |
+ if (!_isObject(obj)) |
+ { |
+ jsx.throwThis("TypeError", "Object expected"); |
+ } |
+ |
+ var desc = {}; |
+ |
+ if (_hasOwnProperty(obj, "enumerable")) |
+ { |
+ desc.enumerable = !!obj.enumerable; |
+ } |
+ |
+ if (_hasOwnProperty(obj, "configurable")) |
+ { |
+ desc.configurable = !!obj.configurable; |
+ } |
+ |
+ var hasValue = obj.hasOwnProperty("value"); |
+ if (hasValue) |
+ { |
+ desc.value = obj.value; |
+ } |
+ |
+ var hasWritable = _hasOwnProperty(obj, "writable"); |
+ if (hasWritable) |
+ { |
+ desc.writable = !!obj.writable; |
+ } |
+ |
+ var hasGetter = _hasOwnProperty(obj, "get"); |
+ if (hasGetter) |
+ { |
+ if (typeof obj.get != "function") |
+ { |
+ return jsx.throwThis("TypeError", "Function expected for getter"); |
+ } |
+ |
+ desc.get = obj.get; |
+ } |
+ |
+ var hasSetter = _hasOwnProperty(obj, "set"); |
+ if (hasSetter) |
+ { |
+ if (typeof obj.set != "function") |
+ { |
+ return jsx.throwThis("TypeError", "Function expected for setter"); |
+ } |
+ |
+ desc.set = obj.set; |
+ } |
+ |
+ if ((hasGetter || hasSetter) && (hasValue || hasWritable)) |
+ { |
+ return jsx.throwThis("TypeError", "Cannot define getter/setter and value/writable"); |
+ } |
+ |
+ return desc; |
+ } |
+ |
+ function _defineOwnProperty (obj, propertyName, descriptor, _throw, context) |
+ { |
+ function _isAccessorDescriptor (desc) |
+ { |
+ if (typeof desc == "undefined") |
+ { |
+ return false; |
+ } |
+ |
+ return _hasOwnProperty(desc, "get") || _hasOwnProperty(desc, "set"); |
+ } |
+ |
+ function _isDataDescriptor (desc) |
+ { |
+ if (typeof desc == "undefined") |
+ { |
+ return false; |
+ } |
+ |
+ return desc.hasOwnProperty("value") || _hasOwnProperty(desc, "writable"); |
+ } |
+ |
+ function _isGenericDescriptor (desc) |
+ { |
+ if (typeof desc == "undefined") |
+ { |
+ return false; |
+ } |
+ |
+ return !_isAccessorDescriptor(desc) && !_isDataDescriptor(desc); |
+ } |
+ |
+// var current = obj.hasOwnProperty(propertyName); |
+// var extensible = obj[propertyName].[[Extensible]] |
+ |
+ if (_isGenericDescriptor(descriptor) || _isDataDescriptor(descriptor)) |
+ { |
+ var value = descriptor.value; |
+ obj[propertyName] = value; |
+ |
+ if (!descriptor.writable) |
+ { |
+ jsx.tryThis( |
+ function () { |
+ /* NOTE: Need getter because __defineSetter__() undefines value */ |
+ obj.__defineGetter__(propertyName, function () { |
+ return value; |
+ }); |
+ |
+ obj.__defineSetter__(propertyName, function () {}); |
+ }, |
+ function () { |
+ obj[propertyName] = value; |
+ |
+ jsx.warn((context ? context + ": " : "") |
+ + "Could not define property `" + propertyName |
+ + "' as read-only"); |
+ }); |
+ } |
+ } |
+ else |
+ { |
+ /* accessor property descriptor */ |
+ jsx.tryThis( |
+ function () { |
+ if (descriptor["get"]) |
+ { |
+ obj.__defineGetter__(propertyName, descriptor["get"]); |
+ } |
+ |
+ if (descriptor["set"]) |
+ { |
+ obj.__defineSetter__(propertyName, descriptor["set"]); |
+ } |
+ }, |
+ function () { |
+ jsx.warn((context ? context + ": " : "") |
+ + "Could not define special property `" + propertyName + "'." |
+ + " Please use explicit getters and setters instead."); |
+ }); |
+ } |
+ |
+ return false; |
+ } |
+ |
+ /** |
+ * @function |
+ */ |
+ var _defineProperty = _extend( |
+ /** |
+ * @param {Object} o |
+ * @param {Object} descriptor (optional) |
+ * Property descriptor, a reference to an object that defines |
+ * the attributes of the property. Must be of the form |
+ * <code><pre>{ |
+ * propertyName: { |
+ * configurable: …, |
+ * enumerable: …, |
+ * value: …, |
+ * writable: …, |
+ * get: function () {…}, |
+ * set: function (newValue) {…} |
+ * }, |
+ * … |
+ * } |
+ * </pre></code> as specified in the ECMAScript Language Specification, |
+ * Edition 5 Final, section 15.2.3.7. Note that the |
+ * <code>[[Configurable]]</code> and <code>[[Enumerable]]</code> |
+ * attributes cannot be emulated. The [[Writable]] attribute, |
+ * and getter and setter can only be emulated if the |
+ * <code>__defineGetter__()</code> and <code>__defineSetter__()</code> |
+ * methods are available, respectively. |
+ * @param {string} sContext (optional) |
+ * The context in which the property definition was attempted. |
+ * Included in the info message in case getters and setters |
+ * could not be defined. |
+ */ |
+ function (o, propertyName, descriptor, sContext) { |
+ var done = false; |
+ |
+ if (typeof Object.defineProperty == "function" |
+ && !Object.defineProperty._emulated) |
+ { |
+ jsx.tryThis(function () { |
+ Object.defineProperty(o, propertyName, descriptor); |
+ done = true; |
+ }); |
+ } |
+ |
+ if (!done) |
+ { |
+ if (!/^(object|function)$/.test(typeof o) || !o) |
+ { |
+ return jsx.throwThis("TypeError", "Object expected"); |
+ } |
+ |
+ var name = String(propertyName); |
+ var desc = _toPropertyDescriptor(descriptor); |
+ _defineOwnProperty(o, name, desc, true, sContext); |
+ } |
+ |
+ return o; |
+ }, |
+ { |
+ _emulated: true |
+ }); |
+ |
+ return _defineProperty; |
+ }()); |
+ |
+ /** |
+ * Adds/replaces properties of an object. |
+ * |
+ * <p> |
+ * <em>Not to be confused with {@link Function.prototype.extend}.</em> |
+ * </p> |
+ * |
+ * @param {Object} oTarget |
+ * Target object whose properties should be set. |
+ * @param {Object} oSource |
+ * Object specifying the properties to be set. |
+ * The name of each property serves as the name for the |
+ * property of the target object, its value as the value |
+ * of that property. |
+ * @param {Number} iFlags = 0 |
+ * Flags for the modification, see {@link #ADD_OVERWRITE} |
+ * and {@link #COPY_ENUM jsx.object.COPY_*}. |
+ * @return {Object} |
+ * The extended object |
+ */ |
+ function _extend (oTarget, oSource, iFlags) |
+ { |
+ if (typeof iFlags == "undefined") |
+ { |
+ iFlags = 0; |
+ } |
+ |
+ var cloneLevel = (iFlags & (_COPY_ENUM_DEEP | _COPY_INHERIT)); |
+ |
+ for (var i = 0, keys = _getKeys(oSource), len = keys.length; |
+ i < len; ++i) |
+ { |
+ var p = keys[i]; |
+ |
+ if (typeof oTarget[p] == "undefined" || (iFlags & _ADD_OVERWRITE)) |
+ { |
+ jsx.tryThis(function () { |
+ oTarget[p] = (cloneLevel |
+ ? _clone(oSource[p], cloneLevel) |
+ : oSource[p]); |
+ oTarget[p]._userDefined = true; |
+ }); |
+ } |
+ } |
+ |
+ return oTarget; |
+ } |
+ |
+ var jsx_object = { |
+ /** |
+ * @memberOf jsx.object |
+ * @version |
+ */ |
+ version: "$Revision$ ($Date$)", |
+ |
+ copyright: "Copyright \xA9 2004-2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://PointedEars.de/scripts/", |
+// docURL: jsx.object.path + "object.htm", |
+ |
+ ADD_OVERWRITE: _ADD_OVERWRITE, |
+ COPY_ENUM: _COPY_ENUM, |
+ COPY_ENUM_DEEP: _COPY_ENUM_DEEP, |
+ COPY_INHERIT: _COPY_INHERIT, |
+ |
+ isMethod: _isMethod, |
+ areMethods: _isMethod, |
+ isHostMethod: _isMethod, |
+ areHostMethods: _isMethod, |
+ |
+ isNativeMethod: _isNativeMethod, |
+ areNativeMethods: _isNativeMethod, |
+ |
+ /** |
+ * Determines if the passed value could be the result of |
+ * <code>typeof <var>callable</var></code>. |
+ * <p> |
+ * NOTE: This method has previously been provided by {@link types.js}; |
+ * optimizations in code reuse moved it here. |
+ * </p> |
+ * @param {string} s |
+ * String to be determined a method type, i.e. "object" or "unknown" in |
+ * MSHTML, "function" otherwise. The type must have been retrieved with |
+ * the `typeof' operator. Note that this method may also return |
+ * <code>true</code> if the value of the <code>typeof</code> operand is |
+ * <code>null</code>; to be sure that the operand is a method reference, |
+ * you have to && (AND)-combine the <code>isMethodType(...)</code> |
+ * expression with the method reference identifier unless `typeof' yielded |
+ * `unknown' for <var>s</var>. |
+ * @return {boolean} |
+ * <code>true</code> if <var>s</var> is a method type, |
+ * <code>false</code> otherwise. |
+ * @author |
+ * (C) 2003-2008 Thomas Lahn <types.js@PointedEars.de> |
+ * Distributed under the GNU GPL v3 and later. |
+ * @partof http://pointedears.de/scripts/types.js |
+ * @deprecated since version 0.1.5a.2009070204 |
+ * in favor of {@link #isMethod(Object)} |
+ */ |
+ isMethodType: function (s) { |
+ return /^\s*(function|object|unknown)\s*$/i.test(s); |
+ }, |
+ |
+ _hasOwnProperty: _hasOwnProperty, |
+ isObject: _isObject, |
+ getKeys: _getKeys, |
+ inheritFrom: _inheritFrom, |
+ getClass: _getClass, |
+ isArray: _isArray, |
+ isNativeObject: _isNativeObject, |
+ |
+ isHostObject: function (value) { |
+ return !_isNativeObject(value); |
+ }, |
+ |
+ clone: _clone, |
+ |
+ /** |
+ * @deprecated in favor of {@link #extend} |
+ */ |
+ setProperties: _extend, |
+ |
+ extend: _extend, |
+ defineProperty: _defineProperty, |
+ |
+ /** |
+ * Defines properties of an object, if possible. |
+ * |
+ * Emulation of the Object.defineProperties() method from ES 5.1, |
+ * section 15.2.3.7. |
+ * |
+ * @function |
+ * @param {Object} o |
+ * The object for which properties getters and setters should be defined. |
+ * @param {Object} descriptor (optional) |
+ * Properties descriptor, where each own property name |
+ * is a property name of the new object, and each corresponding |
+ * property value is a reference to an object that defines the |
+ * attributes of that property. |
+ * @return {Object} Reference to the object |
+ * @see #defineProperty |
+ */ |
+ defineProperties: _extend( |
+ function (o, descriptor, sContext) { |
+ var done = false; |
+ |
+ if (typeof Object.defineProperties == "function" |
+ && !Object.defineProperties._emulated) |
+ { |
+ jsx.tryThis(function () { |
+ Object.defineProperties(o, descriptor); |
+ done = true; |
+ }); |
+ } |
+ |
+ if (!done) |
+ { |
+ for (var i = 0, keys = _getKeys(descriptor), len = keys.length; |
+ i < len; ++i) |
+ { |
+ var propertyName = keys[i]; |
+ _defineProperty(o, propertyName, descriptor[propertyName], |
+ sContext); |
+ } |
+ } |
+ |
+ return o; |
+ }, |
+ { |
+ _emulated: true |
+ }), |
+ |
+ /** |
+ * Determines if a (non-inherited) property of an object is enumerable |
+ * |
+ * @param {Object} obj (optional) |
+ * Object which property should be checked for enumerability. |
+ * @param {string} sProperty |
+ * Name of the property to check. |
+ * @return {boolean} |
+ * <code>true</code> if there is such a property; |
+ * <code>false</code> otherwise. |
+ */ |
+ _propertyIsEnumerable: function (obj, sProperty) { |
+ if (arguments.length < 2 && obj) |
+ { |
+ sProperty = obj; |
+ obj = jsx_object; |
+ } |
+ |
+ if (_isMethod(obj, "propertyIsEnumerable")) |
+ { |
+ return obj.propertyIsEnumerable(sProperty); |
+ } |
+ |
+ for (var propertyName in obj) |
+ { |
+ if (propertyName == name && _hasOwnProperty(obj, propertyName)) |
+ { |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+ }, |
+ |
+ /** |
+ * Determines if an object, or the objects it refers to, |
+ * has an enumerable property with a certain value |
+ * |
+ * @param {Object} obj |
+ * @param needle |
+ * The value to be searched for |
+ * @param {Object} params |
+ * Search parameters. The following properties are supported: |
+ * <table> |
+ * <thead> |
+ * <tr> |
+ * <th>Property</th> |
+ * <th>Meaning</th> |
+ * </tr> |
+ * </thead> |
+ * <tbody> |
+ * <tr> |
+ * <th><code><var>exclude</var> : Array</code></th> |
+ * <td><code>Array</code> containing the names of the |
+ * properties that should not be searched</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code><var>recursive</var> : boolean</code></th> |
+ * <td>If a true-value, search recursively.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code><var>strict</var> : boolean</code></th> |
+ * <td>If a true-value, perform a strict comparison |
+ * without type conversion.</td> |
+ * </tr> |
+ * </tbody> |
+ * </table> |
+ */ |
+ hasPropertyValue: |
+ function jsx_object_hasPropertyValue (obj, needle, params) { |
+ for (var property in obj) |
+ { |
+ if (params && params.exclude && params.exclude.indexOf(property) > -1) |
+ { |
+ continue; |
+ } |
+ |
+ var propertyValue = obj[property]; |
+ if (params && params.recursive) |
+ { |
+ if (typeof propertyValue == "object" && propertyValue !== null) |
+ { |
+ if (jsx_object_hasPropertyValue(propertyValue, needle, params)) |
+ { |
+ return true; |
+ } |
+ } |
+ } |
+ |
+ if (params && params.strict) |
+ { |
+ if (propertyValue === needle) |
+ { |
+ return true; |
+ } |
+ } |
+ else |
+ { |
+ /* Switch operands because of JScript quirk */ |
+ if (needle == propertyValue) |
+ { |
+ return true; |
+ } |
+ } |
+ } |
+ |
+ return false; |
+ }, |
+ |
+ /** |
+ * Returns the name of an unused property for an object. |
+ * |
+ * @param {Object} obj |
+ * @param {Number} iLength |
+ * Maximum property name length up to which an unused name |
+ * is searched. The default is 256. |
+ * @return {string} |
+ * The name of a non-existing property of <code>o</code> if |
+ * {@link Object#prototype.hasOwnProperty()} is supported, or |
+ * the name of a property with value <code>undefined</code> |
+ * if it is not supported; the empty string |
+ * if there is no such property. |
+ */ |
+ findNewProperty: function (obj, iLength) { |
+ if (!obj) |
+ { |
+ obj = jsx_object; |
+ } |
+ |
+ if (arguments.length < 2) |
+ { |
+ iLength = 256; |
+ } |
+ else |
+ { |
+ iLength = parseInt(iLength, 10); |
+ } |
+ |
+ var prefix = ""; |
+ |
+ while (prefix.length < iLength) |
+ { |
+ for (var i = "a".charCodeAt(0), max = "z".charCodeAt(0); i <= max; ++i) |
+ { |
+ var ch = String.fromCharCode(i); |
+ var newName = prefix + ch + "_"; |
+ if (!_hasOwnProperty(obj, newName)) |
+ { |
+ return newName; |
+ } |
+ } |
+ |
+ prefix += "a"; |
+ } |
+ |
+ return ""; |
+ }, |
+ |
+ /** |
+ * Returns a new object that can serve as data container. |
+ * |
+ * Returns a new object that, if supported, does not inherit or |
+ * have any properties. This is accomplished by either cutting |
+ * off its existing prototype chain or not creating one for it |
+ * in the first place. |
+ * |
+ * @return {Object} |
+ * @see Object.create |
+ */ |
+ getDataObject: function () { |
+ return _inheritFrom(null); |
+ }, |
+ |
+ /** |
+ * Returns a feature of an object |
+ * |
+ * @param {Object} obj |
+ * Object which provides the feature |
+ * @params {string} |
+ * Property names on the feature path, including the property |
+ * for the feature itself. For example, use |
+ * <code>jsx.object.getFeature("foo", "bar", "baz")</code> for |
+ * safe access to <code>foo.bar.baz</code>. |
+ * @return {any} |
+ * <code>undefined</code> if <var>obj</var> does not have such |
+ * a feature. Note that features whose value can be |
+ * <code>undefined</code> cannot be detected with this method. |
+ */ |
+ getFeature: function (obj) { |
+ for (var i = 1, len = arguments.length; i < len; i++) |
+ { |
+ var arg = arguments[i]; |
+ if (typeof obj != "undefined" && typeof obj[arg] != "undefined" && obj[arg]) |
+ { |
+ obj = obj[arg]; |
+ } |
+ else |
+ { |
+ return void 0; |
+ } |
+ } |
+ |
+ return obj; |
+ } |
+ }; |
+ |
+ return jsx_object; |
+}()); |
+ |
+/** |
+ * Prints debug messages to the script console. |
+ * |
+ * NOTE: This method has previously been provided by |
+ * {@link debug.js}; optimizations in code reuse |
+ * moved it here. |
+ * |
+ * @function |
+ */ |
+jsx.dmsg = (function () { |
+ var |
+ _isMethod = jsx.object.isMethod, |
+ msgMap = { |
+ data: { |
+ info: "INFO", |
+ warn: "WARNING", |
+ debug: "DEBUG" |
+ }, |
+ |
+ getString: function (s) { |
+ var data = this.data; |
+ |
+ if (typeof data[s] != "undefined") |
+ { |
+ return data[s] + ": "; |
+ } |
+ |
+ return ""; |
+ } |
+ }; |
+ |
+ /** |
+ * @param {string} sMsg |
+ * Message to be printed |
+ * @param {string} sType = "log" |
+ * Type of the message. Supported values include |
+ * <code>"log"</code> (default), <code>"info"</code>, <code>"warn"</code>, |
+ * and <code>"debug"</code>. If a script console does not support |
+ * a message type, the default value is used. |
+ * @return {boolean} |
+ * <code>true</code> if it was possible to cause the message to be printed; |
+ * <code>false</code> otherwise. |
+ */ |
+ return function (sMsg, sType) { |
+ /* Firebug 0.4+ and others */ |
+ if (typeof console != "undefined") |
+ { |
+ if (!sType || !_isMethod(console, sType) && sType != "log") |
+ { |
+ sMsg = msgMap.getString(sType) + sMsg; |
+ sType = "log"; |
+ } |
+ |
+ if (sType != "info") |
+ { |
+ sMsg += "\n" + jsx.getStackTrace(); |
+ } |
+ |
+ if (_isMethod(console, sType)) |
+ { |
+ /* MSHTML's console methods do not implement call() */ |
+ Function.prototype.call.call(console[sType], console, sMsg); |
+ return true; |
+ } |
+ } |
+ else if (typeof opera != "undefined" |
+ && _isMethod(opera, "postError")) |
+ { |
+ opera.postError(msgMap.getString(sType) + sMsg); |
+ return true; |
+ } |
+ |
+ return false; |
+ }; |
+}()); |
+ |
+/** |
+ * Issues an info message, if possible. |
+ * |
+ * @param {String} sMsg |
+ * Message |
+ * @see jsx#dmsg |
+ */ |
+jsx.info = function (sMsg) { |
+ return jsx.dmsg(sMsg, jsx.MSG_INFO); |
+}; |
+ |
+/** |
+ * Issues a warning, if possible. |
+ * |
+ * @param {String} sMsg |
+ * Message |
+ * @see jsx#dmsg |
+ */ |
+jsx.warn = function (sMsg) { |
+ return jsx.dmsg(sMsg, jsx.MSG_WARN); |
+}; |
+ |
+/** |
+ * Issues an error message, if possible. |
+ * |
+ * @param {string} sMsg Message |
+ * @see jsx#dmsg |
+ */ |
+jsx.error = function (sMsg) { |
+ return jsx.dmsg(sMsg, jsx.MSG_ERROR); |
+}; |
+ |
+/** |
+ * Clears the handler for the proprietary <code>error</code> event. |
+ * |
+ * NOTE: This method has previously been provided by {@link debug.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @return {boolean} <code>true</code> |
+ */ |
+/* |
+ * NOTE: Initialization must come before the initialization of |
+ * setErrorHandler() as it is used in a closure there, |
+ * see Message-ID <2152411.FhMhkbZ0Pk@PointedEars.de> |
+ */ |
+jsx.clearErrorHandler = function () { |
+ if (typeof window != "undefined") |
+ { |
+ /* |
+ * debug.js 0.99.5.2006041101 BUGFIX: |
+ * onerror is defined as a property of window, not of the Global Object |
+ */ |
+ window.onerror = null; |
+ } |
+ |
+ return true; |
+}; |
+ |
+/** |
+ * Sets the handler for the proprietary <code>error</code> event. |
+ * |
+ * NOTE: This method has previously been provided by {@link debug.js}; |
+ * and {@link types.js}; optimizations in code reuse moved it here. |
+ * |
+ * @function |
+ */ |
+jsx.setErrorHandler = (function () { |
+ var |
+ jsx_object = jsx.object, |
+ jsx_clearErrorHandler = jsx.clearErrorHandler; |
+ |
+ /** |
+ * @param {Callable} fHandler |
+ * @return {boolean} |
+ * <code>true</code> if the error handler could be assigned to |
+ * successfully, <code>false</code> otherwise. Note that one reason |
+ * for failure can be that an event handler is no longer supported |
+ * by the UA's DOM due to efforts towards adherence to Web standards. |
+ */ |
+ return function (fHandler) { |
+ /* |
+ * NOTE: There is no deadlock here because even if `fHandler' is a string, |
+ * `isMethod(fHandler)' will call `setErrorHandler()' without arguments; |
+ * so fHandler in that call will be `undefined' and `setErrorHandler()' |
+ * is not called again. |
+ */ |
+ if (!jsx_object.isMethod(fHandler)) |
+ { |
+ fHandler = jsx_clearErrorHandler; |
+ } |
+ |
+ if (typeof assertFalse == "function") |
+ { |
+ assertFalse(typeof fHandler == "undefined", false, |
+ "jsx.setErrorHandler(fHandler)"); |
+ } |
+ |
+ if (typeof window != "undefined" |
+ && typeof fHandler != "undefined") |
+ { |
+ /* |
+ * debug.js 0.99.5.2006041101 BUGFIX: |
+ * onerror is defined as a property of window, not of the Global Object |
+ */ |
+ window.onerror = fHandler; |
+ } |
+ |
+ return (typeof window.onerror != "undefined" |
+ && window.onerror == fHandler); |
+ }; |
+}()); |
+ |
+/** |
+ * Throws an exception, including an execution context hint if provided, |
+ * followed by an error message. |
+ * |
+ * NOTE: This method has previously been provided by {@link exception.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @function |
+ * @author |
+ * Copyright (c) 2008, 2013 Thomas 'PointedEars' Lahn <cljs@PointedEars.de>. |
+ * Distributed under the GNU GPL v3 and later. |
+ * @partof JSX:object.js |
+ */ |
+jsx.throwThis = (function () { |
+ var |
+ _jsx_object = jsx.object, |
+ _addslashes = function (e) { |
+ return (typeof e == "string" |
+ ? e.replace(/["'\\]/g, "\\$&").replace(/\r?\n|\r/g, "\\n") |
+ : e); |
+ }; |
+ |
+ /** |
+ * @param {string|Function|Error} errorType |
+ * Expression for the constructor of the error type, or a reference |
+ * to an object inheriting from <code>Error.prototype</code>. |
+ * Use a false-value (e.g., <code>""</code> or <code>null</code>) |
+ * to throw an unqualified exception. |
+ * @param {string|Array} message |
+ * Error message to be displayed. If an <code>Array</code>, |
+ * it is passed as argument list to the constructor for the error type |
+ * @param {Callable|string} context |
+ * Optional callable object to specify the context |
+ * where the exception occurred. |
+ */ |
+ return function (errorType, message, context) { |
+ var sErrorType = errorType; |
+ var isError = false; |
+ |
+ var messageIsArray =_jsx_object.isArray(message); |
+ if (typeof Error == "function" |
+ && Error.prototype.isPrototypeOf(errorType)) |
+ { |
+ isError = true; |
+ sErrorType = "errorType"; |
+ } |
+ else |
+ { |
+ var t = typeof errorType; |
+ |
+ if (t == "function" || t == "string") |
+ { |
+ if (t == "function") |
+ { |
+ sErrorType = "errorType"; |
+ } |
+ else if (t == "string") |
+ { |
+ sErrorType = errorType; |
+ } |
+ |
+ if (!messageIsArray) |
+ { |
+ sErrorType = "new " + sErrorType; |
+ } |
+ } |
+ } |
+ |
+ var sContext = ""; |
+ |
+ var stack = jsx.getStackTrace(); |
+ if (stack) |
+ { |
+ sContext = "\n\n" + stack; |
+ } |
+ |
+ /* DEBUG: set breakpoint here */ |
+ if (!sContext) |
+ { |
+ if (_jsx_object.isMethod(context)) |
+ { |
+ sContext = (String(context).match(/^\s*(function.+\))/) |
+ || [, null])[1]; |
+ sContext = (sContext ? sContext + ': ' : ''); |
+ } |
+ } |
+ |
+ /* |
+ * Array or array-like object for exception constructor's |
+ * argument list |
+ */ |
+ if (_jsx_object.isMethod(message, "map")) |
+ { |
+ message = message.map(_addslashes); |
+ } |
+ else |
+ { |
+ message = (message || "") + (sContext || ""); |
+ message = '"' + _addslashes(message) + '"'; |
+ } |
+ |
+ /* DEBUG */ |
+ var throwStmt = 'throw ' + (sErrorType ? sErrorType : '') |
+ + (isError |
+ ? '' |
+ : (messageIsArray |
+ ? '.construct(message)' |
+ : '(' + (message || '') + ')')) |
+ + ';'; |
+ |
+ eval(throwStmt); |
+ }; |
+}()); |
+ |
+/** |
+ * Rethrows arbitrary exceptions |
+ * |
+ * @param {Error} exception |
+ */ |
+jsx.rethrowThis = function (exception) { |
+ eval("throw exception"); |
+}; |
+ |
+if (jsx.options.augmentBuiltins) |
+{ |
+ jsx.object.extend(Object, { |
+ /** |
+ * @see jsx.object.defineProperty |
+ */ |
+ defineProperty: jsx.object.defineProperty, |
+ |
+ /** |
+ * @see jsx.object.defineProperties |
+ */ |
+ defineProperties: jsx.object.defineProperties |
+ }); |
+ |
+ if (typeof Object.create != "function") |
+ { |
+ /** |
+ * Creates a new object and initializes its properties. |
+ * |
+ * Emulation of the Object.create() method from ES 5.1, |
+ * section 15.2.3.5. |
+ * |
+ * @param {Object|Null} prototype |
+ * @param {Object} descriptor (optional) |
+ * Properties descriptor, where each own property name |
+ * is a property name of the new object, and each corresponding |
+ * property value is a reference to an object that defines the |
+ * attributes of that property. Supported properties of |
+ * that defining object include <code>value</code> only |
+ * at this time. |
+ * @return {Object} Reference to the new object |
+ */ |
+ Object.create = jsx.object.extend( |
+ function (prototype, descriptor) { |
+ var o = jsx.object.inheritFrom(prototype); |
+ |
+ if (typeof descriptor != "undefined") |
+ { |
+ Object.defineProperties(o, descriptor); |
+ } |
+ |
+ return o; |
+ }, |
+ { |
+ /** |
+ * @memberOf Object.create |
+ */ |
+ _emulated: true |
+ } |
+ ); |
+ } |
+ |
+ if (typeof Object.keys != "function") |
+ { |
+ /** |
+ * @param {Object} obj |
+ */ |
+ Object.keys = function (obj) { |
+ return jsx.object.getKeys(obj); |
+ }; |
+ |
+ Object.keys._emulated = true; |
+ } |
+} |
+ |
+/** |
+ * Emulates the <code>instanceof</code> operator (JavaScript 1.5) |
+ * compatible to JavaScript 1.1 for <strong>one</strong> |
+ * inheritance level. |
+ * |
+ * Example: |
+ * <pre><code> |
+ * var o = new Object(); |
+ * o instanceof Object; // yields `true' |
+ * |
+ * function Foo() |
+ * { |
+ * } |
+ * var o = new Foo(); |
+ * o instanceof Object; // yields `true' |
+ * o instanceof Foo; // yields `true' also |
+ * |
+ * var _isInstanceOf = jsx.object.isInstanceOf; |
+ * _isInstanceOf(o, Object); // yields `false' |
+ * _isInstanceOf(o, Foo); // yields `true' |
+ * </code></pre> |
+ * |
+ * NOTE: This method has previously been provided by {@link types.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @author (C) 2003, 2011, 2013 Thomas Lahn <js@PointedEars.de> |
+ * @param {Object} obj |
+ * Expression to be determined a <var>Prototype</var> object. |
+ * @param {Function} Constructor |
+ * Object to be determined the constructor of a. |
+ * @return {boolean} |
+ * <code>true</code> if <code>obj</code> is an object derived |
+ * from <var>Prototype</var>, <code>false</code> otherwise. |
+ */ |
+jsx.object.isInstanceOf = //(function () { |
+// var jsx_object = jsx.object; |
+// |
+// return |
+ function (obj, Constructor) { |
+ return !!(obj && Constructor |
+ && typeof obj.constructor != "undefined" |
+ && obj.constructor == Constructor |
+ |
+ /* |
+ * For a built-in type T, T.prototype often has the same |
+ * [[Class]] like instances (exception: RegExp); |
+ * BUT error-prone for native user-defined objects (Color "==" KeyValue)! |
+ */ |
+// || jsx_object.getClass(obj) == jsx_object.getClass(Prototype.prototype) |
+ ); |
+ }; |
+//}()); |
+ |
+/** |
+ * Returns the name of a function |
+ * |
+ * @param {Function|String} aFunction |
+ * @return {string} |
+ * The name of a function if it has one; the empty string otherwise. |
+ */ |
+jsx.object.getFunctionName = function (aFunction) { |
+ /* Return the empty string for null or undefined */ |
+ return (aFunction != null |
+ && typeof aFunction.name != "undefined" && aFunction.name) |
+ || (String(aFunction).match(/\s*function\s+([A-Za-z_]\w*)/) || [, ""])[1]; |
+}; |
+ |
+/** |
+ * Returns minimum documentation for a function |
+ * |
+ * @param {Function|String} aFunction |
+ * @return {string} |
+ */ |
+jsx.object.getDoc = function (aFunction) { |
+ return (String(aFunction).match( |
+ /^\s*(function(\s+[A-Za-z_]\w*)?\s*\([^\)]*\))/) || [, ""])[1]; |
+}; |
+ |
+/** |
+ * Gets the stack trace of the calling execution context. |
+ * |
+ * Based on getStackTrace() from jsUnit 2.2alpha of 2006-03-24. |
+ * |
+ * @return {string} |
+ * The stack trace of the calling execution context, if available. |
+ */ |
+jsx.getStackTrace = function () { |
+ /** |
+ * @private |
+ * @param {Error} excp |
+ */ |
+ function parseErrorStack(excp) |
+ { |
+ var stack = []; |
+ |
+ if (excp && excp.stack) |
+ { |
+ var stacklist = excp.stack.split('\n'); |
+ |
+// for (var i = 0; i < stacklist.length - 1; i++) |
+// { |
+// var framedata = stacklist[i]; |
+// |
+// var name = framedata.match(/^\s*(at\s+)?(\w*)/)[2]; |
+// if (!name) |
+// { |
+// name = 'anonymous'; |
+// } |
+// |
+// stack.push(name); |
+// } |
+ stack = stacklist; |
+ |
+ /* remove top level anonymous functions to match JScript */ |
+// while (stack.length && stack[stack.length - 1] == 'anonymous') |
+// { |
+// stack.length = stack.length - 1; |
+// } |
+ } |
+ |
+ return stack; |
+ } |
+ |
+ var result = ''; |
+ |
+ if (typeof arguments.caller != 'undefined') |
+ { |
+ /* JScript and older JavaScript */ |
+ for (var a = arguments.caller; a != null; a = a.caller) |
+ { |
+ result += '> ' + (jsx.object.getFunctionName(a.callee) || "anonymous") |
+ + '\n'; |
+ if (a.caller == a) |
+ { |
+ result += '*'; |
+ break; |
+ } |
+ } |
+ } |
+ else |
+ { |
+ /* other */ |
+ if (typeof Error != "function") |
+ { |
+ return result; |
+ } |
+ |
+ var stack = parseErrorStack(new Error()); |
+ result = stack.slice(2).join("\n"); |
+// for (var i = 1; i < stack.length; i++) |
+// { |
+// result += '> ' + stack[i] + '\n'; |
+// } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Retrieves the value of a property of an object |
+ * |
+ * @param {Object} obj |
+ * @param {string} sProperty |
+ * @param aDefault |
+ * @return {any} |
+ * @throws {@link #PropertyError} if the property |
+ * does not exist or has the <code>undefined</code> value, and |
+ * <var>aDefault</var> was not provided |
+ */ |
+jsx.object.getProperty = function (obj, sProperty, aDefault) { |
+ if (typeof obj[sProperty] != "undefined") |
+ { |
+ return obj[sProperty]; |
+ } |
+ |
+ /* default value not passed */ |
+ if (arguments.length < 3) |
+ { |
+ return jsx.throwThis("jsx.object.PropertyError", sProperty); |
+ } |
+ |
+ return aDefault; |
+}; |
+ |
+/** |
+ * Returns the absolute path for a URI-reference |
+ * |
+ * @param {string} relativePath |
+ * @param {string} basePath |
+ * @return {string} |
+ */ |
+jsx.absPath = function (relativePath, basePath) { |
+ var uri = (basePath || document.URL).replace(/[?#].*$/, "").split("/"); |
+ relativePath = relativePath.split("/"); |
+ |
+ if (uri[uri.length - 1] != "") |
+ { |
+ uri.pop(); |
+ } |
+ |
+ for (var i = 0, len = relativePath.length; i < len; ++i) |
+ { |
+ var component = relativePath[i]; |
+ if (component == "..") |
+ { |
+ uri.pop(); |
+ } |
+ else if (component != ".") |
+ { |
+ uri.push(component); |
+ } |
+ } |
+ |
+ return uri.join("/"); |
+}; |
+ |
+/** |
+ * Imports object properties into the global namespace. |
+ * |
+ * Convenience method, also for backwards compatibility to versions before |
+ * strict namespacing. Does not load script files dynamically; use |
+ * jsx.importFrom() for that and include jsx.net.http. |
+ * |
+ * @function |
+ * @return {boolean} |
+ * <code>false</code> if <var>properties</var> is provided and not |
+ * all properties could be imported; <code>true</code> otherwise. |
+ * @throws TypeError, if <var>obj</var> is not an iterable object |
+ */ |
+jsx._import = (function () { |
+ var _jsx_object = jsx.object; |
+ var _getKeys = _jsx_object.getKeys; |
+ var _hasOwnProperty = _jsx_object._hasOwnProperty; |
+ var _isArray = _jsx_object.isArray; |
+ |
+ /** |
+ * @param {Object} obj |
+ * @param {string|Array|Null} properties (optional) |
+ * Name or list of names of properties to import. If not |
+ * provided or <code>null</code>, all own enumerable properties |
+ * of <var>obj</var> are imported. |
+ * @param {string} objAlias (optional) |
+ * The alias property on the Global object that should be used |
+ * instead of the Global Object. Helps to avoid spoiling |
+ * the global namespace. |
+ * @param {string|Array} propertyAliases (optional) |
+ * The alias(es) that should be used for each property, in order, |
+ * that is specified in <var>properties</var>. Helps to avoid |
+ * overwriting property values. |
+ * There must be specified as many aliases as properties were |
+ * specified. Ignored if <var>properties</var> is |
+ * <code>null</code>. |
+ */ |
+ return function (obj, properties, objAlias, propertyAliases) { |
+ if (!obj) |
+ { |
+ return jsx.throwThis("TypeError", |
+ "expected iterable object, saw " + obj + " : " + (obj === null ? "Null" : typeof obj), |
+ "jsx._import"); |
+ } |
+ |
+ var result = true; |
+ |
+ var root = jsx.global; |
+ if (objAlias != null) |
+ { |
+ root[objAlias] = {}; |
+ root = root[objAlias]; |
+ } |
+ |
+ var propertiesArg = properties; |
+ if (properties == null) |
+ { |
+ properties = _getKeys(obj); |
+ } |
+ else if (!_isArray(properties)) |
+ { |
+ properties = [properties]; |
+ } |
+ |
+ var len = properties.length; |
+ if (propertiesArg != null && propertyAliases != null) |
+ { |
+ if (!_isArray(propertyAliases)) |
+ { |
+ propertyAliases = [propertyAliases]; |
+ } |
+ |
+ if (len != propertyAliases.length) |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Different number of property names and aliases", |
+ len, propertyAliases.length], |
+ "jsx._import"); |
+ } |
+ } |
+ |
+ for (var i = 0; i < len; ++i) |
+ { |
+ var sourceProperty = properties[i]; |
+ if (propertiesArg == null || _hasOwnProperty(obj, sourceProperty)) |
+ { |
+ var targetProperty = sourceProperty; |
+ if (propertiesArg != null && propertyAliases != null) |
+ { |
+ targetProperty = propertyAliases[i]; |
+ } |
+ |
+ root[targetProperty] = obj[sourceProperty]; |
+ } |
+ else |
+ { |
+ result = false; |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+}()); |
+ |
+/* ES 5: Reserved words may be used in MemberExpression */ |
+jsx["import"] = jsx._import; |
+ |
+/** |
+ * Imports a script, and optionally the object it defines, or some of their |
+ * properties, into the global namespace. |
+ * |
+ * NOTE: Issues a synchronously-handled HTTP request which blocks all script |
+ * execution until a response is received or the request times out. |
+ * Can therefore not be used to import jsx.net.http. |
+ * |
+ * @function |
+ * @requires jsx.net.http#Request |
+ * @return {boolean} |
+ * <code>true</code> if the script could be successfully <em>loaded</em> |
+ * (not: included). |
+ */ |
+jsx.importFrom = (function () { |
+ /* Imports */ |
+ var _import = jsx._import; |
+ var _Request; |
+ |
+ /** |
+ * @param {string} uri |
+ * URI of the script to be imported |
+ * @param {Object} obj |
+ * Object from the script to be imported (optional) |
+ * @param {Array} properties (optional) |
+ * Properties of the object from the script to be imported (optional). |
+ * See {@link jsx#_import}. |
+ * @param {string} objAlias (optional) |
+ * See {@link jsx#_import}. |
+ * @param {Array} propertyAliases (optional) |
+ * See {@link jsx#_import}. |
+ */ |
+ return function jsx_importFrom (uri, obj, properties, objAlias, propertyAliases) { |
+ /* One-time import */ |
+ if (!_Request) |
+ { |
+ _Request = jsx.net.http.Request; |
+ } |
+ |
+ jsx_importFrom.lastImport = uri; |
+ var req = new _Request(uri, "GET", false, function (response) { |
+ /* |
+ * NOTE: Passing response.responseText to eval() is not ES5-compatible; |
+ * conforming implementations create a new execution context with |
+ * EMPTY scope chain. |
+ */ |
+ var script = document.createElement("script"); |
+ script.type = "text/javascript"; |
+ |
+ if (typeof script.text == "undefined") |
+ { |
+ script.appendChild(document.createTextNode(response.responseText)); |
+ } |
+ else |
+ { |
+ script.text = response.responseText; |
+ } |
+ |
+ /* NOTE: document.head was introduced with HTML5 WD */ |
+ (document.head || document.getElementsByTagName("head")[0]).appendChild(script); |
+ |
+ if (arguments.length > 1) |
+ { |
+ return _import(obj, properties, objAlias, propertyAliases); |
+ } |
+ |
+ return true; |
+ }); |
+ |
+ return req.send(); |
+ }; |
+}()); |
+ |
+/** |
+ * Imports once an object or some of its properties |
+ * from a script resource into the global namespace. |
+ * |
+ * @function |
+ * @return {boolean} |
+ * <code>true</code> if the script specified by <var>uri</var> |
+ * has already been included; <code>false</code> otherwise. |
+ * @see jsx#importFrom |
+ */ |
+jsx.importOnce = (function () { |
+ var _getProperty = jsx.object.getProperty; |
+ var _absPath = jsx.absPath; |
+ var _importFrom = jsx.importFrom; |
+ |
+ /** |
+ * @param {string} uri |
+ * URI of the resource to be imported |
+ * @param {Object} obj |
+ * Object to import |
+ * @param {Array} properties (optional) |
+ * Properties of the object from the script to be imported. |
+ * See {@link jsx#_import}. |
+ * @param {string} objAlias (optional) |
+ * See {@link jsx#_import}. |
+ * @param {Array} propertyAliases (optional) |
+ * See {@link jsx#_import}. |
+ */ |
+ function importOnce (uri, obj, properties, objAlias, propertyAliases) |
+ { |
+ /** |
+ * @param {string} uri |
+ */ |
+ function scriptIncluded (uri) |
+ { |
+ var scripts = document.getElementsByTagName("script"); |
+ if (scripts) |
+ { |
+ var uriAbsPath = _absPath(uri); |
+ for (var i = 0, len = scripts.length; i < len; ++i) |
+ { |
+ var script = scripts[i]; |
+ if (_absPath(script.src) == uriAbsPath) |
+ { |
+ return true; |
+ } |
+ } |
+ } |
+ |
+ return false; |
+ } |
+ |
+ var result = false; |
+ |
+ if (uri |
+ && !scriptIncluded(uri) |
+ && !_getProperty(importOnce.imports, uri, null)) |
+ { |
+ result = _importFrom(uri, obj, properties, objAlias, propertyAliases); |
+ if (result) |
+ { |
+ importOnce.imports[uri] = true; |
+ } |
+ } |
+ |
+ return result; |
+ } |
+ |
+ importOnce.imports = {}; |
+ |
+ return importOnce; |
+}()); |
+ |
+/** |
+ * Executes a function if and once its requirements are fulfilled. |
+ * |
+ * @function |
+ * @return {any} |
+ * The return value of <var>callback</var>, |
+ * <code>undefined</code> otherwise. |
+ */ |
+jsx.require = (function () { |
+ var _importOnce = jsx.importOnce; |
+ var _isArray = jsx.object.isArray; |
+ |
+ /** |
+ * @param {string|Array} uri |
+ * URI-reference or <code>Array</code> of URI-references |
+ * specifying the requirement(s) |
+ * @param {Function} callback |
+ * Function to be executed |
+ * @return {mixed} |
+ * The return value of <var>callback</var>, |
+ * <code>false</code> otherwise. |
+ */ |
+ return function (uri, callback) { |
+ if (!_isArray(uri)) |
+ { |
+ uri = [uri]; |
+ } |
+ |
+ var success = true; |
+ for (var i = 0, len = uri.length; i < len; ++i) |
+ { |
+ if (!_importOnce(uri[i])) |
+ { |
+ success = false; |
+ break; |
+ } |
+ } |
+ |
+ if (success) |
+ { |
+ return callback(); |
+ } |
+ }; |
+}()); |
+ |
+if (jsx.options.augmentPrototypes) |
+{ |
+/* Disabled until ECMAScript allows to hide properties from iteration */ |
+//jsx.object.extend(Object.prototype, { |
+// extend : extend, |
+// clone : clone, |
+// findNewProperty: findNewProperty, |
+// _hasOwnProperty: _hasOwnProperty |
+// }); |
+ |
+ /* |
+ * KJS 3.5.1 does not support named FunctionExpressions within Object |
+ * literals if the literal is an AssignmentExpression (right-hand side |
+ * of an assignment or a passed function argument). |
+ * fixed since <http://bugs.kde.org/show_bug.cgi?id=123529> |
+ */ |
+ |
+ jsx.object.extend(Function.prototype, { |
+ /** |
+ * Applies a method of another object in the context |
+ * of a different object (the calling object). |
+ * |
+ * @memberOf Function#prototype |
+ * @function |
+ * @return {any} |
+ */ |
+ apply: (function () { |
+ var |
+ jsx_object = jsx.object, |
+ jsx_global = jsx.global; |
+ |
+ /** |
+ * @param {Object} thisArg |
+ * Reference to the calling object |
+ * @param {Array} argArray |
+ * Arguments for the object |
+ */ |
+ return function (thisArg, argArray) { |
+ if (!thisArg) |
+ { |
+ thisArg = jsx_global; |
+ } |
+ |
+ var |
+ o = {}, |
+ p = jsx_object.findNewProperty(o); |
+ |
+ if (p) |
+ { |
+ o[p] = thisArg || this; |
+ |
+ var a = new Array(); |
+ for (var i = 0, len = argArray.length; i < len; i++) |
+ { |
+ a[i] = "argArray[" + i + "]"; |
+ } |
+ |
+ eval("o[p](" + a + ")"); |
+ |
+ delete o[p]; |
+ } |
+ }; |
+ }()), |
+ |
+ /** |
+ * Calls (executes) a method of another object in the |
+ * context of a different object (the calling object). |
+ * |
+ * @memberOf Function#prototype |
+ * @param {Object} thisArg |
+ * Reference to the calling object. SHOULD NOT |
+ * be a host object, since augmentation is required. |
+ * @params {_} |
+ * Arguments for the object. |
+ */ |
+ call: function (thisArg) { |
+ var a = new Array(); |
+ |
+ for (var i = 1, len = arguments.length; i < len; i++) |
+ { |
+ a[i] = "arguments[" + i + "]"; |
+ } |
+ |
+ if (!thisArg) |
+ { |
+ thisArg = jsx.global; |
+ } |
+ |
+ var |
+ o = {}, |
+ p = jsx.object.findNewProperty(o); |
+ |
+ if (p) |
+ { |
+ o[p] = this; |
+ eval("o[p](" + a + ")"); |
+ delete o[p]; |
+ o = null; |
+ } |
+ }, |
+ |
+ /** |
+ * Returns a <code>Function</code> that has a defined |
+ * <code>this</code> value and calls the calling |
+ * <code>Function</code> with default parameters. |
+ * |
+ * @function |
+ * @return {Function} |
+ * @see 15.3.4.5 Function.prototype.bind (thisArg [, arg1 [, arg2, ...]]) |
+ */ |
+ bind: (function () { |
+ var _slice; |
+ var _getClass = jsx.object.getClass; |
+ |
+ /** |
+ * @param {Object} thisArg |
+ * <code>this</code> value of the returned |
+ * <code>Function</code> |
+ * @params Default parameters |
+ */ |
+ return function (thisArg) { |
+ var target = this; |
+ if (typeof target != "function") |
+ { |
+ return jsx.throwThis("TypeError"); |
+ } |
+ |
+ if (!_slice) |
+ { |
+ _slice = Array.prototype.slice; |
+ } |
+ |
+ var boundArgs = _slice.call(arguments, 1); |
+ var f = function () { |
+ return target.apply(thisArg, boundArgs.concat(_slice.call(arguments))); |
+ }; |
+ |
+ if (_getClass(target) == "Function") |
+ { |
+ f.length = target.length + boundArgs.length; |
+ } |
+ else |
+ { |
+ if (typeof Object.defineProperty == "function") |
+ { |
+ /* |
+ * [[Writable]]: false, [[Enumerable]]: false, |
+ * [[Configurable]]: false |
+ */ |
+ Object.defineProperty(f, "length"); |
+ } |
+ else |
+ { |
+ f.length = 0; |
+ } |
+ } |
+ |
+ return f; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Constructs a new object using the calling object as constructor |
+ * and elements of the referred array as items of the arguments list. |
+ * <p> |
+ * Example: |
+ * <pre><code>var d = Date.construct([2009, 8, 1]);</code></pre> |
+ * is equivalent to |
+ * <pre><code>var d = new Date(2009, 8, 1);</code></pre> |
+ * but, by contrast, allows for passing an arbitrary number of |
+ * arguments per the array's elements. |
+ * </p> |
+ * @memberOf Function#prototype |
+ * @param {Array} argArray |
+ * @return {Object} Reference to the new instance |
+ */ |
+ construct: function (argArray) { |
+ var a = new Array(); |
+ for (var i = 0, len = argArray.length; i < len; ++i) |
+ { |
+ a[i] = "argArray[" + i + "]"; |
+ } |
+ |
+ return eval("new this(" + a + ")"); |
+ }, |
+ |
+ /** |
+ * @author Courtesy of Asen Bozhilov, slightly adapted |
+ * @function |
+ * @memberOf Function#prototype |
+ * @return {Object} Reference to the new instance |
+ */ |
+ construct2: (function () { |
+ function Dummy(constructor, argArray) { |
+ constructor.apply(this, argArray); |
+ } |
+ |
+ /** |
+ * @param {Array} argArray |
+ */ |
+ return function (argArray) { |
+ Dummy.prototype = this.prototype; |
+ return new Dummy(this, argArray); |
+ }; |
+ }()) |
+ }); |
+} |
+ |
+/** |
+ * Includes the prototype object of another object in the prototype |
+ * chain of objects created with the calling Function object. |
+ * <p> |
+ * Used with constructors to establish multi-level prototype-based |
+ * inheritance (much like class-based inheritance in Java). To that end, |
+ * this method adds a <code>_super</code> property to the function to refer |
+ * to <var>Constructor</var>, the constructor of the parent prototype. |
+ * Likewise, instances constructed with the resulting function have a |
+ * <code>_super</code> property to refer to their constructor. |
+ * </p><p> |
+ * NOTE: Because of this, you need to use the constructor's |
+ * <code>_super</code> property if you want to refer to the parent's |
+ * constructor in the instance's constructor; using the instance's |
+ * <code>_super</code> property would result in infinite recursion, |
+ * and ultimately a stack overflow. You may call the parent's |
+ * constructor explicitly within the constructor of the child, using |
+ * the (equivalent of the) <code>arguments.callee._super.call()</code> |
+ * method (or calling it explicitly as a method of the inheriting |
+ * prototype); in prototype methods, use |
+ * <code><var>Constructor</var>._super.prototype.method.call()</code> |
+ * or refer to the parent constructor directly. |
+ * </p> |
+ * <p><em>Not to be confused with {@link jsx.object#extend}.</em></p> |
+ * |
+ * @function |
+ * @return {Function} |
+ * A reference to the constructor of the extended prototype object |
+ * if successful; <code>null</code> otherwise. |
+ */ |
+Function.prototype.extend = (function () { |
+ var _jsx = jsx; |
+ var _jsx_object = _jsx.object; |
+ |
+ /** |
+ * @private |
+ * @function |
+ * @return {Object} |
+ */ |
+ var _iterator = (function () { |
+ /* Optimize if ECMAScript 5 features were available */ |
+ if (typeof Object.defineProperties == "function") |
+ { |
+ return function () { |
+ return this; |
+ }; |
+ } |
+ |
+ return function () { |
+ _jsx.warn("for (var p in o.iterator()) { f(); } is inefficient," |
+ + " consider using o.forEach(f, ...) instead"); |
+ |
+ var o = new Object(); |
+ |
+ for (var p2 in this) |
+ { |
+ switch (p2) |
+ { |
+ case "_super": |
+ case "constructor": |
+ case "iterator": |
+ case "forEach": |
+ break; |
+ |
+ default: |
+ o[p2] = true; |
+ } |
+ } |
+ |
+ return o; |
+ }; |
+ }()); |
+ |
+ function _forEach(fCallback, thisObj) |
+ { |
+ var t = typeof fCallback; |
+ if (!_jsx_object.isMethod(fCallback)) |
+ { |
+ return _jsx.throwThis( |
+ "TypeError", |
+ (!/^\s*unknown\s*$/i.test(t) ? fCallback : "arguments[0]") |
+ + " is not a function", |
+ this + ".forEach"); |
+ } |
+ |
+ for (var p in this) |
+ { |
+ switch (p) |
+ { |
+ case "_super": |
+ case "constructor": |
+ case "iterator": |
+ case "forEach": |
+ break; |
+ |
+ default: |
+ /* also supports host object's methods */ |
+ Function.prototype.call.call(fCallback, thisObj, this[p], p, this); |
+ } |
+ } |
+ } |
+ |
+ /** |
+ * @param {Function} fConstructor |
+ * Constructor from which prototype object should be |
+ * inherited. |
+ * @param {Object} oProtoProps |
+ * Object from which to shallow-copy properties as prototype |
+ * properties. Of those, the <code>_super</code>, |
+ * <code>constructor</code>, and <code>_userDefined</code> |
+ * properties are ignored as they are used internally. |
+ */ |
+ return function (fConstructor, oProtoProps) { |
+ var me = this; |
+ |
+ /* |
+ * Allows constructor to be null or undefined to inherit from |
+ * Object.prototype by default (see below) |
+ */ |
+ if (fConstructor == null) |
+ { |
+ if (typeof fConstructor == "undefined") |
+ { |
+ /* Passing undefined is probably unintentional, so warn about it */ |
+ _jsx.warn((_jsx_object.getFunctionName(me) || "[anonymous Function]") |
+ + ".extend(" + "undefined, " + oProtoProps + "):" |
+ + " Parent constructor is undefined, using Object"); |
+ } |
+ |
+ fConstructor = "Object"; |
+ } |
+ |
+ /* |
+ * Supports strings being passed that denote properties of the |
+ * Global Object. |
+ * |
+ * TODO: An API that only registers strings as references to features |
+ * defined later, and implements inheritance using this registry |
+ * on user call only, might be useful for constructors defined |
+ * in Object initializers. |
+ */ |
+ if (typeof fConstructor.valueOf() == "string") |
+ { |
+ fConstructor = _jsx.global[fConstructor]; |
+ } |
+ |
+ var t = typeof fConstructor; |
+ if (t != "function") |
+ { |
+ _jsx.throwThis("TypeError", |
+ (/\s*unknown\s*/i.test(t) ? "Unknown" : t) + " is not a function"); |
+ return null; |
+ } |
+ |
+ this.prototype = _jsx_object.inheritFrom(fConstructor.prototype); |
+ |
+ if (oProtoProps) |
+ { |
+ for (var p in oProtoProps) |
+ { |
+ this.prototype[p] = oProtoProps[p]; |
+ } |
+ } |
+ |
+ this._super = fConstructor; |
+ this.prototype._super = fConstructor.prototype; |
+ this.prototype.constructor = this; |
+ this._userDefined = true; |
+ |
+ /* PERF: for (var p in o.iterator()) is rather inefficient */ |
+ /** |
+ * @deprecated |
+ * @return {Object} |
+ */ |
+ if (typeof this.prototype.iterator != "function") |
+ { |
+ this.prototype.iterator = _iterator; |
+ } |
+ |
+ /* Optimize iteration if ECMAScript 5 features are available */ |
+ if (typeof Object.defineProperties == "function") |
+ { |
+ var |
+ userDefProtoProps = ["_super", "constructor", "iterator"], |
+ oDescriptors = {}, |
+ proto = this.prototype; |
+ |
+ for (var i = userDefProtoProps.length; i--;) |
+ { |
+ p = userDefProtoProps[i]; |
+ oDescriptors[p] = { |
+ value: proto[p], |
+ enumerable: false |
+ }; |
+ } |
+ |
+ _jsx.tryThis( |
+ function () { |
+ Object.defineProperties(proto, oDescriptors); |
+ }, |
+ function (e) { |
+ _jsx.warn(_jsx_object.getFunctionName(me) + ".extend(" |
+ + _jsx_object.getFunctionName(fConstructor) + ", " |
+ + oProtoProps + "): " + e.name + ': ' + e.message); |
+ }); |
+ } |
+ |
+ if (typeof this.prototype.forEach != "function") |
+ { |
+ /** |
+ * Calls a function for each real property of the object |
+ * in arbitrary order. Workaround for for-in iteration |
+ * on objects with augmented prototype object. |
+ * |
+ * @param {Function} fCallback |
+ * @param {Object} thisObj (optional) |
+ * @throws TypeError |
+ */ |
+ this.prototype.forEach = _forEach; |
+ |
+ /* Optimize iteration if ECMAScript 5 features are available */ |
+ if (typeof Object.defineProperty == "function") |
+ { |
+ _jsx.tryThis( |
+ function () { |
+ Object.defineProperty(me.prototype, "forEach", { |
+ value: me.prototype.forEach, |
+ enumerable: false |
+ }); |
+ }, |
+ function (e) { |
+ /* IE 8 goes here */ |
+ _jsx.warn( |
+ 'Borken implementation: Object.defineProperty is a method' |
+ + ' but [[Call]](this.prototype, "forEach") throws exception ("' |
+ + e.name + ': ' + e.message + '")'); |
+ } |
+ ); |
+ } |
+ } |
+ |
+ return this; |
+ }; |
+}()); |
+ |
+jsx.array = { |
+ version: jsx.object.version, |
+ |
+ /** |
+ * Maps elements of an <code>Array</code>-like object |
+ * to named properties of another object. |
+ * |
+ * <p>NOTE: Equivalent to Array destructuring (JavaScript 1.7+):</p> |
+ * <pre><code>var o = Array.destructure(["bar", "foo"], ["foo", "bar"]);</code></pre> |
+ * is equivalent to |
+ * <pre><code>var o = {}; |
+ * [o.foo, o.bar] = ["bar", "foo"];</code></pre> |
+ * |
+ * @param {Object} a |
+ * <code>Array</code>-like object whose elements should be mapped. |
+ * @param {Array} properties |
+ * Names of the properties that array elements should be mapped to. |
+ * If an element of this <code>Array</code> is <code>undefined</code> |
+ * or <code>null</code> (the former can be facilitated with |
+ * simply omitting the element value in an <code>Array</code> |
+ * Initialiser when not the last element of this <code>Array</code>), |
+ * the corresponding element of <var>a</var> is not mapped. |
+ * @param {Object} oTarget |
+ * Target object. If a false-value, a new <code>Object</code> |
+ * instance is being created. |
+ * @returns {Object} |
+ * <var>oTarget</var> or a new <code>Object</code> instance |
+ * augmented with the specified properties and values. |
+ */ |
+ destructure: function (a, properties, oTarget) { |
+ var o = oTarget || {}; |
+ |
+ for (var i = 0, len = properties.length; i < len; ++i) |
+ { |
+ var propertyName = properties[i]; |
+ if (propertyName != null) |
+ { |
+ o[propertyName] = a[i]; |
+ } |
+ } |
+ |
+ return o; |
+ }, |
+ |
+ /** |
+ * Maps one array to another |
+ * |
+ * @function |
+ * @return {Array} |
+ * <var>array</var> with <var>callback</var> applied to each element. |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.4.19 |
+ */ |
+ map: (function () { |
+ var _isMethod = jsx.object.isMethod; |
+ |
+ /** |
+ * @param {Array} array |
+ * Array to be mapped |
+ * @param {Callable} callback |
+ * @param {Object} oThis (optional) |
+ */ |
+ function _map (array, callback, oThis) |
+ { |
+ if (!_isMethod(callback)) |
+ { |
+ return jsx.throwThis("TypeError", |
+ (_isMethod(callback, "toSource") ? callback.toSource() : callback) |
+ + " is not callable", |
+ this + ".map"); |
+ } |
+ |
+ var |
+ len = array.length >>> 0, |
+ res = []; |
+ |
+ for (var i = 0; i < len; ++i) |
+ { |
+ if (i in array) |
+ { |
+ res[i] = callback.call(oThis, array[i], i, array); |
+ } |
+ } |
+ |
+ return res; |
+ } |
+ |
+ return _map; |
+ }()) |
+}; |
+ |
+/** |
+ * Returns an <code>Array</code> created from mapping items |
+ * of an Array-like object. |
+ * |
+ * @param {Object} iterable |
+ * <code>Array</code>-like object |
+ * @param {Function} builder (optional) |
+ * Mapping function whose return value specifies the |
+ * mapped value in the new <code>Array</code>. |
+ * Pass <code>null</code> for no mapping. |
+ * @param {Object} oThis (optional) |
+ * <code>this</code> value in the mapping function |
+ * @return {Array} |
+ * @see Array.prototype#map |
+ */ |
+jsx.array.from = function (iterable, builder, oThis) { |
+ if (arguments.length < 2) |
+ { |
+ builder = null; |
+ } |
+ |
+ if (arguments.length > 1 && builder && typeof builder != "function") |
+ { |
+ return jsx.throwThis("TypeError", |
+ (_isMethod(builder, "toSource") ? builder.toSource() : builder) |
+ + " is not callable", |
+ this + ".map"); |
+ } |
+ |
+ if (arguments.length < 3) |
+ { |
+ oThis = iterable; |
+ } |
+ |
+ var |
+ len = iterable.length >>> 0, |
+ res = []; |
+ |
+ for (var i = 0; i < len; ++i) |
+ { |
+ res[i] = (builder |
+ ? builder.call(oThis, iterable[i], i, iterable) |
+ : oThis[i]); |
+ } |
+ |
+ return res; |
+}; |
+ |
+if (jsx.options.augmentBuiltins) |
+{ |
+ /* Defines Array.isArray() if not already defined */ |
+ jsx.object.extend(Array, { |
+ destructure: jsx.array.destructure, |
+ from: jsx.array.from, |
+ isArray: jsx.object.isArray |
+ }); |
+} |
+ |
+if (jsx.options.augmentPrototypes) |
+{ |
+ /* |
+ * Defines Array.prototype.indexOf(), .map() and .slice() |
+ * if not already defined |
+ */ |
+ jsx.object.extend(Array.prototype, { |
+ /** |
+ * Returns the first index at which a given element can be found in |
+ * the array, or -1 if it is not present. |
+ * |
+ * @param searchElement |
+ * Element to locate in the array. |
+ * @param {Number} fromIndex |
+ * The index at which to begin the search. Defaults to 0, i.e. |
+ * the whole array will be searched. If the index is greater than |
+ * or equal to the length of the array, -1 is returned, i.e. |
+ * the array will not be searched. If negative, it is taken as |
+ * the offset from the end of the array. Note that even when |
+ * the index is negative, the array is still searched from front |
+ * to back. If the calculated index is less than 0, the whole array |
+ * will be searched. |
+ * @return {number} |
+ * The first index at which a given element can be found in |
+ * the array, or -1 if it is not present. |
+ * @author Courtesy of developer.mozilla.org, unverified |
+ * @memberOf Array.prototype |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.4.14 |
+ */ |
+ indexOf: function (searchElement, fromIndex) { |
+ "use strict"; |
+ if (this === void 0 || this === null) |
+ { |
+ throw new TypeError(); |
+ } |
+ |
+ var t = Object(this); |
+ |
+ var len = t.length >>> 0; |
+ if (len === 0) { |
+ return -1; |
+ } |
+ |
+ var n = 0; |
+ if (arguments.length > 0) |
+ { |
+ n = Number(fromIndex); |
+ if (n !== n) { |
+ /* shortcut for verifying if it's NaN */ |
+ n = 0; |
+ } |
+ else if (n !== 0 && n !== Infinity && n !== -Infinity) |
+ { |
+ n = (n > 0 || -1) * Math.floor(Math.abs(n)); |
+ } |
+ } |
+ |
+ if (n >= len) |
+ { |
+ return -1; |
+ } |
+ |
+ var k = (n >= 0 ? n : Math.max(len - Math.abs(n), 0)); |
+ for (; k < len; k++) |
+ { |
+ if (k in t && t[k] === searchElement) |
+ { |
+ return k; |
+ } |
+ } |
+ |
+ return -1; |
+ }, |
+ |
+ /** |
+ * Maps one array to another |
+ * |
+ * @param {Callable} callback |
+ * @param {Object} oThis (optional) |
+ * @return {Array} |
+ * The original array with <var>callback</var> applied to each element. |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.4.19 |
+ */ |
+ map: function (callback, oThis) { |
+ return jsx.array.map(this, callback, oThis); |
+ }, |
+ |
+ slice: function (start, end) { |
+ var a = []; |
+ var len = this.length >>> 0; |
+ var relativeStart = parseInt(start, 10); |
+ var k = (relativeStart < 0 |
+ ? Math.max(len + relativeStart, 0) |
+ : Math.min(relativeStart, len)); |
+ var relativeEnd = (typeof end == "undefined" |
+ ? len |
+ : parseInt(end, 10)); |
+ var final = (relativeEnd < 0 |
+ ? Math.max(len + relativeEnd, 0) |
+ : Math.min(relativeEnd, len)); |
+ var n = 0; |
+ while (k < final) |
+ { |
+ if ((k in this)) |
+ { |
+ a[n] = this[k]; |
+ } |
+ |
+ ++k; |
+ ++n; |
+ } |
+ |
+ return a; |
+ } |
+ }); |
+} |
+ |
+/** |
+ * General exception |
+ * |
+ * @constructor |
+ * @extends Error |
+ * @param {string} sMsg |
+ */ |
+jsx.Error = function jsx_Error (sMsg) { |
+ var msg = (sMsg || "Unspecified error"); |
+ var _super = jsx_Error._super; |
+ var e = null; |
+ |
+ if (typeof _super == "function") |
+ { |
+ _super.call(this, msg); |
+ |
+ jsx.tryThis(function () { e = new _super(); }); |
+ } |
+ |
+ if (!this.message) |
+ { |
+ /** |
+ * @type string |
+ */ |
+ this.message = msg; |
+ } |
+ |
+ if (!this.lineNumber && e) |
+ { |
+ /** |
+ * @type number |
+ */ |
+ this.lineNumber = e.lineNumber || e.line; |
+ } |
+ |
+ if (!this.stack && e && e.stack) |
+ { |
+ var stack = String(e.stack).split(/\r?\n|\r/).slice(2); |
+ this.stack = stack.join("\n"); |
+ } |
+}; |
+ |
+jsx.Error.extend( |
+ (typeof Error != "undefined" ? Error : function () {}), |
+ { |
+ /** |
+ * @memberOf jsx.Error#prototype |
+ */ |
+ name: "jsx.Error", |
+ getMessage: function () { return this.message; }, |
+ getStackTrace: function () { return this.stack; }, |
+ printStackTrace: function () { |
+ var s = this.getStackTrace(); |
+ jsx.dmsg(s) || window.alert(s); |
+ } |
+}); |
+ |
+/** |
+ * Invalid argument |
+ * |
+ * @constructor |
+ * @extends jsx#Error |
+ * @param {string} sReason |
+ * @param sGot |
+ * @param sExpected |
+ */ |
+jsx.InvalidArgumentError = |
+ function jsx_InvalidArgumentError (sReason, sGot, sExpected) { |
+ jsx_InvalidArgumentError._super.call(this, |
+ (sReason || "Invalid argument(s)") |
+ + (sGot && sGot.length > 0 ? ": " + sGot : "") |
+ + (sExpected ? (sGot ? ";" : ":") + " expected " + sExpected : "")); |
+ }; |
+ |
+jsx.InvalidArgumentError.extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.InvalidArgumentError#prototype |
+ */ |
+ name: "jsx.InvalidArgumentError" |
+}); |
+ |
+/** |
+ * Object-related exception |
+ * |
+ * @constructor |
+ * @param {string} sMsg |
+ * @extends jsx#Error |
+ */ |
+jsx.object.ObjectError = function jsx_object_ObjectError (sMsg) { |
+ jsx_object_ObjectError._super.call(this, sMsg); |
+}; |
+ |
+jsx.object.ObjectError.extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.object.ObjectError#prototype |
+ */ |
+ name: "jsx.object.ObjectError" |
+}); |
+ |
+/** |
+ * Property-related exception |
+ * |
+ * @constructor |
+ * @param {string} sMsg |
+ * @extends #ObjectError |
+ */ |
+jsx.object.PropertyError = function jsx_object_PropertyError (sMsg) { |
+ jsx_object_PropertyError._super.call( |
+ this, "No such property" + (arguments.length > 0 ? (": " + sMsg) : "")); |
+}; |
+ |
+jsx.object.PropertyError.extend(jsx.object.ObjectError, { |
+ /** |
+ * @memberOf jsx.object.PropertyError#prototype |
+ */ |
+ name: "jsx.object.PropertyError" |
+}); |
\ No newline at end of file |
/live/object.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/regexp.js |
=================================================================== |
--- live/regexp.js (nonexistent) |
+++ live/regexp.js (revision 520) |
@@ -0,0 +1,1413 @@ |
+"use strict"; |
+/* vim:set fileencoding=utf-8 tabstop=2 shiftwidth=2 softtabstop=2 expandtab: */ |
+/** |
+ * <title>PointedEars' JSX: RegExp Library</title> |
+ * @filename regexp.js |
+ * @version $Id$ |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2005-2013 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx != "object") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.regexp == "undefined") |
+{ |
+ /* (for JSDT only) */ |
+ jsx.regexp = {}; |
+} |
+ |
+/** |
+ * @type jsx.regexp |
+ * @memberOf __jsx.regexp |
+ * @namespace |
+ */ |
+jsx.regexp = (/** @constructor */ function () { |
+ var _jsx_object = jsx.object; |
+ var _getClass = _jsx_object.getClass; |
+ var _getDataObject = _jsx_object.getDataObject; |
+ |
+ /** |
+ * @type jsx.regexp.RegExp |
+ * @memberOf __jsx.regexp.RegExp |
+ * @namespace |
+ * @property pattern : String |
+ * The original pattern string, including pattern-match |
+ * modifiers. |
+ * @property _patternGroups : Array |
+ * The part of the pattern string from the opening parenthesis |
+ * of each pattern group to the end of the pattern, before |
+ * character class expansion, and without pattern-match |
+ * modifiers. The first item (index 0) holds the complete |
+ * pattern without modifiers. Used internally; do not modify. |
+ * <em>NOTE: For efficiency, the pattern groups are not isolated; |
+ * further parsing on your part may very well be necessary.</em> |
+ * @property groups : Object |
+ * An Array-like object mapping group indexes to group names. |
+ * Its <code>length</code> property yields the number of grouped |
+ * subpatterns in the original pattern, including named groups. |
+ * @property names : Object |
+ * An object mapping group names to group indexes. |
+ * @property flags : String |
+ * The original flags string |
+ * @property dotAll : boolean |
+ * Flag specifying whether the used expression was built from |
+ * a pattern where the dot matches newline as well (PCRE_DOTALL). |
+ * @property extended : boolean |
+ * Flag specifying whether the used expression was built from |
+ * an extended pattern (PCRE_EXTENDED). |
+ * @property unicodeMode : boolean |
+ * Flag specifying whether the used expression was built using |
+ * Unicode mode. |
+ * @method exec |
+ * A variant of the built-in {@link RegExp.prototype#exec()} |
+ * to support named groups and Unicode mode transparently. |
+ * @method _oldExec |
+ * The original inherited exec() method. Used internally. |
+ * @method _realExec |
+ * The used exec() method. Used internally. |
+ * @function |
+ */ |
+ var _RegExp2 = jsx.object.extend( |
+ (/** @constructor */function () { |
+ var |
+ _destructure = jsx.array.destructure, |
+ _WideString = _jsx_object.getFeature( |
+ jsx, "string", "unicode", "WideString"), |
+ _fromCharCode = function (codePoint) { |
+ if (codePoint > 0xFFFF) |
+ { |
+ return _WideString.fromCharCode(codePoint); |
+ } |
+ |
+ return String.fromCharCode(codePoint); |
+ }, |
+ |
+ propertyClasses, |
+ ucdFields = ["codePoint",, "propertyClass"], |
+ |
+ _parseUCDText = function () { |
+ (new jsx.net.http.Request( |
+ _RegExp2.ucdTextPath, "GET", false, |
+ function (xhr) { |
+ var lines = xhr.responseText.split(/\r?\n|\r/).map( |
+ function (e) { |
+ var entry = _destructure(e.split(";"), ucdFields); |
+ entry.codePoint = parseInt(entry.codePoint, 16); |
+ return entry; |
+ }); |
+ |
+ lines.sort(function (a, b) { |
+ if (a.propertyClass < b.propertyClass) |
+ { |
+ return -1; |
+ } |
+ |
+ if (a.propertyClass > b.propertyClass) |
+ { |
+ return 1; |
+ } |
+ |
+ if (a.codePoint < b.codePoint) |
+ { |
+ return -1; |
+ } |
+ |
+ if (a.codePoint > b.codePoint) |
+ { |
+ return 1; |
+ } |
+ |
+ return 0; |
+ }); |
+ |
+ propertyClasses = _RegExp2.propertyClasses = {}; |
+ |
+ for (var i = 0, len = lines.length; i < len; ++i) |
+ { |
+ var |
+ line = lines[i], |
+ propertyClass = line.propertyClass, |
+ prevClass, |
+ codePoint = line.codePoint, |
+ prevCodePoint; |
+ |
+ if (isNaN(codePoint) || (codePoint > 0xFFFF && !_WideString)) |
+ { |
+ continue; |
+ } |
+ |
+ if (propertyClass != prevClass) |
+ { |
+ if (codePoint != prevCodePoint + 1) |
+ { |
+ if (startRange) |
+ { |
+ propertyClasses[prevClass] += |
+ "-" + _fromCharCode(prevCodePoint); |
+ } |
+ } |
+ |
+ propertyClasses[propertyClass] = |
+ _fromCharCode(codePoint); |
+ |
+ var startRange = false; |
+ } |
+ else |
+ { |
+ if (codePoint != prevCodePoint + 1) |
+ { |
+ if (startRange) |
+ { |
+ propertyClasses[prevClass] += |
+ "-" + _fromCharCode(prevCodePoint); |
+ |
+ startRange = false; |
+ } |
+ |
+ propertyClasses[propertyClass] += |
+ _fromCharCode(codePoint); |
+ } |
+ else |
+ { |
+ startRange = true; |
+ } |
+ } |
+ |
+ prevClass = propertyClass, |
+ prevCodePoint = codePoint; |
+ } |
+ |
+ if (startRange) |
+ { |
+ propertyClasses[prevClass] += |
+ "-" + _fromCharCode(prevCodePoint); |
+ } |
+ } |
+ )).send(); |
+ }, |
+ |
+ /** |
+ * @param {String} charClassContent |
+ * @param {boolean} bUnicodeMode |
+ * @return {string} |
+ */ |
+ _normalizeCharClass = function (charClassContent, bUnicodeMode) { |
+ var negEscapes = []; |
+ |
+ if (charClassContent == "") |
+ { |
+ return "[]"; |
+ } |
+ |
+ if (charClassContent == "^") |
+ { |
+ return "[^]"; |
+ } |
+ |
+ var reduced = charClassContent.replace( |
+ /\\((P)\{([^\}]+)\}|(W))/g, |
+ function (m, p1, cP, charProperty, cW) { |
+ var escapeChar = cP || cW; |
+ if (escapeChar == "P" || bUnicodeMode) |
+ { |
+ negEscapes.push("\\" + escapeChar.toLowerCase() |
+ + (charProperty ? "{" + charProperty + "}" : "")); |
+ return ""; |
+ } |
+ |
+ return m; |
+ }); |
+ |
+ if (negEscapes.length > 0) |
+ { |
+ /* Do not let negated empty class from reduction match everything */ |
+ if (reduced == "^") |
+ { |
+ reduced = ""; |
+ } |
+ |
+ if (reduced != "") |
+ { |
+ jsx.warn( |
+ "jsx.regexp.RegExp: Combined negative escapes in character classes" |
+ + " require support for non-capturing parentheses"); |
+ } |
+ |
+ return (reduced ? "(?:[" + reduced + "]|" : "") |
+ + "[" + (charClassContent.charAt(0) == "^" ? "" : "^") |
+ + negEscapes.join("") + "]" |
+ + (reduced ? ")" : ""); |
+ } |
+ |
+ return "[" + reduced + "]"; |
+ }, |
+ |
+ sPropertyEscapes = "\\\\(p)\\{([^\\}]+)\\}", |
+ rxPropertyEscapes = new RegExp(sPropertyEscapes, "gi"), |
+ sNonPropEscInRange = "([^\\]\\\\]|\\\\[^p])*", |
+ sEscapes = |
+ "\\[(\\^?(" + sNonPropEscInRange + "(" + sPropertyEscapes |
+ + ")+" + sNonPropEscInRange + ")+)\\]" |
+ + "|" + sPropertyEscapes + "", |
+ rxEscapes = new RegExp(sEscapes, "gi"), |
+ |
+ fEscapeMapper = function (match, classRanges, p2, p3, p4, p5, p6, p7, |
+ standalonePropSpec, standaloneClass) { |
+ propertyClasses = _RegExp2.propertyClasses; |
+ |
+ /* If the Unicode Character Database (UCD) is not statically loaded */ |
+ if (!propertyClasses) |
+ { |
+ /* load it dynamically, ignore exceptions */ |
+ var ucdScriptPath = _RegExp2.ucdScriptPath; |
+ if (ucdScriptPath) |
+ { |
+ jsx.tryThis(function () { jsx.importFrom(ucdScriptPath); }); |
+ |
+ propertyClasses = _RegExp2.propertyClasses; |
+ } |
+ |
+ /* if this failed */ |
+ if (!propertyClasses) |
+ { |
+ if (!jsx.net || !jsx.net.http |
+ || typeof jsx.net.http.Request != "function") |
+ { |
+ jsx.throwThis("jsx.regexp.UCDLoadError", |
+ ['"' + _RegExp2.ucdScriptPath + '" (jsx.regexp.RegExp.ucdScriptPath)', |
+ "http.js"]); |
+ } |
+ |
+ /* parse the text version of the UCD */ |
+ _parseUCDText(); |
+ } |
+ |
+ /* |
+ * Define property classes required for Unicode mode |
+ * if not already defined (not available from text version |
+ * of UCD) |
+ */ |
+ _jsx_object.extend(propertyClasses, { |
+ L: "\\p{Ll}\\p{Lm}\\p{Lo}\\p{Lt}\\p{Lu}", |
+ M: "\\p{Mc}\\p{Me}\\p{Mn}", |
+ N: "\\p{Nd}\\p{Nl}\\p{No}", |
+ Digit: "\\p{Nd}", |
+ Space: "\u0009\u000a\u000c\u000d\u0020\u0085\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000", |
+ Word: "\\p{L}\\p{M}\\p{N}\\p{Pc}" |
+ }); |
+ } |
+ |
+ var _rangesStack = []; |
+ /** |
+ * @return {string} |
+ */ |
+ _rangesStack.toString = function () { |
+ return this.join(" --> "); |
+ }; |
+ |
+ var _propertyClassReplacer = function (match, propertySpecifier, propertyClass) { |
+ if (propertySpecifier === "P") |
+ { |
+ jsx.throwThis("jsx.regexp.InvalidPropertyClassError", |
+ _rangesStack.pop() |
+ + " contains the negative property specifier \\P{" + propertyClass + "}"); |
+ return; |
+ } |
+ |
+ return _getRanges(propertyClass); |
+ }; |
+ |
+ var _getRanges = |
+ /** |
+ * Retrieves class ranges by property class, and throws a specialized |
+ * exception if this fails. |
+ |
+ * @param {String} propertyClass |
+ * @throws jsx.regexp#UndefinedPropertyClassError |
+ */ |
+ function (propertyClass) { |
+ return jsx.tryThis( |
+ function () { |
+ if (_rangesStack.indexOf(propertyClass) > -1) |
+ { |
+ jsx.throwThis("jsx.regexp.InvalidPropertyClassError", |
+ propertyClass + " is cyclically defined (" |
+ + _rangesStack + " --> " + propertyClass |
+ + ")"); |
+ return; |
+ } |
+ |
+ _rangesStack.push(propertyClass); |
+ |
+ var escapedRange = _jsx_object.getProperty(propertyClasses, propertyClass); |
+ |
+ /* |
+ * Resolve property class references in property class values, |
+ * watch for cyclic structures. |
+ */ |
+ var rxPropertyEscapes = new RegExp(sPropertyEscapes, "gi"); |
+ var unescapedRange = escapedRange.replace(rxPropertyEscapes, _propertyClassReplacer); |
+ |
+ _rangesStack.pop(); |
+ |
+ return unescapedRange; |
+ }, |
+ function (e) { |
+ if (e.name == "jsx.object.PropertyError") |
+ { |
+ jsx.throwThis("jsx.regexp.UndefinedPropertyClassError", |
+ propertyClass + (_rangesStack.length > 1 ? " in " + _rangesStack : "")); |
+ } |
+ else |
+ { |
+ jsx.rethrowThis(e); |
+ } |
+ }); |
+ }; |
+ |
+ /* We can handle standalone class references … */ |
+ if (standaloneClass) |
+ { |
+ var result = _getRanges(standaloneClass); |
+ result = "[" + (standalonePropSpec == "P" ? "^" : "") + result + "]"; |
+ } |
+ else |
+ { |
+ /* … and class references in character classes */ |
+ result = _normalizeCharClass(classRanges); |
+ |
+ result = result.replace( |
+ rxPropertyEscapes, |
+ function (match, propertySpecifier, propertyClass) { |
+ var ranges = _getRanges(propertyClass); |
+ return ranges; |
+ }); |
+ } |
+ |
+ return result; |
+ }; |
+ |
+ /** |
+ * Creates and returns an extended {@link RegExp} object. |
+ * |
+ * This constructor accepts pattern and flags arguments where you |
+ * can use some features of Perl and Perl-compatible regular |
+ * expressions (PCRE); like {@link RegExp()}, it can also be called |
+ * as a function to do the same. The {@link RegExp} instance it |
+ * returns is augmented with properties to support those features |
+ * when matching it against a string. |
+ * |
+ * The following additional features are currently supported: |
+ * <ul> |
+ * <li>Flags: |
+ * <ul> |
+ * <li><tt>s</tt> (PCRE_DOTALL) – the <tt>.</tt> metacharacter |
+ * matches newline as well.</li> |
+ * <li><tt>u</tt> (Unicode mode) – the meaning of |
+ * character class escape sequences <tt>\b</tt>, <tt>\w</tt>, |
+ * and <tt>\W</tt> is extended to include Unicode character |
+ * properties.</li> |
+ * <li><tt>x</tt> (PCRE_EXTENDED) – whitespace within |
+ * the pattern is ignored, so that it is easier |
+ * human-readable.</li> |
+ * </ul><p> |
+ * Flags except for Unicode mode can be set and unset for |
+ * parts of the expression outside of character classes using |
+ * the <tt>(?…)</tt> and <tt>(?-…)</tt> notations. |
+ * </li> |
+ * <li>Unicode property classes using e.g. the \p{…} notation</li> |
+ * <li>Named capturing groups by passing strings with the |
+ * <tt>(?P<name>…)</tt> or <tt>(?P'name'…)</tt> notation, |
+ * where the <tt>P</tt> is optional, respectively.</li> |
+ * </ul><p> |
+ * This is facilitated through the following steps: |
+ * </p><ol> |
+ * <li>The flags <code>x</code>, <code>s</code> and <code>u</code> |
+ * in the optional <var>sFlags</var> argument set the initial |
+ * state of the pattern-match modifiers; the extended |
+ * {@link RegExp}'s <code>extended</code>, <code>dotAll</code>, |
+ * and <code>unicodeMode</code> properties are set accordingly. |
+ * These flags are removed from the <var>sFlags</var> |
+ * argument subsequently, as it is reused to create the |
+ * {@link RegExp} instance. [Conforming implementations of |
+ * ECMA-262-5.1 MUST throw a <code>SyntaxError</code> |
+ * exception on flags other than <code>g</code>, <code>i</code>, |
+ * and <code>m</code> (section 15.10.4.1); Mozilla JavaScript |
+ * may also support the <code>y</code> (sticky) flag, |
+ * but nothing else.]</li> |
+ * <li>The pattern is run through several passes, where in each |
+ * one it is scanned from left to right using another |
+ * {@link RegExp}: |
+ * <ol style="margin-bottom: 1em; list-style-type: lower-roman"> |
+ * <li><p>Capturing groups and pattern-match modifiers in the |
+ * pattern are matched and replaced. |
+ * <p>Capturing groups are replaced with the opening |
+ * parenthesis if they were assigned a name. The |
+ * extended {@link RegExp}'s <code>groups</code>, |
+ * <code>names</code>, and <code>_patternGroups</code> |
+ * properties are set accordingly. They are used in an |
+ * overwritten <code>exec()</code> method and when matching |
+ * against a <code>jsx.regexp.String</code> using its |
+ * <tt>match(…)</tt> method.</p> |
+ * <p style="margin-bottom: 0"> |
+ * Pattern-match modifiers are set and unset as they |
+ * are scanned. The corresponding substrings are |
+ * removed from the pattern. If the group is otherwise |
+ * empty, and therefore is not a group at all, |
+ * the entire pseudo-group is removed.</p> |
+ * <ol style="margin-top: 0; list-style-type: lower-latin"> |
+ * <li>With PCRE_EXTENDED set, single-line |
+ * comments starting with <tt>#</tt> and unescaped |
+ * whitespace are removed from the pattern. The backslash |
+ * is removed from the pattern when in front of |
+ * whitespace.</li> |
+ * <li>With PCRE_DOTALL set, unescaped <tt>.</tt> |
+ * (period) characters are replaced with the character class |
+ * <tt>[\S\s]</tt> which matches all Unicode characters.</li> |
+ * </ol> |
+ * <p><em>NOTE: Unlike in Perl and PCRE, a pattern-match |
+ * modifier affects all of the pattern that follows, |
+ * even outside the group in which the modifier was |
+ * set/unset. This will be fixed in a later version.</em> |
+ * </p></li> |
+ * <li>When in Unicode mode, |
+ * <ol style="list-style-type: lower-latin"> |
+ * <li>in the second pass, character class escape sequences |
+ * <tt>\w</tt> and <tt>\W</tt> are replaced with |
+ * corresponding uses of <tt>\p{Word}</tt>.</li> |
+ * <li>in the third pass, <tt>\b</tt> is replaced with |
+ * corresponding uses of character classes and negative |
+ * lookahead. |
+ * </ol></li> |
+ * <li style="margin-top: 1em">The <tt>\p{…}</tt> and <tt>\P{…}</tt> |
+ * escape sequences are replaced with the corresponding |
+ * character classes.</li> |
+ * </ol></li> |
+ * <li>The resulting expression and remaining flags are passed |
+ * to the {@link RegExp} constructor.</li> |
+ * <li>The created {@link RegExp} instance is augmented with |
+ * properties and returned.</li> |
+ * </ol><p> |
+ * There are the following possibilities to make Unicode property |
+ * classes known to this constructor: |
+ * </p><ol> |
+ * <li>Provide the Unicode Character Database, or parts thereof, |
+ * as an Object;</li> |
+ * <li>Provide the Unicode Character Database, or parts thereof, |
+ * as a plain text resource that is accessed with |
+ * XMLHttpRequest;</li> |
+ * <li>Define property classes manually</li> |
+ * </ol> |
+ * <p> |
+ * Variant #1 requires you to define a mapping object with |
+ * the following namespace and structure: |
+ * </p> |
+ * <pre><code> |
+ * jsx.regexp.RegExp.propertyClasses = { |
+ * ..., |
+ * Sc: "\u20AC...", |
+ * ... |
+ * }; |
+ * </code></pre> |
+ * <p> |
+ * The property name is the name of the Unicode property class |
+ * (here: <tt>Sc</tt>). The property value (a string) defines |
+ * which characters belong to that class. You may use "-" |
+ * to specify character ranges, i.e., the range of characters |
+ * including the characters having the boundaries as code point |
+ * value, and all characters that have a code point value |
+ * in-between. (For a literal "-", you may use "\\-".) |
+ * An example file to mirror the Unicode 5.0 Character Database, |
+ * UnicodeData.js, is distributed with this file. Include it |
+ * <em>after</em> the file that declares the constructor (this |
+ * file) to use it. If you do not include it, but use the |
+ * <code>\p{...}</code> notation, an attempt will be made to load |
+ * the file specified by the <code>ucdScriptPath</code> property |
+ * (default: <code>"/scripts/UnicodeData.js"</code>) using |
+ * synchronous XHR (see below). |
+ * </p> |
+ * <p> |
+ * Variant #2 is going to support two different methods: |
+ * Synchronous and asynchronous request-response handling. |
+ * Synchronous request-response handling requests the (partial) |
+ * Unicode Character Database from the resource specified by |
+ * the <code>ucdTextPath</code> property (default: |
+ * <code>"/scripts/UnicodeData.txt"</code>) and halts execution |
+ * until a response has been received or the connection timed out. |
+ * Asynchronous request-response handling allows script execution |
+ * to continue while the request and response are in progress, but |
+ * you need to provide a callback as third argument where actions |
+ * related to the regular expression must be performed. |
+ * Asynchronous handling is recommended for applications that need |
+ * to be responsive to user input. <strong>Currently, only |
+ * synchronous handling is implemented.</strong> |
+ * </p> |
+ * <p> |
+ * Variant #3 can be combined with the other variants. |
+ * The constructor has a definePropertyClasses() method which can |
+ * be used to define and redefine property classes. This allows |
+ * an extended RegExp object to support only a subset of Unicode |
+ * property classes, and to support user-defined character |
+ * property classes. |
+ * </p> |
+ * |
+ * The returned {@link RegExp} has additional properties to |
+ * accomodate syntax extensions in the pattern string: |
+ * |
+ * @param {String|RegExp} expression |
+ * A regular expression pattern string that may use the features |
+ * described above. If it is a {@link RegExp}, its |
+ * <code>source</code> property is used and combined with |
+ * <var>sFlags</var>. That is, <code>jsx.regexp.RegExp(/foo/, "i")</code> |
+ * returns the same as <code>jsx.regexp.RegExp(/foo/i)</code>. |
+ * @param {String} sFlags |
+ * Optional string containing none, one or more of the standard |
+ * {@link RegExp} modifiers and the flags described above. |
+ * Unsupported flags are ignored, but passed on to {@link RegExp}. |
+ * Note that modifiers in <var>expression</var> can temporarily |
+ * unset and set the "s" and "x" flags. Following Perl, the "u" |
+ * flag (Unicode mode) can only be enabled, but not disabled. |
+ * @return {RegExp} |
+ * A regular expression with the property class escape sequences |
+ * expanded according to the specified data, with the specified |
+ * flags set if they are natively supported. |
+ */ |
+ function jsx_regexp_RegExp (expression, sFlags) |
+ { |
+ if (expression && _getClass(expression) == "RegExp") |
+ { |
+ expression = expression.source; |
+ } |
+ |
+ var t = typeof expression; |
+ if (t != "string") |
+ { |
+ if (arguments.length < 1) |
+ { |
+ expression = ""; |
+ } |
+ else |
+ { |
+ expression = String(expression); |
+ } |
+ } |
+ |
+ var pattern = expression; |
+ var flags = sFlags || ""; |
+ |
+ var extended = false; |
+ var dotAll = false; |
+ var unicodeMode = false; |
+ |
+ if (sFlags) |
+ { |
+ if (sFlags.indexOf("x") > -1) |
+ { |
+ var originalExtended = extended = true; |
+ } |
+ |
+ if (sFlags.indexOf("s") > -1) |
+ { |
+ var originalDotAll = dotAll = true; |
+ } |
+ |
+ if (sFlags.indexOf("u") > -1) |
+ { |
+ unicodeMode = true; |
+ } |
+ |
+ sFlags = sFlags.replace(/[xsu]/g, ""); |
+ } |
+ |
+ /* Support for capturing and special groups */ |
+ var groupCount = 0; |
+ var groups = _getDataObject(); |
+ var names = _getDataObject(); |
+ var patternGroups = [expression]; |
+ |
+ expression = expression.replace( |
+ /(\\\()/.concat( |
+ "|", |
+ /(\((\?P?(([adlupimsx]+)?(-([imsx]+))?)(<([^>]+)>|'([^']+)'|([:!]))?(\))?)?)/g, |
+ "|", |
+ /(#.*(\r?\n|\r|$))|\\(\s)/, |
+ "|", |
+ /\[([^\\\]]|\\.)*\]|(\s+)|\\\.|(\.)/g |
+ ), |
+ function (match, escapedLParen, |
+ group, specialGroup, modifierGroup, |
+ positiveModifiers, negativeModifiers_opt, negativeModifiers, |
+ namedGroup, bracketedName, quotedName, |
+ nonCapturingGroup, emptyGroup, |
+ comment, newline, |
+ escapedWS, charClassContent, whitespace, |
+ plainDot, |
+ index, all) { |
+ if (group) |
+ { |
+ var capturingGroup = (!nonCapturingGroup && !(modifierGroup && emptyGroup)); |
+ if (capturingGroup) |
+ { |
+ ++groupCount; |
+ } |
+ |
+ if (positiveModifiers) |
+ { |
+ var |
+ rxPosModifiers = /[sx]/g, |
+ m; |
+ |
+ while ((m = rxPosModifiers.exec(positiveModifiers))) |
+ { |
+ switch (m[0]) |
+ { |
+ case "s": |
+ dotAll = true; |
+ break; |
+ |
+ case "x": |
+ extended = true; |
+ } |
+ } |
+ } |
+ |
+ if (negativeModifiers) |
+ { |
+ var rxNegModifiers = /[sx]/g; |
+ |
+ while ((m = rxNegModifiers.exec(negativeModifiers))) |
+ { |
+ switch (m[0]) |
+ { |
+ case "s": |
+ dotAll = false; |
+ break; |
+ |
+ case "x": |
+ extended = false; |
+ } |
+ } |
+ } |
+ |
+ if (capturingGroup) |
+ { |
+ /* Support for named capturing groups (PCRE-compliant) */ |
+ var name = bracketedName || quotedName; |
+ if (name) |
+ { |
+ if (names[name]) |
+ { |
+ jsx.throwThis("SyntaxError", "Duplicate symbolic name"); |
+ } |
+ |
+ groups[groupCount] = name; |
+ names[name] = groupCount; |
+ } |
+ |
+ /* |
+ * NOTE: Helps with determining in exec() and match() |
+ * whether \b matched at beginning and \Ws need to be |
+ * ltrimmed from match |
+ */ |
+ patternGroups.push(all.substring(index)); |
+ |
+ return "("; |
+ } |
+ |
+ return emptyGroup ? "" : "(?" + nonCapturingGroup; |
+ } |
+ |
+ /* PCRE_EXTENDED */ |
+ if (extended) |
+ { |
+ /* Remove comments */ |
+ if (comment) |
+ { |
+ return ""; |
+ } |
+ |
+ /* Keep escaped whitespace, remove escape */ |
+ if (escapedWS) |
+ { |
+ return escapedWS; |
+ } |
+ |
+ /* Remove unescaped whitespace */ |
+ if (whitespace) |
+ { |
+ return ""; |
+ } |
+ } |
+ |
+ /* PCRE_DOTALL */ |
+ if (dotAll && plainDot) |
+ { |
+ return "[\\S\\s]"; |
+ } |
+ |
+ return match; |
+ }); |
+ |
+ groups.length = groupCount; |
+ |
+ /* Unicode mode */ |
+ if (unicodeMode) |
+ { |
+ var characterEscapes = { |
+ "d": "\\p{Digit}", |
+ "s": "\\p{Space}", |
+ "w": "\\p{Word}" |
+ }; |
+ |
+ expression = expression.replace( |
+ /\[(([^\]\\]|\\.)*)\]|(\\([dsw]))/gi, |
+ function (match, charClassContent, p2, classCharacter, escapeLetter) { |
+ if (charClassContent) |
+ { |
+ var normalized = _normalizeCharClass(charClassContent, true); |
+ |
+ return normalized.replace( |
+ /\\\\|(\\([dsw]))/gi, |
+ function (match, classCharacter, escapeLetter) { |
+ if (classCharacter) |
+ { |
+ if (escapeLetter >= "A" && escapeLetter <= "Z") |
+ { |
+ if (charClassContent.charAt(0) != "^") |
+ { |
+ jsx.warn("jsx.regexp.RegExp: Negative character" |
+ + " class escape sequences in character" |
+ + " class not yet supported in Unicode mode." |
+ + " Use positive escape sequences in negated" |
+ + " character classes in the meantime."); |
+ |
+ return classCharacter; |
+ } |
+ } |
+ |
+ return characterEscapes[escapeLetter.toLowerCase()]; |
+ } |
+ |
+ return match; |
+ }); |
+ } |
+ |
+ if (classCharacter) |
+ { |
+ return "[" |
+ + (escapeLetter >= "A" && escapeLetter <= "Z" ? "^" : "") |
+ + characterEscapes[escapeLetter.toLowerCase()] + "]"; |
+ } |
+ |
+ return match; |
+ }); |
+ |
+ /* Replace \b */ |
+ var firstGroup = expression.match(/\((\?(P?(<([^>]+)>|'([^']+)')|[:!]))?/); |
+ var afterFirstGroup = (firstGroup && (firstGroup.index + firstGroup[0].length) || 0); |
+ var wordEscape = characterEscapes.w; |
+ expression = expression.replace( |
+ /\\\\|(\\b)/g, |
+ function (match, wordBorder, index, all) { |
+ if (wordBorder) |
+ { |
+ /* Handle \b in leading groups properly */ |
+ if (index > afterFirstGroup) |
+ { |
+ return "(?!" + wordEscape + ")"; |
+ } |
+ |
+ return "(?:^|[^" + wordEscape + "])"; |
+ } |
+ |
+ return match; |
+ }); |
+ } |
+ |
+ /* Support for Unicode character property classes (PCRE-compliant) */ |
+ expression = expression.replace(rxEscapes, fEscapeMapper); |
+ |
+ var rx = new RegExp(expression, sFlags); |
+ |
+ /* Augmented properties */ |
+ rx.pattern = pattern; |
+ rx._patternGroups = patternGroups; |
+ rx.groups = groups; |
+ rx.names = names; |
+ rx.flags = flags; |
+ rx.dotAll = !!originalDotAll; |
+ rx.extended = !!originalExtended; |
+ rx.unicodeMode = unicodeMode; |
+ |
+ rx._oldExec = rx.exec; |
+ rx.exec = jsx_regexp_RegExp.exec; |
+ |
+ return rx; |
+ } |
+ |
+ return jsx_regexp_RegExp; |
+ }()), |
+ { |
+ ucdScriptPath: "/scripts/UnicodeData.js", |
+ ucdTextPath: "/scripts/UnicodeData.txt", |
+ |
+ /** |
+ * Determines if an object has been constructed using this constructor |
+ * @memberOf jsx.regexp.RegExp |
+ */ |
+ isInstance: function (rx) { |
+ return !!rx.pattern; |
+ }, |
+ |
+ /** |
+ * @function |
+ */ |
+ exec: (function () { |
+ var rx2; |
+ |
+ /** |
+ * @param {string} s |
+ * @param {jsx.regexp.RegExp} rx |
+ * @return {Object|null} |
+ * @see RegExp.prototype.exec() |
+ */ |
+ function _exec (s, rx) |
+ { |
+ /* NOTE: Use passed expression only when called statically */ |
+ if (_getClass(this) == "RegExp") |
+ { |
+ rx = this; |
+ } |
+ |
+ rx._realExec = (rx._oldExec || rx.exec); |
+ |
+ var matches = rx._realExec(s); |
+ |
+ if (matches && _RegExp2.isInstance(rx)) |
+ { |
+ matches.groups = _getDataObject(); |
+ |
+ if (rx.unicodeMode && !rx2) |
+ { |
+ rx2 = new _RegExp2("^\\W+", "u"); |
+ } |
+ |
+ for (var i = 0, len = matches.length; i < len; ++i) |
+ { |
+ /* Trim leading \b matches */ |
+ var patternGroup = rx._patternGroups[i]; |
+ if (rx.unicodeMode |
+ && patternGroup |
+ && patternGroup.match( |
+ /^(\((\?P?(<([^>]+)>|'([^']+)'))?)*\\b/)) |
+ { |
+ matches[i] = matches[i].replace(rx2, ""); |
+ } |
+ |
+ matches.groups[rx.groups[i] || i] = matches[i]; |
+ } |
+ } |
+ |
+ return matches; |
+ } |
+ |
+ return _exec; |
+ }()), |
+ |
+ definePropertyClasses: function (o) { |
+ for (var keys = _jsx_object.getKeys(o), i = 0, len = keys.length; |
+ i < len; ++i) |
+ { |
+ var p = keys[i]; |
+ this.propertyClasses[p] = o[p]; |
+ } |
+ }, |
+ |
+ deletePropertyClass: function (p) { |
+ return (delete this.propertyClasses[p]); |
+ } |
+ } |
+ ); |
+ |
+ return { |
+ /** |
+ * @version |
+ * @memberOf jsx.regexp |
+ */ |
+ version: "0.1.$Revision$", |
+ copyright: "Copyright \xA9 2005-2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/", |
+ |
+ /** |
+ * Exception thrown if a character property class is referenced, |
+ * but the Unicode Character Database (UCD) cannot be loaded |
+ * |
+ * @constructor |
+ * @param {String} sUCDScript |
+ * The script that contains the UCD in the specified form |
+ * @param {String} sHTTPScript |
+ * The script that contains the HTTP request type to load the UCD |
+ * dynamically |
+ * @type jsx.regexp.UCDLoadError |
+ * @extends jsx#Error |
+ */ |
+ UCDLoadError: |
+ function jsx_regexp_UCDLoadError (sUCDScript, sHTTPScript) { |
+ jsx_regexp_UCDLoadError._super.call(this, |
+ "Unable to load the Unicode Character Database." |
+ + " Please include " + sUCDScript + " or " + sHTTPScript + "."); |
+ }.extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.regexp.UCDLoadError#prototype |
+ */ |
+ name: "jsx.regexp.UCDLoadError" |
+ }), |
+ |
+ /** |
+ * Exception thrown if a referred character property class |
+ * cannot be resolved |
+ * |
+ * @type jsx.regexp.UndefinedPropertyClassError |
+ * @extends jsx.object#PropertyError |
+ */ |
+ UndefinedPropertyClassError: |
+ /** |
+ * @constructor |
+ * @param sMsg |
+ */ |
+ function jsx_regexp_UndefinedPropertyClassError (sMsg) { |
+ jsx_regexp_UndefinedPropertyClassError._super.call(this); |
+ this.message = "Undefined property class" |
+ + (arguments.length > 0 ? (": " + sMsg) : ""); |
+ }.extend(jsx.object.PropertyError, { |
+ /** |
+ * @memberOf jsx.regexp.UndefinedPropertyClassError#prototype |
+ */ |
+ name: "jsx.regexp.UndefinedPropertyClassError" |
+ }), |
+ |
+ /** |
+ * Exception thrown if a property class value can not be expanded |
+ * |
+ * @constructor |
+ * @param sMsg |
+ * @extends jsx.object#ObjectError |
+ */ |
+ InvalidPropertyClassError: |
+ function jsx_regexp_InvalidPropertyClassError (sMsg) { |
+ jsx_regexp_InvalidPropertyClassError._super.call(this); |
+ this.message = "Invalid property class value" |
+ + (arguments.length > 0 ? (": " + sMsg) : ""); |
+ }.extend(jsx.object.ObjectError, { |
+ name: "jsx.regexp.InvalidPropertyClassError" |
+ }), |
+ |
+ RegExp: _RegExp2, |
+ |
+ /** |
+ * @type jsx.regexp.String |
+ * @memberOf __jsx.regexp.String |
+ * @constructor |
+ */ |
+ String: function jsx_regexp_String (s) { |
+ if (this.constructor != jsx_regexp_String) |
+ { |
+ jsx.throwThis("jsx.Error", "Must be called as constructor", |
+ "jsx.regexp.String"); |
+ } |
+ |
+ this.value = String(s); |
+ }.extend(String, (function () { |
+ var _replace = String.prototype.replace; |
+ var _getDataObject = jsx.object.getDataObject; |
+ |
+ function _toString () |
+ { |
+ return this.value; |
+ } |
+ |
+ return { |
+ /** |
+ * Matches a string against a regular expression, using special features |
+ * of jsx.regexp.RegExp if possible |
+ * |
+ * @function |
+ */ |
+ match: (function () { |
+ var rxLeadingGroups, rxNonWordChars; |
+ |
+ /** |
+ * @param {RegExp|jsx.regexp.RegExp} rx |
+ * @return {Array} |
+ * The Array as if returned by String.prototype.match.call(this, rx) |
+ */ |
+ return function (rx) { |
+ var matches = this.value.match(rx); |
+ |
+ if (matches && _RegExp2.isInstance(rx)) |
+ { |
+ if (rx.unicodeMode) |
+ { |
+ if (!rxNonWordChars) |
+ { |
+ rxLeadingGroups = /^(\((\?P?(<([^>]+)>|'([^']+)'))?)*\\b/; |
+ rxNonWordChars = new _RegExp2("^\\W+", "u"); |
+ } |
+ } |
+ |
+ if (rx.global) |
+ { |
+ /* Trim \b matches */ |
+ if (rx.unicodeMode) |
+ { |
+ var patternGroup = rx._patternGroups[0]; |
+ if (patternGroup.match(rxLeadingGroups)) |
+ { |
+ for (var i = 0, len = matches.length; i < len; ++i) |
+ { |
+ matches[i] = matches[i].replace(rxNonWordChars, ""); |
+ } |
+ } |
+ } |
+ } |
+ else |
+ { |
+ matches.groups = _getDataObject(); |
+ |
+ for (var i = 0, len = matches.length; i < len; ++i) |
+ { |
+ if (rx.unicodeMode) |
+ { |
+ patternGroup = rx._patternGroups[i]; |
+ if (patternGroup.match(rxLeadingGroups)) |
+ { |
+ matches[i] = matches[i].replace(rxNonWordChars, ""); |
+ } |
+ } |
+ |
+ matches.groups[rx.groups[i] || i] = matches[i]; |
+ } |
+ } |
+ } |
+ |
+ return matches; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Replaces matches in a string, and returns the new string. |
+ * |
+ * Different to {@link String.prototype.replace()}, |
+ * this methods also allows you to refer to backreferences |
+ * by name. In a String-like object, you may use |
+ * <code>"${name}"</code>, and in a replacement function |
+ * you may use <code>this.groups["name"]</code>. |
+ * |
+ * NOTE: Because of the latter the replacement function |
+ * is called as a method of this object, not of |
+ * the Global Object anymore. The <code>groups</code> |
+ * property of this object is retained; that is, the last |
+ * arguments to this method can be found in there. |
+ * (Arguments and return value of the replacement function |
+ * still work as specified in ECMAScript.) |
+ * |
+ * @memberOf jsx.regexp.String.prototype |
+ * @param {jsx.regexp.RegExp|RegExp|String} expression |
+ * @param {String|Function} replacement |
+ * @return {string} |
+ * @see String.prototype.replace |
+ */ |
+ replace: function (expression, replacement) { |
+ if (jsx.regexp.RegExp.isInstance(expression)) |
+ { |
+ var groups = expression.groups; |
+ var len = groups.length; |
+ |
+ if ((typeof replacement) == "function") |
+ { |
+ var me = this; |
+ return _replace.call(this, expression, function () { |
+ me.groups = _getDataObject(); |
+ for (var i = 1; i <= len; ++i) |
+ { |
+ me.groups[groups[i]] = arguments[i]; |
+ } |
+ |
+ return replacement.apply(me, arguments); |
+ }); |
+ } |
+ |
+ for (var i = 1; i <= len; ++i) |
+ { |
+ /* replace "${name}" with "${index}" */ |
+ replacement = _replace.call( |
+ replacement, |
+ new RegExp("\\$\\{" + groups[i] + "\\}", "g"), |
+ "$" + i); |
+ } |
+ } |
+ |
+ return _replace.call(this, expression, replacement); |
+ }, |
+ |
+ /** |
+ * Returns this object's encapsulated string value |
+ */ |
+ toString: _toString, |
+ valueOf: _toString |
+ }; |
+ }())), |
+ |
+ /** |
+ * Concatenates strings or regular expressions ({@link RegExp}) |
+ * and returns the resulting <code>RegExp</code>. |
+ * |
+ * If flags are used with either <code>RegExp</code> argument, the |
+ * resulting <code>RegExp</code> has all of those flags set. |
+ * |
+ * @author Copyright (c) 2005 |
+ * Thomas Lahn <regexp.js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/regexp.js |
+ * @params |
+ * Expressions to be concatenated. If a not a {@link RegExp}, |
+ * the argument is converted to {@link String}; this allows |
+ * for expressions to be grouped and used in alternation. |
+ * For characters to lose their special meaning, escape them in |
+ * a <code>RegExp</code> argument or escape them twice in |
+ * a converted (e.g. string) argument. |
+ * |
+ * If this function is called as method of a <code>RegExp</code>, |
+ * the expressions given are concatenated beginning with the |
+ * <code>this</code> value. |
+ * @return {RegExp} |
+ * The resulting <code>RegExp</code> |
+ */ |
+ concat: function () { |
+ var aParts = []; |
+ |
+ var oFlags = { |
+ flags: { |
+ g: "global", |
+ i: "ignoreCase", |
+ m: "multiline", |
+ y: "sticky" |
+ }, |
+ g: false, |
+ i: false, |
+ m: false, |
+ y: false, |
+ |
+ setFromTemplate: function (template) { |
+ var flags = this.flags; |
+ for (var flag in flags) |
+ { |
+ if (!this[flag] && template[flags[flag]]) |
+ { |
+ this[flag] = true; |
+ } |
+ } |
+ }, |
+ |
+ toString: |
+ /** |
+ * @return {string} |
+ */ |
+ function () { |
+ var a = []; |
+ |
+ for (var flag in this.flags) |
+ { |
+ if (this[flag] === true) |
+ { |
+ a.push(flag); |
+ } |
+ } |
+ |
+ return a.join(""); |
+ } |
+ }; |
+ |
+ var regexp2str = jsx.regexp.toString2; |
+ |
+ if (_getClass(this) == "RegExp") |
+ { |
+ aParts.push(regexp2str(this)); |
+ oFlags.setFromTemplate(this); |
+ } |
+ |
+ for (var i = 0, iArgnum = arguments.length; i < iArgnum; i++) |
+ { |
+ var a = arguments[i]; |
+ if (_getClass(a) == "RegExp") |
+ { |
+ aParts.push(regexp2str(a)); |
+ oFlags.setFromTemplate(a); |
+ } |
+ else |
+ { |
+ aParts.push(String(a)); |
+ } |
+ } |
+ |
+ return new RegExp(aParts.join(""), oFlags.toString()); |
+ }, |
+ |
+ /** |
+ * Returns a {@link RegExp} that is an intersection of two |
+ * regular expressions. |
+ * |
+ * @param pattern2 |
+ * @param pattern1 |
+ * @return {RegExp} |
+ * A regular expression which matches the strings that both |
+ * <var>pattern1</var> (or this object) and <var>pattern2</var> |
+ * would match. |
+ */ |
+ intersect: function (pattern2, pattern1) { |
+ if (!pattern1 || _getClass(pattern1) != "RegExp") |
+ { |
+ if (_getClass(this) == "RegExp") |
+ { |
+ pattern1 = this; |
+ } |
+ else |
+ { |
+ return null; |
+ } |
+ } |
+ |
+ /* Rule out invalid values */ |
+ if (!pattern2 || _getClass(pattern2) != "RegExp") |
+ { |
+ return null; |
+ } |
+ |
+ var |
+ s = pattern1.source.replace(/^\(?([^)]*)\)?$/, "$1"), |
+ s2 = pattern2.source.replace(/^\(?([^)]*)\)?$/, "$1"); |
+ |
+ /* Register all parts within alternation of this pattern */ |
+ var |
+ a = s.split("|"), |
+ o = {}; |
+ for (var i = 0, len = a.length; i < len; i++) |
+ { |
+ o[a[i]] = true; |
+ } |
+ |
+ /* Register all parts within alternation of pattern2 */ |
+ var |
+ a2 = s2.split("|"), |
+ o2 = {}; |
+ for (i = 0, len = a2.length; i < len; i++) |
+ { |
+ o2[a2[i]] = true; |
+ } |
+ |
+ /* Compose the new alternation out of common parts */ |
+ var hOP = ( |
+ function () { |
+ if (typeof Object.prototype.hasOwnProperty == "function") |
+ { |
+ return function (o, p) { |
+ return o.hasOwnProperty(p); |
+ }; |
+ } |
+ |
+ /* suffices *here* */ |
+ return function (o, p) { |
+ return typeof o[p] != "undefined" |
+ && typeof o.constructor.prototype[p] == "undefined"; |
+ }; |
+ } |
+ )(); |
+ |
+ a = []; |
+ for (var p in o) |
+ { |
+ if (hOP(o2, p)) |
+ { |
+ a.push(p); |
+ } |
+ } |
+ |
+ return new RegExp("(" + a.join("|") + ")"); |
+ }, |
+ |
+ /** |
+ * Returns an escaped version of the string that can be passed |
+ * as an argument to {@link Global#RegExp(string, string) RegExp()} |
+ * to match that string. |
+ * |
+ * @param {string} s |
+ * @return {string} |
+ */ |
+ escape: function (s) { |
+ if (arguments.length == 0 && this.constructor == String) |
+ { |
+ s = this; |
+ } |
+ |
+ return s.replace(/[\]\\^$*+?.(){}|[]/g, "\\$&"); |
+ }, |
+ |
+ /** |
+ * Returns the string representation of a {@link RegExp} |
+ * without delimiters. |
+ * |
+ * @param {RegExp} rx |
+ * @return {string} |
+ * The string representation of <var>rx</var> |
+ */ |
+ toString2: function (rx) { |
+ // return rx.toString().replace(/[^\/]*\/((\\\/|[^\/])+)\/[^\/]*/, "$1"); |
+ if (!rx) |
+ { |
+ rx = this; |
+ } |
+ |
+ return rx.source || rx.toString().replace(/[^\/]*\/(.+)\/[^\/]*/, "$1"); |
+ } |
+ }; |
+}()); |
+ |
+// jsx.regexp.docURL = jsx.regexp.path + "regexp.htm"; |
+ |
+var regexp2str = jsx.regexp.toString2; |
+RegExp.prototype.toString2 = regexp2str; |
+ |
+var regexp_concat = jsx.regexp.concat; |
+RegExp.prototype.concat = regexp_concat; |
+ |
+var regexp_intersect = jsx.regexp.intersect; |
+RegExp.prototype.intersect = regexp_intersect; |
+ |
+var strRegExpEscape = jsx.regexp.escape; |
+String.prototype.regExpEscape = strRegExpEscape; |
/live/regexp.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/dom.js |
=================================================================== |
--- live/dom.js (nonexistent) |
+++ live/dom.js (revision 520) |
@@ -0,0 +1,1847 @@ |
+/** |
+ * @fileOverview <title>PointedEars' DOM Library</title> |
+ * @file $Id$ |
+ * |
+ * @partof PointedEars JavaScript Extensions (JSX) |
+ * @requires object.js |
+ * @recommends types.js, dom/xpath.js |
+ * @source Based upon |
+ * @link{ |
+ * selfhtml#dhtml/beispiele/dhtml_bibliothek.htm, |
+ * dhtml.js from SELFHTML (8.0) |
+ * } |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2001 SELFHTML e.V. <stefan.muenz@selfhtml.org> et al., |
+ * 2002-2013 Thomas Lahn <js@PointedEars.de>, |
+ * 2004 Ulrich Kritzner <droeppez@web.de> (loadScript), |
+ * 2005 MozillaZine Knowledge Base contributors (DOM XPath): |
+ * Eric H. Jung <grimholtz@yahoo.com> et al. |
+ * |
+ * This program is free software; you can redistribute it and/or |
+ * modify it under the terms of the GNU General Public License |
+ * as published by the Free Software Foundation; either version 2 |
+ * of the License, or (at your option) any later version. |
+ * |
+ * This program is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License (GPL) for more details. |
+ * |
+ * You should have received a copy of the GNU GPL along with this |
+ * program (COPYING file); if not, go to [1] or write to the Free |
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
+ * MA 02111-1307, USA. |
+ * |
+ * [1] <http://www.gnu.org/licenses/licenses.html#GPL> |
+ * |
+ * @section Enhancements |
+ * |
+ * - New features: |
+ * + getElem("tagname", "$TAGNAME") : HTML(Options)Collection |
+ * + setAttr(...) |
+ * + radioChkdVal(...) |
+ * + removeOptions(...) |
+ * + addOption(...) |
+ * + selectRadioBtn(...) |
+ * + disableElementGroup(...) |
+ * |
+ * - Pretty printing and detailed documentation |
+ * - Removed unnecessary variables and DHTML_init() function |
+ * - Use references and initialization wherever possible |
+ * - Introducing @link{#DHTML()} prototype and @link{#dhtml} |
+ * instance, using boolean properties instead of numeric |
+ * global variables. |
+ * Note: This enhancement makes this library incompatible to |
+ * the source code it is based upon and to previous versions |
+ * of this library (if you used the global variables that |
+ * were defined herein, otherwise _not_.) |
+ * |
+ * - Argument renaming and checking |
+ * - if...else if...else --> switch...case...default |
+ * - Calling exception function on invalid arguments |
+ * - Do not try to access undefined properties (prevents |
+ * warnings), use the "typeof" operator instead |
+ * |
+ * @section Bugfixes |
+ * |
+ * - When the result is an object, return `null' instead of |
+ * `void (0)'. Otherwise return a null-string (`""') or |
+ * true/false on success/failure, so that each function |
+ * has a defined return value. |
+ */ |
+/* |
+ * Refer the repository changelog at http://PointedEars.de/websvn/ |
+ * for changes to the last version. |
+ * |
+ * This document contains JavaScriptDoc. |
+ * See http://pointedears.de/scripts/JSdoc/ for details. |
+ */ |
+ |
+/** |
+ * @deprecated |
+ */ |
+function DHTML() |
+{ |
+ this.allowExceptionMsg = true; |
+} |
+ |
+/* a more compatible approach */ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+jsx.dom = { |
+ version: "$Id$", |
+ //var dhtmlDocURL = dhtmlPath + "dhtml.htm"; |
+ copyright: "Copyright \xA9 2002-2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/" |
+}; |
+jsx.dom.URI = jsx.dom.path + "dom.js"; |
+//this.docURI = this.path + "dhtml.htm"; |
+ |
+if (typeof document != "undefined") |
+{ |
+ jsx.dom.hasDocumentAll = false; |
+ |
+ jsx.dom.getElementById = jsx.dom.getElemById = jsx.dom.getEBI = jsx.dom.gEBI = ( |
+ function () { |
+ if (typeof document == "undefined") |
+ { |
+ return function () { |
+ return null; |
+ }; |
+ } |
+ |
+ var jsx_object = jsx.object; |
+ |
+ if (jsx_object.isMethod(document, "getElementById")) |
+ { |
+ /** |
+ * @param {string} sId |
+ * @return {Element|Null} |
+ * Reference to an {@link Element} object representing |
+ * the element with the given ID, <code>null</code> or |
+ * <code>undefined</code> if there is no such element. |
+ * The return value varies among DOM implementations |
+ * if there is more than one matching element (invalid markup). |
+ */ |
+ return function (sId) { |
+ /* wrapper method required to avoid "invalid op. on prototype" exception */ |
+ return document.getElementById(sId); |
+ }; |
+ } |
+ |
+ if ((jsx.dom.hasDocumentAll = jsx_object.isMethod(document, "all"))) |
+ { |
+ return function (sId) { |
+ return document.all(sId); |
+ }; |
+ } |
+ |
+ return function (sId) { |
+ return document[sId]; |
+ }; |
+ } |
+ )(); |
+ |
+ jsx.dom.hasDocumentLayers = false; |
+ |
+ jsx.dom.getElementsByName = jsx.dom.getElemByName = jsx.dom.gEBN = ( |
+ function () { |
+ function dummy() |
+ { |
+ return null; |
+ } |
+ |
+ if (typeof document == "undefined") |
+ { |
+ return dummy; |
+ } |
+ |
+ if (jsx.object.isMethod(document, "getElementsByName")) |
+ { |
+ /* W3C DOM Level 2 HTML */ |
+ /** |
+ * @param {string} sName |
+ * @param {number} index (optional) |
+ * @return Element|Layer|Null|Undefined |
+ */ |
+ return function (sName, index) { |
+ var result = document.getElementsByName(sName); |
+ if (result && !isNaN(index) && index > -1) |
+ { |
+ result = result[index]; |
+ } |
+ |
+ return result; |
+ }; |
+ } |
+ else if (jsx.dom.hasDocumentAll) |
+ { |
+ /* IE4 DOM */ |
+ return function (sName, index) { |
+ var result = document.all(sName); |
+ if (result && !isNaN(index) && index > -1) |
+ { |
+ result = result[index]; |
+ } |
+ |
+ return result; |
+ }; |
+ } |
+ else if ((jsx.dom.hasDocumentLayers = (typeof document.layers == "object"))) |
+ { |
+ /* NN4 DOM */ |
+ return function (sName, index) { |
+ var result = document.layers[sName]; |
+ if (result && !isNaN(index) && index > -1) |
+ { |
+ result = result[index]; |
+ } |
+ |
+ return result; |
+ }; |
+ } |
+ |
+ return dummy; |
+ }() |
+ ); |
+ |
+ jsx.dom.hasGetElementsByTagName = false; |
+ |
+ jsx.dom.getElementsByTagName = jsx.dom.getElemByTagName = jsx.dom.gEBTN = ( |
+ function () { |
+ var jsx_object = jsx.object; |
+ |
+ if (jsx_object.isNativeMethod(jsx, "xpath", "evaluate")) |
+ { |
+ /* W3C DOM Level 3 XPath */ |
+ /** |
+ * @param {string} sTagName |
+ * @param {number} index (optional) |
+ * @param {Element} oContextNode (optional) |
+ * @return {Array|Element} |
+ * An <code>Array</code> of references to objects representing |
+ * matching elements, or one reference to such an object if |
+ * <var>index</var> was provided. |
+ */ |
+ return function (sTagName, index, oContextNode) { |
+ if (!sTagName) |
+ { |
+ sTagName = '*'; |
+ } |
+ |
+ if (arguments.length > 2 && typeof index != "number") |
+ { |
+ var tmp = oContextNode; |
+ oContextNode = index; |
+ index = tmp; |
+ } |
+ |
+ var result = jsx.dom.xpath.evaluate('.//' + sTagName, oContextNode || null, |
+ null, XPathResult.ORDERED_NODE_ITERATOR_TYPE); |
+ |
+ if (result) |
+ { |
+ if (!isNaN(index) && index > -1) |
+ { |
+ result = result[index]; |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+ } |
+ |
+ if ((jsx.dom.hasGetElementsByTagName = |
+ (typeof document != "undefined" |
+ && jsx_object.isMethod(document, "getElementsByTagName")))) |
+ { |
+ /* W3C DOM Level 2 Core */ |
+ /** |
+ * @param {string} sTagName |
+ * @param {number} index (optional) |
+ * @param {Element} oContextNode (optional) |
+ * @return {NodeList|Element|Null} |
+ * An <code>NodeList</code> of references to objects representing |
+ * matching elements, or one reference to such an object if |
+ * <var>index</var> was provided; <code>null</code> if there |
+ * is no matching element. |
+ */ |
+ return function (sTagName, index, oContextNode) { |
+ if (!sTagName) |
+ { |
+ sTagName = '*'; |
+ } |
+ |
+ if (arguments.length > 2 && typeof index != "number") |
+ { |
+ var tmp = oContextNode; |
+ oContextNode = index; |
+ index = tmp; |
+ } |
+ |
+ if (!oContextNode) |
+ { |
+ oContextNode = document; |
+ } |
+ |
+ if (!jsx_object.isMethod(oContextNode, "getElementsByTagName")) |
+ { |
+ return null; |
+ } |
+ |
+ var result = oContextNode.getElementsByTagName(sTagName); |
+ if (result && !isNaN(index) && index > -1) |
+ { |
+ result = result[index]; |
+ } |
+ |
+ return result; |
+ }; |
+ } |
+ |
+ if (jsx.dom.hasDocumentAll && isMethod(document.all, "tags")) |
+ { |
+ /** |
+ * @param {string} sTagName |
+ * @param {number} index (optional) |
+ * @param {Element} oContextNode (optional) |
+ * @return {NodeList|Element|Undefined} |
+ * An <code>NodeList</code> of references to objects representing |
+ * matching elements, or one reference to such an object if |
+ * <var>index</var> was provided; <code>null</code> |
+ * if there is no matching element. |
+ */ |
+ return function (sTagName, index, oContextNode) { |
+ if (arguments.length > 2 && typeof index != "number") |
+ { |
+ var tmp = oContextNode; |
+ oContextNode = index; |
+ index = tmp; |
+ } |
+ |
+ if (!oContextNode) |
+ { |
+ oContextNode = document; |
+ } |
+ |
+ if (!jsx.object.isMethod(oContextNode, "all", "tags")) |
+ { |
+ return null; |
+ } |
+ |
+ var result = oContextNode.all.tags(sTagName); |
+ if (result && !isNaN(index) && index > -1) |
+ { |
+ result = result[index]; |
+ } |
+ |
+ return result; |
+ }; |
+ } |
+ |
+ return function () { |
+ return null; |
+ }; |
+ }() |
+ ); |
+ |
+ jsx.dom.getElementByIndex = jsx.dom.getElemByIndex = jsx.dom.gEBIdx = (function () { |
+ function dummy() |
+ { |
+ return null; |
+ } |
+ |
+ if (typeof document == "undefined") |
+ { |
+ return dummy; |
+ } |
+ |
+ if (jsx.dom.hasGetElementsByTagName) |
+ { |
+ /** |
+ * @param {number} index |
+ * @return Element|Null|Undefined |
+ */ |
+ return function (index) { |
+ return (result = document.getElementsByTagName('*')[index]); |
+ }; |
+ } |
+ |
+ if (jsx.dom.hasDocumentAll) |
+ { |
+ /** |
+ * @param {number} index |
+ * @return Element|Null|Undefined |
+ */ |
+ return function (index) { |
+ return document.all(index); |
+ }; |
+ } |
+ |
+ if (jsx.dom.hasDocumentLayers) |
+ { |
+ /** |
+ * @param {number} index |
+ * @return Layer|Null|Undefined |
+ */ |
+ return function (index) { |
+ return document.layers[index]; |
+ }; |
+ } |
+ |
+ return dummy; |
+ }()); |
+} |
+ |
+/* |
+ * Apart from isNS4DOM, none of these object-inference properties is used |
+ * anymore; they are still here for backwards compatibility only |
+ */ |
+//this.isW3CDOM = jsx.object.isMethod(document, "getElementById"); |
+//this.isOpera = typeof window.opera != "undefined"; |
+jsx.dom.isNS4DOM = typeof document.layers != "undefined"; |
+//this.isIE4DOM = typeof document.all == "object" && !this.isOpera; |
+//this.supported = this.isW3CDOM || this.isNS4DOM || this.isOpera |
+// || this.isIE4DOM; |
+ |
+/* DOM preselection (why?) */ |
+//this.W3CDOM = 3; |
+//this.IE4DOM = 2; |
+//this.NS4DOM = 1; |
+//this.DOM = this.supported |
+// && (this.isW3CDOM && this.W3CDOM) |
+// || (this.isIE4DOM && this.IE4DOM) |
+// || (this.isNS4DOM && this.NS4DOM); |
+ |
+/* allows for de.pointedears.jsx.dom */ |
+if (typeof de == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var de = {}; |
+} |
+ |
+if (typeof de.pointedears == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ de.pointedears = {}; |
+} |
+ |
+if (typeof de.pointedears.jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ de.pointedears.jsx = jsx; |
+} |
+ |
+/** |
+ * Shows an exception alert and allows for |
+ * displaying a stack trace. |
+ * |
+ * @param {string} sMessage = "" |
+ * Error message to be displayed. |
+ * @return {boolean} |
+ * Always <code>false</code> |
+ */ |
+jsx.dom.DHTMLException = function (sMessage) { |
+ /* Prevent exceptions from "bubbling" on (keyboard) event */ |
+ if (!jsx.dom.allowExceptionMsg) |
+ { |
+ return false; |
+ } |
+ |
+ jsx.dom.allowExceptionMsg = false; |
+ |
+ jsx.setErrorHandler(); |
+ var stackTrace = |
+ jsx.object.isMethod(_global, "Error") && (new Error()).stack || ""; |
+ |
+ jsx.clearErrorHandler(); |
+ |
+ alert( |
+ "dhtml.js " |
+ + jsx.dom.version + "\n" |
+ + jsx.dom.copyright + " " |
+ + jsx.dom.author + " <" + jsx.dom.email + ">\n" |
+ + 'The latest version can be obtained from:\n' |
+ + "<" + jsx.dom.URI + ">\n\n" |
+ + sMessage + "\n" |
+ + "__________________________________________________________\n" |
+ + "Stack trace" |
+ + (stackTrace |
+ ? ":\n\n" + stackTrace |
+ : " not available in this DOM.")); |
+ |
+ jsx.dom.allowExceptionMsg = true; |
+ return false; |
+}; |
+ |
+jsx.dom.write = function (s) { |
+ var result = jsx.tryThis( |
+ function () { |
+ document.write(s); |
+ |
+ return true; |
+ }, |
+ function () { |
+ return jsx.tryThis( |
+ function () { |
+ var result2 = false; |
+ var ns = document.documentElement.getAttribute("xmlns"); |
+ var scripts; |
+ if (ns) |
+ { |
+ scripts = document.getElementsByTagNameNS(ns, "script"); |
+ } |
+ else |
+ { |
+ scripts = document.getElementsByTagName("script"); |
+ } |
+ |
+ if (scripts && scripts.length > 0) |
+ { |
+ var lastScript = scripts[scripts.length - 1]; |
+ result2 = !!lastScript.parentNode.insertBefore( |
+ document.createTextNode(s), lastScript.nextSibling); |
+ } |
+ |
+ return result2; |
+ }); |
+ }); |
+ |
+ /* fix circular reference */ |
+ s = null; |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Retrieves an HTMLElement object or a collection of such |
+ * objects that match certain criteria. |
+ * |
+ * @author |
+ * (C) 2003, 2004 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {string} sType |
+ * Defines the type of <code>sValue</code>. Valid values are |
+ * "id", "name", "tagname", "index" and "classname". The |
+ * argument is case-insensitive. |
+ * @param {string} sValue (optional) |
+ * Case-sensitive ID, name or tag name of object (collection). |
+ * @param {number} index (optional) |
+ * Numeric index of an element of the selected |
+ * collection. For IDs must be unique throughout a document, |
+ * this argument is ignored if <code>sType</code> is "id". |
+ * @return {HTMLElement|NodeList|Null} |
+ * A reference to an object if <code>sType</code> is "id", or |
+ * if it is "name" or "tagname" and <code>index</code> is |
+ * specified; otherwise a collection of objects matching the |
+ * specified criteria; <code>null</code> if no matching object |
+ * exists. |
+ */ |
+jsx.dom.getElem = function (sType, sValue, index) { |
+ /** |
+ * Calls DHTMLException() for an invalid type. |
+ */ |
+ function invalidType() |
+ { |
+ jsx.dom.DHTMLException( |
+ 'getElem: Invalid type "' + sType + '"\n' |
+ + 'Must be one of "id", "name", "tagname", "index" or "classname"' |
+ + ' (case-insensitive).'); |
+ } |
+ |
+ if (!sType || typeof sType != "string" || !sType.toLowerCase) |
+ { |
+ jsx.dom.DHTMLException( |
+ "getElem: Invalid type: " + sType + "\n" |
+ + "Must be string."); |
+ } |
+ |
+ if (!sValue || typeof sValue != "string") |
+ { |
+ jsx.dom.DHTMLException( |
+ "getElem: Invalid value: " + sValue + "\n" |
+ + "Must be string."); |
+ } |
+ |
+ var o = null; |
+ |
+ switch ((sType = sType.toLowerCase())) |
+ { |
+ case 'id': |
+ case 'index': |
+ case 'classname': |
+ o = jsx.dom["getElemBy" + { |
+ id: "Id", |
+ index: "Index", |
+ classname: "ClassName" |
+ }[sType]](sValue); |
+ break; |
+ |
+ case 'name': |
+ case 'tagname': |
+ o = jsx.dom["getElemBy" + { |
+ name: "Name", |
+ tagname: "TagName" |
+ }[sType]](sValue, index); |
+ break; |
+ |
+ default: |
+ invalidType(); |
+ } |
+ |
+ return o; |
+}; |
+ |
+/** |
+ * Retrieves the content of an HTMLElement object. |
+ * |
+ * @author (C) 2003-2005, 2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLElement} oElement |
+ * Element which content is to be retrieved. |
+ * @param {boolean} bHTML (optional) |
+ * If <code>true</code>, returns the HTML content instead of |
+ * the text content in case the latter cannot be retrieved. |
+ * @return {string} |
+ * A string with the content of the element; a null-string if |
+ * no such element object exists or if the DOM does not provide |
+ * retrieval of the element's content. |
+ */ |
+jsx.dom.getCont = function (oElement, bHTML) { |
+ var sResult = ""; |
+ |
+ if (oElement) |
+ { |
+ /* W3C DOM Level 2 Core */ |
+ if (typeof oElement.firstChild != "undefined") |
+ { |
+ if (typeof oElement.firstChild.nodeType != "undefined" |
+ && oElement.firstChild.nodeType == |
+ /* W3C-DOM 2 o.firstChild.TEXT_NODE constant is N/A in IE and O7 */ |
+ ((typeof oElement.firstChild.TEXT_NODE != "undefined" |
+ && oElement.firstChild.TEXT_NODE) |
+ || 3)) |
+ { |
+ sResult = oElement.firstChild.nodeValue; |
+ } |
+ } |
+ else |
+ { |
+ if (typeof oElement.innerText != "undefined") |
+ { |
+ sResult = oElement.innerText; |
+ } |
+ |
+ if ((bHTML || typeof oElement.innerText == "undefined") |
+ && typeof oElement.innerHTML != "undefined") |
+ { |
+ sResult = oElement.innerHTML; |
+ } |
+ } |
+ } |
+ |
+ return sResult; |
+}; |
+ |
+/** |
+ * Specifies the content of an HTMLElement object. |
+ * |
+ * @author (C) 2003-2005, 2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLElement} oElement |
+ * Element which content is to be changed. |
+ * @param {string} sNodeValue |
+ * New content of the element. |
+ * @return {boolean} |
+ * <code>true</code> if successful, <code>false</code> |
+ * otherwise. |
+ */ |
+jsx.dom.setCont = function (oElement, sNodeValue) { |
+ if (oElement) |
+ { |
+ /* DOM Level 2 Core */ |
+ if (typeof oElement.firstChild != "undefined") |
+ { |
+ oElement.firstChild.nodeValue = sNodeValue; |
+ return true; |
+ } |
+ else if (typeof oElement.nodeValue != "undefined") |
+ { |
+ oElement.nodeValue = sNodeValue; |
+ return true; |
+ } |
+ |
+ /* IE4 DOM */ |
+ else if (typeof oElement.innerText != "undefined") |
+ { |
+ oElement.innerText = sNodeValue; |
+ return true; |
+ } |
+ |
+ /* NS4 DOM */ |
+ else if (jsx.dom.isNS4DOM |
+ && oElement.document |
+ && oElement.document.open |
+ && oElement.document.write |
+ && oElement.document.close) |
+ { |
+ oElement.document.open(); |
+ oElement.document.write(sNodeValue); |
+ oElement.document.close(); |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+}; |
+ |
+/** |
+ * Returns the text content of a document node. |
+ * |
+ * @author |
+ * (C) 2005 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {Node} oNode |
+ * Reference to the document node. |
+ * @param {boolean} bGetHTML (optional) |
+ * If <code>true</code>, returns the HTML content instead of |
+ * the text content in case the latter cannot be retrieved. |
+ * @return {string} |
+ * The text content of @{(oNode)}. |
+ * @todo Duplicate of getCont(..., false)? |
+ */ |
+jsx.dom.getContent = function (oNode, bGetHTML) { |
+ var text = ""; |
+ |
+ if (oNode) |
+ { |
+ /* W3C DOM Level 3 */ |
+ if (typeof oNode.textContent != "undefined") |
+ { |
+ text = oNode.textContent; |
+ } |
+ |
+ /* W3C DOM Level 2 */ |
+ else if (oNode.childNodes && oNode.childNodes.length) |
+ { |
+ for (var i = oNode.childNodes.length; i--;) |
+ { |
+ var o = oNode.childNodes[i]; |
+ if (o.nodeType == ((typeof Node != "undefined" && Node.TEXT_NODE) |
+ || 3)) |
+ { |
+ text = o.nodeValue + text; |
+ } |
+ else |
+ { |
+ text = arguments.callee(o) + text; |
+ } |
+ } |
+ } |
+ |
+ /* proprietary: IE4+ */ |
+ else if (typeof oNode.innerText != "undefined") |
+ { |
+ text = oNode.innerText; |
+ } |
+ } |
+ |
+ return text; |
+}; |
+ |
+/** |
+ * Sets the text content of a document node. |
+ * |
+ * @author |
+ * (C) 2005 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {Node} oNode |
+ * Reference to the document node. |
+ * @param {string} sContent |
+ * @return {boolean} |
+ * <code>true</code> if successful, <code<false</code> otherwise. |
+ */ |
+jsx.dom.setTextContent = function (oNode, sContent) { |
+ var result = false; |
+ |
+ if (oNode) |
+ { |
+ /* W3C DOM Level 3 */ |
+ if (typeof oNode.textContent != "undefined") |
+ { |
+ oNode.textContent = sContent; |
+ result = (oNode.textContent == sContent); |
+ } |
+ |
+ /* W3C DOM Level 2 */ |
+ else if (oNode.removeChild && oNode.firstChild) |
+ { |
+ while (oNode.firstChild) |
+ { |
+ oNode.removeChild(oNode.firstChild); |
+ } |
+ |
+ result = !!oNode.appendChild(document.createTextNode(sContent)); |
+ } |
+ |
+ /* proprietary: IE4+ */ |
+ else if (typeof oNode.innerText != "undefined") |
+ { |
+ oNode.innerText = sContent; |
+ result = (oNode.innerText == sContent); |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Retrieves the value of an attribute of an HTMLElement object |
+ * that matches certain criteria. |
+ * |
+ * @author |
+ * (C) 2003, 2008, 2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param {HTMLElement} oElement |
+ * @param {string} sAttrName |
+ * Name of the attribute from which the value |
+ * should be retrieved. |
+ * @return {any} |
+ * The value of the object if <code>sType</code> is "id", |
+ * or if it is "name" or "tagname" and <code>index</code> |
+ * is specified; |
+ * a null-string if no matching object exists or if the DOM |
+ * does not provide retrieval of the attribute's values. |
+ */ |
+jsx.dom.getAttr = function (oElement, sAttrName) { |
+ var result = ""; |
+ |
+ if (oElement) |
+ { |
+ if (jsx.object.isMethod(oElement, "getAttribute")) |
+ { |
+ result = oElement.getAttribute(sAttrName); |
+ } |
+ else if (jsx.dom.isNS4DOM) |
+ { |
+ result = oElement[sAttrName]; |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+jsx.dom.attrMap = { |
+ alink: "aLink", |
+ accesskey: "accessKey", |
+ bgcolor: "bgColor", |
+ cellpadding: "cellPadding", |
+ cellspacing: "cellSpacing", |
+ "char": "ch", |
+ charoff: "chOff", |
+ "class": "className", |
+ codebase: "codeBase", |
+ codetype: "codeType", |
+ colspan: "colSpan", |
+ datetime: "dateTime", |
+ frameborder: "frameBorder", |
+ "for": "htmlFor", |
+ ismap: "isMap", |
+ longdesc: "longDesc", |
+ maxlength: "maxLength", |
+ marginheight: "marginHeight", |
+ marginwidth: "marginWidth", |
+ nohref: "noHref", |
+ noresize: "noResize", |
+ noshade: "noShade", |
+ nowrap: "noWrap", |
+ readonly: "readOnly", |
+ rowspan: "rowSpan", |
+ tabindex: "tabIndex", |
+ usemap: "useMap", |
+ valuetype: "valueType", |
+ vlink: "vLink" |
+}; |
+ |
+ |
+/** |
+ * Sets the value of an attribute of an HTMLElement object. |
+ * |
+ * @author |
+ * (C) 2003, 2006 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @param o |
+ * @param {string} sAttrName |
+ * Name of the attribute for which the value should be set. |
+ * Attribute names for which an ECMAScript language binding |
+ * is defined in W3C DOM Level 2 HTML, are automatically |
+ * mapped to the corresponding element object property. |
+ * All attribute names are automatically mapped to their |
+ * camelCased equivalent. |
+ * |
+ * Semicolon-separated style property declarations (in |
+ * form of colon-separated name-value pairs each) of a |
+ * <code>style</code> attribute value are mapped to the |
+ * corresponding properties of the object referenced by |
+ * the <code>style</code> property of the element object. |
+ * Declarations are evaluated from left to right, where |
+ * property values complement or replace the previously |
+ * defined ones. |
+ * @param attrValue |
+ * Value of the attribute to be set. The value is |
+ * converted to number if it can be interpreted as such. |
+ * @return {any} |
+ * The value of the attribute of the element object; |
+ * a null-string if no matching object exists or if the DOM |
+ * does not provide retrieval of the attribute's values. |
+ */ |
+jsx.dom.setAttr = function (o, sAttrName, attrValue) { |
+ var result = ""; |
+ |
+ if (o && sAttrName) |
+ { |
+ var attrMap = jsx.dom.attrMap; |
+ |
+ /* camel-case specific attribute names */ |
+ if (typeof attrMap[sAttrName] != "undefined") |
+ { |
+ sAttrName = attrMap[sAttrName]; |
+ } |
+ |
+ var strToValue = |
+ /** |
+ * Converts a string, if possible, to a number |
+ * |
+ * @param {string} s |
+ * @return {string|number} |
+ * The converted value |
+ */ |
+ function (s) { |
+ s = s.replace(/^["']|["']$/g, ""); |
+ return isNaN(s) ? s : +s; |
+ }; |
+ |
+ if (typeof attrValue != "undefined") |
+ { |
+ attrValue = strToValue(attrValue); |
+ if (sAttrName == "style" && typeof attrValue == "string") |
+ { |
+ var styleProps = attrValue.split(/\s*;\s*/); |
+ for (var i = 0, len = styleProps.length; i < len; i++) |
+ { |
+ var |
+ stylePair = styleProps[i].split(/\s*:\s*/), |
+ stylePropName = stylePair[0].toLowerCase(); |
+ |
+ jsx.dom.css.setStyleProperty(o, stylePropName, |
+ strToValue(stylePair[1])); |
+ result = jsx.dom.css.getStyleProperty(o, stylePropName); |
+ } |
+ } |
+ else |
+ { |
+ result = o[sAttrName] = attrValue; |
+ } |
+ } |
+ else if (!(o[sAttrName] = true)) |
+ { |
+ result = o[sAttrName] = sAttrName; |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Creates an element of the type specified, using the |
+ * <code>document.createElement()</code> method if supported. |
+ * This method works with MSIE, too, for if JScript is used, |
+ * it is tried to use the start tag as is instead of passing |
+ * only the element type, and adding properties later. |
+ * |
+ * @function |
+ * @author |
+ * © 2004, 2006, 2010 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @see <a href="dom2-core#ID-2141741547">DOM Level 2 Core: Document::createElement()</a> |
+ * @see <a href="msdn#workshop/author/dhtml/reference/methods/createelement.asp">MSDN Library: createElement()</a> |
+ */ |
+jsx.dom.createElement = (function () { |
+ var _setAttr = jsx.dom.setAttr; |
+ |
+ /** |
+ * @param {string} sTag |
+ * Start tag or element type of the element to be created. |
+ * Passing a start tag even works if the UA is not MSIE, |
+ * as attributes and values given are parsed from left to |
+ * right into the corresponding element object properties. |
+ * @return {Element} |
+ * A reference to a new <code>Element</code> object with the |
+ * <code>nodeName</code> property set to <code>sTagName</code>, |
+ * and the <code>localName</code>, <code>prefix</code>, |
+ * and <code>namespaceURI</code> properties set to |
+ * <code>null</code>. |
+ */ |
+ return function (sTag) { |
+ var o = null; |
+ |
+ if (sTag |
+ && typeof document != "undefined" |
+ && jsx.object.isMethod(document, "createElement")) |
+ { |
+ /*@cc_on @*/ |
+ /*@if (@_jscript) |
+ o = document.createElement(sTag); |
+ @end @*/ |
+ |
+ if (!o) |
+ { |
+ /* NOTE: Uses RegExp() to work around misconfigured PHP (short_open_tag=1) */ |
+ var aTagComponents = sTag.replace(new RegExp("^<\?\\s*|\\s*>?$", "g"), "") |
+ .replace(/\s*=\s*/g, "=").split(/\s+/); |
+ o = document.createElement(aTagComponents[0]); |
+ if (o) |
+ { |
+ aTagComponents.shift(); |
+ var attrs = aTagComponents.join(" "); |
+ var m; |
+ while ((m = /([^\s=]+)\s*(=\s*(\S+)\s*)?/g.exec(attrs))) |
+ { |
+ _setAttr(o, m[1].toLowerCase(), m[3]); |
+ } |
+ } |
+ } |
+ } |
+ |
+ return o; |
+ }; |
+}()); |
+ |
+/** |
+ * Creates a node or several nodes from an object. |
+ * |
+ * Creates a DOM {@link Node} or an {@link Array} of several |
+ * <code>Node</code>s from the argument, depending on its type: |
+ * <table> |
+ * <thead> |
+ * <tr> |
+ * <th>Type</th> |
+ * <th>Return value</th> |
+ * </tr> |
+ * </thead> |
+ * <tbody> |
+ * <tr> |
+ * <th>{@link String}</th> |
+ * <td>{@link Text}</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>Array</code> of {@link Object} or <code>String</code></th> |
+ * <td><code>Array</code> of <code>Node</code>. The input |
+ * <code>Array</code>'s elements are processed recursively.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code>Object</code></th> |
+ * <td>{@link Element}. The following of the input |
+ * <code>Object</code>'s properties are considered: |
+ * <table> |
+ * <thead> |
+ * <th>Property</th> |
+ * <th>Expected type</th> |
+ * <th>Meaning</th> |
+ * </thead> |
+ * <tbody> |
+ * <tr> |
+ * <th><code><var>elementType</var></code> or |
+ * <code><var>type</var></code></th> |
+ * <td><code>String</code></td> |
+ * <td>Element type (case-sensitivity depends on |
+ * the document type)</td> |
+ * </tr> |
+ * <!--<tr> |
+ * <th><code><var>attributes</var></code></th> |
+ * <td><code>Object</code></td> |
+ * <td>Attributes of the element. All attributes |
+ * are created in the <code>null</code> namespace.</td> |
+ * </tr>--> |
+ * <tr> |
+ * <th><code><var>properties</var></code></th> |
+ * <td><code>Object</code></td> |
+ * <td>Properties of the element object. The property |
+ * <code>style</code> is handled specially: Its |
+ * value should be an <code>Object</code> whose |
+ * property names are <code>style</code> property |
+ * names and whose property values are the |
+ * corresponding values, as supported by |
+ * {@link jsx.dom.css#setStyleProperty()}. |
+ * <!--Note that some properties may overwrite |
+ * attributes.--> |
+ * </tr> |
+ * <tr> |
+ * <th><code><var>childNodes</var></code></th> |
+ * <td><code>Array</code> of <code>Object</code> |
+ * or <code>String</code></td> |
+ * <td>Child nodes of the element node. |
+ * The elements of the <code>Array</code> |
+ * are processed recursively. |
+ * </tr> |
+ * </tbody> |
+ * </table></td> |
+ * </tr> |
+ * </tbody> |
+ * </table> |
+ * @function |
+ */ |
+jsx.dom.createElementFromObj = jsx.dom.createNodeFromObj = |
+jsx.dom.createNodesFromObj = (function () { |
+ var _getKeys = jsx.object.getKeys; |
+ var _isArray = jsx.object.isArray; |
+ var _isHostMethod = jsx.object.isHostMethod; |
+ |
+ /** |
+ * @param {Array|Object} data |
+ * @return TextNode|Array[Node]|Element |
+ */ |
+ return function (data) { |
+ if (typeof data.valueOf() == "string") |
+ { |
+ return document.createTextNode(data); |
+ } |
+ |
+ /* Support ES5 strict mode */ |
+ var me = jsx.dom.createNodeFromObj; |
+ |
+ /* If input is an Array, output is an Array of Nodes */ |
+ if (_isArray(data)) |
+ { |
+ var a = []; |
+ |
+ for (var i = 0, len = data.length; i < len; ++i) |
+ { |
+ a[i] = me(data[i]); |
+ } |
+ |
+ return a; |
+ } |
+ |
+ var el = document.createElement(data.elementType || data.type); |
+ if (!el) |
+ { |
+ return null; |
+ } |
+ |
+// var attributes = data.attributes; |
+// if (attributes && _isHostMethod(el, "setAttribute")) |
+// { |
+// var keys = _getKeys(attributes); |
+// |
+// for (var i = 0, len = keys.length; i < len; ++i) |
+// { |
+// var attrName = keys[i]; |
+// el.setAttribute(attrName, attributes[attrName]); |
+// } |
+// } |
+ |
+ var properties = data.properties; |
+ if (properties) |
+ { |
+ keys = _getKeys(properties); |
+ |
+ for (i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var propName = keys[i]; |
+ |
+ if (propName == "style") |
+ { |
+ var style = properties[propName]; |
+ var _setStyleProperty = jsx.object.getFeature(jsx.dom, "css", "setStyleProperty"); |
+ if (typeof style != "string" && typeof _setStyleProperty != "function") |
+ { |
+ jsx.warn("JSX:dom/css.js:jsx.dom.css.setStyleProperty()" |
+ + " is recommended for setting style object properties"); |
+ el[propName] = style; |
+ } |
+ else |
+ { |
+ var styleKeys = _getKeys(style); |
+ for (var i = 0, len = styleKeys.length; i < len; ++i) |
+ { |
+ var stylePropName = styleKeys[i]; |
+ _setStyleProperty(el, stylePropName, style[stylePropName]); |
+ } |
+ } |
+ } |
+ else |
+ { |
+ el[propName] = properties[propName]; |
+ } |
+ } |
+ } |
+ |
+ var nodes = data.childNodes; |
+ for (var i = 0, len = nodes && nodes.length; i < len; ++i) |
+ { |
+ el.appendChild(me(nodes[i])); |
+ } |
+ |
+ return el; |
+ }; |
+}()); |
+ |
+/** |
+ * Removes all occurences of a class name from the |
+ * <code>class</code> attribute of an {@link Element}. |
+ * |
+ * For compatibility, if possible removes the <code>class</code> |
+ * attribute if it is empty afterwards. |
+ * |
+ * @param {Element} o |
+ * @param {string} sClassName |
+ * @return {boolean} |
+ * <code>true</code> if successful, <code>false</code> otherwise. |
+ */ |
+jsx.dom.removeClassName = function (o, sClassName) { |
+ var sRxClassName = "(^\\s*|\\s+)" + sClassName + "(\\s*$|(\\s))"; |
+ |
+ if (jsx.object.isHostMethod(o, "classList", "remove")) |
+ { |
+ /* W3C DOM Level 4 */ |
+ o.classList.remove(sClassName); |
+ } |
+ else |
+ { |
+ var curClassNames = o.className; |
+ var newClassNames = curClassNames.replace( |
+ new RegExp(sRxClassName, "g"), |
+ "$3"); |
+ o.className = newClassNames; |
+ |
+ if (!newClassNames && jsx.object.isMethod(o, "removeAttribute")) |
+ { |
+ o.removeAttribute("class"); |
+ } |
+ } |
+ |
+ return !((new RegExp(sRxClassName)).test(o.className)); |
+}; |
+ |
+jsx.dom.addClassName = (function () { |
+ var _removeClassName = jsx.dom.removeClassName; |
+ |
+ /** |
+ * Adds a class name to the <code>class</code> attribute of |
+ * an {@link Element}. |
+ * |
+ * @param {Element} o |
+ * @param {string} sClassName |
+ * @param {boolean} bRemove |
+ * If the class name is already there, and this argument is |
+ * <code>true</code>, all instances of it are removed first. |
+ * If the class is there and this argument is <code>false</code>, |
+ * exit without changing anything. The default is <code>false</code>, |
+ * which is more efficient. |
+ * @return {boolean} |
+ * <code>true</code> if the class name could be added successfully or |
+ * was already there, <code>false</code> otherwise. |
+ */ |
+ function _addClassName (o, sClassName, bRemove) |
+ { |
+ var rx = new RegExp("(^\\s*|\\s+)" + sClassName + "(\\s*$|\\s)"); |
+ |
+ if (bRemove) |
+ { |
+ _removeClassName(o, sClassName); |
+ } |
+ else if (rx.test(o.className)) |
+ { |
+ return true; |
+ } |
+ |
+ if (sClassName) |
+ { |
+ if (jsx.object.isHostMethod(o, "classList", "add")) |
+ { |
+ /* W3C DOM Level 4 */ |
+ o.classList.add(sClassName); |
+ } |
+ else |
+ { |
+ if (/\S/.test(o.className)) |
+ { |
+ o.className += " " + sClassName; |
+ } |
+ else |
+ { |
+ o.className = sClassName; |
+ } |
+ } |
+ |
+ return rx.test(o.className); |
+ } |
+ } |
+ |
+ return _addClassName; |
+}()); |
+ |
+/** |
+ * Appends several child nodes to a parent node in the specified order. |
+ * |
+ * @param {Node} parentNode |
+ * @param {NodeList|Array} childNodes |
+ * @return {boolean} |
+ * <code>true</code> on success, <code>false</code> otherwise. |
+ */ |
+jsx.dom.appendChildren = function (parentNode, childNodes) { |
+ if (parentNode) |
+ { |
+ for (var i = 0, len = childNodes.length; i < len; ++i) |
+ { |
+ parentNode.appendChild(childNodes[i]); |
+ } |
+ |
+ return true; |
+ } |
+ |
+ return false; |
+}; |
+ |
+/** |
+ * Removes several child nodes of a parent node in reverse order. |
+ * |
+ * @param {Node} parentNode |
+ * @param {NodeList|Array} childNodes (optional) |
+ * The child nodes to be deleted. If not provided, |
+ * all child nodes of <var>parentNode</var> are deleted, |
+ * the table-safe equivalent to |
+ * <code><var>parentNode</var>.innerHTML = "";</code> |
+ * @return {boolean} |
+ * <code>true</code> on success, <code>false</code> otherwise. |
+ */ |
+jsx.dom.removeChildren = function (parentNode, childNodes) { |
+ if (parentNode) |
+ { |
+ if (arguments.length < 2) |
+ { |
+ childNodes = parentNode.childNodes; |
+ } |
+ |
+ for (var i = childNodes.length; i--;) |
+ { |
+ parentNode.removeChild(childNodes[i]); |
+ } |
+ |
+ return true; |
+ } |
+ |
+ return false; |
+}; |
+ |
+jsx.dom.html2nodes = function (sHTML) { |
+ var m, |
+ rx = /(<([^\s>]+)(\s+[^>]*)?>)|([^<]+)/g, |
+ node = document.createElement("html"); |
+ |
+ while ((m = rx.exec(sHTML))) |
+ { |
+ if (m[1]) |
+ { |
+ if (m[2].charAt(0) !== "/") |
+ { |
+ var newNode = document.createElement(m[2]); |
+ node.appendChild(newNode); |
+ node = newNode; |
+ } |
+ else |
+ { |
+ node = node.parentNode; |
+ } |
+ } |
+ else |
+ { |
+ node.appendChild(document.createTextNode(m[4])); |
+ } |
+ } |
+ |
+ return node; |
+}; |
+ |
+jsx.dom.HTMLSerializer = ( |
+ function () { |
+ |
+ } |
+).extend("Object", { |
+ serializeToString: (function () { |
+ var elemInfo = { |
+ 'a': { |
+ attribs: ["name", "href", "hreflang", "type", "rel", "rev", "charset", |
+ "id", "class", "lang", "title", "style", "shape", "coords", |
+ "onfocus", "onblur", "onclick", "ondblclick", "onmousedown", |
+ "onmouseup", "onmouseover", "onmousemove", "onmouseout", |
+ "onkeypress", "onkeydown", "onkeyup", |
+ "target", "tabindex", "accesskey"] |
+ }, |
+ 'area': { |
+ empty: false |
+ }, |
+ 'base': { |
+ empty: false |
+ }, |
+ 'basefont': { |
+ empty: false |
+ }, |
+ 'br': { |
+ empty: false |
+ }, |
+ 'col': { |
+ empty: false |
+ }, |
+ 'frame': { |
+ empty: false |
+ }, |
+ 'hr': { |
+ empty: false |
+ }, |
+ 'img': { |
+ empty: true |
+ }, |
+ 'input': { |
+ empty: false |
+ }, |
+ 'isindex': { |
+ empty: false |
+ }, |
+ 'link': { |
+ empty: false |
+ }, |
+ 'meta': { |
+ empty: false |
+ }, |
+ 'param': { |
+ empty: true |
+ } |
+ }; |
+ |
+ return function (oNode, bIncludeProprietary) { |
+ var me = arguments.callee; |
+ |
+ if (oNode.tagName) |
+ { |
+ var |
+ t = oNode.tagName.toLowerCase(), |
+ startTag = "<" + t, |
+ content = [], |
+ endTag = ""; |
+ |
+ for (var i = 0, c = oNode.childNodes, len = c && c.length; i < len; i++) |
+ { |
+ content.push(me(oNode, bIncludeProprietary)); |
+ } |
+ |
+ if (typeof elemInfo[t] != "undefined" && !elemInfo[t].empty) |
+ { |
+ endTag = "</" + t + ">"; |
+ } |
+ |
+ return startTag + content.join("") + endTag; |
+ } |
+ |
+ return oNode.textContent; |
+ }; |
+ })() |
+}); |
+ |
+/** |
+ * Returns the first child node of another node. |
+ * <p> |
+ * NOTE: This method was written to support the MSHTML 4 DOM as well as |
+ * newer DOMs. It is <em>NOT</em> intended to work around the issue that |
+ * MSHTML removes white-space text nodes from the document tree, while |
+ * standards-compliant DOMs do not. In particular, it does <em>NOT</em> |
+ * return the first child <em>element</em> node, and return values do vary |
+ * across DOMs. |
+ * </p> |
+ * @param {Node} oNode |
+ * @return {Node} The first child node of another node. |
+ */ |
+jsx.dom.getFirstChild = function (oNode) { |
+ var result = null; |
+ |
+ if (oNode) |
+ { |
+ if (oNode.firstChild) |
+ { |
+ result = oNode.firstChild; |
+ } |
+ else if (oNode.document && oNode.document.all) |
+ { |
+ result = oNode.document.all(0); |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Returns the parent node of a node |
+ * |
+ * @param {Node} oNode |
+ * @return {Node} The parent node of <var>oNode</var> |
+ */ |
+jsx.dom.getParent = function (oNode) { |
+ var result = null; |
+ |
+ if (oNode) |
+ { |
+ if (oNode.parentNode) |
+ { |
+ result = oNode.parentNode; |
+ } |
+ else if (oNode.parentElement) |
+ { |
+ result = oNode.parentElement; |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Loads a script resource asynchonrously by appending |
+ * a <code>script</code> element to the current (X)HTML document. |
+ * |
+ * A <code>script</code> element is being created and appended as |
+ * child to the <code>body</code> element or the <code>head</code> |
+ * element of the document, whichever is available first. In a |
+ * frameset document, <code>document.body</code> refers to the |
+ * topmost <code>frameset</code> element object; in that case, |
+ * it is attempted to find a <code>body</code> element by other |
+ * means. If that fails, it means that there either is no such |
+ * element, or that the element object is inaccessible because |
+ * it is disabled by the frameset. In that case the |
+ * <code>script</code> element is appended to the <code>head</code> |
+ * element instead. |
+ * |
+ * Note that previous versions of this method appended to the |
+ * <code>head</code> element only. However, this limited its use |
+ * to scripts that did not modify the body content. You may still |
+ * not load such scripts with this method if the document has |
+ * been loaded and the script resource uses |
+ * <code>document.write()</code>. This method intentionally does |
+ * not use <code>document.write()</code> to avoid the possibility |
+ * that a loaded document could be overwritten. |
+ * |
+ * NOTE: Tested successfully with MSIE and Mozilla/5.0; however, |
+ * do not rely on that the script was included, but <em>test</em> |
+ * for it. |
+ * |
+ * @author |
+ * (C) 2004-2009, 2013 Thomas Lahn <dhtml.js@PointedEars.de>, |
+ * 2004 Ulrich Kritzner <droeppez@web.de> |
+ * |
+ * @requires jsx.object#isMethod() |
+ * @param {string} sURI |
+ * URI of the script resource to be loaded. |
+ * @param {string} sType = "text/javascript" |
+ * MIME type of the script to be loaded. Used as value of the |
+ * <code>type</code> attribute. |
+ * @param {string} sLanguage (optional) |
+ * Value of the <code>language</code> attribute (deprecated in |
+ * HTML 4.01 and XHTML 1.0, absent from XHTML 1.1 and later |
+ * versions) to specify the version of the script language. |
+ * Unused by default. |
+ * @param {boolean} bReload = false |
+ * If <code>true</code>Force an already loaded script to be reloaded, |
+ * i.e. another <code>script</code> element with the same URI |
+ * in the <code>src</code> attribute to be added; |
+ * if <code>false</code> (default), the attempt to load a script |
+ * that has already been loaded fails silently. |
+ * @return {boolean} |
+ * <code>false</code> if the script could not be loaded, |
+ * <code>true</code> otherwise. |
+ */ |
+jsx.dom.loadScript = |
+ function jsx_dom_loadScript (sURI, sType, sLanguage, bReload) { |
+ var |
+ jsx_object = jsx.object, |
+ result = false; |
+ |
+ if (typeof jsx_dom_loadScript.registry != "undefined" |
+ && jsx_object.getProperty(jsx_dom_loadScript.registry, sURI, false) |
+ && !bReload) |
+ { |
+ return true; |
+ } |
+ |
+ var parent = document.body; |
+ if (!parent || parent.tagName.toLowerCase() === "frameset") |
+ { |
+ parent = jsx.dom.getElemByTagName("script", 0); |
+ if (!parent) |
+ { |
+ parent = document.head || jsx.dom.getElemByTagName("head", 0); |
+ } |
+ |
+ if (!parent) |
+ { |
+ return false; |
+ } |
+ } |
+ |
+ if (!jsx_object.isHostMethod(document, "createElement")) |
+ { |
+ return false; |
+ } |
+ |
+ var oScript = document.createElement("script"); |
+ if (!oScript) |
+ { |
+ return false; |
+ } |
+ |
+ /* no exception handling for backwards compatibility reasons */ |
+ if (typeof oScript.src != "undefined") |
+ { |
+ oScript.src = sURI; |
+ } |
+ |
+ if (typeof oScript.type != "undefined") |
+ { |
+ oScript.type = sType || "text/javascript"; |
+ } |
+ |
+ if (sLanguage) |
+ { |
+ oScript.language = sLanguage; |
+ } |
+ |
+ if (typeof oScript.defer != "undefined") |
+ { |
+ oScript.defer = true; |
+ } |
+ |
+ if (jsx_object.isHostMethod(parent, "appendChild")) |
+ { |
+ parent.appendChild(oScript); |
+ result = ( |
+ typeof parent.lastChild != "undefined" |
+ && parent.lastChild == oScript); |
+ } |
+ else if (jsx_object.isHostMethod(parent, "insertAdjacentElement")) |
+ { |
+ parent.insertAdjacentElement("beforeEnd", oScript); |
+ result = true; |
+ } |
+ |
+ if (result) |
+ { |
+ if (typeof jsx_dom_loadScript.registry == "undefined") |
+ { |
+ jsx_dom_loadScript.registry = {}; |
+ } |
+ |
+ jsx_dom_loadScript.registry[sURI] = true; |
+ } |
+ |
+ return result; |
+ }; |
+ |
+/** |
+ * Retrieves descendant focusable elements in order of their |
+ * "tabindex" attribute. |
+ * |
+ * @author |
+ * (C) 2004 Thomas Lahn <dhtml.js@PointedEars.de> |
+ * @requires |
+ * http://pointedears.de/scripts/collection.js |
+ * @param {Document|Element} o (optional) |
+ * Reference to a {@link dom2-core#Document Document} or |
+ * {@link dom2-core#Element Element} object from which to retrieve |
+ * descendant elements. If omitted or evaluated to |
+ * <code>false</code>, it is tried to use the calling object. |
+ * @return {Collection} |
+ * A reference to a {@link #Collection} object containing |
+ * the descendant elements of <var>o</var> or the calling |
+ * {@link dom2-core#Document Document}/{@link dom2-core#Element Element} |
+ * object in "tabindex" order: Elements with "tabindex" > 0 come first, |
+ * followed by elements with "tabindex" == 0 or where either |
+ * "tabindex" is not set or not applicable. Note: An element |
+ * with a "tabindex" of 1 will will be the first element |
+ * in the resulting collection but for design reasons will |
+ * have an index of 0 (but since the Collection prototype |
+ * provides an iterator, this does not need to disturb you). |
+ * Additional note: Unlike specified, disabled elements will |
+ * participate in the tabbing order (so they can be enabled |
+ * later without this method to be re-called.) |
+ */ |
+jsx.dom.getElementsByTabIndex = function (o) { |
+ var aIndexedElements = new Array(); |
+ var aUnindexedElements = new Array(); |
+ |
+ /* makes the method applicable to Document and Element objects */ |
+ if (!o |
+ && typeof this.constructor != "undefined" |
+ && /Document|Element/.test(this.constructor)) |
+ { |
+ o = this; |
+ } |
+ |
+ if (jsx.object.isMethod(o, "getElementsByTagName")) |
+ { |
+ var es = o.getElementsByTagName("*"); |
+ |
+ if (es && typeof es.length != "undefined") |
+ { |
+ var l = es.length; |
+ |
+ for (var i = 0, e; i < l; i++) |
+ { |
+ e = es[i]; |
+ |
+ if (typeof e.tabIndex != "undefined") |
+ { |
+ /* !null && !0 */ |
+ if (e.tabIndex) |
+ { |
+ /* |
+ * tabindex="1" --> index == 0; use e.tabIndex |
+ * and a "zero dummy" if you do not like this |
+ */ |
+ aIndexedElements[e.tabIndex - 1] = e; |
+ } |
+ else |
+ { |
+ aUnindexedElements[aUnindexedElements.length] = e; |
+ } |
+ } |
+ } |
+ } |
+ } |
+ |
+ return new Collection(aIndexedElements.concat(aUnindexedElements)); |
+}; |
+ |
+if (typeof jsx.types != "undefined" |
+ && jsx.types.isFeature("HTMLDocument", "prototype") |
+ && !jsx.object.isMethod(HTMLDocument.prototype, "getElementsByTabIndex")) |
+{ |
+ HTMLDocument.prototype.getElementsByTabIndex = jsx.dom.getElementsByTabIndex; |
+} |
+ |
+if (typeof jsx.types != "undefined" |
+ && jsx.types.isFeature("HTMLElement", "prototype") |
+ && !jsx.object.isMethod(HTMLElement.prototype, "getElementsByTabIndex")) |
+{ |
+ HTMLElement.prototype.getElementsByTabIndex = jsx.dom.getElementsByTabIndex; |
+} |
+ |
+jsx.dom.isDescendantOfOrSelf = function (node, ancestor) { |
+ if (arguments.length < 2) |
+ { |
+ jsx.throwThis(null, "No ancestor provided"); |
+ } |
+ |
+ do |
+ { |
+ if (node == ancestor) |
+ { |
+ return true; |
+ } |
+ } |
+ while ((node = node.parentNode)); |
+ |
+ return false; |
+}; |
+ |
+/** |
+ * Applies hyphenation to the context node. |
+ * |
+ * Improves the readability of text by inserting soft hyphens |
+ * in text nodes as specified by the {@link jsx.string#hyphenation} |
+ * dictionary. |
+ * |
+ * @function |
+ * @requires jsx.string.hyphenation#hyphenate() |
+ */ |
+jsx.dom.hyphenate = (function () { |
+ var _isArray = jsx.object.isArray; |
+ var _hyphenation, _hyphenate, _me; |
+ |
+ /** |
+ * @param {Array} contextNodes = document |
+ * Hyphenation is applied to these {@link Node}s and their |
+ * descendant text nodes. The default is the <code>Document</code> |
+ * node referred by the <code>document</code> property of the |
+ * next fitting object in the scope chain (usually the Global |
+ * Object). |
+ * @param {boolean} hyphenateAll |
+ * If a true-value, |
+ */ |
+ return function (contextNodes, hyphenateAll) { |
+ /* imports */ |
+ if (!_hyphenate) |
+ { |
+ _hyphenation = jsx.string.hyphenation; |
+ _hyphenate = _hyphenation.hyphenate; |
+ } |
+ |
+ _hyphenation.setHyphenateAll(hyphenateAll); |
+ |
+ if (!_me) |
+ { |
+ _me = jsx.dom.hyphenate; |
+ } |
+ |
+ /* optional arguments */ |
+ if (typeof contextNodes == "undefined") |
+ { |
+ contextNodes = document; |
+ } |
+ |
+ if (!contextNodes) |
+ { |
+ return jsx.warn("jsx.dom.hyphenate: Invalid context node: " + contextNodes); |
+ } |
+ |
+ if (!_isArray(contextNodes)) |
+ { |
+ contextNodes = [contextNodes]; |
+ } |
+ |
+ for (var i = 0, len = contextNodes.length; i < len; ++i) |
+ { |
+ var contextNode = contextNodes[i]; |
+ |
+ if (!contextNode) |
+ { |
+ jsx.warn("jsx.dom.hyphenate: Invalid context node " + (i + 1) + ": " + contextNode); |
+ continue; |
+ } |
+ |
+ for (var j = 0, |
+ nodes = contextNode.childNodes, |
+ len2 = nodes && nodes.length; |
+ j < len2; |
+ ++j) |
+ { |
+ var node = nodes[j]; |
+ |
+ if (node.nodeType == 1) |
+ { |
+ _me(node, hyphenateAll); |
+ } |
+ else |
+ { |
+ node.nodeValue = _hyphenate(node.nodeValue, hyphenateAll); |
+ } |
+ } |
+ } |
+ }; |
+}()); |
\ No newline at end of file |
/live/dom.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/python.js |
=================================================================== |
--- live/python.js (nonexistent) |
+++ live/python.js (revision 520) |
@@ -0,0 +1,423 @@ |
+"use strict"; |
+/** |
+ * @fileOverview <title>Pythonic functions for ECMAScript implementations</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * |
+ * @author (C) 2011-2013 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+/* for JSDT only */ |
+if (typeof jsx.python == "undefined") |
+{ |
+ /** @namespace */ |
+ jsx.python = {}; |
+} |
+ |
+/** |
+ * @type jsx.python |
+ * @memberOf __jsx.python |
+ * @namespace |
+ */ |
+jsx.python = (/** @constructor */ function () { |
+ var _jsx_object = jsx.object; |
+ var _getKeys = _jsx_object.getKeys; |
+ var _isArray = _jsx_object.isArray; |
+ var _isObject = _jsx_object.isObject; |
+ |
+ return { |
+ /** |
+ * @version |
+ * @memberOf jsx.python |
+ */ |
+ version: "$Revision$ ($Date$)", |
+ copyright: "Copyright \xA9 2011-2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://PointedEars.de/scripts/", |
+ |
+ /** |
+ * Returns a reference to an <code>Array</code> whose |
+ * items are the numbers from <var>start</var> inclusive to |
+ * <var>end</var> exclusive using step width <var>step</var> |
+ * (may be negative). |
+ * |
+ * @param {number} start |
+ * @param {number} end |
+ * @param {number} step = 1 |
+ * @return {Array} |
+ */ |
+ range: function (start, end, step) { |
+ var result = []; |
+ |
+ if (!step) |
+ { |
+ if (step === 0) |
+ { |
+ jsx.throwThis( |
+ "jsx.InvalidArgumentError", "step argument must not be zero"); |
+ } |
+ |
+ step = 1; |
+ } |
+ |
+ end = +end; |
+ step = +step; |
+ |
+ for (var i = +start; (step > 0) ? (i < end) : (i > end); i += step) |
+ { |
+ result.push(i); |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Returns a reference to an Array instance containing |
+ * the names of the enumerable properties of another object; |
+ * returns a reference to a passed Array. |
+ * |
+ * @function |
+ */ |
+ list: jsx.object.extend(( |
+ /** |
+ * @factory |
+ */ |
+ function () { |
+ var _hasOwnProperty = _jsx_object._hasOwnProperty; |
+ |
+ /** |
+ * @param {Object} iterable |
+ * @return {Array} |
+ */ |
+ return function (iterable) { |
+ var result = []; |
+ |
+ if (_isArray(iterable)) |
+ { |
+ return iterable; |
+ } |
+ |
+ for (var property in iterable) |
+ { |
+ if (_hasOwnProperty(iterable, property)) |
+ { |
+ result.push(property); |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+ }()), { |
+ /** |
+ * List comprehension. |
+ * |
+ * Returns a reference to an <code>Array</code> |
+ * instance containing the result of passing each item |
+ * of <var>list</var> to <var>mapper</var> (or <var>mapper</var> |
+ * itself if <var>mapper</var> is not a function) for which |
+ * <var>condition</var> returns a true-value (or all items |
+ * if <var>condition</var> is a <code>true-value</code> or |
+ * <code>undefined</code>, and no items if it is another |
+ * false-value). |
+ * |
+ * @memberOf jsx.python.list |
+ * @param {Function|any} mapper |
+ * @param {Object} iterable |
+ * @param {Function|boolean} condition |
+ * @return {Array} |
+ */ |
+ from: function (mapper, iterable, condition) { |
+ var result = []; |
+ |
+ var iterableIsArray = _isArray(iterable); |
+ var _range = jsx.python.range; |
+ if (iterableIsArray) |
+ { |
+ var len = iterable.length; |
+ var keys = _range(0, len); |
+ } |
+ else |
+ { |
+ keys = _isObject(iterable) && _getKeys(iterable); |
+ len = keys.length; |
+ } |
+ |
+ var hasCondition = (typeof condition == "function"); |
+ for (var i = 0; i < len; ++i) |
+ { |
+ if (iterableIsArray && !(i in iterable)) |
+ { |
+ continue; |
+ } |
+ |
+ var key = keys[i]; |
+ var item = iterable[key]; |
+ |
+ if (hasCondition) |
+ { |
+ var conditionMet = condition(item, key, iterable); |
+ } |
+ else |
+ { |
+ conditionMet = condition; |
+ } |
+ |
+ if (!hasCondition || conditionMet) |
+ { |
+ if (typeof mapper == "function") |
+ { |
+ var value = mapper(item, key, iterable); |
+ } |
+ else |
+ { |
+ value = mapper; |
+ } |
+ |
+ result.push(value); |
+ } |
+ } |
+ |
+ return result; |
+ } |
+ } |
+ ), |
+ |
+ /** |
+ * Returns a reference to an object |
+ * |
+ * @param mapping |
+ * @return {Object} |
+ */ |
+ dict: function (mapping, values) { |
+ var result = {}; |
+ |
+ if (typeof mapping == "undefined") |
+ { |
+ return result; |
+ } |
+ |
+ if (mapping.length) |
+ { |
+ if (arguments.length > 1) |
+ { |
+ for (var index in mapping) |
+ { |
+ result[mapping[index]] = values[index]; |
+ } |
+ |
+ return result; |
+ } |
+ |
+ var props = mapping[0]; |
+ var vals = mapping[1]; |
+ for (var index2 in props) |
+ { |
+ result[props[index2]] = vals[index2]; |
+ } |
+ } |
+ else |
+ { |
+ for (var name in mapping) |
+ { |
+ result[name] = mapping[name]; |
+ } |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Build an unordered collection of unique elements. |
+ * |
+ * @type jsx.python.set |
+ * @function |
+ */ |
+ set: ( |
+ /** |
+ * @constructor |
+ * @factory |
+ */ |
+ function () { |
+ var _jsx = jsx; |
+ var _jsx_object = _jsx.object; |
+ var _Map; |
+ var _getKeys = _jsx_object.getKeys; |
+ var _isMethod = _jsx_object.isMethod; |
+ |
+ /** |
+ * @param {Object} iterable |
+ * @return {Array} |
+ */ |
+ return function jsx_python_set (iterable) { |
+ if (!(this instanceof jsx_python_set)) |
+ { |
+ return new jsx_python_set(iterable); |
+ } |
+ |
+ if (_isMethod(iterable, "slice")) |
+ { |
+ var result = iterable.slice(); |
+ } |
+ else |
+ { |
+ result = []; |
+ |
+ for (var i = 0, keys = _getKeys(iterable), len = keys.length; |
+ i < len; |
+ ++i) |
+ { |
+ result.push(iterable[keys[i]]); |
+ } |
+ } |
+ |
+ /* Prefer more efficient (best case: O(n)) Map approach if possible */ |
+ if (_Map || typeof _jsx.map != "undefined") |
+ { |
+ if (!_Map) |
+ { |
+ _Map = _jsx.map.Map; |
+ } |
+ |
+ var map = new _Map(); |
+ for (i = 0, len = result.length; i < len; ++i) |
+ { |
+ map.put(result[i], true); |
+ } |
+ |
+ result = map.keys(); |
+ } |
+ else |
+ { |
+ /* comparisons(n) = (n^2 - n)/2 ~ O(n^2) */ |
+ for (var i = 0, len = result.length; i < len; ++i) |
+ { |
+ for (var j = i + 1; j < len; ++j) |
+ { |
+ if (result[i] === result[j]) |
+ { |
+ result.splice(j, 1); |
+ --j; |
+ --len; |
+ } |
+ } |
+ } |
+ } |
+ |
+ this._elements = result; |
+ this.length = this._elements.length; |
+ }; |
+ }() |
+ ).extend(null, { |
+ /** |
+ * @memberOf jsx.python.set.prototype |
+ */ |
+ intersection: function (other) { |
+ if (!(other instanceof jsx.python.set)) |
+ { |
+ other = new jsx.python.set(other); |
+ } |
+ |
+ var elements = this._elements; |
+ elements.sort(); |
+ other.sort(); |
+ |
+ var intersection = []; |
+ |
+ /* FIXME: Identical elements need not sort to the same position */ |
+ for (var i = 0, len = elements.length; i < len; ++i) |
+ { |
+ var element = elements[i]; |
+ if (element === other[i]) |
+ { |
+ intersection.push(element); |
+ } |
+ } |
+ |
+ return new jsx.python.set(intersection); |
+ }, |
+ |
+ isDisjoint: function (other) { |
+ return (this.intersection(other).length === 0); |
+ }, |
+ |
+ toArray: function () { |
+ return this._elements; |
+ } |
+ }), |
+ |
+ /** |
+ * Return an {@link Array} of <code>Array</code>s, where each |
+ * inner array contains the i-th element from each of the |
+ * argument arrays. |
+ * The returned <code>Array</code> is truncated in length |
+ * to the length of the shortest argument array. |
+ * |
+ * @params {Array} |
+ * @return {Array} |
+ */ |
+ zip: function () { |
+ var result = []; |
+ |
+ for (var i = 0, len = arguments[0].length; i < len; ++i) |
+ { |
+ result[i] = []; |
+ |
+ for (var j = 0, len2 = arguments.length; j < len2; ++j) |
+ { |
+ if (arguments[j].length - 1 < i) |
+ { |
+ delete result[i]; |
+ break; |
+ } |
+ |
+ result[i][j] = arguments[j][i]; |
+ } |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Extends an Array with elements from another Array. |
+ * |
+ * Different from Array.prototype.concat() in that the first Array is modified. |
+ * To emphasize this, there is no explicit return value (i.e. returns |
+ * <code>undefined</code>). |
+ * |
+ * @param {Array} list1 |
+ * Array which is to be extended |
+ * @param {Array} list2 |
+ * Array which elements should be appended to <var>list1</var> |
+ */ |
+ extend: function (list1, list2) { |
+ for (var i = 0, len = list2.length; i < len; ++i) |
+ { |
+ Array.prototype.push.call(list1, list2[i]); |
+ } |
+ } |
+ }; |
+}()); |
\ No newline at end of file |
/live/python.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/map.js |
=================================================================== |
--- live/map.js (nonexistent) |
+++ live/map.js (revision 520) |
@@ -0,0 +1,723 @@ |
+"use strict"; |
+/** |
+ * @fileOverview <title>Thread-unsafe map implementations</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * |
+ * @author (C) 2009-2013 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namepspace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.map = { |
+ version: "$Id$", |
+ |
+ /** |
+ * An object that maps keys to values. |
+ * |
+ * A map cannot contain duplicate keys; each key can map to at most |
+ * one value. Keys may be object references. |
+ * |
+ * @function |
+ */ |
+ Map: jsx.object.extend(( |
+ /** |
+ * @return {jsx.map.Map} |
+ */ |
+ function () { |
+ /** |
+ * A value in the map, to distinguish it from built-in types |
+ * |
+ * @param value Value to be stored |
+ * @param key Optional key for the value. Used by {@link _Bucket}. |
+ * @private |
+ */ |
+ function _ValueContainer(value, key) |
+ { |
+ this.putValue(value, key); |
+ } |
+ |
+ /** |
+ * @param value |
+ * @return {boolean} |
+ * <code>true</code> if <var>v</var> was created using |
+ * {@link _ValueContainer}, otherwise <code>false</code> |
+ */ |
+ _ValueContainer.isInstance = function (value) { |
+ return !!value && value.constructor === this; |
+ }; |
+ |
+ _ValueContainer.prototype.putValue = function (value, key) { |
+ this._value = value; |
+ this._key = key; |
+ }; |
+ |
+ _ValueContainer.prototype.getValue = function () { |
+ return this._value; |
+ }; |
+ |
+ _ValueContainer.prototype.getKey = function () { |
+ return this._key; |
+ }; |
+ |
+ var _getDataObject = jsx.object.getDataObject; |
+ |
+ /** |
+ * In order not to overwrite or shadow built-in properties, if a key is |
+ * the name of such a property, an alias property name is used instead. |
+ * A maximum length of the alias property name is necessary to avoid |
+ * infinite iteration for finding an alias if the previously computed |
+ * alias is already used as name of a built-in property. |
+ */ |
+ var _maxAliasLength = 255; |
+ |
+ var _isObjectRef = jsx.object.isObject; |
+ |
+ /** |
+ * Returns a safe key, that is, a property name that is not yet used |
+ * by the ECMAScript implementation. |
+ * |
+ * @param unsafeKey |
+ * Potentially unsafe key, that is, a property name that may be |
+ * already used by the ECMAScript implementation. |
+ * @return {string} |
+ * @throws jsx.map#KeyError if the user-defined maximum key length |
+ * does not suffice to satisfy a safe key. |
+ * @private |
+ */ |
+ function _getSafeKey (obj, unsafeKey) |
+ { |
+ var |
+ safeKey = unsafeKey, |
+ constructor = obj.constructor, |
+ proto = (constructor ? constructor.prototype : null); |
+ |
+ if (_isObjectRef(unsafeKey)) |
+ { |
+ var _class = jsx.object.getClass(unsafeKey); |
+ var constructorName = jsx.object.getFunctionName(unsafeKey.constructor); |
+ safeKey = (_class ? "[" + _class + "]" : "") |
+ + (constructorName ? constructorName + "()" : "") |
+ + (typeof unsafeKey.nodeName != "undefined" |
+ ? unsafeKey.nodeName |
+ : "") |
+ + (typeof unsafeKey.id != "undefined" |
+ ? "#" + unsafeKey.id |
+ : "") |
+ + (typeof unsafeKey.className != "undefined" |
+ && /\S/.test(unsafeKey.className) |
+ ? "." + unsafeKey.className.replace(/\s+/, ".") |
+ : ""); |
+ } |
+ |
+ /* |
+ * Try until an unused (not inherited and not own non-_ValueContainer) property |
+ * was found or the maximum alias key length has been reached |
+ */ |
+ while (proto && (_hasOwnProperty(proto, safeKey) |
+ || (_hasOwnProperty(obj, safeKey) |
+ && !_ValueContainer.isInstance(obj[safeKey])))) |
+ { |
+ if (safeKey.length > _maxAliasLength) |
+ { |
+ jsx.throwThis("jsx.map.KeyError", unsafeKey); |
+ } |
+ |
+ safeKey += "_"; |
+ } |
+ |
+ return safeKey; |
+ } |
+ |
+ function _Bucket() |
+ { |
+ this._items = _getDataObject(); |
+ } |
+ |
+ /** |
+ * @param value |
+ * @return {boolean} |
+ * <code>true</code> if <var>v</var> was created using |
+ * {@link _Bucket}, otherwise <code>false</code> |
+ */ |
+ _Bucket.isInstance = function (value) { |
+ return !!value && value.constructor === this; |
+ }; |
+ |
+ _Bucket._nextId = 1; |
+ |
+ _Bucket.extend(null, { |
+ /** |
+ * Returns the next string key for this bucket |
+ * |
+ * @memberOf _Bucket.prototype |
+ * @private |
+ * @return {string} |
+ */ |
+ _getNextId: function () { |
+ return "key" + (_Bucket._nextId++) + "_"; |
+ }, |
+ |
+ /** |
+ * Puts a value in the bucket |
+ * |
+ * @param oKey |
+ * @return {string} |
+ * The string key for the object key |
+ */ |
+ put: function (oKey, value) { |
+ var sKey = this.find(oKey); |
+ if (!sKey) |
+ { |
+ sKey = _getSafeKey(this._items, this._getNextId()); |
+ } |
+ |
+ this._items[sKey] = new _ValueContainer(value, oKey); |
+ |
+ return sKey; |
+ }, |
+ |
+ /** |
+ * Gets a value from the bucket |
+ * |
+ * @param oKey |
+ * @return {string} |
+ * The value for the object key |
+ */ |
+ get: function (oKey) { |
+ var sKey = this.find(oKey); |
+ if (!sKey) |
+ { |
+ return void 0; |
+ } |
+ |
+ return this._items[sKey]; |
+ }, |
+ |
+ /** |
+ * Returns the string key of an object |
+ * |
+ * @param oKey |
+ * @return {string|boolean} |
+ * The string key of <var>oKey</var> if it is in the bucket, |
+ * <code>false</code> otherwise. |
+ */ |
+ find: function (oKey) { |
+ var items = this._items; |
+ for (var sKey in items) |
+ { |
+ var value = items[sKey]; |
+ if (_ValueContainer.isInstance(value) && value.getKey() == oKey) |
+ { |
+ return sKey; |
+ } |
+ } |
+ |
+ return false; |
+ }, |
+ |
+ /** |
+ * Removes an object key from the bucket |
+ * |
+ * @param oKey |
+ * @return {string|boolean} |
+ * The removed value for the object key, |
+ * or <code>false</code> if it was not in the bucket. |
+ */ |
+ remove: function (oKey) { |
+ var sKey = this.find(oKey); |
+ if (sKey) |
+ { |
+ var value = this._items[sKey]; |
+ delete this._items[sKey]; |
+ } |
+ |
+ return value; |
+ }, |
+ |
+ keys: function () { |
+ var a = []; |
+ |
+ var items = this._items; |
+ for (var key in items) |
+ { |
+ var o = items[key]; |
+ if (_ValueContainer.isInstance(o)) |
+ { |
+ a.push(o.getKey()); |
+ } |
+ } |
+ |
+ return a; |
+ }, |
+ |
+ mappings: function () { |
+ var a = []; |
+ |
+ var items = this._items; |
+ for (var p in items) |
+ { |
+ var o = items[p]; |
+ |
+ if (_ValueContainer.isInstance(o)) |
+ { |
+ a.push([o.getKey(), o.getValue()]); |
+ } |
+ } |
+ |
+ return a; |
+ } |
+ }); |
+ |
+ /* Imports */ |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ /** |
+ * @param {jsx.map.Map} map |
+ * The map whose mappings are to be placed in this map |
+ * @constructor |
+ */ |
+ function _Map (map) |
+ { |
+// var Map = arguments.callee; |
+ |
+ /* Allows to use this as a factory */ |
+ if (!this || this.constructor != _Map) |
+ { |
+ return new Map(map); |
+ } |
+ |
+ var _items = _getDataObject(); |
+ var _size = 0; |
+ |
+ /** |
+ * Gets the maximum alias property name length |
+ * for further storage and retrieval operations. The default is 255. |
+ * |
+ * @return {boolean} |
+ * <code>true</code> if successful, <code>false</code> otherwise. |
+ * @public |
+ */ |
+ this.getMaxAliasLength = function () { |
+ return _maxAliasLength; |
+ }; |
+ |
+ /** |
+ * Sets the maximum alias property name length |
+ * for further storage and retrieval operations. |
+ * |
+ * @param {number} len |
+ * Integer greater than 0 to define the maximum alias property name |
+ * length. The default maximum is 255. |
+ * @return {boolean} |
+ * <code>true</code> if successful, <code>false</code> otherwise. |
+ * @throws jsx.map#InvalidLengthError |
+ * @public |
+ */ |
+ this.setMaxAliasLength = function (len) { |
+ if (typeof len != "number") |
+ { |
+ len = parseInt(len, 10); |
+ } |
+ |
+ if (isNaN(len) || len < 1) |
+ { |
+ jsx.throwThis("jsx.map.InvalidLengthError"); |
+ } |
+ |
+ _maxAliasLength = len; |
+ |
+ return _maxAliasLength === len; |
+ }; |
+ |
+ /** |
+ * Returns the number of key-value mappings in this map |
+ * |
+ * @return {number} |
+ * The number of key-value mappings in this map |
+ * @public |
+ */ |
+ this.size = function () { |
+ return _size; |
+ }; |
+ |
+ /** |
+ * Returns <code>true</code> if this map contains no key-value mappings |
+ * |
+ * @return {boolean} |
+ * <code>true</code> if this map contains no key-value mappings |
+ * @public |
+ */ |
+ this.isEmpty = function () { |
+ return _size === 0; |
+ }; |
+ |
+ /** |
+ * Returns the value to which the specified key is mapped in this map |
+ * |
+ * @param key |
+ * @param defaultValue |
+ * @throws jsx.map#KeyError |
+ * If there is no such key and no default value has been passed. |
+ * @public |
+ */ |
+ this.get = function (key, defaultValue) { |
+ var v = _items[_getSafeKey(_items, key)]; |
+ |
+ if (_isObjectRef(key)) |
+ { |
+ if (_Bucket.isInstance(v)) |
+ { |
+ v = v.get(key); |
+ } |
+ } |
+ |
+ if (!v) |
+ { |
+ if (arguments.length > 1) |
+ { |
+ return defaultValue; |
+ } |
+ |
+ jsx.throwThis("jsx.map.KeyError", key); |
+ } |
+ |
+ return v.getValue(); |
+ }; |
+ |
+ /** |
+ * Returns <code>true</code> if this map contains a mapping for the specified key |
+ * |
+ * @param key |
+ * @return {boolean} |
+ * @public |
+ */ |
+ this.containsKey = function (key) { |
+ var value = _items[_getSafeKey(_items, key)]; |
+ return _ValueContainer.isInstance(value) |
+ || (_Bucket.isInstance(value) && !!value.find(key)); |
+ }; |
+ |
+ /** |
+ * Associates the specified value with the specified key in this map |
+ * |
+ * @param key |
+ * @param value |
+ * @return {boolean} |
+ * Previous value associated with specified key, |
+ * or <code>undefined</code> if there was no mapping for <var>key</var>. |
+ * An <code>undefined</code> return can also indicate that the Map |
+ * previously associated <code>undefined</code> with the specified key. |
+ * @throws jsx.map#KeyError |
+ * @public |
+ */ |
+ this.put = function (key, value) { |
+ var k = _getSafeKey(_items, key); |
+ var v; |
+ var prevValue = _items[k]; |
+ |
+ if (_isObjectRef(key)) |
+ { |
+ var bucket = prevValue; |
+ if (_Bucket.isInstance(bucket)) |
+ { |
+ if (!bucket.find(key)) |
+ { |
+ ++_size; |
+ } |
+ } |
+ else |
+ { |
+ bucket = new _Bucket(); |
+ ++_size; |
+ } |
+ |
+ bucket.put(key, value); |
+ v = bucket; |
+ } |
+ else |
+ { |
+ v = new _ValueContainer(value); |
+ if (!prevValue) |
+ { |
+ ++_size; |
+ } |
+ } |
+ |
+ _items[k] = v; |
+ |
+ return prevValue && prevValue.getValue(); |
+ }; |
+ |
+ /** |
+ * Removes the mapping for the specified key from this map if present |
+ * |
+ * @param key |
+ * Key whose mapping is to be removed from the map |
+ * @return {any} |
+ * The previous value associated with <var>key</var>,_value |
+ * or <code>undefined</code> if there was no mapping for <var>key</var>. |
+ * (An <code>undefined</code> return can also indicate that the map |
+ * previously associated <code>undefined</code> with <var>key</var>.) |
+ * @throws jsx.map#KeyError |
+ * @public |
+ */ |
+ this.remove = function (key) { |
+ var k = _getSafeKey(_items, key); |
+ var prevValue = _items[k]; |
+ |
+ if (prevValue) |
+ { |
+ if (_isObjectRef(key)) |
+ { |
+ if (_Bucket.isInstance(prevValue)) |
+ { |
+ var prevValue = prevValue.remove(key); |
+ if (_ValueContainer.isInstance(prevValue)) |
+ { |
+ --_size; |
+ return prevValue.getValue(); |
+ } |
+ |
+ return prevValue; |
+ } |
+ |
+ return void 0; |
+ } |
+ |
+ delete _items[k]; |
+ --_size; |
+ return prevValue && prevValue.getValue(); |
+ } |
+ |
+ return prevValue; |
+ }; |
+ |
+ /** |
+ * Removes all of the mappings from this map. |
+ * The map will be empty after this call returns. |
+ * |
+ * @public |
+ */ |
+ this.clear = function () { |
+ _items = _getDataObject(); |
+ _size = 0; |
+ }; |
+ |
+ /** |
+ * Returns <code>true</code> if this map maps one or more keys to the specified value. |
+ * |
+ * @param value |
+ * Value whose presence in this map is to be tested |
+ * @return {boolean} |
+ * <code>true</code> if this map maps one or more keys |
+ * to the specified value |
+ * @public |
+ */ |
+ this.containsValue = function (value) { |
+ for (var p in _items) |
+ { |
+ var o = _items[p]; |
+ |
+ if (_ValueContainer.isInstance(o) && o.getValue() === value) |
+ { |
+ return true; |
+ } |
+ |
+ if (_Bucket.isInstance(o) && o.containsValue(value)) |
+ { |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+ }; |
+ |
+ /** |
+ * Returns a list of the keys contained in this map |
+ * |
+ * @return {Array} |
+ * @public |
+ */ |
+ this.keys = function () { |
+ var a = []; |
+ |
+ for (var p in _items) |
+ { |
+ var o = _items[p]; |
+ if (_ValueContainer.isInstance(o)) |
+ { |
+ a.push(p); |
+ } |
+ else if (_Bucket.isInstance(o)) |
+ { |
+ a.push.apply(a, o.keys()); |
+ } |
+ } |
+ |
+ return a; |
+ }; |
+ |
+ /** |
+ * Returns a list of the values contained in this map |
+ * |
+ * @return {Array} |
+ * @public |
+ */ |
+ this.values = function () { |
+ var a = []; |
+ |
+ for (var p in _items) |
+ { |
+ var o = _items[p]; |
+ |
+ if (_ValueContainer.isInstance(o)) |
+ { |
+ a.push(o.getValue()); |
+ } |
+ else if (_Bucket.isInstance(o)) |
+ { |
+ a.push.apply(a, o.values()); |
+ } |
+ } |
+ |
+ return a; |
+ }; |
+ |
+ /** |
+ * Returns a list of the mappings contained in this map |
+ * as an {@link Array} of Arrays of key-value pairs. |
+ * The inner Arrays consist of two elements each, the key |
+ * and its associated value. |
+ * |
+ * @return {Array} |
+ * @public |
+ */ |
+ this.mappings = function () { |
+ var a = []; |
+ |
+ for (var p in _items) |
+ { |
+ var o = _items[p]; |
+ |
+ if (_ValueContainer.isInstance(o)) |
+ { |
+ a.push([p, o.getValue()]); |
+ } |
+ else if (_Bucket.isInstance(o)) |
+ { |
+ var bucketMappings = o.mappings(); |
+ for (var i = 0, len = bucketMappings.length; i < len; ++i) |
+ { |
+ a.push(a, bucketMappings[i]); |
+ } |
+ } |
+ } |
+ |
+ return a; |
+ }; |
+ |
+ /** |
+ * Destructs the map so that all closures are released. |
+ * |
+ * @public |
+ */ |
+ this.destruct = function () { |
+ _items = null; |
+ }; |
+ |
+ if (arguments.length > 0) |
+ { |
+ this.putAll(map); |
+ } |
+ } |
+ |
+ return _Map; |
+ }() |
+ ).extend(null, { |
+ /** |
+ * Returns a shallow copy of this map |
+ * |
+ * @memberOf jsx.map.Map.prototype |
+ * @return {jsx.map.Map} |
+ * @public |
+ */ |
+ clone: function () { |
+ return new this.constructor(this); |
+ }, |
+ |
+ /** |
+ * Copies all of the mappings from the specified map to this map. |
+ * These mappings will replace any mappings that this map had |
+ * for any of the keys currently in the specified map. |
+ * |
+ * @param {jsx.map.Map} map |
+ * @public |
+ */ |
+ putAll: function (map) { |
+ if (!this.constructor.isInstance(map)) |
+ { |
+ jsx.throwThis("jsx.InvalidArgumentError"); |
+ } |
+ |
+ this.setMaxAliasLength(map.getMaxAliasLength()); |
+ |
+ for (var a = map.mappings(), i = a.length; i--;) |
+ { |
+ var o = a[i]; |
+ |
+ this.put(o[0], o[1]); |
+ } |
+ } |
+ }), { |
+ /** |
+ * Returns <code>true</code> if the argument is a {@link jsx.map#Map Map} |
+ * |
+ * @memberOf jsx.map.Map |
+ * @param {Object} o |
+ * @return {boolean} |
+ */ |
+ isInstance: function (o) { |
+ return !!o && o.constructor === this; |
+ } |
+ }), |
+ |
+ KeyError: ( |
+ function (key) { |
+ jsx.object.PropertyError.call(this); |
+ this.message = "No such key: " + key; |
+ } |
+ ).extend(jsx.object.PropertyError, { |
+ name: "jsx.map.KeyError" |
+ }), |
+ |
+ InvalidLengthError: ( |
+ function () { |
+ jsx.object.PropertyError.call(this, "InvalidLengthError"); |
+ } |
+ ).extend(jsx.object.PropertyError) |
+}; |
\ No newline at end of file |
/live/map.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Index: live/UnicodeData.txt |
=================================================================== |
--- live/UnicodeData.txt (nonexistent) |
+++ live/UnicodeData.txt (revision 520) |
@@ -0,0 +1,24429 @@ |
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;; |
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;; |
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;; |
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;; |
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; |
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;; |
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; |
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;; |
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;; |
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; |
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;; |
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;; |
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;; |
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; |
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;; |
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;; |
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; |
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; |
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; |
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; |
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; |
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; |
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; |
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; |
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;; |
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;; |
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;; |
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;; |
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; |
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; |
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; |
+001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; |
+0020;SPACE;Zs;0;WS;;;;;N;;;;; |
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; |
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; |
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; |
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; |
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; |
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;; |
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; |
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; |
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; |
+002A;ASTERISK;Po;0;ON;;;;;N;;;;; |
+002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; |
+002C;COMMA;Po;0;CS;;;;;N;;;;; |
+002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; |
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; |
+002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; |
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; |
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; |
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; |
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; |
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; |
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; |
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; |
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; |
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; |
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; |
+003A;COLON;Po;0;CS;;;;;N;;;;; |
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;; |
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; |
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; |
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; |
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; |
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; |
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; |
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; |
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; |
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; |
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; |
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; |
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; |
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; |
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; |
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; |
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; |
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; |
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; |
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; |
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; |
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; |
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; |
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; |
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; |
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; |
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; |
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; |
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; |
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; |
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; |
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; |
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; |
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; |
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; |
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; |
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; |
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; |
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 |
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 |
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 |
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 |
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 |
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 |
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 |
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 |
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 |
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A |
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B |
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C |
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D |
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E |
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F |
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 |
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 |
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 |
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 |
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 |
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 |
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 |
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 |
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 |
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 |
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A |
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; |
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; |
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; |
+007E;TILDE;Sm;0;ON;;;;;N;;;;; |
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;; |
+0080;<control>;Cc;0;BN;;;;;N;;;;; |
+0081;<control>;Cc;0;BN;;;;;N;;;;; |
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; |
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;; |
+0084;<control>;Cc;0;BN;;;;;N;;;;; |
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; |
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; |
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; |
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; |
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; |
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; |
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; |
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; |
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; |
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; |
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; |
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; |
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; |
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; |
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; |
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; |
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; |
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; |
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; |
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;; |
+0099;<control>;Cc;0;BN;;;;;N;;;;; |
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; |
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; |
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; |
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; |
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; |
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; |
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;; |
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; |
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; |
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; |
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; |
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; |
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; |
+00A7;SECTION SIGN;Po;0;ON;;;;;N;;;;; |
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;; |
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; |
+00AA;FEMININE ORDINAL INDICATOR;Lo;0;L;<super> 0061;;;;N;;;;; |
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;; |
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; |
+00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; |
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; |
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;; |
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; |
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; |
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; |
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; |
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;; |
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C |
+00B6;PILCROW SIGN;Po;0;ON;;;;;N;PARAGRAPH SIGN;;;; |
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; |
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;; |
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; |
+00BA;MASCULINE ORDINAL INDICATOR;Lo;0;L;<super> 006F;;;;N;;;;; |
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;; |
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; |
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; |
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; |
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; |
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; |
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; |
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; |
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; |
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; |
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; |
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6; |
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; |
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; |
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; |
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; |
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; |
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; |
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; |
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; |
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; |
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;00F0; |
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; |
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; |
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; |
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; |
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; |
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; |
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; |
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; |
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; |
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; |
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; |
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; |
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; |
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;;;00FE; |
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;;;; |
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 |
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 |
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 |
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 |
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 |
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 |
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6 |
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 |
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 |
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 |
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA |
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB |
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC |
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD |
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE |
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF |
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;;00D0;;00D0 |
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 |
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 |
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 |
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 |
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 |
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 |
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; |
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 |
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 |
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA |
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB |
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC |
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD |
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;;00DE;;00DE |
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 |
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; |
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 |
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; |
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 |
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; |
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 |
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; |
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 |
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; |
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 |
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; |
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A |
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; |
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C |
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; |
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E |
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; |
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 |
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; |
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 |
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; |
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 |
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; |
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 |
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; |
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 |
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; |
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A |
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; |
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C |
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; |
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E |
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; |
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 |
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; |
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 |
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; |
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 |
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; |
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 |
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; |
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 |
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; |
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A |
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; |
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C |
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; |
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E |
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; |
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 |
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; |
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 |
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; |
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 |
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; |
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 |
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;;;; |
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; |
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 |
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; |
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B |
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; |
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D |
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140; |
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F |
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; |
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 |
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; |
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 |
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; |
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 |
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; |
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 |
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; |
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;014B; |
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;;014A;;014A |
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; |
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C |
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; |
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E |
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; |
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 |
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; |
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 |
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; |
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 |
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; |
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 |
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; |
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 |
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; |
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A |
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; |
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C |
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F; |
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E |
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; |
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 |
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163; |
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162 |
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; |
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 |
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; |
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 |
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; |
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 |
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; |
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A |
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; |
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C |
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; |
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E |
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; |
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 |
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; |
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 |
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; |
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 |
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; |
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 |
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; |
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; |
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 |
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; |
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B |
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; |
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D |
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053 |
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243 |
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; |
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; |
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 |
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; |
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 |
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; |
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; |
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 |
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256; |
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; |
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; |
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B |
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; |
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; |
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; |
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; |
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; |
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 |
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; |
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; |
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;01F6;;01F6 |
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; |
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; |
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; |
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 |
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D |
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; |
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; |
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; |
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 |
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275; |
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; |
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 |
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3; |
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2 |
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; |
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 |
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280; |
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; |
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 |
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; |
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; |
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; |
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; |
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC |
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; |
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; |
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF |
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; |
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; |
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; |
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 |
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; |
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 |
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; |
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; |
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 |
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; |
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; |
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; |
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC |
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; |
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 |
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; |
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; |
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; |
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; |
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 |
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 |
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 |
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 |
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 |
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 |
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB |
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB |
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB |
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; |
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD |
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; |
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF |
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; |
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 |
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; |
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 |
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; |
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 |
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; |
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 |
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; |
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 |
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; |
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB |
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E |
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; |
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE |
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; |
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 |
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3; |
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2 |
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; |
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 |
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; |
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 |
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; |
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 |
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; |
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA |
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; |
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC |
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; |
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE |
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; |
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2 |
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2 |
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2 |
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; |
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 |
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; |
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; |
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; |
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 |
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; |
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA |
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD; |
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC |
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; |
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE |
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; |
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 |
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; |
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 |
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; |
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 |
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; |
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 |
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; |
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 |
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; |
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A |
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; |
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C |
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; |
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E |
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; |
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 |
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; |
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 |
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; |
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 |
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; |
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 |
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;;;0219; |
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;;0218;;0218 |
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;;;021B; |
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;;021A;;021A |
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; |
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C |
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; |
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E |
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; |
+0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; |
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; |
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 |
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; |
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 |
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; |
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 |
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; |
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 |
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; |
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A |
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; |
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C |
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; |
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E |
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; |
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 |
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; |
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 |
+0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; |
+0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; |
+0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; |
+0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; |
+0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; |
+0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; |
+023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65; |
+023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; |
+023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B |
+023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; |
+023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66; |
+023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7E;;2C7E |
+0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7F;;2C7F |
+0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242; |
+0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 |
+0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180; |
+0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289; |
+0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C; |
+0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247; |
+0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246 |
+0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249; |
+0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248 |
+024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B; |
+024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A |
+024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D; |
+024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C |
+024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F; |
+024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E |
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F |
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D |
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;2C70;;2C70 |
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 |
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 |
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; |
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 |
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A |
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; |
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F |
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; |
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 |
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; |
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; |
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; |
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; |
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 |
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; |
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; |
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 |
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; |
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;A78D;;A78D |
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;A7AA;;A7AA |
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; |
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 |
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 |
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; |
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62 |
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; |
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; |
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; |
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C |
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; |
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E |
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D |
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; |
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; |
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F |
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; |
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; |
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; |
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; |
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; |
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; |
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; |
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64 |
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; |
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; |
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6 |
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; |
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; |
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 |
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; |
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; |
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; |
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; |
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE |
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244 |
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 |
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 |
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245 |
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; |
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; |
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; |
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; |
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; |
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 |
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; |
+0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; |
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; |
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; |
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; |
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; |
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; |
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; |
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; |
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; |
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; |
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; |
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; |
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; |
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; |
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; |
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; |
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; |
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; |
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; |
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; |
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; |
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; |
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; |
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; |
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; |
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; |
+02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; |
+02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; |
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;; |
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; |
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;; |
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;; |
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;; |
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; |
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;; |
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;; |
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;; |
+02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; |
+02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; |
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; |
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; |
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; |
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; |
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; |
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; |
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; |
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; |
+02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;; |
+02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; |
+02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;; |
+02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;; |
+02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;; |
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; |
+02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; |
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; |
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; |
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; |
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; |
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; |
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; |
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; |
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; |
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; |
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; |
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;; |
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;;;; |
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;; |
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;; |
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;; |
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; |
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; |
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; |
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;; |
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;; |
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;; |
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;; |
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;; |
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; |
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; |
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; |
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; |
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; |
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; |
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; |
+02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;; |
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; |
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; |
+02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; |
+02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; |
+02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; |
+02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; |
+02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; |
+02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; |
+02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; |
+02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; |
+02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; |
+02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; |
+02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; |
+02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; |
+02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; |
+02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; |
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;; |
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;;;; |
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; |
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; |
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; |
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; |
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;;;; |
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; |
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;;;; |
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; |
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; |
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; |
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; |
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; |
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; |
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; |
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; |
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; |
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; |
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;;;; |
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;;;; |
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; |
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; |
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; |
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; |
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; |
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; |
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; |
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; |
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; |
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; |
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; |
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; |
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; |
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; |
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; |
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; |
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; |
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; |
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; |
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; |
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; |
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; |
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; |
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; |
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; |
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; |
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; |
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; |
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; |
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; |
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; |
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; |
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; |
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; |
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; |
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; |
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; |
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; |
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; |
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; |
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; |
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; |
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; |
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;;;; |
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;;;; |
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; |
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; |
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; |
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 |
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; |
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; |
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; |
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; |
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; |
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; |
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; |
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; |
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; |
+0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; |
+0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; |
+0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; |
+0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; |
+0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; |
+0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; |
+0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; |
+035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; |
+035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; |
+035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; |
+035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; |
+035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; |
+035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; |
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; |
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; |
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; |
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; |
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; |
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; |
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; |
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; |
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; |
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; |
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; |
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; |
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; |
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; |
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; |
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; |
+0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371; |
+0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370 |
+0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373; |
+0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372 |
+0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;;;; |
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;;;; |
+0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377; |
+0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376 |
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; |
+037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD |
+037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE |
+037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF |
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;;;; |
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;; |
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; |
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; |
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; |
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; |
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; |
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; |
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; |
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; |
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; |
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; |
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; |
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; |
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; |
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; |
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; |
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; |
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; |
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; |
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; |
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; |
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; |
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; |
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; |
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; |
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; |
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; |
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; |
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; |
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; |
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; |
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; |
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; |
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; |
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; |
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; |
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; |
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 |
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 |
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 |
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A |
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; |
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 |
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 |
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 |
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 |
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 |
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 |
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 |
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 |
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 |
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A |
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B |
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C |
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D |
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E |
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F |
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 |
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 |
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 |
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 |
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 |
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 |
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 |
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 |
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 |
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 |
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA |
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB |
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C |
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E |
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F |
+03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7; |
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 |
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 |
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; |
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; |
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; |
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 |
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 |
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF |
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;;;03D9; |
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;;03D8;;03D8 |
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; |
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA |
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; |
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC |
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; |
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE |
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; |
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 |
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; |
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 |
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; |
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 |
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; |
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 |
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; |
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 |
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; |
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA |
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; |
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC |
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; |
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE |
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A |
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 |
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 |
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; |
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8; |
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395 |
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; |
+03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; |
+03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 |
+03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2; |
+03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; |
+03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA |
+03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; |
+03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B; |
+03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C; |
+03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D; |
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; |
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; |
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;;;0452; |
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; |
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; |
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; |
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; |
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;;;0457; |
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; |
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; |
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; |
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;;;045B; |
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; |
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; |
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;;;045E; |
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; |
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; |
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; |
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; |
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; |
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; |
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; |
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; |
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; |
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; |
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; |
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; |
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; |
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; |
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; |
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; |
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; |
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; |
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; |
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; |
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; |
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; |
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; |
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; |
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; |
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; |
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; |
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; |
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; |
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; |
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; |
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; |
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; |
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 |
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 |
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 |
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 |
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 |
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 |
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 |
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 |
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 |
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 |
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A |
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B |
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C |
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D |
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E |
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F |
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 |
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 |
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 |
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 |
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 |
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 |
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 |
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 |
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 |
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 |
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A |
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B |
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C |
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D |
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E |
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F |
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 |
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 |
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;;0402;;0402 |
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 |
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 |
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 |
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 |
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;;0407;;0407 |
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 |
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 |
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A |
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;;040B;;040B |
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C |
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D |
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;;040E;;040E |
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F |
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; |
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 |
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; |
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 |
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; |
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 |
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; |
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 |
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; |
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 |
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; |
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A |
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; |
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C |
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; |
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E |
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; |
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 |
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; |
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 |
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; |
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 |
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; |
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 |
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; |
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 |
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; |
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A |
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; |
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C |
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; |
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E |
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; |
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 |
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; |
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; |
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; |
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; |
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; |
+0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;; |
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; |
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; |
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; |
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A |
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; |
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C |
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; |
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E |
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; |
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 |
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; |
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 |
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; |
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 |
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; |
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 |
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; |
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 |
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; |
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A |
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; |
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C |
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; |
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E |
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; |
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 |
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; |
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 |
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; |
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 |
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;;;04A7; |
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;;04A6;;04A6 |
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; |
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 |
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; |
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA |
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; |
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC |
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; |
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE |
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; |
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 |
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; |
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 |
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;;;04B5; |
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;;04B4;;04B4 |
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; |
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 |
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; |
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 |
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; |
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA |
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; |
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC |
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; |
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE |
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF; |
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; |
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 |
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; |
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 |
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; |
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 |
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; |
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 |
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; |
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 |
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; |
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB |
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; |
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD |
+04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0 |
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; |
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 |
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; |
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 |
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; |
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 |
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; |
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 |
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; |
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 |
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; |
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA |
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; |
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC |
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; |
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE |
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; |
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 |
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; |
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 |
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; |
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 |
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; |
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 |
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; |
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 |
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; |
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA |
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; |
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC |
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; |
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE |
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; |
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 |
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; |
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 |
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; |
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 |
+04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; |
+04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 |
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; |
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 |
+04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB; |
+04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA |
+04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD; |
+04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC |
+04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF; |
+04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE |
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; |
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 |
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; |
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 |
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; |
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 |
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; |
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 |
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; |
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 |
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; |
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A |
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; |
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C |
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; |
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E |
+0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511; |
+0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510 |
+0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513; |
+0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512 |
+0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515; |
+0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514 |
+0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517; |
+0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516 |
+0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519; |
+0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518 |
+051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B; |
+051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A |
+051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D; |
+051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C |
+051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F; |
+051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E |
+0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521; |
+0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520 |
+0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523; |
+0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522 |
+0524;CYRILLIC CAPITAL LETTER PE WITH DESCENDER;Lu;0;L;;;;;N;;;;0525; |
+0525;CYRILLIC SMALL LETTER PE WITH DESCENDER;Ll;0;L;;;;;N;;;0524;;0524 |
+0526;CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER;Lu;0;L;;;;;N;;;;0527; |
+0527;CYRILLIC SMALL LETTER SHHA WITH DESCENDER;Ll;0;L;;;;;N;;;0526;;0526 |
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; |
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; |
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; |
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; |
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; |
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; |
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; |
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; |
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; |
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; |
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; |
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; |
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; |
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; |
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; |
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; |
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; |
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; |
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; |
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; |
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; |
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; |
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; |
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; |
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; |
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; |
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; |
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; |
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; |
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; |
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; |
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; |
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; |
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; |
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; |
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; |
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; |
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; |
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; |
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; |
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; |
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; |
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; |
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; |
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; |
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 |
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 |
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 |
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 |
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 |
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 |
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 |
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 |
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 |
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A |
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B |
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C |
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D |
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E |
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F |
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 |
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 |
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 |
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 |
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 |
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 |
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 |
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 |
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 |
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 |
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A |
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B |
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C |
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D |
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E |
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F |
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 |
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 |
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 |
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 |
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 |
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 |
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 |
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;; |
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; |
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; |
+058F;ARMENIAN DRAM SIGN;Sc;0;ET;;;;;N;;;;; |
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; |
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; |
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; |
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; |
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; |
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;;;; |
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; |
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;;;; |
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; |
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; |
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; |
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; |
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; |
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; |
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; |
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; |
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; |
+05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; |
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; |
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; |
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;;;; |
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; |
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; |
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;;;; |
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; |
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;;;; |
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; |
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; |
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; |
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; |
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; |
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; |
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; |
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; |
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; |
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; |
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; |
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; |
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; |
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; |
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; |
+05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;; |
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; |
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;;;; |
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;;;; |
+05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;; |
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; |
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;; |
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; |
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; |
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;; |
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; |
+05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; |
+05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; |
+05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; |
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; |
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; |
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; |
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; |
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; |
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; |
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; |
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; |
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; |
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; |
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; |
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; |
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; |
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; |
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; |
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; |
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; |
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; |
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; |
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; |
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; |
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; |
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; |
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; |
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; |
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; |
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; |
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; |
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; |
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; |
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; |
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; |
+0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;; |
+0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;; |
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;; |
+0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;; |
+0604;ARABIC SIGN SAMVAT;Cf;0;AN;;;;;N;;;;; |
+0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;; |
+0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;; |
+0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;; |
+0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;; |
+060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; |
+060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; |
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; |
+060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; |
+060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; |
+060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; |
+0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; |
+0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; |
+0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; |
+0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; |
+0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; |
+0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; |
+0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;; |
+0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;; |
+0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;; |
+0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;; |
+061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; |
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; |
+061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; |
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; |
+0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;; |
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; |
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; |
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; |
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; |
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; |
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; |
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; |
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; |
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; |
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; |
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; |
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; |
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; |
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; |
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; |
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; |
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; |
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; |
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; |
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; |
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; |
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; |
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; |
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; |
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; |
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; |
+063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; |
+063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; |
+063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; |
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; |
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; |
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; |
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; |
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; |
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; |
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; |
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; |
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; |
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; |
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; |
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; |
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; |
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; |
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; |
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; |
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; |
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; |
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; |
+0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; |
+0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; |
+0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; |
+0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; |
+065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; |
+065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; |
+065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; |
+065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; |
+065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; |
+065F;ARABIC WAVY HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; |
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; |
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; |
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; |
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; |
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; |
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; |
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; |
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; |
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; |
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; |
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; |
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; |
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; |
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; |
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; |
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; |
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; |
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; |
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; |
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; |
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; |
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; |
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; |
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; |
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; |
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; |
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; |
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; |
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; |
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; |
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; |
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; |
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; |
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; |
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; |
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; |
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; |
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; |
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; |
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; |
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; |
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; |
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; |
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; |
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; |
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; |
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; |
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; |
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; |
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; |
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; |
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; |
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; |
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; |
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; |
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; |
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; |
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; |
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; |
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; |
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; |
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; |
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; |
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; |
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; |
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; |
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; |
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; |
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; |
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; |
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; |
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;;;; |
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; |
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; |
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; |
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; |
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; |
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; |
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; |
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; |
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; |
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; |
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; |
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; |
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; |
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; |
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; |
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; |
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; |
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; |
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; |
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; |
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; |
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; |
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; |
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; |
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; |
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;; |
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; |
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; |
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; |
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; |
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; |
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; |
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; |
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; |
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; |
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; |
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; |
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; |
+06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;; |
+06DE;ARABIC START OF RUB EL HIZB;So;0;ON;;;;;N;;;;; |
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; |
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; |
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; |
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; |
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; |
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; |
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; |
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; |
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; |
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; |
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; |
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; |
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; |
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; |
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; |
+06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; |
+06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; |
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; |
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; |
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; |
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; |
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; |
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; |
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; |
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; |
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; |
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; |
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; |
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; |
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; |
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; |
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; |
+06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; |
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; |
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; |
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; |
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; |
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; |
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; |
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; |
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; |
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; |
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; |
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; |
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; |
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; |
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; |
+070F;SYRIAC ABBREVIATION MARK;Cf;0;AL;;;;;N;;;;; |
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; |
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; |
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; |
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; |
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; |
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; |
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; |
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; |
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; |
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; |
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; |
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; |
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; |
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; |
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; |
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; |
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; |
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; |
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; |
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; |
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; |
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; |
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; |
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; |
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; |
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; |
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; |
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; |
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; |
+072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; |
+072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; |
+072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; |
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; |
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; |
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; |
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; |
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; |
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; |
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; |
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; |
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; |
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; |
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; |
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; |
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; |
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; |
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; |
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; |
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; |
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; |
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; |
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; |
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; |
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; |
+074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; |
+074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; |
+074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; |
+0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; |
+0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; |
+0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; |
+0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; |
+0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; |
+0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; |
+075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; |
+075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; |
+075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; |
+075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; |
+0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; |
+0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; |
+0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; |
+0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; |
+0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; |
+0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; |
+0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; |
+076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; |
+076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; |
+076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; |
+076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; |
+076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;; |
+076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; |
+0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; |
+0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; |
+0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; |
+0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; |
+0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; |
+0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; |
+0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; |
+0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; |
+0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; |
+0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; |
+077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; |
+077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; |
+077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; |
+077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;; |
+077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;; |
+077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; |
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; |
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; |
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; |
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; |
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; |
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; |
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; |
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; |
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; |
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; |
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; |
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; |
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; |
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; |
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; |
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; |
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; |
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; |
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; |
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; |
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; |
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; |
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; |
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; |
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; |
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; |
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; |
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; |
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; |
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; |
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; |
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; |
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; |
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; |
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; |
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; |
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; |
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; |
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; |
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; |
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; |
+07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; |
+07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; |
+07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; |
+07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; |
+07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; |
+07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; |
+07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; |
+07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; |
+07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; |
+07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; |
+07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;; |
+07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;; |
+07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;; |
+07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;; |
+07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;; |
+07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;; |
+07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;; |
+07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;; |
+07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;; |
+07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;; |
+07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;; |
+07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;; |
+07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;; |
+07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;; |
+07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;; |
+07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;; |
+07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;; |
+07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;; |
+07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;; |
+07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;; |
+07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;; |
+07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;; |
+07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;; |
+07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;; |
+07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;; |
+07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;; |
+07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;; |
+07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;; |
+07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;; |
+07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;; |
+07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;; |
+07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;; |
+07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;; |
+07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;; |
+07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;; |
+07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;; |
+07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;; |
+07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;; |
+07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;; |
+07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;; |
+07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;; |
+07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; |
+07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; |
+07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; |
+07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;; |
+07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;; |
+07F8;NKO COMMA;Po;0;ON;;;;;N;;;;; |
+07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; |
+07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;; |
+0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;; |
+0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;; |
+0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;; |
+0803;SAMARITAN LETTER DALAT;Lo;0;R;;;;;N;;;;; |
+0804;SAMARITAN LETTER IY;Lo;0;R;;;;;N;;;;; |
+0805;SAMARITAN LETTER BAA;Lo;0;R;;;;;N;;;;; |
+0806;SAMARITAN LETTER ZEN;Lo;0;R;;;;;N;;;;; |
+0807;SAMARITAN LETTER IT;Lo;0;R;;;;;N;;;;; |
+0808;SAMARITAN LETTER TIT;Lo;0;R;;;;;N;;;;; |
+0809;SAMARITAN LETTER YUT;Lo;0;R;;;;;N;;;;; |
+080A;SAMARITAN LETTER KAAF;Lo;0;R;;;;;N;;;;; |
+080B;SAMARITAN LETTER LABAT;Lo;0;R;;;;;N;;;;; |
+080C;SAMARITAN LETTER MIM;Lo;0;R;;;;;N;;;;; |
+080D;SAMARITAN LETTER NUN;Lo;0;R;;;;;N;;;;; |
+080E;SAMARITAN LETTER SINGAAT;Lo;0;R;;;;;N;;;;; |
+080F;SAMARITAN LETTER IN;Lo;0;R;;;;;N;;;;; |
+0810;SAMARITAN LETTER FI;Lo;0;R;;;;;N;;;;; |
+0811;SAMARITAN LETTER TSAADIY;Lo;0;R;;;;;N;;;;; |
+0812;SAMARITAN LETTER QUF;Lo;0;R;;;;;N;;;;; |
+0813;SAMARITAN LETTER RISH;Lo;0;R;;;;;N;;;;; |
+0814;SAMARITAN LETTER SHAN;Lo;0;R;;;;;N;;;;; |
+0815;SAMARITAN LETTER TAAF;Lo;0;R;;;;;N;;;;; |
+0816;SAMARITAN MARK IN;Mn;230;NSM;;;;;N;;;;; |
+0817;SAMARITAN MARK IN-ALAF;Mn;230;NSM;;;;;N;;;;; |
+0818;SAMARITAN MARK OCCLUSION;Mn;230;NSM;;;;;N;;;;; |
+0819;SAMARITAN MARK DAGESH;Mn;230;NSM;;;;;N;;;;; |
+081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;; |
+081B;SAMARITAN MARK EPENTHETIC YUT;Mn;230;NSM;;;;;N;;;;; |
+081C;SAMARITAN VOWEL SIGN LONG E;Mn;230;NSM;;;;;N;;;;; |
+081D;SAMARITAN VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;; |
+081E;SAMARITAN VOWEL SIGN OVERLONG AA;Mn;230;NSM;;;;;N;;;;; |
+081F;SAMARITAN VOWEL SIGN LONG AA;Mn;230;NSM;;;;;N;;;;; |
+0820;SAMARITAN VOWEL SIGN AA;Mn;230;NSM;;;;;N;;;;; |
+0821;SAMARITAN VOWEL SIGN OVERLONG A;Mn;230;NSM;;;;;N;;;;; |
+0822;SAMARITAN VOWEL SIGN LONG A;Mn;230;NSM;;;;;N;;;;; |
+0823;SAMARITAN VOWEL SIGN A;Mn;230;NSM;;;;;N;;;;; |
+0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;; |
+0825;SAMARITAN VOWEL SIGN SHORT A;Mn;230;NSM;;;;;N;;;;; |
+0826;SAMARITAN VOWEL SIGN LONG U;Mn;230;NSM;;;;;N;;;;; |
+0827;SAMARITAN VOWEL SIGN U;Mn;230;NSM;;;;;N;;;;; |
+0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;; |
+0829;SAMARITAN VOWEL SIGN LONG I;Mn;230;NSM;;;;;N;;;;; |
+082A;SAMARITAN VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; |
+082B;SAMARITAN VOWEL SIGN O;Mn;230;NSM;;;;;N;;;;; |
+082C;SAMARITAN VOWEL SIGN SUKUN;Mn;230;NSM;;;;;N;;;;; |
+082D;SAMARITAN MARK NEQUDAA;Mn;230;NSM;;;;;N;;;;; |
+0830;SAMARITAN PUNCTUATION NEQUDAA;Po;0;R;;;;;N;;;;; |
+0831;SAMARITAN PUNCTUATION AFSAAQ;Po;0;R;;;;;N;;;;; |
+0832;SAMARITAN PUNCTUATION ANGED;Po;0;R;;;;;N;;;;; |
+0833;SAMARITAN PUNCTUATION BAU;Po;0;R;;;;;N;;;;; |
+0834;SAMARITAN PUNCTUATION ATMAAU;Po;0;R;;;;;N;;;;; |
+0835;SAMARITAN PUNCTUATION SHIYYAALAA;Po;0;R;;;;;N;;;;; |
+0836;SAMARITAN ABBREVIATION MARK;Po;0;R;;;;;N;;;;; |
+0837;SAMARITAN PUNCTUATION MELODIC QITSA;Po;0;R;;;;;N;;;;; |
+0838;SAMARITAN PUNCTUATION ZIQAA;Po;0;R;;;;;N;;;;; |
+0839;SAMARITAN PUNCTUATION QITSA;Po;0;R;;;;;N;;;;; |
+083A;SAMARITAN PUNCTUATION ZAEF;Po;0;R;;;;;N;;;;; |
+083B;SAMARITAN PUNCTUATION TURU;Po;0;R;;;;;N;;;;; |
+083C;SAMARITAN PUNCTUATION ARKAANU;Po;0;R;;;;;N;;;;; |
+083D;SAMARITAN PUNCTUATION SOF MASHFAAT;Po;0;R;;;;;N;;;;; |
+083E;SAMARITAN PUNCTUATION ANNAAU;Po;0;R;;;;;N;;;;; |
+0840;MANDAIC LETTER HALQA;Lo;0;R;;;;;N;;;;; |
+0841;MANDAIC LETTER AB;Lo;0;R;;;;;N;;;;; |
+0842;MANDAIC LETTER AG;Lo;0;R;;;;;N;;;;; |
+0843;MANDAIC LETTER AD;Lo;0;R;;;;;N;;;;; |
+0844;MANDAIC LETTER AH;Lo;0;R;;;;;N;;;;; |
+0845;MANDAIC LETTER USHENNA;Lo;0;R;;;;;N;;;;; |
+0846;MANDAIC LETTER AZ;Lo;0;R;;;;;N;;;;; |
+0847;MANDAIC LETTER IT;Lo;0;R;;;;;N;;;;; |
+0848;MANDAIC LETTER ATT;Lo;0;R;;;;;N;;;;; |
+0849;MANDAIC LETTER AKSA;Lo;0;R;;;;;N;;;;; |
+084A;MANDAIC LETTER AK;Lo;0;R;;;;;N;;;;; |
+084B;MANDAIC LETTER AL;Lo;0;R;;;;;N;;;;; |
+084C;MANDAIC LETTER AM;Lo;0;R;;;;;N;;;;; |
+084D;MANDAIC LETTER AN;Lo;0;R;;;;;N;;;;; |
+084E;MANDAIC LETTER AS;Lo;0;R;;;;;N;;;;; |
+084F;MANDAIC LETTER IN;Lo;0;R;;;;;N;;;;; |
+0850;MANDAIC LETTER AP;Lo;0;R;;;;;N;;;;; |
+0851;MANDAIC LETTER ASZ;Lo;0;R;;;;;N;;;;; |
+0852;MANDAIC LETTER AQ;Lo;0;R;;;;;N;;;;; |
+0853;MANDAIC LETTER AR;Lo;0;R;;;;;N;;;;; |
+0854;MANDAIC LETTER ASH;Lo;0;R;;;;;N;;;;; |
+0855;MANDAIC LETTER AT;Lo;0;R;;;;;N;;;;; |
+0856;MANDAIC LETTER DUSHENNA;Lo;0;R;;;;;N;;;;; |
+0857;MANDAIC LETTER KAD;Lo;0;R;;;;;N;;;;; |
+0858;MANDAIC LETTER AIN;Lo;0;R;;;;;N;;;;; |
+0859;MANDAIC AFFRICATION MARK;Mn;220;NSM;;;;;N;;;;; |
+085A;MANDAIC VOCALIZATION MARK;Mn;220;NSM;;;;;N;;;;; |
+085B;MANDAIC GEMINATION MARK;Mn;220;NSM;;;;;N;;;;; |
+085E;MANDAIC PUNCTUATION;Po;0;R;;;;;N;;;;; |
+08A0;ARABIC LETTER BEH WITH SMALL V BELOW;Lo;0;AL;;;;;N;;;;; |
+08A2;ARABIC LETTER JEEM WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+08A3;ARABIC LETTER TAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+08A4;ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+08A5;ARABIC LETTER QAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; |
+08A6;ARABIC LETTER LAM WITH DOUBLE BAR;Lo;0;AL;;;;;N;;;;; |
+08A7;ARABIC LETTER MEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; |
+08A8;ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; |
+08A9;ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; |
+08AA;ARABIC LETTER REH WITH LOOP;Lo;0;AL;;;;;N;;;;; |
+08AB;ARABIC LETTER WAW WITH DOT WITHIN;Lo;0;AL;;;;;N;;;;; |
+08AC;ARABIC LETTER ROHINGYA YEH;Lo;0;AL;;;;;N;;;;; |
+08E4;ARABIC CURLY FATHA;Mn;230;NSM;;;;;N;;;;; |
+08E5;ARABIC CURLY DAMMA;Mn;230;NSM;;;;;N;;;;; |
+08E6;ARABIC CURLY KASRA;Mn;220;NSM;;;;;N;;;;; |
+08E7;ARABIC CURLY FATHATAN;Mn;230;NSM;;;;;N;;;;; |
+08E8;ARABIC CURLY DAMMATAN;Mn;230;NSM;;;;;N;;;;; |
+08E9;ARABIC CURLY KASRATAN;Mn;220;NSM;;;;;N;;;;; |
+08EA;ARABIC TONE ONE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; |
+08EB;ARABIC TONE TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; |
+08EC;ARABIC TONE LOOP ABOVE;Mn;230;NSM;;;;;N;;;;; |
+08ED;ARABIC TONE ONE DOT BELOW;Mn;220;NSM;;;;;N;;;;; |
+08EE;ARABIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;; |
+08EF;ARABIC TONE LOOP BELOW;Mn;220;NSM;;;;;N;;;;; |
+08F0;ARABIC OPEN FATHATAN;Mn;27;NSM;;;;;N;;;;; |
+08F1;ARABIC OPEN DAMMATAN;Mn;28;NSM;;;;;N;;;;; |
+08F2;ARABIC OPEN KASRATAN;Mn;29;NSM;;;;;N;;;;; |
+08F3;ARABIC SMALL HIGH WAW;Mn;230;NSM;;;;;N;;;;; |
+08F4;ARABIC FATHA WITH RING;Mn;230;NSM;;;;;N;;;;; |
+08F5;ARABIC FATHA WITH DOT ABOVE;Mn;230;NSM;;;;;N;;;;; |
+08F6;ARABIC KASRA WITH DOT BELOW;Mn;220;NSM;;;;;N;;;;; |
+08F7;ARABIC LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; |
+08F8;ARABIC RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; |
+08F9;ARABIC LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; |
+08FA;ARABIC RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; |
+08FB;ARABIC DOUBLE RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; |
+08FC;ARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOT;Mn;230;NSM;;;;;N;;;;; |
+08FD;ARABIC RIGHT ARROWHEAD ABOVE WITH DOT;Mn;230;NSM;;;;;N;;;;; |
+08FE;ARABIC DAMMA WITH DOT;Mn;230;NSM;;;;;N;;;;; |
+0900;DEVANAGARI SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;; |
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; |
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; |
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; |
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; |
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; |
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; |
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; |
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; |
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; |
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; |
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; |
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; |
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; |
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; |
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; |
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; |
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; |
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; |
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; |
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; |
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; |
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; |
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; |
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; |
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; |
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; |
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; |
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; |
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; |
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; |
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; |
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; |
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; |
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; |
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; |
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; |
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; |
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; |
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; |
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; |
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; |
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; |
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; |
+093A;DEVANAGARI VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;; |
+093B;DEVANAGARI VOWEL SIGN OOE;Mc;0;L;;;;;N;;;;; |
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; |
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; |
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; |
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; |
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; |
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+094E;DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;; |
+094F;DEVANAGARI VOWEL SIGN AW;Mc;0;L;;;;;N;;;;; |
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; |
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; |
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; |
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; |
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; |
+0955;DEVANAGARI VOWEL SIGN CANDRA LONG E;Mn;0;NSM;;;;;N;;;;; |
+0956;DEVANAGARI VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; |
+0957;DEVANAGARI VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;; |
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; |
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; |
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; |
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; |
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; |
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; |
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; |
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; |
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; |
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; |
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; |
+0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;; |
+0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;; |
+0973;DEVANAGARI LETTER OE;Lo;0;L;;;;;N;;;;; |
+0974;DEVANAGARI LETTER OOE;Lo;0;L;;;;;N;;;;; |
+0975;DEVANAGARI LETTER AW;Lo;0;L;;;;;N;;;;; |
+0976;DEVANAGARI LETTER UE;Lo;0;L;;;;;N;;;;; |
+0977;DEVANAGARI LETTER UUE;Lo;0;L;;;;;N;;;;; |
+0979;DEVANAGARI LETTER ZHA;Lo;0;L;;;;;N;;;;; |
+097A;DEVANAGARI LETTER HEAVY YA;Lo;0;L;;;;;N;;;;; |
+097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;; |
+097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;; |
+097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; |
+097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;; |
+097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;; |
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; |
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; |
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; |
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; |
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; |
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; |
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; |
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; |
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; |
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; |
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; |
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; |
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; |
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; |
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; |
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; |
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; |
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; |
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; |
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; |
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; |
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; |
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; |
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; |
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; |
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; |
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; |
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; |
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; |
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; |
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; |
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; |
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; |
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; |
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; |
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; |
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; |
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; |
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; |
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; |
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; |
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; |
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; |
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; |
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; |
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;;;; |
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;;;; |
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; |
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; |
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1/16;N;;;;; |
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;1/8;N;;;;; |
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3/16;N;;;;; |
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;1/4;N;;;;; |
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;3/4;N;;;;; |
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; |
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; |
+09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;; |
+0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; |
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; |
+0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; |
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; |
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; |
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; |
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; |
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; |
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; |
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; |
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; |
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; |
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; |
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; |
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; |
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; |
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; |
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; |
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; |
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; |
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; |
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; |
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; |
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; |
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; |
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; |
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; |
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; |
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; |
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; |
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; |
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; |
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; |
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; |
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; |
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; |
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; |
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; |
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; |
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;; |
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; |
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; |
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; |
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; |
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; |
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; |
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; |
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; |
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; |
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; |
+0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;; |
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; |
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; |
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; |
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; |
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; |
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; |
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; |
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; |
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; |
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; |
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; |
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; |
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; |
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; |
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; |
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; |
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; |
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; |
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; |
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; |
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; |
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; |
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; |
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; |
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; |
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; |
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; |
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; |
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; |
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; |
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; |
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; |
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; |
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; |
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; |
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; |
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; |
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; |
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; |
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; |
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; |
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0AF0;GUJARATI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; |
+0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; |
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; |
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; |
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; |
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; |
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; |
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; |
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; |
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; |
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; |
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; |
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; |
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; |
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; |
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; |
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; |
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; |
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; |
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; |
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; |
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; |
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; |
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; |
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; |
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; |
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; |
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; |
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; |
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; |
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; |
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; |
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; |
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; |
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; |
+0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; |
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; |
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; |
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; |
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; |
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; |
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; |
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; |
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; |
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; |
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; |
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; |
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; |
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; |
+0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; |
+0B72;ORIYA FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; |
+0B73;ORIYA FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; |
+0B74;ORIYA FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; |
+0B75;ORIYA FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;; |
+0B76;ORIYA FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;; |
+0B77;ORIYA FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;; |
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; |
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; |
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; |
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; |
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; |
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; |
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; |
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; |
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; |
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; |
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; |
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; |
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; |
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; |
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; |
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; |
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; |
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; |
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; |
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; |
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; |
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; |
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; |
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; |
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; |
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; |
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; |
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; |
+0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; |
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; |
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; |
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; |
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; |
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; |
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; |
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; |
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;; |
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; |
+0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; |
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; |
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; |
+0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;;;; |
+0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;;;; |
+0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;;;; |
+0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;;;; |
+0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;;;; |
+0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;;;; |
+0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;;;; |
+0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;;;; |
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; |
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; |
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; |
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; |
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; |
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; |
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; |
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; |
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; |
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; |
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; |
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; |
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; |
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; |
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; |
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; |
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; |
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; |
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; |
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; |
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; |
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; |
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; |
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; |
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; |
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; |
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; |
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; |
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; |
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; |
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; |
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; |
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; |
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; |
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; |
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; |
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; |
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; |
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; |
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; |
+0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; |
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; |
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; |
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; |
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; |
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; |
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; |
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; |
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; |
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; |
+0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; |
+0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; |
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;; |
+0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;; |
+0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;; |
+0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;; |
+0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;; |
+0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;; |
+0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;; |
+0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;; |
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; |
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; |
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; |
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; |
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; |
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; |
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; |
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; |
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; |
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; |
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; |
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; |
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; |
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; |
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; |
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; |
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; |
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; |
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; |
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; |
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; |
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; |
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; |
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; |
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; |
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; |
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; |
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; |
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; |
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; |
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; |
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; |
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; |
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; |
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; |
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; |
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; |
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; |
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; |
+0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; |
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; |
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; |
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; |
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; |
+0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; |
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; |
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; |
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; |
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; |
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; |
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; |
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; |
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; |
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0CF1;KANNADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;; |
+0CF2;KANNADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;; |
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; |
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; |
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; |
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; |
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; |
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; |
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; |
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; |
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; |
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; |
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; |
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; |
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; |
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; |
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; |
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; |
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; |
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; |
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; |
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; |
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; |
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; |
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; |
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; |
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; |
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; |
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; |
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; |
+0D29;MALAYALAM LETTER NNNA;Lo;0;L;;;;;N;;;;; |
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; |
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; |
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; |
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; |
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; |
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; |
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; |
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; |
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; |
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; |
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; |
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; |
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; |
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; |
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; |
+0D3A;MALAYALAM LETTER TTTA;Lo;0;L;;;;;N;;;;; |
+0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; |
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; |
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; |
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; |
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; |
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+0D4E;MALAYALAM LETTER DOT REPH;Lo;0;L;;;;;N;;;;; |
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; |
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;; |
+0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; |
+0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; |
+0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; |
+0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; |
+0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; |
+0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;; |
+0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;; |
+0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;; |
+0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;; |
+0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;; |
+0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;; |
+0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;; |
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; |
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; |
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; |
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; |
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; |
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; |
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; |
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; |
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; |
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; |
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; |
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; |
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; |
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; |
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; |
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; |
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; |
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; |
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; |
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; |
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; |
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; |
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; |
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; |
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; |
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; |
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; |
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; |
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; |
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; |
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; |
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; |
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; |
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; |
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; |
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; |
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; |
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; |
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; |
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; |
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; |
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; |
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; |
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; |
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; |
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; |
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; |
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; |
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; |
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; |
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; |
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; |
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; |
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; |
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; |
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; |
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; |
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; |
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; |
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; |
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; |
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; |
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; |
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; |
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; |
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; |
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; |
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; |
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; |
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; |
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; |
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; |
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; |
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; |
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; |
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; |
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; |
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; |
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; |
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; |
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; |
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; |
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; |
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; |
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; |
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; |
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; |
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; |
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; |
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; |
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; |
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; |
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; |
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; |
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; |
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; |
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; |
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; |
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; |
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; |
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; |
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; |
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; |
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; |
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; |
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; |
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; |
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; |
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; |
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; |
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; |
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;; |
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; |
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; |
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; |
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; |
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; |
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; |
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; |
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;;;; |
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; |
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; |
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; |
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; |
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; |
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; |
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; |
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;; |
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;; |
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;; |
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;; |
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;; |
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; |
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; |
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; |
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; |
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; |
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;;;; |
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; |
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; |
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; |
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; |
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; |
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; |
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; |
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; |
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; |
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; |
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; |
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; |
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; |
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; |
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; |
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; |
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; |
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; |
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; |
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; |
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; |
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; |
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; |
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; |
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; |
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; |
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; |
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; |
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; |
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; |
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; |
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; |
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; |
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; |
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; |
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;; |
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; |
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; |
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; |
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; |
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; |
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; |
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; |
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; |
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; |
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; |
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; |
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; |
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; |
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; |
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; |
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; |
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; |
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; |
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; |
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;; |
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;; |
+0EDE;LAO LETTER KHMU GO;Lo;0;L;;;;;N;;;;; |
+0EDF;LAO LETTER KHMU NYO;Lo;0;L;;;;;N;;;;; |
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; |
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;;;; |
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;;;; |
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;;;; |
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;;;; |
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;; |
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;;;; |
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;;;; |
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;;;; |
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;;;; |
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;;;; |
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;;;; |
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;;;; |
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;;;; |
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;;;; |
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;;;; |
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;;;; |
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;;;; |
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;;;; |
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;;;; |
+0F14;TIBETAN MARK GTER TSHEG;Po;0;L;;;;;N;TIBETAN COMMA;;;; |
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;;;; |
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;;;; |
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;;;; |
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;;;; |
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;;;; |
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;;;; |
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;;;; |
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;;;; |
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;;;; |
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;;;; |
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;;;; |
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; |
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; |
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; |
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; |
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; |
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; |
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; |
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; |
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; |
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; |
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;;;; |
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;;;; |
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;;;; |
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;;;; |
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;;;; |
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;;;; |
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;;;; |
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;;;; |
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;;;; |
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;;;; |
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;;;; |
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;;;; |
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; |
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; |
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; |
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; |
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; |
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; |
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; |
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; |
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; |
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; |
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; |
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; |
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; |
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; |
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; |
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; |
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; |
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; |
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; |
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; |
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; |
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; |
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; |
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; |
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; |
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; |
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; |
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; |
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; |
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; |
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; |
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; |
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; |
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;; |
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; |
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; |
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; |
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; |
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; |
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; |
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; |
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;;;; |
+0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;; |
+0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;; |
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; |
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; |
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; |
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; |
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; |
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; |
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;; |
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; |
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;; |
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; |
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; |
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; |
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; |
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;;;; |
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;;;; |
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; |
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; |
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;;;; |
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;;;; |
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; |
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; |
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;;;; |
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;;;; |
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;;;; |
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;;;; |
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;;;; |
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;;;; |
+0F8C;TIBETAN SIGN INVERTED MCHU CAN;Lo;0;L;;;;;N;;;;; |
+0F8D;TIBETAN SUBJOINED SIGN LCE TSA CAN;Mn;0;NSM;;;;;N;;;;; |
+0F8E;TIBETAN SUBJOINED SIGN MCHU CAN;Mn;0;NSM;;;;;N;;;;; |
+0F8F;TIBETAN SUBJOINED SIGN INVERTED MCHU CAN;Mn;0;NSM;;;;;N;;;;; |
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; |
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; |
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; |
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; |
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; |
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; |
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; |
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; |
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; |
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; |
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; |
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; |
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; |
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; |
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; |
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; |
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; |
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; |
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; |
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; |
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; |
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; |
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; |
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; |
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; |
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; |
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; |
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; |
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;; |
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; |
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; |
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; |
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;;;; |
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;; |
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; |
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; |
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; |
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; |
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; |
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; |
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; |
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;;;; |
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;;;; |
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;;;; |
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;;;; |
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;;;; |
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; |
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; |
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;;;; |
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;;;; |
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;;;; |
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;;;; |
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;;;; |
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;;;; |
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;;;; |
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;;;; |
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;;;; |
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;;;; |
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;;;; |
+0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;;;; |
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;; |
+0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;;;; |
+0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;;;; |
+0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;;;; |
+0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;;;; |
+0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;; |
+0FD5;RIGHT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;; |
+0FD6;LEFT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;; |
+0FD7;RIGHT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;; |
+0FD8;LEFT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;; |
+0FD9;TIBETAN MARK LEADING MCHAN RTAGS;Po;0;L;;;;;N;;;;; |
+0FDA;TIBETAN MARK TRAILING MCHAN RTAGS;Po;0;L;;;;;N;;;;; |
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; |
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; |
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; |
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; |
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; |
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; |
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; |
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; |
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; |
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; |
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; |
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; |
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; |
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; |
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; |
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; |
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; |
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; |
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; |
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; |
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; |
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; |
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; |
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; |
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; |
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; |
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; |
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; |
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; |
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; |
+1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;; |
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; |
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; |
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; |
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; |
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; |
+1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;; |
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; |
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; |
+102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; |
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;; |
+1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;; |
+1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;; |
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; |
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;; |
+103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;; |
+103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; |
+103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; |
+103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;; |
+103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;; |
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; |
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; |
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; |
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; |
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; |
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; |
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; |
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; |
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; |
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; |
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;; |
+105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;; |
+105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;; |
+105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;; |
+105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;; |
+105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;; |
+1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;; |
+1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;; |
+1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;; |
+1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;; |
+1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;; |
+1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;; |
+1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;; |
+1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;; |
+1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;; |
+1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;; |
+106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;; |
+106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;; |
+106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;; |
+106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;; |
+106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;; |
+106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;; |
+1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;; |
+1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;; |
+1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;; |
+1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;; |
+1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;; |
+1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;; |
+1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;; |
+1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;; |
+1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;; |
+1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;; |
+107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;; |
+107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;; |
+107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;; |
+107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;; |
+107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;; |
+107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;; |
+1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;; |
+1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;; |
+1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; |
+1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;; |
+1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;; |
+1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;; |
+1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;; |
+1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;; |
+1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;; |
+1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;; |
+108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;; |
+108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;; |
+108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;; |
+108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;; |
+108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;; |
+108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;; |
+1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+109A;MYANMAR SIGN KHAMTI TONE-1;Mc;0;L;;;;;N;;;;; |
+109B;MYANMAR SIGN KHAMTI TONE-3;Mc;0;L;;;;;N;;;;; |
+109C;MYANMAR VOWEL SIGN AITON A;Mc;0;L;;;;;N;;;;; |
+109D;MYANMAR VOWEL SIGN AITON AI;Mn;0;NSM;;;;;N;;;;; |
+109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;; |
+109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;; |
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;2D00; |
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;2D01; |
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;2D02; |
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;2D03; |
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;2D04; |
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;2D05; |
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;2D06; |
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;2D07; |
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;2D08; |
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;2D09; |
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;2D0A; |
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;2D0B; |
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;2D0C; |
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;2D0D; |
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;2D0E; |
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;2D0F; |
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;2D10; |
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;2D11; |
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;2D12; |
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;2D13; |
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;2D14; |
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;2D15; |
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;2D16; |
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;2D17; |
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;2D18; |
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;2D19; |
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;2D1A; |
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;2D1B; |
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;2D1C; |
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;2D1D; |
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;2D1E; |
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;2D1F; |
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;2D20; |
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;2D21; |
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;2D22; |
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;2D23; |
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;2D24; |
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25; |
+10C7;GEORGIAN CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;2D27; |
+10CD;GEORGIAN CAPITAL LETTER AEN;Lu;0;L;;;;;N;;;;2D2D; |
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; |
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; |
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; |
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; |
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; |
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; |
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; |
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; |
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; |
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; |
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; |
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; |
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; |
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; |
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; |
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; |
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; |
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; |
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; |
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; |
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; |
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; |
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; |
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; |
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; |
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; |
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; |
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; |
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; |
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; |
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; |
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; |
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; |
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; |
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; |
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; |
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; |
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; |
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; |
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; |
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; |
+10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; |
+10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; |
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; |
+10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;; |
+10FD;GEORGIAN LETTER AEN;Lo;0;L;;;;;N;;;;; |
+10FE;GEORGIAN LETTER HARD SIGN;Lo;0;L;;;;;N;;;;; |
+10FF;GEORGIAN LETTER LABIAL SIGN;Lo;0;L;;;;;N;;;;; |
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;; |
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;; |
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;; |
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;; |
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;; |
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;; |
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;; |
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;; |
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;; |
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;; |
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;; |
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; |
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;; |
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;; |
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;; |
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;; |
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;; |
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;; |
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;; |
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; |
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; |
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; |
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; |
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; |
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; |
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; |
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; |
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; |
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; |
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; |
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; |
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; |
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; |
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; |
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; |
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; |
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; |
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; |
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; |
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; |
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; |
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; |
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; |
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; |
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; |
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; |
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; |
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; |
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; |
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; |
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; |
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; |
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; |
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; |
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; |
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; |
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; |
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; |
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; |
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; |
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; |
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; |
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; |
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; |
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; |
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; |
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; |
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; |
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; |
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; |
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; |
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; |
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; |
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; |
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; |
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; |
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; |
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; |
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; |
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; |
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; |
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; |
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; |
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; |
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; |
+115A;HANGUL CHOSEONG KIYEOK-TIKEUT;Lo;0;L;;;;;N;;;;; |
+115B;HANGUL CHOSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; |
+115C;HANGUL CHOSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;; |
+115D;HANGUL CHOSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;; |
+115E;HANGUL CHOSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; |
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; |
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; |
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; |
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; |
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; |
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; |
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; |
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; |
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; |
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; |
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; |
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; |
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; |
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; |
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; |
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; |
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; |
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; |
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; |
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; |
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; |
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; |
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; |
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; |
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; |
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; |
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; |
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; |
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; |
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; |
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; |
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; |
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; |
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; |
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; |
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; |
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; |
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; |
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; |
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; |
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; |
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; |
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; |
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; |
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; |
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; |
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; |
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; |
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; |
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; |
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; |
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; |
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; |
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; |
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; |
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; |
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; |
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; |
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; |
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; |
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; |
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; |
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; |
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; |
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; |
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; |
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; |
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; |
+11A3;HANGUL JUNGSEONG A-EU;Lo;0;L;;;;;N;;;;; |
+11A4;HANGUL JUNGSEONG YA-U;Lo;0;L;;;;;N;;;;; |
+11A5;HANGUL JUNGSEONG YEO-YA;Lo;0;L;;;;;N;;;;; |
+11A6;HANGUL JUNGSEONG O-YA;Lo;0;L;;;;;N;;;;; |
+11A7;HANGUL JUNGSEONG O-YAE;Lo;0;L;;;;;N;;;;; |
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;; |
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;; |
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; |
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;; |
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;; |
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;; |
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;; |
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;; |
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;; |
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;; |
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;; |
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;;;; |
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;; |
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; |
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;; |
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;; |
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; |
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;; |
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;; |
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;; |
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;; |
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;; |
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;; |
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;; |
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;; |
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;; |
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; |
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; |
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; |
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; |
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; |
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; |
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; |
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; |
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; |
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; |
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; |
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; |
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; |
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; |
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; |
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; |
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; |
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; |
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; |
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; |
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; |
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; |
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; |
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; |
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; |
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; |
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; |
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; |
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; |
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; |
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; |
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; |
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; |
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; |
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; |
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; |
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; |
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; |
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; |
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; |
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; |
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; |
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; |
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; |
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; |
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; |
+11FA;HANGUL JONGSEONG KIYEOK-NIEUN;Lo;0;L;;;;;N;;;;; |
+11FB;HANGUL JONGSEONG KIYEOK-PIEUP;Lo;0;L;;;;;N;;;;; |
+11FC;HANGUL JONGSEONG KIYEOK-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+11FD;HANGUL JONGSEONG KIYEOK-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+11FE;HANGUL JONGSEONG KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;; |
+11FF;HANGUL JONGSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; |
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; |
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; |
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; |
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; |
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; |
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; |
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; |
+1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; |
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; |
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; |
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; |
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; |
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; |
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; |
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; |
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; |
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; |
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; |
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; |
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; |
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; |
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; |
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; |
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; |
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; |
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; |
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; |
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; |
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; |
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; |
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; |
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; |
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; |
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; |
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; |
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; |
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; |
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; |
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; |
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; |
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; |
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; |
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; |
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; |
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; |
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; |
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; |
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; |
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; |
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; |
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; |
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; |
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; |
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; |
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; |
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; |
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; |
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; |
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; |
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; |
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; |
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; |
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; |
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; |
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; |
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; |
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; |
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; |
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; |
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; |
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; |
+1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; |
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; |
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; |
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; |
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; |
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; |
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; |
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; |
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; |
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; |
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; |
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; |
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; |
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; |
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; |
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; |
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; |
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; |
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; |
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; |
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; |
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; |
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; |
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; |
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; |
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; |
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; |
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; |
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; |
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; |
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; |
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; |
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; |
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; |
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; |
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; |
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; |
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; |
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; |
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; |
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; |
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; |
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; |
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; |
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; |
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; |
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; |
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; |
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; |
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; |
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; |
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; |
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; |
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; |
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; |
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; |
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; |
+1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; |
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; |
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; |
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; |
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; |
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; |
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; |
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; |
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; |
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; |
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; |
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; |
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; |
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; |
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; |
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; |
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; |
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; |
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; |
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; |
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; |
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; |
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; |
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; |
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; |
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; |
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; |
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; |
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; |
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; |
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; |
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; |
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; |
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; |
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; |
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; |
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; |
+12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; |
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; |
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; |
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; |
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; |
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; |
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; |
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; |
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; |
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; |
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; |
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; |
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; |
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; |
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; |
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; |
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; |
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; |
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; |
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; |
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; |
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; |
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; |
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; |
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; |
+12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; |
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; |
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; |
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; |
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; |
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; |
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; |
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; |
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; |
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; |
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; |
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; |
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; |
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; |
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; |
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; |
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; |
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; |
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; |
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; |
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; |
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; |
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; |
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; |
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; |
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; |
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; |
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; |
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; |
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; |
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; |
+12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; |
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; |
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; |
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; |
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; |
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; |
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; |
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; |
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; |
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; |
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; |
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; |
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; |
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; |
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; |
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; |
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; |
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; |
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; |
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; |
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; |
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; |
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; |
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; |
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; |
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; |
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; |
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; |
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; |
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; |
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; |
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; |
+130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; |
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; |
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; |
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; |
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; |
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; |
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; |
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; |
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; |
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; |
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; |
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; |
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; |
+131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; |
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; |
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; |
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; |
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; |
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; |
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; |
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; |
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; |
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; |
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; |
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; |
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; |
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; |
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; |
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; |
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; |
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; |
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; |
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; |
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; |
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; |
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; |
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; |
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; |
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; |
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; |
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; |
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; |
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; |
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; |
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; |
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; |
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; |
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; |
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; |
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; |
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; |
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; |
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; |
+1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; |
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; |
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; |
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; |
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; |
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; |
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; |
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; |
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; |
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; |
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; |
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; |
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; |
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; |
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; |
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; |
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; |
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; |
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; |
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; |
+135D;ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK;Mn;230;NSM;;;;;N;;;;; |
+135E;ETHIOPIC COMBINING VOWEL LENGTH MARK;Mn;230;NSM;;;;;N;;;;; |
+135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; |
+1360;ETHIOPIC SECTION MARK;Po;0;L;;;;;N;;;;; |
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; |
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; |
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; |
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; |
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; |
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; |
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; |
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; |
+1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; |
+136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; |
+136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; |
+136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; |
+136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; |
+136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; |
+136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; |
+1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; |
+1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; |
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; |
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; |
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; |
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; |
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; |
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; |
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; |
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; |
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; |
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; |
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; |
+1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; |
+1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; |
+1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; |
+1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; |
+1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; |
+1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; |
+1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; |
+1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; |
+1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; |
+1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; |
+138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; |
+138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; |
+138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; |
+138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; |
+138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; |
+138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; |
+1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; |
+1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; |
+1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; |
+1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; |
+1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; |
+1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; |
+1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; |
+1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; |
+1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; |
+1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; |
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; |
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; |
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; |
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; |
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; |
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; |
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; |
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; |
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; |
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; |
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; |
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; |
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; |
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; |
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; |
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; |
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; |
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; |
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; |
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; |
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; |
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; |
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; |
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; |
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; |
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; |
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; |
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; |
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; |
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; |
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; |
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; |
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; |
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; |
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; |
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; |
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; |
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; |
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; |
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; |
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; |
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; |
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; |
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; |
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; |
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; |
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; |
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; |
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; |
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; |
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; |
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; |
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; |
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; |
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; |
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; |
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; |
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; |
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; |
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; |
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; |
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; |
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; |
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; |
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; |
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; |
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; |
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; |
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; |
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; |
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; |
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; |
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; |
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; |
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; |
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; |
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; |
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; |
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; |
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; |
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; |
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; |
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; |
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; |
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; |
+1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;; |
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; |
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; |
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; |
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; |
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; |
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; |
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; |
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; |
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; |
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; |
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; |
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; |
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; |
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; |
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; |
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; |
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; |
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; |
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; |
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; |
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; |
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; |
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; |
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; |
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; |
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; |
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; |
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; |
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; |
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; |
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; |
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; |
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; |
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; |
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; |
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; |
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; |
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; |
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; |
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; |
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; |
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; |
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; |
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; |
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; |
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; |
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; |
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; |
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; |
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; |
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; |
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; |
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; |
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; |
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; |
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; |
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; |
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; |
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; |
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; |
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; |
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; |
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; |
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; |
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; |
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; |
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; |
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; |
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; |
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; |
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; |
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; |
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; |
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; |
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; |
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; |
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; |
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; |
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; |
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; |
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; |
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; |
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; |
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; |
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; |
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; |
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; |
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; |
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; |
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; |
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; |
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; |
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; |
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; |
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; |
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; |
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; |
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; |
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; |
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; |
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; |
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; |
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; |
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; |
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; |
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; |
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; |
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; |
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; |
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; |
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; |
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; |
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; |
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; |
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; |
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; |
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; |
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; |
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; |
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; |
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; |
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; |
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; |
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; |
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; |
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; |
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; |
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; |
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; |
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; |
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; |
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; |
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; |
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; |
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; |
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; |
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; |
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; |
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; |
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; |
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; |
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; |
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; |
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; |
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; |
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; |
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; |
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; |
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; |
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; |
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; |
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; |
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; |
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; |
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; |
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; |
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; |
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; |
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; |
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; |
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; |
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; |
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; |
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; |
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; |
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; |
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; |
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; |
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; |
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; |
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; |
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; |
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; |
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; |
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; |
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; |
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; |
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; |
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; |
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; |
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; |
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; |
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; |
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; |
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; |
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; |
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; |
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; |
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; |
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; |
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; |
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; |
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; |
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; |
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; |
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; |
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; |
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; |
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; |
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; |
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; |
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; |
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; |
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; |
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; |
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; |
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; |
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; |
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; |
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; |
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; |
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; |
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; |
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; |
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; |
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; |
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; |
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; |
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; |
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; |
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; |
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; |
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; |
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; |
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; |
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; |
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; |
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; |
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; |
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; |
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; |
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; |
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; |
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; |
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; |
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; |
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; |
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; |
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; |
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; |
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; |
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; |
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; |
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; |
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; |
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; |
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; |
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; |
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; |
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; |
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; |
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; |
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; |
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; |
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; |
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; |
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; |
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; |
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; |
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; |
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; |
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; |
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; |
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; |
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; |
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; |
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; |
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; |
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; |
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; |
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; |
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; |
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; |
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; |
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; |
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; |
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; |
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; |
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; |
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; |
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; |
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; |
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; |
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; |
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; |
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; |
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; |
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; |
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; |
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; |
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; |
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; |
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; |
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; |
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; |
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; |
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; |
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; |
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; |
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; |
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; |
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; |
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; |
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; |
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; |
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; |
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; |
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; |
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; |
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; |
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; |
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; |
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; |
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; |
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; |
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; |
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; |
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; |
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; |
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; |
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; |
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; |
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; |
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; |
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; |
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; |
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; |
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; |
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; |
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; |
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; |
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; |
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; |
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; |
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; |
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; |
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; |
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; |
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; |
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; |
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; |
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; |
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; |
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; |
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; |
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; |
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; |
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; |
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; |
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; |
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; |
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; |
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; |
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; |
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; |
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; |
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; |
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; |
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; |
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; |
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; |
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; |
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; |
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; |
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; |
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; |
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; |
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; |
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; |
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; |
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; |
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; |
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; |
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; |
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; |
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; |
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; |
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; |
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; |
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; |
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; |
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; |
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; |
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; |
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; |
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; |
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; |
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; |
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; |
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; |
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; |
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; |
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; |
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; |
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; |
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; |
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; |
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; |
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; |
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; |
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; |
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; |
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; |
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; |
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; |
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; |
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; |
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; |
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; |
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; |
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; |
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; |
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; |
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; |
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; |
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; |
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; |
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; |
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; |
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; |
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; |
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; |
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; |
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; |
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; |
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; |
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; |
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; |
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; |
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; |
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; |
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; |
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; |
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; |
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; |
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; |
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; |
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; |
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; |
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; |
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; |
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; |
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; |
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; |
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; |
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; |
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; |
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; |
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; |
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; |
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; |
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; |
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; |
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; |
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; |
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; |
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; |
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; |
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; |
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; |
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; |
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; |
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; |
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; |
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; |
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; |
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; |
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; |
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; |
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; |
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; |
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; |
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; |
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; |
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; |
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; |
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; |
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; |
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; |
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; |
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; |
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; |
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; |
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; |
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; |
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; |
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; |
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; |
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; |
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; |
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; |
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; |
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; |
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; |
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; |
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; |
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; |
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; |
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; |
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; |
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; |
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; |
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; |
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; |
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; |
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; |
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; |
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; |
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; |
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; |
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; |
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; |
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; |
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; |
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; |
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; |
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; |
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; |
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; |
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; |
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; |
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; |
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; |
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; |
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; |
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; |
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; |
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; |
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; |
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; |
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; |
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; |
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; |
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; |
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; |
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; |
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; |
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; |
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; |
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; |
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; |
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; |
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; |
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; |
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; |
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; |
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; |
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; |
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; |
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; |
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; |
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; |
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; |
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; |
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; |
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; |
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; |
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; |
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; |
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; |
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; |
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; |
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; |
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; |
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; |
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; |
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; |
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; |
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; |
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; |
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; |
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; |
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; |
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; |
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; |
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; |
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; |
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; |
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; |
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; |
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; |
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; |
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; |
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; |
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; |
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; |
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; |
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; |
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; |
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; |
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; |
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; |
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; |
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; |
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; |
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; |
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; |
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; |
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; |
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; |
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; |
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; |
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; |
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; |
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; |
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; |
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; |
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; |
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; |
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; |
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; |
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; |
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; |
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; |
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; |
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; |
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; |
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; |
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; |
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; |
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; |
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; |
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; |
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; |
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; |
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; |
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; |
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; |
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; |
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; |
+1677;CANADIAN SYLLABICS WOODS-CREE THWEE;Lo;0;L;;;;;N;;;;; |
+1678;CANADIAN SYLLABICS WOODS-CREE THWI;Lo;0;L;;;;;N;;;;; |
+1679;CANADIAN SYLLABICS WOODS-CREE THWII;Lo;0;L;;;;;N;;;;; |
+167A;CANADIAN SYLLABICS WOODS-CREE THWO;Lo;0;L;;;;;N;;;;; |
+167B;CANADIAN SYLLABICS WOODS-CREE THWOO;Lo;0;L;;;;;N;;;;; |
+167C;CANADIAN SYLLABICS WOODS-CREE THWA;Lo;0;L;;;;;N;;;;; |
+167D;CANADIAN SYLLABICS WOODS-CREE THWAA;Lo;0;L;;;;;N;;;;; |
+167E;CANADIAN SYLLABICS WOODS-CREE FINAL TH;Lo;0;L;;;;;N;;;;; |
+167F;CANADIAN SYLLABICS BLACKFOOT W;Lo;0;L;;;;;N;;;;; |
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; |
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; |
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; |
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; |
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; |
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; |
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; |
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; |
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; |
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; |
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; |
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; |
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; |
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; |
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; |
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; |
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; |
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; |
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; |
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; |
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; |
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; |
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; |
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; |
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; |
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; |
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; |
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;; |
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;; |
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; |
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; |
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; |
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; |
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; |
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; |
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; |
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; |
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; |
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; |
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; |
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; |
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; |
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; |
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; |
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; |
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; |
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; |
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; |
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; |
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; |
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; |
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; |
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; |
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; |
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; |
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; |
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; |
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; |
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; |
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; |
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; |
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; |
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; |
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; |
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; |
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; |
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; |
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; |
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; |
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; |
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; |
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; |
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; |
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; |
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; |
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; |
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; |
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; |
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; |
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; |
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; |
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; |
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; |
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; |
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; |
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; |
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; |
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; |
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; |
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; |
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; |
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; |
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; |
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; |
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; |
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; |
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; |
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; |
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; |
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; |
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; |
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; |
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; |
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; |
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; |
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; |
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; |
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;;;; |
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;;;; |
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;;;; |
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; |
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; |
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; |
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; |
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; |
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; |
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; |
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; |
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; |
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; |
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; |
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; |
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; |
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; |
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; |
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; |
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; |
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; |
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; |
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; |
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; |
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; |
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; |
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; |
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; |
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; |
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; |
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; |
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; |
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; |
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; |
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; |
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; |
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; |
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; |
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; |
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; |
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; |
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; |
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; |
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; |
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; |
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; |
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; |
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; |
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; |
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; |
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; |
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; |
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; |
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; |
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; |
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; |
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; |
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; |
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; |
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; |
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; |
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; |
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; |
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; |
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; |
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; |
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; |
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; |
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; |
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; |
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; |
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; |
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; |
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; |
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; |
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; |
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; |
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; |
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; |
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; |
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; |
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; |
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; |
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; |
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; |
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; |
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; |
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; |
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; |
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; |
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; |
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; |
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; |
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; |
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; |
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; |
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; |
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; |
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; |
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; |
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; |
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; |
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; |
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; |
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;; |
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;; |
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; |
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; |
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; |
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; |
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; |
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; |
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; |
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; |
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; |
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; |
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; |
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; |
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; |
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; |
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; |
+17B4;KHMER VOWEL INHERENT AQ;Mn;0;NSM;;;;;N;;;;; |
+17B5;KHMER VOWEL INHERENT AA;Mn;0;NSM;;;;;N;;;;; |
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; |
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; |
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; |
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; |
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; |
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; |
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; |
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; |
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; |
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; |
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; |
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; |
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; |
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; |
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; |
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; |
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; |
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; |
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; |
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; |
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; |
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;; |
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; |
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; |
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; |
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; |
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;; |
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; |
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; |
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; |
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; |
+17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; |
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; |
+17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; |
+17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; |
+17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; |
+17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; |
+17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; |
+17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; |
+17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; |
+17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; |
+17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; |
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; |
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; |
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; |
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; |
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; |
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; |
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; |
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; |
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; |
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; |
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; |
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; |
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; |
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; |
+180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; |
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; |
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; |
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; |
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; |
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; |
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; |
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; |
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; |
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; |
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; |
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; |
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; |
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; |
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; |
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; |
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; |
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; |
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; |
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; |
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; |
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; |
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; |
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; |
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; |
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; |
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; |
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; |
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; |
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; |
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; |
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; |
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; |
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; |
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; |
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; |
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; |
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; |
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; |
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; |
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; |
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; |
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; |
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; |
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; |
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; |
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; |
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; |
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; |
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; |
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; |
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; |
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; |
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; |
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; |
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; |
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; |
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; |
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; |
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; |
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; |
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; |
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; |
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; |
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; |
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; |
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; |
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; |
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; |
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; |
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; |
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; |
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; |
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; |
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; |
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; |
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; |
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; |
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; |
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; |
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; |
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; |
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; |
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; |
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; |
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; |
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; |
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; |
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; |
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; |
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; |
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; |
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; |
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; |
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; |
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; |
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; |
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; |
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; |
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; |
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; |
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; |
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; |
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; |
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; |
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; |
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; |
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; |
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; |
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; |
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; |
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; |
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; |
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; |
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; |
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; |
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; |
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; |
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; |
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; |
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; |
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; |
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; |
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; |
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; |
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; |
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; |
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; |
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; |
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; |
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; |
+18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;; |
+18B0;CANADIAN SYLLABICS OY;Lo;0;L;;;;;N;;;;; |
+18B1;CANADIAN SYLLABICS AY;Lo;0;L;;;;;N;;;;; |
+18B2;CANADIAN SYLLABICS AAY;Lo;0;L;;;;;N;;;;; |
+18B3;CANADIAN SYLLABICS WAY;Lo;0;L;;;;;N;;;;; |
+18B4;CANADIAN SYLLABICS POY;Lo;0;L;;;;;N;;;;; |
+18B5;CANADIAN SYLLABICS PAY;Lo;0;L;;;;;N;;;;; |
+18B6;CANADIAN SYLLABICS PWOY;Lo;0;L;;;;;N;;;;; |
+18B7;CANADIAN SYLLABICS TAY;Lo;0;L;;;;;N;;;;; |
+18B8;CANADIAN SYLLABICS KAY;Lo;0;L;;;;;N;;;;; |
+18B9;CANADIAN SYLLABICS KWAY;Lo;0;L;;;;;N;;;;; |
+18BA;CANADIAN SYLLABICS MAY;Lo;0;L;;;;;N;;;;; |
+18BB;CANADIAN SYLLABICS NOY;Lo;0;L;;;;;N;;;;; |
+18BC;CANADIAN SYLLABICS NAY;Lo;0;L;;;;;N;;;;; |
+18BD;CANADIAN SYLLABICS LAY;Lo;0;L;;;;;N;;;;; |
+18BE;CANADIAN SYLLABICS SOY;Lo;0;L;;;;;N;;;;; |
+18BF;CANADIAN SYLLABICS SAY;Lo;0;L;;;;;N;;;;; |
+18C0;CANADIAN SYLLABICS SHOY;Lo;0;L;;;;;N;;;;; |
+18C1;CANADIAN SYLLABICS SHAY;Lo;0;L;;;;;N;;;;; |
+18C2;CANADIAN SYLLABICS SHWOY;Lo;0;L;;;;;N;;;;; |
+18C3;CANADIAN SYLLABICS YOY;Lo;0;L;;;;;N;;;;; |
+18C4;CANADIAN SYLLABICS YAY;Lo;0;L;;;;;N;;;;; |
+18C5;CANADIAN SYLLABICS RAY;Lo;0;L;;;;;N;;;;; |
+18C6;CANADIAN SYLLABICS NWI;Lo;0;L;;;;;N;;;;; |
+18C7;CANADIAN SYLLABICS OJIBWAY NWI;Lo;0;L;;;;;N;;;;; |
+18C8;CANADIAN SYLLABICS NWII;Lo;0;L;;;;;N;;;;; |
+18C9;CANADIAN SYLLABICS OJIBWAY NWII;Lo;0;L;;;;;N;;;;; |
+18CA;CANADIAN SYLLABICS NWO;Lo;0;L;;;;;N;;;;; |
+18CB;CANADIAN SYLLABICS OJIBWAY NWO;Lo;0;L;;;;;N;;;;; |
+18CC;CANADIAN SYLLABICS NWOO;Lo;0;L;;;;;N;;;;; |
+18CD;CANADIAN SYLLABICS OJIBWAY NWOO;Lo;0;L;;;;;N;;;;; |
+18CE;CANADIAN SYLLABICS RWEE;Lo;0;L;;;;;N;;;;; |
+18CF;CANADIAN SYLLABICS RWI;Lo;0;L;;;;;N;;;;; |
+18D0;CANADIAN SYLLABICS RWII;Lo;0;L;;;;;N;;;;; |
+18D1;CANADIAN SYLLABICS RWO;Lo;0;L;;;;;N;;;;; |
+18D2;CANADIAN SYLLABICS RWOO;Lo;0;L;;;;;N;;;;; |
+18D3;CANADIAN SYLLABICS RWA;Lo;0;L;;;;;N;;;;; |
+18D4;CANADIAN SYLLABICS OJIBWAY P;Lo;0;L;;;;;N;;;;; |
+18D5;CANADIAN SYLLABICS OJIBWAY T;Lo;0;L;;;;;N;;;;; |
+18D6;CANADIAN SYLLABICS OJIBWAY K;Lo;0;L;;;;;N;;;;; |
+18D7;CANADIAN SYLLABICS OJIBWAY C;Lo;0;L;;;;;N;;;;; |
+18D8;CANADIAN SYLLABICS OJIBWAY M;Lo;0;L;;;;;N;;;;; |
+18D9;CANADIAN SYLLABICS OJIBWAY N;Lo;0;L;;;;;N;;;;; |
+18DA;CANADIAN SYLLABICS OJIBWAY S;Lo;0;L;;;;;N;;;;; |
+18DB;CANADIAN SYLLABICS OJIBWAY SH;Lo;0;L;;;;;N;;;;; |
+18DC;CANADIAN SYLLABICS EASTERN W;Lo;0;L;;;;;N;;;;; |
+18DD;CANADIAN SYLLABICS WESTERN W;Lo;0;L;;;;;N;;;;; |
+18DE;CANADIAN SYLLABICS FINAL SMALL RING;Lo;0;L;;;;;N;;;;; |
+18DF;CANADIAN SYLLABICS FINAL RAISED DOT;Lo;0;L;;;;;N;;;;; |
+18E0;CANADIAN SYLLABICS R-CREE RWE;Lo;0;L;;;;;N;;;;; |
+18E1;CANADIAN SYLLABICS WEST-CREE LOO;Lo;0;L;;;;;N;;;;; |
+18E2;CANADIAN SYLLABICS WEST-CREE LAA;Lo;0;L;;;;;N;;;;; |
+18E3;CANADIAN SYLLABICS THWE;Lo;0;L;;;;;N;;;;; |
+18E4;CANADIAN SYLLABICS THWA;Lo;0;L;;;;;N;;;;; |
+18E5;CANADIAN SYLLABICS TTHWE;Lo;0;L;;;;;N;;;;; |
+18E6;CANADIAN SYLLABICS TTHOO;Lo;0;L;;;;;N;;;;; |
+18E7;CANADIAN SYLLABICS TTHAA;Lo;0;L;;;;;N;;;;; |
+18E8;CANADIAN SYLLABICS TLHWE;Lo;0;L;;;;;N;;;;; |
+18E9;CANADIAN SYLLABICS TLHOO;Lo;0;L;;;;;N;;;;; |
+18EA;CANADIAN SYLLABICS SAYISI SHWE;Lo;0;L;;;;;N;;;;; |
+18EB;CANADIAN SYLLABICS SAYISI SHOO;Lo;0;L;;;;;N;;;;; |
+18EC;CANADIAN SYLLABICS SAYISI HOO;Lo;0;L;;;;;N;;;;; |
+18ED;CANADIAN SYLLABICS CARRIER GWU;Lo;0;L;;;;;N;;;;; |
+18EE;CANADIAN SYLLABICS CARRIER DENE GEE;Lo;0;L;;;;;N;;;;; |
+18EF;CANADIAN SYLLABICS CARRIER GAA;Lo;0;L;;;;;N;;;;; |
+18F0;CANADIAN SYLLABICS CARRIER GWA;Lo;0;L;;;;;N;;;;; |
+18F1;CANADIAN SYLLABICS SAYISI JUU;Lo;0;L;;;;;N;;;;; |
+18F2;CANADIAN SYLLABICS CARRIER JWA;Lo;0;L;;;;;N;;;;; |
+18F3;CANADIAN SYLLABICS BEAVER DENE L;Lo;0;L;;;;;N;;;;; |
+18F4;CANADIAN SYLLABICS BEAVER DENE R;Lo;0;L;;;;;N;;;;; |
+18F5;CANADIAN SYLLABICS CARRIER DENTAL S;Lo;0;L;;;;;N;;;;; |
+1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; |
+1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; |
+1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; |
+1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; |
+1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; |
+1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; |
+1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; |
+1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; |
+190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; |
+190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; |
+190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; |
+190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; |
+190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; |
+190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; |
+1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; |
+1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; |
+1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; |
+1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; |
+1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; |
+1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; |
+1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; |
+1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; |
+1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; |
+1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; |
+191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; |
+191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; |
+191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; |
+1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; |
+1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; |
+1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; |
+1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; |
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; |
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;; |
+1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; |
+1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; |
+1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; |
+1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; |
+1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; |
+1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; |
+1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; |
+1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; |
+1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; |
+193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; |
+193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; |
+1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; |
+1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; |
+1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; |
+1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; |
+1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; |
+1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; |
+1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; |
+1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; |
+1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; |
+1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; |
+1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; |
+1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; |
+195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; |
+195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; |
+195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; |
+195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; |
+195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; |
+195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; |
+1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; |
+1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; |
+1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; |
+1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; |
+1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; |
+1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; |
+1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; |
+1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; |
+1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; |
+196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; |
+196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; |
+196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; |
+196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; |
+1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; |
+1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; |
+1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; |
+1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; |
+1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; |
+1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; |
+1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; |
+1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; |
+1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; |
+1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; |
+1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; |
+1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; |
+1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; |
+1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; |
+1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; |
+198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; |
+198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; |
+198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; |
+198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; |
+198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; |
+198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; |
+1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; |
+1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; |
+1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; |
+1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; |
+1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; |
+1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; |
+1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; |
+1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; |
+1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; |
+1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; |
+199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; |
+199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; |
+199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; |
+199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; |
+199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; |
+199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; |
+19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; |
+19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; |
+19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; |
+19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; |
+19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; |
+19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; |
+19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; |
+19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; |
+19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; |
+19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; |
+19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;; |
+19AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;; |
+19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; |
+19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; |
+19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; |
+19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; |
+19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; |
+19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; |
+19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; |
+19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; |
+19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; |
+19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; |
+19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; |
+19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; |
+19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; |
+19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; |
+19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; |
+19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; |
+19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; |
+19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; |
+19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; |
+19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; |
+19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; |
+19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+19DA;NEW TAI LUE THAM DIGIT ONE;No;0;L;;;1;1;N;;;;; |
+19DE;NEW TAI LUE SIGN LAE;So;0;ON;;;;;N;;;;; |
+19DF;NEW TAI LUE SIGN LAEV;So;0;ON;;;;;N;;;;; |
+19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; |
+19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; |
+19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; |
+19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; |
+19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; |
+19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; |
+19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; |
+19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; |
+19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; |
+19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; |
+19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; |
+19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; |
+19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; |
+19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; |
+19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; |
+19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; |
+19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; |
+19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; |
+19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; |
+19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; |
+19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; |
+19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; |
+19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; |
+19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; |
+19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; |
+19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; |
+19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; |
+19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; |
+19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; |
+19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; |
+19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; |
+19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; |
+1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; |
+1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; |
+1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; |
+1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; |
+1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; |
+1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; |
+1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; |
+1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; |
+1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; |
+1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; |
+1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; |
+1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; |
+1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; |
+1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; |
+1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; |
+1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; |
+1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; |
+1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; |
+1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; |
+1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; |
+1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; |
+1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; |
+1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; |
+1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; |
+1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; |
+1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; |
+1A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;; |
+1A21;TAI THAM LETTER HIGH KHA;Lo;0;L;;;;;N;;;;; |
+1A22;TAI THAM LETTER HIGH KXA;Lo;0;L;;;;;N;;;;; |
+1A23;TAI THAM LETTER LOW KA;Lo;0;L;;;;;N;;;;; |
+1A24;TAI THAM LETTER LOW KXA;Lo;0;L;;;;;N;;;;; |
+1A25;TAI THAM LETTER LOW KHA;Lo;0;L;;;;;N;;;;; |
+1A26;TAI THAM LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1A27;TAI THAM LETTER HIGH CA;Lo;0;L;;;;;N;;;;; |
+1A28;TAI THAM LETTER HIGH CHA;Lo;0;L;;;;;N;;;;; |
+1A29;TAI THAM LETTER LOW CA;Lo;0;L;;;;;N;;;;; |
+1A2A;TAI THAM LETTER LOW SA;Lo;0;L;;;;;N;;;;; |
+1A2B;TAI THAM LETTER LOW CHA;Lo;0;L;;;;;N;;;;; |
+1A2C;TAI THAM LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1A2D;TAI THAM LETTER RATA;Lo;0;L;;;;;N;;;;; |
+1A2E;TAI THAM LETTER HIGH RATHA;Lo;0;L;;;;;N;;;;; |
+1A2F;TAI THAM LETTER DA;Lo;0;L;;;;;N;;;;; |
+1A30;TAI THAM LETTER LOW RATHA;Lo;0;L;;;;;N;;;;; |
+1A31;TAI THAM LETTER RANA;Lo;0;L;;;;;N;;;;; |
+1A32;TAI THAM LETTER HIGH TA;Lo;0;L;;;;;N;;;;; |
+1A33;TAI THAM LETTER HIGH THA;Lo;0;L;;;;;N;;;;; |
+1A34;TAI THAM LETTER LOW TA;Lo;0;L;;;;;N;;;;; |
+1A35;TAI THAM LETTER LOW THA;Lo;0;L;;;;;N;;;;; |
+1A36;TAI THAM LETTER NA;Lo;0;L;;;;;N;;;;; |
+1A37;TAI THAM LETTER BA;Lo;0;L;;;;;N;;;;; |
+1A38;TAI THAM LETTER HIGH PA;Lo;0;L;;;;;N;;;;; |
+1A39;TAI THAM LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; |
+1A3A;TAI THAM LETTER HIGH FA;Lo;0;L;;;;;N;;;;; |
+1A3B;TAI THAM LETTER LOW PA;Lo;0;L;;;;;N;;;;; |
+1A3C;TAI THAM LETTER LOW FA;Lo;0;L;;;;;N;;;;; |
+1A3D;TAI THAM LETTER LOW PHA;Lo;0;L;;;;;N;;;;; |
+1A3E;TAI THAM LETTER MA;Lo;0;L;;;;;N;;;;; |
+1A3F;TAI THAM LETTER LOW YA;Lo;0;L;;;;;N;;;;; |
+1A40;TAI THAM LETTER HIGH YA;Lo;0;L;;;;;N;;;;; |
+1A41;TAI THAM LETTER RA;Lo;0;L;;;;;N;;;;; |
+1A42;TAI THAM LETTER RUE;Lo;0;L;;;;;N;;;;; |
+1A43;TAI THAM LETTER LA;Lo;0;L;;;;;N;;;;; |
+1A44;TAI THAM LETTER LUE;Lo;0;L;;;;;N;;;;; |
+1A45;TAI THAM LETTER WA;Lo;0;L;;;;;N;;;;; |
+1A46;TAI THAM LETTER HIGH SHA;Lo;0;L;;;;;N;;;;; |
+1A47;TAI THAM LETTER HIGH SSA;Lo;0;L;;;;;N;;;;; |
+1A48;TAI THAM LETTER HIGH SA;Lo;0;L;;;;;N;;;;; |
+1A49;TAI THAM LETTER HIGH HA;Lo;0;L;;;;;N;;;;; |
+1A4A;TAI THAM LETTER LLA;Lo;0;L;;;;;N;;;;; |
+1A4B;TAI THAM LETTER A;Lo;0;L;;;;;N;;;;; |
+1A4C;TAI THAM LETTER LOW HA;Lo;0;L;;;;;N;;;;; |
+1A4D;TAI THAM LETTER I;Lo;0;L;;;;;N;;;;; |
+1A4E;TAI THAM LETTER II;Lo;0;L;;;;;N;;;;; |
+1A4F;TAI THAM LETTER U;Lo;0;L;;;;;N;;;;; |
+1A50;TAI THAM LETTER UU;Lo;0;L;;;;;N;;;;; |
+1A51;TAI THAM LETTER EE;Lo;0;L;;;;;N;;;;; |
+1A52;TAI THAM LETTER OO;Lo;0;L;;;;;N;;;;; |
+1A53;TAI THAM LETTER LAE;Lo;0;L;;;;;N;;;;; |
+1A54;TAI THAM LETTER GREAT SA;Lo;0;L;;;;;N;;;;; |
+1A55;TAI THAM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; |
+1A56;TAI THAM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;; |
+1A57;TAI THAM CONSONANT SIGN LA TANG LAI;Mc;0;L;;;;;N;;;;; |
+1A58;TAI THAM SIGN MAI KANG LAI;Mn;0;NSM;;;;;N;;;;; |
+1A59;TAI THAM CONSONANT SIGN FINAL NGA;Mn;0;NSM;;;;;N;;;;; |
+1A5A;TAI THAM CONSONANT SIGN LOW PA;Mn;0;NSM;;;;;N;;;;; |
+1A5B;TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA;Mn;0;NSM;;;;;N;;;;; |
+1A5C;TAI THAM CONSONANT SIGN MA;Mn;0;NSM;;;;;N;;;;; |
+1A5D;TAI THAM CONSONANT SIGN BA;Mn;0;NSM;;;;;N;;;;; |
+1A5E;TAI THAM CONSONANT SIGN SA;Mn;0;NSM;;;;;N;;;;; |
+1A60;TAI THAM SIGN SAKOT;Mn;9;NSM;;;;;N;;;;; |
+1A61;TAI THAM VOWEL SIGN A;Mc;0;L;;;;;N;;;;; |
+1A62;TAI THAM VOWEL SIGN MAI SAT;Mn;0;NSM;;;;;N;;;;; |
+1A63;TAI THAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+1A64;TAI THAM VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; |
+1A65;TAI THAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+1A66;TAI THAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+1A67;TAI THAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; |
+1A68;TAI THAM VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;; |
+1A69;TAI THAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1A6A;TAI THAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+1A6B;TAI THAM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+1A6C;TAI THAM VOWEL SIGN OA BELOW;Mn;0;NSM;;;;;N;;;;; |
+1A6D;TAI THAM VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; |
+1A6E;TAI THAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+1A6F;TAI THAM VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; |
+1A70;TAI THAM VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; |
+1A71;TAI THAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+1A72;TAI THAM VOWEL SIGN THAM AI;Mc;0;L;;;;;N;;;;; |
+1A73;TAI THAM VOWEL SIGN OA ABOVE;Mn;0;NSM;;;;;N;;;;; |
+1A74;TAI THAM SIGN MAI KANG;Mn;0;NSM;;;;;N;;;;; |
+1A75;TAI THAM SIGN TONE-1;Mn;230;NSM;;;;;N;;;;; |
+1A76;TAI THAM SIGN TONE-2;Mn;230;NSM;;;;;N;;;;; |
+1A77;TAI THAM SIGN KHUEN TONE-3;Mn;230;NSM;;;;;N;;;;; |
+1A78;TAI THAM SIGN KHUEN TONE-4;Mn;230;NSM;;;;;N;;;;; |
+1A79;TAI THAM SIGN KHUEN TONE-5;Mn;230;NSM;;;;;N;;;;; |
+1A7A;TAI THAM SIGN RA HAAM;Mn;230;NSM;;;;;N;;;;; |
+1A7B;TAI THAM SIGN MAI SAM;Mn;230;NSM;;;;;N;;;;; |
+1A7C;TAI THAM SIGN KHUEN-LUE KARAN;Mn;230;NSM;;;;;N;;;;; |
+1A7F;TAI THAM COMBINING CRYPTOGRAMMIC DOT;Mn;220;NSM;;;;;N;;;;; |
+1A80;TAI THAM HORA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1A81;TAI THAM HORA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1A82;TAI THAM HORA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1A83;TAI THAM HORA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1A84;TAI THAM HORA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1A85;TAI THAM HORA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1A86;TAI THAM HORA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1A87;TAI THAM HORA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1A88;TAI THAM HORA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1A89;TAI THAM HORA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1A90;TAI THAM THAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1A91;TAI THAM THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1A92;TAI THAM THAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1A93;TAI THAM THAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1A94;TAI THAM THAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1A95;TAI THAM THAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1A96;TAI THAM THAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1A97;TAI THAM THAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1A98;TAI THAM THAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1A99;TAI THAM THAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1AA0;TAI THAM SIGN WIANG;Po;0;L;;;;;N;;;;; |
+1AA1;TAI THAM SIGN WIANGWAAK;Po;0;L;;;;;N;;;;; |
+1AA2;TAI THAM SIGN SAWAN;Po;0;L;;;;;N;;;;; |
+1AA3;TAI THAM SIGN KEOW;Po;0;L;;;;;N;;;;; |
+1AA4;TAI THAM SIGN HOY;Po;0;L;;;;;N;;;;; |
+1AA5;TAI THAM SIGN DOKMAI;Po;0;L;;;;;N;;;;; |
+1AA6;TAI THAM SIGN REVERSED ROTATED RANA;Po;0;L;;;;;N;;;;; |
+1AA7;TAI THAM SIGN MAI YAMOK;Lm;0;L;;;;;N;;;;; |
+1AA8;TAI THAM SIGN KAAN;Po;0;L;;;;;N;;;;; |
+1AA9;TAI THAM SIGN KAANKUU;Po;0;L;;;;;N;;;;; |
+1AAA;TAI THAM SIGN SATKAAN;Po;0;L;;;;;N;;;;; |
+1AAB;TAI THAM SIGN SATKAANKUU;Po;0;L;;;;;N;;;;; |
+1AAC;TAI THAM SIGN HANG;Po;0;L;;;;;N;;;;; |
+1AAD;TAI THAM SIGN CAANG;Po;0;L;;;;;N;;;;; |
+1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;; |
+1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;; |
+1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;; |
+1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;;;; |
+1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;;;; |
+1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;;;; |
+1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;;;; |
+1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;;;; |
+1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;;;; |
+1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;;;; |
+1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;;;; |
+1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;;;; |
+1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;;;; |
+1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;;;; |
+1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;;;; |
+1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;;;; |
+1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;;;; |
+1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;;;; |
+1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;;;; |
+1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;; |
+1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;; |
+1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;;;; |
+1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;; |
+1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;;;; |
+1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;; |
+1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;;;; |
+1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;;;; |
+1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;;;; |
+1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;;;; |
+1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;; |
+1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;;;; |
+1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;; |
+1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;;;; |
+1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;; |
+1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;; |
+1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;;;; |
+1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;; |
+1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;;;; |
+1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;; |
+1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;; |
+1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;; |
+1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;; |
+1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;; |
+1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;;;; |
+1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;;;; |
+1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;; |
+1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;; |
+1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;;;; |
+1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;;;; |
+1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;;;; |
+1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;;;; |
+1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;; |
+1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;;;; |
+1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;;;; |
+1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;;;; |
+1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;;;; |
+1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;;;; |
+1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;; |
+1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;;;; |
+1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;;;; |
+1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;;;; |
+1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;; |
+1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;;;; |
+1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;;;; |
+1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;; |
+1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;; |
+1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;; |
+1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;; |
+1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; |
+1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; |
+1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; |
+1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1B5A;BALINESE PANTI;Po;0;L;;;;;N;;;;; |
+1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;;;; |
+1B5C;BALINESE WINDU;Po;0;L;;;;;N;;;;; |
+1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;;;; |
+1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;;;; |
+1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;;;; |
+1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;;;; |
+1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;; |
+1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;; |
+1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;; |
+1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;; |
+1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;; |
+1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;; |
+1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;; |
+1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;; |
+1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;; |
+1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;; |
+1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;; |
+1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;; |
+1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;; |
+1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;; |
+1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;; |
+1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; |
+1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; |
+1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;; |
+1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;; |
+1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;; |
+1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;; |
+1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;; |
+1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;; |
+1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;; |
+1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;; |
+1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; |
+1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; |
+1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; |
+1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; |
+1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; |
+1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; |
+1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;; |
+1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;; |
+1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;; |
+1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;; |
+1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;; |
+1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;; |
+1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;; |
+1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;; |
+1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;; |
+1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;; |
+1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;; |
+1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;; |
+1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;; |
+1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;; |
+1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;; |
+1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;; |
+1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;; |
+1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;; |
+1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;; |
+1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;; |
+1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;; |
+1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;; |
+1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;; |
+1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;; |
+1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;; |
+1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;; |
+1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;; |
+1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;; |
+1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;; |
+1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;; |
+1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;; |
+1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;; |
+1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;; |
+1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;; |
+1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;; |
+1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;; |
+1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;; |
+1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;; |
+1BAB;SUNDANESE SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+1BAC;SUNDANESE CONSONANT SIGN PASANGAN MA;Mc;0;L;;;;;N;;;;; |
+1BAD;SUNDANESE CONSONANT SIGN PASANGAN WA;Mc;0;L;;;;;N;;;;; |
+1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;; |
+1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1BBA;SUNDANESE AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+1BBB;SUNDANESE LETTER REU;Lo;0;L;;;;;N;;;;; |
+1BBC;SUNDANESE LETTER LEU;Lo;0;L;;;;;N;;;;; |
+1BBD;SUNDANESE LETTER BHA;Lo;0;L;;;;;N;;;;; |
+1BBE;SUNDANESE LETTER FINAL K;Lo;0;L;;;;;N;;;;; |
+1BBF;SUNDANESE LETTER FINAL M;Lo;0;L;;;;;N;;;;; |
+1BC0;BATAK LETTER A;Lo;0;L;;;;;N;;;;; |
+1BC1;BATAK LETTER SIMALUNGUN A;Lo;0;L;;;;;N;;;;; |
+1BC2;BATAK LETTER HA;Lo;0;L;;;;;N;;;;; |
+1BC3;BATAK LETTER SIMALUNGUN HA;Lo;0;L;;;;;N;;;;; |
+1BC4;BATAK LETTER MANDAILING HA;Lo;0;L;;;;;N;;;;; |
+1BC5;BATAK LETTER BA;Lo;0;L;;;;;N;;;;; |
+1BC6;BATAK LETTER KARO BA;Lo;0;L;;;;;N;;;;; |
+1BC7;BATAK LETTER PA;Lo;0;L;;;;;N;;;;; |
+1BC8;BATAK LETTER SIMALUNGUN PA;Lo;0;L;;;;;N;;;;; |
+1BC9;BATAK LETTER NA;Lo;0;L;;;;;N;;;;; |
+1BCA;BATAK LETTER MANDAILING NA;Lo;0;L;;;;;N;;;;; |
+1BCB;BATAK LETTER WA;Lo;0;L;;;;;N;;;;; |
+1BCC;BATAK LETTER SIMALUNGUN WA;Lo;0;L;;;;;N;;;;; |
+1BCD;BATAK LETTER PAKPAK WA;Lo;0;L;;;;;N;;;;; |
+1BCE;BATAK LETTER GA;Lo;0;L;;;;;N;;;;; |
+1BCF;BATAK LETTER SIMALUNGUN GA;Lo;0;L;;;;;N;;;;; |
+1BD0;BATAK LETTER JA;Lo;0;L;;;;;N;;;;; |
+1BD1;BATAK LETTER DA;Lo;0;L;;;;;N;;;;; |
+1BD2;BATAK LETTER RA;Lo;0;L;;;;;N;;;;; |
+1BD3;BATAK LETTER SIMALUNGUN RA;Lo;0;L;;;;;N;;;;; |
+1BD4;BATAK LETTER MA;Lo;0;L;;;;;N;;;;; |
+1BD5;BATAK LETTER SIMALUNGUN MA;Lo;0;L;;;;;N;;;;; |
+1BD6;BATAK LETTER SOUTHERN TA;Lo;0;L;;;;;N;;;;; |
+1BD7;BATAK LETTER NORTHERN TA;Lo;0;L;;;;;N;;;;; |
+1BD8;BATAK LETTER SA;Lo;0;L;;;;;N;;;;; |
+1BD9;BATAK LETTER SIMALUNGUN SA;Lo;0;L;;;;;N;;;;; |
+1BDA;BATAK LETTER MANDAILING SA;Lo;0;L;;;;;N;;;;; |
+1BDB;BATAK LETTER YA;Lo;0;L;;;;;N;;;;; |
+1BDC;BATAK LETTER SIMALUNGUN YA;Lo;0;L;;;;;N;;;;; |
+1BDD;BATAK LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1BDE;BATAK LETTER LA;Lo;0;L;;;;;N;;;;; |
+1BDF;BATAK LETTER SIMALUNGUN LA;Lo;0;L;;;;;N;;;;; |
+1BE0;BATAK LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1BE1;BATAK LETTER CA;Lo;0;L;;;;;N;;;;; |
+1BE2;BATAK LETTER NDA;Lo;0;L;;;;;N;;;;; |
+1BE3;BATAK LETTER MBA;Lo;0;L;;;;;N;;;;; |
+1BE4;BATAK LETTER I;Lo;0;L;;;;;N;;;;; |
+1BE5;BATAK LETTER U;Lo;0;L;;;;;N;;;;; |
+1BE6;BATAK SIGN TOMPI;Mn;7;NSM;;;;;N;;;;; |
+1BE7;BATAK VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+1BE8;BATAK VOWEL SIGN PAKPAK E;Mn;0;NSM;;;;;N;;;;; |
+1BE9;BATAK VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; |
+1BEA;BATAK VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+1BEB;BATAK VOWEL SIGN KARO I;Mc;0;L;;;;;N;;;;; |
+1BEC;BATAK VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+1BED;BATAK VOWEL SIGN KARO O;Mn;0;NSM;;;;;N;;;;; |
+1BEE;BATAK VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+1BEF;BATAK VOWEL SIGN U FOR SIMALUNGUN SA;Mn;0;NSM;;;;;N;;;;; |
+1BF0;BATAK CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;; |
+1BF1;BATAK CONSONANT SIGN H;Mn;0;NSM;;;;;N;;;;; |
+1BF2;BATAK PANGOLAT;Mc;9;L;;;;;N;;;;; |
+1BF3;BATAK PANONGONAN;Mc;9;L;;;;;N;;;;; |
+1BFC;BATAK SYMBOL BINDU NA METEK;Po;0;L;;;;;N;;;;; |
+1BFD;BATAK SYMBOL BINDU PINARBORAS;Po;0;L;;;;;N;;;;; |
+1BFE;BATAK SYMBOL BINDU JUDUL;Po;0;L;;;;;N;;;;; |
+1BFF;BATAK SYMBOL BINDU PANGOLAT;Po;0;L;;;;;N;;;;; |
+1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;; |
+1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;; |
+1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;; |
+1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;; |
+1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;; |
+1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;; |
+1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;; |
+1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;; |
+1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;; |
+1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;; |
+1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;; |
+1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;; |
+1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;; |
+1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;; |
+1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;; |
+1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;; |
+1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;; |
+1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;; |
+1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;; |
+1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;; |
+1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;; |
+1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;; |
+1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;; |
+1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;; |
+1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;; |
+1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;; |
+1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;; |
+1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;; |
+1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;; |
+1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;; |
+1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;; |
+1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;; |
+1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;; |
+1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; |
+1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; |
+1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; |
+1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; |
+1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;; |
+1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;; |
+1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;; |
+1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; |
+1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;; |
+1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; |
+1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;; |
+1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;; |
+1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;; |
+1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;; |
+1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;; |
+1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;; |
+1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;; |
+1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;; |
+1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;; |
+1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;; |
+1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;; |
+1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;; |
+1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;; |
+1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;; |
+1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;; |
+1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;; |
+1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;; |
+1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;; |
+1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;; |
+1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;; |
+1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;; |
+1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;; |
+1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;; |
+1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;; |
+1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;; |
+1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;; |
+1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;; |
+1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;; |
+1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;; |
+1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;; |
+1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;; |
+1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;; |
+1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;; |
+1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;; |
+1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;; |
+1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;; |
+1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;; |
+1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;; |
+1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;; |
+1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;; |
+1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;; |
+1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;; |
+1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; |
+1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; |
+1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;; |
+1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;; |
+1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;; |
+1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;; |
+1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;; |
+1CC0;SUNDANESE PUNCTUATION BINDU SURYA;Po;0;L;;;;;N;;;;; |
+1CC1;SUNDANESE PUNCTUATION BINDU PANGLONG;Po;0;L;;;;;N;;;;; |
+1CC2;SUNDANESE PUNCTUATION BINDU PURNAMA;Po;0;L;;;;;N;;;;; |
+1CC3;SUNDANESE PUNCTUATION BINDU CAKRA;Po;0;L;;;;;N;;;;; |
+1CC4;SUNDANESE PUNCTUATION BINDU LEU SATANGA;Po;0;L;;;;;N;;;;; |
+1CC5;SUNDANESE PUNCTUATION BINDU KA SATANGA;Po;0;L;;;;;N;;;;; |
+1CC6;SUNDANESE PUNCTUATION BINDU DA SATANGA;Po;0;L;;;;;N;;;;; |
+1CC7;SUNDANESE PUNCTUATION BINDU BA SATANGA;Po;0;L;;;;;N;;;;; |
+1CD0;VEDIC TONE KARSHANA;Mn;230;NSM;;;;;N;;;;; |
+1CD1;VEDIC TONE SHARA;Mn;230;NSM;;;;;N;;;;; |
+1CD2;VEDIC TONE PRENKHA;Mn;230;NSM;;;;;N;;;;; |
+1CD3;VEDIC SIGN NIHSHVASA;Po;0;L;;;;;N;;;;; |
+1CD4;VEDIC SIGN YAJURVEDIC MIDLINE SVARITA;Mn;1;NSM;;;;;N;;;;; |
+1CD5;VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; |
+1CD6;VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; |
+1CD7;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; |
+1CD8;VEDIC TONE CANDRA BELOW;Mn;220;NSM;;;;;N;;;;; |
+1CD9;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER;Mn;220;NSM;;;;;N;;;;; |
+1CDA;VEDIC TONE DOUBLE SVARITA;Mn;230;NSM;;;;;N;;;;; |
+1CDB;VEDIC TONE TRIPLE SVARITA;Mn;230;NSM;;;;;N;;;;; |
+1CDC;VEDIC TONE KATHAKA ANUDATTA;Mn;220;NSM;;;;;N;;;;; |
+1CDD;VEDIC TONE DOT BELOW;Mn;220;NSM;;;;;N;;;;; |
+1CDE;VEDIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;; |
+1CDF;VEDIC TONE THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; |
+1CE0;VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;Mn;230;NSM;;;;;N;;;;; |
+1CE1;VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;Mc;0;L;;;;;N;;;;; |
+1CE2;VEDIC SIGN VISARGA SVARITA;Mn;1;NSM;;;;;N;;;;; |
+1CE3;VEDIC SIGN VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;; |
+1CE4;VEDIC SIGN REVERSED VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;; |
+1CE5;VEDIC SIGN VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;; |
+1CE6;VEDIC SIGN REVERSED VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;; |
+1CE7;VEDIC SIGN VISARGA UDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;; |
+1CE8;VEDIC SIGN VISARGA ANUDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;; |
+1CE9;VEDIC SIGN ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;; |
+1CEA;VEDIC SIGN ANUSVARA BAHIRGOMUKHA;Lo;0;L;;;;;N;;;;; |
+1CEB;VEDIC SIGN ANUSVARA VAMAGOMUKHA;Lo;0;L;;;;;N;;;;; |
+1CEC;VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;Lo;0;L;;;;;N;;;;; |
+1CED;VEDIC SIGN TIRYAK;Mn;220;NSM;;;;;N;;;;; |
+1CEE;VEDIC SIGN HEXIFORM LONG ANUSVARA;Lo;0;L;;;;;N;;;;; |
+1CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;; |
+1CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;; |
+1CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;; |
+1CF2;VEDIC SIGN ARDHAVISARGA;Mc;0;L;;;;;N;;;;; |
+1CF3;VEDIC SIGN ROTATED ARDHAVISARGA;Mc;0;L;;;;;N;;;;; |
+1CF4;VEDIC TONE CANDRA ABOVE;Mn;230;NSM;;;;;N;;;;; |
+1CF5;VEDIC SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;; |
+1CF6;VEDIC SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;; |
+1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; |
+1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; |
+1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; |
+1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; |
+1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; |
+1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; |
+1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; |
+1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; |
+1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; |
+1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; |
+1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; |
+1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; |
+1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; |
+1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; |
+1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; |
+1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; |
+1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; |
+1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; |
+1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; |
+1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; |
+1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; |
+1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; |
+1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; |
+1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; |
+1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; |
+1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; |
+1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; |
+1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; |
+1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; |
+1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; |
+1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; |
+1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; |
+1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; |
+1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; |
+1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; |
+1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; |
+1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; |
+1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; |
+1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; |
+1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; |
+1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; |
+1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; |
+1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; |
+1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; |
+1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;; |
+1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;; |
+1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;; |
+1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; |
+1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;; |
+1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;; |
+1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;; |
+1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;; |
+1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;; |
+1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;; |
+1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;; |
+1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;; |
+1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;; |
+1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;; |
+1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;; |
+1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; |
+1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;; |
+1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;; |
+1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;; |
+1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;; |
+1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;; |
+1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;; |
+1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;; |
+1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;; |
+1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;; |
+1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;; |
+1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;; |
+1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;; |
+1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;; |
+1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;; |
+1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;; |
+1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;; |
+1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; |
+1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;; |
+1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; |
+1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;; |
+1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;; |
+1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;; |
+1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;; |
+1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;; |
+1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;; |
+1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;; |
+1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;; |
+1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;; |
+1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;; |
+1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;; |
+1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;; |
+1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;; |
+1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;; |
+1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;; |
+1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;; |
+1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;; |
+1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;; |
+1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;; |
+1D62;LATIN SUBSCRIPT SMALL LETTER I;Lm;0;L;<sub> 0069;;;;N;;;;; |
+1D63;LATIN SUBSCRIPT SMALL LETTER R;Lm;0;L;<sub> 0072;;;;N;;;;; |
+1D64;LATIN SUBSCRIPT SMALL LETTER U;Lm;0;L;<sub> 0075;;;;N;;;;; |
+1D65;LATIN SUBSCRIPT SMALL LETTER V;Lm;0;L;<sub> 0076;;;;N;;;;; |
+1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Lm;0;L;<sub> 03B2;;;;N;;;;; |
+1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Lm;0;L;<sub> 03B3;;;;N;;;;; |
+1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Lm;0;L;<sub> 03C1;;;;N;;;;; |
+1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Lm;0;L;<sub> 03C6;;;;N;;;;; |
+1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Lm;0;L;<sub> 03C7;;;;N;;;;; |
+1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; |
+1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; |
+1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; |
+1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;; |
+1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D |
+1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; |
+1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; |
+1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; |
+1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63 |
+1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; |
+1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; |
+1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; |
+1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; |
+1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; |
+1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;; |
+1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;; |
+1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;; |
+1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;; |
+1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; |
+1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;; |
+1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;; |
+1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;; |
+1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;; |
+1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;; |
+1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;; |
+1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;; |
+1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;; |
+1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;; |
+1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;; |
+1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;; |
+1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;; |
+1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;; |
+1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;; |
+1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;; |
+1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;; |
+1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;; |
+1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;; |
+1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;; |
+1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;; |
+1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;; |
+1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;; |
+1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;; |
+1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;; |
+1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;; |
+1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;; |
+1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;; |
+1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;; |
+1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;; |
+1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;; |
+1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;; |
+1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;; |
+1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; |
+1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; |
+1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; |
+1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; |
+1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;; |
+1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;; |
+1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;; |
+1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;; |
+1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;; |
+1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;; |
+1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;; |
+1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;; |
+1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;; |
+1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;; |
+1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;; |
+1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;; |
+1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;; |
+1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;; |
+1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;; |
+1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;; |
+1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;; |
+1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;; |
+1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;; |
+1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;; |
+1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;; |
+1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;; |
+1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;; |
+1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;; |
+1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;; |
+1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;; |
+1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;; |
+1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;; |
+1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;; |
+1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;; |
+1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;; |
+1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;; |
+1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;; |
+1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;; |
+1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;; |
+1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;; |
+1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;; |
+1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; |
+1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; |
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; |
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 |
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; |
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 |
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; |
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 |
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; |
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 |
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; |
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 |
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; |
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A |
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; |
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C |
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; |
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E |
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; |
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 |
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; |
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 |
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; |
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 |
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; |
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 |
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; |
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 |
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; |
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A |
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; |
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C |
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; |
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E |
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; |
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 |
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; |
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 |
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; |
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 |
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; |
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 |
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; |
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 |
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; |
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A |
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; |
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C |
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; |
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E |
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; |
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 |
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; |
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 |
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; |
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 |
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; |
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 |
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; |
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 |
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; |
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A |
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; |
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C |
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; |
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E |
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; |
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 |
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; |
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 |
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; |
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 |
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; |
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 |
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; |
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 |
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; |
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A |
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; |
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C |
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; |
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E |
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; |
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 |
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; |
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 |
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; |
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 |
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; |
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 |
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; |
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 |
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; |
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A |
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; |
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C |
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; |
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E |
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; |
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 |
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; |
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 |
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; |
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 |
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; |
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 |
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; |
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 |
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; |
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A |
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; |
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C |
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; |
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E |
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; |
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 |
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; |
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 |
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; |
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 |
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; |
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 |
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; |
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 |
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; |
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A |
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; |
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C |
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; |
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E |
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; |
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 |
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; |
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 |
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; |
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 |
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; |
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 |
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; |
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 |
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; |
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A |
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; |
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C |
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; |
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E |
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; |
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 |
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; |
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 |
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; |
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 |
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; |
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; |
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; |
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; |
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;; |
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 |
+1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;; |
+1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;; |
+1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF; |
+1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;; |
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; |
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 |
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; |
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 |
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; |
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 |
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; |
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 |
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; |
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 |
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; |
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA |
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; |
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC |
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; |
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE |
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; |
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 |
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; |
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 |
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; |
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 |
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; |
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 |
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; |
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 |
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; |
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA |
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; |
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC |
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; |
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE |
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; |
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 |
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; |
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 |
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; |
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 |
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; |
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 |
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; |
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 |
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; |
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA |
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; |
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC |
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; |
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE |
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; |
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 |
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; |
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 |
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; |
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 |
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; |
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 |
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; |
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 |
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; |
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA |
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; |
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC |
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; |
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE |
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; |
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 |
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; |
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 |
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; |
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 |
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; |
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 |
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; |
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 |
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; |
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA |
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; |
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC |
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; |
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE |
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; |
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 |
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; |
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 |
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; |
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 |
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; |
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 |
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; |
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 |
+1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB; |
+1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA |
+1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD; |
+1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC |
+1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF; |
+1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE |
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 |
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 |
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A |
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B |
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C |
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D |
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E |
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F |
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; |
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; |
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; |
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; |
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; |
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; |
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; |
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; |
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 |
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 |
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A |
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B |
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C |
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D |
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; |
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; |
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; |
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; |
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; |
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; |
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 |
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 |
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A |
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B |
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C |
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D |
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E |
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F |
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; |
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; |
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; |
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; |
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; |
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; |
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; |
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; |
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 |
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 |
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A |
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B |
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C |
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D |
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E |
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F |
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; |
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; |
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; |
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; |
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; |
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; |
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; |
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; |
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 |
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 |
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A |
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B |
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C |
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D |
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; |
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; |
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; |
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; |
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; |
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; |
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; |
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 |
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; |
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B |
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; |
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D |
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; |
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F |
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; |
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; |
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; |
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; |
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 |
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 |
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A |
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B |
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C |
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D |
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E |
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F |
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; |
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; |
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; |
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; |
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; |
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; |
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; |
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; |
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA |
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB |
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 |
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 |
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA |
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB |
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA |
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB |
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 |
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 |
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA |
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB |
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA |
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB |
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 |
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 |
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A |
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B |
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C |
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D |
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E |
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F |
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; |
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; |
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; |
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; |
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; |
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; |
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; |
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; |
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 |
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 |
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A |
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B |
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C |
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D |
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E |
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F |
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; |
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; |
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; |
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; |
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; |
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; |
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; |
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; |
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 |
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 |
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA |
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB |
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC |
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD |
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE |
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF |
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; |
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; |
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; |
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; |
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; |
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; |
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; |
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; |
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 |
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 |
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; |
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC |
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; |
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; |
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; |
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; |
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; |
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; |
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; |
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; |
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; |
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 |
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; |
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;; |
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; |
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; |
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC |
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; |
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; |
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; |
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; |
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; |
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; |
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; |
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; |
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; |
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; |
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; |
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 |
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 |
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; |
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; |
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; |
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; |
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; |
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; |
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; |
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; |
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; |
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; |
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; |
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 |
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 |
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; |
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; |
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; |
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC |
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; |
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; |
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; |
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; |
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; |
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; |
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; |
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; |
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; |
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; |
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; |
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC |
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; |
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; |
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; |
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; |
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; |
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; |
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; |
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; |
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; |
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;; |
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; |
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; |
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;; |
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; |
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; |
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; |
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; |
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; |
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;; |
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;; |
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; |
+2013;EN DASH;Pd;0;ON;;;;;N;;;;; |
+2014;EM DASH;Pd;0;ON;;;;;N;;;;; |
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; |
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; |
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; |
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; |
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; |
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; |
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; |
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; |
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; |
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; |
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; |
+2020;DAGGER;Po;0;ON;;;;;N;;;;; |
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; |
+2022;BULLET;Po;0;ON;;;;;N;;;;; |
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; |
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;; |
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;; |
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;; |
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; |
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; |
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; |
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; |
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; |
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; |
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; |
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; |
+202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;; |
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; |
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; |
+2032;PRIME;Po;0;ET;;;;;N;;;;; |
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;; |
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;; |
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; |
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;; |
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;; |
+2038;CARET;Po;0;ON;;;;;N;;;;; |
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; |
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; |
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; |
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;; |
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;; |
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;; |
+203F;UNDERTIE;Pc;0;ON;;;;;N;;;;; |
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; |
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; |
+2042;ASTERISM;Po;0;ON;;;;;N;;;;; |
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; |
+2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; |
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; |
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; |
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;; |
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;; |
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;; |
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; |
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; |
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; |
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; |
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; |
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; |
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;; |
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; |
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; |
+2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; |
+2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; |
+2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; |
+2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;; |
+2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; |
+205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; |
+205D;TRICOLON;Po;0;ON;;;;;N;;;;; |
+205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; |
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; |
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; |
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; |
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; |
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; |
+2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;; |
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; |
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; |
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; |
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; |
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; |
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; |
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; |
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Lm;0;L;<super> 0069;;;;N;;;;; |
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; |
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; |
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; |
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; |
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; |
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; |
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;; |
+207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; |
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;; |
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; |
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; |
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Lm;0;L;<super> 006E;;;;N;;;;; |
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; |
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; |
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; |
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; |
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; |
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; |
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; |
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; |
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; |
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; |
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;; |
+208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; |
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;; |
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; |
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; |
+2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;; |
+2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;; |
+2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;; |
+2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;; |
+2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;; |
+2095;LATIN SUBSCRIPT SMALL LETTER H;Lm;0;L;<sub> 0068;;;;N;;;;; |
+2096;LATIN SUBSCRIPT SMALL LETTER K;Lm;0;L;<sub> 006B;;;;N;;;;; |
+2097;LATIN SUBSCRIPT SMALL LETTER L;Lm;0;L;<sub> 006C;;;;N;;;;; |
+2098;LATIN SUBSCRIPT SMALL LETTER M;Lm;0;L;<sub> 006D;;;;N;;;;; |
+2099;LATIN SUBSCRIPT SMALL LETTER N;Lm;0;L;<sub> 006E;;;;N;;;;; |
+209A;LATIN SUBSCRIPT SMALL LETTER P;Lm;0;L;<sub> 0070;;;;N;;;;; |
+209B;LATIN SUBSCRIPT SMALL LETTER S;Lm;0;L;<sub> 0073;;;;N;;;;; |
+209C;LATIN SUBSCRIPT SMALL LETTER T;Lm;0;L;<sub> 0074;;;;N;;;;; |
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; |
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; |
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; |
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; |
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; |
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; |
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; |
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; |
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;; |
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; |
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; |
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; |
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; |
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; |
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; |
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; |
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; |
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; |
+20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; |
+20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; |
+20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; |
+20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; |
+20B6;LIVRE TOURNOIS SIGN;Sc;0;ET;;;;;N;;;;; |
+20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;; |
+20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;; |
+20B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;; |
+20BA;TURKISH LIRA SIGN;Sc;0;ET;;;;;N;;;;; |
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; |
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; |
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; |
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; |
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; |
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; |
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; |
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; |
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; |
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; |
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; |
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; |
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; |
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; |
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; |
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; |
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; |
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; |
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; |
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; |
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; |
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; |
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; |
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; |
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; |
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; |
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; |
+20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; |
+20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; |
+20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; |
+20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; |
+20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; |
+20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;; |
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;; |
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;; |
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;; |
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; |
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; |
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;; |
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;; |
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;; |
+2108;SCRUPLE;So;0;ON;;;;;N;;;;; |
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; |
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;; |
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;; |
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;; |
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;; |
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; |
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;; |
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;; |
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;; |
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; |
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;; |
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;; |
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; |
+2118;SCRIPT CAPITAL P;Sm;0;ON;;;;;N;SCRIPT P;;;; |
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;; |
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;; |
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;; |
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;; |
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;; |
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; |
+211F;RESPONSE;So;0;ON;;;;;N;;;;; |
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;; |
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;; |
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;; |
+2123;VERSICLE;So;0;ON;;;;;N;;;;; |
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;; |
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; |
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; |
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; |
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;; |
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; |
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; |
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; |
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;; |
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;; |
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; |
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;; |
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;; |
+2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E; |
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;; |
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; |
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; |
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; |
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; |
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;; |
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; |
+213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;; |
+213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; |
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; |
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; |
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; |
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;; |
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; |
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; |
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; |
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; |
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; |
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; |
+214C;PER SIGN;So;0;ON;;;;;N;;;;; |
+214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;; |
+214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132 |
+214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;; |
+2150;VULGAR FRACTION ONE SEVENTH;No;0;ON;<fraction> 0031 2044 0037;;;1/7;N;;;;; |
+2151;VULGAR FRACTION ONE NINTH;No;0;ON;<fraction> 0031 2044 0039;;;1/9;N;;;;; |
+2152;VULGAR FRACTION ONE TENTH;No;0;ON;<fraction> 0031 2044 0031 0030;;;1/10;N;;;;; |
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; |
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; |
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; |
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; |
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; |
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; |
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; |
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; |
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; |
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; |
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; |
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; |
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;; |
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170; |
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171; |
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172; |
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173; |
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174; |
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175; |
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176; |
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177; |
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178; |
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179; |
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A; |
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B; |
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C; |
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D; |
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E; |
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F; |
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160 |
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161 |
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162 |
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163 |
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164 |
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165 |
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166 |
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167 |
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168 |
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169 |
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A |
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B |
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C |
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D |
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E |
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F |
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; |
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; |
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; |
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184; |
+2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183 |
+2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;; |
+2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;; |
+2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; |
+2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;; |
+2189;VULGAR FRACTION ZERO THIRDS;No;0;ON;<fraction> 0030 2044 0033;;;0;N;;;;; |
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; |
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; |
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; |
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; |
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; |
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; |
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; |
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; |
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; |
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; |
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; |
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; |
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; |
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; |
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; |
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; |
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; |
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; |
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; |
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; |
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; |
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; |
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; |
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; |
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; |
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; |
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; |
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; |
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; |
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; |
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; |
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; |
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; |
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; |
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; |
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; |
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; |
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; |
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; |
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; |
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; |
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; |
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; |
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; |
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; |
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; |
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; |
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; |
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; |
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; |
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; |
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; |
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; |
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; |
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; |
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; |
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; |
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; |
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; |
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; |
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; |
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; |
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; |
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; |
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; |
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; |
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; |
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; |
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; |
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; |
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; |
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; |
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; |
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; |
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; |
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; |
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; |
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; |
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; |
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; |
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; |
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; |
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; |
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; |
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; |
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; |
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; |
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; |
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; |
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; |
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; |
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; |
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; |
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; |
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; |
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; |
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; |
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; |
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; |
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; |
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; |
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; |
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; |
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; |
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; |
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;; |
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; |
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; |
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; |
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; |
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; |
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;; |
+2207;NABLA;Sm;0;ON;;;;;N;;;;; |
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; |
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; |
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; |
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; |
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; |
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; |
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; |
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; |
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; |
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; |
+2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; |
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; |
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; |
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; |
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; |
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; |
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; |
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; |
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; |
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; |
+221E;INFINITY;Sm;0;ON;;;;;N;;;;; |
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; |
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;; |
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; |
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; |
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;; |
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; |
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; |
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; |
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; |
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+222A;UNION;Sm;0;ON;;;;;N;;;;; |
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;; |
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;; |
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;; |
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;; |
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;; |
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;; |
+2236;RATIO;Sm;0;ON;;;;;N;;;;; |
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;; |
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; |
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;; |
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; |
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; |
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;; |
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; |
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; |
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; |
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; |
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; |
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; |
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; |
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; |
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; |
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; |
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; |
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; |
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; |
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; |
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; |
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; |
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; |
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; |
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; |
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; |
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; |
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; |
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; |
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; |
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; |
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; |
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; |
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; |
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; |
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; |
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; |
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; |
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; |
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; |
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;; |
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; |
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; |
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; |
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; |
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; |
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; |
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; |
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; |
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; |
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; |
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; |
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; |
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; |
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; |
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; |
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; |
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; |
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; |
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; |
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; |
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; |
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; |
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; |
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; |
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; |
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; |
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; |
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;; |
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; |
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; |
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; |
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; |
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; |
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; |
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; |
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; |
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; |
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; |
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; |
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; |
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; |
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; |
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; |
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; |
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; |
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; |
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; |
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; |
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; |
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; |
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;; |
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; |
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;; |
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;; |
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;; |
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; |
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; |
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; |
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; |
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; |
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; |
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; |
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; |
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; |
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; |
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; |
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; |
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; |
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; |
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; |
+22BB;XOR;Sm;0;ON;;;;;N;;;;; |
+22BC;NAND;Sm;0;ON;;;;;N;;;;; |
+22BD;NOR;Sm;0;ON;;;;;N;;;;; |
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; |
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; |
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; |
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; |
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; |
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; |
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; |
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; |
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; |
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; |
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; |
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; |
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; |
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; |
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; |
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; |
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; |
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; |
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; |
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; |
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; |
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; |
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; |
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; |
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; |
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; |
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; |
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; |
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; |
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; |
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; |
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; |
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; |
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; |
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; |
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; |
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; |
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; |
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; |
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; |
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; |
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; |
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; |
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; |
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; |
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; |
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; |
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; |
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; |
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; |
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; |
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; |
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; |
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; |
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; |
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; |
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; |
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; |
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; |
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; |
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; |
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; |
+2302;HOUSE;So;0;ON;;;;;N;;;;; |
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; |
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; |
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;; |
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; |
+2307;WAVY LINE;So;0;ON;;;;;N;;;;; |
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; |
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; |
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; |
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; |
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; |
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; |
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; |
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; |
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; |
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; |
+2312;ARC;So;0;ON;;;;;N;;;;; |
+2313;SEGMENT;So;0;ON;;;;;N;;;;; |
+2314;SECTOR;So;0;ON;;;;;N;;;;; |
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; |
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; |
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; |
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; |
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; |
+231A;WATCH;So;0;ON;;;;;N;;;;; |
+231B;HOURGLASS;So;0;ON;;;;;N;;;;; |
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; |
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; |
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; |
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; |
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+2322;FROWN;So;0;ON;;;;;N;;;;; |
+2323;SMILE;So;0;ON;;;;;N;;;;; |
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; |
+2325;OPTION KEY;So;0;ON;;;;;N;;;;; |
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; |
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; |
+2328;KEYBOARD;So;0;ON;;;;;N;;;;; |
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; |
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; |
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; |
+232C;BENZENE RING;So;0;ON;;;;;N;;;;; |
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; |
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; |
+232F;SYMMETRY;So;0;ON;;;;;N;;;;; |
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; |
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; |
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; |
+2333;SLOPE;So;0;ON;;;;;N;;;;; |
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;; |
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;; |
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; |
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; |
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; |
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; |
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; |
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; |
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; |
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; |
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; |
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; |
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; |
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; |
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; |
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; |
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; |
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; |
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; |
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; |
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; |
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; |
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;; |
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; |
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; |
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; |
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;; |
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; |
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; |
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;; |
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; |
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; |
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; |
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;; |
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; |
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; |
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; |
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; |
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; |
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; |
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; |
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; |
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; |
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; |
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; |
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;; |
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; |
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; |
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; |
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; |
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; |
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; |
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; |
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; |
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; |
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; |
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; |
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; |
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; |
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; |
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; |
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; |
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; |
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; |
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; |
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; |
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; |
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; |
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; |
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; |
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; |
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; |
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; |
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; |
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; |
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; |
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; |
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; |
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; |
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; |
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; |
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; |
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; |
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; |
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; |
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;;;; |
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;;;; |
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;;;; |
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; |
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; |
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; |
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; |
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; |
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; |
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; |
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; |
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; |
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; |
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; |
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; |
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;; |
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; |
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; |
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; |
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; |
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; |
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; |
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; |
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; |
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; |
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; |
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; |
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; |
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; |
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; |
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; |
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; |
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; |
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; |
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; |
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; |
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; |
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; |
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; |
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; |
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; |
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; |
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; |
+23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; |
+23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;; |
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; |
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; |
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; |
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; |
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; |
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; |
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; |
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; |
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; |
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; |
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; |
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; |
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; |
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; |
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; |
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; |
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; |
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; |
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; |
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; |
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; |
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; |
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; |
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; |
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; |
+23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; |
+23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; |
+23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; |
+23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; |
+23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; |
+23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; |
+23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; |
+23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; |
+23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; |
+23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; |
+23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; |
+23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; |
+23DB;FUSE;So;0;ON;;;;;N;;;;; |
+23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;;;; |
+23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;;;; |
+23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;;;; |
+23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;;;; |
+23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;; |
+23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;; |
+23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;; |
+23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;; |
+23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;; |
+23E5;FLATNESS;So;0;ON;;;;;N;;;;; |
+23E6;AC CURRENT;So;0;ON;;;;;N;;;;; |
+23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;; |
+23E8;DECIMAL EXPONENT SYMBOL;So;0;ON;;;;;N;;;;; |
+23E9;BLACK RIGHT-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;; |
+23EA;BLACK LEFT-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;; |
+23EB;BLACK UP-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;; |
+23EC;BLACK DOWN-POINTING DOUBLE TRIANGLE;So;0;ON;;;;;N;;;;; |
+23ED;BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; |
+23EE;BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; |
+23EF;BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR;So;0;ON;;;;;N;;;;; |
+23F0;ALARM CLOCK;So;0;ON;;;;;N;;;;; |
+23F1;STOPWATCH;So;0;ON;;;;;N;;;;; |
+23F2;TIMER CLOCK;So;0;ON;;;;;N;;;;; |
+23F3;HOURGLASS WITH FLOWING SAND;So;0;ON;;;;;N;;;;; |
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; |
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; |
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; |
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; |
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; |
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; |
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; |
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; |
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; |
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; |
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; |
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; |
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; |
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; |
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; |
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; |
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; |
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; |
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; |
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; |
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; |
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; |
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; |
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; |
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; |
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; |
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; |
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; |
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; |
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; |
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; |
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; |
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; |
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; |
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; |
+2423;OPEN BOX;So;0;ON;;;;;N;;;;; |
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; |
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; |
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; |
+2440;OCR HOOK;So;0;ON;;;;;N;;;;; |
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;; |
+2442;OCR FORK;So;0;ON;;;;;N;;;;; |
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; |
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; |
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; |
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; |
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; |
+2448;OCR DASH;So;0;ON;;;;;N;;;;; |
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; |
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; |
+2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;; |
+2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;; |
+2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;; |
+2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;; |
+2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;; |
+2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;; |
+2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;; |
+2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;; |
+2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;; |
+2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;; |
+246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;; |
+246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;; |
+246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;; |
+246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;; |
+246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;; |
+246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;; |
+2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;; |
+2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;; |
+2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;; |
+2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;; |
+2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;; |
+2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;; |
+2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;; |
+2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;; |
+2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;; |
+2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;; |
+247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;; |
+247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;; |
+247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;; |
+247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;; |
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;; |
+247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;; |
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;; |
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;; |
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;; |
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;; |
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;; |
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;; |
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;; |
+2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;; |
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; |
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; |
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; |
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; |
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; |
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; |
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; |
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; |
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; |
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; |
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; |
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; |
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; |
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; |
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; |
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; |
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; |
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; |
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; |
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; |
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;; |
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;; |
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;; |
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;; |
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;; |
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;; |
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;; |
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;; |
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;; |
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;; |
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;; |
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;; |
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;; |
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;; |
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;; |
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;; |
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;; |
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;; |
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;; |
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;; |
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;; |
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;; |
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;; |
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;; |
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;; |
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;; |
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0; |
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1; |
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2; |
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3; |
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4; |
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5; |
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6; |
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7; |
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8; |
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9; |
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA; |
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB; |
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC; |
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD; |
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE; |
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF; |
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0; |
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1; |
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2; |
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3; |
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4; |
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5; |
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6; |
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7; |
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8; |
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9; |
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6 |
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7 |
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8 |
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9 |
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA |
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB |
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC |
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD |
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE |
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF |
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0 |
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1 |
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2 |
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3 |
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4 |
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5 |
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6 |
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7 |
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8 |
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9 |
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA |
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB |
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC |
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD |
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE |
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF |
+24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;; |
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; |
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; |
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; |
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; |
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; |
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; |
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; |
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; |
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; |
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; |
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; |
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; |
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; |
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; |
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; |
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; |
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; |
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; |
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; |
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; |
+24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; |
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; |
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; |
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; |
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; |
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; |
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; |
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; |
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; |
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; |
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; |
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; |
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; |
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; |
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; |
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; |
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; |
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; |
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; |
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; |
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; |
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; |
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; |
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; |
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; |
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; |
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; |
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; |
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; |
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; |
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; |
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; |
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; |
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; |
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; |
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; |
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; |
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; |
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; |
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; |
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; |
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; |
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; |
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; |
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; |
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; |
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; |
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; |
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; |
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; |
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; |
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; |
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; |
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; |
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; |
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; |
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; |
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; |
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; |
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; |
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; |
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; |
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; |
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; |
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; |
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; |
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; |
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; |
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; |
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; |
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; |
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; |
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; |
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; |
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; |
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; |
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; |
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; |
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; |
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; |
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; |
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; |
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; |
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; |
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; |
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; |
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; |
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; |
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; |
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; |
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; |
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; |
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; |
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; |
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; |
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; |
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; |
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; |
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; |
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; |
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; |
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; |
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; |
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; |
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; |
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; |
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; |
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; |
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; |
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; |
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; |
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; |
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; |
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; |
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; |
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; |
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; |
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; |
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; |
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; |
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; |
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; |
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; |
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; |
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; |
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; |
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; |
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; |
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; |
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; |
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; |
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; |
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; |
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; |
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; |
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; |
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; |
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;; |
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; |
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; |
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; |
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; |
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; |
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; |
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; |
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; |
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; |
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; |
+2593;DARK SHADE;So;0;ON;;;;;N;;;;; |
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; |
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; |
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; |
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; |
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; |
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; |
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; |
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; |
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; |
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; |
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; |
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; |
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; |
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; |
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; |
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; |
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; |
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; |
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; |
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; |
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; |
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; |
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; |
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; |
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; |
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; |
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; |
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; |
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; |
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; |
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; |
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; |
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; |
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; |
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; |
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; |
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; |
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; |
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; |
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; |
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; |
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; |
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; |
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; |
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; |
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; |
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; |
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; |
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; |
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; |
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; |
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; |
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; |
+25C9;FISHEYE;So;0;ON;;;;;N;;;;; |
+25CA;LOZENGE;So;0;ON;;;;;N;;;;; |
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; |
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; |
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; |
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;; |
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; |
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; |
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; |
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; |
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; |
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; |
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; |
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; |
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; |
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; |
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; |
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; |
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; |
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; |
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; |
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; |
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; |
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; |
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; |
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; |
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; |
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; |
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; |
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; |
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; |
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; |
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; |
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; |
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; |
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; |
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; |
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; |
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; |
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; |
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; |
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; |
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; |
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; |
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; |
+2601;CLOUD;So;0;ON;;;;;N;;;;; |
+2602;UMBRELLA;So;0;ON;;;;;N;;;;; |
+2603;SNOWMAN;So;0;ON;;;;;N;;;;; |
+2604;COMET;So;0;ON;;;;;N;;;;; |
+2605;BLACK STAR;So;0;ON;;;;;N;;;;; |
+2606;WHITE STAR;So;0;ON;;;;;N;;;;; |
+2607;LIGHTNING;So;0;ON;;;;;N;;;;; |
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; |
+2609;SUN;So;0;ON;;;;;N;;;;; |
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; |
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; |
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;; |
+260D;OPPOSITION;So;0;ON;;;;;N;;;;; |
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; |
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; |
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;; |
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; |
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; |
+2613;SALTIRE;So;0;ON;;;;;N;;;;; |
+2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; |
+2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; |
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; |
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; |
+2618;SHAMROCK;So;0;ON;;;;;N;;;;; |
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; |
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; |
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; |
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; |
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; |
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; |
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; |
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; |
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; |
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; |
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; |
+2624;CADUCEUS;So;0;ON;;;;;N;;;;; |
+2625;ANKH;So;0;ON;;;;;N;;;;; |
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; |
+2627;CHI RHO;So;0;ON;;;;;N;;;;; |
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; |
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; |
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; |
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; |
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; |
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; |
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; |
+262F;YIN YANG;So;0;ON;;;;;N;;;;; |
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; |
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; |
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; |
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; |
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; |
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; |
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; |
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; |
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; |
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; |
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; |
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; |
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; |
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; |
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; |
+263F;MERCURY;So;0;ON;;;;;N;;;;; |
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; |
+2641;EARTH;So;0;ON;;;;;N;;;;; |
+2642;MALE SIGN;So;0;ON;;;;;N;;;;; |
+2643;JUPITER;So;0;ON;;;;;N;;;;; |
+2644;SATURN;So;0;ON;;;;;N;;;;; |
+2645;URANUS;So;0;ON;;;;;N;;;;; |
+2646;NEPTUNE;So;0;ON;;;;;N;;;;; |
+2647;PLUTO;So;0;ON;;;;;N;;;;; |
+2648;ARIES;So;0;ON;;;;;N;;;;; |
+2649;TAURUS;So;0;ON;;;;;N;;;;; |
+264A;GEMINI;So;0;ON;;;;;N;;;;; |
+264B;CANCER;So;0;ON;;;;;N;;;;; |
+264C;LEO;So;0;ON;;;;;N;;;;; |
+264D;VIRGO;So;0;ON;;;;;N;;;;; |
+264E;LIBRA;So;0;ON;;;;;N;;;;; |
+264F;SCORPIUS;So;0;ON;;;;;N;;;;; |
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; |
+2651;CAPRICORN;So;0;ON;;;;;N;;;;; |
+2652;AQUARIUS;So;0;ON;;;;;N;;;;; |
+2653;PISCES;So;0;ON;;;;;N;;;;; |
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; |
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; |
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; |
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; |
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; |
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; |
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; |
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; |
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; |
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; |
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; |
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; |
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; |
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; |
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; |
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; |
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; |
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; |
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; |
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; |
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; |
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; |
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; |
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; |
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; |
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; |
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; |
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; |
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; |
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; |
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; |
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;;;; |
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;;;; |
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;;;; |
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;;;; |
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;;;; |
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;;;; |
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;;;; |
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; |
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; |
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; |
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; |
+267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; |
+267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; |
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;; |
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;; |
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;; |
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;; |
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;; |
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;; |
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; |
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; |
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; |
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; |
+268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; |
+268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; |
+268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; |
+268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; |
+268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; |
+268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; |
+2690;WHITE FLAG;So;0;ON;;;;;N;;;;; |
+2691;BLACK FLAG;So;0;ON;;;;;N;;;;; |
+2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; |
+2693;ANCHOR;So;0;ON;;;;;N;;;;; |
+2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; |
+2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; |
+2696;SCALES;So;0;ON;;;;;N;;;;; |
+2697;ALEMBIC;So;0;ON;;;;;N;;;;; |
+2698;FLOWER;So;0;ON;;;;;N;;;;; |
+2699;GEAR;So;0;ON;;;;;N;;;;; |
+269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; |
+269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; |
+269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; |
+269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; |
+269E;THREE LINES CONVERGING RIGHT;So;0;ON;;;;;N;;;;; |
+269F;THREE LINES CONVERGING LEFT;So;0;ON;;;;;N;;;;; |
+26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; |
+26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; |
+26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; |
+26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; |
+26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; |
+26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; |
+26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; |
+26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; |
+26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; |
+26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; |
+26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; |
+26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; |
+26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; |
+26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; |
+26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; |
+26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; |
+26B0;COFFIN;So;0;ON;;;;;N;;;;; |
+26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; |
+26B2;NEUTER;So;0;ON;;;;;N;;;;; |
+26B3;CERES;So;0;ON;;;;;N;;;;; |
+26B4;PALLAS;So;0;ON;;;;;N;;;;; |
+26B5;JUNO;So;0;ON;;;;;N;;;;; |
+26B6;VESTA;So;0;ON;;;;;N;;;;; |
+26B7;CHIRON;So;0;ON;;;;;N;;;;; |
+26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;; |
+26B9;SEXTILE;So;0;ON;;;;;N;;;;; |
+26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;; |
+26BB;QUINCUNX;So;0;ON;;;;;N;;;;; |
+26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;; |
+26BD;SOCCER BALL;So;0;ON;;;;;N;;;;; |
+26BE;BASEBALL;So;0;ON;;;;;N;;;;; |
+26BF;SQUARED KEY;So;0;ON;;;;;N;;;;; |
+26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;; |
+26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;; |
+26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;; |
+26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;; |
+26C4;SNOWMAN WITHOUT SNOW;So;0;ON;;;;;N;;;;; |
+26C5;SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;; |
+26C6;RAIN;So;0;ON;;;;;N;;;;; |
+26C7;BLACK SNOWMAN;So;0;ON;;;;;N;;;;; |
+26C8;THUNDER CLOUD AND RAIN;So;0;ON;;;;;N;;;;; |
+26C9;TURNED WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; |
+26CA;TURNED BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; |
+26CB;WHITE DIAMOND IN SQUARE;So;0;ON;;;;;N;;;;; |
+26CC;CROSSING LANES;So;0;ON;;;;;N;;;;; |
+26CD;DISABLED CAR;So;0;ON;;;;;N;;;;; |
+26CE;OPHIUCHUS;So;0;ON;;;;;N;;;;; |
+26CF;PICK;So;0;ON;;;;;N;;;;; |
+26D0;CAR SLIDING;So;0;ON;;;;;N;;;;; |
+26D1;HELMET WITH WHITE CROSS;So;0;ON;;;;;N;;;;; |
+26D2;CIRCLED CROSSING LANES;So;0;ON;;;;;N;;;;; |
+26D3;CHAINS;So;0;ON;;;;;N;;;;; |
+26D4;NO ENTRY;So;0;ON;;;;;N;;;;; |
+26D5;ALTERNATE ONE-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; |
+26D6;BLACK TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; |
+26D7;WHITE TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; |
+26D8;BLACK LEFT LANE MERGE;So;0;ON;;;;;N;;;;; |
+26D9;WHITE LEFT LANE MERGE;So;0;ON;;;;;N;;;;; |
+26DA;DRIVE SLOW SIGN;So;0;ON;;;;;N;;;;; |
+26DB;HEAVY WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;; |
+26DC;LEFT CLOSED ENTRY;So;0;ON;;;;;N;;;;; |
+26DD;SQUARED SALTIRE;So;0;ON;;;;;N;;;;; |
+26DE;FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE;So;0;ON;;;;;N;;;;; |
+26DF;BLACK TRUCK;So;0;ON;;;;;N;;;;; |
+26E0;RESTRICTED LEFT ENTRY-1;So;0;ON;;;;;N;;;;; |
+26E1;RESTRICTED LEFT ENTRY-2;So;0;ON;;;;;N;;;;; |
+26E2;ASTRONOMICAL SYMBOL FOR URANUS;So;0;ON;;;;;N;;;;; |
+26E3;HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE;So;0;ON;;;;;N;;;;; |
+26E4;PENTAGRAM;So;0;ON;;;;;N;;;;; |
+26E5;RIGHT-HANDED INTERLACED PENTAGRAM;So;0;ON;;;;;N;;;;; |
+26E6;LEFT-HANDED INTERLACED PENTAGRAM;So;0;ON;;;;;N;;;;; |
+26E7;INVERTED PENTAGRAM;So;0;ON;;;;;N;;;;; |
+26E8;BLACK CROSS ON SHIELD;So;0;ON;;;;;N;;;;; |
+26E9;SHINTO SHRINE;So;0;ON;;;;;N;;;;; |
+26EA;CHURCH;So;0;ON;;;;;N;;;;; |
+26EB;CASTLE;So;0;ON;;;;;N;;;;; |
+26EC;HISTORIC SITE;So;0;ON;;;;;N;;;;; |
+26ED;GEAR WITHOUT HUB;So;0;ON;;;;;N;;;;; |
+26EE;GEAR WITH HANDLES;So;0;ON;;;;;N;;;;; |
+26EF;MAP SYMBOL FOR LIGHTHOUSE;So;0;ON;;;;;N;;;;; |
+26F0;MOUNTAIN;So;0;ON;;;;;N;;;;; |
+26F1;UMBRELLA ON GROUND;So;0;ON;;;;;N;;;;; |
+26F2;FOUNTAIN;So;0;ON;;;;;N;;;;; |
+26F3;FLAG IN HOLE;So;0;ON;;;;;N;;;;; |
+26F4;FERRY;So;0;ON;;;;;N;;;;; |
+26F5;SAILBOAT;So;0;ON;;;;;N;;;;; |
+26F6;SQUARE FOUR CORNERS;So;0;ON;;;;;N;;;;; |
+26F7;SKIER;So;0;ON;;;;;N;;;;; |
+26F8;ICE SKATE;So;0;ON;;;;;N;;;;; |
+26F9;PERSON WITH BALL;So;0;ON;;;;;N;;;;; |
+26FA;TENT;So;0;ON;;;;;N;;;;; |
+26FB;JAPANESE BANK SYMBOL;So;0;ON;;;;;N;;;;; |
+26FC;HEADSTONE GRAVEYARD SYMBOL;So;0;ON;;;;;N;;;;; |
+26FD;FUEL PUMP;So;0;ON;;;;;N;;;;; |
+26FE;CUP ON BLACK SQUARE;So;0;ON;;;;;N;;;;; |
+26FF;WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE;So;0;ON;;;;;N;;;;; |
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; |
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; |
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; |
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; |
+2705;WHITE HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; |
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; |
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; |
+2708;AIRPLANE;So;0;ON;;;;;N;;;;; |
+2709;ENVELOPE;So;0;ON;;;;;N;;;;; |
+270A;RAISED FIST;So;0;ON;;;;;N;;;;; |
+270B;RAISED HAND;So;0;ON;;;;;N;;;;; |
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;; |
+270D;WRITING HAND;So;0;ON;;;;;N;;;;; |
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; |
+270F;PENCIL;So;0;ON;;;;;N;;;;; |
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; |
+2711;WHITE NIB;So;0;ON;;;;;N;;;;; |
+2712;BLACK NIB;So;0;ON;;;;;N;;;;; |
+2713;CHECK MARK;So;0;ON;;;;;N;;;;; |
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; |
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; |
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; |
+2717;BALLOT X;So;0;ON;;;;;N;;;;; |
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; |
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; |
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; |
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; |
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; |
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;; |
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; |
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; |
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; |
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; |
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; |
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; |
+2728;SPARKLES;So;0;ON;;;;;N;;;;; |
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; |
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; |
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; |
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; |
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; |
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; |
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; |
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; |
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; |
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; |
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; |
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; |
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; |
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; |
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; |
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; |
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; |
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; |
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; |
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; |
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; |
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; |
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; |
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; |
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; |
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; |
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; |
+2747;SPARKLE;So;0;ON;;;;;N;;;;; |
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; |
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; |
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; |
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; |
+274C;CROSS MARK;So;0;ON;;;;;N;;;;; |
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; |
+274E;NEGATIVE SQUARED CROSS MARK;So;0;ON;;;;;N;;;;; |
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; |
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; |
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; |
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; |
+2753;BLACK QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+2754;WHITE QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+2755;WHITE EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; |
+2757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;; |
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; |
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; |
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; |
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+275F;HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+2760;HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; |
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; |
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; |
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; |
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;; |
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; |
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; |
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; |
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; |
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; |
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; |
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; |
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; |
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; |
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; |
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; |
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; |
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; |
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; |
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; |
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; |
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; |
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; |
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; |
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; |
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; |
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; |
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; |
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; |
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; |
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; |
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; |
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; |
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; |
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; |
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; |
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; |
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; |
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; |
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; |
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; |
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; |
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; |
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; |
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; |
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; |
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; |
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; |
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; |
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; |
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; |
+2795;HEAVY PLUS SIGN;So;0;ON;;;;;N;;;;; |
+2796;HEAVY MINUS SIGN;So;0;ON;;;;;N;;;;; |
+2797;HEAVY DIVISION SIGN;So;0;ON;;;;;N;;;;; |
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; |
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; |
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; |
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; |
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; |
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; |
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; |
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; |
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; |
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; |
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; |
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; |
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; |
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; |
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; |
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; |
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; |
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; |
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; |
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; |
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; |
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; |
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; |
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; |
+27B0;CURLY LOOP;So;0;ON;;;;;N;;;;; |
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; |
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; |
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; |
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; |
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; |
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; |
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; |
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; |
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; |
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; |
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; |
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; |
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; |
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; |
+27BF;DOUBLE CURLY LOOP;So;0;ON;;;;;N;;;;; |
+27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; |
+27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; |
+27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; |
+27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; |
+27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; |
+27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; |
+27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;; |
+27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;; |
+27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;; |
+27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; |
+27CB;MATHEMATICAL RISING DIAGONAL;Sm;0;ON;;;;;Y;;;;; |
+27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;; |
+27CD;MATHEMATICAL FALLING DIAGONAL;Sm;0;ON;;;;;Y;;;;; |
+27CE;SQUARED LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+27CF;SQUARED LOGICAL OR;Sm;0;ON;;;;;N;;;;; |
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; |
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; |
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; |
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; |
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; |
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; |
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; |
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; |
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; |
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; |
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; |
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; |
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; |
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; |
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; |
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; |
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; |
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; |
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; |
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; |
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; |
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; |
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; |
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; |
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; |
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; |
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; |
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; |
+27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; |
+27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; |
+27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;; |
+27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;; |
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; |
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; |
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; |
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; |
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; |
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; |
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; |
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; |
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; |
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; |
+2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; |
+2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; |
+2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; |
+2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; |
+2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; |
+2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; |
+2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; |
+2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; |
+2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; |
+2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; |
+280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; |
+280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; |
+280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; |
+280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; |
+280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; |
+280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; |
+2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; |
+2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; |
+2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; |
+2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; |
+2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; |
+2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; |
+2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; |
+2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; |
+2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; |
+2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; |
+281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; |
+281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; |
+281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; |
+281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; |
+281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; |
+281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; |
+2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; |
+2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; |
+2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; |
+2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; |
+2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; |
+2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; |
+2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; |
+2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; |
+2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; |
+2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; |
+282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; |
+282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; |
+282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; |
+282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; |
+282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; |
+282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; |
+2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; |
+2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; |
+2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; |
+2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; |
+2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; |
+2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; |
+2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; |
+2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; |
+2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; |
+2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; |
+283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; |
+283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; |
+283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; |
+283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; |
+283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; |
+283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; |
+2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; |
+2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; |
+2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; |
+2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; |
+2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; |
+2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; |
+2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; |
+2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; |
+2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; |
+2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; |
+284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; |
+284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; |
+284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; |
+284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; |
+284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; |
+284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; |
+2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; |
+2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; |
+2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; |
+2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; |
+2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; |
+2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; |
+2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; |
+2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; |
+2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; |
+2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; |
+285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; |
+285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; |
+285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; |
+285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; |
+285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; |
+285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; |
+2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; |
+2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; |
+2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; |
+2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; |
+2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; |
+2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; |
+2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; |
+2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; |
+2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; |
+2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; |
+286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; |
+286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; |
+286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; |
+286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; |
+286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; |
+286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; |
+2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; |
+2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; |
+2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; |
+2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; |
+2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; |
+2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; |
+2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; |
+2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; |
+2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; |
+2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; |
+287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; |
+287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; |
+287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; |
+287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; |
+287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; |
+287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; |
+2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; |
+2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; |
+2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; |
+2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; |
+2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; |
+2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; |
+2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; |
+2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; |
+2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; |
+2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; |
+288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; |
+288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; |
+288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; |
+288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; |
+288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; |
+288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; |
+2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; |
+2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; |
+2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; |
+2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; |
+2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; |
+2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; |
+2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; |
+2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; |
+2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; |
+2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; |
+289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; |
+289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; |
+289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; |
+289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; |
+289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; |
+289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; |
+28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; |
+28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; |
+28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; |
+28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; |
+28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; |
+28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; |
+28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; |
+28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; |
+28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; |
+28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; |
+28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; |
+28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; |
+28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; |
+28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; |
+28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; |
+28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; |
+28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; |
+28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; |
+28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; |
+28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; |
+28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; |
+28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; |
+28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; |
+28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; |
+28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; |
+28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; |
+28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; |
+28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; |
+28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; |
+28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; |
+28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; |
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; |
+28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; |
+28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; |
+28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; |
+28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; |
+28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; |
+28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; |
+28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; |
+28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; |
+28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; |
+28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; |
+28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; |
+28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; |
+28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; |
+28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; |
+28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; |
+28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; |
+28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; |
+28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; |
+28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; |
+28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; |
+28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; |
+28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; |
+28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; |
+28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; |
+28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; |
+28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; |
+28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; |
+28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; |
+28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; |
+28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; |
+28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; |
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; |
+28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; |
+28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; |
+28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; |
+28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; |
+28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; |
+28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; |
+28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; |
+28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; |
+28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; |
+28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; |
+28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; |
+28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; |
+28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; |
+28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; |
+28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; |
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; |
+28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; |
+28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; |
+28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; |
+28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; |
+28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; |
+28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; |
+28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; |
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; |
+28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; |
+28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; |
+28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; |
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; |
+28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; |
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; |
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; |
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; |
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; |
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; |
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; |
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; |
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; |
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; |
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; |
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; |
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; |
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; |
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; |
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; |
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; |
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; |
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; |
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; |
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; |
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; |
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; |
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; |
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; |
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; |
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; |
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; |
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; |
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; |
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; |
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; |
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; |
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; |
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; |
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; |
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; |
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; |
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; |
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; |
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; |
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; |
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; |
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; |
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; |
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; |
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; |
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; |
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; |
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; |
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; |
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; |
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; |
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; |
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; |
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; |
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; |
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; |
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; |
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; |
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; |
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; |
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; |
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; |
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; |
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; |
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; |
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; |
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; |
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; |
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; |
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; |
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; |
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; |
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; |
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; |
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; |
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; |
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; |
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; |
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; |
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; |
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; |
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; |
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; |
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; |
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; |
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; |
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; |
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; |
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; |
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; |
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; |
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; |
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; |
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; |
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; |
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; |
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; |
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; |
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; |
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; |
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; |
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; |
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; |
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; |
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; |
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; |
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; |
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; |
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; |
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; |
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; |
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; |
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; |
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; |
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; |
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; |
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; |
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; |
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; |
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; |
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; |
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; |
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; |
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; |
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; |
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; |
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; |
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; |
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; |
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; |
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; |
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; |
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; |
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; |
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; |
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; |
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; |
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; |
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; |
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; |
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; |
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; |
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; |
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; |
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; |
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; |
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; |
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; |
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; |
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; |
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; |
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; |
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; |
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; |
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; |
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; |
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; |
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; |
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; |
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; |
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; |
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; |
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; |
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; |
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; |
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; |
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; |
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; |
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; |
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; |
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; |
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; |
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; |
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; |
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; |
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; |
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; |
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; |
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; |
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; |
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; |
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; |
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; |
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; |
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; |
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; |
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; |
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; |
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; |
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; |
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; |
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; |
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; |
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; |
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; |
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; |
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; |
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; |
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; |
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; |
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; |
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; |
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; |
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; |
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; |
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; |
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; |
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; |
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; |
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; |
+29FE;TINY;Sm;0;ON;;;;;N;;;;; |
+29FF;MINY;Sm;0;ON;;;;;N;;;;; |
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; |
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; |
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; |
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;; |
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; |
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; |
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; |
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; |
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; |
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; |
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; |
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; |
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; |
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; |
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; |
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; |
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; |
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; |
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;; |
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; |
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; |
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; |
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; |
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; |
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; |
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; |
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; |
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; |
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; |
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; |
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; |
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; |
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; |
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; |
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; |
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; |
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; |
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; |
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; |
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; |
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; |
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; |
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; |
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; |
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; |
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; |
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; |
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; |
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; |
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; |
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; |
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; |
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; |
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; |
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; |
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; |
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; |
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; |
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; |
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; |
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; |
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; |
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; |
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; |
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; |
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; |
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; |
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; |
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; |
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; |
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; |
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; |
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; |
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; |
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; |
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; |
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; |
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; |
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; |
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; |
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; |
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; |
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; |
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; |
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; |
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; |
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;; |
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;; |
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;; |
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; |
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; |
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; |
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; |
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; |
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; |
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; |
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; |
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; |
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; |
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; |
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; |
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; |
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; |
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; |
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; |
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; |
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; |
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; |
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; |
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; |
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; |
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; |
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; |
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; |
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; |
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; |
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; |
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; |
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; |
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; |
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; |
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; |
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; |
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; |
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; |
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; |
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; |
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; |
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; |
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; |
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; |
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; |
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;;;; |
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;;;; |
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; |
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; |
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; |
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; |
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; |
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; |
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; |
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; |
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; |
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; |
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; |
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; |
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; |
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; |
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; |
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; |
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; |
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; |
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; |
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; |
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; |
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; |
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; |
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; |
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; |
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; |
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; |
+2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; |
+2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; |
+2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; |
+2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; |
+2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; |
+2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; |
+2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; |
+2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; |
+2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; |
+2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; |
+2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; |
+2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;; |
+2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;; |
+2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;; |
+2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; |
+2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; |
+2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;; |
+2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;; |
+2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;; |
+2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;; |
+2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;; |
+2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;; |
+2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; |
+2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; |
+2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; |
+2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; |
+2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; |
+2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;; |
+2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;; |
+2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; |
+2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; |
+2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; |
+2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; |
+2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; |
+2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; |
+2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; |
+2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; |
+2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; |
+2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; |
+2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; |
+2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; |
+2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; |
+2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; |
+2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;; |
+2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;; |
+2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;; |
+2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; |
+2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; |
+2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; |
+2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; |
+2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; |
+2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;; |
+2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;; |
+2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;; |
+2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; |
+2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; |
+2B55;HEAVY LARGE CIRCLE;So;0;ON;;;;;N;;;;; |
+2B56;HEAVY OVAL WITH OVAL INSIDE;So;0;ON;;;;;N;;;;; |
+2B57;HEAVY CIRCLE WITH CIRCLE INSIDE;So;0;ON;;;;;N;;;;; |
+2B58;HEAVY CIRCLE;So;0;ON;;;;;N;;;;; |
+2B59;HEAVY CIRCLED SALTIRE;So;0;ON;;;;;N;;;;; |
+2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; |
+2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; |
+2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; |
+2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; |
+2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; |
+2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; |
+2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; |
+2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; |
+2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; |
+2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; |
+2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; |
+2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; |
+2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; |
+2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; |
+2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; |
+2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; |
+2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; |
+2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; |
+2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; |
+2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; |
+2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; |
+2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; |
+2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; |
+2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; |
+2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; |
+2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; |
+2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; |
+2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; |
+2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; |
+2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; |
+2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; |
+2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; |
+2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; |
+2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; |
+2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; |
+2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; |
+2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; |
+2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; |
+2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; |
+2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; |
+2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; |
+2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; |
+2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; |
+2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; |
+2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; |
+2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; |
+2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; |
+2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 |
+2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 |
+2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 |
+2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 |
+2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 |
+2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 |
+2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 |
+2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 |
+2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 |
+2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 |
+2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A |
+2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B |
+2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C |
+2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D |
+2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E |
+2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F |
+2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 |
+2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 |
+2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 |
+2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 |
+2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 |
+2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 |
+2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 |
+2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 |
+2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 |
+2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 |
+2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A |
+2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B |
+2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C |
+2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D |
+2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E |
+2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F |
+2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 |
+2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 |
+2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 |
+2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 |
+2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 |
+2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 |
+2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 |
+2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 |
+2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 |
+2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 |
+2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A |
+2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B |
+2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C |
+2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D |
+2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E |
+2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; |
+2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 |
+2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; |
+2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D; |
+2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D; |
+2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A |
+2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E |
+2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68; |
+2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67 |
+2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A; |
+2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69 |
+2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C; |
+2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B |
+2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251; |
+2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271; |
+2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250; |
+2C70;LATIN CAPITAL LETTER TURNED ALPHA;Lu;0;L;;;;;N;;;;0252; |
+2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;; |
+2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73; |
+2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72 |
+2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;; |
+2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76; |
+2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75 |
+2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;; |
+2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;; |
+2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;; |
+2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;; |
+2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;; |
+2C7C;LATIN SUBSCRIPT SMALL LETTER J;Lm;0;L;<sub> 006A;;;;N;;;;; |
+2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;; |
+2C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL;Lu;0;L;;;;;N;;;;023F; |
+2C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL;Lu;0;L;;;;;N;;;;0240; |
+2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; |
+2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 |
+2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; |
+2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 |
+2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; |
+2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 |
+2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; |
+2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 |
+2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; |
+2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 |
+2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; |
+2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A |
+2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; |
+2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C |
+2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; |
+2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E |
+2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; |
+2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 |
+2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; |
+2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 |
+2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; |
+2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 |
+2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; |
+2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 |
+2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; |
+2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 |
+2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; |
+2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A |
+2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; |
+2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C |
+2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; |
+2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E |
+2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; |
+2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 |
+2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; |
+2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 |
+2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; |
+2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 |
+2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; |
+2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 |
+2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; |
+2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 |
+2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; |
+2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA |
+2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; |
+2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC |
+2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; |
+2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE |
+2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; |
+2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 |
+2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; |
+2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 |
+2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; |
+2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 |
+2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; |
+2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 |
+2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; |
+2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 |
+2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; |
+2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA |
+2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; |
+2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC |
+2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; |
+2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE |
+2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; |
+2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 |
+2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; |
+2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 |
+2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; |
+2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 |
+2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; |
+2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 |
+2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; |
+2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 |
+2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; |
+2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA |
+2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; |
+2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC |
+2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; |
+2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE |
+2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; |
+2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 |
+2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; |
+2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 |
+2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; |
+2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 |
+2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; |
+2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 |
+2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; |
+2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 |
+2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; |
+2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA |
+2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; |
+2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC |
+2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; |
+2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE |
+2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; |
+2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 |
+2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; |
+2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 |
+2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; |
+2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; |
+2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; |
+2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; |
+2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; |
+2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; |
+2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; |
+2CEB;COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC; |
+2CEC;COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB |
+2CED;COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE; |
+2CEE;COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED |
+2CEF;COPTIC COMBINING NI ABOVE;Mn;230;NSM;;;;;N;;;;; |
+2CF0;COPTIC COMBINING SPIRITUS ASPER;Mn;230;NSM;;;;;N;;;;; |
+2CF1;COPTIC COMBINING SPIRITUS LENIS;Mn;230;NSM;;;;;N;;;;; |
+2CF2;COPTIC CAPITAL LETTER BOHAIRIC KHEI;Lu;0;L;;;;;N;;;;2CF3; |
+2CF3;COPTIC SMALL LETTER BOHAIRIC KHEI;Ll;0;L;;;;;N;;;2CF2;;2CF2 |
+2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; |
+2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; |
+2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; |
+2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; |
+2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; |
+2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; |
+2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; |
+2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;;10A0;;10A0 |
+2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;;10A1;;10A1 |
+2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;;10A2;;10A2 |
+2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;;10A3;;10A3 |
+2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;;10A4;;10A4 |
+2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;;10A5;;10A5 |
+2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;;10A6;;10A6 |
+2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;;10A7;;10A7 |
+2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;;10A8;;10A8 |
+2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;;10A9;;10A9 |
+2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;;10AA;;10AA |
+2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;;10AB;;10AB |
+2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;;10AC;;10AC |
+2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;;10AD;;10AD |
+2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;;10AE;;10AE |
+2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;;10AF;;10AF |
+2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;;10B0;;10B0 |
+2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;;10B1;;10B1 |
+2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;;10B2;;10B2 |
+2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;;10B3;;10B3 |
+2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;;10B4;;10B4 |
+2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;;10B5;;10B5 |
+2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;;10B6;;10B6 |
+2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;;10B7;;10B7 |
+2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;;10B8;;10B8 |
+2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;;10B9;;10B9 |
+2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;;10BA;;10BA |
+2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;;10BB;;10BB |
+2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;;10BC;;10BC |
+2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;;10BD;;10BD |
+2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;;10BE;;10BE |
+2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;;10BF;;10BF |
+2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;;10C0;;10C0 |
+2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;;10C1;;10C1 |
+2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;;10C2;;10C2 |
+2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;;10C3;;10C3 |
+2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;;10C4;;10C4 |
+2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;;10C5;;10C5 |
+2D27;GEORGIAN SMALL LETTER YN;Ll;0;L;;;;;N;;;10C7;;10C7 |
+2D2D;GEORGIAN SMALL LETTER AEN;Ll;0;L;;;;;N;;;10CD;;10CD |
+2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; |
+2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; |
+2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; |
+2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; |
+2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; |
+2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; |
+2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; |
+2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; |
+2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; |
+2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; |
+2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; |
+2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; |
+2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; |
+2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; |
+2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; |
+2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; |
+2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;;;; |
+2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; |
+2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; |
+2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; |
+2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; |
+2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; |
+2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; |
+2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; |
+2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; |
+2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; |
+2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; |
+2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; |
+2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; |
+2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; |
+2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; |
+2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; |
+2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; |
+2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; |
+2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; |
+2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;;;; |
+2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; |
+2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; |
+2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; |
+2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; |
+2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;;;; |
+2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; |
+2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; |
+2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; |
+2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; |
+2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; |
+2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; |
+2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; |
+2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; |
+2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; |
+2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; |
+2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; |
+2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;;;; |
+2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; |
+2D66;TIFINAGH LETTER YE;Lo;0;L;;;;;N;;;;; |
+2D67;TIFINAGH LETTER YO;Lo;0;L;;;;;N;;;;; |
+2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;;;; |
+2D70;TIFINAGH SEPARATOR MARK;Po;0;L;;;;;N;;;;; |
+2D7F;TIFINAGH CONSONANT JOINER;Mn;9;NSM;;;;;N;;;;; |
+2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; |
+2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; |
+2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; |
+2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; |
+2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; |
+2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; |
+2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; |
+2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; |
+2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; |
+2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; |
+2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; |
+2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; |
+2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; |
+2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; |
+2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; |
+2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; |
+2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; |
+2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; |
+2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; |
+2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; |
+2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; |
+2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; |
+2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; |
+2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; |
+2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; |
+2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; |
+2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; |
+2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; |
+2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; |
+2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; |
+2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; |
+2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; |
+2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; |
+2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; |
+2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; |
+2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; |
+2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; |
+2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; |
+2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; |
+2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; |
+2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; |
+2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; |
+2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; |
+2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; |
+2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; |
+2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; |
+2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; |
+2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; |
+2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; |
+2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; |
+2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; |
+2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; |
+2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; |
+2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; |
+2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; |
+2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; |
+2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; |
+2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; |
+2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; |
+2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; |
+2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; |
+2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; |
+2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; |
+2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; |
+2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; |
+2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; |
+2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; |
+2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; |
+2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; |
+2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; |
+2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; |
+2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; |
+2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; |
+2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; |
+2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; |
+2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; |
+2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; |
+2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; |
+2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; |
+2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;; |
+2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;; |
+2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;; |
+2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;; |
+2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;; |
+2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;; |
+2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;; |
+2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;; |
+2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;; |
+2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;; |
+2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;; |
+2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;; |
+2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;; |
+2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;; |
+2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;; |
+2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;; |
+2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;; |
+2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;; |
+2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;; |
+2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;; |
+2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; |
+2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;; |
+2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;; |
+2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;; |
+2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;; |
+2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;; |
+2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;; |
+2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;; |
+2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;; |
+2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;; |
+2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; |
+2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;; |
+2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; |
+2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; |
+2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; |
+2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; |
+2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; |
+2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; |
+2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; |
+2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; |
+2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; |
+2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; |
+2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; |
+2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; |
+2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; |
+2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; |
+2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; |
+2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; |
+2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; |
+2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; |
+2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; |
+2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; |
+2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; |
+2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; |
+2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; |
+2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; |
+2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;; |
+2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;; |
+2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;; |
+2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;; |
+2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; |
+2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; |
+2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;; |
+2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;; |
+2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;; |
+2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;; |
+2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;; |
+2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;; |
+2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; |
+2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; |
+2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;; |
+2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; |
+2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;; |
+2E30;RING POINT;Po;0;ON;;;;;N;;;;; |
+2E31;WORD SEPARATOR MIDDLE DOT;Po;0;ON;;;;;N;;;;; |
+2E32;TURNED COMMA;Po;0;ON;;;;;N;;;;; |
+2E33;RAISED DOT;Po;0;ON;;;;;N;;;;; |
+2E34;RAISED COMMA;Po;0;ON;;;;;N;;;;; |
+2E35;TURNED SEMICOLON;Po;0;ON;;;;;N;;;;; |
+2E36;DAGGER WITH LEFT GUARD;Po;0;ON;;;;;N;;;;; |
+2E37;DAGGER WITH RIGHT GUARD;Po;0;ON;;;;;N;;;;; |
+2E38;TURNED DAGGER;Po;0;ON;;;;;N;;;;; |
+2E39;TOP HALF SECTION SIGN;Po;0;ON;;;;;N;;;;; |
+2E3A;TWO-EM DASH;Pd;0;ON;;;;;N;;;;; |
+2E3B;THREE-EM DASH;Pd;0;ON;;;;;N;;;;; |
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; |
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; |
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; |
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; |
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; |
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; |
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; |
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; |
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; |
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; |
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; |
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; |
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; |
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; |
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; |
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; |
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; |
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; |
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; |
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; |
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; |
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; |
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; |
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; |
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; |
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; |
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; |
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; |
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; |
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; |
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;; |
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; |
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; |
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; |
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; |
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; |
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; |
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; |
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; |
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; |
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; |
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; |
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; |
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; |
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; |
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; |
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; |
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; |
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; |
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; |
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; |
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; |
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; |
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; |
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; |
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; |
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; |
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; |
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; |
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; |
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; |
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; |
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; |
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; |
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; |
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; |
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; |
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; |
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; |
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; |
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; |
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; |
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; |
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; |
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; |
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; |
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; |
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; |
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; |
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; |
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; |
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; |
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; |
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; |
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; |
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; |
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; |
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; |
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; |
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; |
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; |
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; |
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; |
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; |
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; |
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; |
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; |
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; |
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; |
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; |
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; |
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; |
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; |
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; |
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; |
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; |
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; |
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; |
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; |
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; |
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; |
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; |
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; |
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; |
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;; |
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;; |
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;; |
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;; |
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;; |
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;; |
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;; |
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;; |
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;; |
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;; |
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;; |
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;; |
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;; |
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;; |
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;; |
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;; |
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;; |
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;; |
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;; |
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;; |
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;; |
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;; |
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;; |
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;; |
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;; |
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;; |
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;; |
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;; |
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;; |
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;; |
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;; |
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;; |
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;; |
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;; |
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;; |
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;; |
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;; |
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;; |
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;; |
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;; |
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;; |
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;; |
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;; |
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;; |
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;; |
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;; |
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;; |
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;; |
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;; |
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;; |
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;; |
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;; |
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;; |
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;; |
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;; |
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;; |
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;; |
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;; |
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;; |
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;; |
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;; |
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;; |
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;; |
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;; |
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;; |
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;; |
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;; |
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;; |
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;; |
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;; |
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;; |
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;; |
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;; |
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;; |
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;; |
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;; |
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;; |
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;; |
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;; |
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;; |
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;; |
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;; |
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;; |
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;; |
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;; |
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;; |
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;; |
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;; |
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;; |
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;; |
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;; |
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;; |
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;; |
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;; |
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;; |
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;; |
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;; |
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;; |
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;; |
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;; |
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;; |
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;; |
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;; |
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;; |
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;; |
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;; |
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;; |
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;; |
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;; |
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;; |
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;; |
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;; |
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;; |
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;; |
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;; |
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;; |
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;; |
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;; |
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;; |
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;; |
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;; |
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;; |
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;; |
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;; |
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;; |
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;; |
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;; |
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;; |
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;; |
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;; |
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;; |
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;; |
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;; |
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;; |
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;; |
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;; |
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;; |
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;; |
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;; |
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;; |
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;; |
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;; |
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;; |
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;; |
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;; |
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;; |
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;; |
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;; |
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;; |
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;; |
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;; |
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;; |
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;; |
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;; |
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;; |
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;; |
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;; |
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;; |
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;; |
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;; |
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;; |
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;; |
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;; |
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;; |
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;; |
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;; |
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;; |
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;; |
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;; |
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;; |
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;; |
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;; |
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;; |
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;; |
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;; |
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;; |
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;; |
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;; |
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;; |
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;; |
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;; |
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;; |
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;; |
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;; |
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;; |
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;; |
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;; |
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;; |
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;; |
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;; |
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;; |
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;; |
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;; |
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;; |
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;; |
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;; |
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;; |
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;; |
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;; |
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;; |
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;; |
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;; |
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;; |
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;; |
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;; |
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;; |
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;; |
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;; |
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;; |
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;; |
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;; |
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;; |
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;; |
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;; |
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;; |
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; |
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; |
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; |
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; |
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; |
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; |
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; |
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; |
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; |
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; |
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; |
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; |
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;; |
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; |
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; |
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;; |
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; |
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; |
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; |
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; |
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; |
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; |
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; |
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; |
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; |
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; |
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; |
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; |
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; |
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; |
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;; |
+3013;GETA MARK;So;0;ON;;;;;N;;;;; |
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; |
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; |
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; |
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; |
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; |
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; |
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; |
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; |
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; |
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; |
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; |
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; |
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; |
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; |
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; |
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; |
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; |
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; |
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; |
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; |
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; |
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; |
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; |
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; |
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; |
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; |
+302E;HANGUL SINGLE DOT TONE MARK;Mc;224;L;;;;;N;;;;; |
+302F;HANGUL DOUBLE DOT TONE MARK;Mc;224;L;;;;;N;;;;; |
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; |
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; |
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; |
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; |
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; |
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; |
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;; |
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; |
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;; |
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;; |
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;; |
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; |
+303C;MASU MARK;Lo;0;L;;;;;N;;;;; |
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; |
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; |
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; |
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; |
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; |
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; |
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; |
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; |
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; |
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; |
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; |
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; |
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; |
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; |
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; |
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; |
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; |
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; |
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; |
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; |
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; |
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; |
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; |
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; |
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; |
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; |
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; |
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; |
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; |
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; |
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; |
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; |
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; |
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; |
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; |
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; |
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; |
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; |
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; |
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; |
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; |
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; |
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; |
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; |
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; |
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; |
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; |
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; |
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; |
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; |
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; |
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; |
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; |
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; |
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; |
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; |
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; |
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; |
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; |
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; |
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; |
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; |
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; |
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; |
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; |
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; |
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; |
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; |
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; |
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; |
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; |
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; |
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; |
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; |
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; |
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; |
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; |
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; |
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; |
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; |
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; |
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; |
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; |
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; |
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; |
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; |
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; |
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; |
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; |
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; |
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; |
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;; |
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;; |
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; |
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; |
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;; |
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; |
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; |
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; |
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; |
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; |
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; |
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; |
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; |
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; |
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; |
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; |
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; |
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; |
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; |
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; |
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; |
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; |
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; |
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; |
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; |
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; |
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; |
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; |
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; |
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; |
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; |
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; |
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; |
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; |
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; |
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; |
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; |
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; |
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; |
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; |
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; |
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; |
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; |
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; |
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; |
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; |
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; |
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; |
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; |
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; |
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; |
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; |
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; |
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; |
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; |
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; |
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; |
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; |
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; |
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; |
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; |
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; |
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; |
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; |
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; |
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; |
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; |
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; |
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; |
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; |
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; |
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; |
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; |
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; |
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; |
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; |
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; |
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; |
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; |
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; |
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; |
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; |
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; |
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; |
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; |
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; |
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; |
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; |
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; |
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; |
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; |
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; |
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; |
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; |
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; |
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; |
+30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; |
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; |
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; |
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; |
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;; |
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; |
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; |
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; |
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; |
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; |
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; |
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; |
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; |
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; |
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; |
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; |
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; |
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; |
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; |
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; |
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; |
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; |
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; |
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; |
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; |
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; |
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; |
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; |
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; |
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; |
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; |
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; |
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; |
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; |
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; |
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; |
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; |
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; |
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; |
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; |
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; |
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; |
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; |
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; |
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; |
+312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;; |
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;; |
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; |
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; |
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;; |
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; |
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; |
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;; |
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; |
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;; |
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; |
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; |
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; |
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; |
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; |
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; |
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; |
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;; |
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;; |
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; |
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; |
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;; |
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; |
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;; |
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;; |
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; |
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;; |
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;; |
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;; |
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;; |
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;; |
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;; |
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;; |
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;; |
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;; |
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;; |
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;; |
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;; |
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;; |
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;; |
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;; |
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;; |
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;; |
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;; |
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;; |
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;; |
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;; |
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;; |
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;; |
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;; |
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;; |
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;; |
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;; |
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; |
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; |
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; |
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; |
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; |
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; |
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; |
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; |
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; |
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; |
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; |
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; |
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; |
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; |
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; |
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; |
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; |
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; |
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; |
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; |
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; |
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; |
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; |
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; |
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; |
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; |
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; |
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; |
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;; |
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; |
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; |
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; |
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; |
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; |
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;; |
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;; |
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;; |
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;; |
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;; |
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;; |
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;; |
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;; |
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;;;; |
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;;;; |
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;;;; |
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;;;; |
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;;;; |
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;;;; |
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;;;; |
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;;;; |
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;;;; |
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;;;; |
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;;;; |
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;;;; |
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;;;; |
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;;;; |
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;;;; |
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;;;; |
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; |
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; |
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; |
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; |
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; |
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; |
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; |
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; |
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; |
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; |
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; |
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; |
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; |
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; |
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; |
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; |
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; |
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; |
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; |
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; |
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; |
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; |
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; |
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; |
+31B8;BOPOMOFO LETTER GH;Lo;0;L;;;;;N;;;;; |
+31B9;BOPOMOFO LETTER LH;Lo;0;L;;;;;N;;;;; |
+31BA;BOPOMOFO LETTER ZY;Lo;0;L;;;;;N;;;;; |
+31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; |
+31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; |
+31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; |
+31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; |
+31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; |
+31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; |
+31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; |
+31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; |
+31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; |
+31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; |
+31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; |
+31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; |
+31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; |
+31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; |
+31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; |
+31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; |
+31D0;CJK STROKE H;So;0;ON;;;;;N;;;;; |
+31D1;CJK STROKE S;So;0;ON;;;;;N;;;;; |
+31D2;CJK STROKE P;So;0;ON;;;;;N;;;;; |
+31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;; |
+31D4;CJK STROKE D;So;0;ON;;;;;N;;;;; |
+31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;; |
+31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;; |
+31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;; |
+31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;; |
+31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;; |
+31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;; |
+31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;; |
+31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;; |
+31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;; |
+31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;; |
+31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;; |
+31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;; |
+31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; |
+31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; |
+31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;; |
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; |
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; |
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; |
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; |
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; |
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; |
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; |
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; |
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; |
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; |
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; |
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; |
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; |
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; |
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; |
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; |
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; |
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;; |
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; |
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; |
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;; |
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; |
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;; |
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;; |
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; |
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; |
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; |
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; |
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; |
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;; |
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; |
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; |
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; |
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; |
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; |
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; |
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; |
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; |
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; |
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; |
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; |
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; |
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; |
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; |
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; |
+321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; |
+321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;; |
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;; |
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;; |
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;; |
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;; |
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;; |
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;; |
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;; |
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;; |
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;; |
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;; |
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;; |
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;; |
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;; |
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;; |
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;; |
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;; |
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;; |
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;; |
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;; |
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;; |
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;; |
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;; |
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;; |
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;; |
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;; |
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;; |
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;; |
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;; |
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;; |
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;; |
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;; |
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;; |
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;; |
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;; |
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;; |
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;; |
+3244;CIRCLED IDEOGRAPH QUESTION;So;0;L;<circle> 554F;;;;N;;;;; |
+3245;CIRCLED IDEOGRAPH KINDERGARTEN;So;0;L;<circle> 5E7C;;;;N;;;;; |
+3246;CIRCLED IDEOGRAPH SCHOOL;So;0;L;<circle> 6587;;;;N;;;;; |
+3247;CIRCLED IDEOGRAPH KOTO;So;0;L;<circle> 7B8F;;;;N;;;;; |
+3248;CIRCLED NUMBER TEN ON BLACK SQUARE;No;0;L;;;;10;N;;;;; |
+3249;CIRCLED NUMBER TWENTY ON BLACK SQUARE;No;0;L;;;;20;N;;;;; |
+324A;CIRCLED NUMBER THIRTY ON BLACK SQUARE;No;0;L;;;;30;N;;;;; |
+324B;CIRCLED NUMBER FORTY ON BLACK SQUARE;No;0;L;;;;40;N;;;;; |
+324C;CIRCLED NUMBER FIFTY ON BLACK SQUARE;No;0;L;;;;50;N;;;;; |
+324D;CIRCLED NUMBER SIXTY ON BLACK SQUARE;No;0;L;;;;60;N;;;;; |
+324E;CIRCLED NUMBER SEVENTY ON BLACK SQUARE;No;0;L;;;;70;N;;;;; |
+324F;CIRCLED NUMBER EIGHTY ON BLACK SQUARE;No;0;L;;;;80;N;;;;; |
+3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;; |
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;; |
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;; |
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;; |
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;; |
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;; |
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;; |
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;; |
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;; |
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;; |
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;; |
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;; |
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;; |
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;; |
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;; |
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;; |
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; |
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;; |
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; |
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;; |
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;; |
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;; |
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;; |
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;; |
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; |
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;; |
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; |
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;; |
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;; |
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;; |
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;; |
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;; |
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;; |
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;; |
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;; |
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;; |
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;; |
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;; |
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;; |
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;; |
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;; |
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;; |
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;; |
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;; |
+327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;; |
+327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;; |
+327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;; |
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; |
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;; |
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;; |
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;; |
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;; |
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;; |
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;; |
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;; |
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;; |
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;; |
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;; |
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;; |
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;; |
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;; |
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;; |
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;; |
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;; |
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;; |
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;; |
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;; |
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;; |
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;; |
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;; |
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;; |
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;; |
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;; |
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;; |
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;; |
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;; |
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;; |
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;; |
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;; |
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;; |
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;; |
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;; |
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;; |
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;; |
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;; |
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; |
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;; |
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;; |
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;; |
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;; |
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;; |
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;; |
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;; |
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;; |
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;; |
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;; |
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;; |
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;; |
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;; |
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;; |
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;; |
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;; |
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;; |
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;; |
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;; |
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;; |
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;; |
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;; |
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;; |
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;; |
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;; |
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;; |
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;; |
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;; |
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;; |
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;; |
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;; |
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;; |
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;; |
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;; |
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;; |
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;; |
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;; |
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;; |
+32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;; |
+32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;; |
+32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;; |
+32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;; |
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;; |
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;; |
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;; |
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;; |
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;; |
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;; |
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;; |
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;; |
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;; |
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;; |
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;; |
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;; |
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;; |
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;; |
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;; |
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;; |
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;; |
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;; |
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;; |
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;; |
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;; |
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;; |
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;; |
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;; |
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;; |
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;; |
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;; |
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;; |
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;; |
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;; |
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;; |
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;; |
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;; |
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;; |
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;; |
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;; |
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;; |
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;; |
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;; |
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;; |
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;; |
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;; |
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;; |
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;; |
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;; |
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;; |
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;; |
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; |
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; |
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; |
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; |
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; |
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; |
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;; |
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; |
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; |
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; |
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; |
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; |
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; |
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; |
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; |
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; |
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;; |
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; |
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; |
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; |
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;; |
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; |
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; |
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; |
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; |
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; |
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; |
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; |
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; |
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; |
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; |
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; |
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; |
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; |
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; |
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; |
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; |
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;; |
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;; |
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;; |
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;; |
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; |
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; |
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; |
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; |
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; |
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; |
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; |
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;; |
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;; |
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; |
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; |
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; |
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; |
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; |
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;; |
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; |
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; |
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; |
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; |
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; |
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; |
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; |
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;; |
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; |
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; |
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; |
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; |
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; |
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; |
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; |
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; |
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; |
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;; |
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; |
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;; |
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; |
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; |
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; |
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; |
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; |
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; |
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;; |
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; |
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; |
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;; |
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; |
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; |
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;; |
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;; |
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;; |
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;; |
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;; |
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;; |
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;; |
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;; |
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;; |
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;; |
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;; |
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;; |
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;; |
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;; |
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;; |
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;; |
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;; |
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;; |
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;; |
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;; |
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;; |
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;; |
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;; |
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;; |
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;; |
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;; |
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;; |
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;; |
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;; |
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;; |
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;; |
+3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;; |
+3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;; |
+3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;; |
+337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;; |
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; |
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; |
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; |
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; |
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; |
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;; |
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;; |
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;; |
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;; |
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;; |
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;; |
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;; |
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;; |
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;; |
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; |
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;; |
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;; |
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;; |
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;; |
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;; |
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;; |
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;; |
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;; |
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;; |
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;; |
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;; |
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;; |
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;; |
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;; |
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;; |
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;; |
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;; |
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;; |
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;; |
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;; |
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;; |
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; |
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; |
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;; |
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; |
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; |
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; |
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;; |
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; |
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;; |
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; |
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;; |
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;; |
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;; |
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;; |
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;; |
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; |
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; |
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;; |
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;; |
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;; |
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;; |
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;; |
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;; |
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;; |
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;; |
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;; |
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;; |
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;; |
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;; |
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;; |
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;; |
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;; |
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;; |
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;; |
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;; |
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;; |
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;; |
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;; |
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;; |
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; |
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;; |
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;; |
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;; |
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;; |
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;; |
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;; |
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;; |
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;; |
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;; |
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;; |
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;; |
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;; |
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;; |
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;; |
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;; |
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;; |
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;; |
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;; |
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;; |
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;; |
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;; |
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;; |
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;; |
+33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;; |
+33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;; |
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;; |
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;; |
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;; |
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;; |
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;; |
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;; |
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;; |
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;; |
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;; |
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;; |
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;; |
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;; |
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;; |
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;; |
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;; |
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;; |
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;; |
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;; |
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;; |
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;; |
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;; |
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;; |
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;; |
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;; |
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;; |
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;; |
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;; |
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;; |
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;; |
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;; |
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;; |
+33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;; |
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; |
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; |
+4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; |
+4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; |
+4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; |
+4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; |
+4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; |
+4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; |
+4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; |
+4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; |
+4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; |
+4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; |
+4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; |
+4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; |
+4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; |
+4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; |
+4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; |
+4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; |
+4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; |
+4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; |
+4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; |
+4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; |
+4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; |
+4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; |
+4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; |
+4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; |
+4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; |
+4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; |
+4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; |
+4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; |
+4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; |
+4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; |
+4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; |
+4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; |
+4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; |
+4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; |
+4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; |
+4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; |
+4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; |
+4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; |
+4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; |
+4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; |
+4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; |
+4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; |
+4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; |
+4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; |
+4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; |
+4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; |
+4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; |
+4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; |
+4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; |
+4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; |
+4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; |
+4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; |
+4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; |
+4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; |
+4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; |
+4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; |
+4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; |
+4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; |
+4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; |
+4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; |
+4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; |
+4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; |
+4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; |
+4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; |
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;; |
+9FCC;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;; |
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; |
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; |
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; |
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; |
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; |
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; |
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; |
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; |
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; |
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; |
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; |
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; |
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; |
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; |
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; |
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; |
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; |
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; |
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; |
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; |
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; |
+A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; |
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; |
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; |
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; |
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; |
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; |
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; |
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; |
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; |
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; |
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; |
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; |
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; |
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; |
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; |
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; |
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; |
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; |
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; |
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; |
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; |
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; |
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; |
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; |
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; |
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; |
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; |
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; |
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; |
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; |
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; |
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; |
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; |
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; |
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; |
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; |
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; |
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; |
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; |
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; |
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; |
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; |
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; |
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; |
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; |
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; |
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; |
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; |
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; |
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; |
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; |
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; |
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; |
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; |
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; |
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; |
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; |
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; |
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; |
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; |
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; |
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; |
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; |
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; |
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; |
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; |
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; |
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; |
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; |
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; |
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; |
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; |
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; |
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; |
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; |
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; |
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; |
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; |
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; |
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; |
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; |
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; |
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; |
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; |
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; |
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; |
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; |
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; |
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; |
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; |
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; |
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; |
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; |
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; |
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; |
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; |
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; |
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; |
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; |
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; |
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; |
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; |
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; |
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; |
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; |
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; |
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; |
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; |
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; |
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; |
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; |
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; |
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; |
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; |
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; |
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; |
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; |
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; |
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; |
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; |
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; |
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; |
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; |
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; |
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; |
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; |
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; |
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; |
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; |
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; |
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; |
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; |
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; |
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; |
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; |
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; |
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; |
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; |
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; |
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; |
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; |
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; |
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; |
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; |
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; |
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; |
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; |
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; |
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; |
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; |
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; |
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; |
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; |
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; |
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; |
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; |
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; |
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; |
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; |
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; |
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; |
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; |
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; |
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; |
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; |
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; |
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; |
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; |
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; |
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; |
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; |
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; |
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; |
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; |
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; |
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; |
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; |
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; |
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; |
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; |
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; |
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; |
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; |
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; |
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; |
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; |
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; |
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; |
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; |
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; |
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; |
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; |
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; |
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; |
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; |
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; |
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; |
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; |
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; |
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; |
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; |
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; |
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; |
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; |
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; |
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; |
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; |
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; |
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; |
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; |
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; |
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; |
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; |
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; |
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; |
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; |
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; |
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; |
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; |
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; |
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; |
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; |
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; |
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; |
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; |
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; |
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; |
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; |
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; |
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; |
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; |
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; |
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; |
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; |
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; |
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; |
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; |
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; |
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; |
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; |
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; |
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; |
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; |
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; |
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; |
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; |
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; |
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; |
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; |
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; |
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; |
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; |
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; |
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; |
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; |
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; |
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; |
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; |
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; |
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; |
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; |
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; |
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; |
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; |
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; |
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; |
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; |
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; |
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; |
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; |
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; |
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; |
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; |
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; |
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; |
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; |
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; |
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; |
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; |
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; |
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; |
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; |
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; |
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; |
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; |
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; |
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; |
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; |
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; |
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; |
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; |
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; |
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; |
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; |
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; |
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; |
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; |
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; |
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; |
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; |
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; |
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; |
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; |
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; |
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; |
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; |
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; |
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; |
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; |
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; |
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; |
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; |
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; |
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; |
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; |
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; |
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; |
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; |
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; |
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; |
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; |
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; |
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; |
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; |
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; |
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; |
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; |
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; |
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; |
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; |
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; |
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; |
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; |
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; |
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; |
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; |
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; |
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; |
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; |
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; |
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; |
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; |
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; |
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; |
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; |
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; |
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; |
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; |
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; |
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; |
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; |
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; |
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; |
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; |
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; |
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; |
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; |
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; |
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; |
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; |
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; |
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; |
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; |
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; |
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; |
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; |
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; |
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; |
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; |
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; |
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; |
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; |
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; |
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; |
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; |
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; |
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; |
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; |
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; |
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; |
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; |
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; |
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; |
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; |
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; |
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; |
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; |
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; |
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; |
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; |
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; |
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; |
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; |
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; |
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; |
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; |
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; |
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; |
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; |
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; |
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; |
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; |
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; |
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; |
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; |
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; |
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; |
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; |
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; |
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; |
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; |
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; |
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; |
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; |
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; |
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; |
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; |
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; |
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; |
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; |
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; |
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; |
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; |
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; |
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; |
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; |
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; |
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; |
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; |
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; |
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; |
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; |
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; |
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; |
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; |
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; |
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; |
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; |
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; |
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; |
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; |
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; |
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; |
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; |
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; |
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; |
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; |
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; |
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; |
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; |
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; |
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; |
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; |
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; |
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; |
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; |
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; |
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; |
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; |
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; |
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; |
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; |
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; |
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; |
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; |
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; |
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; |
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; |
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; |
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; |
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; |
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; |
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; |
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; |
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; |
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; |
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; |
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; |
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; |
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; |
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; |
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; |
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; |
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; |
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; |
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; |
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; |
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; |
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; |
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; |
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; |
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; |
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; |
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; |
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; |
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; |
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; |
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; |
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; |
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; |
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; |
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; |
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; |
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; |
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; |
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; |
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; |
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; |
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; |
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; |
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; |
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; |
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; |
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; |
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; |
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; |
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; |
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; |
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; |
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; |
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; |
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; |
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; |
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; |
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; |
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; |
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; |
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; |
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; |
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; |
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; |
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; |
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; |
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; |
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; |
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; |
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; |
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; |
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; |
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; |
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; |
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; |
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; |
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; |
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; |
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; |
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; |
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; |
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; |
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; |
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; |
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; |
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; |
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; |
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; |
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; |
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; |
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; |
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; |
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; |
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; |
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; |
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; |
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; |
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; |
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; |
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; |
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; |
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; |
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; |
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; |
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; |
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; |
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; |
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; |
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; |
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; |
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; |
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; |
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; |
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; |
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; |
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; |
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; |
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; |
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; |
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; |
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; |
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; |
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; |
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; |
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; |
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; |
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; |
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; |
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; |
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; |
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; |
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; |
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; |
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; |
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; |
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; |
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; |
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; |
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; |
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; |
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; |
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; |
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; |
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; |
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; |
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; |
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; |
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; |
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; |
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; |
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; |
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; |
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; |
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; |
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; |
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; |
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; |
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; |
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; |
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; |
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; |
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; |
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; |
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; |
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; |
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; |
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; |
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; |
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; |
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; |
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; |
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; |
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; |
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; |
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; |
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; |
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; |
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; |
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; |
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; |
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; |
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; |
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; |
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; |
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; |
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; |
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; |
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; |
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; |
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; |
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; |
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; |
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; |
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; |
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; |
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; |
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; |
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; |
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; |
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; |
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; |
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; |
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; |
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; |
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; |
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; |
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; |
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; |
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; |
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; |
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; |
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; |
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; |
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; |
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; |
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; |
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; |
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; |
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; |
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; |
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; |
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; |
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; |
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; |
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; |
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; |
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; |
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; |
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; |
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; |
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; |
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; |
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; |
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; |
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; |
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; |
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; |
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; |
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; |
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; |
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; |
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; |
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; |
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; |
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; |
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; |
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; |
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; |
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; |
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; |
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; |
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; |
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; |
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; |
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; |
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; |
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; |
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; |
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; |
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; |
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; |
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; |
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; |
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; |
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; |
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; |
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; |
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; |
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; |
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; |
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; |
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; |
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; |
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; |
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; |
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; |
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; |
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; |
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; |
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; |
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; |
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; |
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; |
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; |
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; |
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; |
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; |
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; |
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; |
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; |
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; |
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; |
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; |
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; |
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; |
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; |
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; |
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; |
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; |
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; |
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; |
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; |
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; |
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; |
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; |
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; |
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; |
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; |
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; |
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; |
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; |
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; |
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; |
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; |
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; |
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; |
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; |
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; |
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; |
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; |
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; |
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; |
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; |
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; |
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; |
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; |
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; |
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; |
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; |
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; |
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; |
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; |
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; |
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; |
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; |
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; |
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; |
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; |
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; |
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; |
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; |
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; |
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; |
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; |
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; |
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; |
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; |
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; |
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; |
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; |
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; |
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; |
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; |
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; |
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; |
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; |
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; |
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; |
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; |
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; |
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; |
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; |
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; |
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; |
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; |
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; |
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; |
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; |
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; |
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; |
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; |
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; |
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; |
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; |
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; |
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; |
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; |
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; |
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; |
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; |
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; |
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; |
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; |
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; |
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; |
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; |
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; |
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; |
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; |
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; |
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; |
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; |
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; |
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; |
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; |
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; |
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; |
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; |
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; |
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; |
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; |
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; |
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; |
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; |
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; |
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; |
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; |
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; |
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; |
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; |
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; |
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; |
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; |
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; |
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; |
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; |
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; |
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; |
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; |
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; |
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; |
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; |
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; |
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; |
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; |
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; |
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; |
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; |
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; |
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; |
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; |
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; |
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; |
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; |
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; |
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; |
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; |
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; |
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; |
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; |
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; |
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; |
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; |
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; |
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; |
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; |
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; |
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; |
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; |
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; |
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; |
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; |
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; |
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; |
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; |
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; |
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; |
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; |
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; |
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; |
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; |
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; |
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; |
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; |
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; |
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; |
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; |
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; |
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; |
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; |
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; |
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; |
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; |
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; |
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; |
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; |
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; |
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; |
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; |
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; |
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; |
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; |
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; |
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; |
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; |
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; |
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; |
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; |
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; |
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; |
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; |
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; |
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; |
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; |
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; |
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; |
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; |
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; |
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; |
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; |
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; |
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; |
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; |
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; |
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; |
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; |
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; |
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; |
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; |
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; |
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; |
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; |
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; |
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; |
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; |
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; |
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; |
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; |
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; |
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; |
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; |
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; |
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; |
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; |
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; |
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; |
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; |
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; |
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; |
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; |
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; |
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; |
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; |
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; |
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; |
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; |
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; |
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; |
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; |
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; |
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; |
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; |
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; |
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; |
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; |
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; |
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; |
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; |
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; |
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; |
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; |
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; |
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; |
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; |
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; |
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; |
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; |
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; |
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; |
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; |
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; |
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; |
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; |
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; |
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; |
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; |
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; |
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; |
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; |
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; |
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; |
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; |
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; |
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; |
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; |
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; |
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; |
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; |
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; |
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; |
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; |
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; |
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; |
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; |
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; |
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; |
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; |
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; |
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; |
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; |
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; |
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; |
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; |
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; |
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; |
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; |
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; |
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; |
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; |
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; |
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; |
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; |
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; |
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; |
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; |
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; |
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; |
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; |
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; |
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; |
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; |
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; |
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; |
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; |
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; |
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; |
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; |
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; |
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; |
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; |
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; |
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; |
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; |
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; |
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; |
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; |
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; |
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; |
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; |
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; |
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; |
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; |
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; |
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; |
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; |
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; |
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; |
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; |
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; |
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; |
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; |
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; |
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; |
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; |
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; |
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; |
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; |
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; |
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; |
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; |
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; |
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; |
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; |
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; |
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; |
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; |
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; |
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; |
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; |
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; |
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; |
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; |
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; |
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; |
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; |
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; |
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; |
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; |
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; |
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; |
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; |
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; |
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; |
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; |
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; |
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; |
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; |
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; |
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; |
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; |
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; |
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; |
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; |
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; |
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; |
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; |
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; |
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; |
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; |
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; |
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; |
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; |
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; |
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; |
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; |
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; |
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; |
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; |
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; |
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; |
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; |
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; |
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; |
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; |
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; |
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; |
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; |
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; |
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; |
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; |
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; |
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; |
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; |
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; |
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; |
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; |
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; |
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; |
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; |
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; |
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; |
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; |
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; |
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; |
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; |
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; |
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; |
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; |
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; |
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; |
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; |
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; |
+A4D0;LISU LETTER BA;Lo;0;L;;;;;N;;;;; |
+A4D1;LISU LETTER PA;Lo;0;L;;;;;N;;;;; |
+A4D2;LISU LETTER PHA;Lo;0;L;;;;;N;;;;; |
+A4D3;LISU LETTER DA;Lo;0;L;;;;;N;;;;; |
+A4D4;LISU LETTER TA;Lo;0;L;;;;;N;;;;; |
+A4D5;LISU LETTER THA;Lo;0;L;;;;;N;;;;; |
+A4D6;LISU LETTER GA;Lo;0;L;;;;;N;;;;; |
+A4D7;LISU LETTER KA;Lo;0;L;;;;;N;;;;; |
+A4D8;LISU LETTER KHA;Lo;0;L;;;;;N;;;;; |
+A4D9;LISU LETTER JA;Lo;0;L;;;;;N;;;;; |
+A4DA;LISU LETTER CA;Lo;0;L;;;;;N;;;;; |
+A4DB;LISU LETTER CHA;Lo;0;L;;;;;N;;;;; |
+A4DC;LISU LETTER DZA;Lo;0;L;;;;;N;;;;; |
+A4DD;LISU LETTER TSA;Lo;0;L;;;;;N;;;;; |
+A4DE;LISU LETTER TSHA;Lo;0;L;;;;;N;;;;; |
+A4DF;LISU LETTER MA;Lo;0;L;;;;;N;;;;; |
+A4E0;LISU LETTER NA;Lo;0;L;;;;;N;;;;; |
+A4E1;LISU LETTER LA;Lo;0;L;;;;;N;;;;; |
+A4E2;LISU LETTER SA;Lo;0;L;;;;;N;;;;; |
+A4E3;LISU LETTER ZHA;Lo;0;L;;;;;N;;;;; |
+A4E4;LISU LETTER ZA;Lo;0;L;;;;;N;;;;; |
+A4E5;LISU LETTER NGA;Lo;0;L;;;;;N;;;;; |
+A4E6;LISU LETTER HA;Lo;0;L;;;;;N;;;;; |
+A4E7;LISU LETTER XA;Lo;0;L;;;;;N;;;;; |
+A4E8;LISU LETTER HHA;Lo;0;L;;;;;N;;;;; |
+A4E9;LISU LETTER FA;Lo;0;L;;;;;N;;;;; |
+A4EA;LISU LETTER WA;Lo;0;L;;;;;N;;;;; |
+A4EB;LISU LETTER SHA;Lo;0;L;;;;;N;;;;; |
+A4EC;LISU LETTER YA;Lo;0;L;;;;;N;;;;; |
+A4ED;LISU LETTER GHA;Lo;0;L;;;;;N;;;;; |
+A4EE;LISU LETTER A;Lo;0;L;;;;;N;;;;; |
+A4EF;LISU LETTER AE;Lo;0;L;;;;;N;;;;; |
+A4F0;LISU LETTER E;Lo;0;L;;;;;N;;;;; |
+A4F1;LISU LETTER EU;Lo;0;L;;;;;N;;;;; |
+A4F2;LISU LETTER I;Lo;0;L;;;;;N;;;;; |
+A4F3;LISU LETTER O;Lo;0;L;;;;;N;;;;; |
+A4F4;LISU LETTER U;Lo;0;L;;;;;N;;;;; |
+A4F5;LISU LETTER UE;Lo;0;L;;;;;N;;;;; |
+A4F6;LISU LETTER UH;Lo;0;L;;;;;N;;;;; |
+A4F7;LISU LETTER OE;Lo;0;L;;;;;N;;;;; |
+A4F8;LISU LETTER TONE MYA TI;Lm;0;L;;;;;N;;;;; |
+A4F9;LISU LETTER TONE NA PO;Lm;0;L;;;;;N;;;;; |
+A4FA;LISU LETTER TONE MYA CYA;Lm;0;L;;;;;N;;;;; |
+A4FB;LISU LETTER TONE MYA BO;Lm;0;L;;;;;N;;;;; |
+A4FC;LISU LETTER TONE MYA NA;Lm;0;L;;;;;N;;;;; |
+A4FD;LISU LETTER TONE MYA JEU;Lm;0;L;;;;;N;;;;; |
+A4FE;LISU PUNCTUATION COMMA;Po;0;L;;;;;N;;;;; |
+A4FF;LISU PUNCTUATION FULL STOP;Po;0;L;;;;;N;;;;; |
+A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;; |
+A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;; |
+A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;; |
+A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;; |
+A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;; |
+A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;; |
+A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;; |
+A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;; |
+A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;; |
+A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;; |
+A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;; |
+A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;; |
+A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;; |
+A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;; |
+A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;; |
+A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;; |
+A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;; |
+A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;; |
+A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;; |
+A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;; |
+A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;; |
+A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;; |
+A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;; |
+A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; |
+A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; |
+A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; |
+A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;; |
+A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;; |
+A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;; |
+A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;; |
+A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;; |
+A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;; |
+A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;; |
+A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;; |
+A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;; |
+A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; |
+A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;; |
+A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;; |
+A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;; |
+A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;; |
+A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;; |
+A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;; |
+A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;; |
+A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;; |
+A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;; |
+A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;; |
+A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;; |
+A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;; |
+A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;; |
+A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;; |
+A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;; |
+A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;; |
+A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;; |
+A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;; |
+A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;; |
+A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;; |
+A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;; |
+A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;; |
+A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; |
+A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;; |
+A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;; |
+A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; |
+A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; |
+A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;; |
+A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;; |
+A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; |
+A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;; |
+A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;; |
+A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;; |
+A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;; |
+A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;; |
+A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;; |
+A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; |
+A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;; |
+A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;; |
+A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;; |
+A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;; |
+A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;; |
+A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;; |
+A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;; |
+A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;; |
+A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;; |
+A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;; |
+A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;; |
+A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;; |
+A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;; |
+A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;; |
+A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;; |
+A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;; |
+A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;; |
+A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;; |
+A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;; |
+A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;; |
+A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;; |
+A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;; |
+A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;; |
+A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;; |
+A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; |
+A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;; |
+A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; |
+A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; |
+A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; |
+A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;; |
+A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;; |
+A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;; |
+A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;; |
+A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;; |
+A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;; |
+A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;; |
+A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;; |
+A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;; |
+A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;; |
+A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;; |
+A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;; |
+A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;; |
+A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;; |
+A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;; |
+A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;; |
+A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;; |
+A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;; |
+A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;; |
+A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;; |
+A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;; |
+A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;; |
+A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;; |
+A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;; |
+A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;; |
+A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;; |
+A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;; |
+A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;; |
+A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;; |
+A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;; |
+A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;; |
+A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;; |
+A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;; |
+A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;; |
+A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;; |
+A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;; |
+A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;; |
+A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;; |
+A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;; |
+A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;; |
+A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;; |
+A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;; |
+A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;; |
+A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;; |
+A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;; |
+A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;; |
+A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;; |
+A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;; |
+A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;; |
+A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;; |
+A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;; |
+A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;; |
+A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;; |
+A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;; |
+A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;; |
+A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;; |
+A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;; |
+A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;; |
+A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;; |
+A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;; |
+A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;; |
+A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;; |
+A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;; |
+A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;; |
+A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;; |
+A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;; |
+A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;; |
+A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;; |
+A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;; |
+A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; |
+A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;; |
+A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; |
+A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; |
+A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; |
+A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;; |
+A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;; |
+A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; |
+A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;; |
+A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;; |
+A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;; |
+A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;; |
+A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;; |
+A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;; |
+A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; |
+A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;; |
+A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;; |
+A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;; |
+A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;; |
+A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;; |
+A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;; |
+A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;; |
+A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;; |
+A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;; |
+A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;; |
+A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;; |
+A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;; |
+A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;; |
+A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;; |
+A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;; |
+A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;; |
+A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;; |
+A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;; |
+A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;; |
+A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;; |
+A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;; |
+A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;; |
+A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;; |
+A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;; |
+A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; |
+A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;; |
+A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; |
+A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; |
+A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; |
+A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;; |
+A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;; |
+A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; |
+A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;; |
+A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;; |
+A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;; |
+A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;; |
+A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;; |
+A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;; |
+A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; |
+A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;; |
+A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;; |
+A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;; |
+A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;; |
+A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;; |
+A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;; |
+A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;; |
+A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;; |
+A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;; |
+A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;; |
+A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;; |
+A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;; |
+A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;; |
+A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;; |
+A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;; |
+A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;; |
+A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;; |
+A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;; |
+A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;; |
+A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;; |
+A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;; |
+A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;; |
+A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;; |
+A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;; |
+A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;; |
+A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; |
+A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;; |
+A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; |
+A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; |
+A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; |
+A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;; |
+A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;; |
+A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;; |
+A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;; |
+A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;; |
+A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;; |
+A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;; |
+A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;; |
+A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;; |
+A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;; |
+A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;; |
+A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;; |
+A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;; |
+A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;; |
+A60D;VAI COMMA;Po;0;ON;;;;;N;;;;; |
+A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;; |
+A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;; |
+A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;; |
+A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;; |
+A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;; |
+A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;; |
+A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;; |
+A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;; |
+A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;; |
+A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;; |
+A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;; |
+A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;; |
+A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;; |
+A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;; |
+A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;; |
+A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;; |
+A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;; |
+A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;; |
+A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;; |
+A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;; |
+A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641; |
+A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640 |
+A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643; |
+A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642 |
+A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645; |
+A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644 |
+A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647; |
+A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646 |
+A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649; |
+A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648 |
+A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B; |
+A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A |
+A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D; |
+A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C |
+A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F; |
+A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E |
+A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651; |
+A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650 |
+A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653; |
+A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652 |
+A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655; |
+A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654 |
+A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657; |
+A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656 |
+A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659; |
+A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658 |
+A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B; |
+A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A |
+A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D; |
+A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C |
+A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F; |
+A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E |
+A660;CYRILLIC CAPITAL LETTER REVERSED TSE;Lu;0;L;;;;;N;;;;A661; |
+A661;CYRILLIC SMALL LETTER REVERSED TSE;Ll;0;L;;;;;N;;;A660;;A660 |
+A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663; |
+A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662 |
+A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665; |
+A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664 |
+A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667; |
+A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666 |
+A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669; |
+A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668 |
+A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B; |
+A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A |
+A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D; |
+A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C |
+A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;; |
+A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;; |
+A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; |
+A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; |
+A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; |
+A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;; |
+A674;COMBINING CYRILLIC LETTER UKRAINIAN IE;Mn;230;NSM;;;;;N;;;;; |
+A675;COMBINING CYRILLIC LETTER I;Mn;230;NSM;;;;;N;;;;; |
+A676;COMBINING CYRILLIC LETTER YI;Mn;230;NSM;;;;;N;;;;; |
+A677;COMBINING CYRILLIC LETTER U;Mn;230;NSM;;;;;N;;;;; |
+A678;COMBINING CYRILLIC LETTER HARD SIGN;Mn;230;NSM;;;;;N;;;;; |
+A679;COMBINING CYRILLIC LETTER YERU;Mn;230;NSM;;;;;N;;;;; |
+A67A;COMBINING CYRILLIC LETTER SOFT SIGN;Mn;230;NSM;;;;;N;;;;; |
+A67B;COMBINING CYRILLIC LETTER OMEGA;Mn;230;NSM;;;;;N;;;;; |
+A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;; |
+A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;; |
+A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;; |
+A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;; |
+A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681; |
+A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680 |
+A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683; |
+A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682 |
+A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685; |
+A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684 |
+A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687; |
+A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686 |
+A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689; |
+A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688 |
+A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B; |
+A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A |
+A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D; |
+A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C |
+A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F; |
+A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E |
+A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691; |
+A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690 |
+A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693; |
+A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692 |
+A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695; |
+A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694 |
+A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697; |
+A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696 |
+A69F;COMBINING CYRILLIC LETTER IOTIFIED E;Mn;230;NSM;;;;;N;;;;; |
+A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;; |
+A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;; |
+A6A2;BAMUM LETTER U;Lo;0;L;;;;;N;;;;; |
+A6A3;BAMUM LETTER KU;Lo;0;L;;;;;N;;;;; |
+A6A4;BAMUM LETTER EE;Lo;0;L;;;;;N;;;;; |
+A6A5;BAMUM LETTER REE;Lo;0;L;;;;;N;;;;; |
+A6A6;BAMUM LETTER TAE;Lo;0;L;;;;;N;;;;; |
+A6A7;BAMUM LETTER O;Lo;0;L;;;;;N;;;;; |
+A6A8;BAMUM LETTER NYI;Lo;0;L;;;;;N;;;;; |
+A6A9;BAMUM LETTER I;Lo;0;L;;;;;N;;;;; |
+A6AA;BAMUM LETTER LA;Lo;0;L;;;;;N;;;;; |
+A6AB;BAMUM LETTER PA;Lo;0;L;;;;;N;;;;; |
+A6AC;BAMUM LETTER RII;Lo;0;L;;;;;N;;;;; |
+A6AD;BAMUM LETTER RIEE;Lo;0;L;;;;;N;;;;; |
+A6AE;BAMUM LETTER LEEEE;Lo;0;L;;;;;N;;;;; |
+A6AF;BAMUM LETTER MEEEE;Lo;0;L;;;;;N;;;;; |
+A6B0;BAMUM LETTER TAA;Lo;0;L;;;;;N;;;;; |
+A6B1;BAMUM LETTER NDAA;Lo;0;L;;;;;N;;;;; |
+A6B2;BAMUM LETTER NJAEM;Lo;0;L;;;;;N;;;;; |
+A6B3;BAMUM LETTER M;Lo;0;L;;;;;N;;;;; |
+A6B4;BAMUM LETTER SUU;Lo;0;L;;;;;N;;;;; |
+A6B5;BAMUM LETTER MU;Lo;0;L;;;;;N;;;;; |
+A6B6;BAMUM LETTER SHII;Lo;0;L;;;;;N;;;;; |
+A6B7;BAMUM LETTER SI;Lo;0;L;;;;;N;;;;; |
+A6B8;BAMUM LETTER SHEUX;Lo;0;L;;;;;N;;;;; |
+A6B9;BAMUM LETTER SEUX;Lo;0;L;;;;;N;;;;; |
+A6BA;BAMUM LETTER KYEE;Lo;0;L;;;;;N;;;;; |
+A6BB;BAMUM LETTER KET;Lo;0;L;;;;;N;;;;; |
+A6BC;BAMUM LETTER NUAE;Lo;0;L;;;;;N;;;;; |
+A6BD;BAMUM LETTER NU;Lo;0;L;;;;;N;;;;; |
+A6BE;BAMUM LETTER NJUAE;Lo;0;L;;;;;N;;;;; |
+A6BF;BAMUM LETTER YOQ;Lo;0;L;;;;;N;;;;; |
+A6C0;BAMUM LETTER SHU;Lo;0;L;;;;;N;;;;; |
+A6C1;BAMUM LETTER YUQ;Lo;0;L;;;;;N;;;;; |
+A6C2;BAMUM LETTER YA;Lo;0;L;;;;;N;;;;; |
+A6C3;BAMUM LETTER NSHA;Lo;0;L;;;;;N;;;;; |
+A6C4;BAMUM LETTER KEUX;Lo;0;L;;;;;N;;;;; |
+A6C5;BAMUM LETTER PEUX;Lo;0;L;;;;;N;;;;; |
+A6C6;BAMUM LETTER NJEE;Lo;0;L;;;;;N;;;;; |
+A6C7;BAMUM LETTER NTEE;Lo;0;L;;;;;N;;;;; |
+A6C8;BAMUM LETTER PUE;Lo;0;L;;;;;N;;;;; |
+A6C9;BAMUM LETTER WUE;Lo;0;L;;;;;N;;;;; |
+A6CA;BAMUM LETTER PEE;Lo;0;L;;;;;N;;;;; |
+A6CB;BAMUM LETTER FEE;Lo;0;L;;;;;N;;;;; |
+A6CC;BAMUM LETTER RU;Lo;0;L;;;;;N;;;;; |
+A6CD;BAMUM LETTER LU;Lo;0;L;;;;;N;;;;; |
+A6CE;BAMUM LETTER MI;Lo;0;L;;;;;N;;;;; |
+A6CF;BAMUM LETTER NI;Lo;0;L;;;;;N;;;;; |
+A6D0;BAMUM LETTER REUX;Lo;0;L;;;;;N;;;;; |
+A6D1;BAMUM LETTER RAE;Lo;0;L;;;;;N;;;;; |
+A6D2;BAMUM LETTER KEN;Lo;0;L;;;;;N;;;;; |
+A6D3;BAMUM LETTER NGKWAEN;Lo;0;L;;;;;N;;;;; |
+A6D4;BAMUM LETTER NGGA;Lo;0;L;;;;;N;;;;; |
+A6D5;BAMUM LETTER NGA;Lo;0;L;;;;;N;;;;; |
+A6D6;BAMUM LETTER SHO;Lo;0;L;;;;;N;;;;; |
+A6D7;BAMUM LETTER PUAE;Lo;0;L;;;;;N;;;;; |
+A6D8;BAMUM LETTER FU;Lo;0;L;;;;;N;;;;; |
+A6D9;BAMUM LETTER FOM;Lo;0;L;;;;;N;;;;; |
+A6DA;BAMUM LETTER WA;Lo;0;L;;;;;N;;;;; |
+A6DB;BAMUM LETTER NA;Lo;0;L;;;;;N;;;;; |
+A6DC;BAMUM LETTER LI;Lo;0;L;;;;;N;;;;; |
+A6DD;BAMUM LETTER PI;Lo;0;L;;;;;N;;;;; |
+A6DE;BAMUM LETTER LOQ;Lo;0;L;;;;;N;;;;; |
+A6DF;BAMUM LETTER KO;Lo;0;L;;;;;N;;;;; |
+A6E0;BAMUM LETTER MBEN;Lo;0;L;;;;;N;;;;; |
+A6E1;BAMUM LETTER REN;Lo;0;L;;;;;N;;;;; |
+A6E2;BAMUM LETTER MEN;Lo;0;L;;;;;N;;;;; |
+A6E3;BAMUM LETTER MA;Lo;0;L;;;;;N;;;;; |
+A6E4;BAMUM LETTER TI;Lo;0;L;;;;;N;;;;; |
+A6E5;BAMUM LETTER KI;Lo;0;L;;;;;N;;;;; |
+A6E6;BAMUM LETTER MO;Nl;0;L;;;;1;N;;;;; |
+A6E7;BAMUM LETTER MBAA;Nl;0;L;;;;2;N;;;;; |
+A6E8;BAMUM LETTER TET;Nl;0;L;;;;3;N;;;;; |
+A6E9;BAMUM LETTER KPA;Nl;0;L;;;;4;N;;;;; |
+A6EA;BAMUM LETTER TEN;Nl;0;L;;;;5;N;;;;; |
+A6EB;BAMUM LETTER NTUU;Nl;0;L;;;;6;N;;;;; |
+A6EC;BAMUM LETTER SAMBA;Nl;0;L;;;;7;N;;;;; |
+A6ED;BAMUM LETTER FAAMAE;Nl;0;L;;;;8;N;;;;; |
+A6EE;BAMUM LETTER KOVUU;Nl;0;L;;;;9;N;;;;; |
+A6EF;BAMUM LETTER KOGHOM;Nl;0;L;;;;0;N;;;;; |
+A6F0;BAMUM COMBINING MARK KOQNDON;Mn;230;NSM;;;;;N;;;;; |
+A6F1;BAMUM COMBINING MARK TUKWENTIS;Mn;230;NSM;;;;;N;;;;; |
+A6F2;BAMUM NJAEMLI;Po;0;L;;;;;N;;;;; |
+A6F3;BAMUM FULL STOP;Po;0;L;;;;;N;;;;; |
+A6F4;BAMUM COLON;Po;0;L;;;;;N;;;;; |
+A6F5;BAMUM COMMA;Po;0;L;;;;;N;;;;; |
+A6F6;BAMUM SEMICOLON;Po;0;L;;;;;N;;;;; |
+A6F7;BAMUM QUESTION MARK;Po;0;L;;;;;N;;;;; |
+A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; |
+A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; |
+A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; |
+A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; |
+A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; |
+A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; |
+A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; |
+A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; |
+A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; |
+A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;; |
+A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;; |
+A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;; |
+A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;; |
+A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;; |
+A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;; |
+A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; |
+A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; |
+A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; |
+A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;; |
+A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;; |
+A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723; |
+A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722 |
+A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725; |
+A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724 |
+A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727; |
+A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726 |
+A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729; |
+A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728 |
+A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B; |
+A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A |
+A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D; |
+A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C |
+A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F; |
+A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E |
+A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;; |
+A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;; |
+A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733; |
+A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732 |
+A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735; |
+A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734 |
+A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737; |
+A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736 |
+A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739; |
+A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738 |
+A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B; |
+A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A |
+A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D; |
+A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C |
+A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F; |
+A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E |
+A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741; |
+A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740 |
+A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743; |
+A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742 |
+A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745; |
+A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744 |
+A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747; |
+A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746 |
+A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749; |
+A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748 |
+A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B; |
+A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A |
+A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D; |
+A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C |
+A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F; |
+A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E |
+A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751; |
+A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750 |
+A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753; |
+A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752 |
+A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755; |
+A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754 |
+A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757; |
+A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756 |
+A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759; |
+A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758 |
+A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B; |
+A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A |
+A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D; |
+A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C |
+A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F; |
+A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E |
+A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761; |
+A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760 |
+A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763; |
+A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762 |
+A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765; |
+A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764 |
+A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767; |
+A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766 |
+A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769; |
+A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768 |
+A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B; |
+A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A |
+A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D; |
+A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C |
+A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F; |
+A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E |
+A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;; |
+A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;; |
+A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;; |
+A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;; |
+A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;; |
+A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;; |
+A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;; |
+A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;; |
+A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;; |
+A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A; |
+A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779 |
+A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C; |
+A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B |
+A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79; |
+A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F; |
+A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E |
+A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781; |
+A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780 |
+A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783; |
+A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782 |
+A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785; |
+A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784 |
+A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787; |
+A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786 |
+A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;; |
+A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;; |
+A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;; |
+A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; |
+A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B |
+A78D;LATIN CAPITAL LETTER TURNED H;Lu;0;L;;;;;N;;;;0265; |
+A78E;LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT;Ll;0;L;;;;;N;;;;; |
+A790;LATIN CAPITAL LETTER N WITH DESCENDER;Lu;0;L;;;;;N;;;;A791; |
+A791;LATIN SMALL LETTER N WITH DESCENDER;Ll;0;L;;;;;N;;;A790;;A790 |
+A792;LATIN CAPITAL LETTER C WITH BAR;Lu;0;L;;;;;N;;;;A793; |
+A793;LATIN SMALL LETTER C WITH BAR;Ll;0;L;;;;;N;;;A792;;A792 |
+A7A0;LATIN CAPITAL LETTER G WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A1; |
+A7A1;LATIN SMALL LETTER G WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A0;;A7A0 |
+A7A2;LATIN CAPITAL LETTER K WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A3; |
+A7A3;LATIN SMALL LETTER K WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A2;;A7A2 |
+A7A4;LATIN CAPITAL LETTER N WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A5; |
+A7A5;LATIN SMALL LETTER N WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A4;;A7A4 |
+A7A6;LATIN CAPITAL LETTER R WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A7; |
+A7A7;LATIN SMALL LETTER R WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A6;;A7A6 |
+A7A8;LATIN CAPITAL LETTER S WITH OBLIQUE STROKE;Lu;0;L;;;;;N;;;;A7A9; |
+A7A9;LATIN SMALL LETTER S WITH OBLIQUE STROKE;Ll;0;L;;;;;N;;;A7A8;;A7A8 |
+A7AA;LATIN CAPITAL LETTER H WITH HOOK;Lu;0;L;;;;;N;;;;0266; |
+A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;; |
+A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;; |
+A7FA;LATIN LETTER SMALL CAPITAL TURNED M;Ll;0;L;;;;;N;;;;; |
+A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;; |
+A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;; |
+A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;; |
+A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;; |
+A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;; |
+A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; |
+A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; |
+A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;; |
+A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; |
+A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; |
+A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; |
+A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; |
+A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; |
+A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; |
+A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; |
+A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; |
+A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; |
+A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; |
+A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; |
+A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; |
+A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; |
+A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; |
+A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; |
+A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; |
+A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; |
+A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; |
+A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; |
+A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; |
+A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; |
+A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; |
+A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; |
+A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; |
+A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; |
+A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; |
+A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; |
+A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; |
+A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; |
+A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; |
+A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; |
+A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; |
+A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; |
+A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; |
+A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; |
+A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; |
+A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; |
+A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; |
+A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; |
+A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; |
+A833;NORTH INDIC FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;; |
+A834;NORTH INDIC FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;; |
+A835;NORTH INDIC FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;; |
+A836;NORTH INDIC QUARTER MARK;So;0;L;;;;;N;;;;; |
+A837;NORTH INDIC PLACEHOLDER MARK;So;0;L;;;;;N;;;;; |
+A838;NORTH INDIC RUPEE MARK;Sc;0;ET;;;;;N;;;;; |
+A839;NORTH INDIC QUANTITY MARK;So;0;ET;;;;;N;;;;; |
+A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;; |
+A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;; |
+A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;; |
+A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;; |
+A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;; |
+A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;; |
+A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;; |
+A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;; |
+A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;; |
+A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;; |
+A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;; |
+A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;; |
+A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;; |
+A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;; |
+A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;; |
+A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;; |
+A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;; |
+A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;; |
+A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;; |
+A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;; |
+A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;; |
+A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;; |
+A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;; |
+A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;; |
+A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;; |
+A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;; |
+A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;; |
+A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;; |
+A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;; |
+A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;; |
+A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;; |
+A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;; |
+A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;; |
+A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;; |
+A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;; |
+A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;; |
+A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;; |
+A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;; |
+A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;; |
+A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;; |
+A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;; |
+A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;; |
+A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;; |
+A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;; |
+A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;; |
+A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;; |
+A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;; |
+A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;; |
+A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;; |
+A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;; |
+A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;; |
+A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;; |
+A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;; |
+A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;; |
+A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;; |
+A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; |
+A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;; |
+A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;; |
+A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;; |
+A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;; |
+A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;; |
+A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;; |
+A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;; |
+A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;; |
+A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;; |
+A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;; |
+A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;; |
+A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;; |
+A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;; |
+A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;; |
+A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;; |
+A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;; |
+A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;; |
+A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;; |
+A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;; |
+A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;; |
+A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;; |
+A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;; |
+A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;; |
+A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;; |
+A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;; |
+A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;; |
+A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;; |
+A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;; |
+A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;; |
+A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;; |
+A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;; |
+A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;; |
+A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;; |
+A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;; |
+A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;; |
+A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;; |
+A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;; |
+A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;; |
+A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;; |
+A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;; |
+A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;; |
+A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;; |
+A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;; |
+A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;; |
+A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;; |
+A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; |
+A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; |
+A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; |
+A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;; |
+A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;; |
+A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; |
+A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; |
+A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;; |
+A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;; |
+A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+A8E0;COMBINING DEVANAGARI DIGIT ZERO;Mn;230;NSM;;;;;N;;;;; |
+A8E1;COMBINING DEVANAGARI DIGIT ONE;Mn;230;NSM;;;;;N;;;;; |
+A8E2;COMBINING DEVANAGARI DIGIT TWO;Mn;230;NSM;;;;;N;;;;; |
+A8E3;COMBINING DEVANAGARI DIGIT THREE;Mn;230;NSM;;;;;N;;;;; |
+A8E4;COMBINING DEVANAGARI DIGIT FOUR;Mn;230;NSM;;;;;N;;;;; |
+A8E5;COMBINING DEVANAGARI DIGIT FIVE;Mn;230;NSM;;;;;N;;;;; |
+A8E6;COMBINING DEVANAGARI DIGIT SIX;Mn;230;NSM;;;;;N;;;;; |
+A8E7;COMBINING DEVANAGARI DIGIT SEVEN;Mn;230;NSM;;;;;N;;;;; |
+A8E8;COMBINING DEVANAGARI DIGIT EIGHT;Mn;230;NSM;;;;;N;;;;; |
+A8E9;COMBINING DEVANAGARI DIGIT NINE;Mn;230;NSM;;;;;N;;;;; |
+A8EA;COMBINING DEVANAGARI LETTER A;Mn;230;NSM;;;;;N;;;;; |
+A8EB;COMBINING DEVANAGARI LETTER U;Mn;230;NSM;;;;;N;;;;; |
+A8EC;COMBINING DEVANAGARI LETTER KA;Mn;230;NSM;;;;;N;;;;; |
+A8ED;COMBINING DEVANAGARI LETTER NA;Mn;230;NSM;;;;;N;;;;; |
+A8EE;COMBINING DEVANAGARI LETTER PA;Mn;230;NSM;;;;;N;;;;; |
+A8EF;COMBINING DEVANAGARI LETTER RA;Mn;230;NSM;;;;;N;;;;; |
+A8F0;COMBINING DEVANAGARI LETTER VI;Mn;230;NSM;;;;;N;;;;; |
+A8F1;COMBINING DEVANAGARI SIGN AVAGRAHA;Mn;230;NSM;;;;;N;;;;; |
+A8F2;DEVANAGARI SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;; |
+A8F3;DEVANAGARI SIGN CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;; |
+A8F4;DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;; |
+A8F5;DEVANAGARI SIGN CANDRABINDU TWO;Lo;0;L;;;;;N;;;;; |
+A8F6;DEVANAGARI SIGN CANDRABINDU THREE;Lo;0;L;;;;;N;;;;; |
+A8F7;DEVANAGARI SIGN CANDRABINDU AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;; |
+A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;; |
+A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;; |
+A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;; |
+A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;; |
+A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;; |
+A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;; |
+A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;; |
+A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;; |
+A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;; |
+A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;; |
+A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;; |
+A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;; |
+A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;; |
+A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;; |
+A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;; |
+A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;; |
+A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;; |
+A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;; |
+A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;; |
+A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;; |
+A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;; |
+A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;; |
+A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;; |
+A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;; |
+A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;; |
+A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;; |
+A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;; |
+A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;; |
+A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;; |
+A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;; |
+A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;; |
+A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;; |
+A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;; |
+A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;; |
+A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;; |
+A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;; |
+A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;; |
+A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;; |
+A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;; |
+A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;; |
+A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;; |
+A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;; |
+A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;; |
+A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;; |
+A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;; |
+A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;; |
+A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;; |
+A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;; |
+A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;; |
+A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;; |
+A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;; |
+A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;; |
+A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;; |
+A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;; |
+A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;; |
+A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;; |
+A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;; |
+A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;; |
+A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;; |
+A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;; |
+A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; |
+A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; |
+A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;; |
+A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;; |
+A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; |
+A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; |
+A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;; |
+A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;; |
+A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;; |
+A960;HANGUL CHOSEONG TIKEUT-MIEUM;Lo;0;L;;;;;N;;;;; |
+A961;HANGUL CHOSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; |
+A962;HANGUL CHOSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;; |
+A963;HANGUL CHOSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;; |
+A964;HANGUL CHOSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;; |
+A965;HANGUL CHOSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; |
+A966;HANGUL CHOSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; |
+A967;HANGUL CHOSEONG RIEUL-SSANGTIKEUT;Lo;0;L;;;;;N;;;;; |
+A968;HANGUL CHOSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;; |
+A969;HANGUL CHOSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;; |
+A96A;HANGUL CHOSEONG RIEUL-SSANGPIEUP;Lo;0;L;;;;;N;;;;; |
+A96B;HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; |
+A96C;HANGUL CHOSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;; |
+A96D;HANGUL CHOSEONG RIEUL-CIEUC;Lo;0;L;;;;;N;;;;; |
+A96E;HANGUL CHOSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+A96F;HANGUL CHOSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; |
+A970;HANGUL CHOSEONG MIEUM-TIKEUT;Lo;0;L;;;;;N;;;;; |
+A971;HANGUL CHOSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; |
+A972;HANGUL CHOSEONG PIEUP-SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; |
+A973;HANGUL CHOSEONG PIEUP-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+A974;HANGUL CHOSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; |
+A975;HANGUL CHOSEONG SSANGSIOS-PIEUP;Lo;0;L;;;;;N;;;;; |
+A976;HANGUL CHOSEONG IEUNG-RIEUL;Lo;0;L;;;;;N;;;;; |
+A977;HANGUL CHOSEONG IEUNG-HIEUH;Lo;0;L;;;;;N;;;;; |
+A978;HANGUL CHOSEONG SSANGCIEUC-HIEUH;Lo;0;L;;;;;N;;;;; |
+A979;HANGUL CHOSEONG SSANGTHIEUTH;Lo;0;L;;;;;N;;;;; |
+A97A;HANGUL CHOSEONG PHIEUPH-HIEUH;Lo;0;L;;;;;N;;;;; |
+A97B;HANGUL CHOSEONG HIEUH-SIOS;Lo;0;L;;;;;N;;;;; |
+A97C;HANGUL CHOSEONG SSANGYEORINHIEUH;Lo;0;L;;;;;N;;;;; |
+A980;JAVANESE SIGN PANYANGGA;Mn;0;NSM;;;;;N;;;;; |
+A981;JAVANESE SIGN CECAK;Mn;0;NSM;;;;;N;;;;; |
+A982;JAVANESE SIGN LAYAR;Mn;0;NSM;;;;;N;;;;; |
+A983;JAVANESE SIGN WIGNYAN;Mc;0;L;;;;;N;;;;; |
+A984;JAVANESE LETTER A;Lo;0;L;;;;;N;;;;; |
+A985;JAVANESE LETTER I KAWI;Lo;0;L;;;;;N;;;;; |
+A986;JAVANESE LETTER I;Lo;0;L;;;;;N;;;;; |
+A987;JAVANESE LETTER II;Lo;0;L;;;;;N;;;;; |
+A988;JAVANESE LETTER U;Lo;0;L;;;;;N;;;;; |
+A989;JAVANESE LETTER PA CEREK;Lo;0;L;;;;;N;;;;; |
+A98A;JAVANESE LETTER NGA LELET;Lo;0;L;;;;;N;;;;; |
+A98B;JAVANESE LETTER NGA LELET RASWADI;Lo;0;L;;;;;N;;;;; |
+A98C;JAVANESE LETTER E;Lo;0;L;;;;;N;;;;; |
+A98D;JAVANESE LETTER AI;Lo;0;L;;;;;N;;;;; |
+A98E;JAVANESE LETTER O;Lo;0;L;;;;;N;;;;; |
+A98F;JAVANESE LETTER KA;Lo;0;L;;;;;N;;;;; |
+A990;JAVANESE LETTER KA SASAK;Lo;0;L;;;;;N;;;;; |
+A991;JAVANESE LETTER KA MURDA;Lo;0;L;;;;;N;;;;; |
+A992;JAVANESE LETTER GA;Lo;0;L;;;;;N;;;;; |
+A993;JAVANESE LETTER GA MURDA;Lo;0;L;;;;;N;;;;; |
+A994;JAVANESE LETTER NGA;Lo;0;L;;;;;N;;;;; |
+A995;JAVANESE LETTER CA;Lo;0;L;;;;;N;;;;; |
+A996;JAVANESE LETTER CA MURDA;Lo;0;L;;;;;N;;;;; |
+A997;JAVANESE LETTER JA;Lo;0;L;;;;;N;;;;; |
+A998;JAVANESE LETTER NYA MURDA;Lo;0;L;;;;;N;;;;; |
+A999;JAVANESE LETTER JA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+A99A;JAVANESE LETTER NYA;Lo;0;L;;;;;N;;;;; |
+A99B;JAVANESE LETTER TTA;Lo;0;L;;;;;N;;;;; |
+A99C;JAVANESE LETTER TTA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+A99D;JAVANESE LETTER DDA;Lo;0;L;;;;;N;;;;; |
+A99E;JAVANESE LETTER DDA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+A99F;JAVANESE LETTER NA MURDA;Lo;0;L;;;;;N;;;;; |
+A9A0;JAVANESE LETTER TA;Lo;0;L;;;;;N;;;;; |
+A9A1;JAVANESE LETTER TA MURDA;Lo;0;L;;;;;N;;;;; |
+A9A2;JAVANESE LETTER DA;Lo;0;L;;;;;N;;;;; |
+A9A3;JAVANESE LETTER DA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+A9A4;JAVANESE LETTER NA;Lo;0;L;;;;;N;;;;; |
+A9A5;JAVANESE LETTER PA;Lo;0;L;;;;;N;;;;; |
+A9A6;JAVANESE LETTER PA MURDA;Lo;0;L;;;;;N;;;;; |
+A9A7;JAVANESE LETTER BA;Lo;0;L;;;;;N;;;;; |
+A9A8;JAVANESE LETTER BA MURDA;Lo;0;L;;;;;N;;;;; |
+A9A9;JAVANESE LETTER MA;Lo;0;L;;;;;N;;;;; |
+A9AA;JAVANESE LETTER YA;Lo;0;L;;;;;N;;;;; |
+A9AB;JAVANESE LETTER RA;Lo;0;L;;;;;N;;;;; |
+A9AC;JAVANESE LETTER RA AGUNG;Lo;0;L;;;;;N;;;;; |
+A9AD;JAVANESE LETTER LA;Lo;0;L;;;;;N;;;;; |
+A9AE;JAVANESE LETTER WA;Lo;0;L;;;;;N;;;;; |
+A9AF;JAVANESE LETTER SA MURDA;Lo;0;L;;;;;N;;;;; |
+A9B0;JAVANESE LETTER SA MAHAPRANA;Lo;0;L;;;;;N;;;;; |
+A9B1;JAVANESE LETTER SA;Lo;0;L;;;;;N;;;;; |
+A9B2;JAVANESE LETTER HA;Lo;0;L;;;;;N;;;;; |
+A9B3;JAVANESE SIGN CECAK TELU;Mn;7;NSM;;;;;N;;;;; |
+A9B4;JAVANESE VOWEL SIGN TARUNG;Mc;0;L;;;;;N;;;;; |
+A9B5;JAVANESE VOWEL SIGN TOLONG;Mc;0;L;;;;;N;;;;; |
+A9B6;JAVANESE VOWEL SIGN WULU;Mn;0;NSM;;;;;N;;;;; |
+A9B7;JAVANESE VOWEL SIGN WULU MELIK;Mn;0;NSM;;;;;N;;;;; |
+A9B8;JAVANESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;; |
+A9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;; |
+A9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;; |
+A9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;; |
+A9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;; |
+A9BD;JAVANESE CONSONANT SIGN KERET;Mc;0;L;;;;;N;;;;; |
+A9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;; |
+A9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;; |
+A9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;; |
+A9C1;JAVANESE LEFT RERENGGAN;Po;0;L;;;;;N;;;;; |
+A9C2;JAVANESE RIGHT RERENGGAN;Po;0;L;;;;;N;;;;; |
+A9C3;JAVANESE PADA ANDAP;Po;0;L;;;;;N;;;;; |
+A9C4;JAVANESE PADA MADYA;Po;0;L;;;;;N;;;;; |
+A9C5;JAVANESE PADA LUHUR;Po;0;L;;;;;N;;;;; |
+A9C6;JAVANESE PADA WINDU;Po;0;L;;;;;N;;;;; |
+A9C7;JAVANESE PADA PANGKAT;Po;0;L;;;;;N;;;;; |
+A9C8;JAVANESE PADA LINGSA;Po;0;L;;;;;N;;;;; |
+A9C9;JAVANESE PADA LUNGSI;Po;0;L;;;;;N;;;;; |
+A9CA;JAVANESE PADA ADEG;Po;0;L;;;;;N;;;;; |
+A9CB;JAVANESE PADA ADEG ADEG;Po;0;L;;;;;N;;;;; |
+A9CC;JAVANESE PADA PISELEH;Po;0;L;;;;;N;;;;; |
+A9CD;JAVANESE TURNED PADA PISELEH;Po;0;L;;;;;N;;;;; |
+A9CF;JAVANESE PANGRANGKEP;Lm;0;L;;;;;N;;;;; |
+A9D0;JAVANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+A9D1;JAVANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+A9D2;JAVANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+A9D3;JAVANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+A9D4;JAVANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+A9D5;JAVANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+A9D6;JAVANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+A9D7;JAVANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+A9D8;JAVANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+A9D9;JAVANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+A9DE;JAVANESE PADA TIRTA TUMETES;Po;0;L;;;;;N;;;;; |
+A9DF;JAVANESE PADA ISEN-ISEN;Po;0;L;;;;;N;;;;; |
+AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;; |
+AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;; |
+AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;; |
+AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;; |
+AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;; |
+AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;; |
+AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;; |
+AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;; |
+AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;; |
+AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;; |
+AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;; |
+AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;; |
+AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;; |
+AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;; |
+AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;; |
+AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;; |
+AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;; |
+AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;; |
+AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;; |
+AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;; |
+AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;; |
+AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;; |
+AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;; |
+AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;; |
+AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;; |
+AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;; |
+AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;; |
+AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;; |
+AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;; |
+AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;; |
+AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;; |
+AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;; |
+AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;; |
+AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;; |
+AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;; |
+AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;; |
+AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;; |
+AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;; |
+AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;; |
+AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;; |
+AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;; |
+AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; |
+AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;; |
+AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;; |
+AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; |
+AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; |
+AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;; |
+AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;; |
+AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;; |
+AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;; |
+AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;; |
+AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;; |
+AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;; |
+AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;; |
+AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;; |
+AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;; |
+AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;; |
+AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;; |
+AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;; |
+AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;; |
+AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;; |
+AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;; |
+AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;; |
+AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;; |
+AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; |
+AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;; |
+AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;; |
+AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;; |
+AA60;MYANMAR LETTER KHAMTI GA;Lo;0;L;;;;;N;;;;; |
+AA61;MYANMAR LETTER KHAMTI CA;Lo;0;L;;;;;N;;;;; |
+AA62;MYANMAR LETTER KHAMTI CHA;Lo;0;L;;;;;N;;;;; |
+AA63;MYANMAR LETTER KHAMTI JA;Lo;0;L;;;;;N;;;;; |
+AA64;MYANMAR LETTER KHAMTI JHA;Lo;0;L;;;;;N;;;;; |
+AA65;MYANMAR LETTER KHAMTI NYA;Lo;0;L;;;;;N;;;;; |
+AA66;MYANMAR LETTER KHAMTI TTA;Lo;0;L;;;;;N;;;;; |
+AA67;MYANMAR LETTER KHAMTI TTHA;Lo;0;L;;;;;N;;;;; |
+AA68;MYANMAR LETTER KHAMTI DDA;Lo;0;L;;;;;N;;;;; |
+AA69;MYANMAR LETTER KHAMTI DDHA;Lo;0;L;;;;;N;;;;; |
+AA6A;MYANMAR LETTER KHAMTI DHA;Lo;0;L;;;;;N;;;;; |
+AA6B;MYANMAR LETTER KHAMTI NA;Lo;0;L;;;;;N;;;;; |
+AA6C;MYANMAR LETTER KHAMTI SA;Lo;0;L;;;;;N;;;;; |
+AA6D;MYANMAR LETTER KHAMTI HA;Lo;0;L;;;;;N;;;;; |
+AA6E;MYANMAR LETTER KHAMTI HHA;Lo;0;L;;;;;N;;;;; |
+AA6F;MYANMAR LETTER KHAMTI FA;Lo;0;L;;;;;N;;;;; |
+AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;; |
+AA71;MYANMAR LETTER KHAMTI XA;Lo;0;L;;;;;N;;;;; |
+AA72;MYANMAR LETTER KHAMTI ZA;Lo;0;L;;;;;N;;;;; |
+AA73;MYANMAR LETTER KHAMTI RA;Lo;0;L;;;;;N;;;;; |
+AA74;MYANMAR LOGOGRAM KHAMTI OAY;Lo;0;L;;;;;N;;;;; |
+AA75;MYANMAR LOGOGRAM KHAMTI QN;Lo;0;L;;;;;N;;;;; |
+AA76;MYANMAR LOGOGRAM KHAMTI HM;Lo;0;L;;;;;N;;;;; |
+AA77;MYANMAR SYMBOL AITON EXCLAMATION;So;0;L;;;;;N;;;;; |
+AA78;MYANMAR SYMBOL AITON ONE;So;0;L;;;;;N;;;;; |
+AA79;MYANMAR SYMBOL AITON TWO;So;0;L;;;;;N;;;;; |
+AA7A;MYANMAR LETTER AITON RA;Lo;0;L;;;;;N;;;;; |
+AA7B;MYANMAR SIGN PAO KAREN TONE;Mc;0;L;;;;;N;;;;; |
+AA80;TAI VIET LETTER LOW KO;Lo;0;L;;;;;N;;;;; |
+AA81;TAI VIET LETTER HIGH KO;Lo;0;L;;;;;N;;;;; |
+AA82;TAI VIET LETTER LOW KHO;Lo;0;L;;;;;N;;;;; |
+AA83;TAI VIET LETTER HIGH KHO;Lo;0;L;;;;;N;;;;; |
+AA84;TAI VIET LETTER LOW KHHO;Lo;0;L;;;;;N;;;;; |
+AA85;TAI VIET LETTER HIGH KHHO;Lo;0;L;;;;;N;;;;; |
+AA86;TAI VIET LETTER LOW GO;Lo;0;L;;;;;N;;;;; |
+AA87;TAI VIET LETTER HIGH GO;Lo;0;L;;;;;N;;;;; |
+AA88;TAI VIET LETTER LOW NGO;Lo;0;L;;;;;N;;;;; |
+AA89;TAI VIET LETTER HIGH NGO;Lo;0;L;;;;;N;;;;; |
+AA8A;TAI VIET LETTER LOW CO;Lo;0;L;;;;;N;;;;; |
+AA8B;TAI VIET LETTER HIGH CO;Lo;0;L;;;;;N;;;;; |
+AA8C;TAI VIET LETTER LOW CHO;Lo;0;L;;;;;N;;;;; |
+AA8D;TAI VIET LETTER HIGH CHO;Lo;0;L;;;;;N;;;;; |
+AA8E;TAI VIET LETTER LOW SO;Lo;0;L;;;;;N;;;;; |
+AA8F;TAI VIET LETTER HIGH SO;Lo;0;L;;;;;N;;;;; |
+AA90;TAI VIET LETTER LOW NYO;Lo;0;L;;;;;N;;;;; |
+AA91;TAI VIET LETTER HIGH NYO;Lo;0;L;;;;;N;;;;; |
+AA92;TAI VIET LETTER LOW DO;Lo;0;L;;;;;N;;;;; |
+AA93;TAI VIET LETTER HIGH DO;Lo;0;L;;;;;N;;;;; |
+AA94;TAI VIET LETTER LOW TO;Lo;0;L;;;;;N;;;;; |
+AA95;TAI VIET LETTER HIGH TO;Lo;0;L;;;;;N;;;;; |
+AA96;TAI VIET LETTER LOW THO;Lo;0;L;;;;;N;;;;; |
+AA97;TAI VIET LETTER HIGH THO;Lo;0;L;;;;;N;;;;; |
+AA98;TAI VIET LETTER LOW NO;Lo;0;L;;;;;N;;;;; |
+AA99;TAI VIET LETTER HIGH NO;Lo;0;L;;;;;N;;;;; |
+AA9A;TAI VIET LETTER LOW BO;Lo;0;L;;;;;N;;;;; |
+AA9B;TAI VIET LETTER HIGH BO;Lo;0;L;;;;;N;;;;; |
+AA9C;TAI VIET LETTER LOW PO;Lo;0;L;;;;;N;;;;; |
+AA9D;TAI VIET LETTER HIGH PO;Lo;0;L;;;;;N;;;;; |
+AA9E;TAI VIET LETTER LOW PHO;Lo;0;L;;;;;N;;;;; |
+AA9F;TAI VIET LETTER HIGH PHO;Lo;0;L;;;;;N;;;;; |
+AAA0;TAI VIET LETTER LOW FO;Lo;0;L;;;;;N;;;;; |
+AAA1;TAI VIET LETTER HIGH FO;Lo;0;L;;;;;N;;;;; |
+AAA2;TAI VIET LETTER LOW MO;Lo;0;L;;;;;N;;;;; |
+AAA3;TAI VIET LETTER HIGH MO;Lo;0;L;;;;;N;;;;; |
+AAA4;TAI VIET LETTER LOW YO;Lo;0;L;;;;;N;;;;; |
+AAA5;TAI VIET LETTER HIGH YO;Lo;0;L;;;;;N;;;;; |
+AAA6;TAI VIET LETTER LOW RO;Lo;0;L;;;;;N;;;;; |
+AAA7;TAI VIET LETTER HIGH RO;Lo;0;L;;;;;N;;;;; |
+AAA8;TAI VIET LETTER LOW LO;Lo;0;L;;;;;N;;;;; |
+AAA9;TAI VIET LETTER HIGH LO;Lo;0;L;;;;;N;;;;; |
+AAAA;TAI VIET LETTER LOW VO;Lo;0;L;;;;;N;;;;; |
+AAAB;TAI VIET LETTER HIGH VO;Lo;0;L;;;;;N;;;;; |
+AAAC;TAI VIET LETTER LOW HO;Lo;0;L;;;;;N;;;;; |
+AAAD;TAI VIET LETTER HIGH HO;Lo;0;L;;;;;N;;;;; |
+AAAE;TAI VIET LETTER LOW O;Lo;0;L;;;;;N;;;;; |
+AAAF;TAI VIET LETTER HIGH O;Lo;0;L;;;;;N;;;;; |
+AAB0;TAI VIET MAI KANG;Mn;230;NSM;;;;;N;;;;; |
+AAB1;TAI VIET VOWEL AA;Lo;0;L;;;;;N;;;;; |
+AAB2;TAI VIET VOWEL I;Mn;230;NSM;;;;;N;;;;; |
+AAB3;TAI VIET VOWEL UE;Mn;230;NSM;;;;;N;;;;; |
+AAB4;TAI VIET VOWEL U;Mn;220;NSM;;;;;N;;;;; |
+AAB5;TAI VIET VOWEL E;Lo;0;L;;;;;N;;;;; |
+AAB6;TAI VIET VOWEL O;Lo;0;L;;;;;N;;;;; |
+AAB7;TAI VIET MAI KHIT;Mn;230;NSM;;;;;N;;;;; |
+AAB8;TAI VIET VOWEL IA;Mn;230;NSM;;;;;N;;;;; |
+AAB9;TAI VIET VOWEL UEA;Lo;0;L;;;;;N;;;;; |
+AABA;TAI VIET VOWEL UA;Lo;0;L;;;;;N;;;;; |
+AABB;TAI VIET VOWEL AUE;Lo;0;L;;;;;N;;;;; |
+AABC;TAI VIET VOWEL AY;Lo;0;L;;;;;N;;;;; |
+AABD;TAI VIET VOWEL AN;Lo;0;L;;;;;N;;;;; |
+AABE;TAI VIET VOWEL AM;Mn;230;NSM;;;;;N;;;;; |
+AABF;TAI VIET TONE MAI EK;Mn;230;NSM;;;;;N;;;;; |
+AAC0;TAI VIET TONE MAI NUENG;Lo;0;L;;;;;N;;;;; |
+AAC1;TAI VIET TONE MAI THO;Mn;230;NSM;;;;;N;;;;; |
+AAC2;TAI VIET TONE MAI SONG;Lo;0;L;;;;;N;;;;; |
+AADB;TAI VIET SYMBOL KON;Lo;0;L;;;;;N;;;;; |
+AADC;TAI VIET SYMBOL NUENG;Lo;0;L;;;;;N;;;;; |
+AADD;TAI VIET SYMBOL SAM;Lm;0;L;;;;;N;;;;; |
+AADE;TAI VIET SYMBOL HO HOI;Po;0;L;;;;;N;;;;; |
+AADF;TAI VIET SYMBOL KOI KOI;Po;0;L;;;;;N;;;;; |
+AAE0;MEETEI MAYEK LETTER E;Lo;0;L;;;;;N;;;;; |
+AAE1;MEETEI MAYEK LETTER O;Lo;0;L;;;;;N;;;;; |
+AAE2;MEETEI MAYEK LETTER CHA;Lo;0;L;;;;;N;;;;; |
+AAE3;MEETEI MAYEK LETTER NYA;Lo;0;L;;;;;N;;;;; |
+AAE4;MEETEI MAYEK LETTER TTA;Lo;0;L;;;;;N;;;;; |
+AAE5;MEETEI MAYEK LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+AAE6;MEETEI MAYEK LETTER DDA;Lo;0;L;;;;;N;;;;; |
+AAE7;MEETEI MAYEK LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+AAE8;MEETEI MAYEK LETTER NNA;Lo;0;L;;;;;N;;;;; |
+AAE9;MEETEI MAYEK LETTER SHA;Lo;0;L;;;;;N;;;;; |
+AAEA;MEETEI MAYEK LETTER SSA;Lo;0;L;;;;;N;;;;; |
+AAEB;MEETEI MAYEK VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+AAEC;MEETEI MAYEK VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+AAED;MEETEI MAYEK VOWEL SIGN AAI;Mn;0;NSM;;;;;N;;;;; |
+AAEE;MEETEI MAYEK VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+AAEF;MEETEI MAYEK VOWEL SIGN AAU;Mc;0;L;;;;;N;;;;; |
+AAF0;MEETEI MAYEK CHEIKHAN;Po;0;L;;;;;N;;;;; |
+AAF1;MEETEI MAYEK AHANG KHUDAM;Po;0;L;;;;;N;;;;; |
+AAF2;MEETEI MAYEK ANJI;Lo;0;L;;;;;N;;;;; |
+AAF3;MEETEI MAYEK SYLLABLE REPETITION MARK;Lm;0;L;;;;;N;;;;; |
+AAF4;MEETEI MAYEK WORD REPETITION MARK;Lm;0;L;;;;;N;;;;; |
+AAF5;MEETEI MAYEK VOWEL SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+AAF6;MEETEI MAYEK VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+AB01;ETHIOPIC SYLLABLE TTHU;Lo;0;L;;;;;N;;;;; |
+AB02;ETHIOPIC SYLLABLE TTHI;Lo;0;L;;;;;N;;;;; |
+AB03;ETHIOPIC SYLLABLE TTHAA;Lo;0;L;;;;;N;;;;; |
+AB04;ETHIOPIC SYLLABLE TTHEE;Lo;0;L;;;;;N;;;;; |
+AB05;ETHIOPIC SYLLABLE TTHE;Lo;0;L;;;;;N;;;;; |
+AB06;ETHIOPIC SYLLABLE TTHO;Lo;0;L;;;;;N;;;;; |
+AB09;ETHIOPIC SYLLABLE DDHU;Lo;0;L;;;;;N;;;;; |
+AB0A;ETHIOPIC SYLLABLE DDHI;Lo;0;L;;;;;N;;;;; |
+AB0B;ETHIOPIC SYLLABLE DDHAA;Lo;0;L;;;;;N;;;;; |
+AB0C;ETHIOPIC SYLLABLE DDHEE;Lo;0;L;;;;;N;;;;; |
+AB0D;ETHIOPIC SYLLABLE DDHE;Lo;0;L;;;;;N;;;;; |
+AB0E;ETHIOPIC SYLLABLE DDHO;Lo;0;L;;;;;N;;;;; |
+AB11;ETHIOPIC SYLLABLE DZU;Lo;0;L;;;;;N;;;;; |
+AB12;ETHIOPIC SYLLABLE DZI;Lo;0;L;;;;;N;;;;; |
+AB13;ETHIOPIC SYLLABLE DZAA;Lo;0;L;;;;;N;;;;; |
+AB14;ETHIOPIC SYLLABLE DZEE;Lo;0;L;;;;;N;;;;; |
+AB15;ETHIOPIC SYLLABLE DZE;Lo;0;L;;;;;N;;;;; |
+AB16;ETHIOPIC SYLLABLE DZO;Lo;0;L;;;;;N;;;;; |
+AB20;ETHIOPIC SYLLABLE CCHHA;Lo;0;L;;;;;N;;;;; |
+AB21;ETHIOPIC SYLLABLE CCHHU;Lo;0;L;;;;;N;;;;; |
+AB22;ETHIOPIC SYLLABLE CCHHI;Lo;0;L;;;;;N;;;;; |
+AB23;ETHIOPIC SYLLABLE CCHHAA;Lo;0;L;;;;;N;;;;; |
+AB24;ETHIOPIC SYLLABLE CCHHEE;Lo;0;L;;;;;N;;;;; |
+AB25;ETHIOPIC SYLLABLE CCHHE;Lo;0;L;;;;;N;;;;; |
+AB26;ETHIOPIC SYLLABLE CCHHO;Lo;0;L;;;;;N;;;;; |
+AB28;ETHIOPIC SYLLABLE BBA;Lo;0;L;;;;;N;;;;; |
+AB29;ETHIOPIC SYLLABLE BBU;Lo;0;L;;;;;N;;;;; |
+AB2A;ETHIOPIC SYLLABLE BBI;Lo;0;L;;;;;N;;;;; |
+AB2B;ETHIOPIC SYLLABLE BBAA;Lo;0;L;;;;;N;;;;; |
+AB2C;ETHIOPIC SYLLABLE BBEE;Lo;0;L;;;;;N;;;;; |
+AB2D;ETHIOPIC SYLLABLE BBE;Lo;0;L;;;;;N;;;;; |
+AB2E;ETHIOPIC SYLLABLE BBO;Lo;0;L;;;;;N;;;;; |
+ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;; |
+ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;; |
+ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;; |
+ABC3;MEETEI MAYEK LETTER MIT;Lo;0;L;;;;;N;;;;; |
+ABC4;MEETEI MAYEK LETTER PA;Lo;0;L;;;;;N;;;;; |
+ABC5;MEETEI MAYEK LETTER NA;Lo;0;L;;;;;N;;;;; |
+ABC6;MEETEI MAYEK LETTER CHIL;Lo;0;L;;;;;N;;;;; |
+ABC7;MEETEI MAYEK LETTER TIL;Lo;0;L;;;;;N;;;;; |
+ABC8;MEETEI MAYEK LETTER KHOU;Lo;0;L;;;;;N;;;;; |
+ABC9;MEETEI MAYEK LETTER NGOU;Lo;0;L;;;;;N;;;;; |
+ABCA;MEETEI MAYEK LETTER THOU;Lo;0;L;;;;;N;;;;; |
+ABCB;MEETEI MAYEK LETTER WAI;Lo;0;L;;;;;N;;;;; |
+ABCC;MEETEI MAYEK LETTER YANG;Lo;0;L;;;;;N;;;;; |
+ABCD;MEETEI MAYEK LETTER HUK;Lo;0;L;;;;;N;;;;; |
+ABCE;MEETEI MAYEK LETTER UN;Lo;0;L;;;;;N;;;;; |
+ABCF;MEETEI MAYEK LETTER I;Lo;0;L;;;;;N;;;;; |
+ABD0;MEETEI MAYEK LETTER PHAM;Lo;0;L;;;;;N;;;;; |
+ABD1;MEETEI MAYEK LETTER ATIYA;Lo;0;L;;;;;N;;;;; |
+ABD2;MEETEI MAYEK LETTER GOK;Lo;0;L;;;;;N;;;;; |
+ABD3;MEETEI MAYEK LETTER JHAM;Lo;0;L;;;;;N;;;;; |
+ABD4;MEETEI MAYEK LETTER RAI;Lo;0;L;;;;;N;;;;; |
+ABD5;MEETEI MAYEK LETTER BA;Lo;0;L;;;;;N;;;;; |
+ABD6;MEETEI MAYEK LETTER JIL;Lo;0;L;;;;;N;;;;; |
+ABD7;MEETEI MAYEK LETTER DIL;Lo;0;L;;;;;N;;;;; |
+ABD8;MEETEI MAYEK LETTER GHOU;Lo;0;L;;;;;N;;;;; |
+ABD9;MEETEI MAYEK LETTER DHOU;Lo;0;L;;;;;N;;;;; |
+ABDA;MEETEI MAYEK LETTER BHAM;Lo;0;L;;;;;N;;;;; |
+ABDB;MEETEI MAYEK LETTER KOK LONSUM;Lo;0;L;;;;;N;;;;; |
+ABDC;MEETEI MAYEK LETTER LAI LONSUM;Lo;0;L;;;;;N;;;;; |
+ABDD;MEETEI MAYEK LETTER MIT LONSUM;Lo;0;L;;;;;N;;;;; |
+ABDE;MEETEI MAYEK LETTER PA LONSUM;Lo;0;L;;;;;N;;;;; |
+ABDF;MEETEI MAYEK LETTER NA LONSUM;Lo;0;L;;;;;N;;;;; |
+ABE0;MEETEI MAYEK LETTER TIL LONSUM;Lo;0;L;;;;;N;;;;; |
+ABE1;MEETEI MAYEK LETTER NGOU LONSUM;Lo;0;L;;;;;N;;;;; |
+ABE2;MEETEI MAYEK LETTER I LONSUM;Lo;0;L;;;;;N;;;;; |
+ABE3;MEETEI MAYEK VOWEL SIGN ONAP;Mc;0;L;;;;;N;;;;; |
+ABE4;MEETEI MAYEK VOWEL SIGN INAP;Mc;0;L;;;;;N;;;;; |
+ABE5;MEETEI MAYEK VOWEL SIGN ANAP;Mn;0;NSM;;;;;N;;;;; |
+ABE6;MEETEI MAYEK VOWEL SIGN YENAP;Mc;0;L;;;;;N;;;;; |
+ABE7;MEETEI MAYEK VOWEL SIGN SOUNAP;Mc;0;L;;;;;N;;;;; |
+ABE8;MEETEI MAYEK VOWEL SIGN UNAP;Mn;0;NSM;;;;;N;;;;; |
+ABE9;MEETEI MAYEK VOWEL SIGN CHEINAP;Mc;0;L;;;;;N;;;;; |
+ABEA;MEETEI MAYEK VOWEL SIGN NUNG;Mc;0;L;;;;;N;;;;; |
+ABEB;MEETEI MAYEK CHEIKHEI;Po;0;L;;;;;N;;;;; |
+ABEC;MEETEI MAYEK LUM IYEK;Mc;0;L;;;;;N;;;;; |
+ABED;MEETEI MAYEK APUN IYEK;Mn;9;NSM;;;;;N;;;;; |
+ABF0;MEETEI MAYEK DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+ABF1;MEETEI MAYEK DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+ABF2;MEETEI MAYEK DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+ABF3;MEETEI MAYEK DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+ABF4;MEETEI MAYEK DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+ABF5;MEETEI MAYEK DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+ABF6;MEETEI MAYEK DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+ABF7;MEETEI MAYEK DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+ABF8;MEETEI MAYEK DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+ABF9;MEETEI MAYEK DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;; |
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;; |
+D7B0;HANGUL JUNGSEONG O-YEO;Lo;0;L;;;;;N;;;;; |
+D7B1;HANGUL JUNGSEONG O-O-I;Lo;0;L;;;;;N;;;;; |
+D7B2;HANGUL JUNGSEONG YO-A;Lo;0;L;;;;;N;;;;; |
+D7B3;HANGUL JUNGSEONG YO-AE;Lo;0;L;;;;;N;;;;; |
+D7B4;HANGUL JUNGSEONG YO-EO;Lo;0;L;;;;;N;;;;; |
+D7B5;HANGUL JUNGSEONG U-YEO;Lo;0;L;;;;;N;;;;; |
+D7B6;HANGUL JUNGSEONG U-I-I;Lo;0;L;;;;;N;;;;; |
+D7B7;HANGUL JUNGSEONG YU-AE;Lo;0;L;;;;;N;;;;; |
+D7B8;HANGUL JUNGSEONG YU-O;Lo;0;L;;;;;N;;;;; |
+D7B9;HANGUL JUNGSEONG EU-A;Lo;0;L;;;;;N;;;;; |
+D7BA;HANGUL JUNGSEONG EU-EO;Lo;0;L;;;;;N;;;;; |
+D7BB;HANGUL JUNGSEONG EU-E;Lo;0;L;;;;;N;;;;; |
+D7BC;HANGUL JUNGSEONG EU-O;Lo;0;L;;;;;N;;;;; |
+D7BD;HANGUL JUNGSEONG I-YA-O;Lo;0;L;;;;;N;;;;; |
+D7BE;HANGUL JUNGSEONG I-YAE;Lo;0;L;;;;;N;;;;; |
+D7BF;HANGUL JUNGSEONG I-YEO;Lo;0;L;;;;;N;;;;; |
+D7C0;HANGUL JUNGSEONG I-YE;Lo;0;L;;;;;N;;;;; |
+D7C1;HANGUL JUNGSEONG I-O-I;Lo;0;L;;;;;N;;;;; |
+D7C2;HANGUL JUNGSEONG I-YO;Lo;0;L;;;;;N;;;;; |
+D7C3;HANGUL JUNGSEONG I-YU;Lo;0;L;;;;;N;;;;; |
+D7C4;HANGUL JUNGSEONG I-I;Lo;0;L;;;;;N;;;;; |
+D7C5;HANGUL JUNGSEONG ARAEA-A;Lo;0;L;;;;;N;;;;; |
+D7C6;HANGUL JUNGSEONG ARAEA-E;Lo;0;L;;;;;N;;;;; |
+D7CB;HANGUL JONGSEONG NIEUN-RIEUL;Lo;0;L;;;;;N;;;;; |
+D7CC;HANGUL JONGSEONG NIEUN-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+D7CD;HANGUL JONGSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;; |
+D7CE;HANGUL JONGSEONG SSANGTIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; |
+D7CF;HANGUL JONGSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; |
+D7D0;HANGUL JONGSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;; |
+D7D1;HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; |
+D7D2;HANGUL JONGSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;; |
+D7D3;HANGUL JONGSEONG TIKEUT-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+D7D4;HANGUL JONGSEONG TIKEUT-THIEUTH;Lo;0;L;;;;;N;;;;; |
+D7D5;HANGUL JONGSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; |
+D7D6;HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;; |
+D7D7;HANGUL JONGSEONG SSANGRIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; |
+D7D8;HANGUL JONGSEONG RIEUL-MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; |
+D7D9;HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; |
+D7DA;HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; |
+D7DB;HANGUL JONGSEONG RIEUL-YESIEUNG;Lo;0;L;;;;;N;;;;; |
+D7DC;HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH;Lo;0;L;;;;;N;;;;; |
+D7DD;HANGUL JONGSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; |
+D7DE;HANGUL JONGSEONG MIEUM-NIEUN;Lo;0;L;;;;;N;;;;; |
+D7DF;HANGUL JONGSEONG MIEUM-SSANGNIEUN;Lo;0;L;;;;;N;;;;; |
+D7E0;HANGUL JONGSEONG SSANGMIEUM;Lo;0;L;;;;;N;;;;; |
+D7E1;HANGUL JONGSEONG MIEUM-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; |
+D7E2;HANGUL JONGSEONG MIEUM-CIEUC;Lo;0;L;;;;;N;;;;; |
+D7E3;HANGUL JONGSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; |
+D7E4;HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;; |
+D7E5;HANGUL JONGSEONG PIEUP-MIEUM;Lo;0;L;;;;;N;;;;; |
+D7E6;HANGUL JONGSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;; |
+D7E7;HANGUL JONGSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; |
+D7E8;HANGUL JONGSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; |
+D7E9;HANGUL JONGSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+D7EA;HANGUL JONGSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; |
+D7EB;HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; |
+D7EC;HANGUL JONGSEONG SSANGSIOS-KIYEOK;Lo;0;L;;;;;N;;;;; |
+D7ED;HANGUL JONGSEONG SSANGSIOS-TIKEUT;Lo;0;L;;;;;N;;;;; |
+D7EE;HANGUL JONGSEONG SIOS-PANSIOS;Lo;0;L;;;;;N;;;;; |
+D7EF;HANGUL JONGSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; |
+D7F0;HANGUL JONGSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; |
+D7F1;HANGUL JONGSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; |
+D7F2;HANGUL JONGSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; |
+D7F3;HANGUL JONGSEONG PANSIOS-PIEUP;Lo;0;L;;;;;N;;;;; |
+D7F4;HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; |
+D7F5;HANGUL JONGSEONG YESIEUNG-MIEUM;Lo;0;L;;;;;N;;;;; |
+D7F6;HANGUL JONGSEONG YESIEUNG-HIEUH;Lo;0;L;;;;;N;;;;; |
+D7F7;HANGUL JONGSEONG CIEUC-PIEUP;Lo;0;L;;;;;N;;;;; |
+D7F8;HANGUL JONGSEONG CIEUC-SSANGPIEUP;Lo;0;L;;;;;N;;;;; |
+D7F9;HANGUL JONGSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;; |
+D7FA;HANGUL JONGSEONG PHIEUPH-SIOS;Lo;0;L;;;;;N;;;;; |
+D7FB;HANGUL JONGSEONG PHIEUPH-THIEUTH;Lo;0;L;;;;;N;;;;; |
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;; |
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;; |
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;; |
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;; |
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;; |
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;; |
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;; |
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;; |
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; |
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; |
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; |
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; |
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; |
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; |
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; |
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; |
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; |
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; |
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; |
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; |
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; |
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; |
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; |
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; |
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; |
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; |
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; |
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; |
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; |
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; |
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; |
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; |
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; |
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; |
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; |
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; |
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; |
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; |
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; |
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; |
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; |
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; |
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; |
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; |
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; |
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; |
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; |
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; |
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; |
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; |
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; |
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; |
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; |
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; |
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; |
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; |
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; |
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; |
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; |
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; |
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; |
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; |
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; |
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; |
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; |
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; |
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; |
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; |
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; |
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; |
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; |
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; |
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; |
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; |
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; |
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; |
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; |
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; |
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; |
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; |
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; |
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; |
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; |
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; |
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; |
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; |
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; |
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; |
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; |
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; |
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; |
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; |
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; |
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; |
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; |
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; |
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; |
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; |
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; |
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; |
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; |
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; |
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; |
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; |
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; |
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; |
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; |
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; |
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; |
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; |
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; |
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; |
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; |
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; |
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; |
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;; |
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; |
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; |
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; |
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; |
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; |
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; |
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; |
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;; |
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; |
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; |
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; |
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; |
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;; |
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; |
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; |
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; |
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; |
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; |
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; |
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; |
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; |
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; |
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; |
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; |
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; |
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; |
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; |
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; |
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; |
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; |
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; |
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; |
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; |
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; |
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; |
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; |
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; |
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; |
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; |
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; |
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; |
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; |
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; |
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; |
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; |
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; |
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; |
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; |
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; |
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; |
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; |
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; |
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; |
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; |
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; |
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; |
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; |
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; |
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; |
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; |
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; |
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; |
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; |
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; |
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; |
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; |
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; |
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; |
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; |
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; |
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;; |
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; |
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; |
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; |
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; |
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; |
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; |
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; |
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; |
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; |
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; |
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; |
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; |
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; |
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; |
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; |
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; |
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; |
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; |
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; |
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; |
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; |
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; |
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; |
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; |
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; |
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; |
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; |
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; |
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; |
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; |
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;; |
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; |
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;; |
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; |
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; |
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; |
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; |
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; |
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; |
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; |
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; |
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; |
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; |
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; |
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; |
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; |
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; |
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; |
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; |
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; |
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; |
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; |
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; |
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; |
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; |
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; |
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; |
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; |
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; |
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; |
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; |
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; |
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; |
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; |
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; |
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; |
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; |
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; |
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; |
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; |
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; |
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; |
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; |
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; |
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;; |
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; |
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; |
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; |
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; |
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; |
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; |
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; |
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; |
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; |
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; |
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; |
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; |
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; |
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; |
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; |
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; |
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; |
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; |
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; |
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; |
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; |
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; |
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; |
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; |
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; |
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; |
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; |
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; |
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; |
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; |
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; |
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; |
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; |
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;; |
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; |
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; |
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; |
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;; |
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; |
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; |
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; |
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; |
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; |
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; |
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; |
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; |
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; |
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; |
+FA2E;CJK COMPATIBILITY IDEOGRAPH-FA2E;Lo;0;L;90DE;;;;N;;;;; |
+FA2F;CJK COMPATIBILITY IDEOGRAPH-FA2F;Lo;0;L;96B7;;;;N;;;;; |
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; |
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; |
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; |
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; |
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; |
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; |
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; |
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; |
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; |
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; |
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; |
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; |
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; |
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; |
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; |
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; |
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; |
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; |
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; |
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; |
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; |
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; |
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; |
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; |
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; |
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; |
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; |
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; |
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; |
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; |
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; |
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; |
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; |
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; |
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; |
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; |
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; |
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; |
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; |
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; |
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; |
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; |
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; |
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; |
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; |
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; |
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; |
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; |
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; |
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; |
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; |
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; |
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; |
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; |
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; |
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; |
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; |
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; |
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; |
+FA6B;CJK COMPATIBILITY IDEOGRAPH-FA6B;Lo;0;L;6075;;;;N;;;;; |
+FA6C;CJK COMPATIBILITY IDEOGRAPH-FA6C;Lo;0;L;242EE;;;;N;;;;; |
+FA6D;CJK COMPATIBILITY IDEOGRAPH-FA6D;Lo;0;L;8218;;;;N;;;;; |
+FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; |
+FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; |
+FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; |
+FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; |
+FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; |
+FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; |
+FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; |
+FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; |
+FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; |
+FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; |
+FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; |
+FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; |
+FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; |
+FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; |
+FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; |
+FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; |
+FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; |
+FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; |
+FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; |
+FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; |
+FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; |
+FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; |
+FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; |
+FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; |
+FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; |
+FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; |
+FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; |
+FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; |
+FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; |
+FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; |
+FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; |
+FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; |
+FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; |
+FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; |
+FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; |
+FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; |
+FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; |
+FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; |
+FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; |
+FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; |
+FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; |
+FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; |
+FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; |
+FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; |
+FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; |
+FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; |
+FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; |
+FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; |
+FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; |
+FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; |
+FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; |
+FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; |
+FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; |
+FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; |
+FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; |
+FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; |
+FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; |
+FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; |
+FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; |
+FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; |
+FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; |
+FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; |
+FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; |
+FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; |
+FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; |
+FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; |
+FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; |
+FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; |
+FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; |
+FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; |
+FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; |
+FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; |
+FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; |
+FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; |
+FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; |
+FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; |
+FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; |
+FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; |
+FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; |
+FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; |
+FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; |
+FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; |
+FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; |
+FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; |
+FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; |
+FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; |
+FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; |
+FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; |
+FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; |
+FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; |
+FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; |
+FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; |
+FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; |
+FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; |
+FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; |
+FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; |
+FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; |
+FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; |
+FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; |
+FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; |
+FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; |
+FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; |
+FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; |
+FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; |
+FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; |
+FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; |
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;; |
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;; |
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;; |
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;; |
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;; |
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;; |
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;; |
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;; |
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;; |
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;; |
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;; |
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;; |
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; |
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; |
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; |
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;; |
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;; |
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;; |
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;; |
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;; |
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;; |
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;; |
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;; |
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;; |
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;; |
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; |
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; |
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; |
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; |
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; |
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; |
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; |
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; |
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; |
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; |
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; |
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; |
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; |
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; |
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; |
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; |
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; |
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; |
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; |
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; |
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; |
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; |
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; |
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; |
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; |
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; |
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; |
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; |
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; |
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; |
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; |
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; |
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;; |
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;; |
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;; |
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;; |
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;; |
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;; |
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;; |
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;; |
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;; |
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;; |
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;; |
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;; |
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;; |
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;; |
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;; |
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;; |
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;; |
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;; |
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;; |
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;; |
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;; |
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;; |
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;; |
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;; |
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;; |
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;; |
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;; |
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;; |
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;; |
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;; |
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;; |
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;; |
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;; |
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;; |
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;; |
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;; |
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;; |
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;; |
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;; |
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;; |
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;; |
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;; |
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;; |
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;; |
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;; |
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;; |
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;; |
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;; |
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;; |
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;; |
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;; |
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;; |
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;; |
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;; |
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;; |
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;; |
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;; |
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;; |
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;; |
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;; |
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;; |
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;; |
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;; |
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;; |
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;; |
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;; |
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;; |
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;; |
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;; |
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;; |
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;; |
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;; |
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;; |
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;; |
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;; |
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;; |
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;; |
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;; |
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;; |
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;; |
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;; |
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;; |
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;; |
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;; |
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;; |
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;; |
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;; |
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;; |
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;; |
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;; |
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;; |
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;; |
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;; |
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;; |
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;; |
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;; |
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;; |
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;; |
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;; |
+FBB2;ARABIC SYMBOL DOT ABOVE;Sk;0;AL;;;;;N;;;;; |
+FBB3;ARABIC SYMBOL DOT BELOW;Sk;0;AL;;;;;N;;;;; |
+FBB4;ARABIC SYMBOL TWO DOTS ABOVE;Sk;0;AL;;;;;N;;;;; |
+FBB5;ARABIC SYMBOL TWO DOTS BELOW;Sk;0;AL;;;;;N;;;;; |
+FBB6;ARABIC SYMBOL THREE DOTS ABOVE;Sk;0;AL;;;;;N;;;;; |
+FBB7;ARABIC SYMBOL THREE DOTS BELOW;Sk;0;AL;;;;;N;;;;; |
+FBB8;ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE;Sk;0;AL;;;;;N;;;;; |
+FBB9;ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW;Sk;0;AL;;;;;N;;;;; |
+FBBA;ARABIC SYMBOL FOUR DOTS ABOVE;Sk;0;AL;;;;;N;;;;; |
+FBBB;ARABIC SYMBOL FOUR DOTS BELOW;Sk;0;AL;;;;;N;;;;; |
+FBBC;ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW;Sk;0;AL;;;;;N;;;;; |
+FBBD;ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE;Sk;0;AL;;;;;N;;;;; |
+FBBE;ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;Sk;0;AL;;;;;N;;;;; |
+FBBF;ARABIC SYMBOL RING;Sk;0;AL;;;;;N;;;;; |
+FBC0;ARABIC SYMBOL SMALL TAH ABOVE;Sk;0;AL;;;;;N;;;;; |
+FBC1;ARABIC SYMBOL SMALL TAH BELOW;Sk;0;AL;;;;;N;;;;; |
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;; |
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;; |
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;; |
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;; |
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;; |
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;; |
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;; |
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;; |
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;; |
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;; |
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;; |
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;; |
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;; |
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;; |
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;; |
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;; |
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;; |
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;; |
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;; |
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;; |
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;; |
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;; |
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;; |
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;; |
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;; |
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;; |
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;; |
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;; |
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;; |
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;; |
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;; |
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;; |
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;; |
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;; |
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;; |
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;; |
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;; |
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;; |
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; |
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; |
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;; |
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;; |
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;; |
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;; |
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;; |
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;; |
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;; |
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;; |
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; |
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;; |
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;; |
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;; |
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;; |
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;; |
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;; |
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;; |
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;; |
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;; |
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;; |
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;; |
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;; |
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;; |
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;; |
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;; |
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;; |
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;; |
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;; |
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;; |
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;; |
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;; |
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;; |
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;; |
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;; |
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;; |
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;; |
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;; |
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;; |
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;; |
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;; |
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;; |
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;; |
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;; |
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;; |
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;; |
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;; |
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;; |
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;; |
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;; |
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;; |
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;; |
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;; |
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;; |
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;; |
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;; |
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;; |
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;; |
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;; |
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;; |
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;; |
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;; |
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;; |
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;; |
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;; |
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;; |
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;; |
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;; |
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;; |
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;; |
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;; |
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;; |
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;; |
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;; |
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;; |
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;; |
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;; |
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;; |
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;; |
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;; |
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;; |
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;; |
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;; |
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;; |
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;; |
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;; |
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;; |
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;; |
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;; |
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;; |
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;; |
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;; |
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;; |
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;; |
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;; |
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;; |
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;; |
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;; |
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;; |
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;; |
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;; |
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;; |
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;; |
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;; |
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;; |
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;; |
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;; |
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;; |
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;; |
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;; |
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;; |
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; |
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;; |
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;; |
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;; |
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;; |
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;; |
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;; |
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;; |
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;; |
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;; |
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;; |
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;; |
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;; |
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;; |
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;; |
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;; |
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;; |
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;; |
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;; |
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;; |
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;; |
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;; |
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;; |
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;; |
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;; |
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;; |
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;; |
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;; |
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;; |
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;; |
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;; |
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;; |
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;; |
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;; |
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;; |
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;; |
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;; |
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;; |
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;; |
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;; |
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;; |
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;; |
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;; |
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;; |
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;; |
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;; |
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;; |
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;; |
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;; |
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;; |
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;; |
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;; |
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;; |
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;; |
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;; |
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;; |
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;; |
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;; |
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;; |
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;; |
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;; |
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;; |
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;; |
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;; |
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;; |
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;; |
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;; |
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;; |
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;; |
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;; |
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;; |
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;; |
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;; |
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;; |
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;; |
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;; |
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;; |
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;; |
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;; |
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;; |
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;; |
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;; |
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;; |
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;; |
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;; |
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;; |
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;; |
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;; |
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;; |
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;; |
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;; |
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;; |
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;; |
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;; |
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;; |
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;; |
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;; |
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;; |
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;; |
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;; |
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;; |
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;; |
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;; |
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;; |
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;; |
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;; |
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;; |
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;; |
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;; |
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;; |
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;; |
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;; |
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;; |
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;; |
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;; |
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;; |
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;; |
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;; |
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;; |
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;; |
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;; |
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;; |
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;; |
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;; |
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;; |
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;; |
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;; |
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;; |
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;; |
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;; |
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;; |
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;; |
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;; |
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;; |
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;; |
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;; |
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;; |
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;; |
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;; |
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;; |
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;; |
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;; |
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;; |
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;; |
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;; |
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;; |
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;; |
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;; |
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;; |
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;; |
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;; |
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;; |
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;; |
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;; |
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;; |
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;; |
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;; |
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;; |
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;; |
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;; |
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;; |
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;; |
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;; |
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;; |
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;; |
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;; |
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;; |
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;; |
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;; |
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;; |
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;; |
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;; |
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;; |
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;; |
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;; |
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;; |
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;; |
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;; |
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;; |
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;; |
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;; |
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;; |
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;; |
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;; |
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;; |
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;; |
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;; |
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;; |
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;; |
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;; |
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;; |
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;; |
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;; |
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;; |
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;; |
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;; |
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;; |
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;; |
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;; |
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;; |
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;; |
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;; |
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;; |
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;; |
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;; |
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;; |
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;; |
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;; |
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;; |
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;; |
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;; |
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;; |
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;; |
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;; |
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; |
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; |
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;; |
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;; |
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;; |
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;; |
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;; |
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;; |
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;; |
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;; |
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;; |
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;; |
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;; |
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;; |
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;; |
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;; |
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;; |
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;; |
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;; |
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;; |
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;; |
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;; |
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;; |
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;; |
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;; |
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;; |
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;; |
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;; |
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;; |
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;; |
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;; |
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;; |
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;; |
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;; |
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;; |
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;; |
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;; |
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;; |
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;; |
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;; |
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;; |
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;; |
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;; |
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;; |
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;; |
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;; |
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;; |
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;; |
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;; |
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;; |
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;; |
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;; |
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;; |
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;; |
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;; |
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;; |
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;; |
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;; |
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;; |
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;; |
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;; |
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;; |
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;; |
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;; |
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;; |
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;; |
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;; |
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;; |
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;; |
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;; |
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;; |
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;; |
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;; |
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;; |
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;; |
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;; |
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;; |
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;; |
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;; |
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;; |
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;; |
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;; |
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;; |
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;; |
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;; |
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;; |
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;; |
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;; |
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;; |
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;; |
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;; |
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;; |
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;; |
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;; |
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;; |
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;; |
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;; |
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;; |
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;; |
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;; |
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;; |
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;; |
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;; |
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;; |
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;; |
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;; |
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;; |
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;; |
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;; |
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;; |
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;; |
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;; |
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;; |
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;; |
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;; |
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;; |
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;; |
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;; |
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;; |
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;; |
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;; |
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;; |
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;; |
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;; |
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;; |
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;; |
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;; |
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;; |
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;; |
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;; |
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; |
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; |
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;; |
+FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; |
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; |
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; |
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; |
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; |
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; |
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; |
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; |
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; |
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; |
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; |
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; |
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; |
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; |
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; |
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; |
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; |
+FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;; |
+FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;; |
+FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;; |
+FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;; |
+FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;; |
+FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;; |
+FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;; |
+FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;; |
+FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;; |
+FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;; |
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; |
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; |
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; |
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; |
+FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;; |
+FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;; |
+FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;; |
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; |
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; |
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; |
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; |
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; |
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; |
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; |
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; |
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; |
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; |
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; |
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; |
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; |
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; |
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; |
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; |
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; |
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; |
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; |
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; |
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; |
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; |
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; |
+FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;; |
+FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;; |
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;; |
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; |
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;; |
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; |
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;; |
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; |
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;; |
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;; |
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;; |
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;; |
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;; |
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;; |
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;; |
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;; |
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;; |
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;; |
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;; |
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;; |
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;; |
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;; |
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;; |
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;; |
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;; |
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;; |
+FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;; |
+FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;; |
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;; |
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;; |
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;; |
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;; |
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;; |
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;; |
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;; |
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; |
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; |
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; |
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; |
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; |
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; |
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; |
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; |
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; |
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; |
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; |
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; |
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; |
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; |
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; |
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; |
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; |
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; |
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; |
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; |
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; |
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; |
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; |
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; |
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; |
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; |
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; |
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; |
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; |
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; |
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; |
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; |
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; |
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; |
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; |
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; |
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; |
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; |
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; |
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; |
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; |
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; |
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; |
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; |
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; |
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; |
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; |
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; |
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; |
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; |
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; |
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; |
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; |
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; |
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; |
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; |
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; |
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; |
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; |
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; |
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; |
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; |
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; |
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; |
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; |
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; |
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; |
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; |
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; |
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; |
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; |
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; |
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; |
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; |
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; |
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; |
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; |
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; |
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; |
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; |
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; |
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; |
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; |
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; |
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; |
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; |
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; |
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; |
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; |
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; |
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; |
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; |
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; |
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; |
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; |
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; |
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; |
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; |
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; |
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; |
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; |
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; |
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; |
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; |
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; |
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; |
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; |
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; |
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; |
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; |
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; |
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; |
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; |
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; |
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; |
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; |
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; |
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; |
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; |
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; |
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; |
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; |
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; |
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; |
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; |
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; |
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; |
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; |
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; |
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; |
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; |
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; |
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; |
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; |
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; |
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; |
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; |
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; |
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; |
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; |
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; |
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;; |
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;; |
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;; |
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;; |
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;; |
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;; |
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;; |
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; |
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; |
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;; |
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;; |
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;; |
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;; |
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;; |
+FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;; |
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;; |
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;; |
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;; |
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;; |
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;; |
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;; |
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;; |
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;; |
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;; |
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;; |
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;; |
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;; |
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;; |
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;; |
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;; |
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;; |
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;; |
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41; |
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42; |
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43; |
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44; |
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45; |
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46; |
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47; |
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48; |
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49; |
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A; |
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B; |
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C; |
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D; |
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E; |
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F; |
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50; |
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51; |
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52; |
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53; |
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54; |
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55; |
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56; |
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57; |
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58; |
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59; |
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A; |
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; |
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;; |
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; |
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; |
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; |
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; |
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21 |
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22 |
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23 |
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24 |
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25 |
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26 |
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27 |
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28 |
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29 |
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A |
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B |
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C |
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D |
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E |
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F |
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30 |
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31 |
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32 |
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33 |
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34 |
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35 |
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36 |
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37 |
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38 |
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39 |
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A |
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; |
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; |
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; |
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;; |
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;;;; |
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;;;; |
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; |
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; |
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; |
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;; |
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;; |
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;; |
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;; |
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;; |
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;; |
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;; |
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;; |
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;; |
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;; |
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;; |
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;; |
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;; |
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;; |
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;; |
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;; |
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;; |
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;; |
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;; |
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;; |
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;; |
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;; |
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;; |
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;; |
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;; |
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;; |
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;; |
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;; |
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;; |
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;; |
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;; |
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;; |
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;; |
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;; |
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;; |
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;; |
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;; |
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;; |
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;; |
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;; |
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;; |
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;; |
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;; |
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;; |
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;; |
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;; |
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;; |
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;; |
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;; |
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;; |
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;; |
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;; |
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;; |
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;; |
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;; |
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;; |
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;; |
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;; |
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;; |
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;; |
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; |
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; |
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; |
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; |
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;; |
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; |
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; |
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; |
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; |
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; |
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; |
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; |
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; |
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; |
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; |
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; |
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; |
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;; |
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; |
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; |
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; |
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;; |
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; |
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;; |
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; |
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; |
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; |
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; |
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; |
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; |
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;; |
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;; |
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;; |
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;; |
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;; |
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;; |
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;; |
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;; |
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;; |
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;; |
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;; |
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;; |
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;; |
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;; |
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;; |
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;; |
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;; |
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;; |
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;; |
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;; |
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;; |
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;; |
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;; |
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;; |
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;; |
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;; |
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; |
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;; |
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;; |
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;; |
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;; |
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;; |
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;; |
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;; |
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;; |
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;; |
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; |
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; |
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; |
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; |
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; |
+10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; |
+10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; |
+10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; |
+10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; |
+10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; |
+10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; |
+10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; |
+10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; |
+10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; |
+10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; |
+1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; |
+1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; |
+1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; |
+1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; |
+1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; |
+10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; |
+10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; |
+10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; |
+10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; |
+10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; |
+10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; |
+10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; |
+10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; |
+10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; |
+10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; |
+1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; |
+1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; |
+1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; |
+1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; |
+1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; |
+1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; |
+10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; |
+10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; |
+10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; |
+10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; |
+10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; |
+10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; |
+10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; |
+10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; |
+10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; |
+1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; |
+1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; |
+1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; |
+1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; |
+1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; |
+1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; |
+10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; |
+10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; |
+10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; |
+10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; |
+10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; |
+10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; |
+10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; |
+10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; |
+10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; |
+10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; |
+1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; |
+1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; |
+1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; |
+1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; |
+10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; |
+10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; |
+10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; |
+10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; |
+10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; |
+10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; |
+10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; |
+10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; |
+10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; |
+10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; |
+1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; |
+1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; |
+1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; |
+1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; |
+10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; |
+10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; |
+10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; |
+10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; |
+10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; |
+10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; |
+10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; |
+10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; |
+10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; |
+10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; |
+1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; |
+1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; |
+1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; |
+1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; |
+10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; |
+10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; |
+10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; |
+10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; |
+10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; |
+10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; |
+10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; |
+10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; |
+10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; |
+10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; |
+1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; |
+1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; |
+1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; |
+1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; |
+1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; |
+1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; |
+10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; |
+10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; |
+10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; |
+10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; |
+10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; |
+10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; |
+10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; |
+10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; |
+10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; |
+10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; |
+1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; |
+1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; |
+1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; |
+1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; |
+1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; |
+1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; |
+100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; |
+100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; |
+100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; |
+100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; |
+100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; |
+100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; |
+100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; |
+100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; |
+100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; |
+100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; |
+100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; |
+100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; |
+100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; |
+100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; |
+100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; |
+100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; |
+100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; |
+100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; |
+100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; |
+100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; |
+100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; |
+100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; |
+100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; |
+100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; |
+100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; |
+100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; |
+100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; |
+100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; |
+100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; |
+100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; |
+100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; |
+100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; |
+100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; |
+100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; |
+100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; |
+100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; |
+100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; |
+100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; |
+100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; |
+100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; |
+100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; |
+100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;;;; |
+100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; |
+100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;;;; |
+100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; |
+100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; |
+100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; |
+100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; |
+100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; |
+100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; |
+100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; |
+100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; |
+100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; |
+100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; |
+100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; |
+100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; |
+100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; |
+100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; |
+100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; |
+100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; |
+100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; |
+100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; |
+100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; |
+100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; |
+100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; |
+100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; |
+100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; |
+100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; |
+100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; |
+100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; |
+100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; |
+100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; |
+100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; |
+100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; |
+100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; |
+100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; |
+100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; |
+100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; |
+100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; |
+100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; |
+100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; |
+100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; |
+100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; |
+100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; |
+100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; |
+100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; |
+100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; |
+100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; |
+100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; |
+100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; |
+100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; |
+10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; |
+10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; |
+10102;AEGEAN CHECK MARK;Po;0;L;;;;;N;;;;; |
+10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; |
+10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; |
+10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; |
+1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; |
+1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; |
+1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; |
+1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; |
+1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; |
+1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; |
+10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; |
+10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; |
+10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; |
+10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; |
+10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; |
+10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; |
+10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; |
+10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; |
+10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; |
+10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; |
+1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; |
+1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; |
+1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; |
+1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; |
+1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; |
+1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; |
+10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; |
+10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; |
+10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; |
+10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; |
+10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; |
+10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; |
+10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; |
+10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; |
+10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; |
+10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; |
+1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; |
+1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; |
+1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; |
+1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; |
+1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; |
+1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; |
+10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; |
+10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; |
+10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; |
+10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; |
+10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; |
+10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; |
+10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; |
+1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; |
+1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; |
+1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; |
+1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; |
+1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; |
+1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; |
+10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; |
+10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; |
+10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; |
+10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; |
+10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; |
+10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; |
+10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; |
+10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; |
+10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; |
+10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; |
+1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; |
+1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; |
+1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; |
+1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; |
+1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; |
+1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; |
+10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; |
+10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; |
+10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; |
+10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; |
+10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; |
+10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; |
+10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; |
+10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; |
+10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; |
+10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; |
+1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; |
+1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; |
+1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; |
+1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; |
+1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; |
+1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; |
+10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; |
+10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; |
+10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; |
+10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; |
+10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; |
+10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; |
+10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; |
+10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; |
+10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; |
+10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; |
+1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; |
+1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; |
+1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; |
+1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; |
+1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; |
+1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; |
+10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; |
+10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; |
+10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; |
+10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; |
+10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; |
+10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; |
+10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; |
+10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; |
+10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; |
+10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; |
+1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; |
+1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; |
+1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; |
+1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; |
+1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; |
+1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; |
+10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; |
+10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; |
+10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; |
+10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; |
+10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; |
+10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; |
+10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; |
+10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; |
+10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; |
+10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; |
+1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; |
+10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;; |
+10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;; |
+10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;; |
+10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;; |
+10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;; |
+10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;; |
+10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;; |
+10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;; |
+10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;; |
+10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;; |
+1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;; |
+1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;; |
+101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;; |
+101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;; |
+101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;; |
+101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;; |
+101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;; |
+101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;; |
+101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;; |
+101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;; |
+101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;; |
+101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;; |
+101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;; |
+101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;; |
+101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;; |
+101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;; |
+101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;; |
+101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;; |
+101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;; |
+101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;; |
+101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;; |
+101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;; |
+101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;; |
+101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;; |
+101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;; |
+101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;; |
+101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;; |
+101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;; |
+101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;; |
+101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;; |
+101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;; |
+101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;; |
+101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;; |
+101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;; |
+101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;; |
+101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;; |
+101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;; |
+101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;; |
+101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;; |
+101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;; |
+101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;; |
+101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;; |
+101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;; |
+101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;; |
+101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;; |
+101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;; |
+101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;; |
+101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;; |
+10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;; |
+10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;; |
+10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;; |
+10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;; |
+10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;; |
+10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;; |
+10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;; |
+10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;; |
+10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;; |
+10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;; |
+1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;; |
+1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;; |
+1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;; |
+1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;; |
+1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;; |
+1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;; |
+10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;; |
+10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;; |
+10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;; |
+10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;; |
+10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;; |
+10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;; |
+10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;; |
+10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;; |
+10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;; |
+10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;; |
+1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;; |
+1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;; |
+1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;; |
+102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;; |
+102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;; |
+102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;; |
+102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;; |
+102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;; |
+102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;; |
+102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;; |
+102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;; |
+102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;; |
+102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;; |
+102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;; |
+102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;; |
+102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;; |
+102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;; |
+102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;; |
+102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;; |
+102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;; |
+102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;; |
+102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;; |
+102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;; |
+102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;; |
+102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;; |
+102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;; |
+102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;; |
+102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;; |
+102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;; |
+102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;; |
+102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;; |
+102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;; |
+102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;; |
+102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;; |
+102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;; |
+102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;; |
+102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;; |
+102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;; |
+102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;; |
+102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;; |
+102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;; |
+102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;; |
+102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;; |
+102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;; |
+102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;; |
+102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;; |
+102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;; |
+102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;; |
+102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;; |
+102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;; |
+102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;; |
+102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;; |
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; |
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; |
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; |
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; |
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; |
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; |
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; |
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; |
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; |
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; |
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; |
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; |
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; |
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; |
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; |
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;;;; |
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; |
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; |
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; |
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; |
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; |
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; |
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; |
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;;;; |
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; |
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; |
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; |
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;;;; |
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;;;; |
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;;;; |
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;;;; |
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; |
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; |
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; |
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; |
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; |
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; |
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; |
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; |
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; |
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; |
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; |
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; |
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; |
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; |
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; |
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; |
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; |
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; |
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; |
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; |
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; |
+10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;; |
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; |
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; |
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; |
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; |
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; |
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; |
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; |
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; |
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; |
+10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; |
+10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; |
+10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; |
+10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; |
+10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; |
+10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; |
+10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; |
+10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; |
+10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; |
+10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; |
+1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; |
+1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; |
+1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; |
+1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; |
+1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; |
+1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; |
+10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; |
+10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; |
+10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; |
+10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; |
+10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; |
+10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; |
+10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; |
+10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; |
+10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; |
+10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; |
+1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; |
+1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; |
+1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; |
+1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; |
+1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; |
+103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; |
+103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; |
+103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; |
+103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; |
+103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; |
+103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; |
+103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; |
+103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; |
+103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; |
+103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; |
+103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; |
+103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; |
+103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; |
+103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; |
+103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; |
+103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; |
+103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; |
+103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; |
+103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; |
+103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; |
+103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; |
+103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; |
+103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; |
+103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; |
+103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; |
+103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; |
+103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; |
+103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; |
+103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; |
+103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; |
+103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; |
+103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; |
+103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; |
+103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; |
+103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; |
+103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; |
+103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; |
+103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; |
+103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; |
+103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; |
+103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; |
+103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; |
+103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; |
+103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; |
+103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; |
+103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;; |
+103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;; |
+103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;; |
+103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;; |
+103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;; |
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; |
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; |
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; |
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; |
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; |
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; |
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; |
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; |
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; |
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; |
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; |
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; |
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; |
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; |
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; |
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; |
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; |
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; |
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; |
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; |
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; |
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; |
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; |
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; |
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; |
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; |
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; |
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; |
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; |
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; |
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; |
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; |
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; |
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; |
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; |
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; |
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; |
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; |
+10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; |
+10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; |
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 |
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 |
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 |
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 |
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 |
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 |
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 |
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 |
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 |
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 |
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A |
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B |
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C |
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D |
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E |
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F |
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 |
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 |
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 |
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 |
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 |
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 |
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 |
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 |
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 |
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 |
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A |
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B |
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C |
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D |
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E |
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F |
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 |
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 |
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 |
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 |
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 |
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 |
+1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 |
+1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 |
+10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; |
+10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; |
+10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; |
+10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; |
+10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; |
+10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; |
+10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; |
+10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; |
+10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; |
+10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; |
+1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; |
+1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; |
+1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; |
+1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; |
+1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; |
+1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; |
+10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; |
+10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; |
+10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; |
+10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; |
+10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; |
+10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; |
+10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; |
+10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; |
+10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; |
+10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; |
+1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; |
+1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; |
+1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; |
+1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; |
+1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; |
+1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; |
+10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; |
+10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; |
+10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; |
+10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; |
+10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; |
+10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; |
+10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; |
+10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; |
+10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; |
+10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; |
+1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; |
+1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; |
+1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; |
+1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; |
+1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; |
+1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; |
+10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; |
+10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; |
+10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; |
+10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; |
+10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; |
+10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; |
+10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; |
+10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; |
+10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; |
+10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; |
+1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; |
+1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; |
+1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; |
+1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; |
+1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; |
+1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; |
+10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; |
+10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; |
+10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; |
+10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; |
+10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; |
+10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; |
+10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; |
+10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; |
+10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; |
+10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; |
+1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; |
+1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; |
+1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; |
+1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; |
+104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; |
+10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; |
+10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; |
+10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; |
+10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; |
+10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; |
+10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; |
+1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; |
+1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; |
+1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; |
+1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; |
+1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; |
+1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; |
+10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; |
+10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; |
+10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; |
+10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; |
+10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; |
+10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; |
+10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; |
+10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; |
+10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; |
+10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; |
+1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; |
+1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; |
+1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; |
+1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; |
+1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; |
+1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; |
+10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; |
+10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; |
+10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; |
+10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; |
+10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; |
+10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; |
+10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; |
+10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; |
+10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; |
+10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; |
+1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; |
+1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; |
+1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; |
+1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; |
+1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; |
+1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; |
+10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; |
+10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; |
+10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; |
+10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; |
+10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; |
+10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; |
+10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; |
+10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; |
+1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; |
+1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; |
+10840;IMPERIAL ARAMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;; |
+10841;IMPERIAL ARAMAIC LETTER BETH;Lo;0;R;;;;;N;;;;; |
+10842;IMPERIAL ARAMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;; |
+10843;IMPERIAL ARAMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;; |
+10844;IMPERIAL ARAMAIC LETTER HE;Lo;0;R;;;;;N;;;;; |
+10845;IMPERIAL ARAMAIC LETTER WAW;Lo;0;R;;;;;N;;;;; |
+10846;IMPERIAL ARAMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;; |
+10847;IMPERIAL ARAMAIC LETTER HETH;Lo;0;R;;;;;N;;;;; |
+10848;IMPERIAL ARAMAIC LETTER TETH;Lo;0;R;;;;;N;;;;; |
+10849;IMPERIAL ARAMAIC LETTER YODH;Lo;0;R;;;;;N;;;;; |
+1084A;IMPERIAL ARAMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;; |
+1084B;IMPERIAL ARAMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;; |
+1084C;IMPERIAL ARAMAIC LETTER MEM;Lo;0;R;;;;;N;;;;; |
+1084D;IMPERIAL ARAMAIC LETTER NUN;Lo;0;R;;;;;N;;;;; |
+1084E;IMPERIAL ARAMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;; |
+1084F;IMPERIAL ARAMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;; |
+10850;IMPERIAL ARAMAIC LETTER PE;Lo;0;R;;;;;N;;;;; |
+10851;IMPERIAL ARAMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;; |
+10852;IMPERIAL ARAMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;; |
+10853;IMPERIAL ARAMAIC LETTER RESH;Lo;0;R;;;;;N;;;;; |
+10854;IMPERIAL ARAMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;; |
+10855;IMPERIAL ARAMAIC LETTER TAW;Lo;0;R;;;;;N;;;;; |
+10857;IMPERIAL ARAMAIC SECTION SIGN;Po;0;R;;;;;N;;;;; |
+10858;IMPERIAL ARAMAIC NUMBER ONE;No;0;R;;;;1;N;;;;; |
+10859;IMPERIAL ARAMAIC NUMBER TWO;No;0;R;;;;2;N;;;;; |
+1085A;IMPERIAL ARAMAIC NUMBER THREE;No;0;R;;;;3;N;;;;; |
+1085B;IMPERIAL ARAMAIC NUMBER TEN;No;0;R;;;;10;N;;;;; |
+1085C;IMPERIAL ARAMAIC NUMBER TWENTY;No;0;R;;;;20;N;;;;; |
+1085D;IMPERIAL ARAMAIC NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; |
+1085E;IMPERIAL ARAMAIC NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; |
+1085F;IMPERIAL ARAMAIC NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;; |
+10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; |
+10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; |
+10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; |
+10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;; |
+10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;; |
+10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;; |
+10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;; |
+10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;; |
+10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;; |
+10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;; |
+1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;; |
+1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;; |
+1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;; |
+1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;; |
+1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;; |
+1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;; |
+10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;; |
+10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;; |
+10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;; |
+10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;; |
+10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; |
+10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;; |
+10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;; |
+10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;; |
+10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; |
+10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; |
+1091A;PHOENICIAN NUMBER TWO;No;0;R;;;;2;N;;;;; |
+1091B;PHOENICIAN NUMBER THREE;No;0;R;;;;3;N;;;;; |
+1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;; |
+10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;; |
+10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;; |
+10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;; |
+10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;; |
+10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;; |
+10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;; |
+10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;; |
+10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;; |
+10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;; |
+10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;; |
+1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;; |
+1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;; |
+1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;; |
+1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;; |
+1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;; |
+1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;; |
+10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;; |
+10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;; |
+10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;; |
+10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;; |
+10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;; |
+10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;; |
+10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;; |
+10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;; |
+10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;; |
+10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;; |
+1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;; |
+10980;MEROITIC HIEROGLYPHIC LETTER A;Lo;0;R;;;;;N;;;;; |
+10981;MEROITIC HIEROGLYPHIC LETTER E;Lo;0;R;;;;;N;;;;; |
+10982;MEROITIC HIEROGLYPHIC LETTER I;Lo;0;R;;;;;N;;;;; |
+10983;MEROITIC HIEROGLYPHIC LETTER O;Lo;0;R;;;;;N;;;;; |
+10984;MEROITIC HIEROGLYPHIC LETTER YA;Lo;0;R;;;;;N;;;;; |
+10985;MEROITIC HIEROGLYPHIC LETTER WA;Lo;0;R;;;;;N;;;;; |
+10986;MEROITIC HIEROGLYPHIC LETTER BA;Lo;0;R;;;;;N;;;;; |
+10987;MEROITIC HIEROGLYPHIC LETTER BA-2;Lo;0;R;;;;;N;;;;; |
+10988;MEROITIC HIEROGLYPHIC LETTER PA;Lo;0;R;;;;;N;;;;; |
+10989;MEROITIC HIEROGLYPHIC LETTER MA;Lo;0;R;;;;;N;;;;; |
+1098A;MEROITIC HIEROGLYPHIC LETTER NA;Lo;0;R;;;;;N;;;;; |
+1098B;MEROITIC HIEROGLYPHIC LETTER NA-2;Lo;0;R;;;;;N;;;;; |
+1098C;MEROITIC HIEROGLYPHIC LETTER NE;Lo;0;R;;;;;N;;;;; |
+1098D;MEROITIC HIEROGLYPHIC LETTER NE-2;Lo;0;R;;;;;N;;;;; |
+1098E;MEROITIC HIEROGLYPHIC LETTER RA;Lo;0;R;;;;;N;;;;; |
+1098F;MEROITIC HIEROGLYPHIC LETTER RA-2;Lo;0;R;;;;;N;;;;; |
+10990;MEROITIC HIEROGLYPHIC LETTER LA;Lo;0;R;;;;;N;;;;; |
+10991;MEROITIC HIEROGLYPHIC LETTER KHA;Lo;0;R;;;;;N;;;;; |
+10992;MEROITIC HIEROGLYPHIC LETTER HHA;Lo;0;R;;;;;N;;;;; |
+10993;MEROITIC HIEROGLYPHIC LETTER SA;Lo;0;R;;;;;N;;;;; |
+10994;MEROITIC HIEROGLYPHIC LETTER SA-2;Lo;0;R;;;;;N;;;;; |
+10995;MEROITIC HIEROGLYPHIC LETTER SE;Lo;0;R;;;;;N;;;;; |
+10996;MEROITIC HIEROGLYPHIC LETTER KA;Lo;0;R;;;;;N;;;;; |
+10997;MEROITIC HIEROGLYPHIC LETTER QA;Lo;0;R;;;;;N;;;;; |
+10998;MEROITIC HIEROGLYPHIC LETTER TA;Lo;0;R;;;;;N;;;;; |
+10999;MEROITIC HIEROGLYPHIC LETTER TA-2;Lo;0;R;;;;;N;;;;; |
+1099A;MEROITIC HIEROGLYPHIC LETTER TE;Lo;0;R;;;;;N;;;;; |
+1099B;MEROITIC HIEROGLYPHIC LETTER TE-2;Lo;0;R;;;;;N;;;;; |
+1099C;MEROITIC HIEROGLYPHIC LETTER TO;Lo;0;R;;;;;N;;;;; |
+1099D;MEROITIC HIEROGLYPHIC LETTER DA;Lo;0;R;;;;;N;;;;; |
+1099E;MEROITIC HIEROGLYPHIC SYMBOL VIDJ;Lo;0;R;;;;;N;;;;; |
+1099F;MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2;Lo;0;R;;;;;N;;;;; |
+109A0;MEROITIC CURSIVE LETTER A;Lo;0;R;;;;;N;;;;; |
+109A1;MEROITIC CURSIVE LETTER E;Lo;0;R;;;;;N;;;;; |
+109A2;MEROITIC CURSIVE LETTER I;Lo;0;R;;;;;N;;;;; |
+109A3;MEROITIC CURSIVE LETTER O;Lo;0;R;;;;;N;;;;; |
+109A4;MEROITIC CURSIVE LETTER YA;Lo;0;R;;;;;N;;;;; |
+109A5;MEROITIC CURSIVE LETTER WA;Lo;0;R;;;;;N;;;;; |
+109A6;MEROITIC CURSIVE LETTER BA;Lo;0;R;;;;;N;;;;; |
+109A7;MEROITIC CURSIVE LETTER PA;Lo;0;R;;;;;N;;;;; |
+109A8;MEROITIC CURSIVE LETTER MA;Lo;0;R;;;;;N;;;;; |
+109A9;MEROITIC CURSIVE LETTER NA;Lo;0;R;;;;;N;;;;; |
+109AA;MEROITIC CURSIVE LETTER NE;Lo;0;R;;;;;N;;;;; |
+109AB;MEROITIC CURSIVE LETTER RA;Lo;0;R;;;;;N;;;;; |
+109AC;MEROITIC CURSIVE LETTER LA;Lo;0;R;;;;;N;;;;; |
+109AD;MEROITIC CURSIVE LETTER KHA;Lo;0;R;;;;;N;;;;; |
+109AE;MEROITIC CURSIVE LETTER HHA;Lo;0;R;;;;;N;;;;; |
+109AF;MEROITIC CURSIVE LETTER SA;Lo;0;R;;;;;N;;;;; |
+109B0;MEROITIC CURSIVE LETTER ARCHAIC SA;Lo;0;R;;;;;N;;;;; |
+109B1;MEROITIC CURSIVE LETTER SE;Lo;0;R;;;;;N;;;;; |
+109B2;MEROITIC CURSIVE LETTER KA;Lo;0;R;;;;;N;;;;; |
+109B3;MEROITIC CURSIVE LETTER QA;Lo;0;R;;;;;N;;;;; |
+109B4;MEROITIC CURSIVE LETTER TA;Lo;0;R;;;;;N;;;;; |
+109B5;MEROITIC CURSIVE LETTER TE;Lo;0;R;;;;;N;;;;; |
+109B6;MEROITIC CURSIVE LETTER TO;Lo;0;R;;;;;N;;;;; |
+109B7;MEROITIC CURSIVE LETTER DA;Lo;0;R;;;;;N;;;;; |
+109BE;MEROITIC CURSIVE LOGOGRAM RMT;Lo;0;R;;;;;N;;;;; |
+109BF;MEROITIC CURSIVE LOGOGRAM IMN;Lo;0;R;;;;;N;;;;; |
+10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; |
+10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; |
+10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; |
+10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; |
+10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; |
+10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; |
+10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; |
+10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; |
+10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; |
+10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; |
+10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; |
+10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; |
+10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; |
+10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; |
+10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; |
+10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; |
+10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; |
+10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; |
+10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; |
+10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; |
+10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; |
+10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; |
+10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; |
+10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; |
+10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; |
+10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; |
+10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; |
+10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; |
+10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; |
+10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; |
+10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; |
+10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; |
+10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; |
+10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; |
+10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; |
+10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; |
+10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; |
+10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; |
+10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; |
+10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; |
+10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; |
+10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; |
+10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; |
+10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; |
+10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; |
+10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; |
+10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; |
+10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; |
+10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; |
+10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; |
+10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; |
+10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; |
+10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; |
+10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; |
+10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; |
+10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; |
+10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; |
+10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; |
+10A60;OLD SOUTH ARABIAN LETTER HE;Lo;0;R;;;;;N;;;;; |
+10A61;OLD SOUTH ARABIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; |
+10A62;OLD SOUTH ARABIAN LETTER HETH;Lo;0;R;;;;;N;;;;; |
+10A63;OLD SOUTH ARABIAN LETTER MEM;Lo;0;R;;;;;N;;;;; |
+10A64;OLD SOUTH ARABIAN LETTER QOPH;Lo;0;R;;;;;N;;;;; |
+10A65;OLD SOUTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;; |
+10A66;OLD SOUTH ARABIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; |
+10A67;OLD SOUTH ARABIAN LETTER RESH;Lo;0;R;;;;;N;;;;; |
+10A68;OLD SOUTH ARABIAN LETTER BETH;Lo;0;R;;;;;N;;;;; |
+10A69;OLD SOUTH ARABIAN LETTER TAW;Lo;0;R;;;;;N;;;;; |
+10A6A;OLD SOUTH ARABIAN LETTER SAT;Lo;0;R;;;;;N;;;;; |
+10A6B;OLD SOUTH ARABIAN LETTER KAPH;Lo;0;R;;;;;N;;;;; |
+10A6C;OLD SOUTH ARABIAN LETTER NUN;Lo;0;R;;;;;N;;;;; |
+10A6D;OLD SOUTH ARABIAN LETTER KHETH;Lo;0;R;;;;;N;;;;; |
+10A6E;OLD SOUTH ARABIAN LETTER SADHE;Lo;0;R;;;;;N;;;;; |
+10A6F;OLD SOUTH ARABIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; |
+10A70;OLD SOUTH ARABIAN LETTER FE;Lo;0;R;;;;;N;;;;; |
+10A71;OLD SOUTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;; |
+10A72;OLD SOUTH ARABIAN LETTER AYN;Lo;0;R;;;;;N;;;;; |
+10A73;OLD SOUTH ARABIAN LETTER DHADHE;Lo;0;R;;;;;N;;;;; |
+10A74;OLD SOUTH ARABIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; |
+10A75;OLD SOUTH ARABIAN LETTER DALETH;Lo;0;R;;;;;N;;;;; |
+10A76;OLD SOUTH ARABIAN LETTER GHAYN;Lo;0;R;;;;;N;;;;; |
+10A77;OLD SOUTH ARABIAN LETTER TETH;Lo;0;R;;;;;N;;;;; |
+10A78;OLD SOUTH ARABIAN LETTER ZAYN;Lo;0;R;;;;;N;;;;; |
+10A79;OLD SOUTH ARABIAN LETTER DHALETH;Lo;0;R;;;;;N;;;;; |
+10A7A;OLD SOUTH ARABIAN LETTER YODH;Lo;0;R;;;;;N;;;;; |
+10A7B;OLD SOUTH ARABIAN LETTER THAW;Lo;0;R;;;;;N;;;;; |
+10A7C;OLD SOUTH ARABIAN LETTER THETH;Lo;0;R;;;;;N;;;;; |
+10A7D;OLD SOUTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;; |
+10A7E;OLD SOUTH ARABIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;; |
+10A7F;OLD SOUTH ARABIAN NUMERIC INDICATOR;Po;0;R;;;;;N;;;;; |
+10B00;AVESTAN LETTER A;Lo;0;R;;;;;N;;;;; |
+10B01;AVESTAN LETTER AA;Lo;0;R;;;;;N;;;;; |
+10B02;AVESTAN LETTER AO;Lo;0;R;;;;;N;;;;; |
+10B03;AVESTAN LETTER AAO;Lo;0;R;;;;;N;;;;; |
+10B04;AVESTAN LETTER AN;Lo;0;R;;;;;N;;;;; |
+10B05;AVESTAN LETTER AAN;Lo;0;R;;;;;N;;;;; |
+10B06;AVESTAN LETTER AE;Lo;0;R;;;;;N;;;;; |
+10B07;AVESTAN LETTER AEE;Lo;0;R;;;;;N;;;;; |
+10B08;AVESTAN LETTER E;Lo;0;R;;;;;N;;;;; |
+10B09;AVESTAN LETTER EE;Lo;0;R;;;;;N;;;;; |
+10B0A;AVESTAN LETTER O;Lo;0;R;;;;;N;;;;; |
+10B0B;AVESTAN LETTER OO;Lo;0;R;;;;;N;;;;; |
+10B0C;AVESTAN LETTER I;Lo;0;R;;;;;N;;;;; |
+10B0D;AVESTAN LETTER II;Lo;0;R;;;;;N;;;;; |
+10B0E;AVESTAN LETTER U;Lo;0;R;;;;;N;;;;; |
+10B0F;AVESTAN LETTER UU;Lo;0;R;;;;;N;;;;; |
+10B10;AVESTAN LETTER KE;Lo;0;R;;;;;N;;;;; |
+10B11;AVESTAN LETTER XE;Lo;0;R;;;;;N;;;;; |
+10B12;AVESTAN LETTER XYE;Lo;0;R;;;;;N;;;;; |
+10B13;AVESTAN LETTER XVE;Lo;0;R;;;;;N;;;;; |
+10B14;AVESTAN LETTER GE;Lo;0;R;;;;;N;;;;; |
+10B15;AVESTAN LETTER GGE;Lo;0;R;;;;;N;;;;; |
+10B16;AVESTAN LETTER GHE;Lo;0;R;;;;;N;;;;; |
+10B17;AVESTAN LETTER CE;Lo;0;R;;;;;N;;;;; |
+10B18;AVESTAN LETTER JE;Lo;0;R;;;;;N;;;;; |
+10B19;AVESTAN LETTER TE;Lo;0;R;;;;;N;;;;; |
+10B1A;AVESTAN LETTER THE;Lo;0;R;;;;;N;;;;; |
+10B1B;AVESTAN LETTER DE;Lo;0;R;;;;;N;;;;; |
+10B1C;AVESTAN LETTER DHE;Lo;0;R;;;;;N;;;;; |
+10B1D;AVESTAN LETTER TTE;Lo;0;R;;;;;N;;;;; |
+10B1E;AVESTAN LETTER PE;Lo;0;R;;;;;N;;;;; |
+10B1F;AVESTAN LETTER FE;Lo;0;R;;;;;N;;;;; |
+10B20;AVESTAN LETTER BE;Lo;0;R;;;;;N;;;;; |
+10B21;AVESTAN LETTER BHE;Lo;0;R;;;;;N;;;;; |
+10B22;AVESTAN LETTER NGE;Lo;0;R;;;;;N;;;;; |
+10B23;AVESTAN LETTER NGYE;Lo;0;R;;;;;N;;;;; |
+10B24;AVESTAN LETTER NGVE;Lo;0;R;;;;;N;;;;; |
+10B25;AVESTAN LETTER NE;Lo;0;R;;;;;N;;;;; |
+10B26;AVESTAN LETTER NYE;Lo;0;R;;;;;N;;;;; |
+10B27;AVESTAN LETTER NNE;Lo;0;R;;;;;N;;;;; |
+10B28;AVESTAN LETTER ME;Lo;0;R;;;;;N;;;;; |
+10B29;AVESTAN LETTER HME;Lo;0;R;;;;;N;;;;; |
+10B2A;AVESTAN LETTER YYE;Lo;0;R;;;;;N;;;;; |
+10B2B;AVESTAN LETTER YE;Lo;0;R;;;;;N;;;;; |
+10B2C;AVESTAN LETTER VE;Lo;0;R;;;;;N;;;;; |
+10B2D;AVESTAN LETTER RE;Lo;0;R;;;;;N;;;;; |
+10B2E;AVESTAN LETTER LE;Lo;0;R;;;;;N;;;;; |
+10B2F;AVESTAN LETTER SE;Lo;0;R;;;;;N;;;;; |
+10B30;AVESTAN LETTER ZE;Lo;0;R;;;;;N;;;;; |
+10B31;AVESTAN LETTER SHE;Lo;0;R;;;;;N;;;;; |
+10B32;AVESTAN LETTER ZHE;Lo;0;R;;;;;N;;;;; |
+10B33;AVESTAN LETTER SHYE;Lo;0;R;;;;;N;;;;; |
+10B34;AVESTAN LETTER SSHE;Lo;0;R;;;;;N;;;;; |
+10B35;AVESTAN LETTER HE;Lo;0;R;;;;;N;;;;; |
+10B39;AVESTAN ABBREVIATION MARK;Po;0;ON;;;;;N;;;;; |
+10B3A;TINY TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+10B3B;SMALL TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+10B3C;LARGE TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+10B3D;LARGE ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+10B3E;LARGE TWO RINGS OVER ONE RING PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+10B3F;LARGE ONE RING OVER TWO RINGS PUNCTUATION;Po;0;ON;;;;;N;;;;; |
+10B40;INSCRIPTIONAL PARTHIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; |
+10B41;INSCRIPTIONAL PARTHIAN LETTER BETH;Lo;0;R;;;;;N;;;;; |
+10B42;INSCRIPTIONAL PARTHIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; |
+10B43;INSCRIPTIONAL PARTHIAN LETTER DALETH;Lo;0;R;;;;;N;;;;; |
+10B44;INSCRIPTIONAL PARTHIAN LETTER HE;Lo;0;R;;;;;N;;;;; |
+10B45;INSCRIPTIONAL PARTHIAN LETTER WAW;Lo;0;R;;;;;N;;;;; |
+10B46;INSCRIPTIONAL PARTHIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;; |
+10B47;INSCRIPTIONAL PARTHIAN LETTER HETH;Lo;0;R;;;;;N;;;;; |
+10B48;INSCRIPTIONAL PARTHIAN LETTER TETH;Lo;0;R;;;;;N;;;;; |
+10B49;INSCRIPTIONAL PARTHIAN LETTER YODH;Lo;0;R;;;;;N;;;;; |
+10B4A;INSCRIPTIONAL PARTHIAN LETTER KAPH;Lo;0;R;;;;;N;;;;; |
+10B4B;INSCRIPTIONAL PARTHIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; |
+10B4C;INSCRIPTIONAL PARTHIAN LETTER MEM;Lo;0;R;;;;;N;;;;; |
+10B4D;INSCRIPTIONAL PARTHIAN LETTER NUN;Lo;0;R;;;;;N;;;;; |
+10B4E;INSCRIPTIONAL PARTHIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; |
+10B4F;INSCRIPTIONAL PARTHIAN LETTER AYIN;Lo;0;R;;;;;N;;;;; |
+10B50;INSCRIPTIONAL PARTHIAN LETTER PE;Lo;0;R;;;;;N;;;;; |
+10B51;INSCRIPTIONAL PARTHIAN LETTER SADHE;Lo;0;R;;;;;N;;;;; |
+10B52;INSCRIPTIONAL PARTHIAN LETTER QOPH;Lo;0;R;;;;;N;;;;; |
+10B53;INSCRIPTIONAL PARTHIAN LETTER RESH;Lo;0;R;;;;;N;;;;; |
+10B54;INSCRIPTIONAL PARTHIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; |
+10B55;INSCRIPTIONAL PARTHIAN LETTER TAW;Lo;0;R;;;;;N;;;;; |
+10B58;INSCRIPTIONAL PARTHIAN NUMBER ONE;No;0;R;;;;1;N;;;;; |
+10B59;INSCRIPTIONAL PARTHIAN NUMBER TWO;No;0;R;;;;2;N;;;;; |
+10B5A;INSCRIPTIONAL PARTHIAN NUMBER THREE;No;0;R;;;;3;N;;;;; |
+10B5B;INSCRIPTIONAL PARTHIAN NUMBER FOUR;No;0;R;;;;4;N;;;;; |
+10B5C;INSCRIPTIONAL PARTHIAN NUMBER TEN;No;0;R;;;;10;N;;;;; |
+10B5D;INSCRIPTIONAL PARTHIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; |
+10B5E;INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; |
+10B5F;INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; |
+10B60;INSCRIPTIONAL PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;; |
+10B61;INSCRIPTIONAL PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;; |
+10B62;INSCRIPTIONAL PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;; |
+10B63;INSCRIPTIONAL PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;; |
+10B64;INSCRIPTIONAL PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;; |
+10B65;INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;; |
+10B66;INSCRIPTIONAL PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;; |
+10B67;INSCRIPTIONAL PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;; |
+10B68;INSCRIPTIONAL PAHLAVI LETTER TETH;Lo;0;R;;;;;N;;;;; |
+10B69;INSCRIPTIONAL PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;; |
+10B6A;INSCRIPTIONAL PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;; |
+10B6B;INSCRIPTIONAL PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;; |
+10B6C;INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;; |
+10B6D;INSCRIPTIONAL PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;; |
+10B6E;INSCRIPTIONAL PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;; |
+10B6F;INSCRIPTIONAL PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;; |
+10B70;INSCRIPTIONAL PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;; |
+10B71;INSCRIPTIONAL PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;; |
+10B72;INSCRIPTIONAL PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;; |
+10B78;INSCRIPTIONAL PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;; |
+10B79;INSCRIPTIONAL PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;; |
+10B7A;INSCRIPTIONAL PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;; |
+10B7B;INSCRIPTIONAL PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;; |
+10B7C;INSCRIPTIONAL PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;; |
+10B7D;INSCRIPTIONAL PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;; |
+10B7E;INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; |
+10B7F;INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; |
+10C00;OLD TURKIC LETTER ORKHON A;Lo;0;R;;;;;N;;;;; |
+10C01;OLD TURKIC LETTER YENISEI A;Lo;0;R;;;;;N;;;;; |
+10C02;OLD TURKIC LETTER YENISEI AE;Lo;0;R;;;;;N;;;;; |
+10C03;OLD TURKIC LETTER ORKHON I;Lo;0;R;;;;;N;;;;; |
+10C04;OLD TURKIC LETTER YENISEI I;Lo;0;R;;;;;N;;;;; |
+10C05;OLD TURKIC LETTER YENISEI E;Lo;0;R;;;;;N;;;;; |
+10C06;OLD TURKIC LETTER ORKHON O;Lo;0;R;;;;;N;;;;; |
+10C07;OLD TURKIC LETTER ORKHON OE;Lo;0;R;;;;;N;;;;; |
+10C08;OLD TURKIC LETTER YENISEI OE;Lo;0;R;;;;;N;;;;; |
+10C09;OLD TURKIC LETTER ORKHON AB;Lo;0;R;;;;;N;;;;; |
+10C0A;OLD TURKIC LETTER YENISEI AB;Lo;0;R;;;;;N;;;;; |
+10C0B;OLD TURKIC LETTER ORKHON AEB;Lo;0;R;;;;;N;;;;; |
+10C0C;OLD TURKIC LETTER YENISEI AEB;Lo;0;R;;;;;N;;;;; |
+10C0D;OLD TURKIC LETTER ORKHON AG;Lo;0;R;;;;;N;;;;; |
+10C0E;OLD TURKIC LETTER YENISEI AG;Lo;0;R;;;;;N;;;;; |
+10C0F;OLD TURKIC LETTER ORKHON AEG;Lo;0;R;;;;;N;;;;; |
+10C10;OLD TURKIC LETTER YENISEI AEG;Lo;0;R;;;;;N;;;;; |
+10C11;OLD TURKIC LETTER ORKHON AD;Lo;0;R;;;;;N;;;;; |
+10C12;OLD TURKIC LETTER YENISEI AD;Lo;0;R;;;;;N;;;;; |
+10C13;OLD TURKIC LETTER ORKHON AED;Lo;0;R;;;;;N;;;;; |
+10C14;OLD TURKIC LETTER ORKHON EZ;Lo;0;R;;;;;N;;;;; |
+10C15;OLD TURKIC LETTER YENISEI EZ;Lo;0;R;;;;;N;;;;; |
+10C16;OLD TURKIC LETTER ORKHON AY;Lo;0;R;;;;;N;;;;; |
+10C17;OLD TURKIC LETTER YENISEI AY;Lo;0;R;;;;;N;;;;; |
+10C18;OLD TURKIC LETTER ORKHON AEY;Lo;0;R;;;;;N;;;;; |
+10C19;OLD TURKIC LETTER YENISEI AEY;Lo;0;R;;;;;N;;;;; |
+10C1A;OLD TURKIC LETTER ORKHON AEK;Lo;0;R;;;;;N;;;;; |
+10C1B;OLD TURKIC LETTER YENISEI AEK;Lo;0;R;;;;;N;;;;; |
+10C1C;OLD TURKIC LETTER ORKHON OEK;Lo;0;R;;;;;N;;;;; |
+10C1D;OLD TURKIC LETTER YENISEI OEK;Lo;0;R;;;;;N;;;;; |
+10C1E;OLD TURKIC LETTER ORKHON AL;Lo;0;R;;;;;N;;;;; |
+10C1F;OLD TURKIC LETTER YENISEI AL;Lo;0;R;;;;;N;;;;; |
+10C20;OLD TURKIC LETTER ORKHON AEL;Lo;0;R;;;;;N;;;;; |
+10C21;OLD TURKIC LETTER ORKHON ELT;Lo;0;R;;;;;N;;;;; |
+10C22;OLD TURKIC LETTER ORKHON EM;Lo;0;R;;;;;N;;;;; |
+10C23;OLD TURKIC LETTER ORKHON AN;Lo;0;R;;;;;N;;;;; |
+10C24;OLD TURKIC LETTER ORKHON AEN;Lo;0;R;;;;;N;;;;; |
+10C25;OLD TURKIC LETTER YENISEI AEN;Lo;0;R;;;;;N;;;;; |
+10C26;OLD TURKIC LETTER ORKHON ENT;Lo;0;R;;;;;N;;;;; |
+10C27;OLD TURKIC LETTER YENISEI ENT;Lo;0;R;;;;;N;;;;; |
+10C28;OLD TURKIC LETTER ORKHON ENC;Lo;0;R;;;;;N;;;;; |
+10C29;OLD TURKIC LETTER YENISEI ENC;Lo;0;R;;;;;N;;;;; |
+10C2A;OLD TURKIC LETTER ORKHON ENY;Lo;0;R;;;;;N;;;;; |
+10C2B;OLD TURKIC LETTER YENISEI ENY;Lo;0;R;;;;;N;;;;; |
+10C2C;OLD TURKIC LETTER YENISEI ANG;Lo;0;R;;;;;N;;;;; |
+10C2D;OLD TURKIC LETTER ORKHON ENG;Lo;0;R;;;;;N;;;;; |
+10C2E;OLD TURKIC LETTER YENISEI AENG;Lo;0;R;;;;;N;;;;; |
+10C2F;OLD TURKIC LETTER ORKHON EP;Lo;0;R;;;;;N;;;;; |
+10C30;OLD TURKIC LETTER ORKHON OP;Lo;0;R;;;;;N;;;;; |
+10C31;OLD TURKIC LETTER ORKHON IC;Lo;0;R;;;;;N;;;;; |
+10C32;OLD TURKIC LETTER ORKHON EC;Lo;0;R;;;;;N;;;;; |
+10C33;OLD TURKIC LETTER YENISEI EC;Lo;0;R;;;;;N;;;;; |
+10C34;OLD TURKIC LETTER ORKHON AQ;Lo;0;R;;;;;N;;;;; |
+10C35;OLD TURKIC LETTER YENISEI AQ;Lo;0;R;;;;;N;;;;; |
+10C36;OLD TURKIC LETTER ORKHON IQ;Lo;0;R;;;;;N;;;;; |
+10C37;OLD TURKIC LETTER YENISEI IQ;Lo;0;R;;;;;N;;;;; |
+10C38;OLD TURKIC LETTER ORKHON OQ;Lo;0;R;;;;;N;;;;; |
+10C39;OLD TURKIC LETTER YENISEI OQ;Lo;0;R;;;;;N;;;;; |
+10C3A;OLD TURKIC LETTER ORKHON AR;Lo;0;R;;;;;N;;;;; |
+10C3B;OLD TURKIC LETTER YENISEI AR;Lo;0;R;;;;;N;;;;; |
+10C3C;OLD TURKIC LETTER ORKHON AER;Lo;0;R;;;;;N;;;;; |
+10C3D;OLD TURKIC LETTER ORKHON AS;Lo;0;R;;;;;N;;;;; |
+10C3E;OLD TURKIC LETTER ORKHON AES;Lo;0;R;;;;;N;;;;; |
+10C3F;OLD TURKIC LETTER ORKHON ASH;Lo;0;R;;;;;N;;;;; |
+10C40;OLD TURKIC LETTER YENISEI ASH;Lo;0;R;;;;;N;;;;; |
+10C41;OLD TURKIC LETTER ORKHON ESH;Lo;0;R;;;;;N;;;;; |
+10C42;OLD TURKIC LETTER YENISEI ESH;Lo;0;R;;;;;N;;;;; |
+10C43;OLD TURKIC LETTER ORKHON AT;Lo;0;R;;;;;N;;;;; |
+10C44;OLD TURKIC LETTER YENISEI AT;Lo;0;R;;;;;N;;;;; |
+10C45;OLD TURKIC LETTER ORKHON AET;Lo;0;R;;;;;N;;;;; |
+10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;; |
+10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;; |
+10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;; |
+10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;; |
+10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;; |
+10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;; |
+10E63;RUMI DIGIT FOUR;No;0;AN;;;4;4;N;;;;; |
+10E64;RUMI DIGIT FIVE;No;0;AN;;;5;5;N;;;;; |
+10E65;RUMI DIGIT SIX;No;0;AN;;;6;6;N;;;;; |
+10E66;RUMI DIGIT SEVEN;No;0;AN;;;7;7;N;;;;; |
+10E67;RUMI DIGIT EIGHT;No;0;AN;;;8;8;N;;;;; |
+10E68;RUMI DIGIT NINE;No;0;AN;;;9;9;N;;;;; |
+10E69;RUMI NUMBER TEN;No;0;AN;;;;10;N;;;;; |
+10E6A;RUMI NUMBER TWENTY;No;0;AN;;;;20;N;;;;; |
+10E6B;RUMI NUMBER THIRTY;No;0;AN;;;;30;N;;;;; |
+10E6C;RUMI NUMBER FORTY;No;0;AN;;;;40;N;;;;; |
+10E6D;RUMI NUMBER FIFTY;No;0;AN;;;;50;N;;;;; |
+10E6E;RUMI NUMBER SIXTY;No;0;AN;;;;60;N;;;;; |
+10E6F;RUMI NUMBER SEVENTY;No;0;AN;;;;70;N;;;;; |
+10E70;RUMI NUMBER EIGHTY;No;0;AN;;;;80;N;;;;; |
+10E71;RUMI NUMBER NINETY;No;0;AN;;;;90;N;;;;; |
+10E72;RUMI NUMBER ONE HUNDRED;No;0;AN;;;;100;N;;;;; |
+10E73;RUMI NUMBER TWO HUNDRED;No;0;AN;;;;200;N;;;;; |
+10E74;RUMI NUMBER THREE HUNDRED;No;0;AN;;;;300;N;;;;; |
+10E75;RUMI NUMBER FOUR HUNDRED;No;0;AN;;;;400;N;;;;; |
+10E76;RUMI NUMBER FIVE HUNDRED;No;0;AN;;;;500;N;;;;; |
+10E77;RUMI NUMBER SIX HUNDRED;No;0;AN;;;;600;N;;;;; |
+10E78;RUMI NUMBER SEVEN HUNDRED;No;0;AN;;;;700;N;;;;; |
+10E79;RUMI NUMBER EIGHT HUNDRED;No;0;AN;;;;800;N;;;;; |
+10E7A;RUMI NUMBER NINE HUNDRED;No;0;AN;;;;900;N;;;;; |
+10E7B;RUMI FRACTION ONE HALF;No;0;AN;;;;1/2;N;;;;; |
+10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;; |
+10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;; |
+10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;; |
+11000;BRAHMI SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; |
+11001;BRAHMI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+11002;BRAHMI SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+11003;BRAHMI SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;; |
+11004;BRAHMI SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;; |
+11005;BRAHMI LETTER A;Lo;0;L;;;;;N;;;;; |
+11006;BRAHMI LETTER AA;Lo;0;L;;;;;N;;;;; |
+11007;BRAHMI LETTER I;Lo;0;L;;;;;N;;;;; |
+11008;BRAHMI LETTER II;Lo;0;L;;;;;N;;;;; |
+11009;BRAHMI LETTER U;Lo;0;L;;;;;N;;;;; |
+1100A;BRAHMI LETTER UU;Lo;0;L;;;;;N;;;;; |
+1100B;BRAHMI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+1100C;BRAHMI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+1100D;BRAHMI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+1100E;BRAHMI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+1100F;BRAHMI LETTER E;Lo;0;L;;;;;N;;;;; |
+11010;BRAHMI LETTER AI;Lo;0;L;;;;;N;;;;; |
+11011;BRAHMI LETTER O;Lo;0;L;;;;;N;;;;; |
+11012;BRAHMI LETTER AU;Lo;0;L;;;;;N;;;;; |
+11013;BRAHMI LETTER KA;Lo;0;L;;;;;N;;;;; |
+11014;BRAHMI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+11015;BRAHMI LETTER GA;Lo;0;L;;;;;N;;;;; |
+11016;BRAHMI LETTER GHA;Lo;0;L;;;;;N;;;;; |
+11017;BRAHMI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+11018;BRAHMI LETTER CA;Lo;0;L;;;;;N;;;;; |
+11019;BRAHMI LETTER CHA;Lo;0;L;;;;;N;;;;; |
+1101A;BRAHMI LETTER JA;Lo;0;L;;;;;N;;;;; |
+1101B;BRAHMI LETTER JHA;Lo;0;L;;;;;N;;;;; |
+1101C;BRAHMI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1101D;BRAHMI LETTER TTA;Lo;0;L;;;;;N;;;;; |
+1101E;BRAHMI LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+1101F;BRAHMI LETTER DDA;Lo;0;L;;;;;N;;;;; |
+11020;BRAHMI LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+11021;BRAHMI LETTER NNA;Lo;0;L;;;;;N;;;;; |
+11022;BRAHMI LETTER TA;Lo;0;L;;;;;N;;;;; |
+11023;BRAHMI LETTER THA;Lo;0;L;;;;;N;;;;; |
+11024;BRAHMI LETTER DA;Lo;0;L;;;;;N;;;;; |
+11025;BRAHMI LETTER DHA;Lo;0;L;;;;;N;;;;; |
+11026;BRAHMI LETTER NA;Lo;0;L;;;;;N;;;;; |
+11027;BRAHMI LETTER PA;Lo;0;L;;;;;N;;;;; |
+11028;BRAHMI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+11029;BRAHMI LETTER BA;Lo;0;L;;;;;N;;;;; |
+1102A;BRAHMI LETTER BHA;Lo;0;L;;;;;N;;;;; |
+1102B;BRAHMI LETTER MA;Lo;0;L;;;;;N;;;;; |
+1102C;BRAHMI LETTER YA;Lo;0;L;;;;;N;;;;; |
+1102D;BRAHMI LETTER RA;Lo;0;L;;;;;N;;;;; |
+1102E;BRAHMI LETTER LA;Lo;0;L;;;;;N;;;;; |
+1102F;BRAHMI LETTER VA;Lo;0;L;;;;;N;;;;; |
+11030;BRAHMI LETTER SHA;Lo;0;L;;;;;N;;;;; |
+11031;BRAHMI LETTER SSA;Lo;0;L;;;;;N;;;;; |
+11032;BRAHMI LETTER SA;Lo;0;L;;;;;N;;;;; |
+11033;BRAHMI LETTER HA;Lo;0;L;;;;;N;;;;; |
+11034;BRAHMI LETTER LLA;Lo;0;L;;;;;N;;;;; |
+11035;BRAHMI LETTER OLD TAMIL LLLA;Lo;0;L;;;;;N;;;;; |
+11036;BRAHMI LETTER OLD TAMIL RRA;Lo;0;L;;;;;N;;;;; |
+11037;BRAHMI LETTER OLD TAMIL NNNA;Lo;0;L;;;;;N;;;;; |
+11038;BRAHMI VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; |
+11039;BRAHMI VOWEL SIGN BHATTIPROLU AA;Mn;0;NSM;;;;;N;;;;; |
+1103A;BRAHMI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+1103B;BRAHMI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+1103C;BRAHMI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1103D;BRAHMI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+1103E;BRAHMI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+1103F;BRAHMI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; |
+11040;BRAHMI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+11041;BRAHMI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+11042;BRAHMI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+11043;BRAHMI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+11044;BRAHMI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+11045;BRAHMI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; |
+11046;BRAHMI VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+11047;BRAHMI DANDA;Po;0;L;;;;;N;;;;; |
+11048;BRAHMI DOUBLE DANDA;Po;0;L;;;;;N;;;;; |
+11049;BRAHMI PUNCTUATION DOT;Po;0;L;;;;;N;;;;; |
+1104A;BRAHMI PUNCTUATION DOUBLE DOT;Po;0;L;;;;;N;;;;; |
+1104B;BRAHMI PUNCTUATION LINE;Po;0;L;;;;;N;;;;; |
+1104C;BRAHMI PUNCTUATION CRESCENT BAR;Po;0;L;;;;;N;;;;; |
+1104D;BRAHMI PUNCTUATION LOTUS;Po;0;L;;;;;N;;;;; |
+11052;BRAHMI NUMBER ONE;No;0;ON;;;1;1;N;;;;; |
+11053;BRAHMI NUMBER TWO;No;0;ON;;;2;2;N;;;;; |
+11054;BRAHMI NUMBER THREE;No;0;ON;;;3;3;N;;;;; |
+11055;BRAHMI NUMBER FOUR;No;0;ON;;;4;4;N;;;;; |
+11056;BRAHMI NUMBER FIVE;No;0;ON;;;5;5;N;;;;; |
+11057;BRAHMI NUMBER SIX;No;0;ON;;;6;6;N;;;;; |
+11058;BRAHMI NUMBER SEVEN;No;0;ON;;;7;7;N;;;;; |
+11059;BRAHMI NUMBER EIGHT;No;0;ON;;;8;8;N;;;;; |
+1105A;BRAHMI NUMBER NINE;No;0;ON;;;9;9;N;;;;; |
+1105B;BRAHMI NUMBER TEN;No;0;ON;;;;10;N;;;;; |
+1105C;BRAHMI NUMBER TWENTY;No;0;ON;;;;20;N;;;;; |
+1105D;BRAHMI NUMBER THIRTY;No;0;ON;;;;30;N;;;;; |
+1105E;BRAHMI NUMBER FORTY;No;0;ON;;;;40;N;;;;; |
+1105F;BRAHMI NUMBER FIFTY;No;0;ON;;;;50;N;;;;; |
+11060;BRAHMI NUMBER SIXTY;No;0;ON;;;;60;N;;;;; |
+11061;BRAHMI NUMBER SEVENTY;No;0;ON;;;;70;N;;;;; |
+11062;BRAHMI NUMBER EIGHTY;No;0;ON;;;;80;N;;;;; |
+11063;BRAHMI NUMBER NINETY;No;0;ON;;;;90;N;;;;; |
+11064;BRAHMI NUMBER ONE HUNDRED;No;0;ON;;;;100;N;;;;; |
+11065;BRAHMI NUMBER ONE THOUSAND;No;0;ON;;;;1000;N;;;;; |
+11066;BRAHMI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+11067;BRAHMI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+11068;BRAHMI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+11069;BRAHMI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1106A;BRAHMI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1106B;BRAHMI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1106C;BRAHMI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1106D;BRAHMI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1106E;BRAHMI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1106F;BRAHMI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; |
+11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+11082;KAITHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+11083;KAITHI LETTER A;Lo;0;L;;;;;N;;;;; |
+11084;KAITHI LETTER AA;Lo;0;L;;;;;N;;;;; |
+11085;KAITHI LETTER I;Lo;0;L;;;;;N;;;;; |
+11086;KAITHI LETTER II;Lo;0;L;;;;;N;;;;; |
+11087;KAITHI LETTER U;Lo;0;L;;;;;N;;;;; |
+11088;KAITHI LETTER UU;Lo;0;L;;;;;N;;;;; |
+11089;KAITHI LETTER E;Lo;0;L;;;;;N;;;;; |
+1108A;KAITHI LETTER AI;Lo;0;L;;;;;N;;;;; |
+1108B;KAITHI LETTER O;Lo;0;L;;;;;N;;;;; |
+1108C;KAITHI LETTER AU;Lo;0;L;;;;;N;;;;; |
+1108D;KAITHI LETTER KA;Lo;0;L;;;;;N;;;;; |
+1108E;KAITHI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1108F;KAITHI LETTER GA;Lo;0;L;;;;;N;;;;; |
+11090;KAITHI LETTER GHA;Lo;0;L;;;;;N;;;;; |
+11091;KAITHI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+11092;KAITHI LETTER CA;Lo;0;L;;;;;N;;;;; |
+11093;KAITHI LETTER CHA;Lo;0;L;;;;;N;;;;; |
+11094;KAITHI LETTER JA;Lo;0;L;;;;;N;;;;; |
+11095;KAITHI LETTER JHA;Lo;0;L;;;;;N;;;;; |
+11096;KAITHI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+11097;KAITHI LETTER TTA;Lo;0;L;;;;;N;;;;; |
+11098;KAITHI LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+11099;KAITHI LETTER DDA;Lo;0;L;;;;;N;;;;; |
+1109A;KAITHI LETTER DDDHA;Lo;0;L;11099 110BA;;;;N;;;;; |
+1109B;KAITHI LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+1109C;KAITHI LETTER RHA;Lo;0;L;1109B 110BA;;;;N;;;;; |
+1109D;KAITHI LETTER NNA;Lo;0;L;;;;;N;;;;; |
+1109E;KAITHI LETTER TA;Lo;0;L;;;;;N;;;;; |
+1109F;KAITHI LETTER THA;Lo;0;L;;;;;N;;;;; |
+110A0;KAITHI LETTER DA;Lo;0;L;;;;;N;;;;; |
+110A1;KAITHI LETTER DHA;Lo;0;L;;;;;N;;;;; |
+110A2;KAITHI LETTER NA;Lo;0;L;;;;;N;;;;; |
+110A3;KAITHI LETTER PA;Lo;0;L;;;;;N;;;;; |
+110A4;KAITHI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+110A5;KAITHI LETTER BA;Lo;0;L;;;;;N;;;;; |
+110A6;KAITHI LETTER BHA;Lo;0;L;;;;;N;;;;; |
+110A7;KAITHI LETTER MA;Lo;0;L;;;;;N;;;;; |
+110A8;KAITHI LETTER YA;Lo;0;L;;;;;N;;;;; |
+110A9;KAITHI LETTER RA;Lo;0;L;;;;;N;;;;; |
+110AA;KAITHI LETTER LA;Lo;0;L;;;;;N;;;;; |
+110AB;KAITHI LETTER VA;Lo;0;L;110A5 110BA;;;;N;;;;; |
+110AC;KAITHI LETTER SHA;Lo;0;L;;;;;N;;;;; |
+110AD;KAITHI LETTER SSA;Lo;0;L;;;;;N;;;;; |
+110AE;KAITHI LETTER SA;Lo;0;L;;;;;N;;;;; |
+110AF;KAITHI LETTER HA;Lo;0;L;;;;;N;;;;; |
+110B0;KAITHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+110B1;KAITHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+110B2;KAITHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+110B3;KAITHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+110B4;KAITHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+110B5;KAITHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+110B6;KAITHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+110B7;KAITHI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+110B8;KAITHI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+110B9;KAITHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+110BA;KAITHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+110BB;KAITHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; |
+110BC;KAITHI ENUMERATION SIGN;Po;0;L;;;;;N;;;;; |
+110BD;KAITHI NUMBER SIGN;Cf;0;L;;;;;N;;;;; |
+110BE;KAITHI SECTION MARK;Po;0;L;;;;;N;;;;; |
+110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; |
+110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;; |
+110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;; |
+110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;; |
+110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;; |
+110D2;SORA SOMPENG LETTER BAH;Lo;0;L;;;;;N;;;;; |
+110D3;SORA SOMPENG LETTER CAH;Lo;0;L;;;;;N;;;;; |
+110D4;SORA SOMPENG LETTER DAH;Lo;0;L;;;;;N;;;;; |
+110D5;SORA SOMPENG LETTER GAH;Lo;0;L;;;;;N;;;;; |
+110D6;SORA SOMPENG LETTER MAH;Lo;0;L;;;;;N;;;;; |
+110D7;SORA SOMPENG LETTER NGAH;Lo;0;L;;;;;N;;;;; |
+110D8;SORA SOMPENG LETTER LAH;Lo;0;L;;;;;N;;;;; |
+110D9;SORA SOMPENG LETTER NAH;Lo;0;L;;;;;N;;;;; |
+110DA;SORA SOMPENG LETTER VAH;Lo;0;L;;;;;N;;;;; |
+110DB;SORA SOMPENG LETTER PAH;Lo;0;L;;;;;N;;;;; |
+110DC;SORA SOMPENG LETTER YAH;Lo;0;L;;;;;N;;;;; |
+110DD;SORA SOMPENG LETTER RAH;Lo;0;L;;;;;N;;;;; |
+110DE;SORA SOMPENG LETTER HAH;Lo;0;L;;;;;N;;;;; |
+110DF;SORA SOMPENG LETTER KAH;Lo;0;L;;;;;N;;;;; |
+110E0;SORA SOMPENG LETTER JAH;Lo;0;L;;;;;N;;;;; |
+110E1;SORA SOMPENG LETTER NYAH;Lo;0;L;;;;;N;;;;; |
+110E2;SORA SOMPENG LETTER AH;Lo;0;L;;;;;N;;;;; |
+110E3;SORA SOMPENG LETTER EEH;Lo;0;L;;;;;N;;;;; |
+110E4;SORA SOMPENG LETTER IH;Lo;0;L;;;;;N;;;;; |
+110E5;SORA SOMPENG LETTER UH;Lo;0;L;;;;;N;;;;; |
+110E6;SORA SOMPENG LETTER OH;Lo;0;L;;;;;N;;;;; |
+110E7;SORA SOMPENG LETTER EH;Lo;0;L;;;;;N;;;;; |
+110E8;SORA SOMPENG LETTER MAE;Lo;0;L;;;;;N;;;;; |
+110F0;SORA SOMPENG DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+110F1;SORA SOMPENG DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+110F2;SORA SOMPENG DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+110F3;SORA SOMPENG DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+110F4;SORA SOMPENG DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+110F5;SORA SOMPENG DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+110F6;SORA SOMPENG DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+110F7;SORA SOMPENG DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+110F8;SORA SOMPENG DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+110F9;SORA SOMPENG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+11100;CHAKMA SIGN CANDRABINDU;Mn;230;NSM;;;;;N;;;;; |
+11101;CHAKMA SIGN ANUSVARA;Mn;230;NSM;;;;;N;;;;; |
+11102;CHAKMA SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; |
+11103;CHAKMA LETTER AA;Lo;0;L;;;;;N;;;;; |
+11104;CHAKMA LETTER I;Lo;0;L;;;;;N;;;;; |
+11105;CHAKMA LETTER U;Lo;0;L;;;;;N;;;;; |
+11106;CHAKMA LETTER E;Lo;0;L;;;;;N;;;;; |
+11107;CHAKMA LETTER KAA;Lo;0;L;;;;;N;;;;; |
+11108;CHAKMA LETTER KHAA;Lo;0;L;;;;;N;;;;; |
+11109;CHAKMA LETTER GAA;Lo;0;L;;;;;N;;;;; |
+1110A;CHAKMA LETTER GHAA;Lo;0;L;;;;;N;;;;; |
+1110B;CHAKMA LETTER NGAA;Lo;0;L;;;;;N;;;;; |
+1110C;CHAKMA LETTER CAA;Lo;0;L;;;;;N;;;;; |
+1110D;CHAKMA LETTER CHAA;Lo;0;L;;;;;N;;;;; |
+1110E;CHAKMA LETTER JAA;Lo;0;L;;;;;N;;;;; |
+1110F;CHAKMA LETTER JHAA;Lo;0;L;;;;;N;;;;; |
+11110;CHAKMA LETTER NYAA;Lo;0;L;;;;;N;;;;; |
+11111;CHAKMA LETTER TTAA;Lo;0;L;;;;;N;;;;; |
+11112;CHAKMA LETTER TTHAA;Lo;0;L;;;;;N;;;;; |
+11113;CHAKMA LETTER DDAA;Lo;0;L;;;;;N;;;;; |
+11114;CHAKMA LETTER DDHAA;Lo;0;L;;;;;N;;;;; |
+11115;CHAKMA LETTER NNAA;Lo;0;L;;;;;N;;;;; |
+11116;CHAKMA LETTER TAA;Lo;0;L;;;;;N;;;;; |
+11117;CHAKMA LETTER THAA;Lo;0;L;;;;;N;;;;; |
+11118;CHAKMA LETTER DAA;Lo;0;L;;;;;N;;;;; |
+11119;CHAKMA LETTER DHAA;Lo;0;L;;;;;N;;;;; |
+1111A;CHAKMA LETTER NAA;Lo;0;L;;;;;N;;;;; |
+1111B;CHAKMA LETTER PAA;Lo;0;L;;;;;N;;;;; |
+1111C;CHAKMA LETTER PHAA;Lo;0;L;;;;;N;;;;; |
+1111D;CHAKMA LETTER BAA;Lo;0;L;;;;;N;;;;; |
+1111E;CHAKMA LETTER BHAA;Lo;0;L;;;;;N;;;;; |
+1111F;CHAKMA LETTER MAA;Lo;0;L;;;;;N;;;;; |
+11120;CHAKMA LETTER YYAA;Lo;0;L;;;;;N;;;;; |
+11121;CHAKMA LETTER YAA;Lo;0;L;;;;;N;;;;; |
+11122;CHAKMA LETTER RAA;Lo;0;L;;;;;N;;;;; |
+11123;CHAKMA LETTER LAA;Lo;0;L;;;;;N;;;;; |
+11124;CHAKMA LETTER WAA;Lo;0;L;;;;;N;;;;; |
+11125;CHAKMA LETTER SAA;Lo;0;L;;;;;N;;;;; |
+11126;CHAKMA LETTER HAA;Lo;0;L;;;;;N;;;;; |
+11127;CHAKMA VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; |
+11128;CHAKMA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; |
+11129;CHAKMA VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; |
+1112A;CHAKMA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+1112B;CHAKMA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+1112C;CHAKMA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+1112D;CHAKMA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+1112E;CHAKMA VOWEL SIGN O;Mn;0;NSM;11131 11127;;;;N;;;;; |
+1112F;CHAKMA VOWEL SIGN AU;Mn;0;NSM;11132 11127;;;;N;;;;; |
+11130;CHAKMA VOWEL SIGN OI;Mn;0;NSM;;;;;N;;;;; |
+11131;CHAKMA O MARK;Mn;0;NSM;;;;;N;;;;; |
+11132;CHAKMA AU MARK;Mn;0;NSM;;;;;N;;;;; |
+11133;CHAKMA VIRAMA;Mn;9;NSM;;;;;N;;;;; |
+11134;CHAKMA MAAYYAA;Mn;9;NSM;;;;;N;;;;; |
+11136;CHAKMA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+11137;CHAKMA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+11138;CHAKMA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+11139;CHAKMA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+1113A;CHAKMA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+1113B;CHAKMA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+1113C;CHAKMA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+1113D;CHAKMA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+1113E;CHAKMA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+1113F;CHAKMA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+11140;CHAKMA SECTION MARK;Po;0;L;;;;;N;;;;; |
+11141;CHAKMA DANDA;Po;0;L;;;;;N;;;;; |
+11142;CHAKMA DOUBLE DANDA;Po;0;L;;;;;N;;;;; |
+11143;CHAKMA QUESTION MARK;Po;0;L;;;;;N;;;;; |
+11180;SHARADA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; |
+11181;SHARADA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+11182;SHARADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+11183;SHARADA LETTER A;Lo;0;L;;;;;N;;;;; |
+11184;SHARADA LETTER AA;Lo;0;L;;;;;N;;;;; |
+11185;SHARADA LETTER I;Lo;0;L;;;;;N;;;;; |
+11186;SHARADA LETTER II;Lo;0;L;;;;;N;;;;; |
+11187;SHARADA LETTER U;Lo;0;L;;;;;N;;;;; |
+11188;SHARADA LETTER UU;Lo;0;L;;;;;N;;;;; |
+11189;SHARADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; |
+1118A;SHARADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; |
+1118B;SHARADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; |
+1118C;SHARADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; |
+1118D;SHARADA LETTER E;Lo;0;L;;;;;N;;;;; |
+1118E;SHARADA LETTER AI;Lo;0;L;;;;;N;;;;; |
+1118F;SHARADA LETTER O;Lo;0;L;;;;;N;;;;; |
+11190;SHARADA LETTER AU;Lo;0;L;;;;;N;;;;; |
+11191;SHARADA LETTER KA;Lo;0;L;;;;;N;;;;; |
+11192;SHARADA LETTER KHA;Lo;0;L;;;;;N;;;;; |
+11193;SHARADA LETTER GA;Lo;0;L;;;;;N;;;;; |
+11194;SHARADA LETTER GHA;Lo;0;L;;;;;N;;;;; |
+11195;SHARADA LETTER NGA;Lo;0;L;;;;;N;;;;; |
+11196;SHARADA LETTER CA;Lo;0;L;;;;;N;;;;; |
+11197;SHARADA LETTER CHA;Lo;0;L;;;;;N;;;;; |
+11198;SHARADA LETTER JA;Lo;0;L;;;;;N;;;;; |
+11199;SHARADA LETTER JHA;Lo;0;L;;;;;N;;;;; |
+1119A;SHARADA LETTER NYA;Lo;0;L;;;;;N;;;;; |
+1119B;SHARADA LETTER TTA;Lo;0;L;;;;;N;;;;; |
+1119C;SHARADA LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+1119D;SHARADA LETTER DDA;Lo;0;L;;;;;N;;;;; |
+1119E;SHARADA LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+1119F;SHARADA LETTER NNA;Lo;0;L;;;;;N;;;;; |
+111A0;SHARADA LETTER TA;Lo;0;L;;;;;N;;;;; |
+111A1;SHARADA LETTER THA;Lo;0;L;;;;;N;;;;; |
+111A2;SHARADA LETTER DA;Lo;0;L;;;;;N;;;;; |
+111A3;SHARADA LETTER DHA;Lo;0;L;;;;;N;;;;; |
+111A4;SHARADA LETTER NA;Lo;0;L;;;;;N;;;;; |
+111A5;SHARADA LETTER PA;Lo;0;L;;;;;N;;;;; |
+111A6;SHARADA LETTER PHA;Lo;0;L;;;;;N;;;;; |
+111A7;SHARADA LETTER BA;Lo;0;L;;;;;N;;;;; |
+111A8;SHARADA LETTER BHA;Lo;0;L;;;;;N;;;;; |
+111A9;SHARADA LETTER MA;Lo;0;L;;;;;N;;;;; |
+111AA;SHARADA LETTER YA;Lo;0;L;;;;;N;;;;; |
+111AB;SHARADA LETTER RA;Lo;0;L;;;;;N;;;;; |
+111AC;SHARADA LETTER LA;Lo;0;L;;;;;N;;;;; |
+111AD;SHARADA LETTER LLA;Lo;0;L;;;;;N;;;;; |
+111AE;SHARADA LETTER VA;Lo;0;L;;;;;N;;;;; |
+111AF;SHARADA LETTER SHA;Lo;0;L;;;;;N;;;;; |
+111B0;SHARADA LETTER SSA;Lo;0;L;;;;;N;;;;; |
+111B1;SHARADA LETTER SA;Lo;0;L;;;;;N;;;;; |
+111B2;SHARADA LETTER HA;Lo;0;L;;;;;N;;;;; |
+111B3;SHARADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+111B4;SHARADA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+111B5;SHARADA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+111B6;SHARADA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+111B7;SHARADA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+111B8;SHARADA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; |
+111B9;SHARADA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; |
+111BA;SHARADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; |
+111BB;SHARADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; |
+111BC;SHARADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+111BD;SHARADA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+111BE;SHARADA VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+111BF;SHARADA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+111C0;SHARADA SIGN VIRAMA;Mc;9;L;;;;;N;;;;; |
+111C1;SHARADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; |
+111C2;SHARADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;; |
+111C3;SHARADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;; |
+111C4;SHARADA OM;Lo;0;L;;;;;N;;;;; |
+111C5;SHARADA DANDA;Po;0;L;;;;;N;;;;; |
+111C6;SHARADA DOUBLE DANDA;Po;0;L;;;;;N;;;;; |
+111C7;SHARADA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; |
+111C8;SHARADA SEPARATOR;Po;0;L;;;;;N;;;;; |
+111D0;SHARADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+111D1;SHARADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+111D2;SHARADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+111D3;SHARADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+111D4;SHARADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+111D5;SHARADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+111D6;SHARADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+111D7;SHARADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+111D8;SHARADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+111D9;SHARADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+11680;TAKRI LETTER A;Lo;0;L;;;;;N;;;;; |
+11681;TAKRI LETTER AA;Lo;0;L;;;;;N;;;;; |
+11682;TAKRI LETTER I;Lo;0;L;;;;;N;;;;; |
+11683;TAKRI LETTER II;Lo;0;L;;;;;N;;;;; |
+11684;TAKRI LETTER U;Lo;0;L;;;;;N;;;;; |
+11685;TAKRI LETTER UU;Lo;0;L;;;;;N;;;;; |
+11686;TAKRI LETTER E;Lo;0;L;;;;;N;;;;; |
+11687;TAKRI LETTER AI;Lo;0;L;;;;;N;;;;; |
+11688;TAKRI LETTER O;Lo;0;L;;;;;N;;;;; |
+11689;TAKRI LETTER AU;Lo;0;L;;;;;N;;;;; |
+1168A;TAKRI LETTER KA;Lo;0;L;;;;;N;;;;; |
+1168B;TAKRI LETTER KHA;Lo;0;L;;;;;N;;;;; |
+1168C;TAKRI LETTER GA;Lo;0;L;;;;;N;;;;; |
+1168D;TAKRI LETTER GHA;Lo;0;L;;;;;N;;;;; |
+1168E;TAKRI LETTER NGA;Lo;0;L;;;;;N;;;;; |
+1168F;TAKRI LETTER CA;Lo;0;L;;;;;N;;;;; |
+11690;TAKRI LETTER CHA;Lo;0;L;;;;;N;;;;; |
+11691;TAKRI LETTER JA;Lo;0;L;;;;;N;;;;; |
+11692;TAKRI LETTER JHA;Lo;0;L;;;;;N;;;;; |
+11693;TAKRI LETTER NYA;Lo;0;L;;;;;N;;;;; |
+11694;TAKRI LETTER TTA;Lo;0;L;;;;;N;;;;; |
+11695;TAKRI LETTER TTHA;Lo;0;L;;;;;N;;;;; |
+11696;TAKRI LETTER DDA;Lo;0;L;;;;;N;;;;; |
+11697;TAKRI LETTER DDHA;Lo;0;L;;;;;N;;;;; |
+11698;TAKRI LETTER NNA;Lo;0;L;;;;;N;;;;; |
+11699;TAKRI LETTER TA;Lo;0;L;;;;;N;;;;; |
+1169A;TAKRI LETTER THA;Lo;0;L;;;;;N;;;;; |
+1169B;TAKRI LETTER DA;Lo;0;L;;;;;N;;;;; |
+1169C;TAKRI LETTER DHA;Lo;0;L;;;;;N;;;;; |
+1169D;TAKRI LETTER NA;Lo;0;L;;;;;N;;;;; |
+1169E;TAKRI LETTER PA;Lo;0;L;;;;;N;;;;; |
+1169F;TAKRI LETTER PHA;Lo;0;L;;;;;N;;;;; |
+116A0;TAKRI LETTER BA;Lo;0;L;;;;;N;;;;; |
+116A1;TAKRI LETTER BHA;Lo;0;L;;;;;N;;;;; |
+116A2;TAKRI LETTER MA;Lo;0;L;;;;;N;;;;; |
+116A3;TAKRI LETTER YA;Lo;0;L;;;;;N;;;;; |
+116A4;TAKRI LETTER RA;Lo;0;L;;;;;N;;;;; |
+116A5;TAKRI LETTER LA;Lo;0;L;;;;;N;;;;; |
+116A6;TAKRI LETTER VA;Lo;0;L;;;;;N;;;;; |
+116A7;TAKRI LETTER SHA;Lo;0;L;;;;;N;;;;; |
+116A8;TAKRI LETTER SA;Lo;0;L;;;;;N;;;;; |
+116A9;TAKRI LETTER HA;Lo;0;L;;;;;N;;;;; |
+116AA;TAKRI LETTER RRA;Lo;0;L;;;;;N;;;;; |
+116AB;TAKRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; |
+116AC;TAKRI SIGN VISARGA;Mc;0;L;;;;;N;;;;; |
+116AD;TAKRI VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; |
+116AE;TAKRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+116AF;TAKRI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+116B0;TAKRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; |
+116B1;TAKRI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; |
+116B2;TAKRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; |
+116B3;TAKRI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; |
+116B4;TAKRI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; |
+116B5;TAKRI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; |
+116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;; |
+116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; |
+116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; |
+116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; |
+116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; |
+116C3;TAKRI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; |
+116C4;TAKRI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; |
+116C5;TAKRI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; |
+116C6;TAKRI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; |
+116C7;TAKRI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; |
+116C8;TAKRI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; |
+116C9;TAKRI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; |
+12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; |
+12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; |
+12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; |
+12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;; |
+12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;; |
+12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;; |
+12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;; |
+12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;; |
+12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;; |
+1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;; |
+1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;; |
+1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; |
+1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;; |
+1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;; |
+12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;; |
+12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;; |
+12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;; |
+12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; |
+12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;; |
+12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;; |
+12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;; |
+12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; |
+1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;; |
+1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;; |
+1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;; |
+1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;; |
+1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;; |
+12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;; |
+12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;; |
+12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;; |
+12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;; |
+12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;; |
+12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;; |
+12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;; |
+12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;; |
+12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;; |
+12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;; |
+1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;; |
+1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;; |
+1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;; |
+1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;; |
+1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;; |
+1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;; |
+12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;; |
+12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;; |
+12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;; |
+12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;; |
+12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;; |
+12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;; |
+12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;; |
+12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;; |
+12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;; |
+12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; |
+1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;; |
+1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;; |
+1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; |
+1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; |
+1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;; |
+1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;; |
+12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;; |
+12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;; |
+12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;; |
+12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;; |
+12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;; |
+12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;; |
+12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;; |
+12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;; |
+12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;; |
+12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;; |
+1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;; |
+1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;; |
+1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;; |
+1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;; |
+1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;; |
+12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;; |
+12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;; |
+12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;; |
+12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;; |
+12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;; |
+12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;; |
+12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;; |
+12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;; |
+12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;; |
+12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;; |
+1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; |
+1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;; |
+1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;; |
+1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;; |
+1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;; |
+1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;; |
+12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;; |
+12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;; |
+12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;; |
+12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;; |
+12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;; |
+12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;; |
+12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;; |
+12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;; |
+12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;; |
+12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; |
+1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;; |
+1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;; |
+1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;; |
+1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;; |
+1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;; |
+12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;; |
+12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;; |
+12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;; |
+12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;; |
+12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;; |
+12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;; |
+12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;; |
+12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;; |
+12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;; |
+12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;; |
+1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;; |
+1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;; |
+1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;; |
+1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;; |
+1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;; |
+1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;; |
+12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;; |
+12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;; |
+12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;; |
+12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;; |
+12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;; |
+12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;; |
+12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;; |
+12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; |
+12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;; |
+12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;; |
+1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;; |
+1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;; |
+1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;; |
+1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;; |
+1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;; |
+1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;; |
+12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;; |
+12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;; |
+12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;; |
+12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;; |
+12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;; |
+12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;; |
+12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;; |
+12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;; |
+12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;; |
+12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;; |
+1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;; |
+1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;; |
+1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;; |
+1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;; |
+1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;; |
+120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;; |
+120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;; |
+120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;; |
+120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; |
+120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;; |
+120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;; |
+120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;; |
+120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; |
+120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; |
+120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;; |
+120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;; |
+120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;; |
+120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;; |
+120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;; |
+120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;; |
+120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;; |
+120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;; |
+120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;; |
+120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;; |
+120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;; |
+120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;; |
+120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;; |
+120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;; |
+120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; |
+120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; |
+120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; |
+120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;; |
+120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;; |
+120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;; |
+120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;; |
+120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;; |
+120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;; |
+120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;; |
+120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;; |
+120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;; |
+120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;; |
+120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;; |
+120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;; |
+120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;; |
+120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;; |
+120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;; |
+120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;; |
+120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;; |
+120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;; |
+120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;; |
+120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;; |
+120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;; |
+120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;; |
+120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;; |
+120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;; |
+120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;; |
+120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;; |
+120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;; |
+120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; |
+120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;; |
+120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;; |
+120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;; |
+120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;; |
+120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; |
+120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;; |
+120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;; |
+120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;; |
+120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;; |
+120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;; |
+120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;; |
+120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;; |
+120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;; |
+120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;; |
+120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;; |
+120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;; |
+120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;; |
+120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;; |
+120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;; |
+120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;; |
+120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;; |
+120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;; |
+120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; |
+120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;; |
+120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; |
+120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;; |
+120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;; |
+120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;; |
+120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;; |
+120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;; |
+120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;; |
+120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;; |
+120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;; |
+120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;; |
+120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;; |
+120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;; |
+12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;; |
+12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;; |
+12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;; |
+12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;; |
+12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;; |
+12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;; |
+12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;; |
+12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;; |
+12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;; |
+12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;; |
+1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;; |
+1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; |
+1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;; |
+1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;; |
+1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;; |
+12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;; |
+12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;; |
+12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; |
+12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;; |
+12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;; |
+12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;; |
+12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;; |
+12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;; |
+12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;; |
+1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;; |
+1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;; |
+1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;; |
+1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;; |
+1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;; |
+12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;; |
+12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;; |
+12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;; |
+12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;; |
+12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;; |
+12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;; |
+12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;; |
+12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;; |
+12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;; |
+12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;; |
+1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;; |
+1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;; |
+1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;; |
+1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;; |
+1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;; |
+1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;; |
+12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;; |
+12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;; |
+12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;; |
+12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;; |
+12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;; |
+12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;; |
+12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;; |
+12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;; |
+12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;; |
+12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;; |
+1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;; |
+1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; |
+1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;; |
+1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;; |
+1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;; |
+1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;; |
+12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;; |
+12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;; |
+12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;; |
+12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;; |
+12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;; |
+12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;; |
+12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;; |
+12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;; |
+12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;; |
+12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;; |
+1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;; |
+1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;; |
+1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;; |
+1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;; |
+1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;; |
+12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;; |
+12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;; |
+12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;; |
+12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;; |
+12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;; |
+12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;; |
+12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;; |
+12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;; |
+12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;; |
+1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;; |
+1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;; |
+1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;; |
+1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;; |
+1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;; |
+1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;; |
+12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;; |
+12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;; |
+12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;; |
+12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;; |
+12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;; |
+12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;; |
+12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;; |
+12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;; |
+12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;; |
+1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; |
+1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;; |
+1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;; |
+1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;; |
+1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;; |
+1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;; |
+12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;; |
+12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;; |
+12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;; |
+12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;; |
+12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;; |
+12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;; |
+12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;; |
+12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;; |
+12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;; |
+12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;; |
+1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;; |
+1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;; |
+1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;; |
+1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;; |
+1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;; |
+1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;; |
+12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;; |
+12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;; |
+12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;; |
+12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;; |
+12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;; |
+12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;; |
+12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;; |
+12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;; |
+12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;; |
+12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;; |
+1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;; |
+1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;; |
+1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;; |
+1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;; |
+1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;; |
+1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;; |
+12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;; |
+12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;; |
+12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;; |
+12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;; |
+12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;; |
+12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;; |
+12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;; |
+12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;; |
+12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;; |
+1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;; |
+1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;; |
+1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;; |
+1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; |
+1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; |
+1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;; |
+121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;; |
+121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;; |
+121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;; |
+121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;; |
+121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;; |
+121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;; |
+121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;; |
+121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;; |
+121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;; |
+121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;; |
+121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;; |
+121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;; |
+121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;; |
+121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;; |
+121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;; |
+121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;; |
+121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;; |
+121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;; |
+121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;; |
+121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;; |
+121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;; |
+121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;; |
+121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;; |
+121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;; |
+121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;; |
+121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;; |
+121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; |
+121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;; |
+121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; |
+121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;; |
+121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;; |
+121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; |
+121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;; |
+121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;; |
+121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;; |
+121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;; |
+121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;; |
+121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;; |
+121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;; |
+121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;; |
+121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;; |
+121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;; |
+121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;; |
+121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;; |
+121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;; |
+121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;; |
+121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;; |
+121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;; |
+121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;; |
+121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;; |
+121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;; |
+121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;; |
+121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;; |
+121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;; |
+121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;; |
+121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;; |
+121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; |
+121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;; |
+121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;; |
+121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; |
+121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;; |
+121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;; |
+121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;; |
+121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;; |
+121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;; |
+121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;; |
+121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;; |
+121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;; |
+121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;; |
+121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; |
+121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; |
+121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;; |
+121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;; |
+121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;; |
+121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;; |
+121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;; |
+121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; |
+121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;; |
+121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;; |
+121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;; |
+121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;; |
+121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;; |
+121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;; |
+121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;; |
+121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;; |
+121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;; |
+121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;; |
+121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;; |
+121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;; |
+121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;; |
+121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;; |
+121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;; |
+121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;; |
+121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;; |
+12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;; |
+12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;; |
+12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;; |
+12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;; |
+12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;; |
+12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;; |
+12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;; |
+12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;; |
+12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;; |
+1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;; |
+1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; |
+1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;; |
+1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;; |
+1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;; |
+1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;; |
+12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;; |
+12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;; |
+12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;; |
+12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;; |
+12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;; |
+12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;; |
+12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;; |
+12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;; |
+12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;; |
+12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;; |
+1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;; |
+1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;; |
+1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;; |
+1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;; |
+1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;; |
+1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;; |
+12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;; |
+12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;; |
+12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;; |
+12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;; |
+12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;; |
+12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;; |
+12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;; |
+12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;; |
+12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;; |
+1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;; |
+1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;; |
+1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;; |
+1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;; |
+1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;; |
+1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;; |
+12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;; |
+12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;; |
+12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;; |
+12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;; |
+12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;; |
+12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;; |
+12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;; |
+12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; |
+12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;; |
+12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;; |
+1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;; |
+1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;; |
+1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;; |
+1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;; |
+1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;; |
+1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;; |
+12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;; |
+12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;; |
+12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;; |
+12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;; |
+12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;; |
+12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;; |
+12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;; |
+12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;; |
+12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;; |
+12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;; |
+1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;; |
+1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;; |
+1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;; |
+1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;; |
+1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;; |
+1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;; |
+12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;; |
+12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;; |
+12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;; |
+12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;; |
+12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;; |
+12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;; |
+12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;; |
+1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;; |
+1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;; |
+1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;; |
+1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;; |
+1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; |
+1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;; |
+12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;; |
+12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;; |
+12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;; |
+12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;; |
+12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;; |
+12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;; |
+12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; |
+12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; |
+12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;; |
+12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;; |
+1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;; |
+1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;; |
+1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;; |
+1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;; |
+1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;; |
+1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;; |
+12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;; |
+12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;; |
+12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;; |
+12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;; |
+12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;; |
+12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;; |
+12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;; |
+12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; |
+12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;; |
+1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;; |
+1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;; |
+1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;; |
+1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;; |
+1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;; |
+1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;; |
+12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;; |
+12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;; |
+12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;; |
+12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;; |
+12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;; |
+12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;; |
+12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;; |
+12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;; |
+12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;; |
+12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;; |
+1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;; |
+1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;; |
+1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;; |
+1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;; |
+1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;; |
+1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;; |
+12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;; |
+12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;; |
+12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;; |
+12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;; |
+12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;; |
+12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;; |
+12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;; |
+12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;; |
+12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;; |
+12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;; |
+1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;; |
+1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;; |
+1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;; |
+1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;; |
+1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;; |
+1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;; |
+122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;; |
+122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;; |
+122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;; |
+122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;; |
+122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;; |
+122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;; |
+122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;; |
+122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;; |
+122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;; |
+122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;; |
+122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;; |
+122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;; |
+122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;; |
+122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;; |
+122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;; |
+122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;; |
+122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;; |
+122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;; |
+122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;; |
+122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;; |
+122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;; |
+122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;; |
+122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;; |
+122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;; |
+122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;; |
+122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;; |
+122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;; |
+122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;; |
+122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; |
+122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;; |
+122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;; |
+122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;; |
+122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;; |
+122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;; |
+122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;; |
+122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;; |
+122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;; |
+122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;; |
+122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;; |
+122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;; |
+122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;; |
+122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;; |
+122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;; |
+122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;; |
+122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;; |
+122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; |
+122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;; |
+122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;; |
+122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;; |
+122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;; |
+122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;; |
+122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;; |
+122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;; |
+122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;; |
+122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;; |
+122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;; |
+122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;; |
+122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;; |
+122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;; |
+122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;; |
+122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;; |
+122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;; |
+122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;; |
+122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;; |
+122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;; |
+122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;; |
+122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;; |
+122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;; |
+122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;; |
+122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;; |
+122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;; |
+122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;; |
+122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;; |
+122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;; |
+122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;; |
+122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;; |
+122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;; |
+122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;; |
+122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;; |
+122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;; |
+122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;; |
+122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;; |
+122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;; |
+122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;; |
+122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;; |
+122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;; |
+122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;; |
+122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;; |
+122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;; |
+122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;; |
+122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;; |
+122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;; |
+122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;; |
+122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;; |
+122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;; |
+122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;; |
+12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;; |
+12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;; |
+12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;; |
+12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; |
+12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;; |
+12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;; |
+12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;; |
+12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;; |
+12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;; |
+1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;; |
+1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;; |
+1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;; |
+1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;; |
+1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;; |
+1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;; |
+12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;; |
+12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;; |
+12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;; |
+12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;; |
+12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;; |
+12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;; |
+12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;; |
+12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; |
+12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;; |
+12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;; |
+1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;; |
+1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;; |
+1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;; |
+1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;; |
+1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;; |
+1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;; |
+12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;; |
+12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;; |
+12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;; |
+12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;; |
+12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;; |
+12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;; |
+12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;; |
+12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;; |
+12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;; |
+12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;; |
+1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;; |
+1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;; |
+1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; |
+1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; |
+1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;; |
+1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;; |
+12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;; |
+12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;; |
+12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; |
+12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;; |
+12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;; |
+12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;; |
+12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;; |
+12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;; |
+12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;; |
+12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;; |
+1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;; |
+1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;; |
+1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;; |
+1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;; |
+1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; |
+1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;; |
+12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;; |
+12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;; |
+12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;; |
+12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;; |
+12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;; |
+12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;; |
+12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;; |
+12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;; |
+12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;; |
+12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;; |
+1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;; |
+1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;; |
+1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;; |
+1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;; |
+1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;; |
+1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;; |
+12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;; |
+12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;; |
+12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;; |
+12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;; |
+12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;; |
+12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;; |
+12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;; |
+12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;; |
+12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;; |
+12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;; |
+1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;; |
+1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;; |
+1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;; |
+1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;; |
+1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;; |
+1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;; |
+12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;; |
+12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;; |
+12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;; |
+12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;; |
+12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;; |
+12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;; |
+12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;; |
+12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;; |
+12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;; |
+12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;; |
+1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;; |
+1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;; |
+1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;; |
+1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;; |
+1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;; |
+12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; |
+12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; |
+12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; |
+12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;; |
+12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;; |
+12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;; |
+12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;; |
+12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;; |
+12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;; |
+12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;; |
+1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;; |
+1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;; |
+1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;; |
+1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;; |
+1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;; |
+1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;; |
+12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;; |
+12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;; |
+12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;; |
+12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;; |
+12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;; |
+12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;; |
+12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;; |
+12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;; |
+12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;; |
+12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;; |
+1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;; |
+1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;; |
+1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;; |
+1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;; |
+1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;; |
+1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;; |
+12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;; |
+12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;; |
+12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;; |
+12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;; |
+12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;; |
+12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;; |
+12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;; |
+12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;; |
+12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;; |
+12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;; |
+1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;; |
+1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;; |
+1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;; |
+1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;; |
+1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;; |
+1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; |
+12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; |
+12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; |
+12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;216000;N;;;;; |
+12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;432000;N;;;;; |
+12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; |
+12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; |
+12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; |
+12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;; |
+12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;; |
+12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;; |
+1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;; |
+1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;; |
+1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;; |
+1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;; |
+1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;; |
+1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;; |
+12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;; |
+12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;; |
+12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;; |
+12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;; |
+12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;; |
+12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;; |
+12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;; |
+12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;; |
+12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;; |
+12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;; |
+1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;; |
+1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;; |
+1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;; |
+1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;; |
+1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;; |
+1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;; |
+12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;; |
+12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;; |
+12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;; |
+12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; |
+12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; |
+12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; |
+12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;-1;N;;;;; |
+12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;-1;N;;;;; |
+12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; |
+12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; |
+1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; |
+1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;; |
+1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;; |
+1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;; |
+1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;; |
+1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;; |
+12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;; |
+12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;; |
+12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;; |
+12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; |
+12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;; |
+12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; |
+12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; |
+13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; |
+13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; |
+13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; |
+13003;EGYPTIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;; |
+13004;EGYPTIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;; |
+13005;EGYPTIAN HIEROGLYPH A005A;Lo;0;L;;;;;N;;;;; |
+13006;EGYPTIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;; |
+13007;EGYPTIAN HIEROGLYPH A006A;Lo;0;L;;;;;N;;;;; |
+13008;EGYPTIAN HIEROGLYPH A006B;Lo;0;L;;;;;N;;;;; |
+13009;EGYPTIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;; |
+1300A;EGYPTIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;; |
+1300B;EGYPTIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;; |
+1300C;EGYPTIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;; |
+1300D;EGYPTIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;; |
+1300E;EGYPTIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;; |
+1300F;EGYPTIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;; |
+13010;EGYPTIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;; |
+13011;EGYPTIAN HIEROGLYPH A014A;Lo;0;L;;;;;N;;;;; |
+13012;EGYPTIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;; |
+13013;EGYPTIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;; |
+13014;EGYPTIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;; |
+13015;EGYPTIAN HIEROGLYPH A017A;Lo;0;L;;;;;N;;;;; |
+13016;EGYPTIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;; |
+13017;EGYPTIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;; |
+13018;EGYPTIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;; |
+13019;EGYPTIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;; |
+1301A;EGYPTIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;; |
+1301B;EGYPTIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;; |
+1301C;EGYPTIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;; |
+1301D;EGYPTIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;; |
+1301E;EGYPTIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;; |
+1301F;EGYPTIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;; |
+13020;EGYPTIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;; |
+13021;EGYPTIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;; |
+13022;EGYPTIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;; |
+13023;EGYPTIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;; |
+13024;EGYPTIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;; |
+13025;EGYPTIAN HIEROGLYPH A032A;Lo;0;L;;;;;N;;;;; |
+13026;EGYPTIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;; |
+13027;EGYPTIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;; |
+13028;EGYPTIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;; |
+13029;EGYPTIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;; |
+1302A;EGYPTIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;; |
+1302B;EGYPTIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;; |
+1302C;EGYPTIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;; |
+1302D;EGYPTIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;; |
+1302E;EGYPTIAN HIEROGLYPH A040A;Lo;0;L;;;;;N;;;;; |
+1302F;EGYPTIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;; |
+13030;EGYPTIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;; |
+13031;EGYPTIAN HIEROGLYPH A042A;Lo;0;L;;;;;N;;;;; |
+13032;EGYPTIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;; |
+13033;EGYPTIAN HIEROGLYPH A043A;Lo;0;L;;;;;N;;;;; |
+13034;EGYPTIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;; |
+13035;EGYPTIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;; |
+13036;EGYPTIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;; |
+13037;EGYPTIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;; |
+13038;EGYPTIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;; |
+13039;EGYPTIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;; |
+1303A;EGYPTIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;; |
+1303B;EGYPTIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;; |
+1303C;EGYPTIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;; |
+1303D;EGYPTIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;; |
+1303E;EGYPTIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;; |
+1303F;EGYPTIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;; |
+13040;EGYPTIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;; |
+13041;EGYPTIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;; |
+13042;EGYPTIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;; |
+13043;EGYPTIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;; |
+13044;EGYPTIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;; |
+13045;EGYPTIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;; |
+13046;EGYPTIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;; |
+13047;EGYPTIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;; |
+13048;EGYPTIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;; |
+13049;EGYPTIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;; |
+1304A;EGYPTIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;; |
+1304B;EGYPTIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;; |
+1304C;EGYPTIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;; |
+1304D;EGYPTIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;; |
+1304E;EGYPTIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;; |
+1304F;EGYPTIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;; |
+13050;EGYPTIAN HIEROGLYPH B001;Lo;0;L;;;;;N;;;;; |
+13051;EGYPTIAN HIEROGLYPH B002;Lo;0;L;;;;;N;;;;; |
+13052;EGYPTIAN HIEROGLYPH B003;Lo;0;L;;;;;N;;;;; |
+13053;EGYPTIAN HIEROGLYPH B004;Lo;0;L;;;;;N;;;;; |
+13054;EGYPTIAN HIEROGLYPH B005;Lo;0;L;;;;;N;;;;; |
+13055;EGYPTIAN HIEROGLYPH B005A;Lo;0;L;;;;;N;;;;; |
+13056;EGYPTIAN HIEROGLYPH B006;Lo;0;L;;;;;N;;;;; |
+13057;EGYPTIAN HIEROGLYPH B007;Lo;0;L;;;;;N;;;;; |
+13058;EGYPTIAN HIEROGLYPH B008;Lo;0;L;;;;;N;;;;; |
+13059;EGYPTIAN HIEROGLYPH B009;Lo;0;L;;;;;N;;;;; |
+1305A;EGYPTIAN HIEROGLYPH C001;Lo;0;L;;;;;N;;;;; |
+1305B;EGYPTIAN HIEROGLYPH C002;Lo;0;L;;;;;N;;;;; |
+1305C;EGYPTIAN HIEROGLYPH C002A;Lo;0;L;;;;;N;;;;; |
+1305D;EGYPTIAN HIEROGLYPH C002B;Lo;0;L;;;;;N;;;;; |
+1305E;EGYPTIAN HIEROGLYPH C002C;Lo;0;L;;;;;N;;;;; |
+1305F;EGYPTIAN HIEROGLYPH C003;Lo;0;L;;;;;N;;;;; |
+13060;EGYPTIAN HIEROGLYPH C004;Lo;0;L;;;;;N;;;;; |
+13061;EGYPTIAN HIEROGLYPH C005;Lo;0;L;;;;;N;;;;; |
+13062;EGYPTIAN HIEROGLYPH C006;Lo;0;L;;;;;N;;;;; |
+13063;EGYPTIAN HIEROGLYPH C007;Lo;0;L;;;;;N;;;;; |
+13064;EGYPTIAN HIEROGLYPH C008;Lo;0;L;;;;;N;;;;; |
+13065;EGYPTIAN HIEROGLYPH C009;Lo;0;L;;;;;N;;;;; |
+13066;EGYPTIAN HIEROGLYPH C010;Lo;0;L;;;;;N;;;;; |
+13067;EGYPTIAN HIEROGLYPH C010A;Lo;0;L;;;;;N;;;;; |
+13068;EGYPTIAN HIEROGLYPH C011;Lo;0;L;;;;;N;;;;; |
+13069;EGYPTIAN HIEROGLYPH C012;Lo;0;L;;;;;N;;;;; |
+1306A;EGYPTIAN HIEROGLYPH C013;Lo;0;L;;;;;N;;;;; |
+1306B;EGYPTIAN HIEROGLYPH C014;Lo;0;L;;;;;N;;;;; |
+1306C;EGYPTIAN HIEROGLYPH C015;Lo;0;L;;;;;N;;;;; |
+1306D;EGYPTIAN HIEROGLYPH C016;Lo;0;L;;;;;N;;;;; |
+1306E;EGYPTIAN HIEROGLYPH C017;Lo;0;L;;;;;N;;;;; |
+1306F;EGYPTIAN HIEROGLYPH C018;Lo;0;L;;;;;N;;;;; |
+13070;EGYPTIAN HIEROGLYPH C019;Lo;0;L;;;;;N;;;;; |
+13071;EGYPTIAN HIEROGLYPH C020;Lo;0;L;;;;;N;;;;; |
+13072;EGYPTIAN HIEROGLYPH C021;Lo;0;L;;;;;N;;;;; |
+13073;EGYPTIAN HIEROGLYPH C022;Lo;0;L;;;;;N;;;;; |
+13074;EGYPTIAN HIEROGLYPH C023;Lo;0;L;;;;;N;;;;; |
+13075;EGYPTIAN HIEROGLYPH C024;Lo;0;L;;;;;N;;;;; |
+13076;EGYPTIAN HIEROGLYPH D001;Lo;0;L;;;;;N;;;;; |
+13077;EGYPTIAN HIEROGLYPH D002;Lo;0;L;;;;;N;;;;; |
+13078;EGYPTIAN HIEROGLYPH D003;Lo;0;L;;;;;N;;;;; |
+13079;EGYPTIAN HIEROGLYPH D004;Lo;0;L;;;;;N;;;;; |
+1307A;EGYPTIAN HIEROGLYPH D005;Lo;0;L;;;;;N;;;;; |
+1307B;EGYPTIAN HIEROGLYPH D006;Lo;0;L;;;;;N;;;;; |
+1307C;EGYPTIAN HIEROGLYPH D007;Lo;0;L;;;;;N;;;;; |
+1307D;EGYPTIAN HIEROGLYPH D008;Lo;0;L;;;;;N;;;;; |
+1307E;EGYPTIAN HIEROGLYPH D008A;Lo;0;L;;;;;N;;;;; |
+1307F;EGYPTIAN HIEROGLYPH D009;Lo;0;L;;;;;N;;;;; |
+13080;EGYPTIAN HIEROGLYPH D010;Lo;0;L;;;;;N;;;;; |
+13081;EGYPTIAN HIEROGLYPH D011;Lo;0;L;;;;;N;;;;; |
+13082;EGYPTIAN HIEROGLYPH D012;Lo;0;L;;;;;N;;;;; |
+13083;EGYPTIAN HIEROGLYPH D013;Lo;0;L;;;;;N;;;;; |
+13084;EGYPTIAN HIEROGLYPH D014;Lo;0;L;;;;;N;;;;; |
+13085;EGYPTIAN HIEROGLYPH D015;Lo;0;L;;;;;N;;;;; |
+13086;EGYPTIAN HIEROGLYPH D016;Lo;0;L;;;;;N;;;;; |
+13087;EGYPTIAN HIEROGLYPH D017;Lo;0;L;;;;;N;;;;; |
+13088;EGYPTIAN HIEROGLYPH D018;Lo;0;L;;;;;N;;;;; |
+13089;EGYPTIAN HIEROGLYPH D019;Lo;0;L;;;;;N;;;;; |
+1308A;EGYPTIAN HIEROGLYPH D020;Lo;0;L;;;;;N;;;;; |
+1308B;EGYPTIAN HIEROGLYPH D021;Lo;0;L;;;;;N;;;;; |
+1308C;EGYPTIAN HIEROGLYPH D022;Lo;0;L;;;;;N;;;;; |
+1308D;EGYPTIAN HIEROGLYPH D023;Lo;0;L;;;;;N;;;;; |
+1308E;EGYPTIAN HIEROGLYPH D024;Lo;0;L;;;;;N;;;;; |
+1308F;EGYPTIAN HIEROGLYPH D025;Lo;0;L;;;;;N;;;;; |
+13090;EGYPTIAN HIEROGLYPH D026;Lo;0;L;;;;;N;;;;; |
+13091;EGYPTIAN HIEROGLYPH D027;Lo;0;L;;;;;N;;;;; |
+13092;EGYPTIAN HIEROGLYPH D027A;Lo;0;L;;;;;N;;;;; |
+13093;EGYPTIAN HIEROGLYPH D028;Lo;0;L;;;;;N;;;;; |
+13094;EGYPTIAN HIEROGLYPH D029;Lo;0;L;;;;;N;;;;; |
+13095;EGYPTIAN HIEROGLYPH D030;Lo;0;L;;;;;N;;;;; |
+13096;EGYPTIAN HIEROGLYPH D031;Lo;0;L;;;;;N;;;;; |
+13097;EGYPTIAN HIEROGLYPH D031A;Lo;0;L;;;;;N;;;;; |
+13098;EGYPTIAN HIEROGLYPH D032;Lo;0;L;;;;;N;;;;; |
+13099;EGYPTIAN HIEROGLYPH D033;Lo;0;L;;;;;N;;;;; |
+1309A;EGYPTIAN HIEROGLYPH D034;Lo;0;L;;;;;N;;;;; |
+1309B;EGYPTIAN HIEROGLYPH D034A;Lo;0;L;;;;;N;;;;; |
+1309C;EGYPTIAN HIEROGLYPH D035;Lo;0;L;;;;;N;;;;; |
+1309D;EGYPTIAN HIEROGLYPH D036;Lo;0;L;;;;;N;;;;; |
+1309E;EGYPTIAN HIEROGLYPH D037;Lo;0;L;;;;;N;;;;; |
+1309F;EGYPTIAN HIEROGLYPH D038;Lo;0;L;;;;;N;;;;; |
+130A0;EGYPTIAN HIEROGLYPH D039;Lo;0;L;;;;;N;;;;; |
+130A1;EGYPTIAN HIEROGLYPH D040;Lo;0;L;;;;;N;;;;; |
+130A2;EGYPTIAN HIEROGLYPH D041;Lo;0;L;;;;;N;;;;; |
+130A3;EGYPTIAN HIEROGLYPH D042;Lo;0;L;;;;;N;;;;; |
+130A4;EGYPTIAN HIEROGLYPH D043;Lo;0;L;;;;;N;;;;; |
+130A5;EGYPTIAN HIEROGLYPH D044;Lo;0;L;;;;;N;;;;; |
+130A6;EGYPTIAN HIEROGLYPH D045;Lo;0;L;;;;;N;;;;; |
+130A7;EGYPTIAN HIEROGLYPH D046;Lo;0;L;;;;;N;;;;; |
+130A8;EGYPTIAN HIEROGLYPH D046A;Lo;0;L;;;;;N;;;;; |
+130A9;EGYPTIAN HIEROGLYPH D047;Lo;0;L;;;;;N;;;;; |
+130AA;EGYPTIAN HIEROGLYPH D048;Lo;0;L;;;;;N;;;;; |
+130AB;EGYPTIAN HIEROGLYPH D048A;Lo;0;L;;;;;N;;;;; |
+130AC;EGYPTIAN HIEROGLYPH D049;Lo;0;L;;;;;N;;;;; |
+130AD;EGYPTIAN HIEROGLYPH D050;Lo;0;L;;;;;N;;;;; |
+130AE;EGYPTIAN HIEROGLYPH D050A;Lo;0;L;;;;;N;;;;; |
+130AF;EGYPTIAN HIEROGLYPH D050B;Lo;0;L;;;;;N;;;;; |
+130B0;EGYPTIAN HIEROGLYPH D050C;Lo;0;L;;;;;N;;;;; |
+130B1;EGYPTIAN HIEROGLYPH D050D;Lo;0;L;;;;;N;;;;; |
+130B2;EGYPTIAN HIEROGLYPH D050E;Lo;0;L;;;;;N;;;;; |
+130B3;EGYPTIAN HIEROGLYPH D050F;Lo;0;L;;;;;N;;;;; |
+130B4;EGYPTIAN HIEROGLYPH D050G;Lo;0;L;;;;;N;;;;; |
+130B5;EGYPTIAN HIEROGLYPH D050H;Lo;0;L;;;;;N;;;;; |
+130B6;EGYPTIAN HIEROGLYPH D050I;Lo;0;L;;;;;N;;;;; |
+130B7;EGYPTIAN HIEROGLYPH D051;Lo;0;L;;;;;N;;;;; |
+130B8;EGYPTIAN HIEROGLYPH D052;Lo;0;L;;;;;N;;;;; |
+130B9;EGYPTIAN HIEROGLYPH D052A;Lo;0;L;;;;;N;;;;; |
+130BA;EGYPTIAN HIEROGLYPH D053;Lo;0;L;;;;;N;;;;; |
+130BB;EGYPTIAN HIEROGLYPH D054;Lo;0;L;;;;;N;;;;; |
+130BC;EGYPTIAN HIEROGLYPH D054A;Lo;0;L;;;;;N;;;;; |
+130BD;EGYPTIAN HIEROGLYPH D055;Lo;0;L;;;;;N;;;;; |
+130BE;EGYPTIAN HIEROGLYPH D056;Lo;0;L;;;;;N;;;;; |
+130BF;EGYPTIAN HIEROGLYPH D057;Lo;0;L;;;;;N;;;;; |
+130C0;EGYPTIAN HIEROGLYPH D058;Lo;0;L;;;;;N;;;;; |
+130C1;EGYPTIAN HIEROGLYPH D059;Lo;0;L;;;;;N;;;;; |
+130C2;EGYPTIAN HIEROGLYPH D060;Lo;0;L;;;;;N;;;;; |
+130C3;EGYPTIAN HIEROGLYPH D061;Lo;0;L;;;;;N;;;;; |
+130C4;EGYPTIAN HIEROGLYPH D062;Lo;0;L;;;;;N;;;;; |
+130C5;EGYPTIAN HIEROGLYPH D063;Lo;0;L;;;;;N;;;;; |
+130C6;EGYPTIAN HIEROGLYPH D064;Lo;0;L;;;;;N;;;;; |
+130C7;EGYPTIAN HIEROGLYPH D065;Lo;0;L;;;;;N;;;;; |
+130C8;EGYPTIAN HIEROGLYPH D066;Lo;0;L;;;;;N;;;;; |
+130C9;EGYPTIAN HIEROGLYPH D067;Lo;0;L;;;;;N;;;;; |
+130CA;EGYPTIAN HIEROGLYPH D067A;Lo;0;L;;;;;N;;;;; |
+130CB;EGYPTIAN HIEROGLYPH D067B;Lo;0;L;;;;;N;;;;; |
+130CC;EGYPTIAN HIEROGLYPH D067C;Lo;0;L;;;;;N;;;;; |
+130CD;EGYPTIAN HIEROGLYPH D067D;Lo;0;L;;;;;N;;;;; |
+130CE;EGYPTIAN HIEROGLYPH D067E;Lo;0;L;;;;;N;;;;; |
+130CF;EGYPTIAN HIEROGLYPH D067F;Lo;0;L;;;;;N;;;;; |
+130D0;EGYPTIAN HIEROGLYPH D067G;Lo;0;L;;;;;N;;;;; |
+130D1;EGYPTIAN HIEROGLYPH D067H;Lo;0;L;;;;;N;;;;; |
+130D2;EGYPTIAN HIEROGLYPH E001;Lo;0;L;;;;;N;;;;; |
+130D3;EGYPTIAN HIEROGLYPH E002;Lo;0;L;;;;;N;;;;; |
+130D4;EGYPTIAN HIEROGLYPH E003;Lo;0;L;;;;;N;;;;; |
+130D5;EGYPTIAN HIEROGLYPH E004;Lo;0;L;;;;;N;;;;; |
+130D6;EGYPTIAN HIEROGLYPH E005;Lo;0;L;;;;;N;;;;; |
+130D7;EGYPTIAN HIEROGLYPH E006;Lo;0;L;;;;;N;;;;; |
+130D8;EGYPTIAN HIEROGLYPH E007;Lo;0;L;;;;;N;;;;; |
+130D9;EGYPTIAN HIEROGLYPH E008;Lo;0;L;;;;;N;;;;; |
+130DA;EGYPTIAN HIEROGLYPH E008A;Lo;0;L;;;;;N;;;;; |
+130DB;EGYPTIAN HIEROGLYPH E009;Lo;0;L;;;;;N;;;;; |
+130DC;EGYPTIAN HIEROGLYPH E009A;Lo;0;L;;;;;N;;;;; |
+130DD;EGYPTIAN HIEROGLYPH E010;Lo;0;L;;;;;N;;;;; |
+130DE;EGYPTIAN HIEROGLYPH E011;Lo;0;L;;;;;N;;;;; |
+130DF;EGYPTIAN HIEROGLYPH E012;Lo;0;L;;;;;N;;;;; |
+130E0;EGYPTIAN HIEROGLYPH E013;Lo;0;L;;;;;N;;;;; |
+130E1;EGYPTIAN HIEROGLYPH E014;Lo;0;L;;;;;N;;;;; |
+130E2;EGYPTIAN HIEROGLYPH E015;Lo;0;L;;;;;N;;;;; |
+130E3;EGYPTIAN HIEROGLYPH E016;Lo;0;L;;;;;N;;;;; |
+130E4;EGYPTIAN HIEROGLYPH E016A;Lo;0;L;;;;;N;;;;; |
+130E5;EGYPTIAN HIEROGLYPH E017;Lo;0;L;;;;;N;;;;; |
+130E6;EGYPTIAN HIEROGLYPH E017A;Lo;0;L;;;;;N;;;;; |
+130E7;EGYPTIAN HIEROGLYPH E018;Lo;0;L;;;;;N;;;;; |
+130E8;EGYPTIAN HIEROGLYPH E019;Lo;0;L;;;;;N;;;;; |
+130E9;EGYPTIAN HIEROGLYPH E020;Lo;0;L;;;;;N;;;;; |
+130EA;EGYPTIAN HIEROGLYPH E020A;Lo;0;L;;;;;N;;;;; |
+130EB;EGYPTIAN HIEROGLYPH E021;Lo;0;L;;;;;N;;;;; |
+130EC;EGYPTIAN HIEROGLYPH E022;Lo;0;L;;;;;N;;;;; |
+130ED;EGYPTIAN HIEROGLYPH E023;Lo;0;L;;;;;N;;;;; |
+130EE;EGYPTIAN HIEROGLYPH E024;Lo;0;L;;;;;N;;;;; |
+130EF;EGYPTIAN HIEROGLYPH E025;Lo;0;L;;;;;N;;;;; |
+130F0;EGYPTIAN HIEROGLYPH E026;Lo;0;L;;;;;N;;;;; |
+130F1;EGYPTIAN HIEROGLYPH E027;Lo;0;L;;;;;N;;;;; |
+130F2;EGYPTIAN HIEROGLYPH E028;Lo;0;L;;;;;N;;;;; |
+130F3;EGYPTIAN HIEROGLYPH E028A;Lo;0;L;;;;;N;;;;; |
+130F4;EGYPTIAN HIEROGLYPH E029;Lo;0;L;;;;;N;;;;; |
+130F5;EGYPTIAN HIEROGLYPH E030;Lo;0;L;;;;;N;;;;; |
+130F6;EGYPTIAN HIEROGLYPH E031;Lo;0;L;;;;;N;;;;; |
+130F7;EGYPTIAN HIEROGLYPH E032;Lo;0;L;;;;;N;;;;; |
+130F8;EGYPTIAN HIEROGLYPH E033;Lo;0;L;;;;;N;;;;; |
+130F9;EGYPTIAN HIEROGLYPH E034;Lo;0;L;;;;;N;;;;; |
+130FA;EGYPTIAN HIEROGLYPH E034A;Lo;0;L;;;;;N;;;;; |
+130FB;EGYPTIAN HIEROGLYPH E036;Lo;0;L;;;;;N;;;;; |
+130FC;EGYPTIAN HIEROGLYPH E037;Lo;0;L;;;;;N;;;;; |
+130FD;EGYPTIAN HIEROGLYPH E038;Lo;0;L;;;;;N;;;;; |
+130FE;EGYPTIAN HIEROGLYPH F001;Lo;0;L;;;;;N;;;;; |
+130FF;EGYPTIAN HIEROGLYPH F001A;Lo;0;L;;;;;N;;;;; |
+13100;EGYPTIAN HIEROGLYPH F002;Lo;0;L;;;;;N;;;;; |
+13101;EGYPTIAN HIEROGLYPH F003;Lo;0;L;;;;;N;;;;; |
+13102;EGYPTIAN HIEROGLYPH F004;Lo;0;L;;;;;N;;;;; |
+13103;EGYPTIAN HIEROGLYPH F005;Lo;0;L;;;;;N;;;;; |
+13104;EGYPTIAN HIEROGLYPH F006;Lo;0;L;;;;;N;;;;; |
+13105;EGYPTIAN HIEROGLYPH F007;Lo;0;L;;;;;N;;;;; |
+13106;EGYPTIAN HIEROGLYPH F008;Lo;0;L;;;;;N;;;;; |
+13107;EGYPTIAN HIEROGLYPH F009;Lo;0;L;;;;;N;;;;; |
+13108;EGYPTIAN HIEROGLYPH F010;Lo;0;L;;;;;N;;;;; |
+13109;EGYPTIAN HIEROGLYPH F011;Lo;0;L;;;;;N;;;;; |
+1310A;EGYPTIAN HIEROGLYPH F012;Lo;0;L;;;;;N;;;;; |
+1310B;EGYPTIAN HIEROGLYPH F013;Lo;0;L;;;;;N;;;;; |
+1310C;EGYPTIAN HIEROGLYPH F013A;Lo;0;L;;;;;N;;;;; |
+1310D;EGYPTIAN HIEROGLYPH F014;Lo;0;L;;;;;N;;;;; |
+1310E;EGYPTIAN HIEROGLYPH F015;Lo;0;L;;;;;N;;;;; |
+1310F;EGYPTIAN HIEROGLYPH F016;Lo;0;L;;;;;N;;;;; |
+13110;EGYPTIAN HIEROGLYPH F017;Lo;0;L;;;;;N;;;;; |
+13111;EGYPTIAN HIEROGLYPH F018;Lo;0;L;;;;;N;;;;; |
+13112;EGYPTIAN HIEROGLYPH F019;Lo;0;L;;;;;N;;;;; |
+13113;EGYPTIAN HIEROGLYPH F020;Lo;0;L;;;;;N;;;;; |
+13114;EGYPTIAN HIEROGLYPH F021;Lo;0;L;;;;;N;;;;; |
+13115;EGYPTIAN HIEROGLYPH F021A;Lo;0;L;;;;;N;;;;; |
+13116;EGYPTIAN HIEROGLYPH F022;Lo;0;L;;;;;N;;;;; |
+13117;EGYPTIAN HIEROGLYPH F023;Lo;0;L;;;;;N;;;;; |
+13118;EGYPTIAN HIEROGLYPH F024;Lo;0;L;;;;;N;;;;; |
+13119;EGYPTIAN HIEROGLYPH F025;Lo;0;L;;;;;N;;;;; |
+1311A;EGYPTIAN HIEROGLYPH F026;Lo;0;L;;;;;N;;;;; |
+1311B;EGYPTIAN HIEROGLYPH F027;Lo;0;L;;;;;N;;;;; |
+1311C;EGYPTIAN HIEROGLYPH F028;Lo;0;L;;;;;N;;;;; |
+1311D;EGYPTIAN HIEROGLYPH F029;Lo;0;L;;;;;N;;;;; |
+1311E;EGYPTIAN HIEROGLYPH F030;Lo;0;L;;;;;N;;;;; |
+1311F;EGYPTIAN HIEROGLYPH F031;Lo;0;L;;;;;N;;;;; |
+13120;EGYPTIAN HIEROGLYPH F031A;Lo;0;L;;;;;N;;;;; |
+13121;EGYPTIAN HIEROGLYPH F032;Lo;0;L;;;;;N;;;;; |
+13122;EGYPTIAN HIEROGLYPH F033;Lo;0;L;;;;;N;;;;; |
+13123;EGYPTIAN HIEROGLYPH F034;Lo;0;L;;;;;N;;;;; |
+13124;EGYPTIAN HIEROGLYPH F035;Lo;0;L;;;;;N;;;;; |
+13125;EGYPTIAN HIEROGLYPH F036;Lo;0;L;;;;;N;;;;; |
+13126;EGYPTIAN HIEROGLYPH F037;Lo;0;L;;;;;N;;;;; |
+13127;EGYPTIAN HIEROGLYPH F037A;Lo;0;L;;;;;N;;;;; |
+13128;EGYPTIAN HIEROGLYPH F038;Lo;0;L;;;;;N;;;;; |
+13129;EGYPTIAN HIEROGLYPH F038A;Lo;0;L;;;;;N;;;;; |
+1312A;EGYPTIAN HIEROGLYPH F039;Lo;0;L;;;;;N;;;;; |
+1312B;EGYPTIAN HIEROGLYPH F040;Lo;0;L;;;;;N;;;;; |
+1312C;EGYPTIAN HIEROGLYPH F041;Lo;0;L;;;;;N;;;;; |
+1312D;EGYPTIAN HIEROGLYPH F042;Lo;0;L;;;;;N;;;;; |
+1312E;EGYPTIAN HIEROGLYPH F043;Lo;0;L;;;;;N;;;;; |
+1312F;EGYPTIAN HIEROGLYPH F044;Lo;0;L;;;;;N;;;;; |
+13130;EGYPTIAN HIEROGLYPH F045;Lo;0;L;;;;;N;;;;; |
+13131;EGYPTIAN HIEROGLYPH F045A;Lo;0;L;;;;;N;;;;; |
+13132;EGYPTIAN HIEROGLYPH F046;Lo;0;L;;;;;N;;;;; |
+13133;EGYPTIAN HIEROGLYPH F046A;Lo;0;L;;;;;N;;;;; |
+13134;EGYPTIAN HIEROGLYPH F047;Lo;0;L;;;;;N;;;;; |
+13135;EGYPTIAN HIEROGLYPH F047A;Lo;0;L;;;;;N;;;;; |
+13136;EGYPTIAN HIEROGLYPH F048;Lo;0;L;;;;;N;;;;; |
+13137;EGYPTIAN HIEROGLYPH F049;Lo;0;L;;;;;N;;;;; |
+13138;EGYPTIAN HIEROGLYPH F050;Lo;0;L;;;;;N;;;;; |
+13139;EGYPTIAN HIEROGLYPH F051;Lo;0;L;;;;;N;;;;; |
+1313A;EGYPTIAN HIEROGLYPH F051A;Lo;0;L;;;;;N;;;;; |
+1313B;EGYPTIAN HIEROGLYPH F051B;Lo;0;L;;;;;N;;;;; |
+1313C;EGYPTIAN HIEROGLYPH F051C;Lo;0;L;;;;;N;;;;; |
+1313D;EGYPTIAN HIEROGLYPH F052;Lo;0;L;;;;;N;;;;; |
+1313E;EGYPTIAN HIEROGLYPH F053;Lo;0;L;;;;;N;;;;; |
+1313F;EGYPTIAN HIEROGLYPH G001;Lo;0;L;;;;;N;;;;; |
+13140;EGYPTIAN HIEROGLYPH G002;Lo;0;L;;;;;N;;;;; |
+13141;EGYPTIAN HIEROGLYPH G003;Lo;0;L;;;;;N;;;;; |
+13142;EGYPTIAN HIEROGLYPH G004;Lo;0;L;;;;;N;;;;; |
+13143;EGYPTIAN HIEROGLYPH G005;Lo;0;L;;;;;N;;;;; |
+13144;EGYPTIAN HIEROGLYPH G006;Lo;0;L;;;;;N;;;;; |
+13145;EGYPTIAN HIEROGLYPH G006A;Lo;0;L;;;;;N;;;;; |
+13146;EGYPTIAN HIEROGLYPH G007;Lo;0;L;;;;;N;;;;; |
+13147;EGYPTIAN HIEROGLYPH G007A;Lo;0;L;;;;;N;;;;; |
+13148;EGYPTIAN HIEROGLYPH G007B;Lo;0;L;;;;;N;;;;; |
+13149;EGYPTIAN HIEROGLYPH G008;Lo;0;L;;;;;N;;;;; |
+1314A;EGYPTIAN HIEROGLYPH G009;Lo;0;L;;;;;N;;;;; |
+1314B;EGYPTIAN HIEROGLYPH G010;Lo;0;L;;;;;N;;;;; |
+1314C;EGYPTIAN HIEROGLYPH G011;Lo;0;L;;;;;N;;;;; |
+1314D;EGYPTIAN HIEROGLYPH G011A;Lo;0;L;;;;;N;;;;; |
+1314E;EGYPTIAN HIEROGLYPH G012;Lo;0;L;;;;;N;;;;; |
+1314F;EGYPTIAN HIEROGLYPH G013;Lo;0;L;;;;;N;;;;; |
+13150;EGYPTIAN HIEROGLYPH G014;Lo;0;L;;;;;N;;;;; |
+13151;EGYPTIAN HIEROGLYPH G015;Lo;0;L;;;;;N;;;;; |
+13152;EGYPTIAN HIEROGLYPH G016;Lo;0;L;;;;;N;;;;; |
+13153;EGYPTIAN HIEROGLYPH G017;Lo;0;L;;;;;N;;;;; |
+13154;EGYPTIAN HIEROGLYPH G018;Lo;0;L;;;;;N;;;;; |
+13155;EGYPTIAN HIEROGLYPH G019;Lo;0;L;;;;;N;;;;; |
+13156;EGYPTIAN HIEROGLYPH G020;Lo;0;L;;;;;N;;;;; |
+13157;EGYPTIAN HIEROGLYPH G020A;Lo;0;L;;;;;N;;;;; |
+13158;EGYPTIAN HIEROGLYPH G021;Lo;0;L;;;;;N;;;;; |
+13159;EGYPTIAN HIEROGLYPH G022;Lo;0;L;;;;;N;;;;; |
+1315A;EGYPTIAN HIEROGLYPH G023;Lo;0;L;;;;;N;;;;; |
+1315B;EGYPTIAN HIEROGLYPH G024;Lo;0;L;;;;;N;;;;; |
+1315C;EGYPTIAN HIEROGLYPH G025;Lo;0;L;;;;;N;;;;; |
+1315D;EGYPTIAN HIEROGLYPH G026;Lo;0;L;;;;;N;;;;; |
+1315E;EGYPTIAN HIEROGLYPH G026A;Lo;0;L;;;;;N;;;;; |
+1315F;EGYPTIAN HIEROGLYPH G027;Lo;0;L;;;;;N;;;;; |
+13160;EGYPTIAN HIEROGLYPH G028;Lo;0;L;;;;;N;;;;; |
+13161;EGYPTIAN HIEROGLYPH G029;Lo;0;L;;;;;N;;;;; |
+13162;EGYPTIAN HIEROGLYPH G030;Lo;0;L;;;;;N;;;;; |
+13163;EGYPTIAN HIEROGLYPH G031;Lo;0;L;;;;;N;;;;; |
+13164;EGYPTIAN HIEROGLYPH G032;Lo;0;L;;;;;N;;;;; |
+13165;EGYPTIAN HIEROGLYPH G033;Lo;0;L;;;;;N;;;;; |
+13166;EGYPTIAN HIEROGLYPH G034;Lo;0;L;;;;;N;;;;; |
+13167;EGYPTIAN HIEROGLYPH G035;Lo;0;L;;;;;N;;;;; |
+13168;EGYPTIAN HIEROGLYPH G036;Lo;0;L;;;;;N;;;;; |
+13169;EGYPTIAN HIEROGLYPH G036A;Lo;0;L;;;;;N;;;;; |
+1316A;EGYPTIAN HIEROGLYPH G037;Lo;0;L;;;;;N;;;;; |
+1316B;EGYPTIAN HIEROGLYPH G037A;Lo;0;L;;;;;N;;;;; |
+1316C;EGYPTIAN HIEROGLYPH G038;Lo;0;L;;;;;N;;;;; |
+1316D;EGYPTIAN HIEROGLYPH G039;Lo;0;L;;;;;N;;;;; |
+1316E;EGYPTIAN HIEROGLYPH G040;Lo;0;L;;;;;N;;;;; |
+1316F;EGYPTIAN HIEROGLYPH G041;Lo;0;L;;;;;N;;;;; |
+13170;EGYPTIAN HIEROGLYPH G042;Lo;0;L;;;;;N;;;;; |
+13171;EGYPTIAN HIEROGLYPH G043;Lo;0;L;;;;;N;;;;; |
+13172;EGYPTIAN HIEROGLYPH G043A;Lo;0;L;;;;;N;;;;; |
+13173;EGYPTIAN HIEROGLYPH G044;Lo;0;L;;;;;N;;;;; |
+13174;EGYPTIAN HIEROGLYPH G045;Lo;0;L;;;;;N;;;;; |
+13175;EGYPTIAN HIEROGLYPH G045A;Lo;0;L;;;;;N;;;;; |
+13176;EGYPTIAN HIEROGLYPH G046;Lo;0;L;;;;;N;;;;; |
+13177;EGYPTIAN HIEROGLYPH G047;Lo;0;L;;;;;N;;;;; |
+13178;EGYPTIAN HIEROGLYPH G048;Lo;0;L;;;;;N;;;;; |
+13179;EGYPTIAN HIEROGLYPH G049;Lo;0;L;;;;;N;;;;; |
+1317A;EGYPTIAN HIEROGLYPH G050;Lo;0;L;;;;;N;;;;; |
+1317B;EGYPTIAN HIEROGLYPH G051;Lo;0;L;;;;;N;;;;; |
+1317C;EGYPTIAN HIEROGLYPH G052;Lo;0;L;;;;;N;;;;; |
+1317D;EGYPTIAN HIEROGLYPH G053;Lo;0;L;;;;;N;;;;; |
+1317E;EGYPTIAN HIEROGLYPH G054;Lo;0;L;;;;;N;;;;; |
+1317F;EGYPTIAN HIEROGLYPH H001;Lo;0;L;;;;;N;;;;; |
+13180;EGYPTIAN HIEROGLYPH H002;Lo;0;L;;;;;N;;;;; |
+13181;EGYPTIAN HIEROGLYPH H003;Lo;0;L;;;;;N;;;;; |
+13182;EGYPTIAN HIEROGLYPH H004;Lo;0;L;;;;;N;;;;; |
+13183;EGYPTIAN HIEROGLYPH H005;Lo;0;L;;;;;N;;;;; |
+13184;EGYPTIAN HIEROGLYPH H006;Lo;0;L;;;;;N;;;;; |
+13185;EGYPTIAN HIEROGLYPH H006A;Lo;0;L;;;;;N;;;;; |
+13186;EGYPTIAN HIEROGLYPH H007;Lo;0;L;;;;;N;;;;; |
+13187;EGYPTIAN HIEROGLYPH H008;Lo;0;L;;;;;N;;;;; |
+13188;EGYPTIAN HIEROGLYPH I001;Lo;0;L;;;;;N;;;;; |
+13189;EGYPTIAN HIEROGLYPH I002;Lo;0;L;;;;;N;;;;; |
+1318A;EGYPTIAN HIEROGLYPH I003;Lo;0;L;;;;;N;;;;; |
+1318B;EGYPTIAN HIEROGLYPH I004;Lo;0;L;;;;;N;;;;; |
+1318C;EGYPTIAN HIEROGLYPH I005;Lo;0;L;;;;;N;;;;; |
+1318D;EGYPTIAN HIEROGLYPH I005A;Lo;0;L;;;;;N;;;;; |
+1318E;EGYPTIAN HIEROGLYPH I006;Lo;0;L;;;;;N;;;;; |
+1318F;EGYPTIAN HIEROGLYPH I007;Lo;0;L;;;;;N;;;;; |
+13190;EGYPTIAN HIEROGLYPH I008;Lo;0;L;;;;;N;;;;; |
+13191;EGYPTIAN HIEROGLYPH I009;Lo;0;L;;;;;N;;;;; |
+13192;EGYPTIAN HIEROGLYPH I009A;Lo;0;L;;;;;N;;;;; |
+13193;EGYPTIAN HIEROGLYPH I010;Lo;0;L;;;;;N;;;;; |
+13194;EGYPTIAN HIEROGLYPH I010A;Lo;0;L;;;;;N;;;;; |
+13195;EGYPTIAN HIEROGLYPH I011;Lo;0;L;;;;;N;;;;; |
+13196;EGYPTIAN HIEROGLYPH I011A;Lo;0;L;;;;;N;;;;; |
+13197;EGYPTIAN HIEROGLYPH I012;Lo;0;L;;;;;N;;;;; |
+13198;EGYPTIAN HIEROGLYPH I013;Lo;0;L;;;;;N;;;;; |
+13199;EGYPTIAN HIEROGLYPH I014;Lo;0;L;;;;;N;;;;; |
+1319A;EGYPTIAN HIEROGLYPH I015;Lo;0;L;;;;;N;;;;; |
+1319B;EGYPTIAN HIEROGLYPH K001;Lo;0;L;;;;;N;;;;; |
+1319C;EGYPTIAN HIEROGLYPH K002;Lo;0;L;;;;;N;;;;; |
+1319D;EGYPTIAN HIEROGLYPH K003;Lo;0;L;;;;;N;;;;; |
+1319E;EGYPTIAN HIEROGLYPH K004;Lo;0;L;;;;;N;;;;; |
+1319F;EGYPTIAN HIEROGLYPH K005;Lo;0;L;;;;;N;;;;; |
+131A0;EGYPTIAN HIEROGLYPH K006;Lo;0;L;;;;;N;;;;; |
+131A1;EGYPTIAN HIEROGLYPH K007;Lo;0;L;;;;;N;;;;; |
+131A2;EGYPTIAN HIEROGLYPH K008;Lo;0;L;;;;;N;;;;; |
+131A3;EGYPTIAN HIEROGLYPH L001;Lo;0;L;;;;;N;;;;; |
+131A4;EGYPTIAN HIEROGLYPH L002;Lo;0;L;;;;;N;;;;; |
+131A5;EGYPTIAN HIEROGLYPH L002A;Lo;0;L;;;;;N;;;;; |
+131A6;EGYPTIAN HIEROGLYPH L003;Lo;0;L;;;;;N;;;;; |
+131A7;EGYPTIAN HIEROGLYPH L004;Lo;0;L;;;;;N;;;;; |
+131A8;EGYPTIAN HIEROGLYPH L005;Lo;0;L;;;;;N;;;;; |
+131A9;EGYPTIAN HIEROGLYPH L006;Lo;0;L;;;;;N;;;;; |
+131AA;EGYPTIAN HIEROGLYPH L006A;Lo;0;L;;;;;N;;;;; |
+131AB;EGYPTIAN HIEROGLYPH L007;Lo;0;L;;;;;N;;;;; |
+131AC;EGYPTIAN HIEROGLYPH L008;Lo;0;L;;;;;N;;;;; |
+131AD;EGYPTIAN HIEROGLYPH M001;Lo;0;L;;;;;N;;;;; |
+131AE;EGYPTIAN HIEROGLYPH M001A;Lo;0;L;;;;;N;;;;; |
+131AF;EGYPTIAN HIEROGLYPH M001B;Lo;0;L;;;;;N;;;;; |
+131B0;EGYPTIAN HIEROGLYPH M002;Lo;0;L;;;;;N;;;;; |
+131B1;EGYPTIAN HIEROGLYPH M003;Lo;0;L;;;;;N;;;;; |
+131B2;EGYPTIAN HIEROGLYPH M003A;Lo;0;L;;;;;N;;;;; |
+131B3;EGYPTIAN HIEROGLYPH M004;Lo;0;L;;;;;N;;;;; |
+131B4;EGYPTIAN HIEROGLYPH M005;Lo;0;L;;;;;N;;;;; |
+131B5;EGYPTIAN HIEROGLYPH M006;Lo;0;L;;;;;N;;;;; |
+131B6;EGYPTIAN HIEROGLYPH M007;Lo;0;L;;;;;N;;;;; |
+131B7;EGYPTIAN HIEROGLYPH M008;Lo;0;L;;;;;N;;;;; |
+131B8;EGYPTIAN HIEROGLYPH M009;Lo;0;L;;;;;N;;;;; |
+131B9;EGYPTIAN HIEROGLYPH M010;Lo;0;L;;;;;N;;;;; |
+131BA;EGYPTIAN HIEROGLYPH M010A;Lo;0;L;;;;;N;;;;; |
+131BB;EGYPTIAN HIEROGLYPH M011;Lo;0;L;;;;;N;;;;; |
+131BC;EGYPTIAN HIEROGLYPH M012;Lo;0;L;;;;;N;;;;; |
+131BD;EGYPTIAN HIEROGLYPH M012A;Lo;0;L;;;;;N;;;;; |
+131BE;EGYPTIAN HIEROGLYPH M012B;Lo;0;L;;;;;N;;;;; |
+131BF;EGYPTIAN HIEROGLYPH M012C;Lo;0;L;;;;;N;;;;; |
+131C0;EGYPTIAN HIEROGLYPH M012D;Lo;0;L;;;;;N;;;;; |
+131C1;EGYPTIAN HIEROGLYPH M012E;Lo;0;L;;;;;N;;;;; |
+131C2;EGYPTIAN HIEROGLYPH M012F;Lo;0;L;;;;;N;;;;; |
+131C3;EGYPTIAN HIEROGLYPH M012G;Lo;0;L;;;;;N;;;;; |
+131C4;EGYPTIAN HIEROGLYPH M012H;Lo;0;L;;;;;N;;;;; |
+131C5;EGYPTIAN HIEROGLYPH M013;Lo;0;L;;;;;N;;;;; |
+131C6;EGYPTIAN HIEROGLYPH M014;Lo;0;L;;;;;N;;;;; |
+131C7;EGYPTIAN HIEROGLYPH M015;Lo;0;L;;;;;N;;;;; |
+131C8;EGYPTIAN HIEROGLYPH M015A;Lo;0;L;;;;;N;;;;; |
+131C9;EGYPTIAN HIEROGLYPH M016;Lo;0;L;;;;;N;;;;; |
+131CA;EGYPTIAN HIEROGLYPH M016A;Lo;0;L;;;;;N;;;;; |
+131CB;EGYPTIAN HIEROGLYPH M017;Lo;0;L;;;;;N;;;;; |
+131CC;EGYPTIAN HIEROGLYPH M017A;Lo;0;L;;;;;N;;;;; |
+131CD;EGYPTIAN HIEROGLYPH M018;Lo;0;L;;;;;N;;;;; |
+131CE;EGYPTIAN HIEROGLYPH M019;Lo;0;L;;;;;N;;;;; |
+131CF;EGYPTIAN HIEROGLYPH M020;Lo;0;L;;;;;N;;;;; |
+131D0;EGYPTIAN HIEROGLYPH M021;Lo;0;L;;;;;N;;;;; |
+131D1;EGYPTIAN HIEROGLYPH M022;Lo;0;L;;;;;N;;;;; |
+131D2;EGYPTIAN HIEROGLYPH M022A;Lo;0;L;;;;;N;;;;; |
+131D3;EGYPTIAN HIEROGLYPH M023;Lo;0;L;;;;;N;;;;; |
+131D4;EGYPTIAN HIEROGLYPH M024;Lo;0;L;;;;;N;;;;; |
+131D5;EGYPTIAN HIEROGLYPH M024A;Lo;0;L;;;;;N;;;;; |
+131D6;EGYPTIAN HIEROGLYPH M025;Lo;0;L;;;;;N;;;;; |
+131D7;EGYPTIAN HIEROGLYPH M026;Lo;0;L;;;;;N;;;;; |
+131D8;EGYPTIAN HIEROGLYPH M027;Lo;0;L;;;;;N;;;;; |
+131D9;EGYPTIAN HIEROGLYPH M028;Lo;0;L;;;;;N;;;;; |
+131DA;EGYPTIAN HIEROGLYPH M028A;Lo;0;L;;;;;N;;;;; |
+131DB;EGYPTIAN HIEROGLYPH M029;Lo;0;L;;;;;N;;;;; |
+131DC;EGYPTIAN HIEROGLYPH M030;Lo;0;L;;;;;N;;;;; |
+131DD;EGYPTIAN HIEROGLYPH M031;Lo;0;L;;;;;N;;;;; |
+131DE;EGYPTIAN HIEROGLYPH M031A;Lo;0;L;;;;;N;;;;; |
+131DF;EGYPTIAN HIEROGLYPH M032;Lo;0;L;;;;;N;;;;; |
+131E0;EGYPTIAN HIEROGLYPH M033;Lo;0;L;;;;;N;;;;; |
+131E1;EGYPTIAN HIEROGLYPH M033A;Lo;0;L;;;;;N;;;;; |
+131E2;EGYPTIAN HIEROGLYPH M033B;Lo;0;L;;;;;N;;;;; |
+131E3;EGYPTIAN HIEROGLYPH M034;Lo;0;L;;;;;N;;;;; |
+131E4;EGYPTIAN HIEROGLYPH M035;Lo;0;L;;;;;N;;;;; |
+131E5;EGYPTIAN HIEROGLYPH M036;Lo;0;L;;;;;N;;;;; |
+131E6;EGYPTIAN HIEROGLYPH M037;Lo;0;L;;;;;N;;;;; |
+131E7;EGYPTIAN HIEROGLYPH M038;Lo;0;L;;;;;N;;;;; |
+131E8;EGYPTIAN HIEROGLYPH M039;Lo;0;L;;;;;N;;;;; |
+131E9;EGYPTIAN HIEROGLYPH M040;Lo;0;L;;;;;N;;;;; |
+131EA;EGYPTIAN HIEROGLYPH M040A;Lo;0;L;;;;;N;;;;; |
+131EB;EGYPTIAN HIEROGLYPH M041;Lo;0;L;;;;;N;;;;; |
+131EC;EGYPTIAN HIEROGLYPH M042;Lo;0;L;;;;;N;;;;; |
+131ED;EGYPTIAN HIEROGLYPH M043;Lo;0;L;;;;;N;;;;; |
+131EE;EGYPTIAN HIEROGLYPH M044;Lo;0;L;;;;;N;;;;; |
+131EF;EGYPTIAN HIEROGLYPH N001;Lo;0;L;;;;;N;;;;; |
+131F0;EGYPTIAN HIEROGLYPH N002;Lo;0;L;;;;;N;;;;; |
+131F1;EGYPTIAN HIEROGLYPH N003;Lo;0;L;;;;;N;;;;; |
+131F2;EGYPTIAN HIEROGLYPH N004;Lo;0;L;;;;;N;;;;; |
+131F3;EGYPTIAN HIEROGLYPH N005;Lo;0;L;;;;;N;;;;; |
+131F4;EGYPTIAN HIEROGLYPH N006;Lo;0;L;;;;;N;;;;; |
+131F5;EGYPTIAN HIEROGLYPH N007;Lo;0;L;;;;;N;;;;; |
+131F6;EGYPTIAN HIEROGLYPH N008;Lo;0;L;;;;;N;;;;; |
+131F7;EGYPTIAN HIEROGLYPH N009;Lo;0;L;;;;;N;;;;; |
+131F8;EGYPTIAN HIEROGLYPH N010;Lo;0;L;;;;;N;;;;; |
+131F9;EGYPTIAN HIEROGLYPH N011;Lo;0;L;;;;;N;;;;; |
+131FA;EGYPTIAN HIEROGLYPH N012;Lo;0;L;;;;;N;;;;; |
+131FB;EGYPTIAN HIEROGLYPH N013;Lo;0;L;;;;;N;;;;; |
+131FC;EGYPTIAN HIEROGLYPH N014;Lo;0;L;;;;;N;;;;; |
+131FD;EGYPTIAN HIEROGLYPH N015;Lo;0;L;;;;;N;;;;; |
+131FE;EGYPTIAN HIEROGLYPH N016;Lo;0;L;;;;;N;;;;; |
+131FF;EGYPTIAN HIEROGLYPH N017;Lo;0;L;;;;;N;;;;; |
+13200;EGYPTIAN HIEROGLYPH N018;Lo;0;L;;;;;N;;;;; |
+13201;EGYPTIAN HIEROGLYPH N018A;Lo;0;L;;;;;N;;;;; |
+13202;EGYPTIAN HIEROGLYPH N018B;Lo;0;L;;;;;N;;;;; |
+13203;EGYPTIAN HIEROGLYPH N019;Lo;0;L;;;;;N;;;;; |
+13204;EGYPTIAN HIEROGLYPH N020;Lo;0;L;;;;;N;;;;; |
+13205;EGYPTIAN HIEROGLYPH N021;Lo;0;L;;;;;N;;;;; |
+13206;EGYPTIAN HIEROGLYPH N022;Lo;0;L;;;;;N;;;;; |
+13207;EGYPTIAN HIEROGLYPH N023;Lo;0;L;;;;;N;;;;; |
+13208;EGYPTIAN HIEROGLYPH N024;Lo;0;L;;;;;N;;;;; |
+13209;EGYPTIAN HIEROGLYPH N025;Lo;0;L;;;;;N;;;;; |
+1320A;EGYPTIAN HIEROGLYPH N025A;Lo;0;L;;;;;N;;;;; |
+1320B;EGYPTIAN HIEROGLYPH N026;Lo;0;L;;;;;N;;;;; |
+1320C;EGYPTIAN HIEROGLYPH N027;Lo;0;L;;;;;N;;;;; |
+1320D;EGYPTIAN HIEROGLYPH N028;Lo;0;L;;;;;N;;;;; |
+1320E;EGYPTIAN HIEROGLYPH N029;Lo;0;L;;;;;N;;;;; |
+1320F;EGYPTIAN HIEROGLYPH N030;Lo;0;L;;;;;N;;;;; |
+13210;EGYPTIAN HIEROGLYPH N031;Lo;0;L;;;;;N;;;;; |
+13211;EGYPTIAN HIEROGLYPH N032;Lo;0;L;;;;;N;;;;; |
+13212;EGYPTIAN HIEROGLYPH N033;Lo;0;L;;;;;N;;;;; |
+13213;EGYPTIAN HIEROGLYPH N033A;Lo;0;L;;;;;N;;;;; |
+13214;EGYPTIAN HIEROGLYPH N034;Lo;0;L;;;;;N;;;;; |
+13215;EGYPTIAN HIEROGLYPH N034A;Lo;0;L;;;;;N;;;;; |
+13216;EGYPTIAN HIEROGLYPH N035;Lo;0;L;;;;;N;;;;; |
+13217;EGYPTIAN HIEROGLYPH N035A;Lo;0;L;;;;;N;;;;; |
+13218;EGYPTIAN HIEROGLYPH N036;Lo;0;L;;;;;N;;;;; |
+13219;EGYPTIAN HIEROGLYPH N037;Lo;0;L;;;;;N;;;;; |
+1321A;EGYPTIAN HIEROGLYPH N037A;Lo;0;L;;;;;N;;;;; |
+1321B;EGYPTIAN HIEROGLYPH N038;Lo;0;L;;;;;N;;;;; |
+1321C;EGYPTIAN HIEROGLYPH N039;Lo;0;L;;;;;N;;;;; |
+1321D;EGYPTIAN HIEROGLYPH N040;Lo;0;L;;;;;N;;;;; |
+1321E;EGYPTIAN HIEROGLYPH N041;Lo;0;L;;;;;N;;;;; |
+1321F;EGYPTIAN HIEROGLYPH N042;Lo;0;L;;;;;N;;;;; |
+13220;EGYPTIAN HIEROGLYPH NL001;Lo;0;L;;;;;N;;;;; |
+13221;EGYPTIAN HIEROGLYPH NL002;Lo;0;L;;;;;N;;;;; |
+13222;EGYPTIAN HIEROGLYPH NL003;Lo;0;L;;;;;N;;;;; |
+13223;EGYPTIAN HIEROGLYPH NL004;Lo;0;L;;;;;N;;;;; |
+13224;EGYPTIAN HIEROGLYPH NL005;Lo;0;L;;;;;N;;;;; |
+13225;EGYPTIAN HIEROGLYPH NL005A;Lo;0;L;;;;;N;;;;; |
+13226;EGYPTIAN HIEROGLYPH NL006;Lo;0;L;;;;;N;;;;; |
+13227;EGYPTIAN HIEROGLYPH NL007;Lo;0;L;;;;;N;;;;; |
+13228;EGYPTIAN HIEROGLYPH NL008;Lo;0;L;;;;;N;;;;; |
+13229;EGYPTIAN HIEROGLYPH NL009;Lo;0;L;;;;;N;;;;; |
+1322A;EGYPTIAN HIEROGLYPH NL010;Lo;0;L;;;;;N;;;;; |
+1322B;EGYPTIAN HIEROGLYPH NL011;Lo;0;L;;;;;N;;;;; |
+1322C;EGYPTIAN HIEROGLYPH NL012;Lo;0;L;;;;;N;;;;; |
+1322D;EGYPTIAN HIEROGLYPH NL013;Lo;0;L;;;;;N;;;;; |
+1322E;EGYPTIAN HIEROGLYPH NL014;Lo;0;L;;;;;N;;;;; |
+1322F;EGYPTIAN HIEROGLYPH NL015;Lo;0;L;;;;;N;;;;; |
+13230;EGYPTIAN HIEROGLYPH NL016;Lo;0;L;;;;;N;;;;; |
+13231;EGYPTIAN HIEROGLYPH NL017;Lo;0;L;;;;;N;;;;; |
+13232;EGYPTIAN HIEROGLYPH NL017A;Lo;0;L;;;;;N;;;;; |
+13233;EGYPTIAN HIEROGLYPH NL018;Lo;0;L;;;;;N;;;;; |
+13234;EGYPTIAN HIEROGLYPH NL019;Lo;0;L;;;;;N;;;;; |
+13235;EGYPTIAN HIEROGLYPH NL020;Lo;0;L;;;;;N;;;;; |
+13236;EGYPTIAN HIEROGLYPH NU001;Lo;0;L;;;;;N;;;;; |
+13237;EGYPTIAN HIEROGLYPH NU002;Lo;0;L;;;;;N;;;;; |
+13238;EGYPTIAN HIEROGLYPH NU003;Lo;0;L;;;;;N;;;;; |
+13239;EGYPTIAN HIEROGLYPH NU004;Lo;0;L;;;;;N;;;;; |
+1323A;EGYPTIAN HIEROGLYPH NU005;Lo;0;L;;;;;N;;;;; |
+1323B;EGYPTIAN HIEROGLYPH NU006;Lo;0;L;;;;;N;;;;; |
+1323C;EGYPTIAN HIEROGLYPH NU007;Lo;0;L;;;;;N;;;;; |
+1323D;EGYPTIAN HIEROGLYPH NU008;Lo;0;L;;;;;N;;;;; |
+1323E;EGYPTIAN HIEROGLYPH NU009;Lo;0;L;;;;;N;;;;; |
+1323F;EGYPTIAN HIEROGLYPH NU010;Lo;0;L;;;;;N;;;;; |
+13240;EGYPTIAN HIEROGLYPH NU010A;Lo;0;L;;;;;N;;;;; |
+13241;EGYPTIAN HIEROGLYPH NU011;Lo;0;L;;;;;N;;;;; |
+13242;EGYPTIAN HIEROGLYPH NU011A;Lo;0;L;;;;;N;;;;; |
+13243;EGYPTIAN HIEROGLYPH NU012;Lo;0;L;;;;;N;;;;; |
+13244;EGYPTIAN HIEROGLYPH NU013;Lo;0;L;;;;;N;;;;; |
+13245;EGYPTIAN HIEROGLYPH NU014;Lo;0;L;;;;;N;;;;; |
+13246;EGYPTIAN HIEROGLYPH NU015;Lo;0;L;;;;;N;;;;; |
+13247;EGYPTIAN HIEROGLYPH NU016;Lo;0;L;;;;;N;;;;; |
+13248;EGYPTIAN HIEROGLYPH NU017;Lo;0;L;;;;;N;;;;; |
+13249;EGYPTIAN HIEROGLYPH NU018;Lo;0;L;;;;;N;;;;; |
+1324A;EGYPTIAN HIEROGLYPH NU018A;Lo;0;L;;;;;N;;;;; |
+1324B;EGYPTIAN HIEROGLYPH NU019;Lo;0;L;;;;;N;;;;; |
+1324C;EGYPTIAN HIEROGLYPH NU020;Lo;0;L;;;;;N;;;;; |
+1324D;EGYPTIAN HIEROGLYPH NU021;Lo;0;L;;;;;N;;;;; |
+1324E;EGYPTIAN HIEROGLYPH NU022;Lo;0;L;;;;;N;;;;; |
+1324F;EGYPTIAN HIEROGLYPH NU022A;Lo;0;L;;;;;N;;;;; |
+13250;EGYPTIAN HIEROGLYPH O001;Lo;0;L;;;;;N;;;;; |
+13251;EGYPTIAN HIEROGLYPH O001A;Lo;0;L;;;;;N;;;;; |
+13252;EGYPTIAN HIEROGLYPH O002;Lo;0;L;;;;;N;;;;; |
+13253;EGYPTIAN HIEROGLYPH O003;Lo;0;L;;;;;N;;;;; |
+13254;EGYPTIAN HIEROGLYPH O004;Lo;0;L;;;;;N;;;;; |
+13255;EGYPTIAN HIEROGLYPH O005;Lo;0;L;;;;;N;;;;; |
+13256;EGYPTIAN HIEROGLYPH O005A;Lo;0;L;;;;;N;;;;; |
+13257;EGYPTIAN HIEROGLYPH O006;Lo;0;L;;;;;N;;;;; |
+13258;EGYPTIAN HIEROGLYPH O006A;Lo;0;L;;;;;N;;;;; |
+13259;EGYPTIAN HIEROGLYPH O006B;Lo;0;L;;;;;N;;;;; |
+1325A;EGYPTIAN HIEROGLYPH O006C;Lo;0;L;;;;;N;;;;; |
+1325B;EGYPTIAN HIEROGLYPH O006D;Lo;0;L;;;;;N;;;;; |
+1325C;EGYPTIAN HIEROGLYPH O006E;Lo;0;L;;;;;N;;;;; |
+1325D;EGYPTIAN HIEROGLYPH O006F;Lo;0;L;;;;;N;;;;; |
+1325E;EGYPTIAN HIEROGLYPH O007;Lo;0;L;;;;;N;;;;; |
+1325F;EGYPTIAN HIEROGLYPH O008;Lo;0;L;;;;;N;;;;; |
+13260;EGYPTIAN HIEROGLYPH O009;Lo;0;L;;;;;N;;;;; |
+13261;EGYPTIAN HIEROGLYPH O010;Lo;0;L;;;;;N;;;;; |
+13262;EGYPTIAN HIEROGLYPH O010A;Lo;0;L;;;;;N;;;;; |
+13263;EGYPTIAN HIEROGLYPH O010B;Lo;0;L;;;;;N;;;;; |
+13264;EGYPTIAN HIEROGLYPH O010C;Lo;0;L;;;;;N;;;;; |
+13265;EGYPTIAN HIEROGLYPH O011;Lo;0;L;;;;;N;;;;; |
+13266;EGYPTIAN HIEROGLYPH O012;Lo;0;L;;;;;N;;;;; |
+13267;EGYPTIAN HIEROGLYPH O013;Lo;0;L;;;;;N;;;;; |
+13268;EGYPTIAN HIEROGLYPH O014;Lo;0;L;;;;;N;;;;; |
+13269;EGYPTIAN HIEROGLYPH O015;Lo;0;L;;;;;N;;;;; |
+1326A;EGYPTIAN HIEROGLYPH O016;Lo;0;L;;;;;N;;;;; |
+1326B;EGYPTIAN HIEROGLYPH O017;Lo;0;L;;;;;N;;;;; |
+1326C;EGYPTIAN HIEROGLYPH O018;Lo;0;L;;;;;N;;;;; |
+1326D;EGYPTIAN HIEROGLYPH O019;Lo;0;L;;;;;N;;;;; |
+1326E;EGYPTIAN HIEROGLYPH O019A;Lo;0;L;;;;;N;;;;; |
+1326F;EGYPTIAN HIEROGLYPH O020;Lo;0;L;;;;;N;;;;; |
+13270;EGYPTIAN HIEROGLYPH O020A;Lo;0;L;;;;;N;;;;; |
+13271;EGYPTIAN HIEROGLYPH O021;Lo;0;L;;;;;N;;;;; |
+13272;EGYPTIAN HIEROGLYPH O022;Lo;0;L;;;;;N;;;;; |
+13273;EGYPTIAN HIEROGLYPH O023;Lo;0;L;;;;;N;;;;; |
+13274;EGYPTIAN HIEROGLYPH O024;Lo;0;L;;;;;N;;;;; |
+13275;EGYPTIAN HIEROGLYPH O024A;Lo;0;L;;;;;N;;;;; |
+13276;EGYPTIAN HIEROGLYPH O025;Lo;0;L;;;;;N;;;;; |
+13277;EGYPTIAN HIEROGLYPH O025A;Lo;0;L;;;;;N;;;;; |
+13278;EGYPTIAN HIEROGLYPH O026;Lo;0;L;;;;;N;;;;; |
+13279;EGYPTIAN HIEROGLYPH O027;Lo;0;L;;;;;N;;;;; |
+1327A;EGYPTIAN HIEROGLYPH O028;Lo;0;L;;;;;N;;;;; |
+1327B;EGYPTIAN HIEROGLYPH O029;Lo;0;L;;;;;N;;;;; |
+1327C;EGYPTIAN HIEROGLYPH O029A;Lo;0;L;;;;;N;;;;; |
+1327D;EGYPTIAN HIEROGLYPH O030;Lo;0;L;;;;;N;;;;; |
+1327E;EGYPTIAN HIEROGLYPH O030A;Lo;0;L;;;;;N;;;;; |
+1327F;EGYPTIAN HIEROGLYPH O031;Lo;0;L;;;;;N;;;;; |
+13280;EGYPTIAN HIEROGLYPH O032;Lo;0;L;;;;;N;;;;; |
+13281;EGYPTIAN HIEROGLYPH O033;Lo;0;L;;;;;N;;;;; |
+13282;EGYPTIAN HIEROGLYPH O033A;Lo;0;L;;;;;N;;;;; |
+13283;EGYPTIAN HIEROGLYPH O034;Lo;0;L;;;;;N;;;;; |
+13284;EGYPTIAN HIEROGLYPH O035;Lo;0;L;;;;;N;;;;; |
+13285;EGYPTIAN HIEROGLYPH O036;Lo;0;L;;;;;N;;;;; |
+13286;EGYPTIAN HIEROGLYPH O036A;Lo;0;L;;;;;N;;;;; |
+13287;EGYPTIAN HIEROGLYPH O036B;Lo;0;L;;;;;N;;;;; |
+13288;EGYPTIAN HIEROGLYPH O036C;Lo;0;L;;;;;N;;;;; |
+13289;EGYPTIAN HIEROGLYPH O036D;Lo;0;L;;;;;N;;;;; |
+1328A;EGYPTIAN HIEROGLYPH O037;Lo;0;L;;;;;N;;;;; |
+1328B;EGYPTIAN HIEROGLYPH O038;Lo;0;L;;;;;N;;;;; |
+1328C;EGYPTIAN HIEROGLYPH O039;Lo;0;L;;;;;N;;;;; |
+1328D;EGYPTIAN HIEROGLYPH O040;Lo;0;L;;;;;N;;;;; |
+1328E;EGYPTIAN HIEROGLYPH O041;Lo;0;L;;;;;N;;;;; |
+1328F;EGYPTIAN HIEROGLYPH O042;Lo;0;L;;;;;N;;;;; |
+13290;EGYPTIAN HIEROGLYPH O043;Lo;0;L;;;;;N;;;;; |
+13291;EGYPTIAN HIEROGLYPH O044;Lo;0;L;;;;;N;;;;; |
+13292;EGYPTIAN HIEROGLYPH O045;Lo;0;L;;;;;N;;;;; |
+13293;EGYPTIAN HIEROGLYPH O046;Lo;0;L;;;;;N;;;;; |
+13294;EGYPTIAN HIEROGLYPH O047;Lo;0;L;;;;;N;;;;; |
+13295;EGYPTIAN HIEROGLYPH O048;Lo;0;L;;;;;N;;;;; |
+13296;EGYPTIAN HIEROGLYPH O049;Lo;0;L;;;;;N;;;;; |
+13297;EGYPTIAN HIEROGLYPH O050;Lo;0;L;;;;;N;;;;; |
+13298;EGYPTIAN HIEROGLYPH O050A;Lo;0;L;;;;;N;;;;; |
+13299;EGYPTIAN HIEROGLYPH O050B;Lo;0;L;;;;;N;;;;; |
+1329A;EGYPTIAN HIEROGLYPH O051;Lo;0;L;;;;;N;;;;; |
+1329B;EGYPTIAN HIEROGLYPH P001;Lo;0;L;;;;;N;;;;; |
+1329C;EGYPTIAN HIEROGLYPH P001A;Lo;0;L;;;;;N;;;;; |
+1329D;EGYPTIAN HIEROGLYPH P002;Lo;0;L;;;;;N;;;;; |
+1329E;EGYPTIAN HIEROGLYPH P003;Lo;0;L;;;;;N;;;;; |
+1329F;EGYPTIAN HIEROGLYPH P003A;Lo;0;L;;;;;N;;;;; |
+132A0;EGYPTIAN HIEROGLYPH P004;Lo;0;L;;;;;N;;;;; |
+132A1;EGYPTIAN HIEROGLYPH P005;Lo;0;L;;;;;N;;;;; |
+132A2;EGYPTIAN HIEROGLYPH P006;Lo;0;L;;;;;N;;;;; |
+132A3;EGYPTIAN HIEROGLYPH P007;Lo;0;L;;;;;N;;;;; |
+132A4;EGYPTIAN HIEROGLYPH P008;Lo;0;L;;;;;N;;;;; |
+132A5;EGYPTIAN HIEROGLYPH P009;Lo;0;L;;;;;N;;;;; |
+132A6;EGYPTIAN HIEROGLYPH P010;Lo;0;L;;;;;N;;;;; |
+132A7;EGYPTIAN HIEROGLYPH P011;Lo;0;L;;;;;N;;;;; |
+132A8;EGYPTIAN HIEROGLYPH Q001;Lo;0;L;;;;;N;;;;; |
+132A9;EGYPTIAN HIEROGLYPH Q002;Lo;0;L;;;;;N;;;;; |
+132AA;EGYPTIAN HIEROGLYPH Q003;Lo;0;L;;;;;N;;;;; |
+132AB;EGYPTIAN HIEROGLYPH Q004;Lo;0;L;;;;;N;;;;; |
+132AC;EGYPTIAN HIEROGLYPH Q005;Lo;0;L;;;;;N;;;;; |
+132AD;EGYPTIAN HIEROGLYPH Q006;Lo;0;L;;;;;N;;;;; |
+132AE;EGYPTIAN HIEROGLYPH Q007;Lo;0;L;;;;;N;;;;; |
+132AF;EGYPTIAN HIEROGLYPH R001;Lo;0;L;;;;;N;;;;; |
+132B0;EGYPTIAN HIEROGLYPH R002;Lo;0;L;;;;;N;;;;; |
+132B1;EGYPTIAN HIEROGLYPH R002A;Lo;0;L;;;;;N;;;;; |
+132B2;EGYPTIAN HIEROGLYPH R003;Lo;0;L;;;;;N;;;;; |
+132B3;EGYPTIAN HIEROGLYPH R003A;Lo;0;L;;;;;N;;;;; |
+132B4;EGYPTIAN HIEROGLYPH R003B;Lo;0;L;;;;;N;;;;; |
+132B5;EGYPTIAN HIEROGLYPH R004;Lo;0;L;;;;;N;;;;; |
+132B6;EGYPTIAN HIEROGLYPH R005;Lo;0;L;;;;;N;;;;; |
+132B7;EGYPTIAN HIEROGLYPH R006;Lo;0;L;;;;;N;;;;; |
+132B8;EGYPTIAN HIEROGLYPH R007;Lo;0;L;;;;;N;;;;; |
+132B9;EGYPTIAN HIEROGLYPH R008;Lo;0;L;;;;;N;;;;; |
+132BA;EGYPTIAN HIEROGLYPH R009;Lo;0;L;;;;;N;;;;; |
+132BB;EGYPTIAN HIEROGLYPH R010;Lo;0;L;;;;;N;;;;; |
+132BC;EGYPTIAN HIEROGLYPH R010A;Lo;0;L;;;;;N;;;;; |
+132BD;EGYPTIAN HIEROGLYPH R011;Lo;0;L;;;;;N;;;;; |
+132BE;EGYPTIAN HIEROGLYPH R012;Lo;0;L;;;;;N;;;;; |
+132BF;EGYPTIAN HIEROGLYPH R013;Lo;0;L;;;;;N;;;;; |
+132C0;EGYPTIAN HIEROGLYPH R014;Lo;0;L;;;;;N;;;;; |
+132C1;EGYPTIAN HIEROGLYPH R015;Lo;0;L;;;;;N;;;;; |
+132C2;EGYPTIAN HIEROGLYPH R016;Lo;0;L;;;;;N;;;;; |
+132C3;EGYPTIAN HIEROGLYPH R016A;Lo;0;L;;;;;N;;;;; |
+132C4;EGYPTIAN HIEROGLYPH R017;Lo;0;L;;;;;N;;;;; |
+132C5;EGYPTIAN HIEROGLYPH R018;Lo;0;L;;;;;N;;;;; |
+132C6;EGYPTIAN HIEROGLYPH R019;Lo;0;L;;;;;N;;;;; |
+132C7;EGYPTIAN HIEROGLYPH R020;Lo;0;L;;;;;N;;;;; |
+132C8;EGYPTIAN HIEROGLYPH R021;Lo;0;L;;;;;N;;;;; |
+132C9;EGYPTIAN HIEROGLYPH R022;Lo;0;L;;;;;N;;;;; |
+132CA;EGYPTIAN HIEROGLYPH R023;Lo;0;L;;;;;N;;;;; |
+132CB;EGYPTIAN HIEROGLYPH R024;Lo;0;L;;;;;N;;;;; |
+132CC;EGYPTIAN HIEROGLYPH R025;Lo;0;L;;;;;N;;;;; |
+132CD;EGYPTIAN HIEROGLYPH R026;Lo;0;L;;;;;N;;;;; |
+132CE;EGYPTIAN HIEROGLYPH R027;Lo;0;L;;;;;N;;;;; |
+132CF;EGYPTIAN HIEROGLYPH R028;Lo;0;L;;;;;N;;;;; |
+132D0;EGYPTIAN HIEROGLYPH R029;Lo;0;L;;;;;N;;;;; |
+132D1;EGYPTIAN HIEROGLYPH S001;Lo;0;L;;;;;N;;;;; |
+132D2;EGYPTIAN HIEROGLYPH S002;Lo;0;L;;;;;N;;;;; |
+132D3;EGYPTIAN HIEROGLYPH S002A;Lo;0;L;;;;;N;;;;; |
+132D4;EGYPTIAN HIEROGLYPH S003;Lo;0;L;;;;;N;;;;; |
+132D5;EGYPTIAN HIEROGLYPH S004;Lo;0;L;;;;;N;;;;; |
+132D6;EGYPTIAN HIEROGLYPH S005;Lo;0;L;;;;;N;;;;; |
+132D7;EGYPTIAN HIEROGLYPH S006;Lo;0;L;;;;;N;;;;; |
+132D8;EGYPTIAN HIEROGLYPH S006A;Lo;0;L;;;;;N;;;;; |
+132D9;EGYPTIAN HIEROGLYPH S007;Lo;0;L;;;;;N;;;;; |
+132DA;EGYPTIAN HIEROGLYPH S008;Lo;0;L;;;;;N;;;;; |
+132DB;EGYPTIAN HIEROGLYPH S009;Lo;0;L;;;;;N;;;;; |
+132DC;EGYPTIAN HIEROGLYPH S010;Lo;0;L;;;;;N;;;;; |
+132DD;EGYPTIAN HIEROGLYPH S011;Lo;0;L;;;;;N;;;;; |
+132DE;EGYPTIAN HIEROGLYPH S012;Lo;0;L;;;;;N;;;;; |
+132DF;EGYPTIAN HIEROGLYPH S013;Lo;0;L;;;;;N;;;;; |
+132E0;EGYPTIAN HIEROGLYPH S014;Lo;0;L;;;;;N;;;;; |
+132E1;EGYPTIAN HIEROGLYPH S014A;Lo;0;L;;;;;N;;;;; |
+132E2;EGYPTIAN HIEROGLYPH S014B;Lo;0;L;;;;;N;;;;; |
+132E3;EGYPTIAN HIEROGLYPH S015;Lo;0;L;;;;;N;;;;; |
+132E4;EGYPTIAN HIEROGLYPH S016;Lo;0;L;;;;;N;;;;; |
+132E5;EGYPTIAN HIEROGLYPH S017;Lo;0;L;;;;;N;;;;; |
+132E6;EGYPTIAN HIEROGLYPH S017A;Lo;0;L;;;;;N;;;;; |
+132E7;EGYPTIAN HIEROGLYPH S018;Lo;0;L;;;;;N;;;;; |
+132E8;EGYPTIAN HIEROGLYPH S019;Lo;0;L;;;;;N;;;;; |
+132E9;EGYPTIAN HIEROGLYPH S020;Lo;0;L;;;;;N;;;;; |
+132EA;EGYPTIAN HIEROGLYPH S021;Lo;0;L;;;;;N;;;;; |
+132EB;EGYPTIAN HIEROGLYPH S022;Lo;0;L;;;;;N;;;;; |
+132EC;EGYPTIAN HIEROGLYPH S023;Lo;0;L;;;;;N;;;;; |
+132ED;EGYPTIAN HIEROGLYPH S024;Lo;0;L;;;;;N;;;;; |
+132EE;EGYPTIAN HIEROGLYPH S025;Lo;0;L;;;;;N;;;;; |
+132EF;EGYPTIAN HIEROGLYPH S026;Lo;0;L;;;;;N;;;;; |
+132F0;EGYPTIAN HIEROGLYPH S026A;Lo;0;L;;;;;N;;;;; |
+132F1;EGYPTIAN HIEROGLYPH S026B;Lo;0;L;;;;;N;;;;; |
+132F2;EGYPTIAN HIEROGLYPH S027;Lo;0;L;;;;;N;;;;; |
+132F3;EGYPTIAN HIEROGLYPH S028;Lo;0;L;;;;;N;;;;; |
+132F4;EGYPTIAN HIEROGLYPH S029;Lo;0;L;;;;;N;;;;; |
+132F5;EGYPTIAN HIEROGLYPH S030;Lo;0;L;;;;;N;;;;; |
+132F6;EGYPTIAN HIEROGLYPH S031;Lo;0;L;;;;;N;;;;; |
+132F7;EGYPTIAN HIEROGLYPH S032;Lo;0;L;;;;;N;;;;; |
+132F8;EGYPTIAN HIEROGLYPH S033;Lo;0;L;;;;;N;;;;; |
+132F9;EGYPTIAN HIEROGLYPH S034;Lo;0;L;;;;;N;;;;; |
+132FA;EGYPTIAN HIEROGLYPH S035;Lo;0;L;;;;;N;;;;; |
+132FB;EGYPTIAN HIEROGLYPH S035A;Lo;0;L;;;;;N;;;;; |
+132FC;EGYPTIAN HIEROGLYPH S036;Lo;0;L;;;;;N;;;;; |
+132FD;EGYPTIAN HIEROGLYPH S037;Lo;0;L;;;;;N;;;;; |
+132FE;EGYPTIAN HIEROGLYPH S038;Lo;0;L;;;;;N;;;;; |
+132FF;EGYPTIAN HIEROGLYPH S039;Lo;0;L;;;;;N;;;;; |
+13300;EGYPTIAN HIEROGLYPH S040;Lo;0;L;;;;;N;;;;; |
+13301;EGYPTIAN HIEROGLYPH S041;Lo;0;L;;;;;N;;;;; |
+13302;EGYPTIAN HIEROGLYPH S042;Lo;0;L;;;;;N;;;;; |
+13303;EGYPTIAN HIEROGLYPH S043;Lo;0;L;;;;;N;;;;; |
+13304;EGYPTIAN HIEROGLYPH S044;Lo;0;L;;;;;N;;;;; |
+13305;EGYPTIAN HIEROGLYPH S045;Lo;0;L;;;;;N;;;;; |
+13306;EGYPTIAN HIEROGLYPH S046;Lo;0;L;;;;;N;;;;; |
+13307;EGYPTIAN HIEROGLYPH T001;Lo;0;L;;;;;N;;;;; |
+13308;EGYPTIAN HIEROGLYPH T002;Lo;0;L;;;;;N;;;;; |
+13309;EGYPTIAN HIEROGLYPH T003;Lo;0;L;;;;;N;;;;; |
+1330A;EGYPTIAN HIEROGLYPH T003A;Lo;0;L;;;;;N;;;;; |
+1330B;EGYPTIAN HIEROGLYPH T004;Lo;0;L;;;;;N;;;;; |
+1330C;EGYPTIAN HIEROGLYPH T005;Lo;0;L;;;;;N;;;;; |
+1330D;EGYPTIAN HIEROGLYPH T006;Lo;0;L;;;;;N;;;;; |
+1330E;EGYPTIAN HIEROGLYPH T007;Lo;0;L;;;;;N;;;;; |
+1330F;EGYPTIAN HIEROGLYPH T007A;Lo;0;L;;;;;N;;;;; |
+13310;EGYPTIAN HIEROGLYPH T008;Lo;0;L;;;;;N;;;;; |
+13311;EGYPTIAN HIEROGLYPH T008A;Lo;0;L;;;;;N;;;;; |
+13312;EGYPTIAN HIEROGLYPH T009;Lo;0;L;;;;;N;;;;; |
+13313;EGYPTIAN HIEROGLYPH T009A;Lo;0;L;;;;;N;;;;; |
+13314;EGYPTIAN HIEROGLYPH T010;Lo;0;L;;;;;N;;;;; |
+13315;EGYPTIAN HIEROGLYPH T011;Lo;0;L;;;;;N;;;;; |
+13316;EGYPTIAN HIEROGLYPH T011A;Lo;0;L;;;;;N;;;;; |
+13317;EGYPTIAN HIEROGLYPH T012;Lo;0;L;;;;;N;;;;; |
+13318;EGYPTIAN HIEROGLYPH T013;Lo;0;L;;;;;N;;;;; |
+13319;EGYPTIAN HIEROGLYPH T014;Lo;0;L;;;;;N;;;;; |
+1331A;EGYPTIAN HIEROGLYPH T015;Lo;0;L;;;;;N;;;;; |
+1331B;EGYPTIAN HIEROGLYPH T016;Lo;0;L;;;;;N;;;;; |
+1331C;EGYPTIAN HIEROGLYPH T016A;Lo;0;L;;;;;N;;;;; |
+1331D;EGYPTIAN HIEROGLYPH T017;Lo;0;L;;;;;N;;;;; |
+1331E;EGYPTIAN HIEROGLYPH T018;Lo;0;L;;;;;N;;;;; |
+1331F;EGYPTIAN HIEROGLYPH T019;Lo;0;L;;;;;N;;;;; |
+13320;EGYPTIAN HIEROGLYPH T020;Lo;0;L;;;;;N;;;;; |
+13321;EGYPTIAN HIEROGLYPH T021;Lo;0;L;;;;;N;;;;; |
+13322;EGYPTIAN HIEROGLYPH T022;Lo;0;L;;;;;N;;;;; |
+13323;EGYPTIAN HIEROGLYPH T023;Lo;0;L;;;;;N;;;;; |
+13324;EGYPTIAN HIEROGLYPH T024;Lo;0;L;;;;;N;;;;; |
+13325;EGYPTIAN HIEROGLYPH T025;Lo;0;L;;;;;N;;;;; |
+13326;EGYPTIAN HIEROGLYPH T026;Lo;0;L;;;;;N;;;;; |
+13327;EGYPTIAN HIEROGLYPH T027;Lo;0;L;;;;;N;;;;; |
+13328;EGYPTIAN HIEROGLYPH T028;Lo;0;L;;;;;N;;;;; |
+13329;EGYPTIAN HIEROGLYPH T029;Lo;0;L;;;;;N;;;;; |
+1332A;EGYPTIAN HIEROGLYPH T030;Lo;0;L;;;;;N;;;;; |
+1332B;EGYPTIAN HIEROGLYPH T031;Lo;0;L;;;;;N;;;;; |
+1332C;EGYPTIAN HIEROGLYPH T032;Lo;0;L;;;;;N;;;;; |
+1332D;EGYPTIAN HIEROGLYPH T032A;Lo;0;L;;;;;N;;;;; |
+1332E;EGYPTIAN HIEROGLYPH T033;Lo;0;L;;;;;N;;;;; |
+1332F;EGYPTIAN HIEROGLYPH T033A;Lo;0;L;;;;;N;;;;; |
+13330;EGYPTIAN HIEROGLYPH T034;Lo;0;L;;;;;N;;;;; |
+13331;EGYPTIAN HIEROGLYPH T035;Lo;0;L;;;;;N;;;;; |
+13332;EGYPTIAN HIEROGLYPH T036;Lo;0;L;;;;;N;;;;; |
+13333;EGYPTIAN HIEROGLYPH U001;Lo;0;L;;;;;N;;;;; |
+13334;EGYPTIAN HIEROGLYPH U002;Lo;0;L;;;;;N;;;;; |
+13335;EGYPTIAN HIEROGLYPH U003;Lo;0;L;;;;;N;;;;; |
+13336;EGYPTIAN HIEROGLYPH U004;Lo;0;L;;;;;N;;;;; |
+13337;EGYPTIAN HIEROGLYPH U005;Lo;0;L;;;;;N;;;;; |
+13338;EGYPTIAN HIEROGLYPH U006;Lo;0;L;;;;;N;;;;; |
+13339;EGYPTIAN HIEROGLYPH U006A;Lo;0;L;;;;;N;;;;; |
+1333A;EGYPTIAN HIEROGLYPH U006B;Lo;0;L;;;;;N;;;;; |
+1333B;EGYPTIAN HIEROGLYPH U007;Lo;0;L;;;;;N;;;;; |
+1333C;EGYPTIAN HIEROGLYPH U008;Lo;0;L;;;;;N;;;;; |
+1333D;EGYPTIAN HIEROGLYPH U009;Lo;0;L;;;;;N;;;;; |
+1333E;EGYPTIAN HIEROGLYPH U010;Lo;0;L;;;;;N;;;;; |
+1333F;EGYPTIAN HIEROGLYPH U011;Lo;0;L;;;;;N;;;;; |
+13340;EGYPTIAN HIEROGLYPH U012;Lo;0;L;;;;;N;;;;; |
+13341;EGYPTIAN HIEROGLYPH U013;Lo;0;L;;;;;N;;;;; |
+13342;EGYPTIAN HIEROGLYPH U014;Lo;0;L;;;;;N;;;;; |
+13343;EGYPTIAN HIEROGLYPH U015;Lo;0;L;;;;;N;;;;; |
+13344;EGYPTIAN HIEROGLYPH U016;Lo;0;L;;;;;N;;;;; |
+13345;EGYPTIAN HIEROGLYPH U017;Lo;0;L;;;;;N;;;;; |
+13346;EGYPTIAN HIEROGLYPH U018;Lo;0;L;;;;;N;;;;; |
+13347;EGYPTIAN HIEROGLYPH U019;Lo;0;L;;;;;N;;;;; |
+13348;EGYPTIAN HIEROGLYPH U020;Lo;0;L;;;;;N;;;;; |
+13349;EGYPTIAN HIEROGLYPH U021;Lo;0;L;;;;;N;;;;; |
+1334A;EGYPTIAN HIEROGLYPH U022;Lo;0;L;;;;;N;;;;; |
+1334B;EGYPTIAN HIEROGLYPH U023;Lo;0;L;;;;;N;;;;; |
+1334C;EGYPTIAN HIEROGLYPH U023A;Lo;0;L;;;;;N;;;;; |
+1334D;EGYPTIAN HIEROGLYPH U024;Lo;0;L;;;;;N;;;;; |
+1334E;EGYPTIAN HIEROGLYPH U025;Lo;0;L;;;;;N;;;;; |
+1334F;EGYPTIAN HIEROGLYPH U026;Lo;0;L;;;;;N;;;;; |
+13350;EGYPTIAN HIEROGLYPH U027;Lo;0;L;;;;;N;;;;; |
+13351;EGYPTIAN HIEROGLYPH U028;Lo;0;L;;;;;N;;;;; |
+13352;EGYPTIAN HIEROGLYPH U029;Lo;0;L;;;;;N;;;;; |
+13353;EGYPTIAN HIEROGLYPH U029A;Lo;0;L;;;;;N;;;;; |
+13354;EGYPTIAN HIEROGLYPH U030;Lo;0;L;;;;;N;;;;; |
+13355;EGYPTIAN HIEROGLYPH U031;Lo;0;L;;;;;N;;;;; |
+13356;EGYPTIAN HIEROGLYPH U032;Lo;0;L;;;;;N;;;;; |
+13357;EGYPTIAN HIEROGLYPH U032A;Lo;0;L;;;;;N;;;;; |
+13358;EGYPTIAN HIEROGLYPH U033;Lo;0;L;;;;;N;;;;; |
+13359;EGYPTIAN HIEROGLYPH U034;Lo;0;L;;;;;N;;;;; |
+1335A;EGYPTIAN HIEROGLYPH U035;Lo;0;L;;;;;N;;;;; |
+1335B;EGYPTIAN HIEROGLYPH U036;Lo;0;L;;;;;N;;;;; |
+1335C;EGYPTIAN HIEROGLYPH U037;Lo;0;L;;;;;N;;;;; |
+1335D;EGYPTIAN HIEROGLYPH U038;Lo;0;L;;;;;N;;;;; |
+1335E;EGYPTIAN HIEROGLYPH U039;Lo;0;L;;;;;N;;;;; |
+1335F;EGYPTIAN HIEROGLYPH U040;Lo;0;L;;;;;N;;;;; |
+13360;EGYPTIAN HIEROGLYPH U041;Lo;0;L;;;;;N;;;;; |
+13361;EGYPTIAN HIEROGLYPH U042;Lo;0;L;;;;;N;;;;; |
+13362;EGYPTIAN HIEROGLYPH V001;Lo;0;L;;;;;N;;;;; |
+13363;EGYPTIAN HIEROGLYPH V001A;Lo;0;L;;;;;N;;;;; |
+13364;EGYPTIAN HIEROGLYPH V001B;Lo;0;L;;;;;N;;;;; |
+13365;EGYPTIAN HIEROGLYPH V001C;Lo;0;L;;;;;N;;;;; |
+13366;EGYPTIAN HIEROGLYPH V001D;Lo;0;L;;;;;N;;;;; |
+13367;EGYPTIAN HIEROGLYPH V001E;Lo;0;L;;;;;N;;;;; |
+13368;EGYPTIAN HIEROGLYPH V001F;Lo;0;L;;;;;N;;;;; |
+13369;EGYPTIAN HIEROGLYPH V001G;Lo;0;L;;;;;N;;;;; |
+1336A;EGYPTIAN HIEROGLYPH V001H;Lo;0;L;;;;;N;;;;; |
+1336B;EGYPTIAN HIEROGLYPH V001I;Lo;0;L;;;;;N;;;;; |
+1336C;EGYPTIAN HIEROGLYPH V002;Lo;0;L;;;;;N;;;;; |
+1336D;EGYPTIAN HIEROGLYPH V002A;Lo;0;L;;;;;N;;;;; |
+1336E;EGYPTIAN HIEROGLYPH V003;Lo;0;L;;;;;N;;;;; |
+1336F;EGYPTIAN HIEROGLYPH V004;Lo;0;L;;;;;N;;;;; |
+13370;EGYPTIAN HIEROGLYPH V005;Lo;0;L;;;;;N;;;;; |
+13371;EGYPTIAN HIEROGLYPH V006;Lo;0;L;;;;;N;;;;; |
+13372;EGYPTIAN HIEROGLYPH V007;Lo;0;L;;;;;N;;;;; |
+13373;EGYPTIAN HIEROGLYPH V007A;Lo;0;L;;;;;N;;;;; |
+13374;EGYPTIAN HIEROGLYPH V007B;Lo;0;L;;;;;N;;;;; |
+13375;EGYPTIAN HIEROGLYPH V008;Lo;0;L;;;;;N;;;;; |
+13376;EGYPTIAN HIEROGLYPH V009;Lo;0;L;;;;;N;;;;; |
+13377;EGYPTIAN HIEROGLYPH V010;Lo;0;L;;;;;N;;;;; |
+13378;EGYPTIAN HIEROGLYPH V011;Lo;0;L;;;;;N;;;;; |
+13379;EGYPTIAN HIEROGLYPH V011A;Lo;0;L;;;;;N;;;;; |
+1337A;EGYPTIAN HIEROGLYPH V011B;Lo;0;L;;;;;N;;;;; |
+1337B;EGYPTIAN HIEROGLYPH V011C;Lo;0;L;;;;;N;;;;; |
+1337C;EGYPTIAN HIEROGLYPH V012;Lo;0;L;;;;;N;;;;; |
+1337D;EGYPTIAN HIEROGLYPH V012A;Lo;0;L;;;;;N;;;;; |
+1337E;EGYPTIAN HIEROGLYPH V012B;Lo;0;L;;;;;N;;;;; |
+1337F;EGYPTIAN HIEROGLYPH V013;Lo;0;L;;;;;N;;;;; |
+13380;EGYPTIAN HIEROGLYPH V014;Lo;0;L;;;;;N;;;;; |
+13381;EGYPTIAN HIEROGLYPH V015;Lo;0;L;;;;;N;;;;; |
+13382;EGYPTIAN HIEROGLYPH V016;Lo;0;L;;;;;N;;;;; |
+13383;EGYPTIAN HIEROGLYPH V017;Lo;0;L;;;;;N;;;;; |
+13384;EGYPTIAN HIEROGLYPH V018;Lo;0;L;;;;;N;;;;; |
+13385;EGYPTIAN HIEROGLYPH V019;Lo;0;L;;;;;N;;;;; |
+13386;EGYPTIAN HIEROGLYPH V020;Lo;0;L;;;;;N;;;;; |
+13387;EGYPTIAN HIEROGLYPH V020A;Lo;0;L;;;;;N;;;;; |
+13388;EGYPTIAN HIEROGLYPH V020B;Lo;0;L;;;;;N;;;;; |
+13389;EGYPTIAN HIEROGLYPH V020C;Lo;0;L;;;;;N;;;;; |
+1338A;EGYPTIAN HIEROGLYPH V020D;Lo;0;L;;;;;N;;;;; |
+1338B;EGYPTIAN HIEROGLYPH V020E;Lo;0;L;;;;;N;;;;; |
+1338C;EGYPTIAN HIEROGLYPH V020F;Lo;0;L;;;;;N;;;;; |
+1338D;EGYPTIAN HIEROGLYPH V020G;Lo;0;L;;;;;N;;;;; |
+1338E;EGYPTIAN HIEROGLYPH V020H;Lo;0;L;;;;;N;;;;; |
+1338F;EGYPTIAN HIEROGLYPH V020I;Lo;0;L;;;;;N;;;;; |
+13390;EGYPTIAN HIEROGLYPH V020J;Lo;0;L;;;;;N;;;;; |
+13391;EGYPTIAN HIEROGLYPH V020K;Lo;0;L;;;;;N;;;;; |
+13392;EGYPTIAN HIEROGLYPH V020L;Lo;0;L;;;;;N;;;;; |
+13393;EGYPTIAN HIEROGLYPH V021;Lo;0;L;;;;;N;;;;; |
+13394;EGYPTIAN HIEROGLYPH V022;Lo;0;L;;;;;N;;;;; |
+13395;EGYPTIAN HIEROGLYPH V023;Lo;0;L;;;;;N;;;;; |
+13396;EGYPTIAN HIEROGLYPH V023A;Lo;0;L;;;;;N;;;;; |
+13397;EGYPTIAN HIEROGLYPH V024;Lo;0;L;;;;;N;;;;; |
+13398;EGYPTIAN HIEROGLYPH V025;Lo;0;L;;;;;N;;;;; |
+13399;EGYPTIAN HIEROGLYPH V026;Lo;0;L;;;;;N;;;;; |
+1339A;EGYPTIAN HIEROGLYPH V027;Lo;0;L;;;;;N;;;;; |
+1339B;EGYPTIAN HIEROGLYPH V028;Lo;0;L;;;;;N;;;;; |
+1339C;EGYPTIAN HIEROGLYPH V028A;Lo;0;L;;;;;N;;;;; |
+1339D;EGYPTIAN HIEROGLYPH V029;Lo;0;L;;;;;N;;;;; |
+1339E;EGYPTIAN HIEROGLYPH V029A;Lo;0;L;;;;;N;;;;; |
+1339F;EGYPTIAN HIEROGLYPH V030;Lo;0;L;;;;;N;;;;; |
+133A0;EGYPTIAN HIEROGLYPH V030A;Lo;0;L;;;;;N;;;;; |
+133A1;EGYPTIAN HIEROGLYPH V031;Lo;0;L;;;;;N;;;;; |
+133A2;EGYPTIAN HIEROGLYPH V031A;Lo;0;L;;;;;N;;;;; |
+133A3;EGYPTIAN HIEROGLYPH V032;Lo;0;L;;;;;N;;;;; |
+133A4;EGYPTIAN HIEROGLYPH V033;Lo;0;L;;;;;N;;;;; |
+133A5;EGYPTIAN HIEROGLYPH V033A;Lo;0;L;;;;;N;;;;; |
+133A6;EGYPTIAN HIEROGLYPH V034;Lo;0;L;;;;;N;;;;; |
+133A7;EGYPTIAN HIEROGLYPH V035;Lo;0;L;;;;;N;;;;; |
+133A8;EGYPTIAN HIEROGLYPH V036;Lo;0;L;;;;;N;;;;; |
+133A9;EGYPTIAN HIEROGLYPH V037;Lo;0;L;;;;;N;;;;; |
+133AA;EGYPTIAN HIEROGLYPH V037A;Lo;0;L;;;;;N;;;;; |
+133AB;EGYPTIAN HIEROGLYPH V038;Lo;0;L;;;;;N;;;;; |
+133AC;EGYPTIAN HIEROGLYPH V039;Lo;0;L;;;;;N;;;;; |
+133AD;EGYPTIAN HIEROGLYPH V040;Lo;0;L;;;;;N;;;;; |
+133AE;EGYPTIAN HIEROGLYPH V040A;Lo;0;L;;;;;N;;;;; |
+133AF;EGYPTIAN HIEROGLYPH W001;Lo;0;L;;;;;N;;;;; |
+133B0;EGYPTIAN HIEROGLYPH W002;Lo;0;L;;;;;N;;;;; |
+133B1;EGYPTIAN HIEROGLYPH W003;Lo;0;L;;;;;N;;;;; |
+133B2;EGYPTIAN HIEROGLYPH W003A;Lo;0;L;;;;;N;;;;; |
+133B3;EGYPTIAN HIEROGLYPH W004;Lo;0;L;;;;;N;;;;; |
+133B4;EGYPTIAN HIEROGLYPH W005;Lo;0;L;;;;;N;;;;; |
+133B5;EGYPTIAN HIEROGLYPH W006;Lo;0;L;;;;;N;;;;; |
+133B6;EGYPTIAN HIEROGLYPH W007;Lo;0;L;;;;;N;;;;; |
+133B7;EGYPTIAN HIEROGLYPH W008;Lo;0;L;;;;;N;;;;; |
+133B8;EGYPTIAN HIEROGLYPH W009;Lo;0;L;;;;;N;;;;; |
+133B9;EGYPTIAN HIEROGLYPH W009A;Lo;0;L;;;;;N;;;;; |
+133BA;EGYPTIAN HIEROGLYPH W010;Lo;0;L;;;;;N;;;;; |
+133BB;EGYPTIAN HIEROGLYPH W010A;Lo;0;L;;;;;N;;;;; |
+133BC;EGYPTIAN HIEROGLYPH W011;Lo;0;L;;;;;N;;;;; |
+133BD;EGYPTIAN HIEROGLYPH W012;Lo;0;L;;;;;N;;;;; |
+133BE;EGYPTIAN HIEROGLYPH W013;Lo;0;L;;;;;N;;;;; |
+133BF;EGYPTIAN HIEROGLYPH W014;Lo;0;L;;;;;N;;;;; |
+133C0;EGYPTIAN HIEROGLYPH W014A;Lo;0;L;;;;;N;;;;; |
+133C1;EGYPTIAN HIEROGLYPH W015;Lo;0;L;;;;;N;;;;; |
+133C2;EGYPTIAN HIEROGLYPH W016;Lo;0;L;;;;;N;;;;; |
+133C3;EGYPTIAN HIEROGLYPH W017;Lo;0;L;;;;;N;;;;; |
+133C4;EGYPTIAN HIEROGLYPH W017A;Lo;0;L;;;;;N;;;;; |
+133C5;EGYPTIAN HIEROGLYPH W018;Lo;0;L;;;;;N;;;;; |
+133C6;EGYPTIAN HIEROGLYPH W018A;Lo;0;L;;;;;N;;;;; |
+133C7;EGYPTIAN HIEROGLYPH W019;Lo;0;L;;;;;N;;;;; |
+133C8;EGYPTIAN HIEROGLYPH W020;Lo;0;L;;;;;N;;;;; |
+133C9;EGYPTIAN HIEROGLYPH W021;Lo;0;L;;;;;N;;;;; |
+133CA;EGYPTIAN HIEROGLYPH W022;Lo;0;L;;;;;N;;;;; |
+133CB;EGYPTIAN HIEROGLYPH W023;Lo;0;L;;;;;N;;;;; |
+133CC;EGYPTIAN HIEROGLYPH W024;Lo;0;L;;;;;N;;;;; |
+133CD;EGYPTIAN HIEROGLYPH W024A;Lo;0;L;;;;;N;;;;; |
+133CE;EGYPTIAN HIEROGLYPH W025;Lo;0;L;;;;;N;;;;; |
+133CF;EGYPTIAN HIEROGLYPH X001;Lo;0;L;;;;;N;;;;; |
+133D0;EGYPTIAN HIEROGLYPH X002;Lo;0;L;;;;;N;;;;; |
+133D1;EGYPTIAN HIEROGLYPH X003;Lo;0;L;;;;;N;;;;; |
+133D2;EGYPTIAN HIEROGLYPH X004;Lo;0;L;;;;;N;;;;; |
+133D3;EGYPTIAN HIEROGLYPH X004A;Lo;0;L;;;;;N;;;;; |
+133D4;EGYPTIAN HIEROGLYPH X004B;Lo;0;L;;;;;N;;;;; |
+133D5;EGYPTIAN HIEROGLYPH X005;Lo;0;L;;;;;N;;;;; |
+133D6;EGYPTIAN HIEROGLYPH X006;Lo;0;L;;;;;N;;;;; |
+133D7;EGYPTIAN HIEROGLYPH X006A;Lo;0;L;;;;;N;;;;; |
+133D8;EGYPTIAN HIEROGLYPH X007;Lo;0;L;;;;;N;;;;; |
+133D9;EGYPTIAN HIEROGLYPH X008;Lo;0;L;;;;;N;;;;; |
+133DA;EGYPTIAN HIEROGLYPH X008A;Lo;0;L;;;;;N;;;;; |
+133DB;EGYPTIAN HIEROGLYPH Y001;Lo;0;L;;;;;N;;;;; |
+133DC;EGYPTIAN HIEROGLYPH Y001A;Lo;0;L;;;;;N;;;;; |
+133DD;EGYPTIAN HIEROGLYPH Y002;Lo;0;L;;;;;N;;;;; |
+133DE;EGYPTIAN HIEROGLYPH Y003;Lo;0;L;;;;;N;;;;; |
+133DF;EGYPTIAN HIEROGLYPH Y004;Lo;0;L;;;;;N;;;;; |
+133E0;EGYPTIAN HIEROGLYPH Y005;Lo;0;L;;;;;N;;;;; |
+133E1;EGYPTIAN HIEROGLYPH Y006;Lo;0;L;;;;;N;;;;; |
+133E2;EGYPTIAN HIEROGLYPH Y007;Lo;0;L;;;;;N;;;;; |
+133E3;EGYPTIAN HIEROGLYPH Y008;Lo;0;L;;;;;N;;;;; |
+133E4;EGYPTIAN HIEROGLYPH Z001;Lo;0;L;;;;;N;;;;; |
+133E5;EGYPTIAN HIEROGLYPH Z002;Lo;0;L;;;;;N;;;;; |
+133E6;EGYPTIAN HIEROGLYPH Z002A;Lo;0;L;;;;;N;;;;; |
+133E7;EGYPTIAN HIEROGLYPH Z002B;Lo;0;L;;;;;N;;;;; |
+133E8;EGYPTIAN HIEROGLYPH Z002C;Lo;0;L;;;;;N;;;;; |
+133E9;EGYPTIAN HIEROGLYPH Z002D;Lo;0;L;;;;;N;;;;; |
+133EA;EGYPTIAN HIEROGLYPH Z003;Lo;0;L;;;;;N;;;;; |
+133EB;EGYPTIAN HIEROGLYPH Z003A;Lo;0;L;;;;;N;;;;; |
+133EC;EGYPTIAN HIEROGLYPH Z003B;Lo;0;L;;;;;N;;;;; |
+133ED;EGYPTIAN HIEROGLYPH Z004;Lo;0;L;;;;;N;;;;; |
+133EE;EGYPTIAN HIEROGLYPH Z004A;Lo;0;L;;;;;N;;;;; |
+133EF;EGYPTIAN HIEROGLYPH Z005;Lo;0;L;;;;;N;;;;; |
+133F0;EGYPTIAN HIEROGLYPH Z005A;Lo;0;L;;;;;N;;;;; |
+133F1;EGYPTIAN HIEROGLYPH Z006;Lo;0;L;;;;;N;;;;; |
+133F2;EGYPTIAN HIEROGLYPH Z007;Lo;0;L;;;;;N;;;;; |
+133F3;EGYPTIAN HIEROGLYPH Z008;Lo;0;L;;;;;N;;;;; |
+133F4;EGYPTIAN HIEROGLYPH Z009;Lo;0;L;;;;;N;;;;; |
+133F5;EGYPTIAN HIEROGLYPH Z010;Lo;0;L;;;;;N;;;;; |
+133F6;EGYPTIAN HIEROGLYPH Z011;Lo;0;L;;;;;N;;;;; |
+133F7;EGYPTIAN HIEROGLYPH Z012;Lo;0;L;;;;;N;;;;; |
+133F8;EGYPTIAN HIEROGLYPH Z013;Lo;0;L;;;;;N;;;;; |
+133F9;EGYPTIAN HIEROGLYPH Z014;Lo;0;L;;;;;N;;;;; |
+133FA;EGYPTIAN HIEROGLYPH Z015;Lo;0;L;;;;;N;;;;; |
+133FB;EGYPTIAN HIEROGLYPH Z015A;Lo;0;L;;;;;N;;;;; |
+133FC;EGYPTIAN HIEROGLYPH Z015B;Lo;0;L;;;;;N;;;;; |
+133FD;EGYPTIAN HIEROGLYPH Z015C;Lo;0;L;;;;;N;;;;; |
+133FE;EGYPTIAN HIEROGLYPH Z015D;Lo;0;L;;;;;N;;;;; |
+133FF;EGYPTIAN HIEROGLYPH Z015E;Lo;0;L;;;;;N;;;;; |
+13400;EGYPTIAN HIEROGLYPH Z015F;Lo;0;L;;;;;N;;;;; |
+13401;EGYPTIAN HIEROGLYPH Z015G;Lo;0;L;;;;;N;;;;; |
+13402;EGYPTIAN HIEROGLYPH Z015H;Lo;0;L;;;;;N;;;;; |
+13403;EGYPTIAN HIEROGLYPH Z015I;Lo;0;L;;;;;N;;;;; |
+13404;EGYPTIAN HIEROGLYPH Z016;Lo;0;L;;;;;N;;;;; |
+13405;EGYPTIAN HIEROGLYPH Z016A;Lo;0;L;;;;;N;;;;; |
+13406;EGYPTIAN HIEROGLYPH Z016B;Lo;0;L;;;;;N;;;;; |
+13407;EGYPTIAN HIEROGLYPH Z016C;Lo;0;L;;;;;N;;;;; |
+13408;EGYPTIAN HIEROGLYPH Z016D;Lo;0;L;;;;;N;;;;; |
+13409;EGYPTIAN HIEROGLYPH Z016E;Lo;0;L;;;;;N;;;;; |
+1340A;EGYPTIAN HIEROGLYPH Z016F;Lo;0;L;;;;;N;;;;; |
+1340B;EGYPTIAN HIEROGLYPH Z016G;Lo;0;L;;;;;N;;;;; |
+1340C;EGYPTIAN HIEROGLYPH Z016H;Lo;0;L;;;;;N;;;;; |
+1340D;EGYPTIAN HIEROGLYPH AA001;Lo;0;L;;;;;N;;;;; |
+1340E;EGYPTIAN HIEROGLYPH AA002;Lo;0;L;;;;;N;;;;; |
+1340F;EGYPTIAN HIEROGLYPH AA003;Lo;0;L;;;;;N;;;;; |
+13410;EGYPTIAN HIEROGLYPH AA004;Lo;0;L;;;;;N;;;;; |
+13411;EGYPTIAN HIEROGLYPH AA005;Lo;0;L;;;;;N;;;;; |
+13412;EGYPTIAN HIEROGLYPH AA006;Lo;0;L;;;;;N;;;;; |
+13413;EGYPTIAN HIEROGLYPH AA007;Lo;0;L;;;;;N;;;;; |
+13414;EGYPTIAN HIEROGLYPH AA007A;Lo;0;L;;;;;N;;;;; |
+13415;EGYPTIAN HIEROGLYPH AA007B;Lo;0;L;;;;;N;;;;; |
+13416;EGYPTIAN HIEROGLYPH AA008;Lo;0;L;;;;;N;;;;; |
+13417;EGYPTIAN HIEROGLYPH AA009;Lo;0;L;;;;;N;;;;; |
+13418;EGYPTIAN HIEROGLYPH AA010;Lo;0;L;;;;;N;;;;; |
+13419;EGYPTIAN HIEROGLYPH AA011;Lo;0;L;;;;;N;;;;; |
+1341A;EGYPTIAN HIEROGLYPH AA012;Lo;0;L;;;;;N;;;;; |
+1341B;EGYPTIAN HIEROGLYPH AA013;Lo;0;L;;;;;N;;;;; |
+1341C;EGYPTIAN HIEROGLYPH AA014;Lo;0;L;;;;;N;;;;; |
+1341D;EGYPTIAN HIEROGLYPH AA015;Lo;0;L;;;;;N;;;;; |
+1341E;EGYPTIAN HIEROGLYPH AA016;Lo;0;L;;;;;N;;;;; |
+1341F;EGYPTIAN HIEROGLYPH AA017;Lo;0;L;;;;;N;;;;; |
+13420;EGYPTIAN HIEROGLYPH AA018;Lo;0;L;;;;;N;;;;; |
+13421;EGYPTIAN HIEROGLYPH AA019;Lo;0;L;;;;;N;;;;; |
+13422;EGYPTIAN HIEROGLYPH AA020;Lo;0;L;;;;;N;;;;; |
+13423;EGYPTIAN HIEROGLYPH AA021;Lo;0;L;;;;;N;;;;; |
+13424;EGYPTIAN HIEROGLYPH AA022;Lo;0;L;;;;;N;;;;; |
+13425;EGYPTIAN HIEROGLYPH AA023;Lo;0;L;;;;;N;;;;; |
+13426;EGYPTIAN HIEROGLYPH AA024;Lo;0;L;;;;;N;;;;; |
+13427;EGYPTIAN HIEROGLYPH AA025;Lo;0;L;;;;;N;;;;; |
+13428;EGYPTIAN HIEROGLYPH AA026;Lo;0;L;;;;;N;;;;; |
+13429;EGYPTIAN HIEROGLYPH AA027;Lo;0;L;;;;;N;;;;; |
+1342A;EGYPTIAN HIEROGLYPH AA028;Lo;0;L;;;;;N;;;;; |
+1342B;EGYPTIAN HIEROGLYPH AA029;Lo;0;L;;;;;N;;;;; |
+1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;; |
+1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;; |
+1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;; |
+16800;BAMUM LETTER PHASE-A NGKUE MFON;Lo;0;L;;;;;N;;;;; |
+16801;BAMUM LETTER PHASE-A GBIEE FON;Lo;0;L;;;;;N;;;;; |
+16802;BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE;Lo;0;L;;;;;N;;;;; |
+16803;BAMUM LETTER PHASE-A PON MFON PIPAEMBA;Lo;0;L;;;;;N;;;;; |
+16804;BAMUM LETTER PHASE-A NAA MFON;Lo;0;L;;;;;N;;;;; |
+16805;BAMUM LETTER PHASE-A SHUENSHUET;Lo;0;L;;;;;N;;;;; |
+16806;BAMUM LETTER PHASE-A TITA MFON;Lo;0;L;;;;;N;;;;; |
+16807;BAMUM LETTER PHASE-A NZA MFON;Lo;0;L;;;;;N;;;;; |
+16808;BAMUM LETTER PHASE-A SHINDA PA NJI;Lo;0;L;;;;;N;;;;; |
+16809;BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE;Lo;0;L;;;;;N;;;;; |
+1680A;BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA;Lo;0;L;;;;;N;;;;; |
+1680B;BAMUM LETTER PHASE-A MAEMBGBIEE;Lo;0;L;;;;;N;;;;; |
+1680C;BAMUM LETTER PHASE-A TU MAEMBA;Lo;0;L;;;;;N;;;;; |
+1680D;BAMUM LETTER PHASE-A NGANGU;Lo;0;L;;;;;N;;;;; |
+1680E;BAMUM LETTER PHASE-A MAEMVEUX;Lo;0;L;;;;;N;;;;; |
+1680F;BAMUM LETTER PHASE-A MANSUAE;Lo;0;L;;;;;N;;;;; |
+16810;BAMUM LETTER PHASE-A MVEUAENGAM;Lo;0;L;;;;;N;;;;; |
+16811;BAMUM LETTER PHASE-A SEUNYAM;Lo;0;L;;;;;N;;;;; |
+16812;BAMUM LETTER PHASE-A NTOQPEN;Lo;0;L;;;;;N;;;;; |
+16813;BAMUM LETTER PHASE-A KEUKEUTNDA;Lo;0;L;;;;;N;;;;; |
+16814;BAMUM LETTER PHASE-A NKINDI;Lo;0;L;;;;;N;;;;; |
+16815;BAMUM LETTER PHASE-A SUU;Lo;0;L;;;;;N;;;;; |
+16816;BAMUM LETTER PHASE-A NGKUENZEUM;Lo;0;L;;;;;N;;;;; |
+16817;BAMUM LETTER PHASE-A LAPAQ;Lo;0;L;;;;;N;;;;; |
+16818;BAMUM LETTER PHASE-A LET KUT;Lo;0;L;;;;;N;;;;; |
+16819;BAMUM LETTER PHASE-A NTAP MFAA;Lo;0;L;;;;;N;;;;; |
+1681A;BAMUM LETTER PHASE-A MAEKEUP;Lo;0;L;;;;;N;;;;; |
+1681B;BAMUM LETTER PHASE-A PASHAE;Lo;0;L;;;;;N;;;;; |
+1681C;BAMUM LETTER PHASE-A GHEUAERAE;Lo;0;L;;;;;N;;;;; |
+1681D;BAMUM LETTER PHASE-A PAMSHAE;Lo;0;L;;;;;N;;;;; |
+1681E;BAMUM LETTER PHASE-A MON NGGEUAET;Lo;0;L;;;;;N;;;;; |
+1681F;BAMUM LETTER PHASE-A NZUN MEUT;Lo;0;L;;;;;N;;;;; |
+16820;BAMUM LETTER PHASE-A U YUQ NAE;Lo;0;L;;;;;N;;;;; |
+16821;BAMUM LETTER PHASE-A GHEUAEGHEUAE;Lo;0;L;;;;;N;;;;; |
+16822;BAMUM LETTER PHASE-A NTAP NTAA;Lo;0;L;;;;;N;;;;; |
+16823;BAMUM LETTER PHASE-A SISA;Lo;0;L;;;;;N;;;;; |
+16824;BAMUM LETTER PHASE-A MGBASA;Lo;0;L;;;;;N;;;;; |
+16825;BAMUM LETTER PHASE-A MEUNJOMNDEUQ;Lo;0;L;;;;;N;;;;; |
+16826;BAMUM LETTER PHASE-A MOOMPUQ;Lo;0;L;;;;;N;;;;; |
+16827;BAMUM LETTER PHASE-A KAFA;Lo;0;L;;;;;N;;;;; |
+16828;BAMUM LETTER PHASE-A PA LEERAEWA;Lo;0;L;;;;;N;;;;; |
+16829;BAMUM LETTER PHASE-A NDA LEERAEWA;Lo;0;L;;;;;N;;;;; |
+1682A;BAMUM LETTER PHASE-A PET;Lo;0;L;;;;;N;;;;; |
+1682B;BAMUM LETTER PHASE-A MAEMKPEN;Lo;0;L;;;;;N;;;;; |
+1682C;BAMUM LETTER PHASE-A NIKA;Lo;0;L;;;;;N;;;;; |
+1682D;BAMUM LETTER PHASE-A PUP;Lo;0;L;;;;;N;;;;; |
+1682E;BAMUM LETTER PHASE-A TUAEP;Lo;0;L;;;;;N;;;;; |
+1682F;BAMUM LETTER PHASE-A LUAEP;Lo;0;L;;;;;N;;;;; |
+16830;BAMUM LETTER PHASE-A SONJAM;Lo;0;L;;;;;N;;;;; |
+16831;BAMUM LETTER PHASE-A TEUTEUWEN;Lo;0;L;;;;;N;;;;; |
+16832;BAMUM LETTER PHASE-A MAENYI;Lo;0;L;;;;;N;;;;; |
+16833;BAMUM LETTER PHASE-A KET;Lo;0;L;;;;;N;;;;; |
+16834;BAMUM LETTER PHASE-A NDAANGGEUAET;Lo;0;L;;;;;N;;;;; |
+16835;BAMUM LETTER PHASE-A KUOQ;Lo;0;L;;;;;N;;;;; |
+16836;BAMUM LETTER PHASE-A MOOMEUT;Lo;0;L;;;;;N;;;;; |
+16837;BAMUM LETTER PHASE-A SHUM;Lo;0;L;;;;;N;;;;; |
+16838;BAMUM LETTER PHASE-A LOMMAE;Lo;0;L;;;;;N;;;;; |
+16839;BAMUM LETTER PHASE-A FIRI;Lo;0;L;;;;;N;;;;; |
+1683A;BAMUM LETTER PHASE-A ROM;Lo;0;L;;;;;N;;;;; |
+1683B;BAMUM LETTER PHASE-A KPOQ;Lo;0;L;;;;;N;;;;; |
+1683C;BAMUM LETTER PHASE-A SOQ;Lo;0;L;;;;;N;;;;; |
+1683D;BAMUM LETTER PHASE-A MAP PIEET;Lo;0;L;;;;;N;;;;; |
+1683E;BAMUM LETTER PHASE-A SHIRAE;Lo;0;L;;;;;N;;;;; |
+1683F;BAMUM LETTER PHASE-A NTAP;Lo;0;L;;;;;N;;;;; |
+16840;BAMUM LETTER PHASE-A SHOQ NSHUT YUM;Lo;0;L;;;;;N;;;;; |
+16841;BAMUM LETTER PHASE-A NYIT MONGKEUAEQ;Lo;0;L;;;;;N;;;;; |
+16842;BAMUM LETTER PHASE-A PAARAE;Lo;0;L;;;;;N;;;;; |
+16843;BAMUM LETTER PHASE-A NKAARAE;Lo;0;L;;;;;N;;;;; |
+16844;BAMUM LETTER PHASE-A UNKNOWN;Lo;0;L;;;;;N;;;;; |
+16845;BAMUM LETTER PHASE-A NGGEN;Lo;0;L;;;;;N;;;;; |
+16846;BAMUM LETTER PHASE-A MAESI;Lo;0;L;;;;;N;;;;; |
+16847;BAMUM LETTER PHASE-A NJAM;Lo;0;L;;;;;N;;;;; |
+16848;BAMUM LETTER PHASE-A MBANYI;Lo;0;L;;;;;N;;;;; |
+16849;BAMUM LETTER PHASE-A NYET;Lo;0;L;;;;;N;;;;; |
+1684A;BAMUM LETTER PHASE-A TEUAEN;Lo;0;L;;;;;N;;;;; |
+1684B;BAMUM LETTER PHASE-A SOT;Lo;0;L;;;;;N;;;;; |
+1684C;BAMUM LETTER PHASE-A PAAM;Lo;0;L;;;;;N;;;;; |
+1684D;BAMUM LETTER PHASE-A NSHIEE;Lo;0;L;;;;;N;;;;; |
+1684E;BAMUM LETTER PHASE-A MAEM;Lo;0;L;;;;;N;;;;; |
+1684F;BAMUM LETTER PHASE-A NYI;Lo;0;L;;;;;N;;;;; |
+16850;BAMUM LETTER PHASE-A KAQ;Lo;0;L;;;;;N;;;;; |
+16851;BAMUM LETTER PHASE-A NSHA;Lo;0;L;;;;;N;;;;; |
+16852;BAMUM LETTER PHASE-A VEE;Lo;0;L;;;;;N;;;;; |
+16853;BAMUM LETTER PHASE-A LU;Lo;0;L;;;;;N;;;;; |
+16854;BAMUM LETTER PHASE-A NEN;Lo;0;L;;;;;N;;;;; |
+16855;BAMUM LETTER PHASE-A NAQ;Lo;0;L;;;;;N;;;;; |
+16856;BAMUM LETTER PHASE-A MBAQ;Lo;0;L;;;;;N;;;;; |
+16857;BAMUM LETTER PHASE-B NSHUET;Lo;0;L;;;;;N;;;;; |
+16858;BAMUM LETTER PHASE-B TU MAEMGBIEE;Lo;0;L;;;;;N;;;;; |
+16859;BAMUM LETTER PHASE-B SIEE;Lo;0;L;;;;;N;;;;; |
+1685A;BAMUM LETTER PHASE-B SET TU;Lo;0;L;;;;;N;;;;; |
+1685B;BAMUM LETTER PHASE-B LOM NTEUM;Lo;0;L;;;;;N;;;;; |
+1685C;BAMUM LETTER PHASE-B MBA MAELEE;Lo;0;L;;;;;N;;;;; |
+1685D;BAMUM LETTER PHASE-B KIEEM;Lo;0;L;;;;;N;;;;; |
+1685E;BAMUM LETTER PHASE-B YEURAE;Lo;0;L;;;;;N;;;;; |
+1685F;BAMUM LETTER PHASE-B MBAARAE;Lo;0;L;;;;;N;;;;; |
+16860;BAMUM LETTER PHASE-B KAM;Lo;0;L;;;;;N;;;;; |
+16861;BAMUM LETTER PHASE-B PEESHI;Lo;0;L;;;;;N;;;;; |
+16862;BAMUM LETTER PHASE-B YAFU LEERAEWA;Lo;0;L;;;;;N;;;;; |
+16863;BAMUM LETTER PHASE-B LAM NSHUT NYAM;Lo;0;L;;;;;N;;;;; |
+16864;BAMUM LETTER PHASE-B NTIEE SHEUOQ;Lo;0;L;;;;;N;;;;; |
+16865;BAMUM LETTER PHASE-B NDU NJAA;Lo;0;L;;;;;N;;;;; |
+16866;BAMUM LETTER PHASE-B GHEUGHEUAEM;Lo;0;L;;;;;N;;;;; |
+16867;BAMUM LETTER PHASE-B PIT;Lo;0;L;;;;;N;;;;; |
+16868;BAMUM LETTER PHASE-B TU NSIEE;Lo;0;L;;;;;N;;;;; |
+16869;BAMUM LETTER PHASE-B SHET NJAQ;Lo;0;L;;;;;N;;;;; |
+1686A;BAMUM LETTER PHASE-B SHEUAEQTU;Lo;0;L;;;;;N;;;;; |
+1686B;BAMUM LETTER PHASE-B MFON TEUAEQ;Lo;0;L;;;;;N;;;;; |
+1686C;BAMUM LETTER PHASE-B MBIT MBAAKET;Lo;0;L;;;;;N;;;;; |
+1686D;BAMUM LETTER PHASE-B NYI NTEUM;Lo;0;L;;;;;N;;;;; |
+1686E;BAMUM LETTER PHASE-B KEUPUQ;Lo;0;L;;;;;N;;;;; |
+1686F;BAMUM LETTER PHASE-B GHEUGHEN;Lo;0;L;;;;;N;;;;; |
+16870;BAMUM LETTER PHASE-B KEUYEUX;Lo;0;L;;;;;N;;;;; |
+16871;BAMUM LETTER PHASE-B LAANAE;Lo;0;L;;;;;N;;;;; |
+16872;BAMUM LETTER PHASE-B PARUM;Lo;0;L;;;;;N;;;;; |
+16873;BAMUM LETTER PHASE-B VEUM;Lo;0;L;;;;;N;;;;; |
+16874;BAMUM LETTER PHASE-B NGKINDI MVOP;Lo;0;L;;;;;N;;;;; |
+16875;BAMUM LETTER PHASE-B NGGEU MBU;Lo;0;L;;;;;N;;;;; |
+16876;BAMUM LETTER PHASE-B WUAET;Lo;0;L;;;;;N;;;;; |
+16877;BAMUM LETTER PHASE-B SAKEUAE;Lo;0;L;;;;;N;;;;; |
+16878;BAMUM LETTER PHASE-B TAAM;Lo;0;L;;;;;N;;;;; |
+16879;BAMUM LETTER PHASE-B MEUQ;Lo;0;L;;;;;N;;;;; |
+1687A;BAMUM LETTER PHASE-B NGGUOQ;Lo;0;L;;;;;N;;;;; |
+1687B;BAMUM LETTER PHASE-B NGGUOQ LARGE;Lo;0;L;;;;;N;;;;; |
+1687C;BAMUM LETTER PHASE-B MFIYAQ;Lo;0;L;;;;;N;;;;; |
+1687D;BAMUM LETTER PHASE-B SUE;Lo;0;L;;;;;N;;;;; |
+1687E;BAMUM LETTER PHASE-B MBEURI;Lo;0;L;;;;;N;;;;; |
+1687F;BAMUM LETTER PHASE-B MONTIEEN;Lo;0;L;;;;;N;;;;; |
+16880;BAMUM LETTER PHASE-B NYAEMAE;Lo;0;L;;;;;N;;;;; |
+16881;BAMUM LETTER PHASE-B PUNGAAM;Lo;0;L;;;;;N;;;;; |
+16882;BAMUM LETTER PHASE-B MEUT NGGEET;Lo;0;L;;;;;N;;;;; |
+16883;BAMUM LETTER PHASE-B FEUX;Lo;0;L;;;;;N;;;;; |
+16884;BAMUM LETTER PHASE-B MBUOQ;Lo;0;L;;;;;N;;;;; |
+16885;BAMUM LETTER PHASE-B FEE;Lo;0;L;;;;;N;;;;; |
+16886;BAMUM LETTER PHASE-B KEUAEM;Lo;0;L;;;;;N;;;;; |
+16887;BAMUM LETTER PHASE-B MA NJEUAENA;Lo;0;L;;;;;N;;;;; |
+16888;BAMUM LETTER PHASE-B MA NJUQA;Lo;0;L;;;;;N;;;;; |
+16889;BAMUM LETTER PHASE-B LET;Lo;0;L;;;;;N;;;;; |
+1688A;BAMUM LETTER PHASE-B NGGAAM;Lo;0;L;;;;;N;;;;; |
+1688B;BAMUM LETTER PHASE-B NSEN;Lo;0;L;;;;;N;;;;; |
+1688C;BAMUM LETTER PHASE-B MA;Lo;0;L;;;;;N;;;;; |
+1688D;BAMUM LETTER PHASE-B KIQ;Lo;0;L;;;;;N;;;;; |
+1688E;BAMUM LETTER PHASE-B NGOM;Lo;0;L;;;;;N;;;;; |
+1688F;BAMUM LETTER PHASE-C NGKUE MAEMBA;Lo;0;L;;;;;N;;;;; |
+16890;BAMUM LETTER PHASE-C NZA;Lo;0;L;;;;;N;;;;; |
+16891;BAMUM LETTER PHASE-C YUM;Lo;0;L;;;;;N;;;;; |
+16892;BAMUM LETTER PHASE-C WANGKUOQ;Lo;0;L;;;;;N;;;;; |
+16893;BAMUM LETTER PHASE-C NGGEN;Lo;0;L;;;;;N;;;;; |
+16894;BAMUM LETTER PHASE-C NDEUAEREE;Lo;0;L;;;;;N;;;;; |
+16895;BAMUM LETTER PHASE-C NGKAQ;Lo;0;L;;;;;N;;;;; |
+16896;BAMUM LETTER PHASE-C GHARAE;Lo;0;L;;;;;N;;;;; |
+16897;BAMUM LETTER PHASE-C MBEEKEET;Lo;0;L;;;;;N;;;;; |
+16898;BAMUM LETTER PHASE-C GBAYI;Lo;0;L;;;;;N;;;;; |
+16899;BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN;Lo;0;L;;;;;N;;;;; |
+1689A;BAMUM LETTER PHASE-C NTU MBIT;Lo;0;L;;;;;N;;;;; |
+1689B;BAMUM LETTER PHASE-C MBEUM;Lo;0;L;;;;;N;;;;; |
+1689C;BAMUM LETTER PHASE-C PIRIEEN;Lo;0;L;;;;;N;;;;; |
+1689D;BAMUM LETTER PHASE-C NDOMBU;Lo;0;L;;;;;N;;;;; |
+1689E;BAMUM LETTER PHASE-C MBAA CABBAGE-TREE;Lo;0;L;;;;;N;;;;; |
+1689F;BAMUM LETTER PHASE-C KEUSHEUAEP;Lo;0;L;;;;;N;;;;; |
+168A0;BAMUM LETTER PHASE-C GHAP;Lo;0;L;;;;;N;;;;; |
+168A1;BAMUM LETTER PHASE-C KEUKAQ;Lo;0;L;;;;;N;;;;; |
+168A2;BAMUM LETTER PHASE-C YU MUOMAE;Lo;0;L;;;;;N;;;;; |
+168A3;BAMUM LETTER PHASE-C NZEUM;Lo;0;L;;;;;N;;;;; |
+168A4;BAMUM LETTER PHASE-C MBUE;Lo;0;L;;;;;N;;;;; |
+168A5;BAMUM LETTER PHASE-C NSEUAEN;Lo;0;L;;;;;N;;;;; |
+168A6;BAMUM LETTER PHASE-C MBIT;Lo;0;L;;;;;N;;;;; |
+168A7;BAMUM LETTER PHASE-C YEUQ;Lo;0;L;;;;;N;;;;; |
+168A8;BAMUM LETTER PHASE-C KPARAQ;Lo;0;L;;;;;N;;;;; |
+168A9;BAMUM LETTER PHASE-C KAA;Lo;0;L;;;;;N;;;;; |
+168AA;BAMUM LETTER PHASE-C SEUX;Lo;0;L;;;;;N;;;;; |
+168AB;BAMUM LETTER PHASE-C NDIDA;Lo;0;L;;;;;N;;;;; |
+168AC;BAMUM LETTER PHASE-C TAASHAE;Lo;0;L;;;;;N;;;;; |
+168AD;BAMUM LETTER PHASE-C NJUEQ;Lo;0;L;;;;;N;;;;; |
+168AE;BAMUM LETTER PHASE-C TITA YUE;Lo;0;L;;;;;N;;;;; |
+168AF;BAMUM LETTER PHASE-C SUAET;Lo;0;L;;;;;N;;;;; |
+168B0;BAMUM LETTER PHASE-C NGGUAEN NYAM;Lo;0;L;;;;;N;;;;; |
+168B1;BAMUM LETTER PHASE-C VEUX;Lo;0;L;;;;;N;;;;; |
+168B2;BAMUM LETTER PHASE-C NANSANAQ;Lo;0;L;;;;;N;;;;; |
+168B3;BAMUM LETTER PHASE-C MA KEUAERI;Lo;0;L;;;;;N;;;;; |
+168B4;BAMUM LETTER PHASE-C NTAA;Lo;0;L;;;;;N;;;;; |
+168B5;BAMUM LETTER PHASE-C NGGUON;Lo;0;L;;;;;N;;;;; |
+168B6;BAMUM LETTER PHASE-C LAP;Lo;0;L;;;;;N;;;;; |
+168B7;BAMUM LETTER PHASE-C MBIRIEEN;Lo;0;L;;;;;N;;;;; |
+168B8;BAMUM LETTER PHASE-C MGBASAQ;Lo;0;L;;;;;N;;;;; |
+168B9;BAMUM LETTER PHASE-C NTEUNGBA;Lo;0;L;;;;;N;;;;; |
+168BA;BAMUM LETTER PHASE-C TEUTEUX;Lo;0;L;;;;;N;;;;; |
+168BB;BAMUM LETTER PHASE-C NGGUM;Lo;0;L;;;;;N;;;;; |
+168BC;BAMUM LETTER PHASE-C FUE;Lo;0;L;;;;;N;;;;; |
+168BD;BAMUM LETTER PHASE-C NDEUT;Lo;0;L;;;;;N;;;;; |
+168BE;BAMUM LETTER PHASE-C NSA;Lo;0;L;;;;;N;;;;; |
+168BF;BAMUM LETTER PHASE-C NSHAQ;Lo;0;L;;;;;N;;;;; |
+168C0;BAMUM LETTER PHASE-C BUNG;Lo;0;L;;;;;N;;;;; |
+168C1;BAMUM LETTER PHASE-C VEUAEPEN;Lo;0;L;;;;;N;;;;; |
+168C2;BAMUM LETTER PHASE-C MBERAE;Lo;0;L;;;;;N;;;;; |
+168C3;BAMUM LETTER PHASE-C RU;Lo;0;L;;;;;N;;;;; |
+168C4;BAMUM LETTER PHASE-C NJAEM;Lo;0;L;;;;;N;;;;; |
+168C5;BAMUM LETTER PHASE-C LAM;Lo;0;L;;;;;N;;;;; |
+168C6;BAMUM LETTER PHASE-C TITUAEP;Lo;0;L;;;;;N;;;;; |
+168C7;BAMUM LETTER PHASE-C NSUOT NGOM;Lo;0;L;;;;;N;;;;; |
+168C8;BAMUM LETTER PHASE-C NJEEEE;Lo;0;L;;;;;N;;;;; |
+168C9;BAMUM LETTER PHASE-C KET;Lo;0;L;;;;;N;;;;; |
+168CA;BAMUM LETTER PHASE-C NGGU;Lo;0;L;;;;;N;;;;; |
+168CB;BAMUM LETTER PHASE-C MAESI;Lo;0;L;;;;;N;;;;; |
+168CC;BAMUM LETTER PHASE-C MBUAEM;Lo;0;L;;;;;N;;;;; |
+168CD;BAMUM LETTER PHASE-C LU;Lo;0;L;;;;;N;;;;; |
+168CE;BAMUM LETTER PHASE-C KUT;Lo;0;L;;;;;N;;;;; |
+168CF;BAMUM LETTER PHASE-C NJAM;Lo;0;L;;;;;N;;;;; |
+168D0;BAMUM LETTER PHASE-C NGOM;Lo;0;L;;;;;N;;;;; |
+168D1;BAMUM LETTER PHASE-C WUP;Lo;0;L;;;;;N;;;;; |
+168D2;BAMUM LETTER PHASE-C NGGUEET;Lo;0;L;;;;;N;;;;; |
+168D3;BAMUM LETTER PHASE-C NSOM;Lo;0;L;;;;;N;;;;; |
+168D4;BAMUM LETTER PHASE-C NTEN;Lo;0;L;;;;;N;;;;; |
+168D5;BAMUM LETTER PHASE-C KUOP NKAARAE;Lo;0;L;;;;;N;;;;; |
+168D6;BAMUM LETTER PHASE-C NSUN;Lo;0;L;;;;;N;;;;; |
+168D7;BAMUM LETTER PHASE-C NDAM;Lo;0;L;;;;;N;;;;; |
+168D8;BAMUM LETTER PHASE-C MA NSIEE;Lo;0;L;;;;;N;;;;; |
+168D9;BAMUM LETTER PHASE-C YAA;Lo;0;L;;;;;N;;;;; |
+168DA;BAMUM LETTER PHASE-C NDAP;Lo;0;L;;;;;N;;;;; |
+168DB;BAMUM LETTER PHASE-C SHUEQ;Lo;0;L;;;;;N;;;;; |
+168DC;BAMUM LETTER PHASE-C SETFON;Lo;0;L;;;;;N;;;;; |
+168DD;BAMUM LETTER PHASE-C MBI;Lo;0;L;;;;;N;;;;; |
+168DE;BAMUM LETTER PHASE-C MAEMBA;Lo;0;L;;;;;N;;;;; |
+168DF;BAMUM LETTER PHASE-C MBANYI;Lo;0;L;;;;;N;;;;; |
+168E0;BAMUM LETTER PHASE-C KEUSEUX;Lo;0;L;;;;;N;;;;; |
+168E1;BAMUM LETTER PHASE-C MBEUX;Lo;0;L;;;;;N;;;;; |
+168E2;BAMUM LETTER PHASE-C KEUM;Lo;0;L;;;;;N;;;;; |
+168E3;BAMUM LETTER PHASE-C MBAA PICKET;Lo;0;L;;;;;N;;;;; |
+168E4;BAMUM LETTER PHASE-C YUWOQ;Lo;0;L;;;;;N;;;;; |
+168E5;BAMUM LETTER PHASE-C NJEUX;Lo;0;L;;;;;N;;;;; |
+168E6;BAMUM LETTER PHASE-C MIEE;Lo;0;L;;;;;N;;;;; |
+168E7;BAMUM LETTER PHASE-C MUAE;Lo;0;L;;;;;N;;;;; |
+168E8;BAMUM LETTER PHASE-C SHIQ;Lo;0;L;;;;;N;;;;; |
+168E9;BAMUM LETTER PHASE-C KEN LAW;Lo;0;L;;;;;N;;;;; |
+168EA;BAMUM LETTER PHASE-C KEN FATIGUE;Lo;0;L;;;;;N;;;;; |
+168EB;BAMUM LETTER PHASE-C NGAQ;Lo;0;L;;;;;N;;;;; |
+168EC;BAMUM LETTER PHASE-C NAQ;Lo;0;L;;;;;N;;;;; |
+168ED;BAMUM LETTER PHASE-C LIQ;Lo;0;L;;;;;N;;;;; |
+168EE;BAMUM LETTER PHASE-C PIN;Lo;0;L;;;;;N;;;;; |
+168EF;BAMUM LETTER PHASE-C PEN;Lo;0;L;;;;;N;;;;; |
+168F0;BAMUM LETTER PHASE-C TET;Lo;0;L;;;;;N;;;;; |
+168F1;BAMUM LETTER PHASE-D MBUO;Lo;0;L;;;;;N;;;;; |
+168F2;BAMUM LETTER PHASE-D WAP;Lo;0;L;;;;;N;;;;; |
+168F3;BAMUM LETTER PHASE-D NJI;Lo;0;L;;;;;N;;;;; |
+168F4;BAMUM LETTER PHASE-D MFON;Lo;0;L;;;;;N;;;;; |
+168F5;BAMUM LETTER PHASE-D NJIEE;Lo;0;L;;;;;N;;;;; |
+168F6;BAMUM LETTER PHASE-D LIEE;Lo;0;L;;;;;N;;;;; |
+168F7;BAMUM LETTER PHASE-D NJEUT;Lo;0;L;;;;;N;;;;; |
+168F8;BAMUM LETTER PHASE-D NSHEE;Lo;0;L;;;;;N;;;;; |
+168F9;BAMUM LETTER PHASE-D NGGAAMAE;Lo;0;L;;;;;N;;;;; |
+168FA;BAMUM LETTER PHASE-D NYAM;Lo;0;L;;;;;N;;;;; |
+168FB;BAMUM LETTER PHASE-D WUAEN;Lo;0;L;;;;;N;;;;; |
+168FC;BAMUM LETTER PHASE-D NGKUN;Lo;0;L;;;;;N;;;;; |
+168FD;BAMUM LETTER PHASE-D SHEE;Lo;0;L;;;;;N;;;;; |
+168FE;BAMUM LETTER PHASE-D NGKAP;Lo;0;L;;;;;N;;;;; |
+168FF;BAMUM LETTER PHASE-D KEUAETMEUN;Lo;0;L;;;;;N;;;;; |
+16900;BAMUM LETTER PHASE-D TEUT;Lo;0;L;;;;;N;;;;; |
+16901;BAMUM LETTER PHASE-D SHEUAE;Lo;0;L;;;;;N;;;;; |
+16902;BAMUM LETTER PHASE-D NJAP;Lo;0;L;;;;;N;;;;; |
+16903;BAMUM LETTER PHASE-D SUE;Lo;0;L;;;;;N;;;;; |
+16904;BAMUM LETTER PHASE-D KET;Lo;0;L;;;;;N;;;;; |
+16905;BAMUM LETTER PHASE-D YAEMMAE;Lo;0;L;;;;;N;;;;; |
+16906;BAMUM LETTER PHASE-D KUOM;Lo;0;L;;;;;N;;;;; |
+16907;BAMUM LETTER PHASE-D SAP;Lo;0;L;;;;;N;;;;; |
+16908;BAMUM LETTER PHASE-D MFEUT;Lo;0;L;;;;;N;;;;; |
+16909;BAMUM LETTER PHASE-D NDEUX;Lo;0;L;;;;;N;;;;; |
+1690A;BAMUM LETTER PHASE-D MALEERI;Lo;0;L;;;;;N;;;;; |
+1690B;BAMUM LETTER PHASE-D MEUT;Lo;0;L;;;;;N;;;;; |
+1690C;BAMUM LETTER PHASE-D SEUAEQ;Lo;0;L;;;;;N;;;;; |
+1690D;BAMUM LETTER PHASE-D YEN;Lo;0;L;;;;;N;;;;; |
+1690E;BAMUM LETTER PHASE-D NJEUAEM;Lo;0;L;;;;;N;;;;; |
+1690F;BAMUM LETTER PHASE-D KEUOT MBUAE;Lo;0;L;;;;;N;;;;; |
+16910;BAMUM LETTER PHASE-D NGKEURI;Lo;0;L;;;;;N;;;;; |
+16911;BAMUM LETTER PHASE-D TU;Lo;0;L;;;;;N;;;;; |
+16912;BAMUM LETTER PHASE-D GHAA;Lo;0;L;;;;;N;;;;; |
+16913;BAMUM LETTER PHASE-D NGKYEE;Lo;0;L;;;;;N;;;;; |
+16914;BAMUM LETTER PHASE-D FEUFEUAET;Lo;0;L;;;;;N;;;;; |
+16915;BAMUM LETTER PHASE-D NDEE;Lo;0;L;;;;;N;;;;; |
+16916;BAMUM LETTER PHASE-D MGBOFUM;Lo;0;L;;;;;N;;;;; |
+16917;BAMUM LETTER PHASE-D LEUAEP;Lo;0;L;;;;;N;;;;; |
+16918;BAMUM LETTER PHASE-D NDON;Lo;0;L;;;;;N;;;;; |
+16919;BAMUM LETTER PHASE-D MONI;Lo;0;L;;;;;N;;;;; |
+1691A;BAMUM LETTER PHASE-D MGBEUN;Lo;0;L;;;;;N;;;;; |
+1691B;BAMUM LETTER PHASE-D PUUT;Lo;0;L;;;;;N;;;;; |
+1691C;BAMUM LETTER PHASE-D MGBIEE;Lo;0;L;;;;;N;;;;; |
+1691D;BAMUM LETTER PHASE-D MFO;Lo;0;L;;;;;N;;;;; |
+1691E;BAMUM LETTER PHASE-D LUM;Lo;0;L;;;;;N;;;;; |
+1691F;BAMUM LETTER PHASE-D NSIEEP;Lo;0;L;;;;;N;;;;; |
+16920;BAMUM LETTER PHASE-D MBAA;Lo;0;L;;;;;N;;;;; |
+16921;BAMUM LETTER PHASE-D KWAET;Lo;0;L;;;;;N;;;;; |
+16922;BAMUM LETTER PHASE-D NYET;Lo;0;L;;;;;N;;;;; |
+16923;BAMUM LETTER PHASE-D TEUAEN;Lo;0;L;;;;;N;;;;; |
+16924;BAMUM LETTER PHASE-D SOT;Lo;0;L;;;;;N;;;;; |
+16925;BAMUM LETTER PHASE-D YUWOQ;Lo;0;L;;;;;N;;;;; |
+16926;BAMUM LETTER PHASE-D KEUM;Lo;0;L;;;;;N;;;;; |
+16927;BAMUM LETTER PHASE-D RAEM;Lo;0;L;;;;;N;;;;; |
+16928;BAMUM LETTER PHASE-D TEEEE;Lo;0;L;;;;;N;;;;; |
+16929;BAMUM LETTER PHASE-D NGKEUAEQ;Lo;0;L;;;;;N;;;;; |
+1692A;BAMUM LETTER PHASE-D MFEUAE;Lo;0;L;;;;;N;;;;; |
+1692B;BAMUM LETTER PHASE-D NSIEET;Lo;0;L;;;;;N;;;;; |
+1692C;BAMUM LETTER PHASE-D KEUP;Lo;0;L;;;;;N;;;;; |
+1692D;BAMUM LETTER PHASE-D PIP;Lo;0;L;;;;;N;;;;; |
+1692E;BAMUM LETTER PHASE-D PEUTAE;Lo;0;L;;;;;N;;;;; |
+1692F;BAMUM LETTER PHASE-D NYUE;Lo;0;L;;;;;N;;;;; |
+16930;BAMUM LETTER PHASE-D LET;Lo;0;L;;;;;N;;;;; |
+16931;BAMUM LETTER PHASE-D NGGAAM;Lo;0;L;;;;;N;;;;; |
+16932;BAMUM LETTER PHASE-D MFIEE;Lo;0;L;;;;;N;;;;; |
+16933;BAMUM LETTER PHASE-D NGGWAEN;Lo;0;L;;;;;N;;;;; |
+16934;BAMUM LETTER PHASE-D YUOM;Lo;0;L;;;;;N;;;;; |
+16935;BAMUM LETTER PHASE-D PAP;Lo;0;L;;;;;N;;;;; |
+16936;BAMUM LETTER PHASE-D YUOP;Lo;0;L;;;;;N;;;;; |
+16937;BAMUM LETTER PHASE-D NDAM;Lo;0;L;;;;;N;;;;; |
+16938;BAMUM LETTER PHASE-D NTEUM;Lo;0;L;;;;;N;;;;; |
+16939;BAMUM LETTER PHASE-D SUAE;Lo;0;L;;;;;N;;;;; |
+1693A;BAMUM LETTER PHASE-D KUN;Lo;0;L;;;;;N;;;;; |
+1693B;BAMUM LETTER PHASE-D NGGEUX;Lo;0;L;;;;;N;;;;; |
+1693C;BAMUM LETTER PHASE-D NGKIEE;Lo;0;L;;;;;N;;;;; |
+1693D;BAMUM LETTER PHASE-D TUOT;Lo;0;L;;;;;N;;;;; |
+1693E;BAMUM LETTER PHASE-D MEUN;Lo;0;L;;;;;N;;;;; |
+1693F;BAMUM LETTER PHASE-D KUQ;Lo;0;L;;;;;N;;;;; |
+16940;BAMUM LETTER PHASE-D NSUM;Lo;0;L;;;;;N;;;;; |
+16941;BAMUM LETTER PHASE-D TEUN;Lo;0;L;;;;;N;;;;; |
+16942;BAMUM LETTER PHASE-D MAENJET;Lo;0;L;;;;;N;;;;; |
+16943;BAMUM LETTER PHASE-D NGGAP;Lo;0;L;;;;;N;;;;; |
+16944;BAMUM LETTER PHASE-D LEUM;Lo;0;L;;;;;N;;;;; |
+16945;BAMUM LETTER PHASE-D NGGUOM;Lo;0;L;;;;;N;;;;; |
+16946;BAMUM LETTER PHASE-D NSHUT;Lo;0;L;;;;;N;;;;; |
+16947;BAMUM LETTER PHASE-D NJUEQ;Lo;0;L;;;;;N;;;;; |
+16948;BAMUM LETTER PHASE-D GHEUAE;Lo;0;L;;;;;N;;;;; |
+16949;BAMUM LETTER PHASE-D KU;Lo;0;L;;;;;N;;;;; |
+1694A;BAMUM LETTER PHASE-D REN OLD;Lo;0;L;;;;;N;;;;; |
+1694B;BAMUM LETTER PHASE-D TAE;Lo;0;L;;;;;N;;;;; |
+1694C;BAMUM LETTER PHASE-D TOQ;Lo;0;L;;;;;N;;;;; |
+1694D;BAMUM LETTER PHASE-D NYI;Lo;0;L;;;;;N;;;;; |
+1694E;BAMUM LETTER PHASE-D RII;Lo;0;L;;;;;N;;;;; |
+1694F;BAMUM LETTER PHASE-D LEEEE;Lo;0;L;;;;;N;;;;; |
+16950;BAMUM LETTER PHASE-D MEEEE;Lo;0;L;;;;;N;;;;; |
+16951;BAMUM LETTER PHASE-D M;Lo;0;L;;;;;N;;;;; |
+16952;BAMUM LETTER PHASE-D SUU;Lo;0;L;;;;;N;;;;; |
+16953;BAMUM LETTER PHASE-D MU;Lo;0;L;;;;;N;;;;; |
+16954;BAMUM LETTER PHASE-D SHII;Lo;0;L;;;;;N;;;;; |
+16955;BAMUM LETTER PHASE-D SHEUX;Lo;0;L;;;;;N;;;;; |
+16956;BAMUM LETTER PHASE-D KYEE;Lo;0;L;;;;;N;;;;; |
+16957;BAMUM LETTER PHASE-D NU;Lo;0;L;;;;;N;;;;; |
+16958;BAMUM LETTER PHASE-D SHU;Lo;0;L;;;;;N;;;;; |
+16959;BAMUM LETTER PHASE-D NTEE;Lo;0;L;;;;;N;;;;; |
+1695A;BAMUM LETTER PHASE-D PEE;Lo;0;L;;;;;N;;;;; |
+1695B;BAMUM LETTER PHASE-D NI;Lo;0;L;;;;;N;;;;; |
+1695C;BAMUM LETTER PHASE-D SHOQ;Lo;0;L;;;;;N;;;;; |
+1695D;BAMUM LETTER PHASE-D PUQ;Lo;0;L;;;;;N;;;;; |
+1695E;BAMUM LETTER PHASE-D MVOP;Lo;0;L;;;;;N;;;;; |
+1695F;BAMUM LETTER PHASE-D LOQ;Lo;0;L;;;;;N;;;;; |
+16960;BAMUM LETTER PHASE-D REN MUCH;Lo;0;L;;;;;N;;;;; |
+16961;BAMUM LETTER PHASE-D TI;Lo;0;L;;;;;N;;;;; |
+16962;BAMUM LETTER PHASE-D NTUU;Lo;0;L;;;;;N;;;;; |
+16963;BAMUM LETTER PHASE-D MBAA SEVEN;Lo;0;L;;;;;N;;;;; |
+16964;BAMUM LETTER PHASE-D SAQ;Lo;0;L;;;;;N;;;;; |
+16965;BAMUM LETTER PHASE-D FAA;Lo;0;L;;;;;N;;;;; |
+16966;BAMUM LETTER PHASE-E NDAP;Lo;0;L;;;;;N;;;;; |
+16967;BAMUM LETTER PHASE-E TOON;Lo;0;L;;;;;N;;;;; |
+16968;BAMUM LETTER PHASE-E MBEUM;Lo;0;L;;;;;N;;;;; |
+16969;BAMUM LETTER PHASE-E LAP;Lo;0;L;;;;;N;;;;; |
+1696A;BAMUM LETTER PHASE-E VOM;Lo;0;L;;;;;N;;;;; |
+1696B;BAMUM LETTER PHASE-E LOON;Lo;0;L;;;;;N;;;;; |
+1696C;BAMUM LETTER PHASE-E PAA;Lo;0;L;;;;;N;;;;; |
+1696D;BAMUM LETTER PHASE-E SOM;Lo;0;L;;;;;N;;;;; |
+1696E;BAMUM LETTER PHASE-E RAQ;Lo;0;L;;;;;N;;;;; |
+1696F;BAMUM LETTER PHASE-E NSHUOP;Lo;0;L;;;;;N;;;;; |
+16970;BAMUM LETTER PHASE-E NDUN;Lo;0;L;;;;;N;;;;; |
+16971;BAMUM LETTER PHASE-E PUAE;Lo;0;L;;;;;N;;;;; |
+16972;BAMUM LETTER PHASE-E TAM;Lo;0;L;;;;;N;;;;; |
+16973;BAMUM LETTER PHASE-E NGKA;Lo;0;L;;;;;N;;;;; |
+16974;BAMUM LETTER PHASE-E KPEUX;Lo;0;L;;;;;N;;;;; |
+16975;BAMUM LETTER PHASE-E WUO;Lo;0;L;;;;;N;;;;; |
+16976;BAMUM LETTER PHASE-E SEE;Lo;0;L;;;;;N;;;;; |
+16977;BAMUM LETTER PHASE-E NGGEUAET;Lo;0;L;;;;;N;;;;; |
+16978;BAMUM LETTER PHASE-E PAAM;Lo;0;L;;;;;N;;;;; |
+16979;BAMUM LETTER PHASE-E TOO;Lo;0;L;;;;;N;;;;; |
+1697A;BAMUM LETTER PHASE-E KUOP;Lo;0;L;;;;;N;;;;; |
+1697B;BAMUM LETTER PHASE-E LOM;Lo;0;L;;;;;N;;;;; |
+1697C;BAMUM LETTER PHASE-E NSHIEE;Lo;0;L;;;;;N;;;;; |
+1697D;BAMUM LETTER PHASE-E NGOP;Lo;0;L;;;;;N;;;;; |
+1697E;BAMUM LETTER PHASE-E MAEM;Lo;0;L;;;;;N;;;;; |
+1697F;BAMUM LETTER PHASE-E NGKEUX;Lo;0;L;;;;;N;;;;; |
+16980;BAMUM LETTER PHASE-E NGOQ;Lo;0;L;;;;;N;;;;; |
+16981;BAMUM LETTER PHASE-E NSHUE;Lo;0;L;;;;;N;;;;; |
+16982;BAMUM LETTER PHASE-E RIMGBA;Lo;0;L;;;;;N;;;;; |
+16983;BAMUM LETTER PHASE-E NJEUX;Lo;0;L;;;;;N;;;;; |
+16984;BAMUM LETTER PHASE-E PEEM;Lo;0;L;;;;;N;;;;; |
+16985;BAMUM LETTER PHASE-E SAA;Lo;0;L;;;;;N;;;;; |
+16986;BAMUM LETTER PHASE-E NGGURAE;Lo;0;L;;;;;N;;;;; |
+16987;BAMUM LETTER PHASE-E MGBA;Lo;0;L;;;;;N;;;;; |
+16988;BAMUM LETTER PHASE-E GHEUX;Lo;0;L;;;;;N;;;;; |
+16989;BAMUM LETTER PHASE-E NGKEUAEM;Lo;0;L;;;;;N;;;;; |
+1698A;BAMUM LETTER PHASE-E NJAEMLI;Lo;0;L;;;;;N;;;;; |
+1698B;BAMUM LETTER PHASE-E MAP;Lo;0;L;;;;;N;;;;; |
+1698C;BAMUM LETTER PHASE-E LOOT;Lo;0;L;;;;;N;;;;; |
+1698D;BAMUM LETTER PHASE-E NGGEEEE;Lo;0;L;;;;;N;;;;; |
+1698E;BAMUM LETTER PHASE-E NDIQ;Lo;0;L;;;;;N;;;;; |
+1698F;BAMUM LETTER PHASE-E TAEN NTEUM;Lo;0;L;;;;;N;;;;; |
+16990;BAMUM LETTER PHASE-E SET;Lo;0;L;;;;;N;;;;; |
+16991;BAMUM LETTER PHASE-E PUM;Lo;0;L;;;;;N;;;;; |
+16992;BAMUM LETTER PHASE-E NDAA SOFTNESS;Lo;0;L;;;;;N;;;;; |
+16993;BAMUM LETTER PHASE-E NGGUAESHAE NYAM;Lo;0;L;;;;;N;;;;; |
+16994;BAMUM LETTER PHASE-E YIEE;Lo;0;L;;;;;N;;;;; |
+16995;BAMUM LETTER PHASE-E GHEUN;Lo;0;L;;;;;N;;;;; |
+16996;BAMUM LETTER PHASE-E TUAE;Lo;0;L;;;;;N;;;;; |
+16997;BAMUM LETTER PHASE-E YEUAE;Lo;0;L;;;;;N;;;;; |
+16998;BAMUM LETTER PHASE-E PO;Lo;0;L;;;;;N;;;;; |
+16999;BAMUM LETTER PHASE-E TUMAE;Lo;0;L;;;;;N;;;;; |
+1699A;BAMUM LETTER PHASE-E KEUAE;Lo;0;L;;;;;N;;;;; |
+1699B;BAMUM LETTER PHASE-E SUAEN;Lo;0;L;;;;;N;;;;; |
+1699C;BAMUM LETTER PHASE-E TEUAEQ;Lo;0;L;;;;;N;;;;; |
+1699D;BAMUM LETTER PHASE-E VEUAE;Lo;0;L;;;;;N;;;;; |
+1699E;BAMUM LETTER PHASE-E WEUX;Lo;0;L;;;;;N;;;;; |
+1699F;BAMUM LETTER PHASE-E LAAM;Lo;0;L;;;;;N;;;;; |
+169A0;BAMUM LETTER PHASE-E PU;Lo;0;L;;;;;N;;;;; |
+169A1;BAMUM LETTER PHASE-E TAAQ;Lo;0;L;;;;;N;;;;; |
+169A2;BAMUM LETTER PHASE-E GHAAMAE;Lo;0;L;;;;;N;;;;; |
+169A3;BAMUM LETTER PHASE-E NGEUREUT;Lo;0;L;;;;;N;;;;; |
+169A4;BAMUM LETTER PHASE-E SHEUAEQ;Lo;0;L;;;;;N;;;;; |
+169A5;BAMUM LETTER PHASE-E MGBEN;Lo;0;L;;;;;N;;;;; |
+169A6;BAMUM LETTER PHASE-E MBEE;Lo;0;L;;;;;N;;;;; |
+169A7;BAMUM LETTER PHASE-E NZAQ;Lo;0;L;;;;;N;;;;; |
+169A8;BAMUM LETTER PHASE-E NKOM;Lo;0;L;;;;;N;;;;; |
+169A9;BAMUM LETTER PHASE-E GBET;Lo;0;L;;;;;N;;;;; |
+169AA;BAMUM LETTER PHASE-E TUM;Lo;0;L;;;;;N;;;;; |
+169AB;BAMUM LETTER PHASE-E KUET;Lo;0;L;;;;;N;;;;; |
+169AC;BAMUM LETTER PHASE-E YAP;Lo;0;L;;;;;N;;;;; |
+169AD;BAMUM LETTER PHASE-E NYI CLEAVER;Lo;0;L;;;;;N;;;;; |
+169AE;BAMUM LETTER PHASE-E YIT;Lo;0;L;;;;;N;;;;; |
+169AF;BAMUM LETTER PHASE-E MFEUQ;Lo;0;L;;;;;N;;;;; |
+169B0;BAMUM LETTER PHASE-E NDIAQ;Lo;0;L;;;;;N;;;;; |
+169B1;BAMUM LETTER PHASE-E PIEEQ;Lo;0;L;;;;;N;;;;; |
+169B2;BAMUM LETTER PHASE-E YUEQ;Lo;0;L;;;;;N;;;;; |
+169B3;BAMUM LETTER PHASE-E LEUAEM;Lo;0;L;;;;;N;;;;; |
+169B4;BAMUM LETTER PHASE-E FUE;Lo;0;L;;;;;N;;;;; |
+169B5;BAMUM LETTER PHASE-E GBEUX;Lo;0;L;;;;;N;;;;; |
+169B6;BAMUM LETTER PHASE-E NGKUP;Lo;0;L;;;;;N;;;;; |
+169B7;BAMUM LETTER PHASE-E KET;Lo;0;L;;;;;N;;;;; |
+169B8;BAMUM LETTER PHASE-E MAE;Lo;0;L;;;;;N;;;;; |
+169B9;BAMUM LETTER PHASE-E NGKAAMI;Lo;0;L;;;;;N;;;;; |
+169BA;BAMUM LETTER PHASE-E GHET;Lo;0;L;;;;;N;;;;; |
+169BB;BAMUM LETTER PHASE-E FA;Lo;0;L;;;;;N;;;;; |
+169BC;BAMUM LETTER PHASE-E NTUM;Lo;0;L;;;;;N;;;;; |
+169BD;BAMUM LETTER PHASE-E PEUT;Lo;0;L;;;;;N;;;;; |
+169BE;BAMUM LETTER PHASE-E YEUM;Lo;0;L;;;;;N;;;;; |
+169BF;BAMUM LETTER PHASE-E NGGEUAE;Lo;0;L;;;;;N;;;;; |
+169C0;BAMUM LETTER PHASE-E NYI BETWEEN;Lo;0;L;;;;;N;;;;; |
+169C1;BAMUM LETTER PHASE-E NZUQ;Lo;0;L;;;;;N;;;;; |
+169C2;BAMUM LETTER PHASE-E POON;Lo;0;L;;;;;N;;;;; |
+169C3;BAMUM LETTER PHASE-E MIEE;Lo;0;L;;;;;N;;;;; |
+169C4;BAMUM LETTER PHASE-E FUET;Lo;0;L;;;;;N;;;;; |
+169C5;BAMUM LETTER PHASE-E NAE;Lo;0;L;;;;;N;;;;; |
+169C6;BAMUM LETTER PHASE-E MUAE;Lo;0;L;;;;;N;;;;; |
+169C7;BAMUM LETTER PHASE-E GHEUAE;Lo;0;L;;;;;N;;;;; |
+169C8;BAMUM LETTER PHASE-E FU I;Lo;0;L;;;;;N;;;;; |
+169C9;BAMUM LETTER PHASE-E MVI;Lo;0;L;;;;;N;;;;; |
+169CA;BAMUM LETTER PHASE-E PUAQ;Lo;0;L;;;;;N;;;;; |
+169CB;BAMUM LETTER PHASE-E NGKUM;Lo;0;L;;;;;N;;;;; |
+169CC;BAMUM LETTER PHASE-E KUT;Lo;0;L;;;;;N;;;;; |
+169CD;BAMUM LETTER PHASE-E PIET;Lo;0;L;;;;;N;;;;; |
+169CE;BAMUM LETTER PHASE-E NTAP;Lo;0;L;;;;;N;;;;; |
+169CF;BAMUM LETTER PHASE-E YEUAET;Lo;0;L;;;;;N;;;;; |
+169D0;BAMUM LETTER PHASE-E NGGUP;Lo;0;L;;;;;N;;;;; |
+169D1;BAMUM LETTER PHASE-E PA PEOPLE;Lo;0;L;;;;;N;;;;; |
+169D2;BAMUM LETTER PHASE-E FU CALL;Lo;0;L;;;;;N;;;;; |
+169D3;BAMUM LETTER PHASE-E FOM;Lo;0;L;;;;;N;;;;; |
+169D4;BAMUM LETTER PHASE-E NJEE;Lo;0;L;;;;;N;;;;; |
+169D5;BAMUM LETTER PHASE-E A;Lo;0;L;;;;;N;;;;; |
+169D6;BAMUM LETTER PHASE-E TOQ;Lo;0;L;;;;;N;;;;; |
+169D7;BAMUM LETTER PHASE-E O;Lo;0;L;;;;;N;;;;; |
+169D8;BAMUM LETTER PHASE-E I;Lo;0;L;;;;;N;;;;; |
+169D9;BAMUM LETTER PHASE-E LAQ;Lo;0;L;;;;;N;;;;; |
+169DA;BAMUM LETTER PHASE-E PA PLURAL;Lo;0;L;;;;;N;;;;; |
+169DB;BAMUM LETTER PHASE-E TAA;Lo;0;L;;;;;N;;;;; |
+169DC;BAMUM LETTER PHASE-E TAQ;Lo;0;L;;;;;N;;;;; |
+169DD;BAMUM LETTER PHASE-E NDAA MY HOUSE;Lo;0;L;;;;;N;;;;; |
+169DE;BAMUM LETTER PHASE-E SHIQ;Lo;0;L;;;;;N;;;;; |
+169DF;BAMUM LETTER PHASE-E YEUX;Lo;0;L;;;;;N;;;;; |
+169E0;BAMUM LETTER PHASE-E NGUAE;Lo;0;L;;;;;N;;;;; |
+169E1;BAMUM LETTER PHASE-E YUAEN;Lo;0;L;;;;;N;;;;; |
+169E2;BAMUM LETTER PHASE-E YOQ SWIMMING;Lo;0;L;;;;;N;;;;; |
+169E3;BAMUM LETTER PHASE-E YOQ COVER;Lo;0;L;;;;;N;;;;; |
+169E4;BAMUM LETTER PHASE-E YUQ;Lo;0;L;;;;;N;;;;; |
+169E5;BAMUM LETTER PHASE-E YUN;Lo;0;L;;;;;N;;;;; |
+169E6;BAMUM LETTER PHASE-E KEUX;Lo;0;L;;;;;N;;;;; |
+169E7;BAMUM LETTER PHASE-E PEUX;Lo;0;L;;;;;N;;;;; |
+169E8;BAMUM LETTER PHASE-E NJEE EPOCH;Lo;0;L;;;;;N;;;;; |
+169E9;BAMUM LETTER PHASE-E PUE;Lo;0;L;;;;;N;;;;; |
+169EA;BAMUM LETTER PHASE-E WUE;Lo;0;L;;;;;N;;;;; |
+169EB;BAMUM LETTER PHASE-E FEE;Lo;0;L;;;;;N;;;;; |
+169EC;BAMUM LETTER PHASE-E VEE;Lo;0;L;;;;;N;;;;; |
+169ED;BAMUM LETTER PHASE-E LU;Lo;0;L;;;;;N;;;;; |
+169EE;BAMUM LETTER PHASE-E MI;Lo;0;L;;;;;N;;;;; |
+169EF;BAMUM LETTER PHASE-E REUX;Lo;0;L;;;;;N;;;;; |
+169F0;BAMUM LETTER PHASE-E RAE;Lo;0;L;;;;;N;;;;; |
+169F1;BAMUM LETTER PHASE-E NGUAET;Lo;0;L;;;;;N;;;;; |
+169F2;BAMUM LETTER PHASE-E NGA;Lo;0;L;;;;;N;;;;; |
+169F3;BAMUM LETTER PHASE-E SHO;Lo;0;L;;;;;N;;;;; |
+169F4;BAMUM LETTER PHASE-E SHOQ;Lo;0;L;;;;;N;;;;; |
+169F5;BAMUM LETTER PHASE-E FU REMEDY;Lo;0;L;;;;;N;;;;; |
+169F6;BAMUM LETTER PHASE-E NA;Lo;0;L;;;;;N;;;;; |
+169F7;BAMUM LETTER PHASE-E PI;Lo;0;L;;;;;N;;;;; |
+169F8;BAMUM LETTER PHASE-E LOQ;Lo;0;L;;;;;N;;;;; |
+169F9;BAMUM LETTER PHASE-E KO;Lo;0;L;;;;;N;;;;; |
+169FA;BAMUM LETTER PHASE-E MEN;Lo;0;L;;;;;N;;;;; |
+169FB;BAMUM LETTER PHASE-E MA;Lo;0;L;;;;;N;;;;; |
+169FC;BAMUM LETTER PHASE-E MAQ;Lo;0;L;;;;;N;;;;; |
+169FD;BAMUM LETTER PHASE-E TEU;Lo;0;L;;;;;N;;;;; |
+169FE;BAMUM LETTER PHASE-E KI;Lo;0;L;;;;;N;;;;; |
+169FF;BAMUM LETTER PHASE-E MON;Lo;0;L;;;;;N;;;;; |
+16A00;BAMUM LETTER PHASE-E TEN;Lo;0;L;;;;;N;;;;; |
+16A01;BAMUM LETTER PHASE-E FAQ;Lo;0;L;;;;;N;;;;; |
+16A02;BAMUM LETTER PHASE-E GHOM;Lo;0;L;;;;;N;;;;; |
+16A03;BAMUM LETTER PHASE-F KA;Lo;0;L;;;;;N;;;;; |
+16A04;BAMUM LETTER PHASE-F U;Lo;0;L;;;;;N;;;;; |
+16A05;BAMUM LETTER PHASE-F KU;Lo;0;L;;;;;N;;;;; |
+16A06;BAMUM LETTER PHASE-F EE;Lo;0;L;;;;;N;;;;; |
+16A07;BAMUM LETTER PHASE-F REE;Lo;0;L;;;;;N;;;;; |
+16A08;BAMUM LETTER PHASE-F TAE;Lo;0;L;;;;;N;;;;; |
+16A09;BAMUM LETTER PHASE-F NYI;Lo;0;L;;;;;N;;;;; |
+16A0A;BAMUM LETTER PHASE-F LA;Lo;0;L;;;;;N;;;;; |
+16A0B;BAMUM LETTER PHASE-F RII;Lo;0;L;;;;;N;;;;; |
+16A0C;BAMUM LETTER PHASE-F RIEE;Lo;0;L;;;;;N;;;;; |
+16A0D;BAMUM LETTER PHASE-F MEEEE;Lo;0;L;;;;;N;;;;; |
+16A0E;BAMUM LETTER PHASE-F TAA;Lo;0;L;;;;;N;;;;; |
+16A0F;BAMUM LETTER PHASE-F NDAA;Lo;0;L;;;;;N;;;;; |
+16A10;BAMUM LETTER PHASE-F NJAEM;Lo;0;L;;;;;N;;;;; |
+16A11;BAMUM LETTER PHASE-F M;Lo;0;L;;;;;N;;;;; |
+16A12;BAMUM LETTER PHASE-F SUU;Lo;0;L;;;;;N;;;;; |
+16A13;BAMUM LETTER PHASE-F SHII;Lo;0;L;;;;;N;;;;; |
+16A14;BAMUM LETTER PHASE-F SI;Lo;0;L;;;;;N;;;;; |
+16A15;BAMUM LETTER PHASE-F SEUX;Lo;0;L;;;;;N;;;;; |
+16A16;BAMUM LETTER PHASE-F KYEE;Lo;0;L;;;;;N;;;;; |
+16A17;BAMUM LETTER PHASE-F KET;Lo;0;L;;;;;N;;;;; |
+16A18;BAMUM LETTER PHASE-F NUAE;Lo;0;L;;;;;N;;;;; |
+16A19;BAMUM LETTER PHASE-F NU;Lo;0;L;;;;;N;;;;; |
+16A1A;BAMUM LETTER PHASE-F NJUAE;Lo;0;L;;;;;N;;;;; |
+16A1B;BAMUM LETTER PHASE-F YOQ;Lo;0;L;;;;;N;;;;; |
+16A1C;BAMUM LETTER PHASE-F SHU;Lo;0;L;;;;;N;;;;; |
+16A1D;BAMUM LETTER PHASE-F YA;Lo;0;L;;;;;N;;;;; |
+16A1E;BAMUM LETTER PHASE-F NSHA;Lo;0;L;;;;;N;;;;; |
+16A1F;BAMUM LETTER PHASE-F PEUX;Lo;0;L;;;;;N;;;;; |
+16A20;BAMUM LETTER PHASE-F NTEE;Lo;0;L;;;;;N;;;;; |
+16A21;BAMUM LETTER PHASE-F WUE;Lo;0;L;;;;;N;;;;; |
+16A22;BAMUM LETTER PHASE-F PEE;Lo;0;L;;;;;N;;;;; |
+16A23;BAMUM LETTER PHASE-F RU;Lo;0;L;;;;;N;;;;; |
+16A24;BAMUM LETTER PHASE-F NI;Lo;0;L;;;;;N;;;;; |
+16A25;BAMUM LETTER PHASE-F REUX;Lo;0;L;;;;;N;;;;; |
+16A26;BAMUM LETTER PHASE-F KEN;Lo;0;L;;;;;N;;;;; |
+16A27;BAMUM LETTER PHASE-F NGKWAEN;Lo;0;L;;;;;N;;;;; |
+16A28;BAMUM LETTER PHASE-F NGGA;Lo;0;L;;;;;N;;;;; |
+16A29;BAMUM LETTER PHASE-F SHO;Lo;0;L;;;;;N;;;;; |
+16A2A;BAMUM LETTER PHASE-F PUAE;Lo;0;L;;;;;N;;;;; |
+16A2B;BAMUM LETTER PHASE-F FOM;Lo;0;L;;;;;N;;;;; |
+16A2C;BAMUM LETTER PHASE-F WA;Lo;0;L;;;;;N;;;;; |
+16A2D;BAMUM LETTER PHASE-F LI;Lo;0;L;;;;;N;;;;; |
+16A2E;BAMUM LETTER PHASE-F LOQ;Lo;0;L;;;;;N;;;;; |
+16A2F;BAMUM LETTER PHASE-F KO;Lo;0;L;;;;;N;;;;; |
+16A30;BAMUM LETTER PHASE-F MBEN;Lo;0;L;;;;;N;;;;; |
+16A31;BAMUM LETTER PHASE-F REN;Lo;0;L;;;;;N;;;;; |
+16A32;BAMUM LETTER PHASE-F MA;Lo;0;L;;;;;N;;;;; |
+16A33;BAMUM LETTER PHASE-F MO;Lo;0;L;;;;;N;;;;; |
+16A34;BAMUM LETTER PHASE-F MBAA;Lo;0;L;;;;;N;;;;; |
+16A35;BAMUM LETTER PHASE-F TET;Lo;0;L;;;;;N;;;;; |
+16A36;BAMUM LETTER PHASE-F KPA;Lo;0;L;;;;;N;;;;; |
+16A37;BAMUM LETTER PHASE-F SAMBA;Lo;0;L;;;;;N;;;;; |
+16A38;BAMUM LETTER PHASE-F VUEQ;Lo;0;L;;;;;N;;;;; |
+16F00;MIAO LETTER PA;Lo;0;L;;;;;N;;;;; |
+16F01;MIAO LETTER BA;Lo;0;L;;;;;N;;;;; |
+16F02;MIAO LETTER YI PA;Lo;0;L;;;;;N;;;;; |
+16F03;MIAO LETTER PLA;Lo;0;L;;;;;N;;;;; |
+16F04;MIAO LETTER MA;Lo;0;L;;;;;N;;;;; |
+16F05;MIAO LETTER MHA;Lo;0;L;;;;;N;;;;; |
+16F06;MIAO LETTER ARCHAIC MA;Lo;0;L;;;;;N;;;;; |
+16F07;MIAO LETTER FA;Lo;0;L;;;;;N;;;;; |
+16F08;MIAO LETTER VA;Lo;0;L;;;;;N;;;;; |
+16F09;MIAO LETTER VFA;Lo;0;L;;;;;N;;;;; |
+16F0A;MIAO LETTER TA;Lo;0;L;;;;;N;;;;; |
+16F0B;MIAO LETTER DA;Lo;0;L;;;;;N;;;;; |
+16F0C;MIAO LETTER YI TTA;Lo;0;L;;;;;N;;;;; |
+16F0D;MIAO LETTER YI TA;Lo;0;L;;;;;N;;;;; |
+16F0E;MIAO LETTER TTA;Lo;0;L;;;;;N;;;;; |
+16F0F;MIAO LETTER DDA;Lo;0;L;;;;;N;;;;; |
+16F10;MIAO LETTER NA;Lo;0;L;;;;;N;;;;; |
+16F11;MIAO LETTER NHA;Lo;0;L;;;;;N;;;;; |
+16F12;MIAO LETTER YI NNA;Lo;0;L;;;;;N;;;;; |
+16F13;MIAO LETTER ARCHAIC NA;Lo;0;L;;;;;N;;;;; |
+16F14;MIAO LETTER NNA;Lo;0;L;;;;;N;;;;; |
+16F15;MIAO LETTER NNHA;Lo;0;L;;;;;N;;;;; |
+16F16;MIAO LETTER LA;Lo;0;L;;;;;N;;;;; |
+16F17;MIAO LETTER LYA;Lo;0;L;;;;;N;;;;; |
+16F18;MIAO LETTER LHA;Lo;0;L;;;;;N;;;;; |
+16F19;MIAO LETTER LHYA;Lo;0;L;;;;;N;;;;; |
+16F1A;MIAO LETTER TLHA;Lo;0;L;;;;;N;;;;; |
+16F1B;MIAO LETTER DLHA;Lo;0;L;;;;;N;;;;; |
+16F1C;MIAO LETTER TLHYA;Lo;0;L;;;;;N;;;;; |
+16F1D;MIAO LETTER DLHYA;Lo;0;L;;;;;N;;;;; |
+16F1E;MIAO LETTER KA;Lo;0;L;;;;;N;;;;; |
+16F1F;MIAO LETTER GA;Lo;0;L;;;;;N;;;;; |
+16F20;MIAO LETTER YI KA;Lo;0;L;;;;;N;;;;; |
+16F21;MIAO LETTER QA;Lo;0;L;;;;;N;;;;; |
+16F22;MIAO LETTER QGA;Lo;0;L;;;;;N;;;;; |
+16F23;MIAO LETTER NGA;Lo;0;L;;;;;N;;;;; |
+16F24;MIAO LETTER NGHA;Lo;0;L;;;;;N;;;;; |
+16F25;MIAO LETTER ARCHAIC NGA;Lo;0;L;;;;;N;;;;; |
+16F26;MIAO LETTER HA;Lo;0;L;;;;;N;;;;; |
+16F27;MIAO LETTER XA;Lo;0;L;;;;;N;;;;; |
+16F28;MIAO LETTER GHA;Lo;0;L;;;;;N;;;;; |
+16F29;MIAO LETTER GHHA;Lo;0;L;;;;;N;;;;; |
+16F2A;MIAO LETTER TSSA;Lo;0;L;;;;;N;;;;; |
+16F2B;MIAO LETTER DZZA;Lo;0;L;;;;;N;;;;; |
+16F2C;MIAO LETTER NYA;Lo;0;L;;;;;N;;;;; |
+16F2D;MIAO LETTER NYHA;Lo;0;L;;;;;N;;;;; |
+16F2E;MIAO LETTER TSHA;Lo;0;L;;;;;N;;;;; |
+16F2F;MIAO LETTER DZHA;Lo;0;L;;;;;N;;;;; |
+16F30;MIAO LETTER YI TSHA;Lo;0;L;;;;;N;;;;; |
+16F31;MIAO LETTER YI DZHA;Lo;0;L;;;;;N;;;;; |
+16F32;MIAO LETTER REFORMED TSHA;Lo;0;L;;;;;N;;;;; |
+16F33;MIAO LETTER SHA;Lo;0;L;;;;;N;;;;; |
+16F34;MIAO LETTER SSA;Lo;0;L;;;;;N;;;;; |
+16F35;MIAO LETTER ZHA;Lo;0;L;;;;;N;;;;; |
+16F36;MIAO LETTER ZSHA;Lo;0;L;;;;;N;;;;; |
+16F37;MIAO LETTER TSA;Lo;0;L;;;;;N;;;;; |
+16F38;MIAO LETTER DZA;Lo;0;L;;;;;N;;;;; |
+16F39;MIAO LETTER YI TSA;Lo;0;L;;;;;N;;;;; |
+16F3A;MIAO LETTER SA;Lo;0;L;;;;;N;;;;; |
+16F3B;MIAO LETTER ZA;Lo;0;L;;;;;N;;;;; |
+16F3C;MIAO LETTER ZSA;Lo;0;L;;;;;N;;;;; |
+16F3D;MIAO LETTER ZZA;Lo;0;L;;;;;N;;;;; |
+16F3E;MIAO LETTER ZZSA;Lo;0;L;;;;;N;;;;; |
+16F3F;MIAO LETTER ARCHAIC ZZA;Lo;0;L;;;;;N;;;;; |
+16F40;MIAO LETTER ZZYA;Lo;0;L;;;;;N;;;;; |
+16F41;MIAO LETTER ZZSYA;Lo;0;L;;;;;N;;;;; |
+16F42;MIAO LETTER WA;Lo;0;L;;;;;N;;;;; |
+16F43;MIAO LETTER AH;Lo;0;L;;;;;N;;;;; |
+16F44;MIAO LETTER HHA;Lo;0;L;;;;;N;;;;; |
+16F50;MIAO LETTER NASALIZATION;Lo;0;L;;;;;N;;;;; |
+16F51;MIAO SIGN ASPIRATION;Mc;0;L;;;;;N;;;;; |
+16F52;MIAO SIGN REFORMED VOICING;Mc;0;L;;;;;N;;;;; |
+16F53;MIAO SIGN REFORMED ASPIRATION;Mc;0;L;;;;;N;;;;; |
+16F54;MIAO VOWEL SIGN A;Mc;0;L;;;;;N;;;;; |
+16F55;MIAO VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; |
+16F56;MIAO VOWEL SIGN AHH;Mc;0;L;;;;;N;;;;; |
+16F57;MIAO VOWEL SIGN AN;Mc;0;L;;;;;N;;;;; |
+16F58;MIAO VOWEL SIGN ANG;Mc;0;L;;;;;N;;;;; |
+16F59;MIAO VOWEL SIGN O;Mc;0;L;;;;;N;;;;; |
+16F5A;MIAO VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; |
+16F5B;MIAO VOWEL SIGN WO;Mc;0;L;;;;;N;;;;; |
+16F5C;MIAO VOWEL SIGN W;Mc;0;L;;;;;N;;;;; |
+16F5D;MIAO VOWEL SIGN E;Mc;0;L;;;;;N;;;;; |
+16F5E;MIAO VOWEL SIGN EN;Mc;0;L;;;;;N;;;;; |
+16F5F;MIAO VOWEL SIGN ENG;Mc;0;L;;;;;N;;;;; |
+16F60;MIAO VOWEL SIGN OEY;Mc;0;L;;;;;N;;;;; |
+16F61;MIAO VOWEL SIGN I;Mc;0;L;;;;;N;;;;; |
+16F62;MIAO VOWEL SIGN IA;Mc;0;L;;;;;N;;;;; |
+16F63;MIAO VOWEL SIGN IAN;Mc;0;L;;;;;N;;;;; |
+16F64;MIAO VOWEL SIGN IANG;Mc;0;L;;;;;N;;;;; |
+16F65;MIAO VOWEL SIGN IO;Mc;0;L;;;;;N;;;;; |
+16F66;MIAO VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; |
+16F67;MIAO VOWEL SIGN II;Mc;0;L;;;;;N;;;;; |
+16F68;MIAO VOWEL SIGN IU;Mc;0;L;;;;;N;;;;; |
+16F69;MIAO VOWEL SIGN ING;Mc;0;L;;;;;N;;;;; |
+16F6A;MIAO VOWEL SIGN U;Mc;0;L;;;;;N;;;;; |
+16F6B;MIAO VOWEL SIGN UA;Mc;0;L;;;;;N;;;;; |
+16F6C;MIAO VOWEL SIGN UAN;Mc;0;L;;;;;N;;;;; |
+16F6D;MIAO VOWEL SIGN UANG;Mc;0;L;;;;;N;;;;; |
+16F6E;MIAO VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; |
+16F6F;MIAO VOWEL SIGN UEI;Mc;0;L;;;;;N;;;;; |
+16F70;MIAO VOWEL SIGN UNG;Mc;0;L;;;;;N;;;;; |
+16F71;MIAO VOWEL SIGN Y;Mc;0;L;;;;;N;;;;; |
+16F72;MIAO VOWEL SIGN YI;Mc;0;L;;;;;N;;;;; |
+16F73;MIAO VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; |
+16F74;MIAO VOWEL SIGN AEE;Mc;0;L;;;;;N;;;;; |
+16F75;MIAO VOWEL SIGN ERR;Mc;0;L;;;;;N;;;;; |
+16F76;MIAO VOWEL SIGN ROUNDED ERR;Mc;0;L;;;;;N;;;;; |
+16F77;MIAO VOWEL SIGN ER;Mc;0;L;;;;;N;;;;; |
+16F78;MIAO VOWEL SIGN ROUNDED ER;Mc;0;L;;;;;N;;;;; |
+16F79;MIAO VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; |
+16F7A;MIAO VOWEL SIGN EI;Mc;0;L;;;;;N;;;;; |
+16F7B;MIAO VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; |
+16F7C;MIAO VOWEL SIGN OU;Mc;0;L;;;;;N;;;;; |
+16F7D;MIAO VOWEL SIGN N;Mc;0;L;;;;;N;;;;; |
+16F7E;MIAO VOWEL SIGN NG;Mc;0;L;;;;;N;;;;; |
+16F8F;MIAO TONE RIGHT;Mn;0;NSM;;;;;N;;;;; |
+16F90;MIAO TONE TOP RIGHT;Mn;0;NSM;;;;;N;;;;; |
+16F91;MIAO TONE ABOVE;Mn;0;NSM;;;;;N;;;;; |
+16F92;MIAO TONE BELOW;Mn;0;NSM;;;;;N;;;;; |
+16F93;MIAO LETTER TONE-2;Lm;0;L;;;;;N;;;;; |
+16F94;MIAO LETTER TONE-3;Lm;0;L;;;;;N;;;;; |
+16F95;MIAO LETTER TONE-4;Lm;0;L;;;;;N;;;;; |
+16F96;MIAO LETTER TONE-5;Lm;0;L;;;;;N;;;;; |
+16F97;MIAO LETTER TONE-6;Lm;0;L;;;;;N;;;;; |
+16F98;MIAO LETTER TONE-7;Lm;0;L;;;;;N;;;;; |
+16F99;MIAO LETTER TONE-8;Lm;0;L;;;;;N;;;;; |
+16F9A;MIAO LETTER REFORMED TONE-1;Lm;0;L;;;;;N;;;;; |
+16F9B;MIAO LETTER REFORMED TONE-2;Lm;0;L;;;;;N;;;;; |
+16F9C;MIAO LETTER REFORMED TONE-4;Lm;0;L;;;;;N;;;;; |
+16F9D;MIAO LETTER REFORMED TONE-5;Lm;0;L;;;;;N;;;;; |
+16F9E;MIAO LETTER REFORMED TONE-6;Lm;0;L;;;;;N;;;;; |
+16F9F;MIAO LETTER REFORMED TONE-8;Lm;0;L;;;;;N;;;;; |
+1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;; |
+1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; |
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; |
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; |
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; |
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; |
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; |
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; |
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; |
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; |
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; |
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; |
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; |
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; |
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; |
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; |
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; |
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; |
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; |
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; |
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; |
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; |
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; |
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; |
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; |
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; |
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; |
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; |
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; |
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; |
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; |
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; |
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; |
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; |
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; |
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; |
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; |
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; |
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; |
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; |
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; |
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; |
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; |
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; |
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; |
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; |
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; |
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; |
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; |
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; |
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; |
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; |
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; |
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; |
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; |
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; |
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; |
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; |
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; |
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; |
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; |
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; |
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; |
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; |
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; |
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; |
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; |
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; |
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; |
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; |
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; |
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; |
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; |
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; |
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; |
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; |
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; |
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; |
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; |
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; |
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; |
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; |
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; |
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; |
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; |
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; |
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; |
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; |
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; |
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; |
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; |
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; |
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; |
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; |
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; |
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; |
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; |
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; |
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; |
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; |
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; |
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; |
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; |
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; |
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; |
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; |
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; |
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; |
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; |
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; |
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; |
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; |
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; |
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; |
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; |
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; |
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; |
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; |
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; |
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; |
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; |
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; |
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; |
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; |
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; |
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; |
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; |
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; |
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; |
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; |
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; |
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; |
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; |
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; |
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; |
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; |
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; |
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; |
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; |
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; |
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; |
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; |
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; |
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; |
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; |
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; |
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; |
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; |
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; |
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; |
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; |
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; |
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; |
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; |
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; |
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; |
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; |
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; |
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; |
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; |
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; |
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; |
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; |
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; |
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; |
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; |
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; |
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; |
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; |
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; |
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; |
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; |
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; |
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; |
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; |
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; |
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; |
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; |
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; |
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; |
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; |
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; |
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; |
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; |
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; |
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; |
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; |
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; |
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; |
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; |
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; |
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; |
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; |
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; |
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; |
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; |
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; |
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; |
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; |
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; |
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; |
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; |
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; |
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; |
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; |
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; |
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; |
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; |
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; |
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; |
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; |
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; |
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; |
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; |
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; |
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; |
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; |
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; |
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; |
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; |
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; |
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; |
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; |
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; |
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; |
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; |
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; |
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; |
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; |
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; |
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; |
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; |
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; |
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; |
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; |
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; |
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; |
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; |
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; |
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; |
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; |
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; |
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; |
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; |
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; |
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; |
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; |
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; |
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; |
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; |
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; |
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; |
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; |
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; |
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; |
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; |
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; |
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; |
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; |
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; |
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; |
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; |
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; |
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; |
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; |
+1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;; |
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; |
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; |
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; |
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; |
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; |
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; |
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; |
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; |
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; |
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; |
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; |
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; |
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; |
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; |
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; |
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; |
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; |
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; |
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; |
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; |
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; |
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; |
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; |
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; |
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; |
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; |
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; |
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; |
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; |
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; |
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; |
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; |
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; |
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; |
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; |
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; |
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; |
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; |
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; |
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; |
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; |
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; |
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; |
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; |
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; |
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; |
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; |
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; |
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; |
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; |
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; |
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; |
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; |
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; |
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; |
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; |
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; |
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; |
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; |
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; |
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; |
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; |
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; |
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; |
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; |
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; |
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; |
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; |
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; |
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; |
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; |
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; |
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; |
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; |
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; |
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; |
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; |
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; |
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; |
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; |
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; |
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; |
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; |
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; |
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; |
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; |
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; |
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; |
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; |
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; |
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; |
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; |
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; |
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; |
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; |
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; |
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; |
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; |
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; |
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; |
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; |
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; |
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; |
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; |
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; |
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; |
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; |
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; |
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; |
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; |
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; |
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; |
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; |
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; |
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; |
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; |
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; |
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; |
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; |
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; |
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; |
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; |
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; |
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; |
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; |
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; |
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; |
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; |
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; |
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; |
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; |
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; |
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; |
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; |
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; |
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; |
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; |
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; |
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; |
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; |
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; |
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; |
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; |
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; |
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; |
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; |
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; |
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; |
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; |
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; |
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; |
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; |
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; |
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; |
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; |
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; |
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; |
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; |
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; |
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; |
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; |
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; |
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; |
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; |
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; |
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; |
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; |
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; |
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; |
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; |
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; |
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; |
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; |
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; |
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; |
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; |
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; |
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; |
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; |
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; |
+1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; |
+1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; |
+1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; |
+1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; |
+1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; |
+1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; |
+1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; |
+1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; |
+1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; |
+1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; |
+1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; |
+1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; |
+1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; |
+1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; |
+1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; |
+1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; |
+1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; |
+1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; |
+1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; |
+1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; |
+1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; |
+1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; |
+1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; |
+1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; |
+1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; |
+1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; |
+1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; |
+1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; |
+1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; |
+1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; |
+1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; |
+1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; |
+1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; |
+1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; |
+1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; |
+1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; |
+1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; |
+1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; |
+1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; |
+1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; |
+1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; |
+1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; |
+1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; |
+1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; |
+1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; |
+1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; |
+1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; |
+1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; |
+1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; |
+1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; |
+1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; |
+1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; |
+1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; |
+1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; |
+1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; |
+1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; |
+1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; |
+1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; |
+1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; |
+1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; |
+1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; |
+1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; |
+1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; |
+1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; |
+1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; |
+1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; |
+1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; |
+1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; |
+1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; |
+1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; |
+1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;; |
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;; |
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;; |
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;; |
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;; |
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; |
+1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; |
+1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; |
+1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; |
+1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; |
+1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; |
+1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; |
+1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; |
+1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; |
+1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; |
+1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; |
+1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; |
+1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; |
+1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; |
+1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; |
+1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; |
+1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; |
+1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; |
+1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; |
+1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; |
+1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; |
+1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; |
+1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; |
+1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; |
+1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; |
+1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; |
+1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; |
+1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; |
+1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; |
+1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; |
+1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; |
+1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; |
+1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; |
+1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; |
+1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; |
+1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; |
+1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; |
+1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; |
+1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; |
+1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; |
+1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; |
+1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; |
+1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; |
+1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; |
+1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; |
+1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; |
+1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; |
+1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; |
+1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; |
+1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; |
+1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; |
+1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; |
+1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; |
+1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; |
+1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; |
+1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; |
+1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; |
+1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; |
+1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; |
+1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; |
+1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; |
+1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; |
+1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; |
+1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; |
+1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; |
+1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; |
+1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; |
+1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; |
+1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; |
+1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; |
+1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; |
+1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; |
+1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; |
+1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; |
+1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; |
+1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; |
+1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; |
+1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; |
+1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; |
+1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; |
+1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; |
+1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; |
+1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;; |
+1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;; |
+1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;; |
+1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;; |
+1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;; |
+1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;; |
+1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;; |
+1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;; |
+1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;; |
+1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;; |
+1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;; |
+1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;; |
+1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;; |
+1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;; |
+1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;; |
+1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;; |
+1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;; |
+1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;; |
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; |
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; |
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; |
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; |
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; |
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; |
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; |
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; |
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; |
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; |
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; |
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; |
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; |
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; |
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; |
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; |
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; |
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; |
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; |
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; |
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; |
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; |
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; |
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; |
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; |
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; |
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; |
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; |
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; |
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; |
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; |
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; |
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; |
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; |
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; |
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; |
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; |
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; |
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; |
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; |
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; |
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; |
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; |
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; |
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; |
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; |
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; |
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; |
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; |
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; |
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; |
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; |
+1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;; |
+1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;; |
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; |
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; |
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; |
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; |
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; |
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; |
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; |
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; |
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; |
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; |
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; |
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; |
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; |
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; |
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; |
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; |
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; |
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; |
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; |
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; |
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; |
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; |
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; |
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; |
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; |
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; |
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; |
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; |
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; |
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; |
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; |
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; |
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; |
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; |
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; |
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; |
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; |
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; |
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; |
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; |
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; |
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; |
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; |
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; |
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; |
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; |
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; |
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; |
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; |
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; |
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; |
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;; |
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; |
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; |
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; |
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; |
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; |
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; |
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; |
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; |
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; |
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; |
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; |
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; |
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; |
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; |
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; |
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; |
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; |
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; |
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; |
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; |
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; |
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; |
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; |
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; |
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; |
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; |
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; |
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; |
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; |
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; |
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; |
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; |
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; |
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; |
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; |
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; |
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; |
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; |
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; |
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; |
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; |
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; |
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; |
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; |
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; |
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; |
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; |
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; |
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; |
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; |
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; |
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; |
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; |
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; |
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; |
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; |
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; |
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;; |
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; |
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; |
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; |
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; |
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; |
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; |
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; |
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; |
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; |
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; |
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; |
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; |
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; |
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; |
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; |
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; |
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; |
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; |
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; |
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; |
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; |
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; |
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; |
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; |
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; |
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; |
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; |
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; |
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; |
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; |
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; |
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; |
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; |
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; |
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; |
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; |
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; |
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; |
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; |
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; |
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; |
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; |
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; |
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; |
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; |
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; |
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; |
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; |
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; |
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; |
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; |
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; |
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; |
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; |
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; |
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; |
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; |
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;; |
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; |
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; |
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; |
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; |
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; |
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; |
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; |
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; |
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; |
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; |
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; |
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; |
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; |
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; |
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; |
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; |
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; |
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; |
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; |
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; |
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; |
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; |
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; |
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; |
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; |
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; |
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; |
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; |
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; |
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; |
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; |
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; |
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; |
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; |
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; |
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; |
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; |
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; |
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; |
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; |
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; |
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; |
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; |
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; |
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; |
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; |
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; |
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; |
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; |
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; |
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; |
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; |
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; |
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; |
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; |
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; |
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; |
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;; |
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; |
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; |
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; |
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; |
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; |
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; |
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; |
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; |
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; |
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; |
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; |
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; |
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; |
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; |
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; |
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; |
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; |
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; |
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; |
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; |
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; |
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; |
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; |
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; |
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; |
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; |
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; |
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; |
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; |
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; |
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; |
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; |
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; |
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; |
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; |
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; |
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; |
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; |
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; |
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; |
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; |
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; |
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; |
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; |
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; |
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; |
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; |
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; |
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; |
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; |
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; |
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; |
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; |
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; |
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; |
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; |
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; |
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;; |
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; |
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; |
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; |
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; |
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; |
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; |
+1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;; |
+1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;; |
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; |
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; |
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; |
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; |
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; |
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; |
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; |
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; |
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; |
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; |
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; |
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; |
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; |
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; |
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; |
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; |
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; |
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; |
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; |
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; |
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; |
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; |
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; |
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; |
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; |
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; |
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; |
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; |
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; |
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; |
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; |
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; |
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; |
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; |
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; |
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; |
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; |
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; |
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; |
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; |
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; |
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; |
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; |
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; |
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; |
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; |
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; |
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; |
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; |
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; |
+1EE00;ARABIC MATHEMATICAL ALEF;Lo;0;AL;<font> 0627;;;;N;;;;; |
+1EE01;ARABIC MATHEMATICAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;; |
+1EE02;ARABIC MATHEMATICAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;; |
+1EE03;ARABIC MATHEMATICAL DAL;Lo;0;AL;<font> 062F;;;;N;;;;; |
+1EE05;ARABIC MATHEMATICAL WAW;Lo;0;AL;<font> 0648;;;;N;;;;; |
+1EE06;ARABIC MATHEMATICAL ZAIN;Lo;0;AL;<font> 0632;;;;N;;;;; |
+1EE07;ARABIC MATHEMATICAL HAH;Lo;0;AL;<font> 062D;;;;N;;;;; |
+1EE08;ARABIC MATHEMATICAL TAH;Lo;0;AL;<font> 0637;;;;N;;;;; |
+1EE09;ARABIC MATHEMATICAL YEH;Lo;0;AL;<font> 064A;;;;N;;;;; |
+1EE0A;ARABIC MATHEMATICAL KAF;Lo;0;AL;<font> 0643;;;;N;;;;; |
+1EE0B;ARABIC MATHEMATICAL LAM;Lo;0;AL;<font> 0644;;;;N;;;;; |
+1EE0C;ARABIC MATHEMATICAL MEEM;Lo;0;AL;<font> 0645;;;;N;;;;; |
+1EE0D;ARABIC MATHEMATICAL NOON;Lo;0;AL;<font> 0646;;;;N;;;;; |
+1EE0E;ARABIC MATHEMATICAL SEEN;Lo;0;AL;<font> 0633;;;;N;;;;; |
+1EE0F;ARABIC MATHEMATICAL AIN;Lo;0;AL;<font> 0639;;;;N;;;;; |
+1EE10;ARABIC MATHEMATICAL FEH;Lo;0;AL;<font> 0641;;;;N;;;;; |
+1EE11;ARABIC MATHEMATICAL SAD;Lo;0;AL;<font> 0635;;;;N;;;;; |
+1EE12;ARABIC MATHEMATICAL QAF;Lo;0;AL;<font> 0642;;;;N;;;;; |
+1EE13;ARABIC MATHEMATICAL REH;Lo;0;AL;<font> 0631;;;;N;;;;; |
+1EE14;ARABIC MATHEMATICAL SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;; |
+1EE15;ARABIC MATHEMATICAL TEH;Lo;0;AL;<font> 062A;;;;N;;;;; |
+1EE16;ARABIC MATHEMATICAL THEH;Lo;0;AL;<font> 062B;;;;N;;;;; |
+1EE17;ARABIC MATHEMATICAL KHAH;Lo;0;AL;<font> 062E;;;;N;;;;; |
+1EE18;ARABIC MATHEMATICAL THAL;Lo;0;AL;<font> 0630;;;;N;;;;; |
+1EE19;ARABIC MATHEMATICAL DAD;Lo;0;AL;<font> 0636;;;;N;;;;; |
+1EE1A;ARABIC MATHEMATICAL ZAH;Lo;0;AL;<font> 0638;;;;N;;;;; |
+1EE1B;ARABIC MATHEMATICAL GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;; |
+1EE1C;ARABIC MATHEMATICAL DOTLESS BEH;Lo;0;AL;<font> 066E;;;;N;;;;; |
+1EE1D;ARABIC MATHEMATICAL DOTLESS NOON;Lo;0;AL;<font> 06BA;;;;N;;;;; |
+1EE1E;ARABIC MATHEMATICAL DOTLESS FEH;Lo;0;AL;<font> 06A1;;;;N;;;;; |
+1EE1F;ARABIC MATHEMATICAL DOTLESS QAF;Lo;0;AL;<font> 066F;;;;N;;;;; |
+1EE21;ARABIC MATHEMATICAL INITIAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;; |
+1EE22;ARABIC MATHEMATICAL INITIAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;; |
+1EE24;ARABIC MATHEMATICAL INITIAL HEH;Lo;0;AL;<font> 0647;;;;N;;;;; |
+1EE27;ARABIC MATHEMATICAL INITIAL HAH;Lo;0;AL;<font> 062D;;;;N;;;;; |
+1EE29;ARABIC MATHEMATICAL INITIAL YEH;Lo;0;AL;<font> 064A;;;;N;;;;; |
+1EE2A;ARABIC MATHEMATICAL INITIAL KAF;Lo;0;AL;<font> 0643;;;;N;;;;; |
+1EE2B;ARABIC MATHEMATICAL INITIAL LAM;Lo;0;AL;<font> 0644;;;;N;;;;; |
+1EE2C;ARABIC MATHEMATICAL INITIAL MEEM;Lo;0;AL;<font> 0645;;;;N;;;;; |
+1EE2D;ARABIC MATHEMATICAL INITIAL NOON;Lo;0;AL;<font> 0646;;;;N;;;;; |
+1EE2E;ARABIC MATHEMATICAL INITIAL SEEN;Lo;0;AL;<font> 0633;;;;N;;;;; |
+1EE2F;ARABIC MATHEMATICAL INITIAL AIN;Lo;0;AL;<font> 0639;;;;N;;;;; |
+1EE30;ARABIC MATHEMATICAL INITIAL FEH;Lo;0;AL;<font> 0641;;;;N;;;;; |
+1EE31;ARABIC MATHEMATICAL INITIAL SAD;Lo;0;AL;<font> 0635;;;;N;;;;; |
+1EE32;ARABIC MATHEMATICAL INITIAL QAF;Lo;0;AL;<font> 0642;;;;N;;;;; |
+1EE34;ARABIC MATHEMATICAL INITIAL SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;; |
+1EE35;ARABIC MATHEMATICAL INITIAL TEH;Lo;0;AL;<font> 062A;;;;N;;;;; |
+1EE36;ARABIC MATHEMATICAL INITIAL THEH;Lo;0;AL;<font> 062B;;;;N;;;;; |
+1EE37;ARABIC MATHEMATICAL INITIAL KHAH;Lo;0;AL;<font> 062E;;;;N;;;;; |
+1EE39;ARABIC MATHEMATICAL INITIAL DAD;Lo;0;AL;<font> 0636;;;;N;;;;; |
+1EE3B;ARABIC MATHEMATICAL INITIAL GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;; |
+1EE42;ARABIC MATHEMATICAL TAILED JEEM;Lo;0;AL;<font> 062C;;;;N;;;;; |
+1EE47;ARABIC MATHEMATICAL TAILED HAH;Lo;0;AL;<font> 062D;;;;N;;;;; |
+1EE49;ARABIC MATHEMATICAL TAILED YEH;Lo;0;AL;<font> 064A;;;;N;;;;; |
+1EE4B;ARABIC MATHEMATICAL TAILED LAM;Lo;0;AL;<font> 0644;;;;N;;;;; |
+1EE4D;ARABIC MATHEMATICAL TAILED NOON;Lo;0;AL;<font> 0646;;;;N;;;;; |
+1EE4E;ARABIC MATHEMATICAL TAILED SEEN;Lo;0;AL;<font> 0633;;;;N;;;;; |
+1EE4F;ARABIC MATHEMATICAL TAILED AIN;Lo;0;AL;<font> 0639;;;;N;;;;; |
+1EE51;ARABIC MATHEMATICAL TAILED SAD;Lo;0;AL;<font> 0635;;;;N;;;;; |
+1EE52;ARABIC MATHEMATICAL TAILED QAF;Lo;0;AL;<font> 0642;;;;N;;;;; |
+1EE54;ARABIC MATHEMATICAL TAILED SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;; |
+1EE57;ARABIC MATHEMATICAL TAILED KHAH;Lo;0;AL;<font> 062E;;;;N;;;;; |
+1EE59;ARABIC MATHEMATICAL TAILED DAD;Lo;0;AL;<font> 0636;;;;N;;;;; |
+1EE5B;ARABIC MATHEMATICAL TAILED GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;; |
+1EE5D;ARABIC MATHEMATICAL TAILED DOTLESS NOON;Lo;0;AL;<font> 06BA;;;;N;;;;; |
+1EE5F;ARABIC MATHEMATICAL TAILED DOTLESS QAF;Lo;0;AL;<font> 066F;;;;N;;;;; |
+1EE61;ARABIC MATHEMATICAL STRETCHED BEH;Lo;0;AL;<font> 0628;;;;N;;;;; |
+1EE62;ARABIC MATHEMATICAL STRETCHED JEEM;Lo;0;AL;<font> 062C;;;;N;;;;; |
+1EE64;ARABIC MATHEMATICAL STRETCHED HEH;Lo;0;AL;<font> 0647;;;;N;;;;; |
+1EE67;ARABIC MATHEMATICAL STRETCHED HAH;Lo;0;AL;<font> 062D;;;;N;;;;; |
+1EE68;ARABIC MATHEMATICAL STRETCHED TAH;Lo;0;AL;<font> 0637;;;;N;;;;; |
+1EE69;ARABIC MATHEMATICAL STRETCHED YEH;Lo;0;AL;<font> 064A;;;;N;;;;; |
+1EE6A;ARABIC MATHEMATICAL STRETCHED KAF;Lo;0;AL;<font> 0643;;;;N;;;;; |
+1EE6C;ARABIC MATHEMATICAL STRETCHED MEEM;Lo;0;AL;<font> 0645;;;;N;;;;; |
+1EE6D;ARABIC MATHEMATICAL STRETCHED NOON;Lo;0;AL;<font> 0646;;;;N;;;;; |
+1EE6E;ARABIC MATHEMATICAL STRETCHED SEEN;Lo;0;AL;<font> 0633;;;;N;;;;; |
+1EE6F;ARABIC MATHEMATICAL STRETCHED AIN;Lo;0;AL;<font> 0639;;;;N;;;;; |
+1EE70;ARABIC MATHEMATICAL STRETCHED FEH;Lo;0;AL;<font> 0641;;;;N;;;;; |
+1EE71;ARABIC MATHEMATICAL STRETCHED SAD;Lo;0;AL;<font> 0635;;;;N;;;;; |
+1EE72;ARABIC MATHEMATICAL STRETCHED QAF;Lo;0;AL;<font> 0642;;;;N;;;;; |
+1EE74;ARABIC MATHEMATICAL STRETCHED SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;; |
+1EE75;ARABIC MATHEMATICAL STRETCHED TEH;Lo;0;AL;<font> 062A;;;;N;;;;; |
+1EE76;ARABIC MATHEMATICAL STRETCHED THEH;Lo;0;AL;<font> 062B;;;;N;;;;; |
+1EE77;ARABIC MATHEMATICAL STRETCHED KHAH;Lo;0;AL;<font> 062E;;;;N;;;;; |
+1EE79;ARABIC MATHEMATICAL STRETCHED DAD;Lo;0;AL;<font> 0636;;;;N;;;;; |
+1EE7A;ARABIC MATHEMATICAL STRETCHED ZAH;Lo;0;AL;<font> 0638;;;;N;;;;; |
+1EE7B;ARABIC MATHEMATICAL STRETCHED GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;; |
+1EE7C;ARABIC MATHEMATICAL STRETCHED DOTLESS BEH;Lo;0;AL;<font> 066E;;;;N;;;;; |
+1EE7E;ARABIC MATHEMATICAL STRETCHED DOTLESS FEH;Lo;0;AL;<font> 06A1;;;;N;;;;; |
+1EE80;ARABIC MATHEMATICAL LOOPED ALEF;Lo;0;AL;<font> 0627;;;;N;;;;; |
+1EE81;ARABIC MATHEMATICAL LOOPED BEH;Lo;0;AL;<font> 0628;;;;N;;;;; |
+1EE82;ARABIC MATHEMATICAL LOOPED JEEM;Lo;0;AL;<font> 062C;;;;N;;;;; |
+1EE83;ARABIC MATHEMATICAL LOOPED DAL;Lo;0;AL;<font> 062F;;;;N;;;;; |
+1EE84;ARABIC MATHEMATICAL LOOPED HEH;Lo;0;AL;<font> 0647;;;;N;;;;; |
+1EE85;ARABIC MATHEMATICAL LOOPED WAW;Lo;0;AL;<font> 0648;;;;N;;;;; |
+1EE86;ARABIC MATHEMATICAL LOOPED ZAIN;Lo;0;AL;<font> 0632;;;;N;;;;; |
+1EE87;ARABIC MATHEMATICAL LOOPED HAH;Lo;0;AL;<font> 062D;;;;N;;;;; |
+1EE88;ARABIC MATHEMATICAL LOOPED TAH;Lo;0;AL;<font> 0637;;;;N;;;;; |
+1EE89;ARABIC MATHEMATICAL LOOPED YEH;Lo;0;AL;<font> 064A;;;;N;;;;; |
+1EE8B;ARABIC MATHEMATICAL LOOPED LAM;Lo;0;AL;<font> 0644;;;;N;;;;; |
+1EE8C;ARABIC MATHEMATICAL LOOPED MEEM;Lo;0;AL;<font> 0645;;;;N;;;;; |
+1EE8D;ARABIC MATHEMATICAL LOOPED NOON;Lo;0;AL;<font> 0646;;;;N;;;;; |
+1EE8E;ARABIC MATHEMATICAL LOOPED SEEN;Lo;0;AL;<font> 0633;;;;N;;;;; |
+1EE8F;ARABIC MATHEMATICAL LOOPED AIN;Lo;0;AL;<font> 0639;;;;N;;;;; |
+1EE90;ARABIC MATHEMATICAL LOOPED FEH;Lo;0;AL;<font> 0641;;;;N;;;;; |
+1EE91;ARABIC MATHEMATICAL LOOPED SAD;Lo;0;AL;<font> 0635;;;;N;;;;; |
+1EE92;ARABIC MATHEMATICAL LOOPED QAF;Lo;0;AL;<font> 0642;;;;N;;;;; |
+1EE93;ARABIC MATHEMATICAL LOOPED REH;Lo;0;AL;<font> 0631;;;;N;;;;; |
+1EE94;ARABIC MATHEMATICAL LOOPED SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;; |
+1EE95;ARABIC MATHEMATICAL LOOPED TEH;Lo;0;AL;<font> 062A;;;;N;;;;; |
+1EE96;ARABIC MATHEMATICAL LOOPED THEH;Lo;0;AL;<font> 062B;;;;N;;;;; |
+1EE97;ARABIC MATHEMATICAL LOOPED KHAH;Lo;0;AL;<font> 062E;;;;N;;;;; |
+1EE98;ARABIC MATHEMATICAL LOOPED THAL;Lo;0;AL;<font> 0630;;;;N;;;;; |
+1EE99;ARABIC MATHEMATICAL LOOPED DAD;Lo;0;AL;<font> 0636;;;;N;;;;; |
+1EE9A;ARABIC MATHEMATICAL LOOPED ZAH;Lo;0;AL;<font> 0638;;;;N;;;;; |
+1EE9B;ARABIC MATHEMATICAL LOOPED GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;; |
+1EEA1;ARABIC MATHEMATICAL DOUBLE-STRUCK BEH;Lo;0;AL;<font> 0628;;;;N;;;;; |
+1EEA2;ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM;Lo;0;AL;<font> 062C;;;;N;;;;; |
+1EEA3;ARABIC MATHEMATICAL DOUBLE-STRUCK DAL;Lo;0;AL;<font> 062F;;;;N;;;;; |
+1EEA5;ARABIC MATHEMATICAL DOUBLE-STRUCK WAW;Lo;0;AL;<font> 0648;;;;N;;;;; |
+1EEA6;ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN;Lo;0;AL;<font> 0632;;;;N;;;;; |
+1EEA7;ARABIC MATHEMATICAL DOUBLE-STRUCK HAH;Lo;0;AL;<font> 062D;;;;N;;;;; |
+1EEA8;ARABIC MATHEMATICAL DOUBLE-STRUCK TAH;Lo;0;AL;<font> 0637;;;;N;;;;; |
+1EEA9;ARABIC MATHEMATICAL DOUBLE-STRUCK YEH;Lo;0;AL;<font> 064A;;;;N;;;;; |
+1EEAB;ARABIC MATHEMATICAL DOUBLE-STRUCK LAM;Lo;0;AL;<font> 0644;;;;N;;;;; |
+1EEAC;ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM;Lo;0;AL;<font> 0645;;;;N;;;;; |
+1EEAD;ARABIC MATHEMATICAL DOUBLE-STRUCK NOON;Lo;0;AL;<font> 0646;;;;N;;;;; |
+1EEAE;ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN;Lo;0;AL;<font> 0633;;;;N;;;;; |
+1EEAF;ARABIC MATHEMATICAL DOUBLE-STRUCK AIN;Lo;0;AL;<font> 0639;;;;N;;;;; |
+1EEB0;ARABIC MATHEMATICAL DOUBLE-STRUCK FEH;Lo;0;AL;<font> 0641;;;;N;;;;; |
+1EEB1;ARABIC MATHEMATICAL DOUBLE-STRUCK SAD;Lo;0;AL;<font> 0635;;;;N;;;;; |
+1EEB2;ARABIC MATHEMATICAL DOUBLE-STRUCK QAF;Lo;0;AL;<font> 0642;;;;N;;;;; |
+1EEB3;ARABIC MATHEMATICAL DOUBLE-STRUCK REH;Lo;0;AL;<font> 0631;;;;N;;;;; |
+1EEB4;ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN;Lo;0;AL;<font> 0634;;;;N;;;;; |
+1EEB5;ARABIC MATHEMATICAL DOUBLE-STRUCK TEH;Lo;0;AL;<font> 062A;;;;N;;;;; |
+1EEB6;ARABIC MATHEMATICAL DOUBLE-STRUCK THEH;Lo;0;AL;<font> 062B;;;;N;;;;; |
+1EEB7;ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH;Lo;0;AL;<font> 062E;;;;N;;;;; |
+1EEB8;ARABIC MATHEMATICAL DOUBLE-STRUCK THAL;Lo;0;AL;<font> 0630;;;;N;;;;; |
+1EEB9;ARABIC MATHEMATICAL DOUBLE-STRUCK DAD;Lo;0;AL;<font> 0636;;;;N;;;;; |
+1EEBA;ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH;Lo;0;AL;<font> 0638;;;;N;;;;; |
+1EEBB;ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN;Lo;0;AL;<font> 063A;;;;N;;;;; |
+1EEF0;ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL;Sm;0;ON;;;;;N;;;;; |
+1EEF1;ARABIC MATHEMATICAL OPERATOR HAH WITH DAL;Sm;0;ON;;;;;N;;;;; |
+1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;; |
+1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;; |
+1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;; |
+1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;; |
+1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;; |
+1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;; |
+1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;; |
+1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;; |
+1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;; |
+1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;; |
+1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;; |
+1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;; |
+1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;; |
+1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;; |
+1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;; |
+1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;; |
+1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;; |
+1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;; |
+1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;; |
+1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;; |
+1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;; |
+1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;; |
+1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;; |
+1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;; |
+1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;; |
+1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;; |
+1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;; |
+1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;; |
+1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;; |
+1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;; |
+1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;; |
+1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;; |
+1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;; |
+1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;; |
+1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;; |
+1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;; |
+1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;; |
+1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;; |
+1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;; |
+1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;; |
+1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;; |
+1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;; |
+1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;; |
+1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;; |
+1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;; |
+1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;; |
+1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;; |
+1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;; |
+1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;; |
+1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;; |
+1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;; |
+1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;; |
+1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;; |
+1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;; |
+1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;; |
+1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;; |
+1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;; |
+1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;; |
+1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;; |
+1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;; |
+1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;; |
+1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;; |
+1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;; |
+1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;; |
+1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;; |
+1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;; |
+1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;; |
+1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;; |
+1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;; |
+1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;; |
+1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;; |
+1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;; |
+1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;; |
+1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;; |
+1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;; |
+1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;; |
+1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;; |
+1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;; |
+1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;; |
+1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;; |
+1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;; |
+1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;; |
+1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;; |
+1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;; |
+1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;; |
+1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;; |
+1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;; |
+1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;; |
+1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;; |
+1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;; |
+1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;; |
+1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;; |
+1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;; |
+1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;; |
+1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;; |
+1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;; |
+1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;; |
+1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;; |
+1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;; |
+1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;; |
+1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;; |
+1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;; |
+1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;; |
+1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;; |
+1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;; |
+1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;; |
+1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;; |
+1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;; |
+1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;; |
+1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;; |
+1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;; |
+1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;; |
+1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;; |
+1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;; |
+1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;; |
+1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;; |
+1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;; |
+1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;; |
+1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;; |
+1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;; |
+1F0A0;PLAYING CARD BACK;So;0;ON;;;;;N;;;;; |
+1F0A1;PLAYING CARD ACE OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A2;PLAYING CARD TWO OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A3;PLAYING CARD THREE OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A4;PLAYING CARD FOUR OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A5;PLAYING CARD FIVE OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A6;PLAYING CARD SIX OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A7;PLAYING CARD SEVEN OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A8;PLAYING CARD EIGHT OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0A9;PLAYING CARD NINE OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0AA;PLAYING CARD TEN OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0AB;PLAYING CARD JACK OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0AC;PLAYING CARD KNIGHT OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0AD;PLAYING CARD QUEEN OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0AE;PLAYING CARD KING OF SPADES;So;0;ON;;;;;N;;;;; |
+1F0B1;PLAYING CARD ACE OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B2;PLAYING CARD TWO OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B3;PLAYING CARD THREE OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B4;PLAYING CARD FOUR OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B5;PLAYING CARD FIVE OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B6;PLAYING CARD SIX OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B7;PLAYING CARD SEVEN OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B8;PLAYING CARD EIGHT OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0B9;PLAYING CARD NINE OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0BA;PLAYING CARD TEN OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0BB;PLAYING CARD JACK OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0BC;PLAYING CARD KNIGHT OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0BD;PLAYING CARD QUEEN OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0BE;PLAYING CARD KING OF HEARTS;So;0;ON;;;;;N;;;;; |
+1F0C1;PLAYING CARD ACE OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C2;PLAYING CARD TWO OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C3;PLAYING CARD THREE OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C4;PLAYING CARD FOUR OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C5;PLAYING CARD FIVE OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C6;PLAYING CARD SIX OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C7;PLAYING CARD SEVEN OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C8;PLAYING CARD EIGHT OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0C9;PLAYING CARD NINE OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0CA;PLAYING CARD TEN OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0CB;PLAYING CARD JACK OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0CC;PLAYING CARD KNIGHT OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0CD;PLAYING CARD QUEEN OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0CE;PLAYING CARD KING OF DIAMONDS;So;0;ON;;;;;N;;;;; |
+1F0CF;PLAYING CARD BLACK JOKER;So;0;ON;;;;;N;;;;; |
+1F0D1;PLAYING CARD ACE OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D2;PLAYING CARD TWO OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D3;PLAYING CARD THREE OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D4;PLAYING CARD FOUR OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D5;PLAYING CARD FIVE OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D6;PLAYING CARD SIX OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D7;PLAYING CARD SEVEN OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D8;PLAYING CARD EIGHT OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0D9;PLAYING CARD NINE OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0DA;PLAYING CARD TEN OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0DB;PLAYING CARD JACK OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0DC;PLAYING CARD KNIGHT OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0DD;PLAYING CARD QUEEN OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0DE;PLAYING CARD KING OF CLUBS;So;0;ON;;;;;N;;;;; |
+1F0DF;PLAYING CARD WHITE JOKER;So;0;ON;;;;;N;;;;; |
+1F100;DIGIT ZERO FULL STOP;No;0;EN;<compat> 0030 002E;;0;0;N;;;;; |
+1F101;DIGIT ZERO COMMA;No;0;EN;<compat> 0030 002C;;0;0;N;;;;; |
+1F102;DIGIT ONE COMMA;No;0;EN;<compat> 0031 002C;;1;1;N;;;;; |
+1F103;DIGIT TWO COMMA;No;0;EN;<compat> 0032 002C;;2;2;N;;;;; |
+1F104;DIGIT THREE COMMA;No;0;EN;<compat> 0033 002C;;3;3;N;;;;; |
+1F105;DIGIT FOUR COMMA;No;0;EN;<compat> 0034 002C;;4;4;N;;;;; |
+1F106;DIGIT FIVE COMMA;No;0;EN;<compat> 0035 002C;;5;5;N;;;;; |
+1F107;DIGIT SIX COMMA;No;0;EN;<compat> 0036 002C;;6;6;N;;;;; |
+1F108;DIGIT SEVEN COMMA;No;0;EN;<compat> 0037 002C;;7;7;N;;;;; |
+1F109;DIGIT EIGHT COMMA;No;0;EN;<compat> 0038 002C;;8;8;N;;;;; |
+1F10A;DIGIT NINE COMMA;No;0;EN;<compat> 0039 002C;;9;9;N;;;;; |
+1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;; |
+1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;; |
+1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;; |
+1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L;<compat> 0028 0044 0029;;;;N;;;;; |
+1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L;<compat> 0028 0045 0029;;;;N;;;;; |
+1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L;<compat> 0028 0046 0029;;;;N;;;;; |
+1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L;<compat> 0028 0047 0029;;;;N;;;;; |
+1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L;<compat> 0028 0048 0029;;;;N;;;;; |
+1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L;<compat> 0028 0049 0029;;;;N;;;;; |
+1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L;<compat> 0028 004A 0029;;;;N;;;;; |
+1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L;<compat> 0028 004B 0029;;;;N;;;;; |
+1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L;<compat> 0028 004C 0029;;;;N;;;;; |
+1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L;<compat> 0028 004D 0029;;;;N;;;;; |
+1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L;<compat> 0028 004E 0029;;;;N;;;;; |
+1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L;<compat> 0028 004F 0029;;;;N;;;;; |
+1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L;<compat> 0028 0050 0029;;;;N;;;;; |
+1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L;<compat> 0028 0051 0029;;;;N;;;;; |
+1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L;<compat> 0028 0052 0029;;;;N;;;;; |
+1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L;<compat> 0028 0053 0029;;;;N;;;;; |
+1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L;<compat> 0028 0054 0029;;;;N;;;;; |
+1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L;<compat> 0028 0055 0029;;;;N;;;;; |
+1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L;<compat> 0028 0056 0029;;;;N;;;;; |
+1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L;<compat> 0028 0057 0029;;;;N;;;;; |
+1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L;<compat> 0028 0058 0029;;;;N;;;;; |
+1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L;<compat> 0028 0059 0029;;;;N;;;;; |
+1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L;<compat> 0028 005A 0029;;;;N;;;;; |
+1F12A;TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;So;0;L;<compat> 3014 0053 3015;;;;N;;;;; |
+1F12B;CIRCLED ITALIC LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;; |
+1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;; |
+1F12D;CIRCLED CD;So;0;L;<circle> 0043 0044;;;;N;;;;; |
+1F12E;CIRCLED WZ;So;0;L;<circle> 0057 005A;;;;N;;;;; |
+1F130;SQUARED LATIN CAPITAL LETTER A;So;0;L;<square> 0041;;;;N;;;;; |
+1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L;<square> 0042;;;;N;;;;; |
+1F132;SQUARED LATIN CAPITAL LETTER C;So;0;L;<square> 0043;;;;N;;;;; |
+1F133;SQUARED LATIN CAPITAL LETTER D;So;0;L;<square> 0044;;;;N;;;;; |
+1F134;SQUARED LATIN CAPITAL LETTER E;So;0;L;<square> 0045;;;;N;;;;; |
+1F135;SQUARED LATIN CAPITAL LETTER F;So;0;L;<square> 0046;;;;N;;;;; |
+1F136;SQUARED LATIN CAPITAL LETTER G;So;0;L;<square> 0047;;;;N;;;;; |
+1F137;SQUARED LATIN CAPITAL LETTER H;So;0;L;<square> 0048;;;;N;;;;; |
+1F138;SQUARED LATIN CAPITAL LETTER I;So;0;L;<square> 0049;;;;N;;;;; |
+1F139;SQUARED LATIN CAPITAL LETTER J;So;0;L;<square> 004A;;;;N;;;;; |
+1F13A;SQUARED LATIN CAPITAL LETTER K;So;0;L;<square> 004B;;;;N;;;;; |
+1F13B;SQUARED LATIN CAPITAL LETTER L;So;0;L;<square> 004C;;;;N;;;;; |
+1F13C;SQUARED LATIN CAPITAL LETTER M;So;0;L;<square> 004D;;;;N;;;;; |
+1F13D;SQUARED LATIN CAPITAL LETTER N;So;0;L;<square> 004E;;;;N;;;;; |
+1F13E;SQUARED LATIN CAPITAL LETTER O;So;0;L;<square> 004F;;;;N;;;;; |
+1F13F;SQUARED LATIN CAPITAL LETTER P;So;0;L;<square> 0050;;;;N;;;;; |
+1F140;SQUARED LATIN CAPITAL LETTER Q;So;0;L;<square> 0051;;;;N;;;;; |
+1F141;SQUARED LATIN CAPITAL LETTER R;So;0;L;<square> 0052;;;;N;;;;; |
+1F142;SQUARED LATIN CAPITAL LETTER S;So;0;L;<square> 0053;;;;N;;;;; |
+1F143;SQUARED LATIN CAPITAL LETTER T;So;0;L;<square> 0054;;;;N;;;;; |
+1F144;SQUARED LATIN CAPITAL LETTER U;So;0;L;<square> 0055;;;;N;;;;; |
+1F145;SQUARED LATIN CAPITAL LETTER V;So;0;L;<square> 0056;;;;N;;;;; |
+1F146;SQUARED LATIN CAPITAL LETTER W;So;0;L;<square> 0057;;;;N;;;;; |
+1F147;SQUARED LATIN CAPITAL LETTER X;So;0;L;<square> 0058;;;;N;;;;; |
+1F148;SQUARED LATIN CAPITAL LETTER Y;So;0;L;<square> 0059;;;;N;;;;; |
+1F149;SQUARED LATIN CAPITAL LETTER Z;So;0;L;<square> 005A;;;;N;;;;; |
+1F14A;SQUARED HV;So;0;L;<square> 0048 0056;;;;N;;;;; |
+1F14B;SQUARED MV;So;0;L;<square> 004D 0056;;;;N;;;;; |
+1F14C;SQUARED SD;So;0;L;<square> 0053 0044;;;;N;;;;; |
+1F14D;SQUARED SS;So;0;L;<square> 0053 0053;;;;N;;;;; |
+1F14E;SQUARED PPV;So;0;L;<square> 0050 0050 0056;;;;N;;;;; |
+1F14F;SQUARED WC;So;0;L;<square> 0057 0043;;;;N;;;;; |
+1F150;NEGATIVE CIRCLED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;; |
+1F151;NEGATIVE CIRCLED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;; |
+1F152;NEGATIVE CIRCLED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;; |
+1F153;NEGATIVE CIRCLED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;; |
+1F154;NEGATIVE CIRCLED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;; |
+1F155;NEGATIVE CIRCLED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;; |
+1F156;NEGATIVE CIRCLED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;; |
+1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;; |
+1F158;NEGATIVE CIRCLED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;; |
+1F159;NEGATIVE CIRCLED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;; |
+1F15A;NEGATIVE CIRCLED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;; |
+1F15B;NEGATIVE CIRCLED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;; |
+1F15C;NEGATIVE CIRCLED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;; |
+1F15D;NEGATIVE CIRCLED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;; |
+1F15E;NEGATIVE CIRCLED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;; |
+1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; |
+1F160;NEGATIVE CIRCLED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;; |
+1F161;NEGATIVE CIRCLED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;; |
+1F162;NEGATIVE CIRCLED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;; |
+1F163;NEGATIVE CIRCLED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;; |
+1F164;NEGATIVE CIRCLED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;; |
+1F165;NEGATIVE CIRCLED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;; |
+1F166;NEGATIVE CIRCLED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;; |
+1F167;NEGATIVE CIRCLED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;; |
+1F168;NEGATIVE CIRCLED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;; |
+1F169;NEGATIVE CIRCLED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;; |
+1F16A;RAISED MC SIGN;So;0;ON;<super> 004D 0043;;;;N;;;;; |
+1F16B;RAISED MD SIGN;So;0;ON;<super> 004D 0044;;;;N;;;;; |
+1F170;NEGATIVE SQUARED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;; |
+1F171;NEGATIVE SQUARED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;; |
+1F172;NEGATIVE SQUARED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;; |
+1F173;NEGATIVE SQUARED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;; |
+1F174;NEGATIVE SQUARED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;; |
+1F175;NEGATIVE SQUARED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;; |
+1F176;NEGATIVE SQUARED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;; |
+1F177;NEGATIVE SQUARED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;; |
+1F178;NEGATIVE SQUARED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;; |
+1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;; |
+1F17A;NEGATIVE SQUARED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;; |
+1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;; |
+1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;; |
+1F17D;NEGATIVE SQUARED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;; |
+1F17E;NEGATIVE SQUARED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;; |
+1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; |
+1F180;NEGATIVE SQUARED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;; |
+1F181;NEGATIVE SQUARED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;; |
+1F182;NEGATIVE SQUARED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;; |
+1F183;NEGATIVE SQUARED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;; |
+1F184;NEGATIVE SQUARED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;; |
+1F185;NEGATIVE SQUARED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;; |
+1F186;NEGATIVE SQUARED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;; |
+1F187;NEGATIVE SQUARED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;; |
+1F188;NEGATIVE SQUARED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;; |
+1F189;NEGATIVE SQUARED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;; |
+1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; |
+1F18B;NEGATIVE SQUARED IC;So;0;L;;;;;N;;;;; |
+1F18C;NEGATIVE SQUARED PA;So;0;L;;;;;N;;;;; |
+1F18D;NEGATIVE SQUARED SA;So;0;L;;;;;N;;;;; |
+1F18E;NEGATIVE SQUARED AB;So;0;L;;;;;N;;;;; |
+1F18F;NEGATIVE SQUARED WC;So;0;L;;;;;N;;;;; |
+1F190;SQUARE DJ;So;0;L;<square> 0044 004A;;;;N;;;;; |
+1F191;SQUARED CL;So;0;L;;;;;N;;;;; |
+1F192;SQUARED COOL;So;0;L;;;;;N;;;;; |
+1F193;SQUARED FREE;So;0;L;;;;;N;;;;; |
+1F194;SQUARED ID;So;0;L;;;;;N;;;;; |
+1F195;SQUARED NEW;So;0;L;;;;;N;;;;; |
+1F196;SQUARED NG;So;0;L;;;;;N;;;;; |
+1F197;SQUARED OK;So;0;L;;;;;N;;;;; |
+1F198;SQUARED SOS;So;0;L;;;;;N;;;;; |
+1F199;SQUARED UP WITH EXCLAMATION MARK;So;0;L;;;;;N;;;;; |
+1F19A;SQUARED VS;So;0;L;;;;;N;;;;; |
+1F1E6;REGIONAL INDICATOR SYMBOL LETTER A;So;0;L;;;;;N;;;;; |
+1F1E7;REGIONAL INDICATOR SYMBOL LETTER B;So;0;L;;;;;N;;;;; |
+1F1E8;REGIONAL INDICATOR SYMBOL LETTER C;So;0;L;;;;;N;;;;; |
+1F1E9;REGIONAL INDICATOR SYMBOL LETTER D;So;0;L;;;;;N;;;;; |
+1F1EA;REGIONAL INDICATOR SYMBOL LETTER E;So;0;L;;;;;N;;;;; |
+1F1EB;REGIONAL INDICATOR SYMBOL LETTER F;So;0;L;;;;;N;;;;; |
+1F1EC;REGIONAL INDICATOR SYMBOL LETTER G;So;0;L;;;;;N;;;;; |
+1F1ED;REGIONAL INDICATOR SYMBOL LETTER H;So;0;L;;;;;N;;;;; |
+1F1EE;REGIONAL INDICATOR SYMBOL LETTER I;So;0;L;;;;;N;;;;; |
+1F1EF;REGIONAL INDICATOR SYMBOL LETTER J;So;0;L;;;;;N;;;;; |
+1F1F0;REGIONAL INDICATOR SYMBOL LETTER K;So;0;L;;;;;N;;;;; |
+1F1F1;REGIONAL INDICATOR SYMBOL LETTER L;So;0;L;;;;;N;;;;; |
+1F1F2;REGIONAL INDICATOR SYMBOL LETTER M;So;0;L;;;;;N;;;;; |
+1F1F3;REGIONAL INDICATOR SYMBOL LETTER N;So;0;L;;;;;N;;;;; |
+1F1F4;REGIONAL INDICATOR SYMBOL LETTER O;So;0;L;;;;;N;;;;; |
+1F1F5;REGIONAL INDICATOR SYMBOL LETTER P;So;0;L;;;;;N;;;;; |
+1F1F6;REGIONAL INDICATOR SYMBOL LETTER Q;So;0;L;;;;;N;;;;; |
+1F1F7;REGIONAL INDICATOR SYMBOL LETTER R;So;0;L;;;;;N;;;;; |
+1F1F8;REGIONAL INDICATOR SYMBOL LETTER S;So;0;L;;;;;N;;;;; |
+1F1F9;REGIONAL INDICATOR SYMBOL LETTER T;So;0;L;;;;;N;;;;; |
+1F1FA;REGIONAL INDICATOR SYMBOL LETTER U;So;0;L;;;;;N;;;;; |
+1F1FB;REGIONAL INDICATOR SYMBOL LETTER V;So;0;L;;;;;N;;;;; |
+1F1FC;REGIONAL INDICATOR SYMBOL LETTER W;So;0;L;;;;;N;;;;; |
+1F1FD;REGIONAL INDICATOR SYMBOL LETTER X;So;0;L;;;;;N;;;;; |
+1F1FE;REGIONAL INDICATOR SYMBOL LETTER Y;So;0;L;;;;;N;;;;; |
+1F1FF;REGIONAL INDICATOR SYMBOL LETTER Z;So;0;L;;;;;N;;;;; |
+1F200;SQUARE HIRAGANA HOKA;So;0;L;<square> 307B 304B;;;;N;;;;; |
+1F201;SQUARED KATAKANA KOKO;So;0;L;<square> 30B3 30B3;;;;N;;;;; |
+1F202;SQUARED KATAKANA SA;So;0;L;<square> 30B5;;;;N;;;;; |
+1F210;SQUARED CJK UNIFIED IDEOGRAPH-624B;So;0;L;<square> 624B;;;;N;;;;; |
+1F211;SQUARED CJK UNIFIED IDEOGRAPH-5B57;So;0;L;<square> 5B57;;;;N;;;;; |
+1F212;SQUARED CJK UNIFIED IDEOGRAPH-53CC;So;0;L;<square> 53CC;;;;N;;;;; |
+1F213;SQUARED KATAKANA DE;So;0;L;<square> 30C7;;;;N;;;;; |
+1F214;SQUARED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<square> 4E8C;;;;N;;;;; |
+1F215;SQUARED CJK UNIFIED IDEOGRAPH-591A;So;0;L;<square> 591A;;;;N;;;;; |
+1F216;SQUARED CJK UNIFIED IDEOGRAPH-89E3;So;0;L;<square> 89E3;;;;N;;;;; |
+1F217;SQUARED CJK UNIFIED IDEOGRAPH-5929;So;0;L;<square> 5929;;;;N;;;;; |
+1F218;SQUARED CJK UNIFIED IDEOGRAPH-4EA4;So;0;L;<square> 4EA4;;;;N;;;;; |
+1F219;SQUARED CJK UNIFIED IDEOGRAPH-6620;So;0;L;<square> 6620;;;;N;;;;; |
+1F21A;SQUARED CJK UNIFIED IDEOGRAPH-7121;So;0;L;<square> 7121;;;;N;;;;; |
+1F21B;SQUARED CJK UNIFIED IDEOGRAPH-6599;So;0;L;<square> 6599;;;;N;;;;; |
+1F21C;SQUARED CJK UNIFIED IDEOGRAPH-524D;So;0;L;<square> 524D;;;;N;;;;; |
+1F21D;SQUARED CJK UNIFIED IDEOGRAPH-5F8C;So;0;L;<square> 5F8C;;;;N;;;;; |
+1F21E;SQUARED CJK UNIFIED IDEOGRAPH-518D;So;0;L;<square> 518D;;;;N;;;;; |
+1F21F;SQUARED CJK UNIFIED IDEOGRAPH-65B0;So;0;L;<square> 65B0;;;;N;;;;; |
+1F220;SQUARED CJK UNIFIED IDEOGRAPH-521D;So;0;L;<square> 521D;;;;N;;;;; |
+1F221;SQUARED CJK UNIFIED IDEOGRAPH-7D42;So;0;L;<square> 7D42;;;;N;;;;; |
+1F222;SQUARED CJK UNIFIED IDEOGRAPH-751F;So;0;L;<square> 751F;;;;N;;;;; |
+1F223;SQUARED CJK UNIFIED IDEOGRAPH-8CA9;So;0;L;<square> 8CA9;;;;N;;;;; |
+1F224;SQUARED CJK UNIFIED IDEOGRAPH-58F0;So;0;L;<square> 58F0;;;;N;;;;; |
+1F225;SQUARED CJK UNIFIED IDEOGRAPH-5439;So;0;L;<square> 5439;;;;N;;;;; |
+1F226;SQUARED CJK UNIFIED IDEOGRAPH-6F14;So;0;L;<square> 6F14;;;;N;;;;; |
+1F227;SQUARED CJK UNIFIED IDEOGRAPH-6295;So;0;L;<square> 6295;;;;N;;;;; |
+1F228;SQUARED CJK UNIFIED IDEOGRAPH-6355;So;0;L;<square> 6355;;;;N;;;;; |
+1F229;SQUARED CJK UNIFIED IDEOGRAPH-4E00;So;0;L;<square> 4E00;;;;N;;;;; |
+1F22A;SQUARED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<square> 4E09;;;;N;;;;; |
+1F22B;SQUARED CJK UNIFIED IDEOGRAPH-904A;So;0;L;<square> 904A;;;;N;;;;; |
+1F22C;SQUARED CJK UNIFIED IDEOGRAPH-5DE6;So;0;L;<square> 5DE6;;;;N;;;;; |
+1F22D;SQUARED CJK UNIFIED IDEOGRAPH-4E2D;So;0;L;<square> 4E2D;;;;N;;;;; |
+1F22E;SQUARED CJK UNIFIED IDEOGRAPH-53F3;So;0;L;<square> 53F3;;;;N;;;;; |
+1F22F;SQUARED CJK UNIFIED IDEOGRAPH-6307;So;0;L;<square> 6307;;;;N;;;;; |
+1F230;SQUARED CJK UNIFIED IDEOGRAPH-8D70;So;0;L;<square> 8D70;;;;N;;;;; |
+1F231;SQUARED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<square> 6253;;;;N;;;;; |
+1F232;SQUARED CJK UNIFIED IDEOGRAPH-7981;So;0;L;<square> 7981;;;;N;;;;; |
+1F233;SQUARED CJK UNIFIED IDEOGRAPH-7A7A;So;0;L;<square> 7A7A;;;;N;;;;; |
+1F234;SQUARED CJK UNIFIED IDEOGRAPH-5408;So;0;L;<square> 5408;;;;N;;;;; |
+1F235;SQUARED CJK UNIFIED IDEOGRAPH-6E80;So;0;L;<square> 6E80;;;;N;;;;; |
+1F236;SQUARED CJK UNIFIED IDEOGRAPH-6709;So;0;L;<square> 6709;;;;N;;;;; |
+1F237;SQUARED CJK UNIFIED IDEOGRAPH-6708;So;0;L;<square> 6708;;;;N;;;;; |
+1F238;SQUARED CJK UNIFIED IDEOGRAPH-7533;So;0;L;<square> 7533;;;;N;;;;; |
+1F239;SQUARED CJK UNIFIED IDEOGRAPH-5272;So;0;L;<square> 5272;;;;N;;;;; |
+1F23A;SQUARED CJK UNIFIED IDEOGRAPH-55B6;So;0;L;<square> 55B6;;;;N;;;;; |
+1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L;<compat> 3014 672C 3015;;;;N;;;;; |
+1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<compat> 3014 4E09 3015;;;;N;;;;; |
+1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<compat> 3014 4E8C 3015;;;;N;;;;; |
+1F243;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;So;0;L;<compat> 3014 5B89 3015;;;;N;;;;; |
+1F244;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;So;0;L;<compat> 3014 70B9 3015;;;;N;;;;; |
+1F245;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<compat> 3014 6253 3015;;;;N;;;;; |
+1F246;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;So;0;L;<compat> 3014 76D7 3015;;;;N;;;;; |
+1F247;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;So;0;L;<compat> 3014 52DD 3015;;;;N;;;;; |
+1F248;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;So;0;L;<compat> 3014 6557 3015;;;;N;;;;; |
+1F250;CIRCLED IDEOGRAPH ADVANTAGE;So;0;L;<circle> 5F97;;;;N;;;;; |
+1F251;CIRCLED IDEOGRAPH ACCEPT;So;0;L;<circle> 53EF;;;;N;;;;; |
+1F300;CYCLONE;So;0;ON;;;;;N;;;;; |
+1F301;FOGGY;So;0;ON;;;;;N;;;;; |
+1F302;CLOSED UMBRELLA;So;0;ON;;;;;N;;;;; |
+1F303;NIGHT WITH STARS;So;0;ON;;;;;N;;;;; |
+1F304;SUNRISE OVER MOUNTAINS;So;0;ON;;;;;N;;;;; |
+1F305;SUNRISE;So;0;ON;;;;;N;;;;; |
+1F306;CITYSCAPE AT DUSK;So;0;ON;;;;;N;;;;; |
+1F307;SUNSET OVER BUILDINGS;So;0;ON;;;;;N;;;;; |
+1F308;RAINBOW;So;0;ON;;;;;N;;;;; |
+1F309;BRIDGE AT NIGHT;So;0;ON;;;;;N;;;;; |
+1F30A;WATER WAVE;So;0;ON;;;;;N;;;;; |
+1F30B;VOLCANO;So;0;ON;;;;;N;;;;; |
+1F30C;MILKY WAY;So;0;ON;;;;;N;;;;; |
+1F30D;EARTH GLOBE EUROPE-AFRICA;So;0;ON;;;;;N;;;;; |
+1F30E;EARTH GLOBE AMERICAS;So;0;ON;;;;;N;;;;; |
+1F30F;EARTH GLOBE ASIA-AUSTRALIA;So;0;ON;;;;;N;;;;; |
+1F310;GLOBE WITH MERIDIANS;So;0;ON;;;;;N;;;;; |
+1F311;NEW MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F312;WAXING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F313;FIRST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F314;WAXING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F315;FULL MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F316;WANING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F317;LAST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F318;WANING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;; |
+1F319;CRESCENT MOON;So;0;ON;;;;;N;;;;; |
+1F31A;NEW MOON WITH FACE;So;0;ON;;;;;N;;;;; |
+1F31B;FIRST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;; |
+1F31C;LAST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;; |
+1F31D;FULL MOON WITH FACE;So;0;ON;;;;;N;;;;; |
+1F31E;SUN WITH FACE;So;0;ON;;;;;N;;;;; |
+1F31F;GLOWING STAR;So;0;ON;;;;;N;;;;; |
+1F320;SHOOTING STAR;So;0;ON;;;;;N;;;;; |
+1F330;CHESTNUT;So;0;ON;;;;;N;;;;; |
+1F331;SEEDLING;So;0;ON;;;;;N;;;;; |
+1F332;EVERGREEN TREE;So;0;ON;;;;;N;;;;; |
+1F333;DECIDUOUS TREE;So;0;ON;;;;;N;;;;; |
+1F334;PALM TREE;So;0;ON;;;;;N;;;;; |
+1F335;CACTUS;So;0;ON;;;;;N;;;;; |
+1F337;TULIP;So;0;ON;;;;;N;;;;; |
+1F338;CHERRY BLOSSOM;So;0;ON;;;;;N;;;;; |
+1F339;ROSE;So;0;ON;;;;;N;;;;; |
+1F33A;HIBISCUS;So;0;ON;;;;;N;;;;; |
+1F33B;SUNFLOWER;So;0;ON;;;;;N;;;;; |
+1F33C;BLOSSOM;So;0;ON;;;;;N;;;;; |
+1F33D;EAR OF MAIZE;So;0;ON;;;;;N;;;;; |
+1F33E;EAR OF RICE;So;0;ON;;;;;N;;;;; |
+1F33F;HERB;So;0;ON;;;;;N;;;;; |
+1F340;FOUR LEAF CLOVER;So;0;ON;;;;;N;;;;; |
+1F341;MAPLE LEAF;So;0;ON;;;;;N;;;;; |
+1F342;FALLEN LEAF;So;0;ON;;;;;N;;;;; |
+1F343;LEAF FLUTTERING IN WIND;So;0;ON;;;;;N;;;;; |
+1F344;MUSHROOM;So;0;ON;;;;;N;;;;; |
+1F345;TOMATO;So;0;ON;;;;;N;;;;; |
+1F346;AUBERGINE;So;0;ON;;;;;N;;;;; |
+1F347;GRAPES;So;0;ON;;;;;N;;;;; |
+1F348;MELON;So;0;ON;;;;;N;;;;; |
+1F349;WATERMELON;So;0;ON;;;;;N;;;;; |
+1F34A;TANGERINE;So;0;ON;;;;;N;;;;; |
+1F34B;LEMON;So;0;ON;;;;;N;;;;; |
+1F34C;BANANA;So;0;ON;;;;;N;;;;; |
+1F34D;PINEAPPLE;So;0;ON;;;;;N;;;;; |
+1F34E;RED APPLE;So;0;ON;;;;;N;;;;; |
+1F34F;GREEN APPLE;So;0;ON;;;;;N;;;;; |
+1F350;PEAR;So;0;ON;;;;;N;;;;; |
+1F351;PEACH;So;0;ON;;;;;N;;;;; |
+1F352;CHERRIES;So;0;ON;;;;;N;;;;; |
+1F353;STRAWBERRY;So;0;ON;;;;;N;;;;; |
+1F354;HAMBURGER;So;0;ON;;;;;N;;;;; |
+1F355;SLICE OF PIZZA;So;0;ON;;;;;N;;;;; |
+1F356;MEAT ON BONE;So;0;ON;;;;;N;;;;; |
+1F357;POULTRY LEG;So;0;ON;;;;;N;;;;; |
+1F358;RICE CRACKER;So;0;ON;;;;;N;;;;; |
+1F359;RICE BALL;So;0;ON;;;;;N;;;;; |
+1F35A;COOKED RICE;So;0;ON;;;;;N;;;;; |
+1F35B;CURRY AND RICE;So;0;ON;;;;;N;;;;; |
+1F35C;STEAMING BOWL;So;0;ON;;;;;N;;;;; |
+1F35D;SPAGHETTI;So;0;ON;;;;;N;;;;; |
+1F35E;BREAD;So;0;ON;;;;;N;;;;; |
+1F35F;FRENCH FRIES;So;0;ON;;;;;N;;;;; |
+1F360;ROASTED SWEET POTATO;So;0;ON;;;;;N;;;;; |
+1F361;DANGO;So;0;ON;;;;;N;;;;; |
+1F362;ODEN;So;0;ON;;;;;N;;;;; |
+1F363;SUSHI;So;0;ON;;;;;N;;;;; |
+1F364;FRIED SHRIMP;So;0;ON;;;;;N;;;;; |
+1F365;FISH CAKE WITH SWIRL DESIGN;So;0;ON;;;;;N;;;;; |
+1F366;SOFT ICE CREAM;So;0;ON;;;;;N;;;;; |
+1F367;SHAVED ICE;So;0;ON;;;;;N;;;;; |
+1F368;ICE CREAM;So;0;ON;;;;;N;;;;; |
+1F369;DOUGHNUT;So;0;ON;;;;;N;;;;; |
+1F36A;COOKIE;So;0;ON;;;;;N;;;;; |
+1F36B;CHOCOLATE BAR;So;0;ON;;;;;N;;;;; |
+1F36C;CANDY;So;0;ON;;;;;N;;;;; |
+1F36D;LOLLIPOP;So;0;ON;;;;;N;;;;; |
+1F36E;CUSTARD;So;0;ON;;;;;N;;;;; |
+1F36F;HONEY POT;So;0;ON;;;;;N;;;;; |
+1F370;SHORTCAKE;So;0;ON;;;;;N;;;;; |
+1F371;BENTO BOX;So;0;ON;;;;;N;;;;; |
+1F372;POT OF FOOD;So;0;ON;;;;;N;;;;; |
+1F373;COOKING;So;0;ON;;;;;N;;;;; |
+1F374;FORK AND KNIFE;So;0;ON;;;;;N;;;;; |
+1F375;TEACUP WITHOUT HANDLE;So;0;ON;;;;;N;;;;; |
+1F376;SAKE BOTTLE AND CUP;So;0;ON;;;;;N;;;;; |
+1F377;WINE GLASS;So;0;ON;;;;;N;;;;; |
+1F378;COCKTAIL GLASS;So;0;ON;;;;;N;;;;; |
+1F379;TROPICAL DRINK;So;0;ON;;;;;N;;;;; |
+1F37A;BEER MUG;So;0;ON;;;;;N;;;;; |
+1F37B;CLINKING BEER MUGS;So;0;ON;;;;;N;;;;; |
+1F37C;BABY BOTTLE;So;0;ON;;;;;N;;;;; |
+1F380;RIBBON;So;0;ON;;;;;N;;;;; |
+1F381;WRAPPED PRESENT;So;0;ON;;;;;N;;;;; |
+1F382;BIRTHDAY CAKE;So;0;ON;;;;;N;;;;; |
+1F383;JACK-O-LANTERN;So;0;ON;;;;;N;;;;; |
+1F384;CHRISTMAS TREE;So;0;ON;;;;;N;;;;; |
+1F385;FATHER CHRISTMAS;So;0;ON;;;;;N;;;;; |
+1F386;FIREWORKS;So;0;ON;;;;;N;;;;; |
+1F387;FIREWORK SPARKLER;So;0;ON;;;;;N;;;;; |
+1F388;BALLOON;So;0;ON;;;;;N;;;;; |
+1F389;PARTY POPPER;So;0;ON;;;;;N;;;;; |
+1F38A;CONFETTI BALL;So;0;ON;;;;;N;;;;; |
+1F38B;TANABATA TREE;So;0;ON;;;;;N;;;;; |
+1F38C;CROSSED FLAGS;So;0;ON;;;;;N;;;;; |
+1F38D;PINE DECORATION;So;0;ON;;;;;N;;;;; |
+1F38E;JAPANESE DOLLS;So;0;ON;;;;;N;;;;; |
+1F38F;CARP STREAMER;So;0;ON;;;;;N;;;;; |
+1F390;WIND CHIME;So;0;ON;;;;;N;;;;; |
+1F391;MOON VIEWING CEREMONY;So;0;ON;;;;;N;;;;; |
+1F392;SCHOOL SATCHEL;So;0;ON;;;;;N;;;;; |
+1F393;GRADUATION CAP;So;0;ON;;;;;N;;;;; |
+1F3A0;CAROUSEL HORSE;So;0;ON;;;;;N;;;;; |
+1F3A1;FERRIS WHEEL;So;0;ON;;;;;N;;;;; |
+1F3A2;ROLLER COASTER;So;0;ON;;;;;N;;;;; |
+1F3A3;FISHING POLE AND FISH;So;0;ON;;;;;N;;;;; |
+1F3A4;MICROPHONE;So;0;ON;;;;;N;;;;; |
+1F3A5;MOVIE CAMERA;So;0;ON;;;;;N;;;;; |
+1F3A6;CINEMA;So;0;ON;;;;;N;;;;; |
+1F3A7;HEADPHONE;So;0;ON;;;;;N;;;;; |
+1F3A8;ARTIST PALETTE;So;0;ON;;;;;N;;;;; |
+1F3A9;TOP HAT;So;0;ON;;;;;N;;;;; |
+1F3AA;CIRCUS TENT;So;0;ON;;;;;N;;;;; |
+1F3AB;TICKET;So;0;ON;;;;;N;;;;; |
+1F3AC;CLAPPER BOARD;So;0;ON;;;;;N;;;;; |
+1F3AD;PERFORMING ARTS;So;0;ON;;;;;N;;;;; |
+1F3AE;VIDEO GAME;So;0;ON;;;;;N;;;;; |
+1F3AF;DIRECT HIT;So;0;ON;;;;;N;;;;; |
+1F3B0;SLOT MACHINE;So;0;ON;;;;;N;;;;; |
+1F3B1;BILLIARDS;So;0;ON;;;;;N;;;;; |
+1F3B2;GAME DIE;So;0;ON;;;;;N;;;;; |
+1F3B3;BOWLING;So;0;ON;;;;;N;;;;; |
+1F3B4;FLOWER PLAYING CARDS;So;0;ON;;;;;N;;;;; |
+1F3B5;MUSICAL NOTE;So;0;ON;;;;;N;;;;; |
+1F3B6;MULTIPLE MUSICAL NOTES;So;0;ON;;;;;N;;;;; |
+1F3B7;SAXOPHONE;So;0;ON;;;;;N;;;;; |
+1F3B8;GUITAR;So;0;ON;;;;;N;;;;; |
+1F3B9;MUSICAL KEYBOARD;So;0;ON;;;;;N;;;;; |
+1F3BA;TRUMPET;So;0;ON;;;;;N;;;;; |
+1F3BB;VIOLIN;So;0;ON;;;;;N;;;;; |
+1F3BC;MUSICAL SCORE;So;0;ON;;;;;N;;;;; |
+1F3BD;RUNNING SHIRT WITH SASH;So;0;ON;;;;;N;;;;; |
+1F3BE;TENNIS RACQUET AND BALL;So;0;ON;;;;;N;;;;; |
+1F3BF;SKI AND SKI BOOT;So;0;ON;;;;;N;;;;; |
+1F3C0;BASKETBALL AND HOOP;So;0;ON;;;;;N;;;;; |
+1F3C1;CHEQUERED FLAG;So;0;ON;;;;;N;;;;; |
+1F3C2;SNOWBOARDER;So;0;ON;;;;;N;;;;; |
+1F3C3;RUNNER;So;0;ON;;;;;N;;;;; |
+1F3C4;SURFER;So;0;ON;;;;;N;;;;; |
+1F3C6;TROPHY;So;0;ON;;;;;N;;;;; |
+1F3C7;HORSE RACING;So;0;ON;;;;;N;;;;; |
+1F3C8;AMERICAN FOOTBALL;So;0;ON;;;;;N;;;;; |
+1F3C9;RUGBY FOOTBALL;So;0;ON;;;;;N;;;;; |
+1F3CA;SWIMMER;So;0;ON;;;;;N;;;;; |
+1F3E0;HOUSE BUILDING;So;0;ON;;;;;N;;;;; |
+1F3E1;HOUSE WITH GARDEN;So;0;ON;;;;;N;;;;; |
+1F3E2;OFFICE BUILDING;So;0;ON;;;;;N;;;;; |
+1F3E3;JAPANESE POST OFFICE;So;0;ON;;;;;N;;;;; |
+1F3E4;EUROPEAN POST OFFICE;So;0;ON;;;;;N;;;;; |
+1F3E5;HOSPITAL;So;0;ON;;;;;N;;;;; |
+1F3E6;BANK;So;0;ON;;;;;N;;;;; |
+1F3E7;AUTOMATED TELLER MACHINE;So;0;ON;;;;;N;;;;; |
+1F3E8;HOTEL;So;0;ON;;;;;N;;;;; |
+1F3E9;LOVE HOTEL;So;0;ON;;;;;N;;;;; |
+1F3EA;CONVENIENCE STORE;So;0;ON;;;;;N;;;;; |
+1F3EB;SCHOOL;So;0;ON;;;;;N;;;;; |
+1F3EC;DEPARTMENT STORE;So;0;ON;;;;;N;;;;; |
+1F3ED;FACTORY;So;0;ON;;;;;N;;;;; |
+1F3EE;IZAKAYA LANTERN;So;0;ON;;;;;N;;;;; |
+1F3EF;JAPANESE CASTLE;So;0;ON;;;;;N;;;;; |
+1F3F0;EUROPEAN CASTLE;So;0;ON;;;;;N;;;;; |
+1F400;RAT;So;0;ON;;;;;N;;;;; |
+1F401;MOUSE;So;0;ON;;;;;N;;;;; |
+1F402;OX;So;0;ON;;;;;N;;;;; |
+1F403;WATER BUFFALO;So;0;ON;;;;;N;;;;; |
+1F404;COW;So;0;ON;;;;;N;;;;; |
+1F405;TIGER;So;0;ON;;;;;N;;;;; |
+1F406;LEOPARD;So;0;ON;;;;;N;;;;; |
+1F407;RABBIT;So;0;ON;;;;;N;;;;; |
+1F408;CAT;So;0;ON;;;;;N;;;;; |
+1F409;DRAGON;So;0;ON;;;;;N;;;;; |
+1F40A;CROCODILE;So;0;ON;;;;;N;;;;; |
+1F40B;WHALE;So;0;ON;;;;;N;;;;; |
+1F40C;SNAIL;So;0;ON;;;;;N;;;;; |
+1F40D;SNAKE;So;0;ON;;;;;N;;;;; |
+1F40E;HORSE;So;0;ON;;;;;N;;;;; |
+1F40F;RAM;So;0;ON;;;;;N;;;;; |
+1F410;GOAT;So;0;ON;;;;;N;;;;; |
+1F411;SHEEP;So;0;ON;;;;;N;;;;; |
+1F412;MONKEY;So;0;ON;;;;;N;;;;; |
+1F413;ROOSTER;So;0;ON;;;;;N;;;;; |
+1F414;CHICKEN;So;0;ON;;;;;N;;;;; |
+1F415;DOG;So;0;ON;;;;;N;;;;; |
+1F416;PIG;So;0;ON;;;;;N;;;;; |
+1F417;BOAR;So;0;ON;;;;;N;;;;; |
+1F418;ELEPHANT;So;0;ON;;;;;N;;;;; |
+1F419;OCTOPUS;So;0;ON;;;;;N;;;;; |
+1F41A;SPIRAL SHELL;So;0;ON;;;;;N;;;;; |
+1F41B;BUG;So;0;ON;;;;;N;;;;; |
+1F41C;ANT;So;0;ON;;;;;N;;;;; |
+1F41D;HONEYBEE;So;0;ON;;;;;N;;;;; |
+1F41E;LADY BEETLE;So;0;ON;;;;;N;;;;; |
+1F41F;FISH;So;0;ON;;;;;N;;;;; |
+1F420;TROPICAL FISH;So;0;ON;;;;;N;;;;; |
+1F421;BLOWFISH;So;0;ON;;;;;N;;;;; |
+1F422;TURTLE;So;0;ON;;;;;N;;;;; |
+1F423;HATCHING CHICK;So;0;ON;;;;;N;;;;; |
+1F424;BABY CHICK;So;0;ON;;;;;N;;;;; |
+1F425;FRONT-FACING BABY CHICK;So;0;ON;;;;;N;;;;; |
+1F426;BIRD;So;0;ON;;;;;N;;;;; |
+1F427;PENGUIN;So;0;ON;;;;;N;;;;; |
+1F428;KOALA;So;0;ON;;;;;N;;;;; |
+1F429;POODLE;So;0;ON;;;;;N;;;;; |
+1F42A;DROMEDARY CAMEL;So;0;ON;;;;;N;;;;; |
+1F42B;BACTRIAN CAMEL;So;0;ON;;;;;N;;;;; |
+1F42C;DOLPHIN;So;0;ON;;;;;N;;;;; |
+1F42D;MOUSE FACE;So;0;ON;;;;;N;;;;; |
+1F42E;COW FACE;So;0;ON;;;;;N;;;;; |
+1F42F;TIGER FACE;So;0;ON;;;;;N;;;;; |
+1F430;RABBIT FACE;So;0;ON;;;;;N;;;;; |
+1F431;CAT FACE;So;0;ON;;;;;N;;;;; |
+1F432;DRAGON FACE;So;0;ON;;;;;N;;;;; |
+1F433;SPOUTING WHALE;So;0;ON;;;;;N;;;;; |
+1F434;HORSE FACE;So;0;ON;;;;;N;;;;; |
+1F435;MONKEY FACE;So;0;ON;;;;;N;;;;; |
+1F436;DOG FACE;So;0;ON;;;;;N;;;;; |
+1F437;PIG FACE;So;0;ON;;;;;N;;;;; |
+1F438;FROG FACE;So;0;ON;;;;;N;;;;; |
+1F439;HAMSTER FACE;So;0;ON;;;;;N;;;;; |
+1F43A;WOLF FACE;So;0;ON;;;;;N;;;;; |
+1F43B;BEAR FACE;So;0;ON;;;;;N;;;;; |
+1F43C;PANDA FACE;So;0;ON;;;;;N;;;;; |
+1F43D;PIG NOSE;So;0;ON;;;;;N;;;;; |
+1F43E;PAW PRINTS;So;0;ON;;;;;N;;;;; |
+1F440;EYES;So;0;ON;;;;;N;;;;; |
+1F442;EAR;So;0;ON;;;;;N;;;;; |
+1F443;NOSE;So;0;ON;;;;;N;;;;; |
+1F444;MOUTH;So;0;ON;;;;;N;;;;; |
+1F445;TONGUE;So;0;ON;;;;;N;;;;; |
+1F446;WHITE UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;; |
+1F447;WHITE DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;; |
+1F448;WHITE LEFT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;; |
+1F449;WHITE RIGHT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;; |
+1F44A;FISTED HAND SIGN;So;0;ON;;;;;N;;;;; |
+1F44B;WAVING HAND SIGN;So;0;ON;;;;;N;;;;; |
+1F44C;OK HAND SIGN;So;0;ON;;;;;N;;;;; |
+1F44D;THUMBS UP SIGN;So;0;ON;;;;;N;;;;; |
+1F44E;THUMBS DOWN SIGN;So;0;ON;;;;;N;;;;; |
+1F44F;CLAPPING HANDS SIGN;So;0;ON;;;;;N;;;;; |
+1F450;OPEN HANDS SIGN;So;0;ON;;;;;N;;;;; |
+1F451;CROWN;So;0;ON;;;;;N;;;;; |
+1F452;WOMANS HAT;So;0;ON;;;;;N;;;;; |
+1F453;EYEGLASSES;So;0;ON;;;;;N;;;;; |
+1F454;NECKTIE;So;0;ON;;;;;N;;;;; |
+1F455;T-SHIRT;So;0;ON;;;;;N;;;;; |
+1F456;JEANS;So;0;ON;;;;;N;;;;; |
+1F457;DRESS;So;0;ON;;;;;N;;;;; |
+1F458;KIMONO;So;0;ON;;;;;N;;;;; |
+1F459;BIKINI;So;0;ON;;;;;N;;;;; |
+1F45A;WOMANS CLOTHES;So;0;ON;;;;;N;;;;; |
+1F45B;PURSE;So;0;ON;;;;;N;;;;; |
+1F45C;HANDBAG;So;0;ON;;;;;N;;;;; |
+1F45D;POUCH;So;0;ON;;;;;N;;;;; |
+1F45E;MANS SHOE;So;0;ON;;;;;N;;;;; |
+1F45F;ATHLETIC SHOE;So;0;ON;;;;;N;;;;; |
+1F460;HIGH-HEELED SHOE;So;0;ON;;;;;N;;;;; |
+1F461;WOMANS SANDAL;So;0;ON;;;;;N;;;;; |
+1F462;WOMANS BOOTS;So;0;ON;;;;;N;;;;; |
+1F463;FOOTPRINTS;So;0;ON;;;;;N;;;;; |
+1F464;BUST IN SILHOUETTE;So;0;ON;;;;;N;;;;; |
+1F465;BUSTS IN SILHOUETTE;So;0;ON;;;;;N;;;;; |
+1F466;BOY;So;0;ON;;;;;N;;;;; |
+1F467;GIRL;So;0;ON;;;;;N;;;;; |
+1F468;MAN;So;0;ON;;;;;N;;;;; |
+1F469;WOMAN;So;0;ON;;;;;N;;;;; |
+1F46A;FAMILY;So;0;ON;;;;;N;;;;; |
+1F46B;MAN AND WOMAN HOLDING HANDS;So;0;ON;;;;;N;;;;; |
+1F46C;TWO MEN HOLDING HANDS;So;0;ON;;;;;N;;;;; |
+1F46D;TWO WOMEN HOLDING HANDS;So;0;ON;;;;;N;;;;; |
+1F46E;POLICE OFFICER;So;0;ON;;;;;N;;;;; |
+1F46F;WOMAN WITH BUNNY EARS;So;0;ON;;;;;N;;;;; |
+1F470;BRIDE WITH VEIL;So;0;ON;;;;;N;;;;; |
+1F471;PERSON WITH BLOND HAIR;So;0;ON;;;;;N;;;;; |
+1F472;MAN WITH GUA PI MAO;So;0;ON;;;;;N;;;;; |
+1F473;MAN WITH TURBAN;So;0;ON;;;;;N;;;;; |
+1F474;OLDER MAN;So;0;ON;;;;;N;;;;; |
+1F475;OLDER WOMAN;So;0;ON;;;;;N;;;;; |
+1F476;BABY;So;0;ON;;;;;N;;;;; |
+1F477;CONSTRUCTION WORKER;So;0;ON;;;;;N;;;;; |
+1F478;PRINCESS;So;0;ON;;;;;N;;;;; |
+1F479;JAPANESE OGRE;So;0;ON;;;;;N;;;;; |
+1F47A;JAPANESE GOBLIN;So;0;ON;;;;;N;;;;; |
+1F47B;GHOST;So;0;ON;;;;;N;;;;; |
+1F47C;BABY ANGEL;So;0;ON;;;;;N;;;;; |
+1F47D;EXTRATERRESTRIAL ALIEN;So;0;ON;;;;;N;;;;; |
+1F47E;ALIEN MONSTER;So;0;ON;;;;;N;;;;; |
+1F47F;IMP;So;0;ON;;;;;N;;;;; |
+1F480;SKULL;So;0;ON;;;;;N;;;;; |
+1F481;INFORMATION DESK PERSON;So;0;ON;;;;;N;;;;; |
+1F482;GUARDSMAN;So;0;ON;;;;;N;;;;; |
+1F483;DANCER;So;0;ON;;;;;N;;;;; |
+1F484;LIPSTICK;So;0;ON;;;;;N;;;;; |
+1F485;NAIL POLISH;So;0;ON;;;;;N;;;;; |
+1F486;FACE MASSAGE;So;0;ON;;;;;N;;;;; |
+1F487;HAIRCUT;So;0;ON;;;;;N;;;;; |
+1F488;BARBER POLE;So;0;ON;;;;;N;;;;; |
+1F489;SYRINGE;So;0;ON;;;;;N;;;;; |
+1F48A;PILL;So;0;ON;;;;;N;;;;; |
+1F48B;KISS MARK;So;0;ON;;;;;N;;;;; |
+1F48C;LOVE LETTER;So;0;ON;;;;;N;;;;; |
+1F48D;RING;So;0;ON;;;;;N;;;;; |
+1F48E;GEM STONE;So;0;ON;;;;;N;;;;; |
+1F48F;KISS;So;0;ON;;;;;N;;;;; |
+1F490;BOUQUET;So;0;ON;;;;;N;;;;; |
+1F491;COUPLE WITH HEART;So;0;ON;;;;;N;;;;; |
+1F492;WEDDING;So;0;ON;;;;;N;;;;; |
+1F493;BEATING HEART;So;0;ON;;;;;N;;;;; |
+1F494;BROKEN HEART;So;0;ON;;;;;N;;;;; |
+1F495;TWO HEARTS;So;0;ON;;;;;N;;;;; |
+1F496;SPARKLING HEART;So;0;ON;;;;;N;;;;; |
+1F497;GROWING HEART;So;0;ON;;;;;N;;;;; |
+1F498;HEART WITH ARROW;So;0;ON;;;;;N;;;;; |
+1F499;BLUE HEART;So;0;ON;;;;;N;;;;; |
+1F49A;GREEN HEART;So;0;ON;;;;;N;;;;; |
+1F49B;YELLOW HEART;So;0;ON;;;;;N;;;;; |
+1F49C;PURPLE HEART;So;0;ON;;;;;N;;;;; |
+1F49D;HEART WITH RIBBON;So;0;ON;;;;;N;;;;; |
+1F49E;REVOLVING HEARTS;So;0;ON;;;;;N;;;;; |
+1F49F;HEART DECORATION;So;0;ON;;;;;N;;;;; |
+1F4A0;DIAMOND SHAPE WITH A DOT INSIDE;So;0;ON;;;;;N;;;;; |
+1F4A1;ELECTRIC LIGHT BULB;So;0;ON;;;;;N;;;;; |
+1F4A2;ANGER SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4A3;BOMB;So;0;ON;;;;;N;;;;; |
+1F4A4;SLEEPING SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4A5;COLLISION SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4A6;SPLASHING SWEAT SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4A7;DROPLET;So;0;ON;;;;;N;;;;; |
+1F4A8;DASH SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4A9;PILE OF POO;So;0;ON;;;;;N;;;;; |
+1F4AA;FLEXED BICEPS;So;0;ON;;;;;N;;;;; |
+1F4AB;DIZZY SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4AC;SPEECH BALLOON;So;0;ON;;;;;N;;;;; |
+1F4AD;THOUGHT BALLOON;So;0;ON;;;;;N;;;;; |
+1F4AE;WHITE FLOWER;So;0;ON;;;;;N;;;;; |
+1F4AF;HUNDRED POINTS SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4B0;MONEY BAG;So;0;ON;;;;;N;;;;; |
+1F4B1;CURRENCY EXCHANGE;So;0;ON;;;;;N;;;;; |
+1F4B2;HEAVY DOLLAR SIGN;So;0;ON;;;;;N;;;;; |
+1F4B3;CREDIT CARD;So;0;ON;;;;;N;;;;; |
+1F4B4;BANKNOTE WITH YEN SIGN;So;0;ON;;;;;N;;;;; |
+1F4B5;BANKNOTE WITH DOLLAR SIGN;So;0;ON;;;;;N;;;;; |
+1F4B6;BANKNOTE WITH EURO SIGN;So;0;ON;;;;;N;;;;; |
+1F4B7;BANKNOTE WITH POUND SIGN;So;0;ON;;;;;N;;;;; |
+1F4B8;MONEY WITH WINGS;So;0;ON;;;;;N;;;;; |
+1F4B9;CHART WITH UPWARDS TREND AND YEN SIGN;So;0;ON;;;;;N;;;;; |
+1F4BA;SEAT;So;0;ON;;;;;N;;;;; |
+1F4BB;PERSONAL COMPUTER;So;0;ON;;;;;N;;;;; |
+1F4BC;BRIEFCASE;So;0;ON;;;;;N;;;;; |
+1F4BD;MINIDISC;So;0;ON;;;;;N;;;;; |
+1F4BE;FLOPPY DISK;So;0;ON;;;;;N;;;;; |
+1F4BF;OPTICAL DISC;So;0;ON;;;;;N;;;;; |
+1F4C0;DVD;So;0;ON;;;;;N;;;;; |
+1F4C1;FILE FOLDER;So;0;ON;;;;;N;;;;; |
+1F4C2;OPEN FILE FOLDER;So;0;ON;;;;;N;;;;; |
+1F4C3;PAGE WITH CURL;So;0;ON;;;;;N;;;;; |
+1F4C4;PAGE FACING UP;So;0;ON;;;;;N;;;;; |
+1F4C5;CALENDAR;So;0;ON;;;;;N;;;;; |
+1F4C6;TEAR-OFF CALENDAR;So;0;ON;;;;;N;;;;; |
+1F4C7;CARD INDEX;So;0;ON;;;;;N;;;;; |
+1F4C8;CHART WITH UPWARDS TREND;So;0;ON;;;;;N;;;;; |
+1F4C9;CHART WITH DOWNWARDS TREND;So;0;ON;;;;;N;;;;; |
+1F4CA;BAR CHART;So;0;ON;;;;;N;;;;; |
+1F4CB;CLIPBOARD;So;0;ON;;;;;N;;;;; |
+1F4CC;PUSHPIN;So;0;ON;;;;;N;;;;; |
+1F4CD;ROUND PUSHPIN;So;0;ON;;;;;N;;;;; |
+1F4CE;PAPERCLIP;So;0;ON;;;;;N;;;;; |
+1F4CF;STRAIGHT RULER;So;0;ON;;;;;N;;;;; |
+1F4D0;TRIANGULAR RULER;So;0;ON;;;;;N;;;;; |
+1F4D1;BOOKMARK TABS;So;0;ON;;;;;N;;;;; |
+1F4D2;LEDGER;So;0;ON;;;;;N;;;;; |
+1F4D3;NOTEBOOK;So;0;ON;;;;;N;;;;; |
+1F4D4;NOTEBOOK WITH DECORATIVE COVER;So;0;ON;;;;;N;;;;; |
+1F4D5;CLOSED BOOK;So;0;ON;;;;;N;;;;; |
+1F4D6;OPEN BOOK;So;0;ON;;;;;N;;;;; |
+1F4D7;GREEN BOOK;So;0;ON;;;;;N;;;;; |
+1F4D8;BLUE BOOK;So;0;ON;;;;;N;;;;; |
+1F4D9;ORANGE BOOK;So;0;ON;;;;;N;;;;; |
+1F4DA;BOOKS;So;0;ON;;;;;N;;;;; |
+1F4DB;NAME BADGE;So;0;ON;;;;;N;;;;; |
+1F4DC;SCROLL;So;0;ON;;;;;N;;;;; |
+1F4DD;MEMO;So;0;ON;;;;;N;;;;; |
+1F4DE;TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;; |
+1F4DF;PAGER;So;0;ON;;;;;N;;;;; |
+1F4E0;FAX MACHINE;So;0;ON;;;;;N;;;;; |
+1F4E1;SATELLITE ANTENNA;So;0;ON;;;;;N;;;;; |
+1F4E2;PUBLIC ADDRESS LOUDSPEAKER;So;0;ON;;;;;N;;;;; |
+1F4E3;CHEERING MEGAPHONE;So;0;ON;;;;;N;;;;; |
+1F4E4;OUTBOX TRAY;So;0;ON;;;;;N;;;;; |
+1F4E5;INBOX TRAY;So;0;ON;;;;;N;;;;; |
+1F4E6;PACKAGE;So;0;ON;;;;;N;;;;; |
+1F4E7;E-MAIL SYMBOL;So;0;ON;;;;;N;;;;; |
+1F4E8;INCOMING ENVELOPE;So;0;ON;;;;;N;;;;; |
+1F4E9;ENVELOPE WITH DOWNWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;; |
+1F4EA;CLOSED MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;; |
+1F4EB;CLOSED MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;; |
+1F4EC;OPEN MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;; |
+1F4ED;OPEN MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;; |
+1F4EE;POSTBOX;So;0;ON;;;;;N;;;;; |
+1F4EF;POSTAL HORN;So;0;ON;;;;;N;;;;; |
+1F4F0;NEWSPAPER;So;0;ON;;;;;N;;;;; |
+1F4F1;MOBILE PHONE;So;0;ON;;;;;N;;;;; |
+1F4F2;MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT;So;0;ON;;;;;N;;;;; |
+1F4F3;VIBRATION MODE;So;0;ON;;;;;N;;;;; |
+1F4F4;MOBILE PHONE OFF;So;0;ON;;;;;N;;;;; |
+1F4F5;NO MOBILE PHONES;So;0;ON;;;;;N;;;;; |
+1F4F6;ANTENNA WITH BARS;So;0;ON;;;;;N;;;;; |
+1F4F7;CAMERA;So;0;ON;;;;;N;;;;; |
+1F4F9;VIDEO CAMERA;So;0;ON;;;;;N;;;;; |
+1F4FA;TELEVISION;So;0;ON;;;;;N;;;;; |
+1F4FB;RADIO;So;0;ON;;;;;N;;;;; |
+1F4FC;VIDEOCASSETTE;So;0;ON;;;;;N;;;;; |
+1F500;TWISTED RIGHTWARDS ARROWS;So;0;ON;;;;;N;;;;; |
+1F501;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;; |
+1F502;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY;So;0;ON;;;;;N;;;;; |
+1F503;CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;; |
+1F504;ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;; |
+1F505;LOW BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;; |
+1F506;HIGH BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;; |
+1F507;SPEAKER WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;; |
+1F508;SPEAKER;So;0;ON;;;;;N;;;;; |
+1F509;SPEAKER WITH ONE SOUND WAVE;So;0;ON;;;;;N;;;;; |
+1F50A;SPEAKER WITH THREE SOUND WAVES;So;0;ON;;;;;N;;;;; |
+1F50B;BATTERY;So;0;ON;;;;;N;;;;; |
+1F50C;ELECTRIC PLUG;So;0;ON;;;;;N;;;;; |
+1F50D;LEFT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;; |
+1F50E;RIGHT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;; |
+1F50F;LOCK WITH INK PEN;So;0;ON;;;;;N;;;;; |
+1F510;CLOSED LOCK WITH KEY;So;0;ON;;;;;N;;;;; |
+1F511;KEY;So;0;ON;;;;;N;;;;; |
+1F512;LOCK;So;0;ON;;;;;N;;;;; |
+1F513;OPEN LOCK;So;0;ON;;;;;N;;;;; |
+1F514;BELL;So;0;ON;;;;;N;;;;; |
+1F515;BELL WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;; |
+1F516;BOOKMARK;So;0;ON;;;;;N;;;;; |
+1F517;LINK SYMBOL;So;0;ON;;;;;N;;;;; |
+1F518;RADIO BUTTON;So;0;ON;;;;;N;;;;; |
+1F519;BACK WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;; |
+1F51A;END WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;; |
+1F51B;ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE;So;0;ON;;;;;N;;;;; |
+1F51C;SOON WITH RIGHTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;; |
+1F51D;TOP WITH UPWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;; |
+1F51E;NO ONE UNDER EIGHTEEN SYMBOL;So;0;ON;;;;;N;;;;; |
+1F51F;KEYCAP TEN;So;0;ON;;;;;N;;;;; |
+1F520;INPUT SYMBOL FOR LATIN CAPITAL LETTERS;So;0;ON;;;;;N;;;;; |
+1F521;INPUT SYMBOL FOR LATIN SMALL LETTERS;So;0;ON;;;;;N;;;;; |
+1F522;INPUT SYMBOL FOR NUMBERS;So;0;ON;;;;;N;;;;; |
+1F523;INPUT SYMBOL FOR SYMBOLS;So;0;ON;;;;;N;;;;; |
+1F524;INPUT SYMBOL FOR LATIN LETTERS;So;0;ON;;;;;N;;;;; |
+1F525;FIRE;So;0;ON;;;;;N;;;;; |
+1F526;ELECTRIC TORCH;So;0;ON;;;;;N;;;;; |
+1F527;WRENCH;So;0;ON;;;;;N;;;;; |
+1F528;HAMMER;So;0;ON;;;;;N;;;;; |
+1F529;NUT AND BOLT;So;0;ON;;;;;N;;;;; |
+1F52A;HOCHO;So;0;ON;;;;;N;;;;; |
+1F52B;PISTOL;So;0;ON;;;;;N;;;;; |
+1F52C;MICROSCOPE;So;0;ON;;;;;N;;;;; |
+1F52D;TELESCOPE;So;0;ON;;;;;N;;;;; |
+1F52E;CRYSTAL BALL;So;0;ON;;;;;N;;;;; |
+1F52F;SIX POINTED STAR WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; |
+1F530;JAPANESE SYMBOL FOR BEGINNER;So;0;ON;;;;;N;;;;; |
+1F531;TRIDENT EMBLEM;So;0;ON;;;;;N;;;;; |
+1F532;BLACK SQUARE BUTTON;So;0;ON;;;;;N;;;;; |
+1F533;WHITE SQUARE BUTTON;So;0;ON;;;;;N;;;;; |
+1F534;LARGE RED CIRCLE;So;0;ON;;;;;N;;;;; |
+1F535;LARGE BLUE CIRCLE;So;0;ON;;;;;N;;;;; |
+1F536;LARGE ORANGE DIAMOND;So;0;ON;;;;;N;;;;; |
+1F537;LARGE BLUE DIAMOND;So;0;ON;;;;;N;;;;; |
+1F538;SMALL ORANGE DIAMOND;So;0;ON;;;;;N;;;;; |
+1F539;SMALL BLUE DIAMOND;So;0;ON;;;;;N;;;;; |
+1F53A;UP-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;; |
+1F53B;DOWN-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;; |
+1F53C;UP-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;; |
+1F53D;DOWN-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;; |
+1F540;CIRCLED CROSS POMMEE;So;0;ON;;;;;N;;;;; |
+1F541;CROSS POMMEE WITH HALF-CIRCLE BELOW;So;0;ON;;;;;N;;;;; |
+1F542;CROSS POMMEE;So;0;ON;;;;;N;;;;; |
+1F543;NOTCHED LEFT SEMICIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;; |
+1F550;CLOCK FACE ONE OCLOCK;So;0;ON;;;;;N;;;;; |
+1F551;CLOCK FACE TWO OCLOCK;So;0;ON;;;;;N;;;;; |
+1F552;CLOCK FACE THREE OCLOCK;So;0;ON;;;;;N;;;;; |
+1F553;CLOCK FACE FOUR OCLOCK;So;0;ON;;;;;N;;;;; |
+1F554;CLOCK FACE FIVE OCLOCK;So;0;ON;;;;;N;;;;; |
+1F555;CLOCK FACE SIX OCLOCK;So;0;ON;;;;;N;;;;; |
+1F556;CLOCK FACE SEVEN OCLOCK;So;0;ON;;;;;N;;;;; |
+1F557;CLOCK FACE EIGHT OCLOCK;So;0;ON;;;;;N;;;;; |
+1F558;CLOCK FACE NINE OCLOCK;So;0;ON;;;;;N;;;;; |
+1F559;CLOCK FACE TEN OCLOCK;So;0;ON;;;;;N;;;;; |
+1F55A;CLOCK FACE ELEVEN OCLOCK;So;0;ON;;;;;N;;;;; |
+1F55B;CLOCK FACE TWELVE OCLOCK;So;0;ON;;;;;N;;;;; |
+1F55C;CLOCK FACE ONE-THIRTY;So;0;ON;;;;;N;;;;; |
+1F55D;CLOCK FACE TWO-THIRTY;So;0;ON;;;;;N;;;;; |
+1F55E;CLOCK FACE THREE-THIRTY;So;0;ON;;;;;N;;;;; |
+1F55F;CLOCK FACE FOUR-THIRTY;So;0;ON;;;;;N;;;;; |
+1F560;CLOCK FACE FIVE-THIRTY;So;0;ON;;;;;N;;;;; |
+1F561;CLOCK FACE SIX-THIRTY;So;0;ON;;;;;N;;;;; |
+1F562;CLOCK FACE SEVEN-THIRTY;So;0;ON;;;;;N;;;;; |
+1F563;CLOCK FACE EIGHT-THIRTY;So;0;ON;;;;;N;;;;; |
+1F564;CLOCK FACE NINE-THIRTY;So;0;ON;;;;;N;;;;; |
+1F565;CLOCK FACE TEN-THIRTY;So;0;ON;;;;;N;;;;; |
+1F566;CLOCK FACE ELEVEN-THIRTY;So;0;ON;;;;;N;;;;; |
+1F567;CLOCK FACE TWELVE-THIRTY;So;0;ON;;;;;N;;;;; |
+1F5FB;MOUNT FUJI;So;0;ON;;;;;N;;;;; |
+1F5FC;TOKYO TOWER;So;0;ON;;;;;N;;;;; |
+1F5FD;STATUE OF LIBERTY;So;0;ON;;;;;N;;;;; |
+1F5FE;SILHOUETTE OF JAPAN;So;0;ON;;;;;N;;;;; |
+1F5FF;MOYAI;So;0;ON;;;;;N;;;;; |
+1F600;GRINNING FACE;So;0;ON;;;;;N;;;;; |
+1F601;GRINNING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;; |
+1F602;FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;; |
+1F603;SMILING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; |
+1F604;SMILING FACE WITH OPEN MOUTH AND SMILING EYES;So;0;ON;;;;;N;;;;; |
+1F605;SMILING FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;; |
+1F606;SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;; |
+1F607;SMILING FACE WITH HALO;So;0;ON;;;;;N;;;;; |
+1F608;SMILING FACE WITH HORNS;So;0;ON;;;;;N;;;;; |
+1F609;WINKING FACE;So;0;ON;;;;;N;;;;; |
+1F60A;SMILING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;; |
+1F60B;FACE SAVOURING DELICIOUS FOOD;So;0;ON;;;;;N;;;;; |
+1F60C;RELIEVED FACE;So;0;ON;;;;;N;;;;; |
+1F60D;SMILING FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;; |
+1F60E;SMILING FACE WITH SUNGLASSES;So;0;ON;;;;;N;;;;; |
+1F60F;SMIRKING FACE;So;0;ON;;;;;N;;;;; |
+1F610;NEUTRAL FACE;So;0;ON;;;;;N;;;;; |
+1F611;EXPRESSIONLESS FACE;So;0;ON;;;;;N;;;;; |
+1F612;UNAMUSED FACE;So;0;ON;;;;;N;;;;; |
+1F613;FACE WITH COLD SWEAT;So;0;ON;;;;;N;;;;; |
+1F614;PENSIVE FACE;So;0;ON;;;;;N;;;;; |
+1F615;CONFUSED FACE;So;0;ON;;;;;N;;;;; |
+1F616;CONFOUNDED FACE;So;0;ON;;;;;N;;;;; |
+1F617;KISSING FACE;So;0;ON;;;;;N;;;;; |
+1F618;FACE THROWING A KISS;So;0;ON;;;;;N;;;;; |
+1F619;KISSING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;; |
+1F61A;KISSING FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;; |
+1F61B;FACE WITH STUCK-OUT TONGUE;So;0;ON;;;;;N;;;;; |
+1F61C;FACE WITH STUCK-OUT TONGUE AND WINKING EYE;So;0;ON;;;;;N;;;;; |
+1F61D;FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;; |
+1F61E;DISAPPOINTED FACE;So;0;ON;;;;;N;;;;; |
+1F61F;WORRIED FACE;So;0;ON;;;;;N;;;;; |
+1F620;ANGRY FACE;So;0;ON;;;;;N;;;;; |
+1F621;POUTING FACE;So;0;ON;;;;;N;;;;; |
+1F622;CRYING FACE;So;0;ON;;;;;N;;;;; |
+1F623;PERSEVERING FACE;So;0;ON;;;;;N;;;;; |
+1F624;FACE WITH LOOK OF TRIUMPH;So;0;ON;;;;;N;;;;; |
+1F625;DISAPPOINTED BUT RELIEVED FACE;So;0;ON;;;;;N;;;;; |
+1F626;FROWNING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; |
+1F627;ANGUISHED FACE;So;0;ON;;;;;N;;;;; |
+1F628;FEARFUL FACE;So;0;ON;;;;;N;;;;; |
+1F629;WEARY FACE;So;0;ON;;;;;N;;;;; |
+1F62A;SLEEPY FACE;So;0;ON;;;;;N;;;;; |
+1F62B;TIRED FACE;So;0;ON;;;;;N;;;;; |
+1F62C;GRIMACING FACE;So;0;ON;;;;;N;;;;; |
+1F62D;LOUDLY CRYING FACE;So;0;ON;;;;;N;;;;; |
+1F62E;FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; |
+1F62F;HUSHED FACE;So;0;ON;;;;;N;;;;; |
+1F630;FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;; |
+1F631;FACE SCREAMING IN FEAR;So;0;ON;;;;;N;;;;; |
+1F632;ASTONISHED FACE;So;0;ON;;;;;N;;;;; |
+1F633;FLUSHED FACE;So;0;ON;;;;;N;;;;; |
+1F634;SLEEPING FACE;So;0;ON;;;;;N;;;;; |
+1F635;DIZZY FACE;So;0;ON;;;;;N;;;;; |
+1F636;FACE WITHOUT MOUTH;So;0;ON;;;;;N;;;;; |
+1F637;FACE WITH MEDICAL MASK;So;0;ON;;;;;N;;;;; |
+1F638;GRINNING CAT FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;; |
+1F639;CAT FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;; |
+1F63A;SMILING CAT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; |
+1F63B;SMILING CAT FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;; |
+1F63C;CAT FACE WITH WRY SMILE;So;0;ON;;;;;N;;;;; |
+1F63D;KISSING CAT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;; |
+1F63E;POUTING CAT FACE;So;0;ON;;;;;N;;;;; |
+1F63F;CRYING CAT FACE;So;0;ON;;;;;N;;;;; |
+1F640;WEARY CAT FACE;So;0;ON;;;;;N;;;;; |
+1F645;FACE WITH NO GOOD GESTURE;So;0;ON;;;;;N;;;;; |
+1F646;FACE WITH OK GESTURE;So;0;ON;;;;;N;;;;; |
+1F647;PERSON BOWING DEEPLY;So;0;ON;;;;;N;;;;; |
+1F648;SEE-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;; |
+1F649;HEAR-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;; |
+1F64A;SPEAK-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;; |
+1F64B;HAPPY PERSON RAISING ONE HAND;So;0;ON;;;;;N;;;;; |
+1F64C;PERSON RAISING BOTH HANDS IN CELEBRATION;So;0;ON;;;;;N;;;;; |
+1F64D;PERSON FROWNING;So;0;ON;;;;;N;;;;; |
+1F64E;PERSON WITH POUTING FACE;So;0;ON;;;;;N;;;;; |
+1F64F;PERSON WITH FOLDED HANDS;So;0;ON;;;;;N;;;;; |
+1F680;ROCKET;So;0;ON;;;;;N;;;;; |
+1F681;HELICOPTER;So;0;ON;;;;;N;;;;; |
+1F682;STEAM LOCOMOTIVE;So;0;ON;;;;;N;;;;; |
+1F683;RAILWAY CAR;So;0;ON;;;;;N;;;;; |
+1F684;HIGH-SPEED TRAIN;So;0;ON;;;;;N;;;;; |
+1F685;HIGH-SPEED TRAIN WITH BULLET NOSE;So;0;ON;;;;;N;;;;; |
+1F686;TRAIN;So;0;ON;;;;;N;;;;; |
+1F687;METRO;So;0;ON;;;;;N;;;;; |
+1F688;LIGHT RAIL;So;0;ON;;;;;N;;;;; |
+1F689;STATION;So;0;ON;;;;;N;;;;; |
+1F68A;TRAM;So;0;ON;;;;;N;;;;; |
+1F68B;TRAM CAR;So;0;ON;;;;;N;;;;; |
+1F68C;BUS;So;0;ON;;;;;N;;;;; |
+1F68D;ONCOMING BUS;So;0;ON;;;;;N;;;;; |
+1F68E;TROLLEYBUS;So;0;ON;;;;;N;;;;; |
+1F68F;BUS STOP;So;0;ON;;;;;N;;;;; |
+1F690;MINIBUS;So;0;ON;;;;;N;;;;; |
+1F691;AMBULANCE;So;0;ON;;;;;N;;;;; |
+1F692;FIRE ENGINE;So;0;ON;;;;;N;;;;; |
+1F693;POLICE CAR;So;0;ON;;;;;N;;;;; |
+1F694;ONCOMING POLICE CAR;So;0;ON;;;;;N;;;;; |
+1F695;TAXI;So;0;ON;;;;;N;;;;; |
+1F696;ONCOMING TAXI;So;0;ON;;;;;N;;;;; |
+1F697;AUTOMOBILE;So;0;ON;;;;;N;;;;; |
+1F698;ONCOMING AUTOMOBILE;So;0;ON;;;;;N;;;;; |
+1F699;RECREATIONAL VEHICLE;So;0;ON;;;;;N;;;;; |
+1F69A;DELIVERY TRUCK;So;0;ON;;;;;N;;;;; |
+1F69B;ARTICULATED LORRY;So;0;ON;;;;;N;;;;; |
+1F69C;TRACTOR;So;0;ON;;;;;N;;;;; |
+1F69D;MONORAIL;So;0;ON;;;;;N;;;;; |
+1F69E;MOUNTAIN RAILWAY;So;0;ON;;;;;N;;;;; |
+1F69F;SUSPENSION RAILWAY;So;0;ON;;;;;N;;;;; |
+1F6A0;MOUNTAIN CABLEWAY;So;0;ON;;;;;N;;;;; |
+1F6A1;AERIAL TRAMWAY;So;0;ON;;;;;N;;;;; |
+1F6A2;SHIP;So;0;ON;;;;;N;;;;; |
+1F6A3;ROWBOAT;So;0;ON;;;;;N;;;;; |
+1F6A4;SPEEDBOAT;So;0;ON;;;;;N;;;;; |
+1F6A5;HORIZONTAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;; |
+1F6A6;VERTICAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;; |
+1F6A7;CONSTRUCTION SIGN;So;0;ON;;;;;N;;;;; |
+1F6A8;POLICE CARS REVOLVING LIGHT;So;0;ON;;;;;N;;;;; |
+1F6A9;TRIANGULAR FLAG ON POST;So;0;ON;;;;;N;;;;; |
+1F6AA;DOOR;So;0;ON;;;;;N;;;;; |
+1F6AB;NO ENTRY SIGN;So;0;ON;;;;;N;;;;; |
+1F6AC;SMOKING SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6AD;NO SMOKING SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6AE;PUT LITTER IN ITS PLACE SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6AF;DO NOT LITTER SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6B0;POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6B1;NON-POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6B2;BICYCLE;So;0;ON;;;;;N;;;;; |
+1F6B3;NO BICYCLES;So;0;ON;;;;;N;;;;; |
+1F6B4;BICYCLIST;So;0;ON;;;;;N;;;;; |
+1F6B5;MOUNTAIN BICYCLIST;So;0;ON;;;;;N;;;;; |
+1F6B6;PEDESTRIAN;So;0;ON;;;;;N;;;;; |
+1F6B7;NO PEDESTRIANS;So;0;ON;;;;;N;;;;; |
+1F6B8;CHILDREN CROSSING;So;0;ON;;;;;N;;;;; |
+1F6B9;MENS SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6BA;WOMENS SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6BB;RESTROOM;So;0;ON;;;;;N;;;;; |
+1F6BC;BABY SYMBOL;So;0;ON;;;;;N;;;;; |
+1F6BD;TOILET;So;0;ON;;;;;N;;;;; |
+1F6BE;WATER CLOSET;So;0;ON;;;;;N;;;;; |
+1F6BF;SHOWER;So;0;ON;;;;;N;;;;; |
+1F6C0;BATH;So;0;ON;;;;;N;;;;; |
+1F6C1;BATHTUB;So;0;ON;;;;;N;;;;; |
+1F6C2;PASSPORT CONTROL;So;0;ON;;;;;N;;;;; |
+1F6C3;CUSTOMS;So;0;ON;;;;;N;;;;; |
+1F6C4;BAGGAGE CLAIM;So;0;ON;;;;;N;;;;; |
+1F6C5;LEFT LUGGAGE;So;0;ON;;;;;N;;;;; |
+1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;; |
+1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;; |
+1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;; |
+1F703;ALCHEMICAL SYMBOL FOR EARTH;So;0;ON;;;;;N;;;;; |
+1F704;ALCHEMICAL SYMBOL FOR WATER;So;0;ON;;;;;N;;;;; |
+1F705;ALCHEMICAL SYMBOL FOR AQUAFORTIS;So;0;ON;;;;;N;;;;; |
+1F706;ALCHEMICAL SYMBOL FOR AQUA REGIA;So;0;ON;;;;;N;;;;; |
+1F707;ALCHEMICAL SYMBOL FOR AQUA REGIA-2;So;0;ON;;;;;N;;;;; |
+1F708;ALCHEMICAL SYMBOL FOR AQUA VITAE;So;0;ON;;;;;N;;;;; |
+1F709;ALCHEMICAL SYMBOL FOR AQUA VITAE-2;So;0;ON;;;;;N;;;;; |
+1F70A;ALCHEMICAL SYMBOL FOR VINEGAR;So;0;ON;;;;;N;;;;; |
+1F70B;ALCHEMICAL SYMBOL FOR VINEGAR-2;So;0;ON;;;;;N;;;;; |
+1F70C;ALCHEMICAL SYMBOL FOR VINEGAR-3;So;0;ON;;;;;N;;;;; |
+1F70D;ALCHEMICAL SYMBOL FOR SULFUR;So;0;ON;;;;;N;;;;; |
+1F70E;ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR;So;0;ON;;;;;N;;;;; |
+1F70F;ALCHEMICAL SYMBOL FOR BLACK SULFUR;So;0;ON;;;;;N;;;;; |
+1F710;ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE;So;0;ON;;;;;N;;;;; |
+1F711;ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2;So;0;ON;;;;;N;;;;; |
+1F712;ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3;So;0;ON;;;;;N;;;;; |
+1F713;ALCHEMICAL SYMBOL FOR CINNABAR;So;0;ON;;;;;N;;;;; |
+1F714;ALCHEMICAL SYMBOL FOR SALT;So;0;ON;;;;;N;;;;; |
+1F715;ALCHEMICAL SYMBOL FOR NITRE;So;0;ON;;;;;N;;;;; |
+1F716;ALCHEMICAL SYMBOL FOR VITRIOL;So;0;ON;;;;;N;;;;; |
+1F717;ALCHEMICAL SYMBOL FOR VITRIOL-2;So;0;ON;;;;;N;;;;; |
+1F718;ALCHEMICAL SYMBOL FOR ROCK SALT;So;0;ON;;;;;N;;;;; |
+1F719;ALCHEMICAL SYMBOL FOR ROCK SALT-2;So;0;ON;;;;;N;;;;; |
+1F71A;ALCHEMICAL SYMBOL FOR GOLD;So;0;ON;;;;;N;;;;; |
+1F71B;ALCHEMICAL SYMBOL FOR SILVER;So;0;ON;;;;;N;;;;; |
+1F71C;ALCHEMICAL SYMBOL FOR IRON ORE;So;0;ON;;;;;N;;;;; |
+1F71D;ALCHEMICAL SYMBOL FOR IRON ORE-2;So;0;ON;;;;;N;;;;; |
+1F71E;ALCHEMICAL SYMBOL FOR CROCUS OF IRON;So;0;ON;;;;;N;;;;; |
+1F71F;ALCHEMICAL SYMBOL FOR REGULUS OF IRON;So;0;ON;;;;;N;;;;; |
+1F720;ALCHEMICAL SYMBOL FOR COPPER ORE;So;0;ON;;;;;N;;;;; |
+1F721;ALCHEMICAL SYMBOL FOR IRON-COPPER ORE;So;0;ON;;;;;N;;;;; |
+1F722;ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER;So;0;ON;;;;;N;;;;; |
+1F723;ALCHEMICAL SYMBOL FOR CROCUS OF COPPER;So;0;ON;;;;;N;;;;; |
+1F724;ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2;So;0;ON;;;;;N;;;;; |
+1F725;ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE;So;0;ON;;;;;N;;;;; |
+1F726;ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE;So;0;ON;;;;;N;;;;; |
+1F727;ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER;So;0;ON;;;;;N;;;;; |
+1F728;ALCHEMICAL SYMBOL FOR VERDIGRIS;So;0;ON;;;;;N;;;;; |
+1F729;ALCHEMICAL SYMBOL FOR TIN ORE;So;0;ON;;;;;N;;;;; |
+1F72A;ALCHEMICAL SYMBOL FOR LEAD ORE;So;0;ON;;;;;N;;;;; |
+1F72B;ALCHEMICAL SYMBOL FOR ANTIMONY ORE;So;0;ON;;;;;N;;;;; |
+1F72C;ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY;So;0;ON;;;;;N;;;;; |
+1F72D;ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY;So;0;ON;;;;;N;;;;; |
+1F72E;ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY;So;0;ON;;;;;N;;;;; |
+1F72F;ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY;So;0;ON;;;;;N;;;;; |
+1F730;ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY;So;0;ON;;;;;N;;;;; |
+1F731;ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2;So;0;ON;;;;;N;;;;; |
+1F732;ALCHEMICAL SYMBOL FOR REGULUS;So;0;ON;;;;;N;;;;; |
+1F733;ALCHEMICAL SYMBOL FOR REGULUS-2;So;0;ON;;;;;N;;;;; |
+1F734;ALCHEMICAL SYMBOL FOR REGULUS-3;So;0;ON;;;;;N;;;;; |
+1F735;ALCHEMICAL SYMBOL FOR REGULUS-4;So;0;ON;;;;;N;;;;; |
+1F736;ALCHEMICAL SYMBOL FOR ALKALI;So;0;ON;;;;;N;;;;; |
+1F737;ALCHEMICAL SYMBOL FOR ALKALI-2;So;0;ON;;;;;N;;;;; |
+1F738;ALCHEMICAL SYMBOL FOR MARCASITE;So;0;ON;;;;;N;;;;; |
+1F739;ALCHEMICAL SYMBOL FOR SAL-AMMONIAC;So;0;ON;;;;;N;;;;; |
+1F73A;ALCHEMICAL SYMBOL FOR ARSENIC;So;0;ON;;;;;N;;;;; |
+1F73B;ALCHEMICAL SYMBOL FOR REALGAR;So;0;ON;;;;;N;;;;; |
+1F73C;ALCHEMICAL SYMBOL FOR REALGAR-2;So;0;ON;;;;;N;;;;; |
+1F73D;ALCHEMICAL SYMBOL FOR AURIPIGMENT;So;0;ON;;;;;N;;;;; |
+1F73E;ALCHEMICAL SYMBOL FOR BISMUTH ORE;So;0;ON;;;;;N;;;;; |
+1F73F;ALCHEMICAL SYMBOL FOR TARTAR;So;0;ON;;;;;N;;;;; |
+1F740;ALCHEMICAL SYMBOL FOR TARTAR-2;So;0;ON;;;;;N;;;;; |
+1F741;ALCHEMICAL SYMBOL FOR QUICK LIME;So;0;ON;;;;;N;;;;; |
+1F742;ALCHEMICAL SYMBOL FOR BORAX;So;0;ON;;;;;N;;;;; |
+1F743;ALCHEMICAL SYMBOL FOR BORAX-2;So;0;ON;;;;;N;;;;; |
+1F744;ALCHEMICAL SYMBOL FOR BORAX-3;So;0;ON;;;;;N;;;;; |
+1F745;ALCHEMICAL SYMBOL FOR ALUM;So;0;ON;;;;;N;;;;; |
+1F746;ALCHEMICAL SYMBOL FOR OIL;So;0;ON;;;;;N;;;;; |
+1F747;ALCHEMICAL SYMBOL FOR SPIRIT;So;0;ON;;;;;N;;;;; |
+1F748;ALCHEMICAL SYMBOL FOR TINCTURE;So;0;ON;;;;;N;;;;; |
+1F749;ALCHEMICAL SYMBOL FOR GUM;So;0;ON;;;;;N;;;;; |
+1F74A;ALCHEMICAL SYMBOL FOR WAX;So;0;ON;;;;;N;;;;; |
+1F74B;ALCHEMICAL SYMBOL FOR POWDER;So;0;ON;;;;;N;;;;; |
+1F74C;ALCHEMICAL SYMBOL FOR CALX;So;0;ON;;;;;N;;;;; |
+1F74D;ALCHEMICAL SYMBOL FOR TUTTY;So;0;ON;;;;;N;;;;; |
+1F74E;ALCHEMICAL SYMBOL FOR CAPUT MORTUUM;So;0;ON;;;;;N;;;;; |
+1F74F;ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE;So;0;ON;;;;;N;;;;; |
+1F750;ALCHEMICAL SYMBOL FOR CADUCEUS;So;0;ON;;;;;N;;;;; |
+1F751;ALCHEMICAL SYMBOL FOR TRIDENT;So;0;ON;;;;;N;;;;; |
+1F752;ALCHEMICAL SYMBOL FOR STARRED TRIDENT;So;0;ON;;;;;N;;;;; |
+1F753;ALCHEMICAL SYMBOL FOR LODESTONE;So;0;ON;;;;;N;;;;; |
+1F754;ALCHEMICAL SYMBOL FOR SOAP;So;0;ON;;;;;N;;;;; |
+1F755;ALCHEMICAL SYMBOL FOR URINE;So;0;ON;;;;;N;;;;; |
+1F756;ALCHEMICAL SYMBOL FOR HORSE DUNG;So;0;ON;;;;;N;;;;; |
+1F757;ALCHEMICAL SYMBOL FOR ASHES;So;0;ON;;;;;N;;;;; |
+1F758;ALCHEMICAL SYMBOL FOR POT ASHES;So;0;ON;;;;;N;;;;; |
+1F759;ALCHEMICAL SYMBOL FOR BRICK;So;0;ON;;;;;N;;;;; |
+1F75A;ALCHEMICAL SYMBOL FOR POWDERED BRICK;So;0;ON;;;;;N;;;;; |
+1F75B;ALCHEMICAL SYMBOL FOR AMALGAM;So;0;ON;;;;;N;;;;; |
+1F75C;ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM;So;0;ON;;;;;N;;;;; |
+1F75D;ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2;So;0;ON;;;;;N;;;;; |
+1F75E;ALCHEMICAL SYMBOL FOR SUBLIMATION;So;0;ON;;;;;N;;;;; |
+1F75F;ALCHEMICAL SYMBOL FOR PRECIPITATE;So;0;ON;;;;;N;;;;; |
+1F760;ALCHEMICAL SYMBOL FOR DISTILL;So;0;ON;;;;;N;;;;; |
+1F761;ALCHEMICAL SYMBOL FOR DISSOLVE;So;0;ON;;;;;N;;;;; |
+1F762;ALCHEMICAL SYMBOL FOR DISSOLVE-2;So;0;ON;;;;;N;;;;; |
+1F763;ALCHEMICAL SYMBOL FOR PURIFY;So;0;ON;;;;;N;;;;; |
+1F764;ALCHEMICAL SYMBOL FOR PUTREFACTION;So;0;ON;;;;;N;;;;; |
+1F765;ALCHEMICAL SYMBOL FOR CRUCIBLE;So;0;ON;;;;;N;;;;; |
+1F766;ALCHEMICAL SYMBOL FOR CRUCIBLE-2;So;0;ON;;;;;N;;;;; |
+1F767;ALCHEMICAL SYMBOL FOR CRUCIBLE-3;So;0;ON;;;;;N;;;;; |
+1F768;ALCHEMICAL SYMBOL FOR CRUCIBLE-4;So;0;ON;;;;;N;;;;; |
+1F769;ALCHEMICAL SYMBOL FOR CRUCIBLE-5;So;0;ON;;;;;N;;;;; |
+1F76A;ALCHEMICAL SYMBOL FOR ALEMBIC;So;0;ON;;;;;N;;;;; |
+1F76B;ALCHEMICAL SYMBOL FOR BATH OF MARY;So;0;ON;;;;;N;;;;; |
+1F76C;ALCHEMICAL SYMBOL FOR BATH OF VAPOURS;So;0;ON;;;;;N;;;;; |
+1F76D;ALCHEMICAL SYMBOL FOR RETORT;So;0;ON;;;;;N;;;;; |
+1F76E;ALCHEMICAL SYMBOL FOR HOUR;So;0;ON;;;;;N;;;;; |
+1F76F;ALCHEMICAL SYMBOL FOR NIGHT;So;0;ON;;;;;N;;;;; |
+1F770;ALCHEMICAL SYMBOL FOR DAY-NIGHT;So;0;ON;;;;;N;;;;; |
+1F771;ALCHEMICAL SYMBOL FOR MONTH;So;0;ON;;;;;N;;;;; |
+1F772;ALCHEMICAL SYMBOL FOR HALF DRAM;So;0;ON;;;;;N;;;;; |
+1F773;ALCHEMICAL SYMBOL FOR HALF OUNCE;So;0;ON;;;;;N;;;;; |
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;; |
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;; |
+2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;; |
+2B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;; |
+2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;; |
+2B81D;<CJK Ideograph Extension D, Last>;Lo;0;L;;;;;N;;;;; |
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; |
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; |
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; |
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; |
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; |
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; |
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; |
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; |
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; |
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; |
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; |
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; |
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; |
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; |
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; |
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; |
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; |
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; |
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; |
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; |
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; |
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; |
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; |
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; |
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; |
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; |
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; |
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; |
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; |
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; |
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; |
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; |
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; |
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; |
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; |
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; |
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; |
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; |
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; |
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; |
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; |
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; |
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; |
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; |
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; |
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; |
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; |
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; |
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; |
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; |
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; |
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; |
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; |
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; |
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; |
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; |
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; |
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; |
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; |
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; |
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; |
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; |
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; |
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; |
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; |
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; |
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; |
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; |
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; |
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; |
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; |
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; |
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; |
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; |
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; |
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; |
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; |
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; |
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; |
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; |
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; |
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; |
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; |
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; |
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; |
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; |
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; |
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; |
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; |
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; |
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; |
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; |
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; |
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; |
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; |
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; |
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; |
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; |
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; |
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; |
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; |
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; |
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; |
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; |
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; |
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; |
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; |
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; |
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; |
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; |
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; |
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; |
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; |
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; |
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; |
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; |
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; |
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; |
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; |
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; |
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; |
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; |
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; |
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; |
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; |
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; |
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; |
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; |
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; |
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; |
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; |
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; |
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; |
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; |
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; |
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; |
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; |
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; |
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; |
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; |
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; |
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; |
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; |
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; |
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;; |
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; |
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; |
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; |
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; |
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; |
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; |
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; |
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; |
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; |
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; |
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; |
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; |
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; |
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; |
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; |
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; |
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; |
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; |
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; |
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; |
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; |
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; |
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; |
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; |
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; |
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; |
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; |
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; |
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; |
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; |
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; |
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; |
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; |
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; |
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; |
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; |
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; |
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; |
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; |
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; |
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; |
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; |
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; |
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; |
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; |
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; |
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; |
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; |
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; |
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; |
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; |
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; |
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; |
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; |
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; |
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; |
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; |
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; |
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; |
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; |
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; |
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; |
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; |
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; |
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; |
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; |
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; |
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; |
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; |
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; |
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; |
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; |
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; |
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; |
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; |
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; |
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; |
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; |
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; |
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; |
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; |
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; |
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; |
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; |
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; |
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; |
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; |
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; |
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; |
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; |
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; |
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; |
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; |
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; |
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; |
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; |
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; |
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; |
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; |
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; |
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; |
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; |
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; |
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; |
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; |
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; |
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; |
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; |
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; |
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; |
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; |
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; |
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; |
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; |
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; |
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; |
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; |
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; |
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; |
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; |
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; |
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; |
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; |
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; |
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; |
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; |
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; |
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; |
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; |
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; |
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; |
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; |
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; |
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; |
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; |
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; |
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; |
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; |
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; |
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; |
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; |
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; |
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; |
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; |
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; |
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; |
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; |
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; |
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; |
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; |
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; |
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; |
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; |
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; |
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; |
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; |
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; |
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; |
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; |
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; |
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; |
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; |
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; |
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; |
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; |
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; |
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; |
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; |
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; |
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; |
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; |
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; |
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; |
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; |
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; |
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; |
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; |
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; |
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; |
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; |
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; |
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; |
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; |
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; |
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; |
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; |
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; |
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; |
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; |
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; |
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; |
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; |
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; |
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; |
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; |
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; |
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; |
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; |
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; |
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; |
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; |
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; |
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; |
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; |
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; |
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; |
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; |
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; |
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; |
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; |
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; |
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; |
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; |
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; |
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; |
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; |
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; |
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; |
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; |
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; |
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; |
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; |
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; |
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; |
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; |
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; |
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; |
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; |
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; |
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; |
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; |
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; |
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; |
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; |
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; |
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; |
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; |
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; |
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; |
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; |
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; |
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; |
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; |
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; |
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; |
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; |
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; |
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; |
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; |
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; |
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; |
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; |
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; |
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; |
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; |
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; |
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; |
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; |
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; |
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; |
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; |
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; |
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; |
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; |
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; |
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; |
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; |
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; |
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; |
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; |
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; |
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; |
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; |
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; |
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; |
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; |
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; |
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; |
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; |
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; |
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; |
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; |
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; |
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; |
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; |
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; |
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; |
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; |
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; |
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; |
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; |
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; |
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; |
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; |
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; |
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; |
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; |
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; |
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; |
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; |
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; |
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; |
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; |
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; |
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; |
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; |
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; |
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; |
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; |
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; |
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; |
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; |
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; |
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; |
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; |
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; |
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; |
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; |
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; |
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; |
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; |
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; |
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; |
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; |
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; |
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; |
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; |
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; |
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; |
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; |
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; |
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; |
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; |
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; |
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; |
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; |
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; |
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; |
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; |
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; |
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; |
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; |
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; |
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; |
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; |
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; |
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; |
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; |
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; |
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; |
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; |
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; |
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; |
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; |
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; |
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; |
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; |
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; |
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; |
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; |
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; |
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; |
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; |
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; |
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; |
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; |
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; |
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; |
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; |
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; |
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; |
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; |
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; |
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; |
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; |
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; |
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; |
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; |
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; |
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; |
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; |
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; |
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; |
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; |
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; |
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; |
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; |
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; |
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; |
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; |
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; |
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; |
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; |
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; |
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; |
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; |
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; |
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; |
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; |
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; |
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; |
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; |
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; |
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; |
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; |
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; |
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; |
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; |
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; |
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; |
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; |
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; |
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; |
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; |
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; |
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; |
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; |
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; |
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; |
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; |
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; |
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; |
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; |
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; |
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; |
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; |
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; |
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; |
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; |
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; |
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; |
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; |
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; |
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; |
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; |
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; |
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; |
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; |
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; |
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; |
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; |
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; |
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; |
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; |
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; |
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; |
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; |
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; |
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; |
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; |
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; |
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; |
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; |
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; |
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; |
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; |
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; |
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; |
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; |
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; |
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; |
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; |
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; |
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; |
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; |
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; |
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; |
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; |
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; |
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; |
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; |
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; |
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; |
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; |
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; |
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; |
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; |
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; |
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; |
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; |
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; |
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; |
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; |
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; |
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; |
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; |
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; |
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; |
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; |
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; |
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; |
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; |
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; |
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; |
+E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;; |
+E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;; |
+E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;; |
+E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;; |
+E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;; |
+E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;; |
+E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;; |
+E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;; |
+E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;; |
+E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;; |
+E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;; |
+E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;; |
+E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;; |
+E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;; |
+E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;; |
+E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;; |
+E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;; |
+E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;; |
+E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;; |
+E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;; |
+E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;; |
+E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;; |
+E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;; |
+E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;; |
+E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;; |
+E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;; |
+E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;; |
+E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;; |
+E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;; |
+E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;; |
+E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;; |
+E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;; |
+E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;; |
+E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;; |
+E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;; |
+E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;; |
+E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;; |
+E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;; |
+E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;; |
+E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;; |
+E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;; |
+E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;; |
+E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;; |
+E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;; |
+E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;; |
+E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;; |
+E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;; |
+E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;; |
+E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;; |
+E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;; |
+E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;; |
+E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;; |
+E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;; |
+E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;; |
+E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;; |
+E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;; |
+E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;; |
+E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;; |
+E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;; |
+E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;; |
+E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;; |
+E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;; |
+E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;; |
+E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;; |
+E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;; |
+E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;; |
+E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;; |
+E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;; |
+E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;; |
+E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;; |
+E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;; |
+E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;; |
+E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;; |
+E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;; |
+E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;; |
+E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;; |
+E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;; |
+E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;; |
+E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;; |
+E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;; |
+E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;; |
+E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;; |
+E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;; |
+E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;; |
+E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;; |
+E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;; |
+E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;; |
+E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;; |
+E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;; |
+E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;; |
+E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;; |
+E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;; |
+E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;; |
+E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;; |
+E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;; |
+E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;; |
+E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;; |
+E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;; |
+E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;; |
+E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;; |
+E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;; |
+E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;; |
+E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;; |
+E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;; |
+E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;; |
+E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;; |
+E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;; |
+E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;; |
+E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;; |
+E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;; |
+E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;; |
+E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;; |
+E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;; |
+E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;; |
+E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;; |
+E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;; |
+E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;; |
+E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;; |
+E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;; |
+E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;; |
+E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;; |
+E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;; |
+E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;; |
+E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;; |
+E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;; |
+E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;; |
+E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;; |
+E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;; |
+E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;; |
+E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;; |
+E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;; |
+E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;; |
+E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;; |
+E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;; |
+E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;; |
+E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;; |
+E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;; |
+E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;; |
+E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;; |
+E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;; |
+E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;; |
+E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;; |
+E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;; |
+E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;; |
+E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;; |
+E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;; |
+E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;; |
+E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;; |
+E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;; |
+E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;; |
+E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;; |
+E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;; |
+E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;; |
+E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;; |
+E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;; |
+E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;; |
+E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;; |
+E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;; |
+E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;; |
+E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;; |
+E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;; |
+E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;; |
+E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;; |
+E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;; |
+E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;; |
+E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;; |
+E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;; |
+E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;; |
+E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;; |
+E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;; |
+E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;; |
+E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;; |
+E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;; |
+E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;; |
+E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;; |
+E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;; |
+E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;; |
+E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;; |
+E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;; |
+E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;; |
+E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;; |
+E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;; |
+E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;; |
+E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;; |
+E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;; |
+E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;; |
+E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;; |
+E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;; |
+E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;; |
+E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;; |
+E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;; |
+E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;; |
+E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;; |
+E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;; |
+E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;; |
+E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;; |
+E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;; |
+E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;; |
+E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;; |
+E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;; |
+E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;; |
+E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;; |
+E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;; |
+E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;; |
+E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;; |
+E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;; |
+E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;; |
+E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;; |
+E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;; |
+E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;; |
+E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;; |
+E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;; |
+E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;; |
+E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;; |
+E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;; |
+E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;; |
+E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;; |
+E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;; |
+E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;; |
+E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;; |
+E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;; |
+E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;; |
+E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;; |
+E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;; |
+E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;; |
+E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;; |
+E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;; |
+E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;; |
+E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;; |
+E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;; |
+E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;; |
+E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;; |
+E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;; |
+E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;; |
+E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;; |
+E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;; |
+E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;; |
+E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;; |
+E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;; |
+E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;; |
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;; |
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;; |
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;; |
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;; |
/live/UnicodeData.txt |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/UnicodeData.js |
=================================================================== |
--- live/UnicodeData.js (nonexistent) |
+++ live/UnicodeData.js (revision 520) |
@@ -0,0 +1,53 @@ |
+/** |
+ * <title>Unicode Character Properties Support Library</title> |
+ * @file UnicodeData.js |
+ * @version $Id$ |
+ * @author (C) 2010-2012 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+jsx.regexp.RegExp.propertyClasses = { |
+ Cc: "\u0000-\u001F\u007F-\u009F", |
+ Cf: "\u00AD\u0600-\u0603\u06DD\u070F\u17B4-\u17B5\u200B-\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\uFEFF\uFFF9-\uFFFB", |
+ Co: "\uE000\uF8FF", |
+ Cs: "\uD800\uDB7F-\uDB80\uDBFF-\uDC00\uDFFF", |
+ Ll: "\u0061-\u007A\u00AA\u00B5\u00BA\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0561-\u0587\u1D00-\u1D2B\u1D62-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7C\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2D00-\u2D25\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A", |
+ Lm: "\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D61\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u2094\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA717-\uA71F\uA770\uA788\uA9CF\uAA70\uAADD\uFF70\uFF9E-\uFF9F", |
+ Lo: "\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972\u0979-\u097F\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58-\u0C59\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u2135-\u2138\u2D30-\u2D65\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400\u4DB5\u4E00\u9FCB\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uABC0-\uABE2\uAC00\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC", |
+ Lt: "\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC", |
+ Lu: "\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0531-\u0556\u10A0-\u10C5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uFF21-\uFF3A", |
+ Mc: "\u0903\u093E-\u0940\u0949-\u094C\u094E\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u19B0-\u19C0\u19C8-\u19C9\u1A19-\u1A1B\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC", |
+ Me: "\u0488-\u0489\u06DE\u20DD-\u20E0\u20E2-\u20E4\uA670-\uA672", |
+ Mn: "\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065E\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0900-\u0902\u093C\u0941-\u0948\u094D\u0951-\u0955\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1DC0-\u1DE6\u1DFD-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2DE0-\u2DFF\u302A-\u302F\u3099-\u309A\uA66F\uA67C-\uA67D\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE26", |
+ Nd: "\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19", |
+ Nl: "\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF", |
+ No: "\u00B2-\u00B3\u00B9\u00BC-\u00BE\u09F4-\u09F9\u0BF0-\u0BF2\u0C78-\u0C7E\u0D70-\u0D75\u0F2A-\u0F33\u1369-\u137C\u17F0-\u17F9\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215F\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3192-\u3195\u3220-\u3229\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA830-\uA835", |
+ Pc: "_\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F", |
+ Pd: "\u002D\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u301C\u3030\u30A0\uFE31-\uFE32\uFE58\uFE63\uFF0D", |
+ Pe: "\u0029\u005D\u007D\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E-\u301F\uFD3F\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63", |
+ Pf: "\u00BB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21", |
+ Pi: "\u00AB\u2018\u201B-\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20", |
+ Po: "\u0021-\u0023\u0025-\u0027\u002A\u002C\u002E-\u002F\u003A-\u003B\u003F-\u0040\u005C\u00A1\u00B7\u00BF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3-\u05F4\u0609-\u060A\u060C-\u060D\u061B\u061E-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u0964-\u0965\u0970\u0DF4\u0E4F\u0E5A-\u0E5B\u0F04-\u0F12\u0F85\u0FD0-\u0FD4\u104A-\u104F\u10FB\u1361-\u1368\u166D-\u166E\u16EB-\u16ED\u1735-\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944-\u1945\u19DE-\u19DF\u1A1E-\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1C3B-\u1C3F\u1C7E-\u1C7F\u1CD3\u2016-\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE-\u2CFF\u2E00-\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18-\u2E19\u2E1B\u2E1E-\u2E1F\u2E2A-\u2E2E\u2E30-\u2E31\u3001-\u3003\u303D\u30FB\uA4FE-\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE-\uA8CF\uA8F8-\uA8FA\uA92E-\uA92F\uA95F\uA9C1-\uA9CD\uA9DE-\uA9DF\uAA5C-\uAA5F\uAADE-\uAADF\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45-\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A-\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E-\uFF0F\uFF1A-\uFF1B\uFF1F-\uFF20\uFF3C\uFF61\uFF64-\uFF65", |
+ Ps: "\u0028\u005B\u007B\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3E\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62", |
+ Sc: "\u0024\u00A2-\u00A5\u060B\u09F2-\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20B8\uA838\uFDFC\uFE69\uFF04\uFFE0-\uFFE1\uFFE5-\uFFE6", |
+ Sk: "\u005E\u0060\u00A8\u00AF\u00B4\u00B8\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384-\u0385\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD-\u1FFE\u309B-\u309C\uA700-\uA716\uA720-\uA721\uA789-\uA78A\uFF3E\uFF40\uFFE3", |
+ Sm: "\u002B\u003C-\u003E\u007C\u007E\u00AC\u00B1\u00D7\u00F7\u03F6\u0606-\u0608\u2044\u2052\u207A-\u207C\u208A-\u208C\u2140-\u2144\u214B\u2190-\u2194\u219A-\u219B\u21A0\u21A3\u21A6\u21AE\u21CE-\u21CF\u21D2\u21D4\u21F4-\u22FF\u2308-\u230B\u2320-\u2321\u237C\u239B-\u23B3\u23DC-\u23E1\u25B7\u25C1\u25F8-\u25FF\u266F\u27C0-\u27C4\u27C7-\u27CA\u27CC\u27D0-\u27E5\u27F0-\u27FF\u2900-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2AFF\u2B30-\u2B44\u2B47-\u2B4C\uFB29\uFE62\uFE64-\uFE66\uFF0B\uFF1C-\uFF1E\uFF5C\uFF5E\uFFE2\uFFE9-\uFFEC", |
+ So: "\u00A6-\u00A7\u00A9\u00AE\u00B0\u00B6\u0482\u060E-\u060F\u06E9\u06FD-\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0CF1-\u0CF2\u0D79\u0F01-\u0F03\u0F13-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FCF\u0FD5-\u0FD8\u109E-\u109F\u1360\u1390-\u1399\u1940\u19E0-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100-\u2101\u2103-\u2106\u2108-\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A-\u213B\u214A\u214C-\u214D\u214F\u2195-\u2199\u219C-\u219F\u21A1-\u21A2\u21A4-\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0-\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u23E8\u2400-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u26CD\u26CF-\u26E1\u26E3\u26E8-\u26FF\u2701-\u2704\u2706-\u2709\u270C-\u2727\u2729-\u274B\u274D\u274F-\u2752\u2756-\u275E\u2761-\u2767\u2794\u2798-\u27AF\u27B1-\u27BE\u2800-\u28FF\u2B00-\u2B2F\u2B45-\u2B46\u2B50-\u2B59\u2CE5-\u2CEA\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012-\u3013\u3020\u3036-\u3037\u303E-\u303F\u3190-\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u32FE\u3300-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836-\uA837\uA839\uAA77-\uAA79\uFDFD\uFFE4\uFFE8\uFFED-\uFFEE\uFFFC-\uFFFD", |
+ Zl: "\u2028", |
+ Zp: "\u2029", |
+ Zs: "\u0020\u00A0\u1680\u180E\u2000-\u200A\u202F\u205F\u3000" |
+}; |
/live/UnicodeData.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/http.js |
=================================================================== |
--- live/http.js (nonexistent) |
+++ live/http.js (revision 520) |
@@ -0,0 +1,863 @@ |
+/** |
+ * @fileOverview <title>HTTP Library</title> |
+ * @file $Id$ |
+ * @requires |
+ * object.js for jsx.object#isMethod() |
+ * |
+ * @author (C) 2004-2013 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx.net == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.net = {}; |
+} |
+ |
+/** |
+ * @idl{WebIDL} |
+ * |
+ * interface HTTPResponseListener : Function { |
+ * boolean HTTPResponseListener(IXMLHttpRequest x); |
+ * // Handles the response for the HTTP request initiated with x.send() |
+ * // SHOULD return a true-value if successful, a false-value otherwise |
+ * }; |
+ * |
+ * interface HTTPMethod { |
+ * const string GET="GET" |
+ * const string POST="POST" |
+ * }; |
+ * |
+ * interface HTTPRequestReadyState { |
+ * const int COMPLETED=4 |
+ * }; |
+ * |
+ * interface HTTPStatus { |
+ * const RegExp OK_EXPR=/\b(0|2\d\d|1223)\b/ |
+ * const RegExp FAILED_EXPR=/\b[45]\d\d\b/ |
+ * }; |
+ * |
+ * interface HTTPRequest { |
+ * attribute string URL |
+ * setter=setURL(string) |
+ * default=setURL(); |
+ * attribute HTTPMethod method |
+ * setter=setMethod(string) |
+ * default=setMethod(); |
+ * attribute boolean async |
+ * setter=setAsync(boolean) |
+ * default=setAsync(); |
+ * attribute string data |
+ * setter=setData(string) |
+ * default=setData(); |
+ * attribute string requestType |
+ * setter=setRequestType(string) |
+ * default=setRequestType(); |
+ * readonly attribute HTTPRequestReadyState readyState |
+ * readonly attribute HTTPStatus status |
+ * attribute HTTPResponseListener _responseListener |
+ * attribute HTTPResponseListener successListener |
+ * attribute HTTPResponseListener errorListener |
+ * |
+ * HTTPRequest HTTPRequest( |
+ * optional string sURL = document.URL, |
+ * optional string sMethod = HTTPMethod.GET, |
+ * optional boolean bAsync = true, |
+ * optional HTTPResponseListener fSuccessListener = null, |
+ * optional HTTPResponseListener fErrorListener = null); |
+ * // URL=sURL, method=sMethod, async=bAsync, |
+ * // successListener=fSuccessListener, errorListener=fErrorListener |
+ * |
+ * boolean setURL(optional string sURL = ""); |
+ * // URL=sURL |
+ * |
+ * boolean setMethod(optional string sMethod = HTTPMethod.GET); |
+ * // method=sMethod |
+ * |
+ * boolean setAsync(optional boolean bAsync = true); |
+ * // async=bAsync |
+ * |
+ * boolean setData(optional string sData = ""); |
+ * // data=sData |
+ * |
+ * boolean setRequestType( |
+ * optional string sRequestType = "application/x-www-form-urlencoded"); |
+ * // requestType=sRequestType |
+ * |
+ * boolean send(optional string sData = null, |
+ * optional string sURL = document.URL, |
+ * optional string sMethod = HTTPMethod.GET, |
+ * optional boolean bAsync = true); |
+ * // URL=sURL, method=sMethod |
+ * }; |
+ * |
+ * @end |
+ */ |
+jsx.net.http = { |
+ /** @version */ |
+ version: "0.1.$Revision$ ($Date$)", |
+ copyright: "Copyright \xA9 2004-2012", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://PointedEars.de/scripts/", |
+ |
+ /** |
+ * Creates a new <code>Request</code> object. |
+ * |
+ * You can set up response listeners per argument (see below), or |
+ * {@link jsx.net.http.Request.prototype#setResponseListener setResponseListener()}, |
+ * {@link jsx.net.http.Request.prototype#setSuccessListener setSuccessListener()}, |
+ * and {@link jsx.net.http.Request.prototype#setErrorListener setErrorListener()}; |
+ * then call {@link jsx.net.http.Request.prototype#send send()} to submit |
+ * the request. |
+ * |
+ * NOTE: The objects so created are not thread-safe. You should |
+ * not modify their properties while another request with the same |
+ * object is in progress. When in doubt, create a new object for |
+ * each request. (This issue may be fixed in a later version.) |
+ * |
+ * @param {string} sURL = document.URL |
+ * Request URL. The default is the URL of the sending resource. |
+ * @param {string} sMethod = jsx.net.http.Request.method.GET |
+ * Request method. Use the <code>jsx.net.http.Request.method.GET</code> |
+ * (default) and <code>.POST</code> properties to avoid problems |
+ * caused by case mismatch, and other typos. |
+ * @param {boolean} bAsync = true |
+ * Pass <code>true</code> to make an asynchronous request (default), |
+ * that is, a request that is processed in the background and does |
+ * not interrupt user operation. |
+ * @param {jsx.net.http.ResponseListener} fSuccessListener = null |
+ * The function to handle the response of a successful request |
+ * (default: <code>null</code>). |
+ * @param {jsx.net.http.ResponseListener} fErrorListener = null |
+ * The function to handle the response of a request that failed |
+ * (default: <code>null</code>). |
+ * @constructor |
+ */ |
+ Request: function (sURL, sMethod, bAsync, fSuccessListener, fErrorListener) { |
+ this.setURL(sURL, true); |
+ this.setMethod(sMethod); |
+ this.setAsync(bAsync); |
+ this.setSuccessListener(fSuccessListener); |
+ this.setErrorListener(fErrorListener); |
+ this.setData(); |
+ this.setRequestType(); |
+ } |
+}; |
+ |
+/** |
+ * @namespace |
+ * @name jsx.net.http.Request |
+ */ |
+jsx.object.extend(jsx.net.http.Request, { |
+ /** |
+ * @namespace |
+ */ |
+ method: { |
+ /** |
+ * Use the predefined properties to avoid problems |
+ * caused by case mismatch and other typos. |
+ */ |
+ GET: "GET", |
+ POST: "POST" |
+ }, |
+ |
+ /** |
+ * @namespace |
+ */ |
+ readyState: { |
+ UNINITIALIZED: 0, |
+ LOADING: 1, |
+ LOADED: 2, |
+ INTERACTIVE: 3, |
+ COMPLETED: 4 |
+ }, |
+ |
+ /** |
+ * @namespace |
+ */ |
+ status: { |
+ /* |
+ * NOTE: MSXML translates 204 to 1223, see |
+ * https://prototype.lighthouseapp.com/projects/8886/tickets/129-ie-mangles-http-response-status-code-204-to-1223 |
+ */ |
+ OK_EXPR: /\b(0|2\d\d|1223)\b/, |
+ LOCAL_NONE: 0, |
+ |
+ CONTINUE: 100, |
+ SWITCH_PROTOCOL: 101, |
+ |
+ OK: 200, |
+ CREATED: 201, |
+ ACCEPTED: 202, |
+ NONAUTHOR_INFO: 203, |
+ NO_CONTENT: 204, |
+ RESET_CONTENT: 205, |
+ PARTIAL_CONTENT: 206, |
+ |
+ MULTIPLE_CHOICES: 300, |
+ MOVED_PERMANENTLY: 301, |
+ FOUND: 302, |
+ SEE_OTHER: 303, |
+ NOT_MODIFIED: 304, |
+ USE_PROXY: 305, |
+ TEMP_REDIR: 307, |
+ |
+ FAILED_EXPR: /\b[45]\d\d\b/, |
+ |
+ CLIENT_ERROR_EXPR: /\b4\d\d\b/, |
+ BAD_REQUEST: 400, |
+ UNAUTHORIZED: 401, |
+ PAYMENT_REQUIRED: 402, |
+ FORBIDDEN: 403, |
+ NOT_FOUND: 404, |
+ METHOD_NOT_ALLOWED: 405, |
+ NOT_ACCEPTABLE: 406, |
+ PROXY_AUTH_REQUIRED: 407, |
+ REQ_TIMEOUT: 408, |
+ CONFLICT: 409, |
+ GONE: 410, |
+ LENGTH_REQUIRED: 411, |
+ PRECOND_FAILED: 412, |
+ REQ_ENTITY_TOO_LARGE: 413, |
+ REQ_URI_TOO_LONG: 414, |
+ UNSUPP_MEDIA_TYPE: 415, |
+ REQ_RANGE_NOT_SUITABLE: 416, |
+ EXPECT_FAILED: 417, |
+ |
+ SERVER_ERROR_EXPR: /\b5\d\d\b/, |
+ INT_SERVER_ERROR: 500, |
+ NOT_IMPLEMENTED: 501, |
+ BAD_GATEWAY: 502, |
+ SVC_UNAVAIL: 503, |
+ GATEWAY_TIMEOUT: 504, |
+ HTTP_VER_NOT_SUPP: 505 |
+ } |
+}); |
+ |
+jsx.net.http.Request.prototype = { |
+ constructor: jsx.net.http.Request, |
+ |
+ /** |
+ * Cached XHR object |
+ * |
+ * @protected |
+ */ |
+ _xhr: null, |
+ |
+ requestHeaders: jsx.object.getDataObject(), |
+ |
+ useCache: true, |
+ |
+ /** |
+ * Method to be called onreadystatechange |
+ * |
+ * @private |
+ * @function |
+ */ |
+ _responseListener: (function() { |
+ var |
+ Request = jsx.net.http.Request, |
+ jsx_object = jsx.object, |
+ oStatus = Request.status; |
+ |
+ /** |
+ * @param {XMLHttpRequest} response |
+ */ |
+ return function (response) { |
+ if (response.readyState === Request.readyState.COMPLETED) |
+ { |
+ var reqStatus = response.status; |
+ if (oStatus.OK_EXPR.test(reqStatus)) |
+ { |
+ if (jsx_object.isMethod(this.successListener)) |
+ { |
+ return this.successListener(response); |
+ } |
+ } |
+ else if (oStatus.FAILED_EXPR.test(reqStatus)) |
+ { |
+ if (jsx_object.isMethod(this.errorListener)) |
+ { |
+ this.errorListener(response); |
+ } |
+ } |
+ } |
+ }; |
+ }()), |
+ |
+ /** |
+ * Sets the <code>URL</code> property. |
+ * |
+ * @param {string} sURL |
+ * If not provided or a false-value, the |
+ * URL of the sending recource is set. |
+ * @param {boolean} bDontEncode (optional) |
+ * If <code>true</code>, do not encode the request URI. |
+ */ |
+ setURL: function (sURL, bDontEncode) { |
+ if (!bDontEncode && sURL) |
+ { |
+ sURL = encodeURI(sURL); |
+ } |
+ |
+ /** |
+ * @type string |
+ */ |
+ this.URL = (sURL || document.URL); |
+ }, |
+ |
+ /** |
+ * Sets the <code>method</code> property. Use the |
+ * <code>HTTPRequest.method.(GET|POST)</code> properties |
+ * to avoid problems with character case and typos. |
+ * |
+ * @param {string} sMethod (optional) |
+ * If not provided or a false-value, the value |
+ * of <code>HTTPRequest.method.GET</code> is used. |
+ */ |
+ setMethod: function (sMethod) { |
+ this.method = |
+ sMethod |
+ ? String(sMethod).toUpperCase() |
+ : this.constructor.method.GET; |
+ }, |
+ |
+ /** |
+ * Defines whether the request should be synchronous (blocking the UA until |
+ * the response was fully received) or asynchronous (waiting for the |
+ * response to be fully received in the background, this is the default |
+ * and recommended). |
+ * |
+ * @param {boolean} bAsync (optional) |
+ * If not provided or a true-value, the request will be asynchronous. |
+ */ |
+ setAsync: function (bAsync) { |
+ this.async = (typeof bAsync == "undefined" ? true : !!bAsync); |
+ }, |
+ |
+ /** |
+ * Defines the response Listener method to be used for handling |
+ * requests. |
+ * |
+ * A <code>HTTPRequest</code> object is always initialized with |
+ * an inherited default response Listener that calls |
+ * {@link HTTPRequest.prototype#successListener() successListener()} |
+ * on success, and |
+ * {@link HTTPRequest.prototype#errorListener() errorListener()} |
+ * on failure. Once initialized, passing a reference to a |
+ * non-callable object as argument, throws an |
+ * {@link jsx#InvalidArgumentError InvalidArgumentError} |
+ * exception. |
+ * |
+ * @param {HTTPResponseListener} fResponseListener |
+ * @throws jsx.InvalidArgumentError if the argument is not a method |
+ */ |
+ setResponseListener: function (fResponseListener) { |
+ /* initialization */ |
+ if (typeof fResponseListener == "undefined" |
+ && typeof this._responseListener == "undefined") |
+ { |
+ this._responseListener = new jsx.net.http.ResponseListener(); |
+ return true; |
+ } |
+ |
+ if (jsx.object.isMethod(fResponseListener)) |
+ { |
+ this._responseListener = fResponseListener; |
+ return (this._responseListener == fResponseListener); |
+ } |
+ |
+ jsx.throwThis("jsx.InvalidArgumentError", |
+ "jsx:HTTPRequest::setResponseListener: Argument is not a method"); |
+ return false; |
+ }, |
+ |
+ /** |
+ * Defines a response listener method to be used for handling |
+ * successful requests. |
+ * |
+ * An <code>HTTPRequest</code> object is always initialized with |
+ * an inherited dummy success listener (a {@link jsx.net.http.ResponseListener} |
+ * instance) that does nothing, if you do not specify one. Once initialized, |
+ * passing a reference to a non-callable object as argument throws an |
+ * {@link jsx#InvalidArgumentError InvalidArgumentError} |
+ * exception. |
+ * |
+ * @param {HTTPResponseListener} fSuccessListener |
+ * <code>true</code> if the listener could be successfully |
+ * set or changed; <code>false</code> on error, unless an exception is thrown. |
+ * @throws jsx.InvalidArgumentError if the argument is not a method |
+ * @return {Request} This object on success, <code>null</code> otherwise |
+ */ |
+ setSuccessListener: function (fSuccessListener) { |
+ /* initialization */ |
+ if (typeof fSuccessListener == "undefined" |
+ && typeof this.successListener == "undefined") |
+ { |
+ this.successListener = new jsx.net.http.ResponseListener(); |
+ return this; |
+ } |
+ |
+ if (typeof fSuccessListener == "function") |
+ { |
+ this.successListener = fSuccessListener; |
+ return (this.successListener == fSuccessListener) ? this : null; |
+ } |
+ |
+ jsx.throwThis("jsx.InvalidArgumentError", |
+ "jsx:HTTPRequest::setResponseListener: Argument is not a method"); |
+ return null; |
+ }, |
+ |
+ /** |
+ * Defines the response listener method to be used for handling |
+ * unsuccessful requests. |
+ * |
+ * An <code>HTTPRequest</code> object is always initialized with |
+ * an inherited dummy error listener that does nothing (a |
+ * {@link jsx.net.http.ResponseListener} instance), if you |
+ * do not specify one. Once initialized, passing a reference |
+ * to a non-callable object as argument throws an |
+ * {@link jsx#InvalidArgumentError InvalidArgumentError} |
+ * exception. |
+ * |
+ * @param {HTTPResponseListener} fErrorListener |
+ * @throws jsx.InvalidArgumentError if the argument is not a method |
+ */ |
+ setErrorListener: function (fErrorListener) { |
+ if (typeof fErrorListener == "undefined" |
+ && typeof this.errorListener == "undefined") |
+ { |
+ this.errorListener = new jsx.net.http.ResponseListener(); |
+ return true; |
+ } |
+ |
+ if (jsx.object.isMethod(fErrorListener)) |
+ { |
+ this.errorListener = fErrorListener; |
+ return (this.errorListener == this.errorListener); |
+ } |
+ |
+ jsx.throwThis('jsx.InvalidArgumentError', |
+ "jsx:HTTPRequest::setErrorListener: Argument is not a method"); |
+ return false; |
+ }, |
+ |
+ /** |
+ * Sets the <code>data</code> property. |
+ * |
+ * @param {string} sData (optional) |
+ * If not provided or a false-value, sets |
+ * the property to the empty string. |
+ * @see HTTPRequest.prototype#resetData() |
+ */ |
+ setData: function (sData) { |
+ this.data = (sData || ""); |
+ return this; |
+ }, |
+ |
+ /** |
+ * Resets the <code>data</code> property to the empty string. |
+ * |
+ * @see HTTPRequest.prototype#setData() |
+ */ |
+ resetData: function () { |
+ this.setData(); |
+ }, |
+ |
+ /** |
+ * Retrieves the data to send in the request, and optionally the request |
+ * method, from an (X)HTML form. TODO: select[multiple] elements |
+ * |
+ * @param {HTMLFormElement} f |
+ * @param {boolean} bUseFormMethod (optional) |
+ * If <code>true</code>, the form's request method becomes the |
+ * <code>HTTPRequest</code> object's request method. The default |
+ * is <code>false</code>. |
+ * @return boolean |
+ */ |
+ getDataFromForm: function (f, bUseFormMethod) { |
+ var result = false, es, len; |
+ |
+ if (f && (es = f.elements) && (len = es.length)) |
+ { |
+ if (bUseFormMethod) |
+ { |
+ this.setMethod(f.method); |
+ } |
+ |
+ var aData = []; |
+ |
+ for (var i = 0; i < len; i++) |
+ { |
+ var o = es[i]; |
+ if (o.name) |
+ { |
+ aData.push(encodeURIComponent(o.name) + "=" + encodeURIComponent(o.value != "" ? o.value : "")); |
+ } |
+ } |
+ |
+ this.data = aData.join("&"); |
+ result = true; |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Sets the Content-Type for the HTTP request. The default is |
+ * "application/x-www-form-urlencoded" to indicate form submission, |
+ * which is what Web browsers send as default then, although this |
+ * media type is currently not registered with IANA. |
+ * |
+ * @param {string} sRequestType |
+ * <code>"application/x-www-form-urlencoded"</code>, if omitted or |
+ * a false-value (like "", the empty string). |
+ * @param {string} sEncoding |
+ * Character encoding of the message body |
+ * @return {jsx.net.http.Request} |
+ * This object |
+ */ |
+ setRequestType: function (sRequestType, sEncoding) { |
+ this.requestType = |
+ (sRequestType || "application/x-www-form-urlencoded") |
+ + (sEncoding ? "; charset=" + sEncoding : ""); |
+ |
+ return this; |
+ }, |
+ |
+ /** |
+ * Sets a request header field value |
+ * |
+ * @param name |
+ * @param value |
+ * @return {jsx.net.http.Request} |
+ * This object |
+ */ |
+ setRequestHeader: function (name, value) { |
+ this.requestHeaders[name] = value; |
+ return this; |
+ }, |
+ |
+ /** |
+ * Sets additional request header field values |
+ */ |
+ setRequestHeaders: (function () { |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ /** |
+ * @param {Object} obj |
+ * Object specifying the additional header fields for the |
+ * next request. Names of own properties of this object |
+ * define the header field names, their values the corresponding |
+ * field values. |
+ * @return {jsx.net.http.Request} |
+ * This object |
+ */ |
+ return function (obj) { |
+ for (var name in obj) |
+ { |
+ if (_hasOwnProperty(obj, name)) |
+ { |
+ this.requestHeaders[name] = obj[name]; |
+ } |
+ } |
+ |
+ return this; |
+ }; |
+ }()), |
+ |
+ dontCache: function () { |
+ this.useCache = false; |
+ return this; |
+ }, |
+ |
+ /** |
+ * Returns a reference to an XML HTTP Request object. Reuses an existing |
+ * object if possible (if it has processed the previous request); creates |
+ * a new object if necessary; |
+ * |
+ * @protected |
+ * @return {IXMLHttpRequest} |
+ * A reference to an XML HTTP Request object or <code>null</code>, |
+ * if no such object can be created. |
+ */ |
+ _getXHR: function () { |
+ var |
+ jsx_global = jsx.global, |
+ jsx_object = jsx.object, |
+ x = this._xhr; |
+ |
+ /* Reuse existing XHR instance if possible */ |
+ if (x !== null |
+ && x.readyState == this.constructor.readyState.COMPLETED) |
+ { |
+ return x; |
+ } |
+ |
+ /* |
+ * Create new XHR instance: |
+ * Feature detection based on Jim Ley's XML HTTP Request tutorial |
+ * at <http://jibbering.com/2002/4/httprequest.html> |
+ */ |
+ |
+ /* Initialize to detect failure later */ |
+ x = null; |
+ |
+ /* |
+ * IE 6+ (JScript allows for conditional compilation; an ordinary comment |
+ * to other script engines). Note that IE 7 supports XMLHttpRequest() but |
+ * currently not for `file:' URIs, so we don't prefer that wrapper (see |
+ * <http://xhab.blogspot.com/2006/11/ie7-support-for-xmlhttprequest.html>). |
+ */ |
+ if (jsx_object.isMethod(jsx_global, "ActiveXObject")) |
+ { |
+ /*@cc_on @*/ |
+ /*@if (@_jscript_version >= 5) |
+ try |
+ { |
+ // TODO: Try this first? |
+ // new ActiveXObject("Msxml2.XMLHTTP"); |
+ |
+ // MSXML 3.0- |
+ x = new ActiveXObject("Microsoft.XMLHTTP"); |
+ } |
+ catch (e) |
+ { |
+ x = null; |
+ } |
+ @end @*/ |
+ } |
+ |
+ /* Gecko and Opera 8.1+ */ |
+ if (!x && jsx_object.isMethod(jsx_global, "XMLHttpRequest")) |
+ { |
+ jsx.tryThis( |
+ function () { x = new XMLHttpRequest(); }, |
+ function () { x = null; }); |
+ } |
+ |
+ /* IceBrowser */ |
+ if (!x && typeof window != "undefined" |
+ && jsx_object.isMethod(window, "createRequest")) |
+ { |
+ jsx.tryThis( |
+ function () { x = window.createRequest(); }, |
+ function () { x = null; }); |
+ } |
+ |
+ /* Update cache if unused */ |
+ if (x && this._xhr === null) |
+ { |
+ this._xhr = x; |
+ } |
+ |
+ return x; |
+ }, |
+ |
+ /** |
+ * Submits the HTTP request. |
+ * |
+ * @param {string} sData (optional) |
+ * The data to form the request body. If the request method is "GET", |
+ * this argument is ignored and <code>null</code> is used instead (no body). |
+ * If the request method is "POST", and this value is not provided, the |
+ * value defaults to that of the <code>data</code> property, which is |
+ * the empty string if not set different previously. |
+ * @param {string} sURL (optional) |
+ * The request URL. If not provided, this value defaults to that of the |
+ * <code>URL</code> property, which is the empty string if not set |
+ * different previously. |
+ * @param {string} sMethod (optional) |
+ * The request method. If not provided, this value defaults to that of |
+ * the <code>HTTPRequest.method.GET</code> property, which is "GET". |
+ * @param {boolean} bAsync (optional) |
+ * The request is asynchronous if <code>true</code> is passed, synchronous |
+ * if <code>false</code> is passed. If not provided, this value defaults |
+ * to that of the <code>async</code> property, which is <code>true</code> |
+ * if not set different previously. |
+ * @return {boolean} |
+ * <code>true</code> (async) or what was returned by the success |
+ * listener (sync) if the XHR object could be created and |
+ * <code>IXMLHTTPRequest::send()</code> was successful; |
+ * <code>false</code> otherwise. Note that for asynchronous handling |
+ * "successful" does not imply that the server has actually received |
+ * the message, and responded with an OK status code; only that the |
+ * method could be called successfully. |
+ */ |
+ send: function (sData, sURL, sMethod, bAsync) { |
+ var |
+ jsx_object = jsx.object, |
+ C = this.constructor, |
+ x = this._getXHR(); |
+ |
+ if (!x || !jsx_object.isMethod(x, "open")) |
+ { |
+ return false; |
+ } |
+ |
+ /* Assume everything goes smoothly from here */ |
+ var result = true; |
+ |
+ if (arguments.length < 1) |
+ { |
+ sData = this.data; |
+ } |
+ |
+ if (arguments.length < 2) |
+ { |
+ sURL = this.URL; |
+ } |
+ |
+ if (arguments.length < 3) |
+ { |
+ sMethod = this.method; |
+ } |
+ |
+ sMethod = sMethod.toUpperCase(); |
+ |
+ var bGET = (sMethod == C.method.GET); |
+ |
+ bAsync = (arguments.length > 3) ? !!bAsync : this.async; |
+ |
+ x.open( |
+ sMethod, |
+ sURL |
+ + ((bGET && (sData || !this.useCache)) |
+ ? (!/[?&]$/.test(sURL) |
+ ? (sURL.indexOf("?") < 0 ? "?" : "&") |
+ : "") |
+ + sData |
+ + (!this.useCache |
+ ? (sData ? "&" : "") |
+ + "timestamp=" + (new Date()).getTime() |
+ : "") |
+ : ""), |
+ bAsync); |
+ |
+ var me = this; |
+ |
+ if (jsx_object.isMethod(x, "setRequestHeader")) |
+ { |
+ /* NOTE: Failure to call this method is _not_ considered a fatal error. */ |
+ jsx.tryThis( |
+ function () { |
+ x.setRequestHeader("Content-Type", me.requestType); |
+ |
+ if (!this.useCache) |
+ { |
+ this.setRequestHeaders({ |
+ "If-Modified-Since": (new Date(0)).toUTCString() |
+ }); |
+ } |
+ |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ var requestHeaders = me.requestHeaders; |
+ |
+ for (var name in requestHeaders) |
+ { |
+ if (_hasOwnProperty(requestHeaders, name)) |
+ { |
+ x.setRequestHeader(name, requestHeaders[name]); |
+ } |
+ } |
+ } |
+ ); |
+ } |
+ |
+ if (bAsync) |
+ { |
+ x.onreadystatechange = (function(x2) { |
+ return function () { |
+ // alert(x.readyState); |
+ // alert(x.status); |
+ |
+ // console.log("readyState = %i, status = %i", x.readyState, x.status); |
+ // console.log(C.status.OK_EXPR); |
+ |
+ if (jsx_object.isMethod(me._responseListener)) |
+ { |
+ me._responseListener(x2); |
+ } |
+ |
+ /* Let the garbage collector handle this per the closure */ |
+// if (x2.readyState == C.readyState.COMPLETED) |
+// { |
+// x2 = null; |
+// } |
+ }; |
+ }(x)); |
+ } |
+ |
+ jsx.tryThis( |
+ function () { x.send(bGET ? null : (sData || me.data)); }, |
+ function () { result = false; me.errorListener(x); }); |
+ |
+ if (!bAsync) |
+ { |
+ if (jsx_object.isMethod(this._responseListener)) |
+ { |
+ result = this._responseListener(x); |
+ } |
+ |
+ /* Handle stopped servers */ |
+// jsx.tryThis( |
+// function () { |
+// if (C.status.OK_EXPR.test(x.status)) { |
+// result = true; |
+// } |
+// } |
+// ); |
+ |
+ /* TODO: Is this error-prone? */ |
+// x = null; |
+ } |
+ |
+ return result; |
+ } |
+}; |
+ |
+/** |
+ * Creates a new HTTPResponseListener object. |
+ * |
+ * A HTTPResponseListener object is a specialized Function object |
+ * that takes an IXMLHttpRequest object <var>x</var> as its only |
+ * argument. This method is a factory to create such an object. |
+ * |
+ * Recommended usage: |
+ * <pre><code> |
+ * var f = jsx.net.http.ResponseListener( |
+ * 'statement;', |
+ * + 'statement;' |
+ * ); |
+ * </code></pre> |
+ * |
+ * @param sCode |
+ * @return Function |
+ * @constructor |
+ */ |
+jsx.net.http.ResponseListener = function (sCode) { |
+ return Function("x", sCode + "" || ""); |
+}; |
+ |
+/* Usage: */ |
+// var x = new HTTPRequest("", HTTPRequest.method.GET, true, processResponse); |
+/* ... */ |
+// x.send(); |
\ No newline at end of file |
/live/http.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/lcars.js |
=================================================================== |
--- live/lcars.js (nonexistent) |
+++ live/lcars.js (revision 520) |
@@ -0,0 +1,550 @@ |
+if (!this.dhtml) |
+{ |
+ var dhtml = new Object(); |
+ dhtml.supported = false; |
+ dhtml.visibility = function() {}; |
+} |
+ |
+function accessing() |
+{ |
+ if (dhtml.supported) |
+ { |
+ document.write( |
+ '<div class="standby" id="div_status">ACCESSING FILE <span id="dots"' |
+ + '> <\/span><\/div>'); |
+ } |
+} |
+ |
+ |
+function loadIdx() |
+{ |
+ if (dhtml.supported) |
+ { |
+ document.write( |
+ '<div class="standby" style="visibility: none;" id="div_status"' |
+ + '>LOADING INDEX <span id="dots"> </span></div>'); |
+ } |
+} |
+ |
+function animDots() |
+{ |
+ var dotString = ""; |
+ |
+ for (var i = 0; i < animDots.dotCounter; i++) |
+ { |
+ dotString += ". "; |
+ } |
+ |
+ if (dhtml.setCont) |
+ { |
+ dhtml.setCont("id", "dots", null, dotString); |
+ } |
+ |
+ if (dotCounter == 3) |
+ { |
+ animDots.dotCounter = 0; |
+ } |
+ else |
+ { |
+ animDots.dotCounter++; |
+ } |
+} |
+animDots.dotCounter = 0; |
+ |
+// disable both "dot" methods until reusing the "status" element works |
+/* |
+function dots() |
+{ |
+ if (dhtml.supported && dhtml.visibility) |
+ { |
+ dots.divContent = getElem("id", "div_content"); |
+ dots.divStatus = getElem("id", "div_status"), f; |
+ if (dots.divContent && dots.divStatus) |
+ { |
+ dhtml.visibility(dots.divContent, false); |
+ |
+ if (typeof divStatus.left != "undefined") |
+ { |
+ dots.divStatus.left = document.body.offsetWidth; |
+ } |
+ |
+ dhtml.visibility(divStatus, true); |
+ } |
+ else if ((dots.f = parent.frames['ufpdb_banner'])) |
+ { |
+ dots.f.spanStatus.className = "standby"; |
+ dhtml.setTextContent(dots.f.spanStatus, "ACCESSING FILE"); |
+ } |
+ } |
+ |
+ if (dhtml.supported && dots.divContent && dots.divStatus) |
+ { |
+ dots.anim = window.setInterval("animDots();", 1000); |
+ } |
+} |
+ |
+function undots() |
+{ |
+ if (dhtml.supported) |
+ { |
+ window.clearInterval(dots.anim); |
+ if (dots.divContent && dots.divStatus) |
+ { |
+ dots.divStatus.style.visibility = "hidden"; |
+ dots.divContent.style.visibility = "visible"; |
+ } |
+ else |
+ { |
+ dots.f.spanStatus.className = ""; |
+ dhtml.setTextContent(f.spanStatus, "DATABASE"); |
+ } |
+ } |
+} |
+*/ |
+function dots() {} |
+function undots() {} |
+ |
+function getOffsets(a) |
+{ |
+ var offset = 0; |
+ |
+ for (var i = 0, len = a.length; i < len; i++) |
+ { |
+ offset += a[i]; |
+ a[i] = offset; |
+ } |
+ |
+ return a; |
+} |
+ |
+function blendWords(o, bBlendIn, iDelay) |
+{ |
+ if (!iDelay) |
+ { |
+ iDelay = 1000; |
+ } |
+ |
+ if (o) |
+ { |
+ var sCont = getCont(o); |
+ if (sCont) |
+ { |
+ // blendWords.targets.push({target: o, timeouts: []}); |
+ // var id = blendWords.targets.length - 1; |
+ |
+ var aWords = sCont.split(/\s+/), i, len; |
+ |
+ for (i = aWords.length; i--;) |
+ { |
+ aWords[i] = { |
+ value: aWords[i], |
+ delay: iDelay * Math.floor(aWords[i].length / sCont.length) |
+ }; |
+ } |
+ |
+ if (bBlendIn) |
+ { |
+ var t = function() |
+ { |
+ window.clearTimeout( |
+ //blendWords.targets[id].timeouts[i] |
+ t); |
+ setTextContent( |
+ // blendWords.targets[id].target, |
+ o, |
+ // getTextContent(blendWords.targets[id].target) |
+ getTextContent(o) |
+ + ' ' |
+ + aWords[i].value); |
+ }; |
+ |
+ t.toString = function() { |
+ return 't();'; |
+ }; |
+ |
+ // var _setTimeout = function(f, delay, args) |
+ // { |
+ // f.apply(this, args); |
+ // }; |
+ |
+ for (i = 0, len = aWords.length; i < len; i++) |
+ { |
+ // blendWords.targets[id].timeouts[i] = |
+ var t2 = window.setTimeout(t, aWords[i].delay); |
+ } |
+ } |
+ else |
+ { |
+ // |
+ } |
+ } |
+ } |
+} |
+/** |
+ * @property : number = Internal ID of accessed object |
+ */ |
+blendWords.targets = new Array(); |
+ |
+/* LCARS widget prototypes */ |
+ |
+function LCARSWidget(x, y) |
+{ |
+ this.moveTo(x, y); |
+ this.elem = dhtml.createElement('div'); |
+} |
+ |
+LCARSWidget.prototype = { |
+ constructor: LCARSWidget, |
+ |
+ moveTo: function(x, y) { |
+ this.x = x; |
+ this.y = y; |
+ if (dhtml.getStyle(this.obj, "display") == 'visible'){this.repaint();} |
+ } |
+}; |
+ |
+/** |
+ * Creates a new LCARS Timer widget. |
+ * |
+ * Takes up to three arguments. The first two may define the |
+ * relative position of the corresponding block element in CSS |
+ * units of length, while the third one allows to initialize |
+ * the timer in milliseconds. |
+ * |
+ * @param {String} x [optional] |
+ * @param {String} y [optional] |
+ * @param {Number} nStart [optional] |
+ */ |
+function LCARSTimer(x, y, nStart) |
+{ |
+ LCARSWidget.call(this, x, y); |
+ this.reset(); |
+} |
+ |
+LCARSTimer.prototype = { |
+ constructor: LCARSTimer, |
+ |
+ reset: function() |
+ { |
+ this.value = 0; |
+ } |
+}; |
+ |
+if (jsx.object.getFeature(jsx, "dom", "widgets")) |
+{ |
+ /** |
+ * @type lcars |
+ * @memberOf __lcars |
+ * @namespace |
+ */ |
+ var lcars = (/** @constructor */ function () { |
+ "use strict"; |
+ |
+ return { |
+ /** |
+ * @type Content |
+ * @memberOf lcars |
+ * @extends jsx.dom.widgets.Container |
+ */ |
+ Content: (function lcars_Content () { |
+ lcars_Content._super.apply(this, arguments); |
+ }).extend(jsx.dom.widgets.Container, { |
+ init: function () { |
+ this._target = document.getElementById("content"); |
+ }, |
+ |
+ /** |
+ * @param {String} title |
+ * @param {String} language |
+ */ |
+ showMap: function (language) { |
+ var content = document.getElementById("content"); |
+ |
+ var map = lcars._gmaps_map; |
+ if (!map) |
+ { |
+ /* Disable transition while map is loading */ |
+ content.style.transition = "none"; |
+ content.className = "fixed"; |
+ this.setInnerHTML( |
+ // '<select><option>Google Maps</option><option>OpenStreetMap</option></select>' |
+ '<div id="map-canvas" style="position: absolute; width: 100%; height: 100%"></div>'); |
+ this.update(); |
+ } |
+ |
+ var script = this._gmaps_script; |
+ if (!script) |
+ { |
+ script = document.createElement("script"); |
+ script.type = "text/javascript"; |
+ script.src = "http://maps.googleapis.com/maps/api/js" |
+ + "?key=AIzaSyCpW3bu57j4V7_vcK_cVpvFkXMmKkKgADI" |
+ + "&sensor=true&callback=lcars.multiDisplay.initGMap" |
+ + "&language=" + language; |
+ document.body.appendChild(script); |
+ if (script.parentNode == document.body) |
+ { |
+ this._gmaps_script = script; |
+ } |
+ } |
+ else |
+ { |
+ lcars.multiDisplay.initGMap(); |
+ } |
+ } |
+ }), |
+ |
+ /** |
+ * @type MultiDisplay |
+ * @extends jsx.dom.widgets.Container |
+ */ |
+ MultiDisplay: (function lcars_MultiDisplay () { |
+ lcars_MultiDisplay._super.apply(this, arguments); |
+ }).extend(jsx.dom.widgets.Container, { |
+ TEXT_ACCURACY: "accuracy", |
+ TEXT_CURRENT_COORDS: "Your current coordinates on Terra", |
+ TEXT_NOT_AVAILABLE: "N/A", |
+ |
+ /** |
+ * @memberOf lcars.MultiDisplay |
+ * @type jsx.dom.widgets.Container |
+ * @protected |
+ */ |
+ _title: null, |
+ |
+ /** |
+ * @type jsx.dom.widgets.Container |
+ * @protected |
+ */ |
+ _content: null, |
+ |
+ init: function () { |
+ this._title = new jsx.dom.widgets.Container(document.getElementById("title")); |
+ this._analysis = new jsx.dom.widgets.Container(document.getElementById("analysis")); |
+ this._content = new lcars.Content(); |
+ }, |
+ |
+ setTexts: function (texts) { |
+ var keys = jsx.object.getKeys(texts); |
+ for (var i = 0, len = keys.length; i < len; ++i) |
+ { |
+ var key = keys[i]; |
+ if (typeof this[key] == "string") |
+ { |
+ this[key] = texts[key]; |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * Sets the title of the multi-display |
+ * |
+ * @param {String} s |
+ * New title |
+ */ |
+ setTitle: function (s) { |
+ this._title.setText(s); |
+ this._title.update(); |
+ }, |
+ |
+ setAnalysis: function (data) { |
+ var rows = []; |
+ for (var i = 0, len = data.length; i < 3; ++i) |
+ { |
+ var item = data[i]; |
+ var cells = [ |
+ { |
+ elementType: "th", |
+ childNodes: [item.title + ":"] |
+ }, |
+ { |
+ elementType: "td", |
+ childNodes: [item.value] |
+ } |
+ ]; |
+ |
+ var item2; |
+ if (len > 3 && (item2 = data[i + 3])) |
+ { |
+ cells.push({ |
+ elementType: "th", |
+ childNodes: [item2.title + ":"] |
+ }); |
+ |
+ cells.push({ |
+ elementType: "td", |
+ childNodes: [item2.value] |
+ }); |
+ } |
+ |
+ rows.push({ |
+ elementType: "tr", |
+ childNodes: cells |
+ }); |
+ } |
+ |
+ this._analysis.setInnerHTML([{ |
+ elementType: "table", |
+ childNodes: rows |
+ }]); |
+ |
+ this._analysis.update(); |
+ }, |
+ |
+ geolocate: function (title, language) { |
+ this.setTitle(title); |
+ |
+ var me = this; |
+ navigator.geolocation.getCurrentPosition(function (position) { |
+ lcars.setPosition(position); |
+ var coords = position.coords; |
+ var altitudeAccuracy = coords.altitudeAccuracy; |
+ var _geolocation = jsx.dom.geolocation; |
+ _geolocation.setPosition(position); |
+ me.setAnalysis([ |
+ { |
+ title: _geolocation.TEXT_LATITUDE, |
+ value: _geolocation.getLatitudeString() |
+ }, |
+ { |
+ title: _geolocation.TEXT_LONGITUDE, |
+ value: _geolocation.getLongitudeString() |
+ }, |
+ { |
+ title: _geolocation.TEXT_LAT_LNG_ACCURACY, |
+ value: _geolocation.getLatLngAccuracyString() |
+ }, |
+ { |
+ title: _geolocation.TEXT_ALTITUDE, |
+ value: _geolocation.getAltitudeString() |
+ + (altitudeAccuracy != null |
+ ? " (" + _geolocation.getAltAccuracyString() |
+ + " " + this.TEXT_ACCURACY + ")" |
+ : "") |
+ }, |
+ { |
+ title: _geolocation.TEXT_SPEED, |
+ value: _geolocation.getSpeedString() |
+ }, |
+ { |
+ title: _geolocation.TEXT_HEADING, |
+ value: _geolocation.getHeadingString() |
+ } |
+ ]); |
+ |
+ me._content.showMap(language); |
+ me = null; |
+ }); |
+ |
+ return false; |
+ }, |
+ |
+ initGMap: function () { |
+ var coords = lcars.getPosition().coords; |
+ var center = new google.maps.LatLng(coords.latitude, coords.longitude); |
+ |
+ var zoom = 9; |
+ var zoomAccuracy = [ |
+ 1e7, 5e6, 2e6, 2e6, 1e6, 5e5, 2e5, 1e5, 5e4, |
+ 2e4, 1e4, 5e3, 2000, 2000, 1000, 500, 200, |
+ 100, 50, 20 |
+ ]; |
+ |
+ var accuracy = coords.accuracy; |
+ if (!isNaN(accuracy)) |
+ { |
+ for (var i = 0, len = zoomAccuracy.length; i < len; ++i) |
+ { |
+ if (accuracy > zoomAccuracy[i]) |
+ { |
+ zoom = i; |
+ break; |
+ } |
+ } |
+ } |
+ |
+ var map = lcars._gmaps_map; |
+ if (!map) |
+ { |
+ var mapOptions = { |
+ center: center, |
+ zoom: zoom, |
+ mapTypeId: google.maps.MapTypeId.HYBRID, |
+ backgroundColor: "#000", |
+ noClear: true, |
+ scaleControl: true |
+ }; |
+ |
+ map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); |
+ lcars._gmaps_map = map; |
+ } |
+ else |
+ { |
+ map.setCenter(center); |
+ map.setZoom(zoom); |
+ } |
+ |
+ var circle = this._gmaps_circle; |
+ if (!circle) |
+ { |
+ if (!isNaN(coords.accuracy)) |
+ { |
+ circle = new google.maps.Circle({ |
+ map: map, |
+ center: center, |
+ radius: coords.accuracy, |
+ fillColor: "white", |
+ fillOpacity: 0.125, |
+ strokeColor: "white", |
+ strokeOpacity: 0.5 |
+ }); |
+ |
+ var me = this; |
+ circle.addListener("click", function () { |
+ // TODO |
+ window.alert(me.TEXT_CURRENT_COORDS + "\n\n" |
+ + jsx.dom.geolocation.getText(lcars.getPosition())); |
+ }); |
+ |
+ this._gmaps_circle = circle; |
+ } |
+ } |
+ else |
+ { |
+ if (!isNaN(coords.accuracy)) |
+ { |
+ circle.setCenter(center); |
+ circle.setRadius(coords.accuracy); |
+ } |
+ else |
+ { |
+ circle.setMap(null); |
+ } |
+ } |
+ |
+ /* Restore transition */ |
+ this._content.resetStyleProperty("transition"); |
+ } |
+ }), |
+ |
+ /** |
+ * @protected |
+ */ |
+ _position: null, |
+ |
+ /** |
+ * @return {Position} |
+ */ |
+ getPosition: function () { |
+ return this._position; |
+ }, |
+ |
+ /** |
+ * @param {Position} position |
+ */ |
+ setPosition: function (position) { |
+ this._position = position; |
+ } |
+ }; |
+ }()); |
+} |
\ No newline at end of file |
Index: live/object/object-compat.js |
=================================================================== |
--- live/object/object-compat.js (nonexistent) |
+++ live/object/object-compat.js (revision 520) |
@@ -0,0 +1,2988 @@ |
+/** |
+ * @fileOverview <title>Basic Object Library</title> |
+ * @file $Id$ |
+ * |
+ * @author (C) 2004-2013 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = new Object(); |
+} |
+ |
+/* allows for de.pointedears.jsx.object */ |
+if (typeof de == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var de = {}; |
+} |
+ |
+if (typeof de.pointedears == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ de.pointedears = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+de.pointedears.jsx = jsx; |
+ |
+/** |
+ * Reference to the ECMAScript Global Object |
+ * @type Global |
+ * @field |
+ */ |
+jsx.global = this; |
+ |
+/* |
+ * NOTE: Cannot use jsx.object.extend() for the following |
+ * because values have not been defined yet! |
+ * |
+ * TODO: Should syntactic sugar be provided to work around |
+ * this issue? See Function.prototype.extend(). |
+ */ |
+ |
+jsx.MSG_INFO = "info"; |
+jsx.MSG_WARN = "warn"; |
+jsx.MSG_ERROR = "error"; |
+jsx.MSG_DEBUG = "debug"; |
+ |
+if (typeof jsx.options == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.options = new Object(); |
+} |
+ |
+if (typeof jsx.options.emulate == "undefined") |
+{ |
+ /** |
+ * If <code>false</code> missing language features are not emulated. |
+ * The default is <code>true</code>. |
+ * <p> |
+ * WARNING: JSX features may depend on emulation; intended for |
+ * testing only. |
+ * </p> |
+ * @type boolean |
+ */ |
+ jsx.options.emulate = true; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.object = new Object(); |
+ |
+/** |
+ * @version |
+ */ |
+jsx.object.version = "$Revision$ ($Date$)"; |
+jsx.object.copyright = "Copyright \xA9 2004-2013"; |
+jsx.object.author = "Thomas Lahn"; |
+jsx.object.email = "js@PointedEars.de"; |
+jsx.object.path = "http://PointedEars.de/scripts/"; |
+ |
+/** |
+ * @type number |
+ * Used by {@link jsx.object#extend()} to overwrite existing |
+ * properties. |
+ */ |
+jsx.object.ADD_OVERWRITE = 1; |
+ |
+/** |
+ * @type number |
+ * Used by {@link jsx.object#extend()} and {@link jsx.object#clone()} |
+ * to make a shallow copy of all enumerable properties (default). |
+ */ |
+jsx.object.COPY_ENUM = 0; |
+ |
+/** |
+ * @type number |
+ * Used by {@link jsx.object#extend()} and {@link jsx.object#clone()} |
+ * to make a deep copy of all enumerable properties. |
+ */ |
+jsx.object.COPY_ENUM_DEEP = 2; |
+ |
+/** |
+ * @type number |
+ * Used by {@link jsx.object#extend()} and {@link jsx.object#clone()} |
+ * to copy a property by inheritance. |
+ */ |
+jsx.object.COPY_INHERIT = 4; |
+ |
+/** |
+ * Determines whether an object is, or several objects are, |
+ * likely to be callable. |
+ * |
+ * @author (C) 2003-2010 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * @memberOf jsx.object |
+ * @param {Object} obj |
+ * Object which should be tested for a method, or checked |
+ * for being a method if no further arguments are provided. |
+ * <p> |
+ * <em>NOTE: If you pass a primitive value for this argument, |
+ * the properties of the object created from that value are considered. |
+ * In particular, if you pass a string value containing |
+ * a <i>MemberExpression</i>, the properties of the corresponding |
+ * <code>String</code> instance are considered, not of the object that |
+ * the <i>MemberExpression</i> might refer to. If you need to use such |
+ * a string to refer to an object (e.g., if you do not know whether it |
+ * is safe to refer to the object), use the return value of |
+ * {@link jsx#tryThis jsx.tryThis("<var>MemberExpression</var>")} |
+ * as argument to this method instead.</em> |
+ * </p> |
+ * @param {string|Array} prop (optional) |
+ * Path of the property to be determined a method, i.e. a reference to |
+ * a callable object assigned as property of another object. |
+ * Use a string argument for each component of the path, e.g. |
+ * the argument list <code>(o, "foo", "bar")</code> for testing whether |
+ * <code>o.foo.bar</code> is a method. |
+ * If the last argument is an {@link Array}, all elements of |
+ * this array are used for property names; e.g. |
+ * <code>(o, "foo", ["bar", "baz"])</code>. This allows for testing |
+ * several properties of the same object with one call. |
+ * @return {boolean} |
+ * <code>true</code> if all arguments refer to methods, |
+ * <code>false</code> otherwise. |
+ * @see jsx.object#isMethodType() |
+ */ |
+function jsx_object_isMethod (obj, prop) |
+{ |
+ var len = arguments.length; |
+ if (len < 1) |
+ { |
+ jsx.throwThis("jsx.InvalidArgumentError", |
+ ["Not enough arguments", "saw 0", "(obj : Object[, prop : string])"]); |
+ return false; |
+ } |
+ |
+ var rxUnknown = new RegExp("^\\s*unknown\\s*$", "i"); |
+ var rxNativeMethod = new RegExp("^\\s*function\\s*$", "i"); |
+ var rxMethod = new RegExp("^\\s*(function|object)\\s*$", "i"); |
+ |
+ /* |
+ * Determine if we were called jsx.object.areNativeMethods; |
+ */ |
+ var me = jsx_object_isMethod; |
+ var checkNative = (this == jsx_object_isNativeMethod); |
+ |
+ var t = typeof obj; |
+ |
+ /* When no property names are provided, test if the first argument is a method */ |
+ if (len < 2) |
+ { |
+ if (checkNative) |
+ { |
+ return rxNativeMethod.test(t) && obj && true || false; |
+ } |
+ |
+ return rxUnknown.test(t) || rxMethod.test(t) && obj && true || false; |
+ } |
+ |
+ /* otherwise the first argument must refer to a suitable object */ |
+ if (rxUnknown.test(t) || !obj) |
+ { |
+ return false; |
+ } |
+ |
+ for (var i = 1; i < len; i++) |
+ { |
+ prop = arguments[i]; |
+ |
+ /* NOTE: Handle null _and_ undefined */ |
+ if (prop == null) |
+ { |
+ return false; |
+ } |
+ |
+ var isLastSeg = (i == len - 1); |
+ if (isLastSeg) |
+ { |
+ if (typeof prop.valueOf() == "string") |
+ { |
+ prop = [prop]; |
+ } |
+ |
+ var aProp = prop; |
+ } |
+ |
+ for (var j = (isLastSeg && aProp.length || 1); j--;) |
+ { |
+ if (isLastSeg) |
+ { |
+ prop = aProp[j]; |
+ } |
+ |
+ t = typeof obj[prop]; |
+ |
+ /* |
+ * NOTE: Test for "unknown" required in any case; |
+ * this order speeds up evaluation |
+ */ |
+ if (rxUnknown.test(t) || (rxMethod.test(t) && obj[prop])) |
+ { |
+ if (i < len - 1) |
+ { |
+ obj = obj[prop]; |
+ if (!(rxUnknown.test(typeof obj) || obj)) |
+ { |
+ return false; |
+ } |
+ } |
+ else if (checkNative && !rxNativeMethod.test(t)) |
+ { |
+ return false; |
+ } |
+ } |
+ else |
+ { |
+ return false; |
+ } |
+ } |
+ } |
+ |
+ return true; |
+} |
+jsx.object.isMethod = jsx_object_isMethod; |
+ |
+jsx.object.areMethods = |
+ jsx.object.isHostMethod = jsx.object.areHostMethods = jsx.object.isMethod; |
+ |
+// jsx.object.docURL = jsx.object.path + "object.htm"; |
+ |
+/** |
+ * Determines if the passed value could be the result of |
+ * <code>typeof <var>callable</var></code>. |
+ * <p> |
+ * NOTE: This method has previously been provided by {@link types.js}; |
+ * optimizations in code reuse moved it here. |
+ * </p> |
+ * @param {string} s (optional) |
+ * String to be determined a method type, i.e. "object" or "unknown" in |
+ * MSHTML, "function" otherwise. The type must have been retrieved with |
+ * the `typeof' operator. Note that this method may also return |
+ * <code>true</code> if the value of the <code>typeof</code> operand is |
+ * <code>null</code>; to be sure that the operand is a method reference, |
+ * you have to && (AND)-combine the <code>isMethodType(...)</code> |
+ * expression with the method reference identifier unless `typeof' yielded |
+ * `unknown' for <var>s</var>. |
+ * @return {boolean} |
+ * <code>true</code> if <var>s</var> is a method type, |
+ * <code>false</code> otherwise. |
+ * @author |
+ * (C) 2003-2008 Thomas Lahn <types.js@PointedEars.de> |
+ * Distributed under the GNU GPL v3 and later. |
+ * @partof http://pointedears.de/scripts/types.js |
+ * @deprecated since version 0.1.5a.2009070204 |
+ * in favor of {@link jsx.object#isMethod(Object)} |
+ */ |
+jsx.object.isMethodType = function (s) { |
+ return /^\s*(function|object|unknown)\s*$/i.test(s); |
+}; |
+ |
+// jsx.object.docURL = jsx.object.path + "object.htm"; |
+ |
+/** |
+ * Determines whether an object is, or several objects are, |
+ * likely to be a native method. |
+ * |
+ * @author (C) 2011 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * @function |
+ * @param {Object} obj |
+ * Object which should be tested for a method, or checked |
+ * for being a method if no further arguments are provided. |
+ * <p> |
+ * <em>NOTE: If you pass a primitive value for this argument, |
+ * the properties of the object created from that value are considered. |
+ * In particular, if you pass a string value containing |
+ * a <i>MemberExpression</i>, the properties of the corresponding |
+ * <code>String</code> instance are considered, not of the object that |
+ * the <i>MemberExpression</i> might refer to. If you need to use such |
+ * a string to refer to an object (e.g., if you do not know whether it |
+ * is safe to refer to the object), use the return value of |
+ * {@link jsx#tryThis jsx.tryThis("<var>MemberExpression</var>")} |
+ * as argument to this method instead.</em> |
+ * </p> |
+ * @param {string|Array} prop (optional) |
+ * Path of the property to be determined a method, i.e. a reference to |
+ * a callable object assigned as property of another object. |
+ * Use a string argument for each component of the path, e.g. |
+ * the argument list <code>(o, "foo", "bar")</code> for testing whether |
+ * <code>o.foo.bar</code> is a method. |
+ * If the last argument is an {@link Array}, all elements of |
+ * this array are used for property names; e.g. |
+ * <code>(o, "foo", ["bar", "baz"])</code>. This allows for testing |
+ * several properties of the same object with one call. |
+ * @return {boolean} |
+ * <code>true</code> if all arguments refer to methods, |
+ * <code>false</code> otherwise. |
+ * @see jsx.object#isMethodType() |
+ */ |
+function jsx_object_isNativeMethod (obj, prop) |
+{ |
+ /* NOTE: Thread-safe, argument-safe code reuse -- `this' is our ID */ |
+ var _isMethod = jsx_object_isMethod; |
+ if (typeof _isMethod.apply != "function") |
+ { |
+ _isMethod.apply = Function_prototype_apply; |
+ } |
+ |
+ return _isMethod.apply(jsx_object_isNativeMethod, arguments); |
+} |
+jsx.object.isNativeMethod = jsx.object.areNativeMethods = jsx_object_isNativeMethod; |
+ |
+/** |
+ * Prints debug messages to the script console. |
+ * |
+ * NOTE: This method has previously been provided by |
+ * {@link debug.js}; optimizations in code reuse |
+ * moved it here. |
+ * |
+ * @param {string} sMsg |
+ * Message to be printed |
+ * @param {string} sType = "log" |
+ * Type of the message. Supported values include |
+ * <code>"log"</code> (default), <code>"info"</code>, <code>"warn"</code>, |
+ * and <code>"debug"</code>. If a script console does not support |
+ * a message type, the default value is used. |
+ * @return {boolean} |
+ * <code>true</code> if it was possible to cause the message to be printed; |
+ * <code>false</code> otherwise. |
+ */ |
+function jsx_dmsg (sMsg, sType) |
+{ |
+ var _isMethod = jsx.object.isMethod; |
+ var msgMap = new Object(); |
+ msgMap.data = new Object(); |
+ msgMap.data.info = "INFO"; |
+ msgMap.data.warn = "WARNING"; |
+ msgMap.data.debug = "DEBUG"; |
+ |
+ function msgMap_getString (s) |
+ { |
+ var data = this.data; |
+ |
+ if (typeof data[s] != "undefined") |
+ { |
+ return data[s] + ": "; |
+ } |
+ |
+ return ""; |
+ } |
+ msgMap.getString = msgMap_getString; |
+ |
+ /* Firebug 0.4+ and others */ |
+ if (typeof console != "undefined") |
+ { |
+ if (!sType || !_isMethod(console, sType) && sType != "log") |
+ { |
+ sMsg = msgMap.getString(sType) + sMsg; |
+ sType = "log"; |
+ } |
+ |
+ if (sType != "info") |
+ { |
+ sMsg += "\n" + jsx.getStackTrace(); |
+ } |
+ |
+ if (_isMethod(console, sType)) |
+ { |
+ /* MSHTML's console methods do not implement call() */ |
+ Function.prototype.call.call(console[sType], console, sMsg); |
+ return true; |
+ } |
+ } |
+ else if (typeof opera != "undefined" |
+ && _isMethod(opera, "postError")) |
+ { |
+ opera.postError(msgMap.getString(sType) + sMsg); |
+ return true; |
+ } |
+ |
+ return false; |
+} |
+jsx.dmsg = jsx_dmsg; |
+ |
+/** |
+ * Issues an info message, if possible. |
+ * |
+ * @param {String} sMsg |
+ * Message |
+ * @see jsx#dmsg |
+ */ |
+function jsx_info (sMsg) |
+{ |
+ return jsx.dmsg(sMsg, jsx.MSG_INFO); |
+} |
+jsx.info = jsx_info; |
+ |
+/** |
+ * Issues a warning, if possible. |
+ * |
+ * @param {String} sMsg |
+ * Message |
+ * @see jsx#dmsg |
+ */ |
+function jsx_warn (sMsg) |
+{ |
+ return jsx.dmsg(sMsg, jsx.MSG_WARN); |
+} |
+jsx.warn = jsx_warn; |
+ |
+/** |
+ * Issues an error message, if possible. |
+ * |
+ * @param {String} sMsg |
+ * Message |
+ * @see jsx#dmsg |
+ */ |
+function jsx_error (sMsg) |
+{ |
+ return jsx.dmsg(sMsg, jsx.MSG_ERROR); |
+}; |
+jsx.error = jsx_error; |
+ |
+/** |
+ * Determines if an object has a (non-inherited) property |
+ * |
+ * @param {Object} obj (optional) |
+ * Object which property should be checked for existence. |
+ * @param {string} sProperty |
+ * Name of the property to check. |
+ * @return {boolean} |
+ * <code>true</code> if there is such a property; |
+ * <code>false</code> otherwise. |
+ */ |
+jsx.object._hasOwnProperty = function (obj, sProperty) { |
+ if (arguments.length < 2 && obj) |
+ { |
+ sProperty = obj; |
+ obj = this; |
+ } |
+ |
+ var proto; |
+ |
+ return (jsx.object.isMethod(obj, "hasOwnProperty") |
+ ? obj.hasOwnProperty(sProperty) |
+ : (typeof obj[sProperty] != "undefined" |
+ && ((typeof obj.constructor != "undefined" |
+ && (proto = obj.constructor.prototype) |
+ && typeof proto[sProperty] == "undefined") |
+ || (typeof obj.constructor == "undefined")))); |
+}; |
+ |
+/** |
+ * Returns the own enumerable properties of an object |
+ */ |
+function jsx_object_getKeys (obj) |
+{ |
+ if (jsx.object.isNativeMethod(jsx.global.Object, "keys") |
+ && !Object.keys._emulated) |
+ { |
+ return Object.keys(obj); |
+ } |
+ |
+ var a = new Array(); |
+ |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ for (var p in obj) |
+ { |
+ if (_hasOwnProperty(obj, p)) |
+ { |
+ a[a.length] = p; |
+ } |
+ } |
+ |
+ return a; |
+} |
+jsx.object.getKeys = jsx_object_getKeys; |
+ |
+/** |
+ * Creates a duplicate (clone) of an object |
+ * |
+ * @param {Object} oSource (optional) |
+ * Object to be cloned. If omitted or <code>null</code>, |
+ * the calling object is cloned. |
+ * @param {Number} iLevel (optional) |
+ * Use the {@link #COPY_ENUM jsx.object.COPY_*} |
+ * properties to specify the level of cloning. |
+ * The default is {@link #COPY_ENUM}. |
+ * @return {Object} |
+ * A reference to the clone. |
+ */ |
+function jsx_object_clone (oSource, iLevel) |
+{ |
+ var |
+ _jsx_object = jsx.object, |
+ _COPY_ENUM = _jsx_object.COPY_ENUM, |
+ _COPY_ENUM_DEEP = _jsx_object.COPY_ENUM_DEEP, |
+ _COPY_INHERIT = _jsx_object.COPY_INHERIT; |
+ |
+ function createTypedObject (oOriginal) |
+ { |
+ if (oOriginal.constructor) |
+ { |
+ return jsx_object_inheritFrom(oOriginal.constructor.prototype); |
+ } |
+ |
+ return new Object(); |
+ } |
+ |
+ function createRecursiveCloner (o2, i, oSource, iLevel) |
+ { |
+ function f () |
+ { |
+ o2[i] = me(oSource[i], iLevel); |
+ } |
+ |
+ return f; |
+ } |
+ |
+ function createCopier (o2, p, oSource) |
+ { |
+ function f () |
+ { |
+ o2[p] = oSource[p]; |
+ } |
+ |
+ return f; |
+ } |
+ |
+ if (typeof oSource == "number") |
+ { |
+ var tmp = oSource; |
+ oSource = iLevel; |
+ iLevel = tmp; |
+ } |
+ |
+ if (!oSource) |
+ { |
+ oSource = _jsx_object; |
+ } |
+ |
+ if (typeof iLevel == "undefined") |
+ { |
+ iLevel = _COPY_ENUM; |
+ } |
+ |
+ var me = jsx_object_clone; |
+ |
+ if (!iLevel || (iLevel & _COPY_ENUM_DEEP)) |
+ { |
+ /* |
+ * NOTE: For objects, valueOf() only copies the object reference, |
+ * so we are creating an instance that inherits from the |
+ * original's prototype, if possible. |
+ */ |
+ var o2 = (typeof oSource == "object" && oSource) |
+ ? createTypedObject(oSource) |
+ : oSource.valueOf(); |
+ |
+ /* if "var p in ..." does not copy the array elements */ |
+ if (_jsx_object.isArray(o2)) |
+ { |
+ for (var i = oSource.length; i--;) |
+ { |
+ if (iLevel && typeof oSource[i] == "object" && null != oSource[i]) |
+ { |
+ jsx.tryThis(createRecursiveCloner(o2, i, oSource, iLevel)); |
+ } |
+ else |
+ { |
+ jsx.tryThis(createCopier(o2, i, oSource)); |
+ } |
+ } |
+ } |
+ |
+ for (var p in oSource) |
+ { |
+ if (iLevel && typeof oSource[p] == "object" && null != oSource[p]) |
+ { |
+ jsx.tryThis(createRecursiveCloner(o2, p, oSource, iLevel)); |
+ } |
+ else |
+ { |
+ jsx.tryThis(createCopier(o2, p, oSource)); |
+ } |
+ } |
+ |
+ return o2; |
+ } |
+ |
+ if (iLevel & _COPY_INHERIT) |
+ { |
+ return jsx_object_inheritFrom(oSource); |
+ } |
+ |
+ return null; |
+} |
+jsx.object.clone = jsx_object_clone; |
+ |
+/** |
+ * Adds/replaces properties of an object |
+ * |
+ * @param {Object} oTarget |
+ * Target object whose properties should be set. |
+ * @param {Object} oSource |
+ * Object specifying the properties to be set. |
+ * The name of each property serves as the name for the |
+ * property of the target object, its value as the value |
+ * of that property. |
+ * @param {Number} iFlags = 0 |
+ * Flags for the modification, see {@link #ADD_OVERWRITE} |
+ * and {@link #COPY_ENUM jsx.object.COPY_*}. |
+ * @return {Object} |
+ * The extended object |
+ */ |
+function jsx_object_extend (oTarget, oSource, iFlags) |
+{ |
+ var |
+ _jsx_object = jsx.object, |
+ _getKeys = _jsx_object.getKeys, |
+ _clone = _jsx_object.clone, |
+ _ADD_OVERWRITE = _jsx_object.ADD_OVERWRITE, |
+ _COPY_ENUM_DEEP = _jsx_object.COPY_ENUM_DEEP, |
+ _COPY_INHERIT = _jsx_object.COPY_INHERIT; |
+ |
+ if (typeof iFlags == "undefined") |
+ { |
+ iFlags = 0; |
+ } |
+ |
+ var cloneLevel = (iFlags & (_COPY_ENUM_DEEP | _COPY_INHERIT)); |
+ |
+ for (var i = 0, keys = _getKeys(oSource), len = keys.length; |
+ i < len; ++i) |
+ { |
+ var p = keys[i]; |
+ |
+ if (typeof oTarget[p] == "undefined" || (iFlags & _ADD_OVERWRITE)) |
+ { |
+ jsx.tryThis(function () { |
+ oTarget[p] = cloneLevel |
+ ? _clone(oSource[p], cloneLevel) |
+ : oSource[p]; |
+ oTarget[p]._userDefined = true; |
+ }); |
+ } |
+ } |
+ |
+ return oTarget; |
+} |
+jsx.object.setProperties = jsx_object_extend; |
+jsx.object.extend = jsx_object_extend; |
+ |
+/** |
+ * Defines getters and setters for the properties of an object, if possible. |
+ * |
+ * Uses {@link Object.prototype#__defineGetter__} and |
+ * {@link Object.prototype#__defineSetter__} (JavaScript only) as fallback. |
+ * |
+ * @param {Object} oTarget |
+ * The object for which properties getters and setters should be defined. |
+ * @param {Object} oProperties |
+ * Definition of the getters and setters for each property. Must be of |
+ * the form |
+ * <code><pre>{ |
+ * propertyName: { |
+ * get: function () {…}, |
+ * set: function (newValue) {…} |
+ * }, |
+ * … |
+ * } |
+ * </pre></code> as specified in the ECMAScript Language Specification, |
+ * Edition 5 Final, section 15.2.3.7. |
+ * @param {string} sContext (optional) |
+ * The context in which the property definition was attempted. |
+ * Included in the info message in case getters and setters could not be |
+ * defined. |
+ * @todo Depending on ES Matrix results, replace with user-defined |
+ * Object.defineProperties() if the implementation does not provide it. |
+ */ |
+function jsx_object_defineProperties (oTarget, oProperties, sContext) |
+{ |
+ function Object_defineProperties () |
+ { |
+ Object.defineProperties(oTarget, oProperties); |
+ } |
+ |
+ function Object_defineProperties_emulation_try () |
+ { |
+ for (var propertyName in oProperties) |
+ { |
+ var propertyDescriptor = oProperties[propertyName]; |
+ |
+ if (typeof propertyDescriptor.value != "undefined") |
+ { |
+ oTarget[propertyName] = propertyDescriptor.value; |
+ } |
+ |
+ /* NOTE: Allow specified values to fail */ |
+ if (typeof propertyDescriptor.get != "undefined") |
+ { |
+ oTarget.__defineGetter__(propertyName, propertyDescriptor.get); |
+ } |
+ |
+ if (typeof propertyDescriptor.set != "undefined") |
+ { |
+ oTarget.__defineSetter__(propertyName, propertyDescriptor.set); |
+ } |
+ } |
+ } |
+ |
+ function Object_defineProperties_emulation_failed () |
+ { |
+ jsx.info((sContext ? sContext + ": " : "") |
+ + "Could not define special properties." |
+ + " Please use explicit getters and setters instead."); |
+ } |
+ |
+ function Object_defineProperties_emulation () |
+ { |
+ jsx.tryThis( |
+ Object_defineProperties_emulation_try, |
+ Object_defineProperties_emulation_failed |
+ ); |
+ } |
+ |
+ jsx.tryThis( |
+ Object_defineProperties, |
+ Object_defineProperties_emulation |
+ ); |
+}; |
+jsx.object.defineProperties = jsx_object_defineProperties; |
+ |
+/** |
+ * Determines if a (non-inherited) property of an object is enumerable |
+ * @param {Object} obj (optional) |
+ * Object which property should be checked for enumerability. |
+ * @param {string} sProperty |
+ * Name of the property to check. |
+ * @return {boolean} |
+ * <code>true</code> if there is such a property; |
+ * <code>false</code> otherwise. |
+ */ |
+function jsx_object_propertyIsEnumerable (obj, sProperty) |
+{ |
+ if (arguments.length < 2 && obj) |
+ { |
+ sProperty = obj; |
+ obj = this; |
+ } |
+ |
+ if (jsx.object.isMethod(obj, "propertyIsEnumerable")) |
+ { |
+ return obj.propertyIsEnumerable(sProperty); |
+ } |
+ |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ for (var propertyName in obj) |
+ { |
+ if (propertyName == name && _hasOwnProperty(obj, propertyName)) |
+ { |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+} |
+jsx.object._propertyIsEnumerable = jsx_object_propertyIsEnumerable; |
+ |
+/** |
+ * Returns the name of an unused property for an object. |
+ * |
+ * @function |
+ * @param {Object} obj |
+ * @param {number} iLength |
+ * Maximum property name length up to which an unused name |
+ * is searched. The default is 256. |
+ * @return {string} |
+ * The name of a non-existing property of <code>o</code> if |
+ * {@link Object#prototype.hasOwnProperty()} is supported, or |
+ * the name of a property with value <code>undefined</code> |
+ * if it is not supported; the empty string |
+ * if there is no such property. |
+ */ |
+function jsx_object_findNewProperty (obj, iLength) |
+{ |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ if (!obj) |
+ { |
+ obj = this; |
+ } |
+ |
+ if (arguments.length < 2) |
+ { |
+ iLength = 256; |
+ } |
+ else |
+ { |
+ iLength = parseInt(iLength, 10); |
+ } |
+ |
+ var newName = ""; |
+ |
+ while (newName.length < iLength) |
+ { |
+ for (var i = "a".charCodeAt(0), max = "z".charCodeAt(0); i <= max; ++i) |
+ { |
+ var ch = String.fromCharCode(i); |
+ if (!_hasOwnProperty(obj, newName + ch + "_")) |
+ { |
+ return newName + ch + "_"; |
+ } |
+ } |
+ |
+ newName += "a"; |
+ } |
+ |
+ return ""; |
+}; |
+jsx.object.findNewProperty = jsx_object_findNewProperty; |
+ |
+/** |
+ * Determines if an object, or the objects it refers to, |
+ * has an enumerable property with a certain value |
+ * |
+ * @param {Object} obj |
+ * @param needle |
+ * The value to be searched for |
+ * @param {Object} params |
+ * Search parameters. The following properties are supported: |
+ * <table> |
+ * <thead> |
+ * <tr> |
+ * <th>Property</th> |
+ * <th>Meaning</th> |
+ * </tr> |
+ * </thead> |
+ * <tbody> |
+ * <tr> |
+ * <th><code><var>exclude</var> : Array</code></th> |
+ * <td><code>Array</code> containing the names of the |
+ * properties that should not be searched</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code><var>recursive</var> : boolean</code></th> |
+ * <td>If a true-value, search recursively.</td> |
+ * </tr> |
+ * <tr> |
+ * <th><code><var>strict</var> : boolean</code></th> |
+ * <td>If a true-value, perform a strict comparison |
+ * without type conversion.</td> |
+ * </tr> |
+ * </tbody> |
+ * </table> |
+ */ |
+jsx.object.hasPropertyValue = |
+ function jsx_object_hasPropertyValue (obj, needle, params) { |
+ for (var property in obj) |
+ { |
+ if (params && params.exclude && params.exclude.indexOf(property) > -1) |
+ { |
+ continue; |
+ } |
+ |
+ var propertyValue = obj[property]; |
+ if (params && params.recursive) |
+ { |
+ if (typeof propertyValue == "object" && propertyValue !== null) |
+ { |
+ if (jsx_object_hasPropertyValue(propertyValue, needle, params)) |
+ { |
+ return true; |
+ } |
+ } |
+ } |
+ |
+ if (params && params.strict) |
+ { |
+ if (propertyValue === needle) |
+ { |
+ return true; |
+ } |
+ } |
+ else |
+ { |
+ /* Switch operands because of JScript quirk */ |
+ if (needle == propertyValue) |
+ { |
+ return true; |
+ } |
+ } |
+ } |
+ |
+ return false; |
+}; |
+ |
+/** |
+ * Clears the handler for the proprietary <code>error</code> event. |
+ * |
+ * NOTE: This method has previously been provided by {@link debug.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @return {boolean} <code>true</code> |
+ */ |
+/* |
+ * NOTE: Initialization must come before the initialization of |
+ * setErrorHandler() as it is used in a closure there, |
+ * see Message-ID <2152411.FhMhkbZ0Pk@PointedEars.de> |
+ */ |
+jsx.clearErrorHandler = function () { |
+ if (typeof window != "undefined") |
+ { |
+ /* |
+ * debug.js 0.99.5.2006041101 BUGFIX: |
+ * onerror is defined as a property of window, not of the Global Object |
+ */ |
+ window.onerror = null; |
+ } |
+ |
+ return true; |
+}; |
+ |
+/** |
+ * Sets the handler for the proprietary <code>error</code> event. |
+ * |
+ * NOTE: This method has previously been provided by {@link debug.js}; |
+ * and {@link types.js}; optimizations in code reuse moved it here. |
+ * |
+ * @function |
+ */ |
+jsx.setErrorHandler = (function () { |
+ var |
+ jsx_object = jsx.object, |
+ jsx_clearErrorHandler = jsx.clearErrorHandler; |
+ |
+ /** |
+ * @param {Callable} fHandler |
+ * @return {boolean} |
+ * <code>true</code> if the error handler could be assigned to |
+ * successfully, <code>false</code> otherwise. Note that one reason |
+ * for failure can be that an event handler is no longer supported |
+ * by the UA's DOM due to efforts towards adherence to Web standards. |
+ */ |
+ return function (fHandler) { |
+ /* |
+ * NOTE: There is no deadlock here because even if `fHandler' is a string, |
+ * `isMethod(fHandler)' will call `setErrorHandler()' without arguments; |
+ * so fHandler in that call will be `undefined' and `setErrorHandler()' |
+ * is not called again. |
+ */ |
+ if (!jsx_object.isMethod(fHandler)) |
+ { |
+ fHandler = jsx_clearErrorHandler; |
+ } |
+ |
+ if (typeof assertFalse == "function") |
+ { |
+ assertFalse(typeof fHandler == "undefined", false, |
+ "jsx.setErrorHandler(fHandler)"); |
+ } |
+ |
+ if (typeof window != "undefined" |
+ && typeof fHandler != "undefined") |
+ { |
+ /* |
+ * debug.js 0.99.5.2006041101 BUGFIX: |
+ * onerror is defined as a property of window, not of the Global Object |
+ */ |
+ window.onerror = fHandler; |
+ } |
+ |
+ return (typeof window.onerror != "undefined" |
+ && window.onerror == fHandler); |
+ }; |
+}()); |
+ |
+/** |
+ * Wrapper for a safer <code>try</code>...<code>catch</code>. |
+ * |
+ * Attempts to evaluate a value as a <i>StatementList</i>, and attempts |
+ * to evaluate another value as a <i>StatementList</i> if an exception |
+ * is thrown in the process. The following words may be used within: |
+ * |
+ * <table> |
+ * <thead> |
+ * <tr> |
+ * <th align="left">Word</th> |
+ * <th align="left">Refers to</th> |
+ * </tr> |
+ * </thead> |
+ * <tbody> |
+ * <tr valign="top"> |
+ * <td><code>statements</code><br> |
+ * <code>errorHandlers</code></td> |
+ * <td>the passed values</td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <td>code</td> |
+ * <td>the entire constructed <code>try</code>...<code>catch</code> |
+ * string that is evaluated as a <i>Program</i></td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <td>e</td> |
+ * <td>Only within <var>errorHandlers</var>: |
+ * the value thrown in case of an exception</td> |
+ * </tr> |
+ * </tbody> |
+ * </table> |
+ * |
+ * NOTE: This method has previously been provided by {@link exception.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @function |
+ * @param {Function|string|any} statements |
+ * Value to be evaluated as a <i>StatementList</i>. |
+ * Called if a <code>Function</code>, converted |
+ * to string if not a string, and used as-is otherwise. |
+ * For compatibility, the <code>undefined</code> value |
+ * is evaluated like the empty string. |
+ * @param {Function|string|any} errorHandlers |
+ * Value to be evaluated as a <i>StatementList</i> in case of an |
+ * exception. Called if a <code>Function</code>, |
+ * converted to string if not a string, and used as-is otherwise. |
+ * For compatibility, the <code>undefined</code> value |
+ * is evaluated like the empty string. |
+ * @return {any} |
+ * The result of <code>statements</code>, or the result |
+ * of <code>errorHandlers</code> if an error occurred. |
+ * @author |
+ * Copyright (c) 2008 |
+ * Thomas 'PointedEars' Lahn <js@PointedEars.de> |
+ * Distributed under the GNU GPL v3 and later. |
+ * @partof JSX:object.js |
+ */ |
+jsx.tryThis = |
+// (function () { |
+// /** |
+// * @param s Value to be stringified |
+// * @param {String} sCall |
+// * CallStatement that should be used instead of the value |
+// * @return {string} Stringified version of <code>s</code> |
+// */ |
+// function stringify(s, sCall) |
+// { |
+// if (typeof s == "function") |
+// { |
+// s = sCall; |
+// } |
+// else if (typeof s == "undefined") |
+// { |
+// s = ""; |
+// } |
+// |
+// return s; |
+// } |
+ |
+ /*return*/ function (statements, errorHandlers) { |
+ /* |
+ * Replaced because eval() performs magnitudes worse; |
+ * TODO: Backwards compatibility (branching for NN4 & friends?) |
+ */ |
+// var sStatements = stringify(statements, "statements();"); |
+// var sErrorHandlers = stringify(errorHandlers, "errorHandlers(e);"); |
+// |
+// var code = 'try {\n ' + sStatements + '\n}\n' |
+// + 'catch (e) {\n ' + sErrorHandlers + '\n}'; |
+// |
+// return eval(code); |
+ var t = typeof statements; |
+ try |
+ { |
+ if (t == "function") |
+ { |
+ return statements(); |
+ } |
+ |
+ return eval(statements); |
+ } |
+ catch (e) |
+ { |
+ t = typeof errorHandlers; |
+ if (t == "function") |
+ { |
+ return errorHandlers(e); |
+ } |
+ |
+ return eval(errorHandlers); |
+ } |
+ }; |
+//}()); |
+ |
+/** |
+ * Throws an exception, including an execution context hint if provided, |
+ * followed by an error message. |
+ * |
+ * NOTE: This method has previously been provided by {@link exception.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @function |
+ * @author |
+ * Copyright (c) 2008 Thomas 'PointedEars' Lahn <cljs@PointedEars.de>. |
+ * Distributed under the GNU GPL v3 and later. |
+ * @partof JSX:object.js |
+ */ |
+jsx.throwThis = (function () { |
+ var |
+ jsx_global = jsx.global, |
+ jsx_object = jsx.object, |
+ _addslashes = function (e) { |
+ return (typeof e == "string") |
+ ? '"' + e.replace(/["'\\]/g, "\\$&").replace(/\r?\n|\r/g, "\\n") + '"' |
+ : (e && typeof e.map == "function" ? "[" + e + "]" : e); |
+ }; |
+ |
+ /** |
+ * @param {string|Function|Error} errorType |
+ * Expression for the constructor of the error type, or a reference |
+ * to an object inheriting from <code>Error.prototype</code>. |
+ * Use a false-value (e.g., <code>""</code> or <code>null</code>) |
+ * to throw an unqualified exception. |
+ * @param {string|Array} message |
+ * Error message to be displayed. If an <code>Array</code>, |
+ * it is passed as argument list to the constructor for the error type |
+ * @param {Callable|string} context |
+ * Optional callable object to specify the context |
+ * where the exception occurred. |
+ */ |
+ return function (errorType, message, context) { |
+ var sErrorType = errorType; |
+ var isError = false; |
+ |
+ if (Error.prototype.isPrototypeOf(errorType)) |
+ { |
+ isError = true; |
+ sErrorType = "errorType"; |
+ } |
+ else if (jsx_object.isMethod(errorType)) |
+ { |
+ sErrorType = "new errorType"; |
+ } |
+ else if (typeof errorType == "string") |
+ { |
+ sErrorType = "new " + errorType; |
+ } |
+ |
+ var sContext = ""; |
+ if (jsx_object.isMethod(jsx_global, "Error")) |
+ { |
+ var stack = (new Error()).stack; |
+ if (stack) |
+ { |
+ sContext = "\n\n" + stack; |
+ } |
+ } |
+ |
+ /* DEBUG: set breakpoint here */ |
+ if (!sContext) |
+ { |
+ if (jsx_object.isMethod(context)) |
+ { |
+ sContext = (String(context).match(/^\s*(function.+\))/) |
+ || [, null])[1]; |
+ sContext = sContext ? sContext + ': ' : ''; |
+ } |
+ } |
+ |
+ /* Array for exception constructor's argument list */ |
+ if (jsx_object.isMethod(message, "map")) |
+ { |
+ message = message.map(_addslashes); |
+ } |
+ else |
+ { |
+ message = (message || "") + (sContext || ""); |
+ message = _addslashes(message); |
+ } |
+ |
+ /* DEBUG */ |
+ var throwStmt = 'throw ' + (sErrorType ? sErrorType : '') |
+ + (isError ? '' : '(' + (message || "") + ')') + ';'; |
+ |
+ eval(throwStmt); |
+ }; |
+}()); |
+ |
+/** |
+ * Rethrows arbitrary exceptions |
+ * |
+ * @param {Error} exception |
+ */ |
+jsx.rethrowThis = function (exception) { |
+ eval("throw exception"); |
+}; |
+ |
+/** |
+ * Lets one object inherit from another |
+ * |
+ * @function |
+ */ |
+jsx.object.inheritFrom = (function () { |
+ var |
+ _jsx = jsx, |
+ _global = _jsx.global, |
+ _isNativeMethod = _jsx.object.isNativeMethod, |
+ Dummy = function () {}; |
+ |
+ /** |
+ * @param {Object} obj = Object.prototype |
+ * Object from which to inherit. The default is |
+ * <code>Object.prototype</code>. |
+ * @return {Object} |
+ * Inheriting (child) object |
+ */ |
+ return function (obj) { |
+ if (typeof obj == "object" && obj == null) |
+ { |
+ if (_isNativeMethod(_global.Object, "create") |
+ && !Object.create._emulated) |
+ { |
+ return Object.create(null); |
+ } |
+ |
+ var result = new Object(); |
+ result.__proto__ = null; |
+ return result; |
+ } |
+ |
+ Dummy.prototype = (typeof obj == "undefined") |
+ ? Object.prototype |
+ : (obj || null); |
+ return new Dummy(); |
+ }; |
+}()); |
+ |
+/** |
+ * Returns a new object that can serve as data container. |
+ * |
+ * Returns a new object that, if supported, does not inherit or |
+ * have any properties. This is accomplished by either cutting |
+ * off its existing prototype chain or not creating one for it |
+ * in the first place. |
+ * |
+ * @function |
+ * @return {Object} |
+ * @see Object.create |
+ */ |
+jsx.object.getDataObject = (function () { |
+ var _inheritFrom = jsx.object.inheritFrom; |
+ |
+ return function () { |
+ return _inheritFrom(null); |
+ }; |
+}()); |
+ |
+if (jsx.options.emulate) |
+{ |
+ if (!jsx.object.isNativeMethod(jsx.tryThis("Object"), "create")) |
+ { |
+ if (!jsx.object.isNativeMethod(jsx.tryThis("Object"), "defineProperties")) |
+ { |
+ if (!jsx.object.isNativeMethod(jsx.tryThis("Object"), "getOwnPropertyNames")) |
+ { |
+ Object.getOwnPropertyNames = (function () { |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ return function (o) { |
+ var names = []; |
+ |
+ for (var p in o) |
+ { |
+ if (_hasOwnProperty(o, p)) |
+ { |
+ names.push(p); |
+ } |
+ } |
+ |
+ return names; |
+ }; |
+ }()); |
+ } |
+ |
+ /** |
+ * Defines a property of an object. |
+ * |
+ * Emulation of the Object.defineProperty() method from ES 5.1, |
+ * section 15.2.3.6. |
+ * |
+ * @function |
+ */ |
+ Object.defineProperty = (function () { |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ function _toPropertyDescriptor(obj) |
+ { |
+ if (!/^(object|function)$/i.test(typeof obj) || !obj) |
+ { |
+ jsx.throwThis("TypeError", "Object expected"); |
+ } |
+ |
+ var desc = new Object(); |
+ |
+ if (_hasOwnProperty(obj, "enumerable")) |
+ { |
+ desc.enumerable = !!obj.enumerable; |
+ } |
+ |
+ if (_hasOwnProperty(obj, "configurable")) |
+ { |
+ desc.configurable = !!obj.configurable; |
+ } |
+ |
+ var hasValue = obj.hasOwnProperty("value"); |
+ if (hasValue) |
+ { |
+ desc.value = obj.value; |
+ } |
+ |
+ var hasWritable = _hasOwnProperty(obj, "writable"); |
+ if (hasWritable) |
+ { |
+ desc.writable = !!obj.writable; |
+ } |
+ |
+ var hasGetter = _hasOwnProperty(obj, "get"); |
+ if (hasGetter) |
+ { |
+ if (typeof obj.get != "function") |
+ { |
+ return jsx.throwThis("TypeError", "Function expected for getter"); |
+ } |
+ |
+ desc.get = obj.get; |
+ } |
+ |
+ var hasSetter = _hasOwnProperty(obj, "set"); |
+ if (hasSetter) |
+ { |
+ if (typeof obj.set != "function") |
+ { |
+ return jsx.throwThis("TypeError", "Function expected for setter"); |
+ } |
+ |
+ desc.set = obj.set; |
+ } |
+ |
+ if ((hasGetter || hasSetter) && (hasValue || hasWritable)) |
+ { |
+ return jsx.throwThis("TypeError", "Cannot define getter/setter and value/writable"); |
+ } |
+ |
+ return desc; |
+ } |
+ |
+ function _defineOwnProperty (obj, propertyName, descriptor, _throw) |
+ { |
+ function _isAccessorDescriptor (desc) |
+ { |
+ if (typeof desc == "undefined") |
+ { |
+ return false; |
+ } |
+ |
+ return _hasOwnProperty(desc, "get") || _hasOwnProperty(desc, "set"); |
+ } |
+ |
+ function _isDataDescriptor (desc) |
+ { |
+ if (typeof desc == "undefined") |
+ { |
+ return false; |
+ } |
+ |
+ return desc.hasOwnProperty("value") || _hasOwnProperty(desc, "writable"); |
+ } |
+ |
+ function _isGenericDescriptor (desc) |
+ { |
+ if (typeof desc == "undefined") |
+ { |
+ return false; |
+ } |
+ |
+ return !_isAccessorDescriptor(desc) && !_isDataDescriptor(desc); |
+ } |
+ |
+ // var current = obj.hasOwnProperty(propertyName); |
+ // var extensible = obj[propertyName].[[Extensible]] |
+ |
+ if (_isGenericDescriptor(descriptor) || _isDataDescriptor(descriptor)) |
+ { |
+ var value = descriptor.value; |
+ obj[propertyName] = value; |
+ |
+ if (!descriptor.writable) |
+ { |
+ /* NOTE: Need getter because __defineSetter__() undefines value */ |
+ obj.__defineGetter__(propertyName, function () { |
+ return value; |
+ }); |
+ |
+ obj.__defineSetter__(propertyName, function () {}); |
+ } |
+ } |
+ else |
+ { |
+ /* accessor property descriptor */ |
+ if (descriptor.get) |
+ { |
+ obj.__defineGetter__(propertyName, descriptor.get); |
+ } |
+ |
+ if (descriptor.set) |
+ { |
+ obj.__defineSetter__(propertyName, descriptor.set); |
+ } |
+ } |
+ |
+ return false; |
+ } |
+ |
+ /** |
+ * @param {Object} o |
+ * @param {Object} descriptor (optional) |
+ * Property descriptor, a reference to an object that defines |
+ * the attributes of the property. Supported properties of |
+ * that defining object include <code>value</code> only |
+ * at this time. |
+ * @return {Object} Reference to the object |
+ */ |
+ return function (o, propertyName, descriptor) { |
+ if (!/^(object|function)$/.test(typeof o) || !o) |
+ { |
+ return jsx.throwThis("TypeError", "Object expected"); |
+ } |
+ |
+ var name = String(propertyName); |
+ var desc = _toPropertyDescriptor(descriptor); |
+ _defineOwnProperty(o, name, desc, true); |
+ |
+ return o; |
+ }; |
+ }()); |
+ |
+ /** |
+ * Defines the properties of an object. |
+ * |
+ * Emulation of the Object.defineProperties() method from ES 5.1, |
+ * section 15.2.3.7. |
+ * |
+ * @param {Object} o |
+ * @param {Object} descriptor (optional) |
+ * Properties descriptor, where each own property name |
+ * is a property name of the new object, and each corresponding |
+ * property value is a reference to an object that defines the |
+ * attributes of that property. Supported properties of |
+ * that defining object include <code>value</code> only |
+ * at this time. |
+ * @return {Object} Reference to the object |
+ */ |
+ Object.defineProperties = function (o, descriptor) { |
+ var properties = Object.getOwnPropertyNames(descriptor); |
+ for (var i = 0, len = properties.length; i < len; ++i) |
+ { |
+ var propertyName = properties[i]; |
+ Object.defineProperty(o, propertyName, descriptor[propertyName]); |
+ } |
+ |
+ return o; |
+ }; |
+ } |
+ |
+ /** |
+ * Creates a new object and initializes its properties. |
+ * |
+ * Emulation of the Object.create() method from ES 5.1, |
+ * section 15.2.3.5. |
+ * |
+ * @param {Object|Null} prototype |
+ * @param {Object} descriptor (optional) |
+ * Properties descriptor, where each own property name |
+ * is a property name of the new object, and each corresponding |
+ * property value is a reference to an object that defines the |
+ * attributes of that property. Supported properties of |
+ * that defining object include <code>value</code> only |
+ * at this time. |
+ * @return {Object} Reference to the new object |
+ */ |
+ Object.create = function (prototype, descriptor) { |
+ var o = jsx.object.inheritFrom(prototype); |
+ |
+ if (typeof descriptor != "undefined") |
+ { |
+ Object.defineProperties(o, descriptor); |
+ } |
+ |
+ return o; |
+ }; |
+ Object.create._emulated = true; |
+ } |
+ |
+ if (!jsx.object.isNativeMethod(jsx.tryThis("Object"), "keys")) |
+ { |
+ /** |
+ * @param {Object} obj |
+ */ |
+ Object.keys = function (obj) { |
+ return jsx.object.getKeys(obj); |
+ }; |
+ Object.keys._emulated = true; |
+ } |
+} |
+ |
+/** |
+ * Returns a feature of an object |
+ * |
+ * @param {Object} obj |
+ * Object which provides the feature |
+ * @params {string} |
+ * Property names on the feature path, including the property |
+ * for the feature itself. For example, use |
+ * <code>jsx.object.getFeature("foo", "bar", "baz")</code> for |
+ * safe access to <code>foo.bar.baz</code>. |
+ * @return {any} |
+ * <code>undefined</code> if <var>obj</var> does not have such |
+ * a feature. Note that features whose value can be |
+ * <code>undefined</code> cannot be detected with this method. |
+ */ |
+jsx.object.getFeature = function (obj) { |
+ for (var i = 1, len = arguments.length; i < len; i++) |
+ { |
+ var arg = arguments[i]; |
+ if (typeof obj != "undefined" && typeof obj[arg] != "undefined" && obj[arg]) |
+ { |
+ obj = obj[arg]; |
+ } |
+ else |
+ { |
+ return void 0; |
+ } |
+ } |
+ |
+ return obj; |
+}; |
+ |
+/** |
+ * Emulates the <code>instanceof</code> operator (JavaScript 1.5) compatible to JavaScript 1.1 |
+ * for <strong>one</strong> inheritance level. |
+ * |
+ * Example: |
+ * <pre><code> |
+ * var o = new Object(); |
+ * o instanceof Object; // yields `true' |
+ * |
+ * function Foo() |
+ * { |
+ * } |
+ * var o = new Foo(); |
+ * o instanceof Object; // yields `true' |
+ * o instanceof Foo; // yields `true' also |
+ * isInstanceOf(o, Object); // yields `false' |
+ * isInstanceOf(o, Foo); // yields `true' |
+ * </code></pre> |
+ * |
+ * NOTE: This method has previously been provided by {@link types.js}; |
+ * optimizations in code reuse moved it here. |
+ * |
+ * @author (C) 2003, 2011, 2013 Thomas Lahn <js@PointedEars.de> |
+ * @param {Object} obj |
+ * Expression to be determined a <var>Prototype</var> object. |
+ * @param {Function} Constructor |
+ * Object to be determined the constructor of a. |
+ * @return {boolean} |
+ * <code>true</code> if <code>obj</code> is an object derived |
+ * from <var>Prototype</var>, <code>false</code> otherwise. |
+ */ |
+jsx.object.isInstanceOf = //(function () { |
+// var jsx_object = jsx.object; |
+// |
+// return |
+ function (obj, Constructor) { |
+ return !!(obj && Constructor |
+ && typeof obj.constructor != "undefined" |
+ && obj.constructor == Constructor |
+ |
+ /* |
+ * For a built-in type T, T.prototype often has the same |
+ * [[Class]] like instances (exception: RegExp); |
+ * BUT error-prone for native user-defined objects (Color "==" KeyValue)! |
+ */ |
+// || jsx_object.getClass(obj) == jsx_object.getClass(Prototype.prototype) |
+ ); |
+ }; |
+//}()); |
+ |
+/** |
+ * Returns the name of a function |
+ * |
+ * @param {Function|String} aFunction |
+ * @return {string} |
+ * The name of a function if it has one; the empty string otherwise. |
+ */ |
+jsx.object.getFunctionName = function (aFunction) { |
+ /* Return the empty string for null or undefined */ |
+ return (aFunction != null |
+ && typeof aFunction.name != "undefined" && aFunction.name) |
+ || (String(aFunction).match(/\s*function\s+([A-Za-z_]\w*)/) || [, ""])[1]; |
+}; |
+ |
+/** |
+ * Returns minimum documentation for a function |
+ * |
+ * @param {Function|String} aFunction |
+ * @return {string} |
+ */ |
+jsx.object.getDoc = function (aFunction) { |
+ return (String(aFunction).match( |
+ /^\s*(function(\s+[A-Za-z_]\w*)?\s*\([^\)]*\))/) || [, ""])[1]; |
+}; |
+ |
+/** |
+ * Gets the stack trace of the calling execution context. |
+ * |
+ * Based on getStackTrace() from jsUnit 2.2alpha of 2006-03-24. |
+ * |
+ * @return {string} |
+ * The stack trace of the calling execution context, if available. |
+ */ |
+jsx.getStackTrace = function () { |
+ /** |
+ * @private |
+ * @param excp |
+ */ |
+ function parseErrorStack(excp) |
+ { |
+ var stack = []; |
+ |
+ if (excp && excp.stack) |
+ { |
+ var stacklist = excp.stack.split('\n'); |
+ |
+// for (var i = 0; i < stacklist.length - 1; i++) |
+// { |
+// var framedata = stacklist[i]; |
+// |
+// var name = framedata.match(/^\s*(at\s+)?(\w*)/)[2]; |
+// if (!name) |
+// { |
+// name = 'anonymous'; |
+// } |
+// |
+// stack[stack.length] = name; |
+// } |
+ stack = stacklist; |
+ |
+ /* remove top level anonymous functions to match JScript */ |
+// while (stack.length && stack[stack.length - 1] == 'anonymous') |
+// { |
+// stack.length = stack.length - 1; |
+// } |
+ } |
+ |
+ return stack; |
+ } |
+ |
+ var result = ''; |
+ |
+ if (typeof arguments.caller != 'undefined') |
+ { |
+ /* JScript and older JavaScript */ |
+ for (var a = arguments.caller; a != null; a = a.caller) |
+ { |
+ result += '> ' + (jsx.object.getFunctionName(a.callee) || "anonymous") |
+ + '\n'; |
+ if (a.caller == a) |
+ { |
+ result += '*'; |
+ break; |
+ } |
+ } |
+ } |
+ else |
+ { |
+ /* other */ |
+ if (typeof Error != "function") |
+ { |
+ return result; |
+ } |
+ |
+ var stack = parseErrorStack(new Error()); |
+ result = stack.slice(2).join("\n"); |
+// for (var i = 1; i < stack.length; i++) |
+// { |
+// result += '> ' + stack[i] + '\n'; |
+// } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Returns the value of an object's internal <code>[[Class]]</code> |
+ * property. |
+ * |
+ * Calls the <code>Object.prototype.toString()</code> method on |
+ * the object and returns the result of matching against |
+ * the specified return value, which includes the value of |
+ * the object's internal <code>[[Class]]</code> property. Although |
+ * implementations use prototype-based inheritance, the property |
+ * value is useful for determining the type of an object regardless |
+ * of the current value of its <code>constructor</code> property. |
+ * For example, that makes it possible to recognize <code>Array</code> |
+ * instances independent of the global context in which they were |
+ * constructed. |
+ * |
+ * @function |
+ * @return {string|Undefined} |
+ * The value of an object's internal [[Class]] property, or |
+ * <code>undefined</code> if the property value cannot be determined. |
+ */ |
+jsx.object.getClass = (function () { |
+ var _toString = ({}).toString; |
+ |
+ /** |
+ * @param obj |
+ */ |
+ return function (obj) { |
+ return (_toString.call(obj) |
+ .match(/^\s*\[object\s+(\S+)\s*\]\s*$/) || [, ])[1]; |
+ }; |
+}()); |
+ |
+/** |
+ * Retrieves the value of a property of an object |
+ * |
+ * @param {Object} obj |
+ * @param {string} sProperty |
+ * @param aDefault |
+ * @return {any} |
+ * @throw |
+ * {@link jsx.object#PropertyError} if the property |
+ * does not exist or has the <code>undefined</code> value, and |
+ * <var>aDefault</var> was not provided |
+ */ |
+jsx.object.getProperty = function (obj, sProperty, aDefault) { |
+ if (typeof obj[sProperty] != "undefined") |
+ { |
+ return obj[sProperty]; |
+ } |
+ |
+ /* default value not passed */ |
+ if (arguments.length < 3) |
+ { |
+ return jsx.throwThis("jsx.object.PropertyError", sProperty); |
+ } |
+ |
+ return aDefault; |
+}; |
+ |
+/** |
+ * Determines if a value refers to an object. |
+ * |
+ * <p>Returns <code>true</code> if the value is a reference |
+ * to an object; <code>false</code> otherwise.</p> |
+ * |
+ * <p>An value "is an object" if it is a function or |
+ * <code>typeof "object"</code> but not <code>null</code>. |
+ * |
+ * @return {boolean} |
+ */ |
+jsx.object.isObject = function (a) { |
+ var t = typeof a; |
+ return t == "function" || t == "object" && a !== null; |
+}; |
+ |
+/** |
+ * Determines if a value refers to an {@link Array}. |
+ * <p> |
+ * Returns <code>true</code> if the value is a reference to an object |
+ * whose <code>[[Class]]</code> internal property is <code>"Array"</code>; |
+ * <code>false</code> otherwise. |
+ * </p> |
+ * |
+ * @function |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.3.2 |
+ */ |
+jsx.object.isArray = (function () { |
+ var _jsx = jsx; |
+ var _global = _jsx.global; |
+ var _jsx_object = jsx.object; |
+ var _getClass = _jsx_object.getClass; |
+ var _isNativeMethod = _jsx_object.isNativeMethod; |
+ |
+ /** |
+ * @param a |
+ * Potential <code>Array</code> |
+ * @return {boolean} |
+ */ |
+ return function (a) { |
+ if (_isNativeMethod(_global.Array, "isArray") |
+ && !Array.isArray._emulated) |
+ { |
+ return Array.isArray(a); |
+ } |
+ |
+ return (_getClass(a) === "Array"); |
+ }; |
+}()); |
+ |
+/** |
+ * Returns the absolute path for a URI-reference |
+ * |
+ * @param {string} relativePath |
+ * @param {string} basePath |
+ * @return {string} |
+ */ |
+jsx.absPath = function (relativePath, basePath) { |
+ var uri = (basePath || document.URL).replace(/[?#].*$/, "").split("/"); |
+ relativePath = relativePath.split("/"); |
+ |
+ if (uri[uri.length - 1] != "") |
+ { |
+ uri.pop(); |
+ } |
+ |
+ for (var i = 0, len = relativePath.length; i < len; ++i) |
+ { |
+ var component = relativePath[i]; |
+ if (component == "..") |
+ { |
+ uri.pop(); |
+ } |
+ else if (component != ".") |
+ { |
+ uri.push(component); |
+ } |
+ } |
+ |
+ return uri.join("/"); |
+}; |
+ |
+/** |
+ * Imports object properties into the global namespace. |
+ * |
+ * Convenience method, also for backwards compatibility to versions before |
+ * strict namespacing. Does not load script files dynamically; use |
+ * jsx.importFrom() for that and include jsx.net.http. |
+ * |
+ * @function |
+ * @return {boolean} |
+ * <code>false</code> if <var>properties</var> is provided and not |
+ * all properties could be imported; <code>true</code> otherwise. |
+ * @throws TypeError, if <var>obj</var> is not an iterable object |
+ */ |
+jsx._import = (function () { |
+ var _jsx_object = jsx.object; |
+ var _getKeys = _jsx_object.getKeys; |
+ var _hasOwnProperty = _jsx_object._hasOwnProperty; |
+ var _isArray = _jsx_object.isArray; |
+ |
+ /** |
+ * @param {Object} obj |
+ * @param {string|Array|Null} properties (optional) |
+ * Name or list of names of properties to import. If not |
+ * provided or <code>null</code>, all own enumerable properties |
+ * of <var>obj</var> are imported. |
+ * @param {string} objAlias (optional) |
+ * The alias property on the Global object that should be used |
+ * instead of the Global Object. Helps to avoid spoiling |
+ * the global namespace. |
+ * @param {string|Array} propertyAliases (optional) |
+ * The alias(es) that should be used for each property, in order, |
+ * that is specified in <var>properties</var>. Helps to avoid |
+ * overwriting property values. |
+ * There must be specified as many aliases as properties were |
+ * specified. Ignored if <var>properties</var> is |
+ * <code>null</code>. |
+ */ |
+ return function (obj, properties, objAlias, propertyAliases) { |
+ if (!obj) |
+ { |
+ return jsx.throwThis("TypeError", |
+ "expected iterable object, saw " + obj + " : " + (obj === null ? "Null" : typeof obj), |
+ "jsx._import"); |
+ } |
+ |
+ var result = true; |
+ |
+ var root = jsx.global; |
+ if (objAlias != null) |
+ { |
+ root[objAlias] = {}; |
+ root = root[objAlias]; |
+ } |
+ |
+ var propertiesArg = properties; |
+ if (properties == null) |
+ { |
+ properties = _getKeys(obj); |
+ } |
+ else if (!_isArray(properties)) |
+ { |
+ properties = [properties]; |
+ } |
+ |
+ var len = properties.length; |
+ if (propertiesArg != null && propertyAliases != null) |
+ { |
+ if (!_isArray(propertyAliases)) |
+ { |
+ propertyAliases = [propertyAliases]; |
+ } |
+ |
+ if (len != propertyAliases.length) |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Different number of property names and aliases", |
+ len, propertyAliases.length], |
+ "jsx._import"); |
+ } |
+ } |
+ |
+ for (var i = 0; i < len; ++i) |
+ { |
+ var sourceProperty = properties[i]; |
+ if (propertiesArg == null || _hasOwnProperty(obj, sourceProperty)) |
+ { |
+ var targetProperty = sourceProperty; |
+ if (propertiesArg != null && propertyAliases != null) |
+ { |
+ targetProperty = propertyAliases[i]; |
+ } |
+ |
+ root[targetProperty] = obj[sourceProperty]; |
+ } |
+ else |
+ { |
+ result = false; |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+}()); |
+ |
+/* ES 5: Reserved words may be used in MemberExpression */ |
+jsx["import"] = jsx._import; |
+ |
+/** |
+ * Imports a script, and optionally the object it defines, or some of their |
+ * properties, into the global namespace. |
+ * |
+ * NOTE: Issues a synchronously-handled HTTP request which blocks all script |
+ * execution until a response is received or the request times out. |
+ * Can therefore not be used to import jsx.net.http. |
+ * |
+ * @function |
+ * @requires jsx.net.http#Request |
+ * @return {boolean} |
+ * <code>true</code> if the script could be successfully <em>loaded</em> |
+ * (not: included). |
+ */ |
+jsx.importFrom = (function () { |
+ /* Imports */ |
+ var _import = jsx._import; |
+ var Request; |
+ |
+ /** |
+ * @param {string} uri |
+ * URI of the script to be imported |
+ * @param {Object} obj |
+ * Object from the script to be imported (optional) |
+ * @param {Array} properties (optional) |
+ * Properties of the object from the script to be imported (optional). |
+ * See {@link jsx#_import}. |
+ * @param {string} objAlias (optional) |
+ * See {@link jsx#_import}. |
+ * @param {Array} propertyAliases (optional) |
+ * See {@link jsx#_import}. |
+ */ |
+ return function jsx_importFrom (uri, obj, properties, objAlias, propertyAliases) { |
+ /* One-time import */ |
+ if (!Request) |
+ { |
+ Request = jsx.net.http.Request; |
+ } |
+ |
+ jsx_importFrom.lastImport = uri; |
+ var req = new Request(uri, "GET", false, function (response) { |
+ /* |
+ * NOTE: Passing response.responseText to eval() is not ES5-compatible; |
+ * conforming implementations create a new execution context with |
+ * EMPTY scope chain. |
+ */ |
+ var script = document.createElement("script"); |
+ script.type = "text/javascript"; |
+ |
+ if (typeof script.text == "undefined") |
+ { |
+ script.appendChild(document.createTextNode(response.responseText)); |
+ } |
+ else |
+ { |
+ script.text = response.responseText; |
+ } |
+ |
+ /* NOTE: document.head was introduced with HTML5 WD */ |
+ (document.head || document.getElementsByTagName("head")[0]).appendChild(script); |
+ |
+ if (arguments.length > 1) |
+ { |
+ return _import(obj, properties, objAlias, propertyAliases); |
+ } |
+ |
+ return true; |
+ }); |
+ |
+ return req.send(); |
+ }; |
+}()); |
+ |
+/** |
+ * Imports once an object or some of its properties |
+ * from a script resource into the global namespace. |
+ * |
+ * @function |
+ * @return {boolean} |
+ * <code>true</code> if the script specified by <var>uri</var> |
+ * has already been included; <code>false</code> otherwise. |
+ * @see jsx#importFrom |
+ */ |
+jsx.importOnce = (function () { |
+ var _getProperty = jsx.object.getProperty; |
+ var _absPath = jsx.absPath; |
+ var _importFrom = jsx.importFrom; |
+ |
+ /** |
+ * @param {string} uri |
+ * URI of the resource to be imported |
+ * @param {Object} obj |
+ * Object to import |
+ * @param {Array} properties (optional) |
+ * Properties of the object from the script to be imported. |
+ * See {@link jsx#_import}. |
+ * @param {string} objAlias (optional) |
+ * See {@link jsx#_import}. |
+ * @param {Array} propertyAliases (optional) |
+ * See {@link jsx#_import}. |
+ */ |
+ function importOnce (uri, obj, properties, objAlias, propertyAliases) |
+ { |
+ /** |
+ * @param {string} uri |
+ */ |
+ function scriptIncluded (uri) |
+ { |
+ var scripts = document.getElementByTagName("script"); |
+ if (scripts) |
+ { |
+ var uriAbsPath = _absPath(uri); |
+ for (var i = 0, len = scripts.length; i < len; ++i) |
+ { |
+ var script = scripts[i]; |
+ if (_absPath(script.src) == uriAbsPath) |
+ { |
+ return true; |
+ } |
+ } |
+ } |
+ |
+ return false; |
+ } |
+ |
+ var result = false; |
+ |
+ if (uri |
+ && !scriptIncluded(uri) |
+ && !_getProperty(importOnce.imports, uri, null)) |
+ { |
+ result = _importFrom(uri, obj, properties, objAlias, propertyAliases); |
+ if (result) |
+ { |
+ importOnce.imports[uri] = true; |
+ } |
+ } |
+ |
+ return result; |
+ } |
+ |
+ importOnce.imports = {}; |
+ |
+ return importOnce; |
+}()); |
+ |
+/** |
+ * Executes a function if and once its requirements are fulfilled. |
+ * |
+ * @function |
+ * @return {any} |
+ * The return value of <var>callback</var>, |
+ * <code>undefined</code> otherwise. |
+ */ |
+jsx.require = (function () { |
+ var _importOnce = jsx.importOnce; |
+ var _isArray = jsx.object.isArray; |
+ |
+ /** |
+ * @param {string|Array} uri |
+ * URI-reference or <code>Array</code> of URI-references |
+ * specifying the requirement(s) |
+ * @param {Function} callback |
+ * Function to be executed |
+ * @return {mixed} |
+ * The return value of <var>callback</var>, |
+ * <code>false</code> otherwise. |
+ */ |
+ return function (uri, callback) { |
+ if (!_isArray(uri)) |
+ { |
+ uri = [uri]; |
+ } |
+ |
+ var success = true; |
+ for (var i = 0, len = uri.length; i < len; ++i) |
+ { |
+ if (!_importOnce(uri[i])) |
+ { |
+ success = false; |
+ break; |
+ } |
+ } |
+ |
+ if (success) |
+ { |
+ return callback(); |
+ } |
+ }; |
+}()); |
+ |
+/** |
+ * @param {object} thisArg |
+ * Reference to the calling object. |
+ * @param {Array} argArray |
+ * Arguments for the object. |
+ */ |
+function Function_prototype_apply (thisArg, argArray) |
+{ |
+ var |
+ jsx_object = jsx.object, |
+ jsx_global = jsx.global; |
+ |
+ if (!thisArg) |
+ { |
+ thisArg = jsx_global; |
+ } |
+ |
+ var |
+ o = thisArg || this, |
+ p = jsx_object.findNewProperty(o); |
+ |
+ if (p) |
+ { |
+ o[p] = this; |
+ |
+ var a = new Array(); |
+ for (var i = 0, len = argArray.length; i < len; i++) |
+ { |
+ a[i] = "argArray[" + i + "]"; |
+ } |
+ |
+ eval("o[p](" + a + ")"); |
+ |
+ delete o[p]; |
+ } |
+} |
+ |
+if (jsx.options.emulate) |
+{ |
+/* Disabled until ECMAScript allows to hide properties from iteration */ |
+//jsx.object.setdProperties(Object.prototype, { |
+// extend : extend, |
+// clone : clone, |
+// findNewProperty: findNewProperty, |
+// _hasOwnProperty: _hasOwnProperty |
+// }); |
+ |
+ if (jsx.object.isMethod(this, "eval")) |
+ { |
+ /* |
+ * KJS 3.5.1 does not support named FunctionExpressions within Object |
+ * literals if the literal is an AssignmentExpression (right-hand side |
+ * of an assignment or a passed function argument). |
+ * fixed since <http://bugs.kde.org/show_bug.cgi?id=123529> |
+ */ |
+ |
+ jsx.object.extend(Function.prototype, { |
+ /** |
+ * Applies a method of another object in the context |
+ * of a different object (the calling object). |
+ * |
+ * @memberOf Function#prototype |
+ * @see Function_prototype_apply |
+ */ |
+ apply: Function_prototype_apply, |
+ |
+ /** |
+ * Calls (executes) a method of another object in the |
+ * context of a different object (the calling object). |
+ * |
+ * @memberOf Function#prototype |
+ * @param {Object} thisArg |
+ * Reference to the calling object. SHOULD NOT |
+ * be a host object, since augmentation is required. |
+ * @params {_} |
+ * Arguments for the object. |
+ */ |
+ call: function (thisArg) { |
+ var a = new Array(); |
+ |
+ for (var i = 1, len = arguments.length; i < len; i++) |
+ { |
+ a[i] = "arguments[" + i + "]"; |
+ } |
+ |
+ if (!thisArg) |
+ { |
+ thisArg = jsx.global; |
+ } |
+ |
+ var |
+ o = {}, |
+ p = jsx.object.findNewProperty(o); |
+ |
+ if (p) |
+ { |
+ o[p] = this; |
+ eval("o[p](" + a + ")"); |
+ delete o[p]; |
+ o = null; |
+ } |
+ }, |
+ |
+ /** |
+ * Returns a <code>Function</code> that has a defined |
+ * <code>this</code> value and calls the calling |
+ * <code>Function</code> with default parameters. |
+ * |
+ * @function |
+ * @return {Function} |
+ * @see 15.3.4.5 Function.prototype.bind (thisArg [, arg1 [, arg2, ...]]) |
+ */ |
+ bind: (function () { |
+ var _slice; |
+ var _getClass = jsx.object.getClass; |
+ |
+ /** |
+ * @param {Object} thisArg |
+ * <code>this</code> value of the returned |
+ * <code>Function</code> |
+ * @params Default parameters |
+ */ |
+ return function (thisArg) { |
+ var target = this; |
+ if (typeof target != "function") |
+ { |
+ return jsx.throwThis("TypeError"); |
+ } |
+ |
+ if (!_slice) |
+ { |
+ _slice = Array.prototype.slice; |
+ } |
+ |
+ var boundArgs = _slice.call(arguments, 1); |
+ var f = function () { |
+ return target.apply(thisArg, boundArgs.concat(_slice.call(arguments))); |
+ }; |
+ |
+ if (_getClass(target) == "Function") |
+ { |
+ f.length = target.length + boundArgs.length; |
+ } |
+ else |
+ { |
+ if (typeof Object.defineProperty == "function") |
+ { |
+ /* |
+ * [[Writable]]: false, [[Enumerable]]: false, |
+ * [[Configurable]]: false |
+ */ |
+ Object.defineProperty(f, "length"); |
+ } |
+ else |
+ { |
+ f.length = 0; |
+ } |
+ } |
+ |
+ return f; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Constructs a new object using the calling object as constructor |
+ * and elements of the referred array as items of the arguments list. |
+ * <p> |
+ * Example: |
+ * <pre><code>var d = Date.construct([2009, 8, 1]);</code></pre> |
+ * is equivalent to |
+ * <pre><code>var d = new Date(2009, 8, 1);</code></pre> |
+ * but, by contrast, allows for passing an arbitrary number of |
+ * arguments per the array's elements. |
+ * </p> |
+ * @memberOf Function#prototype |
+ * @param {Array} argArray |
+ * @return {Object} Reference to the new instance |
+ */ |
+ construct: function (argArray) { |
+ var a = new Array(); |
+ for (var i = 0, len = argArray.length; i < len; ++i) |
+ { |
+ a[i] = "argArray[" + i + "]"; |
+ } |
+ |
+ return eval("new this(" + a + ")"); |
+ }, |
+ |
+ /** |
+ * @author Courtesy of Asen Bozhilov, slightly adapted |
+ * @function |
+ * @memberOf Function#prototype |
+ * @return {Object} Reference to the new instance |
+ */ |
+ construct2: (function () { |
+ function Dummy(constructor, argArray) { |
+ constructor.apply(this, argArray); |
+ } |
+ |
+ /** |
+ * @param {Array} argArray |
+ */ |
+ return function (argArray) { |
+ Dummy.prototype = this.prototype; |
+ return new Dummy(this, argArray); |
+ }; |
+ }()) |
+ }); |
+ } |
+} |
+ |
+/** |
+ * Includes the prototype object of another object in the prototype |
+ * chain of objects created with the calling Function object. |
+ * <p> |
+ * Used with constructors to establish multi-level prototype-based |
+ * inheritance (much like class-based inheritance in Java). To that end, |
+ * this method adds a <code>_super</code> property to the function to refer |
+ * to <var>Constructor</var>, the constructor of the parent prototype. |
+ * Likewise, instances constructed with the resulting function have a |
+ * <code>_super</code> property to refer to their constructor. |
+ * </p><p> |
+ * NOTE: Because of this, you need to use the constructor's |
+ * <code>_super</code> property if you want to refer to the parent's |
+ * constructor in the instance's constructor; using the instance's |
+ * <code>_super</code> property would result in infinite recursion, |
+ * and ultimately a stack overflow. You may call the parent's |
+ * constructor explicitly within the constructor of the child, using |
+ * the (equivalent of the) <code>arguments.callee._super.call()</code> |
+ * method (or calling it explicitly as a method of the inheriting |
+ * prototype); in prototype methods, use |
+ * <code><var>Constructor</var>._super.prototype.method.call()</code> |
+ * or refer to the parent constructor directly. |
+ * </p> |
+ * |
+ * @function |
+ * @return {Function} |
+ * A reference to the constructor of the extended prototype object |
+ * if successful; <code>null</code> otherwise. |
+ */ |
+Function.prototype.extend = (function () { |
+ var _jsx = jsx; |
+ var _global = _jsx.global; |
+ var _jsx_object = _jsx.object; |
+ |
+ /** |
+ * @private |
+ * @function |
+ * @return {Object} |
+ */ |
+ var _iterator = (function () { |
+ /* Optimize if ECMAScript 5 features were available */ |
+ if (_jsx_object.isNativeMethod(_global.Object, "defineProperties")) |
+ { |
+ return function () { |
+ return this; |
+ }; |
+ } |
+ |
+ return function () { |
+ _jsx.warn("for (var p in o.iterator()) { f(); } is inefficient," |
+ + " consider using o.forEach(f, ...) instead"); |
+ |
+ var o = new Object(); |
+ |
+ for (var p2 in this) |
+ { |
+ switch (p2) |
+ { |
+ case "_super": |
+ case "constructor": |
+ case "iterator": |
+ case "forEach": |
+ break; |
+ |
+ default: |
+ o[p2] = true; |
+ } |
+ } |
+ |
+ return o; |
+ }; |
+ }()); |
+ |
+ function _forEach(fCallback, thisObj) |
+ { |
+ var t = typeof fCallback; |
+ if (!_jsx_object.isMethod(fCallback)) |
+ { |
+ return _jsx.throwThis( |
+ "TypeError", |
+ (!/^\s*unknown\s*$/i.test(t) ? fCallback : "arguments[0]") |
+ + " is not a function", |
+ this + ".forEach"); |
+ } |
+ |
+ for (var p in this) |
+ { |
+ switch (p) |
+ { |
+ case "_super": |
+ case "constructor": |
+ case "iterator": |
+ case "forEach": |
+ break; |
+ |
+ default: |
+ /* also supports host object's methods */ |
+ Function.prototype.call.call(fCallback, thisObj, this[p], p, this); |
+ } |
+ } |
+ } |
+ |
+ /** |
+ * @param {Function} fConstructor |
+ * Constructor from which prototype object should be |
+ * inherited. |
+ * @param {Object} oProtoProps |
+ * Object from which to shallow-copy properties as prototype |
+ * properties. Of those, the <code>_super</code>, |
+ * <code>constructor</code>, and <code>_userDefined</code> |
+ * properties are ignored as they are used internally. |
+ */ |
+ return function (fConstructor, oProtoProps) { |
+ var me = this; |
+ |
+ /* |
+ * Allows constructor to be null or undefined to inherit from |
+ * Object.prototype by default (see below) |
+ */ |
+ if (fConstructor == null) |
+ { |
+ if (typeof fConstructor == "undefined") |
+ { |
+ /* Passing undefined is probably unintentional, so warn about it */ |
+ _jsx.warn((_jsx_object.getFunctionName(me) || "[anonymous Function]") |
+ + ".extend(" + "undefined, " + oProtoProps + "):" |
+ + " Parent constructor is undefined, using Object"); |
+ } |
+ |
+ fConstructor = "Object"; |
+ } |
+ |
+ /* |
+ * Supports strings being passed that denote properties of the |
+ * Global Object. |
+ * |
+ * TODO: An API that only registers strings as references to features |
+ * defined later, and implements inheritance using this registry |
+ * on user call only, might be useful for constructors defined |
+ * in Object initializers. |
+ */ |
+ if (typeof fConstructor.valueOf() == "string") |
+ { |
+ fConstructor = _jsx.global[fConstructor]; |
+ } |
+ |
+ var t = typeof fConstructor; |
+ if (t != "function") |
+ { |
+ _jsx.throwThis("TypeError", |
+ (/\s*unknown\s*/i.test(t) ? "Unknown" : t) + " is not a function"); |
+ return null; |
+ } |
+ |
+ this.prototype = _jsx_object.inheritFrom(fConstructor.prototype); |
+ |
+ if (oProtoProps) |
+ { |
+ for (var p in oProtoProps) |
+ { |
+ this.prototype[p] = oProtoProps[p]; |
+ } |
+ } |
+ |
+ this._super = fConstructor; |
+ this.prototype._super = fConstructor.prototype; |
+ this.prototype.constructor = this; |
+ this._userDefined = true; |
+ |
+ /* PERF: for (var p in o.iterator()) is rather inefficient */ |
+ /** |
+ * @deprecated |
+ * @return {Object} |
+ */ |
+ if (typeof this.prototype.iterator == "undefined") |
+ { |
+ this.prototype.iterator = _iterator; |
+ } |
+ |
+ /* Optimize iteration if ECMAScript 5 features are available */ |
+ if (_jsx_object.isNativeMethod(_global.Object, "defineProperties")) |
+ { |
+ var |
+ userDefProtoProps = ["_super", "constructor", "iterator"], |
+ oDescriptors = {}, |
+ proto = this.prototype; |
+ |
+ for (var i = userDefProtoProps.length; i--;) |
+ { |
+ p = userDefProtoProps[i]; |
+ oDescriptors[p] = { |
+ value: proto[p], |
+ enumerable: false |
+ }; |
+ } |
+ |
+ _jsx.tryThis( |
+ function () { |
+ Object.defineProperties(proto, oDescriptors); |
+ }, |
+ function (e) { |
+ _jsx.warn(_jsx_object.getFunctionName(me) + ".extend(" |
+ + _jsx_object.getFunctionName(fConstructor) + ", " |
+ + oProtoProps + "): " + e.name + ': ' + e.message); |
+ }); |
+ } |
+ |
+ if (!jsx.object.isNativeMethod(this.prototype, "forEach")) |
+ { |
+ /** |
+ * Calls a function for each real property of the object |
+ * in arbitrary order. Workaround for for-in iteration |
+ * on objects with augmented prototype object. |
+ * |
+ * @param {Function} fCallback |
+ * @param {Object} thisObj (optional) |
+ * @throws TypeError |
+ */ |
+ this.prototype.forEach = _forEach; |
+ |
+ /* Optimize iteration if ECMAScript 5 features are available */ |
+ if (_jsx_object.isNativeMethod(_jsx.global.Object, "defineProperty")) |
+ { |
+ _jsx.tryThis( |
+ function () { |
+ Object.defineProperty(me.prototype, "forEach", { |
+ value: me.prototype.forEach, |
+ enumerable: false |
+ }); |
+ }, |
+ function (e) { |
+ /* IE 8 goes here */ |
+ _jsx.warn( |
+ 'Borken implementation: Object.defineProperty is a method' |
+ + ' but [[Call]](this.prototype, "forEach") throws exception ("' |
+ + e.name + ': ' + e.message + '")'); |
+ } |
+ ); |
+ } |
+ } |
+ |
+ return this; |
+ }; |
+}()); |
+ |
+jsx.array = new Object(); |
+/** |
+ * Maps one array to another |
+ * |
+ * @param {Array} array |
+ * Array to be mapped |
+ * @param {Callable} callback |
+ * @param {Object} oThis (optional) |
+ * @return {Array} |
+ * <var>array</var> with <var>callback</var> applied to each element. |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.4.19 |
+ */ |
+function jsx_array_map (array, callback, oThis) |
+{ |
+ var _isMethod = jsx.object.isMethod; |
+ |
+ if (!_isMethod(callback)) |
+ { |
+ return jsx.throwThis("TypeError", |
+ (_isMethod(callback, "toSource") ? callback.toSource() : callback) |
+ + " is not callable", |
+ this + ".map"); |
+ } |
+ |
+ var |
+ len = array.length >>> 0, |
+ res = []; |
+ |
+ for (var i = 0; i < len; ++i) |
+ { |
+ if (i in array) |
+ { |
+ res[i] = callback.call(oThis, array[i], i, array); |
+ } |
+ } |
+ |
+ return res; |
+} |
+jsx.array.map = jsx_array_map; |
+ |
+if (jsx.options.emulate) |
+{ |
+ /* Defines Array.isArray() if not already defined */ |
+ jsx.object.extend(Array, {isArray: jsx.object.isArray}); |
+ |
+ /* Defines Array.prototype.indexOf and .map() if not already defined */ |
+ jsx.object.extend(Array.prototype, { |
+ /** |
+ * Returns the first index at which a given element can be found in |
+ * the array, or -1 if it is not present. |
+ * |
+ * @param searchElement |
+ * Element to locate in the array. |
+ * @param {Number} fromIndex |
+ * The index at which to begin the search. Defaults to 0, i.e. |
+ * the whole array will be searched. If the index is greater than |
+ * or equal to the length of the array, -1 is returned, i.e. |
+ * the array will not be searched. If negative, it is taken as |
+ * the offset from the end of the array. Note that even when |
+ * the index is negative, the array is still searched from front |
+ * to back. If the calculated index is less than 0, the whole array |
+ * will be searched. |
+ * @return {number} |
+ * The first index at which a given element can be found in |
+ * the array, or -1 if it is not present. |
+ * @author Courtesy of developer.mozilla.org, unverified |
+ * @memberOf Array.prototype |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.4.14 |
+ */ |
+ indexOf: function (searchElement, fromIndex) { |
+ "use strict"; |
+ if (this === void 0 || this === null) |
+ { |
+ throw new TypeError(); |
+ } |
+ |
+ var t = Object(this); |
+ |
+ var len = t.length >>> 0; |
+ if (len === 0) { |
+ return -1; |
+ } |
+ |
+ var n = 0; |
+ if (arguments.length > 0) |
+ { |
+ n = Number(fromIndex); |
+ if (n !== n) { |
+ /* shortcut for verifying if it's NaN */ |
+ n = 0; |
+ } |
+ else if (n !== 0 && n !== Infinity && n !== -Infinity) |
+ { |
+ n = (n > 0 || -1) * Math.floor(Math.abs(n)); |
+ } |
+ } |
+ |
+ if (n >= len) |
+ { |
+ return -1; |
+ } |
+ |
+ var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); |
+ for (; k < len; k++) |
+ { |
+ if (k in t && t[k] === searchElement) |
+ { |
+ return k; |
+ } |
+ } |
+ |
+ return -1; |
+ }, |
+ |
+ /** |
+ * Maps one array to another |
+ * |
+ * @param {Callable} callback |
+ * @param {Object} oThis (optional) |
+ * @return {Array} |
+ * The original array with <var>callback</var> applied to each element. |
+ * @see ECMAScript Language Specification, Edition 5.1, section 15.4.4.19 |
+ */ |
+ map: function (callback, oThis) { |
+ return jsx.array.map(this, callback, oThis); |
+ }, |
+ |
+ slice: function (start, end) { |
+ var a = []; |
+ var len = this.length >>> 0; |
+ var relativeStart = parseInt(start, 10); |
+ var k = ((relativeStart < 0) |
+ ? Math.max(len + relativeStart, 0) |
+ : Math.min(relativeStart, len)); |
+ var relativeEnd = ((typeof end == "undefined") |
+ ? len |
+ : parseInt(end, 10)); |
+ var final = ((relativeEnd < 0) |
+ ? Math.max(len + relativeEnd, 0) |
+ : Math.min(relativeEnd, len)); |
+ var n = 0; |
+ while (k < final) |
+ { |
+ if ((k in this)) |
+ { |
+ a[n] = this[k]; |
+ } |
+ |
+ ++k; |
+ ++n; |
+ } |
+ |
+ return a; |
+ } |
+ }); |
+ |
+ if (typeof Array.from == "undefined") |
+ { |
+ /** |
+ * Returns an <code>Array</code> created from mapping items |
+ * of an Array-like object. |
+ * |
+ * @function |
+ */ |
+ Array.from = (function () { |
+ var _map = Array.prototype.map; |
+ |
+ /** |
+ * @param {Function} builder |
+ * Mapping function whose return value specifies the |
+ * mapped value in the new <code>Array</code> |
+ * @param {Object} iterable |
+ * <code>Array</code>-like object |
+ * @param {Object} oThis |
+ * <code>this</code> value in the mapping function |
+ * @return {Array} |
+ * @see Array.prototype#map |
+ */ |
+ return function (builder, iterable, oThis) { |
+ return _map.call(iterable, builder, oThis); |
+ }; |
+ }()); |
+ } |
+ |
+ if (typeof Array.destructure == "undefined") |
+ { |
+ /** |
+ * Maps elements of an <code>Array</code>-like object |
+ * to named properties of another object. |
+ * |
+ * <p>NOTE: Equivalent to Array destructuring (JavaScript 1.7+):</p> |
+ * <pre><code>var o = Array.destructure(["bar", "foo"], ["foo", "bar"]);</code></pre> |
+ * is equivalent to |
+ * <pre><code>var o = {}; |
+ * [o.foo, o.bar] = ["bar", "foo"];</code></pre> |
+ * |
+ * @param {Object} a |
+ * <code>Array</code>-like object whose elements should be mapped. |
+ * @param {Array} properties |
+ * Names of the properties that array elements should be mapped to. |
+ * If an element of this <code>Array</code> is <code>undefined</code> |
+ * or <code>null</code> (the former can be facilitated with |
+ * simply omitting the element value in an <code>Array</code> |
+ * Initialiser when not the last element of this <code>Array</code>), |
+ * the corresponding element of <var>a</var> is not mapped. |
+ * @param {Object} oTarget |
+ * Target object. If a false-value, a new <code>Object</code> |
+ * instance is being created. |
+ * @returns {Object} |
+ * <var>oTarget</var> or a new <code>Object</code> instance |
+ * augmented with the specified properties and values. |
+ */ |
+ Array.destructure = function (a, properties, oTarget) { |
+ var o = oTarget || {}; |
+ |
+ for (var i = 0, len = properties.length; i < len; ++i) |
+ { |
+ var propertyName = properties[i]; |
+ if (propertyName != null) |
+ { |
+ o[propertyName] = a[i]; |
+ } |
+ } |
+ |
+ return o; |
+ }; |
+ } |
+} |
+ |
+/** |
+ * General exception |
+ * |
+ * @constructor |
+ * @extends Error |
+ * @param {string} sMsg |
+ */ |
+jsx.Error = function jsx_Error (sMsg) { |
+ var msg = (sMsg || "Unspecified error"); |
+ var _super = jsx_Error._super; |
+ var e = null; |
+ |
+ if (typeof _super == "function") |
+ { |
+ _super.call(this, msg); |
+ |
+ jsx.tryThis(function () { e = new _super(); }); |
+ } |
+ |
+ if (!this.message) |
+ { |
+ /** |
+ * @type string |
+ */ |
+ this.message = msg; |
+ } |
+ |
+ if (!this.lineNumber && e) |
+ { |
+ /** |
+ * @type number |
+ */ |
+ this.lineNumber = e.lineNumber || e.line; |
+ } |
+ |
+ if (!this.stack && e && e.stack) |
+ { |
+ var stack = String(e.stack).split(/\r?\n|\r/).slice(2); |
+ this.stack = stack.join("\n"); |
+ } |
+}; |
+ |
+jsx.Error.extend( |
+ typeof Error != "undefined" ? Error : function () {}, |
+ { |
+ /** |
+ * @memberOf jsx.Error#prototype |
+ */ |
+ name: "jsx.Error", |
+ getMessage: function () { return this.message; }, |
+ getStackTrace: function () { return this.stack; }, |
+ printStackTrace: function () { |
+ var s = this.getStackTrace(); |
+ jsx.dmsg(s) || window.alert(s); |
+ } |
+}); |
+ |
+/** |
+ * Invalid argument |
+ * |
+ * @constructor |
+ * @extends jsx#Error |
+ * @param {string} sReason |
+ * @param sGot |
+ * @param sExpected |
+ */ |
+jsx.InvalidArgumentError = |
+ function jsx_InvalidArgumentError (sReason, sGot, sExpected) { |
+ jsx_InvalidArgumentError._super.call(this, |
+ (sReason || "Invalid argument(s)") |
+ + (sGot && sGot.length > 0 ? ": " + sGot : "") |
+ + (sExpected ? "; expected " + sExpected : "")); |
+}; |
+ |
+jsx.InvalidArgumentError.extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.InvalidArgumentError#prototype |
+ */ |
+ name: "jsx.InvalidArgumentError" |
+}); |
+ |
+/** |
+ * Object-related exception |
+ * |
+ * @constructor |
+ * @param {string} sMsg |
+ * @extends jsx#Error |
+ */ |
+jsx.object.ObjectError = function jsx_object_ObjectError (sMsg) { |
+ jsx_object_ObjectError._super.call(this, sMsg); |
+}; |
+ |
+jsx.object.ObjectError.extend(jsx.Error, { |
+ /** |
+ * @memberOf jsx.object.ObjectError#prototype |
+ */ |
+ name: "jsx.object.ObjectError" |
+}); |
+ |
+/** |
+ * Property-related exception |
+ * |
+ * @constructor |
+ * @param {string} sMsg |
+ * @extends jsx.object#ObjectError |
+ */ |
+jsx.object.PropertyError = function jsx_object_PropertyError (sMsg) { |
+ jsx_object_PropertyError._super.call( |
+ this, "No such property" + (arguments.length > 0 ? (": " + sMsg) : "")); |
+}; |
+ |
+jsx.object.PropertyError.extend(jsx.object.ObjectError, { |
+ /** |
+ * @memberOf jsx.object.PropertyError#prototype |
+ */ |
+ name: "jsx.object.PropertyError" |
+}); |
/live/object/object-compat.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/math/interval.js |
=================================================================== |
--- live/math/interval.js (nonexistent) |
+++ live/math/interval.js (revision 520) |
@@ -0,0 +1,230 @@ |
+/** |
+ * <title>PointedEars' JSX: Math Library: Intervals</title> |
+ * @requires object.js |
+ * @requires types.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2000-2011 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/** |
+ * Specifies a numeric interval, closed by default. |
+ * |
+ * @param aSections : Array, @property sections : Array = [0, 1] |
+ * Specifies the sections of the interval, starting |
+ * with the left border, continuing with a non-zero |
+ * number of optional intermitting borders and |
+ * ending with the right border. Note that the |
+ * elements are automatically arranged in numerically |
+ * ascending order. |
+ * @param bLeftOpen : boolean, @property leftOpen : boolean = false |
+ * If true, specifies that the interval is open |
+ * on the left, meaning that its left border |
+ * is not part of the interval. |
+ * @param bRightOpen : boolean, @property rightOpen : boolean = false |
+ * If true, specifies that the interval is open |
+ * on the right, meaning that its right border |
+ * is not part of the interval. |
+ */ |
+Math.Interval = function(aSections, bLeftOpen, bRightOpen) { |
+ if (isArray(aSections)) |
+ { |
+ aSections.sort(function(a, b) { return a - b; }); |
+ this.sections = aSections || [0, 1]; |
+ this.leftOpen = !!bLeftOpen || false; |
+ this.rightOpen = !!bRightOpen || false; |
+ } |
+}; |
+ |
+/** |
+ * Returns the left border of the interval. |
+ * |
+ * @return mixed |
+ * The left border of the interval |
+ */ |
+Math.Interval.prototype.getLeftBorder = function() { |
+ return this.sections[0]; |
+}; |
+ |
+/** |
+ * Returns the right border of the interval. |
+ * |
+ * @return mixed |
+ * The right border of the interval |
+ */ |
+Math.Interval.prototype.getRightBorder = function() { |
+ return this.sections[this.sections.length - 1]; |
+}; |
+ |
+/** |
+ * @param n : number |
+ * @param o : optional Interval |
+ * @return number |
+ * @todo |
+ */ |
+Math.getSubIntervalIndex = function(n, o) { |
+ var result = null; |
+ |
+ if (!(o instanceof Math.Interval) && this instanceof Math.Interval) |
+ { |
+ o = this; |
+ } |
+ |
+ if (o instanceof Math.Interval) |
+ { |
+ var |
+ start = 0, |
+ s = o.sections, |
+ end = s.length, |
+ max = end, |
+ pivot = 0; |
+ |
+ do |
+ { |
+ /* Use interpolation search [O(log(log n))] for many sections */ |
+ if (max > 10000) |
+ { |
+ var nS = s[start]; |
+ |
+ pivot = start + Math.floor((end - start) * (n - nS) / (s[end] - nS)); |
+ } |
+ else |
+ { |
+ /* Use binary search [O(log n)] */ |
+ pivot = (start + end) >> 1; |
+ } |
+ |
+ if (start + 1 == end) |
+ { |
+ if (n - s[start] <= s[end] - n) |
+ { |
+ result = start; |
+ } |
+ else |
+ { |
+ result = end; |
+ } |
+ break; |
+ } |
+ else if (n < s[pivot]) |
+ { |
+ /* continue search left-hand side */ |
+ end = pivot; |
+ } |
+ else |
+ { |
+ /* continue search right-hand side */ |
+ start = pivot; |
+ } |
+ } |
+ while (n >= s[start] && n <= s[end]); |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * @param n : number |
+ * @param o : optional Interval |
+ * @return boolean |
+ * @todo |
+ */ |
+Math.isInInterval = function(n, o) { |
+ var result = false; |
+ |
+ if (!(o instanceof Math.Interval) && this instanceof Math.Interval) |
+ { |
+ o = this; |
+ } |
+ |
+ if (o instanceof Math.Interval) |
+ { |
+ var lo, l, ro, r; |
+ |
+ result = |
+ (((lo = o.leftOpen) && n > (l = o.getLeftBorder())) |
+ || (!lo && n >= l)) |
+ && |
+ (((ro = o.rightOpen) && n < (r = o.getRightBorder())) |
+ || (!ro && n <= r)); |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * @return Array |
+ */ |
+Math.getRightOpenIntervals = function() { |
+ var a = new Array(); |
+ |
+ var len = arguments.length; |
+ if (len == 0) |
+ { |
+ a.push(new Math.Interval(0, 1, true)); |
+ } |
+ else |
+ { |
+ a.push(new Math.Interval(arguments[0], arguments[1], true)); |
+ } |
+ |
+ if (len > 2) |
+ { |
+ len = arguments.length; |
+ for (var i = 1; i < len; i++) |
+ { |
+ a.push(new Math.Interval(arguments[i], arguments[i+1], true)); |
+ } |
+ } |
+ |
+ return a; |
+}; |
+ |
+/** |
+ * @param n : number |
+ * @param a : [Interval] |
+ * @return number |
+ * the index of the first interval in <code>a</code> that contains |
+ * <code>n</code>, -1 if there is no (such) interval. |
+ */ |
+Math.getIntervalIndex = function(n, a) { |
+ var result = -1; |
+ |
+ if (a instanceof Array) |
+ { |
+ for (var i = 0, len = a.length; i < len; i++) |
+ { |
+ var o; |
+ if ((o = a[i]) instanceof Math.Interval && o.contains(n)) |
+ { |
+ result = i; |
+ break; |
+ } |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+jsx.object.extend(Math.Interval.prototype, { |
+ 'contains': Math.isInInterval, |
+ 'getRightOpenIntervals': Math.getRightOpenIntervals, |
+ 'getIntervalIndex': Math.getIntervalIndex |
+}); |
/live/math/interval.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/math/float.js |
=================================================================== |
--- live/math/float.js (nonexistent) |
+++ live/math/float.js (revision 520) |
@@ -0,0 +1,817 @@ |
+/** |
+ * <title>PointedEars' JSX: Math Library: Floating-point arithmetics</title> |
+ * @requires object.js |
+ * @requires types.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2000-2012 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+if (typeof jsx.math == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ jsx.math = {}; |
+} |
+ |
+/** |
+ * Returns the numerical value of an object. |
+ * |
+ * @param obj : Object |
+ * @return {number} |
+ * <code>NaN</code> if <var>obj</var> does not refer to an object |
+ * or does not have a <code>valueOf()</code> method that returns |
+ * a number value; the return value of the object's |
+ * <code>valueOf()</code> method otherwise. |
+ */ |
+jsx.math.getValue = function (obj) { |
+ var value = (typeof obj != "undefined" && (typeof obj == "object" && obj) |
+ && typeof obj.valueOf == "function") |
+ ? obj.valueOf() |
+ : value; |
+ |
+ if (typeof value == "number") |
+ { |
+ return value; |
+ } |
+ |
+ return NaN; |
+}; |
+ |
+/** |
+ * Returns the value of the smallest argument. |
+ * |
+ * @return {number} |
+ * The value of the smallest argument. |
+ * If an argument is an object but not an <code>Array</code>, |
+ * and has a <code>valueOf()</code> method that returns a number, |
+ * the return value is used; if it does not have such a |
+ * method or is an <code>Array</code>, the values of its |
+ * enumerable non-function properties or (with Arrays) its |
+ * number-indexed properties are evaluated. |
+ * If no arguments are provided, <code>Number.POSITIVE_INFINITY</code> |
+ * is returned. |
+ */ |
+jsx.math.min = (function () { |
+ var getValue = jsx.math.getValue; |
+ |
+ return function () { |
+ var result = Number.POSITIVE_INFINITY; |
+ var min_el; |
+ |
+ for (var i = 0, len = arguments.length; i < len; ++i) |
+ { |
+ var a = arguments[i]; |
+ if (jsx.object.isArray(a)) |
+ { |
+ var a2 = a.slice(); |
+ a2.sort(function (a, b) { return a - b; }); |
+ if (a2[0] < result) |
+ { |
+ result = a2[0]; |
+ } |
+ } |
+ else if (typeof a == "object") |
+ { |
+ var value = getValue(a); |
+ if (value) |
+ { |
+ if (value < result) |
+ { |
+ result = value; |
+ } |
+ } |
+ else |
+ { |
+ for (var j in a) |
+ { |
+ if ((min_el = jsx.math.min(a[j])) < result) |
+ { |
+ result = min_el; |
+ } |
+ } |
+ } |
+ } |
+ else if (a < result) |
+ { |
+ result = a; |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+}()); |
+ |
+/** |
+ * Returns the value of the greatest argument. |
+ * |
+ * @return {number} |
+ * The value of the greatest argument. |
+ * If an argument is an object but not an <code>Array</code>, |
+ * and has a <code>valueOf()</code> method that returns a number, |
+ * the return value is used; if it does not have such a |
+ * method or is an <code>Array</code>, the values of its |
+ * enumerable non-function properties or (with Arrays) its |
+ * number-indexed properties are evaluated. |
+ * If no arguments are provided, <code>Number.NEGATIVE_INFINITY</code> |
+ * is returned. |
+ */ |
+jsx.math.max = (function () { |
+ var getValue = jsx.math.getValue; |
+ |
+ return function () { |
+ var result = Number.NEGATIVE_INFINITY; |
+ |
+ for (var i = 0, len = arguments.length; i < len; ++i) |
+ { |
+ var a = arguments[i], max_el; |
+ if (jsx.object.isArray(a)) |
+ { |
+ var a2 = a.slice(); |
+ a2.sort(function (a, b) { return b - a; }); |
+ if (a2[0] > result) |
+ { |
+ result = a2[0]; |
+ } |
+ } |
+ else if (typeof a == "object") |
+ { |
+ var value = getValue(a); |
+ if (value) |
+ { |
+ if (value > result) |
+ { |
+ result = value; |
+ } |
+ } |
+ else |
+ { |
+ for (var j in a) |
+ { |
+ if ((max_el = jsx.math.max(a[j])) > result) |
+ { |
+ result = max_el; |
+ } |
+ } |
+ } |
+ } |
+ else if (a > result) |
+ { |
+ result = a; |
+ } |
+ } |
+ |
+ return result; |
+ }; |
+}()); |
+ |
+/** |
+ * Returns the average value of the arguments. |
+ * |
+ * @return number |
+ * The average value of the arguments. |
+ * If an argument is an object but not an <code>Array</code>, |
+ * and has a <code>valueOf()</code> method that returns a number, |
+ * the return value is used; if it does not have such a |
+ * method or is an <code>Array</code>, the values of its |
+ * enumerable non-function properties or (with Arrays) its |
+ * number-indexed properties are evaluated. |
+ * If no arguments are provided, <code>NaN</code> is returned. |
+ */ |
+jsx.math.avg = (function () { |
+ var getValue = jsx.math.getValue; |
+ |
+ return function () { |
+ var sum = 0; |
+ var count = 0; |
+ |
+ for (var i = 0, len = arguments.length; i < len; i++) |
+ { |
+ var a = arguments[i]; |
+ if (jsx.object.isArray(a)) |
+ { |
+ for (var j = 0; j < a.length; j++) |
+ { |
+ ++count; |
+ sum += jsx.math.avg(a[j]); |
+ } |
+ } |
+ else if (typeof a == "object") |
+ { |
+ var value = getValue(a); |
+ if (value) |
+ { |
+ ++count; |
+ sum += value; |
+ } |
+ else |
+ { |
+ for (j in a) |
+ { |
+ ++count; |
+ sum += jsx.math.avg(a[j]); |
+ } |
+ } |
+ } |
+ else |
+ { |
+ count++; |
+ sum += parseFloat(a); |
+ } |
+ } |
+ |
+ return (sum / count); |
+ }; |
+}()); |
+ |
+/** |
+ * Returns the arithmetic median of the arguments. |
+ * |
+ * The [arithmetic (one-dimensional)] median is [defined] as |
+ * the numerical value separating the higher half of a sample |
+ * from the lower half of a sample. If there is an even number |
+ * of observations, then there is no single middle value; the |
+ * median is then […] defined to be the mean of the two middle |
+ * values. (From Wikipedia, the free encyclopedia) |
+ * |
+ * @return number |
+ * The arithmetic median of the arguments. |
+ * If an argument is an object but not an <code>Array</code>, |
+ * and has a <code>valueOf()</code> method that returns a number, |
+ * the return value is used; if it does not have such a |
+ * method or is an <code>Array</code>, the values of its |
+ * enumerable non-function properties or (with Arrays) its |
+ * number-indexed properties are evaluated. |
+ * If no arguments are provided, <code>NaN</code> is returned. |
+ */ |
+jsx.math.median = (function () { |
+ var getValue = jsx.math.getValue; |
+ |
+ return function () { |
+ var values = []; |
+ var result; |
+ |
+ for (var i = 0, len = arguments.length; i < len; i++) |
+ { |
+ var a = arguments[i]; |
+ if (jsx.object.isArray(a)) |
+ { |
+ for (var j = 0; j < a.length; j++) |
+ { |
+ values.push(a[j]); |
+ } |
+ } |
+ else if (typeof a == "object") |
+ { |
+ var value = getValue(a); |
+ if (value) |
+ { |
+ values.push(value); |
+ } |
+ else |
+ { |
+ for (j in a) |
+ { |
+ values.push(a[j]); |
+ } |
+ } |
+ } |
+ else |
+ { |
+ values.push(parseFloat(a)); |
+ } |
+ } |
+ |
+ values.sort(function (a, b) { return a - b; }); |
+ |
+ len = values.length; |
+ if (len > 1) |
+ { |
+ var middle = (len / 2) - 1; |
+ if (len % 2 == 0) |
+ { |
+ result = jsx.math.avg( |
+ values[Math.floor(middle)], values[Math.ceil(middle)]); |
+ } |
+ else |
+ { |
+ result = values[middle]; |
+ } |
+ } |
+ else if (len > 0) |
+ { |
+ result = values[0]; |
+ } |
+ else |
+ { |
+ result = NaN; |
+ } |
+ |
+ return result; |
+ }; |
+}()); |
+ |
+/** |
+ * @param n : number |
+ * Number of which to compare the <code>iRoot</code>-th root. |
+ * @param iRoot : optional number = 2 |
+ * Root exponent. If not integer, the floor (largest integer |
+ * less than the argument) of <code>iRoot</code> is used. |
+ * @return number |
+ * The <var>iRoot</var>-th root of <var>n</var> |
+ */ |
+jsx.math.root = function(n, iRoot) { |
+ return (iRoot % 2 && n < 0 ? -1 : +1) |
+ * Math.pow(Math.abs(n), 1/Math.floor(iRoot)); |
+}; |
+ |
+/** |
+ * @param n : number |
+ * @return number |
+ * <var>n</var> squared, i.e. <code>Math.pow(n, 2)</code>. |
+ * @author (c) 2003 Thomas Lahn <math.js@PointedEars.de> |
+ */ |
+jsx.math.sqr = function(n) { |
+ return Math.pow(n, 2); |
+}; |
+ |
+/** |
+ * @param n : number |
+ * @return type number |
+ * The cubic value of <code>n</code>, i.e. |
+ * <code>Math.pow(n, 3)</code>. |
+ * @author (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ */ |
+jsx.math.cub = function(n) { |
+ return Math.pow(n, 3); |
+}; |
+ |
+/** |
+ * @param n : number |
+ * @return type number |
+ * the cubic root of <code>n</code>, i.e. |
+ * <code>Math.pow(n, 1/3)</code>, but also works |
+ * with negative values of <code>n</code>. |
+ * @author (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ */ |
+jsx.math.cubrt = function(n) { |
+ return jsx.math.root(n, 3); |
+}; |
+ |
+ |
+/** @subsection Rounding */ |
+ |
+/* |
+ * TODO: |
+ * Original round function from JavaScript-FAQ (http://dcljs.de/faq) |
+ * Why not this way? |
+ */ |
+ |
+/** |
+ * @param x |
+ * @param n |
+ * @return string |
+ * @deprecated |
+ */ |
+function roundDigits_deprecated(x, n) { |
+ if (n < 1 || n > 14) |
+ { |
+ return false; |
+ /* Impossible to round left to point; |
+ Returns non-numeric value if invalid number of digits |
+ which causes further calculations to fail (NaN) although |
+ they could succeed |
+ */ |
+ } |
+ |
+ var e = Math.pow(10, n); |
+ |
+ var k = (Math.round(x * e) / e).toString(); |
+ /* Do not use toString() because it is part of JavaScript 1.1 |
+ and not all JavaScript capable browsers support it. |
+ Use the String(...) function instead. |
+ */ |
+ |
+ if (k.indexOf('.') == -1){k += '.'; |
+ /* Sometimes it is not desired to have the decimal point |
+ when dealing with integers. The function does not allow |
+ output without point. A further argument is required. |
+ */} |
+ |
+ k += e.toString().substring(1); |
+ /* See above: Do not use Numeric.toString(...) method. |
+ */ |
+ |
+ return k.substring(0, k.indexOf('.') + n+1); |
+ /* Why this complicated though it could be much more simple? */ |
+} |
+ |
+/** |
+ * @param n : number |
+ * Numeric value to round. Required. |
+ * @param iSigDecimals : optional number |
+ * Significant decimals to round to. If negative |
+ * round to positive powers of 10. Optional. |
+ * If out of the closed interval of [-14;14], the |
+ * function exits and returns n (unchanged). |
+ * If not provided, assume 0 and round the value to |
+ * a whole number. |
+ * @param iForceDecimals : optional number |
+ * Number of digits to be returned with the number. |
+ * If smaller than iSigDigits, the value will be |
+ * ignored and the result is a Numeric value. |
+ * Otherwise the required number of zeroes will be |
+ * appended and the result is a String value. |
+ * Optional. |
+ * @param bForceLeadingZero : optional number |
+ * If true, force leading zero if the value is between |
+ * 0 and 1 or 0 and -1. The argument is optional. |
+ * If not provided, apply bForceLeadingZero=false; |
+ * @param sDecSeparator : optional string |
+ * The character used for decimal delimiter instead. |
+ * In English speaking countries the point (".") |
+ * is used instead of comma (",") and vice-versa. |
+ * Optional. If not provided, use default decimal |
+ * separator. If provided, the result is a String value. |
+ * @return number|string |
+ * <var>n</var> rounded to the number of specified digits, optionally |
+ * with leading zeroes. |
+ */ |
+jsx.math.roundDigits = function(n, iSigDecimals, iForceDecimals, |
+ bForceLeadingZero, sDecSeparator) |
+{ |
+ if (! iSigDecimals) |
+ { |
+ iSigDecimals = 0; |
+ } |
+ |
+ /* |
+ * Returns the number itself when called with invalid arguments, |
+ * so further calculations will not fail because of a wrong |
+ * function call. |
+ */ |
+ if (iSigDecimals < -14 || iSigDecimals > 14) |
+ { |
+ return n; |
+ } |
+ |
+ var e = Math.pow(10, iSigDecimals); |
+ var i = String(n).indexOf("."); |
+ |
+ if (i < 0) |
+ { |
+ i = String(n).length - 1; |
+ } |
+ |
+ if (String(n).substring(0, i).length <= -iSigDecimals) |
+ { |
+ return n; |
+ } |
+ |
+ var k = Math.round(n * e) / e; |
+ |
+ if (arguments.length < 3) |
+ { |
+ iForceDecimals = 0; |
+ } |
+ |
+ if (iForceDecimals > 0) |
+ { |
+ k = String(k); |
+ if ((i = k.indexOf(".")) < 0 && iForceDecimals > 0) |
+ { |
+ k += "."; |
+ } |
+ |
+ for (i = k.slice(k.indexOf(".") + 1).length; |
+ i < iForceDecimals; |
+ i++) |
+ { |
+ k += "0"; |
+ } |
+ } |
+ |
+ if (bForceLeadingZero && String(k).charAt(0) == ".") |
+ { |
+ k = "0" + k; |
+ } |
+ |
+ if (arguments.length < 5) |
+ { |
+ sDecSeparator = ""; |
+ } |
+ |
+ if (sDecSeparator.length > 0) |
+ { |
+ k = String(k); |
+ i = k.indexOf("."); |
+ if (i >= 0) |
+ { |
+ k = k.substring(0, i) + sDecSeparator + k.slice(i + 1); |
+ } |
+ } |
+ |
+ return k; |
+}; |
+ |
+ |
+/** @subsection Rational arithmetics */ |
+ |
+/** |
+ * Returns the period of a number, i.e. a repeated |
+ * substring of its decimals that entirely make up |
+ * following decimals. |
+ * |
+ * @param n : number |
+ * The number of which the period should be found out. |
+ * @param bLoose : optional boolean = false |
+ * If <code>true</code>, triggers Loose Mode |
+ * which notes <code>iPrecision</code>. |
+ * @param iPrecision : optional number = 14 |
+ * In Loose Mode, defines the maximum number |
+ * of decimals to parse for a period. The default |
+ * is 14 (one less than maximum known precision). |
+ * @return string |
+ * The period of <code>n</code> as a string; |
+ * "0" if there is none. |
+ */ |
+jsx.math.getPeriod = function(n, bLoose, iPrecision) { |
+ var s = String(n); |
+ for (var i = 3; i < s.length; i++) |
+ { |
+ var |
+ currentPeriod = s.substring(2, i), |
+ rx = new RegExp("^\\d*\\.\\d*(" + currentPeriod + ")+$"); |
+ |
+ if (rx.test(s)) |
+ { |
+ return currentPeriod; |
+ } |
+ } |
+ |
+ return "0"; |
+}; |
+ |
+/** |
+ * @param fDec : number |
+ * @return string |
+ * The representation of <var>fDec</var> in whole fractions |
+ */ |
+jsx.math.toFraction = function(fDec) { |
+ /** |
+ * I: x = 0.111111111111111 y = 1 |
+ * II: 10x = 1.111111111111111 |
+ * II - I: 9x = 1 |
+ * x = 1/9 |
+ * |
+ * 1. Y = periodLength(X) |
+ * 2. Z = X * 10^Y |
+ * 3. A = Z - X |
+ * 4. RESULT = 'A "/" (10^Y - 1)' |
+ */ |
+ |
+ var y = jsx.math.getPeriod(fDec).length; |
+ var z = fDec * Math.pow(10, y); |
+ var dividend = Math.round(z - fDec); |
+ var divisor = Math.round((Math.pow(10, y) - 1)); |
+ |
+ /* Cancel-out the fraction */ |
+ var d = jsx.math.gcd(dividend, divisor); |
+ if (d > 1) |
+ { |
+ dividend /= d; |
+ divisor /= d; |
+ } |
+ |
+ var result = dividend + "/" + divisor; |
+ |
+ return result; |
+}; |
+ |
+ |
+/** @subsection Trigonometry */ |
+ |
+jsx.math.UNIT_RAD = 0; |
+jsx.math.UNIT_DEG = 1; |
+jsx.math.UNIT_GRAD = 2; |
+ |
+/** |
+ * Unlike the {@link js#Math built-in methods}, the following |
+ * functions accept a second argument to determine if the argument |
+ * should be handled as radian (dtRad == 0 [default]; |
+ * x = n*[0..2*Math.PI], degree (dtDeg == 1; x = n*[0..360]) |
+ * or gradian (dtGrad == 2; x = n*[0..400] gon) value. |
+ */ |
+ |
+/** |
+ * Returns the sine of an angle. |
+ * |
+ * Call this method instead of <code>jsx.math.sinX()</code>, |
+ * which is deprecated. |
+ * |
+ * @param x : number |
+ * @param iArgType : number |
+ * @return number |
+ * The sine of <var>x</var> |
+ */ |
+jsx.math.sin = function(x, iArgType) { |
+ switch (iArgType) |
+ { |
+ case jsx.math.UNIT_DEG: |
+ x = x/180 * Math.PI; |
+ break; |
+ |
+ case jsx.math.UNIT_GRAD: |
+ x = x/200 * Math.PI; |
+ } |
+ |
+ return Math.sin(x); |
+}; |
+ |
+/* (non-JSdoc) |
+ * @deprecated |
+ */ |
+jsx.math.sinX = jsx.math.sin; |
+ |
+/** |
+ * Returns the cosine of an angle. |
+ * |
+ * Call this method instead of <code>jsx.math.cosX()</code>, |
+ * which is deprecated. |
+ * |
+ * @param x : number |
+ * @param iArgType : number |
+ * @return number |
+ * The cosine of <var>x</var> |
+ */ |
+jsx.math.cos = function(x, iArgType) { |
+ switch (iArgType) |
+ { |
+ case jsx.math.UNIT_DEG: |
+ x = x/180 * Math.PI; |
+ break; |
+ |
+ case jsx.math.UNIT_GRAD: |
+ x = x/200 * Math.PI; |
+ } |
+ |
+ return Math.cos(x); |
+}; |
+ |
+/* (non-JSdoc) |
+ * @deprecated |
+ */ |
+jsx.math.cosX = jsx.math.cos; |
+ |
+/** |
+ * Returns the tangent of an angle. |
+ * |
+ * Call this method instead of <code>jsx.math.tanX()</code>, |
+ * which is deprecated. |
+ * |
+ * @param x : number |
+ * @param iArgType : number |
+ * @return number |
+ * The tangent of <var>x</var>. If @link{js#Math.tan()} is |
+ * undefined, it uses @link{jsx.math#sin()} and |
+ * @link{jsx.math#cos()}. |
+ * @requires jsx.object#isMethod() |
+ */ |
+jsx.math.tan = function(x, iArgType) { |
+ var jsx_object = jsx.object; |
+ |
+ switch (iArgType) |
+ { |
+ case jsx.math.UNIT_DEG: |
+ x = x/180 * Math.PI; |
+ break; |
+ |
+ case jsx.math.UNIT_GRAD: |
+ x = x/200 * Math.PI; |
+ } |
+ |
+ if (jsx_object.isMethod(Math, "tan")) |
+ { |
+ return Math.tan(x); |
+ } |
+ |
+ return (jsx.math.sin(x) / jsx.math.cos(x)); |
+}; |
+ |
+/* (non-JSdoc) |
+ * @deprecated |
+ */ |
+jsx.math.tanX = jsx.math.tan; |
+ |
+/** @subsection Complex numbers */ |
+ |
+/** |
+ * @param nRe : number |
+ * @param nIm : number |
+ */ |
+jsx.math.Complex = function (nRe, nIm) { |
+ Number.call(this); |
+ this.re = Number(nRe) || 0; |
+ this.im = Number(nIm) || 0; |
+}; |
+ |
+jsx.math.Complex.extend(Number); |
+ |
+/** |
+ * @param a : Complex |
+ * @param b : Complex |
+ * @return Complex |
+ * The complex sum of <var>a</var> and <var>b</var> |
+ */ |
+jsx.math.addComplex = |
+jsx.math.Complex.prototype.add = function (a, b) { |
+ var result = null; |
+ var math = jsx.math; |
+ |
+ if (this instanceof math.Complex) |
+ { |
+ b = a; |
+ a = this; |
+ } |
+ |
+ if (a && b) |
+ { |
+ if (!(a instanceof math.Complex)) |
+ { |
+ a = new math.Complex(a); |
+ } |
+ |
+ if (!(b instanceof math.Complex)) |
+ { |
+ b = new math.Complex(b); |
+ } |
+ |
+ return new math.Complex(a.re + b.re, a.im + b.im); |
+ } |
+}; |
+ |
+/** |
+ * @param a : Complex |
+ * @param b : Complex |
+ * @return Complex |
+ * The complex product of <var>a</var> and <var>b</var> |
+ */ |
+jsx.math.mulComplex = |
+jsx.math.Complex.prototype.mul = function(a, b) { |
+ var result = null; |
+ |
+ if (this instanceof jsx.math.Complex) |
+ { |
+ b = a; |
+ a = this; |
+ } |
+ |
+ if (a && b) |
+ { |
+ if (!(a instanceof jsx.math.Complex)) |
+ { |
+ a = new jsx.math.Complex(a); |
+ } |
+ |
+ if (!(b instanceof jsx.math.Complex)) |
+ { |
+ b = new jsx.math.Complex(b); |
+ } |
+ |
+ // a.re, a.im b.re, b.im |
+ // (a, b ) * (c, d ) = (a * c - b * d, a * d + b * c) |
+ return new jsx.math.Complex( |
+ a.re * b.re - a.im * b.im, |
+ a.re * b.im + a.im * b.re); |
+ } |
+}; |
+ |
+/* |
+ * TODO: Hyperbolic functions |
+ */ |
/live/math/float.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/math/bigdecimal.js |
=================================================================== |
--- live/math/bigdecimal.js (nonexistent) |
+++ live/math/bigdecimal.js (revision 520) |
@@ -0,0 +1,398 @@ |
+/** |
+ * <title>PointedEars' JSX: Arbitrary precision decimals</title> |
+ * $Id$ |
+ * @requires math.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2011 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/** |
+ * Arbitrary precision decimal |
+ * |
+ * @param value : Number[optional] |
+ * If <var>scale</var> is not provided: Value to be translated to a |
+ * <code>BigDecimal</code>; the default is <code>NaN</code>. |
+ * If <var>scale</var> is provided: The unscaled internal value of |
+ * the <code>BigDecimal</code>. The value of the <code>BigDecimal</code> |
+ * is (<var>value</var> × 10<sup>−<var>scale</var></sup>). |
+ * @param scale : Number[optional] |
+ * The internal scale value, i. e. the number of times that the internal |
+ * value must be divided by 10 to compute the number represented by |
+ * the <code>BigDecimal</code>. |
+ */ |
+jsx.math.BigDecimal = function (value, scale) { |
+ /* null or undefined */ |
+ if (value == null) |
+ { |
+ value = NaN; |
+ } |
+ |
+ var originalValue, unscaledValue; |
+ |
+ /* null or undefined */ |
+ if (scale == null) |
+ { |
+ this.originalValue = value; |
+ |
+ var s = (+value).toString(); |
+ var digits = (s.match(/\.(\d+)$/) || [, ""])[1]; |
+ |
+ this.scale = digits.length; |
+ this.unscaledValue = value * Math.pow(10, this.scale); |
+ } |
+ else |
+ { |
+ this.originalValue = NaN; |
+ this.unscaledValue = +value; |
+ this.scale = +scale; |
+ } |
+ |
+ /** |
+ * @return Number |
+ */ |
+ this.getOriginalValue = function () { |
+ return this.originalValue; |
+ }; |
+ |
+ /** |
+ * @return Number |
+ */ |
+ this.getUnscaledValue = function () { |
+ return this.unscaledValue; |
+ }; |
+ |
+ /** |
+ * @param value : Number |
+ * @return BigDecimal |
+ */ |
+ this._setUnscaledValue = function (value) { |
+ this.unscaledValue = value; |
+ return this; |
+ }; |
+ |
+ /** |
+ * @return Number |
+ */ |
+ this.getScale = function () { |
+ return this.scale; |
+ }; |
+ |
+ /** |
+ * @param value : Number |
+ * @return BigDecimal |
+ */ |
+ this._setScale = function (value) { |
+ this.scale = value; |
+ return this; |
+ }; |
+}; |
+ |
+/** |
+ * Returns the normalization of two <code>BigDecimal</code> values. |
+ * |
+ * The normalization of two <code>BigDecimal</code> values are two |
+ * <code>BigDecimal</code> values that represent the same values as |
+ * before but with the same scale. |
+ * |
+ * @param value1 : jsx.math.BigDecimal |
+ * @param value2 : jsx.math.BigDecimal |
+ * @returns Array of the normalized values, in the order in which their |
+ * corresponding original values were passed. |
+ */ |
+jsx.math.BigDecimal.normalize = (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function (value1, value2) { |
+ var scale1 = value1.getScale(); |
+ var scale2 = value2.getScale(); |
+ if (scale1 == scale2) |
+ { |
+ return [value1, value2]; |
+ } |
+ |
+ var switched = false; |
+ if (scale1 < scale2) |
+ { |
+ switched = true; |
+ var tmp = value2; |
+ value2 = value1; |
+ value1 = tmp; |
+ |
+ var tmp = scale2; |
+ scale2 = scale1; |
+ scale1 = tmp; |
+ } |
+ |
+ value2 = new BigDecimal( |
+ value2.getUnscaledValue() * Math.pow(10, scale1 - scale2), |
+ scale1); |
+ |
+ if (switched) |
+ { |
+ tmp = value2; |
+ value2 = value1; |
+ value1 = tmp; |
+ } |
+ |
+ return [value1, value2]; |
+ }; |
+}()); |
+ |
+jsx.math.BigDecimal.extend(null, { |
+ /** |
+ * Returns a <code>BigDecimal</code> whose value is |
+ * (<code>-this.getUnscaledValue()</code>), |
+ * and whose scale is <code>this.getScale()</code>. |
+ * |
+ * @memberOf jsx.math.BigDecimal.prototype |
+ * @return BigDecimal |
+ */ |
+ negate: (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function () { |
+ return new BigDecimal(-this.getUnscaledValue(), this.getScale()); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Adds a number to the <code>BigDecimal</code> and returns the result. |
+ * The original internal value remains unchanged. |
+ * |
+ * @param summand2 : jsx.math.BigDecimal|number |
+ * The <code>BigDecimal</code> or <code>Number</code> to be added. |
+ * If a <code>Number</code>, <var>summand2</var> is converted to a |
+ * <code>BigDecimal</code> first. |
+ * @returns {jsx.math.BigDecimal} |
+ */ |
+ add: (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function (summand2) { |
+ if (!(summand2 instanceof BigDecimal)) |
+ { |
+ summand2 = new BigDecimal(summand2); |
+ } |
+ |
+ var normalized = BigDecimal.normalize(this, summand2); |
+ |
+ var summand1 = normalized[0].getUnscaledValue(); |
+ var summand2 = normalized[1].getUnscaledValue(); |
+ |
+ /* Improve precision by using the smaller summand first */ |
+ if (summand2 < summand1) |
+ { |
+ var tmp = summand1; |
+ summand1 = summand2; |
+ summand2 = tmp; |
+ } |
+ |
+ var d = new BigDecimal(summand1 + summand2, normalized[0].getScale()); |
+ |
+ return d; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Subtracts a number from the <code>BigDecimal</code> and returns the result. |
+ * The original internal value remains unchanged. |
+ * |
+ * @memberOf jsx.math.BigDecimal.prototype |
+ * @param subtrahend : jsx.math.BigDecimal|number |
+ * The <code>BigDecimal</code> or <code>Number</code> to be subtracted. |
+ * If a <code>Number</code>, <var>summand2</var> is converted to a |
+ * <code>jsx.math.BigDecimal</code> first. |
+ * @returns {jsx.math.BigDecimal} |
+ * @see jsx.math.BigDecimal.prototype#add |
+ */ |
+ subtract: (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function (subtrahend) { |
+ if (!(subtrahend instanceof BigDecimal)) |
+ { |
+ subtrahend = new BigDecimal(subtrahend); |
+ } |
+ |
+ return this.add(subtrahend.negate()); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Multiplies the <code>jsx.math.BigDecimal</code> with a number and returns the result. |
+ * The original internal value remains unchanged. |
+ * |
+ * @param factor2 : jsx.math.BigDecimal|number |
+ * The <code>jsx.math.BigDecimal</code> or <code>Number</code> to be multiplied by. |
+ * If a <code>Number</code>, <var>summand2</var> is converted to a |
+ * <code>jsx.math.BigDecimal</code> first. |
+ * @returns {jsx.math.BigDecimal} |
+ */ |
+ multiply: (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function (factor2) { |
+ if (!(factor2 instanceof BigDecimal)) |
+ { |
+ factor2 = new BigDecimal(factor2); |
+ } |
+ |
+ var normalized = BigDecimal.normalize(this, factor2); |
+ |
+ var factor1_value = normalized[0].getUnscaledValue(); |
+ var factor2_value = normalized[1].getUnscaledValue(); |
+ |
+ var d = new BigDecimal(factor1_value * factor2_value, 2 * normalized[0].getScale()); |
+ |
+ return d; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Compares this <code>BigDecimal</code> with the specified BigDecimal. |
+ * |
+ * @param d : jsx.math.BigDecimal |
+ * @return Number |
+ * <code>< -1</code> if this <code>BigDecimal</code> is smaller than <var>d</var>, |
+ * <code>> 1</code> if it is greater than <var>d</var>, |
+ * <code>0</code> if they are equal. |
+ */ |
+ compareTo: (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function (d) { |
+ if (!(d instanceof BigDecimal)) |
+ { |
+ d = new BigDecimal(d); |
+ } |
+ |
+ var normalized = BigDecimal.normalize(this, d); |
+ |
+ return normalized[0].getUnscaledValue() - normalized[1].getUnscaledValue(); |
+ }; |
+ }()), |
+ |
+ equals: (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function (d) { |
+ if (!(d instanceof BigDecimal)) |
+ { |
+ d = new BigDecimal(d); |
+ } |
+ |
+ return this.getUnscaledValue() == d.getUnscaledValue() |
+ && this.getScale() == d.getScale(); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns a <code>BigDecimal</code> which is numerically equal to |
+ * this one but with any trailing zeros removed from the representation. |
+ * |
+ * @return jsx.math.BigDecimal |
+ */ |
+ stripTrailingZeros: (function () { |
+ var BigDecimal = jsx.math.BigDecimal; |
+ |
+ return function () { |
+ var unscaledString = this.getUnscaledValue().toString(); |
+ /* FIXME: new BigDecimal(2, 21) */ |
+ var parts = unscaledString.match(/(0+)$/) || ["", ""]; |
+ var insignificantLength = parts[1].length; |
+ if (insignificantLength > 0) |
+ { |
+ return new BigDecimal( |
+ unscaledString.substring(0, unscaledString.length - insignificantLength), |
+ -insignificantLength); |
+ } |
+ |
+ return this; |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns the <code>Number</code> value represented by the |
+ * <code>BigDecimal</code>. |
+ * |
+ * @returns {Number} |
+ */ |
+ valueOf: function () { |
+ return this.getUnscaledValue() * Math.pow(10, -this.getScale()); |
+ }, |
+ |
+ /** |
+ * Returns the JSON representation of the <code>BigDecimal</code> |
+ * |
+ * @returns {String} |
+ */ |
+ toJSON: function () { |
+ return "{" + [ |
+ "'originalValue': " + this.getOriginalValue(), |
+ "'unscaledValue': " + this.getUnscaledValue(), |
+ "'scale': " + this.getScale() |
+ ].join(", ") |
+ + "}"; |
+ }, |
+ |
+ /** |
+ * Returns the string representation of value represented by the |
+ * <code>BigDecimal</code>, without using exponent notation. |
+ * |
+ * @returns {String} |
+ */ |
+ toPlainString: function () { |
+ var unscaledValue = this.getUnscaledValue(); |
+ var unscaledString = unscaledValue.toString(); |
+ var unscaledLength = unscaledString.length; |
+ var scale = this.getScale(); |
+ var result; |
+ var a = []; |
+ |
+ if (scale - unscaledLength > 0) |
+ { |
+ a.length = scale - unscaledLength + 1; |
+ result = "0." + a.join("0") + unscaledString; |
+ } |
+ else if (scale - unscaledLength < 0) |
+ { |
+ a.length = -scale + 1; |
+ |
+ var decimals = unscaledString.substring(unscaledLength - scale); |
+ result = unscaledString.slice(0, unscaledLength - scale) |
+ + a.join("0") |
+ + (decimals ? "." + decimals : ""); |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Returns the string representation of the value of |
+ * the <code>BigDecimal</code>, rounded if necessary. |
+ * |
+ * @returns string |
+ * @see jsx.math.BigDecimal.prototype#valueOf() |
+ */ |
+ toString: function () { |
+ return this.valueOf().toString(); |
+ } |
+}); |
\ No newline at end of file |
/live/math/bigdecimal.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/math/algebra.js |
=================================================================== |
--- live/math/algebra.js (nonexistent) |
+++ live/math/algebra.js (revision 520) |
@@ -0,0 +1,526 @@ |
+/** |
+ * <title>PointedEars' JSX: Math Library: Linear Algebra</title> |
+ * @requires object.js |
+ * @requires types.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2000-2011 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/** @subsection Matrix Operations */ |
+ |
+/** |
+ * Creates a <code>Matrix</code> object encapsulating an m × n matrix |
+ * represented by an array of arrays. |
+ * |
+ * Different to a "multi-dimensional" array, a <code>Matrix</code>'s |
+ * elements are indexed (like in math) starting from 1, i. e. the |
+ * first element of the first row has the coordinates <code>[1, 1]</code>. |
+ * |
+ * @param rows : optional Array |
+ * The array containing the elements of the new matrix or the number |
+ * of rows of the new matrix. |
+ * If not provided, the matrix has only one element, <code>0</code>. |
+ * @param columns: optional Number |
+ * The number of columns of the matrix, if <var>rows</var> is not an |
+ * <code>Array</code> |
+ * @param fill: optional Number |
+ * The number the matrix should be filled with, if <var>rows</var> |
+ * is not an <code>Array</code>. The default is <code>0</code>. |
+ */ |
+jsx.math.Matrix = (function () { |
+ var isMethod = jsx.object.isMethod; |
+ |
+ return function (rows, columns, fill) { |
+ this.data = [0]; |
+ |
+ if (rows) |
+ { |
+ if (jsx.types.isArray(rows)) |
+ { |
+ if (isMethod(rows, "slice")) |
+ { |
+ for (var i = rows.length; i--;) |
+ { |
+ this.data[i] = rows[i].slice(); |
+ } |
+ } |
+ else |
+ { |
+ for (var i = rows.length; i--;) |
+ { |
+ var row = rows[i]; |
+ this.data[i] = []; |
+ for (var j = row.length; j--;) |
+ { |
+ this.data[i][j] = row[j]; |
+ } |
+ } |
+ } |
+ } |
+ else |
+ { |
+ var a = []; |
+ |
+ var tmp = []; |
+ tmp.length = columns; |
+ |
+ if (typeof fill == "undefined") |
+ { |
+ fill = 0; |
+ } |
+ |
+ for (var j = 0; j < columns; ++j) |
+ { |
+ tmp[j] = fill; |
+ } |
+ |
+ for (var i = 0; i < rows; ++i) |
+ { |
+ if (i == 0) |
+ { |
+ a.push(tmp); |
+ } |
+ else |
+ { |
+ a.push(tmp.slice()); |
+ } |
+ } |
+ |
+ this.data = a; |
+ } |
+ } |
+ }; |
+}()); |
+ |
+/** |
+ * @param A |
+ * @return number |
+ * the row dimension of <code>A</code>; |
+ * 1 if <code>A</code> is a scalar, |
+ * greater than 1 if <code>A</code> is a vector or a matrix. |
+ * |
+ * <pre> |
+ * Term X x dimRow(x) |
+ * -------------------------------------------------------- |
+ * scalar 1 1 1 |
+ * |
+ * mX1 col vector (1) |
+ * (2) [1, 2, ..., m] m |
+ * (.) |
+ * (m) |
+ * |
+ * 1Xn row vector (1 2 ... n) [[1, 2, ..., n]] 1 |
+ * |
+ * (1 2 ... n) [[1, 2, ..., n], |
+ * mXn matrix (2 . ... .) [2, ... ], m |
+ * (. . ... .) [... ], |
+ * (m . ... .) [m, ... ]] |
+ * </pre> |
+ */ |
+jsx.math.Matrix.dimRow = function(A) { |
+ return (Array.isArray(A) |
+ ? A.length |
+ : 1); |
+}; |
+ |
+/** |
+ * @param a |
+ * @return number |
+ * The column dimension of <code>A</code>, provided all |
+ * rows of <code>A</code> have the same length (as the first one); |
+ * 0 if <code>A</code> is a scalar, |
+ * greater than 0 if <code>A</code> is a vector or a matrix. |
+ * |
+ * <pre> |
+ * Term X x dimCol(x) |
+ * -------------------------------------------------------- |
+ * scalar 1 1 0 |
+ * |
+ * mX1 col vector (1) |
+ * (2) [1, 2, ..., m] 1 |
+ * (.) |
+ * (m) |
+ * |
+ * 1Xn row vector (1 2 ... n) [[1, 2, ..., n]] n |
+ * |
+ * (1 2 ... n) [[1, 1, ..., n], |
+ * mXn matrix (2 . ... .) [2, ... ], n |
+ * (. . ... .) [... ], |
+ * (m . ... .) [m, ... ]] |
+ * </pre> |
+ */ |
+jsx.math.Matrix.dimCol = function(a) { |
+ return ( |
+ typeof (a = a[0]) != "undefined" |
+ ? (Array.isArray(a[0]) ? a[0].length : 1) |
+ : 0); |
+}; |
+ |
+/** |
+ * @param a |
+ * @return the square root of the product of A's row dimension |
+ * and its column dimension. The return value indicates |
+ * whether a matrix A is square or not; for square matrices, |
+ * the return value is an integer. |
+ * @see jsx.math#add() |
+ */ |
+jsx.math.Matrix.dim = function(a) { |
+ return Math.sqrt(jsx.math.Matrix.dimRow(a) * jsx.math.Matrix.dimCol(a)); |
+}; |
+ |
+jsx.math.Matrix.prototype = { |
+ constructor: Math.Matrix, |
+ |
+ putValue: function (coords, value) { |
+ var tmp = this.data; |
+ |
+ for (var i = 0, len = coords.length; i < len - 1; ++i) |
+ { |
+ var arg = coords[i] - 1; |
+ if (arg < 0) |
+ { |
+ jsx.throwThis("jsx.math.CoordinateError"); |
+ return; |
+ } |
+ |
+ if (typeof tmp[arg] == "undefined") |
+ { |
+ tmp[arg] = []; |
+ } |
+ |
+ tmp = tmp[arg]; |
+ } |
+ |
+ var lastCoord = coords.slice(coords.length - 1); |
+ if (lastCoord < 1) |
+ { |
+ jsx.throwThis("jsx.math.CoordinateError"); |
+ return; |
+ } |
+ |
+ tmp[lastCoord - 1] = value; |
+ |
+ return tmp[lastCoord - 1]; |
+ }, |
+ |
+ getValue: function (coords) { |
+ var tmp = this.data; |
+ |
+ for (var i = 0, len = coords.length; i < len; ++i) |
+ { |
+ var arg = coords[i] - 1; |
+ tmp = tmp[arg]; |
+ |
+ if (typeof tmp == "undefined") |
+ { |
+ break; |
+ } |
+ } |
+ |
+ return tmp; |
+ }, |
+ |
+ inc: function (coords) { |
+ var |
+ v = +this.getValue.apply(this, coords); |
+ |
+ return this.putValue.apply( |
+ this, coords.concat((isNaN(v) ? 0 : +v) + 1)); |
+ }, |
+ |
+ toString: |
+ /** |
+ * Returns the matrix converted to string, i.e. |
+ * elements of arrays arranged in rows and columns. |
+ * Makes use of string.js#format() if available. |
+ * |
+ * @param m : optional Matrix |
+ * @return string |
+ * @todo |
+ */ |
+ function(m) { |
+ if (!m) |
+ { |
+ m = this; |
+ } |
+ |
+ if ((m = m.data)) |
+ { |
+ var |
+ as = [], |
+ bHasFormat = (typeof format != "undefined"), |
+ maxLen; |
+ |
+ if (bHasFormat) |
+ { |
+ maxLen = Math.max(m); |
+ } |
+ |
+ for (var i = 0, len = m.length; i < len; i++) |
+ { |
+ var row = m[i]; |
+ if (bHasFormat) |
+ { |
+ as[i] = format("%*$s", row, maxLen + 1); |
+ } |
+ else |
+ { |
+ as[i] = row.join(" "); |
+ } |
+ } |
+ }n |
+ |
+ return as.join("\n"); |
+ }, |
+ |
+ minor: |
+ /** |
+ * Returns the minor of the matrix, i.e. the matrix produced |
+ * by removing the original's first row and i-th column. |
+ * |
+ * @param i : number |
+ * @param m : optional Matrix |
+ * @return string |
+ * @todo |
+ */ |
+ function (i, m) { |
+ if (!m) |
+ { |
+ m = this; |
+ } |
+ |
+ if ((m = m.data)) |
+ { |
+ m = new Math.Matrix(m); |
+ m.data = m.data.slice(1); |
+ var j; |
+ for (m, j = (m = m.data).length; j--;) |
+ { |
+ m[j].splice(i, 1); |
+ } |
+ } |
+ |
+ return m; |
+ } |
+}; |
+ |
+/** |
+ * @param a |
+ * @param b |
+ * @return Array |
+ * The sum of the matrixes <var>a</var> and <var>b</var> |
+ */ |
+jsx.math.add = function(a, b) { |
+ /* |
+ * x00 x01 x02 y00 y01 y02 x00+y00 x01+y01 x02+y02 |
+ * x10 x11 x12 + y10 y11 y12 = x10+y10 x11+y11 x12+y12 |
+ * x20 x21 x22 y20 y21 y22 x20+y20 x21+y21 x22+y22 |
+ */ |
+ var result = new Array(); |
+ |
+ var dimARow, |
+ dimACol = jsx.math.dimCol(a), |
+ dimBRow, |
+ dimBCol = Math.dimCol(b); |
+ if ((dimARow = jsx.math.dimRow(a)) == (dimBRow = Math.dimRow(b)) |
+ && (dimACol == dimBCol)) |
+ { |
+ for (var i = 0; i < dimARow; i++) |
+ { |
+ result[i] = []; |
+ for (var j = 0; j < dimACol; j++) |
+ { |
+ result[i][j] = a[i][j] + b[i][j]; |
+ } |
+ } |
+ } |
+ else |
+ { |
+ throwException(new Math.InvalidOperandError( |
+ "First matrix's dimension (" + dimARow + "," + dimACol |
+ + ") != second matrix's dimension (" + dimBRow + ", " + dimBCol + ")")); |
+ return null; |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * This routine uses the dimensions of <var>a</var> and <var>b</var> |
+ * to choose the corresponding multiplication routine. The argument |
+ * dimensions, the dimension of the corresponding result, and the |
+ * multiplication routine that is called are shown in the following |
+ * table. |
+ <pre> |
+ B |
+ |
+ A qXn 1Xn qX1 |
+ Matrix row Vector col Vector scalar |
+ |
+ mXq mXn Matrix ERROR mX1 col Vector mXq Matrix |
+ Matrix MatrixMatrixMultiply MatrixVectorMultiply MatrixScalarMultiply |
+ |
+ 1Xq 1Xn row Vector ERROR scalar 1Xq Vector |
+ row Vector VectorMatrixMultiply VectorScalarMultiply |
+ |
+ mX1 ERROR mXn Matrix (outer product) ERROR mX1 Vector |
+ col Vector OuterProductMatrix VectorScalarMultiply |
+ |
+ qXn Matrix 1Xn row Vector qX1 col Vector scalar |
+ scalar MatrixScalarMultiply VectorScalarMultiply VectorScalarMultiply standard multipliction |
+ </pre> |
+ |
+ * @param a |
+ * @param b |
+ * @return number|Array |
+ * @throws Math#InvalidOperandError |
+ */ |
+jsx.math.multiply = function(a, b) { |
+ /* |
+ * a00 a01 ... b00 b01 ... |
+ * a10 a11 ... * b10 b11 ... |
+ * ... ... ... ... ... ... |
+ * |
+ * a00*b00+a01*b10+...*... a00*b01+a01*b11+...*... a00*...+a01*...+...*... |
+ * = a10*b10+a11*b10+...*... a10*b01+a11*b11+...*... a00*...+a01*...+...*... |
+ * ...*...+...*...+...+... ...*b01+...*b11+...*... a00*...+a01*...+...*... |
+ */ |
+ |
+ var dimRowA = Math.dimRow(a); |
+ var dimColA = Math.dimCol(a); |
+ var dimRowB = Math.dimRow(b); |
+ var dimColB = Math.dimCol(b); |
+ if ((dimRowA && dimColA) || (dimRowB && dimColB)) |
+ { |
+ if (dimRowA || dimRowB) |
+ { |
+// if (dimRowX && d |
+ var result = matrixMatrixMultiply(a, b); |
+ } |
+ else if (Array.isArray(a) && !Array.isArray(b)) |
+ { |
+ if (Array.isArray(a[0])) |
+ { |
+ // ... |
+ } |
+ result = matrix; |
+ } |
+ |
+ result = new Array(); |
+ // matrixMultiply |
+ } |
+ else |
+ { |
+ result = a * b; |
+ } |
+ |
+ var x_len = a.length; |
+ var y_len = b.length; |
+ for (var i = 0, j, xi_len, sum = 0, k; |
+ i < x_len; |
+ i++) |
+ { |
+ result[i] = new Array(); |
+ xi_len = a[i].length; |
+ for (j = 0; |
+ j < xi_len; |
+ j++, sum = 0) |
+ { |
+ if (y_len != xi_len) |
+ { |
+ jsx.throwThis(new jsx.math.InvalidOperandError( |
+ "First matrix's column dimension (" + xi_len |
+ + ") != second matrix's row dimension (" + y_len + ")")); |
+ return null; |
+ } |
+ sum += a[i][k] + b[k][i]; |
+ } |
+ result[i][j] = sum; |
+ } |
+ |
+ if (result.length == 1 && result[i].length == 1) |
+ { |
+ result = result[0][0]; |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Computes the intersection of two orthotopes (intervals, rectangles, |
+ * rectangular cuboids, etc.) |
+ * <pre> |
+ * ,------------------. |
+ * | ,----+------. |
+ * | |/ / | | |
+ * | | / /| | |
+ * | `----+------' |
+ * `------------------' |
+ * </pre> |
+ * <p> |
+ * Each orthotope is given as a list of Arrays of numbers (which may |
+ * be encapsulated in a Vector), where each Array or Vector consists |
+ * of the coordinates of the adjacent vertices of the orthotope |
+ * (for a rectangle, the x and y coordinates of the left top and |
+ * right bottom corners). FIXME: Not reliable in 3D+! |
+ * </p><p> |
+ * If you need to compute the intersection of more than two |
+ * orthotopes, you can compute the intersection of their |
+ * intersections. |
+ * </p> |
+ * @param orthotope1 : Array[Array[double]|Math.Vector] |
+ * First orthotope |
+ * @param orthotope2 : Array[Array[double]|Math.Vector] |
+ * Second orthotope |
+ * @return Array[Array|Vector] |
+ * An Array of two Arrays or Vectors of, each of which holds one |
+ * vector pointing to an adjacent vertex of the resulting orthotope |
+ * that includes all points that the input orthotopes have in common. |
+ */ |
+jsx.math.intersect = function (orthotope1, orthotope2) { |
+ var result = [[], []]; |
+ |
+ var ortho1LeftTop = orthotope1[0]; |
+ for (var i = ortho1LeftTop.length; i--;) |
+ { |
+ result[0][i] = (ortho1LeftTop[i] < orthotope2[0][i]) |
+ ? orthotope2[0][i] |
+ : ortho1LeftTop[i]; |
+ } |
+ |
+ var ortho1RightBottom = orthotope1[1]; |
+ for (i = ortho1RightBottom.length; i--;) |
+ { |
+ result[1][i] = (ortho1RightBottom[i] > orthotope2[1][i]) |
+ ? orthotope2[1][i] |
+ : ortho1RightBottom[i]; |
+ } |
+ |
+ return result; |
+}; |
+ |
+jsx.math.CoordinateError = function () { |
+ arguments.callee._super.call(this, "Coordinate must be 1 or greater") |
+}; |
+ |
+jsx.math.CoordinateError.extend(jsx.InvalidArgumentError, { |
+ name: "jsx.math.CoordinateError" |
+}); |
\ No newline at end of file |
/live/math/algebra.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/math/base.js |
=================================================================== |
--- live/math/base.js (nonexistent) |
+++ live/math/base.js (revision 520) |
@@ -0,0 +1,136 @@ |
+/** |
+ * <title>PointedEars' JSX: Math Library: Number Systems</title> |
+ * @requires object.js |
+ * @requires types.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2000-2011 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/** |
+ * @author |
+ * Copyright (c) 2003, 2004 Thomas Lahn <math.js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/math.js |
+ * @param nDec : optional number = 0 |
+ * Optional. Decimal number to be converted to another number |
+ * system. No conversion is performed if <var>nDec</var> is |
+ * the default 0 (zero). |
+ * @param iBase : optional number = 2 |
+ * Optional. Base of the number system to which <var>nDec</var> |
+ * should be converted. Use 2 for binary, 8 for octal, 16 for |
+ * hexadecimal aso. No conversion is performed if <var>iBase</var> |
+ * ist 10 (decimal, the default) or not provided. |
+ * @param iLength : optional number |
+ * Optional. If provided and greater that 0, this argument |
+ * specifies the length of the resulting string. If the result |
+ * is shorter than <var>iLength</var>, leading zeroes are |
+ * added until the result is as long as <var>iLength</var>. |
+ * @return type string |
+ * <var>nDec</var> converted to the number system specified |
+ * with <var>iBase</var> in lowercase, optionally with leading |
+ * zeroes. Uses Number.toString(<var>iBase</var>) is supported, an |
+ * algorithm to convert both the integer and the fractional |
+ * part otherwise. |
+ * @see Global#parseFloat(any) |
+ * @see Global#parseInt(any) |
+ */ |
+Math.dec2base = function(nDec, iBase, iLength) { |
+ // default values |
+ if (!nDec) |
+ { |
+ nDec = 0; |
+ } |
+ |
+ if (!iBase) |
+ { |
+ /* binary */ |
+ iBase = 2; |
+ } |
+ |
+ var sResult = ""; |
+ /* if converting with toString() is poss. */ |
+ if ((15).toString(16).length == 1) |
+ { |
+ sResult = Number(nDec).toString(iBase); |
+ } |
+ else |
+ { |
+ var f = nDec % 1; |
+ var aDigits = new Array(); |
+ |
+ var i; |
+ if (nDec != 0 && iBase != 10) |
+ { |
+ /* |
+ * No calculation required if number is 0 or target base is decimal |
+ */ |
+ |
+ /* Create array of _required_ digits */ |
+ for (i = 0; i < (iBase < 10 ? iBase : 10); i++) |
+ { |
+ aDigits[aDigits.length] = i; |
+ } |
+ |
+ if (iBase > 10) |
+ { |
+ var iFirstLetter = "a".charCodeAt(0); |
+ for (i = iFirstLetter; i < iFirstLetter + iBase - 10; i++) |
+ { |
+ aDigits[aDigits.length] = String.fromCharCode(i); |
+ } |
+ } |
+ |
+ nDec = Math.floor(nDec); |
+ while (nDec > 0) |
+ { |
+ sResult = aDigits[nDec % iBase] + sResult; |
+ nDec = Math.floor(nDec / iBase); |
+ } |
+ |
+ if (f > 0) |
+ { |
+ sResult += "."; |
+ |
+ while (f > 0 && sResult.length < 255) |
+ { |
+ f *= iBase; |
+ |
+ /* get integer part */ |
+ i = Math.floor(f); |
+ |
+ /* append fraction digit */ |
+ sResult += aDigits[i]; |
+ f -= i; |
+ } |
+ } |
+ } |
+ } |
+ |
+ if (iLength) |
+ { |
+ while (sResult.length < iLength) |
+ { |
+ sResult = "0" + sResult; |
+ } |
+ } |
+ |
+ return sResult; |
+}; |
/live/math/base.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/math/integer.js |
=================================================================== |
--- live/math/integer.js (nonexistent) |
+++ live/math/integer.js (revision 520) |
@@ -0,0 +1,321 @@ |
+/** |
+ * <title>PointedEars' JSX: Math Library: Integer arithmetics</title> |
+ * @requires object.js |
+ * @requires types.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2000-2011 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/** |
+ * Returns the greatest common divisor (GCD) of two integers |
+ * <code>a</code> and <code>b</code>, implementing (the optimized form of) the |
+ * Euclidean algorithm (also called Euclid's algorithm). The |
+ * GCD of two integer arguments is the largest positive integer |
+ * that both arguments are integer multiples of, i.e. by which |
+ * either argument can be divided without remainder. Since |
+ * integers are required, the floor of <code>a</code> and <code>b</code> will |
+ * be used for computation. |
+ * |
+ * @param a : number |
+ * @param b : number |
+ * @return type number |
+ * The GCD of <code>a</code> and <code>b</code>; |
+ * <code>NaN</code> if an argument is not a number. |
+ * @see Math#floor(number) |
+ */ |
+Math.gcd = function(a, b) { |
+ if (isNaN(a) || isNaN(b)) |
+ { |
+ return Number.NaN; |
+ } |
+ |
+ a = Math.floor(a); |
+ b = Math.floor(b); |
+ var c; |
+ |
+ while (b != 0) |
+ { |
+ c = a % b; |
+ a = b; |
+ b = c; |
+ } |
+ |
+ return Math.abs(a); |
+}; |
+ |
+/** |
+ * Returns the greatest common divisor (GCD) of two or more |
+ * integers, implementing (the optimized form of) the Euclidean |
+ * algorithm (also called Euclid's algorithm). The GCD of |
+ * integer arguments is the largest positive integer that all |
+ * arguments are integer multiples of, i.e. by which either |
+ * argument can be divided without remainder. Since integers |
+ * are required, the floor of the arguments will be used for |
+ * computation. |
+ * |
+ * @return number |
+ * The GCD of the arguments; |
+ * <code>NaN</code> if one or more arguments are not a number. |
+ * @see Math#floor(number) |
+ */ |
+Math.gcdN = function(a, b) { |
+ /* Currently supports only 2 integers */ |
+ return Math.gcd(a, b); |
+}; |
+ |
+/** |
+ * Returns the least common multiple (LCM) of two integers |
+ * <code>a</code> and <code>b</code>. The LCM of two integer arguments is |
+ * the smallest positive integer that is a multiple of the |
+ * arguments. If there is no such positive integer, i.e., |
+ * if either argument is zero, then <code>lcm(a, b)</code> |
+ * is defined to be zero. Since integers are required, the |
+ * floor of <code>a</code> and <code>b</code> will be used for computation. |
+ * |
+ * @param a : number |
+ * @param b : number |
+ * @return number |
+ * The LCM of <code>a</code> and <code>b</code>; |
+ * <code>0</code> if an argument is <code>0</code>; |
+ * <code>NaN</code> if an argument is not a number. |
+ * @see Math#floor(number) |
+ * @see Math#gcd(number, number) |
+ */ |
+Math.lcm = function(a, b) { |
+ if (isNaN(a) || isNaN(b)) |
+ { |
+ return Number.NaN; |
+ } |
+ |
+ if (!a || !b) |
+ { |
+ return 0; |
+ } |
+ |
+ a = Math.floor(a); |
+ b = Math.floor(b); |
+ |
+ return ((a * b) / Math.gcd(a, b)); |
+}; |
+ |
+/** |
+ * @author (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ * @param n : number |
+ * If <code>n</code> is not an integer, <code>Math.floor(n)</code> is used. |
+ * @return number |
+ * The factorial of <code>n</code> (<code>n</code><code><b>!</b></code>) |
+ * which is (for practical reasons) implemented here as follows: |
+ * @ifdef{MathML2} |
+ * <math> |
+ * <apply> |
+ * <eq/> |
+ * <apply> |
+ * <factorial/> |
+ * <ci> n </ci> |
+ * </apply> |
+ * <piecewise> |
+ * <piece> |
+ * <cn>1</cn> |
+ * <apply><lt/> <ci> n </ci> <cn> 2 </cn></apply> |
+ * </piece> |
+ * <piece> |
+ * <mrow> |
+ * <ci> n </ci> |
+ * <mo>⁢</mo> |
+ * <mfenced> |
+ * <apply> |
+ * <factorial/> |
+ * <apply><minus/> <ci> n </ci> <cn> 1 </cn></apply> |
+ * </apply> |
+ * </mfenced> |
+ * </mrow> |
+ * <apply><gt/> <ci> n </ci> <cn> 1 </cn></apply> |
+ * </piece> |
+ * </piecewise> |
+ * </apply> |
+ * </math> |
+ * @else |
+ * <table> |
+ * <tr valign="top"> |
+ * <td rowspan="2"><code>n<code><b>!</b></td> |
+ * <td>n < 2:</td>1; (strict: 0<b>!</b> = 1<b>!</b> := 1)</td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <td>n > 1:</td>n * (n - 1)<b>!</b></td> |
+ * </tr> |
+ * <table> |
+ * @endif |
+ * |
+ * Unlike common recursive implementations, the algorithm is |
+ * implemented iterative here, saving stack space and thus |
+ * allowing larger factorials to be computed. |
+ * |
+ * @throws Math#OverflowError |
+ */ |
+Math.fac = function(n) { |
+ if (n % 1) |
+ { |
+ n = Math.floor(n); |
+ } |
+ |
+ var result = 1; |
+ |
+ for (var i = 2; i <= n; result *= i++) |
+ { |
+ if (result == Number.POSITIVE_INFINITY) |
+ { |
+ result = 0; |
+ // [Exception] <- [MathErrorException] <- [OverflowException] } |
+ throwException(new Math.OverflowError("fac")); |
+ break; |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * @author (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ * @param nBase : number |
+ * @param iExponent : number |
+ * @return number |
+ * <var>nBase</var> to the power of <var>iExponent</var> |
+ */ |
+Math.powInt = function(nBase, iExponent) { |
+ var i = iExponent; |
+ var result = 1.0; |
+ |
+ while (i > 0) |
+ { |
+ if (i % 2) |
+ { |
+ result *= nBase; |
+ } |
+ i = Math.floor(i / 2); |
+ nBase *= nBase; |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Computes the base <code>nBase</code> powered |
+ * by the exponent <code>nExponent</code> |
+ * (<code>nBase</code>^<code>nExponent</code>). |
+ * Uses the Math.exp() and Math.log() methods to |
+ * workaround the bug in Math.pow() that positive |
+ * roots of certain negative values, like root(-9, |
+ * 1/3) cannot be computed (results in NaN there) |
+ * but should be. |
+ * |
+ * @author |
+ * (c) 2000-2004 Thomas Lahn <math.js@PointedEars.de> |
+ * @param nBase : number |
+ * @param nExponent : number |
+ * @throws Math#InvalidArgumentError |
+ * @return type number |
+ * NaN if computation result lies beyond real numbers, |
+ * the result (as double-precision floating-point number) |
+ * otherwise. |
+ */ |
+Math.power = function(nBase, nExponent) { |
+ var result; |
+ |
+ if (nBase != 0) |
+ { |
+ /* e^(Exponent * ln(|Base|)) */ |
+ result = Math.exp(nExponent * Math.log(Math.abs(nBase))); |
+ if (nBase < 0) |
+ { |
+ if (!(nExponent % 1)) |
+ { |
+ if (Math.floor(nExponent) % 2) |
+ { |
+ result = -result; |
+ } |
+ } |
+ else |
+ { |
+ result = Number.NaN; |
+ /* [Exception]<- [Math.MathError] <- [Math.InvalidArgumentError] */ |
+ throwException(new Math.InvalidArgumentError( |
+ "power(" + nBase + ", " + nExponent + ")")); |
+ } |
+ } |
+ else if (nBase == 0 && nExponent == 0) |
+ { |
+ result = 0; |
+ throwException(new Math.InvalidArgumentError( |
+ "power(" + nBase + ", " + nExponent + ")")); |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * @return type number |
+ * The logarithm of <code>x</code> to the base <code>nBase</code>. |
+ * |
+ * @author (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ * @param x : number |
+ * @param nBase : number |
+ */ |
+Math.logN = function(x, nBase) { |
+ return Math.log(x) / Math.log(nBase); |
+}; |
+ |
+/** |
+ * @author |
+ * (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @param x : number |
+ * @return type number |
+ * The logarithm digitalis (<code>ld</code>) of <code>x</code> |
+ * (the logarithm of <code>x</code> to the base 2). |
+ */ |
+Math.log2 = function(x) { |
+ return Math.logN(x, 2); |
+}; |
+ |
+/** |
+ * Computes the decimal logarithm (<code>lg</code>) of |
+ * <code>x</code> (the log. of <code>x</code> to the base 10). |
+ * |
+ * @author (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ * @param x : number |
+ * @return number |
+ * The logarithm of <var>x</var> to the base 10 |
+ */ |
+Math.log10 = function(x) { |
+ return Math.logN(x, 10); |
+}; |
+ |
+/** |
+ * @author |
+ * (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ * @param x : number |
+ * @return type number |
+ * the reciprocal of <code>x</code> (<code>1/x</code>). |
+ */ |
+Math.rec = function(x) { |
+ return (1 / x); |
+}; |
/live/math/integer.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/math/probability.js |
=================================================================== |
--- live/math/probability.js (nonexistent) |
+++ live/math/probability.js (revision 520) |
@@ -0,0 +1,187 @@ |
+/** |
+ * <title>PointedEars' JSX: Math Library: Stochastics</title> |
+ * @requires object.js |
+ * @requires types.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2000-2011 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/** |
+ * Returns a uniformly distributed random value in the |
+ * closed interval |
+ * [<var>iLeftBorder</var>, <var>iRightBorder</var>] |
+ * (including <var>iLeftBorder</var> and |
+ * <var>iRightBorder</var>). |
+ * |
+ * @author |
+ * (C) 2000-2003 Thomas Lahn <math.js@PointedEars.de> |
+ * @param nLeftBorder : optional number |
+ * Left border of the interval. If left out, <code>null</code> |
+ * or <code>undefined</code>, <code>-Number.MAX_VALUE</code> is |
+ * assumed. |
+ * @param nRightBorder : optional number |
+ * Right border of the interval. If left out, <code>null</code> |
+ * or <code>undefined</code>, <code>Number.MAX_VALUE</code> is |
+ * assumed. |
+ * @param fRandom : Function = Math.random |
+ * Function to be used for calculating the uniform random number |
+ * in the open unit interval (0.0, 1.0) (excluding 0.0 and 1.0). |
+ * If left out, <code>Math.random()</code> is used where the |
+ * the random number generator is seeded from the current time. |
+ * @return number |
+ * @see Math#random() |
+ */ |
+Math.rand = function(nLeftBorder, nRightBorder, fRandom) { |
+ if (nLeftBorder == null || typeof nLeftBorder == "undefined") |
+ { |
+ iLeftBorder = -Number.MAX_VALUE; |
+ } |
+ |
+ if (nRightBorder == null || typeof nRightBorder == "undefined") |
+ { |
+ iRightBorder = Number.MAX_VALUE; |
+ } |
+ |
+ if (!fRandom) |
+ { |
+ fRandom = function() { |
+ return Math.random(); |
+ }; |
+ } |
+ |
+ return fRandom() * (nRightBorder - nLeftBorder) + nLeftBorder; |
+}; |
+ |
+/** |
+ * Returns a uniformly distributed random integer value in the |
+ * closed interval |
+ * [<var>iLeftBorder</var>, <var>iRightBorder</var>] |
+ * (including <var>iLeftBorder</var> and |
+ * <var>iRightBorder</var>). |
+ * |
+ * @author |
+ * (C) 2000-2003 Thomas Lahn <math.js@PointedEars.de> |
+ * @param iLeftBorder : optional number |
+ * Left border of the interval. If left out, <code>null</code> |
+ * or <code>undefined</code>, |
+ * <code>Math.floor(-Number.MAX_VALUE)</code> is assumed. |
+ * @param iRightBorder : optional number |
+ * Right border of the interval. If left out, <code>null</code> |
+ * or <code>undefined</code>, |
+ * <code>Math.ceil(Number.MAX_VALUE)</code> is assumed. |
+ * @param fRandom : Function = Math.random |
+ * Function to be used for calculating the uniform random number |
+ * in the open unit interval (0.0, 1.0) (excluding 0.0 and 1.0). |
+ * If left out, <code>Math.random()</code> is used where the |
+ * the random number generator is seeded from the current time. |
+ * @return number |
+ * @see Math#random() |
+ */ |
+Math.randInt = function(iLeftBorder, iRightBorder, fRandom) { |
+ if (iLeftBorder == null || typeof iLeftBorder == "undefined") |
+ { |
+ iLeftBorder = -Number.MAX_VALUE; |
+ } |
+ iLeftBorder = Math.floor(iLeftBorder); |
+ |
+ if (iRightBorder == null || typeof iRightBorder == "undefined") |
+ { |
+ iRightBorder = Number.MAX_VALUE; |
+ } |
+ iRightBorder = Math.ceil(iRightBorder); |
+ |
+ if (! fRandom) |
+ { |
+ fRandom = function() { |
+ return Math.random(); |
+ }; |
+ } |
+ |
+ return Math.round(Math.rand(iLeftBorder, iRightBorder, fRandom)); |
+}; |
+ |
+/** |
+ * Returns a value dependent on statistical probability. |
+ * |
+ * @param nChance : number |
+ * Statistical probability that <var>ifChance</var> is returned. |
+ * <code>1.0</code> means 100% of all possible cases. |
+ * @param ifChance |
+ * Value that is returned if chances are in favor of it. |
+ * @param otherwise |
+ * Value that is returned if chances are against |
+ * <var>ifChance</var>, i.e. the one that is returned |
+ * in <code>((1 - nChance) * 100)</code>% of all |
+ * possible cases. |
+ * @param fRandom : Function = Math.random |
+ * Function to be used for calculating the uniformly |
+ * distributed random number in the open unit interval |
+ * <code>(0.0, 1.0)</code> (excluding 0.0 and 1.0). |
+ * If left out, <code>Math.random()</code> is used where |
+ * the random number generator is seeded from the current |
+ * time. |
+ * @return mixed |
+ * <var>ifChance</var> if the chances are in favour of it, |
+ * <var>otherwise</var> if they are against it. |
+ * @see Math#random() |
+ */ |
+Math.byChance = function(nChance, ifChance, otherwise, fRandom) { |
+ if (!fRandom) |
+ { |
+ fRandom = function() { |
+ return Math.random(); |
+ }; |
+ } |
+ |
+ return ( |
+ fRandom() < nChance |
+ ? ifChance |
+ : otherwise); |
+}; |
+ |
+/** |
+ * Calculates the binomial coefficient. |
+ * |
+ * @param iUpper : number |
+ * @param iLower : number |
+ * @return number |
+ * The binomial coefficient <var>iUpper</var> above |
+ * <var>iLower</var> (|_<var>iUpper</var><b>!</b> / |
+ * <var>iLower<var><b>!</b>_| * (<var>iUpper</var> |
+ * - <var>iLower</var>)<b>!</b>) |
+ * @author (c) 2000 Thomas Lahn <math.js@PointedEars.de> |
+ */ |
+Math.binomCoeff = function(iUpper, iLower) { |
+ var result = 0; |
+ |
+ if (iUpper >= iLower) |
+ { |
+ result = Math.floor(Math.fac(iUpper) |
+ / (Math.fac(iLower) * Math.fac(iUpper - iLower))); |
+ } |
+ else |
+ { |
+ throwException(new Math.InvalidArgumentError( |
+ "binomCoeff(" + iUpper + ", " + iLower + ")")); |
+ } |
+ |
+ return result; |
+}; |
/live/math/probability.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/string.js |
=================================================================== |
--- live/string.js (nonexistent) |
+++ live/string.js (revision 520) |
@@ -0,0 +1,2177 @@ |
+/** |
+ * @fileOverview <title>PointedEars' JSX: String Library</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * |
+ * @author (C) 2001-2013 Thomas Lahn <string.js@PointedEars.de> |
+ * @author |
+ * Parts Copyright (C) 2003<br> |
+ * Dietmar Meier <meier@innoline-systemtechnik.de><br> |
+ * Martin Honnen <Martin.Honnen@gmx.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx === "undefined") |
+{ |
+ var jsx = {}; |
+} |
+ |
+jsx.string = { |
+ /** @version */ |
+ version: "1.29.$Rev$", |
+ copyright: "Copyright \xA9 1999-2013", |
+ author: "Thomas Lahn", |
+ email: "string.js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/" |
+}; |
+ |
+// jsx.string.docURL = jsx.string.path + "string.htm"; |
+ |
+if (typeof String === "undefined") |
+{ |
+ var String = new Object(); |
+} |
+ |
+/** @deprecated since 1.29.8.2010013105, see jsx.string */ |
+String.version = jsx.string.version; |
+String.copyright = jsx.string.copyright; |
+String.author = jsx.string.author; |
+String.email = jsx.string.email; |
+String.path = jsx.string.path; |
+// String.docURL = jsx.string.docURL; |
+ |
+/* allows for de.pointedears.jsx.string */ |
+if (typeof de === "undefined") |
+{ |
+ var de = {}; |
+} |
+ |
+if (typeof de.pointedears === "undefined") |
+{ |
+ de.pointedears = {}; |
+} |
+ |
+de.pointedears.jsx = jsx; |
+ |
+/** |
+ * Non-breaking space |
+ */ |
+var CH_NBSP = "\xA0"; |
+ |
+/** |
+ * @param {string} sMsg |
+ * @return {boolean} false |
+ */ |
+function StringException (sMsg) |
+{ |
+ alert( |
+ "string.js " |
+ + String.version |
+ + "\n" |
+ + String.copyright |
+ + " " |
+ + String.author |
+ + " <" |
+ + String.email |
+ + ">\n\n" |
+ + sMsg); |
+ return false; |
+} |
+ |
+/** |
+ * Adds backslashes to escape " and ' in strings. |
+ * |
+ * @author Copyright (c) 2003 |
+ * Martin Honnen <Martin.Honnen@gmx.de>, |
+ * Thomas Lahn <string.js@PointedEars.de> |
+ * @param {string} s (optional) |
+ * String where " and ' should be escaped. Ignored if |
+ * the function is called as a method of a String object. |
+ * @return {string} |
+ * The replaced string if String.replace(...) |
+ * is supported, the original string otherwise. |
+ */ |
+function addSlashes (s) |
+{ |
+ var c; |
+ if ((c = this.constructor) && c == String && typeof s != "string") |
+ { |
+ s = this; |
+ } |
+ |
+ if (s.replace) |
+ { |
+ s = s.replace(/["']/g, "\\$&"); |
+ } |
+ |
+ return s; |
+} |
+ |
+/** |
+ * Tries hard to escape a string according to the query component |
+ * specification in RFC3986. |
+ * |
+ * @param {string} s |
+ * @return {string} |
+ * <code>s</code> escaped, or unescaped if escaping through |
+ * <code>encodeURIComponent()</code> or <code>escape()</code> |
+ * is not possible. |
+ * @partof http://PointedEars.de/scripts/string.js |
+ * @see jsx.object#isMethod() |
+ * @author Copyright (c) 2006-2008 Thomas Lahn <cljs@PointedEars.de> |
+ */ |
+var esc = (function () { |
+ var |
+ _global = jsx.global, |
+ _isNativeMethod = jsx.object.isNativeMethod; |
+ |
+ return (_isNativeMethod(_global, "encodeURIComponent") |
+ ? encodeURIComponent |
+ : (_isNativeMethod(_global, "escape") |
+ ? escape |
+ : function (s) { return s; })); |
+}()); |
+ |
+/** |
+ * Tries hard to make a string a URI or URI-reference according to RFC 3986. |
+ * |
+ * @param s |
+ * @return {string} |
+ * <code>s</code> escaped, or unescaped if escaping through |
+ * <code>encodeURI()</code> or is not possible. |
+ */ |
+var escURI = (function (s) { |
+ var |
+ _global = jsx.global, |
+ _isNativeMethod = jsx.object.isNativeMethod; |
+ |
+ return (_isNativeMethod(_global, "encodeURI") |
+ ? encodeURI |
+ : function (s) { return s; }); |
+}()); |
+ |
+/** |
+ * Tries hard to unescape a string according to the query component |
+ * specification in RFC 3986. |
+ * |
+ * @param {string} s |
+ * @return {string} |
+ * <code>s</code> unescaped, or escaped if unescaping through |
+ * <code>decodeURIComponent()</code> or <code>unescape()</code> |
+ * is not possible. |
+ * @partof http://PointedEars.de/scripts/string.js |
+ * @see jsx.object#isMethod() |
+ * @author Copyright (c) 2006-2008 Thomas Lahn <cljs@PointedEars.de> |
+ */ |
+var unesc = (function () { |
+ var |
+ _global = jsx.global, |
+ _isNativeMethod = jsx.object.isNativeMethod; |
+ |
+ return (_isNativeMethod(_global, "decodeURIComponent") |
+ ? decodeURIComponent |
+ : (_isNativeMethodd(_global, "unescape") |
+ ? unescape |
+ : function (s) { return s; })); |
+}()); |
+ |
+/* |
+ * Had to abandon extend since Konqueror's engine does not support |
+ * Object literals |
+ */ |
+ |
+if (typeof Number.prototype.toFixed == "undefined") |
+{ |
+ /** |
+ * @param {number} iPrecision |
+ * @return {string} |
+ */ |
+ Number.prototype.toFixed = function (iPrecision) { |
+ var |
+ result = this.toString(), |
+ dotPos = -1, |
+ decLen = 0; |
+ |
+ if ((dotPos = result.lastIndexOf(".")) > -1) |
+ { |
+ decLen = result.length - dotPos - 1; |
+ } |
+ |
+ if (decLen <= iPrecision) |
+ { |
+ result = jsx.string.pad(result, iPrecision, '0', true, decLen); |
+ } |
+ else |
+ { |
+ var m = Math.pow(10, iPrecision); |
+ result = Math.round(result * m) / m; |
+ } |
+ return result; |
+ }; |
+} |
+ |
+if (typeof Number.prototype.toUnsigned == "undefined") |
+{ |
+ /** |
+ * @param {number} iMax |
+ * @return {number} |
+ */ |
+ Number.prototype.toUnsigned = function (iMax) { |
+ var n = this; |
+ |
+ /* |
+ * 1. Call ToNumber on the input argument. |
+ * (skipped since n is already a Number value) |
+ * |
+ * 2. If Result(1) is NaN, +0, -0, +Infinity, or -Infinity, return +0. |
+ */ |
+ var i; |
+ if (!isNaN(n) || (i = Math.abs(n)) == 0 || i == Infinity) |
+ { |
+ return 0; |
+ } |
+ |
+ /* |
+ * 3. Compute sign(Result(1)) * floor(abs(Result(1))). |
+ * (The mathematical function sign (x) yields 1 if |
+ * x is positive and -1 if x is negative.) [...] |
+ */ |
+ n = (n < 0 ? -1 : 1) * Math.floor(i); |
+ |
+ /* |
+ * 4. Compute Result(3) modulo 2^iMax; that is, a finite integer |
+ * value k of Number type with positive sign and less than 2^iMax |
+ * in magnitude such the mathematical difference of Result(3) and |
+ * k is mathematically an integer multiple of 2^iMax. The default |
+ * for iMax is 32. |
+ * |
+ * 5. Return Result(4). |
+ */ |
+ return n % Math.pow(2, iMax || 32); |
+ |
+// if (n < 0) |
+// { |
+// n += (iMax || this.MAX_VALUE)/2; |
+// } |
+ }; |
+} |
+ |
+/** |
+ * Parses a string of characters into a <code>Number</code> value. |
+ * It replaces the built-in function in that it supports fractional |
+ * parts on non-decimal representations, and uses the built-in |
+ * for decimal representations. |
+ * |
+ * @param {String} s |
+ * String representation to be parsed |
+ * @param {number} iBase |
+ * Numeric base of the representation, from 2 to 35. If not provided, |
+ * after trimming leading white-space the prefix "0x" or "0X" designates |
+ * base 16 (hexadecimal). |
+ * @return {number} |
+ */ |
+var parseFloat = jsx.string.parseFloat = (function () { |
+ var origPF = parseFloat; |
+ |
+ return function (s, iBase) { |
+ if ((!iBase || iBase === 10) && origPF) |
+ { |
+ return origPF(s); |
+ } |
+ |
+ var |
+ i = (/^\s*\./.test(s) ? 0 : parseInt(s, iBase)), |
+ chars = (iBase < 10 |
+ ? "0-" + String.fromCharCode(47 + iBase) |
+ : "\\d" |
+ + (iBase > 10 |
+ ? "a" |
+ + (iBase > 11 |
+ ? "-" + String.fromCharCode(86 + iBase) |
+ : "") |
+ : "")), |
+ f = (s.match(new RegExp("\\.([" + chars + "]{1,198})", "i")) || [, "0"])[1]; |
+ |
+ |
+ return i + (/^\s*-/.test(s) ? -1 : 1) |
+ * parseInt(f, iBase) / Math.pow(iBase, f.length); |
+ }; |
+}()); |
+ |
+// * Returns a string of values according to a format string. |
+// * |
+// * This is the begin of an approach to implement <code>printf</code>(3) |
+// * in an ECMAScript compliant implementation out of its man page |
+// * documentation. The syntax is intended to be compatible to that of |
+// * the printf() C function finally, but this method will not *print* |
+// * out anything characters by itself (so you probably want to use its |
+// * return value along with <code>window.alert()</code>, |
+// * <code>document.write()</code> and similar DOM features, or in |
+// * concatenations as if you would use <code>sprintf</code>(3).) |
+// * |
+// * Currently supported <code>printf</code>(3) features are: |
+// * - replacing tags in a format string with a value given as argument: `%d' |
+// * - padding that value with zeroes or (non-breaking) spaces on the left, |
+// * watching for negative values: `%42d', `% 42d' and `%042d' |
+// * - padding that value with (non-breaking) spaces on the right: `%-42d' |
+// * - using arguments to specify the field width: `%*d', `%*7$d' |
+// * - specifying positive precision (round after point): `%.2d' |
+// * - replacing `%%' with `%' without using an argument's value |
+// * |
+// * Additional features supported by this method are: |
+// * - specifying negative precision (round before point): `%.-2d' |
+// * - If `%,42s' is used and the argument refers to an Array instead of |
+// * a String, it is expanded to a character string consisting of the |
+// * string representations of the elements of the array delimited with |
+// * `,', each of them having the format specification (here: field |
+// * width=42) applied to it. If `,' is missing, the delimiter is the |
+// * empty string, meaning that Arrays of strings (or characters) can |
+// * be easily put out. |
+// * |
+// * @version 0.0.4.2005112603 (milestone 4) |
+// * @author |
+// * (C) 2004, 2005 Thomas Lahn <string.js@PointedEars.de> |
+// * Distributed under the GNU GPLv2. |
+// * @partof |
+// * http://pointedears.de/scripts/string.js |
+// * @param {string} sFormat |
+// * @param {_} values |
+// * @return {string} |
+// * The formatted string. |
+// */ |
+//function format (sFormat) |
+//{ |
+// arguments.skip = []; |
+// for (var i = 1, len = arguments.length; i < len; i++) |
+// { |
+// var a = arguments[i]; |
+// |
+// // skip tagged arguments; this allows for using following arguments |
+// // for precision without using them for expansion again |
+// if (!arguments.skip[i]) |
+// { |
+// // compile only once |
+// if (!format.rxSearch) |
+// { |
+// format.rxSearch = new RegExp( |
+// "%([#0+' _-]*)" // flags |
+// + "([1-9]*\\d+|(\\*((\\d+)\\$)?))?" // field width |
+// + "(\\.([+-]?\\d+|(\\*((\\d+)\\$)?))?)?" // precision |
+// + "([ ,]+)?" // member delimiter |
+// + "([%diouxXeEfFgGaAcsCSpn])" // conversion |
+// ); |
+// } |
+// |
+// var result; |
+// if ((result = (format.rxSearch.exec(sFormat)))) |
+// { |
+// var |
+// // flag characters |
+// flags = result[1], |
+// fieldWidth = result[2], |
+// |
+// // undefined if the field width was given as an unsigned integer |
+// argFieldWidth = result[3], |
+// |
+// // index of the argument to specify the field width; |
+// // undefined if the field width was given as an unsigned |
+// // integer |
+// uFieldWidthArg = result[5], |
+// |
+// precision = result[7], |
+// argPrecision = result[8], |
+// |
+// // index of the argument to specify the precision; |
+// // undefined if the precision was given as an unsigned |
+// // integer or it will be specified by the next argument |
+// uPrecisionArg = result[10], |
+// srcArgIdx; |
+// |
+// // length modifier |
+// // var lenModifier = result[11]; |
+// |
+// // member delimiter |
+// var memberDelim = result[11]; |
+// |
+// // conversion specifier |
+// var |
+// convSpecifier = result[12], |
+// aArgMembers = new Array(); |
+// |
+// if (convSpecifier == "%") |
+// { |
+// aArgMembers = [convSpecifier]; |
+// i--; |
+// } |
+// else |
+// { |
+// var memberLen = 1; |
+// var arg = a; |
+// |
+// if (arg.constructor == Array) |
+// { |
+// memberLen = arg.length; |
+// } |
+// |
+// |
+// for (var j = 0; j < memberLen; j++) |
+// { |
+// if (arg.constructor == Array) |
+// { |
+// a = arg[j]; |
+// } |
+// |
+// if (/[diouxXeEfFgGaA]/.test(convSpecifier)) |
+// { |
+// if (typeof a != "number") |
+// { |
+// a = Number(a); |
+// } |
+// |
+// if (/[ouxX]/.test(convSpecifier)) |
+// { |
+// switch (convSpecifier) |
+// { |
+// case "o": a = a.toString(8); break; |
+// case "u": a = a.toUnsigned(); break; |
+// case "x": |
+// case "X": a = a.toUnsigned().toString(16); break; |
+// default: |
+// var sError = 'Invalid conversion specifier'; |
+// _global.onerror = function () |
+// { |
+// alert('format: ' + sError); |
+// _global.onerror = null; |
+// return true; |
+// } |
+// eval("throw new {message: sError};"); |
+// _global.onerror = null; |
+// } |
+// } |
+// } |
+// |
+// if (precision |
+// || (typeof precision == "number" && precision == 0)) |
+// { |
+// if (argPrecision) |
+// { // precision is specified by another argument |
+// srcArgIdx = uPrecisionArg || (i + 1); |
+// precision = arguments[srcArgIdx]; |
+// |
+// // mark argument as not to be expanded |
+// arguments.skip[srcArgIdx] = true; |
+// } |
+// |
+// if (precision >= 0) |
+// { |
+// a = Number(a).toFixed(precision); |
+// } |
+// else // if (precision < 0) |
+// { |
+// var pot = Math.pow(10, -precision); |
+// a = Math.round((a - (a % 1)) / pot) * pot; |
+// } |
+// } |
+// |
+// if (fieldWidth) |
+// { |
+// if (argFieldWidth) |
+// { // field width is specified by another argument |
+// srcArgIdx = uFieldWidthArg || (i + 1); |
+// fieldWidth = arguments[srcArgIdx]; |
+// arguments.skip[srcArgIdx] = true; |
+// } |
+// |
+// if (fieldWidth > 0) |
+// { |
+// var sPad = CH_NBSP; |
+// if (flags && /0/.test(flags)) |
+// { |
+// sPad = "0"; |
+// } |
+// |
+// if (/-/.test(flags)) |
+// { |
+// a = pad(a, fieldWidth, CH_NBSP, true); |
+// } |
+// else |
+// { // pad value, put sign in front |
+// a = pad(a, fieldWidth, sPad) |
+// .replace(/^(0+)([+-])/, "$2$1"); |
+// } |
+// } |
+// } |
+// |
+// aArgMembers.push(a); |
+// } |
+// } |
+// |
+// sFormat = sFormat.replace( |
+// format.rxSearch, |
+// aArgMembers.join(memberDelim)); |
+// } |
+// } |
+// } |
+// |
+// return sFormat; |
+//} |
+ |
+/** |
+ * @protected |
+ */ |
+jsx.string._rxFormatSpec = new RegExp( |
+ /* flags */ |
+ /%(\(([^)]*)\))?([#0+' _-]*)/.source |
+ |
+ /* field width */ |
+ + /([1-9]*\d+|(\*((\d+)\$)?))?/.source |
+ |
+ /* precision */ |
+ + /(\.([+-]?\d+|(\*((\d+)\$)?))?)?/.source |
+ |
+ /* member delimiter */ |
+ + "(,)?" |
+ |
+ /* conversion */ |
+ + "([%aAbdiouxXeEfFgGcsCSpn])", |
+ |
+ /* global match */ |
+ "g"); |
+ |
+/** |
+ * A more efficient rewrite of the previous format() function. |
+ * |
+ * @param sFormat |
+ * @return {string} |
+ */ |
+jsx.string.sprintf = function (sFormat) { |
+ var |
+ rxFormatSpec = jsx.string._rxFormatSpec, |
+ args = arguments, |
+ i = 1, |
+ jsx_string = jsx.string, |
+ ignoredArgs = []; |
+ |
+ return String(sFormat).replace(rxFormatSpec, |
+ function (m, p1, propertyName, flags, |
+ fieldWidth, argFieldWidth, p4, uFieldWidthArg, p6, |
+ precision, argPrecision, p9, uPrecisionArg, |
+ memberDelim, convSpecifier) { |
+ /* Prevent argument change by parameter assignment */ |
+ "use strict"; |
+ |
+ while (ignoredArgs[i]) |
+ { |
+ ++i; |
+ } |
+ |
+ if (argFieldWidth) |
+ { |
+ if (!uFieldWidthArg) |
+ { |
+ uFieldWidthArg = i + 1; |
+ } |
+ else |
+ { |
+ uFieldWidthArg = +uFieldWidthArg; |
+ } |
+ |
+ ignoredArgs[uFieldWidthArg] = true; |
+ fieldWidth = args[uFieldWidthArg]; |
+ } |
+ |
+ var v = args[i]; |
+ if (propertyName) |
+ { |
+ v = v[propertyName]; |
+ } |
+ |
+ switch (convSpecifier) |
+ { |
+ case "%": |
+ v = "%"; |
+ i--; |
+ break; |
+ |
+ case "a": |
+ case "A": |
+ v = Array.prototype.join.call(v, memberDelim); |
+ break; |
+ |
+ case "b": |
+ case "d": |
+ case "o": |
+ case "x": |
+ case "X": |
+ v = +v; |
+ |
+ switch (convSpecifier) |
+ { |
+ case "b": |
+ v = v.toString(2); |
+ break; |
+ |
+ case "o": |
+ v = v.toString(8); |
+ if (flags.indexOf("#") > -1 && v.charAt(0) !== "0") |
+ { |
+ v = "0" + v; |
+ } |
+ break; |
+ |
+ case "x": |
+ case "X": |
+ v = v.toString(16); |
+ if (flags.indexOf("#") > -1 && v !== "0") |
+ { |
+ v = "0x" + v; |
+ } |
+ |
+ if (convSpecifier === "X") |
+ { |
+ v = v.toUpperCase(); |
+ } |
+ } |
+ |
+ break; |
+ |
+ case "c": |
+ case "C": |
+ case "s": |
+ case "S": |
+ if (/c/i.test(convSpecifier)) |
+ { |
+ if (typeof v === "string") |
+ { |
+ v = v.charAt(0); |
+ } |
+ else |
+ { |
+ v = String.fromCharCode(v); |
+ } |
+ } |
+ |
+ if (/[CS]/.test(convSpecifier)) |
+ { |
+ v = String(v).toUpperCase(); |
+ } |
+ |
+ break; |
+ |
+ case "i": |
+ case "u": |
+ v = (+v < 0) ? Math.ceil(v) : Math.floor(v); |
+ if (convSpecifier === "u") |
+ { |
+ v >>>= 0; |
+ } |
+ break; |
+ |
+ case "e": |
+ case "E": |
+ case "f": |
+ case "F": |
+ case "g": |
+ case "G": |
+ v = (+v).toString(); |
+ |
+ /* TODO: Use Number.prototype.toExponential() if backwards-compatible */ |
+ if (/e/i.test(convSpecifier)) |
+ { |
+ var |
+ numParts = v.match(/^([+-])?(\d*)(\.(\d*))?(e([+-]\d+))?/i), |
+ sign = numParts[1] || "", |
+ sUintPart = numParts[2], |
+ uintPart = sUintPart && parseInt(sUintPart, 10) || 0, |
+ fracPart = numParts[4] || "", |
+ exponent = numParts[6] && parseInt(numParts[6], 10) || 0; |
+ |
+ if (uintPart > 0) |
+ { |
+ if (uintPart > 9) |
+ { |
+ /* integer part with two or more digits */ |
+ exponent += sUintPart.length - 1; |
+ fracPart = sUintPart.slice(1) + fracPart; |
+ sUintPart = sUintPart.charAt(0); |
+ } |
+ } |
+ else if (fracPart) |
+ { |
+ /* Integer part must be 0 */ |
+ var numLeadingZeroes = (fracPart.match(/^0+/) || [""])[0].length; |
+ |
+ sUintPart = fracPart.charAt(numLeadingZeroes); |
+ fracPart = fracPart.slice(numLeadingZeroes + 1); |
+ exponent -= numLeadingZeroes + 1; |
+ } |
+ |
+ if (!parseInt(fracPart, 10)) |
+ { |
+ fracPart = "0"; |
+ } |
+ |
+ v = sign + sUintPart + "." + fracPart |
+ + "e" + (exponent >= 0 ? "+" : "") + exponent; |
+ |
+ if (convSpecifier == "E") |
+ { |
+ v = v.toUpperCase(); |
+ } |
+ } |
+ else if (/g/i.test(convSpecifier)) |
+ { |
+ if (convSpecifier == "G") |
+ { |
+ v = String(v).toUpperCase(); |
+ } |
+ } |
+ |
+ if (precision) |
+ { |
+ var prec = +precision; |
+ if (prec > 0) |
+ { |
+ v = (+v).toFixed(prec); |
+ } |
+ else if (prec < 0) |
+ { |
+ var power = Math.pow(10, -prec); |
+ v = Math.round(v / power) * power; |
+ } |
+ } |
+ |
+ break; |
+ } |
+ |
+ if (fieldWidth) |
+ { |
+ fieldWidth = +fieldWidth; |
+ if (flags.indexOf("0") > -1 && /[bdoxXiueEfFgG]/.test(convSpecifier)) |
+ { |
+ v = String(v); |
+ |
+ var |
+ padCharacter = "0", |
+ wasNegative = (v.charAt(0) === "-"); |
+ |
+ if (wasNegative) |
+ { |
+ v = v.slice(1); |
+ fieldWidth--; |
+ } |
+ } |
+ |
+ v = jsx_string.pad(v, fieldWidth, padCharacter); |
+ |
+ if (wasNegative) |
+ { |
+ v = "-" + v; |
+ } |
+ } |
+ |
+ if (!propertyName) |
+ { |
+ ++i; |
+ } |
+ |
+ return v; |
+ }); |
+}; |
+ |
+/** |
+ * Formats a string |
+ */ |
+String.prototype.format = jsx.string.format = (function () { |
+ var _getClass = jsx.object.getClass; |
+ var _hasOwnProperty = jsx.object._hasOwnProperty; |
+ |
+ /** |
+ * @param sFormat |
+ * @return {String} |
+ */ |
+ return function (sFormat) { |
+ /* Prevent argument change by parameter assignment */ |
+ "use strict"; |
+ |
+ var start = 1; |
+ |
+ if (_getClass(this) === "String") |
+ { |
+ sFormat = this.constructor(this); |
+ start = 0; |
+ } |
+ |
+ for (var i = start, len = arguments.length; i < len; ++i) |
+ { |
+ var data = arguments[i]; |
+ |
+ if (_getClass(data) === "Object") |
+ { |
+ for (var propertyName in data) |
+ { |
+ if (_hasOwnProperty(data, propertyName)) |
+ { |
+ sFormat = sFormat.replace(new RegExp("\\{" + propertyName + "\\}", "g"), |
+ data[propertyName]); |
+ } |
+ } |
+ } |
+ else |
+ { |
+ sFormat = sFormat.replace(new RegExp("\\{" + (i - start) + "\\}", "g"), data); |
+ } |
+ } |
+ |
+ return sFormat; |
+ }; |
+}()); |
+ |
+/** |
+ * Parses values out of a string using the specified format |
+ */ |
+jsx.string.sscanf = (function () { |
+ var formatSpec = { |
+ dec: "([+-]?(?:0|[1-9]\\d+)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)", |
+ "int": "([+-]?(?:0|[1-9]\\d+)(?:[eE][+-]?\\d+)?)" |
+ }; |
+ |
+ var formatMap = { |
+ "%d": { |
+ spec: formatSpec.dec, |
+ parser: parseFloat |
+ }, |
+ "%i": { |
+ spec: formatSpec["int"], |
+ parser: function (value) { |
+ return parseInt(value, 10); |
+ } |
+ } |
+ }; |
+ |
+ function replacer (match) |
+ { |
+ if (typeof formatMap[match] != "undefined") |
+ { |
+ replaced.push(match); |
+ match = formatMap[match].spec; |
+ } |
+ |
+ return match; |
+ } |
+ |
+ var rxFormatSpec = jsx.string._rxFormatSpec; |
+ |
+ /** |
+ * @param {String} s |
+ * @param {String} format |
+ * @return {Array} |
+ */ |
+ return function (s, format) { |
+ var replaced = []; |
+ format = format.replace(rxFormatSpec, replacer); |
+ var matches = s.match(new RegExp(format)); |
+ matches.shift(); |
+ |
+ /* TODO: Convert values to specified type */ |
+ |
+ for (var i = 0, len = replaced.length; i < len; ++i) |
+ { |
+ var replace = replaced[i]; |
+ |
+ |
+ switch (replace) |
+ { |
+ case formatSpec.dec: |
+ matches[i] = parseFloat(matches[i]); |
+ break; |
+ |
+ |
+ } |
+ } |
+ |
+ return matches; |
+ }; |
+}()); |
+ |
+/** |
+ * @version |
+ * 1.29.2004050110 |
+ * @author |
+ * (C) 2004 Thomas Lahn <string.js@PointedEars.de> |
+ * @partof |
+ * http://pointedears.de/scripts/string.js |
+ * @param {string|number} s (optional) |
+ * Un(completely )formatted number (decimal, hexadecimal |
+ * or octal) or a string representing such a number. |
+ * If the function is called as a method of |
+ * {@link jsref#String} objects and <code>s</code> is |
+ * provided, the value of <code>s</code> is formatted |
+ * instead of the @link{jsref#String} object. |
+ * @param {string} s1kDelim = "," |
+ * Character or character sequence to delimit a sequence |
+ * of three digits on the left-hand side of the point. |
+ * The default is ",". |
+ * @return {string|number} |
+ * the formatted number as string, <code>NaN</code> on error. |
+ */ |
+function format1k (s, s1kDelim) |
+{ |
+ var result = NaN; |
+ |
+ /* to use this method for String objects */ |
+ if (typeof this.constructor != "undefined" |
+ && this.constructor == String |
+ && !s) |
+ { |
+ s = this; |
+ } |
+ |
+ /* to allow for numbers as argument */ |
+ s = s.toString(); |
+ |
+ if (!isNaN(s)) |
+ { |
+ if (!s1kDelim) |
+ { |
+ s1kDelim = ","; |
+ } |
+ |
+ /* |
+ * 1.29.4.2008030123: |
+ * added parens around backrefs for JScript 3.x compliance |
+ */ |
+ var rx = /([\da-f])((\1){3}(,|(\.(\1)+)?$))/i; |
+ while (rx.test(s)) |
+ { |
+ s = s.replace(rx, "$1" + s1kDelim + "$2"); |
+ } |
+ |
+ result = s; |
+ } |
+ |
+ return result; |
+} |
+ |
+/** |
+ * String.hashCode() as defined in the Sun Java2 1.4 API. |
+ * |
+ * The function takes a string as argument, or |
+ * the <code>this</code> value if the argument is missing or |
+ * a false-value, and the <code>this</code> value refers |
+ * to an object that has a true-valued <code>charCodeAt</code> |
+ * property. The ASCII or Unicode value (depending on the |
+ * implementation) of each character (from right to left) is |
+ * added to the product of the current sum (starting at 0) |
+ * multiplied with x, where x = 37 if the string is no longer |
+ * than 15 characters, x = 39 otherwise. If the string is 16 |
+ * characters long or longer, at the average every eighth |
+ * character is not included in the sum. |
+ * |
+ * @author |
+ * Implementation in ECMAScript |
+ * (C) 2003 Thomas Lahn <hashCode.js@PointedEars.de> |
+ * @param {string} s (optional) |
+ * Optional string of which the hash code is computed. If |
+ * not provided or a false-value, it is assumed that |
+ * the function is used as method of the String prototype, |
+ * applied to a String object or literal. |
+ * @return {number} |
+ * The hash code of the string, designed for implementing hash |
+ * code access to associative arrays which can be implemented |
+ * as objects with named properties in JavaScript 1.x. |
+ * @see |
+ * #strToCodeArray() java2:String#hashCode() |
+ */ |
+function hashCode (s) |
+{ |
+ if (!s && this.charCodeAt) |
+ { |
+ s = this; |
+ } |
+ |
+ var h = 0; |
+ var off = 0; |
+ var len = s.length; |
+ var val = strToCodeArray(s); |
+ var i; |
+ |
+ if (len < 16) |
+ { |
+ for (i = len; i > 0; i--) |
+ { |
+ h = (h * 37) + val[off++]; |
+ } |
+ } |
+ else |
+ { |
+ /* only sample some characters */ |
+ var skip = Math.floor(len / 8); |
+ for (i = len; i > 0; i -= skip, off += skip) |
+ { |
+ h = (h * 39) + val[off]; |
+ } |
+ } |
+ |
+ return h; |
+} |
+ |
+/** |
+ * @param {string} s (optional) |
+ * @return {string} |
+ */ |
+function leadingCaps (s) |
+{ |
+ if (!s && this.charAt) |
+ { |
+ s = this; |
+ } |
+ |
+ if (!s) |
+ { |
+ return ""; |
+ } |
+ |
+ return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase(); |
+} |
+ |
+/** |
+ * @param {string} s (optional) |
+ * Input string. If omitted and the calling object |
+ * is a String object, it is used instead. |
+ * @param {number} n (optional) |
+ * Length of the resulting string. The default is 1, |
+ * i.e. if the input string is empty, "0" is returned. |
+ * @return {string} |
+ * Input string with leading zeros so that |
+ * its length is @{(n)}. |
+ * @see |
+ * #pad(string, number, string) |
+ */ |
+var leadingZero = jsx.string.leadingZero = function (s, n) { |
+ var c; |
+ if ((c = this.constructor) && c == String && typeof s != "string") |
+ { |
+ s = this; |
+ } |
+ |
+ var isNegative = (s && typeof s.valueOf() == "number" && s < 0); |
+ if (isNegative) |
+ { |
+ s = -s; |
+ |
+ if (typeof n == "number" && !isNaN(n)) |
+ { |
+ --n; |
+ } |
+ } |
+ |
+ var result = jsx.string.pad(s, n, "0"); |
+ |
+ if (isNegative) |
+ { |
+ result = "-" + result; |
+ } |
+ |
+ return result; |
+}; |
+ |
+/* |
+int LevenshteinDistance(char s[1..n], char t[1..m]) |
+ declare int d[0..n,0..m] |
+ declare int i, j, cost |
+ |
+ for i := 0 to n |
+ d[i,0] := i |
+ for j := 0 to m |
+ d[0,j] := j |
+ |
+ for i := 1 to n |
+ for j := 1 to m |
+ if s[i] = t[j] then cost := 0 |
+ else cost := 1 |
+ d[i,j] := minimum(d[i-1,j ] + 1, // insertion |
+ d[i, j-1] + 1, // deletion |
+ d[i-1,j-1] + cost) // substitution |
+ |
+ return d[n,m] |
+*/ |
+/** |
+ * Returns the Levenshtein Distance One between two strings |
+ * <var>s</var> and <var>t</var> that is, the number of |
+ * required edit moves to make <var>s</var> the same as |
+ * <var>t</var>, and vice-versa. That value indicates |
+ * to what extent the two strings are similar -- small |
+ * distances mean greater, large distances less similarity. |
+ * It is computed as follows: |
+ * |
+ * <table> |
+ * <thead> |
+ * <tr> |
+ * <th align="left">Step</th> |
+ * <th align="left">Description</th> |
+ * </tr> |
+ * </thead> |
+ * <tbody> |
+ * <tr valign="top"> |
+ * <th>1</th> |
+ * <td>Set <tt>n</tt> to be the length of <var>s</var>. |
+ * Set <tt>m</tt> to be the length of <var>t</var>. |
+ * If <tt>n</tt> = 0, return <tt>m</tt> and exit. |
+ * If <tt>m</tt> = 0, return <tt>n</tt> and exit. |
+ * Construct a matrix containing 0..<tt>m rows and 0..<tt>n</tt> |
+ * columns.</td> |
+ * </tr> |
+ * <tr> |
+ * <th>2</th> |
+ * <td>Initialize the first row to 0..<tt>n</tt>. |
+ * Initialize the first column to 0..<tt>m</tt>.</td> |
+ * </tr> |
+ * <tr> |
+ * <th>3</th> |
+ * <td>Examine each character of <var>s</var> (<tt>i</tt> from 1 to <tt>n</tt>).</td> |
+ * </tr> |
+ * <tr> |
+ * <th>4</th> |
+ * <td>Examine each character of <var>t</var> (<tt>j</tt> from 1 to <tt>m</tt>).</td> |
+ * </tr> |
+ * <tr> |
+ * <th>5</th> |
+ * <td>If <var>s</var>[<tt>i</tt>] equals <var>t</var>[<tt>j</tt>], the cost is 0. |
+ * If <var>s</var>[<tt>i</tt>] doesn't equal <var>t</var>[<tt>j</tt>], |
+ * the cost is 1.</td> |
+ * </tr> |
+ * <tr valign="top"> |
+ * <th>6</th> |
+ * <td>Set cell <tt>d</tt>[<tt>i</tt>, <tt>j</tt>] of the matrix |
+ * equal to the minimum of: |
+ * <ol type="a"> |
+ * <li>The cell immediately above plus 1: |
+ * <tt>d</tt>[<tt>i</tt>-1, <tt>j</tt>] + 1.</li> |
+ * <li>The cell immediately to the left plus 1: |
+ * <tt>d</tt>[<tt>i</tt>, <tt>j</tt>-1] + 1.</li> |
+ * <li>The cell diagonally above and to the left plus the cost: |
+ * <tt>d</tt>[<tt>i</tt>-1, <tt>j</tt>-1] + cost.</li> |
+ * </ol></td> |
+ * </tr> |
+ * <tr> |
+ * <th>7</th> |
+ * <td>After the iteration steps (3, 4, 5, 6) are complete, the distance |
+ * is found in cell <tt>d</tt>[<tt>n</tt>, <tt>m</tt>].</td> |
+ * </tr> |
+ * </tbody> |
+ * </table> |
+ * |
+ * @param {string} s (optional) |
+ * @param {string} t (optional) |
+ * @return {number} |
+ */ |
+function levenshtein (s, t) |
+{ |
+ /* Step 1 */ |
+ if (typeof s != "string") |
+ { |
+ s = s.toString(); |
+ } |
+ |
+ if (typeof t != "string") |
+ { |
+ t = t.toString(); |
+ } |
+ |
+ var n = s.length; |
+ var m = t.length; |
+ |
+ if (n == 0) |
+ { |
+ return m; |
+ } |
+ |
+ if (m == 0) |
+ { |
+ return n; |
+ } |
+ |
+ /* matrix */ |
+ var d = new Array(); |
+ |
+ /* Step 2 */ |
+ for (var i = 0; i <= n; i++) |
+ { |
+ d[i] = new Array(); |
+ d[i][0] = i; |
+ } |
+ |
+ for (var j = 0; j <= m; j++) |
+ { |
+ d[0][j] = j; |
+ } |
+ |
+ /* Step 3 */ |
+ for (i = 1; i <= n; i++) |
+ { |
+ var s_i = s.charAt(i - 1); |
+ |
+ /* Step 4 */ |
+ for (j = 1; j <= m; j++) |
+ { |
+ /* Step 5 */ |
+ var cost = (s_i == t.charAt(j - 1)) ? 0 : 1; |
+ |
+ /* Step 6 */ |
+ d[i][j] = Math.min( |
+ d[i-1][j] + 1, |
+ d[i][j-1] + 1, |
+ d[i-1][j-1] + cost); |
+ } |
+ } |
+ |
+ /* Step 7 */ |
+ return d[n][m]; |
+} |
+ |
+/** |
+ * Returns the input string with all substrings that |
+ * may be interpreted as markup are escaped, that is, |
+ * those prefixed by `&' or `<'. |
+ * |
+ * @param {string} s (optional) |
+ * @return {string} |
+ */ |
+function maskMarkup (s) |
+{ |
+ if (!s) |
+ { |
+ s = this; |
+ } |
+ else |
+ { |
+ s = String(s); |
+ } |
+ |
+ return replaceText(replaceText(s, "&", "&"), "<", "<"); |
+} |
+ |
+/** |
+ * @param {string} s |
+ * @return {string} |
+ */ |
+function nl2br (s) |
+{ |
+ return s.replace(/\r\n?|\n/g, "<br>"); |
+} |
+ |
+/** |
+ * @param {string} s (optional) |
+ * Input string. If omitted and the calling object |
+ * is a String object, it is used instead. |
+ * @param {number} n = 1 |
+ * Length of the resulting string. The default is 1, |
+ * i.e. if the input string is empty, "0" is returned |
+ * if c is <code>'0'</code>. |
+ * @param {string} c = CH_NBSP |
+ * Character string to use for padding. The default |
+ * is one non-breaking space. |
+ * @param {boolean} bRight = false |
+ * If <code>true</code>, s is padded on the right, |
+ * otherwise on the left. |
+ * @param {number} iStart (optional) |
+ * Assume that s is iStart characters long. |
+ * @return {string} |
+ * The padded input string so that its length is n. |
+ */ |
+var pad = jsx.string.pad = function (s, n, c, bRight, iStart) { |
+ var constr; |
+ if ((constr = this.constructor) && constr == String |
+ && typeof s != "string") |
+ { |
+ s = this; |
+ } |
+ |
+ if (!n) |
+ { |
+ n = 1; |
+ } |
+ |
+ if (!c) |
+ { |
+ c = CH_NBSP; |
+ } |
+ |
+ if (typeof s != "string") |
+ { |
+ s = String(s); |
+ } |
+ |
+ if (typeof iStart == "undefined") |
+ { |
+ iStart = s.length; |
+ } |
+ |
+ if (n <= iStart) |
+ { |
+ return s; |
+ } |
+ |
+ var a = []; |
+ var missingLength = n - iStart + 1; |
+ |
+ if (typeof a.join === "function" |
+ && (missingLength > -1) && (missingLength < Math.pow(2, 32))) |
+ { |
+ a.length = missingLength; |
+ var rep = a.join(c); |
+ if (bRight) |
+ { |
+ s += rep; |
+ } |
+ else |
+ { |
+ s = rep + s; |
+ } |
+ } |
+ else |
+ { |
+ while (iStart < n) |
+ { |
+ if (bRight) |
+ { |
+ s += c; |
+ } |
+ else |
+ { |
+ s = c + s; |
+ } |
+ |
+ iStart++; |
+ } |
+ } |
+ |
+ return s; |
+}; |
+ |
+/** |
+ * @param sText |
+ * @param {string} sReplaced |
+ * @param {string} sReplacement |
+ * @param {boolean} bForceLoop |
+ * @return {string} |
+ */ |
+function replaceText (sText, sReplaced, sReplacement, bForceLoop) |
+{ |
+ var result = ""; |
+ |
+ if (!sText && this.constructor == String) |
+ { |
+ sText = this; |
+ } |
+ |
+ var sNewText = sText; |
+ // alert(sText); |
+ if (sText && sReplaced && sReplacement) |
+ { |
+ if (sText.replace && !bForceLoop) |
+ { |
+ sReplaced = sReplaced.replace(/\\/g, "\\\\"); |
+ /* |
+ * Version 1.23.2002.4 bugfix: allows to replace \ with other |
+ * strings, required for proper rxReplaced; |
+ * Example (no quotes, no escaping): |
+ * sReplaced (provided) "\\" |
+ * sReplaced (evaluated) \ |
+ * sReplaced (replaced as formulated above) "\\\\" |
+ * sReplaced (esc. in RegExp constructor) "\\\\" |
+ * sReplaced (ev. in RegExp constructor) \\ |
+ * rxReplaced (with RegExp escaping) /\\/g |
+ * rxReplaced (evaluated) all occurr. of \ |
+ */ |
+ var rxReplaced = new RegExp(sReplaced, "g"); |
+ sText = sText.replace(rxReplaced, sReplacement); |
+ |
+ result = sText; |
+ } |
+ else if (sText.split |
+ && (a = sText.split(sReplaced)) |
+ && a.join) |
+ { |
+ return a.join(sReplacement); |
+ } |
+ |
+ var i = sText.indexOf(sReplaced); |
+ |
+ if (i > -1) |
+ { |
+ sNewText = sText.substring(0, i); |
+ sNewText += sReplacement |
+ + replaceText( |
+ sText.substring(i + sReplaced.length), |
+ sReplaced, |
+ sReplacement); |
+ } |
+ |
+ result = sNewText; |
+ } |
+ |
+ return result; |
+} |
+ |
+/** |
+ * @param {Object} o |
+ * Object to be serialized |
+ * @param {Object} options (optional) |
+ * The property values of the passed object determine |
+ * one or more of the following display options: |
+ * |
+ * @option depth: number = 0 |
+ * Depth down to which recursive serialization should |
+ * be performed. The default is 0 (no recursion). |
+ * Negative values specify infinite recursion. |
+ * CAUTION: Recursive references are not detected; |
+ * in that case, a stack overflow will happen because |
+ * of too much recursion. |
+ * |
+ * @option showType: boolean = false |
+ * If <code>true</code>, <code>typeof</code> is used |
+ * to display the type of each property following a |
+ * colon after the identifier. The value delimiter |
+ * then changes into a equals (`<code>=</code>'). |
+ * |
+ * @option showConstructor: boolean = false |
+ * If <code>true</code>, <code>constructor</code> is used |
+ * to display the constructor of each property in brackets |
+ * after the identifier. |
+ * |
+ * @option iIndent: number = 0 |
+ * Indentation level |
+ * |
+ * @option sIndent: string = " " |
+ * Character string to use for indenting code |
+ * @return {string} |
+ */ |
+function serialize (o, options) |
+{ |
+ if (typeof options != "object" || !options) |
+ { |
+ options = {}; |
+ } |
+ |
+ if (typeof options.depth == "undefined") |
+ { |
+ options.depth = 0; |
+ } |
+ |
+ if (typeof options.iIndent == "undefined") |
+ { |
+ options.iIndent = 0; |
+ } |
+ |
+ if (typeof options.sIndent == "undefined") |
+ { |
+ options.sIndent = " "; |
+ } |
+ |
+ var |
+ a = [], |
+ indent = strRepeat(options.sIndent, options.iIndent); |
+ |
+ for (var p in o) |
+ { |
+ var v = o[p]; |
+ var origV = v; |
+ var t = typeof v; |
+ var isString = /string/i.test(t); |
+ var s = isString ? '"' : ''; |
+ |
+ /* |
+ * FIXME: number values |
+ */ |
+ /* |
+ * unlimited or limited depth > 0 (0 == false) |
+ */ |
+ if (options.depth && (!isString || isNaN(p))) |
+ { |
+ v = serialize(v, { |
+ depth: options.depth - 1, |
+ showType: options.showType, |
+ showConstructor: options.showConstructor, |
+ iIndent: options.iIndent + 1, |
+ sIndent: options.sIndent |
+ }); |
+ } |
+ |
+ a.push( |
+ indent |
+ + options.sIndent |
+ + p |
+ + (options.showConstructor |
+ ? "[" |
+ + (origV && typeof origV.constructor != "undefined" |
+ ? (String(origV.constructor).match(/function\s*([^\s\(\{]+)/) |
+ || [, "unknown"])[1] |
+ : "unknown") |
+ + "]" |
+ : "") |
+ + (options.showType ? ": " + t : "") |
+ + (options.showType ? " = " : ": ") |
+ + (!(options.depth && (!isString || isNaN(p))) |
+ ? s + String(v).replace(/"/g, "\\$&") + s |
+ : v) |
+ ); |
+ } |
+ |
+ if (a.length > 0) |
+ { |
+ return "{\n" + a.join(",\n") + "\n" + indent + "}"; |
+ } |
+ |
+ return String(o); |
+} |
+ |
+/** |
+ * Calculates the number of occurrences of one string in another. |
+ * |
+ * @param {string} s |
+ * @param {string} substr |
+ * @param {boolean} bCaseSensitive (optional) |
+ * @return {number} |
+ */ |
+function strCount (s, substr, bCaseSensitive) |
+{ |
+ var result = 0; |
+ |
+ if ((!s && !this.toLowerCase) || !substr) |
+ { |
+ return -1; |
+ } |
+ |
+ if (s && this.toLowerCase) |
+ { |
+ s = this; |
+ } |
+ |
+ if (!bCaseSensitive && s.toLowerCase) |
+ { |
+ s = s.toLowerCase(); |
+ } |
+ |
+ if (isMethodType(typeof RegExp)) |
+ { |
+ var rxSub = new RegExp(substr, "g" + (!bCaseSensitive ? "i" : "")); |
+ |
+ if (isMethod(s, "match") && rxSub) |
+ { |
+ result = s.match(rxSub); |
+ if (result && result.length) |
+ { |
+ return result.length; |
+ } |
+ |
+ return 0; |
+ } |
+ } |
+ else if (s.substr && substr.length) |
+ { |
+ if (!bCaseSensitive && substr.toLowerCase) |
+ { |
+ substr = substr.toLowerCase(); |
+ } |
+ |
+ for (var i = 0; i < s.length; i++) |
+ { |
+ if (s.substr(i, substr.length) == substr) |
+ { |
+ result++; |
+ i += substr.length - 1; |
+ } |
+ } |
+ |
+ return result; |
+ } |
+ |
+ return -1; |
+} |
+ |
+/** |
+ * Compares strings against each other, with the default possibility of |
+ * taking Unicode compositing sequences into account. |
+ * |
+ * @param s1 |
+ * @param s2 |
+ * @param compositeAware |
+ * If <code>true</code> (default), composited characters are taken |
+ * into account. Otherwise strings are compared character-by-character. |
+ * @return {boolean} |
+ * <code>true</code> if the strings are equal, <code>false</code> otherwise |
+ */ |
+function strCompare (s1, s2, compositeAware) |
+{ |
+ if (this.constructor == String) |
+ { |
+ compositeAware = s2; |
+ s2 = s1; |
+ s1 = this; |
+ var compositeLength = 2; |
+ } |
+ else |
+ { |
+ compositeLength = 3; |
+ } |
+ |
+ if (arguments.length < compositeLength) |
+ { |
+ compositeAware = true; |
+ } |
+ |
+ var equivalenceMap = { |
+ "\u00e0": "\u0061\u0300" |
+ }; |
+ |
+ for (var i = 0, j = 0, len = s1.length; i < len; ++i, ++j) |
+ { |
+ var ch1 = s1.charAt(i), ch2 = s2.charAt(j); |
+ if (ch1 != ch2) |
+ { |
+ if (!compositeAware) |
+ { |
+ return false; |
+ } |
+ |
+ /* |
+ * When the characters at the same position are not equal, see if |
+ * there is a composite character sequence for each character … |
+ */ |
+ var ch1Equivalent = equivalenceMap[ch1] || null; |
+ if (ch1Equivalent) |
+ { |
+ /* |
+ * If yes, check if there is a composite sequence in the second |
+ * string starting at that index. |
+ */ |
+ if (ch2.substring(j, ch1Equivalent.length) === ch1Equivalent) |
+ { |
+ /* |
+ * If yes, advance the index for the second string so that |
+ * the next check starts after that sequence. |
+ */ |
+ j += ch1Equivalent.length - 1; |
+ } |
+ else |
+ { |
+ return false; |
+ } |
+ } |
+ else |
+ { |
+ /* Same for a potential composite sequence in the first string */ |
+ var ch2Equivalent = equivalenceMap[ch2] || null; |
+ if (ch2Equivalent && ch1.substring(i, i + ch2Equivalent.length) === ch2Equivalent) |
+ { |
+ i += ch2Equivalent.length - 1; |
+ } |
+ else |
+ { |
+ return false; |
+ } |
+ } |
+ } |
+ } |
+ |
+ return true; |
+} |
+String.prototype.equals = strCompare; |
+ |
+/** |
+ * Strips <code><tags></code> and optionally the |
+ * content between start and respective end tags from |
+ * a string. Uses RegExp if supported. |
+ * |
+ * @author |
+ * (C) 2001-2004 Thomas Lahn <js@PointedEars.de>, |
+ * Advanced RegExp parsing (C) 2003 Dietmar Meier |
+ * <meier@innoline-systemtechnik.de> |
+ * @param {string} s (optional) |
+ * String where all tags should be stripped from. If not |
+ * provided or <code>false</code>, it is assumed that the |
+ * function is used as method of the String prototype, |
+ * applied to a String object or literal. Note that in |
+ * this case the method will not modify the String object |
+ * either, but return a second String object. |
+ * @param {boolean} bStripContent = false |
+ * If <code>true</code>, the content between a start tag and |
+ * a corresponding end tag is also removed. |
+ * If <code>false</code> (default), only start and end tags |
+ * are removed. |
+ * @param {boolean} bCaseSensitive = false |
+ * <code>true</code> for case-sensitive matches, |
+ * <code>false</code> (default) otherwise. |
+ * @param {optional} tags string|Array of string |
+ * String or array of values that can be evaluated as string to |
+ * specify the tag(s) to be stripped. If omitted, all tags are |
+ * stripped. |
+ * @param {boolean} bElements = false |
+ * If <code>true</code>, strip elements, i.e. start and end tags. |
+ * @return {string} |
+ * String where all tags are stripped from. |
+ * @see String.prototype#replace() |
+ */ |
+function stripTags (s, bStripContent, bCaseSensitive, tags, bElements) |
+{ |
+ if (!s) |
+ { |
+ s = this; |
+ } |
+ else |
+ { |
+ s = s.toString(); |
+ } |
+ |
+ var sUntagged = s; |
+ |
+ if (s.match && s.replace) |
+ { |
+ // sUntagged = s.replace(/<[^>]*>/g, ""); |
+ var sRxTags = "", i, len; |
+ if (tags) |
+ { |
+ if (!tags.constructor || tags.constructor == Array) |
+ { |
+ if (tags.join) |
+ { |
+ if (bElements) |
+ { |
+ for (i = 0, len = tags.length; i < len; i++) |
+ { |
+ tags[tags.length] = "/" + tags[i]; |
+ } |
+ } |
+ |
+ sRxTags = tags.join("|"); |
+ } |
+ else if (tags.length) |
+ { |
+ for (i = 0, len = tags.length; i < len; i++) |
+ { |
+ sRxTags += tags[i]; |
+ if (bElements) |
+ { |
+ sRxTags += "/" + tags[i]; |
+ } |
+ |
+ if (i < tags.length - 1) |
+ { |
+ sRxTags += "|"; |
+ } |
+ } |
+ } |
+ |
+ if (sRxTags) |
+ { |
+ sRxTags = "(" + sRxTags + ")"; |
+ } |
+ } |
+ else |
+ { |
+ sRxTags = tags; |
+ } |
+ } |
+ |
+ var sRx = ""; |
+ if (bStripContent) |
+ { |
+ sRx = "<(" + (sRxTags ? sRxTags : "[^<>]*") + ")(<[^<>]*>)*>.*</\\1>"; |
+ } |
+ else |
+ { |
+ sRx = "<" + (sRxTags ? sRxTags : "[^<>]*") + "(<[^<>]*>)*[^<>]*>"; |
+ } |
+ |
+ var rx = new RegExp(sRx, (bCaseSensitive ? "i" : "") + "g"); |
+ if (rx) |
+ { |
+ while (s.match(rx)) |
+ { |
+ s = s.replace(rx, ""); |
+ } |
+ sUntagged = s; |
+ } |
+ } |
+ else |
+ { |
+ var a = ""; |
+ var bOutOfTag = true; |
+ var l = s.length; |
+ sUntagged = ""; |
+ |
+ for (i = 0; i < l; i++) |
+ { |
+ a = s.charAt(i); |
+ |
+ if (bOutOfTag && (a == "<")) |
+ { |
+ bOutOfTag = false; |
+ } |
+ |
+ if (bOutOfTag) |
+ { |
+ sUntagged += a; |
+ } |
+ |
+ if ((!bOutOfTag) && (a == ">")) |
+ { |
+ bOutOfTag = true; |
+ } |
+ } |
+ } |
+ |
+ return sUntagged; |
+} |
+ |
+/** |
+ * Returns <var>s</var> repeated <var>n</var> times. <var>n</var> |
+ * has to be greater than or equal to 0. If <var>n</var> converted |
+ * to number is <code>NaN</code> or a value less then 1, the function |
+ * will return the empty string. |
+ * |
+ * Note that this may be used also as method of the {@link String} |
+ * prototype (if supported), applicable to <code>String</code> objects |
+ * and literals. If <var>s</var> is not provided, if it is numeric |
+ * or evaluates to <code>false</code>, the value of the |
+ * <code>String</code> object is taken instead of it. If the first |
+ * argument is then numeric, it is taken for <var>n</var> and the latter |
+ * argument is ignored. |
+ * |
+ * @param {string|number} s |
+ * @param {number} n (optional) |
+ * @return {string} |
+ */ |
+function strRepeat (s, n) |
+{ |
+ var c; |
+ if ((c = this.constructor) && c == String && typeof s != "string") |
+ { |
+ s = this; |
+ n = !isNaN(s) ? s : 0; |
+ } |
+ |
+ if (isNaN(n)) |
+ { |
+ return s; |
+ } |
+ |
+ if (s) |
+ { |
+ var aResult = []; |
+ aResult.length = n + 1; |
+ return aResult.join(s); |
+ } |
+ |
+ return ""; |
+} |
+ |
+/** |
+ * @author |
+ * (C) 2003 Thomas Lahn <string.js@PointedEars.de> |
+ * @param {string} s (optional) |
+ * Optional string to be split into array elements. If not |
+ * provided or <code>false</code>, it is assumed that the |
+ * function is used as method of the String prototype, applied |
+ * to a String object or literal. |
+ * @return {Array} |
+ * An array with every character of <code>s</code> an element |
+ * of it. |
+ * @see String.prototype#charAt |
+ * @see String.prototype#split |
+ */ |
+function strToArray (s) |
+{ |
+ var c; |
+ if (!s && (c = this.constructor) && c == String) |
+ { |
+ s = this; |
+ } |
+ |
+ var a = null; |
+ |
+ if (s.split) |
+ { |
+ a = s.split(""); |
+ } |
+ else |
+ { |
+ a = new Array(); |
+ |
+ for (var i = 0, len = s.length; i < len; i++) |
+ { |
+ a[i] = s.charAt(i); |
+ } |
+ } |
+ |
+ return a; |
+} |
+/* TODO: */ |
+// function arrayFromStr (s) |
+// { |
+// return strToArray(s); |
+// } |
+ |
+/** |
+ * @param {[string,]} as |
+ * Input string array. |
+ * @todo return RegExp |
+ * A regular expression to match all the string array elements. |
+ */ |
+function strArrayToCharClass (as) |
+{ |
+ var hashTable = []; |
+ |
+ for (var i = as.length; i--; 0) |
+ { |
+ var s = as[i]; |
+ var c = hashCode(s); |
+ |
+ if (typeof hashTable[c] == "undefined") |
+ { |
+ hashTable[c] = new Collection(s); |
+ } |
+ else |
+ { |
+ var h = hashTable[c]; |
+ h.add(s); |
+ } |
+ } |
+} |
+ |
+/** |
+ * @author |
+ * (C) 2003 Thomas Lahn <string.js@PointedEars.de> |
+ * @param {string} s (optional) |
+ * Optional string to be split into an array where each |
+ * element represents the ASCII or Unicode value of a |
+ * character (depending on the implementation) of the |
+ * string. |
+ * If not provided or <code>false</code>, it is assumed |
+ * that the function is used as method of the String |
+ * prototype, applied to a String object or literal. |
+ * @return {Array} |
+ * An array where every element is the ASCII character |
+ * of <code>s</code> an element of it. |
+ * @see #strToArray() |
+ * @see String.prototype#charCodeAt() |
+ * @see String.prototype#split() |
+ */ |
+function strToCodeArray (s) |
+{ |
+ if (!s && this.charCodeAt) |
+ { |
+ s = this; |
+ } |
+ |
+ var a, i, alen; |
+ |
+ if (isMethod(s, "split") && isMethod(_global, "strToArray")) |
+ { |
+ a = strToArray(s); |
+ |
+ for (i = 0, alen = a.length; i < alen; i++) |
+ { |
+ a[i] = a[i].charCodeAt(0); |
+ } |
+ } |
+ else |
+ { |
+ a = new Array(); |
+ |
+ var slen = s.length; |
+ for (i = 0; i < slen; i++) |
+ { |
+ a[i] = s.charCodeAt(i); |
+ } |
+ } |
+ |
+ return a; |
+} |
+/* TODO: */ |
+// function codeArrayFromStr (s) |
+// { |
+// return strToCodeArray(s); |
+// } |
+ |
+/** |
+ * Returns the input string with all leading and trailing whitespace removed. |
+ * |
+ * @param {string} s (optional) |
+ * @return {string} |
+ * @see #trimLeft(), #trimRight() |
+ */ |
+function trim (s) |
+{ |
+ if (!s && this.charAt) |
+ { |
+ s = this; |
+ } |
+ |
+ if (s != "") |
+ { |
+ if (s.replace) |
+ { |
+ s = s.replace(/^\s+|\s+$/g, ""); |
+ } |
+ else |
+ { |
+ s = trimRight(trimLeft(s)); |
+ } |
+ } |
+ |
+ return s; |
+} |
+ |
+/** |
+ * Returns the input string with all leading whitespace removed. |
+ * |
+ * @param {string} s (optional) |
+ * @return {string} |
+ */ |
+function trimLeft (s) |
+{ |
+ if (!s && this.charAt) |
+ { |
+ s = this; |
+ } |
+ |
+ if (s != "") |
+ { |
+ if (s.replace) |
+ { |
+ s = s.replace(/^\s+/, ""); |
+ } |
+ else |
+ { |
+ var i, a; |
+ for (i = 0; |
+ i < s.length && (a = s.charAt(i)) <= " " || a == CH_NBSP; |
+ i++) |
+ { |
+ ; |
+ } |
+ s = s.substring(i); |
+ } |
+ } |
+ |
+ return s; |
+} |
+ |
+/** |
+ * Returns the input string with all trailing whitespace removed. |
+ * |
+ * @param {string} s (optional) |
+ * @return {string} |
+ */ |
+function trimRight (s) |
+{ |
+ if (!s && this.charAt) |
+ { |
+ s = this; |
+ } |
+ |
+ if (s != "") |
+ { |
+ if (s.replace) |
+ { |
+ s = s.replace(/\s+$/, ""); |
+ } |
+ else |
+ { |
+ var i, a; |
+ for (i = s.length - 1; |
+ i >= 0 && (a = s.charAt(i)) <= " " || a == CH_NBSP; |
+ i--) |
+ { |
+ ; |
+ } |
+ s = s.substring(0, i + 1); |
+ } |
+ } |
+ |
+ return s; |
+} |
+ |
+/** |
+ * Converts a Python str (e.g. 'K\xc3\xb6ln') into |
+ * an ECMAScript-compliant string (e.g. 'Köln'). |
+ * |
+ * @param {string} s |
+ * The string to be converted |
+ * @return {string} |
+ * The converted string |
+ */ |
+function pyUTF8toString (s) |
+{ |
+ return unesc( |
+ s.replace(/[\x80-\xff]/g, |
+ function (m) { |
+ return "%" + m.charCodeAt(0).toString(16); |
+ })); |
+} |
+ |
+/* |
+ * If possible, add methods to the String prototype; |
+ * disabled until ECMAScript allows to hide properties from iteration. |
+ */ |
+//jsx.object.extend(String.prototype, { |
+// 'leadingCaps': leadingCaps, |
+// 'leadingZero': leadingZero, |
+// 'repeat' : strRepeat, |
+// 'pad' : pad, |
+// 'replaceText': replaceText, |
+// 'addSlashes' : addSlashes, |
+// 'strCount' : strCount, |
+// 'stripTags' : stripTags, |
+// 'maskMarkup' : maskMarkup, |
+// 'trim' : trim, |
+// 'trimLeft' : trimLeft, |
+// 'trimRight' : trimRight, |
+// |
+// // TODO: corr. with Array.fromStr |
+// 'toArray' : strToArray, |
+// |
+// // TODO: corr. with Array.codeArrayFromStr |
+// 'toCodeArray': strToCodeArray, |
+// |
+// // TODO: corr. with Array.toStr |
+//// 'fromArray' : strFromArray, |
+// |
+// // TODO: corr. with Array.codeArrayToStr |
+//// fromCodeArray: strFromCodeArray, |
+// |
+// 'hashCode' : hashCode, |
+// 'format1k' : format1k}); |
+// |
+//p = Array.prototype; |
+//if (p) |
+//{ |
+// // TODO: corr. with String.toArray |
+// p.fromStr = arrayFromStr; |
+// |
+// // TODO: corr. with String.toCodeArray |
+// p.codeArrayFromStr = codeArrayFromStr; |
+// |
+// // TODO: corr. with String.fromArray |
+// p.toStr = arrayToStr; |
+// |
+// // TODO: corr. with String.fromCodeArray |
+// p.codeArrayToStr = codeArrayToStr; |
+//} |
/live/string.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/date.js |
=================================================================== |
--- live/date.js (nonexistent) |
+++ live/date.js (revision 520) |
@@ -0,0 +1,619 @@ |
+/** |
+ * @fileOverview <title>Date Library</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * @requires string.js for Date.protoype.strftime() |
+ * |
+ * @author (C) 2013 <a href="mailto:js@PointedEars.de">Thomas Lahn</a> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.date = { |
+ /** |
+ * @version |
+ */ |
+ version: "$Id$", |
+ copyright: "Copyright \xA9 2013", |
+ author: "Thomas Lahn", |
+ email: "js@PointedEars.de", |
+ path: "http://PointedEars.de/scripts/", |
+ |
+ /** |
+ * Weekday names, where the elements are {@link Array}s of |
+ * {@link Array}s of {@link String}. The first element of the |
+ * inner <code>Array</code> holds the abbreviated name, |
+ * the second one the long name. |
+ * @type {Array} |
+ */ |
+ WEEKDAYS: [ |
+ ["Sun", "Sunday"], ["Mon", "Monday"], ["Tue", "Tuesday"], |
+ ["Wed", "Wednesday"], ["Thu", "Thursday"], ["Fri", "Friday"], |
+ ["Sat", "Saturday"] |
+ ], |
+ |
+ /** |
+ * Month names, where the elements are {@link Array}s of |
+ * {@link Array}s of {@link String}. The first element of the |
+ * inner <code>Array</code> holds the abbreviated name, |
+ * the second one the long name. |
+ */ |
+ MONTHS: [ |
+ ["Jan", "January"], ["Feb", "February"], ["Mar", "March"], |
+ ["Apr", "April"], ["May", "May"], ["Jun", "June"], |
+ ["Jul", "July"], ["Aug", "August"], ["Sep", "September"], |
+ ["Oct", "October"], ["Nov", "November"], ["Dec", "December"] |
+ ], |
+ |
+ /** |
+ * Daytimes for the 12-hour format |
+ */ |
+ DAYTIMES: {am: "am", pm: "pm"}, |
+ |
+ /** |
+ * Time zone names, where the keys are the offsets to UTC in |
+ * minutes, and the values are {@link Array}s of {@link String}. |
+ */ |
+ TIMEZONES: { |
+ "540": ["Alaska Standard Time (AKST)"], |
+ "480": ["Alaska Daylight Time (AKDT)"], |
+ "240": ["Atlantic Standard Time (AST)"], |
+ "180": ["Atlantic Daylight Time (ADT)", |
+ "Argentina Time (ART)"], |
+ "0": ["Greenwich Mean Time (GMT)"], |
+ "-60": ["Central European Time (CET)"], |
+ "-120": ["Central European Summer Time (CEST)"], |
+ "-180": ["Arabia Standard Time (AST)"], |
+ "-240": ["Armenia Time (AMT)"], |
+ "-270": ["Afghanistan Time (AFT)"], |
+ "-480": ["Australian Western Standard Time (AWST)", |
+ "ASEAN Common Time (ACT)"], |
+ "-570": ["Australian Central Standard Time (ACST)"], |
+ "-600": ["Australian Eastern Standard Time (AEST)"], |
+ "-630": ["Australian Central Daylight Time (ACDT)"], |
+ "-660": ["Australian Eastern Daylight Time (AEDT)"] |
+ }, |
+ |
+ /** |
+ * Returns the number of day within a year |
+ * |
+ * @param {Date} date |
+ * @return {number} |
+ * @see http://en.wikipedia.org/wiki/Ordinal_date |
+ */ |
+ dayOfYear: function (date) { |
+ var month = date.getMonth(); |
+ var dayOfMonth = date.getDate(); |
+ switch (month) |
+ { |
+ /* January */ |
+ case 0: |
+ return dayOfMonth; |
+ |
+ /* February */ |
+ case 1: |
+ return dayOfMonth + 31; |
+ |
+ default: |
+ return Math.floor(30.6 * (month + 1) - 91.4) + dayOfMonth |
+ + (jsx.date.isLeapYear(date.getFullYear()) ? 60 : 59); |
+ } |
+ }, |
+ |
+ /** |
+ * Determines if the arguments define a valid date-time. |
+ * |
+ * @param {Number} year |
+ * Year argument for the {@link Date} constructor. Possible |
+ * implementation-dependent correction of two-digit years is |
+ * not supported. |
+ * @param {Number} month |
+ * @param {Number} date (optional) |
+ * Day of month |
+ * @param {Number} minutes (optional) |
+ * @param {Number} seconds (optional) |
+ * @param {Number} ms (optional) |
+ * Milliseconds |
+ * @return {boolean} |
+ * <code>true</code> if the arguments would produce a |
+ * corresponding time value when passed to the {@link Date} |
+ * constructor, <code>false</code> otherwise. |
+ * @see Date |
+ */ |
+ isValid: function (year, month, date, hours, minutes, seconds, ms) { |
+ if (arguments.length < 3) |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Not enough arguments", [].slice.call(arguments), |
+ "at least (year : int, month : int)"]); |
+ } |
+ |
+ var d = Date.construct(arguments); |
+ |
+ return (d.getFullYear() == year |
+ && (typeof month == "undefined" || d.getMonth() == month) |
+ && (typeof hours == "undefined" || d.getHours() == hours) |
+ && (typeof minutes == "undefined" || d.getMinutes() == minutes) |
+ && (typeof seconds == "undefined" || d.getSeconds() == seconds)); |
+ }, |
+ |
+ /** |
+ * Determines if a year is a leap year. |
+ * |
+ * @param {Number} year |
+ * @return {boolean} |
+ * Returns <code>true</code> if <var>year</var> is a leap year. |
+ */ |
+ isLeapYear: function (year) { |
+ return jsx.date.isValid(year, 1, 29); |
+ }, |
+ |
+ /** |
+ * Calculate the ISO 8601 weekday number of a <code>Date</code>. |
+ * |
+ * The ISO 8601 weekday number differs from the ECMAScript |
+ * weekday number in that Sunday is <code>7</code> instead of |
+ * <code>0</code>. |
+ * |
+ * @param {Date} date |
+ * @return {number} |
+ */ |
+ isoWeekday: function (date) { |
+ return (date.getDay() % 7) || 7; |
+ }, |
+ |
+ /** |
+ * Calculates the ISO 8601 week number of a <code>Date</code>. |
+ * |
+ * @param {Date} date |
+ * @return {number} |
+ * @see http://en.wikipedia.org/wiki/ISO_week_date#Calculating_the_week_number_of_a_given_date |
+ */ |
+ isoWeekNumber: function jsx_date_isoWeekNumber (date) { |
+ var result = Math.floor( |
+ (jsx.date.dayOfYear(date) - jsx.date.isoWeekday(date) |
+ + 10) / 7); |
+ |
+ switch (result) |
+ { |
+ case 0: |
+ result = jsx_date_isoWeekNumber(new Date(date.getFullYear() - 1, 11, 31)); |
+ break; |
+ |
+ case 53: |
+ /* TODO */ |
+ } |
+ |
+ return result; |
+ }, |
+ |
+ /** |
+ * Returns the time zone offset of a {@link Date} |
+ * in hours and minutes |
+ */ |
+ tzOffsetHours: (function () { |
+ var _leadingZero = jsx.string.leadingZero; |
+ |
+ /** |
+ * @param {Date} date |
+ * @param {TimeOptions} options |
+ * <table> |
+ * <tr> |
+ * <th>delimiter</th> |
+ * <td>Delimiter between hours and minutes</td> |
+ * </tr> |
+ * <tr> |
+ * <th>leadingZero</th> |
+ * <td>If <code>true</code>, hours always have two digits.</td> |
+ * </tr> |
+ * <tr> |
+ * <th>zeroMinutes</th> |
+ * <td>If <code>true</code> minutes are returned even |
+ * if they are zero.</td> |
+ * </tr> |
+ * </table> |
+ * @return {Object|string} |
+ */ |
+ function _tzOffsetHours (date, options) |
+ { |
+ var tzOffset = date.getTimezoneOffset(); |
+ var hours = Math.floor(Math.abs(tzOffset) / 60); |
+ var minutes = Math.floor(Math.abs(tzOffset) - (hours * 60)); |
+ |
+ if (arguments.length < 2) |
+ { |
+ return {hours: hours, minutes: minutes}; |
+ } |
+ |
+ return (tzOffset < 0 ? "+" : "-") |
+ + (options && options.leadingZero ? _leadingZero(hours, 2) : hours) |
+ + (+minutes || options && options.zeroMinutes |
+ ? (options && options.delimiter || "") + _leadingZero(minutes, 2) |
+ : ""); |
+ } |
+ |
+ return _tzOffsetHours; |
+ })(), |
+ |
+ /** |
+ * Formats a date with letters as placeholders |
+ */ |
+ format: (function () { |
+ var _jsx_string, _leadingZero; |
+ var _weekdays, _months, _daytimes, _timezones; |
+ var _dayOfYear, _isoWeekday, _isoWeekNumber, _tzOffsetHours; |
+ |
+ var _rxDateFormats = /\\([\S\s])|YY(YY)?|M{1,4}|D{1,4}|W{1,4}|ww?|HH?|hh?|mm?|s{1,4}|Z{1,3}/g; |
+ |
+ function _formatter (m, literal) |
+ { |
+ switch (m) |
+ { |
+ case "W": return _weekdays[this.getDay()][0].charAt(0); |
+ case "WW": return _weekdays[this.getDay()][0].substring(0, 2); |
+ case "WWW": return _weekdays[this.getDay()][0]; |
+ case "WWWW": return _weekdays[this.getDay()][1]; |
+ case "w": return _isoWeekday(this); |
+ case "ww": return _leadingZero(_isoWeekNumber(this), 2); |
+ case "YY": return this.getFullYear() % 100; |
+ case "YYYY": return this.getFullYear(); |
+ case "M": return this.getMonth() + 1; |
+ case "MM": return _leadingZero(this.getMonth() + 1, 2); |
+ case "MMM": return _months[this.getMonth()][0]; |
+ case "MMMM": return _months[this.getMonth()][1]; |
+ case "D": return this.getDate(); |
+ case "DD": return _leadingZero(this.getDate(), 2); |
+ case "DDD": return _dayOfYear(this); |
+ case "H": return this.getHours(); |
+ case "HH": return _leadingZero(this.getHours(), 2); |
+ case "h": return (this.getHours() % 12) || "12"; |
+ case "hh": return _leadingZero((this.getHours() % 12) || "12", 2); |
+ case "P": return _daytimes[this.getHours() < 12 ? "am" : "pm"].toUpperCase(); |
+ case "p": return _daytimes[this.getHours() < 12 ? "am" : "pm"]; |
+ case "m": return this.getMinutes(); |
+ case "mm": return _leadingZero(this.getMinutes(), 2); |
+ case "s": return this.getSeconds(); |
+ case "ss": return _leadingZero(this.getSeconds(), 2); |
+ case "sss": return this.getMilliseconds(); |
+ case "ssss": return _leadingZero(this.getMilliseconds(), 3); |
+ case "Z": return _tzOffsetHours(this, null); |
+ case "ZZ": |
+ return _tzOffsetHours(this, { |
+ delimiter: ":", |
+ leadingZero: true, |
+ zeroMinutes: true |
+ }); |
+ |
+ case "ZZZ": |
+ var tzNames = _timezones[this.getTimezoneOffset()]; |
+ |
+ /* |
+ * If no time zone name is defined for the offset, |
+ * return UTC(+|-)H(:MM)? |
+ */ |
+ return (tzNames && tzNames.join("/") |
+ || ("UTC" + _format(this, "Z"))); |
+ |
+ default: |
+ if (m.charAt(0) != "\\") |
+ { |
+ jsx.warn("Unsupported format: " + m); |
+ return m; |
+ } |
+ |
+ return literal; |
+ } |
+ } |
+ |
+ /** |
+ * @param {Date} date |
+ * @param {String} format |
+ */ |
+ function _format (date, format) |
+ { |
+ if (arguments.length < 2 || typeof format == "undefined") |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Not enough arguments", "", "(date : Date, format : String)"]); |
+ } |
+ |
+ if (typeof _jsx_string == "undefined") |
+ { |
+ /* one-time imports for _formatter() */ |
+ _jsx_string = jsx.string; |
+ _leadingZero = _jsx_string.leadingZero; |
+ } |
+ |
+ var _date = jsx.date; |
+ _weekdays = _date.WEEKDAYS; |
+ _months = _date.MONTHS; |
+ _daytimes = _date.DAYTIMES; |
+ _timezones = _date.TIMEZONES; |
+ _dayOfYear = _date.dayOfYear; |
+ _isoWeekday = _date.isoWeekday; |
+ _isoWeekNumber = _date.isoWeekNumber; |
+ _tzOffsetHours = _date.tzOffsetHours; |
+ |
+ return format.replace(_rxDateFormats, _formatter.bind(date)); |
+ } |
+ |
+ return _format; |
+ }()), |
+ |
+ /** |
+ * Returns a {@link Date} as a formatted string |
+ * |
+ * @namespace |
+ * @name jsx.date.strftime |
+ * @function |
+ * @return {string} |
+ * <var>date</var> formatted according to <var>format</var> |
+ */ |
+ strftime: (function () { |
+ var _jsx_string, _leadingZero, _pad; |
+ var _dayOfYear, _isoWeekday, _isoWeekNumber, _tzOffsetHours; |
+ var _weekdays, _months, _daytimes, _timezones; |
+ |
+ var _rxDateFormats = /%([aAdejuwUVWbBhmCgGyYHkIlMpPrTSTXzZcDFsxnt%])/g; |
+ |
+ /** |
+ * Replaces a date format placeholder with the corresponding value |
+ * |
+ * @private |
+ * @param {String} placeholder |
+ * @param {String} conversion |
+ * @return {String} |
+ */ |
+ function _formatter (placeholder, conversion) |
+ { |
+ switch (conversion) |
+ { |
+ /* Day */ |
+ case "a": return _weekdays[this.getDay()][0]; |
+ case "A": return _weekdays[this.getDay()][1]; |
+ case "d": return _leadingZero(this.getDate(), 2); |
+ case "e": return _pad(this.getDate(), 2); |
+ case "j": return _leadingZero(_dayOfYear(this), 3); |
+ |
+ /* ISO 8601 weekday: Sunday (0) is 7 */ |
+ case "u": return _isoWeekday(this); |
+ |
+ case "w": return this.getDay(); |
+ |
+ /* Week */ |
+ /* TODO: %U, %W */ |
+ case "V": return _leadingZero(_isoWeekNumber(this), 2); |
+ |
+ /* Month */ |
+ case "b": |
+ case "h": |
+ return _months[this.getMonth()][0]; |
+ case "B": return _months[this.getMonth()][1]; |
+ case "m": return _leadingZero(this.getMonth() + 1, 2); |
+ |
+ /* Year */ |
+ case "C": return _leadingZero(Math.floor(this.getFullYear() / 100), 2); |
+ case "y": return _leadingZero(this.getFullYear() % 100, 2); |
+ case "Y": return _leadingZero(this.getFullYear(), 4); |
+ /* TODO: %G, %g */ |
+ |
+ /* Time */ |
+ case "H": return _leadingZero(this.getHours(), 2); |
+ case "k": return _pad(this.getHours(), 2); |
+ |
+ /* 12-hour format, 0 hours is 12am */ |
+ case "I": return _leadingZero((this.getHours() % 12) || "12", 2); |
+ case "l": return _pad((this.getHours() % 12) || "12" , 2); |
+ |
+ case "M": return _leadingZero(this.getMinutes(), 2); |
+ |
+ /* Counter-intuitive, but according to strftime(3) */ |
+ case "p": return _daytimes[this.getHours() < 12 ? "am" : "pm"].toUpperCase(); |
+ case "P": return _daytimes[this.getHours() < 12 ? "am" : "pm"]; |
+ |
+ case "R": return _strftime(this, "%H:%M"); |
+ /* TODO: %r */ |
+ case "S": return _leadingZero(this.getSeconds(), 2); |
+ case "T": return _strftime(this, "%H:%M:%S"); |
+ case "X": return this.toLocaleTimeString(); |
+ case "z": |
+ return _tzOffsetHours(this, { |
+ leadingZero: true, |
+ zeroMinutes: true |
+ }); |
+ |
+ case "Z": |
+ var tzNames = _timezones[this.getTimezoneOffset()]; |
+ |
+ /* |
+ * If no time zone name is defined for the offset, |
+ * return UTC(+|-)H(:MM)? |
+ */ |
+ return (tzNames && tzNames.join("/") |
+ || ("UTC" + _tzOffsetHours(this, {delimiter: ":"}))); |
+ |
+ /* Time and Date Stamps */ |
+ case "c": return this.toLocaleString(); |
+ case "D": return _strftime(this, "%m/%d/%y"); |
+ case "F": return _strftime(this, "%Y-%m-%d"); |
+ |
+ /* |
+ * Unix timestamp (the number of seconds since the Epoch, |
+ * 1970-01-01 00:00:00 +0000 (UTC)) |
+ */ |
+ case "s": return Math.floor(this.valueOf() / 1000); |
+ |
+ case "x": return this.toLocaleDateString(); |
+ |
+ /* Miscellaneous */ |
+ case "n": return "\n"; |
+ case "t": return "\t"; |
+ case "%": return "%"; |
+ |
+ default: |
+ jsx.warn("Unsupported conversion specifier: " + placeholder); |
+ return placeholder; |
+ } |
+ } |
+ |
+ /** |
+ * @param {Date} date |
+ * @param {String} format |
+ */ |
+ function _strftime (date, format) |
+ { |
+ if (arguments.length < 2 || typeof format == "undefined") |
+ { |
+ return jsx.throwThis(jsx.InvalidArgumentError, |
+ ["Not enough arguments", "", "(date : Date, format : String)"]); |
+ } |
+ |
+ if (typeof _jsx_string == "undefined") |
+ { |
+ /* one-time imports for _formatter() */ |
+ _jsx_string = jsx.string; |
+ _leadingZero = _jsx_string.leadingZero; |
+ _pad = _jsx_string.pad; |
+ } |
+ |
+ var _date = jsx.date; |
+ _weekdays = _date.WEEKDAYS; |
+ _months = _date.MONTHS; |
+ _daytimes = _date.DAYTIMES; |
+ _timezones = _date.TIMEZONES; |
+ _dayOfYear = _date.dayOfYear; |
+ _isoWeekday = _date.isoWeekday; |
+ _isoWeekNumber = _date.isoWeekNumber; |
+ _tzOffsetHours = _date.tzOffsetHours; |
+ |
+ return String(format).replace(_rxDateFormats, _formatter.bind(date)); |
+ } |
+ |
+ return _strftime; |
+ }()) |
+}; |
+ |
+if (jsx.options.augmentBuiltins) |
+{ |
+ jsx.object.extend(Date, { |
+ /** |
+ * @memberOf Date |
+ * @function |
+ * @see jsx.date.isLeapYear |
+ */ |
+ isLeapYear: jsx.date.isLeapYear, |
+ |
+ /** |
+ * @function |
+ * @see jsx.date.isValid |
+ */ |
+ isValid: jsx.date.isValid |
+ }); |
+ |
+ if (jsx.options.augmentPrototypes) |
+ { |
+ jsx.object.extend(Date.prototype, { |
+ /** |
+ * Returns the ISO weekday number of this <code>Date</code>. |
+ * |
+ * @function |
+ * @memberOf Date.prototype |
+ * @see jsx.date.isoWeekNumber(Date) |
+ * @return {number} |
+ */ |
+ getISOWeekday: (function () { |
+ var _isoWeekday = jsx.date.isoWeekday; |
+ |
+ return function () { |
+ return _isoWeekday(this); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns the ISO week number of this <code>Date</code>. |
+ * |
+ * @function |
+ * @see jsx.date.isoWeekNumber(Date) |
+ * @return {number} |
+ */ |
+ getISOWeekNumber: (function () { |
+ var _isoWeekNumber = jsx.date.isoWeekNumber; |
+ |
+ return function () { |
+ return _isoWeekNumber(this); |
+ }; |
+ }()), |
+ |
+ /** |
+ * Returns the number of day within a year |
+ * |
+ * @function |
+ * @see jsx.date.dayOfYear(Date) |
+ * @return {number} |
+ */ |
+ getDayOfYear: (function () { |
+ var _dayOfYear = jsx.date.dayOfYear; |
+ |
+ return function () { |
+ return _dayOfYear(this); |
+ }; |
+ }()), |
+ |
+ /** |
+ * @function |
+ * @see jsx.date#format(Date, String) |
+ * @return {string} |
+ */ |
+ format: (function () { |
+ var _format = jsx.date.format; |
+ |
+ /** |
+ * @param {String} format |
+ */ |
+ return function (format) { |
+ return _format(this, format); |
+ }; |
+ }()), |
+ |
+ /** |
+ * @function |
+ * @see jsx.date#strftime(Date, String) |
+ * @return {string} |
+ */ |
+ strftime: (function () { |
+ var _strftime = jsx.date.strftime; |
+ |
+ /** |
+ * @param {String} format |
+ */ |
+ return function (format) { |
+ return _strftime(this, format); |
+ }; |
+ }()) |
+ }); |
+ } |
+} |
\ No newline at end of file |
/live/date.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/compat.js |
=================================================================== |
--- live/compat.js (nonexistent) |
+++ live/compat.js (revision 520) |
@@ -0,0 +1,41 @@ |
+var _global = jsx.global; |
+var setErrorHandler = jsx.setErrorHandler; |
+var clearErrorHandler = jsx.clearErrorHandler; |
+ |
+var addProperties = jsx.object.addProperties = (function () { |
+ var rxObject = /^\s*(object|function)\s*$/i; |
+ |
+ return function (oSource, iFlags, oOwner) { |
+ if (rxObject.test(typeof iFlags)) |
+ { |
+ oOwner = iFlags; |
+ iFlags = 0; |
+ } |
+ |
+ if (!oOwner) |
+ { |
+ oOwner = jsx.global; |
+ } |
+ |
+ return jsx.object.extend(oOwner, oSource, iFlags); |
+ }; |
+}()); |
+ |
+var isMethod = function () { |
+ for (var i = arguments.length; i--;) |
+ { |
+ if (!jsx.object.isMethod(arguments[i])) |
+ { |
+ return false; |
+ } |
+ } |
+ |
+ return true; |
+}; |
+ |
+var isMethodType = jsx.object.isMethodType; |
+var isInstanceOf = jsx.object.isInstanceOf; |
+ |
+var types = jsx.types; |
+ |
+var Collection = jsx.Collection; |
\ No newline at end of file |
/live/compat.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/org.eclipse.wst.jsdt.core.prefs |
=================================================================== |
--- live/.settings/org.eclipse.wst.jsdt.core.prefs (nonexistent) |
+++ live/.settings/org.eclipse.wst.jsdt.core.prefs (revision 520) |
@@ -0,0 +1,321 @@ |
+eclipse.preferences.version=1 |
+org.eclipse.wst.jsdt.core.compiler.codegen.inlineJsrBytecode=disabled |
+org.eclipse.wst.jsdt.core.compiler.codegen.targetPlatform=1.2 |
+org.eclipse.wst.jsdt.core.compiler.codegen.unusedLocal=preserve |
+org.eclipse.wst.jsdt.core.compiler.compliance=1.4 |
+org.eclipse.wst.jsdt.core.compiler.debug.lineNumber=generate |
+org.eclipse.wst.jsdt.core.compiler.debug.localVariable=generate |
+org.eclipse.wst.jsdt.core.compiler.debug.sourceFile=generate |
+org.eclipse.wst.jsdt.core.compiler.doc.comment.support=enabled |
+org.eclipse.wst.jsdt.core.compiler.problem.assertIdentifier=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.deprecation=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationInDeprecatedCode=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.discouragedReference=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.duplicateLocalVariables=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.emptyStatement=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.fallthroughCase=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.fieldHiding=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.forbiddenReference=error |
+org.eclipse.wst.jsdt.core.compiler.problem.hiddenCatchBlock=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.indirectStaticAccess=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.invalidJavadoc=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.invalidJavadocTags=enabled |
+org.eclipse.wst.jsdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.invalidJavadocTagsVisibility=default |
+org.eclipse.wst.jsdt.core.compiler.problem.localVariableHiding=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.looseVarDecleration=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.missingJavadocComments=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.missingJavadocCommentsVisibility=default |
+org.eclipse.wst.jsdt.core.compiler.problem.missingJavadocTags=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.missingJavadocTagsOverriding=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.missingJavadocTagsVisibility=default |
+org.eclipse.wst.jsdt.core.compiler.problem.noEffectAssignment=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.nonExternalizedStringLiteral=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.nullReference=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.optionalSemicolon=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.parameterAssignment=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.potentialNullReference=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.redundantNullCheck=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.undefinedField=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.undocumentedEmptyBlock=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedGlobalVariable=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedLocalVariable=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.unnecessaryElse=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedFieldReference=error |
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedMethodReference=error |
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedTypeReference=error |
+org.eclipse.wst.jsdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLabel=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLocal=warning |
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameter=ignore |
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled |
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled |
+org.eclipse.wst.jsdt.core.compiler.problem.unusedPrivateMember=warning |
+org.eclipse.wst.jsdt.core.compiler.source=1.3 |
+org.eclipse.wst.jsdt.core.compiler.taskCaseSensitive=enabled |
+org.eclipse.wst.jsdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,NORMAL,LOW |
+org.eclipse.wst.jsdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,DEBUG |
+org.eclipse.wst.jsdt.core.formatter.align_type_members_on_columns=false |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_enum_constant=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_method_invocation=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_assignment=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_binary_expression=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_compact_if=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_conditional_expression=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_enum_constants=0 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_expressions_in_array_initializer=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_multiple_fields=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_method_declaration=18 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_superclass_in_type_declaration=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 |
+org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_after_imports=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_after_package=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_field=0 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_first_class_body_declaration=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_imports=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_member_type=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_method=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_new_chunk=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_package=0 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_between_import_groups=1 |
+org.eclipse.wst.jsdt.core.formatter.blank_lines_between_type_declarations=0 |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_array_initializer=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_block=next_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_block_in_case=next_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_constructor_declaration=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_constant=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_declaration=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_method_declaration=next_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_objlit_initializer=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_switch=next_line |
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_type_declaration=end_of_line |
+org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_block_comment=true |
+org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true |
+org.eclipse.wst.jsdt.core.formatter.comment.format_block_comments=true |
+org.eclipse.wst.jsdt.core.formatter.comment.format_header=true |
+org.eclipse.wst.jsdt.core.formatter.comment.format_html=true |
+org.eclipse.wst.jsdt.core.formatter.comment.format_javadoc_comments=true |
+org.eclipse.wst.jsdt.core.formatter.comment.format_line_comments=true |
+org.eclipse.wst.jsdt.core.formatter.comment.format_source_code=true |
+org.eclipse.wst.jsdt.core.formatter.comment.indent_parameter_description=false |
+org.eclipse.wst.jsdt.core.formatter.comment.indent_root_tags=true |
+org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_before_root_tags=insert |
+org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_for_parameter=insert |
+org.eclipse.wst.jsdt.core.formatter.comment.line_length=72 |
+org.eclipse.wst.jsdt.core.formatter.compact_else_if=true |
+org.eclipse.wst.jsdt.core.formatter.continuation_indentation=1 |
+org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_array_initializer=1 |
+org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_objlit_initializer=1 |
+org.eclipse.wst.jsdt.core.formatter.format_guardian_clause_on_one_line=false |
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true |
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true |
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true |
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_type_header=true |
+org.eclipse.wst.jsdt.core.formatter.indent_breaks_compare_to_cases=true |
+org.eclipse.wst.jsdt.core.formatter.indent_empty_lines=true |
+org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_block=true |
+org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_body=true |
+org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_cases=true |
+org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_switch=true |
+org.eclipse.wst.jsdt.core.formatter.indentation.size=2 |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_annotation=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_comma_in_objlit_initializer=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_objlit_initializer=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_objlit_initializer=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_else_in_if_statement=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_while_in_do_statement=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_block=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_constant=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_method_body=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_type_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_and_in_type_parameter=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_assignment_operator=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_binary_operator=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_brace_in_block=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_paren_in_cast=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_assert=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_case=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_conditional=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_for=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_object_initializer=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_annotation=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_array_initializer=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_increments=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_inits=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_postfix_operator=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_prefix_operator=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_conditional=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_semicolon_in_for=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_unary_operator=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_assignment_operator=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_binary_operator=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_assert=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_case=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_conditional=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_default=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_for=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_object_initializer=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_annotation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_ellipsis=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_block=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_switch=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_catch=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_for=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_if=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_switch=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_while=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_postfix_operator=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_prefix_operator=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_conditional=insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon_in_for=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_unary_operator=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert |
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert |
+org.eclipse.wst.jsdt.core.formatter.keep_else_statement_on_same_line=false |
+org.eclipse.wst.jsdt.core.formatter.keep_empty_array_initializer_on_one_line=false |
+org.eclipse.wst.jsdt.core.formatter.keep_empty_objlit_initializer_on_one_line=false |
+org.eclipse.wst.jsdt.core.formatter.keep_imple_if_on_one_line=false |
+org.eclipse.wst.jsdt.core.formatter.keep_then_statement_on_same_line=false |
+org.eclipse.wst.jsdt.core.formatter.lineSplit=80 |
+org.eclipse.wst.jsdt.core.formatter.never_indent_block_comments_on_first_column=false |
+org.eclipse.wst.jsdt.core.formatter.never_indent_line_comments_on_first_column=false |
+org.eclipse.wst.jsdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 |
+org.eclipse.wst.jsdt.core.formatter.number_of_empty_lines_to_preserve=1 |
+org.eclipse.wst.jsdt.core.formatter.put_empty_statement_on_new_line=true |
+org.eclipse.wst.jsdt.core.formatter.tabulation.char=space |
+org.eclipse.wst.jsdt.core.formatter.tabulation.size=2 |
+org.eclipse.wst.jsdt.core.formatter.use_tabs_only_for_leading_indentations=false |
+org.eclipse.wst.jsdt.core.formatter.wrap_before_binary_operator=true |
+semanticValidation=enabled |
/live/.settings/org.eclipse.wst.jsdt.core.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/org.eclipse.wst.xsl.core.prefs |
=================================================================== |
--- live/.settings/org.eclipse.wst.xsl.core.prefs (nonexistent) |
+++ live/.settings/org.eclipse.wst.xsl.core.prefs (revision 520) |
@@ -0,0 +1,12 @@ |
+#Tue Apr 05 22:58:44 CEST 2011 |
+CHECK_CALL_TEMPLATES=2 |
+CHECK_XPATHS=2 |
+CIRCULAR_REF=2 |
+DUPLICATE_PARAMETER=2 |
+EMPTY_PARAM=1 |
+MISSING_INCLUDE=2 |
+MISSING_PARAM=1 |
+NAME_ATTRIBUTE_EMPTY=2 |
+NAME_ATTRIBUTE_MISSING=2 |
+TEMPLATE_CONFLICT=2 |
+eclipse.preferences.version=1 |
/live/.settings/org.eclipse.wst.xsl.core.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/org.eclipse.wst.jsdt.ui.prefs |
=================================================================== |
--- live/.settings/org.eclipse.wst.jsdt.ui.prefs (nonexistent) |
+++ live/.settings/org.eclipse.wst.jsdt.ui.prefs (revision 520) |
@@ -0,0 +1,52 @@ |
+eclipse.preferences.version=1 |
+editor_save_participant_org.eclipse.wst.jsdt.ui.postsavelistener.cleanup=true |
+formatter_profile=_PointedEars |
+formatter_settings_version=11 |
+org.eclipse.wst.jsdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/> |
+sp_cleanup.add_default_serial_version_id=true |
+sp_cleanup.add_generated_serial_version_id=false |
+sp_cleanup.add_missing_annotations=true |
+sp_cleanup.add_missing_deprecated_annotations=true |
+sp_cleanup.add_missing_nls_tags=false |
+sp_cleanup.add_missing_override_annotations=true |
+sp_cleanup.add_serial_version_id=false |
+sp_cleanup.always_use_blocks=true |
+sp_cleanup.always_use_parentheses_in_expressions=false |
+sp_cleanup.always_use_this_for_non_static_field_access=false |
+sp_cleanup.always_use_this_for_non_static_method_access=false |
+sp_cleanup.convert_to_enhanced_for_loop=false |
+sp_cleanup.format_source_code=false |
+sp_cleanup.make_local_variable_final=false |
+sp_cleanup.make_parameters_final=false |
+sp_cleanup.make_private_fields_final=true |
+sp_cleanup.make_variable_declarations_final=true |
+sp_cleanup.never_use_blocks=false |
+sp_cleanup.never_use_parentheses_in_expressions=true |
+sp_cleanup.on_save_use_additional_actions=true |
+sp_cleanup.organize_imports=true |
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false |
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true |
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true |
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false |
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false |
+sp_cleanup.remove_private_constructors=true |
+sp_cleanup.remove_trailing_whitespaces=true |
+sp_cleanup.remove_trailing_whitespaces_all=true |
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false |
+sp_cleanup.remove_unnecessary_casts=true |
+sp_cleanup.remove_unnecessary_nls_tags=true |
+sp_cleanup.remove_unused_imports=false |
+sp_cleanup.remove_unused_local_variables=false |
+sp_cleanup.remove_unused_private_fields=true |
+sp_cleanup.remove_unused_private_members=false |
+sp_cleanup.remove_unused_private_methods=true |
+sp_cleanup.remove_unused_private_types=true |
+sp_cleanup.sort_members=false |
+sp_cleanup.sort_members_all=false |
+sp_cleanup.use_blocks=true |
+sp_cleanup.use_blocks_only_for_return_and_throw=false |
+sp_cleanup.use_parentheses_in_expressions=false |
+sp_cleanup.use_this_for_non_static_field_access=false |
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true |
+sp_cleanup.use_this_for_non_static_method_access=false |
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true |
/live/.settings/org.eclipse.wst.jsdt.ui.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/org.eclipse.wst.jsdt.ui.superType.name |
=================================================================== |
--- live/.settings/org.eclipse.wst.jsdt.ui.superType.name (nonexistent) |
+++ live/.settings/org.eclipse.wst.jsdt.ui.superType.name (revision 520) |
@@ -0,0 +1 @@ |
+Window |
\ No newline at end of file |
Index: live/.settings/org.eclipse.wst.sse.core.prefs |
=================================================================== |
--- live/.settings/org.eclipse.wst.sse.core.prefs (nonexistent) |
+++ live/.settings/org.eclipse.wst.sse.core.prefs (revision 520) |
@@ -0,0 +1,4 @@ |
+eclipse.preferences.version=1 |
+task-tags/taskPriorities=1,2,1,0 |
+task-tags/taskTags=TODO,FIXME,XXX,DEBUG |
+task-tags/use-project-settings=true |
/live/.settings/org.eclipse.wst.sse.core.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/org.eclipse.php.core.prefs |
=================================================================== |
--- live/.settings/org.eclipse.php.core.prefs (nonexistent) |
+++ live/.settings/org.eclipse.php.core.prefs (revision 520) |
@@ -0,0 +1,11 @@ |
+eclipse.preferences.version=1 |
+org.eclipse.php.core.phpForamtterArrayInitSize=1 |
+org.eclipse.php.core.phpForamtterIndentationSize=2 |
+org.eclipse.php.core.phpForamtterIndentationWrappedLineSize=1 |
+org.eclipse.php.core.phpForamtterTabSize=2 |
+org.eclipse.php.core.phpForamtterUseTabs=false |
+org.eclipse.php.core.taskCaseSensitive=enabled |
+org.eclipse.php.core.taskPriorities=NORMAL,HIGH,NORMAL,NORMAL,LOW |
+org.eclipse.php.core.taskTags=TODO,FIXME,XXX,@todo,DEBUG |
+phpVersion=php5.3 |
+useShortTags=false |
/live/.settings/org.eclipse.php.core.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/org.eclipse.wst.jsdt.ui.superType.container |
=================================================================== |
--- live/.settings/org.eclipse.wst.jsdt.ui.superType.container (nonexistent) |
+++ live/.settings/org.eclipse.wst.jsdt.ui.superType.container (revision 520) |
@@ -0,0 +1 @@ |
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary/StandardBrowser/html5 |
\ No newline at end of file |
Index: live/.settings/org.eclipse.ltk.core.refactoring.prefs |
=================================================================== |
--- live/.settings/org.eclipse.ltk.core.refactoring.prefs (nonexistent) |
+++ live/.settings/org.eclipse.ltk.core.refactoring.prefs (revision 520) |
@@ -0,0 +1,2 @@ |
+eclipse.preferences.version=1 |
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false |
/live/.settings/org.eclipse.ltk.core.refactoring.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/org.eclipse.php.ui.prefs |
=================================================================== |
--- live/.settings/org.eclipse.php.ui.prefs (nonexistent) |
+++ live/.settings/org.eclipse.php.ui.prefs (revision 520) |
@@ -0,0 +1,5 @@ |
+cleanup.remove_trailing_whitespaces=true |
+cleanup.remove_trailing_whitespaces_all=false |
+cleanup.remove_trailing_whitespaces_ignore_empty=true |
+eclipse.preferences.version=1 |
+org.eclipse.php.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/> |
/live/.settings/org.eclipse.php.ui.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.settings/.jsdtscope |
=================================================================== |
--- live/.settings/.jsdtscope (nonexistent) |
+++ live/.settings/.jsdtscope (revision 520) |
@@ -0,0 +1,12 @@ |
+<?xml version="1.0" encoding="UTF-8"?> |
+<classpath> |
+ <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary/StandardBrowser/html5"/> |
+ <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/> |
+ <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject"> |
+ <attributes> |
+ <attribute name="hide" value="true"/> |
+ </attributes> |
+ </classpathentry> |
+ <classpathentry excluding="**/_*.js/**/*.js|**/tmp/**" kind="src" path=""/> |
+ <classpathentry kind="output" path=""/> |
+</classpath> |
Index: live/.settings/org.eclipse.wst.validation.prefs |
=================================================================== |
--- live/.settings/org.eclipse.wst.validation.prefs (nonexistent) |
+++ live/.settings/org.eclipse.wst.validation.prefs (revision 520) |
@@ -0,0 +1,8 @@ |
+DELEGATES_PREFERENCE=delegateValidatorList |
+USER_BUILD_PREFERENCE=enabledBuildValidatorList |
+USER_MANUAL_PREFERENCE=enabledManualValidatorList |
+USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.402.v201301291945 |
+eclipse.preferences.version=1 |
+override=true |
+suspend=false |
+vf.version=3 |
/live/.settings/org.eclipse.wst.validation.prefs |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/builder.php |
=================================================================== |
--- live/builder.php (nonexistent) |
+++ live/builder.php (revision 520) |
@@ -0,0 +1,593 @@ |
+<?php |
+/** |
+ * Builds a resource from several other ones. |
+ * |
+ * @version $Id$ |
+ * @author |
+ * Copyright © 2011 Thomas 'PointedEars' Lahn <php@PointedEars.de> |
+ * |
+ * Part of PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (!function_exists('lcfirst')) |
+{ |
+ function lcfirst ($name) |
+ { |
+ return strtolower(substr($name, 0, 1)) . substr($name, 1); |
+ } |
+} |
+ |
+/** |
+ * Builds a resource from several other ones. |
+ * |
+ * Information is passed via <code>$_GET</code>. Supports PHP-generated |
+ * resources; references to globals in resource SHOULD be avoided, but |
+ * MUST be declared if used. |
+ * |
+ * @author |
+ * Copyright © 2011 Thomas 'PointedEars' Lahn <php@PointedEars.de> |
+ * @license http://www.gnu.org/licenses/gpl.html |
+ * GNU General Public License, version 3 and later |
+ * @property-read string $version |
+ * Class version |
+ * @property string $prefix |
+ * Common path prefix for all resources |
+ * @property array $sources |
+ * Sources to be processed in order |
+ * @property string $contentType |
+ * Content-type to be used |
+ * @property-read array $typeMap |
+ * Maps MIME media types to file extensions |
+ * @property boolean $debug |
+ * If <code>true</code>, preserve original file content |
+ * @property boolean $verbose |
+ * If <code>true</code>, produce verbose messages |
+ * @property-read int $commentCount |
+ * Number of comments processed so far |
+ */ |
+class ResourceBuilder |
+{ |
+ const SCRIPT_CONTENT_TYPE = 'text/javascript'; |
+ |
+ /** |
+ * Class version |
+ * @var string |
+ */ |
+ protected $_version = '0.4.5'; |
+ |
+ /** |
+ * Common path prefix for all resources |
+ * @var string |
+ */ |
+ protected $_prefix = ''; |
+ |
+ /** |
+ * Common path suffix for all resources. |
+ * Determined from <var>$_contentType</var> if <code>null</code>. |
+ * @var string |
+ */ |
+ protected $_suffix = null; |
+ |
+ /** |
+ * Sources to be processed in order |
+ * @var array |
+ */ |
+ protected $_sources = array(); |
+ |
+ /** |
+ * Content-type to be used |
+ * @var string |
+ */ |
+ protected $_contentType = self::SCRIPT_CONTENT_TYPE; |
+ |
+ /** |
+ * @property-read array $typeMap |
+ * Maps MIME media types to file extensions |
+ */ |
+ protected $_typeMap = array( |
+ 'text/javascript' => 'js', |
+ 'text/css' => 'css', |
+ ); |
+ |
+ /** |
+ * If <code>true</code>, preserve original file content |
+ * @var boolean |
+ */ |
+ protected $_debug = false; |
+ |
+ /** |
+ * If <code>true</code>, produce verbose messages |
+ * @var boolean |
+ */ |
+ protected $_verbose = false; |
+ |
+ /** |
+ * If <code>true</code> or <code>false</code>, forces or forbids |
+ * the use of gzip. The default is <code>false</code> which |
+ * gzips only if gzip=1 is specified and the client supports it. |
+ * |
+ * @var boolean |
+ */ |
+ protected $_force_gzip = false; |
+ |
+ /** |
+ * Number of comments processed so far |
+ * @var int |
+ */ |
+ protected $_commentCount = 0; |
+ |
+ protected $_jsxDeps = array( |
+ 'collection' => array('object'), |
+ 'dom' => array('object'), |
+ 'dom/css' => array('dom'), |
+ 'dom/css/color' => array('dom/css'), |
+ 'dom/events' => array('dom'), |
+ 'dom/xpath' => array('object'), |
+ 'http' => array('object'), |
+ 'test/debug' => array('object', 'types', 'array'), |
+ 'types' => array('object'), |
+ ); |
+ |
+ /** |
+ * If <code>true</code>, resolve JSX dependencies statically |
+ * (EXPERIMENTAL) |
+ * @var boolean |
+ */ |
+ protected $_resolve = false; |
+ |
+ public function __construct () |
+ { |
+ if (isset($_GET['src'])) |
+ { |
+ $params = array( |
+ 'prefix', |
+ 'suffix', |
+ 'sources' => 'src', |
+ 'contentType' => 'type', |
+ 'debug', |
+ 'verbose', |
+ 'force_gzip' => 'gzip', |
+ 'resolve' |
+ ); |
+ |
+ foreach ($params as $property => $param) |
+ { |
+ if (isset($_GET[$param])) |
+ { |
+ $value = $_GET[$param]; |
+ |
+ if (is_int($property)) |
+ { |
+ $property = $param; |
+ } |
+ |
+ $this->$property = $value; |
+ } |
+ } |
+ |
+ $this->commentCount = 0; |
+ } |
+ } |
+ |
+ /** |
+ * Universal getter |
+ * |
+ * @param string $name Property name |
+ * @return mixed Property value |
+ * @throws DomainException if no specific getter or such a property exists |
+ */ |
+ public function __get ($name) |
+ { |
+ $getter = 'get' . ucfirst($name); |
+ $property = '_' . lcfirst($name); |
+ |
+ if (method_exists($this, $getter)) |
+ { |
+ return $this->$getter(); |
+ } |
+ |
+ if (property_exists($this, $property)) |
+ { |
+ return $this->$property; |
+ } |
+ |
+ $exceptionClass = 'DomainException'; |
+ $message = "No method '$getter' or property '$property' on this object"; |
+ |
+ if (function_exists($exceptionClass)) |
+ { |
+ throw new $exceptionClass($message); |
+ } |
+ |
+ throw new Exception($message); |
+ } |
+ |
+ /** |
+ * Universal setter |
+ * |
+ * @param string $name |
+ * @param mixed $value |
+ * @throws DomainException if no specific setter or such a property exists |
+ */ |
+ public function __set ($name, $value) |
+ { |
+ $setter = 'set' . ucfirst($name); |
+ $property = '_' . lcfirst($name); |
+ |
+ if (method_exists($this, $setter)) |
+ { |
+ return $this->$setter($value); |
+ } |
+ |
+ if (property_exists($this, $property)) |
+ { |
+ $this->$property = $value; |
+ } |
+ else |
+ { |
+ $exceptionClass = 'DomainException'; |
+ $message = "No method '$setter' or property '$property' on this object"; |
+ |
+ if (function_exists($exceptionClass)) |
+ { |
+ throw new $exceptionClass($message); |
+ } |
+ |
+ throw new Exception($message); |
+ } |
+ } |
+ |
+ /** |
+ * Sets the _sources property |
+ * |
+ * @param string|array $value Sources to process |
+ */ |
+ protected function setSources ($value) |
+ { |
+ if (!is_array($value)) |
+ { |
+ $value = explode(',', $value); |
+ } |
+ |
+ $this->_sources = $value; |
+ } |
+ |
+ /** |
+ * Sets the _contentType property |
+ * |
+ * @param string $value |
+ */ |
+ protected function setContentType ($value) |
+ { |
+ $this->_contentType = ($value ? $value : 'text/javascript'); |
+ } |
+ |
+ /** |
+ * Sets the _debug property |
+ * |
+ * @param string $value |
+ */ |
+ protected function setDebug ($value) |
+ { |
+ if ($value != 0) |
+ { |
+ $this->_debug = true; |
+ } |
+ } |
+ |
+ /** |
+ * Sets the _verbose property |
+ * |
+ * @param string $value |
+ */ |
+ protected function setVerbose ($value) |
+ { |
+ if ($value != 0) |
+ { |
+ $this->_verbose = true; |
+ } |
+ } |
+ |
+ /** |
+ * Sets the <code>_force_gzip</code> property |
+ * |
+ * @param mixed $value |
+ */ |
+ protected function setForce_gzip($value) |
+ { |
+ $this->_force_gzip = ($value !== null) ? !!$value : $value; |
+ } |
+ |
+ /** |
+ * Sets the <code>_resolve</code> property |
+ * |
+ * @param mixed $value |
+ */ |
+ protected function setResolve ($value) |
+ { |
+ if ($value != 0) |
+ { |
+ $this->_resolve = true; |
+ } |
+ } |
+ |
+ /** |
+ * @param array $match |
+ * Comment to work on |
+ * @return string |
+ * Original comment or the empty string |
+ */ |
+ protected function commentReplacer ($match) |
+ { |
+ ++$this->_commentCount; |
+ |
+ if ($this->_commentCount > 1) |
+ { |
+ return ''; |
+ } |
+ |
+ return $match[0]; |
+ } |
+ |
+ /** |
+ * Returns the passed string with all single-line |
+ * comments, leading and trailing whitespace removed |
+ * |
+ * @param string $s Source code to process |
+ * @return string Processed source code |
+ * @todo Do not strip from within literals |
+ */ |
+ protected function uncomment ($s) |
+ { |
+ return preg_replace('#^[\\t ]*//.*(?:\\r?\\n|\\r)*#m', '', |
+ preg_replace('/^\\s+|\\s+$/', '', |
+// preg_replace( |
+// '#/[\\t ]*\\*.*?\\*/[\\t ]*(?:\\r?\\n|\\n)*#s', '', |
+ $s |
+// ) |
+ ) |
+ ); |
+ } |
+ |
+ /** |
+ * Returns the passed string with all JSdoc comments but the first one removed |
+ * |
+ * @param string $s Source code to process |
+ * @return string Processed source code |
+ * @todo Do not strip from within literals |
+ */ |
+ protected function stripJSdoc ($s) |
+ { |
+ $s = preg_replace_callback( |
+ '#[\\t ]*/\\*\\*(?:[^*]|\\*[^/])*\\*/(?:\\r?\\n|\\r)?#', |
+ array('self', 'commentReplacer'), |
+ $s); |
+ |
+ return $s; |
+ } |
+ |
+ /** |
+ * Resolves JSX dependencies from static information |
+ * @todo Use dynamic inline information |
+ * |
+ * @param array $sources |
+ * List of required resources |
+ * @param array $new_sources [optional $name => $name] |
+ * Associative array used internally to build the list |
+ * of sources with their dependencies |
+ * @return array |
+ * List of sources with their dependencies resolved |
+ */ |
+ protected function resolveDeps (array $sources, array &$new_sources = array()) |
+ { |
+ $deps = $this->jsxDeps; |
+ |
+ foreach ($sources as $name) |
+ { |
+ if (!array_key_exists($name, $new_sources) |
+ && array_key_exists($name, $deps)) |
+ { |
+ $this->resolveDeps($deps[$name], $new_sources); |
+ } |
+ |
+ $new_sources[$name] = $name; |
+ } |
+ |
+ return $new_sources; |
+ } |
+ |
+ public function output () |
+ { |
+ $contentType = $this->contentType; |
+ |
+ header('Content-Type: ' . $contentType); |
+ |
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); |
+ |
+ /* Cached resource expires in HTTP/1.1 caches 24h after last retrieval */ |
+ header('Cache-Control: max-age=86400, s-maxage=86400, must-revalidate, proxy-revalidate'); |
+ |
+ /* Cached resource expires in HTTP/1.0 caches 24h after last retrieval */ |
+ header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT'); |
+ |
+ $use_gzip = false; |
+ if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) |
+ && preg_match('/\b((?:x-)?gzip)\s*,?/', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches) |
+ && function_exists('gzencode')) |
+ { |
+ $force_gzip = $this->force_gzip; |
+ $use_gzip = ($force_gzip !== false); |
+ if ($use_gzip) |
+ { |
+ header("Content-Encoding: {$matches[1]}"); |
+ header('Vary: Accept-Encoding'); |
+ } |
+ } |
+ |
+ $prefix = $this->prefix; |
+ |
+ if ($contentType === self::SCRIPT_CONTENT_TYPE |
+ && $this->resolve) |
+ { |
+ $this->sources = $this->resolveDeps($this->sources); |
+ } |
+ |
+ $suffix = $this->suffix; |
+ $out = "/*\n" |
+ . " * Compacted with PointedEars' ResourceBuilder {$this->version}\n" |
+ . ($this->verbose |
+ ? " * Type: {$contentType}\n" |
+ . " * Common Prefix: " . ($prefix ? $prefix : '<none>') . "\n" |
+ . " * Common Suffix: " . $suffix . "\n" |
+ . " * Resources: " . implode(', ', $this->sources) . "\n" |
+ : '') |
+ . " *\n" |
+ . " * Please see the original files for the complete source code.\n" |
+ . " */\n\n"; |
+ |
+ if (!$use_gzip) |
+ { |
+ echo $out; |
+ } |
+ |
+ $verbose = $this->verbose; |
+ |
+ /* Compute sizes only when needed */ |
+ if ($verbose) |
+ { |
+ $totalSize = 0; |
+ $totalCompactedSize = 0; |
+ } |
+ |
+ foreach ($this->sources as $index => $source) |
+ { |
+ $this->commentCount = 0; |
+ |
+ if ($index > 0) |
+ { |
+ if ($use_gzip) |
+ { |
+ $out .= "\n\n"; |
+ } |
+ else |
+ { |
+ echo "\n\n"; |
+ } |
+ } |
+ |
+ $file = $prefix . $source |
+ . ($suffix !== null |
+ ? $suffix |
+ : (array_key_exists($contentType, $this->typeMap) |
+ ? '.' . $this->typeMap[$contentType] |
+ : '')); |
+ |
+ /* Minimum negotiation for dynamic content */ |
+ if (!file_exists($file) && file_exists($file . '.php')) |
+ { |
+ $file .= '.php'; |
+ } |
+ |
+ /* |
+ * NOTE: No file_get_contents(), so that PHP in resource gets parsed. |
+ * See globals caveat in class's PHPdoc. |
+ */ |
+ ob_start(); |
+ require_once $file; |
+ |
+ if ($verbose) |
+ { |
+ $originalSize = ob_get_length(); |
+ } |
+ |
+ $content = ob_get_contents(); |
+ ob_end_clean(); |
+ |
+ if ($verbose) |
+ { |
+ $totalSize += $originalSize; |
+ $originalSizeFormatted = number_format($originalSize, 0, '.', "'"); |
+ } |
+ |
+ if (!$this->debug) |
+ { |
+ $content = $this->uncomment($content); |
+ $content = $this->stripJSdoc($content); |
+ } |
+ |
+ if ($verbose) |
+ { |
+ $compactedSize = strlen($content); |
+ $totalCompactedSize += $compactedSize; |
+ $compactedSizeFormatted = number_format($compactedSize, 0, '.', "'"); |
+ $ratioPercentage = $compactedSize / $originalSize * 100; |
+ $ratioFormatted = sprintf('%.1f %%', $ratioPercentage); |
+ } |
+ |
+ $content = |
+ implode("\n", array( |
+ '/*', |
+ " * {$file}" |
+ . ($verbose |
+ ? ": {$originalSizeFormatted} bytes reduced to {$compactedSizeFormatted} bytes" |
+ . " ({$ratioFormatted})" |
+ : ""), |
+ " */\n" |
+ )) |
+ . $content; |
+ |
+ if ($use_gzip) |
+ { |
+ $out .= $content; |
+ } |
+ else |
+ { |
+ echo $content; |
+ } |
+ } |
+ |
+ if ($verbose) |
+ { |
+ $totalSizeFormatted = number_format($totalSize, 0, '.', "'"); |
+ $totalCompactedSizeFormatted = number_format($totalCompactedSize, 0, '.', "'"); |
+ $ratioPercentage = $totalCompactedSize / $totalSize * 100; |
+ $ratioFormatted = sprintf('%.1f %%', $ratioPercentage); |
+ |
+ $summary = "\n\n/*" |
+ . " Total of {$totalSizeFormatted} bytes reduced to {$totalCompactedSizeFormatted} bytes" |
+ . " ({$ratioFormatted}). */"; |
+ |
+ if ($use_gzip) |
+ { |
+ $out .= $summary; |
+ } |
+ else |
+ { |
+ echo $summary; |
+ } |
+ } |
+ |
+ if ($use_gzip) |
+ { |
+ $zipped = gzencode($out); |
+ //header('Content-Length: ' . strlen($zipped)); |
+ echo $zipped; |
+ } |
+ } |
+} |
+ |
+$builder = new ResourceBuilder(); |
+$builder->output(); |
/live/builder.php |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+Id |
\ No newline at end of property |
Index: live/math.js |
=================================================================== |
--- live/math.js (nonexistent) |
+++ live/math.js (revision 520) |
@@ -0,0 +1,150 @@ |
+/** |
+ * @fileOverview <title>PointedEars' JSX: Basic Math Library</title> |
+ * @file $Id$ |
+ * @requires object.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author |
+ * (C) 2000-2011, 2013 Thomas Lahn <math.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+/* |
+ * This document contains JavaScriptDoc[tm], see |
+ * <http://pointedears.de/scripts/JSDoc/> |
+ * for details. |
+ * |
+ * Refer math.htm file for general documentation. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ var jsx = {}; |
+} |
+ |
+/** |
+ * @namespace |
+ */ |
+jsx.math = { |
+ version: "1.16.$Rev$", |
+ copyright: "Copyright \xA9 1999-2011, 2013", |
+ author: "Thomas Lahn", |
+ email: "math.js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/" |
+}; |
+// jsx.math.docURL = jsx.math.path + "math.htm"; |
+ |
+/* User interface language */ |
+jsx.math.language = "en"; |
+ |
+/** @section Exceptions */ |
+ |
+jsx.math.msgInvArg = { |
+ 'en': 'Invalid function argument', |
+ 'de': 'Ungültiges Funktionsargument' |
+}; |
+ |
+jsx.math.msgArgMissing = { |
+ 'en': 'Required argument missing', |
+ 'de': 'Erforderliches Argument fehlt' |
+}; |
+ |
+jsx.math.msgInvOp = { |
+ 'en': 'Invalid operand', |
+ 'de': 'Ungültiger Operand' |
+}; |
+ |
+jsx.math.msgOverflow = { |
+ 'en': 'Overflow', |
+ 'de': 'Überlauf' |
+}; |
+ |
+jsx.math.msgUnderflow = { |
+ 'en': 'Underflow', |
+ 'de': 'Unterlauf' |
+}; |
+ |
+jsx.math.msgDivByZero = { |
+ 'en': 'Division by zero', |
+ 'de': 'Division durch Null' |
+}; |
+ |
+/** |
+ * @param sError |
+ * @param sMessage |
+ */ |
+jsx.math.MathError = function(sError, sMessage) { |
+ this.constructor._super.call(this, |
+ "math.js Error: " |
+ + (typeof sError[jsx.math.language] != "undefined" |
+ ? sError[jsx.math.language] |
+ : sError["en"]) |
+ + " " + (sMessage || "")); |
+}; |
+jsx.math.MathError.extend(jsx.Error); |
+ |
+/** |
+ * @param sMethodCall |
+ * @param iErrorCode |
+ * @todo |
+ */ |
+jsx.math.InvalidArgumentError = function(sMethodCall, iErrorCode) { |
+ var sSubErrType = jsx.math.msgInvArg; |
+ |
+ switch (iErrorCode) |
+ { |
+ case -1: |
+ sSubErrType = jsx.math.msgArgMissing; |
+ break; |
+ } |
+ |
+ jsx.math.MathError.call(this, sSubErrType); |
+}; |
+ |
+jsx.math.InvalidOperandError = function() { |
+ jsx.math.MathError.call(this, jsx.math.msgInvOp); |
+}; |
+ |
+jsx.math.OverflowError = function() { |
+ jsx.math.MathError.call(jsx.math.msgOverflow); |
+}; |
+ |
+jsx.math.UnderflowError = function() { |
+ jsx.math.MathError.call(jsx.math.msgUnderflow); |
+}; |
+ |
+jsx.math.DivisionByZeroError = function() { |
+ jsx.math.MathError.call(jsx.math.msgDivByZero); |
+}; |
+ |
+ |
+/* |
+ * TODO: |
+ |
+"I want the *option* to switch from standard 32-bit doubles to double |
+precision long doubles since it is not always necessary to run at such |
+high precision [sometimes I'll trade performance for precision.] |
+ |
+I would like *native* precision handlers (anything scripted |
+is considerably slower). |
+ |
+I would like a native fixed point and integer math package." |
+ |
+ */ |
/live/math.js |
---|
Property changes: |
Added: svn:keywords |
## -0,0 +1 ## |
+LastChangedDate LastChangedRevision Id |
\ No newline at end of property |
Index: live/types.js |
=================================================================== |
--- live/types.js (nonexistent) |
+++ live/types.js (revision 520) |
@@ -0,0 +1,289 @@ |
+/** |
+ * <title>Type Function Library</title> |
+ * |
+ * @file types.js |
+ * @requires object.js |
+ * @author |
+ * (C) 2001-2009, 2013 Thomas Lahn <types.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ var jsx = { |
+ options: { |
+ emulate: true |
+ } |
+ }; |
+} |
+ |
+jsx.types = { |
+ version: "1.29.8.2009070702", |
+ copyright: "Copyright \xA9 1999-2009", |
+ author: "Thomas Lahn", |
+ email: "types.js@PointedEars.de", |
+ path: "http://pointedears.de/scripts/" |
+}; |
+ |
+jsx.types.URI = jsx.types.path + "types.js"; |
+// var typesDocURL = typesPath + "types.htm" |
+ |
+/* allows for de.pointedears.jsx.types */ |
+if (typeof de == "undefined") |
+{ |
+ var de = {}; |
+} |
+ |
+if (typeof de.pointedears == "undefined") |
+{ |
+ de.pointedears = {}; |
+} |
+ |
+if (typeof de.pointedears.jsx == "undefined") |
+{ |
+ de.pointedears.jsx = jsx; |
+} |
+ |
+/** |
+ * @param {string} sMsg (optional) |
+ * @return {boolean} false |
+ */ |
+var TypesException = jsx.types.TypesException = function (sMsg) { |
+ window.alert( |
+ "types.js " |
+ + types.version |
+ + "\n" |
+ + types.copyright |
+ + " " |
+ + types.author |
+ + " <" |
+ + types.email |
+ + ">\n\n" |
+ + sMsg); |
+ return false; |
+}; |
+ |
+/** |
+ * Returns <code>true</code> if a property is defined and its value |
+ * is different from <code>undefined</code>, <code>false</code> otherwise. |
+ * |
+ * @param {Object} o (optional) |
+ * Base object; the default is the calling object. |
+ * @param {String} p |
+ * Property name; required. |
+ * @return {boolean} |
+ */ |
+var isDefined = jsx.types.isDefined = function (o, p) { |
+ if (!p) |
+ { |
+ p = o; |
+ o = this; |
+ } |
+ |
+ return (typeof o[p] != "undefined"); |
+}; |
+ |
+/** |
+ * Returns <code>true</code> if a property is undefined or |
+ * its value is `undefined', <code>false</code> otherwise. |
+ * |
+ * @param {Object} o (optional) |
+ * Base object; the default is the calling object. |
+ * @param {String} p |
+ * Property name; required. |
+ * @return {boolean} |
+ */ |
+var isUndefined = jsx.types.isUndefined = function (o, p) { |
+ if (!p) |
+ { |
+ p = o; |
+ o = this; |
+ } |
+ |
+ return (typeof o[p] == "undefined"); |
+}; |
+ |
+/* Moved to object.js */ |
+jsx.types.isInstanceOf = jsx.object.isInstanceOf; |
+ |
+/** |
+ * Determines whether an object is an array |
+ * |
+ * @author |
+ * (C) 2003, 2009, 2011 Thomas Lahn <object.js@PointedEars.de> |
+ * @partof http://pointedears.de/scripts/object.js |
+ * @requires jsx.object#isInstanceOf |
+ * @param {Object} a |
+ * Expression to be determined an array. |
+ * @return {boolean} |
+ * <code>true</code> if <code>a</code> is an object |
+ * derived from Array, <code>false</code> otherwise. |
+ * Returns also <code>false</code> if the language |
+ * version does not support Array objects (JavaScript |
+ * before 1.1). |
+ * @todo |
+ */ |
+var isArray = jsx.types.isArray = function (a) { |
+ return jsx.object.isInstanceOf(a, typeof Array != "undefined" ? Array : null); |
+}; |
+ |
+/** |
+ * @author |
+ * (C) 2003 Thomas Lahn <types.js@PointedEars.de> |
+ * @param {Object} o |
+ * to be determined iterable, i.e. to be determined |
+ * whether it provides the <code>length</code> property and |
+ * has at least the <code>0</code> (zero) property. This |
+ * applies for non-empty <code>Array</code> objects with |
+ * at least a first non-undefined element as well as, e.g., |
+ * for DOM objects implementing one of the |
+ * <code>HTMLCollection</code> or |
+ * <code>HTMLOptionsCollection</code> interfaces defined in |
+ * the W3C DOM Level 2 Specification. |
+ * @return {boolean} |
+ * <code>true</code> if <code>o</code> is an iterable object, |
+ * <code>false</code> otherwise. |
+ */ |
+var isIterable = jsx.types.isIterable = function (o) { |
+ return !!( |
+ o |
+ && typeof o.length != "undefined" |
+ && typeof o[0] != "undefined"); |
+}; |
+ |
+/** |
+ * Converts a string using bracket property accessor syntax |
+ * to one that uses dot property accessor syntax. |
+ * |
+ * @param {string} s |
+ * String of the form "root['branch']['leaf']['...']..." or |
+ * "root[branch][leaf][...]..." to be converted. Required. |
+ * @return {string} |
+ * A string of the form `root.branch.leaf...' converted from |
+ * <var>s</var>. |
+ */ |
+var bracketsToDots = jsx.bracketsToDots = function (s) { |
+ /* FIXME: What about non-identifier names? */ |
+ return s.replace(/\[['"]?/g, '.').replace(/['"]?\]/g, ''); |
+}; |
+ |
+/** |
+ * Converts a string using dot property accessor syntax |
+ * to one that uses bracket property accessor syntax. |
+ * |
+ * @param {string} s |
+ * of the form `root.branch.leaf' to be converted. |
+ * Required. |
+ * @param {boolean} bStringsOnly = false |
+ * Specifies if all parts of the tree should be converted |
+ * or not. Optional. |
+ * If not provided or <code>false</code>, all parts are |
+ * converted. If <code>true</code>, only parts are converted |
+ * that are required to (because JavaScript identifiers as |
+ * required by dot notation must start with a character in |
+ * <code>[A-Za-z_$]</code>, while parameters of bracket |
+ * notation may be in any format.) |
+ * @return {string} |
+ * A string of the form "root['branch']['leaf']" converted |
+ * from <var>s</var>. |
+ */ |
+var dotsToBrackets = jsx.dotsToBrackets = function (s, bStringsOnly) { |
+ var a = s.split("."); |
+ |
+ s = [a[0]]; |
+ |
+ for (var i = 1, len = a.length; i < len; i++) |
+ { |
+ var propName = a[i]; |
+ |
+ if (bStringsOnly && /^[a-z_$]/i.test(propName)) |
+ { |
+ s.push(".", propName); |
+ } |
+ else |
+ { |
+ s.push("['", propName.replace(/'/g, "\\$&"), "']"); |
+ } |
+ } |
+ |
+ return s.join(""); |
+}; |
+ |
+/* |
+ * 1.29.7.2008052911: isMethod() moved to object.js for _hasOwnProperty(); |
+ * dependencies should ensure backwards-compatibility |
+ */ |
+ |
+/** |
+ * Determines whether a feature is available. |
+ * |
+ * @author |
+ * (C) 2008 Thomas Lahn <types.js@PointedEars.de> |
+ * @param {Object} o |
+ * Base object |
+ * @params {string} |
+ * Name(s) of the property/properties that are required for |
+ * the feature. For example, passing "foo" and "bar" |
+ * determines whether o["foo"]["bar"] is an available feature. |
+ * @return {boolean} |
+ * The feature's value if the arguments refer to a feature, |
+ * <code>false</code> otherwise. Note that if a feature |
+ * has <code>boolean</code> documented as its type, you |
+ * should therefore not use this method to determine its |
+ * availability. |
+ * |
+ * Also, if a reference leading to the feature resolves to |
+ * a value for that the result of the <code>typeof</code> |
+ * operation is <code>"unknown"</code>, testing of further |
+ * arguments will stop and <code>true</code> will be returned |
+ * because <code>"unknown"</code> indicates a host object's |
+ * method in MSHTML and access to the property value causes |
+ * a runtime exception; therefore, in this case you can use |
+ * the return value of this method only as an indicator that |
+ * there is such a method. |
+ */ |
+var isFeature = jsx.types.isFeature = function (o) { |
+ if (typeof o != "undefined" && o) |
+ { |
+ var |
+ rxUnknown = /^\s*unknown\s*$/i, |
+ rxUndefined = /^\s*undefined\s*$/i; |
+ |
+ for (var i = 1, len = arguments.length; i < len; i++) |
+ { |
+ var arg = arguments[i]; |
+ |
+ var t = typeof o[arg], isUnknown; |
+ if ((isUnknown = rxUnknown.test(t)) |
+ || !rxUndefined.test(t) && o[arg]) |
+ { |
+ o = o[arg]; |
+ if (isUnknown) |
+ { |
+ break; |
+ } |
+ } |
+ else |
+ { |
+ o = null; |
+ break; |
+ } |
+ } |
+ } |
+ |
+ return o; |
+}; |
\ No newline at end of file |
Index: live/anti-SOPA.js |
=================================================================== |
--- live/anti-SOPA.js (nonexistent) |
+++ live/anti-SOPA.js (revision 520) |
@@ -0,0 +1,294 @@ |
+function _createElement(data) |
+{ |
+ if (typeof data == "string") |
+ { |
+ return document.createTextNode(data); |
+ } |
+ |
+ var el = document.createElement(data.type); |
+ if (!el) |
+ { |
+ return null; |
+ } |
+ |
+ var properties = data.properties; |
+ if (properties) |
+ { |
+ for (var prop in properties) |
+ { |
+ if (!properties.hasOwnProperty(prop)) |
+ { |
+ continue; |
+ } |
+ |
+ if (prop == "style") |
+ { |
+ var style = properties[prop]; |
+ for (var styleProp in style) |
+ { |
+ if (!style.hasOwnProperty(styleProp)) |
+ { |
+ continue; |
+ } |
+ |
+ var targetProp = styleProp; |
+ if (targetProp === "float") |
+ { |
+ if (typeof style.cssFloat != "undefined") |
+ { |
+ var targetProp = "cssFloat"; |
+ } |
+ else if (typeof style.styleFloat != "undefined") |
+ { |
+ targetProp = "styleFloat"; |
+ } |
+ |
+ } |
+ |
+ el.style[targetProp] = style[styleProp]; |
+ } |
+ } |
+ else |
+ { |
+ el[prop] = properties[prop]; |
+ } |
+ } |
+ } |
+ |
+ var nodes = data.childNodes; |
+ for (var i = 0, len = nodes && nodes.length; i < len; ++i) |
+ { |
+ el.appendChild(arguments.callee(nodes[i])); |
+ } |
+ |
+ return el; |
+} |
+ |
+function antiSOPA (contentName) |
+{ |
+ //jsx.tryThis(function () { |
+ var div = _createElement({ |
+ type: "div", |
+ properties: { |
+ id: "antiSOPA", |
+ style: { |
+ position: "fixed", |
+ maxWidth: "none", |
+ zIndex: "999", |
+ left: "0", |
+ top: "0", |
+ right: "0", |
+ bottom: "0", |
+ backgroundColor: "black", |
+ } |
+ }, |
+ childNodes: [ |
+ { |
+ type: "div", |
+ properties: { |
+ className: "antiSOPA" |
+ }, |
+ childNodes: [ |
+ { |
+ type: "blockquote", |
+ childNodes: [ |
+ { |
+ type: "p", |
+ properties: { |
+ style: { |
+ fontStyle: "italic", |
+ marginBottom: "0" |
+ } |
+ }, |
+ childNodes: [ |
+ "“With the first link, the chain is forged." |
+ + " The first speech censured, the first thought forbidden," |
+ + " the first freedom denied, chains us all irrevocably.”" |
+ ] |
+ }, |
+ { |
+ type: "div", |
+ properties: { |
+ style: { |
+ textAlign: "right" |
+ } |
+ }, |
+ childNodes: [ |
+ " – “Captain\xA0Picard”, quoting “Judge\xA0Aaron\xA0Satie”,", |
+ { |
+ type: "br" |
+ }, |
+ "in “", |
+ { |
+ type: "a", |
+ properties: { |
+ href: "http://en.memory-alpha.org/wiki/Star_Trek:_The_Next_Generation" |
+ }, |
+ childNodes: [ |
+ "Star\xA0Trek: The\xA0Next\xA0Generation", |
+ ] |
+ }, |
+ "”, “", |
+ { |
+ type: "a", |
+ properties: { |
+ href: "http://en.memory-alpha.org/wiki/The_Drumhead_(episode)" |
+ }, |
+ childNodes: [ |
+ "The\xA0Drumhead" |
+ ] |
+ }, |
+ "”" |
+ ] |
+ } |
+ ] |
+ }, |
+ { |
+ type: "p", |
+ childNodes: [ |
+ "Put simply, the United States of America are currently considering ", |
+ { |
+ type: "a", |
+ properties: { |
+ href: "http://en.wikipedia.org/wiki/Wikipedia:SOPA_initiative/Learn_more" |
+ }, |
+ childNodes: [ |
+ "Acts\xA0of\xA0Congress" |
+ ] |
+ }, |
+ " that, if passed, would allow the Internet to be censored." |
+ ] |
+ }, |
+ { |
+ type: "p", |
+ childNodes: [ |
+ "Not only this would severely limit the ", |
+ { |
+ type: "a", |
+ properties: { |
+ href: "http://www.un.org/en/documents/udhr/" |
+ }, |
+ childNodes: ["Human Right of the Freedom of Speech"] |
+ }, |
+ " in the United States; it would also set a bad precedent for other countries." |
+ + " For example, ", |
+ { |
+ type: "a", |
+ properties: { |
+ href: "http://www.regjeringen.no/pages/16468635/Horingsnotat_2011.pdf" |
+ }, |
+ childNodes: [ |
+ "Norway is already considering to do the same (PDF, in Norwegian)" |
+ ] |
+ }, |
+ "." |
+ ] |
+ }, |
+ { |
+ type: "blockquote", |
+ childNodes: [ |
+ { |
+ type: "p", |
+ properties: { |
+ style: { |
+ fontStyle: "italic", |
+ marginBottom: "0" |
+ } |
+ }, |
+ childNodes: [ |
+ "“Vigilance, Mister Worf, that is the price we have to continually pay.”" |
+ ] |
+ }, |
+ { |
+ type: "div", |
+ properties: { |
+ style: { |
+ textAlign: "right" |
+ } |
+ }, |
+ childNodes: [ |
+ " – “Captain\xA0Picard”, ibid.", |
+ ] |
+ } |
+ ] |
+ }, |
+ { |
+ type: "p", |
+ childNodes: [ |
+ "It is up to ", |
+ { |
+ type: "em", |
+ childNodes: [ |
+ "you" |
+ ] |
+ }, |
+ " to not let this happen. An information society" |
+ + " depends upon information being freely available to everyone." |
+ ] |
+ }, |
+ { |
+ type: "ul", |
+ childNodes: [ |
+ { |
+ type: "li", |
+ properties: { |
+ className: "red pill" |
+ }, |
+ childNodes: [ |
+ { |
+ type: "a", |
+ properties: { |
+ href: "http://en.wikipedia.org/wiki/Wikipedia:SOPA_initiative/Learn_more" |
+ }, |
+ childNodes: [ |
+ "Go to Wikipedia to learn more" |
+ ] |
+ } |
+ ] |
+ }, |
+ { |
+ type: "li", |
+ properties: { |
+ className: "blue pill" |
+ }, |
+ childNodes: [ |
+ { |
+ type: "a", |
+ properties: { |
+ href: "#", |
+ onclick: function () { |
+ div.parentNode.removeChild(div); |
+ document.body.style.overflow = ""; |
+ return false; |
+ } |
+ }, |
+ childNodes: [ |
+ "Hide this text ", |
+ { |
+ type: "em", |
+ childNodes: [ |
+ "temporarily" |
+ ] |
+ }, |
+ ", and proceed to " + (contentName || "site") |
+ ] |
+ }, |
+ "." |
+ ] |
+ } |
+ ] |
+ }, |
+ { |
+ type: "p", |
+ childNodes: [ |
+ "This blackout will stay in place until 2012-01-19 (CE) 18:00 UTC." |
+ ] |
+ } |
+ ] |
+ } |
+ ] |
+ }); |
+ |
+ document.body.appendChild(div); |
+ document.body.style.overflow = "hidden"; |
+} |
/live/anti-SOPA.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.htaccess |
=================================================================== |
--- live/.htaccess (nonexistent) |
+++ live/.htaccess (revision 520) |
@@ -0,0 +1,73 @@ |
+RedirectMatch permanent ^(/scripts)/((events|scope)\.html?.*) $1/test/$2 |
+RedirectMatch permanent ^/(JSDoc|jsdoc)(.*) /scripts/JSdoc$2 |
+RedirectMatch permanent ^(/scripts)/js-version-info(\.php)?(.*) $1/test/es-matrix/?redir$3 |
+RedirectMatch permanent ^(/scripts)/((dom|es)-matrix.*) $1/test/$2 |
+RedirectMatch permanent ^/scripts/websvn /websvn/listing.php?repname=JSX\&path=/trunk/ |
+ |
+Options +Indexes |
+AddDescription "Automatic cache control and gzipping, by Mark Nottingham; see also <a href='http://www.mnot.net/cgi_buffer/'>http://www.mnot.net/cgi_buffer/</a>" cgi_buffer |
+AddDescription "Old versions" _* |
+AddDescription "ECMAScript Support Matrix" es-matrix |
+AddDescription "LCARS Extensions: \"ACCESSING...\"" accessng.js |
+AddDescription "When we saved the Internet" anti-SOPA.js |
+AddDescription "JSX: Array library" array.js |
+AddDescription "LCARS Extensions: PageBack" back.js |
+AddDescription "back.js Documentation" back.txt |
+AddDescription "PointedEars' Resource Builder (see <a href='websvn/'>websvn</a> for more)" builder.php |
+AddDescription "JSX: Collection library" collection.js |
+AddDescription "JSX: CSS colors library" color.js |
+AddDescription "JSX: Compatibility layer" compat.js |
+AddDescription "JavaScript cookie data access prototype (legacy code)" cookie.js |
+AddDescription "cookie.js Documentation" cookie.txt |
+AddDescription "JavaScript ClosePage Support" close.js |
+AddDescription "JSX: DOM Events library" events.js |
+AddDescription "Creates documentation markup from JSdoc™ comments within JavaScript™ source code" JSdoc |
+AddDescription "JSdoc note template" jsdoc-note.js |
+AddDescription "JavaScript routines and objects to create temporary documents" document.js |
+AddDescription "JSX live documentation (experimental)" doc |
+AddDescription "JSX: DOM base library (see <a href='dom'>dom</a> package for more)" dom.js |
+AddDescription "JSX: DOM package" dom |
+AddDescription "JavaScript Routines and Objects to Create Temporary Documents" document.js |
+AddDescription "enhanced.js Documentation" enhanced.htm |
+AddDescription "JSX: Level-1 Enhanced Website Features" enhanced.js |
+AddDescription "enhancd2.js Documentation" enhancd2.htm |
+AddDescription "JSX: Level-2 Enhanced Website Features (legacy code, depends on enhanced.js)" enhancd2.js |
+AddDescription "JavaScript FAQs that I maintain(ed)" faq |
+AddDescription "JSX: Forms library" forms.js |
+AddDescription "JSX: Global Object support library" global.js |
+AddDescription "JSX: HTTP library" http.js |
+AddDescription "LCARS Extensions" LCARS.js |
+AddDescription "JSX: Thread-unsafe map implementations" map.js |
+AddDescription "JSX: Base math library, see <a href='math/'>math</a> package for more)" math.js |
+AddDescription "JSX: Math package" math |
+AddDescription "JSX: Base object library (old version)" object-old.js |
+AddDescription "JSX: Base object library" object.js |
+AddDescription "JSX: Object Package" object |
+AddDescription "Support for outline-styled structure using Dynamic HTML statements (legacy code)" outline.js |
+AddDescription "CommonJS Promises/A implementation (stub)" parallel.js |
+AddDescription "PHPX: MVC-based application framework and libraries" php |
+AddDescription "JSX: Pythonic functions for ECMAScript implementations" python.js |
+AddDescription "JSX: Regular Expressions (RegExp) support library" regexp.js |
+AddDescription "search.js Documentation" search.htm |
+AddDescription "JSX: Search-string library" search.js |
+AddDescription "Comparison of (s)printf conversion support across programming languages" sprintf.txt |
+AddDescription "JSX: DOM Storage library" storage.js |
+AddDescription "JSX: String library" string.js |
+AddDescription "JSX: String Package" string |
+AddDescription "Old global documentation stylesheet" style-old.css |
+AddDescription "Global documentation stylesheet" style.css |
+AddDescription "JSX: Time prototypes and functions" time.js |
+AddDescription "time.js Documentation" time.txt |
+AddDescription "JSX: Timeout library" timeout.js |
+AddDescription "JSX: Test cases and development package" test |
+AddDescription "JSX: Type methods library" types.js |
+AddDescription "JSX: Unicode character properties support library for <a href='regexp.js'>regexp.js</a>" UnicodeData.js |
+AddDescription "JSX: Plain-text version of the Unicode Character Database for <a href='regexp.js'>regexp.js</a>" UnicodeData.txt |
+AddDescription "Subversion repository browser" websvn |
+AddDescription "JSX: Widgets library" widgets.js |
+AddDescription "JSX: Legacy widgets library" widgets2.js |
+AddDescription "JSX: Window function library" window.js |
+AddDescription "JSX: DOM XPath library" xpath.js |
+AddDescription "JSX: DOM CSS library (see <a href='css/'>css</a> package for more)" css.js |
+AddDescription "JSX: DOM CSS package" css |
+ |
Index: live/doc/tree.html |
=================================================================== |
--- live/doc/tree.html (nonexistent) |
+++ live/doc/tree.html (revision 520) |
@@ -0,0 +1,208 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>Object Hierarchy — JSX API Documentation</title> |
+ <base target="main"> |
+ <link rel="stylesheet" href="../style.css" type="text/css"> |
+ <style type="text/css"> |
+ <!-- |
+ ul { |
+ padding-left: 1em; |
+ margin-top: 0; |
+ list-style: none; |
+ } |
+ |
+ ul { |
+ padding-left: 0; |
+ } |
+ |
+ li:before { |
+ content: "\251C"; |
+ } |
+ |
+ li li:before { |
+ content: "\2502 \251C"; |
+ } |
+ |
+ li:last-child li:before { |
+ content: "\2000 \251C"; |
+ } |
+ |
+ li:last-child li li:before { |
+ content: "\2000 \2502 \251C"; |
+ } |
+ |
+ li:last-child li:last-child li:before { |
+ content: "\2000 \2000 \251C"; |
+ } |
+ |
+ li li li:before { |
+ content: "\2502 \2502 \251C"; |
+ } |
+ |
+ li li li li:before { |
+ content: "\2502 \2502 \2502 \251C"; |
+ } |
+ |
+ li:last-child:before { |
+ content: "\2514"; |
+ } |
+ |
+ li li:last-child:before { |
+ content: "\2502 \2514"; |
+ } |
+ |
+ li:last-child li:last-child:before { |
+ content: "\2000 \2514"; |
+ } |
+ |
+ li li li:last-child:before { |
+ content: "\2502 \2502 \2514"; |
+ } |
+ |
+ li li li:last-child:before li { |
+ content: "\2502 \2502 \2000 \2514"; |
+ } |
+ |
+ li li li li:last-child:before { |
+ content: "\2502 \2502 \2502 \2514"; |
+ } |
+ |
+ li:last-child li li:last-child:before { |
+ content: "\2000 \2502 \2514"; |
+ } |
+ |
+ li li:last-child li:last-child:before { |
+ content: "\2502 \2000 \2514"; |
+ } |
+ |
+ li:last-child li:last-child li:last-child:before { |
+ content: "\2000 \2000 \2514"; |
+ } |
+ |
+ li:last-child li:last-child li:last-child li:last-child:before { |
+ content: "\2000 \2000 \2000 \2514"; |
+ } |
+ |
+ [title] { |
+ cursor: help; |
+ } |
+ --> |
+ </style> |
+ <script type="text/javascript" src="../builder.php?src=object,regexp,dom"></script> |
+ <script type="text/javascript"> |
+ var traverseHistory = [] |
+ |
+ function buildTree (root, path) |
+ { |
+ var ul = document.createElement("ul"); |
+ var ownProperties = Object.getOwnPropertyNames(root); |
+ ownProperties.sort(); |
+ for (var i = 0, len = ownProperties.length; i < len; ++i) |
+ { |
+ var li = document.createElement("li"); |
+ var code = document.createElement("code"); |
+ var propertyName = ownProperties[i]; |
+ var propertyValue = root[propertyName]; |
+ |
+ switch (typeof propertyValue) |
+ { |
+ case "boolean": |
+ li.appendChild(document.createTextNode("[B] ")); |
+ break; |
+ |
+ case "function": |
+ li.appendChild(document.createTextNode("[F] ")); |
+ break; |
+ |
+ case "number": |
+ li.appendChild(document.createTextNode("[N] ")); |
+ break; |
+ |
+ case "object": |
+ li.appendChild(document.createTextNode("[O] ")); |
+ break; |
+ |
+ case "string": |
+ li.appendChild(document.createTextNode("[S] ")); |
+ break; |
+ |
+ default: |
+ break; |
+ } |
+ |
+ code.appendChild(document.createTextNode(propertyName)); |
+ code.title = path + "." + propertyName; |
+ var a = document.createElement("a"); |
+ a.href = "details.html?" + (code.title.match(/^jsx\.(.*)/) || [, ""])[1].replace(/\./g, "/"); |
+ a.appendChild(code); |
+ li.appendChild(a); |
+ if (((typeof propertyValue == "object" && propertyValue) |
+ || (propertyName == "prototype")) |
+ && propertyValue != jsx.global |
+ && traverseHistory.indexOf(propertyValue) < 0) |
+ { |
+ traverseHistory.push(propertyValue); |
+ li.appendChild(buildTree(propertyValue, code.title)); |
+ traverseHistory.pop(); |
+ } |
+ |
+ ul.appendChild(li); |
+ } |
+ |
+ return ul; |
+ } |
+ |
+ function startTree () |
+ { |
+ document.body.appendChild(jsx.dom.createElementFromObj({type: "code", childNodes: ["Function"]})); |
+ document.body.appendChild(buildTree(Function, "Function")); |
+ document.body.appendChild(jsx.dom.createElementFromObj({type: "code", childNodes: ["jsx"]})); |
+ document.body.appendChild(buildTree(jsx, "jsx")); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body onload="startTree()"> |
+ <h1>Object Hierarchy</h1> |
+<!-- |
+ <ul> |
+ <li><code>de</code> |
+ <ul> |
+ <li><code>pointedears</code> |
+ <ul> |
+ <li><code><a href="jsx/object#jsx">jsx</a></code></li> |
+ </ul></li> |
+ </ul></li> |
+ <li><code><a href="jsx/object#jsx">jsx</a></code> |
+ <ul> |
+ <li><code>MSG_INFO</code></li> |
+ <li><code>MSG_WARN</code></li> |
+ <li><code>MSG_DEBUG</code></li> |
+ <li><code>animation</code> |
+ <ul> |
+ <li><a href="jsx/animation/Animation"><code>Animation</code></a></li> |
+ <li><code>Frame</code></li> |
+ <li><code>KeyFrame</code></li> |
+ <li><code>KeyValue</code></li> |
+ <li><code>NoKeyFramesError</code></li> |
+ <li><code>NoTimelineError</code></li> |
+ <li><a href="jsx/animation/Timeline"><code>Timeline</code></a></li> |
+ </ul></li> |
+ <li><code>dom</code></li> |
+ <li><code><a href="jsx/object#jsx.object">object</a></code> |
+ <ul> |
+ <li><code>ADD_OVERWRITE</code></li> |
+ <li><code>COPY_ENUM</code></li> |
+ </ul></li> |
+ <li><code>options</code> |
+ <ul> |
+ <li><code>emulate</code></li> |
+ </ul></li> |
+ </ul></li> |
+ </ul> |
+ --> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/tree.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/details.html |
=================================================================== |
--- live/doc/details.html (nonexistent) |
+++ live/doc/details.html (revision 520) |
@@ -0,0 +1,50 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>JSX API Documentation</title> |
+ <style type="text/css"> |
+ <!-- |
+ ol { |
+ list-style-type: decimal; |
+ } |
+ |
+ ol ol { |
+ list-style-type: lower-latin; |
+ } |
+ |
+ ol ol ol { |
+ list-style-type: lower-roman; |
+ } |
+ |
+ ol ol ol ol { |
+ list-style-type: decimal; |
+ } |
+ --> |
+ </style> |
+ <script type="text/javascript" src="../builder.php?src=object,dom,http,JSdoc/jsdoc-simple"></script> |
+ <script type="text/javascript"> |
+ function getDoc () |
+ { |
+ var xhr = new jsx.net.http.Request( |
+ "../" + (String(window.location.search).match(/^\??(.*)/) || [, ""])[1] + ".js", |
+ "GET", |
+ true, |
+ function (response) { |
+ de.pointedears.jsdoc.generate(response.responseText); |
+ }, |
+ function () { |
+ var div = document.createElement("div"); |
+ div.appendChild(document.createTextNode("File " + xhr.URL + " could not be loaded.")); |
+ document.body.appendChild(div); |
+ }); |
+ xhr.dontCache().send(); |
+ } |
+ </script> |
+ </head> |
+ |
+ <body onload="getDoc()"> |
+ <h1 id="title">JSX API Documentation</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/details.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/jsx/animation/Animation.html |
=================================================================== |
--- live/doc/jsx/animation/Animation.html (nonexistent) |
+++ live/doc/jsx/animation/Animation.html (revision 520) |
@@ -0,0 +1,90 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>jsx.animation.Animation — JSX API Documentation</title> |
+ <link rel="stylesheet" href="../../../style.css" type="text/css"> |
+ <link rel="stylesheet" href="../../style.css" type="text/css"> |
+ </head> |
+ |
+ <body> |
+ <h1><code>jsx.animation.Animation</code></h1> |
+ <ul> |
+ <li><code>Object</code> |
+ <ul> |
+ <li><code>jsx.animation.Animation</code></li> |
+ </ul></li> |
+ </ul> |
+ |
+ <p>An <code class="ident">Animation</code> is a set of one or more |
+ <a href="Timeline"><code>Timelines</code></a> being played in parallel |
+ when the animation is played. Each <code>Timeline</code> is supposed |
+ to animate another target object (but that is not required).</p> |
+ |
+ <h2>Prototype Properties</h2> |
+ <dl> |
+ <dt><code><var>target</var> <span class="punct">:</span> <span |
+ class="ident">Object</span> <span class="punct">=</span> |
+ <span class="rswd">null</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var>timelines</var> <span class="punct">:</span> <span |
+ class="ident">Array</span> <span class="punct">= []</span></code></dt> |
+ <dd></dd> |
+ </dl> |
+ |
+ <h2>Constructor</h2> |
+ <p><code><span class="ident">jsx<span class="punct">.</span>animation<span |
+ class="punct">.</span>Animation</span><span |
+ class="punct">(</span><var>oParams</var> |
+ <span class="punct">:</span> <span class="ident">Object</span><span |
+ class="punct">)</span></code></p> |
+ <h3>Arguments</h3> |
+ <dl> |
+ <dt><code><var>oParams</var> <span class="punct">:</span> <span class="ident">Object</span></code></dt> |
+ <dd>The parameters of this animation. Supported parameters, to |
+ be defined as properties of <code><var>oParams</var></code>, |
+ include: |
+ <dl> |
+ <dt><code><var>target</var> |
+ <span class="punct">:</span> <span |
+ class="ident">Object</span></code></dt> |
+ <dd>Reference specifiying the object to animate. |
+ If specified, the timelines of this animation |
+ automatically inherit its target; if not |
+ specified for the animation, each timeline of an |
+ animation MUST specify its target.</dd> |
+ <dt><code><var>timelines</var> |
+ : <span class="ident">Array</span></code></dt> |
+ <dd><a href="Timeline"><code>Timelines</code></a> |
+ of this animation (required)</dd> |
+ </dl></dd> |
+ </dl> |
+ <h3>Throws</h3> |
+ <dl> |
+ <dt><code class="ident">jsx<span class="punct">.</span>InvalidArgumentError</code></dt> |
+ <dd>if no parameters were specified</dd> |
+ </dl> |
+ |
+ <h2>Methods</h2> |
+ <dl> |
+ <dt><h3><code><span class="ident">play</span><span class="punct">()</span></code></h3></dt> |
+ <dd><p>Plays the animation by playing all of its <a href="Timeline"><code>Timelines</code></a>.</p> |
+ <h4>Throws</h4> |
+ <dl> |
+ <dt><code class="ident">jsx<span class="punct">.</span>animation<span |
+ class="punct">.</span>NoTimelineError</code></dt> |
+ <dd>if no <code>Timelines</code> have been defined</dd> |
+ </dl></dd> |
+ <dt><h3><code><span class="ident">stop</span><span class="punct">()</span></code></h3></dt> |
+ <dd><p>Stops the animation by stopping all of its <a href="Timeline"><code>Timelines</code></a>.</p> |
+ <h4>Throws</h4> |
+ <dl> |
+ <dt><code class="ident">jsx<span class="punct">.</span>animation<span |
+ class="punct">.</span>NoTimelineError</code></dt> |
+ <dd>if no <code>Timelines</code> have been defined</dd> |
+ </dl></dd> |
+ </dl> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/jsx/animation/Animation.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/jsx/animation/Timeline.html |
=================================================================== |
--- live/doc/jsx/animation/Timeline.html (nonexistent) |
+++ live/doc/jsx/animation/Timeline.html (revision 520) |
@@ -0,0 +1,195 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>jsx.animation.Timeline — JSX API Documentation</title> |
+ <link rel="stylesheet" href="../../../style.css" type="text/css"> |
+ <link rel="stylesheet" href="../../style.css" type="text/css"> |
+ </head> |
+ |
+ <body> |
+ <h1><code>jsx.animation.Timeline</code></h1> |
+ <ul> |
+ <li><code>Object</code> |
+ <ul> |
+ <li><code>jsx.animation.Timeline</code></li> |
+ </ul></li> |
+ </ul> |
+ |
+ <p>A <code class="ident">Timeline</code> consists of |
+ <a href="KeyFrame"><code>KeyFrames</code></a> and can have subordered |
+ timelines ("child timelines"). Unless specified otherwise, the time |
+ offset of an item in one timeline depends on the previous item in |
+ that timeline.</p> |
+ |
+ <pre> |
+Timeline: ---Action0------Action1------Action2-----Action3-> |
+</pre> |
+ <p>A <code>Timeline</code> may be standalone or part an |
+ <a href="Animation"><code>Animation</code></a>, specified by the |
+ <code>Animation</code>'s <code>timelines</code> property, |
+ which allows it to be played parallel to other timelines:</p> |
+ <pre> |
+Animation ---. |
+Timeline 1: :--Action0------Action1------Action2-----Action3-> |
+Timeline 2: `----------Action0------Action1-------Action2----> |
+</pre> |
+<!-- <p>An item in a timeline can also be a <code>Timeline</code> itself |
+ ("child timeline"), in which case the time offset of the child |
+ timeline depends on the previous action in the parent timeline, |
+ however the time offset of the next action in the parent is |
+ independent of the child. In that case, the child timeline |
+ affects the same target object as its parent unless specified |
+ otherwise.</p> |
+ <pre> |
+Animation -\-\-. |
+Timeline 1: :-\-\-Action0-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-Action1a-\-\-\-\-\-\-\-\-\-\-\-\-> |
+Timeline 1a: | `-\-\-Action1a:0-\-\-Action1a:1-\-\-\-\-> |
+Timeline 2: `-\-\-\-\-\-\-Action0-\-\-\-\-\-Action1-\-\-\-\-\-\-Action2-\-\-\-\-\-\-> |
+</pre> |
+ |
+ <p>There is no explicit limit as to how deep timelines may be nested. |
+ However, for playing the frames of the animation each timeline's |
+ play() method must call the play() method of its child timelines. |
+ As a result, nesting depth is limited implicitly by the available |
+ stack space or limits imposed by the ECMAScript implementation, |
+ whichever comes first. Further, the more timelines are nested, |
+ the more operations need be performed at approximately the same time; |
+ this can slow down the entire animation considerably and lead to |
+ considerably higher CPU load.</p> |
+ --> |
+ <h2>Static Properties</h2> |
+ <dl> |
+ <dt><code><var>INDEFINITE</var> |
+ <span class="punct">:</span> number <span class="punct">=</span> |
+ Number.POSITIVE_INFINITY</code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var>MIN_FRAME_LENGTH</var> |
+ <span class="punct">:</span> number <span class="punct">=</span> |
+ <span class="num">11</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var>MIN_TIMEOUT</var> <span |
+ class="punct">:</span> number <span class="punct">=</span> |
+ <span class="num">10</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var>types</var> <span |
+ class="punct">:</span> <span class="ident">Object</span></code></dt> |
+ <dd>Supported CSS data types. Properties include: |
+ <dl> |
+ <dt><code>NUMBER</code></dt> |
+ <dd>Numeric scalar value</dd> |
+ |
+ <dt><code>LENGTH</code></dt> |
+ <dd>Length given relative in <code>em</code> (width of the |
+ M square) or <code>ex</code> (height of the x square), |
+ or absolute in <code>in</code> (inches), <code>cm</code> |
+ (centimeters), <code>mm</code> (millimeters), <code>pt</code> |
+ (points), <code>pc</code> (picas), or <code>px</code> |
+ (pixels).</dd> |
+ |
+ <dt><code>PERCENTAGE</code></dt> |
+ <dd>Length given in percentage</dd> |
+ |
+ <dt><code>URI</code></dt> |
+ <dd>Uniform Resource Identifier or URI-reference (see RFC 3986), |
+ enclosed in <code>url(…)</code></dd> |
+ |
+ <dt><code>COUNTER</code></dt> |
+ <dd>CSS counter</dd> |
+ |
+ <dt><code>COLOR</code></dt> |
+ <dd>Color in RGB(A) or HSV format</dd> |
+ |
+ <dt><code>STRING</code></dt> |
+ <dd>String of Unicode characters</dd> |
+ </dl></dd> |
+ |
+ <dt><code><var>propertyInfo</var></code></dt> |
+ <dd>Provides information about the type of a CSS property and its relation |
+ to other CSS properties</dd> |
+ </dl> |
+ |
+ <h2>Prototype Properties</h2> |
+ <dl> |
+ <dt><code><var>autoReverse</var> |
+ <span class="punct">:</span> boolean |
+ <span class="punct">=</span> <span clasS="rswd">false</span></code></dt> |
+ <dd>Defines whether this animation reverses direction on alternating |
+ cycles. If <code>true</code>, the animation will proceed forward |
+ on the first cycle, then reverses on the second cycle, and so on. |
+ Otherwise, animation will loop such that each cycle proceeds |
+ forward from the initial |
+ <a href="KeyFrame"><code>KeyFrame</code></a>.</dd> |
+ |
+ <dt><code><var>frameLength</var> <span |
+ class="punct">:</span> number <span class="punct">=</span> |
+ jsx.animation.Timeline.MIN_FRAME_LENGTH</code></dt> |
+ <dd>Length of a frame in milliseconds (ms). The default value is |
+ <code>MIN_FRAME_LENGTH</code> so that frames at 0 ms |
+ normalized to <code>MIN_TIMEOUT</code> are played before |
+ the second frame.</dd> |
+ |
+ <dt><code><var>keyFrames</var> <span |
+ class="punct">:</span> <span class="ident">Array</span>[<a |
+ href="KeyFrame"><span class="ident">KeyFrame</span></a>] |
+ <span class="punct">=</span> <span class="punct">[]</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var>repeatCount</var> <span |
+ class="punct">:</span> number <span class="punct">=</span> |
+ <span class="num">1</span></code></dt> |
+ <dd>Defines the number of cycles in this animation. The |
+ <code><var>repeatCount</var></code> may be <code>INDEFINITE</code> |
+ for animations that repeat indefinitely, but must otherwise be |
+ ≤ 0.</dd> |
+ |
+ <dt><code><var>target</var> |
+ <span class="punct">:</span> <span |
+ class="ident">Object</span> <span class="punct">=</span> |
+ <span class="rswd">null</span></code></dt> |
+ <dd>Target object</dd> |
+ </dl> |
+ |
+ <h2>Constructor</h2> |
+ <p><code><span class="ident">jsx<span class="punct">.</span>animation<span |
+ class="punct">.</span>Timeline</span><span |
+ class="punct">(</span><var>oParams</var> |
+ <span class="punct">:</span> <span class="ident">Object</span><span |
+ class="punct">)</span></code></p> |
+ <h3>Arguments</h3> |
+ <dl> |
+ <dt><code><var>oParams</var> <span class="punct">:</span> <span class="ident">Object</span></code></dt> |
+ <dd></dd> |
+ </dl> |
+ <h3>Throws</h3> |
+ <dl> |
+ <dt><code class="ident">jsx<span class="punct">.</span>InvalidArgumentError</code></dt> |
+ <dd>if no parameters were specified</dd> |
+ </dl> |
+ |
+ <h2>Methods</h2> |
+ <dl> |
+ <dt><h3><code><span class="ident">play</span><span |
+ class="punct">(</span><var>target</var> <span |
+ class="punct">:</span> <span class="ident">Object</span></code><span |
+ class="punct">)</span></code></h3></dt> |
+ <dd><p>Plays this <code>Timeline</code>.</p> |
+ <h4>Arguments</h4> |
+ <dl> |
+ <dt><code><var>target</var> |
+ <span class="punct">:</span> <span |
+ class="ident">Object</span></code></dt> |
+ <dd>Target object (optional). Is usually only provided |
+ if this <code>Timeline</code> is part of an |
+ <a href="Animation"><code>Animation</code></a>.</dd> |
+ </dl></dd> |
+ |
+ <dt><h3><code><span class="ident">stop</span><span class="punct">()</span></code></h3></dt> |
+ <dd>Prevents the <code>Timeline</code> from continuing to play.</dd> |
+ </dl> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/jsx/animation/Timeline.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/jsx/object.html |
=================================================================== |
--- live/doc/jsx/object.html (nonexistent) |
+++ live/doc/jsx/object.html (revision 520) |
@@ -0,0 +1,188 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>jsx.object — JSX API Documentation</title> |
+ <link rel="stylesheet" href="../../../style.css" type="text/css"> |
+ <link rel="stylesheet" href="../../style.css" type="text/css"> |
+ </head> |
+ |
+ <body> |
+ <h1><tt>object.js</tt></h1> |
+ <h2><a name="globals" id="globals">Global Variables</a></h2> |
+ |
+ <dl> |
+ <dt><code><var>_global</var> <span class="punct">:</span> Global</code></dt> |
+ <dd>Reference to the ECMAScript Global Object.<br> |
+ <strong>deprecated</strong> since 0.1.5a.2009063012 in favor of |
+ <code><a href="#jsx.global">jsx.global</a></code> for library references.</dd> |
+ |
+ <dt><code><var><a href="#jsx">jsx</a></var> |
+ <span class="punct">:</span> Object</code></dt> |
+ <dd>Top-level namespace</dd> |
+ </dl> |
+ |
+ <h2><code><a name="jsx" id="jsx">jsx</a></code></h2> |
+ <ul> |
+ <li><code>Object</code> |
+ <ul> |
+ <li><code>jsx</code></li> |
+ </ul></li> |
+ </ul> |
+ |
+ <h3>Properties of <code>jsx</code></h3> |
+ <dl> |
+ <dt><code><var><a name="jsx.MSG_INFO" id="jsx.MSG_INFO">MSG_INFO</a></var> |
+ <span class="punct">:</span> string |
+ <span class="punct">=</span> <span class="string">"info"</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var><a name="jsx.MSG_WARN" id="jsx.MSG_WARN">MSG_WARN</a></var> |
+ <span class="punct">:</span> string |
+ <span class="punct">=</span> <span class="string">"warn"</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var>MSG_DEBUG</var> <span class="punct">:</span> string |
+ <span class="punct">=</span> <span class="string">"debug"</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><var><a name="jsx.global" id="jsx.global">global</a></var> |
+ <span class="punct">:</span> Global</code></dt> |
+ <dd>Reference to the ECMAScript Global Object</dd> |
+ |
+ <dt><code><var><a href="#jsx.object">object</a></var> |
+ <span class="punct">:</span> Object</code></dt> |
+ <dd>Namespace for basic object-specific features</dd> |
+ </dl> |
+ |
+ <h3>Methods of <code>jsx</code></h3> |
+ <dl> |
+ <dt><h3><code><span class="ident"><a name="jsx.dmsg" id="jsx.dmsg" |
+ >dmsg</a></span><span class="punct">(</span><var>sMsg</var></code>[<code><span |
+ class="punct">,</span> |
+ <var>sType</var></code> = <code><span class="str">"log"</span></code>]<code><span |
+ class="punct">)</span> |
+ : <span class="rswd">boolean</span></code></h3></dt> |
+ <dd><p>Prints debug messages to the script console.</p> |
+ <p>NOTE: This method has previously been provided by |
+ {@link debug.js}; optimizations in code reuse |
+ moved it here.</p> |
+ <h4>Arguments</h4> |
+ <dl> |
+ <dt><code><var>sMsg</var> : string</code></dt> |
+ <dd>Message to be printed</dd> |
+ |
+ <dt><code><var>sType</var> : string</code></dt> |
+ <dd>Type of the message. Supported values include |
+ <code class="str">"log"</code> (default), <code class="str">"info"</code>, |
+ <code class="str">"warn"</code>, and <code class="str">"debug"</code>. |
+ If a script console does not support a message type, |
+ the default value is used.</dd> |
+ </dl> |
+ |
+ <h4>Returns</h4> |
+ <p><code class="rswd">true</code> if it was possible to cause the |
+ message to be printed; <code class="rswd">false</code> otherwise.</p></dd> |
+ |
+ <dt><h3><code><span class="ident">info</span><span class="punct">(</span><var>sMsg</var><span class="punct">)</span> |
+ : <span class="rswd">boolean</span></code></h3></dt> |
+ <dd><p>Issues an info message, if possible.</p> |
+ <h4>Arguments</h4> |
+ <dl> |
+ <dt><code><var>sMsg</var> : string</code></dt> |
+ </dl> |
+ |
+ <h4>Returns</h4> |
+ <p>The return value of <code><a href="#jsx.dmsg">jsx.dmsg</a><span |
+ class="punct">(</span><var>sMsg</var></span>, <a href="#jsx.MSG_INFO">jsx.MSG_INFO</a><span |
+ class="punct">)</span></code></p> |
+ |
+ <dt><h3><code><span class="ident">warn</span><span class="punct">(</span><var>sMsg</var><span class="punct">)</span> |
+ : <span class="rswd">boolean</span></code></h3></dt> |
+ <dd><p>Issues a warning, if possible.</p> |
+ <h4>Arguments</h4> |
+ <dl> |
+ <dt><code><var>sMsg</var> : string</code></dt> |
+ </dl> |
+ |
+ <h4>Returns</h4> |
+ <p>The return value of <code><a href="#jsx.dmsg">jsx.dmsg</a><span |
+ class="punct">(</span><var>sMsg</var></span>, |
+ <a href="#jsx.MSG_WARN">jsx.MSG_WARN</a><span |
+ class="punct">)</span></code></p> |
+ </dl> |
+ |
+ <h2><code><a name="jsx.object" id="jsx.object">jsx.object</a></code></h2> |
+ <ul> |
+ <li><code>Object</code> |
+ <ul> |
+ <li><code><a href="#jsx">jsx</a>.object</code></li> |
+ </ul></li> |
+ </ul> |
+ |
+ <h3>Properties of <code>jsx.object</code></h3> |
+ <dl> |
+ <dt><code><var>ADD_OVERWRITE</var> <span class="punct">:</span> number |
+ <span class="punct">=</span> <span class="num">1</span></code></dt> |
+ <dd>Used by {@link #addProperties()} to overwrite existing properties.</dd> |
+ |
+ <dt><code><var>COPY_ENUM</var> <span class="punct">:</span> number |
+ <span class="punct">=</span> <span class="num">0</span></code></dt> |
+ <dd>Used by {@link #addProperties()} and {@link #clone()} |
+ to make a shallow copy of all enumerable properties |
+ (default).</dd> |
+ |
+ <dt><code><var>COPY_ENUM_DEEP</var> <span class="punct">:</span> number |
+ <span class="punct">=</span> <span class="num">2</span></code></dt> |
+ <dd>Used by {@link #addProperties()} and {@link #clone()} |
+ to make a deep copy of all enumerable properties.</dd> |
+ |
+ <dt><code><var>COPY_INHERIT</var> <span class="punct">:</span> number |
+ <span class="punct">=</span> <span class="num">4</span></code></dt> |
+ <dd>Used by {@link #addProperties()} and {@link #clone()} |
+ to copy a property by inheritance.</dd> |
+ |
+ <dt><code><var>author</var> <span class="punct">:</span> string</code></dt> |
+ <dd>Script author</dd> |
+ |
+ <dt><code><var>copyright</var> <span class="punct">:</span> string</code></dt> |
+ <dd>Script Copyright</dd> |
+ |
+ <dt><code><var>email</var> <span class="punct">:</span> string</code></dt> |
+ <dd>Contact e-mail address</dd> |
+ |
+ <dt><code><var>path</var> <span class="punct">:</span> string</code></dt> |
+ <dd>Original script path</dd> |
+ |
+ <dt><code><var>version</var> <span class="punct">:</span> string</code></dt> |
+ <dd>Script version</dd> |
+ </dl> |
+ |
+ <h3>Methods of <code>jsx.object</code></h3> |
+ <dl> |
+ <dt><h3><code><span class="ident">addProperties</span><span |
+ class="punct">(</span><var>oSource</var> : Object</code>[<code><span |
+ class="punct">,</span> <var>iFlags</var></code>[<code><span class="punct">,</span> |
+ <var>oOwner</var></code>]]<code><span class="punct">)</span></code></h3></dt> |
+ <dd><p>Adds/replaces properties of an object</p> |
+ <h4>Arguments</h4> |
+ <dl> |
+ <dt><code><var>oSource</var> : Object</code></dt> |
+ <dd>Object specifying the properties to be added/replaced. |
+ The name of each property serves as the name for the |
+ property of the target object, its value as the value |
+ of that property.</dd> |
+ |
+ <dt><code><var>iFlags</var> : number</code></dt> |
+ <dd>Flags for the modification, see {@link Object#ADD_OVERWRITE ADD_*} |
+ and {@link Object#COPY_ENUM COPY_*}.</dd> |
+ |
+ <dt><code><var>oOwner</var> : Object</code></dt> |
+ <dd>If provided, used as target object instead of the |
+ calling object. This makes it possible to call |
+ the method without an explicit calling object.</dd> |
+ </dl></dd> |
+ </dl> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/jsx/object.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/historic/types.html |
=================================================================== |
--- live/doc/historic/types.html (nonexistent) |
+++ live/doc/historic/types.html (revision 520) |
@@ -0,0 +1,81 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>types.js — Type Function Library</title> |
+ </head> |
+ |
+ <body> |
+ <h1><tt>types.js</tt> — Type Function Library</h1> |
+ |
+ <p><b>Version:</b> 1.29.8.2009070702</p> |
+ |
+ <p><b>Part of:</b> PointedEars' JavaScript Extensions (JSX)</p> |
+ <p>(C) 2001-2009 Thomas Lahn <types.js@PointedEars.de></p> |
+ |
+ <h2>Dependencies</h2> |
+ <ul> |
+ <li><tt>object.js</tt> |
+ <ul> |
+ <li>└ types.js</li> |
+ </ul></li> |
+ |
+ </ul> |
+ |
+ <div> |
+ <p>This program is free software; you can redistribute it and/or |
+ modify it under the terms of the GNU General Public License |
+ as published by the Free Software Foundation; either version 2 |
+ of the License, or (at your option) any later version.</p> |
+ |
+ <p>This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License (GPL) for more details.</p> |
+ |
+ <p>You should have received a copy of the GNU GPL along with this |
+ program (COPYING file); if not, go to [1] or write to the Free |
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
+ MA 02111-1307, USA.</p> |
+ |
+ <p>[1] <http://www.gnu.org/licenses/licenses.html#GPL></p> |
+ </div> |
+ |
+ <h2>Global Variables</h2> |
+ |
+ <h3><code>jsx : Object</code></h3> |
+ |
+ <h2>Objects</h2> |
+ |
+ <h3><code>Types : Function</code></h3> |
+ |
+ <h4>Properties</h4> |
+ |
+ <table> |
+ <tr> |
+ <th><code>version</code></th> |
+ <td><code>String</code></td> |
+ </tr> |
+ <tr> |
+ <th><code>copyright : String</code></th> |
+ </tr> |
+ |
+ <tr> |
+ <th><code>author : String</code></th> |
+ </tr> |
+ |
+ <tr> |
+ <th><code>email : String</code></th> |
+ </tr> |
+ |
+ <tr> |
+ <th><code>path : String</code></th> |
+ </tr> |
+ |
+ <tr> |
+ <th><code>URI : String</code></th> |
+ </tr> |
+ </table> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/historic/types.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/historic/object.html |
=================================================================== |
--- live/doc/historic/object.html (nonexistent) |
+++ live/doc/historic/object.html (revision 520) |
@@ -0,0 +1,76 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>object.js — Basic Object Library</title> |
+ </head> |
+ |
+ <body> |
+ <h1><tt>object.js</tt> — Basic Object Library</h1> |
+ |
+ <p><b>Version:</b> 0.1.5a.2009071612</p> |
+ |
+ <p><b>Part of:</b> PointedEars' JavaScript Extensions (JSX)</p> |
+ <p>(C) 2004-2009 Thomas Lahn <object.js@PointedEars.de></p> |
+ |
+ <h2>Dependencies</h2> |
+ <ul> |
+ <li><tt>object.js</tt></li> |
+ </ul> |
+ |
+ <div> |
+ <p>This program is free software; you can redistribute it and/or |
+ modify it under the terms of the GNU General Public License |
+ as published by the Free Software Foundation; either version 2 |
+ of the License, or (at your option) any later version.</p> |
+ |
+ <p>This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License (GPL) for more details.</p> |
+ |
+ <p>You should have received a copy of the GNU GPL along with this |
+ program (COPYING file); if not, go to [1] or write to the Free |
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
+ MA 02111-1307, USA.</p> |
+ |
+ <p>[1] <http://www.gnu.org/licenses/licenses.html#GPL></p> |
+ </div> |
+ |
+ <h2>Global Variables</h2> |
+ |
+ <h3><code>jsx : Object</code></h3> |
+ |
+ <h2>Objects</h2> |
+ |
+ <h3><code>jsx.object : Object</code></h3> |
+ |
+ <h4>Properties</h4> |
+ |
+ <table> |
+ <tr> |
+ <th><code>version : String</code></th> |
+ </tr> |
+ <tr> |
+ <th><code>copyright : String</code></th> |
+ </tr> |
+ |
+ <tr> |
+ <th><code>author : String</code></th> |
+ </tr> |
+ |
+ <tr> |
+ <th><code>email : String</code></th> |
+ </tr> |
+ |
+ <tr> |
+ <th><code>path : String</code></th> |
+ </tr> |
+ </table> |
+ |
+ <h3><code>Object : Function</code></h3> |
+ |
+ <h4>Properties</h4> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/historic/object.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/historic/top.txt |
=================================================================== |
--- live/doc/historic/top.txt (nonexistent) |
+++ live/doc/historic/top.txt (revision 520) |
@@ -0,0 +1,46 @@ |
+ORIGINAL FILENAME: top.js |
+PURPOSE: Provides JavaScript TopOfPage Support |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.02.2001.1 |
+PART OF: PointedEars' LCARS extensions |
+DEPENDS ON: Any HTML that includes lcars.css with defined span.symbol |
+REQUIRES: no file(s) |
+TESTED WITH: |
+ Netscape Navigator 6.1 |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4522.1800IC |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ |
+VERSION HISTORY |
+1.02.2001.1 2001-01-11 Moved general documentation to text file for faster processing. |
+1.01.2000.11 2001-01-08 Updated documentation |
+1.01.2000.11 2000-11-15 Updated script with advanced Netscape-compatible version; |
+ requires application of HTML code if formerly used with |
+ previous version |
+1.00.2000.11 2000-11-10 Introduced script file moved from HTML inline scripts |
+ |
+COPYRIGHT (c) 2000 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as top.js and appending the |
+following section within the <BODY></BODY> as follows: |
+ |
+<p><a href="#top" class="button" onClick='this.blur();'><script language="JavaScript1.2" src="top.js" type="text/javascript"></script><noscript> </noscript>[...]</a></p> |
+ |
+You should write the code including the <script></script> section without any (CR)LF |
+to avoid undesired spaces on display. |
+ |
+ |
+Description |
+____________ |
+ |
+Dependent whether W3C-conform DHTML is available (at the creation of |
+this script this was only IE 5 and above, and NS 6 and above), it utilizes the cascading style-sheet |
+(CSS) named span.symbol defined in lcars.css to write the "top" character |
+defined by this CSS instead of writing . |
Index: live/doc/historic/close.txt |
=================================================================== |
--- live/doc/historic/close.txt (nonexistent) |
+++ live/doc/historic/close.txt (revision 520) |
@@ -0,0 +1,40 @@ |
+ORIGINAL FILENAME: close.js |
+PURPOSE: Provides JavaScript ClosePage Support |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.00.2001.8 |
+PART OF: PointedEars' LCARS extensions |
+DEPENDS ON: Any HTML that includes lcars.css with defined span.symbol |
+REQUIRES: no file(s) |
+TESTED WITH: |
+ Netscape Navigator 6.1 |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4522.1800IC |
+ |
+VERSION HISTORY |
+1.00.2001.8 2001-08-26 Introduced script file by slight adaption of top.js |
+ |
+COPYRIGHT (c) 2001 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as top.js and appending the |
+following section within the <BODY></BODY> as follows: |
+ |
+<p><a href="#" class="button" onClick='window.close(); return false();'><script language="JavaScript1.2" src="close.js" type="text/javascript"></script><noscript> </noscript>[...]</a></p> |
+ |
+You should write the code including the <script></script> section without any (CR)LF |
+to avoid undesired spaces on display. |
+ |
+ |
+Description |
+____________ |
+ |
+Dependent whether W3C-conform DHTML is available (at the creation of |
+this script this was only IE 5 and above, and NS 6 and above), it utilizes the cascading style-sheet |
+(CSS) named span.symbol defined in lcars.css to write the "top" character |
+defined by this CSS instead of writing . |
Index: live/doc/historic/csearch.txt |
=================================================================== |
--- live/doc/historic/csearch.txt (nonexistent) |
+++ live/doc/historic/csearch.txt (revision 520) |
@@ -0,0 +1,136 @@ |
+ORIGINAL FILENAME: csearch.js |
+PURPOSE: CSearchStr Data Access Class Library |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.0 |
+FILE VERSION: 1.00.2001.10 |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+DEPENDS ON: enhanced.js |
+TESTED WITH: |
+ Microsoft Internet Explorer 6.0.2600.0000 |
+ |
+VERSION HISTORY |
+1.00.2000.8 2000-08-13 Introduced CSearchString class |
+ |
+COPYRIGHT (c) 2000 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as script.js and appending the |
+following section within the <HEAD></HEAD> tags of that documents: |
+ |
+<script language="JavaScript1.1" src="cookies.js" type="text/javascript"> |
+</script> |
+ |
+The following items are provided by this script: |
+ |
+CSearchStr class |
+----------------- |
+ |
+Built-in properties: |
+ |
+ text The full search string without the leading "?" and |
+ "%26" entities converted to "&". |
+ If no search string is provided |
+ length Length of the text property's value |
+ values Array of the values defined in the search string. |
+ Each value is a pair of name and value defined as a Value object |
+ (see above). |
+ |
+Constructor arguments: |
+ |
+ s Original search string. Required. |
+ (If not provided, the object will have no properties and methods.) |
+ |
+ |
+Description: |
+ |
+The CSearchStr class provides encapsulation for a search string's properties, |
+which is the part of a URL following the question mark ("?") character. |
+This string may contain a number of pairs of required names and optional values, |
+separated by an equal character ("="), and each name/value pair separated from |
+the other by an ampersand character ("&"): |
+ |
+name1=value1&name2=&name3&name4=value4... |
+ |
+Usage: |
+ |
+Provide a string with a structure described above as constructor argument of the |
+CSearchStr class. This will convert the string to an array with names and values |
+as the properties of each item of this array where undefined values are assigned |
+as null-strings: |
+ |
+ s = new CSearchStr(window.location.search); |
+ |
+Then you can use the object's methods to access to its properties easily: |
+ |
+Use the isName(...) method to determine whether a name has been provided |
+with the string or not: |
+ |
+ if (! s.isName("url")) |
+ alert("Required name 'url' missing!"); |
+ |
+Use the hasValue(...) method to determine whether a name has a value different |
+from the null-string (""): |
+ |
+ if (s.hasValue("test")) |
+ document.write("This is only a test"); |
+ |
+Use the getValue(...) method to retrieve the value of a provided name: |
+ |
+ if (s.hasValue("url")) |
+ frames[0].location.href = s.getValue("url"); |
+ |
+Via these methods, names are accessed case-insensitive by default. |
+If you need case-sensitivity, add "true" as second argument to the |
+method calls: |
+ |
+ if (s.hasValue("URL", true)) |
+ frames[0].location.href = s.getValue("URL", true); |
+ |
+ |
+ The initial value of the CSearchStrVersion variable shows the version of the |
+library containing the CSearchString class you are using. This can be displayed, |
+e.g. if you use the window.alert(...) method with that variable as argument. |
+ |
+ |
+FAQ (Frequently Asked Questions) |
+--------------------------------- |
+ |
+Q: When I include the CSearchStr class library into my HTML/script, in Netscape/Mozilla |
+ I get an "Alert" message saying a necessary "file "[filename]" cannot be found". |
+ [filename] has the form of [pathname]"/%3Cnoscript%3E%3CFRAMESET%20rows=". |
+ But I have not specified such a filename in my documents/scripts. |
+ |
+ Instead, Internet Explorer shows either no alert message or one containing the |
+ following text: |
+ |
+ "Line: "[number] |
+ "Column: "[number] |
+ "Error: Object expected" |
+ "Code: 0" |
+ "URL: "[fully qualified path of the HTML document] |
+ |
+ Then when I click the "OK" button of this alert message it shows |
+ "Error 404: File not found" (or anything similar) in the browser window, |
+ with the Address Bar containing a URL that has the form of |
+ [pathname]"/<noscript><FRAMESET%20rows=". |
+ |
+ |
+ What have I done wrong? |
+ |
+A: This occurs if the JSX:enhanced.js script has not been included before |
+ including the library and you try to use CSearchStr for a dynamic frameset. |
+ CSearchStr now depends on JSX:enhanced.js because the latter contains the |
+ replaceText(...) function that is called by the constructor of CSearchStr |
+ to replace HTML entities like with the respective ASCII characters |
+ (here: unescape("%A0")). |
+ (you'll see that in the Netscape/Mozilla JavaScript Console under the "Task" menu, |
+ "Tools" submenu.) |
+ Include JSX:enhanced.js in the correct order as described above and the problem |
+ should not occur again. |
+ This is a known issue and I am working on a cross-platform bugfix. |
Index: live/doc/historic/cookie.txt |
=================================================================== |
--- live/doc/historic/cookie.txt (nonexistent) |
+++ live/doc/historic/cookie.txt (revision 520) |
@@ -0,0 +1,53 @@ |
+ORIGINAL FILENAME: ccookies.js |
+PURPOSE: CCookie Data Access Class Library |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.0 |
+FILE VERSION: 1.02.2001.1 |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+DEPENDS ON: no file |
+TESTED WITH: |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ |
+VERSION HISTORY |
+1.02.2001.1 2001-01-11 Moved general documentation to text file for faster processing. |
+1.01.2000.8 2000-08-24 Improved code for initialization and property view |
+1.00.2000.8 2000-08-13 Introduced CCookie class |
+ |
+COPYRIGHT (c) 2000 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as script.js and appending the |
+following section within the <HEAD></HEAD> tags of that documents: |
+ |
+<script language="JavaScript1.1" src="cookies.js" type="text/javascript"> |
+</script> |
+ |
+The following items are provided by this script: |
+ |
+CCookie class |
+-------------- |
+ |
+Properties: name, value, expires, domain, path, secure |
+Methods: LoadData(sData), toString(), aboutMe(showMsg) |
+ |
+Description: |
+ |
+The CCookie class provides encapsulation for a cookie's properties. |
+Pass a cookie data string as retrieved from document.cookie (sData) to |
+the LoadData method to convert the cookie's data into object properties. |
+Use the toString() method to convert the data vice-versa and return a string |
+that you can assign to document.cookie. |
+The aboutMe(...) method either retrieves a string where all properties |
+are divided by a CR character (showMsg == false), and property name and |
+value are divided by an equal sign (=), or displays that string in a |
+common message box (showMsg == true). |
+aboutMe(true) also displays the version of the library containing the |
+CCookie class you are using. You can also retrieve the library version |
+without a message box when reading the CCookieVersion variable |
+as defined in the script file. |
Index: live/doc/historic/dots.txt |
=================================================================== |
--- live/doc/historic/dots.txt (nonexistent) |
+++ live/doc/historic/dots.txt (revision 520) |
@@ -0,0 +1,42 @@ |
+ORIGINAL FILENAME: dots.js |
+PURPOSE: Provides Part 1 of the JavaScript 3dots LCARS Support |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.01.2001.1 |
+PART OF: PointedEars' LCARS extensions |
+DEPENDS ON: Any JavaScript 1.2 or HTML that defines the <span> object named "dots" |
+REQUIRES: undots.js |
+TESTED WITH: |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ |
+VERSION HISTORY |
+1.01.2001.1 2001-01-11 Moved general documentation to text file for faster processing. |
+1.00.2000.10 2000-10-21 Introduced script file moved from HTML inline scripts |
+ |
+COPYRIGHT (c) 2000 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as script.js and appending the |
+following section within the <BODY><DIV id="div_content"></DIV></BODY> tags |
+of that documents where DIV defines the text to be hidden until loading is completed: |
+ |
+<script language="JavaScript1.2" src="dots.js" type="text/javascript"></script> |
+ |
+dots.js requires undots.js (removes the status display and returns to normal display) |
+to be called at the end of the HTML document for the function make sense. |
+ |
+ |
+Description |
+------------ |
+ |
+This script initializes a window interval in which the <span> object named "dots" is |
+modified. For the first second the script is running, one dot is displayed in "dots". |
+The next second a dot and a space is added to that display. When the amount of dots |
+reaches 3, the next second it will continue displaying with no dots and so on until |
+undots.js is included. |
Index: live/doc/historic/undots.txt |
=================================================================== |
--- live/doc/historic/undots.txt (nonexistent) |
+++ live/doc/historic/undots.txt (revision 520) |
@@ -0,0 +1,40 @@ |
+ORIGINAL FILENAME: undots.js |
+PURPOSE: Provides Part 2 of the JavaScript 3dots LCARS Support |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.00.2000.10 |
+PART OF: PointedEars' LCARS extensions |
+DEPENDS ON: Any JavaScript 1.2 or HTML that defines the <div> objects |
+ named "div_status" and "div_content" |
+ dots.js |
+TESTED WITH: |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ |
+VERSION HISTORY |
+1.01.2001.1 2001-01-11 Moved general documentation to text file for faster processing. |
+1.00.2000.10 2000-10-21 Introduced script file moved from HTML inline scripts |
+ |
+COPYRIGHT (c) 2000 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as script.js and appending the |
+following section within the <BODY><DIV id="div_content"></DIV></BODY> tags |
+of that documents where DIV defines the text to be hidden until loading is completed: |
+ |
+<script language="JavaScript1.2" src="undots.js" type="text/javascript"></script> |
+ |
+undots.js requires dots.js (initializes the status display) |
+to be called before undots.js in the HTML document for the function make sense. |
+ |
+ |
+Description |
+------------ |
+ |
+This script clears the window interval in which the <span> object named "dots" is |
+modified and displays the content within the <div> object named "div_content". |
Index: live/doc/historic/document.txt |
=================================================================== |
--- live/doc/historic/document.txt (nonexistent) |
+++ live/doc/historic/document.txt (revision 520) |
@@ -0,0 +1,390 @@ |
+ORIGINAL FILENAME: document.js |
+PURPOSE: Provides JavaScript routines and objects to create |
+ temporary documents |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.1 |
+FILE VERSION: 1.19.2001.1 |
+ (see documentVersion variable definition in script file) |
+TESTED WITH: |
+ Microsoft Internet Explorer 5.50.4134.0600IC |
+ Microsoft Internet Explorer 5.01, "5.00.2919.6307IC" |
+ Microsoft Internet Explorer 5.00.2314.1003IC |
+ |
+VERSION HISTORY (current on top) |
+1.19.2001.1 2001-01-11 Moved general documentation to text file for faster processing. |
+1.18.2000.8 2000-08-22 Improved CHTMLdoc.showProperties() method, now uses for-in-loop |
+ to retrieve available properties dynamically. |
+1.17.2000.8 2000-08-13 Improved documentation texts. |
+ Tested script file successfully with IE5.5 |
+1.16.2000.7 2000-07-24 Added HTMLwriteLinkFavIcon() function and resp. method |
+1.15.2000.6 2000-06-10 Improved documentation texts. |
+1.14.2000.5 2000-05-24 Changed message box display in CHTMLdoc.showProperties() method |
+ Added tagCount global variable and resp. CHTMLdoc property |
+ Added CHTMLdocCount global variable for instance auto-naming |
+1.13.2000.4 2000-04-20 Added HTMLwriteStyle(...) function and resp. method |
+1.12.2000.4 2000-04-09 Improved HTMLdocOpen, now uses default argument values |
+1.11.2000.4 2000-04-04 Improved HTMLwriteScript, now uses default argument values |
+1.10.2000.3 2000-03-31 Usage of global variables for script data like version, |
+ author and contact e-mail address |
+1.09.2000.3 2000-03-25 Renamed non-HTML-specific functions |
+1.08.2000.3 2000-03-24 Fixed default color and background image properties |
+ of new CHTMLdoc instances |
+ Fixed invalid condition in HTMLdocOpen(...) function |
+ Fixed invalid func. name in HTMLdocShowProperties() |
+1.07.2000.3 2000-03-24 Improved HTMLwriteTag, now uses default arg. values |
+ Improved DTD strings with "\"" instead of '"' |
+1.06.2000.3 2000-03-23 Fixed some minor issues, renamed from html.js to |
+ document.js |
+1.05.2000.3 2000-03-19 Added OOP support for Multiple Document Access (MDA) |
+1.05.2000.3 2000-03-17 Added support for Object-Oriented Programming (OOP) |
+ |
+Copyright © 2000-2001 by Thomas Lahn (PES); |
+See sAuthorCopyright variable definition in script file. |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as document.js and appending the |
+following section within the <HEAD></HEAD> tags of that documents: |
+ |
+<script language="JavaScript1.2" src="document.js" type="text/javascript"></script> |
+ |
+Sometimes it may be necessary to add the tag |
+ |
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
+ |
+to the document that uses functions defined herein for the script to work. |
+ |
+All functions to perform HTML write operations defined herein use the |
+HTMLdoc variable as target (see below) to create a temporary HTML document. |
+ |
+This script file provides the following functions: |
+ |
+docCheck Checks whether the document specified by HTMLdoc exists. |
+HTMLdocOpen Opens a new HTML document. |
+HTMLdocClose Closes a new HTML document. |
+docWrite Writes directly into a temporary document. |
+docWriteLn Writes an entire line directly into a temporary document. |
+HTMLwriteTag Writes an HTML tag. |
+HTMLwriteMeta Writes an HTML <META> tag. |
+HTMLwriteScript Writes an HTML <SCRIPT> section. |
+HTMLwriteStyle Writes an HTML <STYLE> section. |
+HTMLwriteLinkFavIcon Writes an HTML <LINK> tag to determine the icon used when the |
+ web page is bookmarked in Internet Explorer Favorites folder. |
+HTMLheadOpen Opens the HTML header. |
+HTMLheadClose Closes the HTML header. |
+HTMLbodyOpen Opens the HTML body. |
+HTMLbodyClose Closes the HTML body. |
+ |
+See the function documentations below for details. |
+ |
+_______________________________________________________________________________ |
+ |
+The HTMLdoc variable specifies the document object that is used for |
+write operations. |
+The default is the document where this script file is included. |
+You would surely prefer another frame of the previously defined frameset |
+as target. Therefore you can modify the variable's value and add the section |
+ |
+<script language="JavaScript1.1"><!-- |
+... |
+HTMLdoc = parent.frames[2].document; |
+... |
+//--></script> |
+ |
+in the HTML document file where this script is included. It will cause the |
+following function calls of this script to write into the third frame |
+of that frameset (frames are counted from 0). |
+Do not use the TYPE attribute on the script section because |
+M$ Internet Explorer will then ignore the whole script. |
+ |
+_______________________________________________________________________________ |
+ |
+function docCheck(bRaiseException) |
+ |
+Returns true if the document object specified by HTMLdoc is available/is valid/ |
+does exist, otherwise it returns false. |
+If you pass true as only argument, the function will raise an ENoDocument |
+exception if it will return false. |
+No exception will be raised if you pass an invalid argument or |
+an invalid number of arguments (silent mode). |
+ |
+Note: All functions defined herein to write HTML content call docCheck |
+by default to raise an exception if the document object specified HTMLdoc |
+is not available/is invalid/does not exist. |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLdocOpen(sDTD, bReplace) |
+ |
+Replaces the document specified by HTMLdoc with a blank HTML document. |
+ |
+Use the sDTD argument and one of the variables named dtd... defined above |
+to specify a registered Document Type Definition (DTD) for the document, |
+e. g. the DTD may specify the HTML version of the document's tags use. |
+You may also add one of the variables named dtdURL_... to the variables |
+named dtdHTML4... to define the tag policy you are using: |
+ |
+<script language="JavaScript1.2" src="document.js" type="text/javascript"></script> |
+<script language="JavaScript1.2"> |
+<!-- |
+HTMLdoc = parent.document; Assign required document object |
+HTMLdocOpen( dtdHTML4frm + dtdURL_HTML4frm ); Create document for frameset |
+... Other statements |
+HTMLdocClose(); Close the created HTML document |
+--> |
+</script> |
+ |
+The document created with the example above will contain the following: |
+ |
+<!doctype html public "-W3CDTD HTML 4.0 FramesetEN" |
+ "http:www.w3.org/TR/REC-html40/frameset.dtd"> |
+<html> |
+ |
+Use true for the bReplace argument to specify whether the new document |
+should also replace the previous document in the browser's document history. |
+ |
+Note: The function call keeps the new document open for further |
+write operations. Recommended to use HTMLdocClose() on the same document after |
+completed writing. If you have formerly opened the previous document |
+in that frame with document.open() or HTMLdocOpen(), it is recommended that |
+you call HTMLdocClose() first for saving system resources (see below). |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLdocClose() |
+ |
+Closes the document specified by HTMLdoc. |
+Use HTMLdocClose() if you have formerly opened a new document with |
+document.open() or HTMLdocOpen() (see above). |
+ |
+_______________________________________________________________________________ |
+ |
+function docWrite(s) |
+ |
+Writes the passed argument into the HTML document. |
+Unlike HTMLdoc.write() it checks the document object before using it |
+and raises an exception if it is not available. |
+ |
+_______________________________________________________________________________ |
+ |
+function docWriteLn(s) |
+ |
+Writes the passed argument into the HTML document including |
+Carriage Return character. |
+Unlike HTMLdoc.writeln() it checks the document object before using it |
+and raises an exception if it is not available. |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLwriteTag(sTag, sAttrib, sContent) |
+ |
+Writes an opening and closing HTML tag into the HTML document. |
+Note: Does not write Carriage Return character when finished. |
+Unlike HTMLdoc.write() it checks the document object before using it |
+and raises an exception if it is not available. |
+ |
+The function requires the following arguments to be passed: |
+ |
+sTag Name of the tag to be written: Null-string causes exception. |
+sAttrib Tag attributes: Null-string allowed. Combine two or more attributes |
+ separated by spaces. |
+sContent Content between the opening and closing tag. If you pass a |
+ null-string the function does not write a closing tag. |
+ |
+The variable HTMLtagCount stores the number of HTML tags that has |
+been written into the document with HTMLwriteTag(). |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLwriteMeta(sName, sHTTPequiv, sContent) { |
+ |
+Appends a <META ...> tag to the HTML document specified by HTMLdoc. |
+This type of tag is allowed within the HTML header only. |
+ |
+ARGUMENT MEANING |
+sName If not a null-string, the argument defines the value of the |
+ NAME attribute of the <META> tag. |
+sHTTPequiv If not a null-string, the argument defines the value of the |
+ HTTP-EQUIV attribute of the <META> tag. |
+sContent Defines the CONTENT attribute of the <META> tag |
+ (null-string allowed). |
+ |
+All described arguments are required for the function call. Otherwise |
+an EInvalidArgNum exception is raised. |
+ |
+Note: The function call keeps the document body open for further |
+write operations. Recommended to use HTMLheadClose() on the same document |
+after completed writing into the header. |
+ |
+The variable HTMLmetaCount stores the number of <META> tags that has been |
+written into the document with HTMLwriteMeta() except the |
+<META NAME="GENERATOR" ...> tag that is written automatically into the |
+document on call of HTMLheadopen(). |
+Thus the GENERATOR value for the NAME attribute is refused to write into |
+the document when calling HTMLwriteMeta. In that case, no exception is raised. |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLwriteLinkFavIcon(sURL) |
+ |
+Writes an HTML <LINK> tag to determine the icon used when the web page is |
+bookmarked in Internet Explorer Favorites folder. The icon file (sURL) must be |
+of 16x16 pixels in size. |
+You can leave the use of this function if you place an icon file of 16x16 |
+pixels in size named favicon.ico in the root directory of your domain |
+(www.your-domain.com/favicon.ico). |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLwriteScript(sLang, sSrc, sType, sContent) |
+ |
+Appends a <SCRIPT ...></SCRIPT> section to the HTML document specified by |
+HTMLdoc. This type of tag is allowed within both the HTML header and body. |
+ |
+ARGUMENT MEANING |
+sLang Defines the language of the SCRIPT section (required). |
+sSrc If not a null-string, the argument defines the included script |
+ file for the SCRIPT section (optional). |
+sType If not a null-string, the argument defines the MIME type of the |
+ SCRIPT section (optional). |
+sContent If not a null-string, the argument defines the statements that |
+ should be added to the script. Passing a null-string will cause |
+ the function not to write the remark tags. When sSrc is not a |
+ null-string, this argument is ignored. |
+ |
+All described arguments are required for the function call if sSrc is not |
+a null-string (therefore only arguments sLang, sSrc and sType required). |
+Otherwise an EInvalidArgNum exception is raised. |
+ |
+Note: The function call keeps the document body open for further |
+write operations. See HTMLdocClose() for details. |
+ |
+The variable HTMLscriptCount stores the number of script sections that has |
+been written into the document with HTMLwriteScript(). |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLwriteStyle(sType, sAttrib, sContent) |
+ |
+Appends a <STYLE ...></STYLE> section to the HTML document specified by |
+HTMLdoc. This type of tag is allowed within the HTML header only. |
+ |
+ARGUMENT MEANING |
+sType Defines the type of the STYLE section. |
+ Valid values are a null-string or "text/css" for cascading |
+ style-sheets (IE and NN) and "text/javascript" for JavaScript |
+ style sheets (NN only). |
+ Invalid values cause an EInvalidArgument exception. |
+sAttrib If not a null-string, the argument defines the the additional |
+ attributes for the STYLE section. |
+sContent The argument defines the definitions and/or statements that |
+ should be added to the style sheet. Passing a null-string will |
+ raise an EInvalidArgument exception as the style section is |
+ not allowed to be empty. |
+ |
+All described arguments are required for the function call. |
+Otherwise an EInvalidArgNum exception is raised. |
+ |
+Note: The function call keeps the document body open for further |
+write operations. See HTMLdocClose() for details. |
+ |
+The variable HTMLstyleCount stores the number of style sections that has |
+been written into the document with HTMLwriteStyle(). |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLheadOpen(sTitle) |
+ |
+Appends the beginning of an HTML document header into the document specified by |
+HTMLdoc including the title tag. |
+ |
+Use the sTitle argument to pass a string that is used for document title. |
+Most browsers display this string in the title bar if the document is not |
+displayed within a frameset. |
+ |
+Note: The function call keeps the document header open for further |
+write operations. Recommended to use HTMLheadClose() on the same document |
+after completed writing into the header. |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLheadClose() |
+ |
+Closes the header of the document specified by HTMLdoc. |
+Use HTMLheadClose() if you have formerly opened a document header with |
+<head> or HTMLheadOpen() (see above). |
+ |
+Note: The function call keeps the new document open for further |
+write operations. See HTMLdocOpen() above for details. |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLbodyOpen() { |
+ |
+Appends the beginning of an HTML document body into the document specified by |
+HTMLdoc. |
+ |
+The function uses the clBody... variables for color attributes if their values |
+are not null-strings (default). |
+ |
+The function uses the imgBody variable to define the URL of the background |
+image of the document if its value is not a null-string (default). |
+ |
+The bBodyBgFixed variable is currently used by M$ Internet Explorer only. |
+The default value is false. If true is assigned, and imgBody is also assigned, |
+the background image will be in watermark style, meaning that it stands still |
+when the document text is scrolled. |
+ |
+Note: The function call keeps the document body open for further |
+write operations. Recommended to use HTMLbodyClose() on the same document |
+after completed writing into the document's body. |
+ |
+_______________________________________________________________________________ |
+ |
+function HTMLbodyClose() { |
+ |
+Closes the body of the document specified by HTMLdoc. |
+Use HTMLbodyClose() if you have formerly opened a document body with |
+<BODY> or HTMLbodyOpen() (see above). |
+ |
+Note: The function call keeps the new document open for further |
+write operations. See HTMLdocOpen() above for details. |
+ |
+_______________________________________________________________________________ |
+ |
+Version 1.05.x Extension: Object-Oriented Programming (OOP) |
+ |
+OOP using the CHTMLdoc class allows you to access different temporary |
+HTML documents virtually simultaneously. |
+You need to create an instance of this class for each temporary document |
+using the JavaScript:new keyword as follows: |
+ |
+Document1 = new CHTMLdoc(Target1); |
+Document2 = new CHTMLdoc(Target2); |
+ |
+TargetX is to be replaced with the document object you wish to access via |
+the new instance. |
+Then, after all necessary values have been assigned to the properties of the |
+instance, you can activate the respective instance using its activate() |
+method. After that, you can use the properties and methods as defined below |
+to access the respective document object. |
+ |
+Note that the activate() method is the only "gatekeeper" for HTML write |
+operations via OOP. Once an instance is activated, the methods of all CHTMLdoc |
+instances and the HTML...() functions themselves will use the properties of |
+it as data source. Therefore there is no need to use the CHTMLdoc class and OOP |
+instead of the HTML...() functions defined above if you wish to access a |
+single document object only. |
+The HTMLinstance object represents the currently active CHTMLdoc instance. |
+ |
+If you wish to change the target document of an instance after creation, |
+then assign a document object to its target property. |
+Note that you need to call the activate() method of an instance every time |
+after you have changed its properties to make the changes have effect on |
+future method calls. |
+_______________________________________________________________________________ |
+END OF FILE |
Index: live/doc/historic/enhanced.htm |
=================================================================== |
--- live/doc/historic/enhanced.htm (nonexistent) |
+++ live/doc/historic/enhanced.htm (revision 520) |
@@ -0,0 +1,742 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
+ "http://www.w3.org/TR/html4/loose.dtd"> |
+<html lang="en"> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+<title>PointedEars' JavaScript Extensions (JSX): enhanced.js</title> |
+<link rel="stylesheet" type="text/css" href="style.css"> |
+</head> |
+ |
+<body> |
+<h1>PointedEars' JavaScript Extensions (JSX)</h1> |
+<h2>enhanced.js</h2> |
+<pre> |
+ |
+ORIGINAL FILENAME: <a href="enhanced.js" type="text/javascript" |
+ target="_blank">enhanced.js</a> |
+PURPOSE: Provides level-1 enhanced web site features |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.1+ |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+FILE VERSION: 1.29.2002.10b3; |
+ See <var>enhancedVersion</var> variable definition in script file. |
+REQUIRED FOR: <a href="enhancd2.htm" |
+ title="View documentation of JSX:enhancd2.js">JSX:enhancd2.js</a> |
+ </pre> |
+<h3>Contents</h3> |
+<ul> |
+ <li><a href="#features">Features provided by this script</a></li> |
+ <li><a href="#testlist">List of browser tests</a></li> |
+ <li><a href="#history">Version history</a></li> |
+ <li><a href="#copyright">Copyright & disclaimer</a></li> |
+ <li><a href="#def">Expressions used herein</a></li> |
+ <li><a href="#details">Detailed description of features</a></li> |
+</ul> |
+<p align="center" style="font-size: small;">Created with<br> |
+<a href="http://quanta.sourceforge.net/" target="_blank"><img |
+ src="../media/quanta.png" alt="Quanta Plus" width="32" height="32" |
+ border="0"></a> <a |
+ href="http://www.macromedia.com/software/homesite/" target="_blank"><img |
+ src="../media/homesite3.gif" alt=" | Macromedia HomeSite | " |
+ width="44" height="34" border="0"></a><a |
+ href="http://www.macromedia.com/software/dreamweaver/" target="_blank"><img |
+ src="../media/dreamweaver2.gif" alt="Macromedia Dreamweaver MX" |
+ width="44" height="34" border="0"></a></p> |
+<p align="center" style="font-size: small;"><a |
+ href="http://validator.w3.org/check/referer" target="_blank"><img |
+ src="http://www.w3.org/Icons/valid-html401" |
+ alt="This is valid HTML 4.01, " width="88" height="31" border="0"></a> |
+<a href="http://jigsaw.w3.org/css-validator/check/referer" |
+ target="_blank"><img |
+ src="http://jigsaw.w3.org/css-validator/images/vcss" alt="valid CSS " |
+ style="border: 0; width: 88px; height: 31px"></a> <a |
+ href="http://www.anybrowser.org/campaign/" target="_blank"><img |
+ src="../media/anybrowser.gif" |
+ alt="and therefore optimized for ALL browsers!" width="88" height="31" |
+ border="0"></a></p> |
+<hr> |
+<h4><a name="features">Features Provided By This Script</a></h4> |
+<dl> |
+ <dt><code><a href="#isArray">isArray</a></code></dt> |
+ <dd><pre>Checks whether a value is an array or not.</pre></dd> |
+ <dt><code><a href="#replaceText">replaceText</a></code></dt> |
+ <dd><pre>Replaces text within a string.</pre></dd> |
+ <dt><code><a href="#trimLeft">trimLeft</a></code></dt> |
+ <dd><pre>Returns a string where all leading spaces are stripped from.</pre></dd> |
+ <dt><code><a href="#trimRight">trimRight</a></code></dt> |
+ <dd><pre>Returns a string where all following spaces are stripped from.</pre></dd> |
+ <dt><code><a href="#trim">trim</a></code></dt> |
+ <dd><pre>Returns a string where all leading and following spaces are stripped from.</pre></dd> |
+ <dt><code>setStatus</code></dt> |
+ <dd><pre>Set the text that is displayed in the browser's status bar.</pre></dd> |
+ <dt><code>stripTags</code></dt> |
+ <dd><pre>Returns a string where all tags are stripped from.</pre></dd> |
+ <dt><code>linkOut</code></dt> |
+ <dd><pre>Questions the user before following an online link (useful in offline |
+documents with Internet support.)</pre></dd> |
+ <dt><code>popUp</code></dt> |
+ <dd><pre>Loads a user-defined browser child window (pop-up window). |
+(Previously addressed by OpenChildWin(...) function, |
+see version history info above.)</pre></dd> |
+ <dt><code>LoadFrame</code></dt> |
+ <dd><pre>Loads a document within a specified frame.</pre></dd> |
+ <dt><code><a href="#getObjInfo">getObjInfo</a></code></dt> |
+ <dd><pre>Retrieves attributes of an object.</pre></dd> |
+</dl> |
+<h4><a name="testlist">Tested To Work At Least With</a></h4> |
+<pre><!--script type="text/javascript"> |
+document.write(navigator.userAgent + "\n"); |
+</script-->Mozilla 1.2b nightly |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) Gecko/2002102108] |
+Mozilla 1.2b nightly |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) Gecko/2002100604] |
+Mozilla 1.2a |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2a) Gecko/20020911] |
+Netscape 7.0 |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.0.1) Gecko/20020823 |
+ Netscape/7.0] |
+Mozilla 1.1b |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.1b) Gecko/20020722] |
+Mozilla 1.0 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0) Gecko/20020605] |
+Mozilla 1.0 Release Candidate 3 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc3) Gecko/20020523] |
+Mozilla 1.0 Release Candidate 2 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc2) Gecko/20020510] |
+Mozilla 1.0 Release Candidate 1 nightly |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc1) Gecko/20020417] |
+Mozilla 0.9.9 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.9) Gecko/20020311] |
+Mozilla 0.9.8 de-AT |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.8) Gecko/20020204] |
+Mozilla 0.9.4 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.4) Gecko/20010913] |
+Microsoft Internet Explorer 6.0.2600.0000 |
+ [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 3.0)] |
+Netscape 6.1 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.2) Gecko/20010726 |
+ Netscape6/6.1] |
+Netscape 6.1 |
+ [Mozilla/5.0 (X11; U; Linux 2.2.16 i586; de-DE; m18) Gecko/20010131 |
+ Netscape6/6.01] |
+Microsoft Internet Explorer 5.50.4807.2300IC |
+Microsoft Internet Explorer 5.50.4134.0600IC |
+Microsoft Internet Explorer 5.01 [5.00.2919.6307IC] |
+Microsoft Internet Explorer 5.00.2314.1003IC |
+ </pre> |
+<h4><a name="history">Version History</a></h4> |
+<pre> |
+<a href="#first">First version</a> |
+ |
+<a name="last" id="last">1.29.2002.10b3 (2002-10-09)</a> |
+---------------------------- |
+* Updated <code>getObjInfo</code> function: |
+ - Now supports a <a href="#regexp">RegExp</a> for the second argument (now <var><a |
+ href="#getObjInfo_aWhat">aWhat</a></var>, formerly <var>sWhat</var>) |
+ - Fixed bug with not provided <var>aWhat</var> argument by assigning a <a |
+ href="#def">null string</a> |
+* Updated documentation: |
+ - Added link to last version |
+ - Added links to definitions |
+ - Updated definitions |
+ - Updated "null string" term |
+ - Unified Version History layout |
+ |
+<a name="v1.29.2002.8b2" id="v1.29.2002.8b2">1.29.2002.8b2 (2002-08-30)</a> |
+---------------------------- |
+* Updated <code>getObjInfo</code> function: |
+ - Now supports combination of (case-insensitive) attribute options |
+ |
+<a name="v1.29.2002.8b" id="v1.29.2002.8b">1.29.2002.8b (2002-08-25)</a> |
+---------------------------- |
+* Updated all functions: |
+ - changed $ident<code><span class="punct">.</span>arguments</code> to <code>arguments</code> because it is an intrinsic property |
+ of the function prototype |
+ |
+<a name="v1.29.2002.8a" id="v1.29.2002.8a">1.29.2002.8a (2002-08-20)</a> |
+--------------------------- |
+* Updated <code>getObjInfo</code> function: |
+ - Now supports all types of objects, correct syntax provided |
+ - Now supports combination of (case-insensitive) style options |
+ - Introducing new style option 'S' that specifies to display attribute type |
+* ObjectInspector still buggy |
+ |
+<a name="v1.29.2002.7" id="v1.29.2002.7">1.29.2002.7 (2002-07-22)</a> |
+--------------------------- |
+* Updated <code>replaceText</code> function: |
+ - Introduced additional <var>bForceLoop</var> argument to prefer |
+ for-loop instead of <a href="#regexp">RegExps</a>. Useful when replacement with RegExp<a |
+ href="#regexp"></a>s |
+ requires too much modification of arguments. |
+ |
+<a name="v1.28.2002.7" id="v1.28.2002.7">1.28.2002.7 (2002-07-15)</a> |
+--------------------------- |
+* Updated <code>ObjectInspector</code> function: |
+ - Workaround for suprising Mozilla bug with window.open(...): |
+ Creates exception to recommend use of <code>getObjInfo(...)</code> |
+ |
+<a name="v1.25.2002.5" id="v1.25.2002.5">1.25.2002.5 (2002-05-10)</a> |
+--------------------------- |
+* Updated <code>getObjInfo(...)</code> function: |
+ - Fixed error when trying to retrieve attribute values without permission, |
+ use <code>try...catch</code> statements of JavaScript 1.5 |
+ - Fixed "empty lines above table in IE" bug |
+* Fixed undetected bug in <code>EInvalidArg(...)</code>, simplified <code>EInvalidArg(...)</code> |
+ and <code>EInvalidArgNum(...)</code> exceptions |
+* Renamed <code>EnhancedException</code> to <code>enhancedException</code> and simplified code |
+* Introduced <var>enhancedCopypright</var>, <var>enhancedAuthor</var> and <var>enhancedEMail</var> |
+ global variables to store script-related data for <strong>all</strong> script features, |
+ including <code>getObjInfo(...)</code> |
+* Documentation update: |
+ - Updated <code>getObjInfo(...)</code> description |
+ - Have all code-related identifiers properly formatted |
+ |
+1.24.2002.5 (2002-05-06) |
+--------------------------- |
+* Updated <code>replaceText(...)</code> function: |
+ - Fixed the "<var>sText</var> has no properties" bug with undefined attributes |
+ tried to retrieve with <code>getObjInfo(...)</code> |
+* Updated <code>getObjInfo(...)</code> function with XHTML support |
+* Documentation update: |
+ - Link to jump to the first version listed in history |
+ - Updated <code>replaceText(...)</code> description |
+ - Use of definition lists |
+ - Changed headers |
+ |
+1.23.2002.4 (2002-04-30) |
+--------------------------- |
+* Updated <code>replaceText(...)</code> function, resolving the <code><a |
+ href="#regexp">RegExp</a></code> issues: |
+ - Replaces all occurrences of a string |
+ - Replaces also <code>\</code> |
+ |
+1.22.2002.4 (2002-04-22) |
+--------------------------- |
+* Updated replaceText(...) function: |
+ - Support of the more effective <code>String.replace(...)</code> with <code><a |
+ href="#regexp">RegExp</a></code> of |
+ JavaScript 1.2 |
+* Documentation update: |
+ - Word wrap at 72 characters (applies to documentation standards) |
+ - Version History is no longer in columns but separate paragraphs |
+* First version under the terms of the GNU GPL, version 2 or later. |
+ |
+1.20.2002.2 (2002-02-24) |
+--------------------------- |
+* Updated <code>getObjInfo(...)</code> function: |
+ - Now supports also HTML output as list or table |
+ |
+1.19.2001.10 (2001-10-20) |
+--------------------------- |
+* Added <code>isArray(...)</code> function |
+ |
+1.19.2001.9 (2001-09-10) |
+--------------------------- |
+* Updated <code>getObjInfo(...)</code> function: |
+ - Now denies retrieval of all the attributes the ObjectInspector does |
+ (obsoleted by <a href="#v1.25.2002.5">version 1.25.2002.5</a>) |
+ |
+1.18.2001.4 (2001-04-17) |
+--------------------------- |
+* Added <code>ObjectInspector(...)</code> function |
+ |
+1.17.2001.2 (2001-02-28) |
+--------------------------- |
+* Added <code>getObjInfo(...)</code> function |
+ |
+1.16.2001.1 (2001-01-11) |
+--------------------------- |
+* Moved general documentation to text file for faster processing |
+ |
+1.15.2000.11 (2000-11-24) |
+--------------------------- |
+* Improved <code>linkOut(...)</code> function: |
+ - Now always returns false for combined document use in both |
+ <span class="a">href</span> attribute and <span class="a">onclick</span> event handler of <span |
+ class="a">A</span>-elements |
+ |
+1.14.2000.11 (2000-11-15) |
+--------------------------- |
+* Improved <code>popUp(...)</code> and <code>OpenChildWin(...)</code> functions: |
+ - Now both functions return false for combined document use in both |
+ <span class="a">href</span> attribute and <span class="a">onclick</span> event handler of <span |
+ class="a">A</span>-elements |
+* Established string variable named <var>enhancedVersion</var> to contain |
+ library version |
+ |
+1.13.2000.10 (2000-10-17) |
+--------------------------- |
+* Improved inline documentation |
+ |
+1.12.2000.8 (2000-08-13) |
+--------------------------- |
+* Tested script file successfully with IE5.5 |
+ |
+1.11.2000.7 (2000-07-03) |
+--------------------------- |
+* Fixed some mysterious bugs with IE 5.01 on string arguments and large |
+ HTML documents by assigning those strings to local variables and |
+ splitting string assignments (+= Workaround). |
+* Modified email subject line to Feedback/JSX/enhanced |
+ |
+1.10.2000.6 (2000-06-10) |
+--------------------------- |
+* Renamed <code>OpenChildWin(...)</code> function identifier to more familiar and |
+ easier recognized term <code>popUp(...)</code>; |
+ Compatibility to previous file versions is provided by internal call |
+ redirection, though new documents should use the new identifier. |
+* Improved inline documentation |
+ |
+1.09.2000.3 (2000-03-27) |
+--------------------------- |
+* Fixed "location is not an object" bug in <code>linkOut(...)</code> |
+* Fixed spelling error in <code>EInvalidArg(...)</code> exception |
+* Fixed global frame ID evaluation bug |
+ |
+1.08.2000.3 (2000-03-23) |
+--------------------------- |
+* Improved <code>setStatus(...)</code> function |
+ |
+1.07.2000.3 (2000-03-20) |
+--------------------------- |
+* Added <code>setStatus(...)</code> function |
+ |
+1.06.2000.3 (2000-03-19) |
+--------------------------- |
+* Fixed <var>sResult</var> variable assignment in <code>trim(...)</code> |
+ |
+<a name="first" id="first">1.05.2000.3 (2000-03-21)</a> |
+--------------------------- |
+* Fixed and updated <code>linkOut(...)</code> function |
+ |
+<a href="#last">Last version</a> |
+ </pre> |
+<h4><a name="copyright">Copyright & Disclaimer</a></h4> |
+<pre> |
+Copyright (c) 1999-2002 Thomas Lahn <<a |
+ href="mailto:webmaster@PointedEars.de?subject=Feedback/JSX/enhanced">webmaster@PointedEars.de</a>> |
+ |
+This program is free software; you can redistribute it and/or |
+modify it under the terms of the <a |
+ href="http://www.gnu.org/copyleft/gpl.html" target="_blank">GNU General Public License</a> |
+as published by the <a href="http://www.fsf.org/" target="_blank">Free Software Foundation</a>; either version 2 |
+of the License, or (at your option) any later version. |
+ |
+This program is distributed in the hope that it will be useful, |
+but WITHOUT ANY WARRANTY; without even the implied warranty of |
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+GNU General Public License for more details. |
+ |
+You should have received a copy of the GNU General Public License |
+along with this program (<a href="COPYING" target="_blank">COPYING</a> file); if not, write to the |
+Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
+Boston, MA 02111-1307, USA. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in |
+different HTML documents when saving the entire file as |
+script.js and appending the following section within the |
+<span class="tags"><head>...</head></span> tags of that documents: |
+ |
+<span class="scr"><script src="enhanced.js" type="text/javascript"></script></span> |
+ </pre> |
+<h4><a name="def">Expressions Used Herein</a></h4> |
+<dl> |
+ <dt>null string</dt> |
+ <dd><pre>An empty string that contains no characters, i.e. is of length 0 (zero).</pre></dd> |
+ <dt><code>(Expression1 | Expression2 | ...)</code></dt> |
+ <dd><pre>Exclusive selection of expressions in Backus-Naur Form (BNF). [<a |
+ href="http://google.com/search?q=Backus-Naur+Form" target="_blank">details</a>]</pre></dd> |
+ <dt><code><a name="regexp">RegExp</a></code></dt> |
+ <dd><pre>A regular expression encapsulated by the RegExp object. [<a |
+ href="http://web.archive.org/devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/regexp.html#1193136" |
+ target="_blank">details</a>]</pre></dd> |
+</dl> |
+<pre> |
+<a name="details">Following the detailed description of the features of this script file.</a> |
+_______________________________________________________________________________ |
+ |
+<code><a name="isArray"><span class="rswd">function</span> isArray<span |
+ class="punct">(</span><var>value</var><span class="punct">)</span></a></code> |
+ |
+Returns <span class="rswd">true</span> if <var>value</var> is <strong>probably</strong> an array, i.e. provides the <code>length</code> |
+property. Returns <span class="rswd">false</span> otherwise. |
+ |
+Note: This function checks for the <code>length</code> property only. It cannot provide |
+definitive indication whether the value is really an array or not, as |
+e.g., the <code class="rswd">String</code> object provides the <code>length</code> property, too. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="replaceText"><span class="rswd">function</span> replaceText<span |
+ class="punct">(</span><var>sText</var>, <var>sReplaced</var>, <var>sReplacement</var><span |
+ class="punct">)</span></a></code> |
+ |
+Replaces occurences of <var>sReplaced</var> in the string <var>sText</var> with <var>sReplacement</var>. |
+Returns the new string. |
+ |
+Because of the result it returns, <code>replaceText</code> may be nested |
+into other calls of itself: |
+ |
+ <code><span class="rswd">var</span> s <span class="punct">=</span> replaceText<span |
+ class="punct">(</span>replaceText<span class="punct">(</span><span |
+ class="str">"test me"</span><span class="punct">,</span> <span |
+ class="str">"test"</span><span class="punct">,</span> <span |
+ class="str">"#test#"</span><span class="punct">)</span><span |
+ class="punct">,</span> <span class="str">"#"</span><span |
+ class="punct">,</span> <span class="str">"$"</span><span |
+ class="punct">)</span>; |
+ <span class="comm">// displays "$test$ me"</span></code> |
+ |
+When available, <code>replaceText(...)</code> uses <code>String.replace(...)</code> |
+to replace text. Therefore, if the method is available, <var>sReplaced</var> may be |
+a regular expression to be replaced with <var>sReplacement</var>. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="trimLeft"><span class="rswd">function</span> trimLeft<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Returns a copy of <var>s</var> where all leading spaces are stripped from. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="trimRight"><span class="rswd">function</span> trimRight<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Returns a copy of <var>s</var> where all following spaces are stripped from. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="trim"><span class="rswd">function</span> trim<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Returns a copy of <var>s</var> where all leading and following spaces are stripped from. |
+Uses <code>trimLeft</code> and <code>trimRight</code> defined above to calculate that resulting string. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><span class="rswd">function</span> setStatus<span |
+ class="punct">(</span><var>sCaption</var><span class="punct">)</span></code> |
+ |
+Sets the text of the browser's status bar user-defined. |
+Pass the string to be displayed as the only function argument. |
+Removes the necessity to include a script into the HTML 4.0 event |
+handlers of an HTML object, e. g. |
+ |
+ <span class="a"><a href=</span><span class="attr">"..."</span> <span |
+ class="a">onmouseover=</span><span class="attr">"</span><code>status='<span |
+ class="str">Text</span>'<span class="punct">;</span> <span |
+ class="rswd">return true</span><span class="punct">;</span></code><span |
+ class="attr">"</span><span class="a">></span>dasd<span |
+ class="a"></a></span> |
+ |
+can be replaced with: |
+ |
+ <span class="a"><a href=</span><span class="attr">"..."</span> <span |
+ class="a">onmouseover=</span><span class="attr">'</span><code><span |
+ class="rswd">return</span> setStatus<span class="punct">(</span>"<span |
+ class="str">Text</span>"<span class="punct">);</span></code><span |
+ class="attr">'</span><span class="a">></span>dasd<span class="a"></a></span> |
+ |
+_______________________________________________________________________________ |
+ |
+<code><span class="rswd">function</span> stripTags<span |
+ class="punct">(</span><var>taggedStr</var><span class="punct">)</span></code> |
+ |
+Returns a string where all tags are stripped from the passed argument string |
+(<var>taggedStr</var>). You may use it to analyze the displayed content of an HTML document |
+for fulltext search (example works with Internet Explorer only): |
+ |
+ <code><span class="rswd">function</span> foundText<span |
+ class="punct">(</span><var>sSub</var><span class="punct">)</span> { |
+ <span class="rswd">return</span> <span class="punct">(</span>stripTags<span |
+ class="punct">(</span>document.all.tags<span class="punct">(</span>"<span |
+ class="str">body</span>"<span class="punct">)[</span><span |
+ class="num">0</span><span class="punct">].</span>innerHTML<span |
+ class="punct">).</span>indexOf<span class="punct">(</span><var>sSub</var><span |
+ class="punct">)</span> > <span class="num">-1</span><span |
+ class="punct">);</span> |
+ } |
+ |
+ if( foundText("Text") ) |
+ document.write( 'Found "Text" in the document.' );</code> |
+ |
+_______________________________________________________________________________ |
+ |
+<code><span class="rswd">function</span> linkOut<span |
+ class="punct">(</span><var>sURL</var>[, <var>sLink</var>[, <var>bShowURL</var>[, <var>aTarget</var>[, <var>sWidth</var>[, <var>sHeight</var>[, <var>sOptions</var>]]]]<span |
+ class="punct">)</span></code> |
+ |
+Insert the following link to a HTML document. A click on it will run the |
+function defined below and ask the user if he/she is willing to connect |
+to the Internet because of an online link: |
+ |
+<a href="sURL" onClick='return(linkOut(sURL));'></a> |
+ |
+Replace the sURL argument with the URL of the document to be loaded. |
+ |
+Note that the TARGET attribute is required only to avoid script errors |
+when the link is placed within a frameset where the <BASE TARGET=...> tag |
+has been used previously. |
+ |
+The function appears useful in offline pages only. You should remove the |
+event handler before the respective offline site is uploaded to a public |
+server. |
+Use the return value of linkOut (return(false) will cancel the event) to |
+support users who have JavaScript available and enabled. |
+Those users will receive the dialog box, other users will only see a |
+popup window with the linked website. |
+ |
+_______________________________________________________________________________ |
+ |
+function popUp(sURL, iWidth, iHeight, sOptions) |
+ |
+Insert the following link to a HTML document. A click on it will run this |
+function to open a browser child window: |
+ |
+<a href="URL" target="_new" |
+ onClick='popUp("URL", aWidth, aHeight[,sOptions])'></a> |
+ |
+Note that the TARGET attribute is only necessary to avoid script errors |
+when the link is placed within a frameset where the <BASE TARGET=...> tag |
+has been used previously. |
+ |
+The iWidth argument will specify the width in pixels, and the iHeight |
+argument will specify the height in pixels of the new window using the |
+features argument string of the JavaScript:window.open() function. |
+ |
+The sOptions argument will modify the default features for the child window. |
+For this argument pass a string that extends the features settings for the |
+JavaScript:window.open() function. You may leave the comma at first position |
+as it is implemented in the JSX:popUp() function. |
+Refer the respective documentation for details of window features. |
+Please do note that if an option is used more than one time, the final result |
+of that option is undefined. Nevertheless, most browsers will then use the |
+last option as argument. |
+ |
+Use the return value of popUp (return(false) will cancel the event) to support |
+users who have JavaScript available and enabled. |
+All users will receive the window, those without JavaScript will have the |
+window size defined not by your definitions but by browser defaults. |
+ |
+_______________________________________________________________________________ |
+ |
+function OpenChildWin(sURL, iWidth, iHeight, sOptions) |
+ |
+OpenChildWin(...) call is redirected to popUp(...) and contained for |
+backward compatibility to previous versions only. |
+It may become obsolete in future versions, use popUp(...) instead. |
+ |
+_______________________________________________________________________________ |
+ |
+function LoadFrame(sURL, targetFrame) |
+ |
+Insert the following script within the <HEAD></HEAD> section of HTML documents: |
+ |
+<script type="text/javascript"><!-- |
+LoadFrame( sURL, targetFrame ); |
+//--></script> |
+ |
+Replace the sURL argument with the URL of the document that should be loaded |
+within the frame specified with targetFrame. Double-quoted string recommended. |
+Replace the targetFrame argument with a valid frame number or identifier. |
+ |
+You can evaluate the functions success by its return value: |
+ |
+RETURN VALUE MEANING |
+false An invalid number of required arguments has been provided |
+(targetFrame) The function failed because the passed frame does not exist |
+(sURL) Success |
+ |
+Please do note that unlike the Go(...) function (for dropdown objects; |
+defined in dropdown.js) no exception is raised if the defined frame does not |
+exist as LoadFrame() is designed to stay silent also in websites without |
+framesets. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="getObjInfo"><span class="rswd">function</span> getObjInfo<span |
+ class="punct">(</span></a><a href="#getObjInfo_sObject"><var>sObject</var></a>[, <a |
+ href="#getObjInfo_aWhat"><var>aWhat</var></a>[, <a |
+ href="#getObjInfo_sStyle"><var>sStyle</var></a>[, <a |
+ href="#getObjInfo_sHeader"><var>sHeader</var></a>[, <a |
+ href="#getObjInfo_sFooter"><var>sFooter</var></a>]]]]<span |
+ class="punct">)</span></code> |
+ |
+Returns names of the attributes of an object and their respective |
+value. Without formatting as HTML table (see below), attribute name |
+and value/source code will be separated by " = ", where " " is the |
+<code class="entity">&nbsp;</code> character (%A0). |
+ |
+Note: |
+If the user agent does not grant permission to retrieve the value of an |
+attribute, it is tried to use the error message that would have occurred |
+as attribute value, enclosed in rectangle brackets ("[" and "]"). |
+Since this behavior can only be achieved using the <a |
+ href="http://web.archive.org/devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/stmt.html#1051663" |
+ target="_blank"><code><span class="rswd">try</span>...<span |
+ class="rswd">catch</span></code> statement</a> of |
+(at least) JavaScript 1.5, the function uses the <code>document.getElementById(...)</code> |
+method that accesses the W3C-DOM and is therefore distinct for JavaScript 1.5, |
+to determine whether this is possible. If the test fails, you may encounter |
+a script error or an "unhandled exception" error when retrieving those |
+attributes, and with some script engines (like of Mozilla before 0.9.x) the |
+whole operation would fail. This would be <strong>NOT</strong> a bug of this function, but |
+a feature of the used script engine. |
+ </pre> |
+<dl> |
+ <dt><var><a name="getObjInfo_sObject">sObject</a></var></dt> |
+ <dd><pre>Required. String that evaluates to a JavaScript object from which |
+to retrieve data. If the string does not evaluate to an object, the |
+function will return "[Not an object]" without header and footer |
+(see below). In this case, no exception is raised. |
+ |
+<a href="#getObjInfo">Argument list</a></pre></dd> |
+ <dt><var><a name="getObjInfo_aWhat">aWhat</a></var></dt> |
+ <dd><pre>Optional. Either a <a href="#regexp">RegExp</a> that the names of attributes to retrieve |
+should match or a case-insensitive string consisting of one or more |
+of the following characters, specifying the type of attributes to |
+retrieve:</pre> |
+ <dl> |
+ <dt><code>"P"</code></dt> |
+ <dd><pre>Properties. Values of string properties will be retrieved |
+as double-quoted strings, other properties as they are. |
+If an object does not have any properties, the function |
+returns a <a href="#def">null string</a>. |
+This option overwrites the "O" option described below.</pre></dd> |
+ <dt><code>"M"</code></dt> |
+ <dd><pre>Methods. If possible, this also returns the source |
+code of methods. If an object does not have methods, |
+the function returns a <a href="#def">null string</a>.</pre></dd> |
+ <dt><code>"O"</code></dt> |
+ <dd><pre>Objects. Returns properties that are composed objects. |
+If an object does not have object properties, the function |
+returns a <a href="#def">null string</a>.</pre></dd> |
+ </dl> |
+ <pre>Other characters will be accepted, but ignored. If <var>aWhat</var> is a <a |
+ href="#def">null string</a> |
+or contains only characters not defined herein, the function will return |
+all attributes of <var><a href="#getObjInfo_sObject">sObject</a></var>. |
+ |
+<a href="#getObjInfo">Argument list</a></pre></dd> |
+ <dt><var><a name="getObjInfo_sStyle">sStyle</a></var></dt> |
+ <dd><pre>Optional. Case-insensitive string consisting of one or more of |
+the following characters, specifying how the returned string |
+will be formatted:</pre> |
+ <dl> |
+ <dt><code>"L"</code></dt> |
+ <dd><pre>Line. Separate attribute/value pairs by "; ". |
+Useful if an object has many attributes, thus the bottom |
+of a message box displaying the returned string with line- |
+breaks (see example below) would probably extend <code><span |
+ class="ident">alert</span><span class="punct">(</span>...<span |
+ class="punct">)</span></code> |
+window and/or screen height.</pre></dd> |
+ <dt><code>"H"</code></dt> |
+ <dd><pre>HTML. Separate attribute/value pairs by <span |
+ class="tags"><br /></span>. |
+Useful if the result of the function should be |
+used for display in HTML documents.</pre></dd> |
+ <dt><code>"T"</code></dt> |
+ <dd><pre>Table. Format the result as a HTML table, with |
+the attribute's name in the first column and the |
+attribute's value in the other one. Very useful |
+in HTML documents.</pre></dd> |
+ <dt><code>"S"</code></dt> |
+ <dd><pre>Show type of attribute. In HTML table formatting, |
+a column is inserted between the attribute name |
+column and the attribute value column to display |
+the desired information. Otherwise, the attribute |
+value is followed by <code>" : "</code> followed by its type, |
+where " " is the <code class="entity">&nbsp;</code> character.</pre></dd> |
+ </dl> |
+ <pre>With <code>"H"</code> or <code>"T"</code> provided, HTML formatting is enabled, thus that |
+the attribute name is enclosed in <span class="tags"><code><b></span>...<span |
+ class="tags"></b></code></span>, which |
+displays it with a fixed pitch font and bold style on most browsers. |
+ |
+Other values will separate properties/methods by LF. |
+ |
+<a href="#getObjInfo">Argument list</a></pre></dd> |
+ <dt><var><a name="getObjInfo_sHeader">sHeader</a></var></dt> |
+ <dd><pre>Optional. String containing an additional header for the string to |
+return, appended at the beginning. It is followed by 2 LF characters |
+if not formatted for HTML output. |
+If not provided, <code class="rswd">null</code> or a <a href="#def">null string</a>, the default header is used |
+that is defined as "<span class="punct">(</span>Attributes | <span |
+ class="punct2">(</span>(Properties | Composed Objects) |
+([and] Methods)<span class="punct2">)</span><span class="punct">)</span> of {<var><a |
+ href="#getObjInfo_sObject">sObject</a></var>}", depending on the value of <var><a |
+ href="#getObjInfo_aWhat">aWhat</a></var>. |
+If "-" is provided, no header will be generated. |
+ |
+<a href="#getObjInfo">Argument list</a></pre></dd> |
+ <dt><var><a name="getObjInfo_sFooter">sFooter</a></var></dt> |
+ <dd><pre>Optional. String containing an additional footer for the |
+string to return, appended at the end. It is preceded by |
+2 LF characters if not formatted for HTML output. |
+If not provided, <code class="rswd">null</code> or a <a href="#def">null string</a>, the default footer |
+is used that is defined as the function's Copyright string, |
+including hyperlinks to the function's documentation |
+(with HTML formatting only). If "-" is provided, no footer |
+will be generated. |
+ |
+<a href="#getObjInfo">Argument list</a></pre></dd> |
+</dl> |
+<pre> |
+Example: |
+ |
+Include the following script section in the <span class="tags"><head></span>...<span |
+ class="tags"></head></span> section of an |
+HTML document: |
+ |
+ <span class="scr"><script type="text/javascript"></span> |
+ <span class="comm"><!--</span> |
+ <span class="rswd">alert</span><span class="punct">(</span>getObjInfo<span |
+ class="punct">(</span><span class="str">"sObject"</span><span |
+ class="punct">,</span> cWhat<span class="punct">,</span> sStyle<span |
+ class="punct">,</span> sHeader<span class="punct">,</span> sFooter<span |
+ class="punct">));</span> |
+ <span class="comm">//--></span> |
+ <span class="scr"></script></span> |
+ |
+Now replace <var>sObject</var> with a string that evaluates to a JavaScript object from |
+which to retrieve data. Replace <var>cWhat</var>, <var>sStyle</var>, <var>sHeader</var>, <var>sFooter</var> with |
+appropriate strings as described above or leave the last argument(s) out |
+(optional arguments). When you load the HTML document you will see |
+a message box displaying the attributes of the object you requested and |
+their respective value. |
+ |
+_______________________________________________________________________________ |
+ |
+function ObjectInspector(sObject) |
+ |
+Creates a JavaScript-written popup containing a form that allows retrieval |
+of the attributes of an object and their value. |
+ |
+ARGUMENT MEANING |
+sObject Optional. Should define the root object from which to process |
+ attributes. Currently unused. |
+ The default root object is "window". |
+ |
+Example: |
+ |
+Include the following script section at the bottom of the <BODY>...</BODY> |
+section of the HTML document to be analyzed. |
+ |
+<script src="enhanced.js" type="text/javascript"></script> |
+<script type="text/javascript" |
+ ><!-- |
+ ObjectInspector(); |
+ //--> |
+</script> |
+ |
+Note: |
+ |
+The sInspectorVersion public variable defined in enhanced.js provides |
+a string containing the current ObjectInspector() version. |
+ </pre> |
+<hr> |
+<p>END OF FILE</p> |
+</body> |
+</html> |
Index: live/doc/historic/search.htm |
=================================================================== |
--- live/doc/historic/search.htm (nonexistent) |
+++ live/doc/historic/search.htm (revision 520) |
@@ -0,0 +1,436 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
+ "http://www.w3.org/TR/html4/loose.dtd"> |
+<html lang="en"> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+<title>PointedEars' JavaScript Extensions (JSX): search.js</title> |
+<style type="text/css"> |
+code { |
+ font-family: "Courier New", Courier, monospace; |
+} |
+ |
+.entity { |
+ color: #000000; |
+ font-weight: bold; |
+ font-style: italic; |
+ font-family: "Courier New", Courier, monospace; |
+} |
+ |
+.tags { |
+ color: #000080; |
+} |
+ |
+.scr { |
+ color: #800000; |
+} |
+ |
+.a { |
+ color: #008000; |
+} |
+ |
+.comm { |
+ color: #808080; |
+ font-style: italic; |
+ font-family: "Courier New", Courier, monospace; |
+} |
+ |
+.ident { |
+ color: #000000; |
+ font-weight: bold; |
+ font-family: "Courier New", Courier, monospace; |
+} |
+ |
+.rswd { |
+ color: #000080; |
+ font-weight: bold; |
+ font-family: "Courier New", Courier, monospace; |
+} |
+ |
+.arg,.str { |
+ font-style: italic; |
+ font-family: "Courier New", Courier, monospace; |
+} |
+ |
+.num { |
+ color: #ff00ff; |
+} |
+ |
+.punct { |
+ color: #0000ff; |
+ font-family: "Courier New", Courier, monospace; |
+} |
+ |
+dl { |
+ margin-top: 0px; |
+} |
+ |
+dt { |
+ margin-top: 1em; |
+} |
+</style> |
+</head> |
+ |
+<body> |
+<h1><a name="top">PointedEars' JavaScript Extensions (JSX)</a></h1> |
+<h2>search.js</h2> |
+<pre> |
+ |
+ORIGINAL FILENAME: <a href="search.js">search.js</a> |
+PURPOSE: <a href="#def" title="Show definition">Search-string</a> support |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.1 |
+FILE VERSION: 1.06.2003.11 |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+DEPENDS ON: <a href="string.htm" |
+ title="View documentation of JSX:string.js">JSX:string.js</a> |
+ </pre> |
+<h3>Contents</h3> |
+<ul> |
+ <li><a href="#features">Features provided by this script</a></li> |
+ <li><a href="#testlist">List of browser tests</a></li> |
+ <li><a href="#history">Version history</a></li> |
+ <li><a href="#copyright">Copyright & disclaimer</a></li> |
+ <li><a href="#def">Expressions used herein</a></li> |
+ <li><a href="#details">Detailed description of features</a></li> |
+ <li><a href="#faq">FAQ -- Frequently Asked Questions</a></li> |
+</ul> |
+<p align="center" style="font-size: small;">Created with<br> |
+<a href="http://quanta.sourceforge.net/" target="_top"><img |
+ src="../media/quanta.png" alt="Quanta Plus" width="32" height="32" |
+ border="0"></a> <a |
+ href="http://www.macromedia.com/software/homesite/" target="_top"><img |
+ src="../media/homesite3.gif" alt=" | Macromedia HomeSite | " |
+ width="44" height="34" border="0"></a> <a |
+ href="http://www.macromedia.com/software/dreamweaver/" target="_top"><img |
+ src="../media/dreamweaver2.gif" alt="Macromedia Dreamweaver MX" |
+ width="44" height="34" border="0"></a></p> |
+<p align="center" style="font-size: small;"><a |
+ href="http://validator.w3.org/check/referer" target="_top"><img |
+ src="../media/valid-html401.png" alt="This is valid HTML 4.01, " |
+ width="88" height="31" border="0"></a> <a |
+ href="http://jigsaw.w3.org/css-validator/check/referer" target="_top"><img |
+ src="../media/valid-css.png" alt="valid CSS " |
+ style="border: 0; width: 88px; height: 31px"></a> <a |
+ href="http://www.anybrowser.org/campaign/" target="_top"><img |
+ src="../media/anybrowser.gif" |
+ alt="and therefore optimized for ALL browsers!" width="88" height="31" |
+ border="0"></a></p> |
+<hr> |
+<h4><a name="features">Features Provided By This Script</a></h4> |
+<ul> |
+ <li><pre><a href="#SearchString"><code>SearchString</code></a> prototype</pre></li> |
+ <li><pre><a href="#globvar"><code>searchStringVersion</code></a> global variable</pre></li> |
+</ul> |
+<pre> </pre> |
+<h4><a name="testlist">Tested To Work At Least With</a></h4> |
+<pre><!-- <script type="text/javascript"> |
+ document.write(navigator.userAgent); |
+</script> |
+ --> |
+ Mozilla 1.6a Nightly |
+ [Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.6a) |
+ Gecko/20031025] |
+ Mozilla 1.5b Nightly |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5b) |
+ Gecko/20030811] |
+ Mozilla 0.9.8 de-AT |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.8) |
+ Gecko/20020204] |
+ Microsoft Internet Explorer 6.0 build 2600 |
+ [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 3.0)] |
+ |
+<a href="#top">Goto top</a> |
+ |
+</pre> |
+<h4><a name="history">Version History</a></h4> |
+ |
+<pre> |
+1.06.2003.11 (2003-11-19) |
+------------------------- |
+* Allows for storing more than one value for a name |
+* Changed from array-based search to property lookup; |
+ removed <code>Value</code> prototype |
+* Use decodeURIComponent(...) if available, unescape |
+ or a dummy function |
+* Updated documentation: |
+ - Completed <a href="JSDoc/">JavaScriptDoc</a>™. |
+ - Use asterisks at the beginning of multi-line comments. |
+ - Changed order of HTML documentation sections, updated |
+ headings. |
+ |
+1.05.2003.11 (2003-11-18) |
+------------------------- |
+* Updated documentation: |
+ - Use <a href="JSDoc/">JavaScriptDoc</a>™ for newly edited code. |
+* [to do] |
+ |
+1.04.2003.10 (2003-10-??) |
+------------------------- |
+* Renamed <code>TSearchStr</code> to <code>SearchString</code> |
+* Updated references to deprecated <tt>enhanced.js</tt> in the |
+ documentation |
+* [to do] |
+ |
+1.03.200?.? (?) |
+------------------------- |
+[to do] |
+ |
+1.02.200?.? (?) |
+------------------------- |
+[to do] |
+ |
+1.01.200?.? (?) |
+------------------------- |
+[to do] |
+ |
+1.00.2000.8 (2000-08-13) |
+------------------------- |
+Introduced <code>TSearchStr</code> prototype |
+ |
+<a href="#top">Goto top</a> |
+ |
+</pre> |
+<h4><a name="copyright">Copyright & Disclaimer</a></h4> |
+ |
+<pre>COPYRIGHT (c) 2000-2002 Thomas Lahn (PES). |
+<a href="mailto:search.js@PointedEars.de">mailto:search.js@PointedEars.de</a> |
+ |
+ |
+This program is free software; you can redistribute it and/or |
+modify it under the terms of the GNU General Public License |
+as published by the Free Software Foundation; either version 2 |
+of the License, or (at your option) any later version. |
+ |
+This program is distributed in the hope that it will be useful, |
+but WITHOUT ANY WARRANTY; without even the implied warranty of |
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+GNU General Public License (GPL) for more details. |
+ |
+You should have received a copy of the GNU GPL along with this |
+program (COPYING file); if not, go to [1] or write to the Free |
+Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
+MA 02111-1307, USA. |
+ |
+[1] <<a href="http://www.gnu.org/licenses/licenses.html#GPL">http://www.gnu.org/licenses/licenses.html#GPL</a>> |
+ |
+<a href="#top">Goto top</a> |
+ |
+ </pre> |
+<h4><a name="def">Expressions Used Herein</a></h4> |
+<dl> |
+ <dt>search-string</dt> |
+ <dd><pre>The part of a URI following the question mark ("?") character. |
+This string may contain a number of pairs of required names and |
+associated values. A value may be the <a href="#def">empty string</a>. |
+A name and its associated value are to be separated from each |
+other by an equals ("="), each name/value pair is to be separated |
+from the other by an ampersand ("&"): |
+ |
+ name1=value1&name2=&name3&name4=value4...</pre></dd> |
+ <dt>empty string</dt> |
+ <dd><pre>A string that contains no characters, i.e. is of length 0.</pre></dd> |
+</dl> |
+<pre> |
+ |
+<a name="details">Following the detailed description of the features of this script file.</a> |
+_______________________________________________________________________________ |
+ |
+<a name="SearchString"><code>SearchString</code> prototype</a> |
+--------------------- |
+ |
+The <code>SearchString</code> prototype encapsulates associated names and |
+values of a <a href="#def" title="Show definition">search-string</a>. |
+ |
+<code>SearchString<span class="punct">(</span>[<span class="arg">s</span>]<span |
+ class="punct">)</span></code> |
+ |
+Constructor arguments: |
+ |
+<code><span class="arg">s</span></code> Original <a href="#def" |
+ title="Show definition">search-string</a>. Optional. If not provided or not |
+ a string, `location.search' is assumed. The object will |
+ then have no properties if access to `location.search' |
+ fails. |
+ |
+Non-Function Properties: |
+ |
+<code>text</code> The full <a href="#def" title="Show definition">search-string</a> without the leading "?" and |
+ "%26" entities converted to "&". |
+<code>length</code> Length of <code>text</code>. |
+<code>values</code> Object that stores the values defined in the |
+ <a href="#def" title="Show definition">search-string</a>. |
+ Each name is a property of that object, the value of the |
+ property is the value assigned to the name. If more than |
+ one value has been assigned to a name, the property is an |
+ array where each element is an assigned value. |
+ |
+Function Properties (Methods): |
+ |
+<code><a href="#isName">isName</a></code> Returns <code class="rswd">true</code> if a name is contained in the search-string. |
+<code><a href="#hasValue">hasValue</a></code> Returns <code |
+ class="rswd">true</code> if a name is contained in the search-string |
+ and has a value different from the <a href="#def" |
+ title="Show definition">empty string</a>. |
+<code><a href="#getValue">getValue</a></code> Returns the value of a name as a string. If the name is |
+ not contained in the search-string, an <a href="#def" |
+ title="Show definition">empty string</a> is |
+ returned. |
+ |
+Usage: |
+ |
+Provide a string with a structure described above as constructor |
+argument of the prototype. This will convert the string to an |
+array with names and values as the properties of each item of this |
+array where undefined values are assigned as <a href="#def">empty strings</a>: |
+ |
+ <code><span class="rswd">var</span> s <span class="punct">=</span> <span |
+ class="rswd">new</span> SearchString<span class="punct">(</span>location<span |
+ class="punct">.</span>search<span class="punct">)</span>;</code> |
+ |
+Then you can use the object's methods to access its properties |
+easily: |
+ |
+<a name="isName">Use the <code>isName<span class="punct">(</span>...<span |
+ class="punct">)</span></code> method to determine whether a name has been |
+provided with the string or not:</a> |
+ |
+ <code><span class="rswd">if</span> <span class="punct">(!</span> s<span |
+ class="punct">.</span>isName<span class="punct">(</span><span |
+ class="str">"url"</span><span class="punct">))</span> |
+ <span class="ident">alert</span><span class="punct">(</span><span |
+ class="str">"Required name 'url' missing!"</span><span |
+ class="punct">)</span>;</code> |
+ |
+<a name="hasValue">Use the <code>hasValue<span class="punct">(</span>...<span |
+ class="punct">)</span></code> method to determine whether a name has a |
+value different from the </a><a href="#def">empty string</a>: |
+ |
+ <code><span class="rswd">if</span> <span class="punct">(</span>s<span |
+ class="punct">.</span>hasValue<span class="punct">(</span><span |
+ class="str">"test"</span><span class="punct">))</span> |
+ document<span class="punct">.</span><span class="ident">write</span><span |
+ class="punct">(</span><span class="str">"This is only a test"</span><span |
+ class="punct">)</span>;</code> |
+ |
+<a name="getValue">Use the <code>getValue<span class="punct">(</span>...<span |
+ class="punct">)</span></code> method to retrieve the value of a provided |
+name:</a> |
+ |
+ <code><span class="rswd">if</span> <span class="punct">(</span>s<span |
+ class="punct">.</span><a href="#hasValue">hasValue</a><span |
+ class="punct">(</span><span class="str">"url"</span><span |
+ class="punct">))</span> |
+ frames<span class="punct">[</span><span class="num">0</span><span |
+ class="punct">].</span>location<span class="punct">.</span>href <span |
+ class="punct">=</span> s<span class="punct">.</span>getValue<span |
+ class="punct">(</span><span class="str">"url"</span><span |
+ class="punct">)</span>;</code> |
+ |
+With these methods, names are accessed case-insensitive by |
+default. If you need case-sensitivity, add <code class="rswd">true</code> as second |
+argument to the method calls: |
+ |
+ <code><span class="rswd">if</span> <span class="punct">(</span>s<span |
+ class="punct">.</span><a href="#hasValue">hasValue</a><span |
+ class="punct">(</span><span class="str">"URL"</span>, <span |
+ class="rswd">true</span><span class="punct">))</span> |
+ frames<span class="punct">[</span><span class="num">0</span><span |
+ class="punct">].</span>location<span class="punct">.</span>href <span |
+ class="punct">=</span> s<span class="punct">.</span><a |
+ href="#getValue">getValue</a><span class="punct">(</span><span |
+ class="str">"URL"</span><span class="punct">,</span> <span |
+ class="rswd">true</span><span class="punct">)</span>;</code> |
+ |
+<a href="#features">Goto list of features</a> |
+<a href="#top">Goto top</a> |
+ |
+ |
+<a name="globvar"><code>searchStringVersion</code> global variable</a> |
+---------------------------------- |
+ |
+The initial value of the <code>searchStringVersion</code> variable shows the |
+version of the library containing the <code><a |
+ href="#SearchString">SearchString</a></code> prototype you |
+are using. This can be displayed, e.g. if you use the |
+<code>window<span class="punct">.</span><span class="ident">alert</span><span |
+ class="punct">(</span>...<span class="punct">)</span></code> method with that variable as argument. |
+ |
+<a href="#features">Goto list of features</a> |
+<a href="#top">Goto top</a> |
+ |
+ |
+<a name="how-to">HOW TO USE:</a> |
+ |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as search.js and |
+appending the following sections within the <code><span |
+ class="tags"><head>...</head></span></code> tags |
+of that documents: |
+ |
+<code><span class="scr"><script src="string.js" type="text/javascript"></script></span> |
+<span class="scr"><script src="search.js" type="text/javascript"></script></span></code> |
+ |
+<a href="#top">Goto top</a> |
+ |
+</pre> |
+<h4><a name="faq">FAQ (Frequently Asked Questions)</a></h4> |
+<ul> |
+ <li><pre><a href="#faq-error">Strange error messages with Internet Explorer and Netscape</a></pre></li> |
+</ul> |
+<pre> |
+<a href="#top">Goto top</a> |
+ |
+</pre> |
+<h5><a name="faq-error">Strange error messages with Internet |
+Explorer and Netscape</a></h5> |
+<pre> |
+Q: When I include the search.js library into my HTML/script, in |
+ Netscape/Mozilla I get an <cite>"Alert"</cite> message saying a necessary |
+ <cite>"file" [filename] "cannot be found"</cite>. [filename] has the form |
+ of [pathname] "/%3Cnoscript%3E%3CFRAMESET%20rows=". But I |
+ have not specified such a filename in my documents/scripts! |
+ |
+ Instead, Internet Explorer shows either no alert message or |
+ this one: |
+ |
+ ,-----------------------------------------------------. |
+ | Line: [number] | |
+ | Column: [number] | |
+ | Error: Object expected | |
+ | Code: 0 | |
+ | URL: [fully qualified path of the HTML document] | |
+ `-----------------------------------------------------' |
+ |
+ Then, when I click the <cite>"OK"</cite> button of this alert message it |
+ shows <cite>"Error 404: File not found"</cite> (or anything similar) in the |
+ browser window, with the address bar containing a URL that has |
+ the form of [pathname] "/<noscript><FRAMESET%20rows=". |
+ |
+ What have I done wrong? |
+ |
+A: This occurs if the <a href="string.htm" |
+ title="View documentation of JSX:string.js">JSX:string.js</a> script has <strong>not</strong> been included |
+ <strong>before</strong> including the search.js library and you try to use |
+ <code>SearchString</code> for a dynamic frameset. |
+ |
+ <code>search.js</code> now requires <a href="string.htm" |
+ title="View documentation of JSX:string.js">JSX:string.js</a> because the latter contains |
+ the <code><a href="string.htm#replaceText" |
+ title="View documentation of JSX:string.js:replaceText(...)">replaceText</a><span |
+ class="punct">(</span>...<span class="punct">)</span></code> function that is called by the constructor |
+ of <code>SearchString</code> to replace HTML entities like <span |
+ class="entity">&nbsp;</span> with the |
+ respective ASCII characters (here: <code>unescape<span |
+ class="punct">(</span><span class="str">"%A0"</span><span |
+ class="punct">)</span></code>; you'll see |
+ that in the Netscape/Mozilla JavaScript Console under the "Task" |
+ menu, "Tools" submenu.) |
+ Include <a href="string.htm" |
+ title="View documentation of JSX:string.js">JSX:string.js</a> in the correct order <a |
+ href="#how-to">as described above</a> and |
+ the problem should not occur again. |
+ This is a known issue and I am working on a cross-platform bugfix. |
+ |
+<a href="#top">Goto top</a> |
+ </pre> |
+</body> |
+</html> |
Index: live/doc/historic/multimedia.html |
=================================================================== |
--- live/doc/historic/multimedia.html (nonexistent) |
+++ live/doc/historic/multimedia.html (revision 520) |
@@ -0,0 +1,339 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="en"> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+<title>PointedEars' JavaScript Extensions (JSX): enhancd2.js</title> |
+<link rel="stylesheet" type="text/css" href="style.css"> |
+</head> |
+ |
+<body> |
+<h1>PointedEars' JavaScript Extensions (JSX)</h1> |
+<h2>enhancd2.js</h2> |
+<pre> |
+ |
+ORIGINAL FILENAME: enhancd2.js |
+PURPOSE: Provides level-2 enhanced web site features |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.18.2002.2; |
+ See enhanced2Version variable intialization in |
+ script file. |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+DEPENDS ON: <a href="enhanced.htm" |
+ title="View documentation of JSX:enhanced.js">JSX:enhanced.js</a>, v1.08.2000.3 or later |
+ |
+<h3>Contents</h3> |
+<ul> |
+ <li><a href="#features">Features provided by this script</a></li> |
+ <li><a href="#testlist">List of browser tests</a></li> |
+ <li><a href="#history">Version history</a></li> |
+ <li><a href="#copyright">Copyright & disclaimer</a></li> |
+ <li><a href="#details">Detailed description of features</a></li> |
+</ul> |
+ |
+ |
+<a name="features">FEATURES PROVIDED BY THIS SCRIPT:</a> |
+ |
+linkOutWin Questions the user before following an online link and |
+ if confirmed, displays the result in a new window. |
+ Calls and returns enhanced.js:linkOut(...). |
+enlargeImg Opens a dependent browser child window with an |
+ enlarged image. (Previously addressed by Enlarge(...) |
+ function, see version history info above.) |
+maximize Maximizes the width and height of the browser window. |
+playSound Plays a sound file (experimental) |
+ |
+ |
+<a name="testlist">TESTED TO WORK AT LEAST WITH:</a> |
+ |
+ Mozilla 1.0 Release Candidate 2 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc2) |
+ Gecko/20020510] |
+ Mozilla 1.0 Release Candidate 1 nightly |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc1) |
+ Gecko/20020417] |
+ Mozilla 0.9.9 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.9) |
+ Gecko/20020311] |
+ Mozilla 0.9.8 de-AT |
+ "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.8) |
+ Gecko/20020204" |
+ Mozilla 0.9.6 de-AT |
+ "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.6) |
+ Gecko/20011120" |
+ Netscape 6.2.1 |
+ "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.4) |
+ Gecko/20011128 Netscape6/6.2.1" |
+ Opera 6.0 [de] |
+ "Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0 [de]" |
+ Microsoft Internet Explorer 6.00.2600.0000 (SP-2) |
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; |
+ Hotbar 3.0)" |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ Microsoft Internet Explorer 5.01, displayed 5.00.2919.6307IC |
+ Microsoft Internet Explorer 5.00, displayed 5.00.2314.1003IC |
+ Netscape Navigator 4.74 |
+ |
+ |
+<a name="history">VERSION HISTORY:</a> |
+ |
+1.20.2002.4 (2002-04-22) |
+------------------------- |
+First version under the terms of the GNU GPL, version 2 or later. |
+ |
+1.18.2002.2 (2002-02-28) |
+------------------------- |
+- Updated hoverImg(...) function: |
+ Now supports W3C-DOM of both NN 6+/Mozilla 0.9+ and IE 6+. |
+ |
+1.17.2002.2 (2002-02-23) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Fixed bad bug with Mozilla/Netscape. Version of Mozilla newer than |
+ 0.9.6. and of Netscape newer than 6.1 do assign "about:blank" to a |
+ temporary document which causes relative paths used for its resources |
+ to be invalid. Further use of relative paths is provided by an |
+ algorithm, used in JSX:<a href="outline.txt">outline.js</a> before and now improved, that calculates |
+ the correct absolute path when provided the caller document's URL. |
+ |
+1.16.2002.2 (2002-02-05) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Changed back to wImage.document because Opera's document.open(...) |
+ function does not return the created object --> dImage is useless :( |
+- Documentation update: Changed to HTML format |
+ |
+1.15.2002.1 (2002-01-26) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Now uses previously defined dImage variable instead of wImage.document |
+ |
+1.14.2002.1 (2002-01-18) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Masked / in written closing tags with \/ (backslash-slash) as |
+ described in <a href="http://selfhtml.teamone.de/" target="_blank">SELFHTML 8.0</a> |
+- Documentation update: |
+ Word wrap at 72 characters (applies to documentation standards), |
+ and version history is no longer in columns but separate paragraphs. |
+ |
+1.13.2001.9 (2001-09-11) |
+------------------------- |
+Removed maximize() function: |
+When used with virtual desktops larger than the physical resolution |
+(screen), setting the window size to screen.width and screen.height |
+causes the window to occupy the desktop but exceed the screen size, |
+thus the browser window blocks the other desktop content. |
+With this course of action it is intended not to support designers |
+causing this undesired behavior on the computers of certain users. |
+ |
+1.12.2001.4 (2001-04-03) |
+------------------------ |
+Updated enlargeImg(...) function: |
+Now checks if created window object exists and focuses it after creating |
+its document (always focuses the popup, even if already open). |
+ |
+1.11.2001.2 (2001-02-05) |
+------------------------- |
+Updated enlargeImg(...) function: |
+Now allows to close zoom window when clicking on enlarged image and |
+displays tooltip on mouse over. |
+ |
+1.10.2001.1 (2001-01-11) |
+------------------------- |
+Moved general documentation to text file for faster processing. |
+ |
+1.09.2000.11 (2000-11-24) |
+-------------------------- |
+- Improved linkOutWin(...) function: |
+ Now returns value of linkOut(...) (always false) for combined use |
+ in both HREF attribute and onClick event handler of <span class="a"><a></span>...<span |
+ class="a"></a></span> tag. |
+- Established string variable named enhanced2Version to contain |
+ library version. |
+ |
+1.08.2000.10 (2000-10-30) |
+-------------------------- |
+Improved maximize() function due to Netscape missing screen.left |
+ |
+1.07.2000.10 (2000-10-17) |
+-------------------------- |
+- Improved Enlarge(...) function: |
+ - Fixed BUG_Enlarge:ALWAYS_FIT-TO-IMAGE (see code). |
+ - Changed window name for temporary HTML document to "wndZoom". |
+ - Renamed to "enlargeImg". Compatibility by internal redirection. |
+- Bugfixed exception calls. |
+- Improved inline documentation. |
+ |
+1.06.2000.9 (2000-09-25) |
+------------------------- |
+Improved Enlarge(...) function: |
+- iWidth and iHeight arguments are not longer mandatory |
+ (moved to third and fourth argument) due to use of temporary |
+ HTML document that displays the image and uses inline JavaScript code |
+ to resize the window to fit image automatically |
+ (standalone version; does neither utilize JSX:enhanced.js:popUp(...) |
+ nor elements from document.js). |
+- Additionally established window caption for second argument; |
+ optional, uses image URL if not provided. |
+ |
+1.05.2000.8 (2000-08-13) |
+------------------------- |
+Tested script file successfully with IE5.5 |
+ |
+1.04.2000.7 (2000-06-10) |
+------------------------- |
+- Changed function names beginning with lowercase character. |
+- Added playSound(...) function. |
+ |
+1.03.2000.6 (2000-06-10) |
+------------------------- |
+- Changed OpenChildWin(...) call to popUp(...) and moved to enhanced.js |
+- Improved Enlarge(...) function to display dependent browser |
+ child window (with Netscape and compatibles only). |
+- Improved documentation texts. |
+ |
+1.02.2000.4 (2000-04-06) |
+------------------------- |
+Added Maximize(...) function. |
+ |
+1.01.2000.3 (2000-03-24) |
+------------------------- |
+Added Enlarge(...) function. |
+ |
+1.00.2000.3 (2000-03-23) |
+------------------------- |
+Added linkOutWin(...) function. |
+ |
+ |
+<a name="copyright">Copyright (c) 1999-2002 Thomas Lahn</a> <<a |
+ href="mailto:webmaster@PointedEars.de?subject=Feedback/JSX/enhancd2">webmaster@PointedEars.de</a>> |
+ |
+This program is free software; you can redistribute it and/or |
+modify it under the terms of the <a |
+ href="http://www.gnu.org/copyleft/gpl.html" target="_blank">GNU General Public License</a> |
+as published by the <a href="http://www.fsf.org/" target="_blank">Free Software Foundation</a>; either version 2 |
+of the License, or (at your option) any later version. |
+ |
+This program is distributed in the hope that it will be useful, |
+but WITHOUT ANY WARRANTY; without even the implied warranty of |
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+GNU General Public License for more details. |
+ |
+You should have received a copy of the GNU General Public License |
+along with this program (<a href="COPYING" target="_blank">COPYING</a> file); if not, write to the |
+Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
+Boston, MA 02111-1307, USA. |
+ |
+ |
+HOW TO USE: |
+Note that this script depends on elements defined in JSX:enhanced.js |
+For dependent scripts, the referred script file (enhanced.js) needs to |
+be loaded previously and should be loaded only one time per document. |
+To avoid providing the required elements in enhanced.js via copy&paste, |
+I recommend to utilize the functions of this script in (different) |
+HTML documents when saving the entire file as enhancd2.js and appending |
+the following sections within the <head></head> tags of these documents: |
+ |
+<span class="scr"><script src="enhanced.js" type="text/javascript"></script> |
+<script src="enhancd2.js" type="text/javascript"></script></span> |
+ |
+If dependencies cannot be resolved, you will always get a |
+JavaScript error even if there are no bugs herein. |
+ |
+ |
+<a name="details">Following the detailed description of the features of this script.</a> |
+_______________________________________________________________________________ |
+ |
+function enlargeImg(sImageURL, sCaption, iWidth, iHeight, bCenter) |
+ |
+The function defined below will open an independent browser child window |
+(here: popup) calling the window.open(...) and document.open(...) |
+functions to display the enlarged image of a thumbnail the user has |
+clicked. |
+Arguments: Pass the URL of the enlarged image, optionally the caption |
+of the popup (if you leave it the URL is used as caption). |
+Pass also width and/or height as arguments to override |
+fit-window-to-image feature which results in the following behavior |
+(disable automatic line-wrap and use fixed font for proper display): |
+ |
+sImageURL sCaption iWidth iHeight |
+------------------------------------------------------------------------ |
+ - ( ) ( ) ( ) |
+enhanced.js:EInvalidArgNum exception is raised |
+ |
+ + ( ) ( ) ( ) |
+Use sImageURL as caption, fit-window-to-image horizontally & vertically |
+ |
+ + x ( ) ( ) |
+Use sCaption as caption, fit-window-to-image horizontally & vertically |
+ |
+ + x x (0) |
+Window width is defined by iWidth, fit-window-to-image vertically |
+ |
+ + x 0 (x) |
+Window height is defined by iHeight, fit-window-to-image horizontally |
+ |
+ + x x x |
+Window size is defined by iWidth and iHeight |
+ |
+Legend: |
+ - Required argument not passed; |
+ + Required argument passed; |
+ x Mandatory optional argument passed except zero; |
+ 0 Zero ("0") passed for mandatory optional argument; |
+ ( ) Optional argument not passed; |
+ (0) Optional argument not passed, or zero passed; |
+ (x) Optional argument not passed, or passed but not zero; |
+ |
+The fifth argument, bCenter, is a Boolean expression that is true by |
+default. |
+You may pass an expression that returns false if you define the size of |
+the popup by yourself. If bCenter==false, the popup will not be |
+positioned in the center of the screen automatically but its left top |
+corner is defined by the browser defaults (usually cascaded with other |
+windows.) |
+Pass iWidth=0 and/or iHeight=0, and bCenter=false if you wish the popup |
+to be automatically resized horizontally and/or vertically, but not |
+to be centered. |
+ |
+NOTE: |
+This feature had been previously addressed by the Enlarge(...) function |
+with less arguments and therefore less possibilities to influence the |
+display behavior (see below). |
+Calls to Enlarge(...) are possible furthermore as they redirect |
+internally to enlargeImg(...), incl. exceptions. Nevertheless, calling |
+Enlarge(...) disables you to define whether the popup should be centered |
+as the old function definition is not being updated. |
+New scripts should call enlargeImg(...) anyway instead because |
+Enlarge(...) may become obsolete in future versions. |
+ |
+________________________________________________________________________ |
+ |
+function Enlarge(sImageURL, sCaption, iWidth, iHeight) |
+ |
+Enlarge(...) call redirects to enlargeImg(...) for compatibility with |
+previous versions. |
+ |
+________________________________________________________________________ |
+ |
+function maximize() |
+ |
+Maximizes the browser window. |
+ |
+________________________________________________________________________ |
+ |
+function playSound( sSoundFile, Loop, sAttrib ) { |
+ |
+Plays a sound file as background sound if the insertAdjacentHTML method |
+is supported (currently on JScript browsers like IE5+ only, hence tests |
+document.all object before). |
+ |
+Note: If you specify the SRC or LOOP attributes in sAttrib, then |
+sSoundFile and Loop will overwrite the respective values. |
+________________________________________________________________________ |
+END OF FILE |
+ |
+ </pre> |
+</body> |
+</html> |
\ No newline at end of file |
Index: live/doc/historic/outline.txt |
=================================================================== |
--- live/doc/historic/outline.txt (nonexistent) |
+++ live/doc/historic/outline.txt (revision 520) |
@@ -0,0 +1,144 @@ |
+ORIGINAL FILENAME: outline.js |
+PURPOSE: Support for outline-styled structure using |
+ Dynamic HTML statements |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.1, JScript |
+REQUIRED HTML VERSION: 4.0 |
+FILE VERSION: 1.15.2001.4 |
+ |
+TESTED WITH (navigator.userAgent): |
+ |
+ Mozilla/5.0 (X11; U; Linux 2.2.16 i586; de-DE; m18) |
+ Gecko/20010131 Netscape6/6.01 |
+ (with this browser, outline features are not available |
+ [missing document.all object], but file won't produce |
+ serious script errors) |
+ Microsoft Internet Explorer 5.50.4134.0600IC |
+ Microsoft Internet Explorer 5.01 ("5.00.2919.6307IC") |
+ Microsoft Internet Explorer 5.00.2314.1003IC |
+ |
+ |
+TERMS OF USE: |
+ |
+ JSX:outline.js - Support for outline-styled structure using DHTML statements |
+ Copyright (C) 1999-2001 Thomas Lahn |
+ mailto:webmaster@PointedEars.de?subject=Feedback/JSX/outline |
+ Check http://PointedEars.de/dev/jsx/outline/ for new versions. |
+ |
+ This program is free software; you can redistribute it and/or modify |
+ it under the terms of the GNU General Public License as published by |
+ the Free Software Foundation; either version 2 of the License, or |
+ (at your option) any later version. |
+ |
+ This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License for more details. |
+ |
+ You should have received a copy of the GNU General Public License |
+ along with this program (COPYING file); if not, write to the Free Software |
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
+ |
+ |
+VERSION HISTORY (current on top): |
+ |
+ ============================================================================= |
+ Version Date Changes |
+ ============================================================================= |
+ 1.15.2001.4 2001-04-10 Fixed some nesting errors in parantheses and |
+ conditionals (THNX 2 Netscape!) |
+ Updated /doc (indent and more), now also includes |
+ a tiny CSS section (2 B cont'd) |
+ Updated "terms of use" section: |
+ Now applies to the GNU GPL(!) 2 and later |
+ ----------------------------------------------------------------------------- |
+ 1.14.2001.3 2001-03-24 Updated pretty printing (parantheses/quotes), |
+ e-mail address and /doc |
+ 1.13.2001.1 2001-01-24 Updated alert message: Netscape 4 Linux does not |
+ line-break. |
+ ----------------------------------------------------------------------------- |
+ 1.12.2001.1 2001-01-11 Moved general documentation to text file for |
+ faster processing. |
+ ----------------------------------------------------------------------------- |
+ 1.11.2000.7 2000-07-06 Fixed targetID:invalid_object bug in clickHandler() |
+ ----------------------------------------------------------------------------- |
+ 1.10.2000.7 2000-07-03 Fixed some mysterious bugs with IE5.01 |
+ on string arguments and large HTML documents |
+ by assigning those strings to local variables |
+ and splitting string assignments (+= Workaround). |
+ Changed email subject line to Feedback/JSX/outline. |
+ ----------------------------------------------------------------------------- |
+ 1.09.2000.4 2000-04-22 Fixed NoObject (FOR loop) bug in FullTree() |
+ 1.08.2000.4 2000-04-22 Improved message for ENoTarget exception |
+ Added "user modifications" section and improved |
+ "terms of use" section |
+ ----------------------------------------------------------------------------- |
+ 1.06.2000.4 2000-04-08 Improved clickHandler() and FullTree(...) functions, |
+ now ignores img... and s... variables if they are |
+ null-strings |
+ ----------------------------------------------------------------------------- |
+ 1.05.2000.3 ? First published version |
+ ============================================================================= |
+ |
+USER MODIFICATIONS: |
+ |
+ Please provide the full documentation of your modifications using the fields |
+ below (email address appreciated for "User ID") in order to enable contact |
+ and support. Note the "terms of use" section above. |
+ |
+ ============================================================================= |
+ User ID Changed Version->New Version Number Date Changes |
+ ============================================================================= |
+ [ insert your modifications here ] |
+ ----------------------------------------------------------------------------- |
+ [ insert your modifications here ] |
+ ============================================================================= |
+ |
+ Please email me for further questions and bugs. |
+ Your support is really appreciated. |
+ |
+ |
+HOW TO USE: |
+ |
+ I recommend to utilize the functions of this script in different HTML |
+ documents when downloading the entire file as outline.js and appending the |
+ section |
+ |
+ <script language="JavaScript1.1" src="outline.js" type="text/javascript"> |
+ </script> |
+ |
+ (without newline) within the <HEAD></HEAD> section of that HTML documents. |
+ |
+ The script uses either image files or text for node symbols as defined by |
+ the variables below. |
+ |
+ If you would like to use image files as outline nodes symbols (recommended), |
+ please define an image object with the <img class="outline" src="..."> tag. |
+ Assign URLs to the imgCollapsed and imgExpanded variables in a separate |
+ JavaScript 1.1 script (file) after you included this script (see above) |
+ to apply the image files used for node symbols. |
+ YOU ARE NOT ALLOWED TO MODIFY THE INITIAL SCRIPT VALUES DIRECTLY! |
+ Note: The clicked object needs to support the SRC or the ALT attribute. |
+ The website where you have downloaded this file also provides the following |
+ images for free to be used as outline node symbols: |
+ |
+ bookclos.gif Closed book (collapsed tree; online help) |
+ bookopen.gif Opened book (expanded tree; online help) |
+ plus.gif white-on-black "+" (collapsed tree; miscellanous use) |
+ minus.gif black-on-white "-" (expanded tree; miscellanous use) |
+ |
+ If you would like to use text instead of image files, please define a text |
+ area with the <span class="outline"></span> tags. |
+ Assign strings to the sCollapsed and sExpanded variables in a separate |
+ JavaScript 1.1 script (file) after you included this script (see above) |
+ to apply the text used for node symbols. |
+ YOU ARE NOT ALLOWED TO MODIFY THE INITIAL VALUES DEFINED HEREIN DIRECTLY! |
+ |
+ Note: The clicked object needs to support the innerHTML attribute. |
+ |
+ Redefine the .outlined CSS class to apply indent and other properties |
+ of the text for a node content. |
+ |
+ |
+ Live long and prosper |
+ |
+ PointedEars |
\ No newline at end of file |
Index: live/doc/historic/string.htm |
=================================================================== |
--- live/doc/historic/string.htm (nonexistent) |
+++ live/doc/historic/string.htm (revision 520) |
@@ -0,0 +1,390 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
+ "http://www.w3.org/TR/html4/loose.dtd"> |
+<html lang="en"> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+<title>PointedEars' JavaScript Extensions (JSX): string.js</title> |
+<link rel="stylesheet" type="text/css" href="style.css"> |
+</head> |
+ |
+<body> |
+<h1>PointedEars' JavaScript Extensions (JSX)</h1> |
+<h2>string.js</h2> |
+<pre> |
+ |
+ORIGINAL FILENAME: <a href="string.js" type="text/javascript" |
+ target="_top">string.js</a> |
+PURPOSE: Provides support for string operations |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.1+ |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+FILE VERSION: 1.29.2003.10b5+; |
+ See <var>stringVersion</var> variable definition in script file. |
+REQUIRED FOR: <a href="search.htm" |
+ title="View documentation of JSX:search.js">JSX:search.js</a> |
+ <a href="time.htm" |
+ title="View documentation of JSX:time.js">JSX:time.js</a> |
+ </pre> |
+<h3>Contents</h3> |
+<ul> |
+ <li><a href="#features">Features provided by this script</a></li> |
+ <li><a href="#testlist">List of browser tests</a></li> |
+ <li><a href="#history">Version history</a></li> |
+ <li><a href="#copyright">Copyright & disclaimer</a></li> |
+ <li><a href="#def">Expressions used herein</a></li> |
+ <li><a href="#details">Detailed description of features</a></li> |
+</ul> |
+<p align="center" style="font-size: small;">Created with<br> |
+<a href="http://quanta.sourceforge.net/" target="_top"><img |
+ src="../media/quanta.png" alt="Quanta Plus" width="32" height="32" |
+ border="0"></a> <a |
+ href="http://www.macromedia.com/software/homesite/" target="_top"><img |
+ src="../media/homesite3.gif" alt=" | Macromedia HomeSite | " |
+ width="44" height="34" border="0"></a><a |
+ href="http://www.macromedia.com/software/dreamweaver/" target="_top"><img |
+ src="../media/dreamweaver2.gif" alt="Macromedia Dreamweaver MX" |
+ width="44" height="34" border="0"></a></p> |
+<p align="center" style="font-size: small;"><a |
+ href="http://validator.w3.org/check/referer" target="_top"><img |
+ src="../media/valid-html401" alt="This is valid HTML 4.01, " |
+ width="88" height="31" border="0"></a> <a |
+ href="http://jigsaw.w3.org/css-validator/check/referer" target="_top"><img |
+ src="../media/valid-css" alt="valid CSS " |
+ style="border: 0; width: 88px; height: 31px"></a> <a |
+ href="http://www.anybrowser.org/campaign/" target="_top"><img |
+ src="../media/anybrowser.gif" |
+ alt="and therefore optimized for ALL browsers!" width="88" height="31" |
+ border="0"></a></p> |
+<hr> |
+<h4><a name="features">Features Provided By This Script</a></h4> |
+<dl> |
+ <dt><code><a href="#leadingCaps">leadingCaps</a></code></dt> |
+ <dd><pre>Replaces the first character by a capital character.</pre></dd> |
+ <dt><code><a href="#replaceText">replaceText</a></code></dt> |
+ <dd><pre>Replaces text within a string.</pre></dd> |
+ <dt><code><a href="#strCount">strCount</a></code></dt> |
+ <dd><pre>Returns the number of times that a substring is found in a string.</pre></dd> |
+ <dt><code><a href="#stripTags">stripTags</a></code></dt> |
+ <dd><pre>Returns a string where all tags are stripped from.</pre></dd> |
+ <dt><code><a href="#trim">trim</a></code></dt> |
+ <dd><pre>Returns a string where all leading and following spaces are stripped from.</pre></dd> |
+ <dt><code><a href="#trimLeft">trimLeft</a></code></dt> |
+ <dd><pre>Returns a string where all leading spaces are stripped from.</pre></dd> |
+ <dt><code><a href="#trimRight">trimRight</a></code></dt> |
+ <dd><pre>Returns a string where all following spaces are stripped from.</pre></dd> |
+</dl> |
+<h4><a name="testlist">Tested To Work At Least With</a></h4> |
+<pre><!--script type="text/javascript"> |
+document.write(navigator.userAgent + "\n"); |
+</script--> |
+Mozilla 1.5 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031007] |
+Mozilla 1.2b nightly |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) Gecko/2002102108] |
+Mozilla 1.2b nightly |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) Gecko/2002100604] |
+Mozilla 1.2a |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2a) Gecko/20020911] |
+Netscape 7.0 |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.0.1) Gecko/20020823 |
+ Netscape/7.0] |
+Mozilla 1.1b |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.1b) Gecko/20020722] |
+Mozilla 1.0 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0) Gecko/20020605] |
+Mozilla 1.0 Release Candidate 3 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc3) Gecko/20020523] |
+Mozilla 1.0 Release Candidate 2 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc2) Gecko/20020510] |
+Mozilla 1.0 Release Candidate 1 nightly |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc1) Gecko/20020417] |
+Mozilla 0.9.9 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.9) Gecko/20020311] |
+Mozilla 0.9.8 de-AT |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.8) Gecko/20020204] |
+Mozilla 0.9.4 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.4) Gecko/20010913] |
+Netscape 6.1 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.2) Gecko/20010726 |
+ Netscape6/6.1] |
+Netscape 6.1 |
+ [Mozilla/5.0 (X11; U; Linux 2.2.16 i586; de-DE; m18) Gecko/20010131 |
+ Netscape6/6.01] |
+Microsoft Internet Explorer 6.0.2800.1160 (SP-1) |
+ [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461)] |
+Microsoft Internet Explorer 6.0.2600.0000 |
+ [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 3.0)] |
+Microsoft Internet Explorer 5.50.4807.2300IC |
+Microsoft Internet Explorer 5.50.4134.0600IC |
+Microsoft Internet Explorer 5.01 [5.00.2919.6307IC] |
+Microsoft Internet Explorer 5.00.2314.1003IC |
+ </pre> |
+<h4><a name="history">Version History</a></h4> |
+<pre> |
+<a href="#first">First version</a> |
+ |
+<a name="last" id="last">1.29.3.2007090212 (2007-09-02)</a> |
+------------------------------- |
+* Fixed leadingZero (did prepend with instead of "0") |
+ |
+1.29.2.2006090919 (2006-09-09) |
+------------------------------- |
+* [TODO] |
+ |
+1.29.2003.10b5+ (2003-10-22) |
+---------------------------- |
+* Added <code>leadingCaps</code> and <code>strCount</code> functions |
+* Functions become methods of the String prototype if supported |
+ |
+1.29.2003.10b4+ (2003-10-20) |
+---------------------------- |
+* Added JavaScriptDoc comments |
+* Moved string functions from obsolete enhanced.js to string.js |
+ and updated documentation |
+ |
+1.29.2002.10b3 (2002-10-09) |
+---------------------------- |
+* Updated documentation: |
+ - Added link to last version |
+ - Added links to definitions |
+ - Updated definitions |
+ - Updated "null string" term |
+ - Unified Version History layout |
+ |
+<a name="v1.29.2002.8b" id="v1.29.2002.8b">1.29.2002.8b (2002-08-25)</a> |
+---------------------------- |
+* Updated all functions: |
+ - changed $ident<code><span class="punct">.</span>arguments</code> to <code>arguments</code> because it is an intrinsic property |
+ of the function prototype |
+ |
+<a name="v1.29.2002.7" id="v1.29.2002.7">1.29.2002.7 (2002-07-22)</a> |
+--------------------------- |
+* Updated <code>replaceText</code> function: |
+ - Introduced additional <var>bForceLoop</var> argument to prefer |
+ for-loop instead of <a href="#regexp">RegExps</a>. Useful when replacement with RegExp<a |
+ href="#regexp"></a>s |
+ requires too much modification of arguments. |
+ |
+<a name="v1.25.2002.5" id="v1.25.2002.5">1.25.2002.5 (2002-05-10)</a> |
+--------------------------- |
+* Fixed undetected bug in <code>EInvalidArg(...)</code>, simplified <code>EInvalidArg(...)</code> |
+ and <code>EInvalidArgNum(...)</code> exceptions |
+* Renamed <code>stringException</code> to <code>stringException</code> and simplified code |
+* Introduced <var>stringCopypright</var>, <var>stringAuthor</var> and <var>stringEMail</var> |
+ global variables to store script-related data for <strong>all</strong> script features, |
+ including <code>getObjInfo(...)</code> |
+* Documentation update: |
+ - Have all code-related identifiers properly formatted |
+ |
+1.24.2002.5 (2002-05-06) |
+--------------------------- |
+* Updated <code>replaceText(...)</code> function: |
+ - Fixed the "<var>sText</var> has no properties" bug with undefined attributes |
+ tried to retrieve with <code>getObjInfo(...)</code> |
+* Documentation update: |
+ - Link to jump to the first version listed in history |
+ - Updated <code>replaceText(...)</code> description |
+ - Use of definition lists |
+ - Changed headers |
+ |
+1.23.2002.4 (2002-04-30) |
+--------------------------- |
+* Updated <code>replaceText(...)</code> function, resolving the <code><a |
+ href="#regexp">RegExp</a></code> issues: |
+ - Replaces all occurrences of a string |
+ - Replaces also <code>\</code> |
+ |
+1.22.2002.4 (2002-04-22) |
+--------------------------- |
+* Updated replaceText(...) function: |
+ - Support of the more effective <code>String.replace(...)</code> with <code><a |
+ href="#regexp">RegExp</a></code> of |
+ JavaScript 1.2 |
+* Documentation update: |
+ - Word wrap at 72 characters (applies to documentation standards) |
+ - Version History is no longer in columns but separate paragraphs |
+* First version under the terms of the GNU GPL, version 2 or later. |
+ |
+1.16.2001.1 (2001-01-11) |
+--------------------------- |
+* Moved general documentation to text file for faster processing |
+ |
+1.14.2000.11 (2000-11-15) |
+--------------------------- |
+* Established string variable named <var>stringVersion</var> to contain |
+ library version |
+ |
+1.13.2000.10 (2000-10-17) |
+--------------------------- |
+* Improved inline documentation |
+ |
+1.12.2000.8 (2000-08-13) |
+--------------------------- |
+* Tested script file successfully with IE5.5 |
+ |
+1.11.2000.7 (2000-07-03) |
+--------------------------- |
+* Fixed some mysterious bugs with IE 5.01 on string arguments and large |
+ HTML documents by assigning those strings to local variables and |
+ splitting string assignments (+= Workaround). |
+* Modified email subject line to Feedback/JSX/string |
+ |
+1.10.2000.6 (2000-06-10) |
+--------------------------- |
+* Improved inline documentation |
+ |
+1.09.2000.3 (2000-03-27) |
+--------------------------- |
+* Fixed spelling error in <code>EInvalidArg(...)</code> exception |
+* Fixed global frame ID evaluation bug |
+ |
+<a name="first" id="first">1.06.2000.3 (2000-03-19)</a> |
+--------------------------- |
+* Fixed <var>sResult</var> variable assignment in <code>trim(...)</code> |
+ |
+<a href="#last">Last version</a> |
+ </pre> |
+<h4><a name="copyright">Copyright & Disclaimer</a></h4> |
+<pre> |
+Copyright (c) 1999-2003 Thomas Lahn <<a |
+ href="mailto:string.js@PointedEars.de%20%28Thomas%20Lahn%28?subject=Feedback/JSX/string">string.js@PointedEars.de</a>> |
+ |
+This program is free software; you can redistribute it and/or |
+modify it under the terms of the <a |
+ href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License</a> |
+as published by the <a href="http://www.fsf.org/" target="_top">Free Software Foundation</a>; either version 2 |
+of the License, or (at your option) any later version. |
+ |
+This program is distributed in the hope that it will be useful, |
+but WITHOUT ANY WARRANTY; without even the implied warranty of |
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+GNU General Public License for more details. |
+ |
+You should have received a copy of the GNU General Public License |
+along with this program (<a href="COPYING" target="_top">COPYING</a> file); if not, write to the |
+Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
+Boston, MA 02111-1307, USA. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in |
+different HTML documents when saving the entire file as |
+script.js and appending the following section within the |
+<span class="tags"><head>...</head></span> tags of that documents: |
+ |
+<span class="scr"><script src="string.js" type="text/javascript"></script></span> |
+ </pre> |
+<h4><a name="def">Expressions Used Herein</a></h4> |
+<dl> |
+ <dt>null string</dt> |
+ <dd><pre>An empty string that contains no characters, i.e. is of length 0 (zero).</pre></dd> |
+ <dt><code>(Expression1 | Expression2 | ...)</code></dt> |
+ <dd><pre>Exclusive selection of expressions in Backus-Naur Form (BNF). [<a |
+ href="http://google.com/search?q=Backus-Naur+Form" target="_top">details</a>]</pre></dd> |
+ <dt><code><a name="regexp">RegExp</a></code></dt> |
+ <dd><pre>A regular expression encapsulated by the RegExp object. [<a |
+ href="http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/regexp.html#1193136" |
+ target="_top">details</a>]</pre></dd> |
+</dl> |
+<pre> |
+<a name="details">Following the detailed description of the features of this script file.</a> |
+_______________________________________________________________________________ |
+ |
+<code><a name="leadingCaps"><span class="rswd">function</span> leadingCaps<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Replaces the first character of <var>s</var> by a capital character. |
+Returns the new string. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="replaceText"><span class="rswd">function</span> replaceText<span |
+ class="punct">(</span><var>sText</var>, <var>sReplaced</var>, <var>sReplacement</var><span |
+ class="punct">)</span></a></code> |
+ |
+Replaces occurences of <var>sReplaced</var> in the string <var>sText</var> with <var>sReplacement</var>. |
+Returns the new string. |
+ |
+Because of the result it returns, <code>replaceText</code> may be nested into other calls |
+of itself: |
+ |
+ <code><span class="rswd">var</span> s <span class="punct">=</span> replaceText<span |
+ class="punct">(</span>replaceText<span class="punct">(</span><span |
+ class="str">"test me"</span><span class="punct">,</span> <span |
+ class="str">"test"</span><span class="punct">,</span> <span |
+ class="str">"#test#"</span><span class="punct">)</span><span |
+ class="punct">,</span> <span class="str">"#"</span><span |
+ class="punct">,</span> <span class="str">"$"</span><span |
+ class="punct">);</span> |
+ <span class="comm">// displays "$test$ me"</span></code> |
+ |
+If supported, <code>replaceText(...)</code> uses <code>String.replace(...)</code> to replace text. |
+Therefore, if the method is available, <var>sReplaced</var> may be a regular expression |
+matching substrings to be replaced with <var>sReplacement</var>. |
+ |
+If supported, <code>replaceText(...)</code> becomes also a method of the <code>String</code> prototype, |
+thus applicable to all <code>String</code> objects and literals where the first argument |
+is ignored if <code>undefined</code>, <code class="rswd">null</code>, <code |
+ class="rswd">false</code>, a null-string or not a <code>String</code>. |
+The above example could then be written as |
+ |
+ <code><span class="rswd">var</span> s <span class="punct">=</span> replaceText<span |
+ class="punct">(</span><span class="str">"test me"</span><span |
+ class="punct">,</span> <span class="str">"test"</span><span |
+ class="punct">,</span> <span class="str">"#test#"</span><span |
+ class="punct">).</span>replaceText<span class="punct">(</span><span |
+ class="str">""</span><span class="punct">,</span> <span class="str">"#"</span><span |
+ class="punct">,</span> <span class="str">"$"</span><span |
+ class="punct">);</span> |
+ <span class="comm">// displays "$test$ me"</span></code> |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="stripTags"><span class="rswd">function</span> stripTags<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Returns a string where all tags are stripped from the passed argument string |
+(<var>taggedStr</var>). You may use it to analyze the displayed content of an HTML document |
+for fulltext search: |
+ |
+ <code><span class="rswd">function</span> foundText<span |
+ class="punct">(</span><var>sSub</var><span class="punct">)</span> |
+ <span class="punct">{</span> |
+ <span class="rswd">return</span> <span class="punct">(</span>stripTags<span |
+ class="punct">(</span>document<span class="punct">.</span>body<span |
+ class="punct">.</span>innerHTML<span class="punct">).</span>indexOf<span |
+ class="punct">(</span><var>sSub</var><span class="punct">)</span> > <span |
+ class="num">-1</span><span class="punct">);</span> |
+ <span class="punct">}</span> |
+ |
+ <span class="rswd">if</span> <span class="punct">(</span>foundText<span |
+ class="punct">(</span><span class="str">"Text"</span><span |
+ class="punct">))</span> |
+ document.<span class="ident">write</span><span class="punct">(</span><span |
+ class="str">'Found "Text" in the document.'</span><span class="punct">);</span></code> |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="trim"><span class="rswd">function</span> trim<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Returns a copy of <var>s</var> where all leading and following spaces are stripped from. |
+Uses <code>trimLeft</code> and <code>trimRight</code> defined above to calculate that resulting string. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="trimLeft"><span class="rswd">function</span> trimLeft<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Returns a copy of <var>s</var> where all leading spaces are stripped from. |
+ |
+_______________________________________________________________________________ |
+ |
+<code><a name="trimRight"><span class="rswd">function</span> trimRight<span |
+ class="punct">(</span><var>s</var><span class="punct">)</span></a></code> |
+ |
+Returns a copy of <var>s</var> where all following spaces are stripped from. |
+ |
+ </pre> |
+<hr> |
+<p>END OF FILE</p> |
+</body> |
+</html> |
Index: live/doc/historic/enhancd2.htm |
=================================================================== |
--- live/doc/historic/enhancd2.htm (nonexistent) |
+++ live/doc/historic/enhancd2.htm (revision 520) |
@@ -0,0 +1,339 @@ |
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
+ "http://www.w3.org/TR/html4/loose.dtd"> |
+<html lang="en"> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+<title>PointedEars' JavaScript Extensions (JSX): enhancd2.js</title> |
+<link rel="stylesheet" type="text/css" href="style.css"> |
+</head> |
+ |
+<body> |
+<h1>PointedEars' JavaScript Extensions (JSX)</h1> |
+<h2>enhancd2.js</h2> |
+<pre> |
+ |
+ORIGINAL FILENAME: enhancd2.js |
+PURPOSE: Provides level-2 enhanced web site features |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.18.2002.2; |
+ See enhanced2Version variable intialization in |
+ script file. |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+DEPENDS ON: <a href="enhanced.htm" |
+ title="View documentation of JSX:enhanced.js">JSX:enhanced.js</a>, v1.08.2000.3 or later</pre> |
+ |
+<h3>Contents</h3> |
+<ul> |
+ <li><a href="#features">Features provided by this script</a></li> |
+ <li><a href="#testlist">List of browser tests</a></li> |
+ <li><a href="#history">Version history</a></li> |
+ <li><a href="#copyright">Copyright & disclaimer</a></li> |
+ <li><a href="#details">Detailed description of features</a></li> |
+</ul> |
+ |
+<pre> |
+<a name="features">FEATURES PROVIDED BY THIS SCRIPT:</a> |
+ |
+linkOutWin Questions the user before following an online link and |
+ if confirmed, displays the result in a new window. |
+ Calls and returns enhanced.js:linkOut(...). |
+enlargeImg Opens a dependent browser child window with an |
+ enlarged image. (Previously addressed by Enlarge(...) |
+ function, see version history info above.) |
+maximize Maximizes the width and height of the browser window. |
+playSound Plays a sound file (experimental) |
+ |
+ |
+<a name="testlist">TESTED TO WORK AT LEAST WITH:</a> |
+ |
+ Mozilla 1.0 Release Candidate 2 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc2) |
+ Gecko/20020510] |
+ Mozilla 1.0 Release Candidate 1 nightly |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc1) |
+ Gecko/20020417] |
+ Mozilla 0.9.9 |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.9) |
+ Gecko/20020311] |
+ Mozilla 0.9.8 de-AT |
+ "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.8) |
+ Gecko/20020204" |
+ Mozilla 0.9.6 de-AT |
+ "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.6) |
+ Gecko/20011120" |
+ Netscape 6.2.1 |
+ "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:0.9.4) |
+ Gecko/20011128 Netscape6/6.2.1" |
+ Opera 6.0 [de] |
+ "Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0 [de]" |
+ Microsoft Internet Explorer 6.00.2600.0000 (SP-2) |
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; |
+ Hotbar 3.0)" |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ Microsoft Internet Explorer 5.01, displayed 5.00.2919.6307IC |
+ Microsoft Internet Explorer 5.00, displayed 5.00.2314.1003IC |
+ Netscape Navigator 4.74 |
+ |
+ |
+<a name="history">VERSION HISTORY:</a> |
+ |
+1.20.2002.4 (2002-04-22) |
+------------------------- |
+First version under the terms of the GNU GPL, version 2 or later. |
+ |
+1.18.2002.2 (2002-02-28) |
+------------------------- |
+- Updated hoverImg(...) function: |
+ Now supports W3C-DOM of both NN 6+/Mozilla 0.9+ and IE 6+. |
+ |
+1.17.2002.2 (2002-02-23) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Fixed bad bug with Mozilla/Netscape. Version of Mozilla newer than |
+ 0.9.6. and of Netscape newer than 6.1 do assign "about:blank" to a |
+ temporary document which causes relative paths used for its resources |
+ to be invalid. Further use of relative paths is provided by an |
+ algorithm, used in JSX:<a href="outline.txt">outline.js</a> before and now improved, that calculates |
+ the correct absolute path when provided the caller document's URL. |
+ |
+1.16.2002.2 (2002-02-05) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Changed back to wImage.document because Opera's document.open(...) |
+ function does not return the created object --> dImage is useless :( |
+- Documentation update: Changed to HTML format |
+ |
+1.15.2002.1 (2002-01-26) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Now uses previously defined dImage variable instead of wImage.document |
+ |
+1.14.2002.1 (2002-01-18) |
+------------------------- |
+- Updated enlargeImg(...) function: |
+ Masked / in written closing tags with \/ (backslash-slash) as |
+ described in <a href="http://selfhtml.teamone.de/" target="_blank">SELFHTML 8.0</a> |
+- Documentation update: |
+ Word wrap at 72 characters (applies to documentation standards), |
+ and version history is no longer in columns but separate paragraphs. |
+ |
+1.13.2001.9 (2001-09-11) |
+------------------------- |
+Removed maximize() function: |
+When used with virtual desktops larger than the physical resolution |
+(screen), setting the window size to screen.width and screen.height |
+causes the window to occupy the desktop but exceed the screen size, |
+thus the browser window blocks the other desktop content. |
+With this course of action it is intended not to support designers |
+causing this undesired behavior on the computers of certain users. |
+ |
+1.12.2001.4 (2001-04-03) |
+------------------------ |
+Updated enlargeImg(...) function: |
+Now checks if created window object exists and focuses it after creating |
+its document (always focuses the popup, even if already open). |
+ |
+1.11.2001.2 (2001-02-05) |
+------------------------- |
+Updated enlargeImg(...) function: |
+Now allows to close zoom window when clicking on enlarged image and |
+displays tooltip on mouse over. |
+ |
+1.10.2001.1 (2001-01-11) |
+------------------------- |
+Moved general documentation to text file for faster processing. |
+ |
+1.09.2000.11 (2000-11-24) |
+-------------------------- |
+- Improved linkOutWin(...) function: |
+ Now returns value of linkOut(...) (always false) for combined use |
+ in both HREF attribute and onClick event handler of <span class="a"><a></span>...<span |
+ class="a"></a></span> tag. |
+- Established string variable named enhanced2Version to contain |
+ library version. |
+ |
+1.08.2000.10 (2000-10-30) |
+-------------------------- |
+Improved maximize() function due to Netscape missing screen.left |
+ |
+1.07.2000.10 (2000-10-17) |
+-------------------------- |
+- Improved Enlarge(...) function: |
+ - Fixed BUG_Enlarge:ALWAYS_FIT-TO-IMAGE (see code). |
+ - Changed window name for temporary HTML document to "wndZoom". |
+ - Renamed to "enlargeImg". Compatibility by internal redirection. |
+- Bugfixed exception calls. |
+- Improved inline documentation. |
+ |
+1.06.2000.9 (2000-09-25) |
+------------------------- |
+Improved Enlarge(...) function: |
+- iWidth and iHeight arguments are not longer mandatory |
+ (moved to third and fourth argument) due to use of temporary |
+ HTML document that displays the image and uses inline JavaScript code |
+ to resize the window to fit image automatically |
+ (standalone version; does neither utilize JSX:enhanced.js:popUp(...) |
+ nor elements from document.js). |
+- Additionally established window caption for second argument; |
+ optional, uses image URL if not provided. |
+ |
+1.05.2000.8 (2000-08-13) |
+------------------------- |
+Tested script file successfully with IE5.5 |
+ |
+1.04.2000.7 (2000-06-10) |
+------------------------- |
+- Changed function names beginning with lowercase character. |
+- Added playSound(...) function. |
+ |
+1.03.2000.6 (2000-06-10) |
+------------------------- |
+- Changed OpenChildWin(...) call to popUp(...) and moved to enhanced.js |
+- Improved Enlarge(...) function to display dependent browser |
+ child window (with Netscape and compatibles only). |
+- Improved documentation texts. |
+ |
+1.02.2000.4 (2000-04-06) |
+------------------------- |
+Added Maximize(...) function. |
+ |
+1.01.2000.3 (2000-03-24) |
+------------------------- |
+Added Enlarge(...) function. |
+ |
+1.00.2000.3 (2000-03-23) |
+------------------------- |
+Added linkOutWin(...) function. |
+ |
+ |
+<a name="copyright">Copyright (c) 1999-2002 Thomas Lahn</a> <<a |
+ href="mailto:webmaster@PointedEars.de?subject=Feedback/JSX/enhancd2">webmaster@PointedEars.de</a>> |
+ |
+This program is free software; you can redistribute it and/or |
+modify it under the terms of the <a |
+ href="http://www.gnu.org/copyleft/gpl.html" target="_blank">GNU General Public License</a> |
+as published by the <a href="http://www.fsf.org/" target="_blank">Free Software Foundation</a>; either version 2 |
+of the License, or (at your option) any later version. |
+ |
+This program is distributed in the hope that it will be useful, |
+but WITHOUT ANY WARRANTY; without even the implied warranty of |
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+GNU General Public License for more details. |
+ |
+You should have received a copy of the GNU General Public License |
+along with this program (<a href="COPYING" target="_blank">COPYING</a> file); if not, write to the |
+Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
+Boston, MA 02111-1307, USA. |
+ |
+ |
+HOW TO USE: |
+Note that this script depends on elements defined in JSX:enhanced.js |
+For dependent scripts, the referred script file (enhanced.js) needs to |
+be loaded previously and should be loaded only one time per document. |
+To avoid providing the required elements in enhanced.js via copy&paste, |
+I recommend to utilize the functions of this script in (different) |
+HTML documents when saving the entire file as enhancd2.js and appending |
+the following sections within the <head></head> tags of these documents: |
+ |
+<span class="scr"><script src="enhanced.js" type="text/javascript"></script> |
+<script src="enhancd2.js" type="text/javascript"></script></span> |
+ |
+If dependencies cannot be resolved, you will always get a |
+JavaScript error even if there are no bugs herein. |
+ |
+ |
+<a name="details">Following the detailed description of the features of this script.</a> |
+_______________________________________________________________________________ |
+ |
+function enlargeImg(sImageURL, sCaption, iWidth, iHeight, bCenter) |
+ |
+The function defined below will open an independent browser child window |
+(here: popup) calling the window.open(...) and document.open(...) |
+functions to display the enlarged image of a thumbnail the user has |
+clicked. |
+Arguments: Pass the URL of the enlarged image, optionally the caption |
+of the popup (if you leave it the URL is used as caption). |
+Pass also width and/or height as arguments to override |
+fit-window-to-image feature which results in the following behavior |
+(disable automatic line-wrap and use fixed font for proper display): |
+ |
+sImageURL sCaption iWidth iHeight |
+------------------------------------------------------------------------ |
+ - ( ) ( ) ( ) |
+enhanced.js:EInvalidArgNum exception is raised |
+ |
+ + ( ) ( ) ( ) |
+Use sImageURL as caption, fit-window-to-image horizontally & vertically |
+ |
+ + x ( ) ( ) |
+Use sCaption as caption, fit-window-to-image horizontally & vertically |
+ |
+ + x x (0) |
+Window width is defined by iWidth, fit-window-to-image vertically |
+ |
+ + x 0 (x) |
+Window height is defined by iHeight, fit-window-to-image horizontally |
+ |
+ + x x x |
+Window size is defined by iWidth and iHeight |
+ |
+Legend: |
+ - Required argument not passed; |
+ + Required argument passed; |
+ x Mandatory optional argument passed except zero; |
+ 0 Zero ("0") passed for mandatory optional argument; |
+ ( ) Optional argument not passed; |
+ (0) Optional argument not passed, or zero passed; |
+ (x) Optional argument not passed, or passed but not zero; |
+ |
+The fifth argument, bCenter, is a Boolean expression that is `true' by |
+default. |
+You may pass an expression that returns `false' if you define the size |
+of the popup by yourself. If bCenter == false, the popup will not be |
+positioned in the center of the screen automatically but its left top |
+corner is defined by the browser defaults (usually cascaded with other |
+windows.) |
+Pass iWidth == 0 and/or iHeight == 0, and bCenter == false if you wish |
+the popup to be automatically resized horizontally and/or vertically, |
+but not to be centered. |
+ |
+NOTE: |
+This feature had been previously addressed by the Enlarge(...) function |
+with less arguments and therefore less possibilities to influence the |
+display behavior (see below). |
+Calls to Enlarge(...) are still possible as they redirect internally to |
+enlargeImg(...), incl. exceptions. Nevertheless, calling Enlarge(...) |
+disables you to define whether the popup should be centered as the old |
+function definition is not being updated. New scripts should call |
+enlargeImg(...) anyway instead because Enlarge(...) may become obsolete |
+in future versions. |
+ |
+________________________________________________________________________ |
+ |
+function Enlarge(sImageURL, sCaption, iWidth, iHeight) |
+ |
+Enlarge(...) call redirects to enlargeImg(...) for compatibility with |
+previous versions. |
+ |
+________________________________________________________________________ |
+ |
+function maximize() |
+ |
+Maximizes the browser window. |
+ |
+________________________________________________________________________ |
+ |
+function playSound( sSoundFile, Loop, sAttrib ) { |
+ |
+Plays a sound file as background sound if the insertAdjacentHTML method |
+is supported (currently on JScript browsers like IE5+ only, hence tests |
+document.all object before). |
+ |
+Note: If you specify the SRC or LOOP attributes in sAttrib, then |
+sSoundFile and Loop will overwrite the respective values. |
+________________________________________________________________________ |
+END OF FILE |
+ |
+ </pre> |
+</body> |
+</html> |
Index: live/doc/historic/window.html |
=================================================================== |
--- live/doc/historic/window.html (nonexistent) |
+++ live/doc/historic/window.html (revision 520) |
@@ -0,0 +1,741 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
+ "http://www.w3.org/TR/html4/loose.dtd"> |
+<html> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
+ <meta http-equiv="Content-Language" content="en"> |
+ <meta name="GENERATOR" content="PHPEclipse 1.0"> |
+ <title>Window Library</title> |
+ <link |
+ rel="stylesheet" |
+ href="style.css" |
+ type="text/css" |
+ charset="ISO-8859-1" |
+ hreflang="en" |
+ title=""> |
+ </head> |
+ <body> |
+ <h1>Window Library</h1> |
+ |
+ <table> |
+ <tr> |
+ <th align="left">Original filename:</th> |
+ <td><a href="window.js">window.js</a></td> |
+ </tr> |
+ <tr> |
+ <th align="left">Part of:</th> |
+ <td>PointedEars' JavaScript Extensions (JSX)</td> |
+ </tr> |
+ </table> |
+ |
+ <h2>Contents</h2> |
+ |
+ <ul> |
+ <li><a href="#copyright">Copyright & disclaimer</a></li> |
+ |
+ <li><a href="#variables">Global variables</a></li> |
+ |
+ <li><a href="#methods">Global methods</a></li> |
+ |
+ <li><a href="#def">Expressions used herein</a></li> |
+ |
+ <li><a href="#testlist">List of browser tests</a></li> |
+ |
+ <li><a href="#history">Version history</a></li> |
+ </ul> |
+ |
+ <h2><a href="#copyright" name="copyright" id="copyright" |
+ >Copyright & Disclaimer</a></h2> |
+ |
+ <p class="author">Copyright © 2001-2004 Thomas Lahn |
+ <<a href="mailto:window.js@PointedEars.de" |
+ >window.js@PointedEars.de</a>></p> |
+ |
+ <p>This program is free software; you can redistribute it and/or |
+ modify it under the terms of the GNU General Public License |
+ as published by the Free Software Foundation; either version 2 |
+ of the License, or (at your option) any later version.</p> |
+ |
+ <p>This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License (GPL) for more details.</p> |
+ |
+ <p>You should have received a copy of the GNU GPL along with this |
+ program (<a href="COPYING">COPYING</a> file); if not, go to [1] |
+ or write to the Free Software Foundation, Inc., 59 Temple Place |
+ - Suite 330, Boston, MA 02111-1307, USA.</p> |
+ |
+ <p>[1] <<a href="http://www.gnu.org/licenses/licenses.html#GPL" |
+ >http://www.gnu.org/licenses/licenses.html#GPL</a>></p> |
+ |
+ <h2><a href="#variables" name="variables" id="variables" |
+ >Global Variables</a></h2> |
+ |
+ <dl> |
+ <dt><code>string <span class="ident">windowVersion</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">windowCopyright</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">windowAuthor</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">windowEmail</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">windowPath</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">sLinkOutMsg_de</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">sLinkOutMsg_us</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">sLinkOutMsg</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string |
+ <span class="ident">sEnlargeImgTitle_en</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string |
+ <span class="ident">sEnlargeImgTitle_de</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code>string <span class="ident">sEnlargeImgTitle</span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><span class="rswd">function</span> |
+ <span class="ident">Enlarge</span></code></dt> |
+ <dd></dd> |
+ </dl> |
+ |
+ <h2><a href="#methods" name="methods" id="methods">Global Methods</a></h2> |
+ |
+ <dl> |
+ <dt><code><span class="ident"><a href="#windowException" |
+ >windowException</a></span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><span class="ident"><a href="#EInvalidArgNum" |
+ >EInvalidArgNum</a></span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><span class="ident"><a href="#setStatus" |
+ >setStatus</a></span></code></dt> |
+ <dd>Set the text that is displayed in the browser's status bar.</dd> |
+ |
+ <dt><code><span class="ident"><a href="#resetStatus" |
+ >resetStatus</a></span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><span class="ident"><a href="#linkOut" |
+ >linkOut</a></span></code></dt> |
+ <dd>Questions the user before following an online link (useful in |
+ offline documents with Internet support.)</dd> |
+ |
+ <dt><code><span class="ident"><a href="#popUp" |
+ >popUp</a></span></code></dt> |
+ <dd>Loads a user-defined browser child window (pop-up window). |
+ (Previously addressed by OpenChildWin(...) function, |
+ see version history info above.)</dd> |
+ |
+ <dt><code><span class="ident"><a href="#OpenChildWin" |
+ >OpenChildWin</a></span></code></dt> |
+ <dd></dd> |
+ |
+ <dt><code><span class="ident"><a href="#LoadFrame" |
+ >LoadFrame</a></span></code></dt> |
+ <dd>Loads a document within a specified frame.</dd> |
+ |
+ <dt><code><span class="ident"><a href="#enlargeImg" |
+ >enlargeImg</a></span></code></dt> |
+ <dd>Opens a dependent browser child window containing an (enlarged) |
+ image.</dd> |
+ </dl> |
+ |
+ <hr size="2"> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident"><a |
+ href="#windowException" name="windowException" id="windowException" |
+ >windowException</a></span><span class="punct" |
+ >(</span><var>Msg</var><span class="punct">)</span></code></p> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident"><a |
+ href="#EInvalidArgNum" name="EInvalidArgNum" id="EInvalidArgNum" |
+ >EInvalidArgNum</a></span><span class="punct" |
+ >(</span><var>sFunctionName</var><span class="punct">,</span> |
+ <var>iArg</var><span class="punct">)</span></code></p> |
+ |
+ <hr size="1"> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident"><a |
+ href="#setStatus" name="setStatus" id="setStatus" |
+ >setStatus</a></span><span class="punct" |
+ >(</span><var>sCaption</var><span class="punct">)</span></code></p> |
+ |
+ <p>Sets the text of the browser's status bar. Pass the string to be |
+ displayed as the only function argument. Removes the necessity to |
+ include a script into the HTML 4.0 event handlers of an HTML object, |
+ e.g.</p> |
+ |
+ <p><code><span class="a"><a href=</span><span class="attrval" |
+ >"..."</span> <span class="a">onmouseover=</span><span |
+ class="attrval">"</span><code>status='<span class="str" |
+ >Text</span>'<span class="punct">;</span> <span class="rswd" |
+ >return true</span></code><span class="attrval">"</span><span |
+ class="a">></span>...<span class="a"></a></span></code></p> |
+ |
+ <p>can be replaced with:</p> |
+ |
+ <p><code><span class="a"><a href=</span><span class="attrval" |
+ >"..."</span> <span class="a">onmouseover=</span><span |
+ class="attrval">"</span><code><span class="rswd">return</span> |
+ <span class="ident">setStatus</span><span class="punct">(</span>'<span |
+ class="str">Text</span>'<span class="punct">)</span></code><span |
+ class="attrval">"</span><span class="a">></span>...<span |
+ class="a"></a></span></code></p> |
+ |
+ <hr size="1"> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident"><a |
+ href="#resetStatus" name="resetStatus" id="resetStatus" |
+ >resetStatus</a></span><span class="punct">()</span></code></p> |
+ |
+ <hr size="1"> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident"><a |
+ href="#linkOut" name="linkOut" id="linkOut" |
+ >linkOut</a></span><span class="punct" |
+ >(</span>string <var>sURL</var><span class="punct">,</span> |
+ string <var>sLink</var><span class="punct">,</span> [<span |
+ class="rswd">boolean</span> <var>bShowURL</var><span class="punct" |
+ >,</span> [string|number <var>aTarget</var><span class="punct" |
+ >,</span> [number <var>iWidth</var><span class="punct">,</span> |
+ [number <var>iHeight</var><span class="punct">,</span> |
+ [string <var>sOptions</var>]]]]]<span class="punct" |
+ >)</span></code></p> |
+ |
+ <p>Insert the following link into a HTML document. A click on it will run the |
+ function defined below and ask the user if he/she is willing to connect |
+ to the Internet because of an online link:</p> |
+ |
+ <p><code><span class="a"><a href=</span><span class="attrval" |
+ >"<var>sURL</var>"</span> onClick=<span class="attrval" |
+ >"</span><span class="rswd">return</span> <span class="ident" |
+ >linkOut</span><span class="punct">(</span><span class="rswd" |
+ >this</span><span class="punct">.</span>href<span |
+ class="punct">)</span><span class="attrval">"</span><span class="a" |
+ >></span>...<span class="a"></a></span></code></p> |
+ |
+ <p>Replace the <var><a href="#linkOut_sURL">sURL</a></var> argument with |
+ the URL of the document to be loaded.</p> |
+ |
+ <p>Use the return value of <code><span class="ident">linkOut</span><span |
+ class="punct">()</span></code> |
+ (<code class="rswd">return false</code> will cancel the |
+ <code>click</code> event) to support users who have JavaScript available |
+ and enabled. Those users will receive the dialog box, other users will |
+ only see a popup window with the linked website.</p> |
+ |
+ <p>The function appears useful in offline pages only. You should remove the |
+ event handler before the respective offline site is uploaded to a public |
+ server.</p> |
+ |
+ <hr size="1"> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident"><a |
+ href="#popUp" name="popUp" id="popUp">popUp</a></span><span class="punct" |
+ >(</span><var>sURL</var><span class="punct">,</span> |
+ <var>iWidth</var><span class="punct">,</span> |
+ <var>iHeight</var><span class="punct">,</span> |
+ <var>sOptions</var><span class="punct">)</span></code></p> |
+ |
+ <p>Insert the following link into a HTML document. A click on it will run |
+ this function to open a browser child window:</p> |
+ |
+ <p><code><span class="a"><a href=<span class="attrval" |
+ >"URL"</span> target=<span class="attrval" |
+ >"_blank"</span> onClick=</span><span class="attrval" |
+ >"</span><span class="ident">popUp</span><span class="punct" |
+ >(</span><span class="rswd">this</span><span class="punct" |
+ >.</span>href<span class="punct">,</span> <var>aWidth</var><span |
+ class="punct">,</span> <var>aHeight</var>[<span class="punct">,</span> |
+ <var>sOptions</var>]<span class="punct">)</span>"<span class="a" |
+ >></span>...<span class="a"></a></span></code></p> |
+ |
+ <p>Note that the <code class="a">target</code> attribute is only necessary |
+ to avoid script errors when the link is placed within a frameset where |
+ the <code class="tag"><base target=<span class="attrval" |
+ >"..."</span>></code> element has been used previously.</p> |
+ |
+ <p>The <var>iWidth</var> argument will specify the width in pixels, and the |
+ <var>iHeight</var> argument will specify the height in pixels of the new |
+ window using the features argument string of the <code>JavaScript:<span |
+ class="ident">window</span><span class="punct">.</span><span |
+ class="ident">open</span><span class="punct">()</span></code> method.</p> |
+ |
+ <p>The <var>sOptions</var> argument will modify the default features for the |
+ child window. For this argument pass a string that extends the features |
+ settings for the <code>JavaScript:<span class="ident" |
+ >window</span><span class="punct">.</span><span class="ident" |
+ >open</span><span class="punct">()</span></code> method. You may leave |
+ the comma at first position as it is implemented in the |
+ <code>JSX:<span class="ident">popUp</span><span class="punct" |
+ >()</span></code> method.<br> |
+ Refer the respective documentation for details of window features. |
+ Please do note that if an option is used more than one time, the final |
+ result of that option is undefined. Nevertheless, most browsers will |
+ then use the last option as argument.</p> |
+ |
+ <p>Use the return value of <code><span class="ident">popUp</span><span |
+ class="punct">()</span></code> (<code class="rswd">return false</code> |
+ will cancel the <code>click</code> event) to support users who have |
+ JavaScript available and enabled. All users will receive the window, |
+ those without JavaScript will have the window size defined not by |
+ your definitions but by browser defaults.</p> |
+ |
+ <hr size="1"> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident"><a |
+ href="#OpenChildWin" name="OpenChildWin" id="OpenChildWin" |
+ >OpenChildWin</a></span><span class="punct">(</span><var>sURL</var><span |
+ class="punct">,</span> <var>iWidth</var><span class="punct">,</span> |
+ <var>iHeight</var><span class="punct">,</span> |
+ <var>sOptions</var><span class="punct">)</span></code></p> |
+ |
+ <p>The <code><span class="ident">OpenChildWin</span><span class="punct" |
+ >()</span></code> call is redirected to <code><span class="ident" |
+ >popUp</span><span class="punct">()</span></code> and contained |
+ for backwards compatibility to previous versions only. |
+ It may become obsolete in future versions, use <code><span class="ident" |
+ >popUp</span><span class="punct">()</span></code> instead.</p> |
+ |
+ <hr size="1"> |
+ |
+ <p><code><span class="ident"><a href="#LoadFrame" name="LoadFrame" |
+ id="LoadFrame">LoadFrame</a></span><span class="punct" |
+ >(</span><var>sURL</var><span class="punct">,</span> |
+ <var>targetFrame</var><span class="punct">)</span></code></p> |
+ |
+ <p>Insert the following script within the |
+ <code class="tagname">head</code> element of HTML documents:</p> |
+ |
+ <p><code><span class="scr"><script |
+ type=<span class="attrval">"text/javascript"</span>></span><br> |
+ <span class="ident">LoadFrame</span><span class="punct" |
+ >(</span><var>sURL</var><span class="punct">,</span> |
+ <var>targetFrame</var><span class="punct">);</span><br> |
+ <span class="scr"></script></span></code></p> |
+ |
+ <p>Replace the <var>sURL</var> argument with the URL of the document that |
+ should be loaded within the frame specified with <var>targetFrame</var>. |
+ Double-quoted string recommended. Replace the <var>targetFrame</var> |
+ argument with a valid frame number or identifier.</p> |
+ |
+ <p>You can evaluate the function's success by its return value:</p> |
+ |
+ <table> |
+ <tr valign="top"> |
+ <th align="left">Return Value </th> |
+ <th align="left">Meaning</th> |
+ </tr> |
+ |
+ <tr valign="top"> |
+ <td><code class="rswd">false</code></td> |
+ <td>An invalid number of required arguments has been provided</td> |
+ </tr> |
+ |
+ <tr valign="top"> |
+ <td><var>targetFrame</var></td> |
+ <td>The function failed because the passed frame does not exist</td> |
+ </tr> |
+ |
+ <tr valign="top"> |
+ <td><var>sURL</var></td> |
+ <td>Success</td> |
+ </tr> |
+ </table> |
+ |
+ <p>Please do note that unlike the Go() function (for dropdown objects; |
+ defined in dropdown.js) no exception is raised if the defined frame |
+ does not exist as LoadFrame() is designed to stay silent also in |
+ websites without framesets.</p> |
+ |
+ <hr size="1"> |
+ |
+ <p><code><span class="rswd">boolean</span> <span class="ident" |
+ ><a href="#enlargeImg" name="enlargeImg" |
+ id="enlargeImg">enlargeImg</a></span><span class="punct" |
+ >(</span>string <var><a href="#enlargeImg_sImageURL" |
+ >sImageURL</a></var>, |
+ [string <var><a href="#enlargeImg_sCaption" |
+ >sCaption</a></var>, [number <var><a href="#enlargeImg_iWidth" |
+ >iWidth</a></var>, [number <var><a href="#enlargeImg_iHeight" |
+ >iHeight</a></var>, [<span class="rswd">boolean</span> <var><a |
+ href="#enlargeImg_bCenter">bCenter</a></var>]]]]<span class="punct" |
+ >)</span></code></p> |
+ |
+ <p>Opens a dependent browser child window containing an (enlarged) |
+ image. A primary button mouse click on the image or the window |
+ closes the window.</p> |
+ |
+ <dl> |
+ <dt><var><a name="enlargeImg_sImageURL" id="enlargeImg_sImageURL" |
+ >sImageURL</a></var></dt> |
+ <dd>Required. URL of the (enlarged) image.</dd> |
+ |
+ <dt><var><a name="enlargeImg_sCaption" id="enlargeImg_sCaption" |
+ >sCaption</a></var></dt> |
+ <dd>Optional. Caption of the browser child window. |
+ If not provided, |
+ <var><a href="#enlargeImg_sImageURL">sImageURL</a></var> |
+ will be used as caption.</dd> |
+ |
+ <dt><var><a name="enlargeImg_iWidth" id="enlargeImg_iWidth" |
+ >iWidth</a></var></dt> |
+ <dd>Optional. Width of the browser child window in pixels. |
+ If not provided or <span class="num">0</span>, the window |
+ will be resized to fit image width.</dd> |
+ |
+ <dt><var><a name="enlargeImg_iHeight" id="enlargeImg_iHeight" |
+ >iHeight</a></var></dt> |
+ <dd>Optional. Height of the browser child window in pixels. |
+ If not provided or <span class="num">0</span>, the window |
+ will be resized to fit image height.</dd> |
+ |
+ <dt><var><a name="enlargeImg_bCenter" id="enlargeImg_bCenter" |
+ >bCenter</a></var></dt> |
+ <dd>Optional. If <code class="rswd">true</code>, the window will be |
+ centered on the screen. Note: Use with caution! Not all desktops |
+ return the correct position for the centered window.</dd> |
+ </dl> |
+ |
+ <table> |
+ <tr valign="top"> |
+ <th align="left">Returns:</th> |
+ <td>Always <code class="rswd">false</code> which allows for<br> |
+ <code class="a"><a href=<span class="attrval" |
+ >"..."</span> ... onclick=<span class="attrval" |
+ >"return enlargeImg(...)"</span>>...</a></code></td> |
+ </tr> |
+ </table> |
+ |
+ <hr> |
+ |
+ <h2><a href="#def" name="def" id="def">Expressions Used Herein</a></h2> |
+ <dl> |
+ <dt>null string</dt> |
+ <dd>An empty string that contains no characters, i.e. is of |
+ length 0 (zero).</dd> |
+ |
+ <dt><code>(Expression1 | Expression2 | ...)</code></dt> |
+ <dd>Exclusive selection of expressions in Backus-Naur Form (BNF). |
+ [<a href="http://google.com/search?q=Backus-Naur+Form" |
+ >details</a>]</dd> |
+ |
+ <dt><code><a name="regexp">RegExp</a></code></dt> |
+ <dd>A regular expression encapsulated by the RegExp object. |
+ [<a href="http://web.archive.org/devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/regexp.html#1193136" |
+ >details</a>]</dd> |
+ </dl> |
+ |
+ <h2><a href="#testlist" name="testlist" id="testlist" |
+ >List of Browser Tests</a></h2> |
+ |
+ <p>Tested to work at least with:</p> |
+ |
+ <ul> |
+ <li>Mozilla 1.2b nightly<br> |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) |
+ Gecko/2002102108]</li> |
+ |
+ <li>Mozilla 1.2b nightly<br> |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) |
+ Gecko/2002100604]</li> |
+ |
+ <li>Mozilla 1.2a<br> |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2a) |
+ Gecko/20020911]</li> |
+ |
+ <li>Mozilla 1.1b<br> |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.1b) |
+ Gecko/20020722]</li> |
+ |
+ <li>Netscape 7.0<br> |
+ [Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.0.1) |
+ Gecko/20020823 Netscape/7.0]</li> |
+ |
+ <li>Mozilla 1.0<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0) |
+ Gecko/20020605]</li> |
+ |
+ <li>Mozilla 1.0 Release Candidate 3<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc3) |
+ Gecko/20020523]</li> |
+ |
+ <li>Mozilla 1.0 Release Candidate 2<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc2) |
+ Gecko/20020510]</li> |
+ |
+ <li>Mozilla 1.0 Release Candidate 1 nightly<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.0rc1) |
+ Gecko/20020417]</li> |
+ |
+ <li>Mozilla 0.9.9<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.9) |
+ Gecko/20020311]</li> |
+ |
+ <li>Mozilla 0.9.8<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.8) |
+ Gecko/20020204]</li> |
+ |
+ <li>Mozilla 0.9.6<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.6) |
+ Gecko/20011120]</li> |
+ |
+ <li>Mozilla 0.9.4<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.4) |
+ Gecko/20010913]</li> |
+ |
+ <li>Netscape 6.1<br> |
+ [Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:0.9.2) |
+ Gecko/20010726 Netscape6/6.1]</li> |
+ |
+ <li>Netscape 6.01<br> |
+ [Mozilla/5.0 (X11; U; Linux 2.2.16 i586; de-DE; m18) |
+ Gecko/20010131 Netscape6/6.01]</li> |
+ |
+ <li>Microsoft Internet Explorer 6.0.2600.0000<br> |
+ [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 3.0)]</li> |
+ |
+ <li>Microsoft Internet Explorer 5.50.4807.2300IC</li> |
+ |
+ <li>Microsoft Internet Explorer 5.50.4134.0600IC</li> |
+ |
+ <li>Microsoft Internet Explorer 5.01 [5.00.2919.6307IC]</li> |
+ |
+ <li>Microsoft Internet Explorer 5.00.2314.1003IC</li> |
+ </ul> |
+ |
+ <p>Your user agent <script type="text/javascript"> |
+ document.write('is <b>' + navigator.userAgent + '<\/b>'); |
+ </script>. |
+ If it is not listed and the script works anyway, |
+ send e-mail to add it to the list.</p> |
+ |
+ |
+ <h2><a href="#history" name="history" id="history">Version History</a></h2> |
+ |
+ <p><a href="#first">First version</a></p> |
+ |
+ <h3><a name="last" id="last">1.29.20021009 |
+ / 1.29.2002.10b3 (2002-10-09)</a></h3> |
+ <ul> |
+ <li>Updated documentation: |
+ <ul> |
+ <li>Added link to last version</li> |
+ |
+ <li>Added links to definitions</li> |
+ |
+ <li>Updated definitions</li> |
+ |
+ <li>Updated "null string" term</li> |
+ |
+ <li>Unified Version History layout</li> |
+ </ul></li> |
+ </ul> |
+ |
+ <h3><a name="v1.29.2002.8b" id="v1.29.2002.8b" |
+ >1.29.20020825 / 1.29.2002.8b (2002-08-25)</a></h3> |
+ |
+ <ul> |
+ <li>Updated all functions: |
+ <ul> |
+ <li>changed $ident<code><span class="punct">.</span>arguments</code> |
+ to <code>arguments</code> because it is an intrinsic property |
+ of the function prototype</li> |
+ </ul></li> |
+ </ul> |
+ |
+ <h3><a name="v1.25.2002.5" id="v1.25.2002.5" |
+ >1.25.20020510 / 1.25.2002.5 (2002-05-10)</a></h3> |
+ <ul> |
+ <li>Renamed <code>EnhancedException</code> to |
+ <code>enhancedException</code> and simplified code</li> |
+ |
+ <li>Introduced <var>enhancedCopypright</var>, <var>enhancedAuthor</var> |
+ and <var>enhancedEMail</var> global variables to store script-related |
+ data for <strong>all</strong> script features, including |
+ <code>getObjInfo(...)</code></li> |
+ |
+ <li>Documentation update: |
+ <ul> |
+ <li>Have all code-related identifiers properly formatted</li> |
+ </ul></li> |
+ </ul> |
+ |
+ <h3>1.24.20020506 / 1.24.2002.5 (2002-05-06)</h3> |
+ <ul> |
+ <li>Documentation update: |
+ <ul> |
+ <li>Link to jump to the first version listed in history</li> |
+ |
+ <li>Use of definition lists</li> |
+ |
+ <li>Changed headers</li> |
+ </ul></li> |
+ </ul> |
+ |
+ <h3>1.22.20020422 / 1.22.2002.4 (2002-04-22)</h3> |
+ <ul> |
+ <li>Documentation update: |
+ <ul> |
+ <li>Word wrap at 72 characters (applies to documentation |
+ standards)</li> |
+ |
+ <li>Version History is no longer in columns but separate |
+ paragraphs</li> |
+ </ul></li> |
+ |
+ <li>First version under the terms of the GNU GPL, version 2 or later.</li> |
+ </ul> |
+ |
+ <h3>1.19.20020223 / 1.19.2002.2 (2002-02-23) |
+ / <tt>enhancd2.js</tt> 1.17.2002.2</h3> |
+ <ul> |
+ <li>Updated enlargeImg(...) function:<br> |
+ Fixed bad bug with Mozilla/Netscape. Version of Mozilla newer than |
+ 0.9.6. and of Netscape newer than 6.1 do assign "about:blank" to a |
+ temporary document which causes relative paths used for its resources |
+ to be invalid. Further use of relative paths is provided by an |
+ algorithm, used in JSX:<a href="outline.txt">outline.js</a> before and |
+ now improved, that calculates the correct absolute path when provided |
+ the caller document's URL.</li> |
+ </ul> |
+ |
+ <h3>1.19.20020205 / 1.19.2002.2 (2002-02-05) |
+ / <tt>enhancd2.js</tt> 1.16.2002.2</h3> |
+ <ul> |
+ <li>Updated enlargeImg(...) function:<br> |
+ Changed back to wImage.document because Opera's document.open(...) |
+ function does not return the created object --> dImage is useless |
+ :(</li> |
+ |
+ <li>Documentation update: Changed to HTML format</li> |
+ </ul> |
+ |
+ <h3>1.19.20020126 / 1.19.2002.1 (2002-01-26) |
+ / <tt>enhancd2.js</tt> 1.15.2002.1</h3> |
+ <ul> |
+ <li>Updated enlargeImg(...) function:<br> |
+ Now uses previously defined dImage variable instead of |
+ wImage.document</li> |
+ </ul> |
+ |
+ <h3>1.19.20020118 / 1.19.2002.1 (2002-01-18) |
+ / <tt>enhancd2.js</tt> 1.14.2002.1</h3> |
+ <ul> |
+ <li>Updated enlargeImg(...) function:<br> |
+ Masked / in written closing tags with \/ (backslash-slash) as |
+ described in <a href="http://selfhtml.teamone.de/" |
+ >SELFHTML 8.0</a></li> |
+ |
+ <li>Documentation update:<br> |
+ Word wrap at 72 characters (applies to documentation standards), |
+ and version history is no longer in columns but separate |
+ paragraphs.</li> |
+ </ul> |
+ |
+ <h3>1.16.20010111 / 1.16.2001.1 (2001-01-11)</h3> |
+ <ul> |
+ <li>Moved general documentation to text file for faster processing</li> |
+ </ul> |
+ |
+ <h3>1.15.20001124 / 1.15.2000.11 (2000-11-24)</h3> |
+ <ul> |
+ <li>Improved <code>linkOut(...)</code> function: |
+ <ul> |
+ <li>Now always returns false for combined document use in both |
+ <span class="a">href</span> attribute and |
+ <span class="a">onclick</span> event handler of |
+ <span class="a">A</span>-elements</li> |
+ </ul></li> |
+ </ul> |
+ |
+ <h3>1.14.20001115 / 1.14.2000.11 (2000-11-15)</h3> |
+ <ul> |
+ <li>Improved <code>popUp(...)</code> and <code>OpenChildWin(...)</code> |
+ functions: |
+ <ul> |
+ <li>Now both functions return false for combined document use in both |
+ <span class="a">href</span> attribute and |
+ <span class="a">onclick</span> event handler of |
+ <span class="a">A</span>-elements</li> |
+ </ul></li> |
+ |
+ <li>Established string variable named <var>enhancedVersion</var> to |
+ contain library version</li> |
+ </ul> |
+ |
+ <h3>1.13.20001017 / 1.13.2000.10 (2000-10-17)</h3> |
+ <ul> |
+ <li>Improved inline documentation</li> |
+ </ul> |
+ |
+ <h3>1.12.20000813 / 1.12.2000.8 (2000-08-13)</h3> |
+ <ul> |
+ <li>Tested script file successfully with IE5.5</li> |
+ </ul> |
+ |
+ <h3>1.11.20000703 / 1.11.2000.7 (2000-07-03)</h3> |
+ <ul> |
+ <li>Fixed some mysterious bugs with IE 5.01 on string arguments and large |
+ HTML documents by assigning those strings to local variables and |
+ splitting string assignments (+= Workaround).</li> |
+ |
+ <li>Modified email subject line to Feedback/JSX/enhanced</li> |
+ </ul> |
+ |
+ <h3>1.10.20000610 / 1.10.2000.6 (2000-06-10)</h3> |
+ <ul> |
+ <li>Renamed <code>OpenChildWin(...)</code> function identifier to more |
+ familiar and easier recognized term <code>popUp(...)</code>; |
+ Compatibility to previous file versions is provided by internal call |
+ redirection, though new documents should use the new identifier.</li> |
+ |
+ <li>Improved inline documentation</li> |
+ </ul> |
+ |
+ <h3>1.09.20000327 / 1.09.2000.3 (2000-03-27)</h3> |
+ <ul> |
+ <li>Fixed "location is not an object" bug in |
+ <code>linkOut(...)</code></li> |
+ |
+ <li>Fixed spelling error in <code>EInvalidArg(...)</code> exception</li> |
+ |
+ <li>Fixed global frame ID evaluation bug</li> |
+ </ul> |
+ |
+ <h3>1.08.20000323 / 1.08.2000.3 (2000-03-23)</h3> |
+ <ul> |
+ <li>Improved <code>setStatus(...)</code> function</li> |
+ </ul> |
+ |
+ <h3>1.07.20000320 / 1.07.2000.3 (2000-03-20)</h3> |
+ <ul> |
+ <li>Added <code>setStatus(...)</code> function</li> |
+ </ul> |
+ |
+ <h3><a name="first" id="first">1.05.20000321 |
+ / 1.05.2000.3 (2000-03-21)</a></h3> |
+ <ul> |
+ <li>Fixed and updated <code>linkOut(...)</code> function</li> |
+ </ul> |
+ |
+ <p><a href="#last">Last version</a></p> |
+ </body> |
+</html> |
Index: live/doc/historic/time.txt |
=================================================================== |
--- live/doc/historic/time.txt (nonexistent) |
+++ live/doc/historic/time.txt (revision 520) |
@@ -0,0 +1,86 @@ |
+ORIGINAL FILENAME: time.js |
+PURPOSE: Provides SystemTime JavaScript Class |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.06.2001.1; |
+ See timeVersion variable definition in script file. |
+PART OF: PointedEars' JavaScript Extensions (JSX) |
+DEPENDS ON: no file |
+TESTED WITH: |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ |
+VERSION HISTORY |
+1.08.2003.10 2003-10-09 |
+Changed CSystemTime to SystemTime |
+ |
+1.06.2001.1 2001-01-11 |
+Moved general documentation to text file for faster processing. |
+ |
+1.05.2000.10 2000-10-30 |
+Added fromData(...) method that allows to set props at once. |
+ |
+1.04.2000.10 2000-10-30 |
+Improved initialization; now integers are stored only |
+ |
+1.03.2000.10 2000-10-28 |
+Updated toString(...) method with bShowHours argument. |
+Added dec...(...) methods and updated documentation. |
+Corrected file header. |
+ |
+1.02.2000.10 2000-10-22 |
+Added dayCount property |
+Bugfixed BUG_INC_OVERFLOW |
+ |
+1.01.2000.10 2000-10-22 |
+Added inc...(...) methods and arguments |
+ |
+1.00.2000.10 2000-10-22 |
+Introduced script file moved from HTML inline scripts |
+ |
+COPYRIGHT (c) 2000 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as time.js and appending the |
+following section within the <HEAD></HEAD> tags of that documents: |
+ |
+<script src="time.js" type="text/javascript"></script> |
+ |
+The following items are provided by this script: |
+ |
+SystemTime class |
+__________________ |
+ |
+Properties: hours, minutes, seconds, sec100, dayCount |
+Methods: decHours(...), decMinutes(...), decSeconds(...), decSec100(...), |
+ incHours(...), incMinutes(...), incSeconds(...), incSec100(...), toString() |
+ |
+Description: |
+ |
+The JSX:SystemTime class provides encapsulation for time data independent from the |
+JavaScript:Date class (which encapsulates date and time). |
+ |
+The properties except dayCount define the time value stored in a SystemTime instance. |
+ |
+The dayCount property is a Boolean value that defines whether the hours interval should |
+be restricted from 0 to 23 (dayCount == true) or counted upwards until the |
+upper Integer border (dayCount == false) is reached. Default is (dayCount == false). |
+ |
+Use the dec...(...) methods to decrease and the inc...(...) methods to increase (tick) |
+the value stored in the SystemTime in defined intervals |
+[dec...(...) useful for a countdown display and inc...(...) for a website clock counter]. |
+ |
+Use the fromData(...) method to set all properties at once via the method call. |
+ |
+Use the fromString(...) method to set properties reading a string that contain their values. |
+ |
+Use the toString(...) method to return a string vice-versa that you can assign to the |
+innerHTML property or other String properties for the visualization of the stored data. |
+ |
+The fromString(...) and toString(...) methods are complementary |
+[ t.fromString(t.toString()) should change nothing ]. |
Index: live/doc/historic/back.txt |
=================================================================== |
--- live/doc/historic/back.txt (nonexistent) |
+++ live/doc/historic/back.txt (revision 520) |
@@ -0,0 +1,40 @@ |
+ORIGINAL FILENAME: back.js |
+PURPOSE: Provides German JavaScript PageBack Support |
+SCRIPT LANGUAGE/VERSION: JavaScript 1.2 |
+FILE VERSION: 1.00.2001.1 |
+PART OF: PointedEars' LCARS extensions |
+DEPENDS ON: Any HTML that includes lcars.css with defined span.symbol |
+TESTED WITH: |
+ Microsoft Internet Explorer 5.50, displayed 5.50.4134.0600IC |
+ |
+VERSION HISTORY |
+1.01.2001.1 2001-01-11 Moved general documentation to text file for faster processing. |
+1.00.2000.12 2000-12-05 Introduced script file moved from adapted top.js 1.01.2000.11 |
+ |
+COPYRIGHT (c) 2000 by PointedEars Software (PES). |
+mailto:webmaster@PointedEars.de |
+ |
+TERMS OF USE: |
+This code may be used and modified within the limits described below |
+for non-commercial purposes only and if the copyright above is also |
+mentioned. |
+ |
+HOW TO USE: |
+I recommend to utilize the functions of this script in different |
+HTML documents when saving the entire file as back.js and appending the |
+following section within the <BODY></BODY> as follows: |
+ |
+<p><a href="backfile.htm" class="button" onClick='this.blur(); history.back();'> |
+<script language="JavaScript1.2" src="back.js" type="text/javascript"></script> |
+<noscript> </noscript>[...]</a></p> |
+ |
+You should write the code including the <script></script> section without any (CR)LF |
+to avoid undesired spaces on display. |
+ |
+ |
+Description |
+------------ |
+ |
+Dependent whether W3C-conform DHTML is available (at the creation of this script this was only IE 5 and above), |
+it utilizes the cascading style-sheet (CSS) named span.symbol defined in lcars.css to write the the "back" character |
+(kind of "<") defined by this CSS instead of writing . |
Index: live/doc/files.html |
=================================================================== |
--- live/doc/files.html (nonexistent) |
+++ live/doc/files.html (revision 520) |
@@ -0,0 +1,46 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="language"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>Files — JSX API Documentation</title> |
+ <base target="tree"> |
+ <style type="text/css"> |
+ <!-- |
+ ul { |
+ padding-left: 0; |
+ list-style: none; |
+ } |
+ |
+ li { |
+ margin-left: 0; |
+ } |
+ --> |
+ </style> |
+ </head> |
+ |
+ <body> |
+ <h1>Files</h1> |
+ <ul> |
+ <li><a href="tree">All files</a></li> |
+ <li><tt><a href="tree-ani.js">ani.js</a></tt></li> |
+ <li><tt>array.js</tt></li> |
+ <li><tt>collection.js</tt></li> |
+ <li><tt>css.js</tt></li> |
+ <li><tt>dhtml.js</tt></li> |
+ <li><tt>exception.js</tt></li> |
+ <li><tt>flash.js</tt></li> |
+ <li><tt>global.js</tt></li> |
+ <li><tt>grammar.js</tt></li> |
+ <li><tt>httprequest.js</tt></li> |
+ <li><tt>map.js</tt></li> |
+ <li><tt>math.js</tt></li> |
+ <li><tt>object.js</tt></li> |
+ <li><tt>regexp.js</tt></li> |
+ <li><tt>string.js</tt></li> |
+ <li><tt>types.js</tt></li> |
+ <li><tt>window.js</tt></li> |
+ <li><tt>xpath.js</tt></li> |
+ </ul> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/files.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/index.html |
=================================================================== |
--- live/doc/index.html (nonexistent) |
+++ live/doc/index.html (revision 520) |
@@ -0,0 +1,21 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" |
+ "http://www.w3.org/TR/html4/frameset.dtd"> |
+<html lang="en"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>JSX API Documentation</title> |
+ </head> |
+ |
+ <frameset cols="20%,*"> |
+ <frameset rows="30%,*"> |
+ <frame src="files"> |
+ <frame src="tree" name="tree"> |
+ </frameset> |
+ <frame src="summary" name="main"> |
+ <noframes> |
+ <body> |
+ <h1>JSX API Documentation</h1> |
+ </body> |
+ </noframes> |
+ </frameset> |
+</html> |
\ No newline at end of file |
/live/doc/index.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/summary.html |
=================================================================== |
--- live/doc/summary.html (nonexistent) |
+++ live/doc/summary.html (revision 520) |
@@ -0,0 +1,12 @@ |
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" |
+ "http://www.w3.org/TR/html4/strict.dtd"> |
+<html lang="language"> |
+ <head> |
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
+ <title>Summary — JSX API Documentation</title> |
+ </head> |
+ |
+ <body> |
+ <h1>Summary</h1> |
+ </body> |
+</html> |
\ No newline at end of file |
/live/doc/summary.html |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/doc/style.css |
=================================================================== |
--- live/doc/style.css (nonexistent) |
+++ live/doc/style.css (revision 520) |
@@ -0,0 +1,7 @@ |
+th, td { |
+ vertical-align: top; |
+} |
+ |
+th { |
+ text-align: left; |
+} |
\ No newline at end of file |
/live/doc/style.css |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/.project |
=================================================================== |
--- live/.project (nonexistent) |
+++ live/.project (revision 520) |
@@ -0,0 +1,34 @@ |
+<?xml version="1.0" encoding="UTF-8"?> |
+<projectDescription> |
+ <name>JSX</name> |
+ <comment></comment> |
+ <projects> |
+ </projects> |
+ <buildSpec> |
+ <buildCommand> |
+ <name>org.python.pydev.PyDevBuilder</name> |
+ <arguments> |
+ </arguments> |
+ </buildCommand> |
+ <buildCommand> |
+ <name>org.eclipse.wst.validation.validationbuilder</name> |
+ <arguments> |
+ </arguments> |
+ </buildCommand> |
+ <buildCommand> |
+ <name>org.eclipse.dltk.core.scriptbuilder</name> |
+ <arguments> |
+ </arguments> |
+ </buildCommand> |
+ <buildCommand> |
+ <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> |
+ <arguments> |
+ </arguments> |
+ </buildCommand> |
+ </buildSpec> |
+ <natures> |
+ <nature>org.eclipse.php.core.PHPNature</nature> |
+ <nature>org.eclipse.wst.jsdt.core.jsNature</nature> |
+ <nature>org.python.pydev.pythonNature</nature> |
+ </natures> |
+</projectDescription> |
Index: live/JSdoc/jsdoc-simple.js |
=================================================================== |
--- live/JSdoc/jsdoc-simple.js (nonexistent) |
+++ live/JSdoc/jsdoc-simple.js (revision 520) |
@@ -0,0 +1,84 @@ |
+if (typeof de.pointedears.jsdoc == "undefined") |
+{ |
+ /** |
+ * @namespace |
+ */ |
+ de.pointedears.jsdoc = {}; |
+} |
+ |
+de.pointedears.jsdoc.generate = function (code) { |
+ var rx = /\/\*\*(([^*]|\*[^\/])+)\*\//g, m; |
+ |
+ while ((m = rx.exec(code))) |
+ { |
+ var comment = m[1].replace(/(<pre>[\S\s]+?<\/pre>)|^\s*\*\s*/gm, "$1"); |
+ |
+ comment = comment.replace( |
+ /<title>([\S\s]+?)<\/title>/gi, |
+ function (match, title) { |
+ var newTitle = title + " – " + document.title; |
+ document.title = newTitle; |
+ window.top.document.title = newTitle; |
+ return ""; |
+ }); |
+ |
+ comment = comment.replace( |
+ /@filename\s+(\S+)/, |
+ function (match, filename) { |
+ var title = document.getElementById("title"); |
+ jsx.dom.removeChildren(title, title.childNodes); |
+ title.appendChild(jsx.dom.createElementFromObj({ |
+ type: "tt", |
+ childNodes: [ |
+ filename |
+ ] |
+ })); |
+ |
+ return ""; |
+ }); |
+ |
+ comment = comment.replace( |
+ /@version\s+(.+)/, |
+ function (match, version) { |
+ document.body.appendChild(jsx.dom.createElementFromObj({ |
+ type: "p", |
+ childNodes: [ |
+ { |
+ type: "b", |
+ childNodes: [ |
+ "Version: " |
+ ] |
+ }, " " + version |
+ ] |
+ })); |
+ |
+ return ""; |
+ }); |
+ |
+ comment = comment.replace( |
+ /@section\s+(.+)|@author\s+(.*)|@partof\s+(.*)/g, |
+ function (match, section, author, partof) |
+ { |
+ if (section) |
+ { |
+ return "<h2>" + section + "<\/h2>"; |
+ } |
+ |
+ if (author) |
+ { |
+ return "<p>" + author + "<\/p>"; |
+ } |
+ |
+ if (partof) |
+ { |
+ return "<p>Part of " + partof + "<\/p>"; |
+ } |
+ |
+ return match; |
+ }); |
+ |
+ var div = document.createElement("div"); |
+ div.innerHTML = comment; |
+ document.body.appendChild(div); |
+ } |
+}; |
\ No newline at end of file |
/live/JSdoc/jsdoc-simple.js |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+text/plain |
\ No newline at end of property |
Index: live/search.js |
=================================================================== |
--- live/search.js (nonexistent) |
+++ live/search.js (revision 520) |
@@ -0,0 +1,231 @@ |
+/** |
+ * <title>PointedEars' JSX: Search-String Library</title> |
+ * |
+ * @file search.js |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * @requires types.js |
+ * |
+ * @author Copyright (c) 2000-2004 |
+ * Thomas Lahn <search.js@PointedEars.de> |
+ * |
+ * This program is free software; you can redistribute it and/or |
+ * modify it under the terms of the GNU General Public License |
+ * as published by the Free Software Foundation; either version 2 |
+ * of the License, or (at your option) any later version. |
+ * |
+ * This program is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License (GPL) for more details. |
+ * |
+ * You should have received a copy of the GNU GPL along with this |
+ * program (COPYING file); if not, go to [1] or write to the Free |
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
+ * MA 02111-1307, USA. |
+ * |
+ * [1] <http://www.gnu.org/licenses/licenses.html#GPL> |
+ */ |
+ |
+// Refer search.htm file for general documentation. |
+ |
+/** |
+ * Definition of the SearchString prototype which uses the functions |
+ * above with names beginning with the prototype name, as methods. |
+ * |
+ * @param s : string |
+ */ |
+function SearchString(s) |
+{ |
+ this.version = "1.10.2006082411"; |
+ this.copyright = "Copyright \xA9 2000-2006"; |
+ this.author = "Thomas Lahn"; |
+ this.email = "search.js@PointedEars.de"; |
+ this.path = "http://pointedears.de.vu/scripts/"; |
+ this.URI = this.path + "search.js"; |
+ |
+ if (typeof s != "string") |
+ { |
+ if (typeof location != "undefined" |
+ && typeof location.search != "undefined") |
+ { |
+ s = location.search; |
+ } |
+ else |
+ { |
+ return; |
+ } |
+ } |
+ |
+ s = s.substring(s.lastIndexOf("?") + 1); |
+ this.text = s; |
+ |
+ // Determine method to be used for decoding URI components |
+ var decode = |
+ (jsx.object.isMethodType(typeof decodeURIComponent) |
+ ? decodeURIComponent |
+ : (jsx.object.isMethodType(typeof unescape) |
+ ? unescape |
+ : dummy)); |
+ |
+ /* |
+ * For Mozilla/NS: Replace occurrences of " " with |
+ * character "%A0"; requires linked string.js |
+ */ |
+ this.text = replaceText(this.text, " ", "%A0"); |
+ |
+ this.length = s.length; |
+ |
+ var i; |
+ |
+ for (i = 0; i < this.length; i++) |
+ { |
+ this[i] = s.charAt(i); |
+ } |
+ |
+ this.values = new Object(); |
+ |
+ if (this.length > 0) |
+ { |
+ var value_pair, sName, sValue; |
+ |
+ if (jsx.object.isMethodType(typeof this.text.split)) |
+ { |
+ var value_pairs = this.text.split(new RegExp("[&;]")), len; |
+ for (i = 0, len = value_pairs.length; i < len; i++) |
+ { |
+ var p = value_pairs[i]; |
+ value_pair = p.split("="); |
+ sName = decode(value_pair[0]); |
+ sValue = (value_pair.length > 1 |
+ ? value_pair[1] |
+ : (sName = "", value_pair[0])); |
+ |
+ addValue(this.values, sName, decode(sValue)) |
+ } |
+ } |
+ else |
+ { |
+ for (i = 0; i < this.length;) |
+ { |
+ var idxAmp = this.text.substring(i).indexOf("&"); |
+ // Required by law |
+ (idxAmp < 0) ? (idxAmp = this.length) : (idxAmp += i); |
+ |
+ value_pair = this.text.substring(i, idxAmp); |
+ var idxEquals = value_pair.indexOf("="); |
+ sName = ""; |
+ |
+ if (idxEquals < 0) |
+ { |
+ sValue = value_pair; |
+ } |
+ else |
+ { |
+ sName = value_pair.substring(0, idxEquals); |
+ sValue = value_pair.substring(idxEquals + 1); |
+ } |
+ |
+ addValue(this.values, decode(sName), decode(sValue)); |
+ |
+ i += value_pair.length + 1; |
+ } |
+ } |
+ } |
+} |
+ |
+SearchString.prototype.isName = |
+/** |
+ * @param sName: string |
+ * @param bCaseSensitive: optional boolean = false |
+ * Provide <code>true</code> for case-sensitivity. |
+ * @return <code>true</code> if the name <var>sName</var> exists, |
+ * <code>false</code> otherwise. |
+ */ |
+function searchString_isName(sName, bCaseSensitive) |
+{ |
+ // FIXME: "A" is not found if bCaseSensitive == false |
+ /* |
+ if (!bCaseSensitive) |
+ { |
+ sName = sName.toLowerCase(); |
+ } |
+ */ |
+ |
+ return (typeof this.values[sName] != "undefined"); |
+} |
+ |
+SearchString.prototype.hasValue = |
+/** |
+ * @param sName: string |
+ * @param bCaseSensitive: optional boolean = false |
+ * Provide <code>true</code> for case-sensitivity. |
+ * @return <code>true</code> if the name <var>sName</var> exists and its |
+ * value is not the empty string, <code>false</code> otherwise. |
+ */ |
+function searchString_hasValue(sName, bCaseSensitive) |
+{ |
+ // FIXME (see above) |
+ /* |
+ if (!bCaseSensitive) |
+ { |
+ sName = sName.toLowerCase(); |
+ } |
+ */ |
+ |
+ return (this.isName(sName, bCaseSensitive) && this.values[sName] != ""); |
+} |
+ |
+SearchString.prototype.getValue = |
+/** |
+ * @param sName: string |
+ * @param bCaseSensitive: optional boolean = false |
+ * Provide <code>true</code> for case-sensitivity. |
+ * @param bConvertCode: optional boolean = false |
+ * @return The value of the name <var>sName</var> if it exists, "" otherwise. |
+ */ |
+function searchString_getValue(sName, bCaseSensitive, bConvertCode) |
+{ |
+ // FIXME (see above) |
+ /* |
+ if (!bCaseSensitive) |
+ { |
+ sName = sName.toLowerCase(); |
+ } |
+ */ |
+ |
+ return (this.isName(sName) ? this.values[sName] : ""); |
+} |
+ |
+/** |
+ * Helper function for adding name-value pairs |
+ * as properties of SearchString.values |
+ * |
+ * @param o: object |
+ * @param sName: string |
+ * @param sValue: optional string |
+ */ |
+function addValue(o, sName, sValue) |
+{ |
+ // if there is no property of that name create it |
+ if (typeof o[sName] == "undefined") |
+ { |
+ o[sName] = sValue; |
+ } |
+ // if there is no array property of that name transform the property |
+ else if (typeof o[sName] != "object") |
+ { |
+ o[sName] = [o[sName]]; |
+ } |
+ |
+ // add to the array |
+ if (typeof o[sName] == "object") |
+ { |
+ o[sName][o[sName].length] = sValue; |
+ } |
+} |
+ |
+// Helper function that does nothing, for encoding/decoding URIs |
+function dummy(x) |
+{ |
+ return x; |
+} |
Index: live/grammar.js |
=================================================================== |
--- live/grammar.js (nonexistent) |
+++ live/grammar.js (revision 520) |
@@ -0,0 +1,161 @@ |
+function Grammar(aProductions) |
+{ |
+ this.version = "0.0.1"; |
+ this.productions = aProductions; |
+} |
+ |
+function Production(source, target) |
+{ |
+ this.source = source; |
+ this.target = target; |
+} |
+ |
+Production.prototype.toString = function() { |
+ return this.source + '\n : ' + this.target; |
+}; |
+ |
+function Modifier(expression, type) |
+{ |
+ this.expression = expression; |
+ this.type = type; |
+} |
+ |
+Modifier.prototype.toString = function() { |
+ return this.expression + this.type; |
+}; |
+ |
+function Group(aItems) |
+{ |
+ this.items = aItems; |
+} |
+ |
+Group.prototype.toString = function() { |
+ var result = ""; |
+ for ( var i = 0; i < this.items.length; i++) |
+ { |
+ if (i > 0) |
+ { |
+ result += ' '; |
+ } |
+ result += this.items[i]; |
+ } |
+ return result; |
+}; |
+ |
+function Alternative(aExpressions) |
+{ |
+ this.expressions = aExpressions; |
+} |
+ |
+Alternative.prototype.toString = function() { |
+ var result = ""; |
+ for ( var i = 0; i < this.expressions.length; i++) |
+ { |
+ if (this.expressions[i] instanceof Group) |
+ { |
+ result += "\n"; |
+ } |
+ if (i > 0) |
+ { |
+ result += ' | '; |
+ } |
+ result += this.expressions[i]; |
+ } |
+ |
+ return result; |
+}; |
+ |
+function Expression(value) |
+{ |
+ this.value = value; |
+} |
+ |
+Expression.prototype.toString = function() { |
+ return this.value; |
+}; |
+ |
+function Literal(sValue) |
+{ |
+ this.value = sValue; |
+} |
+ |
+Literal.prototype.toString = function() { |
+ return "'" + this.value + "'"; |
+}; |
+ |
+if (typeof jsx == "undefined") |
+{ |
+ var jsx = {}; |
+} |
+ |
+jsx.grammar = { |
+ Grammar2: function (productions, autoResolve) { |
+ for (var property in productions) |
+ { |
+ productions[property] = { |
+ value: productions[property], |
+ enumerable: true, |
+ writable: true |
+ }; |
+ } |
+ |
+ this.productions = Object.create(null, productions); |
+ if (autoResolve) |
+ { |
+ this.resolve(); |
+ } |
+ }.extend(null, { |
+ /** |
+ * @memberOf jsx.grammar.Grammar2.prototype |
+ */ |
+ resolve: function () { |
+ var productions = this.productions; |
+ for (var symbol in productions) |
+ { |
+ var production = productions[symbol]; |
+ var rxSymbol = /\\\{|\{([^\}]+)\}/g; |
+ var resolverStack = []; |
+ resolverStack.toString = function () { |
+ return this.join(" --> "); |
+ }; |
+ |
+ productions[symbol] = production.replace(rxSymbol, |
+ function resolver (match, symbolRef) { |
+ if (!symbolRef) |
+ { |
+ return match; |
+ } |
+ |
+ if (resolverStack.indexOf(symbolRef) > -1) |
+ { |
+ throw new Error( |
+ "Grammar is not finite, goal symbol '" + symbolRef |
+ + "' is cyclically defined: " + resolverStack); |
+ } |
+ |
+ resolverStack.push(symbolRef); |
+ |
+ var unresolved = productions[symbolRef]; |
+ |
+ if (typeof unresolved != "undefined") |
+ { |
+ /* Resolve references recursively */ |
+ var rxSymbol = /\\\{|\{([^\}]+)\}/g; |
+ var resolved = unresolved.replace(rxSymbol, resolver); |
+ } |
+ else |
+ { |
+ throw new Error( |
+ "Goal symbol '" + symbolRef |
+ + "' referenced in definition of goal symbol '" + symbol |
+ + "' is not defined"); |
+ } |
+ |
+ resolverStack.pop(); |
+ |
+ return resolved; |
+ }); |
+ } |
+ } |
+ }) |
+}; |
\ No newline at end of file |
Index: live/collection.js |
=================================================================== |
--- live/collection.js (nonexistent) |
+++ live/collection.js (revision 520) |
@@ -0,0 +1,431 @@ |
+/** |
+ * <title>PointedEars' Collection Library</title> |
+ * @requires object.js |
+ * |
+ * @section Copyright & Disclaimer |
+ * |
+ * @author (C) 2002-2011 Thomas Lahn <js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+/** |
+ * @section Abstract |
+ * |
+ * A collection in ECMAScript and its implementations is an object |
+ * which has indexed items like an {@link Array} object. |
+ * Unlike an <code>Array</code> object, it also has named items |
+ * which refer to the same data as the indexed items. Each |
+ * item receives a numeric index in order of assignment/addition, |
+ * and if it is given, a name, too. Both indexes and names become |
+ * properties of the collection and are thus accessible via the |
+ * standard property accessor syntax: |
+ * <code><var>object</var>["<var>property</var>"]</code> |
+ * and, if <var>property</var> is an identifier, |
+ * <code><var>object</var>.<var>property</var></code>. |
+ * By internal references it is ensured that an operation on |
+ * an item is performed on both the indexed item and its named |
+ * counterpart. |
+ * |
+ * You could compare this behavior to an associative array in PHP, |
+ * only that ECMAScript has no built-in concept of associative arrays. |
+ * |
+ * @TODO Inherit from jsx.map.Map, remove duplicate methods |
+ */ |
+ |
+/** |
+ * Creates and initializes a <code>Collection</code> object. |
+ * |
+ * @param o : optional Object |
+ * reference used to fill the collection. |
+ * @constructor |
+ */ |
+jsx.Collection = function(o) { |
+ this.version = "0.1.2008120823"; |
+ this.copyright = "Copyright \xA9 2002-2008"; |
+ this.author = "Thomas Lahn"; |
+ this.email = "collection.js@PointedEars.de"; |
+ this.path = "http://pointedears.de/scripts/"; |
+ this.URI = this.path + "collection.js"; |
+// this.docURI = this.path + "collection.htm"; |
+ this.allowExceptionMsg = true; |
+ |
+ this.set(o); |
+}; |
+ |
+jsx.Collection.extend(Array); |
+ |
+/** |
+ * Adds an item to a {@link Collection}. |
+ * |
+ * @param val |
+ * @param name : optional string |
+ * Reference to an object used to fill the collection. |
+ * @return CollectionItem |
+ * the added item |
+ */ |
+jsx.Collection.prototype.add = function (val, name) { |
+ var index = this.items.length; |
+ this.items[index] = new jsx.CollectionItem(val); |
+ |
+ if (name && isNaN(name)) |
+ { |
+ this.items[name] = this.items[index]; |
+ } |
+ |
+ return this.items[index]; |
+}; |
+ |
+/** |
+ * @param o : optional Object |
+ * reference used to append to the collection. |
+ */ |
+jsx.Collection.prototype.addItems = function (o) { |
+ var result = null; |
+ |
+ for (var i in o) |
+ { |
+ /* omit deleted items */ |
+ if (typeof o[i] != "undefined") |
+ { |
+ result = this.add(o[i], i); |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Removes all items from the {@link Collection}. |
+ * |
+ * @type Array |
+ */ |
+jsx.Collection.prototype.clear = function () { |
+ this.items = []; |
+ |
+ if (typeof this.items.map != "function") |
+ { |
+ this.items.map = function (callback, thisObj) { |
+ var a = this; |
+ |
+ if (typeof callback == "function") |
+ { |
+ if (!thisObj) |
+ { |
+ thisObj = this; |
+ } |
+ |
+ a = []; |
+ for (var i = 0, len = this.length; i < len; i++) |
+ { |
+ a[i] = callback.call(thisObj, this[i], i, this); |
+ } |
+ } |
+ else |
+ { |
+ (function() { |
+ eval("throw new TypeError('Collection.prototype.items.map(callback, thisObj):'" |
+ + "+ ' expected function, got ' + typeof thisObj)"); |
+ }()); |
+ } |
+ |
+ return a; |
+ }; |
+ } |
+ |
+ return this.items; |
+}; |
+ |
+jsx.Collection.prototype.keys = function () { |
+ var a = [], o = this.items; |
+ |
+ for (var k in o) |
+ { |
+ a.push(o[k]); |
+ } |
+ |
+ return a; |
+}; |
+ |
+jsx.Collection.prototype.values = function () { |
+ return this.items.map(function(v) { return v; }); |
+}; |
+ |
+/** |
+ * Returns a reference to a new {@link Iterator} for the {@link Collection}. |
+ * |
+ * @return Iterator |
+ */ |
+jsx.Collection.prototype.iterator = function () { |
+ return new jsx.Iterator(this.items); |
+}; |
+ |
+/** |
+ * @param o : optional Object |
+ * reference used to fill the {@link Collection}. |
+ */ |
+jsx.Collection.prototype.set = function (o) { |
+ this.clear(); |
+ return this.addItems(o); |
+}; |
+ |
+/** |
+ * Creates and initializes a <code>ValueCollection</code> object, |
+ * which is a special {@link Collection} that can hold a value. |
+ * |
+ * @param o : Object |
+ * reference used to fill the collection |
+ * @param val |
+ * Value that the object holds |
+ */ |
+jsx.ValueCollection = function(o, val) { |
+ jsx.Collection.call(o); |
+ this.value = val; |
+}; |
+jsx.ValueCollection.extend(jsx.Collection); |
+ |
+/** |
+ * Creates and initializes a <code>CollectionItem</code> object. |
+ * |
+ * @param val |
+ * Value of the item |
+ */ |
+jsx.CollectionItem = function(val) { |
+ this.value = val; |
+}; |
+ |
+/** |
+ * Creates an initializes an <code>Iterator</code> object. |
+ * An iterator iterates over a {@link Collection} such that |
+ * each item of that collection is visited only once. |
+ * |
+ * @param o : Collection |
+ * Iteration target |
+ */ |
+jsx.Iterator = function(o) { |
+ /* properties */ |
+ this.target = o; |
+ this.prevItem = -1; |
+ this.currItem = -1; |
+ this.nextItem = -1; |
+}; |
+ |
+/* prototype methods */ |
+/** |
+ * Returns the item previously visited in the iteration. |
+ * |
+ * @return CollectionItem |
+ * The item previously visited in the iteration. |
+ */ |
+jsx.Iterator.prototype.prev = function () { |
+ var result; |
+ var t = this.target; |
+ |
+ if (t) |
+ { |
+ /* no need to search if already found by hasPrev() */ |
+ if (this.prevItem > -1) |
+ { |
+ this.currItem = this.prevItem; |
+ result = t[this.currItem]; |
+ } |
+ else if (typeof t.length != "undefined") |
+ { |
+ if (this.currItem < 1 || this.currItem > t.length - 1) |
+ { |
+ this.currItem = t.length; |
+ } |
+ |
+ this.nextItem = this.currItem; |
+ |
+ var i = this.currItem; |
+ |
+ /* start from next possible item */ |
+ /* run through only one time */ |
+ while (--i > -1 && typeof t[i] == "undefined") |
+ { |
+ ; |
+ } |
+ |
+ if (typeof t[i] != "undefined") |
+ { |
+ this.currItem = i; |
+ result = t[i]; |
+ } |
+ } |
+ } |
+ |
+ this.prevItem = -1; |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Returns the item that will next be visited in the iteration. |
+ * |
+ * @return CollectionItem |
+ * The item that will next be visited in the iteration. |
+ */ |
+jsx.Iterator.prototype.next = function () { |
+ var |
+ result, |
+ t = this.target; |
+ |
+ if (t) |
+ { |
+ /* no need to search if already found by hasNext() */ |
+ if (this.nextItem > -1) |
+ { |
+ this.currItem = this.nextItem; |
+ result = t[this.currItem]; |
+ } |
+ else if (typeof t.length != "undefined") |
+ { |
+ if (this.currItem < 0 |
+ || this.currItem > t.length - 1) |
+ { |
+ this.currItem = -1; |
+ } |
+ |
+ this.prevItem = this.currItem; |
+ |
+ var i = this.currItem; |
+ |
+ /* start from next possible item */ |
+ /* run through only one time */ |
+ while (++i < t.length && typeof t[i] == "undefined") |
+ { |
+ ; |
+ } |
+ |
+ if (typeof t[i] != "undefined") |
+ { |
+ this.currItem = i; |
+ result = t[i]; |
+ } |
+ else |
+ { |
+ this.currItem = -1; |
+ result = null; |
+ } |
+ } |
+ } |
+ |
+ this.nextItem = -1; |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Returns <code>true</code> if there is a previous item |
+ * in the iteration, i.e. if the current item is not the |
+ * first item and the collection consists of more than |
+ * one item. Returns <code>false</code> otherwise. |
+ * |
+ * @return boolean |
+ * <code>true</code> if there is a previous item |
+ * in the iteration, <code>false</code> otherwise. |
+ */ |
+jsx.Iterator.prototype.hasPrev = function () { |
+ var result = false; |
+ this.prevItem = -1; |
+ var t = this.target; |
+ |
+ if (t) |
+ { |
+ if (this.currItem < 1 |
+ || this.currItem > t.length - 1) |
+ { |
+ this.currItem = t.length; |
+ } |
+ |
+ /* start from next possible item */ |
+ var i = this.currItem; |
+ |
+ /* run through only one time */ |
+ while (--i > -1 && typeof t[i] == "undefined") |
+ { |
+ ; |
+ } |
+ |
+ if (typeof t[i] != "undefined") |
+ { |
+ this.prevItem = i; |
+ result = true; |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Returns <code>true</code> if there is a next item |
+ * in the iteration, i.e. if the current item is not the |
+ * last item and the collection consists of more than |
+ * one item. Returns <code>false</code> otherwise. |
+ * |
+ * @return boolean |
+ * <code>true</code> if there is a next item |
+ * in the iteration, <code>false</code> otherwise. |
+ */ |
+jsx.Iterator.prototype.hasNext = function () { |
+ var result = false; |
+ this.nextItem = -1; |
+ var t = this.target; |
+ |
+ if (t) |
+ { |
+ if (this.currItem < 0 |
+ || this.currItem > t.length - 1) |
+ { |
+ this.currItem = -1; |
+ } |
+ |
+ /* start from next possible item */ |
+ var i = this.currItem; |
+ |
+ /* run through only one time */ |
+ while (++i < t.length && typeof t[i] == "undefined") |
+ { |
+ ; |
+ } |
+ |
+ if (typeof t[i] != "undefined") |
+ { |
+ this.nextItem = i; |
+ result = true; |
+ } |
+ } |
+ |
+ return result; |
+}; |
+ |
+/** |
+ * Removes the current item from the collection. |
+ * |
+ * @type mixed |
+ * @return the next item, <code>undefined</code> if there is none. |
+ */ |
+jsx.Iterator.prototype.remove = function () { |
+ var undef; |
+ delete this.target[this.currItem]; |
+ if (this.hasNext()) |
+ { |
+ return this.next(); |
+ } |
+ |
+ return undef; |
+}; |
\ No newline at end of file |
Index: live/.buildpath |
=================================================================== |
--- live/.buildpath (nonexistent) |
+++ live/.buildpath (revision 520) |
@@ -0,0 +1,5 @@ |
+<?xml version="1.0" encoding="UTF-8"?> |
+<buildpath> |
+ <buildpathentry excluding="test/es-matrix/**|test/es-matrix2/**" kind="src" path=""/> |
+ <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/> |
+</buildpath> |
Index: live/style.css |
=================================================================== |
--- live/style.css (nonexistent) |
+++ live/style.css (revision 520) |
@@ -0,0 +1,112 @@ |
+/* Script documentation style-sheet */ |
+ |
+/* General */ |
+body { |
+ background-color: white; |
+ color: black; |
+} |
+ |
+h1 { |
+ margin-bottom: 0; |
+} |
+ |
+a:link:hover, a:visited:hover { |
+ background-color: transparent; |
+ color: red; |
+ text-decoration: none; |
+} |
+ |
+code { |
+ /* Inconsolata is borken in Safari 5.0 on Wine */ |
+ font-family: Inconsolata, Consolas, monospace; |
+} |
+ |
+/* HTML language elements */ |
+.text { |
+ background-color: transparent; |
+ color: black; |
+} |
+ |
+.entity { |
+ background-color: transparent; |
+ color: black; |
+ font-weight: bold; |
+ font-style: italic; |
+} |
+ |
+.tag, .tagname { |
+ background-color: transparent; |
+ color: navy; |
+} |
+ |
+.img { |
+ background-color: transparent; |
+ color: purple; |
+} |
+ |
+.object { |
+ background-color: transparent; |
+ color: maroon; |
+} |
+ |
+.attrval { |
+ background-color: transparent; |
+ color: blue; |
+} |
+ |
+.scr { |
+ background-color: transparent; |
+ color: #900; |
+} |
+ |
+.a { |
+ background-color: transparent; |
+ color: #090; |
+} |
+ |
+/* JavaScript language elements */ |
+.comm { |
+ background-color: transparent; |
+ color: #999; |
+ font-style: italic; |
+} |
+ |
+.ident { |
+ background-color: transparent; |
+ color: black; |
+ font-weight: bold; |
+} |
+ |
+.rswd { |
+ background-color: transparent; |
+ color: #009; |
+ font-weight: bold; |
+} |
+ |
+.regexp { |
+ background-color: transparent; |
+ color: #900; |
+} |
+ |
+var { |
+ font-style: italic; |
+} |
+ |
+.str { |
+ font-style: italic; |
+} |
+ |
+.num { |
+ background-color: transparent; |
+ color: red; |
+} |
+ |
+.punct { |
+ background-color: transparent; |
+ color: blue; |
+} |
+ |
+.punct2 { |
+ background-color: transparent; |
+ color: #090; |
+} |
\ No newline at end of file |
Index: live/window.js |
=================================================================== |
--- live/window.js (nonexistent) |
+++ live/window.js (revision 520) |
@@ -0,0 +1,445 @@ |
+/** |
+ * <title>Window Function Library</title> |
+ * @file window.js |
+ * @author |
+ * (C) 1999‒2011 Thomas Lahn <window.js@PointedEars.de> |
+ * |
+ * @partof PointedEars' JavaScript Extensions (JSX) |
+ * |
+ * JSX 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. |
+ * |
+ * JSX is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with JSX. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+/* |
+ * Refer window.htm file for general documentation. |
+ * |
+ * This document contains JavaScriptDoc. Refer |
+ * http://pointedears.de/scripts/JSDoc/ |
+ * for details. |
+ */ |
+var windowVersion = "1.29.2009052620"; |
+var windowCopyright = "Copyright \xA9 1999-2009"; |
+var windowAuthor = "Thomas Lahn"; |
+var windowEmail = "window.js@PointedEars.de"; |
+var windowPath = "http://pointedears.de/scripts/"; |
+// var windowDocURL = windowPath + "window.htm"; |
+ |
+/* Script exceptions */ |
+ |
+/** |
+ * @param Msg : string |
+ * @type boolean |
+ * @return false |
+ */ |
+function windowException(Msg) |
+{ |
+ alert( |
+ "window.js " |
+ + windowVersion |
+ + "\n" |
+ + windowCopyright |
+ + " " |
+ + windowAuthor |
+ + " <" |
+ + windowEmail |
+ + ">\n\n" |
+ + Msg); |
+ return false; |
+} |
+ |
+/** |
+ * @param sFunctionName : string |
+ * @param iArg : number |
+ * @return boolean |
+ */ |
+function EInvalidArgNum(sFunctionName, iArg) |
+{ |
+ // if (arguments.length < 2) iArg = "?"; |
+ return windowException( |
+ sFunctionName |
+ + ": The user script did not pass the required number of arguments (" |
+ + iArg |
+ + ").\nRefer documentation in script file for correct function call."); |
+} |
+ |
+/* Script features */ |
+ |
+/** |
+ * @param sCaption : string |
+ * @type boolean |
+ * @return true |
+ */ |
+function setStatus(sCaption) |
+{ |
+ window.status = sCaption; |
+ return true; |
+} |
+ |
+/** |
+ * @type boolean |
+ * @return true |
+ */ |
+function resetStatus() |
+{ |
+ window.status = window.defaultStatus; |
+ return true; |
+} |
+ |
+var sLinkOutMsg_de = |
+ "Dieser Link ist offline nicht verfügbar.\n\n" |
+ + "Wenn Sie mit dem Internet verbunden sind, steht Ihnen die Seite online" |
+ + " zur Verfügung.\n\n" |
+ + "Möchten Sie jetzt eine Verbindung zu dieser Seite herstellen?"; |
+var sLinkOutMsg_us = |
+ "This link is not available offline.\n\n" |
+ + "If you are connected to the Internet, the website is available online.\n\n" |
+ + "Do you wish to connect to this website now?';"; |
+var sLinkOutMsg = sLinkOutMsg_de; |
+ |
+/** |
+ * @param sURL : string |
+ * @param sLink : string |
+ * @param bShowURL : boolean |
+ * @param aTarget : number|string |
+ * @param iWidth : number |
+ * @param iHeight : number |
+ * @param sOptions : string |
+ * @type boolean |
+ * @return false |
+ */ |
+function linkOut(sURL, sLink, bShowURL, aTarget, iWidth, iHeight, sOptions) |
+{ |
+ if (arguments.length < 1) |
+ { |
+ EInvalidArgNum("linkOut", 1); |
+ return false; |
+ } |
+ |
+ var arg = sLinkOutMsg; |
+ /* |
+ * version 1.05.2000.3 update, formerly bShowURL as 2nd argument; |
+ * fixed problem with websites created earlier |
+ */ |
+ if (arguments.length < 3) |
+ { |
+ bShowURL = true; |
+ } |
+ |
+ var oldArg; |
+ if ((sURL != "" && bShowURL == true) |
+ || (arguments.length >= 2 && sLink != "")) |
+ { |
+ oldArg = arg; |
+ arg = "\n\n" + oldArg; |
+ } |
+ |
+ if (sURL != "" && bShowURL) |
+ { |
+ oldArg = arg; |
+ arg = sURL + oldArg; |
+ } |
+ |
+ if (arguments.length >= 2 && sLink != "") |
+ { |
+ if (sURL != "" && bShowURL) |
+ { |
+ oldArg = arg; |
+ arg = sLink + "\n" + oldArg; |
+ } |
+ else |
+ { |
+ oldArg = arg; |
+ arg = sLink + oldArg; |
+ } |
+ } |
+ |
+ if (window.confirm(arg)) |
+ { |
+ var oTarget = document; |
+ if (arguments.length >= 4 |
+ && aTarget != "" |
+ && aTarget.toLowerCase() != "_self") |
+ { |
+ /* |
+ * version 1.05.2000.3 update, formerly neither empty strings |
+ * nor "_self" supported |
+ */ |
+ if (isNaN(aTarget)) |
+ { |
+ if (aTarget.toLowerCase() == "_new" |
+ || aTarget.toLowerCase() == "_blank") |
+ { |
+ popUp(sURL, iWidth, iHeight, sOptions); |
+ return false; |
+ } |
+ oTarget = parent.frames[aTarget].document; |
+ /* and below: v1.09.2000.3 bugfix */ |
+ } |
+ else |
+ { |
+ oTarget = parent.frames[aTarget].document; |
+ } |
+ } |
+ oTarget.location = ""; |
+ oTarget.location.href = sURL; |
+ } |
+ |
+ /* version 1.15.2000.11 update */ |
+ return false; |
+} |
+ |
+/** |
+ * @param sURL : string |
+ * @param iWidth : number |
+ * @param iHeight : number |
+ * @param sOptions : string |
+ * @type boolean |
+ * @return false |
+ */ |
+function popUp(sURL, iWidth, iHeight, sOptions) |
+{ |
+ var sFeatures = "height=" + iHeight + ",width=" + iWidth; |
+ if (arguments.length > 3) |
+ { |
+ sFeatures += "," + sOptions; |
+ } |
+ var wndChild = window.open(sURL, null, sFeatures); |
+ return false; |
+} |
+ |
+/* |
+ * OpenChildWin(...) call redirected to popUp(...) for compatibility to |
+ * previous versions |
+ */ |
+var OpenChildWin = popUp; |
+ |
+/** |
+ * @param sURL : string |
+ * @param targetFrame : number|string |
+ * @return Window |
+ */ |
+function LoadFrame(sURL, targetFrame) |
+{ |
+ if (arguments.length < 2) |
+ { |
+ /* Raise exception if required arguments are missing */ |
+ return EInvalidArgNum("LoadFrame", 2); |
+ } |
+ |
+ if (isNaN(targetFrame)) |
+ { |
+ if (parent.eval(targetFrame)) |
+ { |
+ parent.eval(targetFrame).location.href = sURL; |
+ return sURL; |
+ } |
+ |
+ return targetFrame; |
+ } |
+ |
+ if (parent.frames[targetFrame]) |
+ { |
+ parent.frames[targetFrame].location.href = sURL; |
+ return sURL; |
+ } |
+ |
+ return targetFrame; |
+} |
+var sEnlargeImgTitle_en = "Click to close window"; |
+var sEnlargeImgTitle_de = "Klicken, um Fenster zu schliessen"; |
+var sEnlargeImgTitle = sEnlargeImgTitle_en; |
+ |
+/** |
+ * @param sImageURL : string |
+ * @param sCaption : string |
+ * @param iWidth : number |
+ * @param iHeight : number |
+ * @param bCenter : boolean |
+ * @type boolean |
+ * @return false |
+ */ |
+function enlargeImg(sImageURL, sCaption, iWidth, iHeight, bCenter) |
+{ |
+ var ident = enlargeImg; |
+ var argnum = ident.arguments.length; |
+ if (sImageURL.charAt(0) != "/") |
+ { |
+ /* |
+ * Version 1.17.2002.2 bugfix: |
+ * Calculates absolute image file paths of relative ones |
+ * Fixes bug with Mozilla 0.9.7 and above (includes Netscape 6.1+) |
+ * that generated pages have no path except about:blank which causes |
+ * relative paths for their resources to fail |
+ */ |
+ /* Windows local path */ |
+ var iPathEnd = window.location.pathname.lastIndexOf('\\'); |
+ if (iPathEnd < 0) |
+ { |
+ iPathEnd = window.location.pathname.lastIndexOf('/'); |
+ } |
+ |
+ /* URL */ |
+ if (iPathEnd > -1) |
+ { |
+ /* Extend filename to full path */ |
+ sImageURL = window.location.pathname.substring(0, iPathEnd) |
+ + "/" + sImageURL; |
+ } |
+ } |
+ |
+ if (argnum < 1) |
+ { |
+ return (EInvalidArgNum("Level 2: enlargeImg", 1)); |
+ } |
+ |
+ /* preset also window position and size in the case the temporary script below fails */ |
+ var sOptions = |
+ "toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=yes" |
+ + ((argnum > 2) && !isNaN(iWidth)) ? (",width=" + iWidth + 12) : "" |
+ + ((argnum > 3) && !isNaN(iHeight)) ? (",height=" + iHeight + 32) : "" |
+ + ",left=" |
+ + parseInt(screen.width / 2 - (argnum > 2 |
+ && !isNaN(iWidth) ? iWidth / 2 : 0)) |
+ + ",top=" |
+ + parseInt(screen.height / 2 - (argnum > 3 |
+ && !isNaN(iHeight) ? iHeight / 2 : 0)); |
+ |
+ var w = window.open("", "wndZoom", sOptions); |
+ if (w) |
+ { |
+ var d = w.document; |
+ if (d) |
+ { |
+ d.open("text/html"); |
+ var s = [ |
+ '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"', |
+ ' "http://www.w3.org/TR/html4/loose.dtd">', |
+ '<html>', |
+ ' <head>', |
+ ' <meta http-equiv="Content-Type" content="text/html;' |
+ + ' charset=UTF-8">', |
+ |
+ ' <meta name="generator" value="JSX:window.js{', |
+ + windowVersion + '}:enlargeImg(...) ' + windowCopyright |
+ + ' ' + windowAuthor + ' <' + windowEmail + '>">', |
+ |
+ ' <title>' + ((argnum > 1 && sCaption != "") ? sCaption : sImageURL) |
+ + '<\/title>', |
+ |
+ /* |
+ * temporary script and updated inline code to fix |
+ * BUG_Enlarge:ALWAYS_FIT-TO-IMAGE |
+ */ |
+ ' <script type="text/javascript">', |
+ ' var orig = {};\n', |
+ |
+ ' function fitWindowToImage()', |
+ ' {', |
+ ' var imgWidth = ' |
+ + (argnum > 2 && iWidth != 0 ? iWidth : "document.images[0].width + 12") |
+ + ';', |
+ ' var imgHeight = ' |
+ + (argnum > 3 && iHeight != 0 ? iHeight : "document.images[0].height + 32") |
+ + ';\n', |
+ |
+ /* MSHTML */ |
+ ' if (typeof window.resizeTo == "object")', |
+ ' {', |
+ ' orig.left = window.screenLeft;', |
+ ' orig.top = window.screenTop;', |
+ ' orig.width = window.width;', |
+ ' orig.height = window.height;', |
+ ' window.resizeTo(imgWidth, imgHeight);', |
+ ' }', |
+ /* Gecko */ |
+ ' else if (typeof window.sizeToContent == "function")', |
+ ' {', |
+ ' orig.left = window.screenX;', |
+ ' orig.top = window.screenY;', |
+ ' orig.width = window.innerWidth;', |
+ ' orig.height = window.innerHeight;', |
+ ' window.sizeToContent();', |
+ ' }', |
+ /* NN4 */ |
+ ' else if (typeof document.layers == "object")', |
+ ' {', |
+ ' orig.left = window.screenX;', |
+ ' orig.top = window.screenY;', |
+ ' orig.width = window.innerWidth;', |
+ ' orig.height = window.innerHeight;', |
+ ' window.innerWidth = document.width;', |
+ ' window.innerHeight = document.height;', |
+ ' }', |
+ |
+ (argnum < 5 || argnum > 4 && bCenter && window.moveTo) |
+ ? (' window.moveTo(\n' |
+ + ' screen.width/2 - imgWidth/2,\n' |
+ + ' screen.height/2 - imgHeight/2);\n') |
+ : '', |
+ ' }\n', |
+ |
+ ' function restoreWindowSize()', |
+ ' {', |
+ ' if (typeof orig.left != "undefined"', |
+ ' && typeof orig.top != "undefined"', |
+ ' && typeof window.resizeTo != "undefined")', |
+ ' window.resizeTo(orig.left, orig.top);\n', |
+ ' if (document.all && window.resizeTo)', |
+ ' {', |
+ ' try', |
+ ' {', |
+ ' window.screenLeft = orig.left;', |
+ ' window.screenTop = orig.top;', |
+ ' }', |
+ ' catch (e)', |
+ ' {}', |
+ ' }', |
+ ' else if (typeof window.sizeToContent == "function"', |
+ ' || typeof document.layers == "object")', |
+ ' {', |
+ ' window.screenX = orig.left;', |
+ ' window.screenY = orig.top;', |
+ ' window.innerWidth = orig.width;', |
+ ' window.innerHeight = orig.height;', |
+ ' }', |
+ ' }', |
+ ' <\/script>', |
+ ' <\/head>\n', |
+ ' <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"' |
+ + ' style="margin: 0 !important">', |
+ ' <a href="javascript:restoreWindowSize();window.close();"', |
+ ' title="' + sEnlargeImgTitle + '"', |
+ ' onclick="restoreWindowSize(); window.close(); return false;">' |
+ + '<img', |
+ ' src="' + sImageURL + '" border="0"', |
+ ' onload="fitWindowToImage(this);"><\/a>', |
+ ' <\/body>', |
+ '<\/html>' |
+ ].join("\n"); |
+ d.write(s); |
+ d.close(); |
+ w.focus(); |
+ } |
+ else |
+ { |
+ w.close(); |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+} |
+/* |
+ * Enlarge(...) call redirects to enlargeImg(...) for |
+ * compatibility with previous versions |
+ */ |
+var Enlarge = enlargeImg; |
\ No newline at end of file |
Index: live/document.js |
=================================================================== |
--- live/document.js (nonexistent) |
+++ live/document.js (revision 520) |
@@ -0,0 +1,703 @@ |
+/* |
+ * The following tag used for display in advanced file listings only: |
+ * <title>JavaScript Routines and Objects to Create Temporary Documents</title> |
+ * |
+ * See document.txt file for general documentation. |
+ */ |
+ |
+var documentVersion = "v1.20.2005080609"; |
+var sAuthorCopyright = "\xA9 2000-2005 by Thomas Lahn (PES)"; |
+var sAuthorEMail = "webmaster@PointedEars.de"; |
+ |
+/* Script exceptions */ |
+ |
+var sCopyright = |
+ "document.js " |
+ + documentVersion |
+ + " " |
+ + sAuthorCopyright |
+ + "\nmailto:" |
+ + sAuthorEMail |
+ + "\n\n"; |
+ |
+function HTMLException(Msg) |
+{ |
+ alert( sCopyright + Msg ); |
+ return false; |
+} |
+ |
+function ENoDocument(sFunctionName) |
+{ |
+ // var sFunctionName = (sFunctionName != null) ? sFunctionName + ": " : ""; |
+ |
+ /* |
+ * Passing the name of the function which caused the exception currently not |
+ * possible |
+ */ |
+ return HTMLException( |
+ "The specified target object does not exist." |
+ + " Please check your assignment(s) to the HTMLdoc variable."); |
+} |
+ |
+function EInvalidArgNum(sFunctionName, iArg) |
+{ |
+ return HTMLException( |
+ sFunctionName |
+ + ": The user script did not pass the required number of arguments (" |
+ + iArg |
+ + "). Refer documentation in script file for correct function call."); |
+} |
+ |
+/* Script features */ |
+if (typeof jsx == "undefined") var jsx = {}; |
+ |
+if (typeof jsx.document == "undefined") |
+{ |
+ jsx.document = { |
+ write: function(s) { |
+ return jsx.tryThis( |
+ function() { |
+ document.write(s); |
+ |
+ /* fix circular reference */ |
+ s = null; |
+ |
+ return true; |
+ }, |
+ function() { |
+ /* try without namespaces first (presumably HTML or loose XHTML) */ |
+ var scripts = document.getElementsByTagName("script"); |
+ |
+ if (!scripts || !scripts.length) |
+ { |
+ /* try with namespace (presumably strict XHTML) */ |
+ scripts = document.getElementsByTagNameNS( |
+ document.documentElement.getAttribute("xmlns"), |
+ "script"); |
+ } |
+ |
+ /* Can we locate ourselves at all? */ |
+ if (scripts && scripts.length) |
+ { |
+ var thisScript = scripts[scripts.length - 1]; |
+ var node = thisScript.parentNode.insertBefore( |
+ document.createTextNode(s), |
+ thisScript); |
+ } |
+ |
+ /* fix circular reference */ |
+ s = null; |
+ |
+ return node; |
+ }) || false; |
+ } |
+ }; |
+} |
+ |
+var HTMLdoc = document; |
+ |
+/* Version 1.05.x OOP Extension */ |
+var HTMLinstance = new _HTMLDocument(HTMLdoc); |
+ |
+function docCheck(bRaiseException) |
+{ |
+ if (HTMLdoc) |
+ { |
+ return true; |
+ } |
+ |
+ if (arguments.length = 1 && bRaiseException == true) |
+ { |
+ ENoDocument(docCheck.caller); |
+ } |
+ |
+ return false; |
+} |
+ |
+/* Document Type Definitions and HTML 4.0 Tag Policy URLs */ |
+ |
+/* DTD for HTML 2.0 documents */ |
+var dtdHTML2 = '"-//W3C//DTD HTML 2.0//EN"'; |
+ |
+/* DTD for HTML 3.2 documents */ |
+var dtdHTML32 = '"-//W3C//DTD HTML 3.2//EN"'; |
+ |
+/* DTD for HTML 4.01 documents */ |
+var dtdHTML4 = '"-//W3C//DTD HTML 4.01//EN"'; |
+ |
+/* DTD for HTML 4.01 documents including frameset definition */ |
+var dtdHTML4frm = '"-//W3C//DTD HTML 4.01 Frameset//EN"'; |
+ |
+/* DTD for HTML 4.01 documents containing deprecated elements and attributes */ |
+var dtdHTML4scr = '"-//W3C//DTD HTML 4.01 Transitional//EN"'; |
+ |
+/* URL of DTD for HTML 4.01 documents containing deprecated elements and attribs */ |
+var dtdURL_HTML4dep = '\n "http://www.w3.org/TR/html4/loose.dtd"'; |
+ |
+/* URL of DTD for HTML 4.01 documents that define framesets */ |
+var dtdURL_HTML4frm = '\n "http://www.w3.org/TR/html4/frameset.dtd"'; |
+ |
+/* URL of DTD for documents that use strict HTML 4.01 syntax */ |
+var dtdURL_HTML4str = '\n "http://www.w3.org/TR/html4/strict.dtd"'; |
+ |
+function HTMLdocOpen(sDTD, bReplace) |
+{ |
+ if (!docCheck(true)) return; |
+ |
+ /* |
+ * version 1.08.2000.3 bugfix, formerly: ...length = 2(!) |
+ * and separated sections |
+ */ |
+ |
+ // if( HTMLdoc.location.href != "" ) HTMLdoc.close(); |
+ if (arguments.length == 2 && bReplace == true) |
+ { |
+ HTMLdoc.open("text/html", "replace"); |
+ } |
+ else |
+ { |
+ HTMLdoc.open("text/html"); |
+ } |
+ |
+ if (arguments.length < 1) |
+ { |
+ sDTD = ""; |
+ } |
+ HTMLdoc.writeln("<!DOCTYPE html PUBLIC ", sDTD, ">\n<html>\n"); |
+} |
+ |
+function HTMLdocClose() |
+{ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ HTMLdoc.writeln("</html>"); |
+ HTMLdoc.close(); |
+} |
+ |
+function docWrite(s) |
+{ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ HTMLdoc.write(s); |
+} |
+ |
+function docWriteLn(s) |
+{ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ HTMLdoc.writeln(s); |
+} |
+ |
+var HTMLtagCount = 0; |
+ |
+function HTMLwriteTag(sTag, sAttrib, sContent) |
+{ |
+ var sWrite = ""; |
+ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ if (arguments.length < 1 || sTag == "") |
+ { |
+ EInvalidArgNum("HTMLwriteTag", 1); |
+ return; |
+ } |
+ |
+ /* for better document compression rates */ |
+ |
+ sTag = sTag.toLowerCase(); |
+ |
+ if (arguments.length < 2) |
+ { |
+ /* use default value if argument missing */ |
+ sAttrib = ""; |
+ } |
+ |
+ if (arguments.length < 3) |
+ { |
+ /* use default value if argument missing */ |
+ sContent = ""; |
+ } |
+ |
+ sWrite = "<" + sTag; |
+ |
+ if (sAttrib != "" ) |
+ { |
+ sWrite += " " + sAttrib; |
+ } |
+ |
+ sWrite += ">"; |
+ |
+ if (sContent != "") |
+ { |
+ sWrite += |
+ sContent + "</" + sTag + ">"; |
+ for (var i = 4; i < arguments.length; i++) |
+ { |
+ sWrite += arguments[i]; |
+ } |
+ } |
+ |
+ HTMLdoc.write(sWrite); |
+ HTMLtagCount++; |
+ |
+ /* OOP extension */ |
+ HTMLinstance.tagCount = HTMLtagCount; |
+ |
+ /* |
+ * TODO Bug: Text is written twice into the document when the function |
+ * result is used as argument. Workaround required to uncomment |
+ * return statement. |
+ */ |
+ // return sWrite; |
+} |
+ |
+var HTMLmetaCount = 0; |
+ |
+function HTMLwriteMeta(sName, sHTTPequiv, sContent) |
+{ |
+ if (arguments.length != 3) |
+ { |
+ EInvalidArgNum("HTMLwriteMeta", 3); |
+ return; |
+ } |
+ |
+ if (! docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ if (sName.toLowerCase() != "generator") |
+ { |
+ HTMLdoc.write("<meta "); |
+ |
+ if (sName != "") |
+ { |
+ HTMLdoc.write('name="', sName, '" '); |
+ } |
+ |
+ if (sHTTPequiv != "") |
+ { |
+ HTMLdoc.write('http-equiv="', sHTTPequiv, '" '); |
+ HTMLdoc.writeln('content="', sContent, '">'); |
+ HTMLmetaCount++; |
+ |
+ /* OOP extension */ |
+ HTMLinstance.metaCount = HTMLmetaCount; |
+ } |
+ } |
+} |
+ |
+function HTMLwriteLinkFavIcon(sURL) |
+{ |
+ if (sURL.length > 0) |
+ { |
+ HTMLdoc.HTMLwriteTag("link", 'rel="shortcut icon" href="' + sURL + '"'); |
+ } |
+} |
+ |
+var HTMLscriptCount = 0; |
+ |
+function HTMLwriteScript(sLang, sSrc, sType, sContent) |
+{ |
+ if (sSrc == "" && (arguments.length < 4 || sContent == "")) |
+ { |
+ EInvalidArgNum("HTMLwriteScript", 4); |
+ return; |
+ } |
+ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ if (arguments.length == 0 || sLang == "") |
+ { |
+ sLang = "JavaScript"; |
+ } |
+ |
+ HTMLdoc.write('<script language="', sLang, '"'); |
+ |
+ if (arguments.length < 2) |
+ { |
+ sSrc = ""; |
+ } |
+ |
+ if (sSrc != "") |
+ { |
+ HTMLdoc.write(' src="', sSrc, '"'); |
+ } |
+ |
+ if (arguments.length < 3 || sType == "") |
+ { |
+ sType = "text/javascript"; |
+ } |
+ |
+ if (sType != "") |
+ { |
+ HTMLdoc.write( ' type="', sType, '"' ); |
+ } |
+ |
+ HTMLdoc.write('>'); |
+ |
+ if (arguments.length < 4) |
+ { |
+ sContent = ""; |
+ } |
+ |
+ if (sSrc == "" && sContent != "") |
+ { |
+ HTMLdoc.write('<!--\n', sContent, '\n//-->'); |
+ } |
+ |
+ HTMLdoc.write('</script>\n'); |
+ HTMLscriptCount++; |
+ |
+ /* OOP extension */ |
+ HTMLinstance.scriptCount = HTMLscriptCount; |
+} |
+ |
+var HTMLstyleCount = 0; |
+ |
+function HTMLwriteStyle(sType, sAttrib, sContent) |
+{ |
+ if (sContent == "" || arguments.length < 3) |
+ { |
+ EInvalidArgNum("HTMLwriteStyle", 3); |
+ return; |
+ } |
+ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ if (sType == "") |
+ { |
+ sType = "text/css"; |
+ } |
+ |
+ HTMLdoc.write('<style type="', sType, '"'); |
+ |
+ if (sAttrib != "") |
+ { |
+ HTMLdoc.write( ' ', sAttrib ); |
+ } |
+ |
+ HTMLdoc.write('><!--\n', sContent, '\n//--></style>\n'); |
+ HTMLstyleCount++; |
+ /* OOP extension */ |
+ HTMLinstance.styleCount = HTMLstyleCount; |
+} |
+ |
+function HTMLheadOpen(sTitle) |
+{ |
+ if (!docCheck(true)) return; |
+ |
+ HTMLdoc.writeln( |
+ "<head>\n\n<title>", |
+ sTitle, |
+ '</title>\n\n<meta name="generator" content="document.js ', |
+ documentVersion, |
+ " ", |
+ sAuthorCopyright, |
+ ' (' + sAuthorEMail + ')">'); |
+} |
+ |
+function HTMLheadClose() |
+{ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ HTMLdoc.writeln('\n</head>\n'); |
+} |
+ |
+/** background color */ |
+var clBodyBg = ""; |
+ |
+/** default text color */ |
+var clBodyText = ""; |
+ |
+/** default color for an unvisited link */ |
+var clBodyLink = ""; |
+ |
+/** default color for a visited link */ |
+var clBodyVLink = ""; |
+ |
+/** default color for a selected link */ |
+var clBodyALink = ""; |
+ |
+/** URL of the background image */ |
+var imgBody = ""; |
+ |
+/** Defines whether the background image is a watermark */ |
+var bBodyBgFixed = false; |
+ |
+function HTMLbodyOpen() |
+{ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ HTMLdoc.write( "<body" ); |
+ |
+ if (clBodyBg != "") |
+ { |
+ HTMLdoc.write(' bgcolor="', clBodyBg, '"'); |
+ } |
+ |
+ if (clBodyText != "") |
+ { |
+ HTMLdoc.write(' text="', clBodyText, '"'); |
+ } |
+ |
+ if (clBodyLink != "") |
+ { |
+ HTMLdoc.write(' link="', clBodyLink, '"'); |
+ } |
+ |
+ if (clBodyVLink != "") |
+ { |
+ HTMLdoc.write(' vlink="', clBodyVLink, '"'); |
+ } |
+ |
+ if (clBodyALink != "") |
+ { |
+ HTMLdoc.write(' alink="', clBodyALink, '"'); |
+ } |
+ |
+ if (imgBody != "") |
+ { |
+ HTMLdoc.write(' background="', imgBody, '"'); |
+ } |
+ |
+ if (bBodyBgFixed) |
+ { |
+ HTMLdoc.write(' bgproperties="fixed"'); |
+ } |
+ HTMLdoc.writeln ( ">\n" ); |
+} |
+ |
+function HTMLbodyClose() |
+{ |
+ if (!docCheck(true)) |
+ { |
+ return; |
+ } |
+ |
+ HTMLdoc.writeln('\n</body>\n'); |
+} |
+ |
+/* OOP Support for Multiple Document Access (MDA): Methods and prototype */ |
+ |
+function DocumentListAdd(aItem) |
+{ |
+ this.items.push(aItem); |
+} |
+ |
+function DocumentListRemove() |
+{ |
+ this.items.pop(); |
+} |
+ |
+function DocumentList() |
+{ |
+ /* Properties */ |
+ this.items = new Array(); |
+ |
+ /* Methods */ |
+ this.add = DocumentListAdd; |
+ this.remove = DocumentListRemove; |
+} |
+ |
+var docList = new DocumentList(); |
+ |
+/* General OOP support: Methods, global counter variable and class */ |
+ |
+function HTMLDocumentActivate() |
+{ |
+ HTMLinstance = this; |
+ HTMLdoc = this.target; |
+ clBodyBg = this.clBodyBg; |
+ clBodyText = this.clBodyText; |
+ clBodyLink = this.clBodyLink; |
+ clBodyVLink = this.clBodyVLink; |
+ clBodyALink = this.clBodyALink; |
+ imgBody = this.imgBody; |
+ bBodyBgFixed = this.bBodyBgFixed; |
+ HTMLtagCount = this.tagCount; |
+ HTMLmetaCount = this.metaCount; |
+ HTMLscriptCount = this.scriptCount; |
+ HTMLstyleCount = this.styleCount; |
+} |
+ |
+function HTMLDocumentShowProperties() |
+{ |
+ var sCaller = |
+ (HTMLDocumentShowProperties.caller != null |
+ ? "Caller: \n\n" + HTMLDocumentShowProperties.caller + "\n" |
+ : ""); |
+ |
+ var sResult = |
+ sCopyright |
+ + "Current properties of the HTMLDocument instance named \"" |
+ + this.name |
+ + "\";\nUsed HTMLDocument.showProperties() method:\n\n"; |
+ |
+ for (var Property in this) |
+ { |
+ var isNotMethod = |
+ (String(this[Property]).toLowerCase().substr(0, 9) != "function "); |
+ |
+ var isNotNameProp = |
+ (String(Property).toLowerCase().substr(0, 4) != "name"); |
+ |
+ if (isNotMethod && isNotNameProp) |
+ { |
+ var isString = |
+ (isNaN(this[Property]) || String(this[Property]) == ""); |
+ |
+ var bDblQuote = |
+ (isString |
+ ? '"' |
+ : ""); |
+ |
+ var sProp = String(this[Property]); |
+ |
+ if (sProp == "[object]") bDblQuote = ""; |
+ |
+ sResult += |
+ Property |
+ + " = " |
+ + bDblQuote |
+ + sProp |
+ + bDblQuote |
+ + "\n"; |
+ } |
+ } |
+ |
+ sResult += "\nCreator URL: \"" + document.URL + "\"\n\n" + sCaller; |
+ alert(sResult); |
+} |
+ |
+/** Number of _HTMLDocument instances created by the script caller document */ |
+var HTMLDocumentCount = 0; |
+ |
+/* `HTMLDocument' is a W3C DOM 2 HTML interface literally implemented in Geckos */ |
+function _HTMLDocument(aTarget, sDTD, bReplace, sName) |
+{ |
+ // Properties |
+ if (arguments.length < 1) |
+ { |
+ this.target = HTMLdoc; |
+ } |
+ else |
+ { |
+ if (aTarget) |
+ { |
+ HTMLinstance = this; |
+ this.target = aTarget; |
+ HTMLdoc = this.target; |
+ HTMLtagCount = 0; |
+ HTMLmetaCount = 0; |
+ HTMLscriptCount = 0; |
+ |
+ /* Open doc. automatically on more arg. */ |
+ if (arguments.length > 1) |
+ { |
+ HTMLdocOpen(sDTD, bReplace); |
+ } |
+ } |
+ else |
+ { |
+ /* Error if passed object is not available */ |
+ ENoDocument("_HTMLDocument"); |
+ return; |
+ } |
+ } |
+ |
+ /* "" is v1.08.2000.3 bugfix, formerly used colors of last activated object */ |
+ |
+ /** background color */ |
+ this.clBodyBg = ""; |
+ |
+ /** text color */ |
+ this.clBodyText = ""; |
+ |
+ /** color for an unvisited link */ |
+ this.clBodyLink = ""; |
+ |
+ /** color for a visited link */ |
+ this.clBodyVLink = ""; |
+ |
+ /** color for a selected link */ |
+ this.clBodyALink = ""; |
+ |
+ /** URL of the background image */ |
+ this.imgBody = ""; |
+ |
+ /** Default: background image is no watermark */ |
+ this.bBodyBgFixed = false; |
+ |
+ /** HTML tags written by writeTag(...) method */ |
+ this.tagCount = 0; |
+ |
+ /** <meta> tags written except "generator" */ |
+ this.metaCount = 0; |
+ |
+ /** <script></script> sections written */ |
+ this.scriptCount = 0; |
+ |
+ /** <style></style> sections written */ |
+ this.styleCount = 0; |
+ |
+ /* Increase the number of created _HTMLDocument instances for auto-naming */ |
+ HTMLDocumentCount++; |
+ |
+ if (arguments.length >= 4) |
+ { |
+ /* Recommended to name the object for debug purposes */ |
+ this.name = sName; |
+ } |
+ else |
+ { |
+ this.name = "_HTMLDocument_" + String(HTMLDocumentCount); |
+ } |
+ |
+ /* Methods */ |
+ this.activate = HTMLDocumentActivate; |
+ |
+ /* DEBUG */ |
+ this.showProperties = HTMLDocumentShowProperties; |
+ this.checkTarget = docCheck; |
+ this.open = HTMLdocOpen; |
+ this.close = HTMLdocClose; |
+ this.write = docWrite; |
+ this.writeLn = docWriteLn; |
+ this.writeTag = HTMLwriteTag; |
+ this.writeMeta = HTMLwriteMeta; |
+ this.writeScript = HTMLwriteScript; |
+ this.writeStyle = HTMLwriteStyle; |
+ this.headOpen = HTMLheadOpen; |
+ this.headClose = HTMLheadClose; |
+ this.bodyOpen = HTMLbodyOpen; |
+ this.bodyClose = HTMLbodyClose; |
+} |
+ |
+/* Raise exception if not processed from a web browser */ |
+if (! document) |
+{ |
+ ENoBrowser(); |
+} |
\ No newline at end of file |
Index: live/enhancd2.js |
=================================================================== |
--- live/enhancd2.js (nonexistent) |
+++ live/enhancd2.js (revision 520) |
@@ -0,0 +1,434 @@ |
+/* |
+ The following tag is for display in advanced filelists only: |
+ <TITLE>Level-2 Enhanced Website Features</title> |
+ |
+ enhancd2.js |
+ Part of PointedEars' JavaScript Extensions (JSX) |
+ Copyright (c) 2001-2002 Thomas Lahn <PointedEars@gmx.de> |
+ |
+ This code may be distributed freely under the terms of the |
+ GNU General Public License; either version 2 of the License |
+ or (at your option) any later version. |
+ See http://www.gnu.org/copyleft/gpl.html for details. |
+ |
+ Refer enhancd2.htm file for general documentation. |
+*/ |
+ |
+var enhanced2Version = "1.23.20080120"; |
+var enhanced2Copyright = "Copyright � 2000-2008"; |
+var enhanced2Author = "Thomas Lahn"; |
+var enhanced2Email = "PointedEars@gmx.de"; |
+var enhanced2DocURL = "http://www.tu-ilmenau.de/~thla-in/scripts/enhancd2.htm"; |
+ |
+function linkOutWin(sURL, sCaption, bShowURL) { |
+ return(linkOut( sURL, sCaption, bShowURL, "_new", 0, 0, "fullscreen=no,channelmode=no,toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,top=0,left=0" )); |
+} |
+ |
+var sEnlargeImgTitle_en = "Click to close window"; |
+var sEnlargeImgTitle_de = "Klicken, um Fenster zu schließen"; |
+var sEnlargeImgTitle = sEnlargeImgTitle_en; |
+ |
+function enlargeImg(sImageURL, sCaption, iWidth, iHeight, bCenter) { |
+/* PointedEars' JavaScript Extensions (JSX) |
+ Copyright (c) 2000-2002 Thomas Lahn <PointedEars@gmx.de> |
+ Protected under the terms of the GNU General Public License. |
+ See http://www.fsf.org/copyleft/gpl.html for details. |
+ |
+ JSX:enhancd2.js:enlargeImg |
+ |
+ Opens a dependent browser child window containing an (enlarged) image. |
+ A primary button mouse click on the image or the window closes the |
+ window. |
+ |
+ Arguments: |
+ |
+ sImageURL Required. URL of the (enlarged) image. |
+ sCaption Optional. Caption of the browser child window. |
+ If not provided, sImageURL will be used as caption. |
+ iWidth Optional. Width of the browser child window in pixels. |
+ If not provided or 0, the window will be resized |
+ to fit image width. |
+ iHeight Optional. Height of the browser child window in pixels. |
+ If not provided or 0, the window will be resized |
+ to fit image height. |
+ bCenter Optional. If true, the window will be centered on |
+ the screen. |
+ Note: Use with caution! Not all desktops return |
+ the correct position for the centered window. |
+ |
+ Return value: |
+ |
+ Always false which allows |
+ <a href="..." ... onclick="return enlargeImg(...);"> |
+*/ |
+ |
+ var ident = enlargeImg; |
+ var argnum = ident.arguments.length; |
+ var wImage = false; |
+ if (sImageURL.charAt(0) != "/") { |
+ // Version 1.17.2002.2 bugfix: |
+ // Calculates absolute image file paths of relative ones |
+ // Fixes bug with Mozilla 0.9.7 and above (includes Netscape 6.1+) |
+ // that generated pages have no path except about:blank which causes |
+ // relative paths for their resources to fail |
+ var iPathEnd = location.pathname.lastIndexOf('\\'); |
+ // Windows local path |
+ if (iPathEnd < 0) |
+ iPathEnd = location.pathname.lastIndexOf('/'); |
+ // URL |
+ if (iPathEnd > -1) // Extends filename to full path |
+ sImageURL = location.pathname.substring(0, iPathEnd) + "/" + sImageURL; |
+ } |
+ if (argnum < 1) return(EInvalidArgNum("Level 2: enlargeImg", 1)); |
+ |
+// preset also window position and size in the case the temporary script below fails |
+ var sOptions = "toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=yes" |
+ + (((argnum > 2) && !isNaN(iWidth)) ? (",width=" + iWidth + 12) : "") |
+ + (((argnum > 3) && !isNaN(iHeight)) ? (",height=" + iHeight + 32) : "") |
+ + ",left=" |
+ + parseInt(screen.width/2 |
+ - (((argnum > 2) && !isNaN(iWidth))?(iWidth/2):0)) |
+ + ",top=" |
+ + parseInt(screen.height/2 |
+ - (((argnum > 3) && !isNaN(iHeight))?(iHeight/2):0)); |
+ |
+ var wImage = window.open(null, "wndZoom", sOptions); |
+ |
+ if (wImage) |
+ { |
+ var dImage = wImage.document; |
+ dImage.open("text/html"); |
+ |
+ var a = new Array( |
+ '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', |
+ '<html>', |
+ ' <head>', |
+ ' <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">', |
+ ' <meta name="generator" value="JSX:enhancd2.js{' |
+ + enhanced2Version + '}:enlargeImg(...) ' + enhanced2Copyright |
+ + ' ' + enhanced2Author + ' <' + enhanced2Email + '>">', |
+ ' <title>' + ((argnum > 1 && sCaption != "") ? sCaption : sImageURL), |
+ |
+ // temporary script and updated inline code to fix BUG_Enlarge:ALWAYS_FIT-TO-IMAGE |
+ ' <\/title>', |
+ ' <script type="text/javascript">', |
+ ' // <![CDATA[', |
+ ' function fitWindowToImage() {', |
+ ' var imgWidth = ' + (((argnum > 2) && (iWidth != 0)) ? iWidth : ("document.images[0].width + 12")) + ';', |
+ ' var imgHeight = ' + (((argnum > 3) && (iHeight != 0)) ? iHeight : ("document.images[0].height + 32")) + ';', |
+ ' if (document.all) window.resizeTo(imgWidth, imgHeight);', |
+ ' else if (window.sizeToContent) window.sizeToContent();', |
+ ' else if (document.layers) { window.innerWidth = document.width; window.innerHeight = document.height; }', |
+ (argnum < 5 || (argnum > 4 && bCenter)) |
+ ? ' window.moveTo(screen.width/2 - imgWidth/2, screen.height/2 - imgHeight/2);' |
+ : '', |
+ ' }', |
+ ' // ]]>', |
+ ' <\/script>', |
+ ' <\/head>', |
+ ' <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"' |
+ + ' style="margin: 0px">', |
+ ' <a href="#" title="' |
+ + sEnlargeImgTitle + '" onclick="window.close(); return false;">' |
+ + '<img src="' + sImageURL + '" border="0"' |
+ + ' onload="fitWindowToImage(this);"><\/a>', |
+ ' <\/body>', |
+ '<\/html>' |
+ ); |
+ |
+ dImage.write(s); |
+ dImage.close(); |
+ wImage.focus(); |
+ } |
+ return(false); |
+} |
+ |
+// Enlarge(...) call redirects to enlargeImg(...) for compatibility with previous versions |
+ |
+function Enlarge(sImageURL, sCaption, iWidth, iHeight) { |
+ switch(Enlarge.arguments.length) { |
+ case 0: { enlargeImg(); break; } |
+ case 1: { enlargeImg(sImageURL); break; } |
+ case 2: { enlargeImg(sImageURL, sCaption); break; } |
+ case 3: { enlargeImg(sImageURL, sCaption, iWidth); break; } |
+ case 4: { enlargeImg(sImageURL, sCaption, iWidth, iHeight); } |
+ } |
+} |
+ |
+var colMouseout = "#000000"; |
+var colMouseover = "#ffffff"; |
+ |
+function hoverImg(imgID, state) { |
+ var img = "null"; |
+ if (document.all) |
+ img = document.all(imgID); |
+ else if (document.getElementById) |
+ img = document.getElementById(imgID); |
+ if (typeof img == "object") { |
+ var col = ""; |
+ switch (state) { |
+ case 0: col = colMouseout; break; |
+ default: col = colMouseover; break; |
+ } |
+ if (col != "") img.style.borderColor = col; |
+ } |
+ return true; |
+} |
+ |
+function TTZdescr(iGMToffsetMins, sDescr) { |
+ this.iGMToffsetMins = iGMToffsetMins; |
+ this.sDescr = sDescr; |
+} |
+ |
+function TDateNames_getTZdescr(iGMToffsetMins) { |
+ for (var i = 0; i < this.aTZdescr.length; i++) { |
+ if (this.aTZdescr.iGMToffsetMins == iGMToffsetMins) |
+ return (this.aTZdescr.sDescr); |
+ } |
+} |
+ |
+function TDateNames( |
+ aaShortWeekdayNames, aaMedWeekdayNames, aaLongWeekdayNames, |
+ aaShortMonthNames, aaMedMonthNames, aaLongMonthNames, |
+ aaTZdescr) { |
+/* |
+ JSX:enhancd2.js:TDateNames(...) |
+ |
+ Prototype for weekday and month names |
+ |
+ Properties: |
+ aShortWeekdayNames |
+ aMedWeekdayNames |
+ aLongWeekdayNames |
+ aShortMonthNames |
+ aMedMonthNames |
+ aLongMonthNames |
+ aTZdescr |
+ |
+ Methods: |
+ getTZdescr(...) |
+ |
+ Pass arrays containing the respective strings as arguments |
+ to set properties on creation of object. |
+*/ |
+// var iArgNum = TDateNames.arguments.length; |
+ this.aShortWeekdayNames = aaShortWeekdayNames || new Array(7); |
+ this.aMedWeekdayNames = aaMedWeekdayNames || new Array(7); |
+ this.aLongWeekdayNames = aaLongWeekdayNames || new Array(7); |
+ this.aShortMonthNames = aaShortMonthNames || new Array(12); |
+ this.aMedMonthNames = aaMedMonthNames || new Array(12); |
+ this.aLongMonthNames = aaLongMonthNames || new Array(12); |
+ this.aTZdescr = aaTZdescr || new Array(); |
+ |
+ this.getTZdescr = TDateNames_getTZdescr; |
+} |
+ |
+var cDateLblOpen = "_"; // A unique date label begins with this |
+var cDateLblClose = "_"; // A unique date label ends with this |
+ |
+function getDateFmt(dDate, sFormat, oDateNames) { |
+/* |
+ JSX:enhancd2.js:getDateFmt(...) |
+ |
+ Returns the dDate value as a formatted string as specified with |
+ sFormat. Use the following format labels enclosed in the |
+ characters defined above with the cDateLbl... global variables: |
+ |
+ CC Century (19 if not supported by script engine). |
+ yyyy Year with century. Please note that if the script engine's |
+ Date.getYear(...) returns only two characters for year, |
+ century is set to 19 (02 becomes 1902). yyyy is equal to |
+ CCyy. |
+ yy Year without century |
+ MMMM Long name of month |
+ MMM Medium name of month |
+ MM Short name of month |
+ 0M Two-digit month number (preceded by "0" if smaller than 10) |
+ M Month number |
+ dddd Long name of weekday |
+ ddd Medium name of weekday |
+ dd Short name of weekday |
+ 0d Two-digit day number (preceded by "0" if smaller than 10) |
+ d Day number. |
+ hh Two-digit hours (preceded by "0" if smaller than 10) |
+ h Hours |
+ mm Two-digit minutes (preceded by "0" if smaller than 10) |
+ m Minutes |
+ ss Two-digit seconds |
+ s Seconds |
+ SS Three-digit milliseconds (with leading zeroes) |
+ S Milliseconds (if supported by script engine, otherwise "0"). |
+ TTTTT Timezone description. oDateNames.aTimeZones required. |
+ TTTT Timezone offset to GMT in hh:mm (with leading zero). |
+ TTT Timezone offset to GMT in h:mm. |
+ TT Timezone offset to GMT as two-digit minutes (with leading zero) |
+ T Timezone offset to GMT in minutes. |
+*/ |
+ var iArgNum = getDateFmt.arguments.length; |
+ if (iArgNum < 1) |
+ return false; |
+ if ((iArgNum < 2) || (sFormat.length == 0)) |
+ return String(dDate); |
+ if (iArgNum > 2) |
+ var ooDateNames = oDateNames; |
+ else |
+ // Default (english) weekdays, month labels and timezone descriptions |
+ ooDateNames = new TDateNames( |
+ new Array("Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"), |
+ new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"), |
+ new Array( |
+ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", |
+ "Friday", "Saturday" |
+ ), |
+ new Array( |
+ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", |
+ "Sep", "Oct", "Nov", "Dec" |
+ ), |
+ new Array( |
+ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", |
+ "Sep", "Oct", "Nov", "Dec" |
+ ), |
+ new Array( |
+ "January", "February", "March", "April", "May", "June", |
+ "July", "August", "September", "October", "November", "December" |
+ ), |
+ new Array( |
+ new TTZdescr(-60, "WET"), |
+ new TTZdescr( 0, "GMT"), |
+ new TTZdescr( 60, "CET"), |
+ new TTZdescr(120, "CEST/EET") |
+ ) |
+ ); |
+ var sShortWeekday = ooDateNames.aShortWeekdayNames[dDate.getDay()]; |
+ var sMedWeekday = ooDateNames.aMedWeekdayNames[dDate.getDay()]; |
+ var sLongWeekday = ooDateNames.aLongWeekdayNames[dDate.getDay()]; |
+ var sShortMonth = ooDateNames.aShortMonthNames[dDate.getMonth()]; |
+ var sMedMonth = ooDateNames.aMedMonthNames[dDate.getMonth()]; |
+ var sLongMonth = ooDateNames.aLongMonthNames[dDate.getMonth()]; |
+ var iYear = dDate.getYear(); |
+ if (iYear < 100) |
+ iYear += 1900; |
+ var sLongYear = String(iYear); |
+ var sShortYear = sLongYear.substr(sLongYear.length - 2, 2); |
+ var sMonth = String(dDate.getMonth() + 1); |
+ var sDay = String(dDate.getDate()); |
+ var sHours = String(dDate.getHours()); |
+ var sMins = String(dDate.getMinutes()); |
+ var sSecs = String(dDate.getSeconds()); |
+ if (dDate.getMilliseconds) |
+ var sSecs1000 = String(dDate.getMilliseconds()); |
+ else |
+ var sSecs1000 = "0"; |
+ var sTZmins = String(-dDate.getTimezoneOffset()); |
+ var iTZhours = Math.floor(-dDate.getTimezoneOffset() / 60); |
+ var iTZmins = ((-dDate.getTimezoneOffset() / 60) + iTZhours) * 60; |
+ var sTZhoursMins = String(iTZhours) + ":" + ((iTZmins < 10) ? "0" : "") + String(iTZmins); |
+ var sTZhours2Mins = ((iTZhours < 10) ? "0" : "") + String(iTZhours) + ":" + ((iTZmins < 10) ? "0" : "") + String(iTZmins); |
+ var sTZdescr = ooDateNames.getTZdescr(-dDate.getTimezoneOffset()); |
+ alert(ooDateNames); |
+ |
+ sFormat = replaceText(sFormat, cDateLblOpen + "yyyy" + cDateLblClose, |
+ sLongYear); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "yy" + cDateLblClose, |
+ sShortYear); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "MMMM" + cDateLblClose, |
+ sLongMonth); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "MMM" + cDateLblClose, |
+ sMedMonth); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "MM" + cDateLblClose, |
+ sShortMonth); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "0M" + cDateLblClose, |
+ ((sMonth.length < 2) ? "0" + sMonth : sMonth)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "M" + cDateLblClose, |
+ sMonth); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "dddd" + cDateLblClose, |
+ sLongWeekday); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "ddd" + cDateLblClose, |
+ sMedWeekday); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "dd" + cDateLblClose, |
+ sShortWeekday); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "0d" + cDateLblClose, |
+ ((sDay.length < 2) ? "0" + sDay : sDay)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "d" + cDateLblClose, |
+ sDay); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "hh" + cDateLblClose, |
+ ((sHours.length < 2) ? "0" + sHours : sHours)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "h" + cDateLblClose, |
+ sHours); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "mm" + cDateLblClose, |
+ ((sMins.length < 2) ? "0" + sMins : sMins)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "m" + cDateLblClose, |
+ sMins); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "ss" + cDateLblClose, |
+ ((sSecs.length < 2) ? "0" + sSecs : sSecs)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "SSS" + cDateLblClose, |
+ ((sSecs1000.length < 3) ? "0" : "") + |
+ ((sSecs1000.length < 2) ? "0" : "") + sSecs1000); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "SS" + cDateLblClose, |
+ ((sSecs1000.length < 3) ? "0" : "") + |
+ ((sSecs1000.length < 2) ? "0" : "") + sSecs1000); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "S" + cDateLblClose, |
+ sSecs1000); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "TTTTT" + cDateLblClose, |
+ sTZdescr); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "TTTT" + cDateLblClose, |
+ sTZhours2Mins); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "TTT" + cDateLblClose, |
+ sTZhoursMins); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "TT" + cDateLblClose, |
+ (iTZmins < 10) ? "0" + iTZmins : String(iTZmins)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "T" + cDateLblClose, |
+ String(iTZmins)); |
+ |
+ return sFormat; |
+} |
+ |
+// German weekdays, month labels and timezone descriptions |
+var oDateNames_de = new TDateNames( |
+ new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"), |
+ new Array("Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"), |
+ new Array( |
+ "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", |
+ "Freitag", "Samstag" |
+ ), |
+ new Array( |
+ "Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", |
+ "Sep", "Okt", "Nov", "Dez" |
+ ), |
+ new Array( |
+ "Jan", "Feb", "M�r", "Apr", "Mai", "Jun", "Jul", "Aug", |
+ "Sep", "Okt", "Nov", "Dez" |
+ ), |
+ new Array( |
+ "Januar", "Februar", "M�rz", "April", "Mai", "Juni", |
+ "Juli", "August", "September", "Oktober", "November", "Dezember" |
+ ), |
+ new Array( |
+ new TTZdescr(-60, "WEZ"), |
+ new TTZdescr( 0, "GMT"), |
+ new TTZdescr( 60, "MEZ"), |
+ new TTZdescr(120, "MESZ/OET") |
+ ) |
+); |
+ |
+ |
+function playSound( sSoundFile, Loop, sAttrib ) { |
+ if( playSound.arguments.length < 2 ) |
+ return(EInvalidArgNum( "Level 2: playSound", 2 )); |
+ if( document.all ) { |
+ var sAdjacent = "<bgsound "; |
+ if( (playSound.arguments.length == 3) && (sAttrib.length != "") ) { |
+ sAdjacent += sAttrib; |
+ sAdjacent += " "; |
+ } |
+ sAdjacent += "src=\""; |
+ sAdjacent += sSoundFile; |
+ sAdjacent += "\" loop=\""; |
+ if( isNaN(Loop) ) |
+ sAdjacent += Loop; |
+ else |
+ sAdjacent += String(Loop); |
+ sAdjacent += "\">"; |
+ document.all.tags("head")[0].insertAdjacentHTML( "BeforeEnd", sAdjacent ); |
+ } |
+} |
Index: live/time.js |
=================================================================== |
--- live/time.js (nonexistent) |
+++ live/time.js (revision 520) |
@@ -0,0 +1,549 @@ |
+/** |
+ * <title>PointedEars' JSX: Time Prototypes and Functions</title> |
+ * |
+ * WARNING: Refactoring in progress. Do not link to this resource. |
+ * Refer time.txt for general documentation. |
+ * |
+ * @requires string.js (for replaceText) |
+ * @deprecated requires enhancd2.js |
+ */ |
+/* |
+ * The original source file |
+ * _time.js/1.09/2003-10/time.js |
+ * contains a complete documentation written in JSdoc, see |
+ * <http://pointedears.de/scripts/JSdoc/> for details. |
+ * |
+ * Since JSdoc is not yet ready for production purposes to |
+ * generate a HTML documentation from these comments and |
+ * including them in the production version means about 25% |
+ * of code overhead, most of the JSdoc comments have been |
+ * stripped from this file. |
+ */ |
+ |
+var timeVersion = "1.09.2003.10"; |
+ |
+// Global variables |
+ |
+var decimalSeparator = "."; |
+var timeSeparator = ":"; |
+ |
+// Method definitions |
+ |
+function SystemTime_decHours(iUnits) |
+{ |
+ (SystemTime_decHours.arguments.length > 0 |
+ ? this.hours -= iUnits |
+ : this.hours--); |
+ |
+ if (this.dayCount) |
+ { |
+ while (this.hours < 0){this.hours += 24;} |
+ } |
+ |
+ return this.hours; |
+} |
+ |
+function SystemTime_decMinutes(iUnits) |
+{ |
+ (SystemTime_decMinutes.arguments.length > 0 |
+ ? this.minutes -= iUnits |
+ : this.minutes--); |
+ |
+ while (this.minutes < 0) |
+ { |
+ this.decHours(); |
+ this.minutes += 60; |
+ } |
+ |
+ return this.minutes; |
+} |
+ |
+function SystemTime_decSeconds(iUnits) |
+{ |
+ (SystemTime_decSeconds.arguments.length > 0 |
+ ? this.seconds -= iUnits |
+ : this.seconds--); |
+ |
+ while (this.seconds < 0) |
+ { |
+ this.decMinutes(); |
+ this.seconds += 60; |
+ } |
+ |
+ return this.seconds; |
+} |
+ |
+function SystemTime_decSec100(iUnits) |
+{ |
+ (SystemTime_decSec100.arguments.length > 0 |
+ ? this.sec100 -= iUnits |
+ : this.sec100--); |
+ |
+ while (this.sec100 < 0) |
+ { |
+ this.decSeconds(); |
+ this.sec100 += 1000; |
+ } |
+ |
+ return this.sec100; |
+} |
+ |
+function SystemTime_incHours(iUnits) |
+{ |
+ (SystemTime_incHours.arguments.length > 0 |
+ ? this.hours += iUnits |
+ : this.hours++); |
+ |
+ if (this.dayCount) |
+ { |
+ while (this.hours > 23){this.hours -= 24;} |
+ } |
+ |
+ return this.hours; |
+} |
+ |
+function SystemTime_incMinutes(iUnits) |
+{ |
+ (SystemTime_incMinutes.arguments.length > 0 |
+ ? this.minutes += iUnits |
+ : this.minutes++); |
+ |
+ while (this.minutes > 59) |
+ { |
+ this.incHours(); |
+ this.minutes -= 60; |
+ } |
+ |
+ return this.minutes; |
+} |
+ |
+function SystemTime_incSeconds(iUnits) |
+{ |
+ (SystemTime_incSeconds.arguments.length > 0 |
+ ? this.seconds += iUnits |
+ : this.seconds++); |
+ |
+ while (this.seconds > 59) |
+ { |
+ this.incMinutes(); |
+ this.seconds -= 60; |
+ } |
+ |
+ return this.seconds; |
+} |
+ |
+function SystemTime_incSec100(iUnits) |
+{ |
+ (SystemTime_incSec100.arguments.length > 0 |
+ ? this.sec100 += iUnits |
+ : this.sec100++); |
+ |
+ while (this.sec100 > 999) |
+ { |
+ this.incSeconds(); |
+ this.sec100 -= 1000; |
+ } |
+ |
+ return this.sec100; |
+} |
+ |
+function SystemTime_fromData(iHours, iMinutes, iSeconds, iSec100, bDayCount) |
+{ |
+ var argnum = SystemTime_fromString.arguments.length; |
+ |
+ if (argnum > 0) |
+ { |
+ this.hours = Math.floor(Math.abs(Number(iHours))); |
+ if (argnum > 1) |
+ { |
+ this.minutes = Math.floor(Math.abs(Number(iMinutes))); |
+ if (argnum > 2) |
+ { |
+ this.seconds = Math.floor(Math.abs(Number(iSeconds))); |
+ if (argnum > 3) |
+ { |
+ this.sec100 = Math.floor(Math.abs(Number(iSec100))); |
+ if (argnum > 4){this.dayCount = bDayCount;} |
+ } |
+ } |
+ } |
+ return true; |
+ } |
+ |
+ return false; |
+} |
+ |
+function SystemTime_fromString(s) |
+{ |
+ var timeSep = s.split(timeSeparator); |
+ |
+ if (timeSep > 0) |
+ { // if 1 or more time separator, first number is considered to be hours |
+ var sep1 = s.indexOf(timeSeparator); |
+ this.hours = Number(s.substring(0, sep1 - 1)); // Extract hours |
+ // this. |
+ if (timeSep > 1) |
+ { |
+ |
+ } |
+ } |
+ |
+ return this; |
+} |
+ |
+function SystemTime_toString(bShowHours, bShowSeconds, bShowSec100) |
+{ |
+ var sSec100 = String(this.sec100); |
+ while (sSec100.length < 3){sSec100 = "0" + sSec100;} |
+ |
+ var sSeconds = String(this.seconds); |
+ if (this.seconds < 10){sSeconds = "0" + sSeconds;} |
+ |
+ var sMinutes = String(this.minutes); |
+ if (this.minutes < 10){sMinutes = "0" + sMinutes;} |
+ |
+ var sHours = String(this.hours); |
+ if (this.hours < 10){sHours = "0" + sHours;} |
+ |
+ var argnum = SystemTime_toString.arguments.length; |
+ var result = |
+ (argnum > 0 && bShowHours |
+ ? sHours + timeSeparator |
+ : "") |
+ + sMinutes |
+ + (argnum > 1 && bShowSeconds |
+ ? timeSeparator + sSeconds |
+ : "") |
+ + (argnum > 2 && bShowSec100 |
+ ? decimalSeparator + sSec100 |
+ : ""); |
+ |
+ return result; |
+} |
+ |
+// Prototype definition |
+ |
+function SystemTime(iHours, iMinutes, iSeconds, iSec100, bDayCount) |
+{ |
+ var argnum = SystemTime.arguments.length; |
+ |
+ this.hours = |
+ (argnum > 0 |
+ ? Number(iHours) |
+ : 0); |
+ this.minutes = |
+ (argnum > 1 |
+ ? Number(iMinutes) |
+ : 0); |
+ this.seconds = |
+ (argnum > 2 |
+ ? Number(iSeconds) |
+ : 0); |
+ this.sec100 = |
+ (argnum > 3 |
+ ? Number(iSec100) |
+ : 0); |
+ this.dayCount = |
+ (argnum > 4 |
+ ? bDayCount |
+ : false); |
+ |
+ this.decHours = SystemTime_decHours; |
+ this.decMinutes = SystemTime_decMinutes; |
+ this.decSeconds = SystemTime_decSeconds; |
+ this.decSec100 = SystemTime_decSec100; |
+ this.incHours = SystemTime_incHours; |
+ this.incMinutes = SystemTime_incMinutes; |
+ this.incSeconds = SystemTime_incSeconds; |
+ this.incSec100 = SystemTime_incSec100; |
+ this.fromData = SystemTime_fromData; |
+ this.fromString = SystemTime_fromString; |
+ this.toString = SystemTime_toString; |
+} |
+ |
+function TZdescr(iGMToffsetMins, sDescr) |
+{ |
+ this.iGMToffsetMins = iGMToffsetMins || 0; |
+ this.sDescr = sDescr || ""; |
+} |
+ |
+function DateNames_getTZdescr(iGMToffsetMins) |
+{ |
+ for (var i = 0; i < this.aTZdescr.length; i++) |
+ { |
+ if (this.aTZdescr[i].iGMToffsetMins == iGMToffsetMins) |
+ { |
+ return this.aTZdescr[i].sDescr; |
+ } |
+ } |
+ |
+ return ""; |
+} |
+ |
+function DateNames( |
+ aaShortWeekdayNames, |
+ aaMedWeekdayNames, |
+ aaLongWeekdayNames, |
+ aaShortMonthNames, |
+ aaMedMonthNames, |
+ aaLongMonthNames, |
+ aaTZdescr) |
+{ |
+ var iArgNum = DateNames.arguments.length; |
+ this.aShortWeekdayNames = |
+ aaShortWeekdayNames || new Array(7); |
+ this.aMedWeekdayNames = |
+ aaMedWeekdayNames || new Array(7); |
+ this.aLongWeekdayNames = |
+ aaLongWeekdayNames || new Array(7); |
+ this.aShortMonthNames = |
+ aaShortMonthNames || new Array(12); |
+ this.aMedMonthNames = |
+ aaMedMonthNames || new Array(12); |
+ this.aLongMonthNames = |
+ aaLongMonthNames || new Array(12); |
+ this.aTZdescr = |
+ aaTZdescr || new Array(); |
+ this.getTZdescr = DateNames_getTZdescr; |
+} |
+ |
+var cDateLblOpen = "_"; // A unique date label begins with this |
+var cDateLblClose = "_"; // A unique date label ends with this |
+ |
+function getDateFmt(dDate, sFormat, oDateNames) |
+{ |
+ var iArgNum = getDateFmt.arguments.length; |
+ if (iArgNum < 1) |
+ { |
+ return false; |
+ } |
+ if (iArgNum < 2 || sFormat.length == 0) |
+ { |
+ return String(dDate); |
+ } |
+ |
+ var ooDateNames; |
+ if (iArgNum < 3){// Default (english) weekdays, month labels and timezone descriptions |
+ oDateNames = |
+ new DateNames( |
+ new Array("Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"), |
+ new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"), |
+ new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", |
+ "Friday", "Saturday"), |
+ new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", |
+ "Sep", "Oct", "Nov", "Dec"), |
+ new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", |
+ "Sep", "Oct", "Nov", "Dec"), |
+ new Array("January", "February", "March", "April", "May", "June", |
+ "July", "August", "September", "October", "November", "December"), |
+ new Array( |
+ new TZdescr(-60, "WET"), |
+ new TZdescr(0, "GMT"), |
+ new TZdescr(60, "CET"), |
+ new TZdescr(120, "CEST/EET")));} |
+ |
+ var sShortWeekday = oDateNames.aShortWeekdayNames[dDate.getDay()]; |
+ var sMedWeekday = oDateNames.aMedWeekdayNames[dDate.getDay()]; |
+ var sLongWeekday = oDateNames.aLongWeekdayNames[dDate.getDay()]; |
+ var sShortMonth = oDateNames.aShortMonthNames[dDate.getMonth()]; |
+ var sMedMonth = oDateNames.aMedMonthNames[dDate.getMonth()]; |
+ var sLongMonth = oDateNames.aLongMonthNames[dDate.getMonth()]; |
+ |
+ var iYear = dDate.getYear(); |
+ if (iYear < 1000){iYear += 1900;} |
+ |
+ var sLongYear = |
+ (dDate.getFullYear |
+ ? String(dDate.getFullYear()) |
+ : String(iYear)); |
+ var sShortYear = sLongYear.substr(sLongYear.length - 2, 2); |
+ var sMonth = String(dDate.getMonth() + 1); |
+ var sDay = String(dDate.getDate()); |
+ var sHours = String(dDate.getHours()); |
+ var sMins = String(dDate.getMinutes()); |
+ var sSecs = String(dDate.getSeconds()); |
+ var sSecs1000; |
+ if (dDate.getMilliseconds){sSecs1000 = String(dDate.getMilliseconds());} else {sSecs1000 = "0";} |
+ var sTZmins = String(-dDate.getTimezoneOffset()); |
+ var iTZhours = Math.floor(-dDate.getTimezoneOffset() / 60); |
+ var iTZmins = ((-dDate.getTimezoneOffset() / 60) + iTZhours) * 60; |
+ var sTZhoursMins = |
+ String(iTZhours) + ":" + ((iTZmins < 10) ? "0" : "") + String(iTZmins); |
+ var sTZhours2Mins = |
+ ((iTZhours < 10) ? "0" : "") |
+ + String(iTZhours) |
+ + ":" |
+ + ((iTZmins < 10) ? "0" : "") |
+ + String(iTZmins); |
+ var sTZdescr = oDateNames.getTZdescr(-dDate.getTimezoneOffset()); |
+ |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "yyyy" + cDateLblClose, sLongYear); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "yy" + cDateLblClose, sShortYear); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "MMMM" + cDateLblClose, sLongMonth); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "MMM" + cDateLblClose, sMedMonth); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "MM" + cDateLblClose, sShortMonth); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "0M" + cDateLblClose, |
+ ((sMonth.length < 2) ? "0" + sMonth : sMonth)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "M" + cDateLblClose, sMonth); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "dddd" + cDateLblClose, sLongWeekday); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "ddd" + cDateLblClose, sMedWeekday); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "dd" + cDateLblClose, sShortWeekday); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "0d" + cDateLblClose, |
+ ((sDay.length < 2) ? "0" + sDay : sDay)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "d" + cDateLblClose, sDay); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "hh" + cDateLblClose, |
+ ((sHours.length < 2) ? "0" + sHours : sHours)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "h" + cDateLblClose, sHours); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "mm" + cDateLblClose, |
+ ((sMins.length < 2) ? "0" + sMins : sMins)); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "m" + cDateLblClose, sMins); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "ss" + cDateLblClose, |
+ ((sSecs.length < 2) ? "0" + sSecs : sSecs)); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "SSS" + cDateLblClose, |
+ ((sSecs1000.length < 3) ? "0" : "") |
+ + ((sSecs1000.length < 2) ? "0" : "") |
+ + sSecs1000); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "SS" + cDateLblClose, |
+ (sSecs1000.length < 3 ? "0" : "") |
+ + (sSecs1000.length < 2 ? "0" : "") |
+ + sSecs1000); |
+ sFormat = replaceText(sFormat, cDateLblOpen + "S" + cDateLblClose, sSecs1000); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "TTTTT" + cDateLblClose, sTZdescr); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "TTTT" + cDateLblClose, sTZhours2Mins); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "TTT" + cDateLblClose, sTZhoursMins); |
+ sFormat = |
+ replaceText( |
+ sFormat, |
+ cDateLblOpen + "TT" + cDateLblClose, |
+ (iTZmins < 10 |
+ ? "0" + iTZmins |
+ : String(iTZmins))); |
+ sFormat = |
+ replaceText(sFormat, cDateLblOpen + "T" + cDateLblClose, String(iTZmins)); |
+ |
+ return sFormat; |
+} |
+ |
+// German weekdays, month labels and timezone descriptions |
+var oDateNames_de = |
+ new DateNames( |
+ new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"), |
+ new Array("Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"), |
+ new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", |
+ "Freitag", "Samstag"), |
+ new Array("Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", |
+ "Sep", "Okt", "Nov", "Dez"), |
+ new Array("Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", |
+ "Sep", "Okt", "Nov", "Dez"), |
+ new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", |
+ "August", "September", "Oktober", "November", "Dezember"), |
+ new Array( |
+ new TZdescr(-60, "WEZ"), |
+ new TZdescr(0, "GMT"), |
+ new TZdescr(60, "MEZ"), |
+ new TZdescr(120, "MESZ/OEZ"))); |
+ |
+function isValidDate(iYear, iMonth, iDate) |
+{ |
+ var |
+ d = new Date(iYear, iMonth, iDate), // create new Date object |
+ y = 0; |
+ |
+ if (d) |
+ { |
+ y = |
+ (d.getFullYear // prefer 4-digit year |
+ ? d.getFullYear() |
+ : d.getYear()); |
+ if (!d.getFullYear && y < 1900){y += 1900;} |
+ } |
+ |
+ /* |
+ * If no Date object exists or if the properties of the object differ |
+ * from the passed arguments, the date was not valid (out of range, |
+ * e.g. not paying attention to leap years.) |
+ */ |
+ return ( |
+ d && y == iYear && d.getMonth() == iMonth && d.getDate() == iDate); |
+} |
+ |
+/** |
+ * Computes the dates when it is switched to and from Daylight Saving Time |
+ * |
+ * @param {int} iYear |
+ * The year for which DST change dates should be computed. The default |
+ * is the current year. |
+ * @return Array |
+ */ |
+function getDSTChangeDates(iYear) |
+{ |
+ var result = []; |
+ |
+ /* Date when it is switched to DST */ |
+ var |
+ year = iYear || new Date().getFullYear(), |
+ dLeft = new Date(year, 0, 1), |
+ dRight = new Date(new Date(year + 1, 0, 1) - 1); |
+ |
+ /* See if there is any change in time zone at all */ |
+ while (dRight > +dLeft + 1 |
+ && dLeft.getTimezoneOffset() == dRight.getTimezoneOffset()) |
+ { |
+ dRight = new Date(Math.floor((+dLeft + +dRight) / 2)); |
+ } |
+ |
+ if (dLeft.getTimezoneOffset() == dRight.getTimezoneOffset()) |
+ { |
+ return [null, null]; |
+ } |
+ |
+ while (dRight > +dLeft + 1) |
+ { |
+ console.log("outer: ", dLeft, dRight); |
+ while (dLeft.getTimezoneOffset() != dRight.getTimezoneOffset()) |
+ { |
+ var lastRight = dRight; |
+ dRight = new Date(Math.floor((+dLeft + +dRight) / 2)); |
+ console.log("inner: ", dLeft, dRight); |
+ } |
+ |
+ dLeft = dRight; |
+ dRight = lastRight; |
+ } |
+ |
+ result.push(dRight); |
+ |
+ return result; |
+} |
\ No newline at end of file |
Index: live/props.js |
=================================================================== |
--- live/props.js (nonexistent) |
+++ live/props.js (revision 520) |
@@ -0,0 +1,84 @@ |
+function FuzzySort(aSelect) { |
+ var i = 0; |
+ while ( i < aSelect.options.length - 2 ) { |
+ var value1 = aSelect.options[i].text.substr(0, aSelect.options[i].text.toLowerCase().indexOf("=") - 1); |
+ var value2 = aSelect.options[i + 1].text.substr(0, aSelect.options[i].text.toLowerCase().indexOf("=") - 1); |
+ if( value1 > value2 ) { |
+ var Save; |
+ Save = aSelect.options[i].text; |
+ aSelect.options[i].text = aSelect.options[i + 1].text; |
+ aSelect.options[i + 1].text = Save; |
+ Save = null; |
+ if( i > 1 ) |
+ i--; |
+ } else |
+ i++; |
+ } |
+} |
+ |
+function blurStartCtrl(aStartCtrl) { |
+ if(blurStartCtrl.arguments.length > 0) |
+ if(aStartCtrl != null) |
+ aStartCtrl.blur(); |
+} |
+ |
+function getObjProp(sObject, aStartCtrl, aSelect) { |
+// var ident = getObjProp; |
+ var aObject = eval(sObject); |
+ var bValidTarget = (aSelect != null); |
+ if(bValidTarget) bValidTarget = (aSelect.tagName.toLowerCase() == "select"); |
+ if(! bValidTarget) { |
+ alert("Unable to continue without valid SELECT object as third argument."); |
+ blurStartCtrl(aStartCtrl); |
+ return(true); |
+ } |
+ removeOptions(aSelect); |
+ if(aObject == null) { |
+ addOption(aSelect, "[no object]"); |
+ return(true); |
+ } |
+/* if(sObject.indexOf("document.all") >= 0) { |
+ addOption(aSelect, "[Unable to retrieve document.all because it accesses its caller]"); |
+ blurStartCtrl(aStartCtrl); |
+ return(true); |
+ } */ |
+ aSelect.style.cursor = "wait"; |
+ var sCondition = false; |
+ for(var Item in aObject) { |
+ sCondition = ( String(aObject[Item]).toLowerCase().substr(0, 9) != "function " ); |
+ if(sCondition) { |
+ var propValue = aObject[Item]; |
+ var s = ( ( isNaN(propValue) || String(propValue) == "" ) |
+ && ( String(propValue).indexOf("object") < 0 ) ) ? "\"" : ""; |
+ var sText = Item + " = " + s + propValue + s; |
+ addOption(aSelect, sText); |
+ } |
+ } |
+ FuzzySort(aSelect); |
+ blurStartCtrl(aStartCtrl); |
+ aSelect.style.cursor = "auto"; |
+ return(false); |
+} |
+ |
+function checkProps(aWindow) { |
+ var wndProps = window.open(); |
+ wndProps.document.open("text/html"); |
+ wndProps.document.write('<html>\n<head>\n' + |
+ '<link href="../styles/lcars.css" rel="stylesheet" type="text/css">\n' + |
+ '<style type="text/css"><!--\n' + |
+ '\ta.button, a.button:visited {\n' + |
+ '\tfont-size: 20px;\n' + |
+ '}\n' + |
+ 'a.button:hover { color: #000000; }\n' + |
+ 'a.button:active { color: #000000; }\n' + |
+ '//--></style>\n' + |
+ '\t<script language="JavaScript1.1" src="../scripts/props.js" type="text/javascript"></script>\n' + |
+ '</head>\n<body>\n' + |
+ 'Object from which to retrieve properties:<br>\n' + |
+ '<input type="text" style="width: 96%;" id="edObject">' + |
+ '<a href="JavaScript:void(0)" class="button" style="position:relative; top:-3px;" id="btGo" onClick=\'getObjProp(edObject.value, this, document.all.props);\'> <u>G</u>O </a><br>\n' + |
+ '<select size=10 style="width: 100%;" id="props">' + |
+ '</select></body></html>' |
+ ); |
+ wndProps.document.close(); |
+} |
\ No newline at end of file |
Index: live/COPYING |
=================================================================== |
--- live/COPYING (nonexistent) |
+++ live/COPYING (revision 520) |
@@ -0,0 +1,674 @@ |
+ GNU GENERAL PUBLIC LICENSE |
+ Version 3, 29 June 2007 |
+ |
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
+ Everyone is permitted to copy and distribute verbatim copies |
+ of this license document, but changing it is not allowed. |
+ |
+ Preamble |
+ |
+ The GNU General Public License is a free, copyleft license for |
+software and other kinds of works. |
+ |
+ The licenses for most software and other practical works are designed |
+to take away your freedom to share and change the works. By contrast, |
+the GNU General Public License is intended to guarantee your freedom to |
+share and change all versions of a program--to make sure it remains free |
+software for all its users. We, the Free Software Foundation, use the |
+GNU General Public License for most of our software; it applies also to |
+any other work released this way by its authors. You can apply it to |
+your programs, too. |
+ |
+ When we speak of free software, we are referring to freedom, not |
+price. Our General Public Licenses are designed to make sure that you |
+have the freedom to distribute copies of free software (and charge for |
+them if you wish), that you receive source code or can get it if you |
+want it, that you can change the software or use pieces of it in new |
+free programs, and that you know you can do these things. |
+ |
+ To protect your rights, we need to prevent others from denying you |
+these rights or asking you to surrender the rights. Therefore, you have |
+certain responsibilities if you distribute copies of the software, or if |
+you modify it: responsibilities to respect the freedom of others. |
+ |
+ For example, if you distribute copies of such a program, whether |
+gratis or for a fee, you must pass on to the recipients the same |
+freedoms that you received. You must make sure that they, too, receive |
+or can get the source code. And you must show them these terms so they |
+know their rights. |
+ |
+ Developers that use the GNU GPL protect your rights with two steps: |
+(1) assert copyright on the software, and (2) offer you this License |
+giving you legal permission to copy, distribute and/or modify it. |
+ |
+ For the developers' and authors' protection, the GPL clearly explains |
+that there is no warranty for this free software. For both users' and |
+authors' sake, the GPL requires that modified versions be marked as |
+changed, so that their problems will not be attributed erroneously to |
+authors of previous versions. |
+ |
+ Some devices are designed to deny users access to install or run |
+modified versions of the software inside them, although the manufacturer |
+can do so. This is fundamentally incompatible with the aim of |
+protecting users' freedom to change the software. The systematic |
+pattern of such abuse occurs in the area of products for individuals to |
+use, which is precisely where it is most unacceptable. Therefore, we |
+have designed this version of the GPL to prohibit the practice for those |
+products. If such problems arise substantially in other domains, we |
+stand ready to extend this provision to those domains in future versions |
+of the GPL, as needed to protect the freedom of users. |
+ |
+ Finally, every program is threatened constantly by software patents. |
+States should not allow patents to restrict development and use of |
+software on general-purpose computers, but in those that do, we wish to |
+avoid the special danger that patents applied to a free program could |
+make it effectively proprietary. To prevent this, the GPL assures that |
+patents cannot be used to render the program non-free. |
+ |
+ The precise terms and conditions for copying, distribution and |
+modification follow. |
+ |
+ TERMS AND CONDITIONS |
+ |
+ 0. Definitions. |
+ |
+ "This License" refers to version 3 of the GNU General Public License. |
+ |
+ "Copyright" also means copyright-like laws that apply to other kinds of |
+works, such as semiconductor masks. |
+ |
+ "The Program" refers to any copyrightable work licensed under this |
+License. Each licensee is addressed as "you". "Licensees" and |
+"recipients" may be individuals or organizations. |
+ |
+ To "modify" a work means to copy from or adapt all or part of the work |
+in a fashion requiring copyright permission, other than the making of an |
+exact copy. The resulting work is called a "modified version" of the |
+earlier work or a work "based on" the earlier work. |
+ |
+ A "covered work" means either the unmodified Program or a work based |
+on the Program. |
+ |
+ To "propagate" a work means to do anything with it that, without |
+permission, would make you directly or secondarily liable for |
+infringement under applicable copyright law, except executing it on a |
+computer or modifying a private copy. Propagation includes copying, |
+distribution (with or without modification), making available to the |
+public, and in some countries other activities as well. |
+ |
+ To "convey" a work means any kind of propagation that enables other |
+parties to make or receive copies. Mere interaction with a user through |
+a computer network, with no transfer of a copy, is not conveying. |
+ |
+ An interactive user interface displays "Appropriate Legal Notices" |
+to the extent that it includes a convenient and prominently visible |
+feature that (1) displays an appropriate copyright notice, and (2) |
+tells the user that there is no warranty for the work (except to the |
+extent that warranties are provided), that licensees may convey the |
+work under this License, and how to view a copy of this License. If |
+the interface presents a list of user commands or options, such as a |
+menu, a prominent item in the list meets this criterion. |
+ |
+ 1. Source Code. |
+ |
+ The "source code" for a work means the preferred form of the work |
+for making modifications to it. "Object code" means any non-source |
+form of a work. |
+ |
+ A "Standard Interface" means an interface that either is an official |
+standard defined by a recognized standards body, or, in the case of |
+interfaces specified for a particular programming language, one that |
+is widely used among developers working in that language. |
+ |
+ The "System Libraries" of an executable work include anything, other |
+than the work as a whole, that (a) is included in the normal form of |
+packaging a Major Component, but which is not part of that Major |
+Component, and (b) serves only to enable use of the work with that |
+Major Component, or to implement a Standard Interface for which an |
+implementation is available to the public in source code form. A |
+"Major Component", in this context, means a major essential component |
+(kernel, window system, and so on) of the specific operating system |
+(if any) on which the executable work runs, or a compiler used to |
+produce the work, or an object code interpreter used to run it. |
+ |
+ The "Corresponding Source" for a work in object code form means all |
+the source code needed to generate, install, and (for an executable |
+work) run the object code and to modify the work, including scripts to |
+control those activities. However, it does not include the work's |
+System Libraries, or general-purpose tools or generally available free |
+programs which are used unmodified in performing those activities but |
+which are not part of the work. For example, Corresponding Source |
+includes interface definition files associated with source files for |
+the work, and the source code for shared libraries and dynamically |
+linked subprograms that the work is specifically designed to require, |
+such as by intimate data communication or control flow between those |
+subprograms and other parts of the work. |
+ |
+ The Corresponding Source need not include anything that users |
+can regenerate automatically from other parts of the Corresponding |
+Source. |
+ |
+ The Corresponding Source for a work in source code form is that |
+same work. |
+ |
+ 2. Basic Permissions. |
+ |
+ All rights granted under this License are granted for the term of |
+copyright on the Program, and are irrevocable provided the stated |
+conditions are met. This License explicitly affirms your unlimited |
+permission to run the unmodified Program. The output from running a |
+covered work is covered by this License only if the output, given its |
+content, constitutes a covered work. This License acknowledges your |
+rights of fair use or other equivalent, as provided by copyright law. |
+ |
+ You may make, run and propagate covered works that you do not |
+convey, without conditions so long as your license otherwise remains |
+in force. You may convey covered works to others for the sole purpose |
+of having them make modifications exclusively for you, or provide you |
+with facilities for running those works, provided that you comply with |
+the terms of this License in conveying all material for which you do |
+not control copyright. Those thus making or running the covered works |
+for you must do so exclusively on your behalf, under your direction |
+and control, on terms that prohibit them from making any copies of |
+your copyrighted material outside their relationship with you. |
+ |
+ Conveying under any other circumstances is permitted solely under |
+the conditions stated below. Sublicensing is not allowed; section 10 |
+makes it unnecessary. |
+ |
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law. |
+ |
+ No covered work shall be deemed part of an effective technological |
+measure under any applicable law fulfilling obligations under article |
+11 of the WIPO copyright treaty adopted on 20 December 1996, or |
+similar laws prohibiting or restricting circumvention of such |
+measures. |
+ |
+ When you convey a covered work, you waive any legal power to forbid |
+circumvention of technological measures to the extent such circumvention |
+is effected by exercising rights under this License with respect to |
+the covered work, and you disclaim any intention to limit operation or |
+modification of the work as a means of enforcing, against the work's |
+users, your or third parties' legal rights to forbid circumvention of |
+technological measures. |
+ |
+ 4. Conveying Verbatim Copies. |
+ |
+ You may convey verbatim copies of the Program's source code as you |
+receive it, in any medium, provided that you conspicuously and |
+appropriately publish on each copy an appropriate copyright notice; |
+keep intact all notices stating that this License and any |
+non-permissive terms added in accord with section 7 apply to the code; |
+keep intact all notices of the absence of any warranty; and give all |
+recipients a copy of this License along with the Program. |
+ |
+ You may charge any price or no price for each copy that you convey, |
+and you may offer support or warranty protection for a fee. |
+ |
+ 5. Conveying Modified Source Versions. |
+ |
+ You may convey a work based on the Program, or the modifications to |
+produce it from the Program, in the form of source code under the |
+terms of section 4, provided that you also meet all of these conditions: |
+ |
+ a) The work must carry prominent notices stating that you modified |
+ it, and giving a relevant date. |
+ |
+ b) The work must carry prominent notices stating that it is |
+ released under this License and any conditions added under section |
+ 7. This requirement modifies the requirement in section 4 to |
+ "keep intact all notices". |
+ |
+ c) You must license the entire work, as a whole, under this |
+ License to anyone who comes into possession of a copy. This |
+ License will therefore apply, along with any applicable section 7 |
+ additional terms, to the whole of the work, and all its parts, |
+ regardless of how they are packaged. This License gives no |
+ permission to license the work in any other way, but it does not |
+ invalidate such permission if you have separately received it. |
+ |
+ d) If the work has interactive user interfaces, each must display |
+ Appropriate Legal Notices; however, if the Program has interactive |
+ interfaces that do not display Appropriate Legal Notices, your |
+ work need not make them do so. |
+ |
+ A compilation of a covered work with other separate and independent |
+works, which are not by their nature extensions of the covered work, |
+and which are not combined with it such as to form a larger program, |
+in or on a volume of a storage or distribution medium, is called an |
+"aggregate" if the compilation and its resulting copyright are not |
+used to limit the access or legal rights of the compilation's users |
+beyond what the individual works permit. Inclusion of a covered work |
+in an aggregate does not cause this License to apply to the other |
+parts of the aggregate. |
+ |
+ 6. Conveying Non-Source Forms. |
+ |
+ You may convey a covered work in object code form under the terms |
+of sections 4 and 5, provided that you also convey the |
+machine-readable Corresponding Source under the terms of this License, |
+in one of these ways: |
+ |
+ a) Convey the object code in, or embodied in, a physical product |
+ (including a physical distribution medium), accompanied by the |
+ Corresponding Source fixed on a durable physical medium |
+ customarily used for software interchange. |
+ |
+ b) Convey the object code in, or embodied in, a physical product |
+ (including a physical distribution medium), accompanied by a |
+ written offer, valid for at least three years and valid for as |
+ long as you offer spare parts or customer support for that product |
+ model, to give anyone who possesses the object code either (1) a |
+ copy of the Corresponding Source for all the software in the |
+ product that is covered by this License, on a durable physical |
+ medium customarily used for software interchange, for a price no |
+ more than your reasonable cost of physically performing this |
+ conveying of source, or (2) access to copy the |
+ Corresponding Source from a network server at no charge. |
+ |
+ c) Convey individual copies of the object code with a copy of the |
+ written offer to provide the Corresponding Source. This |
+ alternative is allowed only occasionally and noncommercially, and |
+ only if you received the object code with such an offer, in accord |
+ with subsection 6b. |
+ |
+ d) Convey the object code by offering access from a designated |
+ place (gratis or for a charge), and offer equivalent access to the |
+ Corresponding Source in the same way through the same place at no |
+ further charge. You need not require recipients to copy the |
+ Corresponding Source along with the object code. If the place to |
+ copy the object code is a network server, the Corresponding Source |
+ may be on a different server (operated by you or a third party) |
+ that supports equivalent copying facilities, provided you maintain |
+ clear directions next to the object code saying where to find the |
+ Corresponding Source. Regardless of what server hosts the |
+ Corresponding Source, you remain obligated to ensure that it is |
+ available for as long as needed to satisfy these requirements. |
+ |
+ e) Convey the object code using peer-to-peer transmission, provided |
+ you inform other peers where the object code and Corresponding |
+ Source of the work are being offered to the general public at no |
+ charge under subsection 6d. |
+ |
+ A separable portion of the object code, whose source code is excluded |
+from the Corresponding Source as a System Library, need not be |
+included in conveying the object code work. |
+ |
+ A "User Product" is either (1) a "consumer product", which means any |
+tangible personal property which is normally used for personal, family, |
+or household purposes, or (2) anything designed or sold for incorporation |
+into a dwelling. In determining whether a product is a consumer product, |
+doubtful cases shall be resolved in favor of coverage. For a particular |
+product received by a particular user, "normally used" refers to a |
+typical or common use of that class of product, regardless of the status |
+of the particular user or of the way in which the particular user |
+actually uses, or expects or is expected to use, the product. A product |
+is a consumer product regardless of whether the product has substantial |
+commercial, industrial or non-consumer uses, unless such uses represent |
+the only significant mode of use of the product. |
+ |
+ "Installation Information" for a User Product means any methods, |
+procedures, authorization keys, or other information required to install |
+and execute modified versions of a covered work in that User Product from |
+a modified version of its Corresponding Source. The information must |
+suffice to ensure that the continued functioning of the modified object |
+code is in no case prevented or interfered with solely because |
+modification has been made. |
+ |
+ If you convey an object code work under this section in, or with, or |
+specifically for use in, a User Product, and the conveying occurs as |
+part of a transaction in which the right of possession and use of the |
+User Product is transferred to the recipient in perpetuity or for a |
+fixed term (regardless of how the transaction is characterized), the |
+Corresponding Source conveyed under this section must be accompanied |
+by the Installation Information. But this requirement does not apply |
+if neither you nor any third party retains the ability to install |
+modified object code on the User Product (for example, the work has |
+been installed in ROM). |
+ |
+ The requirement to provide Installation Information does not include a |
+requirement to continue to provide support service, warranty, or updates |
+for a work that has been modified or installed by the recipient, or for |
+the User Product in which it has been modified or installed. Access to a |
+network may be denied when the modification itself materially and |
+adversely affects the operation of the network or violates the rules and |
+protocols for communication across the network. |
+ |
+ Corresponding Source conveyed, and Installation Information provided, |
+in accord with this section must be in a format that is publicly |
+documented (and with an implementation available to the public in |
+source code form), and must require no special password or key for |
+unpacking, reading or copying. |
+ |
+ 7. Additional Terms. |
+ |
+ "Additional permissions" are terms that supplement the terms of this |
+License by making exceptions from one or more of its conditions. |
+Additional permissions that are applicable to the entire Program shall |
+be treated as though they were included in this License, to the extent |
+that they are valid under applicable law. If additional permissions |
+apply only to part of the Program, that part may be used separately |
+under those permissions, but the entire Program remains governed by |
+this License without regard to the additional permissions. |
+ |
+ When you convey a copy of a covered work, you may at your option |
+remove any additional permissions from that copy, or from any part of |
+it. (Additional permissions may be written to require their own |
+removal in certain cases when you modify the work.) You may place |
+additional permissions on material, added by you to a covered work, |
+for which you have or can give appropriate copyright permission. |
+ |
+ Notwithstanding any other provision of this License, for material you |
+add to a covered work, you may (if authorized by the copyright holders of |
+that material) supplement the terms of this License with terms: |
+ |
+ a) Disclaiming warranty or limiting liability differently from the |
+ terms of sections 15 and 16 of this License; or |
+ |
+ b) Requiring preservation of specified reasonable legal notices or |
+ author attributions in that material or in the Appropriate Legal |
+ Notices displayed by works containing it; or |
+ |
+ c) Prohibiting misrepresentation of the origin of that material, or |
+ requiring that modified versions of such material be marked in |
+ reasonable ways as different from the original version; or |
+ |
+ d) Limiting the use for publicity purposes of names of licensors or |
+ authors of the material; or |
+ |
+ e) Declining to grant rights under trademark law for use of some |
+ trade names, trademarks, or service marks; or |
+ |
+ f) Requiring indemnification of licensors and authors of that |
+ material by anyone who conveys the material (or modified versions of |
+ it) with contractual assumptions of liability to the recipient, for |
+ any liability that these contractual assumptions directly impose on |
+ those licensors and authors. |
+ |
+ All other non-permissive additional terms are considered "further |
+restrictions" within the meaning of section 10. If the Program as you |
+received it, or any part of it, contains a notice stating that it is |
+governed by this License along with a term that is a further |
+restriction, you may remove that term. If a license document contains |
+a further restriction but permits relicensing or conveying under this |
+License, you may add to a covered work material governed by the terms |
+of that license document, provided that the further restriction does |
+not survive such relicensing or conveying. |
+ |
+ If you add terms to a covered work in accord with this section, you |
+must place, in the relevant source files, a statement of the |
+additional terms that apply to those files, or a notice indicating |
+where to find the applicable terms. |
+ |
+ Additional terms, permissive or non-permissive, may be stated in the |
+form of a separately written license, or stated as exceptions; |
+the above requirements apply either way. |
+ |
+ 8. Termination. |
+ |
+ You may not propagate or modify a covered work except as expressly |
+provided under this License. Any attempt otherwise to propagate or |
+modify it is void, and will automatically terminate your rights under |
+this License (including any patent licenses granted under the third |
+paragraph of section 11). |
+ |
+ However, if you cease all violation of this License, then your |
+license from a particular copyright holder is reinstated (a) |
+provisionally, unless and until the copyright holder explicitly and |
+finally terminates your license, and (b) permanently, if the copyright |
+holder fails to notify you of the violation by some reasonable means |
+prior to 60 days after the cessation. |
+ |
+ Moreover, your license from a particular copyright holder is |
+reinstated permanently if the copyright holder notifies you of the |
+violation by some reasonable means, this is the first time you have |
+received notice of violation of this License (for any work) from that |
+copyright holder, and you cure the violation prior to 30 days after |
+your receipt of the notice. |
+ |
+ Termination of your rights under this section does not terminate the |
+licenses of parties who have received copies or rights from you under |
+this License. If your rights have been terminated and not permanently |
+reinstated, you do not qualify to receive new licenses for the same |
+material under section 10. |
+ |
+ 9. Acceptance Not Required for Having Copies. |
+ |
+ You are not required to accept this License in order to receive or |
+run a copy of the Program. Ancillary propagation of a covered work |
+occurring solely as a consequence of using peer-to-peer transmission |
+to receive a copy likewise does not require acceptance. However, |
+nothing other than this License grants you permission to propagate or |
+modify any covered work. These actions infringe copyright if you do |
+not accept this License. Therefore, by modifying or propagating a |
+covered work, you indicate your acceptance of this License to do so. |
+ |
+ 10. Automatic Licensing of Downstream Recipients. |
+ |
+ Each time you convey a covered work, the recipient automatically |
+receives a license from the original licensors, to run, modify and |
+propagate that work, subject to this License. You are not responsible |
+for enforcing compliance by third parties with this License. |
+ |
+ An "entity transaction" is a transaction transferring control of an |
+organization, or substantially all assets of one, or subdividing an |
+organization, or merging organizations. If propagation of a covered |
+work results from an entity transaction, each party to that |
+transaction who receives a copy of the work also receives whatever |
+licenses to the work the party's predecessor in interest had or could |
+give under the previous paragraph, plus a right to possession of the |
+Corresponding Source of the work from the predecessor in interest, if |
+the predecessor has it or can get it with reasonable efforts. |
+ |
+ You may not impose any further restrictions on the exercise of the |
+rights granted or affirmed under this License. For example, you may |
+not impose a license fee, royalty, or other charge for exercise of |
+rights granted under this License, and you may not initiate litigation |
+(including a cross-claim or counterclaim in a lawsuit) alleging that |
+any patent claim is infringed by making, using, selling, offering for |
+sale, or importing the Program or any portion of it. |
+ |
+ 11. Patents. |
+ |
+ A "contributor" is a copyright holder who authorizes use under this |
+License of the Program or a work on which the Program is based. The |
+work thus licensed is called the contributor's "contributor version". |
+ |
+ A contributor's "essential patent claims" are all patent claims |
+owned or controlled by the contributor, whether already acquired or |
+hereafter acquired, that would be infringed by some manner, permitted |
+by this License, of making, using, or selling its contributor version, |
+but do not include claims that would be infringed only as a |
+consequence of further modification of the contributor version. For |
+purposes of this definition, "control" includes the right to grant |
+patent sublicenses in a manner consistent with the requirements of |
+this License. |
+ |
+ Each contributor grants you a non-exclusive, worldwide, royalty-free |
+patent license under the contributor's essential patent claims, to |
+make, use, sell, offer for sale, import and otherwise run, modify and |
+propagate the contents of its contributor version. |
+ |
+ In the following three paragraphs, a "patent license" is any express |
+agreement or commitment, however denominated, not to enforce a patent |
+(such as an express permission to practice a patent or covenant not to |
+sue for patent infringement). To "grant" such a patent license to a |
+party means to make such an agreement or commitment not to enforce a |
+patent against the party. |
+ |
+ If you convey a covered work, knowingly relying on a patent license, |
+and the Corresponding Source of the work is not available for anyone |
+to copy, free of charge and under the terms of this License, through a |
+publicly available network server or other readily accessible means, |
+then you must either (1) cause the Corresponding Source to be so |
+available, or (2) arrange to deprive yourself of the benefit of the |
+patent license for this particular work, or (3) arrange, in a manner |
+consistent with the requirements of this License, to extend the patent |
+license to downstream recipients. "Knowingly relying" means you have |
+actual knowledge that, but for the patent license, your conveying the |
+covered work in a country, or your recipient's use of the covered work |
+in a country, would infringe one or more identifiable patents in that |
+country that you have reason to believe are valid. |
+ |
+ If, pursuant to or in connection with a single transaction or |
+arrangement, you convey, or propagate by procuring conveyance of, a |
+covered work, and grant a patent license to some of the parties |
+receiving the covered work authorizing them to use, propagate, modify |
+or convey a specific copy of the covered work, then the patent license |
+you grant is automatically extended to all recipients of the covered |
+work and works based on it. |
+ |
+ A patent license is "discriminatory" if it does not include within |
+the scope of its coverage, prohibits the exercise of, or is |
+conditioned on the non-exercise of one or more of the rights that are |
+specifically granted under this License. You may not convey a covered |
+work if you are a party to an arrangement with a third party that is |
+in the business of distributing software, under which you make payment |
+to the third party based on the extent of your activity of conveying |
+the work, and under which the third party grants, to any of the |
+parties who would receive the covered work from you, a discriminatory |
+patent license (a) in connection with copies of the covered work |
+conveyed by you (or copies made from those copies), or (b) primarily |
+for and in connection with specific products or compilations that |
+contain the covered work, unless you entered into that arrangement, |
+or that patent license was granted, prior to 28 March 2007. |
+ |
+ Nothing in this License shall be construed as excluding or limiting |
+any implied license or other defenses to infringement that may |
+otherwise be available to you under applicable patent law. |
+ |
+ 12. No Surrender of Others' Freedom. |
+ |
+ If conditions are imposed on you (whether by court order, agreement or |
+otherwise) that contradict the conditions of this License, they do not |
+excuse you from the conditions of this License. If you cannot convey a |
+covered work so as to satisfy simultaneously your obligations under this |
+License and any other pertinent obligations, then as a consequence you may |
+not convey it at all. For example, if you agree to terms that obligate you |
+to collect a royalty for further conveying from those to whom you convey |
+the Program, the only way you could satisfy both those terms and this |
+License would be to refrain entirely from conveying the Program. |
+ |
+ 13. Use with the GNU Affero General Public License. |
+ |
+ Notwithstanding any other provision of this License, you have |
+permission to link or combine any covered work with a work licensed |
+under version 3 of the GNU Affero General Public License into a single |
+combined work, and to convey the resulting work. The terms of this |
+License will continue to apply to the part which is the covered work, |
+but the special requirements of the GNU Affero General Public License, |
+section 13, concerning interaction through a network will apply to the |
+combination as such. |
+ |
+ 14. Revised Versions of this License. |
+ |
+ The Free Software Foundation may publish revised and/or new versions of |
+the GNU General Public License from time to time. Such new versions will |
+be similar in spirit to the present version, but may differ in detail to |
+address new problems or concerns. |
+ |
+ Each version is given a distinguishing version number. If the |
+Program specifies that a certain numbered version of the GNU General |
+Public License "or any later version" applies to it, you have the |
+option of following the terms and conditions either of that numbered |
+version or of any later version published by the Free Software |
+Foundation. If the Program does not specify a version number of the |
+GNU General Public License, you may choose any version ever published |
+by the Free Software Foundation. |
+ |
+ If the Program specifies that a proxy can decide which future |
+versions of the GNU General Public License can be used, that proxy's |
+public statement of acceptance of a version permanently authorizes you |
+to choose that version for the Program. |
+ |
+ Later license versions may give you additional or different |
+permissions. However, no additional obligations are imposed on any |
+author or copyright holder as a result of your choosing to follow a |
+later version. |
+ |
+ 15. Disclaimer of Warranty. |
+ |
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY |
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT |
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY |
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, |
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM |
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF |
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
+ |
+ 16. Limitation of Liability. |
+ |
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS |
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY |
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE |
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF |
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD |
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), |
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF |
+SUCH DAMAGES. |
+ |
+ 17. Interpretation of Sections 15 and 16. |
+ |
+ If the disclaimer of warranty and limitation of liability provided |
+above cannot be given local legal effect according to their terms, |
+reviewing courts shall apply local law that most closely approximates |
+an absolute waiver of all civil liability in connection with the |
+Program, unless a warranty or assumption of liability accompanies a |
+copy of the Program in return for a fee. |
+ |
+ END OF TERMS AND CONDITIONS |
+ |
+ How to Apply These Terms to Your New Programs |
+ |
+ If you develop a new program, and you want it to be of the greatest |
+possible use to the public, the best way to achieve this is to make it |
+free software which everyone can redistribute and change under these terms. |
+ |
+ To do so, attach the following notices to the program. It is safest |
+to attach them to the start of each source file to most effectively |
+state the exclusion of warranty; and each file should have at least |
+the "copyright" line and a pointer to where the full notice is found. |
+ |
+ <one line to give the program's name and a brief idea of what it does.> |
+ Copyright (C) <year> <name of author> |
+ |
+ This program is free software: you can redistribute it and/or modify |
+ it under the terms of the GNU General Public License as published by |
+ the Free Software Foundation, either version 3 of the License, or |
+ (at your option) any later version. |
+ |
+ This program is distributed in the hope that it will be useful, |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ GNU General Public License for more details. |
+ |
+ You should have received a copy of the GNU General Public License |
+ along with this program. If not, see <http://www.gnu.org/licenses/>. |
+ |
+Also add information on how to contact you by electronic and paper mail. |
+ |
+ If the program does terminal interaction, make it output a short |
+notice like this when it starts in an interactive mode: |
+ |
+ <program> Copyright (C) <year> <name of author> |
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
+ This is free software, and you are welcome to redistribute it |
+ under certain conditions; type `show c' for details. |
+ |
+The hypothetical commands `show w' and `show c' should show the appropriate |
+parts of the General Public License. Of course, your program's commands |
+might be different; for a GUI interface, you would use an "about box". |
+ |
+ You should also get your employer (if you work as a programmer) or school, |
+if any, to sign a "copyright disclaimer" for the program, if necessary. |
+For more information on this, and how to apply and follow the GNU GPL, see |
+<http://www.gnu.org/licenses/>. |
+ |
+ The GNU General Public License does not permit incorporating your program |
+into proprietary programs. If your program is a subroutine library, you |
+may consider it more useful to permit linking proprietary applications with |
+the library. If this is what you want to do, use the GNU Lesser General |
+Public License instead of this License. But first, please read |
+<http://www.gnu.org/philosophy/why-not-lgpl.html>. |
\ No newline at end of file |
Index: live/exception.js |
=================================================================== |
--- live/exception.js (nonexistent) |
+++ live/exception.js (revision 520) |
@@ -0,0 +1,146 @@ |
+/** |
+ * @requires types.js |
+ */ |
+ |
+/** |
+ * Wrapper for a safer <code>try</code>...<code>catch</code>. |
+ * |
+ * Attempts to evaluate a value as a <i>StatementList</i>, and attempts |
+ * to evaluate another value as a <i>StatementList</i> if an exception |
+ * is thrown in the process. The argument identifiers may be used |
+ * in each value to refer to the used values; the <code>code</code> |
+ * word may be used to the refer to the entire constructed |
+ * <code>try</code>...<code>catch</code> string that is evaluated |
+ * as a <i>Program</i>. |
+ * |
+ * @param statements |
+ * Value to be evaluated as a <i>StatementList</i>. |
+ * Called if a <code>Function</code> object reference, converted |
+ * to string if not a string, and used as-is otherwise. |
+ * For compatibility, the <code>undefined</code> value |
+ * is evaluated like the empty string. |
+ * @param errorHandlers |
+ * Value to be evaluated as a <i>StatementList</i> in case of an |
+ * exception. Called if a <code>Function</code> object reference, |
+ * converted to string if not a string, and used as-is otherwise. |
+ * For compatibility, the <code>undefined</code> value |
+ * is evaluated like the empty string. |
+ * @return |
+ * The result of <code>statements</code>, or the result |
+ * of <code>errorHandlers</code> if an error occurred. |
+ * @author |
+ * Copyright (c) 2008 |
+ * Thomas 'PointedEars' Lahn <js@PointedEars.de> |
+ * Distributed under the GNU GPL v3 and later. |
+ * @partof JSX:exception.js |
+ */ |
+function tryThis(statements, errorHandlers) |
+{ |
+ /** |
+ * @param s Value to be stringified |
+ * @return Stringified version of <code>s</code> |
+ */ |
+ function stringify(s) |
+ { |
+ if (typeof s == "function") |
+ { |
+ s = "(" + s + ")()"; |
+ } |
+ else if (typeof s == "undefined") |
+ { |
+ s = ""; |
+ } |
+ |
+ return s; |
+ } |
+ |
+ statements = stringify(statements); |
+ errorHandlers = stringify(errorHandlers); |
+ |
+ var code = 'try { ' + statements + ' }' |
+ + 'catch (e) { ' + errorHandlers + ' }'; |
+ |
+ return eval(code); |
+} |
+ |
+/** |
+ * Throws a qualified exception, including an execution context hint |
+ * if provided, followed by an error message. |
+ * |
+ * @param sErrorType : string |
+ * Identifier of the constructor for the error type |
+ * @param sMessage : string |
+ * Error message to be displayed |
+ * @param fContext : Callable |
+ * Optional callable object to specify the context |
+ * where the exception occurred. |
+ * @author |
+ * Copyright (c) 2008 Thomas 'PointedEars' Lahn <cljs@PointedEars.de>. |
+ * Distributed under the GNU GPL v3 and later. |
+ * @partof JSX:exception.js |
+ * @see JSX:types.js:isMethodType() |
+ */ |
+function throwException(sErrorType, sMessage, fContext) |
+{ |
+ if (isMethodType(typeof sErrorType) && sErrorType) |
+ { |
+ sErrorType = "(" + sErrorType + ")"; |
+ } |
+ |
+ var sContext = ""; |
+ |
+ if (isMethodType(typeof fContext) && fContext) |
+ { |
+ sContext = (String(fContext).match(/^\s*(function[^)]+\))/) |
+ || [0, null])[1]; |
+ } |
+ |
+ var message = (sContext ? sContext + ': ' : '') |
+ + (sMessage ? String(sMessage).replace(/['"\\]/g, '\\$&') : ''); |
+ |
+ var throwPrefix = ' throw new ' + sErrorType + '("' + message; |
+ eval(throwPrefix + '");'); |
+/* |
+ eval( |
+ 'try' |
+ + '{' |
+ // throw so that we can try obtaining a stack trace |
+ + throwPrefix + '");' |
+ + '}' |
+ + 'catch (e)' |
+ + '{' |
+ + ' var stack = e.stack;' |
+ + ' if (typeof stack == "string")' |
+ + ' {' |
+ // re-throw with stack trace if available |
+ + throwPrefix + '\\nStack trace:" + stack.split("\\n").reverse().slice(0, stack.length - 3).join("\\n"));' |
+ + ' }' |
+ + ' else' |
+ + ' {' |
+ + throwPrefix + '");' |
+ + ' }' |
+ + '}'); |
+*/ |
+} |
+ |
+// first variant from math.js |
+/* |
+function throwException(e) |
+{ |
+ var supportsTry = false; |
+ |
+ _global.onerror = function() |
+ { |
+ this.onerror = null; |
+ return true; |
+ } |
+ |
+ eval('try { supportsTry = true; } catch (e2) {}'); |
+ |
+ if (supportsTry) |
+ { |
+ eval('throw e;'); |
+ _global.onerror(); |
+ } |
+} |
+*/ |
\ No newline at end of file |
Index: live/unicode-classifier |
=================================================================== |
--- live/unicode-classifier (nonexistent) |
+++ live/unicode-classifier (revision 520) |
@@ -0,0 +1,72 @@ |
+#!/bin/bash |
+ |
+awk -F ';' 'length($1) < 5 { print $3,$1; }' UnicodeData.txt | sort | |
+ awk ' |
+ BEGIN { |
+ printf "jsx.RegExp.characterClasses = {" |
+ } |
+ |
+ { |
+ class = $1; |
+ codePoint = $2; |
+ num = strtonum("0x" codePoint); |
+ |
+# printf "\n\nclass = \"%s\"\n", class |
+# printf "prevClass = \"%s\"\n", prevClass |
+# printf "codePoint = \"%s\"\n", codePoint |
+# printf "prevCodePoint = \"%s\"\n", prevCodePoint |
+# printf "num = \"%s\"\n", num |
+# printf "startRange = \"%s\"\n", startRange |
+ |
+ if (class != prevClass) |
+ { |
+ if (num != prevNum + 1) |
+ { |
+ if (startRange) |
+ { |
+ printf "-\\u" prevCodePoint; |
+ } |
+ } |
+ |
+ if (prevClass) |
+ { |
+ printf "\","; |
+ } |
+ |
+ printf "\n " class ": \"\\u" codePoint; |
+ |
+ startRange = 0; |
+ } |
+ else |
+ { |
+ if (num != prevNum + 1) |
+ { |
+ if (startRange) |
+ { |
+ printf "-\\u" prevCodePoint; |
+ |
+ startRange = 0; |
+ } |
+ |
+ printf "\\u" codePoint; |
+ } |
+ else |
+ { |
+ startRange = 1 |
+ } |
+ } |
+ |
+ prevClass = class; |
+ prevCodePoint = codePoint; |
+ prevNum = num; |
+ } |
+ |
+ END { |
+ if (startRange) |
+ { |
+ printf "-\\u" prevCodePoint; |
+ } |
+ |
+ printf "\"\n};"; |
+ }' |
+ |
/live/unicode-classifier |
---|
Property changes: |
Added: svn:executable |
## -0,0 +1 ## |
+* |
\ No newline at end of property |
Index: live/dots.js |
=================================================================== |
--- live/dots.js (nonexistent) |
+++ live/dots.js (revision 520) |
@@ -0,0 +1,71 @@ |
+// The following tag is for display in advanced filelists only: |
+// <TITLE>JavaScript 3dots LCARS Support Part 1</title> |
+// |
+// Supports dhtml.js for usage of W3C-DOM |
+// Refer dots.txt for general documentation. |
+ |
+// Hiding loading content is potentially harmful |
+// TODO: lcars.js::dots() and ::undots() to replace this |
+/* |
+ |
+if (!this.dhtml) |
+{ |
+ var dhtml = new Object(); |
+ dhtml.supported = false; |
+ dhtml.visibility = function() {}; |
+} |
+ |
+if (dhtml.supported && dhtml.visibility) |
+{ |
+ var divContent = getElem("id", "div_content"); |
+ var divStatus = getElem("id", "div_status"), f; |
+ if (divContent && divStatus) |
+ { |
+ dhtml.visible(divContent, false); |
+ |
+ if (typeof divStatus.left != "undefined") |
+ { |
+ divStatus.left = document.body.offsetWidth; |
+ } |
+ |
+ dhtml.visible(divStatus, true); |
+ } |
+ else if ((f = parent.frames['ufpdb_banner'])) |
+ { |
+ if (f.spanStatus) f.spanStatus.className = "standby"; |
+ dhtml.setTextContent(f.spanStatus, "ACCESSING FILE"); |
+ } |
+} |
+ |
+var dotCounter = 0; |
+ |
+function animDots() |
+{ |
+ var dotString = ""; |
+ |
+ for (var i = 0; i < dotCounter; i++) |
+ { |
+ dotString += ". "; |
+ } |
+ |
+ if (dhtml.setCont) |
+ { |
+ dhtml.setCont("id", "dots", null, dotString); |
+ } |
+ |
+ if (dotCounter == 3) |
+ { |
+ dotCounter = 0; |
+ } |
+ else |
+ { |
+ dotCounter++; |
+ } |
+} |
+ |
+if (dhtml.supported && divContent && divStatus) |
+{ |
+ var dotsAnim = window.setInterval("animDots();", 1000); |
+} |
+ |
+*/ |
\ No newline at end of file |
Index: live/scripts.rimpfd |
=================================================================== |
--- live/scripts.rimpfd (nonexistent) |
+++ live/scripts.rimpfd (revision 520) |
@@ -0,0 +1,9 @@ |
+<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
+<rimpfd> |
+ <destination path="/LCARS/scripts"/> |
+ <options createDirectoryStructure="false" createSelectedOnly="true" descriptionFilePath="/LCARS/scripts/scripts.rimpfd" overWriteExistingFiles="false" saveSettings="true"/> |
+ <source path="PE-Mobil.PointedEars.de:/home/mw3020/f001/scripts"/> |
+ <selectedElements> |
+ <file path="/home/mw3020/f001/scripts/style.css"/> |
+ </selectedElements> |
+</rimpfd> |
Index: live/back.js |
=================================================================== |
--- live/back.js (nonexistent) |
+++ live/back.js (revision 520) |
@@ -0,0 +1,13 @@ |
+// The following tag is for display in advanced filelists only: |
+// <TITLE>JavaScript PageBack Support</title> |
+// |
+// Refer back.txt file for general documentation. |
+ |
+if (document.all) |
+{ |
+ document.write('<span class="symbol">3</span>'); |
+} |
+else |
+{ |
+ document.write(' '); |
+} |
Index: live/top.js |
=================================================================== |
--- live/top.js (nonexistent) |
+++ live/top.js (revision 520) |
@@ -0,0 +1,9 @@ |
+// The following tag is for display in advanced filelists only: |
+// <TITLE>JavaScript TopOfPage Support</title> |
+// |
+// Refer top.txt for general documentation. |
+ |
+if (document.all && !window.opera) |
+ document.write('<span class="symbol">5</span>'); |
+else |
+ document.write(" "); |
Index: live/fullscreen.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/live/fullscreen.jpg |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: live/undots.js |
=================================================================== |
--- live/undots.js (nonexistent) |
+++ live/undots.js (revision 520) |
@@ -0,0 +1,29 @@ |
+// The following tag is for display in advanced filelists only: |
+// <TITLE>JavaScript 3dots LCARS Support Part 2</title> |
+// |
+// Refer undots.txt for general documentation. |
+ |
+// Hiding loading content is potentially harmful |
+// TODO: lcars.js::dots() and ::undots() to replace this |
+/* |
+if (typeof dhtml == "undefined") |
+{ |
+ var dhtml = new Object(); |
+ dhtml.supported = false; |
+} |
+ |
+if (dhtml.supported) |
+{ |
+ window.clearInterval(dotsAnim); |
+ if (divContent && divStatus) |
+ { |
+ divStatus.style.visibility = "hidden"; |
+ divContent.style.visibility = "visible"; |
+ } |
+ else |
+ { |
+ f.spanStatus.className = ""; |
+ dhtml.setTextContent(f.spanStatus, "DATABASE"); |
+ } |
+} |
+*/ |
\ No newline at end of file |
Index: live/outline.js |
=================================================================== |
--- live/outline.js (nonexistent) |
+++ live/outline.js (revision 520) |
@@ -0,0 +1,199 @@ |
+// The following tag is for display in advanced filelists only: |
+// <TITLE>Support for Outline-styled Structure Using Dynamic HTML Statements</title> |
+// |
+// Refer outline.txt for general documentation. |
+ |
+// Variable definitions |
+ |
+var sOutline = "outline"; // Class name for outline node |
+var sOutlined = "outlined"; // Class name for outline content |
+var imgCollapsed = ""; // Image file to load when node is collapsed |
+var imgExpanded = ""; // Image file to load when node is expanded |
+var sCollapsed = "+"; // Text to display when node is collapsed |
+var sExpanded = "-"; // Text to display when node is expanded |
+ |
+/* SCRIPT EXCEPTIONS */ |
+ |
+function EOutline(Msg) { |
+ var msgBody = "outline.js (c) 1999-2006 Thomas Lahn (webmaster@PointedEars.de)\n\n"; |
+ msgBody += Msg; |
+ msgBody += "\n\nClick \"OK\" to send a feedback e-mail to the author of the script or click \"Cancel\" to abort.\nAnyway, you should inform the author of the HTML document of the error you have encountered."; |
+ if (confirm(msgBody)) |
+ { |
+ self.location.href = "mailto:webmaster@PointedEars.de?subject=Feedback/JavaScript/outline.js"; |
+ } |
+ return false; |
+} |
+ |
+function ENoBrowser() { |
+ return EOutline( "This script is designed to be processed from a web browser only." ); |
+} |
+ |
+function ENoJScript() { |
+ return EOutline( "Your browser does not support Microsoft JScript. This is designed for Microsoft Internet Explorer only." ); |
+} |
+ |
+function ENoTarget(Object) { |
+ var msg = "The script could not determine the required target object ("; |
+ msg += Object; |
+ msg += "+).\nThe possible causes are:\n\n"; |
+ msg += "a) A style-sheet is included in the HTML document that redefines the OUTLINE class for DIV tags. The additional style-sheet needs to be removed, the class needs to be renamed, or the CLASS=\"OUTLINE\" attribute is to be used for no other objects than outline nodes for the script to work properly.\n\n"; |
+ msg += "b) The HTML document did not provide the object.\nIt needs to be defined using the ID attribute of the respective HTML tag.\n\n"; |
+ msg += "c) Maybe your browser is unable to return the complete object list due to low system resources.\nThere are currently "; |
+ msg += String(document.all.length); |
+ msg += " accessible objects within the HTML document. The number of outline objects possibly needs to be reduced for the script to work properly.\nFor the moment you may be able to expand/collapse all nodes of the outline structure using the respective items/buttons if the author had included them in the HTML document."; |
+ return EOutline(msg); |
+} |
+ |
+function ENoAttr(Object) { |
+ var msg = "The clicked object (ID=\""; |
+ msg += Object; |
+ msg += "\") does neither support the SRC, ALT nor the innerHTML attribute.\nUse the <IMG SRC=\"...\" [ALT=\"...\"] CLASS=\"outline\"> tag or any tag with an appropriate closing tag (<...></...>) for the node symbol instead."; |
+ return EOutline( msg ); |
+} |
+ |
+function EInvalidArgument(Arg) { |
+ var msg = "FullTree: The user script did not pass the required number of arguments or passed an invalid argument ("; |
+ msg += Arg; |
+ msg += "). Refer documentation in script file for correct function call."; |
+ return EOutline( msg ); |
+} |
+ |
+/* SCRIPT FEATURES */ |
+ |
+function CalcPaths() { // Calculates relative image file paths to absolute ones |
+var PathEnd = document.URL.lastIndexOf('\\'); // Folder path |
+ if( PathEnd == -1 ) |
+ { |
+ PathEnd = document.URL.lastIndexOf('/'); // URL |
+ } |
+ |
+ if( PathEnd == -1 ) { // Extends filename to full path |
+ var prevImgCollapsed = imgCollapsed; |
+ imgCollapsed = document.URL.slice(0, PathEnd); |
+ imgCollapsed += "/"; |
+ imgCollapsed += prevImgCollapsed; |
+ var prevImgExpanded = imgExpanded; |
+ imgExpanded = document.URL.slice(0, PathEnd); |
+ imgExpanded += "/"; |
+ imgExpanded += prevImgExpanded; |
+ } |
+} |
+ |
+function clickHandler() { |
+var srcElement, targetId, targetElement; |
+ if (document) { // If processed from web browser |
+ var srcElement = window.event.srcElement; |
+ if (srcElement && (srcElement.className.toLowerCase() == sOutline)) { |
+ // If classified as outline node |
+ targetId = srcElement.id; |
+ targetId += "+"; |
+ targetElement = getElem("id", targetId); |
+ if (targetElement) { // If the node content exists |
+ if (targetElement.style.display == "none") { // If currently collapsed |
+ targetElement.style.display = ""; |
+ if (srcElement.src) { |
+ if (imgExpanded != "") srcElement.src = imgExpanded; |
+ if (srcElement.alt) { |
+ if (sExpanded != "") srcElement.alt = sExpanded; |
+ } |
+ } else if (srcElement.alt) { |
+ if (sExpanded != "") srcElement.alt = sExpanded; |
+ } else if (srcElement.innerHTML) { |
+ if (sExpanded != "") srcElement.innerHTML = sExpanded; |
+ } else |
+ return ENoAttr( srcElement.id ); |
+ } else { // If currently expanded |
+ targetElement.style.display = "none"; |
+ if (srcElement.src) { |
+ if (imgCollapsed != "") srcElement.src = imgCollapsed; |
+ if (srcElement.alt) { |
+ if (sCollapsed != "") srcElement.alt = sCollapsed; |
+ } |
+ } else if (srcElement.alt) { |
+ if (sCollapsed != "") srcElement.alt = sCollapsed; |
+ } else if (srcElement.innerHTML) { |
+ if (sCollapsed != "") srcElement.innerHTML = sCollapsed; |
+ } else |
+ return ENoAttr(); |
+ } |
+ } else |
+ return ENoTarget (srcElement.id); |
+ } |
+ } else |
+ return ENoBrowser(); |
+} |
+ |
+function FullTree(action) { |
+var obj; |
+ if (document) { // If processed from web browser |
+ if (document.all) { // If Microsoft JScript is supported |
+ for (var i = document.all.length; i--;) { |
+ obj = document.all[i]; |
+ if (obj.className.toLowerCase() == sOutline || obj.className.toLowerCase() == sOutlined) { |
+ if ((obj.tagName.toLowerCase() == "div") && (obj.className.toLowerCase() != sOutline)) { |
+ if (action == "+") |
+ obj.style.display = ""; |
+ else if (action == "-") |
+ obj.style.display = "none"; |
+ else |
+ return EInvalidArgument(); |
+ if (obj.src) { |
+ if (action == "+") { |
+ if (imgExpanded != "") obj.src = imgExpanded; |
+ } else if (action == "-") { |
+ if (imgCollapsed != "") obj.src = imgCollapsed; |
+ } else |
+ return EInvalidArgument(); |
+ } |
+ if (obj.alt) { |
+ if (action == "+") { |
+ if (sExpanded != "") obj.alt = sExpanded; |
+ } else if (action == "-") { |
+ if (sCollapsed != "") obj.alt = sCollapsed; |
+ } else |
+ return EInvalidArgument(); |
+ } |
+ } else if ((obj.innerHTML && obj.tagName.toLowerCase() == "span") && (obj.className.toLowerCase() == sOutline)) { |
+ // Only on SPAN |
+ if (action == "+") { |
+ if (sExpanded != "") obj.innerHTML = sExpanded; |
+ } else if (action == "-") { |
+ if (sCollapsed != "") obj.innerHTML = sCollapsed; |
+ } else |
+ return EInvalidArgument(); |
+ } |
+ } |
+ } |
+ } else |
+ return ENoJScript(); |
+ } else |
+ return ENoBrowser(); |
+} |
+ |
+function FullExpand() { |
+ return FullTree("+"); |
+} |
+ |
+function FullCollapse() { |
+ return FullTree("-"); |
+} |
+ |
+function FullTreeItems() { |
+ document.write( '<p><a href="JavaScript:FullExpand()" target="_self">Alle Ebenen einblenden</a><br>', |
+ '<a href="FullCollapse()" target="_self">Alle Ebenen ausblenden</a></p>' ); |
+} |
+ |
+function FullTreeButtons() { |
+ document.write( '<p><input type="button" width=100% value="Alle Ebenen einblenden" class="help" style="width:100%;" onClick="FullExpand();"><br>', |
+ '<input type="button" width=100% value="Alle Ebenen ausblenden" class="help" style="width:100%" onClick="FullCollapse()"></p>' ); |
+} |
+ |
+if (document) // If processed from a web browser: Defines the function above to be processed on every click on the document |
+{ |
+ document.onclick = clickHandler; |
+} |
+else |
+{ |
+ ENoBrowser(); |
+} |
\ No newline at end of file |
Index: live/loadidx.js |
=================================================================== |
--- live/loadidx.js (nonexistent) |
+++ live/loadidx.js (revision 520) |
@@ -0,0 +1,12 @@ |
+if (typeof dhtml == "undefined") |
+{ |
+ var dhtml = new Object(); |
+ dhtml.supported = false; |
+} |
+ |
+if (dhtml.supported) |
+{ |
+ document.write( |
+ '<div class="standby" style="visibility: none;" id="div_status"' |
+ + '>LOADING INDEX <span id="dots"> </span></div>'); |
+} |
\ No newline at end of file |
Index: live/realtracker.js |
=================================================================== |
--- live/realtracker.js (nonexistent) |
+++ live/realtracker.js (revision 520) |
@@ -0,0 +1,63 @@ |
+// RealTracker script as created by http://11.rtcode.com/netpoll/ifreev3i.asp?id=161409&to=0 |
+// removed ads iframe and popup |
+document.write('<table border="0" cellspacing="0" cellpadding="0"><tr><td>'); |
+ |
+function cv(s) |
+{ |
+ var c, r, i, b, e; |
+ c = document.cookie; |
+ r = ''; |
+ i = c.indexOf(s); |
+ if (i > -1) |
+ { |
+ b = c.indexOf('=', i) + 1; |
+ e = c.indexOf(';', i); |
+ if (e < 0) |
+ { |
+ e = c.length; |
+ } |
+ r = c.substring(b, e); |
+ } |
+ |
+ return r; |
+} |
+ |
+function wc(n,v,t) |
+{ |
+ document.cookie = n + '=' + v + '; path=/; expires=' + t.toGMTString() + ';'; |
+} |
+ |
+function td(n) |
+{ |
+ var s = '' + n; |
+ return(s.length < 2 ? '0' + s : s); |
+} |
+ |
+function fdy(n) |
+{ |
+ return (n < 100 ? '19' + n : '' + n); |
+} |
+ |
+var t, z, r, s, a, b, q, g, p, l; |
+t = new Date(); |
+r = '&tt=' + td(t.getMonth() + 1) + '%2F' + td(t.getDate()) + '%2F' + fdy(t.getYear()) + '+' |
++ td(t.getHours()) + '%3A' + td(t.getMinutes()) + '%3A' + td(t.getSeconds()); |
+t.setTime(t.getTime() + 5184000000); |
+z = 'RTid'; |
+b = parseInt(2000000000 * Math.random()) |
+a = cv(z); |
+if (a == '') a = b; |
+wc(z, a, t); |
+q = screen; |
+r += '&h=' + q.height +'&w=' + q.width + '&c=' + (q.pixelDepth ? q.pixelDepth : q.colorDepth) |
+r += '&cl=' + escape(window.location.href) + '&d=' + b + '&b=' + a + '&ck=' + (cv(z) != '' ? 1 : 0) + '&j=' + (navigator.javaEnabled() ? 1 : 0) |
+g = document.referrer; |
+r += '&ref=' + escape(g); |
+s = '<a href="http://11.rtstats.com/netpoll/stat.asp?id=' + id |
++ '&to=" target="_blank"><img' |
++ ' src="http://11.rtcode.com/netpoll/ifreev3.asp?id=' + id |
++ '&to=&js=1' + r + '" border="0" width="88" height="32"' |
++ '></' + 'a><br />'; |
+document.write(s); |
+/*document.write('<IFRAME SRC="http://11.rtcode.com/netpoll/MHWAdLookup.asp?AdID=GNMde" WIDTH="88" HEIGHT="31" SCROLLING="no" FRAMEBORDER="0" FRAMESPACING="0" MARGINHEIGHT="0" MARGINWIDTH="0" BORDER="0" HSPACE="0" VSPACE="0"></IFRAME>\n');*/ |
+document.write('</td></tr></table>'); |
Index: live/ufpdbfrm.js |
=================================================================== |
--- live/ufpdbfrm.js (nonexistent) |
+++ live/ufpdbfrm.js (revision 520) |
@@ -0,0 +1,55 @@ |
+function restoreLCARS() |
+{ |
+ if (top == self) // single document |
+ { |
+ var sURI = ""; |
+ |
+ if (location.protocol.toLowerCase().indexOf("http") > -1) // http: |
+ { |
+ if (location.hostname.length > 0 |
+ && location.hostname.toLowerCase().indexOf("pointedears.de") < 0 |
+ && location.hostname.toLowerCase() != "localhost") |
+ sURI += "/~thla-in/"; |
+ } |
+ else // file: |
+ { |
+ sURI = "file:/"; |
+ |
+ if (navigator.platform.indexOf("Win") >= 0) |
+ sURI += "//F:"; |
+ else |
+ sURI += "windows/F"; |
+ |
+ sURI += "/LCARS"; |
+ } |
+ |
+ sURI += "/ufpdb/main?content=" + location.pathname; |
+ |
+ if (parent.location) |
+ { |
+/* |
+ if (parent.location.replace) |
+ parent.location.replace(sURI); |
+ else |
+ */ |
+ parent.location = sURI; |
+ } |
+ } |
+ else if (parent.frames && parent.frames['ufpdb_banner']) |
+ { // within the frameset |
+ var f = parent.frames['ufpdb_banner']; |
+ |
+ if (f) |
+ f.makeLeftBanner(document.title); |
+ } |
+} |
+ |
+if (top == self) // single document |
+{ |
+ document.write( |
+ "<hr><p>This document is part of the United Federation of Planets Database" |
+ + "™ and is best viewed within the LCARS interface.<\/p>" |
+ + '<a href="javascript:restoreLCARS();"' |
+ + ' onclick="restoreLCARS(); return false;" class="button">' |
+ + ' RESTORE FRAMESET <\/a><hr>'); |
+} |
\ No newline at end of file |
Index: live/close.js |
=================================================================== |
--- live/close.js (nonexistent) |
+++ live/close.js (revision 520) |
@@ -0,0 +1,13 @@ |
+/** |
+ * <title>JavaScript ClosePage Support</title> |
+ */ |
+// Refer close.txt for general documentation. |
+ |
+if (document.all && !window.opera) |
+{ |
+ document.write('<span class="symbol">r</span>'); |
+} |
+else |
+{ |
+ document.write(" "); |
+} |
\ No newline at end of file |
Index: live/accessng.js |
=================================================================== |
--- live/accessng.js (nonexistent) |
+++ live/accessng.js (revision 520) |
@@ -0,0 +1,12 @@ |
+if (!this.dhtml) |
+{ |
+ var dhtml = new Object(); |
+ dhtml.supported = false; |
+} |
+ |
+if (dhtml.supported) |
+{ |
+ document.write( |
+ '<div class="standby" id="div_status">ACCESSING FILE <span id="dots"' |
+ + '> <\/span><\/div>'); |
+} |
Index: live/jsdoc-note.js |
=================================================================== |
--- live/jsdoc-note.js (nonexistent) |
+++ live/jsdoc-note.js (revision 520) |
@@ -0,0 +1,12 @@ |
+/* |
+ * The original source file |
+ * _foo.js/x.yz/YYYY-MM-DD-HH/foo.js |
+ * contains a complete documentation written in JSdoc, see |
+ * <http://pointedears.de/scripts/JSdoc/> for details. |
+ * |
+ * Since JSdoc is not yet ready for production purposes to |
+ * generate a HTML documentation from these comments and |
+ * including them in the production version means about nm% |
+ * of code overhead, most of the JSdoc comments have been |
+ * stripped from this file. |
+ */ |
\ No newline at end of file |
Index: live/cookie.js |
=================================================================== |
--- live/cookie.js (nonexistent) |
+++ live/cookie.js (revision 520) |
@@ -0,0 +1,185 @@ |
+/** |
+ * <title>JavaScript Cookie Data Access Prototype</title> |
+ */ |
+// Refer cookie.txt file for general documentation. |
+ |
+// TCookie prototype definition |
+ |
+function Cookie(sData) |
+{ |
+ this.version = "1.4.2004012016"; |
+ this.msgHeader = |
+ "Cookie JavaScript Cookie Data Access Prototype v" |
+ + this.version + " \xA9 2000-2004 Thomas Lahn. All rights reserved.\n" |
+ + "Web: http://pointedears.de/\n" |
+ + "Email: cookie.js@PointedEars.de\n\n"; |
+// reset properties |
+ this.name = ""; |
+ this.value = ""; |
+ this.expires = ""; |
+ this.domain = ""; |
+ this.path = ""; |
+ this.secure = false; |
+ if (sData) |
+ { |
+ // properties |
+ // Separate the sections of cookie data to retrieve properties */ |
+ var aCookieData = new Array(); |
+ var sTempData = ""; |
+ var i; |
+ |
+ for (i = 0; i < sData.length; i++) |
+ { |
+ var currentChar = sData.substr(i, 1); |
+ sTempData += currentChar; |
+ if (currentChar == ";" || i == sData.length - 1) |
+ { |
+ aCookieData[aCookieData.length] = sTempData; |
+ sTempData = ""; |
+ } |
+ } |
+ |
+ for (i = 0; i < aCookieData.length; i++) |
+ { |
+ var sDataName = aCookieData[i].substring(0, aCookieData[i].indexOf("=")); |
+ var sDataValue = |
+ aCookieData[i].substring( |
+ aCookieData[i].indexOf("=") + 1, |
+ aCookieData[i].length - 1); |
+ |
+ if (i == 0) |
+ { |
+ this.name = sDataName; |
+ this.value = sDataValue; |
+ } |
+ else |
+ { |
+ var sDataNameLower = sDataName.toLowerCase(); |
+ if (sDataNameLower == "expires") this.expires = sDataValue; |
+ if (sDataNameLower == "domain" ) this.domain = sDataValue; |
+ if (sDataNameLower == "path" ) this.path = sDataValue; |
+ if (sDataNameLower == "secure" ) this.secure = true; |
+ } |
+ } |
+ } |
+ // methods |
+ this.loadData = cookie_loadData; |
+ this.toString = cookie_toString; |
+ this.aboutMe = cookie_aboutMe; |
+} |
+ |
+function cookie_loadData(sData) |
+{ |
+ // Separate the sections of cookie data */ |
+ var aCookieData = new Array(); |
+ var sTempData = ""; |
+ var i; |
+ |
+ for (i = 0; i < sData.length; i++) |
+ { |
+ var currentChar = sData.substr(i, 1); |
+ sTempData += currentChar; |
+ |
+ if(currentChar == ";") |
+ { |
+ aCookieData[aCookieData.length] = sTempData; |
+ sTempData = ""; |
+ } |
+ } |
+ for (i = 0; i < aCookieData.length; i++) |
+ { |
+ var sDataName = aCookieData[i].substring(0, aCookieData[i].indexOf("=")); |
+ var sDataValue = |
+ aCookieData[i].substring( |
+ aCookieData[i].indexOf("=") + 1, |
+ aCookieData[i].length - 1); |
+ |
+ if (i == 0) |
+ { |
+ this.name = sDataName; |
+ this.value = sDataValue; |
+ } |
+ else |
+ { |
+ var sDataNameLower = sDataName.toLowerCase(); |
+ (sDataNameLower == "expires" |
+ ? this.expires = sDataValue |
+ : this.expires = 0); |
+ (sDataNameLower == "domain" |
+ ? this.domain = sDataValue |
+ : this.domain = ""); |
+ (sDataNameLower == "path" |
+ ? this.path = sDataValue |
+ : this.path = ""); |
+ (sDataNameLower == "secure" |
+ ? this.secure = true |
+ : this.secure = false); |
+ } |
+ } |
+} |
+ |
+function cookie_toString() |
+{ |
+ return ( |
+ this.name + "=" + this.value |
+ + "; Expires=" + this.expires |
+ + "; domain=" + this.domain |
+ + "; path=" + this.path |
+ + (this.secure ? "secure;" : ";")); |
+} |
+ |
+function cookie_aboutMe(showMsg) |
+{ |
+ var result = false; |
+ |
+ if (showMsg) |
+ { |
+ alert(getObjInfo(this, "p", "s")); |
+ } |
+ else |
+ { |
+ result = getObjInfo(this, "p", "Ts"); |
+ } |
+ |
+ return result; |
+} |
+ |
+// Create a cookie with the specified name and value. |
+function cookie_setCookie(sName, sValue, dDate, iExpirationType) |
+{ |
+ var dExpiration = new Date(); |
+ if (arguments.length > 3 && iExpirationType < 0) |
+ { // Countdown |
+ dExpiration.setTime(dExpiration.getTime() + dDate); |
+ } |
+ else // Expiration Date |
+ { |
+ dExpiration.setTime(dDate); |
+ } |
+ document.cookie = |
+ sName + "=" + escape(sValue) |
+ + "; expires=" + dExpiration + ";"; |
+} |
+ |
+// Remove the cookie with the specified name. |
+function cookie_delCookie(sName) |
+{ |
+ var d = new Date(); |
+ return cookie_setCookie(sName, "null", d.getTime() - 1); |
+} |
+ |
+// Retrieve the value of the cookie with the specified name. |
+function cookie_getCookie(sName) |
+{ |
+ // cookies are separated by semicolons |
+ var aCookie = document.cookie.split("; "); |
+ for (var i=0; i < aCookie.length; i++) { |
+ // a name/value pair (a crumb) is separated by an equal sign |
+ var aCrumb = aCookie[i].split("="); |
+ if (sName == aCrumb[0]) |
+ return unescape(aCrumb[1]); |
+ } |
+ |
+ // a cookie with the requested name does not exist |
+ return null; |
+} |
\ No newline at end of file |
Index: live/printf-20020909.c |
=================================================================== |
--- live/printf-20020909.c (nonexistent) |
+++ live/printf-20020909.c (revision 520) |
@@ -0,0 +1,246 @@ |
+/* Lisence is GPL2 */ |
+#include <string.h> |
+#include <ctype.h> |
+char hextbl[] = "0123456789ABCDEF"; |
+void sys_write(char*, int); |
+#define SCANDEF 0x100000 |
+#define BARDEF 0x80000 |
+#define DOTDEF 0x40000 |
+#define ZERODEF 0x20000 |
+#define SIZEDEF 0x10000 |
+#define ESCAPE 1 |
+ |
+static int outchar(char c, char *ptr, int off) { |
+ if(ptr == (char*)-1) sys_write(&c, 1); |
+ else if(ptr > (char*)255) ptr[off] = c; |
+ return off + 1; |
+} |
+ |
+static int outstring(char *data, int len, char *ptr, int offset, int _num) { |
+ int i, num1, siz, off; |
+ |
+ off = offset; |
+ num1 = _num & 0xffff; |
+ siz = len; |
+ if((_num & (SIZEDEF | BARDEF | DOTDEF)) == SIZEDEF) |
+ for(i = num1;i > len;i--) |
+ off = outchar(' ', ptr, off); |
+ if((_num & SIZEDEF) && (_num & DOTDEF) && (siz > num1)) siz = num1; |
+ if(ptr == (char*)-1) sys_write(data, siz); |
+ else if(ptr > (char*)255) memcpy(&(ptr[off]), data, siz); |
+ off += siz; |
+ if((_num & (SIZEDEF | BARDEF | DOTDEF)) == (SIZEDEF | BARDEF)) |
+ for(i = num1;i > len;i--) |
+ off = outchar(' ', ptr, off); |
+ return off; |
+} |
+ |
+static int out_space(int _num, char* ptr, int off) { |
+ if(_num & ZERODEF) |
+ return outchar('0', ptr, off); |
+ else |
+ return outchar(' ', ptr, off); |
+} |
+ |
+static int input_number(int *value, char *ptr, int offset, int _num, int sel) { |
+ char buffer[16], *inptr; |
+ int off; |
+ |
+ off = offset; |
+ if(ptr == (char*)-1) { |
+ read_string(buffer, 15); |
+ sys_write("\n", 1); |
+ inptr = buffer; |
+ } else if(ptr > (char*)255) { |
+ while(ptr[off] <= ' ') off++; |
+ inptr = &(ptr[off]); |
+ while(ptr[off] > ' ') off++; |
+ } |
+ if(sel == 0) *value = atodec(inptr); |
+ else *value = atohex(inptr); |
+ return off; |
+} |
+ |
+static int number(unsigned int value, char *ptr, int offset, int _num) { |
+ unsigned int a, b, dec; |
+ int f, i, off, k, num1; |
+ |
+ if(_num & SCANDEF) |
+ return input_number((int*)value, ptr, offset, _num, 0); |
+ dec = value; |
+ off = offset; |
+ num1 = _num & 0xffff; |
+ for(k = 10, i = 1000000000;i >= 10;i /= 10, k--) if(value / i) break; |
+ if((_num & (SIZEDEF | BARDEF)) == SIZEDEF) |
+ for(i = num1;i > k;i--) |
+ off = out_space(_num, ptr, off); |
+ f = 0; |
+ for(i = 1000000000;i >= 100;i /= 10) { |
+ a = dec % i; |
+ b = i / 10; |
+ a = a / b; |
+ if(a > 0) f = 1; |
+ if(f == 1) off = outchar(hextbl[a], ptr, off); |
+ } |
+ a = dec % 10; |
+ off = outchar(hextbl[a], ptr, off); |
+ if((_num & (SIZEDEF | BARDEF)) == (SIZEDEF | BARDEF)) |
+ for(i = num1;i > k;i--) |
+ off = out_space(_num, ptr, off); |
+ return off; |
+} |
+ |
+static int decimal(int value, char *ptr, int offset, int _num) { |
+ int num, off; |
+ |
+ if(_num & SCANDEF) |
+ return input_number((int*)value, ptr, offset, _num, 0); |
+ num = value; |
+ off = offset; |
+ if(num < 0) { |
+ off = outchar('-', ptr, off); |
+ num = ~num + 1; |
+ } |
+ return number(num, ptr, off, _num); |
+} |
+ |
+static int hex(unsigned int value, char *ptr, int offset, int _num) { |
+ int off, sft, index, num1, nm, f, i; |
+ unsigned int bits; |
+ char c; |
+ |
+ if(_num & SCANDEF) |
+ return input_number((int*)value, ptr, offset, _num, 1); |
+ off = offset; |
+ num1 = _num & 0xffff; |
+ for(nm = 36,bits = 0xffffffff;bits > 0;bits >>= 1, nm--) |
+ if(~bits & value) break; |
+ nm >>= 2; |
+ if((_num & (SIZEDEF | BARDEF)) == SIZEDEF) |
+ for(i = num1;i > nm;i--) |
+ off = out_space(_num, ptr, off); |
+ f = 0; |
+ for(sft = 28;sft >= 0;sft -= 4) { |
+ index = (value >> sft) & 0xf; |
+ if(index > 0) f = 1; |
+ if(index > 0 || f == 1 || sft == 0) |
+ off = outchar(hextbl[index], ptr, off); |
+ } |
+ if((_num & (SIZEDEF | BARDEF)) == (SIZEDEF | BARDEF)) |
+ for(i = num1;i > nm;i--) |
+ off = out_space(_num, ptr, off); |
+ return off; |
+} |
+ |
+int vprintf(char *p, char *form, int a, int b, int *arg, int _opt) { |
+ int i, n, off, argc, value, num, numindex, opt, inoff; |
+ char flag, numbuf[5], *ptr, *inptr; |
+ |
+ flag = 0; |
+ off = 0; |
+ argc = -2; |
+ n = strlen(form); |
+ for(i = 0;i < n;i++) { |
+ if(flag & ESCAPE) { |
+ if(argc == -2) value = a; |
+ else if(argc == -1) value = b; |
+ else value = arg[argc]; |
+ } |
+ if(form[i] == '%') { |
+ if(i > 0 && form[i - 1] == '%') { |
+ flag &= ~ESCAPE; |
+ if(!(_opt & SCANDEF)) off = outchar(form[i], p, off); |
+ } else { |
+ flag |= ESCAPE; |
+ numindex = -1; |
+ num = 0; |
+ opt = _opt; |
+ } |
+ } else if((flag & ESCAPE) && (form[i] == 'd' || form[i] == 'i')) { |
+ argc++; |
+ off = decimal(value, p, off, num | opt); |
+ flag &= ~ESCAPE; |
+ } else if((flag & ESCAPE) && form[i] == 'u') { |
+ argc++; |
+ off = number(value, p, off, num | opt); |
+ flag &= ~ESCAPE; |
+ } else if((flag & ESCAPE) && (form[i] == 'x' || form[i] == 'X')) { |
+ argc++; |
+ off = hex(value, p, off, num | opt); |
+ flag &= ~ESCAPE; |
+ } else if((flag & ESCAPE) && form[i] == 's') { |
+ argc++; |
+ ptr = (char*)value; |
+ if(opt & SCANDEF) { |
+ if(p == (char*)-1) { |
+ if(!(opt & SIZEDEF)) num = -1; |
+ read_string(ptr, num); |
+ sys_write("\n", 1); |
+ } else if(p > (char*)255) { |
+ while(p[off] <= ' ') off++; |
+ inptr = &(p[off]); |
+ inoff = off; |
+ while(p[off] > ' ') off++; |
+ memcpy(ptr, inptr, off - inoff); |
+ ptr[off - inoff] = 0; |
+ } |
+ } else { |
+ off = outstring(ptr, strlen(ptr), p, off, num | opt); |
+ } |
+ flag &= ~ESCAPE; |
+ } else if((flag & ESCAPE) && form[i] == 'c') { |
+ argc++; |
+ if(opt & SCANDEF) { |
+ ptr = (char*)value; |
+ if(p == (char*)-1) { |
+ *ptr = 0; |
+ read_string(ptr, 1); |
+ sys_write("\n", 1); |
+ } else { |
+ while(p[off] <= ' ') off++; |
+ *ptr = p[off++]; |
+ } |
+ } else { |
+ off = outchar((char)value, p, off); |
+ } |
+ flag &= ~ESCAPE; |
+ } else if((flag & ESCAPE) && isdigit(form[i])) { |
+ if(numindex > 3) flag &= ~ESCAPE; |
+ else { |
+ numbuf[++numindex] = form[i]; |
+ numbuf[numindex + 1] = 0; |
+ num = atodec(numbuf); |
+ opt |= SIZEDEF; |
+ if(form[i] == '0') opt |= ZERODEF; |
+ } |
+ } else if((flag & ESCAPE) && |
+ (form[i] == '.' || form[i] == ' ' || |
+ form[i] == 'l' || form[i] == '-')) { |
+ if(form[i] == '.') opt |= DOTDEF; |
+ if(form[i] == '-') opt |= BARDEF; |
+ } else { |
+ flag &= ~ESCAPE; |
+ if(!(_opt & SCANDEF)) off = outchar(form[i], p, off); |
+ } |
+ } |
+ return off; |
+} |
+ |
+void print(char *form, int a, int b, int c) { |
+ vprintf((char*)-1, form, a, b, &c, 0); |
+} |
+ |
+void sprint(char *buf, char *form, int a, int b, int c) { |
+ int n; |
+ |
+ n = vprintf(buf, form, a, b, &c, 0); |
+ buf[n] = 0; |
+} |
+ |
+void scan(char *form, int a, int b, int c) { |
+ vprintf((char*)-1, form, a, b, &c, SCANDEF); |
+} |
+ |
+void sscan(char *buf, char *form, int a, int b, int c) { |
+ vprintf(buf, form, a, b, &c, SCANDEF); |
+} |
Index: live/enhanced.bak.js |
=================================================================== |
--- live/enhanced.bak.js (nonexistent) |
+++ live/enhanced.bak.js (revision 520) |
@@ -0,0 +1,981 @@ |
+/* Original filename: enhanced.js |
+ * |
+ * <title>Level-1 Enhanced Website Features</title> |
+ * Part of PointedEars' JavaScript Extensions (JSX) |
+ * Copyright (c) 2001-2003 Thomas Lahn <enhanced.js@PointedEars.de> |
+ * |
+ * This program is free software; you can redistribute it and/or |
+ * modify it under the terms of the GNU General Public License |
+ * as published by the Free Software Foundation; either version 2 |
+ * of the License, or (at your option) any later version. |
+ * |
+ * This program is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License (GPL) for more details. |
+ * |
+ * You should have received a copy of the GNU GPL along with this |
+ * program (COPYING file); if not, go to [1] or write to the Free |
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
+ * MA 02111-1307, USA. |
+ * |
+ * [1] <http://www.gnu.org/licenses/licenses.html#GPL> |
+ * |
+ * Refer enhanced.htm file for general documentation. |
+ */ |
+ |
+var enhancedVersion = "1.29.2003.3b3+"; |
+var enhancedCopyright = "Copyright \xA9 1999-2002"; |
+var enhancedAuthor = "Thomas Lahn"; |
+var enhancedEmail = "PointedEars@gmx.de"; |
+var enhancedPath = "http://www.tu-ilmenau.de/~thla-in/scripts/"; |
+var enhancedDocURL = enhancedPath + "enhanced.htm"; |
+ |
+// Script exceptions |
+ |
+function enhancedException(Msg) |
+{ |
+ alert( |
+ "enhanced.js " |
+ + enhancedVersion |
+ + "\n" |
+ + enhancedCopyright |
+ + " " |
+ + enhancedAuthor |
+ + " <" |
+ + enhancedEmail |
+ + ">\n\n" |
+ + Msg); |
+ return false; |
+} |
+ |
+function ENoBrowser() |
+{ |
+ return enhancedException( |
+ "This script is designed to be processed from a web browser only."); |
+} |
+ |
+function EInvalidArgNum(sFunctionName, iArg) |
+{ |
+ /* if (arguments.length < 2) iArg = "?";*/ |
+ return enhancedException( |
+ sFunctionName |
+ + ": The user script did not pass the required number of arguments (" |
+ + iArg |
+ + ").\nRefer documentation in script file for correct function call."); |
+} |
+ |
+function EInvalidArg(sFunctionName, sArg) |
+{ |
+ return enhancedException( |
+ sFunctionName |
+ + ": The user script passed an invalid argument (" |
+ + sArg |
+ + ").\nRefer documentation in script file for correct function call."); |
+} |
+ |
+function getError(e) |
+{ |
+ var sError = e; |
+ |
+ if (e.name) |
+ sError += "\nName: " + e.name; |
+ if (e.number) |
+ sError += "\nCode: " + e.number; |
+ if (e.message) |
+ sError += "\nMessage: " + e.message; |
+ if (e.description) |
+ sError += "\nDescription: " + e.description; |
+ if (e.fileName) |
+ sError += "\nFilename: " + e.fileName; |
+ |
+ try |
+ { |
+ if (e.lineNumber) |
+ sError += "\nLine: " + e.lineNumber; |
+ } |
+ catch (e2) |
+ { |
+ sError += "\nLine: " + e2; |
+ } |
+ |
+ if (e.stack) |
+ sError += "\nStack:\n" + e.stack; |
+ |
+ return sError; |
+} |
+ |
+// Script features |
+ |
+function isArray(value) |
+{ |
+ if (value.length) |
+ return true; |
+ else |
+ return false; |
+} |
+ |
+var CH_NBSP = unescape("%A0"); |
+ |
+function replaceText(sText, sReplaced, sReplacement, bForceLoop) |
+{ |
+ var result; |
+ var sNewText = sText; |
+ // alert(sText); |
+ if (sText) |
+ { |
+ if (sText.replace && !bForceLoop) |
+ { |
+ sReplaced = sReplaced.replace(/\\/g, "\\\\"); |
+ /* Version 1.23.2002.4 bugfix: allows to replace \ with other |
+ strings, required for proper rxReplaced; |
+ Example (no quotes, no escaping): |
+ sReplaced (provided) "\\" |
+ sReplaced (evaluated) \ |
+ sReplaced (replaced as formulated above) "\\\\" |
+ sReplaced (esc. in RegExp constructor) "\\\\" |
+ sReplaced (ev. in RegExp constructor) \\ |
+ rxReplaced (with RegExp escaping) /\\/g |
+ rxReplaced (evaluated) all occurr. of \ |
+ */ |
+ var rxReplaced = new RegExp(sReplaced, "g"); |
+ sText = sText.replace(rxReplaced, sReplacement); |
+ |
+ result = sText; |
+ } |
+ else |
+ { |
+ var i = sText.indexOf(sReplaced); |
+ if (i > -1) |
+ { |
+ sNewText = sText.substring(0, i); |
+ sNewText += sReplacement |
+ + replaceText( |
+ sText.substring(i + sReplaced.length), |
+ sReplaced, |
+ sReplacement); |
+ } |
+ |
+ result = sNewText; |
+ } |
+ } |
+ return result; |
+} |
+ |
+function trimLeft(s) |
+{ |
+ var iStart = 0, sResult = ""; |
+ |
+ if (s != "") |
+ { |
+ var l = s.length - 1; |
+ for (i = 0; i < l; i++) |
+ { |
+ a = s.charAt(i); |
+ if ((a != " ") && (a != CH_NBSP)) |
+ { |
+ iStart = i; |
+ break; |
+ } |
+ } |
+ var iRealLength = s.length; |
+ iRealLength += 1; |
+ sResult = s.substr(iStart, iRealLength); |
+ } |
+ |
+ return sResult; |
+} |
+ |
+function trimRight(s) |
+{ |
+ var iStop = 0, sResult = ""; |
+ |
+ if (s != "") |
+ { |
+ for (i = (s.length - 1); i > 0; i--) |
+ { |
+ a = s.charAt(i); |
+ if ((a != " ") && (a != CH_NBSP)) |
+ { |
+ iStop = i; |
+ iStop += 1; |
+ break; |
+ } |
+ } |
+ sResult = s.substr(0, iStop); |
+ } |
+ |
+ return sResult; |
+} |
+ |
+function trim(s) |
+{ |
+ var sResult = s; // version 1.06.2000.3 bugfix, formerly nullstring assigned |
+ |
+ if (s != "") |
+ { |
+ sResult = trimLeft(s); |
+ // direct processing via trimRight(trimLeft(...)) does not seem to work |
+ sResult = trimRight(sResult); |
+ } |
+ |
+ return sResult; |
+} |
+ |
+function LCaps(s) |
+{ |
+ return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase(); |
+} |
+ |
+function setStatus(sCaption) |
+{ |
+ window.status = sCaption; |
+ return true; |
+} |
+ |
+function stripTags(taggedStr) |
+{ |
+ var |
+ a = "", |
+ outOfTag = true, |
+ untaggedStr = "", |
+ l = taggedStr.length; |
+ |
+ for (var i = 0; i < l; i++) |
+ { |
+ a = taggedStr.charAt(i); |
+ if (outOfTag && (a == "<")) |
+ outOfTag = false; |
+ if (outOfTag) |
+ untaggedStr += a; |
+ if ((!outOfTag) && (a == ">")) |
+ outOfTag = true; |
+ } |
+ |
+ return untaggedStr; |
+} |
+ |
+function strCount(s, substr, bCaseSensitive) |
+{ |
+ var result = 0; |
+ |
+ if (!s || !substr) |
+ return -1; |
+ if (!bCaseSensitive) |
+ { |
+ if (s.toUpperCase) |
+ s = s.toUpperCase(); |
+ if (substr.toUpperCase) |
+ substr = substr.toUpperCase(); |
+ } |
+ if (window.RegExp) |
+ { |
+ var rxSub = new RegExp(substr, "g"); |
+ if (s.match && rxSub) |
+ { |
+ result = s.match(rxSub); |
+ if (result && result.length) |
+ return result.length; |
+ else |
+ return 0; |
+ } |
+ } |
+ if (s.substr && substr.length) |
+ { |
+ for (var i = 0; i < s.length; i++) |
+ if (s.substr(i, substr.length) == substr) |
+ { |
+ result++; |
+ i += substr.length - 1; |
+ } |
+ return result; |
+ } |
+ else |
+ return -1; |
+} |
+ |
+var sLinkOutMsg_de = |
+ "Dieser Link ist offline nicht verfügbar.\n\n" |
+ + "Wenn Sie mit dem Internet verbunden sind, steht Ihnen die Seite online" |
+ + " zur Verfügung.\n\n" |
+ + "Möchten Sie jetzt eine Verbindung zu dieser Seite herstellen?"; |
+ |
+var sLinkOutMsg_us = |
+ "This link is not available offline.\n\n" |
+ + "If you are connected to the Internet, the website is available online.\n\n" |
+ + "Do you wish to connect to this website now?';"; + |
+var sLinkOutMsg = sLinkOutMsg_de; |
+ |
+function linkOut(sURL, sLink, bShowURL, aTarget, sWidth, sHeight, sOptions) |
+{ |
+ if (arguments.length < 1) |
+ { |
+ EInvalidArgNum("linkOut", 1); |
+ return false; |
+ } |
+ |
+ var arg = sLinkOutMsg; |
+ // version 1.05.2000.3 update, formerly bShowURL as 2nd argument; fixed problem with websites created earlier |
+ if (arguments.length < 3) |
+ bShowURL = true; |
+ |
+ if (((sURL != "") && (bShowURL == true)) |
+ || ((arguments.length >= 2) && (sLink != ""))) |
+ { |
+ var oldArg = arg; |
+ arg = "\n\n"; |
+ arg += oldArg; |
+ } |
+ |
+ if ((sURL != "") && (bShowURL == true)) |
+ { |
+ var oldArg = arg; |
+ arg = sURL; |
+ arg += oldArg; |
+ } |
+ |
+ if ((arguments.length >= 2) && (sLink != "")) |
+ { |
+ if ((sURL != "") && (bShowURL == true)) |
+ { |
+ var oldArg = arg; |
+ arg = sLink; |
+ arg += "\n"; |
+ arg += oldArg; |
+ } |
+ else |
+ { |
+ var oldArg = arg; |
+ arg = sLink; |
+ arg += oldArg; |
+ } |
+ } |
+ |
+ if (confirm(arg)) |
+ { |
+ var oTarget = document; |
+ if ((arguments.length >= 4) |
+ && (aTarget != "") |
+ && (aTarget.toLowerCase() != "_self")) |
+ { // version 1.05.2000.3 update, formerly no nullstrings nor "_self" supported |
+ if (isNaN(aTarget)) |
+ { |
+ if ((aTarget.toLowerCase() == "_new") |
+ || (aTarget.toLowerCase() == "_blank")) |
+ { |
+ popUp(sURL, sWidth, sHeight, sOptions); |
+ return; |
+ } |
+ else |
+ oTarget = parent.eval(aTarget).document; |
+ // and below: v1.09.2000.3 bugfix |
+ } |
+ else |
+ oTarget = parent.frames[aTarget].document; |
+ } |
+ oTarget.location = ""; |
+ oTarget.location.href = sURL; |
+ } |
+ |
+ return false; // version 1.15.2000.11 update |
+} |
+ |
+function popUp(sURL, iWidth, iHeight, sOptions) |
+{ |
+ var sFeatures = "height="; |
+ sFeatures += String(iHeight); |
+ sFeatures += ",width="; |
+ sFeatures += String(iWidth); |
+ if (arguments.length > 3) |
+ { |
+ sFeatures += ","; |
+ sFeatures += sOptions; |
+ } |
+ var wndChild = window.open(sURL, null, sFeatures); |
+ return false; |
+} |
+ |
+// OpenChildWin(...) call redirected to popUp(...) for compatibility to previous versions |
+ |
+function OpenChildWin(sURL, iWidth, iHeight, sOptions) |
+{ |
+ return popUp(sURL, iWidth, iHeight, sOptions); |
+} |
+ |
+function LoadFrame(sURL, targetFrame) |
+{ |
+ if (arguments.length < 2) |
+ { |
+ // Raise exception if required arguments are missing |
+ return EInvalidArgNum("LoadFrame", 2); |
+ } |
+ if (isNaN(targetFrame)) |
+ { |
+ if (parent.eval(targetFrame)) |
+ { |
+ parent.eval(targetFrame).location.href = sURL; |
+ return sURL; |
+ } |
+ else |
+ return targetFrame; |
+ } |
+ else |
+ { |
+ if (parent.frames[targetFrame]) |
+ { |
+ parent.frames[targetFrame].location.href = sURL; |
+ return sURL; |
+ } |
+ else |
+ return targetFrame; |
+ } |
+} |
+ |
+var sDefaultInspectorPath = enhancedPath + "obj-insp.html"; |
+ |
+function noError() |
+{ |
+ this.onerror = null; |
+ return true; |
+} |
+ |
+function getObjInfo(aObject, aWhat, sStyle, sHeader, sFooter, sInspectorPath) { |
+ var sErrPrefix = "JSX:getObjInfo " + enhancedVersion + ": "; |
+ var sNoObj = "not an object"; |
+ // alert("1: " + aObject + "[" + typeof aObject + "]"); |
+ if (aObject) { |
+ /* check if `try {'...`} catch {'...`} finally {'...`}' is supported, |
+ do not guess object otherwise; Netscape 4.x workaround |
+ */ |
+ tcf = false; |
+ window.onerror = noError; // JavaScript 1.0 compatible |
+ eval("try { tcf = false; } finally { tcf = true; };"); |
+// alert(aObject); |
+ window.onerror = null; |
+ var sObject = aObject; |
+ if (typeof aObject == "string") { |
+ if (tcf) { |
+ var bFailed = false; |
+ eval('\ |
+ try { \ |
+ // alert("2: " + aObject + "[" + typeof sObject + "]"); \n\ |
+ aObject = eval(aObject); \ |
+ } catch (e) { \ |
+ // alert("3: " + sObject + "[" + typeof sObject + "]"); \n\ |
+ var sObject = "window." + sObject; \ |
+ try { \ |
+ // alert("4: " + aObject + "[" + typeof aObject + "]"); \n\ |
+ aObject = eval(sObject); \ |
+ } catch (e) { \ |
+ // alert("5: " + "[Not an object]"); \n\ |
+ bFailed = true; \ |
+ } \ |
+ } \ |
+ '); |
+ if (bFailed) |
+ return sErrPrefix + sObject + " is " + sNoObj + "."; |
+ } |
+ else { |
+ aObject = eval(aObject); |
+ if (!aObject) |
+ return (sErrPrefix + sObject + " is " + sNoObj + "."); |
+ // alert("6: " + "[Not an object]"); |
+ } |
+ } |
+ // alert("7: " + aObject); |
+ } else{ |
+ // alert("8: " + "[Not an object]"); |
+ return (sErrPrefix + "[" + sNoObj + "]"); |
+ } |
+ if (!aWhat) aWhat = ""; // v1.29.2002.10b3 bugfix |
+ var bShowProps = (aWhat && (!aWhat.test && aWhat.toUpperCase().indexOf("P") > -1)); |
+ var bShowMethods = (aWhat && (!aWhat.test && aWhat.toUpperCase().indexOf("M") > -1)); |
+ var bShowObjects = (aWhat && (!aWhat.test && aWhat.toUpperCase().indexOf("O") > -1)); |
+ var bFormatAsArray = (sStyle && (sStyle.toUpperCase().indexOf("A") > -1)); |
+ var bTextLineStyle = (sStyle && (sStyle.toUpperCase().indexOf("L") > -1)); |
+ var bFormatAsLines = (sStyle && (sStyle.toUpperCase().indexOf("H") > -1)); |
+ var bFormatAsTable = (sStyle && (sStyle.toUpperCase().indexOf("T") > -1)); |
+ var bShowType = (sStyle && (sStyle.toUpperCase().indexOf("S") > -1)); |
+ var bFormatAsHTML = (bFormatAsLines || bFormatAsTable); |
+ |
+ if (sHeader && (sHeader == "-")) |
+ sHeader = ""; |
+ else if (!sHeader || (sHeader == "")) { |
+ sHeader = ""; |
+ if (bShowObjects || bShowProps || bShowMethods) { |
+ if (bShowProps) |
+ sHeader = "Properties"; |
+ else if (bShowObjects) |
+ sHeader = "Composed Objects"; |
+ if (bShowMethods) { |
+ if (bShowObjects || bShowProps) |
+ sHeader += " and "; |
+ sHeader += "Methods"; |
+ } |
+ } else |
+ sHeader = "Attributes"; |
+ sHeader += " of " + (bFormatAsHTML ? '<code>' : '') + sObject |
+ + (aWhat.test ? ' matching ' + String(aWhat) : '') + (bFormatAsHTML ? '<\/code>' : ''); |
+ } |
+ var sAttr = |
+ (bFormatAsTable ? '<table border="1" cellpadding="5" cellspacing="0">\n' : '') |
+ + ((sHeader != "") ? |
+ (bFormatAsTable ? '<tr><th align="left" colspan="' + (bShowType ? 3 : 2) + '">' : '') |
+ + sHeader |
+ + (bFormatAsHTML && bFormatAsLines ? "<br />\n" : (!bFormatAsHTML ? "\n__________________________________________________\n" : "")) |
+ + (bFormatAsTable ? |
+ ('<\/th><\/tr>\n<tr><th align="left">Name<\/th>' |
+ + (bShowType ? '<th align="left">Type<\/th>' : '') |
+ + '<th align="left">Value<\/th><\/tr>\n') : '' |
+ ) : |
+ ""); |
+ var bCondition = false; |
+ var aAttributes = new Array(); |
+ for (var Attribute in aObject) { |
+ if (!aWhat.test || aWhat.test(Attribute)) |
+ aAttributes[aAttributes.length] = Attribute; |
+ } |
+ if (aAttributes.sort) // sort attributes lexically |
+ aAttributes.sort(); |
+ if (bFormatAsArray) // return an array instead of text |
+ return aAttributes; |
+ for (var i = 0; i < aAttributes.length; i++) { |
+ var bCondition = false; |
+ var isError = false; |
+ if (tcf) // see above |
+ eval('\ |
+ try { \ |
+ if (aObject[aAttributes[i]]) \ |
+ var attrValue = aObject[aAttributes[i]]; \ |
+ else \ |
+ var attrValue = eval("aObject." + aAttributes[i]); \ |
+ var bMethod = (String(attrValue).toLowerCase().indexOf("function ") > -1); \ |
+ } catch (e) { \ |
+ var attrValue = "[" + e + "]"; \ |
+ var bMethod = false; \ |
+ isError = true; \ |
+ } \ |
+ '); |
+ else { |
+ if (aObject[aAttributes[i]]) |
+ var attrValue = aObject[aAttributes[i]]; |
+ else |
+ var attrValue = eval("aObject." + aAttributes[i]); |
+ var bMethod = (String(attrValue).toLowerCase().indexOf("function ") > -1); |
+ } |
+ var bProperty = !bMethod; |
+ var attrType = typeof attrValue; |
+ var bObject = (attrType == "object"); |
+ if (aWhat && (aWhat != "") && (!aWhat.test)) |
+ bCondition = |
+ (bProperty && bShowProps) || (bMethod && bShowMethods) || (bObject && bShowObjects); |
+ else |
+ bCondition = true; |
+ if (bCondition) { |
+ var s = ((isNaN(attrValue) || String(attrValue) == "") |
+ && !bObject && !isError) ? "\"" : ""; |
+ |
+ var attrName = String(aAttributes[i]); |
+ var sAttrName = attrName; |
+ if (bFormatAsHTML) { |
+ sAttrName = "<code><b>" + attrName + "<\/b><\/code>"; |
+ attrValue = replaceText(replaceText(String(attrValue), "<", "<"), ">", ">"); |
+ } |
+ sAttr += |
+ (bFormatAsTable ? '<tr valign="top"><td>' : '') |
+ + ((bObject && bFormatAsHTML) ? |
+ ("<a href='javascript:ObjectInspector(\"" + sObject + ")'>") : '') |
+ + sAttrName |
+ + (bObject && bFormatAsHTML ? '<\/a>' : '') |
+ + (bFormatAsTable ? '<\/td>' : "") |
+ + (bShowType ? (bFormatAsTable ? ('<td><code>' + attrType + '<\/code><\/td>') : (CH_NBSP + ":" + CH_NBSP + attrType)) : "") |
+ + (bFormatAsTable ? '<\/td><td><code>' : (CH_NBSP + "=" + CH_NBSP)) |
+ + s + attrValue + s; |
+// ("<a href='javascript:ObjectInspector(\'' + sObject + '[\"' + attrName + '\"]\'', \'' + aWhat + '\', \'' + sStyle +'\');"' |
+// + ' !onclick="window.open(\'' |
+// + (sInspectorPath ? escape(sInspectorPath) : sDefaultInspectorPath) |
+// + '?obj=' + escape(sObject) + "." + escape(attrName) |
+// + '&what=' + escape(aWhat) |
+// + '&style=' + escape(sStyle) |
+// + '\', \'wndObjectInspector\', \'scrollbars=yes,resizable=yes\'); return false;"' |
+ if (bFormatAsHTML) { |
+ if (bFormatAsTable) |
+ sAttr += "<\/code><\/td><\/tr>\n"; |
+ else |
+ sAttr += "<br />\n"; |
+ } else if (bTextLineStyle) |
+ sAttr += "; "; |
+ else |
+ sAttr += "\n"; |
+ } |
+ } |
+ |
+ switch (String(sFooter)) { |
+ case "-": |
+ sFooter = ""; |
+ break; |
+ |
+ case "undefined": |
+ case "": |
+ case "null": |
+ if (bFormatAsHTML) |
+ sFooter = '<code><a href="' + enhancedDocURL + '" target="_blank" title="Show documentation for JSX:enhanced.js.">JSX:enhanced.js<\/a>:<a href="' + enhancedDocURL + '#getObjInfo" target="_blank" title="Show documentation for JSX:enhanced.js:getObjInfo(...).">getObjInfo<\/a>(...)<\/code><br>'; |
+ else |
+ sFooter = "JSX:enhanced.js:getObjInfo(...)\n"; |
+ sFooter += "Library version " + enhancedVersion; |
+ sFooter += (bFormatAsHTML ? "<br />" : "\n"); |
+ sFooter += enhancedCopyright + (bFormatAsHTML ? " " : " ") + enhancedAuthor + " "; |
+ if (bFormatAsHTML) { |
+ sFooter = replaceText(sFooter, "©", "©"); |
+ sFooter += '<<a href="mailto:Thomas%20\'PointedEars\'%20Lahn%20<' + enhancedEmail + '>" title="E-mail the author of this fabulous script ;-) E-mail client required.">' + enhancedEmail + '<\/a>>' |
+ } else |
+ sFooter += "<" + enhancedEmail + ">" |
+ } |
+ if (sFooter != "") { |
+ sAttr += (bFormatAsHTML ? (bFormatAsTable ? '<tr>\n<td colspan="' + (bShowType ? 3 : 2) + '">' : '') : "\n__________________________________________________\n") |
+ + sFooter |
+ + (bFormatAsHTML ? (bFormatAsTable ? '<\/td>\n<\/tr>\n' : '<br>') : ""); |
+ } |
+ if (bFormatAsTable) sAttr += '<\/table>'; |
+ return sAttr; |
+} |
+ |
+var sInspectorVersion = "0.71"; |
+ |
+function ObjectInspector(sObject, aWhat, sStyle, sHeader, sFooter, iRecursionLevel) { |
+ var wInspector = window.open("enhanced.htm", "wndObjectInspector", "scrollbars=yes,resizable=yes"); |
+ if (wInspector) { |
+ wInspector.document.open("text/html"); |
+ var s = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n' |
+ + ' "http://www.w3.org/TR/html4/strict.dtd">\n' |
+ + '<html>\n' |
+ + ' <head>\n' |
+ + ' <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">\n' |
+ + ' <meta name="author" value="' + enhancedCopyright + ' ' + enhancedAuthor + ' (' + enhancedEmail + ')">\n' |
+ + ' <title>JavaScript ObjectInspector ' + sInspectorVersion + '<\/title>\n' |
+ + ' <script type="text/javascript">\n' |
+ + ' <!--\n' |
+ + ' ' + getObjInfo + '\n' |
+ + ' ' + arguments.callee + '\n' |
+ + ' //-->\n' |
+ + ' <\/script>\n' |
+ + ' <\/head>\n' |
+ + ' <body>\n' |
+ + ' <script type="text/javascript">\n' |
+ + ' <!--\n' |
+ + ' document.write(getObjInfo(' + sObject + ', "' + aWhat + '", "' + sStyle + '"));\n' |
+ + ' //-->\n' |
+ + ' <\/script>\n' |
+ + ' <\/body>\n' |
+ + '<\/html>'; |
+ wInspector.document.write(s); |
+ wInspector.document.close(); |
+ } else |
+ enhancedException("Error: Unable to create ObjectInspector window.\n\n" |
+ + "Disable popup blocking, or try alert(getObjInfo(...)) or" |
+ + " document.write(getObjInfo(...)) instead."); |
+// return false; |
+} |
+ |
+function ObjectInspector2(sObject) { |
+ var sMsgClose_en = "Close Window" |
+ var sMsgClose_de = "Fenster schließen" |
+ var sInspector = "ObjectInspector " + sInspectorVersion; |
+ var sMsgClose = sMsgClose_en; |
+ var wImage = false; |
+ var iWidth = 640, iHeight = 480; |
+ |
+// preset also window position and size in the case the temporary script below fails |
+ var sOptions = "toolbar=no,location=no,menubar=no,scrollbars=no,resizable=yes" |
+ + ",left=0,top=0,width=" + (iWidth) + ",height=" + (iHeight); |
+ var wInspector = window.open( "", null, sOptions ); |
+ if (wInspector != null) { |
+ var dImage = wInspector.document.open("text/html"); |
+ with(wInspector.document) { |
+ write( |
+'<html>', |
+ |
+'<head>', |
+ |
+'<meta name="generator" value="JSX:enhanced.js:ObjectInspector(...) © 2001-2002 Thomas Lahn (webmaster@PointedEars.de)">', |
+ |
+'<title>JavaScript ObjectInspector 0.7<\/title>', |
+ |
+'<script language="JavaScript" type="text/javascript"><!--\n', |
+ |
+'window.moveTo(screen.width/2 - 640/2, screen.height/2 - 480/2);\n', |
+ |
+'function radioChkdVal(aForm, sRadioBtnGrpName) {', |
+ 'for (var i = 0; i < aForm.elements.length; i++) {', |
+ 'if ((aForm.elements[i].name == sRadioBtnGrpName) && aForm.elements[i].checked) return (aForm.elements[i].value);', |
+ '}', |
+ 'return "";', |
+'}\n', |
+ |
+'var CH_NBSP = unescape("%A0");\n', |
+ |
+'function removeOptionsns(aSelect) {', |
+ 'if(aSelect && (aSelect.tagName) && (aSelect.tagName.toLowerCase() == "select"))', |
+ 'while(aSelect.options.length > 0) {', |
+ 'if (document.all)', |
+ 'aSelect.options.remove(aSelect.options.length - 1);', |
+ 'else {', |
+ 'aSelect.options[aSelect.options.length - 1] = null;', |
+ 'if (! document.all) history.go(0);', |
+ '}', |
+ |
+ '}', |
+'}\n', |
+ |
+'function addOption(aSelect, sText, iPosition) {', |
+ 'if(aSelect && (aSelect.tagName) && (aSelect.tagName.toLowerCase() == "select")) {', |
+ 'var newElement = new Option(sText);', |
+ 'if (document.all) {', |
+ 'if(arguments.length > 2)', |
+ 'aSelect.options.add(newElement, iPosition);', |
+ 'else\n', |
+ 'aSelect.options.add(newElement);', |
+ '} else {', |
+ 'aSelect.options[aSelect.options.length] = newElement;', |
+ 'aSelect.options[aSelect.options.length - 1].value = "";', |
+ '}', |
+ '}', |
+'}\n', |
+ |
+'function inspect(sObject, aWhat) {', |
+ 'if (sObject.toLowerCase().indexOf("document.all") > -1) {', |
+ 'alert ("Retrieval of the attributes of document.all canceled. This would have resulted in recursive listing and would have caused your browser to hang.");', |
+ 'up();', |
+ 'return false;', |
+ '}\n', |
+ 'var aObject = eval(sObject);', |
+ 'if(! aObject) {', |
+ 'alert (sObject + " is not an object.");', |
+ 'up();', |
+ 'return false;', |
+ '}\n', |
+ 'var bCondition = false;', |
+ 'removeOptions(document.forms[0].attr);', |
+ 'for(var Attribute in aObject) {', |
+ 'switch (Attribute) {', |
+ 'case "dataFormatAs":\n', |
+ 'case "clientInformation":\n', |
+ 'case "external":\n', |
+ 'case "navigator": break;\n', |
+ 'default:\n', |
+ 'var bCondition = false;', |
+ 'var bMethod = ( String(aObject[Attribute]).toLowerCase().indexOf("function") > -1 );', |
+ 'var bProperty = ! bMethod;', |
+ 'var bObject = ( String(aObject[Attribute]).toLowerCase().indexOf("object") > -1 );', |
+ 'if(arguments.length > 1) {', |
+ 'if(aWhat.toLowerCase() == "p")', |
+ 'bCondition = bProperty;', |
+ 'else if(aWhat.toLowerCase() == "m")', |
+ 'bCondition = bMethod;', |
+ 'else if(aWhat.toLowerCase() == "o")', |
+ 'bCondition = bObject;', |
+ 'else\n', |
+ 'bCondition = true;', |
+ '} else\n', |
+ 'bCondition = true;', |
+ 'if (bCondition) {', |
+ |
+ 'var sAttr = "[";', |
+ 'if (bObject)', |
+ 'sAttr += "O";', |
+ 'else if (bProperty)', |
+ 'sAttr += "P";', |
+ 'else if (bMethod)', |
+ 'sAttr += "M";', |
+ 'else\n', |
+ 'sAttr += "?";', |
+ 'sAttr += "]" + CH_NBSP + Attribute;', |
+ 'addOption(document.forms[0].attr, sItem);', |
+ |
+ '}', |
+ '}', |
+ '}', |
+'}\n', |
+ |
+'function up() {', |
+ 's = document.forms[0].identifier.value;', |
+ 'if (s.indexOf(".") > -1) {', |
+ 'document.forms[0].identifier.value = s.substr(0, s.lastIndexOf("."));', |
+ 'EditEnter();', |
+ '} else\n', |
+ 'alert("You are on the uppermost level of aggregation.");', |
+'}\n', |
+ |
+'function down(sAttrib) {', |
+ 'if (sAttrib.charAt(1) != "M") {', |
+ 'document.forms[0].identifier.value += "." + sAttrib.substr(sAttrib.lastIndexOf(CH_NBSP)+1);', |
+ 'EditEnter();', |
+ '}', |
+'}\n', |
+ |
+'function EditEnter() {', |
+ 'document.forms[0].val.value = "";', |
+ 'inspect(document.forms[0].identifier.value, radioChkdVal(document.forms[0], "attrib"));', |
+ 'return( false );', |
+'}\n', |
+ |
+'function showVal(sAttrib) {', |
+ 'if (sAttrib.charAt(1) != "M") {', |
+ 'var attrValue = eval(document.forms[0].identifier.value + "." + sAttrib.substr(sAttrib.lastIndexOf(CH_NBSP)+1));', |
+ 'var s = ( ( isNaN(attrValue) || (String(attrValue) == "") )', |
+ '&& ( String(attrValue).indexOf("object") < 0 ) ) ? "\\"" : "";', |
+ |
+ 'document.forms[0].val.value = s + attrValue + s;', |
+ '} else\n', |
+ 'document.forms[0].val.value = "";', |
+'}', |
+ |
+'//-->\n<\/script>', |
+ |
+'<style type="text/css"><!--\n', |
+ |
+'.bold { font-weight: bold; }', |
+'.fixed { font-family: Lucida Console, Courier New, Courier; }', |
+'hr { position: relative; left:-10px; width:100%; }', |
+ |
+'//-->\n<\/style>', |
+ |
+'<\/head>', |
+'<body bgcolor="#d8dcd8" text="#000000">', |
+'<div style="position:absolute; top:0px; left:0px;">', |
+'<div style="background-color:#ffffff; width:101%; text-indent:10px; border-width: 1px; border-style: inset;"><h1>JavaScript ObjectInspector 0.7<\/h1>', |
+'<p style="position:relative; top:-10px;">Copyright © 2001 Thomas Lahn (<a href="mailto:webmaster@PointedEars.de">webmaster@PointedEars.de<\/a>)<\/p><\/div>', |
+'<div style="position:relative; left:10px;">', |
+'<form onSubmit="return EditEnter();">', |
+'<p><span class="bold">Object: <\/span><input type="text" size=40 value="', ((arguments.length > 0) ? sObject : 'window'), |
+'" name="identifier"> <input type="submit" value="Apply" id="btApply"> <input type="button" value="Up" onClick=\'up();\'><br>', |
+'<span class="bold">Attributes to retrieve: <\/span><nobr><input name="attrib" value="" type="radio" checked lang="en-us" dir="ltr" onClick=\'EditEnter();\'>All<\/nobr> <nobr><input name="attrib" value="p" type="radio" lang="en-us" dir="ltr" onClick=\'EditEnter();\'>All [P]roperties<\/nobr> <nobr><input name="attrib" value="o" type="radio" lang="en-us" dir="ltr" onClick=\'EditEnter();\'>Composed [O]bjects<\/nobr> <nobr><input name="attrib" value="m" type="radio" lang="en-us" dir="ltr" onClick=\'EditEnter();\'>[M]ethods<\/nobr><\/p>', |
+'<hr size=1 noshade>', |
+'<table border=0 cellspacing=5 cellpadding=0 width="100%">', |
+'<tr valign="top">', |
+ '<td width="50%" class="bold">Attribute:<\/td>', |
+ '<td class="bold">Value:<\/td><\/tr>', |
+'<tr valign="top">', |
+ '<td><select size=13 name="attr" class="fixed" style="width:100%;" onChange=\'showVal(this.options[this.options.selectedIndex].text);\' onDblClick=\'if (this.options.selectedIndex > -1) down(this.options[this.options.selectedIndex].text);\'><\/select><\/td>', |
+ '<td><textarea rows=13 cols=40 name="val" class="fixed"><\/textarea><\/td><\/tr>', |
+'<\/table>', |
+'<hr size=2>', |
+'<input type="button" value="Exit" onClick="window.close();">', |
+'<\/form>', |
+'<script language="JavaScript" type="text/javascript"><!--\n', |
+ 'EditEnter();', |
+'//--><\/script><\/div>', |
+'<\/div>', |
+'<\/body>', |
+'<\/html>'); |
+ close(); |
+ } |
+ if(wInspector.opener) wInspector.opener.blur(); |
+ wInspector.focus(); |
+ } |
+ return(false); |
+} |
+ |
+function ObjectInspector3(sRoot) { |
+ var s = |
+ '<script src="../enhanced.js" type="text/javascript"><\/script>\n' + |
+ '<script src="../dhtml.js" type="text/javascript"><\/script>\n' + |
+ '<script src="../search.js" type="text/javascript"><\/script>\n' + |
+ '<script type="text/javascript" language="JavaScript">\n <!--\n' + |
+ ' var s = new TSearchStr(location.search);\n' + |
+ ' var sRoot = "' + (sRoot ? sRoot : 'window') + '";\n' + |
+ ' if (s.hasValue("object"))\n' + |
+ ' sRoot = s.getValue("object");\n\n' + |
+ |
+ ' function ExpandCollapse(s, o2) {\n' + |
+ ' var o = getElem("id", s);\n' + |
+ ' if (o && o.style && (typeof o.style.display != "undefined")) {\n' + |
+ ' if (o.style.display == "none") {\n' + |
+ ' o.style.display = "";\n' + |
+ ' o2.innerHTML = "[-]";\n' + |
+ ' } else {\n' + |
+ ' o.style.display = "none";\n' + |
+ ' o2.innerHTML = "[+]";\n' + |
+ ' }\n' + |
+ ' }\n' + |
+ ' return false;\n' + |
+ ' }\n\n' + |
+ |
+ ' function writeProps(s) {\n' + |
+ ' var o = eval(s);\n' + |
+ ' var s2 = s;\n' + |
+ ' var iLastDot = s2.lastIndexOf("[");\n' + |
+ ' if (iLastDot < 0) iLastDot = s2.lastIndexOf(".");\n' + |
+ ' var sParent = s.substring(0, iLastDot);\n' + |
+ ' var sLoc = "";\n' + |
+ ' if (window.opera) {\n' + |
+ ' sLoc = String(location);\n' + |
+ ' var iQuery = sLoc.indexOf("?");\n' + |
+ ' if (iQuery < 0) iQuery = sLoc.length;\n' + |
+ ' sLoc = sLoc.substring(0, iQuery);\n' + |
+ ' }\n' + |
+ ' if (iLastDot >= 0)\n' + |
+ " s2 = '<a href=\"' + sLoc + '?object=' + sParent + '\">' + sParent + '<\\/a>' + s.substr(iLastDot);\n" + |
+ ' document.write("<b>" + s2 + "<\\/b> = " + o + "\\n");\n' + |
+ ' var a = new Array();\n' + |
+ ' var bShowLoc = true;\n' + |
+ ' var bShowDoc = true;\n' + |
+ ' var bShowNavi = true;\n' + |
+ ' var bShowItems = true;\n' + |
+ ' for (var Attr in o) {\n' + |
+ ' a[a.length] = Attr;\n' + |
+ ' if (Attr == "location") bShowLoc = false;\n' + |
+ ' if (Attr == "document") bShowDoc = false;\n' + |
+ ' if (Attr == "navigator") bShowNavi = false;\n' + |
+ ' if (Attr == "0") bShowItems = false;\n' + |
+ ' }\n' + |
+ ' if ((s == "window") && bShowLoc) a[a.length] = "location";\n' + |
+ ' if ((s == "window") && bShowDoc) a[a.length] = "document";\n' + |
+ ' if ((s == "window") && bShowNavi) a[a.length] = "navigator";\n' + |
+ ' if (o.length && bShowItems) {\n' + |
+ ' for (var i = 0; i < o.length; i++)\n' + |
+ ' a[a.length] = i;\n' + |
+ ' }\n' + |
+ ' if (a.sort) // sort attributes lexically\n' + |
+ ' a.sort();\n' + |
+ ' for (var i = 0; i < a.length; i++) {\n' + |
+ ' var val = replaceText(replaceText(String(o[a[i]]), "<", "<"), ">", ">");\n' + |
+ ' var t = typeof o[a[i]];\n' + |
+ ' if (t == "boolean")\n' + |
+ " val = '<a href=\"#\" title=\"Click to toggle value\" onclick=\"try {' + s + '.' + a[i] + '=' + !o[a[i]] + '; location.reload() } catch(e) { alert(\'Unable to toggle property value. Maybe there is no setter for this property.\') }; return false\">' + val + '<\\/a>';\n" + |
+ ' if (t == "string")\n' + |
+ " val = '\"' + val + '\"';\n" + |
+ ' if ((String(o[a[i]]).indexOf("\\n") >= 0) || (String(o[a[i]]).length > 72))\n' + |
+ " val = \"<a href='#'\"" + |
+ ' + " onclick=\"return ExpandCollapse(\'span" + i + "\', this)\"' + |
+ " + ' style=\"text-decoration:none\">' + (!window.opera ? '[+]' : '')" + |
+ " + '<\\/a> <span ' + (!window.opera ? 'style=\"display:none\" ' : '')" + |
+ " + 'id=\"span' + i + '\">' + val + '<\\/span>';\n" + |
+ ' document.write(" <b>."' + |
+ " + (((t == 'object') || ((t == 'function') && window.opera)) && o[a[i]] ? ('<a href=\"' + sLoc + '?object=' + s + '[\'' + a[i] + '\']\">') : '') + a[i] + (((t == 'object') || ((t == 'function') && window.opera)) ? '<\\/a>' : '') + '<\\/b> : '" + |
+ ' + t + " = " + val + "\\n");\n' + |
+ ' }\n' + |
+ ' }\n' + |
+ ' \/\/-->\n' + |
+ '<\/script>\n' + |
+ "<h1>PointedEars' ObjectInspector 0.8<\/h1>" + |
+ '<p style="font-size:small">Copyright © 2003 Thomas Lahn <<a href="mailto:obj-insp@PointedEars.de">obj-insp@PointedEars.de<\/a>><\/p>\n' + |
+ '<hr>\n' + |
+ '<script type="text/javascript" language="JavaScript">\n <!--\n' + |
+ ' s = \'<form action="">\\n\'\n' + |
+ ' + \' Object: <input name="object" value="\' + sRoot + \'" size="\' + ((sRoot.length > 20) ? sRoot.length : 20) + \'">\\n\'\n' + |
+ ' + \' <input type="submit" value="Inspect">\\n\'\n' + |
+ ' + \'<\/form>\\n\'\n' + |
+ ' document.write(s);\n' + |
+ ' document.write(\'<pre>\');\n' + |
+ ' writeProps(sRoot);\n' + |
+ ' document.write(\'<\/pre>\');\n' + |
+ ' \/\/-->\n' + |
+ '<\/script>'; |
+ return s; |
+} |
+ |
+if(! document) |
+ ENoBrowser(); // Raise exception if not processed from a web browser |
+ |
Index: live |
=================================================================== |
--- live (nonexistent) |
+++ live (revision 520) |
/live |
---|
Property changes: |
Added: svn:ignore |
## -0,0 +1,63 ## |
+_*.js |
+ |
+bookmarklets |
+ |
+cgi_buffer |
+ |
+comp.lang.javascript |
+ |
+Fortu-Net_de Private Nachricht senden-Dateien |
+ |
+Greasemonkey |
+ |
+how-to |
+ |
+php.bak |
+ |
+python |
+ |
+MozPref |
+ |
+perl |
+ |
+sprintf.txt |
+ |
+filedates.txt |
+ |
+CHANGELOG |
+ |
+dependencies.txt |
+ |
+maketree.sh |
+ |
+unicode-ranger.awk |
+ |
+object.html |
+ |
+ChangeLog.next |
+ |
+tmp |
+ |
+js-reserved-words.txt |
+ |
+types.html |
+ |
+dhtml.js.diff |
+ |
+js-get-symbols |
+ |
+tags |
+ |
+js-tokens.txt |
+ |
+js-tokenizer |
+ |
+.directory |
+ |
+php |
+ |
+parallel.js |
+ |
+*.swp |
+ |
+faq |