diff --git a/oem/firstvoices/windows/src/xml/sil-logo-blue.png b/oem/firstvoices/windows/src/xml/sil-logo-blue.png
index e0d7ab6b37..b65c2a4e08 100644
Binary files a/oem/firstvoices/windows/src/xml/sil-logo-blue.png and b/oem/firstvoices/windows/src/xml/sil-logo-blue.png differ
diff --git a/oem/firstvoices/windows/src/xml/strings.xml b/oem/firstvoices/windows/src/xml/strings.xml
index 193e2c9f89..bbb79c8869 100644
--- a/oem/firstvoices/windows/src/xml/strings.xml
+++ b/oem/firstvoices/windows/src/xml/strings.xml
@@ -517,6 +517,16 @@
Copyright © SIL International. All Rights Reserved.
+
+
+
+
Created by %1$s
+
+
+
+
+
Copyright © %1$s. All Rights Reserved.
+
diff --git a/package-lock.json b/package-lock.json
index cee7d8528b..0d2e119898 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,12 +21,12 @@
"developer/src/kmc-package",
"developer/src/kmc",
"developer/src/server",
- "common/models/*",
"common/test/resources",
"common/tools/*",
"common/web/*",
"common/tools/hextobin",
"web",
+ "web/src/engine/osk/gesture-processor",
"web/src/engine/predictive-text/*"
],
"dependencies": {
@@ -59,7 +59,7 @@
"eslint-plugin-promise": "^6.1.1",
"mocha": "^10.0.0",
"mocha-teamcity-reporter": "^4.0.0",
- "playwright": "^1.43.1",
+ "playwright": "^1.46.1",
"sinon": "^17.0.1",
"source-map-support": "^0.5.21",
"tslib": "^2.5.2",
@@ -69,45 +69,6 @@
"node": "20.16.0"
}
},
- "common/models/templates": {
- "name": "@keymanapp/models-templates",
- "license": "MIT",
- "dependencies": {
- "@keymanapp/keyman-version": "*",
- "@keymanapp/models-types": "*",
- "@keymanapp/models-wordbreakers": "*",
- "@keymanapp/resources-gosh": "*"
- },
- "devDependencies": {
- "@keymanapp/models-types": "*",
- "@keymanapp/web-utils": "*",
- "@types/mocha": "^7.0.2",
- "c8": "^7.12.0",
- "mocha": "^10.0.0",
- "mocha-teamcity-reporter": "^4.0.0",
- "typescript": "^5.4.5"
- }
- },
- "common/models/types": {
- "name": "@keymanapp/models-types",
- "license": "MIT",
- "devDependencies": {
- "typescript": "^5.4.5"
- }
- },
- "common/models/wordbreakers": {
- "name": "@keymanapp/models-wordbreakers",
- "license": "MIT",
- "devDependencies": {
- "@keymanapp/models-types": "*",
- "@keymanapp/resources-gosh": "*",
- "@types/mocha": "^7.0.2",
- "c8": "^7.12.0",
- "mocha": "^10.0.0",
- "mocha-teamcity-reporter": "^4.0.0",
- "typescript": "^5.4.5"
- }
- },
"common/test/resources": {
"name": "@keymanapp/common-test-resources",
"license": "MIT",
@@ -159,19 +120,6 @@
},
"devDependencies": {}
},
- "common/web/gesture-recognizer": {
- "name": "@keymanapp/gesture-recognizer",
- "dependencies": {
- "eventemitter3": "^5.0.0"
- },
- "devDependencies": {
- "@keymanapp/resources-gosh": "*",
- "mocha": "^10.0.0",
- "mocha-teamcity-reporter": "^4.0.0",
- "promise-status-async": "^1.2.10",
- "typescript": "^5.4.5"
- }
- },
"common/web/keyman-version": {
"name": "@keymanapp/keyman-version",
"license": "MIT",
@@ -179,17 +127,6 @@
"typescript": "^5.4.5"
}
},
- "common/web/sentry-manager": {
- "name": "@keymanapp/web-sentry-manager",
- "license": "MIT",
- "dependencies": {
- "@keymanapp/keyman-version": "*",
- "@sentry/browser": "^5.27.4"
- },
- "devDependencies": {
- "typescript": "^5.4.5"
- }
- },
"common/web/types": {
"name": "@keymanapp/common-types",
"license": "MIT",
@@ -368,18 +305,6 @@
"node": ">=4"
}
},
- "common/web/utils": {
- "name": "@keymanapp/web-utils",
- "license": "MIT",
- "devDependencies": {
- "@keymanapp/keyman-version": "*",
- "@keymanapp/resources-gosh": "*",
- "c8": "^7.12.0",
- "mocha": "^10.0.0",
- "mocha-teamcity-reporter": "^4.0.0",
- "typescript": "^5.4.5"
- }
- },
"core/include/ldml": {
"name": "@keymanapp/ldml-keyboard-constants",
"license": "MIT"
@@ -404,7 +329,7 @@
"eventemitter3": "^5.0.0",
"restructure": "^3.0.1",
"sax": ">=0.6.0",
- "semver": "^7.5.2",
+ "semver": "^7.5.4",
"xmlbuilder": "~11.0.0"
},
"devDependencies": {
@@ -533,7 +458,6 @@
"@keymanapp/kmc-model": "*",
"@keymanapp/kmc-model-info": "*",
"@keymanapp/kmc-package": "*",
- "@keymanapp/models-types": "*",
"@sentry/node": "^7.57.0",
"chalk": "^2.4.2",
"commander": "^10.0.0",
@@ -1153,7 +1077,7 @@
"@keymanapp/keyman-version": "*",
"@keymanapp/kmc-kmn": "*",
"@keymanapp/ldml-keyboard-constants": "*",
- "semver": "^7.5.2"
+ "semver": "^7.5.4"
},
"devDependencies": {
"@keymanapp/developer-test-helpers": "*",
@@ -1342,7 +1266,6 @@
"dependencies": {
"@keymanapp/common-types": "*",
"@keymanapp/keyman-version": "*",
- "@keymanapp/models-types": "*",
"typescript": "^5.4.5"
},
"devDependencies": {
@@ -1361,8 +1284,7 @@
"license": "MIT",
"dependencies": {
"@keymanapp/common-types": "*",
- "@keymanapp/developer-utils": "*",
- "@keymanapp/models-types": "*"
+ "@keymanapp/developer-utils": "*"
},
"devDependencies": {
"@types/mocha": "^5.2.7",
@@ -1942,7 +1864,7 @@
"open": "^8.4.0",
"restructure": "^3.0.1",
"sax": ">=0.6.0",
- "semver": "^7.5.2",
+ "semver": "^7.5.4",
"ws": "^8.17.1",
"xmlbuilder": "~11.0.0"
},
@@ -2186,6 +2108,23 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz",
+ "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/android-arm64": {
"version": "0.19.12",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
@@ -2330,6 +2269,23 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz",
+ "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/linux-mips64el": {
"version": "0.19.12",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
@@ -2426,6 +2382,23 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz",
+ "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/openbsd-x64": {
"version": "0.19.12",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
@@ -2795,7 +2768,7 @@
"link": true
},
"node_modules/@keymanapp/gesture-recognizer": {
- "resolved": "common/web/gesture-recognizer",
+ "resolved": "web/src/engine/osk/gesture-processor",
"link": true
},
"node_modules/@keymanapp/hextobin": {
@@ -2855,15 +2828,11 @@
"link": true
},
"node_modules/@keymanapp/models-templates": {
- "resolved": "common/models/templates",
- "link": true
- },
- "node_modules/@keymanapp/models-types": {
- "resolved": "common/models/types",
+ "resolved": "web/src/engine/predictive-text/templates",
"link": true
},
"node_modules/@keymanapp/models-wordbreakers": {
- "resolved": "common/models/wordbreakers",
+ "resolved": "web/src/engine/predictive-text/wordbreakers",
"link": true
},
"node_modules/@keymanapp/recorder-core": {
@@ -2879,11 +2848,11 @@
"link": true
},
"node_modules/@keymanapp/web-sentry-manager": {
- "resolved": "common/web/sentry-manager",
+ "resolved": "web/src/engine/sentry-manager",
"link": true
},
"node_modules/@keymanapp/web-utils": {
- "resolved": "common/web/utils",
+ "resolved": "web/src/engine/common/web-utils",
"link": true
},
"node_modules/@mdn/browser-compat-data": {
@@ -4016,6 +3985,7 @@
},
"node_modules/@sentry/browser": {
"version": "5.30.0",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@sentry/core": "5.30.0",
@@ -4030,7 +4000,8 @@
"node_modules/@sentry/browser/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
},
"node_modules/@sentry/cli": {
"version": "2.31.0",
@@ -4178,6 +4149,7 @@
},
"node_modules/@sentry/core": {
"version": "5.30.0",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@sentry/hub": "5.30.0",
@@ -4193,10 +4165,12 @@
"node_modules/@sentry/core/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
},
"node_modules/@sentry/hub": {
"version": "5.30.0",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@sentry/types": "5.30.0",
@@ -4210,10 +4184,12 @@
"node_modules/@sentry/hub/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
},
"node_modules/@sentry/minimal": {
"version": "5.30.0",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@sentry/hub": "5.30.0",
@@ -4227,7 +4203,8 @@
"node_modules/@sentry/minimal/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
},
"node_modules/@sentry/node": {
"version": "7.108.0",
@@ -4276,6 +4253,7 @@
},
"node_modules/@sentry/types": {
"version": "5.30.0",
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=6"
@@ -4283,6 +4261,7 @@
},
"node_modules/@sentry/utils": {
"version": "5.30.0",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@sentry/types": "5.30.0",
@@ -4295,7 +4274,8 @@
"node_modules/@sentry/utils/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
},
"node_modules/@sindresorhus/is": {
"version": "4.6.0",
@@ -8992,10 +8972,11 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.7.4",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.4.tgz",
- "integrity": "sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ==",
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz",
+ "integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-pkg-maps": "^1.0.0"
},
@@ -12077,33 +12058,35 @@
}
},
"node_modules/playwright": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz",
- "integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==",
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.1.tgz",
+ "integrity": "sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.43.1"
+ "playwright-core": "1.46.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
- "version": "1.43.1",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz",
- "integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==",
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz",
+ "integrity": "sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/portfinder": {
@@ -13799,6 +13782,438 @@
"node": ">=0.6.x"
}
},
+ "node_modules/tsx": {
+ "version": "4.19.0",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.0.tgz",
+ "integrity": "sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.23.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz",
+ "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/android-arm64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz",
+ "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/android-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz",
+ "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz",
+ "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/darwin-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz",
+ "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz",
+ "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz",
+ "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-arm": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz",
+ "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-arm64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz",
+ "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-ia32": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz",
+ "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz",
+ "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz",
+ "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz",
+ "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-s390x": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz",
+ "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz",
+ "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz",
+ "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz",
+ "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/sunos-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz",
+ "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/win32-arm64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz",
+ "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/win32-ia32": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz",
+ "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/win32-x64": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz",
+ "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/esbuild": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz",
+ "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.23.1",
+ "@esbuild/android-arm": "0.23.1",
+ "@esbuild/android-arm64": "0.23.1",
+ "@esbuild/android-x64": "0.23.1",
+ "@esbuild/darwin-arm64": "0.23.1",
+ "@esbuild/darwin-x64": "0.23.1",
+ "@esbuild/freebsd-arm64": "0.23.1",
+ "@esbuild/freebsd-x64": "0.23.1",
+ "@esbuild/linux-arm": "0.23.1",
+ "@esbuild/linux-arm64": "0.23.1",
+ "@esbuild/linux-ia32": "0.23.1",
+ "@esbuild/linux-loong64": "0.23.1",
+ "@esbuild/linux-mips64el": "0.23.1",
+ "@esbuild/linux-ppc64": "0.23.1",
+ "@esbuild/linux-riscv64": "0.23.1",
+ "@esbuild/linux-s390x": "0.23.1",
+ "@esbuild/linux-x64": "0.23.1",
+ "@esbuild/netbsd-x64": "0.23.1",
+ "@esbuild/openbsd-arm64": "0.23.1",
+ "@esbuild/openbsd-x64": "0.23.1",
+ "@esbuild/sunos-x64": "0.23.1",
+ "@esbuild/win32-arm64": "0.23.1",
+ "@esbuild/win32-ia32": "0.23.1",
+ "@esbuild/win32-x64": "0.23.1"
+ }
+ },
+ "node_modules/tsx/node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/tunnel": {
"version": "0.0.6",
"license": "MIT",
@@ -14630,7 +15045,7 @@
"devDependencies": {
"@types/semver": "^7.1.0",
"@types/yargs": "^17.0.26",
- "semver": "^7.5.2"
+ "semver": "^7.5.4"
}
},
"resources/build/version/node_modules/ansi-regex": {
@@ -14745,9 +15160,9 @@
"name": "keyman",
"license": "MIT",
"dependencies": {
+ "@keymanapp/common-types": "*",
"@keymanapp/keyman-version": "*",
"@keymanapp/lexical-model-layer": "*",
- "@keymanapp/models-types": "*",
"@keymanapp/recorder-core": "*",
"@keymanapp/web-utils": "*",
"core-js": "^3.34.0",
@@ -14761,7 +15176,53 @@
"@zip.js/zip.js": "^2.7.32",
"c8": "^7.12.0",
"jsdom": "^23.0.1",
- "mocha": "^10.0.0"
+ "mocha": "^10.0.0",
+ "tsx": "^4.19.0"
+ }
+ },
+ "web/src/engine/common/web-utils": {
+ "name": "@keymanapp/web-utils",
+ "license": "MIT",
+ "devDependencies": {
+ "@keymanapp/keyman-version": "*",
+ "@keymanapp/resources-gosh": "*",
+ "c8": "^7.12.0",
+ "mocha": "^10.0.0",
+ "mocha-teamcity-reporter": "^4.0.0",
+ "typescript": "^5.4.5"
+ }
+ },
+ "web/src/engine/osk/gesture-processor": {
+ "name": "@keymanapp/gesture-recognizer",
+ "dependencies": {
+ "@keymanapp/web-utils": "*",
+ "eventemitter3": "^5.0.0"
+ },
+ "devDependencies": {
+ "@keymanapp/resources-gosh": "*",
+ "mocha": "^10.0.0",
+ "mocha-teamcity-reporter": "^4.0.0",
+ "promise-status-async": "^1.2.10",
+ "typescript": "^5.4.5"
+ }
+ },
+ "web/src/engine/predictive-text/templates": {
+ "name": "@keymanapp/models-templates",
+ "license": "MIT",
+ "dependencies": {
+ "@keymanapp/common-types": "*",
+ "@keymanapp/keyman-version": "*",
+ "@keymanapp/models-wordbreakers": "*",
+ "@keymanapp/resources-gosh": "*"
+ },
+ "devDependencies": {
+ "@keymanapp/common-types": "*",
+ "@keymanapp/web-utils": "*",
+ "@types/mocha": "^7.0.2",
+ "c8": "^7.12.0",
+ "mocha": "^10.0.0",
+ "mocha-teamcity-reporter": "^4.0.0",
+ "typescript": "^5.4.5"
}
},
"web/src/engine/predictive-text/types": {
@@ -14771,6 +15232,19 @@
"typescript": "^5.4.5"
}
},
+ "web/src/engine/predictive-text/wordbreakers": {
+ "name": "@keymanapp/models-wordbreakers",
+ "license": "MIT",
+ "devDependencies": {
+ "@keymanapp/common-types": "*",
+ "@keymanapp/resources-gosh": "*",
+ "@types/mocha": "^7.0.2",
+ "c8": "^7.12.0",
+ "mocha": "^10.0.0",
+ "mocha-teamcity-reporter": "^4.0.0",
+ "typescript": "^5.4.5"
+ }
+ },
"web/src/engine/predictive-text/worker-main": {
"name": "@keymanapp/lexical-model-layer",
"license": "MIT",
@@ -14783,7 +15257,7 @@
"string.prototype.codepointat": "^0.2.1"
},
"devDependencies": {
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/resources-gosh": "*",
"mocha": "^10.0.0",
"mocha-teamcity-reporter": "^4.0.0",
@@ -14804,7 +15278,7 @@
},
"devDependencies": {
"@keymanapp/common-test-resources": "*",
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/resources-gosh": "*",
"c8": "^7.12.0",
"combine-source-map": "^0.8.0",
@@ -14813,12 +15287,24 @@
"typescript": "^5.4.5"
}
},
+ "web/src/engine/sentry-manager": {
+ "name": "@keymanapp/web-sentry-manager",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@keymanapp/keyman-version": "*",
+ "@sentry/browser": "^5.27.4"
+ },
+ "devDependencies": {
+ "typescript": "^5.4.5"
+ }
+ },
"web/src/tools/testing/recorder-core": {
"name": "@keymanapp/recorder-core",
"license": "MIT",
"dependencies": {
+ "@keymanapp/common-types": "*",
"@keymanapp/keyman-version": "*",
- "@keymanapp/models-types": "*",
"@keymanapp/web-utils": "*"
},
"devDependencies": {
diff --git a/package.json b/package.json
index 3f0012db10..2c06c1652c 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,7 @@
"eslint-plugin-promise": "^6.1.1",
"mocha": "^10.0.0",
"mocha-teamcity-reporter": "^4.0.0",
- "playwright": "^1.43.1",
+ "playwright": "^1.46.1",
"sinon": "^17.0.1",
"source-map-support": "^0.5.21",
"tslib": "^2.5.2",
@@ -46,12 +46,12 @@
"developer/src/kmc-package",
"developer/src/kmc",
"developer/src/server",
- "common/models/*",
"common/test/resources",
"common/tools/*",
"common/web/*",
"common/tools/hextobin",
"web",
+ "web/src/engine/osk/gesture-processor",
"web/src/engine/predictive-text/*"
],
"dependencies": {
diff --git a/resources/build/minimum-versions.inc.sh b/resources/build/minimum-versions.inc.sh
index 97f2509406..f58e7575d9 100644
--- a/resources/build/minimum-versions.inc.sh
+++ b/resources/build/minimum-versions.inc.sh
@@ -39,4 +39,4 @@ KEYMAN_VERSION_CLDR=45 # LDML Keyboards version
KEYMAN_VERSION_ISO639_3=2024-05-22 # Date of last import
KEYMAN_VERSION_LANGTAGS=2024-05-22 # Date of last import
KEYMAN_VERSION_LANGTAGS_SUBTAG_REGISTRY=2024-05-16 # Date of last import
-KEYMAN_VERSION_UNICODE=15.1.0 # UCD + related data
+KEYMAN_VERSION_UNICODE=16.0.0 # UCD + related data
diff --git a/resources/build/win/environment.inc.sh b/resources/build/win/environment.inc.sh
index d2b351fcbc..71c18f305b 100644
--- a/resources/build/win/environment.inc.sh
+++ b/resources/build/win/environment.inc.sh
@@ -23,8 +23,10 @@ source "$KEYMAN_ROOT/resources/build/win/environment_generated.inc.sh"
WINDOWS_ROOT="$KEYMAN_ROOT/windows"
WINDOWS_PROGRAM_APP="$WINDOWS_ROOT/bin/desktop"
WINDOWS_PROGRAM_ENGINE="$WINDOWS_ROOT/bin/engine"
+WINDOWS_PROGRAM_SUPPORT="$WINDOWS_ROOT/bin/support"
WINDOWS_DEBUGPATH_APP="$WINDOWS_ROOT/debug/desktop"
WINDOWS_DEBUGPATH_ENGINE="$WINDOWS_ROOT/debug/engine"
+WINDOWS_DEBUGPATH_SUPPORT="$WINDOWS_ROOT/debug/support"
COMMON_ROOT="$KEYMAN_ROOT/common/windows/delphi"
OUTLIB="$WINDOWS_ROOT/lib"
@@ -141,6 +143,8 @@ create-windows-output-folders() {
mkdir -p "$OUTLIB"
mkdir -p "$WINDOWS_PROGRAM_APP"
mkdir -p "$WINDOWS_PROGRAM_ENGINE"
+ mkdir -p "$WINDOWS_PROGRAM_SUPPORT"
mkdir -p "$WINDOWS_DEBUGPATH_APP"
mkdir -p "$WINDOWS_DEBUGPATH_ENGINE"
+ mkdir -p "$WINDOWS_DEBUGPATH_SUPPORT"
}
\ No newline at end of file
diff --git a/resources/locate_emscripten.inc.sh b/resources/locate_emscripten.inc.sh
index f678e8449e..3d470f7577 100644
--- a/resources/locate_emscripten.inc.sh
+++ b/resources/locate_emscripten.inc.sh
@@ -69,5 +69,7 @@ _select_emscripten_version_with_emsdk() {
git pull
./emsdk install "$KEYMAN_MIN_VERSION_EMSCRIPTEN"
./emsdk activate "$KEYMAN_MIN_VERSION_EMSCRIPTEN"
+ cd upstream/emscripten
+ npm install
popd > /dev/null
}
diff --git a/resources/standards-data/unicode-character-database/Blocks.txt b/resources/standards-data/unicode-character-database/Blocks.txt
index 8fa3eaad04..1517dde0ce 100644
--- a/resources/standards-data/unicode-character-database/Blocks.txt
+++ b/resources/standards-data/unicode-character-database/Blocks.txt
@@ -1,7 +1,8 @@
-# Blocks-15.1.0.txt
-# Date: 2023-07-28, 15:47:20 GMT
-# © 2023 Unicode®, Inc.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# Blocks-16.0.0.txt
+# Date: 2024-02-02
+# © 2024 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -217,6 +218,7 @@ FFF0..FFFF; Specials
10500..1052F; Elbasan
10530..1056F; Caucasian Albanian
10570..105BF; Vithkuqi
+105C0..105FF; Todhri
10600..1077F; Linear A
10780..107BF; Latin Extended-F
10800..1083F; Cypriot Syllabary
@@ -239,6 +241,7 @@ FFF0..FFFF; Specials
10C00..10C4F; Old Turkic
10C80..10CFF; Old Hungarian
10D00..10D3F; Hanifi Rohingya
+10D40..10D8F; Garay
10E60..10E7F; Rumi Numeral Symbols
10E80..10EBF; Yezidi
10EC0..10EFF; Arabic Extended-C
@@ -258,12 +261,14 @@ FFF0..FFFF; Specials
11280..112AF; Multani
112B0..112FF; Khudawadi
11300..1137F; Grantha
+11380..113FF; Tulu-Tigalari
11400..1147F; Newa
11480..114DF; Tirhuta
11580..115FF; Siddham
11600..1165F; Modi
11660..1167F; Mongolian Supplement
11680..116CF; Takri
+116D0..116FF; Myanmar Extended-C
11700..1174F; Ahom
11800..1184F; Dogra
118A0..118FF; Warang Citi
@@ -274,6 +279,7 @@ FFF0..FFFF; Specials
11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
11AC0..11AFF; Pau Cin Hau
11B00..11B5F; Devanagari Extended-A
+11BC0..11BFF; Sunuwar
11C00..11C6F; Bhaiksuki
11C70..11CBF; Marchen
11D00..11D5F; Masaram Gondi
@@ -288,12 +294,15 @@ FFF0..FFFF; Specials
12F90..12FFF; Cypro-Minoan
13000..1342F; Egyptian Hieroglyphs
13430..1345F; Egyptian Hieroglyph Format Controls
+13460..143FF; Egyptian Hieroglyphs Extended-A
14400..1467F; Anatolian Hieroglyphs
+16100..1613F; Gurung Khema
16800..16A3F; Bamum Supplement
16A40..16A6F; Mro
16A70..16ACF; Tangsa
16AD0..16AFF; Bassa Vah
16B00..16B8F; Pahawh Hmong
+16D40..16D7F; Kirat Rai
16E40..16E9F; Medefaidrin
16F00..16F9F; Miao
16FE0..16FFF; Ideographic Symbols and Punctuation
@@ -308,6 +317,7 @@ FFF0..FFFF; Specials
1B170..1B2FF; Nushu
1BC00..1BC9F; Duployan
1BCA0..1BCAF; Shorthand Format Controls
+1CC00..1CEBF; Symbols for Legacy Computing Supplement
1CF00..1CFCF; Znamenny Musical Notation
1D000..1D0FF; Byzantine Musical Symbols
1D100..1D1FF; Musical Symbols
@@ -325,6 +335,7 @@ FFF0..FFFF; Specials
1E290..1E2BF; Toto
1E2C0..1E2FF; Wancho
1E4D0..1E4FF; Nag Mundari
+1E5D0..1E5FF; Ol Onal
1E7E0..1E7FF; Ethiopic Extended-B
1E800..1E8DF; Mende Kikakui
1E900..1E95F; Adlam
diff --git a/resources/standards-data/unicode-character-database/UnicodeData.txt b/resources/standards-data/unicode-character-database/UnicodeData.txt
index bdcc41850d..64258a3739 100644
--- a/resources/standards-data/unicode-character-database/UnicodeData.txt
+++ b/resources/standards-data/unicode-character-database/UnicodeData.txt
@@ -409,7 +409,7 @@
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;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;A7DC;;A7DC
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
@@ -610,7 +610,7 @@
0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;A7AC;;A7AC
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;;;;
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;A7CB;;A7CB
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;;;;
@@ -2123,6 +2123,7 @@
088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;;
0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;;
0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;;
+0897;ARABIC PEPET;Mn;230;NSM;;;;;N;;;;;
0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;;
0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;;
089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;;
@@ -6213,6 +6214,8 @@
1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;;
+1B4E;BALINESE INVERTED CARIK SIKI;Po;0;L;;;;;N;;;;;
+1B4F;BALINESE INVERTED CARIK PAREREN;Po;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;;;;;
@@ -6260,6 +6263,7 @@
1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;;
1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;;
+1B7F;BALINESE PANTI BAWAK;Po;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;;;;;
@@ -6511,6 +6515,8 @@
1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462
1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A
+1C89;CYRILLIC CAPITAL LETTER TJE;Lu;0;L;;;;;N;;;;1C8A;
+1C8A;CYRILLIC SMALL LETTER TJE;Ll;0;L;;;;;N;;;1C89;;1C89
1C90;GEORGIAN MTAVRULI CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;10D0;
1C91;GEORGIAN MTAVRULI CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;10D1;
1C92;GEORGIAN MTAVRULI CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;10D2;
@@ -7933,7 +7939,7 @@
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;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;Y;;;;;
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;;;;
@@ -8375,6 +8381,9 @@
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;;;;;
+2427;SYMBOL FOR DELETE SQUARE CHECKER BOARD FORM;So;0;ON;;;;;N;;;;;
+2428;SYMBOL FOR DELETE RECTANGULAR CHECKER BOARD FORM;So;0;ON;;;;;N;;;;;
+2429;SYMBOL FOR DELETE MEDIUM SHADE FORM;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;;;;;
@@ -11709,6 +11718,8 @@
31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
+31E4;CJK STROKE HXG;So;0;ON;;;;;N;;;;;
+31E5;CJK STROKE SZP;So;0;ON;;;;;N;;;;;
31EF;IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;So;0;ON;;;;;N;;;;;
31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
@@ -14260,6 +14271,9 @@ A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8;
A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7
A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA;
A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9
+A7CB;LATIN CAPITAL LETTER RAMS HORN;Lu;0;L;;;;;N;;;;0264;
+A7CC;LATIN CAPITAL LETTER S WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A7CD;
+A7CD;LATIN SMALL LETTER S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A7CC;;A7CC
A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1;
A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0
A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;;
@@ -14268,6 +14282,9 @@ A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7;
A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6
A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9;
A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8
+A7DA;LATIN CAPITAL LETTER LAMBDA;Lu;0;L;;;;;N;;;;A7DB;
+A7DB;LATIN SMALL LETTER LAMBDA;Ll;0;L;;;;;N;;;A7DA;;A7DA
+A7DC;LATIN CAPITAL LETTER LAMBDA WITH STROKE;Lu;0;L;;;;;N;;;;019B;
A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L;
0043;;;;N;;;;;
A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L; 0046;;;;N;;;;;
A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L; 0051;;;;N;;;;;
@@ -18001,6 +18018,58 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592
105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594
105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595
+105C0;TODHRI LETTER A;Lo;0;L;;;;;N;;;;;
+105C1;TODHRI LETTER AS;Lo;0;L;;;;;N;;;;;
+105C2;TODHRI LETTER BA;Lo;0;L;;;;;N;;;;;
+105C3;TODHRI LETTER MBA;Lo;0;L;;;;;N;;;;;
+105C4;TODHRI LETTER CA;Lo;0;L;;;;;N;;;;;
+105C5;TODHRI LETTER CHA;Lo;0;L;;;;;N;;;;;
+105C6;TODHRI LETTER DA;Lo;0;L;;;;;N;;;;;
+105C7;TODHRI LETTER NDA;Lo;0;L;;;;;N;;;;;
+105C8;TODHRI LETTER DHA;Lo;0;L;;;;;N;;;;;
+105C9;TODHRI LETTER EI;Lo;0;L;105D2 0307;;;;N;;;;;
+105CA;TODHRI LETTER E;Lo;0;L;;;;;N;;;;;
+105CB;TODHRI LETTER FA;Lo;0;L;;;;;N;;;;;
+105CC;TODHRI LETTER GA;Lo;0;L;;;;;N;;;;;
+105CD;TODHRI LETTER NGA;Lo;0;L;;;;;N;;;;;
+105CE;TODHRI LETTER GJA;Lo;0;L;;;;;N;;;;;
+105CF;TODHRI LETTER NGJA;Lo;0;L;;;;;N;;;;;
+105D0;TODHRI LETTER HA;Lo;0;L;;;;;N;;;;;
+105D1;TODHRI LETTER HJA;Lo;0;L;;;;;N;;;;;
+105D2;TODHRI LETTER I;Lo;0;L;;;;;N;;;;;
+105D3;TODHRI LETTER JA;Lo;0;L;;;;;N;;;;;
+105D4;TODHRI LETTER KA;Lo;0;L;;;;;N;;;;;
+105D5;TODHRI LETTER LA;Lo;0;L;;;;;N;;;;;
+105D6;TODHRI LETTER LLA;Lo;0;L;;;;;N;;;;;
+105D7;TODHRI LETTER MA;Lo;0;L;;;;;N;;;;;
+105D8;TODHRI LETTER NA;Lo;0;L;;;;;N;;;;;
+105D9;TODHRI LETTER NJAN;Lo;0;L;;;;;N;;;;;
+105DA;TODHRI LETTER O;Lo;0;L;;;;;N;;;;;
+105DB;TODHRI LETTER PA;Lo;0;L;;;;;N;;;;;
+105DC;TODHRI LETTER QA;Lo;0;L;;;;;N;;;;;
+105DD;TODHRI LETTER RA;Lo;0;L;;;;;N;;;;;
+105DE;TODHRI LETTER RRA;Lo;0;L;;;;;N;;;;;
+105DF;TODHRI LETTER SA;Lo;0;L;;;;;N;;;;;
+105E0;TODHRI LETTER SHA;Lo;0;L;;;;;N;;;;;
+105E1;TODHRI LETTER SHTA;Lo;0;L;;;;;N;;;;;
+105E2;TODHRI LETTER TA;Lo;0;L;;;;;N;;;;;
+105E3;TODHRI LETTER THA;Lo;0;L;;;;;N;;;;;
+105E4;TODHRI LETTER U;Lo;0;L;105DA 0307;;;;N;;;;;
+105E5;TODHRI LETTER VA;Lo;0;L;;;;;N;;;;;
+105E6;TODHRI LETTER XA;Lo;0;L;;;;;N;;;;;
+105E7;TODHRI LETTER NXA;Lo;0;L;;;;;N;;;;;
+105E8;TODHRI LETTER XHA;Lo;0;L;;;;;N;;;;;
+105E9;TODHRI LETTER NXHA;Lo;0;L;;;;;N;;;;;
+105EA;TODHRI LETTER Y;Lo;0;L;;;;;N;;;;;
+105EB;TODHRI LETTER JY;Lo;0;L;;;;;N;;;;;
+105EC;TODHRI LETTER ZA;Lo;0;L;;;;;N;;;;;
+105ED;TODHRI LETTER ZHA;Lo;0;L;;;;;N;;;;;
+105EE;TODHRI LETTER GHA;Lo;0;L;;;;;N;;;;;
+105EF;TODHRI LETTER STA;Lo;0;L;;;;;N;;;;;
+105F0;TODHRI LETTER SKAN;Lo;0;L;;;;;N;;;;;
+105F1;TODHRI LETTER KHA;Lo;0;L;;;;;N;;;;;
+105F2;TODHRI LETTER PSA;Lo;0;L;;;;;N;;;;;
+105F3;TODHRI LETTER OO;Lo;0;L;;;;;N;;;;;
10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;;
10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;;
10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;;
@@ -19322,6 +19391,75 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10D37;HANIFI ROHINGYA DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
10D38;HANIFI ROHINGYA DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
10D39;HANIFI ROHINGYA DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+10D40;GARAY DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+10D41;GARAY DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+10D42;GARAY DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+10D43;GARAY DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+10D44;GARAY DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+10D45;GARAY DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+10D46;GARAY DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+10D47;GARAY DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+10D48;GARAY DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+10D49;GARAY DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+10D4A;GARAY VOWEL SIGN A;Lo;0;R;;;;;N;;;;;
+10D4B;GARAY VOWEL SIGN I;Lo;0;R;;;;;N;;;;;
+10D4C;GARAY VOWEL SIGN O;Lo;0;R;;;;;N;;;;;
+10D4D;GARAY VOWEL SIGN EE;Lo;0;R;;;;;N;;;;;
+10D4E;GARAY VOWEL LENGTH MARK;Lm;0;R;;;;;N;;;;;
+10D4F;GARAY SUKUN;Lo;0;R;;;;;N;;;;;
+10D50;GARAY CAPITAL LETTER A;Lu;0;R;;;;;N;;;;10D70;
+10D51;GARAY CAPITAL LETTER CA;Lu;0;R;;;;;N;;;;10D71;
+10D52;GARAY CAPITAL LETTER MA;Lu;0;R;;;;;N;;;;10D72;
+10D53;GARAY CAPITAL LETTER KA;Lu;0;R;;;;;N;;;;10D73;
+10D54;GARAY CAPITAL LETTER BA;Lu;0;R;;;;;N;;;;10D74;
+10D55;GARAY CAPITAL LETTER JA;Lu;0;R;;;;;N;;;;10D75;
+10D56;GARAY CAPITAL LETTER SA;Lu;0;R;;;;;N;;;;10D76;
+10D57;GARAY CAPITAL LETTER WA;Lu;0;R;;;;;N;;;;10D77;
+10D58;GARAY CAPITAL LETTER LA;Lu;0;R;;;;;N;;;;10D78;
+10D59;GARAY CAPITAL LETTER GA;Lu;0;R;;;;;N;;;;10D79;
+10D5A;GARAY CAPITAL LETTER DA;Lu;0;R;;;;;N;;;;10D7A;
+10D5B;GARAY CAPITAL LETTER XA;Lu;0;R;;;;;N;;;;10D7B;
+10D5C;GARAY CAPITAL LETTER YA;Lu;0;R;;;;;N;;;;10D7C;
+10D5D;GARAY CAPITAL LETTER TA;Lu;0;R;;;;;N;;;;10D7D;
+10D5E;GARAY CAPITAL LETTER RA;Lu;0;R;;;;;N;;;;10D7E;
+10D5F;GARAY CAPITAL LETTER NYA;Lu;0;R;;;;;N;;;;10D7F;
+10D60;GARAY CAPITAL LETTER FA;Lu;0;R;;;;;N;;;;10D80;
+10D61;GARAY CAPITAL LETTER NA;Lu;0;R;;;;;N;;;;10D81;
+10D62;GARAY CAPITAL LETTER PA;Lu;0;R;;;;;N;;;;10D82;
+10D63;GARAY CAPITAL LETTER HA;Lu;0;R;;;;;N;;;;10D83;
+10D64;GARAY CAPITAL LETTER OLD KA;Lu;0;R;;;;;N;;;;10D84;
+10D65;GARAY CAPITAL LETTER OLD NA;Lu;0;R;;;;;N;;;;10D85;
+10D69;GARAY VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;;
+10D6A;GARAY CONSONANT GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+10D6B;GARAY COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10D6C;GARAY COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10D6D;GARAY CONSONANT NASALIZATION MARK;Mn;230;NSM;;;;;N;;;;;
+10D6E;GARAY HYPHEN;Pd;0;ON;;;;;N;;;;;
+10D6F;GARAY REDUPLICATION MARK;Lm;0;R;;;;;N;;;;;
+10D70;GARAY SMALL LETTER A;Ll;0;R;;;;;N;;;10D50;;10D50
+10D71;GARAY SMALL LETTER CA;Ll;0;R;;;;;N;;;10D51;;10D51
+10D72;GARAY SMALL LETTER MA;Ll;0;R;;;;;N;;;10D52;;10D52
+10D73;GARAY SMALL LETTER KA;Ll;0;R;;;;;N;;;10D53;;10D53
+10D74;GARAY SMALL LETTER BA;Ll;0;R;;;;;N;;;10D54;;10D54
+10D75;GARAY SMALL LETTER JA;Ll;0;R;;;;;N;;;10D55;;10D55
+10D76;GARAY SMALL LETTER SA;Ll;0;R;;;;;N;;;10D56;;10D56
+10D77;GARAY SMALL LETTER WA;Ll;0;R;;;;;N;;;10D57;;10D57
+10D78;GARAY SMALL LETTER LA;Ll;0;R;;;;;N;;;10D58;;10D58
+10D79;GARAY SMALL LETTER GA;Ll;0;R;;;;;N;;;10D59;;10D59
+10D7A;GARAY SMALL LETTER DA;Ll;0;R;;;;;N;;;10D5A;;10D5A
+10D7B;GARAY SMALL LETTER XA;Ll;0;R;;;;;N;;;10D5B;;10D5B
+10D7C;GARAY SMALL LETTER YA;Ll;0;R;;;;;N;;;10D5C;;10D5C
+10D7D;GARAY SMALL LETTER TA;Ll;0;R;;;;;N;;;10D5D;;10D5D
+10D7E;GARAY SMALL LETTER RA;Ll;0;R;;;;;N;;;10D5E;;10D5E
+10D7F;GARAY SMALL LETTER NYA;Ll;0;R;;;;;N;;;10D5F;;10D5F
+10D80;GARAY SMALL LETTER FA;Ll;0;R;;;;;N;;;10D60;;10D60
+10D81;GARAY SMALL LETTER NA;Ll;0;R;;;;;N;;;10D61;;10D61
+10D82;GARAY SMALL LETTER PA;Ll;0;R;;;;;N;;;10D62;;10D62
+10D83;GARAY SMALL LETTER HA;Ll;0;R;;;;;N;;;10D63;;10D63
+10D84;GARAY SMALL LETTER OLD KA;Ll;0;R;;;;;N;;;10D64;;10D64
+10D85;GARAY SMALL LETTER OLD NA;Ll;0;R;;;;;N;;;10D65;;10D65
+10D8E;GARAY PLUS SIGN;Sm;0;R;;;;;N;;;;;
+10D8F;GARAY MINUS SIGN;Sm;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;;;;;
@@ -19400,6 +19538,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;
10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;
+10EC2;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EC3;ARABIC LETTER TAH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EC4;ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EFC;ARABIC COMBINING ALEF OVERLAY;Mn;0;NSM;;;;;N;;;;;
10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;;
10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;;
10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;;
@@ -20264,6 +20406,86 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11372;COMBINING GRANTHA LETTER NA;Mn;230;NSM;;;;;N;;;;;
11373;COMBINING GRANTHA LETTER VI;Mn;230;NSM;;;;;N;;;;;
11374;COMBINING GRANTHA LETTER PA;Mn;230;NSM;;;;;N;;;;;
+11380;TULU-TIGALARI LETTER A;Lo;0;L;;;;;N;;;;;
+11381;TULU-TIGALARI LETTER AA;Lo;0;L;;;;;N;;;;;
+11382;TULU-TIGALARI LETTER I;Lo;0;L;;;;;N;;;;;
+11383;TULU-TIGALARI LETTER II;Lo;0;L;11382 113C9;;;;N;;;;;
+11384;TULU-TIGALARI LETTER U;Lo;0;L;;;;;N;;;;;
+11385;TULU-TIGALARI LETTER UU;Lo;0;L;11384 113BB;;;;N;;;;;
+11386;TULU-TIGALARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+11387;TULU-TIGALARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+11388;TULU-TIGALARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+11389;TULU-TIGALARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1138B;TULU-TIGALARI LETTER EE;Lo;0;L;;;;;N;;;;;
+1138E;TULU-TIGALARI LETTER AI;Lo;0;L;1138B 113C2;;;;N;;;;;
+11390;TULU-TIGALARI LETTER OO;Lo;0;L;;;;;N;;;;;
+11391;TULU-TIGALARI LETTER AU;Lo;0;L;11390 113C9;;;;N;;;;;
+11392;TULU-TIGALARI LETTER KA;Lo;0;L;;;;;N;;;;;
+11393;TULU-TIGALARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+11394;TULU-TIGALARI LETTER GA;Lo;0;L;;;;;N;;;;;
+11395;TULU-TIGALARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11396;TULU-TIGALARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11397;TULU-TIGALARI LETTER CA;Lo;0;L;;;;;N;;;;;
+11398;TULU-TIGALARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11399;TULU-TIGALARI LETTER JA;Lo;0;L;;;;;N;;;;;
+1139A;TULU-TIGALARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+1139B;TULU-TIGALARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+1139C;TULU-TIGALARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+1139D;TULU-TIGALARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1139E;TULU-TIGALARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+1139F;TULU-TIGALARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+113A0;TULU-TIGALARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+113A1;TULU-TIGALARI LETTER TA;Lo;0;L;;;;;N;;;;;
+113A2;TULU-TIGALARI LETTER THA;Lo;0;L;;;;;N;;;;;
+113A3;TULU-TIGALARI LETTER DA;Lo;0;L;;;;;N;;;;;
+113A4;TULU-TIGALARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+113A5;TULU-TIGALARI LETTER NA;Lo;0;L;;;;;N;;;;;
+113A6;TULU-TIGALARI LETTER PA;Lo;0;L;;;;;N;;;;;
+113A7;TULU-TIGALARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+113A8;TULU-TIGALARI LETTER BA;Lo;0;L;;;;;N;;;;;
+113A9;TULU-TIGALARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+113AA;TULU-TIGALARI LETTER MA;Lo;0;L;;;;;N;;;;;
+113AB;TULU-TIGALARI LETTER YA;Lo;0;L;;;;;N;;;;;
+113AC;TULU-TIGALARI LETTER RA;Lo;0;L;;;;;N;;;;;
+113AD;TULU-TIGALARI LETTER LA;Lo;0;L;;;;;N;;;;;
+113AE;TULU-TIGALARI LETTER VA;Lo;0;L;;;;;N;;;;;
+113AF;TULU-TIGALARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+113B0;TULU-TIGALARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+113B1;TULU-TIGALARI LETTER SA;Lo;0;L;;;;;N;;;;;
+113B2;TULU-TIGALARI LETTER HA;Lo;0;L;;;;;N;;;;;
+113B3;TULU-TIGALARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+113B4;TULU-TIGALARI LETTER RRA;Lo;0;L;;;;;N;;;;;
+113B5;TULU-TIGALARI LETTER LLLA;Lo;0;L;;;;;N;;;;;
+113B7;TULU-TIGALARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+113B8;TULU-TIGALARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+113B9;TULU-TIGALARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+113BA;TULU-TIGALARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+113BB;TULU-TIGALARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+113BC;TULU-TIGALARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+113BD;TULU-TIGALARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+113BE;TULU-TIGALARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+113BF;TULU-TIGALARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+113C0;TULU-TIGALARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+113C2;TULU-TIGALARI VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+113C5;TULU-TIGALARI VOWEL SIGN AI;Mc;0;L;113C2 113C2;;;;N;;;;;
+113C7;TULU-TIGALARI VOWEL SIGN OO;Mc;0;L;113C2 113B8;;;;N;;;;;
+113C8;TULU-TIGALARI VOWEL SIGN AU;Mc;0;L;113C2 113C9;;;;N;;;;;
+113C9;TULU-TIGALARI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+113CA;TULU-TIGALARI SIGN CANDRA ANUNASIKA;Mc;0;L;;;;;N;;;;;
+113CC;TULU-TIGALARI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+113CD;TULU-TIGALARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+113CE;TULU-TIGALARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+113CF;TULU-TIGALARI SIGN LOOPED VIRAMA;Mc;9;L;;;;;N;;;;;
+113D0;TULU-TIGALARI CONJOINER;Mn;9;NSM;;;;;N;;;;;
+113D1;TULU-TIGALARI REPHA;Lo;0;L;;;;;N;;;;;
+113D2;TULU-TIGALARI GEMINATION MARK;Mn;0;NSM;;;;;N;;;;;
+113D3;TULU-TIGALARI SIGN PLUTA;Lo;0;L;;;;;N;;;;;
+113D4;TULU-TIGALARI DANDA;Po;0;L;;;;;N;;;;;
+113D5;TULU-TIGALARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+113D7;TULU-TIGALARI SIGN OM PUSHPIKA;Po;0;L;;;;;N;;;;;
+113D8;TULU-TIGALARI SIGN SHRII PUSHPIKA;Po;0;L;;;;;N;;;;;
+113E1;TULU-TIGALARI VEDIC TONE SVARITA;Mn;0;NSM;;;;;N;;;;;
+113E2;TULU-TIGALARI VEDIC TONE ANUDATTA;Mn;0;NSM;;;;;N;;;;;
11400;NEWA LETTER A;Lo;0;L;;;;;N;;;;;
11401;NEWA LETTER AA;Lo;0;L;;;;;N;;;;;
11402;NEWA LETTER I;Lo;0;L;;;;;N;;;;;
@@ -20695,6 +20917,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;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;;;;;
+116D0;MYANMAR PAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+116D1;MYANMAR PAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+116D2;MYANMAR PAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+116D3;MYANMAR PAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+116D4;MYANMAR PAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+116D5;MYANMAR PAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+116D6;MYANMAR PAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+116D7;MYANMAR PAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+116D8;MYANMAR PAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+116D9;MYANMAR PAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+116DA;MYANMAR EASTERN PWO KAREN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+116DB;MYANMAR EASTERN PWO KAREN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+116DC;MYANMAR EASTERN PWO KAREN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+116DD;MYANMAR EASTERN PWO KAREN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+116DE;MYANMAR EASTERN PWO KAREN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+116DF;MYANMAR EASTERN PWO KAREN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+116E0;MYANMAR EASTERN PWO KAREN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+116E1;MYANMAR EASTERN PWO KAREN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+116E2;MYANMAR EASTERN PWO KAREN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+116E3;MYANMAR EASTERN PWO KAREN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11700;AHOM LETTER KA;Lo;0;L;;;;;N;;;;;
11701;AHOM LETTER KHA;Lo;0;L;;;;;N;;;;;
11702;AHOM LETTER NGA;Lo;0;L;;;;;N;;;;;
@@ -20723,7 +20965,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;;
1171A;AHOM LETTER ALTERNATE BA;Lo;0;L;;;;;N;;;;;
1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
-1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
+1171E;AHOM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;;
11720;AHOM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
11721;AHOM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
@@ -21279,6 +21521,50 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;;
+11BC0;SUNUWAR LETTER DEVI;Lo;0;L;;;;;N;;;;;
+11BC1;SUNUWAR LETTER TASLA;Lo;0;L;;;;;N;;;;;
+11BC2;SUNUWAR LETTER EKO;Lo;0;L;;;;;N;;;;;
+11BC3;SUNUWAR LETTER IMAR;Lo;0;L;;;;;N;;;;;
+11BC4;SUNUWAR LETTER REU;Lo;0;L;;;;;N;;;;;
+11BC5;SUNUWAR LETTER UTTHI;Lo;0;L;;;;;N;;;;;
+11BC6;SUNUWAR LETTER KIK;Lo;0;L;;;;;N;;;;;
+11BC7;SUNUWAR LETTER MA;Lo;0;L;;;;;N;;;;;
+11BC8;SUNUWAR LETTER APPHO;Lo;0;L;;;;;N;;;;;
+11BC9;SUNUWAR LETTER PIP;Lo;0;L;;;;;N;;;;;
+11BCA;SUNUWAR LETTER GIL;Lo;0;L;;;;;N;;;;;
+11BCB;SUNUWAR LETTER HAMSO;Lo;0;L;;;;;N;;;;;
+11BCC;SUNUWAR LETTER CARMI;Lo;0;L;;;;;N;;;;;
+11BCD;SUNUWAR LETTER NAH;Lo;0;L;;;;;N;;;;;
+11BCE;SUNUWAR LETTER BUR;Lo;0;L;;;;;N;;;;;
+11BCF;SUNUWAR LETTER JYAH;Lo;0;L;;;;;N;;;;;
+11BD0;SUNUWAR LETTER LOACHA;Lo;0;L;;;;;N;;;;;
+11BD1;SUNUWAR LETTER OTTHI;Lo;0;L;;;;;N;;;;;
+11BD2;SUNUWAR LETTER SHYELE;Lo;0;L;;;;;N;;;;;
+11BD3;SUNUWAR LETTER VARCA;Lo;0;L;;;;;N;;;;;
+11BD4;SUNUWAR LETTER YAT;Lo;0;L;;;;;N;;;;;
+11BD5;SUNUWAR LETTER AVA;Lo;0;L;;;;;N;;;;;
+11BD6;SUNUWAR LETTER AAL;Lo;0;L;;;;;N;;;;;
+11BD7;SUNUWAR LETTER DONGA;Lo;0;L;;;;;N;;;;;
+11BD8;SUNUWAR LETTER THARI;Lo;0;L;;;;;N;;;;;
+11BD9;SUNUWAR LETTER PHAR;Lo;0;L;;;;;N;;;;;
+11BDA;SUNUWAR LETTER NGAR;Lo;0;L;;;;;N;;;;;
+11BDB;SUNUWAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+11BDC;SUNUWAR LETTER SHYER;Lo;0;L;;;;;N;;;;;
+11BDD;SUNUWAR LETTER CHELAP;Lo;0;L;;;;;N;;;;;
+11BDE;SUNUWAR LETTER TENTU;Lo;0;L;;;;;N;;;;;
+11BDF;SUNUWAR LETTER THELE;Lo;0;L;;;;;N;;;;;
+11BE0;SUNUWAR LETTER KLOKO;Lo;0;L;;;;;N;;;;;
+11BE1;SUNUWAR SIGN PVO;Po;0;L;;;;;N;;;;;
+11BF0;SUNUWAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11BF1;SUNUWAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11BF2;SUNUWAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11BF3;SUNUWAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11BF4;SUNUWAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11BF5;SUNUWAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11BF6;SUNUWAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11BF7;SUNUWAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11BF8;SUNUWAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11BF9;SUNUWAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;
11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;
11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;
@@ -21693,6 +21979,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11F5A;KAWI SIGN NUKTA;Mn;0;NSM;;;;;N;;;;;
11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;
11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
@@ -24188,6 +24475,4001 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;;
13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;;
13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;;
+13460;EGYPTIAN HIEROGLYPH-13460;Lo;0;L;;;;;N;;;;;
+13461;EGYPTIAN HIEROGLYPH-13461;Lo;0;L;;;;;N;;;;;
+13462;EGYPTIAN HIEROGLYPH-13462;Lo;0;L;;;;;N;;;;;
+13463;EGYPTIAN HIEROGLYPH-13463;Lo;0;L;;;;;N;;;;;
+13464;EGYPTIAN HIEROGLYPH-13464;Lo;0;L;;;;;N;;;;;
+13465;EGYPTIAN HIEROGLYPH-13465;Lo;0;L;;;;;N;;;;;
+13466;EGYPTIAN HIEROGLYPH-13466;Lo;0;L;;;;;N;;;;;
+13467;EGYPTIAN HIEROGLYPH-13467;Lo;0;L;;;;;N;;;;;
+13468;EGYPTIAN HIEROGLYPH-13468;Lo;0;L;;;;;N;;;;;
+13469;EGYPTIAN HIEROGLYPH-13469;Lo;0;L;;;;;N;;;;;
+1346A;EGYPTIAN HIEROGLYPH-1346A;Lo;0;L;;;;;N;;;;;
+1346B;EGYPTIAN HIEROGLYPH-1346B;Lo;0;L;;;;;N;;;;;
+1346C;EGYPTIAN HIEROGLYPH-1346C;Lo;0;L;;;;;N;;;;;
+1346D;EGYPTIAN HIEROGLYPH-1346D;Lo;0;L;;;;;N;;;;;
+1346E;EGYPTIAN HIEROGLYPH-1346E;Lo;0;L;;;;;N;;;;;
+1346F;EGYPTIAN HIEROGLYPH-1346F;Lo;0;L;;;;;N;;;;;
+13470;EGYPTIAN HIEROGLYPH-13470;Lo;0;L;;;;;N;;;;;
+13471;EGYPTIAN HIEROGLYPH-13471;Lo;0;L;;;;;N;;;;;
+13472;EGYPTIAN HIEROGLYPH-13472;Lo;0;L;;;;;N;;;;;
+13473;EGYPTIAN HIEROGLYPH-13473;Lo;0;L;;;;;N;;;;;
+13474;EGYPTIAN HIEROGLYPH-13474;Lo;0;L;;;;;N;;;;;
+13475;EGYPTIAN HIEROGLYPH-13475;Lo;0;L;;;;;N;;;;;
+13476;EGYPTIAN HIEROGLYPH-13476;Lo;0;L;;;;;N;;;;;
+13477;EGYPTIAN HIEROGLYPH-13477;Lo;0;L;;;;;N;;;;;
+13478;EGYPTIAN HIEROGLYPH-13478;Lo;0;L;;;;;N;;;;;
+13479;EGYPTIAN HIEROGLYPH-13479;Lo;0;L;;;;;N;;;;;
+1347A;EGYPTIAN HIEROGLYPH-1347A;Lo;0;L;;;;;N;;;;;
+1347B;EGYPTIAN HIEROGLYPH-1347B;Lo;0;L;;;;;N;;;;;
+1347C;EGYPTIAN HIEROGLYPH-1347C;Lo;0;L;;;;;N;;;;;
+1347D;EGYPTIAN HIEROGLYPH-1347D;Lo;0;L;;;;;N;;;;;
+1347E;EGYPTIAN HIEROGLYPH-1347E;Lo;0;L;;;;;N;;;;;
+1347F;EGYPTIAN HIEROGLYPH-1347F;Lo;0;L;;;;;N;;;;;
+13480;EGYPTIAN HIEROGLYPH-13480;Lo;0;L;;;;;N;;;;;
+13481;EGYPTIAN HIEROGLYPH-13481;Lo;0;L;;;;;N;;;;;
+13482;EGYPTIAN HIEROGLYPH-13482;Lo;0;L;;;;;N;;;;;
+13483;EGYPTIAN HIEROGLYPH-13483;Lo;0;L;;;;;N;;;;;
+13484;EGYPTIAN HIEROGLYPH-13484;Lo;0;L;;;;;N;;;;;
+13485;EGYPTIAN HIEROGLYPH-13485;Lo;0;L;;;;;N;;;;;
+13486;EGYPTIAN HIEROGLYPH-13486;Lo;0;L;;;;;N;;;;;
+13487;EGYPTIAN HIEROGLYPH-13487;Lo;0;L;;;;;N;;;;;
+13488;EGYPTIAN HIEROGLYPH-13488;Lo;0;L;;;;;N;;;;;
+13489;EGYPTIAN HIEROGLYPH-13489;Lo;0;L;;;;;N;;;;;
+1348A;EGYPTIAN HIEROGLYPH-1348A;Lo;0;L;;;;;N;;;;;
+1348B;EGYPTIAN HIEROGLYPH-1348B;Lo;0;L;;;;;N;;;;;
+1348C;EGYPTIAN HIEROGLYPH-1348C;Lo;0;L;;;;;N;;;;;
+1348D;EGYPTIAN HIEROGLYPH-1348D;Lo;0;L;;;;;N;;;;;
+1348E;EGYPTIAN HIEROGLYPH-1348E;Lo;0;L;;;;;N;;;;;
+1348F;EGYPTIAN HIEROGLYPH-1348F;Lo;0;L;;;;;N;;;;;
+13490;EGYPTIAN HIEROGLYPH-13490;Lo;0;L;;;;;N;;;;;
+13491;EGYPTIAN HIEROGLYPH-13491;Lo;0;L;;;;;N;;;;;
+13492;EGYPTIAN HIEROGLYPH-13492;Lo;0;L;;;;;N;;;;;
+13493;EGYPTIAN HIEROGLYPH-13493;Lo;0;L;;;;;N;;;;;
+13494;EGYPTIAN HIEROGLYPH-13494;Lo;0;L;;;;;N;;;;;
+13495;EGYPTIAN HIEROGLYPH-13495;Lo;0;L;;;;;N;;;;;
+13496;EGYPTIAN HIEROGLYPH-13496;Lo;0;L;;;;;N;;;;;
+13497;EGYPTIAN HIEROGLYPH-13497;Lo;0;L;;;;;N;;;;;
+13498;EGYPTIAN HIEROGLYPH-13498;Lo;0;L;;;;;N;;;;;
+13499;EGYPTIAN HIEROGLYPH-13499;Lo;0;L;;;;;N;;;;;
+1349A;EGYPTIAN HIEROGLYPH-1349A;Lo;0;L;;;;;N;;;;;
+1349B;EGYPTIAN HIEROGLYPH-1349B;Lo;0;L;;;;;N;;;;;
+1349C;EGYPTIAN HIEROGLYPH-1349C;Lo;0;L;;;;;N;;;;;
+1349D;EGYPTIAN HIEROGLYPH-1349D;Lo;0;L;;;;;N;;;;;
+1349E;EGYPTIAN HIEROGLYPH-1349E;Lo;0;L;;;;;N;;;;;
+1349F;EGYPTIAN HIEROGLYPH-1349F;Lo;0;L;;;;;N;;;;;
+134A0;EGYPTIAN HIEROGLYPH-134A0;Lo;0;L;;;;;N;;;;;
+134A1;EGYPTIAN HIEROGLYPH-134A1;Lo;0;L;;;;;N;;;;;
+134A2;EGYPTIAN HIEROGLYPH-134A2;Lo;0;L;;;;;N;;;;;
+134A3;EGYPTIAN HIEROGLYPH-134A3;Lo;0;L;;;;;N;;;;;
+134A4;EGYPTIAN HIEROGLYPH-134A4;Lo;0;L;;;;;N;;;;;
+134A5;EGYPTIAN HIEROGLYPH-134A5;Lo;0;L;;;;;N;;;;;
+134A6;EGYPTIAN HIEROGLYPH-134A6;Lo;0;L;;;;;N;;;;;
+134A7;EGYPTIAN HIEROGLYPH-134A7;Lo;0;L;;;;;N;;;;;
+134A8;EGYPTIAN HIEROGLYPH-134A8;Lo;0;L;;;;;N;;;;;
+134A9;EGYPTIAN HIEROGLYPH-134A9;Lo;0;L;;;;;N;;;;;
+134AA;EGYPTIAN HIEROGLYPH-134AA;Lo;0;L;;;;;N;;;;;
+134AB;EGYPTIAN HIEROGLYPH-134AB;Lo;0;L;;;;;N;;;;;
+134AC;EGYPTIAN HIEROGLYPH-134AC;Lo;0;L;;;;;N;;;;;
+134AD;EGYPTIAN HIEROGLYPH-134AD;Lo;0;L;;;;;N;;;;;
+134AE;EGYPTIAN HIEROGLYPH-134AE;Lo;0;L;;;;;N;;;;;
+134AF;EGYPTIAN HIEROGLYPH-134AF;Lo;0;L;;;;;N;;;;;
+134B0;EGYPTIAN HIEROGLYPH-134B0;Lo;0;L;;;;;N;;;;;
+134B1;EGYPTIAN HIEROGLYPH-134B1;Lo;0;L;;;;;N;;;;;
+134B2;EGYPTIAN HIEROGLYPH-134B2;Lo;0;L;;;;;N;;;;;
+134B3;EGYPTIAN HIEROGLYPH-134B3;Lo;0;L;;;;;N;;;;;
+134B4;EGYPTIAN HIEROGLYPH-134B4;Lo;0;L;;;;;N;;;;;
+134B5;EGYPTIAN HIEROGLYPH-134B5;Lo;0;L;;;;;N;;;;;
+134B6;EGYPTIAN HIEROGLYPH-134B6;Lo;0;L;;;;;N;;;;;
+134B7;EGYPTIAN HIEROGLYPH-134B7;Lo;0;L;;;;;N;;;;;
+134B8;EGYPTIAN HIEROGLYPH-134B8;Lo;0;L;;;;;N;;;;;
+134B9;EGYPTIAN HIEROGLYPH-134B9;Lo;0;L;;;;;N;;;;;
+134BA;EGYPTIAN HIEROGLYPH-134BA;Lo;0;L;;;;;N;;;;;
+134BB;EGYPTIAN HIEROGLYPH-134BB;Lo;0;L;;;;;N;;;;;
+134BC;EGYPTIAN HIEROGLYPH-134BC;Lo;0;L;;;;;N;;;;;
+134BD;EGYPTIAN HIEROGLYPH-134BD;Lo;0;L;;;;;N;;;;;
+134BE;EGYPTIAN HIEROGLYPH-134BE;Lo;0;L;;;;;N;;;;;
+134BF;EGYPTIAN HIEROGLYPH-134BF;Lo;0;L;;;;;N;;;;;
+134C0;EGYPTIAN HIEROGLYPH-134C0;Lo;0;L;;;;;N;;;;;
+134C1;EGYPTIAN HIEROGLYPH-134C1;Lo;0;L;;;;;N;;;;;
+134C2;EGYPTIAN HIEROGLYPH-134C2;Lo;0;L;;;;;N;;;;;
+134C3;EGYPTIAN HIEROGLYPH-134C3;Lo;0;L;;;;;N;;;;;
+134C4;EGYPTIAN HIEROGLYPH-134C4;Lo;0;L;;;;;N;;;;;
+134C5;EGYPTIAN HIEROGLYPH-134C5;Lo;0;L;;;;;N;;;;;
+134C6;EGYPTIAN HIEROGLYPH-134C6;Lo;0;L;;;;;N;;;;;
+134C7;EGYPTIAN HIEROGLYPH-134C7;Lo;0;L;;;;;N;;;;;
+134C8;EGYPTIAN HIEROGLYPH-134C8;Lo;0;L;;;;;N;;;;;
+134C9;EGYPTIAN HIEROGLYPH-134C9;Lo;0;L;;;;;N;;;;;
+134CA;EGYPTIAN HIEROGLYPH-134CA;Lo;0;L;;;;;N;;;;;
+134CB;EGYPTIAN HIEROGLYPH-134CB;Lo;0;L;;;;;N;;;;;
+134CC;EGYPTIAN HIEROGLYPH-134CC;Lo;0;L;;;;;N;;;;;
+134CD;EGYPTIAN HIEROGLYPH-134CD;Lo;0;L;;;;;N;;;;;
+134CE;EGYPTIAN HIEROGLYPH-134CE;Lo;0;L;;;;;N;;;;;
+134CF;EGYPTIAN HIEROGLYPH-134CF;Lo;0;L;;;;;N;;;;;
+134D0;EGYPTIAN HIEROGLYPH-134D0;Lo;0;L;;;;;N;;;;;
+134D1;EGYPTIAN HIEROGLYPH-134D1;Lo;0;L;;;;;N;;;;;
+134D2;EGYPTIAN HIEROGLYPH-134D2;Lo;0;L;;;;;N;;;;;
+134D3;EGYPTIAN HIEROGLYPH-134D3;Lo;0;L;;;;;N;;;;;
+134D4;EGYPTIAN HIEROGLYPH-134D4;Lo;0;L;;;;;N;;;;;
+134D5;EGYPTIAN HIEROGLYPH-134D5;Lo;0;L;;;;;N;;;;;
+134D6;EGYPTIAN HIEROGLYPH-134D6;Lo;0;L;;;;;N;;;;;
+134D7;EGYPTIAN HIEROGLYPH-134D7;Lo;0;L;;;;;N;;;;;
+134D8;EGYPTIAN HIEROGLYPH-134D8;Lo;0;L;;;;;N;;;;;
+134D9;EGYPTIAN HIEROGLYPH-134D9;Lo;0;L;;;;;N;;;;;
+134DA;EGYPTIAN HIEROGLYPH-134DA;Lo;0;L;;;;;N;;;;;
+134DB;EGYPTIAN HIEROGLYPH-134DB;Lo;0;L;;;;;N;;;;;
+134DC;EGYPTIAN HIEROGLYPH-134DC;Lo;0;L;;;;;N;;;;;
+134DD;EGYPTIAN HIEROGLYPH-134DD;Lo;0;L;;;;;N;;;;;
+134DE;EGYPTIAN HIEROGLYPH-134DE;Lo;0;L;;;;;N;;;;;
+134DF;EGYPTIAN HIEROGLYPH-134DF;Lo;0;L;;;;;N;;;;;
+134E0;EGYPTIAN HIEROGLYPH-134E0;Lo;0;L;;;;;N;;;;;
+134E1;EGYPTIAN HIEROGLYPH-134E1;Lo;0;L;;;;;N;;;;;
+134E2;EGYPTIAN HIEROGLYPH-134E2;Lo;0;L;;;;;N;;;;;
+134E3;EGYPTIAN HIEROGLYPH-134E3;Lo;0;L;;;;;N;;;;;
+134E4;EGYPTIAN HIEROGLYPH-134E4;Lo;0;L;;;;;N;;;;;
+134E5;EGYPTIAN HIEROGLYPH-134E5;Lo;0;L;;;;;N;;;;;
+134E6;EGYPTIAN HIEROGLYPH-134E6;Lo;0;L;;;;;N;;;;;
+134E7;EGYPTIAN HIEROGLYPH-134E7;Lo;0;L;;;;;N;;;;;
+134E8;EGYPTIAN HIEROGLYPH-134E8;Lo;0;L;;;;;N;;;;;
+134E9;EGYPTIAN HIEROGLYPH-134E9;Lo;0;L;;;;;N;;;;;
+134EA;EGYPTIAN HIEROGLYPH-134EA;Lo;0;L;;;;;N;;;;;
+134EB;EGYPTIAN HIEROGLYPH-134EB;Lo;0;L;;;;;N;;;;;
+134EC;EGYPTIAN HIEROGLYPH-134EC;Lo;0;L;;;;;N;;;;;
+134ED;EGYPTIAN HIEROGLYPH-134ED;Lo;0;L;;;;;N;;;;;
+134EE;EGYPTIAN HIEROGLYPH-134EE;Lo;0;L;;;;;N;;;;;
+134EF;EGYPTIAN HIEROGLYPH-134EF;Lo;0;L;;;;;N;;;;;
+134F0;EGYPTIAN HIEROGLYPH-134F0;Lo;0;L;;;;;N;;;;;
+134F1;EGYPTIAN HIEROGLYPH-134F1;Lo;0;L;;;;;N;;;;;
+134F2;EGYPTIAN HIEROGLYPH-134F2;Lo;0;L;;;;;N;;;;;
+134F3;EGYPTIAN HIEROGLYPH-134F3;Lo;0;L;;;;;N;;;;;
+134F4;EGYPTIAN HIEROGLYPH-134F4;Lo;0;L;;;;;N;;;;;
+134F5;EGYPTIAN HIEROGLYPH-134F5;Lo;0;L;;;;;N;;;;;
+134F6;EGYPTIAN HIEROGLYPH-134F6;Lo;0;L;;;;;N;;;;;
+134F7;EGYPTIAN HIEROGLYPH-134F7;Lo;0;L;;;;;N;;;;;
+134F8;EGYPTIAN HIEROGLYPH-134F8;Lo;0;L;;;;;N;;;;;
+134F9;EGYPTIAN HIEROGLYPH-134F9;Lo;0;L;;;;;N;;;;;
+134FA;EGYPTIAN HIEROGLYPH-134FA;Lo;0;L;;;;;N;;;;;
+134FB;EGYPTIAN HIEROGLYPH-134FB;Lo;0;L;;;;;N;;;;;
+134FC;EGYPTIAN HIEROGLYPH-134FC;Lo;0;L;;;;;N;;;;;
+134FD;EGYPTIAN HIEROGLYPH-134FD;Lo;0;L;;;;;N;;;;;
+134FE;EGYPTIAN HIEROGLYPH-134FE;Lo;0;L;;;;;N;;;;;
+134FF;EGYPTIAN HIEROGLYPH-134FF;Lo;0;L;;;;;N;;;;;
+13500;EGYPTIAN HIEROGLYPH-13500;Lo;0;L;;;;;N;;;;;
+13501;EGYPTIAN HIEROGLYPH-13501;Lo;0;L;;;;;N;;;;;
+13502;EGYPTIAN HIEROGLYPH-13502;Lo;0;L;;;;;N;;;;;
+13503;EGYPTIAN HIEROGLYPH-13503;Lo;0;L;;;;;N;;;;;
+13504;EGYPTIAN HIEROGLYPH-13504;Lo;0;L;;;;;N;;;;;
+13505;EGYPTIAN HIEROGLYPH-13505;Lo;0;L;;;;;N;;;;;
+13506;EGYPTIAN HIEROGLYPH-13506;Lo;0;L;;;;;N;;;;;
+13507;EGYPTIAN HIEROGLYPH-13507;Lo;0;L;;;;;N;;;;;
+13508;EGYPTIAN HIEROGLYPH-13508;Lo;0;L;;;;;N;;;;;
+13509;EGYPTIAN HIEROGLYPH-13509;Lo;0;L;;;;;N;;;;;
+1350A;EGYPTIAN HIEROGLYPH-1350A;Lo;0;L;;;;;N;;;;;
+1350B;EGYPTIAN HIEROGLYPH-1350B;Lo;0;L;;;;;N;;;;;
+1350C;EGYPTIAN HIEROGLYPH-1350C;Lo;0;L;;;;;N;;;;;
+1350D;EGYPTIAN HIEROGLYPH-1350D;Lo;0;L;;;;;N;;;;;
+1350E;EGYPTIAN HIEROGLYPH-1350E;Lo;0;L;;;;;N;;;;;
+1350F;EGYPTIAN HIEROGLYPH-1350F;Lo;0;L;;;;;N;;;;;
+13510;EGYPTIAN HIEROGLYPH-13510;Lo;0;L;;;;;N;;;;;
+13511;EGYPTIAN HIEROGLYPH-13511;Lo;0;L;;;;;N;;;;;
+13512;EGYPTIAN HIEROGLYPH-13512;Lo;0;L;;;;;N;;;;;
+13513;EGYPTIAN HIEROGLYPH-13513;Lo;0;L;;;;;N;;;;;
+13514;EGYPTIAN HIEROGLYPH-13514;Lo;0;L;;;;;N;;;;;
+13515;EGYPTIAN HIEROGLYPH-13515;Lo;0;L;;;;;N;;;;;
+13516;EGYPTIAN HIEROGLYPH-13516;Lo;0;L;;;;;N;;;;;
+13517;EGYPTIAN HIEROGLYPH-13517;Lo;0;L;;;;;N;;;;;
+13518;EGYPTIAN HIEROGLYPH-13518;Lo;0;L;;;;;N;;;;;
+13519;EGYPTIAN HIEROGLYPH-13519;Lo;0;L;;;;;N;;;;;
+1351A;EGYPTIAN HIEROGLYPH-1351A;Lo;0;L;;;;;N;;;;;
+1351B;EGYPTIAN HIEROGLYPH-1351B;Lo;0;L;;;;;N;;;;;
+1351C;EGYPTIAN HIEROGLYPH-1351C;Lo;0;L;;;;;N;;;;;
+1351D;EGYPTIAN HIEROGLYPH-1351D;Lo;0;L;;;;;N;;;;;
+1351E;EGYPTIAN HIEROGLYPH-1351E;Lo;0;L;;;;;N;;;;;
+1351F;EGYPTIAN HIEROGLYPH-1351F;Lo;0;L;;;;;N;;;;;
+13520;EGYPTIAN HIEROGLYPH-13520;Lo;0;L;;;;;N;;;;;
+13521;EGYPTIAN HIEROGLYPH-13521;Lo;0;L;;;;;N;;;;;
+13522;EGYPTIAN HIEROGLYPH-13522;Lo;0;L;;;;;N;;;;;
+13523;EGYPTIAN HIEROGLYPH-13523;Lo;0;L;;;;;N;;;;;
+13524;EGYPTIAN HIEROGLYPH-13524;Lo;0;L;;;;;N;;;;;
+13525;EGYPTIAN HIEROGLYPH-13525;Lo;0;L;;;;;N;;;;;
+13526;EGYPTIAN HIEROGLYPH-13526;Lo;0;L;;;;;N;;;;;
+13527;EGYPTIAN HIEROGLYPH-13527;Lo;0;L;;;;;N;;;;;
+13528;EGYPTIAN HIEROGLYPH-13528;Lo;0;L;;;;;N;;;;;
+13529;EGYPTIAN HIEROGLYPH-13529;Lo;0;L;;;;;N;;;;;
+1352A;EGYPTIAN HIEROGLYPH-1352A;Lo;0;L;;;;;N;;;;;
+1352B;EGYPTIAN HIEROGLYPH-1352B;Lo;0;L;;;;;N;;;;;
+1352C;EGYPTIAN HIEROGLYPH-1352C;Lo;0;L;;;;;N;;;;;
+1352D;EGYPTIAN HIEROGLYPH-1352D;Lo;0;L;;;;;N;;;;;
+1352E;EGYPTIAN HIEROGLYPH-1352E;Lo;0;L;;;;;N;;;;;
+1352F;EGYPTIAN HIEROGLYPH-1352F;Lo;0;L;;;;;N;;;;;
+13530;EGYPTIAN HIEROGLYPH-13530;Lo;0;L;;;;;N;;;;;
+13531;EGYPTIAN HIEROGLYPH-13531;Lo;0;L;;;;;N;;;;;
+13532;EGYPTIAN HIEROGLYPH-13532;Lo;0;L;;;;;N;;;;;
+13533;EGYPTIAN HIEROGLYPH-13533;Lo;0;L;;;;;N;;;;;
+13534;EGYPTIAN HIEROGLYPH-13534;Lo;0;L;;;;;N;;;;;
+13535;EGYPTIAN HIEROGLYPH-13535;Lo;0;L;;;;;N;;;;;
+13536;EGYPTIAN HIEROGLYPH-13536;Lo;0;L;;;;;N;;;;;
+13537;EGYPTIAN HIEROGLYPH-13537;Lo;0;L;;;;;N;;;;;
+13538;EGYPTIAN HIEROGLYPH-13538;Lo;0;L;;;;;N;;;;;
+13539;EGYPTIAN HIEROGLYPH-13539;Lo;0;L;;;;;N;;;;;
+1353A;EGYPTIAN HIEROGLYPH-1353A;Lo;0;L;;;;;N;;;;;
+1353B;EGYPTIAN HIEROGLYPH-1353B;Lo;0;L;;;;;N;;;;;
+1353C;EGYPTIAN HIEROGLYPH-1353C;Lo;0;L;;;;;N;;;;;
+1353D;EGYPTIAN HIEROGLYPH-1353D;Lo;0;L;;;;;N;;;;;
+1353E;EGYPTIAN HIEROGLYPH-1353E;Lo;0;L;;;;;N;;;;;
+1353F;EGYPTIAN HIEROGLYPH-1353F;Lo;0;L;;;;;N;;;;;
+13540;EGYPTIAN HIEROGLYPH-13540;Lo;0;L;;;;;N;;;;;
+13541;EGYPTIAN HIEROGLYPH-13541;Lo;0;L;;;;;N;;;;;
+13542;EGYPTIAN HIEROGLYPH-13542;Lo;0;L;;;;;N;;;;;
+13543;EGYPTIAN HIEROGLYPH-13543;Lo;0;L;;;;;N;;;;;
+13544;EGYPTIAN HIEROGLYPH-13544;Lo;0;L;;;;;N;;;;;
+13545;EGYPTIAN HIEROGLYPH-13545;Lo;0;L;;;;;N;;;;;
+13546;EGYPTIAN HIEROGLYPH-13546;Lo;0;L;;;;;N;;;;;
+13547;EGYPTIAN HIEROGLYPH-13547;Lo;0;L;;;;;N;;;;;
+13548;EGYPTIAN HIEROGLYPH-13548;Lo;0;L;;;;;N;;;;;
+13549;EGYPTIAN HIEROGLYPH-13549;Lo;0;L;;;;;N;;;;;
+1354A;EGYPTIAN HIEROGLYPH-1354A;Lo;0;L;;;;;N;;;;;
+1354B;EGYPTIAN HIEROGLYPH-1354B;Lo;0;L;;;;;N;;;;;
+1354C;EGYPTIAN HIEROGLYPH-1354C;Lo;0;L;;;;;N;;;;;
+1354D;EGYPTIAN HIEROGLYPH-1354D;Lo;0;L;;;;;N;;;;;
+1354E;EGYPTIAN HIEROGLYPH-1354E;Lo;0;L;;;;;N;;;;;
+1354F;EGYPTIAN HIEROGLYPH-1354F;Lo;0;L;;;;;N;;;;;
+13550;EGYPTIAN HIEROGLYPH-13550;Lo;0;L;;;;;N;;;;;
+13551;EGYPTIAN HIEROGLYPH-13551;Lo;0;L;;;;;N;;;;;
+13552;EGYPTIAN HIEROGLYPH-13552;Lo;0;L;;;;;N;;;;;
+13553;EGYPTIAN HIEROGLYPH-13553;Lo;0;L;;;;;N;;;;;
+13554;EGYPTIAN HIEROGLYPH-13554;Lo;0;L;;;;;N;;;;;
+13555;EGYPTIAN HIEROGLYPH-13555;Lo;0;L;;;;;N;;;;;
+13556;EGYPTIAN HIEROGLYPH-13556;Lo;0;L;;;;;N;;;;;
+13557;EGYPTIAN HIEROGLYPH-13557;Lo;0;L;;;;;N;;;;;
+13558;EGYPTIAN HIEROGLYPH-13558;Lo;0;L;;;;;N;;;;;
+13559;EGYPTIAN HIEROGLYPH-13559;Lo;0;L;;;;;N;;;;;
+1355A;EGYPTIAN HIEROGLYPH-1355A;Lo;0;L;;;;;N;;;;;
+1355B;EGYPTIAN HIEROGLYPH-1355B;Lo;0;L;;;;;N;;;;;
+1355C;EGYPTIAN HIEROGLYPH-1355C;Lo;0;L;;;;;N;;;;;
+1355D;EGYPTIAN HIEROGLYPH-1355D;Lo;0;L;;;;;N;;;;;
+1355E;EGYPTIAN HIEROGLYPH-1355E;Lo;0;L;;;;;N;;;;;
+1355F;EGYPTIAN HIEROGLYPH-1355F;Lo;0;L;;;;;N;;;;;
+13560;EGYPTIAN HIEROGLYPH-13560;Lo;0;L;;;;;N;;;;;
+13561;EGYPTIAN HIEROGLYPH-13561;Lo;0;L;;;;;N;;;;;
+13562;EGYPTIAN HIEROGLYPH-13562;Lo;0;L;;;;;N;;;;;
+13563;EGYPTIAN HIEROGLYPH-13563;Lo;0;L;;;;;N;;;;;
+13564;EGYPTIAN HIEROGLYPH-13564;Lo;0;L;;;;;N;;;;;
+13565;EGYPTIAN HIEROGLYPH-13565;Lo;0;L;;;;;N;;;;;
+13566;EGYPTIAN HIEROGLYPH-13566;Lo;0;L;;;;;N;;;;;
+13567;EGYPTIAN HIEROGLYPH-13567;Lo;0;L;;;;;N;;;;;
+13568;EGYPTIAN HIEROGLYPH-13568;Lo;0;L;;;;;N;;;;;
+13569;EGYPTIAN HIEROGLYPH-13569;Lo;0;L;;;;;N;;;;;
+1356A;EGYPTIAN HIEROGLYPH-1356A;Lo;0;L;;;;;N;;;;;
+1356B;EGYPTIAN HIEROGLYPH-1356B;Lo;0;L;;;;;N;;;;;
+1356C;EGYPTIAN HIEROGLYPH-1356C;Lo;0;L;;;;;N;;;;;
+1356D;EGYPTIAN HIEROGLYPH-1356D;Lo;0;L;;;;;N;;;;;
+1356E;EGYPTIAN HIEROGLYPH-1356E;Lo;0;L;;;;;N;;;;;
+1356F;EGYPTIAN HIEROGLYPH-1356F;Lo;0;L;;;;;N;;;;;
+13570;EGYPTIAN HIEROGLYPH-13570;Lo;0;L;;;;;N;;;;;
+13571;EGYPTIAN HIEROGLYPH-13571;Lo;0;L;;;;;N;;;;;
+13572;EGYPTIAN HIEROGLYPH-13572;Lo;0;L;;;;;N;;;;;
+13573;EGYPTIAN HIEROGLYPH-13573;Lo;0;L;;;;;N;;;;;
+13574;EGYPTIAN HIEROGLYPH-13574;Lo;0;L;;;;;N;;;;;
+13575;EGYPTIAN HIEROGLYPH-13575;Lo;0;L;;;;;N;;;;;
+13576;EGYPTIAN HIEROGLYPH-13576;Lo;0;L;;;;;N;;;;;
+13577;EGYPTIAN HIEROGLYPH-13577;Lo;0;L;;;;;N;;;;;
+13578;EGYPTIAN HIEROGLYPH-13578;Lo;0;L;;;;;N;;;;;
+13579;EGYPTIAN HIEROGLYPH-13579;Lo;0;L;;;;;N;;;;;
+1357A;EGYPTIAN HIEROGLYPH-1357A;Lo;0;L;;;;;N;;;;;
+1357B;EGYPTIAN HIEROGLYPH-1357B;Lo;0;L;;;;;N;;;;;
+1357C;EGYPTIAN HIEROGLYPH-1357C;Lo;0;L;;;;;N;;;;;
+1357D;EGYPTIAN HIEROGLYPH-1357D;Lo;0;L;;;;;N;;;;;
+1357E;EGYPTIAN HIEROGLYPH-1357E;Lo;0;L;;;;;N;;;;;
+1357F;EGYPTIAN HIEROGLYPH-1357F;Lo;0;L;;;;;N;;;;;
+13580;EGYPTIAN HIEROGLYPH-13580;Lo;0;L;;;;;N;;;;;
+13581;EGYPTIAN HIEROGLYPH-13581;Lo;0;L;;;;;N;;;;;
+13582;EGYPTIAN HIEROGLYPH-13582;Lo;0;L;;;;;N;;;;;
+13583;EGYPTIAN HIEROGLYPH-13583;Lo;0;L;;;;;N;;;;;
+13584;EGYPTIAN HIEROGLYPH-13584;Lo;0;L;;;;;N;;;;;
+13585;EGYPTIAN HIEROGLYPH-13585;Lo;0;L;;;;;N;;;;;
+13586;EGYPTIAN HIEROGLYPH-13586;Lo;0;L;;;;;N;;;;;
+13587;EGYPTIAN HIEROGLYPH-13587;Lo;0;L;;;;;N;;;;;
+13588;EGYPTIAN HIEROGLYPH-13588;Lo;0;L;;;;;N;;;;;
+13589;EGYPTIAN HIEROGLYPH-13589;Lo;0;L;;;;;N;;;;;
+1358A;EGYPTIAN HIEROGLYPH-1358A;Lo;0;L;;;;;N;;;;;
+1358B;EGYPTIAN HIEROGLYPH-1358B;Lo;0;L;;;;;N;;;;;
+1358C;EGYPTIAN HIEROGLYPH-1358C;Lo;0;L;;;;;N;;;;;
+1358D;EGYPTIAN HIEROGLYPH-1358D;Lo;0;L;;;;;N;;;;;
+1358E;EGYPTIAN HIEROGLYPH-1358E;Lo;0;L;;;;;N;;;;;
+1358F;EGYPTIAN HIEROGLYPH-1358F;Lo;0;L;;;;;N;;;;;
+13590;EGYPTIAN HIEROGLYPH-13590;Lo;0;L;;;;;N;;;;;
+13591;EGYPTIAN HIEROGLYPH-13591;Lo;0;L;;;;;N;;;;;
+13592;EGYPTIAN HIEROGLYPH-13592;Lo;0;L;;;;;N;;;;;
+13593;EGYPTIAN HIEROGLYPH-13593;Lo;0;L;;;;;N;;;;;
+13594;EGYPTIAN HIEROGLYPH-13594;Lo;0;L;;;;;N;;;;;
+13595;EGYPTIAN HIEROGLYPH-13595;Lo;0;L;;;;;N;;;;;
+13596;EGYPTIAN HIEROGLYPH-13596;Lo;0;L;;;;;N;;;;;
+13597;EGYPTIAN HIEROGLYPH-13597;Lo;0;L;;;;;N;;;;;
+13598;EGYPTIAN HIEROGLYPH-13598;Lo;0;L;;;;;N;;;;;
+13599;EGYPTIAN HIEROGLYPH-13599;Lo;0;L;;;;;N;;;;;
+1359A;EGYPTIAN HIEROGLYPH-1359A;Lo;0;L;;;;;N;;;;;
+1359B;EGYPTIAN HIEROGLYPH-1359B;Lo;0;L;;;;;N;;;;;
+1359C;EGYPTIAN HIEROGLYPH-1359C;Lo;0;L;;;;;N;;;;;
+1359D;EGYPTIAN HIEROGLYPH-1359D;Lo;0;L;;;;;N;;;;;
+1359E;EGYPTIAN HIEROGLYPH-1359E;Lo;0;L;;;;;N;;;;;
+1359F;EGYPTIAN HIEROGLYPH-1359F;Lo;0;L;;;;;N;;;;;
+135A0;EGYPTIAN HIEROGLYPH-135A0;Lo;0;L;;;;;N;;;;;
+135A1;EGYPTIAN HIEROGLYPH-135A1;Lo;0;L;;;;;N;;;;;
+135A2;EGYPTIAN HIEROGLYPH-135A2;Lo;0;L;;;;;N;;;;;
+135A3;EGYPTIAN HIEROGLYPH-135A3;Lo;0;L;;;;;N;;;;;
+135A4;EGYPTIAN HIEROGLYPH-135A4;Lo;0;L;;;;;N;;;;;
+135A5;EGYPTIAN HIEROGLYPH-135A5;Lo;0;L;;;;;N;;;;;
+135A6;EGYPTIAN HIEROGLYPH-135A6;Lo;0;L;;;;;N;;;;;
+135A7;EGYPTIAN HIEROGLYPH-135A7;Lo;0;L;;;;;N;;;;;
+135A8;EGYPTIAN HIEROGLYPH-135A8;Lo;0;L;;;;;N;;;;;
+135A9;EGYPTIAN HIEROGLYPH-135A9;Lo;0;L;;;;;N;;;;;
+135AA;EGYPTIAN HIEROGLYPH-135AA;Lo;0;L;;;;;N;;;;;
+135AB;EGYPTIAN HIEROGLYPH-135AB;Lo;0;L;;;;;N;;;;;
+135AC;EGYPTIAN HIEROGLYPH-135AC;Lo;0;L;;;;;N;;;;;
+135AD;EGYPTIAN HIEROGLYPH-135AD;Lo;0;L;;;;;N;;;;;
+135AE;EGYPTIAN HIEROGLYPH-135AE;Lo;0;L;;;;;N;;;;;
+135AF;EGYPTIAN HIEROGLYPH-135AF;Lo;0;L;;;;;N;;;;;
+135B0;EGYPTIAN HIEROGLYPH-135B0;Lo;0;L;;;;;N;;;;;
+135B1;EGYPTIAN HIEROGLYPH-135B1;Lo;0;L;;;;;N;;;;;
+135B2;EGYPTIAN HIEROGLYPH-135B2;Lo;0;L;;;;;N;;;;;
+135B3;EGYPTIAN HIEROGLYPH-135B3;Lo;0;L;;;;;N;;;;;
+135B4;EGYPTIAN HIEROGLYPH-135B4;Lo;0;L;;;;;N;;;;;
+135B5;EGYPTIAN HIEROGLYPH-135B5;Lo;0;L;;;;;N;;;;;
+135B6;EGYPTIAN HIEROGLYPH-135B6;Lo;0;L;;;;;N;;;;;
+135B7;EGYPTIAN HIEROGLYPH-135B7;Lo;0;L;;;;;N;;;;;
+135B8;EGYPTIAN HIEROGLYPH-135B8;Lo;0;L;;;;;N;;;;;
+135B9;EGYPTIAN HIEROGLYPH-135B9;Lo;0;L;;;;;N;;;;;
+135BA;EGYPTIAN HIEROGLYPH-135BA;Lo;0;L;;;;;N;;;;;
+135BB;EGYPTIAN HIEROGLYPH-135BB;Lo;0;L;;;;;N;;;;;
+135BC;EGYPTIAN HIEROGLYPH-135BC;Lo;0;L;;;;;N;;;;;
+135BD;EGYPTIAN HIEROGLYPH-135BD;Lo;0;L;;;;;N;;;;;
+135BE;EGYPTIAN HIEROGLYPH-135BE;Lo;0;L;;;;;N;;;;;
+135BF;EGYPTIAN HIEROGLYPH-135BF;Lo;0;L;;;;;N;;;;;
+135C0;EGYPTIAN HIEROGLYPH-135C0;Lo;0;L;;;;;N;;;;;
+135C1;EGYPTIAN HIEROGLYPH-135C1;Lo;0;L;;;;;N;;;;;
+135C2;EGYPTIAN HIEROGLYPH-135C2;Lo;0;L;;;;;N;;;;;
+135C3;EGYPTIAN HIEROGLYPH-135C3;Lo;0;L;;;;;N;;;;;
+135C4;EGYPTIAN HIEROGLYPH-135C4;Lo;0;L;;;;;N;;;;;
+135C5;EGYPTIAN HIEROGLYPH-135C5;Lo;0;L;;;;;N;;;;;
+135C6;EGYPTIAN HIEROGLYPH-135C6;Lo;0;L;;;;;N;;;;;
+135C7;EGYPTIAN HIEROGLYPH-135C7;Lo;0;L;;;;;N;;;;;
+135C8;EGYPTIAN HIEROGLYPH-135C8;Lo;0;L;;;;;N;;;;;
+135C9;EGYPTIAN HIEROGLYPH-135C9;Lo;0;L;;;;;N;;;;;
+135CA;EGYPTIAN HIEROGLYPH-135CA;Lo;0;L;;;;;N;;;;;
+135CB;EGYPTIAN HIEROGLYPH-135CB;Lo;0;L;;;;;N;;;;;
+135CC;EGYPTIAN HIEROGLYPH-135CC;Lo;0;L;;;;;N;;;;;
+135CD;EGYPTIAN HIEROGLYPH-135CD;Lo;0;L;;;;;N;;;;;
+135CE;EGYPTIAN HIEROGLYPH-135CE;Lo;0;L;;;;;N;;;;;
+135CF;EGYPTIAN HIEROGLYPH-135CF;Lo;0;L;;;;;N;;;;;
+135D0;EGYPTIAN HIEROGLYPH-135D0;Lo;0;L;;;;;N;;;;;
+135D1;EGYPTIAN HIEROGLYPH-135D1;Lo;0;L;;;;;N;;;;;
+135D2;EGYPTIAN HIEROGLYPH-135D2;Lo;0;L;;;;;N;;;;;
+135D3;EGYPTIAN HIEROGLYPH-135D3;Lo;0;L;;;;;N;;;;;
+135D4;EGYPTIAN HIEROGLYPH-135D4;Lo;0;L;;;;;N;;;;;
+135D5;EGYPTIAN HIEROGLYPH-135D5;Lo;0;L;;;;;N;;;;;
+135D6;EGYPTIAN HIEROGLYPH-135D6;Lo;0;L;;;;;N;;;;;
+135D7;EGYPTIAN HIEROGLYPH-135D7;Lo;0;L;;;;;N;;;;;
+135D8;EGYPTIAN HIEROGLYPH-135D8;Lo;0;L;;;;;N;;;;;
+135D9;EGYPTIAN HIEROGLYPH-135D9;Lo;0;L;;;;;N;;;;;
+135DA;EGYPTIAN HIEROGLYPH-135DA;Lo;0;L;;;;;N;;;;;
+135DB;EGYPTIAN HIEROGLYPH-135DB;Lo;0;L;;;;;N;;;;;
+135DC;EGYPTIAN HIEROGLYPH-135DC;Lo;0;L;;;;;N;;;;;
+135DD;EGYPTIAN HIEROGLYPH-135DD;Lo;0;L;;;;;N;;;;;
+135DE;EGYPTIAN HIEROGLYPH-135DE;Lo;0;L;;;;;N;;;;;
+135DF;EGYPTIAN HIEROGLYPH-135DF;Lo;0;L;;;;;N;;;;;
+135E0;EGYPTIAN HIEROGLYPH-135E0;Lo;0;L;;;;;N;;;;;
+135E1;EGYPTIAN HIEROGLYPH-135E1;Lo;0;L;;;;;N;;;;;
+135E2;EGYPTIAN HIEROGLYPH-135E2;Lo;0;L;;;;;N;;;;;
+135E3;EGYPTIAN HIEROGLYPH-135E3;Lo;0;L;;;;;N;;;;;
+135E4;EGYPTIAN HIEROGLYPH-135E4;Lo;0;L;;;;;N;;;;;
+135E5;EGYPTIAN HIEROGLYPH-135E5;Lo;0;L;;;;;N;;;;;
+135E6;EGYPTIAN HIEROGLYPH-135E6;Lo;0;L;;;;;N;;;;;
+135E7;EGYPTIAN HIEROGLYPH-135E7;Lo;0;L;;;;;N;;;;;
+135E8;EGYPTIAN HIEROGLYPH-135E8;Lo;0;L;;;;;N;;;;;
+135E9;EGYPTIAN HIEROGLYPH-135E9;Lo;0;L;;;;;N;;;;;
+135EA;EGYPTIAN HIEROGLYPH-135EA;Lo;0;L;;;;;N;;;;;
+135EB;EGYPTIAN HIEROGLYPH-135EB;Lo;0;L;;;;;N;;;;;
+135EC;EGYPTIAN HIEROGLYPH-135EC;Lo;0;L;;;;;N;;;;;
+135ED;EGYPTIAN HIEROGLYPH-135ED;Lo;0;L;;;;;N;;;;;
+135EE;EGYPTIAN HIEROGLYPH-135EE;Lo;0;L;;;;;N;;;;;
+135EF;EGYPTIAN HIEROGLYPH-135EF;Lo;0;L;;;;;N;;;;;
+135F0;EGYPTIAN HIEROGLYPH-135F0;Lo;0;L;;;;;N;;;;;
+135F1;EGYPTIAN HIEROGLYPH-135F1;Lo;0;L;;;;;N;;;;;
+135F2;EGYPTIAN HIEROGLYPH-135F2;Lo;0;L;;;;;N;;;;;
+135F3;EGYPTIAN HIEROGLYPH-135F3;Lo;0;L;;;;;N;;;;;
+135F4;EGYPTIAN HIEROGLYPH-135F4;Lo;0;L;;;;;N;;;;;
+135F5;EGYPTIAN HIEROGLYPH-135F5;Lo;0;L;;;;;N;;;;;
+135F6;EGYPTIAN HIEROGLYPH-135F6;Lo;0;L;;;;;N;;;;;
+135F7;EGYPTIAN HIEROGLYPH-135F7;Lo;0;L;;;;;N;;;;;
+135F8;EGYPTIAN HIEROGLYPH-135F8;Lo;0;L;;;;;N;;;;;
+135F9;EGYPTIAN HIEROGLYPH-135F9;Lo;0;L;;;;;N;;;;;
+135FA;EGYPTIAN HIEROGLYPH-135FA;Lo;0;L;;;;;N;;;;;
+135FB;EGYPTIAN HIEROGLYPH-135FB;Lo;0;L;;;;;N;;;;;
+135FC;EGYPTIAN HIEROGLYPH-135FC;Lo;0;L;;;;;N;;;;;
+135FD;EGYPTIAN HIEROGLYPH-135FD;Lo;0;L;;;;;N;;;;;
+135FE;EGYPTIAN HIEROGLYPH-135FE;Lo;0;L;;;;;N;;;;;
+135FF;EGYPTIAN HIEROGLYPH-135FF;Lo;0;L;;;;;N;;;;;
+13600;EGYPTIAN HIEROGLYPH-13600;Lo;0;L;;;;;N;;;;;
+13601;EGYPTIAN HIEROGLYPH-13601;Lo;0;L;;;;;N;;;;;
+13602;EGYPTIAN HIEROGLYPH-13602;Lo;0;L;;;;;N;;;;;
+13603;EGYPTIAN HIEROGLYPH-13603;Lo;0;L;;;;;N;;;;;
+13604;EGYPTIAN HIEROGLYPH-13604;Lo;0;L;;;;;N;;;;;
+13605;EGYPTIAN HIEROGLYPH-13605;Lo;0;L;;;;;N;;;;;
+13606;EGYPTIAN HIEROGLYPH-13606;Lo;0;L;;;;;N;;;;;
+13607;EGYPTIAN HIEROGLYPH-13607;Lo;0;L;;;;;N;;;;;
+13608;EGYPTIAN HIEROGLYPH-13608;Lo;0;L;;;;;N;;;;;
+13609;EGYPTIAN HIEROGLYPH-13609;Lo;0;L;;;;;N;;;;;
+1360A;EGYPTIAN HIEROGLYPH-1360A;Lo;0;L;;;;;N;;;;;
+1360B;EGYPTIAN HIEROGLYPH-1360B;Lo;0;L;;;;;N;;;;;
+1360C;EGYPTIAN HIEROGLYPH-1360C;Lo;0;L;;;;;N;;;;;
+1360D;EGYPTIAN HIEROGLYPH-1360D;Lo;0;L;;;;;N;;;;;
+1360E;EGYPTIAN HIEROGLYPH-1360E;Lo;0;L;;;;;N;;;;;
+1360F;EGYPTIAN HIEROGLYPH-1360F;Lo;0;L;;;;;N;;;;;
+13610;EGYPTIAN HIEROGLYPH-13610;Lo;0;L;;;;;N;;;;;
+13611;EGYPTIAN HIEROGLYPH-13611;Lo;0;L;;;;;N;;;;;
+13612;EGYPTIAN HIEROGLYPH-13612;Lo;0;L;;;;;N;;;;;
+13613;EGYPTIAN HIEROGLYPH-13613;Lo;0;L;;;;;N;;;;;
+13614;EGYPTIAN HIEROGLYPH-13614;Lo;0;L;;;;;N;;;;;
+13615;EGYPTIAN HIEROGLYPH-13615;Lo;0;L;;;;;N;;;;;
+13616;EGYPTIAN HIEROGLYPH-13616;Lo;0;L;;;;;N;;;;;
+13617;EGYPTIAN HIEROGLYPH-13617;Lo;0;L;;;;;N;;;;;
+13618;EGYPTIAN HIEROGLYPH-13618;Lo;0;L;;;;;N;;;;;
+13619;EGYPTIAN HIEROGLYPH-13619;Lo;0;L;;;;;N;;;;;
+1361A;EGYPTIAN HIEROGLYPH-1361A;Lo;0;L;;;;;N;;;;;
+1361B;EGYPTIAN HIEROGLYPH-1361B;Lo;0;L;;;;;N;;;;;
+1361C;EGYPTIAN HIEROGLYPH-1361C;Lo;0;L;;;;;N;;;;;
+1361D;EGYPTIAN HIEROGLYPH-1361D;Lo;0;L;;;;;N;;;;;
+1361E;EGYPTIAN HIEROGLYPH-1361E;Lo;0;L;;;;;N;;;;;
+1361F;EGYPTIAN HIEROGLYPH-1361F;Lo;0;L;;;;;N;;;;;
+13620;EGYPTIAN HIEROGLYPH-13620;Lo;0;L;;;;;N;;;;;
+13621;EGYPTIAN HIEROGLYPH-13621;Lo;0;L;;;;;N;;;;;
+13622;EGYPTIAN HIEROGLYPH-13622;Lo;0;L;;;;;N;;;;;
+13623;EGYPTIAN HIEROGLYPH-13623;Lo;0;L;;;;;N;;;;;
+13624;EGYPTIAN HIEROGLYPH-13624;Lo;0;L;;;;;N;;;;;
+13625;EGYPTIAN HIEROGLYPH-13625;Lo;0;L;;;;;N;;;;;
+13626;EGYPTIAN HIEROGLYPH-13626;Lo;0;L;;;;;N;;;;;
+13627;EGYPTIAN HIEROGLYPH-13627;Lo;0;L;;;;;N;;;;;
+13628;EGYPTIAN HIEROGLYPH-13628;Lo;0;L;;;;;N;;;;;
+13629;EGYPTIAN HIEROGLYPH-13629;Lo;0;L;;;;;N;;;;;
+1362A;EGYPTIAN HIEROGLYPH-1362A;Lo;0;L;;;;;N;;;;;
+1362B;EGYPTIAN HIEROGLYPH-1362B;Lo;0;L;;;;;N;;;;;
+1362C;EGYPTIAN HIEROGLYPH-1362C;Lo;0;L;;;;;N;;;;;
+1362D;EGYPTIAN HIEROGLYPH-1362D;Lo;0;L;;;;;N;;;;;
+1362E;EGYPTIAN HIEROGLYPH-1362E;Lo;0;L;;;;;N;;;;;
+1362F;EGYPTIAN HIEROGLYPH-1362F;Lo;0;L;;;;;N;;;;;
+13630;EGYPTIAN HIEROGLYPH-13630;Lo;0;L;;;;;N;;;;;
+13631;EGYPTIAN HIEROGLYPH-13631;Lo;0;L;;;;;N;;;;;
+13632;EGYPTIAN HIEROGLYPH-13632;Lo;0;L;;;;;N;;;;;
+13633;EGYPTIAN HIEROGLYPH-13633;Lo;0;L;;;;;N;;;;;
+13634;EGYPTIAN HIEROGLYPH-13634;Lo;0;L;;;;;N;;;;;
+13635;EGYPTIAN HIEROGLYPH-13635;Lo;0;L;;;;;N;;;;;
+13636;EGYPTIAN HIEROGLYPH-13636;Lo;0;L;;;;;N;;;;;
+13637;EGYPTIAN HIEROGLYPH-13637;Lo;0;L;;;;;N;;;;;
+13638;EGYPTIAN HIEROGLYPH-13638;Lo;0;L;;;;;N;;;;;
+13639;EGYPTIAN HIEROGLYPH-13639;Lo;0;L;;;;;N;;;;;
+1363A;EGYPTIAN HIEROGLYPH-1363A;Lo;0;L;;;;;N;;;;;
+1363B;EGYPTIAN HIEROGLYPH-1363B;Lo;0;L;;;;;N;;;;;
+1363C;EGYPTIAN HIEROGLYPH-1363C;Lo;0;L;;;;;N;;;;;
+1363D;EGYPTIAN HIEROGLYPH-1363D;Lo;0;L;;;;;N;;;;;
+1363E;EGYPTIAN HIEROGLYPH-1363E;Lo;0;L;;;;;N;;;;;
+1363F;EGYPTIAN HIEROGLYPH-1363F;Lo;0;L;;;;;N;;;;;
+13640;EGYPTIAN HIEROGLYPH-13640;Lo;0;L;;;;;N;;;;;
+13641;EGYPTIAN HIEROGLYPH-13641;Lo;0;L;;;;;N;;;;;
+13642;EGYPTIAN HIEROGLYPH-13642;Lo;0;L;;;;;N;;;;;
+13643;EGYPTIAN HIEROGLYPH-13643;Lo;0;L;;;;;N;;;;;
+13644;EGYPTIAN HIEROGLYPH-13644;Lo;0;L;;;;;N;;;;;
+13645;EGYPTIAN HIEROGLYPH-13645;Lo;0;L;;;;;N;;;;;
+13646;EGYPTIAN HIEROGLYPH-13646;Lo;0;L;;;;;N;;;;;
+13647;EGYPTIAN HIEROGLYPH-13647;Lo;0;L;;;;;N;;;;;
+13648;EGYPTIAN HIEROGLYPH-13648;Lo;0;L;;;;;N;;;;;
+13649;EGYPTIAN HIEROGLYPH-13649;Lo;0;L;;;;;N;;;;;
+1364A;EGYPTIAN HIEROGLYPH-1364A;Lo;0;L;;;;;N;;;;;
+1364B;EGYPTIAN HIEROGLYPH-1364B;Lo;0;L;;;;;N;;;;;
+1364C;EGYPTIAN HIEROGLYPH-1364C;Lo;0;L;;;;;N;;;;;
+1364D;EGYPTIAN HIEROGLYPH-1364D;Lo;0;L;;;;;N;;;;;
+1364E;EGYPTIAN HIEROGLYPH-1364E;Lo;0;L;;;;;N;;;;;
+1364F;EGYPTIAN HIEROGLYPH-1364F;Lo;0;L;;;;;N;;;;;
+13650;EGYPTIAN HIEROGLYPH-13650;Lo;0;L;;;;;N;;;;;
+13651;EGYPTIAN HIEROGLYPH-13651;Lo;0;L;;;;;N;;;;;
+13652;EGYPTIAN HIEROGLYPH-13652;Lo;0;L;;;;;N;;;;;
+13653;EGYPTIAN HIEROGLYPH-13653;Lo;0;L;;;;;N;;;;;
+13654;EGYPTIAN HIEROGLYPH-13654;Lo;0;L;;;;;N;;;;;
+13655;EGYPTIAN HIEROGLYPH-13655;Lo;0;L;;;;;N;;;;;
+13656;EGYPTIAN HIEROGLYPH-13656;Lo;0;L;;;;;N;;;;;
+13657;EGYPTIAN HIEROGLYPH-13657;Lo;0;L;;;;;N;;;;;
+13658;EGYPTIAN HIEROGLYPH-13658;Lo;0;L;;;;;N;;;;;
+13659;EGYPTIAN HIEROGLYPH-13659;Lo;0;L;;;;;N;;;;;
+1365A;EGYPTIAN HIEROGLYPH-1365A;Lo;0;L;;;;;N;;;;;
+1365B;EGYPTIAN HIEROGLYPH-1365B;Lo;0;L;;;;;N;;;;;
+1365C;EGYPTIAN HIEROGLYPH-1365C;Lo;0;L;;;;;N;;;;;
+1365D;EGYPTIAN HIEROGLYPH-1365D;Lo;0;L;;;;;N;;;;;
+1365E;EGYPTIAN HIEROGLYPH-1365E;Lo;0;L;;;;;N;;;;;
+1365F;EGYPTIAN HIEROGLYPH-1365F;Lo;0;L;;;;;N;;;;;
+13660;EGYPTIAN HIEROGLYPH-13660;Lo;0;L;;;;;N;;;;;
+13661;EGYPTIAN HIEROGLYPH-13661;Lo;0;L;;;;;N;;;;;
+13662;EGYPTIAN HIEROGLYPH-13662;Lo;0;L;;;;;N;;;;;
+13663;EGYPTIAN HIEROGLYPH-13663;Lo;0;L;;;;;N;;;;;
+13664;EGYPTIAN HIEROGLYPH-13664;Lo;0;L;;;;;N;;;;;
+13665;EGYPTIAN HIEROGLYPH-13665;Lo;0;L;;;;;N;;;;;
+13666;EGYPTIAN HIEROGLYPH-13666;Lo;0;L;;;;;N;;;;;
+13667;EGYPTIAN HIEROGLYPH-13667;Lo;0;L;;;;;N;;;;;
+13668;EGYPTIAN HIEROGLYPH-13668;Lo;0;L;;;;;N;;;;;
+13669;EGYPTIAN HIEROGLYPH-13669;Lo;0;L;;;;;N;;;;;
+1366A;EGYPTIAN HIEROGLYPH-1366A;Lo;0;L;;;;;N;;;;;
+1366B;EGYPTIAN HIEROGLYPH-1366B;Lo;0;L;;;;;N;;;;;
+1366C;EGYPTIAN HIEROGLYPH-1366C;Lo;0;L;;;;;N;;;;;
+1366D;EGYPTIAN HIEROGLYPH-1366D;Lo;0;L;;;;;N;;;;;
+1366E;EGYPTIAN HIEROGLYPH-1366E;Lo;0;L;;;;;N;;;;;
+1366F;EGYPTIAN HIEROGLYPH-1366F;Lo;0;L;;;;;N;;;;;
+13670;EGYPTIAN HIEROGLYPH-13670;Lo;0;L;;;;;N;;;;;
+13671;EGYPTIAN HIEROGLYPH-13671;Lo;0;L;;;;;N;;;;;
+13672;EGYPTIAN HIEROGLYPH-13672;Lo;0;L;;;;;N;;;;;
+13673;EGYPTIAN HIEROGLYPH-13673;Lo;0;L;;;;;N;;;;;
+13674;EGYPTIAN HIEROGLYPH-13674;Lo;0;L;;;;;N;;;;;
+13675;EGYPTIAN HIEROGLYPH-13675;Lo;0;L;;;;;N;;;;;
+13676;EGYPTIAN HIEROGLYPH-13676;Lo;0;L;;;;;N;;;;;
+13677;EGYPTIAN HIEROGLYPH-13677;Lo;0;L;;;;;N;;;;;
+13678;EGYPTIAN HIEROGLYPH-13678;Lo;0;L;;;;;N;;;;;
+13679;EGYPTIAN HIEROGLYPH-13679;Lo;0;L;;;;;N;;;;;
+1367A;EGYPTIAN HIEROGLYPH-1367A;Lo;0;L;;;;;N;;;;;
+1367B;EGYPTIAN HIEROGLYPH-1367B;Lo;0;L;;;;;N;;;;;
+1367C;EGYPTIAN HIEROGLYPH-1367C;Lo;0;L;;;;;N;;;;;
+1367D;EGYPTIAN HIEROGLYPH-1367D;Lo;0;L;;;;;N;;;;;
+1367E;EGYPTIAN HIEROGLYPH-1367E;Lo;0;L;;;;;N;;;;;
+1367F;EGYPTIAN HIEROGLYPH-1367F;Lo;0;L;;;;;N;;;;;
+13680;EGYPTIAN HIEROGLYPH-13680;Lo;0;L;;;;;N;;;;;
+13681;EGYPTIAN HIEROGLYPH-13681;Lo;0;L;;;;;N;;;;;
+13682;EGYPTIAN HIEROGLYPH-13682;Lo;0;L;;;;;N;;;;;
+13683;EGYPTIAN HIEROGLYPH-13683;Lo;0;L;;;;;N;;;;;
+13684;EGYPTIAN HIEROGLYPH-13684;Lo;0;L;;;;;N;;;;;
+13685;EGYPTIAN HIEROGLYPH-13685;Lo;0;L;;;;;N;;;;;
+13686;EGYPTIAN HIEROGLYPH-13686;Lo;0;L;;;;;N;;;;;
+13687;EGYPTIAN HIEROGLYPH-13687;Lo;0;L;;;;;N;;;;;
+13688;EGYPTIAN HIEROGLYPH-13688;Lo;0;L;;;;;N;;;;;
+13689;EGYPTIAN HIEROGLYPH-13689;Lo;0;L;;;;;N;;;;;
+1368A;EGYPTIAN HIEROGLYPH-1368A;Lo;0;L;;;;;N;;;;;
+1368B;EGYPTIAN HIEROGLYPH-1368B;Lo;0;L;;;;;N;;;;;
+1368C;EGYPTIAN HIEROGLYPH-1368C;Lo;0;L;;;;;N;;;;;
+1368D;EGYPTIAN HIEROGLYPH-1368D;Lo;0;L;;;;;N;;;;;
+1368E;EGYPTIAN HIEROGLYPH-1368E;Lo;0;L;;;;;N;;;;;
+1368F;EGYPTIAN HIEROGLYPH-1368F;Lo;0;L;;;;;N;;;;;
+13690;EGYPTIAN HIEROGLYPH-13690;Lo;0;L;;;;;N;;;;;
+13691;EGYPTIAN HIEROGLYPH-13691;Lo;0;L;;;;;N;;;;;
+13692;EGYPTIAN HIEROGLYPH-13692;Lo;0;L;;;;;N;;;;;
+13693;EGYPTIAN HIEROGLYPH-13693;Lo;0;L;;;;;N;;;;;
+13694;EGYPTIAN HIEROGLYPH-13694;Lo;0;L;;;;;N;;;;;
+13695;EGYPTIAN HIEROGLYPH-13695;Lo;0;L;;;;;N;;;;;
+13696;EGYPTIAN HIEROGLYPH-13696;Lo;0;L;;;;;N;;;;;
+13697;EGYPTIAN HIEROGLYPH-13697;Lo;0;L;;;;;N;;;;;
+13698;EGYPTIAN HIEROGLYPH-13698;Lo;0;L;;;;;N;;;;;
+13699;EGYPTIAN HIEROGLYPH-13699;Lo;0;L;;;;;N;;;;;
+1369A;EGYPTIAN HIEROGLYPH-1369A;Lo;0;L;;;;;N;;;;;
+1369B;EGYPTIAN HIEROGLYPH-1369B;Lo;0;L;;;;;N;;;;;
+1369C;EGYPTIAN HIEROGLYPH-1369C;Lo;0;L;;;;;N;;;;;
+1369D;EGYPTIAN HIEROGLYPH-1369D;Lo;0;L;;;;;N;;;;;
+1369E;EGYPTIAN HIEROGLYPH-1369E;Lo;0;L;;;;;N;;;;;
+1369F;EGYPTIAN HIEROGLYPH-1369F;Lo;0;L;;;;;N;;;;;
+136A0;EGYPTIAN HIEROGLYPH-136A0;Lo;0;L;;;;;N;;;;;
+136A1;EGYPTIAN HIEROGLYPH-136A1;Lo;0;L;;;;;N;;;;;
+136A2;EGYPTIAN HIEROGLYPH-136A2;Lo;0;L;;;;;N;;;;;
+136A3;EGYPTIAN HIEROGLYPH-136A3;Lo;0;L;;;;;N;;;;;
+136A4;EGYPTIAN HIEROGLYPH-136A4;Lo;0;L;;;;;N;;;;;
+136A5;EGYPTIAN HIEROGLYPH-136A5;Lo;0;L;;;;;N;;;;;
+136A6;EGYPTIAN HIEROGLYPH-136A6;Lo;0;L;;;;;N;;;;;
+136A7;EGYPTIAN HIEROGLYPH-136A7;Lo;0;L;;;;;N;;;;;
+136A8;EGYPTIAN HIEROGLYPH-136A8;Lo;0;L;;;;;N;;;;;
+136A9;EGYPTIAN HIEROGLYPH-136A9;Lo;0;L;;;;;N;;;;;
+136AA;EGYPTIAN HIEROGLYPH-136AA;Lo;0;L;;;;;N;;;;;
+136AB;EGYPTIAN HIEROGLYPH-136AB;Lo;0;L;;;;;N;;;;;
+136AC;EGYPTIAN HIEROGLYPH-136AC;Lo;0;L;;;;;N;;;;;
+136AD;EGYPTIAN HIEROGLYPH-136AD;Lo;0;L;;;;;N;;;;;
+136AE;EGYPTIAN HIEROGLYPH-136AE;Lo;0;L;;;;;N;;;;;
+136AF;EGYPTIAN HIEROGLYPH-136AF;Lo;0;L;;;;;N;;;;;
+136B0;EGYPTIAN HIEROGLYPH-136B0;Lo;0;L;;;;;N;;;;;
+136B1;EGYPTIAN HIEROGLYPH-136B1;Lo;0;L;;;;;N;;;;;
+136B2;EGYPTIAN HIEROGLYPH-136B2;Lo;0;L;;;;;N;;;;;
+136B3;EGYPTIAN HIEROGLYPH-136B3;Lo;0;L;;;;;N;;;;;
+136B4;EGYPTIAN HIEROGLYPH-136B4;Lo;0;L;;;;;N;;;;;
+136B5;EGYPTIAN HIEROGLYPH-136B5;Lo;0;L;;;;;N;;;;;
+136B6;EGYPTIAN HIEROGLYPH-136B6;Lo;0;L;;;;;N;;;;;
+136B7;EGYPTIAN HIEROGLYPH-136B7;Lo;0;L;;;;;N;;;;;
+136B8;EGYPTIAN HIEROGLYPH-136B8;Lo;0;L;;;;;N;;;;;
+136B9;EGYPTIAN HIEROGLYPH-136B9;Lo;0;L;;;;;N;;;;;
+136BA;EGYPTIAN HIEROGLYPH-136BA;Lo;0;L;;;;;N;;;;;
+136BB;EGYPTIAN HIEROGLYPH-136BB;Lo;0;L;;;;;N;;;;;
+136BC;EGYPTIAN HIEROGLYPH-136BC;Lo;0;L;;;;;N;;;;;
+136BD;EGYPTIAN HIEROGLYPH-136BD;Lo;0;L;;;;;N;;;;;
+136BE;EGYPTIAN HIEROGLYPH-136BE;Lo;0;L;;;;;N;;;;;
+136BF;EGYPTIAN HIEROGLYPH-136BF;Lo;0;L;;;;;N;;;;;
+136C0;EGYPTIAN HIEROGLYPH-136C0;Lo;0;L;;;;;N;;;;;
+136C1;EGYPTIAN HIEROGLYPH-136C1;Lo;0;L;;;;;N;;;;;
+136C2;EGYPTIAN HIEROGLYPH-136C2;Lo;0;L;;;;;N;;;;;
+136C3;EGYPTIAN HIEROGLYPH-136C3;Lo;0;L;;;;;N;;;;;
+136C4;EGYPTIAN HIEROGLYPH-136C4;Lo;0;L;;;;;N;;;;;
+136C5;EGYPTIAN HIEROGLYPH-136C5;Lo;0;L;;;;;N;;;;;
+136C6;EGYPTIAN HIEROGLYPH-136C6;Lo;0;L;;;;;N;;;;;
+136C7;EGYPTIAN HIEROGLYPH-136C7;Lo;0;L;;;;;N;;;;;
+136C8;EGYPTIAN HIEROGLYPH-136C8;Lo;0;L;;;;;N;;;;;
+136C9;EGYPTIAN HIEROGLYPH-136C9;Lo;0;L;;;;;N;;;;;
+136CA;EGYPTIAN HIEROGLYPH-136CA;Lo;0;L;;;;;N;;;;;
+136CB;EGYPTIAN HIEROGLYPH-136CB;Lo;0;L;;;;;N;;;;;
+136CC;EGYPTIAN HIEROGLYPH-136CC;Lo;0;L;;;;;N;;;;;
+136CD;EGYPTIAN HIEROGLYPH-136CD;Lo;0;L;;;;;N;;;;;
+136CE;EGYPTIAN HIEROGLYPH-136CE;Lo;0;L;;;;;N;;;;;
+136CF;EGYPTIAN HIEROGLYPH-136CF;Lo;0;L;;;;;N;;;;;
+136D0;EGYPTIAN HIEROGLYPH-136D0;Lo;0;L;;;;;N;;;;;
+136D1;EGYPTIAN HIEROGLYPH-136D1;Lo;0;L;;;;;N;;;;;
+136D2;EGYPTIAN HIEROGLYPH-136D2;Lo;0;L;;;;;N;;;;;
+136D3;EGYPTIAN HIEROGLYPH-136D3;Lo;0;L;;;;;N;;;;;
+136D4;EGYPTIAN HIEROGLYPH-136D4;Lo;0;L;;;;;N;;;;;
+136D5;EGYPTIAN HIEROGLYPH-136D5;Lo;0;L;;;;;N;;;;;
+136D6;EGYPTIAN HIEROGLYPH-136D6;Lo;0;L;;;;;N;;;;;
+136D7;EGYPTIAN HIEROGLYPH-136D7;Lo;0;L;;;;;N;;;;;
+136D8;EGYPTIAN HIEROGLYPH-136D8;Lo;0;L;;;;;N;;;;;
+136D9;EGYPTIAN HIEROGLYPH-136D9;Lo;0;L;;;;;N;;;;;
+136DA;EGYPTIAN HIEROGLYPH-136DA;Lo;0;L;;;;;N;;;;;
+136DB;EGYPTIAN HIEROGLYPH-136DB;Lo;0;L;;;;;N;;;;;
+136DC;EGYPTIAN HIEROGLYPH-136DC;Lo;0;L;;;;;N;;;;;
+136DD;EGYPTIAN HIEROGLYPH-136DD;Lo;0;L;;;;;N;;;;;
+136DE;EGYPTIAN HIEROGLYPH-136DE;Lo;0;L;;;;;N;;;;;
+136DF;EGYPTIAN HIEROGLYPH-136DF;Lo;0;L;;;;;N;;;;;
+136E0;EGYPTIAN HIEROGLYPH-136E0;Lo;0;L;;;;;N;;;;;
+136E1;EGYPTIAN HIEROGLYPH-136E1;Lo;0;L;;;;;N;;;;;
+136E2;EGYPTIAN HIEROGLYPH-136E2;Lo;0;L;;;;;N;;;;;
+136E3;EGYPTIAN HIEROGLYPH-136E3;Lo;0;L;;;;;N;;;;;
+136E4;EGYPTIAN HIEROGLYPH-136E4;Lo;0;L;;;;;N;;;;;
+136E5;EGYPTIAN HIEROGLYPH-136E5;Lo;0;L;;;;;N;;;;;
+136E6;EGYPTIAN HIEROGLYPH-136E6;Lo;0;L;;;;;N;;;;;
+136E7;EGYPTIAN HIEROGLYPH-136E7;Lo;0;L;;;;;N;;;;;
+136E8;EGYPTIAN HIEROGLYPH-136E8;Lo;0;L;;;;;N;;;;;
+136E9;EGYPTIAN HIEROGLYPH-136E9;Lo;0;L;;;;;N;;;;;
+136EA;EGYPTIAN HIEROGLYPH-136EA;Lo;0;L;;;;;N;;;;;
+136EB;EGYPTIAN HIEROGLYPH-136EB;Lo;0;L;;;;;N;;;;;
+136EC;EGYPTIAN HIEROGLYPH-136EC;Lo;0;L;;;;;N;;;;;
+136ED;EGYPTIAN HIEROGLYPH-136ED;Lo;0;L;;;;;N;;;;;
+136EE;EGYPTIAN HIEROGLYPH-136EE;Lo;0;L;;;;;N;;;;;
+136EF;EGYPTIAN HIEROGLYPH-136EF;Lo;0;L;;;;;N;;;;;
+136F0;EGYPTIAN HIEROGLYPH-136F0;Lo;0;L;;;;;N;;;;;
+136F1;EGYPTIAN HIEROGLYPH-136F1;Lo;0;L;;;;;N;;;;;
+136F2;EGYPTIAN HIEROGLYPH-136F2;Lo;0;L;;;;;N;;;;;
+136F3;EGYPTIAN HIEROGLYPH-136F3;Lo;0;L;;;;;N;;;;;
+136F4;EGYPTIAN HIEROGLYPH-136F4;Lo;0;L;;;;;N;;;;;
+136F5;EGYPTIAN HIEROGLYPH-136F5;Lo;0;L;;;;;N;;;;;
+136F6;EGYPTIAN HIEROGLYPH-136F6;Lo;0;L;;;;;N;;;;;
+136F7;EGYPTIAN HIEROGLYPH-136F7;Lo;0;L;;;;;N;;;;;
+136F8;EGYPTIAN HIEROGLYPH-136F8;Lo;0;L;;;;;N;;;;;
+136F9;EGYPTIAN HIEROGLYPH-136F9;Lo;0;L;;;;;N;;;;;
+136FA;EGYPTIAN HIEROGLYPH-136FA;Lo;0;L;;;;;N;;;;;
+136FB;EGYPTIAN HIEROGLYPH-136FB;Lo;0;L;;;;;N;;;;;
+136FC;EGYPTIAN HIEROGLYPH-136FC;Lo;0;L;;;;;N;;;;;
+136FD;EGYPTIAN HIEROGLYPH-136FD;Lo;0;L;;;;;N;;;;;
+136FE;EGYPTIAN HIEROGLYPH-136FE;Lo;0;L;;;;;N;;;;;
+136FF;EGYPTIAN HIEROGLYPH-136FF;Lo;0;L;;;;;N;;;;;
+13700;EGYPTIAN HIEROGLYPH-13700;Lo;0;L;;;;;N;;;;;
+13701;EGYPTIAN HIEROGLYPH-13701;Lo;0;L;;;;;N;;;;;
+13702;EGYPTIAN HIEROGLYPH-13702;Lo;0;L;;;;;N;;;;;
+13703;EGYPTIAN HIEROGLYPH-13703;Lo;0;L;;;;;N;;;;;
+13704;EGYPTIAN HIEROGLYPH-13704;Lo;0;L;;;;;N;;;;;
+13705;EGYPTIAN HIEROGLYPH-13705;Lo;0;L;;;;;N;;;;;
+13706;EGYPTIAN HIEROGLYPH-13706;Lo;0;L;;;;;N;;;;;
+13707;EGYPTIAN HIEROGLYPH-13707;Lo;0;L;;;;;N;;;;;
+13708;EGYPTIAN HIEROGLYPH-13708;Lo;0;L;;;;;N;;;;;
+13709;EGYPTIAN HIEROGLYPH-13709;Lo;0;L;;;;;N;;;;;
+1370A;EGYPTIAN HIEROGLYPH-1370A;Lo;0;L;;;;;N;;;;;
+1370B;EGYPTIAN HIEROGLYPH-1370B;Lo;0;L;;;;;N;;;;;
+1370C;EGYPTIAN HIEROGLYPH-1370C;Lo;0;L;;;;;N;;;;;
+1370D;EGYPTIAN HIEROGLYPH-1370D;Lo;0;L;;;;;N;;;;;
+1370E;EGYPTIAN HIEROGLYPH-1370E;Lo;0;L;;;;;N;;;;;
+1370F;EGYPTIAN HIEROGLYPH-1370F;Lo;0;L;;;;;N;;;;;
+13710;EGYPTIAN HIEROGLYPH-13710;Lo;0;L;;;;;N;;;;;
+13711;EGYPTIAN HIEROGLYPH-13711;Lo;0;L;;;;;N;;;;;
+13712;EGYPTIAN HIEROGLYPH-13712;Lo;0;L;;;;;N;;;;;
+13713;EGYPTIAN HIEROGLYPH-13713;Lo;0;L;;;;;N;;;;;
+13714;EGYPTIAN HIEROGLYPH-13714;Lo;0;L;;;;;N;;;;;
+13715;EGYPTIAN HIEROGLYPH-13715;Lo;0;L;;;;;N;;;;;
+13716;EGYPTIAN HIEROGLYPH-13716;Lo;0;L;;;;;N;;;;;
+13717;EGYPTIAN HIEROGLYPH-13717;Lo;0;L;;;;;N;;;;;
+13718;EGYPTIAN HIEROGLYPH-13718;Lo;0;L;;;;;N;;;;;
+13719;EGYPTIAN HIEROGLYPH-13719;Lo;0;L;;;;;N;;;;;
+1371A;EGYPTIAN HIEROGLYPH-1371A;Lo;0;L;;;;;N;;;;;
+1371B;EGYPTIAN HIEROGLYPH-1371B;Lo;0;L;;;;;N;;;;;
+1371C;EGYPTIAN HIEROGLYPH-1371C;Lo;0;L;;;;;N;;;;;
+1371D;EGYPTIAN HIEROGLYPH-1371D;Lo;0;L;;;;;N;;;;;
+1371E;EGYPTIAN HIEROGLYPH-1371E;Lo;0;L;;;;;N;;;;;
+1371F;EGYPTIAN HIEROGLYPH-1371F;Lo;0;L;;;;;N;;;;;
+13720;EGYPTIAN HIEROGLYPH-13720;Lo;0;L;;;;;N;;;;;
+13721;EGYPTIAN HIEROGLYPH-13721;Lo;0;L;;;;;N;;;;;
+13722;EGYPTIAN HIEROGLYPH-13722;Lo;0;L;;;;;N;;;;;
+13723;EGYPTIAN HIEROGLYPH-13723;Lo;0;L;;;;;N;;;;;
+13724;EGYPTIAN HIEROGLYPH-13724;Lo;0;L;;;;;N;;;;;
+13725;EGYPTIAN HIEROGLYPH-13725;Lo;0;L;;;;;N;;;;;
+13726;EGYPTIAN HIEROGLYPH-13726;Lo;0;L;;;;;N;;;;;
+13727;EGYPTIAN HIEROGLYPH-13727;Lo;0;L;;;;;N;;;;;
+13728;EGYPTIAN HIEROGLYPH-13728;Lo;0;L;;;;;N;;;;;
+13729;EGYPTIAN HIEROGLYPH-13729;Lo;0;L;;;;;N;;;;;
+1372A;EGYPTIAN HIEROGLYPH-1372A;Lo;0;L;;;;;N;;;;;
+1372B;EGYPTIAN HIEROGLYPH-1372B;Lo;0;L;;;;;N;;;;;
+1372C;EGYPTIAN HIEROGLYPH-1372C;Lo;0;L;;;;;N;;;;;
+1372D;EGYPTIAN HIEROGLYPH-1372D;Lo;0;L;;;;;N;;;;;
+1372E;EGYPTIAN HIEROGLYPH-1372E;Lo;0;L;;;;;N;;;;;
+1372F;EGYPTIAN HIEROGLYPH-1372F;Lo;0;L;;;;;N;;;;;
+13730;EGYPTIAN HIEROGLYPH-13730;Lo;0;L;;;;;N;;;;;
+13731;EGYPTIAN HIEROGLYPH-13731;Lo;0;L;;;;;N;;;;;
+13732;EGYPTIAN HIEROGLYPH-13732;Lo;0;L;;;;;N;;;;;
+13733;EGYPTIAN HIEROGLYPH-13733;Lo;0;L;;;;;N;;;;;
+13734;EGYPTIAN HIEROGLYPH-13734;Lo;0;L;;;;;N;;;;;
+13735;EGYPTIAN HIEROGLYPH-13735;Lo;0;L;;;;;N;;;;;
+13736;EGYPTIAN HIEROGLYPH-13736;Lo;0;L;;;;;N;;;;;
+13737;EGYPTIAN HIEROGLYPH-13737;Lo;0;L;;;;;N;;;;;
+13738;EGYPTIAN HIEROGLYPH-13738;Lo;0;L;;;;;N;;;;;
+13739;EGYPTIAN HIEROGLYPH-13739;Lo;0;L;;;;;N;;;;;
+1373A;EGYPTIAN HIEROGLYPH-1373A;Lo;0;L;;;;;N;;;;;
+1373B;EGYPTIAN HIEROGLYPH-1373B;Lo;0;L;;;;;N;;;;;
+1373C;EGYPTIAN HIEROGLYPH-1373C;Lo;0;L;;;;;N;;;;;
+1373D;EGYPTIAN HIEROGLYPH-1373D;Lo;0;L;;;;;N;;;;;
+1373E;EGYPTIAN HIEROGLYPH-1373E;Lo;0;L;;;;;N;;;;;
+1373F;EGYPTIAN HIEROGLYPH-1373F;Lo;0;L;;;;;N;;;;;
+13740;EGYPTIAN HIEROGLYPH-13740;Lo;0;L;;;;;N;;;;;
+13741;EGYPTIAN HIEROGLYPH-13741;Lo;0;L;;;;;N;;;;;
+13742;EGYPTIAN HIEROGLYPH-13742;Lo;0;L;;;;;N;;;;;
+13743;EGYPTIAN HIEROGLYPH-13743;Lo;0;L;;;;;N;;;;;
+13744;EGYPTIAN HIEROGLYPH-13744;Lo;0;L;;;;;N;;;;;
+13745;EGYPTIAN HIEROGLYPH-13745;Lo;0;L;;;;;N;;;;;
+13746;EGYPTIAN HIEROGLYPH-13746;Lo;0;L;;;;;N;;;;;
+13747;EGYPTIAN HIEROGLYPH-13747;Lo;0;L;;;;;N;;;;;
+13748;EGYPTIAN HIEROGLYPH-13748;Lo;0;L;;;;;N;;;;;
+13749;EGYPTIAN HIEROGLYPH-13749;Lo;0;L;;;;;N;;;;;
+1374A;EGYPTIAN HIEROGLYPH-1374A;Lo;0;L;;;;;N;;;;;
+1374B;EGYPTIAN HIEROGLYPH-1374B;Lo;0;L;;;;;N;;;;;
+1374C;EGYPTIAN HIEROGLYPH-1374C;Lo;0;L;;;;;N;;;;;
+1374D;EGYPTIAN HIEROGLYPH-1374D;Lo;0;L;;;;;N;;;;;
+1374E;EGYPTIAN HIEROGLYPH-1374E;Lo;0;L;;;;;N;;;;;
+1374F;EGYPTIAN HIEROGLYPH-1374F;Lo;0;L;;;;;N;;;;;
+13750;EGYPTIAN HIEROGLYPH-13750;Lo;0;L;;;;;N;;;;;
+13751;EGYPTIAN HIEROGLYPH-13751;Lo;0;L;;;;;N;;;;;
+13752;EGYPTIAN HIEROGLYPH-13752;Lo;0;L;;;;;N;;;;;
+13753;EGYPTIAN HIEROGLYPH-13753;Lo;0;L;;;;;N;;;;;
+13754;EGYPTIAN HIEROGLYPH-13754;Lo;0;L;;;;;N;;;;;
+13755;EGYPTIAN HIEROGLYPH-13755;Lo;0;L;;;;;N;;;;;
+13756;EGYPTIAN HIEROGLYPH-13756;Lo;0;L;;;;;N;;;;;
+13757;EGYPTIAN HIEROGLYPH-13757;Lo;0;L;;;;;N;;;;;
+13758;EGYPTIAN HIEROGLYPH-13758;Lo;0;L;;;;;N;;;;;
+13759;EGYPTIAN HIEROGLYPH-13759;Lo;0;L;;;;;N;;;;;
+1375A;EGYPTIAN HIEROGLYPH-1375A;Lo;0;L;;;;;N;;;;;
+1375B;EGYPTIAN HIEROGLYPH-1375B;Lo;0;L;;;;;N;;;;;
+1375C;EGYPTIAN HIEROGLYPH-1375C;Lo;0;L;;;;;N;;;;;
+1375D;EGYPTIAN HIEROGLYPH-1375D;Lo;0;L;;;;;N;;;;;
+1375E;EGYPTIAN HIEROGLYPH-1375E;Lo;0;L;;;;;N;;;;;
+1375F;EGYPTIAN HIEROGLYPH-1375F;Lo;0;L;;;;;N;;;;;
+13760;EGYPTIAN HIEROGLYPH-13760;Lo;0;L;;;;;N;;;;;
+13761;EGYPTIAN HIEROGLYPH-13761;Lo;0;L;;;;;N;;;;;
+13762;EGYPTIAN HIEROGLYPH-13762;Lo;0;L;;;;;N;;;;;
+13763;EGYPTIAN HIEROGLYPH-13763;Lo;0;L;;;;;N;;;;;
+13764;EGYPTIAN HIEROGLYPH-13764;Lo;0;L;;;;;N;;;;;
+13765;EGYPTIAN HIEROGLYPH-13765;Lo;0;L;;;;;N;;;;;
+13766;EGYPTIAN HIEROGLYPH-13766;Lo;0;L;;;;;N;;;;;
+13767;EGYPTIAN HIEROGLYPH-13767;Lo;0;L;;;;;N;;;;;
+13768;EGYPTIAN HIEROGLYPH-13768;Lo;0;L;;;;;N;;;;;
+13769;EGYPTIAN HIEROGLYPH-13769;Lo;0;L;;;;;N;;;;;
+1376A;EGYPTIAN HIEROGLYPH-1376A;Lo;0;L;;;;;N;;;;;
+1376B;EGYPTIAN HIEROGLYPH-1376B;Lo;0;L;;;;;N;;;;;
+1376C;EGYPTIAN HIEROGLYPH-1376C;Lo;0;L;;;;;N;;;;;
+1376D;EGYPTIAN HIEROGLYPH-1376D;Lo;0;L;;;;;N;;;;;
+1376E;EGYPTIAN HIEROGLYPH-1376E;Lo;0;L;;;;;N;;;;;
+1376F;EGYPTIAN HIEROGLYPH-1376F;Lo;0;L;;;;;N;;;;;
+13770;EGYPTIAN HIEROGLYPH-13770;Lo;0;L;;;;;N;;;;;
+13771;EGYPTIAN HIEROGLYPH-13771;Lo;0;L;;;;;N;;;;;
+13772;EGYPTIAN HIEROGLYPH-13772;Lo;0;L;;;;;N;;;;;
+13773;EGYPTIAN HIEROGLYPH-13773;Lo;0;L;;;;;N;;;;;
+13774;EGYPTIAN HIEROGLYPH-13774;Lo;0;L;;;;;N;;;;;
+13775;EGYPTIAN HIEROGLYPH-13775;Lo;0;L;;;;;N;;;;;
+13776;EGYPTIAN HIEROGLYPH-13776;Lo;0;L;;;;;N;;;;;
+13777;EGYPTIAN HIEROGLYPH-13777;Lo;0;L;;;;;N;;;;;
+13778;EGYPTIAN HIEROGLYPH-13778;Lo;0;L;;;;;N;;;;;
+13779;EGYPTIAN HIEROGLYPH-13779;Lo;0;L;;;;;N;;;;;
+1377A;EGYPTIAN HIEROGLYPH-1377A;Lo;0;L;;;;;N;;;;;
+1377B;EGYPTIAN HIEROGLYPH-1377B;Lo;0;L;;;;;N;;;;;
+1377C;EGYPTIAN HIEROGLYPH-1377C;Lo;0;L;;;;;N;;;;;
+1377D;EGYPTIAN HIEROGLYPH-1377D;Lo;0;L;;;;;N;;;;;
+1377E;EGYPTIAN HIEROGLYPH-1377E;Lo;0;L;;;;;N;;;;;
+1377F;EGYPTIAN HIEROGLYPH-1377F;Lo;0;L;;;;;N;;;;;
+13780;EGYPTIAN HIEROGLYPH-13780;Lo;0;L;;;;;N;;;;;
+13781;EGYPTIAN HIEROGLYPH-13781;Lo;0;L;;;;;N;;;;;
+13782;EGYPTIAN HIEROGLYPH-13782;Lo;0;L;;;;;N;;;;;
+13783;EGYPTIAN HIEROGLYPH-13783;Lo;0;L;;;;;N;;;;;
+13784;EGYPTIAN HIEROGLYPH-13784;Lo;0;L;;;;;N;;;;;
+13785;EGYPTIAN HIEROGLYPH-13785;Lo;0;L;;;;;N;;;;;
+13786;EGYPTIAN HIEROGLYPH-13786;Lo;0;L;;;;;N;;;;;
+13787;EGYPTIAN HIEROGLYPH-13787;Lo;0;L;;;;;N;;;;;
+13788;EGYPTIAN HIEROGLYPH-13788;Lo;0;L;;;;;N;;;;;
+13789;EGYPTIAN HIEROGLYPH-13789;Lo;0;L;;;;;N;;;;;
+1378A;EGYPTIAN HIEROGLYPH-1378A;Lo;0;L;;;;;N;;;;;
+1378B;EGYPTIAN HIEROGLYPH-1378B;Lo;0;L;;;;;N;;;;;
+1378C;EGYPTIAN HIEROGLYPH-1378C;Lo;0;L;;;;;N;;;;;
+1378D;EGYPTIAN HIEROGLYPH-1378D;Lo;0;L;;;;;N;;;;;
+1378E;EGYPTIAN HIEROGLYPH-1378E;Lo;0;L;;;;;N;;;;;
+1378F;EGYPTIAN HIEROGLYPH-1378F;Lo;0;L;;;;;N;;;;;
+13790;EGYPTIAN HIEROGLYPH-13790;Lo;0;L;;;;;N;;;;;
+13791;EGYPTIAN HIEROGLYPH-13791;Lo;0;L;;;;;N;;;;;
+13792;EGYPTIAN HIEROGLYPH-13792;Lo;0;L;;;;;N;;;;;
+13793;EGYPTIAN HIEROGLYPH-13793;Lo;0;L;;;;;N;;;;;
+13794;EGYPTIAN HIEROGLYPH-13794;Lo;0;L;;;;;N;;;;;
+13795;EGYPTIAN HIEROGLYPH-13795;Lo;0;L;;;;;N;;;;;
+13796;EGYPTIAN HIEROGLYPH-13796;Lo;0;L;;;;;N;;;;;
+13797;EGYPTIAN HIEROGLYPH-13797;Lo;0;L;;;;;N;;;;;
+13798;EGYPTIAN HIEROGLYPH-13798;Lo;0;L;;;;;N;;;;;
+13799;EGYPTIAN HIEROGLYPH-13799;Lo;0;L;;;;;N;;;;;
+1379A;EGYPTIAN HIEROGLYPH-1379A;Lo;0;L;;;;;N;;;;;
+1379B;EGYPTIAN HIEROGLYPH-1379B;Lo;0;L;;;;;N;;;;;
+1379C;EGYPTIAN HIEROGLYPH-1379C;Lo;0;L;;;;;N;;;;;
+1379D;EGYPTIAN HIEROGLYPH-1379D;Lo;0;L;;;;;N;;;;;
+1379E;EGYPTIAN HIEROGLYPH-1379E;Lo;0;L;;;;;N;;;;;
+1379F;EGYPTIAN HIEROGLYPH-1379F;Lo;0;L;;;;;N;;;;;
+137A0;EGYPTIAN HIEROGLYPH-137A0;Lo;0;L;;;;;N;;;;;
+137A1;EGYPTIAN HIEROGLYPH-137A1;Lo;0;L;;;;;N;;;;;
+137A2;EGYPTIAN HIEROGLYPH-137A2;Lo;0;L;;;;;N;;;;;
+137A3;EGYPTIAN HIEROGLYPH-137A3;Lo;0;L;;;;;N;;;;;
+137A4;EGYPTIAN HIEROGLYPH-137A4;Lo;0;L;;;;;N;;;;;
+137A5;EGYPTIAN HIEROGLYPH-137A5;Lo;0;L;;;;;N;;;;;
+137A6;EGYPTIAN HIEROGLYPH-137A6;Lo;0;L;;;;;N;;;;;
+137A7;EGYPTIAN HIEROGLYPH-137A7;Lo;0;L;;;;;N;;;;;
+137A8;EGYPTIAN HIEROGLYPH-137A8;Lo;0;L;;;;;N;;;;;
+137A9;EGYPTIAN HIEROGLYPH-137A9;Lo;0;L;;;;;N;;;;;
+137AA;EGYPTIAN HIEROGLYPH-137AA;Lo;0;L;;;;;N;;;;;
+137AB;EGYPTIAN HIEROGLYPH-137AB;Lo;0;L;;;;;N;;;;;
+137AC;EGYPTIAN HIEROGLYPH-137AC;Lo;0;L;;;;;N;;;;;
+137AD;EGYPTIAN HIEROGLYPH-137AD;Lo;0;L;;;;;N;;;;;
+137AE;EGYPTIAN HIEROGLYPH-137AE;Lo;0;L;;;;;N;;;;;
+137AF;EGYPTIAN HIEROGLYPH-137AF;Lo;0;L;;;;;N;;;;;
+137B0;EGYPTIAN HIEROGLYPH-137B0;Lo;0;L;;;;;N;;;;;
+137B1;EGYPTIAN HIEROGLYPH-137B1;Lo;0;L;;;;;N;;;;;
+137B2;EGYPTIAN HIEROGLYPH-137B2;Lo;0;L;;;;;N;;;;;
+137B3;EGYPTIAN HIEROGLYPH-137B3;Lo;0;L;;;;;N;;;;;
+137B4;EGYPTIAN HIEROGLYPH-137B4;Lo;0;L;;;;;N;;;;;
+137B5;EGYPTIAN HIEROGLYPH-137B5;Lo;0;L;;;;;N;;;;;
+137B6;EGYPTIAN HIEROGLYPH-137B6;Lo;0;L;;;;;N;;;;;
+137B7;EGYPTIAN HIEROGLYPH-137B7;Lo;0;L;;;;;N;;;;;
+137B8;EGYPTIAN HIEROGLYPH-137B8;Lo;0;L;;;;;N;;;;;
+137B9;EGYPTIAN HIEROGLYPH-137B9;Lo;0;L;;;;;N;;;;;
+137BA;EGYPTIAN HIEROGLYPH-137BA;Lo;0;L;;;;;N;;;;;
+137BB;EGYPTIAN HIEROGLYPH-137BB;Lo;0;L;;;;;N;;;;;
+137BC;EGYPTIAN HIEROGLYPH-137BC;Lo;0;L;;;;;N;;;;;
+137BD;EGYPTIAN HIEROGLYPH-137BD;Lo;0;L;;;;;N;;;;;
+137BE;EGYPTIAN HIEROGLYPH-137BE;Lo;0;L;;;;;N;;;;;
+137BF;EGYPTIAN HIEROGLYPH-137BF;Lo;0;L;;;;;N;;;;;
+137C0;EGYPTIAN HIEROGLYPH-137C0;Lo;0;L;;;;;N;;;;;
+137C1;EGYPTIAN HIEROGLYPH-137C1;Lo;0;L;;;;;N;;;;;
+137C2;EGYPTIAN HIEROGLYPH-137C2;Lo;0;L;;;;;N;;;;;
+137C3;EGYPTIAN HIEROGLYPH-137C3;Lo;0;L;;;;;N;;;;;
+137C4;EGYPTIAN HIEROGLYPH-137C4;Lo;0;L;;;;;N;;;;;
+137C5;EGYPTIAN HIEROGLYPH-137C5;Lo;0;L;;;;;N;;;;;
+137C6;EGYPTIAN HIEROGLYPH-137C6;Lo;0;L;;;;;N;;;;;
+137C7;EGYPTIAN HIEROGLYPH-137C7;Lo;0;L;;;;;N;;;;;
+137C8;EGYPTIAN HIEROGLYPH-137C8;Lo;0;L;;;;;N;;;;;
+137C9;EGYPTIAN HIEROGLYPH-137C9;Lo;0;L;;;;;N;;;;;
+137CA;EGYPTIAN HIEROGLYPH-137CA;Lo;0;L;;;;;N;;;;;
+137CB;EGYPTIAN HIEROGLYPH-137CB;Lo;0;L;;;;;N;;;;;
+137CC;EGYPTIAN HIEROGLYPH-137CC;Lo;0;L;;;;;N;;;;;
+137CD;EGYPTIAN HIEROGLYPH-137CD;Lo;0;L;;;;;N;;;;;
+137CE;EGYPTIAN HIEROGLYPH-137CE;Lo;0;L;;;;;N;;;;;
+137CF;EGYPTIAN HIEROGLYPH-137CF;Lo;0;L;;;;;N;;;;;
+137D0;EGYPTIAN HIEROGLYPH-137D0;Lo;0;L;;;;;N;;;;;
+137D1;EGYPTIAN HIEROGLYPH-137D1;Lo;0;L;;;;;N;;;;;
+137D2;EGYPTIAN HIEROGLYPH-137D2;Lo;0;L;;;;;N;;;;;
+137D3;EGYPTIAN HIEROGLYPH-137D3;Lo;0;L;;;;;N;;;;;
+137D4;EGYPTIAN HIEROGLYPH-137D4;Lo;0;L;;;;;N;;;;;
+137D5;EGYPTIAN HIEROGLYPH-137D5;Lo;0;L;;;;;N;;;;;
+137D6;EGYPTIAN HIEROGLYPH-137D6;Lo;0;L;;;;;N;;;;;
+137D7;EGYPTIAN HIEROGLYPH-137D7;Lo;0;L;;;;;N;;;;;
+137D8;EGYPTIAN HIEROGLYPH-137D8;Lo;0;L;;;;;N;;;;;
+137D9;EGYPTIAN HIEROGLYPH-137D9;Lo;0;L;;;;;N;;;;;
+137DA;EGYPTIAN HIEROGLYPH-137DA;Lo;0;L;;;;;N;;;;;
+137DB;EGYPTIAN HIEROGLYPH-137DB;Lo;0;L;;;;;N;;;;;
+137DC;EGYPTIAN HIEROGLYPH-137DC;Lo;0;L;;;;;N;;;;;
+137DD;EGYPTIAN HIEROGLYPH-137DD;Lo;0;L;;;;;N;;;;;
+137DE;EGYPTIAN HIEROGLYPH-137DE;Lo;0;L;;;;;N;;;;;
+137DF;EGYPTIAN HIEROGLYPH-137DF;Lo;0;L;;;;;N;;;;;
+137E0;EGYPTIAN HIEROGLYPH-137E0;Lo;0;L;;;;;N;;;;;
+137E1;EGYPTIAN HIEROGLYPH-137E1;Lo;0;L;;;;;N;;;;;
+137E2;EGYPTIAN HIEROGLYPH-137E2;Lo;0;L;;;;;N;;;;;
+137E3;EGYPTIAN HIEROGLYPH-137E3;Lo;0;L;;;;;N;;;;;
+137E4;EGYPTIAN HIEROGLYPH-137E4;Lo;0;L;;;;;N;;;;;
+137E5;EGYPTIAN HIEROGLYPH-137E5;Lo;0;L;;;;;N;;;;;
+137E6;EGYPTIAN HIEROGLYPH-137E6;Lo;0;L;;;;;N;;;;;
+137E7;EGYPTIAN HIEROGLYPH-137E7;Lo;0;L;;;;;N;;;;;
+137E8;EGYPTIAN HIEROGLYPH-137E8;Lo;0;L;;;;;N;;;;;
+137E9;EGYPTIAN HIEROGLYPH-137E9;Lo;0;L;;;;;N;;;;;
+137EA;EGYPTIAN HIEROGLYPH-137EA;Lo;0;L;;;;;N;;;;;
+137EB;EGYPTIAN HIEROGLYPH-137EB;Lo;0;L;;;;;N;;;;;
+137EC;EGYPTIAN HIEROGLYPH-137EC;Lo;0;L;;;;;N;;;;;
+137ED;EGYPTIAN HIEROGLYPH-137ED;Lo;0;L;;;;;N;;;;;
+137EE;EGYPTIAN HIEROGLYPH-137EE;Lo;0;L;;;;;N;;;;;
+137EF;EGYPTIAN HIEROGLYPH-137EF;Lo;0;L;;;;;N;;;;;
+137F0;EGYPTIAN HIEROGLYPH-137F0;Lo;0;L;;;;;N;;;;;
+137F1;EGYPTIAN HIEROGLYPH-137F1;Lo;0;L;;;;;N;;;;;
+137F2;EGYPTIAN HIEROGLYPH-137F2;Lo;0;L;;;;;N;;;;;
+137F3;EGYPTIAN HIEROGLYPH-137F3;Lo;0;L;;;;;N;;;;;
+137F4;EGYPTIAN HIEROGLYPH-137F4;Lo;0;L;;;;;N;;;;;
+137F5;EGYPTIAN HIEROGLYPH-137F5;Lo;0;L;;;;;N;;;;;
+137F6;EGYPTIAN HIEROGLYPH-137F6;Lo;0;L;;;;;N;;;;;
+137F7;EGYPTIAN HIEROGLYPH-137F7;Lo;0;L;;;;;N;;;;;
+137F8;EGYPTIAN HIEROGLYPH-137F8;Lo;0;L;;;;;N;;;;;
+137F9;EGYPTIAN HIEROGLYPH-137F9;Lo;0;L;;;;;N;;;;;
+137FA;EGYPTIAN HIEROGLYPH-137FA;Lo;0;L;;;;;N;;;;;
+137FB;EGYPTIAN HIEROGLYPH-137FB;Lo;0;L;;;;;N;;;;;
+137FC;EGYPTIAN HIEROGLYPH-137FC;Lo;0;L;;;;;N;;;;;
+137FD;EGYPTIAN HIEROGLYPH-137FD;Lo;0;L;;;;;N;;;;;
+137FE;EGYPTIAN HIEROGLYPH-137FE;Lo;0;L;;;;;N;;;;;
+137FF;EGYPTIAN HIEROGLYPH-137FF;Lo;0;L;;;;;N;;;;;
+13800;EGYPTIAN HIEROGLYPH-13800;Lo;0;L;;;;;N;;;;;
+13801;EGYPTIAN HIEROGLYPH-13801;Lo;0;L;;;;;N;;;;;
+13802;EGYPTIAN HIEROGLYPH-13802;Lo;0;L;;;;;N;;;;;
+13803;EGYPTIAN HIEROGLYPH-13803;Lo;0;L;;;;;N;;;;;
+13804;EGYPTIAN HIEROGLYPH-13804;Lo;0;L;;;;;N;;;;;
+13805;EGYPTIAN HIEROGLYPH-13805;Lo;0;L;;;;;N;;;;;
+13806;EGYPTIAN HIEROGLYPH-13806;Lo;0;L;;;;;N;;;;;
+13807;EGYPTIAN HIEROGLYPH-13807;Lo;0;L;;;;;N;;;;;
+13808;EGYPTIAN HIEROGLYPH-13808;Lo;0;L;;;;;N;;;;;
+13809;EGYPTIAN HIEROGLYPH-13809;Lo;0;L;;;;;N;;;;;
+1380A;EGYPTIAN HIEROGLYPH-1380A;Lo;0;L;;;;;N;;;;;
+1380B;EGYPTIAN HIEROGLYPH-1380B;Lo;0;L;;;;;N;;;;;
+1380C;EGYPTIAN HIEROGLYPH-1380C;Lo;0;L;;;;;N;;;;;
+1380D;EGYPTIAN HIEROGLYPH-1380D;Lo;0;L;;;;;N;;;;;
+1380E;EGYPTIAN HIEROGLYPH-1380E;Lo;0;L;;;;;N;;;;;
+1380F;EGYPTIAN HIEROGLYPH-1380F;Lo;0;L;;;;;N;;;;;
+13810;EGYPTIAN HIEROGLYPH-13810;Lo;0;L;;;;;N;;;;;
+13811;EGYPTIAN HIEROGLYPH-13811;Lo;0;L;;;;;N;;;;;
+13812;EGYPTIAN HIEROGLYPH-13812;Lo;0;L;;;;;N;;;;;
+13813;EGYPTIAN HIEROGLYPH-13813;Lo;0;L;;;;;N;;;;;
+13814;EGYPTIAN HIEROGLYPH-13814;Lo;0;L;;;;;N;;;;;
+13815;EGYPTIAN HIEROGLYPH-13815;Lo;0;L;;;;;N;;;;;
+13816;EGYPTIAN HIEROGLYPH-13816;Lo;0;L;;;;;N;;;;;
+13817;EGYPTIAN HIEROGLYPH-13817;Lo;0;L;;;;;N;;;;;
+13818;EGYPTIAN HIEROGLYPH-13818;Lo;0;L;;;;;N;;;;;
+13819;EGYPTIAN HIEROGLYPH-13819;Lo;0;L;;;;;N;;;;;
+1381A;EGYPTIAN HIEROGLYPH-1381A;Lo;0;L;;;;;N;;;;;
+1381B;EGYPTIAN HIEROGLYPH-1381B;Lo;0;L;;;;;N;;;;;
+1381C;EGYPTIAN HIEROGLYPH-1381C;Lo;0;L;;;;;N;;;;;
+1381D;EGYPTIAN HIEROGLYPH-1381D;Lo;0;L;;;;;N;;;;;
+1381E;EGYPTIAN HIEROGLYPH-1381E;Lo;0;L;;;;;N;;;;;
+1381F;EGYPTIAN HIEROGLYPH-1381F;Lo;0;L;;;;;N;;;;;
+13820;EGYPTIAN HIEROGLYPH-13820;Lo;0;L;;;;;N;;;;;
+13821;EGYPTIAN HIEROGLYPH-13821;Lo;0;L;;;;;N;;;;;
+13822;EGYPTIAN HIEROGLYPH-13822;Lo;0;L;;;;;N;;;;;
+13823;EGYPTIAN HIEROGLYPH-13823;Lo;0;L;;;;;N;;;;;
+13824;EGYPTIAN HIEROGLYPH-13824;Lo;0;L;;;;;N;;;;;
+13825;EGYPTIAN HIEROGLYPH-13825;Lo;0;L;;;;;N;;;;;
+13826;EGYPTIAN HIEROGLYPH-13826;Lo;0;L;;;;;N;;;;;
+13827;EGYPTIAN HIEROGLYPH-13827;Lo;0;L;;;;;N;;;;;
+13828;EGYPTIAN HIEROGLYPH-13828;Lo;0;L;;;;;N;;;;;
+13829;EGYPTIAN HIEROGLYPH-13829;Lo;0;L;;;;;N;;;;;
+1382A;EGYPTIAN HIEROGLYPH-1382A;Lo;0;L;;;;;N;;;;;
+1382B;EGYPTIAN HIEROGLYPH-1382B;Lo;0;L;;;;;N;;;;;
+1382C;EGYPTIAN HIEROGLYPH-1382C;Lo;0;L;;;;;N;;;;;
+1382D;EGYPTIAN HIEROGLYPH-1382D;Lo;0;L;;;;;N;;;;;
+1382E;EGYPTIAN HIEROGLYPH-1382E;Lo;0;L;;;;;N;;;;;
+1382F;EGYPTIAN HIEROGLYPH-1382F;Lo;0;L;;;;;N;;;;;
+13830;EGYPTIAN HIEROGLYPH-13830;Lo;0;L;;;;;N;;;;;
+13831;EGYPTIAN HIEROGLYPH-13831;Lo;0;L;;;;;N;;;;;
+13832;EGYPTIAN HIEROGLYPH-13832;Lo;0;L;;;;;N;;;;;
+13833;EGYPTIAN HIEROGLYPH-13833;Lo;0;L;;;;;N;;;;;
+13834;EGYPTIAN HIEROGLYPH-13834;Lo;0;L;;;;;N;;;;;
+13835;EGYPTIAN HIEROGLYPH-13835;Lo;0;L;;;;;N;;;;;
+13836;EGYPTIAN HIEROGLYPH-13836;Lo;0;L;;;;;N;;;;;
+13837;EGYPTIAN HIEROGLYPH-13837;Lo;0;L;;;;;N;;;;;
+13838;EGYPTIAN HIEROGLYPH-13838;Lo;0;L;;;;;N;;;;;
+13839;EGYPTIAN HIEROGLYPH-13839;Lo;0;L;;;;;N;;;;;
+1383A;EGYPTIAN HIEROGLYPH-1383A;Lo;0;L;;;;;N;;;;;
+1383B;EGYPTIAN HIEROGLYPH-1383B;Lo;0;L;;;;;N;;;;;
+1383C;EGYPTIAN HIEROGLYPH-1383C;Lo;0;L;;;;;N;;;;;
+1383D;EGYPTIAN HIEROGLYPH-1383D;Lo;0;L;;;;;N;;;;;
+1383E;EGYPTIAN HIEROGLYPH-1383E;Lo;0;L;;;;;N;;;;;
+1383F;EGYPTIAN HIEROGLYPH-1383F;Lo;0;L;;;;;N;;;;;
+13840;EGYPTIAN HIEROGLYPH-13840;Lo;0;L;;;;;N;;;;;
+13841;EGYPTIAN HIEROGLYPH-13841;Lo;0;L;;;;;N;;;;;
+13842;EGYPTIAN HIEROGLYPH-13842;Lo;0;L;;;;;N;;;;;
+13843;EGYPTIAN HIEROGLYPH-13843;Lo;0;L;;;;;N;;;;;
+13844;EGYPTIAN HIEROGLYPH-13844;Lo;0;L;;;;;N;;;;;
+13845;EGYPTIAN HIEROGLYPH-13845;Lo;0;L;;;;;N;;;;;
+13846;EGYPTIAN HIEROGLYPH-13846;Lo;0;L;;;;;N;;;;;
+13847;EGYPTIAN HIEROGLYPH-13847;Lo;0;L;;;;;N;;;;;
+13848;EGYPTIAN HIEROGLYPH-13848;Lo;0;L;;;;;N;;;;;
+13849;EGYPTIAN HIEROGLYPH-13849;Lo;0;L;;;;;N;;;;;
+1384A;EGYPTIAN HIEROGLYPH-1384A;Lo;0;L;;;;;N;;;;;
+1384B;EGYPTIAN HIEROGLYPH-1384B;Lo;0;L;;;;;N;;;;;
+1384C;EGYPTIAN HIEROGLYPH-1384C;Lo;0;L;;;;;N;;;;;
+1384D;EGYPTIAN HIEROGLYPH-1384D;Lo;0;L;;;;;N;;;;;
+1384E;EGYPTIAN HIEROGLYPH-1384E;Lo;0;L;;;;;N;;;;;
+1384F;EGYPTIAN HIEROGLYPH-1384F;Lo;0;L;;;;;N;;;;;
+13850;EGYPTIAN HIEROGLYPH-13850;Lo;0;L;;;;;N;;;;;
+13851;EGYPTIAN HIEROGLYPH-13851;Lo;0;L;;;;;N;;;;;
+13852;EGYPTIAN HIEROGLYPH-13852;Lo;0;L;;;;;N;;;;;
+13853;EGYPTIAN HIEROGLYPH-13853;Lo;0;L;;;;;N;;;;;
+13854;EGYPTIAN HIEROGLYPH-13854;Lo;0;L;;;;;N;;;;;
+13855;EGYPTIAN HIEROGLYPH-13855;Lo;0;L;;;;;N;;;;;
+13856;EGYPTIAN HIEROGLYPH-13856;Lo;0;L;;;;;N;;;;;
+13857;EGYPTIAN HIEROGLYPH-13857;Lo;0;L;;;;;N;;;;;
+13858;EGYPTIAN HIEROGLYPH-13858;Lo;0;L;;;;;N;;;;;
+13859;EGYPTIAN HIEROGLYPH-13859;Lo;0;L;;;;;N;;;;;
+1385A;EGYPTIAN HIEROGLYPH-1385A;Lo;0;L;;;;;N;;;;;
+1385B;EGYPTIAN HIEROGLYPH-1385B;Lo;0;L;;;;;N;;;;;
+1385C;EGYPTIAN HIEROGLYPH-1385C;Lo;0;L;;;;;N;;;;;
+1385D;EGYPTIAN HIEROGLYPH-1385D;Lo;0;L;;;;;N;;;;;
+1385E;EGYPTIAN HIEROGLYPH-1385E;Lo;0;L;;;;;N;;;;;
+1385F;EGYPTIAN HIEROGLYPH-1385F;Lo;0;L;;;;;N;;;;;
+13860;EGYPTIAN HIEROGLYPH-13860;Lo;0;L;;;;;N;;;;;
+13861;EGYPTIAN HIEROGLYPH-13861;Lo;0;L;;;;;N;;;;;
+13862;EGYPTIAN HIEROGLYPH-13862;Lo;0;L;;;;;N;;;;;
+13863;EGYPTIAN HIEROGLYPH-13863;Lo;0;L;;;;;N;;;;;
+13864;EGYPTIAN HIEROGLYPH-13864;Lo;0;L;;;;;N;;;;;
+13865;EGYPTIAN HIEROGLYPH-13865;Lo;0;L;;;;;N;;;;;
+13866;EGYPTIAN HIEROGLYPH-13866;Lo;0;L;;;;;N;;;;;
+13867;EGYPTIAN HIEROGLYPH-13867;Lo;0;L;;;;;N;;;;;
+13868;EGYPTIAN HIEROGLYPH-13868;Lo;0;L;;;;;N;;;;;
+13869;EGYPTIAN HIEROGLYPH-13869;Lo;0;L;;;;;N;;;;;
+1386A;EGYPTIAN HIEROGLYPH-1386A;Lo;0;L;;;;;N;;;;;
+1386B;EGYPTIAN HIEROGLYPH-1386B;Lo;0;L;;;;;N;;;;;
+1386C;EGYPTIAN HIEROGLYPH-1386C;Lo;0;L;;;;;N;;;;;
+1386D;EGYPTIAN HIEROGLYPH-1386D;Lo;0;L;;;;;N;;;;;
+1386E;EGYPTIAN HIEROGLYPH-1386E;Lo;0;L;;;;;N;;;;;
+1386F;EGYPTIAN HIEROGLYPH-1386F;Lo;0;L;;;;;N;;;;;
+13870;EGYPTIAN HIEROGLYPH-13870;Lo;0;L;;;;;N;;;;;
+13871;EGYPTIAN HIEROGLYPH-13871;Lo;0;L;;;;;N;;;;;
+13872;EGYPTIAN HIEROGLYPH-13872;Lo;0;L;;;;;N;;;;;
+13873;EGYPTIAN HIEROGLYPH-13873;Lo;0;L;;;;;N;;;;;
+13874;EGYPTIAN HIEROGLYPH-13874;Lo;0;L;;;;;N;;;;;
+13875;EGYPTIAN HIEROGLYPH-13875;Lo;0;L;;;;;N;;;;;
+13876;EGYPTIAN HIEROGLYPH-13876;Lo;0;L;;;;;N;;;;;
+13877;EGYPTIAN HIEROGLYPH-13877;Lo;0;L;;;;;N;;;;;
+13878;EGYPTIAN HIEROGLYPH-13878;Lo;0;L;;;;;N;;;;;
+13879;EGYPTIAN HIEROGLYPH-13879;Lo;0;L;;;;;N;;;;;
+1387A;EGYPTIAN HIEROGLYPH-1387A;Lo;0;L;;;;;N;;;;;
+1387B;EGYPTIAN HIEROGLYPH-1387B;Lo;0;L;;;;;N;;;;;
+1387C;EGYPTIAN HIEROGLYPH-1387C;Lo;0;L;;;;;N;;;;;
+1387D;EGYPTIAN HIEROGLYPH-1387D;Lo;0;L;;;;;N;;;;;
+1387E;EGYPTIAN HIEROGLYPH-1387E;Lo;0;L;;;;;N;;;;;
+1387F;EGYPTIAN HIEROGLYPH-1387F;Lo;0;L;;;;;N;;;;;
+13880;EGYPTIAN HIEROGLYPH-13880;Lo;0;L;;;;;N;;;;;
+13881;EGYPTIAN HIEROGLYPH-13881;Lo;0;L;;;;;N;;;;;
+13882;EGYPTIAN HIEROGLYPH-13882;Lo;0;L;;;;;N;;;;;
+13883;EGYPTIAN HIEROGLYPH-13883;Lo;0;L;;;;;N;;;;;
+13884;EGYPTIAN HIEROGLYPH-13884;Lo;0;L;;;;;N;;;;;
+13885;EGYPTIAN HIEROGLYPH-13885;Lo;0;L;;;;;N;;;;;
+13886;EGYPTIAN HIEROGLYPH-13886;Lo;0;L;;;;;N;;;;;
+13887;EGYPTIAN HIEROGLYPH-13887;Lo;0;L;;;;;N;;;;;
+13888;EGYPTIAN HIEROGLYPH-13888;Lo;0;L;;;;;N;;;;;
+13889;EGYPTIAN HIEROGLYPH-13889;Lo;0;L;;;;;N;;;;;
+1388A;EGYPTIAN HIEROGLYPH-1388A;Lo;0;L;;;;;N;;;;;
+1388B;EGYPTIAN HIEROGLYPH-1388B;Lo;0;L;;;;;N;;;;;
+1388C;EGYPTIAN HIEROGLYPH-1388C;Lo;0;L;;;;;N;;;;;
+1388D;EGYPTIAN HIEROGLYPH-1388D;Lo;0;L;;;;;N;;;;;
+1388E;EGYPTIAN HIEROGLYPH-1388E;Lo;0;L;;;;;N;;;;;
+1388F;EGYPTIAN HIEROGLYPH-1388F;Lo;0;L;;;;;N;;;;;
+13890;EGYPTIAN HIEROGLYPH-13890;Lo;0;L;;;;;N;;;;;
+13891;EGYPTIAN HIEROGLYPH-13891;Lo;0;L;;;;;N;;;;;
+13892;EGYPTIAN HIEROGLYPH-13892;Lo;0;L;;;;;N;;;;;
+13893;EGYPTIAN HIEROGLYPH-13893;Lo;0;L;;;;;N;;;;;
+13894;EGYPTIAN HIEROGLYPH-13894;Lo;0;L;;;;;N;;;;;
+13895;EGYPTIAN HIEROGLYPH-13895;Lo;0;L;;;;;N;;;;;
+13896;EGYPTIAN HIEROGLYPH-13896;Lo;0;L;;;;;N;;;;;
+13897;EGYPTIAN HIEROGLYPH-13897;Lo;0;L;;;;;N;;;;;
+13898;EGYPTIAN HIEROGLYPH-13898;Lo;0;L;;;;;N;;;;;
+13899;EGYPTIAN HIEROGLYPH-13899;Lo;0;L;;;;;N;;;;;
+1389A;EGYPTIAN HIEROGLYPH-1389A;Lo;0;L;;;;;N;;;;;
+1389B;EGYPTIAN HIEROGLYPH-1389B;Lo;0;L;;;;;N;;;;;
+1389C;EGYPTIAN HIEROGLYPH-1389C;Lo;0;L;;;;;N;;;;;
+1389D;EGYPTIAN HIEROGLYPH-1389D;Lo;0;L;;;;;N;;;;;
+1389E;EGYPTIAN HIEROGLYPH-1389E;Lo;0;L;;;;;N;;;;;
+1389F;EGYPTIAN HIEROGLYPH-1389F;Lo;0;L;;;;;N;;;;;
+138A0;EGYPTIAN HIEROGLYPH-138A0;Lo;0;L;;;;;N;;;;;
+138A1;EGYPTIAN HIEROGLYPH-138A1;Lo;0;L;;;;;N;;;;;
+138A2;EGYPTIAN HIEROGLYPH-138A2;Lo;0;L;;;;;N;;;;;
+138A3;EGYPTIAN HIEROGLYPH-138A3;Lo;0;L;;;;;N;;;;;
+138A4;EGYPTIAN HIEROGLYPH-138A4;Lo;0;L;;;;;N;;;;;
+138A5;EGYPTIAN HIEROGLYPH-138A5;Lo;0;L;;;;;N;;;;;
+138A6;EGYPTIAN HIEROGLYPH-138A6;Lo;0;L;;;;;N;;;;;
+138A7;EGYPTIAN HIEROGLYPH-138A7;Lo;0;L;;;;;N;;;;;
+138A8;EGYPTIAN HIEROGLYPH-138A8;Lo;0;L;;;;;N;;;;;
+138A9;EGYPTIAN HIEROGLYPH-138A9;Lo;0;L;;;;;N;;;;;
+138AA;EGYPTIAN HIEROGLYPH-138AA;Lo;0;L;;;;;N;;;;;
+138AB;EGYPTIAN HIEROGLYPH-138AB;Lo;0;L;;;;;N;;;;;
+138AC;EGYPTIAN HIEROGLYPH-138AC;Lo;0;L;;;;;N;;;;;
+138AD;EGYPTIAN HIEROGLYPH-138AD;Lo;0;L;;;;;N;;;;;
+138AE;EGYPTIAN HIEROGLYPH-138AE;Lo;0;L;;;;;N;;;;;
+138AF;EGYPTIAN HIEROGLYPH-138AF;Lo;0;L;;;;;N;;;;;
+138B0;EGYPTIAN HIEROGLYPH-138B0;Lo;0;L;;;;;N;;;;;
+138B1;EGYPTIAN HIEROGLYPH-138B1;Lo;0;L;;;;;N;;;;;
+138B2;EGYPTIAN HIEROGLYPH-138B2;Lo;0;L;;;;;N;;;;;
+138B3;EGYPTIAN HIEROGLYPH-138B3;Lo;0;L;;;;;N;;;;;
+138B4;EGYPTIAN HIEROGLYPH-138B4;Lo;0;L;;;;;N;;;;;
+138B5;EGYPTIAN HIEROGLYPH-138B5;Lo;0;L;;;;;N;;;;;
+138B6;EGYPTIAN HIEROGLYPH-138B6;Lo;0;L;;;;;N;;;;;
+138B7;EGYPTIAN HIEROGLYPH-138B7;Lo;0;L;;;;;N;;;;;
+138B8;EGYPTIAN HIEROGLYPH-138B8;Lo;0;L;;;;;N;;;;;
+138B9;EGYPTIAN HIEROGLYPH-138B9;Lo;0;L;;;;;N;;;;;
+138BA;EGYPTIAN HIEROGLYPH-138BA;Lo;0;L;;;;;N;;;;;
+138BB;EGYPTIAN HIEROGLYPH-138BB;Lo;0;L;;;;;N;;;;;
+138BC;EGYPTIAN HIEROGLYPH-138BC;Lo;0;L;;;;;N;;;;;
+138BD;EGYPTIAN HIEROGLYPH-138BD;Lo;0;L;;;;;N;;;;;
+138BE;EGYPTIAN HIEROGLYPH-138BE;Lo;0;L;;;;;N;;;;;
+138BF;EGYPTIAN HIEROGLYPH-138BF;Lo;0;L;;;;;N;;;;;
+138C0;EGYPTIAN HIEROGLYPH-138C0;Lo;0;L;;;;;N;;;;;
+138C1;EGYPTIAN HIEROGLYPH-138C1;Lo;0;L;;;;;N;;;;;
+138C2;EGYPTIAN HIEROGLYPH-138C2;Lo;0;L;;;;;N;;;;;
+138C3;EGYPTIAN HIEROGLYPH-138C3;Lo;0;L;;;;;N;;;;;
+138C4;EGYPTIAN HIEROGLYPH-138C4;Lo;0;L;;;;;N;;;;;
+138C5;EGYPTIAN HIEROGLYPH-138C5;Lo;0;L;;;;;N;;;;;
+138C6;EGYPTIAN HIEROGLYPH-138C6;Lo;0;L;;;;;N;;;;;
+138C7;EGYPTIAN HIEROGLYPH-138C7;Lo;0;L;;;;;N;;;;;
+138C8;EGYPTIAN HIEROGLYPH-138C8;Lo;0;L;;;;;N;;;;;
+138C9;EGYPTIAN HIEROGLYPH-138C9;Lo;0;L;;;;;N;;;;;
+138CA;EGYPTIAN HIEROGLYPH-138CA;Lo;0;L;;;;;N;;;;;
+138CB;EGYPTIAN HIEROGLYPH-138CB;Lo;0;L;;;;;N;;;;;
+138CC;EGYPTIAN HIEROGLYPH-138CC;Lo;0;L;;;;;N;;;;;
+138CD;EGYPTIAN HIEROGLYPH-138CD;Lo;0;L;;;;;N;;;;;
+138CE;EGYPTIAN HIEROGLYPH-138CE;Lo;0;L;;;;;N;;;;;
+138CF;EGYPTIAN HIEROGLYPH-138CF;Lo;0;L;;;;;N;;;;;
+138D0;EGYPTIAN HIEROGLYPH-138D0;Lo;0;L;;;;;N;;;;;
+138D1;EGYPTIAN HIEROGLYPH-138D1;Lo;0;L;;;;;N;;;;;
+138D2;EGYPTIAN HIEROGLYPH-138D2;Lo;0;L;;;;;N;;;;;
+138D3;EGYPTIAN HIEROGLYPH-138D3;Lo;0;L;;;;;N;;;;;
+138D4;EGYPTIAN HIEROGLYPH-138D4;Lo;0;L;;;;;N;;;;;
+138D5;EGYPTIAN HIEROGLYPH-138D5;Lo;0;L;;;;;N;;;;;
+138D6;EGYPTIAN HIEROGLYPH-138D6;Lo;0;L;;;;;N;;;;;
+138D7;EGYPTIAN HIEROGLYPH-138D7;Lo;0;L;;;;;N;;;;;
+138D8;EGYPTIAN HIEROGLYPH-138D8;Lo;0;L;;;;;N;;;;;
+138D9;EGYPTIAN HIEROGLYPH-138D9;Lo;0;L;;;;;N;;;;;
+138DA;EGYPTIAN HIEROGLYPH-138DA;Lo;0;L;;;;;N;;;;;
+138DB;EGYPTIAN HIEROGLYPH-138DB;Lo;0;L;;;;;N;;;;;
+138DC;EGYPTIAN HIEROGLYPH-138DC;Lo;0;L;;;;;N;;;;;
+138DD;EGYPTIAN HIEROGLYPH-138DD;Lo;0;L;;;;;N;;;;;
+138DE;EGYPTIAN HIEROGLYPH-138DE;Lo;0;L;;;;;N;;;;;
+138DF;EGYPTIAN HIEROGLYPH-138DF;Lo;0;L;;;;;N;;;;;
+138E0;EGYPTIAN HIEROGLYPH-138E0;Lo;0;L;;;;;N;;;;;
+138E1;EGYPTIAN HIEROGLYPH-138E1;Lo;0;L;;;;;N;;;;;
+138E2;EGYPTIAN HIEROGLYPH-138E2;Lo;0;L;;;;;N;;;;;
+138E3;EGYPTIAN HIEROGLYPH-138E3;Lo;0;L;;;;;N;;;;;
+138E4;EGYPTIAN HIEROGLYPH-138E4;Lo;0;L;;;;;N;;;;;
+138E5;EGYPTIAN HIEROGLYPH-138E5;Lo;0;L;;;;;N;;;;;
+138E6;EGYPTIAN HIEROGLYPH-138E6;Lo;0;L;;;;;N;;;;;
+138E7;EGYPTIAN HIEROGLYPH-138E7;Lo;0;L;;;;;N;;;;;
+138E8;EGYPTIAN HIEROGLYPH-138E8;Lo;0;L;;;;;N;;;;;
+138E9;EGYPTIAN HIEROGLYPH-138E9;Lo;0;L;;;;;N;;;;;
+138EA;EGYPTIAN HIEROGLYPH-138EA;Lo;0;L;;;;;N;;;;;
+138EB;EGYPTIAN HIEROGLYPH-138EB;Lo;0;L;;;;;N;;;;;
+138EC;EGYPTIAN HIEROGLYPH-138EC;Lo;0;L;;;;;N;;;;;
+138ED;EGYPTIAN HIEROGLYPH-138ED;Lo;0;L;;;;;N;;;;;
+138EE;EGYPTIAN HIEROGLYPH-138EE;Lo;0;L;;;;;N;;;;;
+138EF;EGYPTIAN HIEROGLYPH-138EF;Lo;0;L;;;;;N;;;;;
+138F0;EGYPTIAN HIEROGLYPH-138F0;Lo;0;L;;;;;N;;;;;
+138F1;EGYPTIAN HIEROGLYPH-138F1;Lo;0;L;;;;;N;;;;;
+138F2;EGYPTIAN HIEROGLYPH-138F2;Lo;0;L;;;;;N;;;;;
+138F3;EGYPTIAN HIEROGLYPH-138F3;Lo;0;L;;;;;N;;;;;
+138F4;EGYPTIAN HIEROGLYPH-138F4;Lo;0;L;;;;;N;;;;;
+138F5;EGYPTIAN HIEROGLYPH-138F5;Lo;0;L;;;;;N;;;;;
+138F6;EGYPTIAN HIEROGLYPH-138F6;Lo;0;L;;;;;N;;;;;
+138F7;EGYPTIAN HIEROGLYPH-138F7;Lo;0;L;;;;;N;;;;;
+138F8;EGYPTIAN HIEROGLYPH-138F8;Lo;0;L;;;;;N;;;;;
+138F9;EGYPTIAN HIEROGLYPH-138F9;Lo;0;L;;;;;N;;;;;
+138FA;EGYPTIAN HIEROGLYPH-138FA;Lo;0;L;;;;;N;;;;;
+138FB;EGYPTIAN HIEROGLYPH-138FB;Lo;0;L;;;;;N;;;;;
+138FC;EGYPTIAN HIEROGLYPH-138FC;Lo;0;L;;;;;N;;;;;
+138FD;EGYPTIAN HIEROGLYPH-138FD;Lo;0;L;;;;;N;;;;;
+138FE;EGYPTIAN HIEROGLYPH-138FE;Lo;0;L;;;;;N;;;;;
+138FF;EGYPTIAN HIEROGLYPH-138FF;Lo;0;L;;;;;N;;;;;
+13900;EGYPTIAN HIEROGLYPH-13900;Lo;0;L;;;;;N;;;;;
+13901;EGYPTIAN HIEROGLYPH-13901;Lo;0;L;;;;;N;;;;;
+13902;EGYPTIAN HIEROGLYPH-13902;Lo;0;L;;;;;N;;;;;
+13903;EGYPTIAN HIEROGLYPH-13903;Lo;0;L;;;;;N;;;;;
+13904;EGYPTIAN HIEROGLYPH-13904;Lo;0;L;;;;;N;;;;;
+13905;EGYPTIAN HIEROGLYPH-13905;Lo;0;L;;;;;N;;;;;
+13906;EGYPTIAN HIEROGLYPH-13906;Lo;0;L;;;;;N;;;;;
+13907;EGYPTIAN HIEROGLYPH-13907;Lo;0;L;;;;;N;;;;;
+13908;EGYPTIAN HIEROGLYPH-13908;Lo;0;L;;;;;N;;;;;
+13909;EGYPTIAN HIEROGLYPH-13909;Lo;0;L;;;;;N;;;;;
+1390A;EGYPTIAN HIEROGLYPH-1390A;Lo;0;L;;;;;N;;;;;
+1390B;EGYPTIAN HIEROGLYPH-1390B;Lo;0;L;;;;;N;;;;;
+1390C;EGYPTIAN HIEROGLYPH-1390C;Lo;0;L;;;;;N;;;;;
+1390D;EGYPTIAN HIEROGLYPH-1390D;Lo;0;L;;;;;N;;;;;
+1390E;EGYPTIAN HIEROGLYPH-1390E;Lo;0;L;;;;;N;;;;;
+1390F;EGYPTIAN HIEROGLYPH-1390F;Lo;0;L;;;;;N;;;;;
+13910;EGYPTIAN HIEROGLYPH-13910;Lo;0;L;;;;;N;;;;;
+13911;EGYPTIAN HIEROGLYPH-13911;Lo;0;L;;;;;N;;;;;
+13912;EGYPTIAN HIEROGLYPH-13912;Lo;0;L;;;;;N;;;;;
+13913;EGYPTIAN HIEROGLYPH-13913;Lo;0;L;;;;;N;;;;;
+13914;EGYPTIAN HIEROGLYPH-13914;Lo;0;L;;;;;N;;;;;
+13915;EGYPTIAN HIEROGLYPH-13915;Lo;0;L;;;;;N;;;;;
+13916;EGYPTIAN HIEROGLYPH-13916;Lo;0;L;;;;;N;;;;;
+13917;EGYPTIAN HIEROGLYPH-13917;Lo;0;L;;;;;N;;;;;
+13918;EGYPTIAN HIEROGLYPH-13918;Lo;0;L;;;;;N;;;;;
+13919;EGYPTIAN HIEROGLYPH-13919;Lo;0;L;;;;;N;;;;;
+1391A;EGYPTIAN HIEROGLYPH-1391A;Lo;0;L;;;;;N;;;;;
+1391B;EGYPTIAN HIEROGLYPH-1391B;Lo;0;L;;;;;N;;;;;
+1391C;EGYPTIAN HIEROGLYPH-1391C;Lo;0;L;;;;;N;;;;;
+1391D;EGYPTIAN HIEROGLYPH-1391D;Lo;0;L;;;;;N;;;;;
+1391E;EGYPTIAN HIEROGLYPH-1391E;Lo;0;L;;;;;N;;;;;
+1391F;EGYPTIAN HIEROGLYPH-1391F;Lo;0;L;;;;;N;;;;;
+13920;EGYPTIAN HIEROGLYPH-13920;Lo;0;L;;;;;N;;;;;
+13921;EGYPTIAN HIEROGLYPH-13921;Lo;0;L;;;;;N;;;;;
+13922;EGYPTIAN HIEROGLYPH-13922;Lo;0;L;;;;;N;;;;;
+13923;EGYPTIAN HIEROGLYPH-13923;Lo;0;L;;;;;N;;;;;
+13924;EGYPTIAN HIEROGLYPH-13924;Lo;0;L;;;;;N;;;;;
+13925;EGYPTIAN HIEROGLYPH-13925;Lo;0;L;;;;;N;;;;;
+13926;EGYPTIAN HIEROGLYPH-13926;Lo;0;L;;;;;N;;;;;
+13927;EGYPTIAN HIEROGLYPH-13927;Lo;0;L;;;;;N;;;;;
+13928;EGYPTIAN HIEROGLYPH-13928;Lo;0;L;;;;;N;;;;;
+13929;EGYPTIAN HIEROGLYPH-13929;Lo;0;L;;;;;N;;;;;
+1392A;EGYPTIAN HIEROGLYPH-1392A;Lo;0;L;;;;;N;;;;;
+1392B;EGYPTIAN HIEROGLYPH-1392B;Lo;0;L;;;;;N;;;;;
+1392C;EGYPTIAN HIEROGLYPH-1392C;Lo;0;L;;;;;N;;;;;
+1392D;EGYPTIAN HIEROGLYPH-1392D;Lo;0;L;;;;;N;;;;;
+1392E;EGYPTIAN HIEROGLYPH-1392E;Lo;0;L;;;;;N;;;;;
+1392F;EGYPTIAN HIEROGLYPH-1392F;Lo;0;L;;;;;N;;;;;
+13930;EGYPTIAN HIEROGLYPH-13930;Lo;0;L;;;;;N;;;;;
+13931;EGYPTIAN HIEROGLYPH-13931;Lo;0;L;;;;;N;;;;;
+13932;EGYPTIAN HIEROGLYPH-13932;Lo;0;L;;;;;N;;;;;
+13933;EGYPTIAN HIEROGLYPH-13933;Lo;0;L;;;;;N;;;;;
+13934;EGYPTIAN HIEROGLYPH-13934;Lo;0;L;;;;;N;;;;;
+13935;EGYPTIAN HIEROGLYPH-13935;Lo;0;L;;;;;N;;;;;
+13936;EGYPTIAN HIEROGLYPH-13936;Lo;0;L;;;;;N;;;;;
+13937;EGYPTIAN HIEROGLYPH-13937;Lo;0;L;;;;;N;;;;;
+13938;EGYPTIAN HIEROGLYPH-13938;Lo;0;L;;;;;N;;;;;
+13939;EGYPTIAN HIEROGLYPH-13939;Lo;0;L;;;;;N;;;;;
+1393A;EGYPTIAN HIEROGLYPH-1393A;Lo;0;L;;;;;N;;;;;
+1393B;EGYPTIAN HIEROGLYPH-1393B;Lo;0;L;;;;;N;;;;;
+1393C;EGYPTIAN HIEROGLYPH-1393C;Lo;0;L;;;;;N;;;;;
+1393D;EGYPTIAN HIEROGLYPH-1393D;Lo;0;L;;;;;N;;;;;
+1393E;EGYPTIAN HIEROGLYPH-1393E;Lo;0;L;;;;;N;;;;;
+1393F;EGYPTIAN HIEROGLYPH-1393F;Lo;0;L;;;;;N;;;;;
+13940;EGYPTIAN HIEROGLYPH-13940;Lo;0;L;;;;;N;;;;;
+13941;EGYPTIAN HIEROGLYPH-13941;Lo;0;L;;;;;N;;;;;
+13942;EGYPTIAN HIEROGLYPH-13942;Lo;0;L;;;;;N;;;;;
+13943;EGYPTIAN HIEROGLYPH-13943;Lo;0;L;;;;;N;;;;;
+13944;EGYPTIAN HIEROGLYPH-13944;Lo;0;L;;;;;N;;;;;
+13945;EGYPTIAN HIEROGLYPH-13945;Lo;0;L;;;;;N;;;;;
+13946;EGYPTIAN HIEROGLYPH-13946;Lo;0;L;;;;;N;;;;;
+13947;EGYPTIAN HIEROGLYPH-13947;Lo;0;L;;;;;N;;;;;
+13948;EGYPTIAN HIEROGLYPH-13948;Lo;0;L;;;;;N;;;;;
+13949;EGYPTIAN HIEROGLYPH-13949;Lo;0;L;;;;;N;;;;;
+1394A;EGYPTIAN HIEROGLYPH-1394A;Lo;0;L;;;;;N;;;;;
+1394B;EGYPTIAN HIEROGLYPH-1394B;Lo;0;L;;;;;N;;;;;
+1394C;EGYPTIAN HIEROGLYPH-1394C;Lo;0;L;;;;;N;;;;;
+1394D;EGYPTIAN HIEROGLYPH-1394D;Lo;0;L;;;;;N;;;;;
+1394E;EGYPTIAN HIEROGLYPH-1394E;Lo;0;L;;;;;N;;;;;
+1394F;EGYPTIAN HIEROGLYPH-1394F;Lo;0;L;;;;;N;;;;;
+13950;EGYPTIAN HIEROGLYPH-13950;Lo;0;L;;;;;N;;;;;
+13951;EGYPTIAN HIEROGLYPH-13951;Lo;0;L;;;;;N;;;;;
+13952;EGYPTIAN HIEROGLYPH-13952;Lo;0;L;;;;;N;;;;;
+13953;EGYPTIAN HIEROGLYPH-13953;Lo;0;L;;;;;N;;;;;
+13954;EGYPTIAN HIEROGLYPH-13954;Lo;0;L;;;;;N;;;;;
+13955;EGYPTIAN HIEROGLYPH-13955;Lo;0;L;;;;;N;;;;;
+13956;EGYPTIAN HIEROGLYPH-13956;Lo;0;L;;;;;N;;;;;
+13957;EGYPTIAN HIEROGLYPH-13957;Lo;0;L;;;;;N;;;;;
+13958;EGYPTIAN HIEROGLYPH-13958;Lo;0;L;;;;;N;;;;;
+13959;EGYPTIAN HIEROGLYPH-13959;Lo;0;L;;;;;N;;;;;
+1395A;EGYPTIAN HIEROGLYPH-1395A;Lo;0;L;;;;;N;;;;;
+1395B;EGYPTIAN HIEROGLYPH-1395B;Lo;0;L;;;;;N;;;;;
+1395C;EGYPTIAN HIEROGLYPH-1395C;Lo;0;L;;;;;N;;;;;
+1395D;EGYPTIAN HIEROGLYPH-1395D;Lo;0;L;;;;;N;;;;;
+1395E;EGYPTIAN HIEROGLYPH-1395E;Lo;0;L;;;;;N;;;;;
+1395F;EGYPTIAN HIEROGLYPH-1395F;Lo;0;L;;;;;N;;;;;
+13960;EGYPTIAN HIEROGLYPH-13960;Lo;0;L;;;;;N;;;;;
+13961;EGYPTIAN HIEROGLYPH-13961;Lo;0;L;;;;;N;;;;;
+13962;EGYPTIAN HIEROGLYPH-13962;Lo;0;L;;;;;N;;;;;
+13963;EGYPTIAN HIEROGLYPH-13963;Lo;0;L;;;;;N;;;;;
+13964;EGYPTIAN HIEROGLYPH-13964;Lo;0;L;;;;;N;;;;;
+13965;EGYPTIAN HIEROGLYPH-13965;Lo;0;L;;;;;N;;;;;
+13966;EGYPTIAN HIEROGLYPH-13966;Lo;0;L;;;;;N;;;;;
+13967;EGYPTIAN HIEROGLYPH-13967;Lo;0;L;;;;;N;;;;;
+13968;EGYPTIAN HIEROGLYPH-13968;Lo;0;L;;;;;N;;;;;
+13969;EGYPTIAN HIEROGLYPH-13969;Lo;0;L;;;;;N;;;;;
+1396A;EGYPTIAN HIEROGLYPH-1396A;Lo;0;L;;;;;N;;;;;
+1396B;EGYPTIAN HIEROGLYPH-1396B;Lo;0;L;;;;;N;;;;;
+1396C;EGYPTIAN HIEROGLYPH-1396C;Lo;0;L;;;;;N;;;;;
+1396D;EGYPTIAN HIEROGLYPH-1396D;Lo;0;L;;;;;N;;;;;
+1396E;EGYPTIAN HIEROGLYPH-1396E;Lo;0;L;;;;;N;;;;;
+1396F;EGYPTIAN HIEROGLYPH-1396F;Lo;0;L;;;;;N;;;;;
+13970;EGYPTIAN HIEROGLYPH-13970;Lo;0;L;;;;;N;;;;;
+13971;EGYPTIAN HIEROGLYPH-13971;Lo;0;L;;;;;N;;;;;
+13972;EGYPTIAN HIEROGLYPH-13972;Lo;0;L;;;;;N;;;;;
+13973;EGYPTIAN HIEROGLYPH-13973;Lo;0;L;;;;;N;;;;;
+13974;EGYPTIAN HIEROGLYPH-13974;Lo;0;L;;;;;N;;;;;
+13975;EGYPTIAN HIEROGLYPH-13975;Lo;0;L;;;;;N;;;;;
+13976;EGYPTIAN HIEROGLYPH-13976;Lo;0;L;;;;;N;;;;;
+13977;EGYPTIAN HIEROGLYPH-13977;Lo;0;L;;;;;N;;;;;
+13978;EGYPTIAN HIEROGLYPH-13978;Lo;0;L;;;;;N;;;;;
+13979;EGYPTIAN HIEROGLYPH-13979;Lo;0;L;;;;;N;;;;;
+1397A;EGYPTIAN HIEROGLYPH-1397A;Lo;0;L;;;;;N;;;;;
+1397B;EGYPTIAN HIEROGLYPH-1397B;Lo;0;L;;;;;N;;;;;
+1397C;EGYPTIAN HIEROGLYPH-1397C;Lo;0;L;;;;;N;;;;;
+1397D;EGYPTIAN HIEROGLYPH-1397D;Lo;0;L;;;;;N;;;;;
+1397E;EGYPTIAN HIEROGLYPH-1397E;Lo;0;L;;;;;N;;;;;
+1397F;EGYPTIAN HIEROGLYPH-1397F;Lo;0;L;;;;;N;;;;;
+13980;EGYPTIAN HIEROGLYPH-13980;Lo;0;L;;;;;N;;;;;
+13981;EGYPTIAN HIEROGLYPH-13981;Lo;0;L;;;;;N;;;;;
+13982;EGYPTIAN HIEROGLYPH-13982;Lo;0;L;;;;;N;;;;;
+13983;EGYPTIAN HIEROGLYPH-13983;Lo;0;L;;;;;N;;;;;
+13984;EGYPTIAN HIEROGLYPH-13984;Lo;0;L;;;;;N;;;;;
+13985;EGYPTIAN HIEROGLYPH-13985;Lo;0;L;;;;;N;;;;;
+13986;EGYPTIAN HIEROGLYPH-13986;Lo;0;L;;;;;N;;;;;
+13987;EGYPTIAN HIEROGLYPH-13987;Lo;0;L;;;;;N;;;;;
+13988;EGYPTIAN HIEROGLYPH-13988;Lo;0;L;;;;;N;;;;;
+13989;EGYPTIAN HIEROGLYPH-13989;Lo;0;L;;;;;N;;;;;
+1398A;EGYPTIAN HIEROGLYPH-1398A;Lo;0;L;;;;;N;;;;;
+1398B;EGYPTIAN HIEROGLYPH-1398B;Lo;0;L;;;;;N;;;;;
+1398C;EGYPTIAN HIEROGLYPH-1398C;Lo;0;L;;;;;N;;;;;
+1398D;EGYPTIAN HIEROGLYPH-1398D;Lo;0;L;;;;;N;;;;;
+1398E;EGYPTIAN HIEROGLYPH-1398E;Lo;0;L;;;;;N;;;;;
+1398F;EGYPTIAN HIEROGLYPH-1398F;Lo;0;L;;;;;N;;;;;
+13990;EGYPTIAN HIEROGLYPH-13990;Lo;0;L;;;;;N;;;;;
+13991;EGYPTIAN HIEROGLYPH-13991;Lo;0;L;;;;;N;;;;;
+13992;EGYPTIAN HIEROGLYPH-13992;Lo;0;L;;;;;N;;;;;
+13993;EGYPTIAN HIEROGLYPH-13993;Lo;0;L;;;;;N;;;;;
+13994;EGYPTIAN HIEROGLYPH-13994;Lo;0;L;;;;;N;;;;;
+13995;EGYPTIAN HIEROGLYPH-13995;Lo;0;L;;;;;N;;;;;
+13996;EGYPTIAN HIEROGLYPH-13996;Lo;0;L;;;;;N;;;;;
+13997;EGYPTIAN HIEROGLYPH-13997;Lo;0;L;;;;;N;;;;;
+13998;EGYPTIAN HIEROGLYPH-13998;Lo;0;L;;;;;N;;;;;
+13999;EGYPTIAN HIEROGLYPH-13999;Lo;0;L;;;;;N;;;;;
+1399A;EGYPTIAN HIEROGLYPH-1399A;Lo;0;L;;;;;N;;;;;
+1399B;EGYPTIAN HIEROGLYPH-1399B;Lo;0;L;;;;;N;;;;;
+1399C;EGYPTIAN HIEROGLYPH-1399C;Lo;0;L;;;;;N;;;;;
+1399D;EGYPTIAN HIEROGLYPH-1399D;Lo;0;L;;;;;N;;;;;
+1399E;EGYPTIAN HIEROGLYPH-1399E;Lo;0;L;;;;;N;;;;;
+1399F;EGYPTIAN HIEROGLYPH-1399F;Lo;0;L;;;;;N;;;;;
+139A0;EGYPTIAN HIEROGLYPH-139A0;Lo;0;L;;;;;N;;;;;
+139A1;EGYPTIAN HIEROGLYPH-139A1;Lo;0;L;;;;;N;;;;;
+139A2;EGYPTIAN HIEROGLYPH-139A2;Lo;0;L;;;;;N;;;;;
+139A3;EGYPTIAN HIEROGLYPH-139A3;Lo;0;L;;;;;N;;;;;
+139A4;EGYPTIAN HIEROGLYPH-139A4;Lo;0;L;;;;;N;;;;;
+139A5;EGYPTIAN HIEROGLYPH-139A5;Lo;0;L;;;;;N;;;;;
+139A6;EGYPTIAN HIEROGLYPH-139A6;Lo;0;L;;;;;N;;;;;
+139A7;EGYPTIAN HIEROGLYPH-139A7;Lo;0;L;;;;;N;;;;;
+139A8;EGYPTIAN HIEROGLYPH-139A8;Lo;0;L;;;;;N;;;;;
+139A9;EGYPTIAN HIEROGLYPH-139A9;Lo;0;L;;;;;N;;;;;
+139AA;EGYPTIAN HIEROGLYPH-139AA;Lo;0;L;;;;;N;;;;;
+139AB;EGYPTIAN HIEROGLYPH-139AB;Lo;0;L;;;;;N;;;;;
+139AC;EGYPTIAN HIEROGLYPH-139AC;Lo;0;L;;;;;N;;;;;
+139AD;EGYPTIAN HIEROGLYPH-139AD;Lo;0;L;;;;;N;;;;;
+139AE;EGYPTIAN HIEROGLYPH-139AE;Lo;0;L;;;;;N;;;;;
+139AF;EGYPTIAN HIEROGLYPH-139AF;Lo;0;L;;;;;N;;;;;
+139B0;EGYPTIAN HIEROGLYPH-139B0;Lo;0;L;;;;;N;;;;;
+139B1;EGYPTIAN HIEROGLYPH-139B1;Lo;0;L;;;;;N;;;;;
+139B2;EGYPTIAN HIEROGLYPH-139B2;Lo;0;L;;;;;N;;;;;
+139B3;EGYPTIAN HIEROGLYPH-139B3;Lo;0;L;;;;;N;;;;;
+139B4;EGYPTIAN HIEROGLYPH-139B4;Lo;0;L;;;;;N;;;;;
+139B5;EGYPTIAN HIEROGLYPH-139B5;Lo;0;L;;;;;N;;;;;
+139B6;EGYPTIAN HIEROGLYPH-139B6;Lo;0;L;;;;;N;;;;;
+139B7;EGYPTIAN HIEROGLYPH-139B7;Lo;0;L;;;;;N;;;;;
+139B8;EGYPTIAN HIEROGLYPH-139B8;Lo;0;L;;;;;N;;;;;
+139B9;EGYPTIAN HIEROGLYPH-139B9;Lo;0;L;;;;;N;;;;;
+139BA;EGYPTIAN HIEROGLYPH-139BA;Lo;0;L;;;;;N;;;;;
+139BB;EGYPTIAN HIEROGLYPH-139BB;Lo;0;L;;;;;N;;;;;
+139BC;EGYPTIAN HIEROGLYPH-139BC;Lo;0;L;;;;;N;;;;;
+139BD;EGYPTIAN HIEROGLYPH-139BD;Lo;0;L;;;;;N;;;;;
+139BE;EGYPTIAN HIEROGLYPH-139BE;Lo;0;L;;;;;N;;;;;
+139BF;EGYPTIAN HIEROGLYPH-139BF;Lo;0;L;;;;;N;;;;;
+139C0;EGYPTIAN HIEROGLYPH-139C0;Lo;0;L;;;;;N;;;;;
+139C1;EGYPTIAN HIEROGLYPH-139C1;Lo;0;L;;;;;N;;;;;
+139C2;EGYPTIAN HIEROGLYPH-139C2;Lo;0;L;;;;;N;;;;;
+139C3;EGYPTIAN HIEROGLYPH-139C3;Lo;0;L;;;;;N;;;;;
+139C4;EGYPTIAN HIEROGLYPH-139C4;Lo;0;L;;;;;N;;;;;
+139C5;EGYPTIAN HIEROGLYPH-139C5;Lo;0;L;;;;;N;;;;;
+139C6;EGYPTIAN HIEROGLYPH-139C6;Lo;0;L;;;;;N;;;;;
+139C7;EGYPTIAN HIEROGLYPH-139C7;Lo;0;L;;;;;N;;;;;
+139C8;EGYPTIAN HIEROGLYPH-139C8;Lo;0;L;;;;;N;;;;;
+139C9;EGYPTIAN HIEROGLYPH-139C9;Lo;0;L;;;;;N;;;;;
+139CA;EGYPTIAN HIEROGLYPH-139CA;Lo;0;L;;;;;N;;;;;
+139CB;EGYPTIAN HIEROGLYPH-139CB;Lo;0;L;;;;;N;;;;;
+139CC;EGYPTIAN HIEROGLYPH-139CC;Lo;0;L;;;;;N;;;;;
+139CD;EGYPTIAN HIEROGLYPH-139CD;Lo;0;L;;;;;N;;;;;
+139CE;EGYPTIAN HIEROGLYPH-139CE;Lo;0;L;;;;;N;;;;;
+139CF;EGYPTIAN HIEROGLYPH-139CF;Lo;0;L;;;;;N;;;;;
+139D0;EGYPTIAN HIEROGLYPH-139D0;Lo;0;L;;;;;N;;;;;
+139D1;EGYPTIAN HIEROGLYPH-139D1;Lo;0;L;;;;;N;;;;;
+139D2;EGYPTIAN HIEROGLYPH-139D2;Lo;0;L;;;;;N;;;;;
+139D3;EGYPTIAN HIEROGLYPH-139D3;Lo;0;L;;;;;N;;;;;
+139D4;EGYPTIAN HIEROGLYPH-139D4;Lo;0;L;;;;;N;;;;;
+139D5;EGYPTIAN HIEROGLYPH-139D5;Lo;0;L;;;;;N;;;;;
+139D6;EGYPTIAN HIEROGLYPH-139D6;Lo;0;L;;;;;N;;;;;
+139D7;EGYPTIAN HIEROGLYPH-139D7;Lo;0;L;;;;;N;;;;;
+139D8;EGYPTIAN HIEROGLYPH-139D8;Lo;0;L;;;;;N;;;;;
+139D9;EGYPTIAN HIEROGLYPH-139D9;Lo;0;L;;;;;N;;;;;
+139DA;EGYPTIAN HIEROGLYPH-139DA;Lo;0;L;;;;;N;;;;;
+139DB;EGYPTIAN HIEROGLYPH-139DB;Lo;0;L;;;;;N;;;;;
+139DC;EGYPTIAN HIEROGLYPH-139DC;Lo;0;L;;;;;N;;;;;
+139DD;EGYPTIAN HIEROGLYPH-139DD;Lo;0;L;;;;;N;;;;;
+139DE;EGYPTIAN HIEROGLYPH-139DE;Lo;0;L;;;;;N;;;;;
+139DF;EGYPTIAN HIEROGLYPH-139DF;Lo;0;L;;;;;N;;;;;
+139E0;EGYPTIAN HIEROGLYPH-139E0;Lo;0;L;;;;;N;;;;;
+139E1;EGYPTIAN HIEROGLYPH-139E1;Lo;0;L;;;;;N;;;;;
+139E2;EGYPTIAN HIEROGLYPH-139E2;Lo;0;L;;;;;N;;;;;
+139E3;EGYPTIAN HIEROGLYPH-139E3;Lo;0;L;;;;;N;;;;;
+139E4;EGYPTIAN HIEROGLYPH-139E4;Lo;0;L;;;;;N;;;;;
+139E5;EGYPTIAN HIEROGLYPH-139E5;Lo;0;L;;;;;N;;;;;
+139E6;EGYPTIAN HIEROGLYPH-139E6;Lo;0;L;;;;;N;;;;;
+139E7;EGYPTIAN HIEROGLYPH-139E7;Lo;0;L;;;;;N;;;;;
+139E8;EGYPTIAN HIEROGLYPH-139E8;Lo;0;L;;;;;N;;;;;
+139E9;EGYPTIAN HIEROGLYPH-139E9;Lo;0;L;;;;;N;;;;;
+139EA;EGYPTIAN HIEROGLYPH-139EA;Lo;0;L;;;;;N;;;;;
+139EB;EGYPTIAN HIEROGLYPH-139EB;Lo;0;L;;;;;N;;;;;
+139EC;EGYPTIAN HIEROGLYPH-139EC;Lo;0;L;;;;;N;;;;;
+139ED;EGYPTIAN HIEROGLYPH-139ED;Lo;0;L;;;;;N;;;;;
+139EE;EGYPTIAN HIEROGLYPH-139EE;Lo;0;L;;;;;N;;;;;
+139EF;EGYPTIAN HIEROGLYPH-139EF;Lo;0;L;;;;;N;;;;;
+139F0;EGYPTIAN HIEROGLYPH-139F0;Lo;0;L;;;;;N;;;;;
+139F1;EGYPTIAN HIEROGLYPH-139F1;Lo;0;L;;;;;N;;;;;
+139F2;EGYPTIAN HIEROGLYPH-139F2;Lo;0;L;;;;;N;;;;;
+139F3;EGYPTIAN HIEROGLYPH-139F3;Lo;0;L;;;;;N;;;;;
+139F4;EGYPTIAN HIEROGLYPH-139F4;Lo;0;L;;;;;N;;;;;
+139F5;EGYPTIAN HIEROGLYPH-139F5;Lo;0;L;;;;;N;;;;;
+139F6;EGYPTIAN HIEROGLYPH-139F6;Lo;0;L;;;;;N;;;;;
+139F7;EGYPTIAN HIEROGLYPH-139F7;Lo;0;L;;;;;N;;;;;
+139F8;EGYPTIAN HIEROGLYPH-139F8;Lo;0;L;;;;;N;;;;;
+139F9;EGYPTIAN HIEROGLYPH-139F9;Lo;0;L;;;;;N;;;;;
+139FA;EGYPTIAN HIEROGLYPH-139FA;Lo;0;L;;;;;N;;;;;
+139FB;EGYPTIAN HIEROGLYPH-139FB;Lo;0;L;;;;;N;;;;;
+139FC;EGYPTIAN HIEROGLYPH-139FC;Lo;0;L;;;;;N;;;;;
+139FD;EGYPTIAN HIEROGLYPH-139FD;Lo;0;L;;;;;N;;;;;
+139FE;EGYPTIAN HIEROGLYPH-139FE;Lo;0;L;;;;;N;;;;;
+139FF;EGYPTIAN HIEROGLYPH-139FF;Lo;0;L;;;;;N;;;;;
+13A00;EGYPTIAN HIEROGLYPH-13A00;Lo;0;L;;;;;N;;;;;
+13A01;EGYPTIAN HIEROGLYPH-13A01;Lo;0;L;;;;;N;;;;;
+13A02;EGYPTIAN HIEROGLYPH-13A02;Lo;0;L;;;;;N;;;;;
+13A03;EGYPTIAN HIEROGLYPH-13A03;Lo;0;L;;;;;N;;;;;
+13A04;EGYPTIAN HIEROGLYPH-13A04;Lo;0;L;;;;;N;;;;;
+13A05;EGYPTIAN HIEROGLYPH-13A05;Lo;0;L;;;;;N;;;;;
+13A06;EGYPTIAN HIEROGLYPH-13A06;Lo;0;L;;;;;N;;;;;
+13A07;EGYPTIAN HIEROGLYPH-13A07;Lo;0;L;;;;;N;;;;;
+13A08;EGYPTIAN HIEROGLYPH-13A08;Lo;0;L;;;;;N;;;;;
+13A09;EGYPTIAN HIEROGLYPH-13A09;Lo;0;L;;;;;N;;;;;
+13A0A;EGYPTIAN HIEROGLYPH-13A0A;Lo;0;L;;;;;N;;;;;
+13A0B;EGYPTIAN HIEROGLYPH-13A0B;Lo;0;L;;;;;N;;;;;
+13A0C;EGYPTIAN HIEROGLYPH-13A0C;Lo;0;L;;;;;N;;;;;
+13A0D;EGYPTIAN HIEROGLYPH-13A0D;Lo;0;L;;;;;N;;;;;
+13A0E;EGYPTIAN HIEROGLYPH-13A0E;Lo;0;L;;;;;N;;;;;
+13A0F;EGYPTIAN HIEROGLYPH-13A0F;Lo;0;L;;;;;N;;;;;
+13A10;EGYPTIAN HIEROGLYPH-13A10;Lo;0;L;;;;;N;;;;;
+13A11;EGYPTIAN HIEROGLYPH-13A11;Lo;0;L;;;;;N;;;;;
+13A12;EGYPTIAN HIEROGLYPH-13A12;Lo;0;L;;;;;N;;;;;
+13A13;EGYPTIAN HIEROGLYPH-13A13;Lo;0;L;;;;;N;;;;;
+13A14;EGYPTIAN HIEROGLYPH-13A14;Lo;0;L;;;;;N;;;;;
+13A15;EGYPTIAN HIEROGLYPH-13A15;Lo;0;L;;;;;N;;;;;
+13A16;EGYPTIAN HIEROGLYPH-13A16;Lo;0;L;;;;;N;;;;;
+13A17;EGYPTIAN HIEROGLYPH-13A17;Lo;0;L;;;;;N;;;;;
+13A18;EGYPTIAN HIEROGLYPH-13A18;Lo;0;L;;;;;N;;;;;
+13A19;EGYPTIAN HIEROGLYPH-13A19;Lo;0;L;;;;;N;;;;;
+13A1A;EGYPTIAN HIEROGLYPH-13A1A;Lo;0;L;;;;;N;;;;;
+13A1B;EGYPTIAN HIEROGLYPH-13A1B;Lo;0;L;;;;;N;;;;;
+13A1C;EGYPTIAN HIEROGLYPH-13A1C;Lo;0;L;;;;;N;;;;;
+13A1D;EGYPTIAN HIEROGLYPH-13A1D;Lo;0;L;;;;;N;;;;;
+13A1E;EGYPTIAN HIEROGLYPH-13A1E;Lo;0;L;;;;;N;;;;;
+13A1F;EGYPTIAN HIEROGLYPH-13A1F;Lo;0;L;;;;;N;;;;;
+13A20;EGYPTIAN HIEROGLYPH-13A20;Lo;0;L;;;;;N;;;;;
+13A21;EGYPTIAN HIEROGLYPH-13A21;Lo;0;L;;;;;N;;;;;
+13A22;EGYPTIAN HIEROGLYPH-13A22;Lo;0;L;;;;;N;;;;;
+13A23;EGYPTIAN HIEROGLYPH-13A23;Lo;0;L;;;;;N;;;;;
+13A24;EGYPTIAN HIEROGLYPH-13A24;Lo;0;L;;;;;N;;;;;
+13A25;EGYPTIAN HIEROGLYPH-13A25;Lo;0;L;;;;;N;;;;;
+13A26;EGYPTIAN HIEROGLYPH-13A26;Lo;0;L;;;;;N;;;;;
+13A27;EGYPTIAN HIEROGLYPH-13A27;Lo;0;L;;;;;N;;;;;
+13A28;EGYPTIAN HIEROGLYPH-13A28;Lo;0;L;;;;;N;;;;;
+13A29;EGYPTIAN HIEROGLYPH-13A29;Lo;0;L;;;;;N;;;;;
+13A2A;EGYPTIAN HIEROGLYPH-13A2A;Lo;0;L;;;;;N;;;;;
+13A2B;EGYPTIAN HIEROGLYPH-13A2B;Lo;0;L;;;;;N;;;;;
+13A2C;EGYPTIAN HIEROGLYPH-13A2C;Lo;0;L;;;;;N;;;;;
+13A2D;EGYPTIAN HIEROGLYPH-13A2D;Lo;0;L;;;;;N;;;;;
+13A2E;EGYPTIAN HIEROGLYPH-13A2E;Lo;0;L;;;;;N;;;;;
+13A2F;EGYPTIAN HIEROGLYPH-13A2F;Lo;0;L;;;;;N;;;;;
+13A30;EGYPTIAN HIEROGLYPH-13A30;Lo;0;L;;;;;N;;;;;
+13A31;EGYPTIAN HIEROGLYPH-13A31;Lo;0;L;;;;;N;;;;;
+13A32;EGYPTIAN HIEROGLYPH-13A32;Lo;0;L;;;;;N;;;;;
+13A33;EGYPTIAN HIEROGLYPH-13A33;Lo;0;L;;;;;N;;;;;
+13A34;EGYPTIAN HIEROGLYPH-13A34;Lo;0;L;;;;;N;;;;;
+13A35;EGYPTIAN HIEROGLYPH-13A35;Lo;0;L;;;;;N;;;;;
+13A36;EGYPTIAN HIEROGLYPH-13A36;Lo;0;L;;;;;N;;;;;
+13A37;EGYPTIAN HIEROGLYPH-13A37;Lo;0;L;;;;;N;;;;;
+13A38;EGYPTIAN HIEROGLYPH-13A38;Lo;0;L;;;;;N;;;;;
+13A39;EGYPTIAN HIEROGLYPH-13A39;Lo;0;L;;;;;N;;;;;
+13A3A;EGYPTIAN HIEROGLYPH-13A3A;Lo;0;L;;;;;N;;;;;
+13A3B;EGYPTIAN HIEROGLYPH-13A3B;Lo;0;L;;;;;N;;;;;
+13A3C;EGYPTIAN HIEROGLYPH-13A3C;Lo;0;L;;;;;N;;;;;
+13A3D;EGYPTIAN HIEROGLYPH-13A3D;Lo;0;L;;;;;N;;;;;
+13A3E;EGYPTIAN HIEROGLYPH-13A3E;Lo;0;L;;;;;N;;;;;
+13A3F;EGYPTIAN HIEROGLYPH-13A3F;Lo;0;L;;;;;N;;;;;
+13A40;EGYPTIAN HIEROGLYPH-13A40;Lo;0;L;;;;;N;;;;;
+13A41;EGYPTIAN HIEROGLYPH-13A41;Lo;0;L;;;;;N;;;;;
+13A42;EGYPTIAN HIEROGLYPH-13A42;Lo;0;L;;;;;N;;;;;
+13A43;EGYPTIAN HIEROGLYPH-13A43;Lo;0;L;;;;;N;;;;;
+13A44;EGYPTIAN HIEROGLYPH-13A44;Lo;0;L;;;;;N;;;;;
+13A45;EGYPTIAN HIEROGLYPH-13A45;Lo;0;L;;;;;N;;;;;
+13A46;EGYPTIAN HIEROGLYPH-13A46;Lo;0;L;;;;;N;;;;;
+13A47;EGYPTIAN HIEROGLYPH-13A47;Lo;0;L;;;;;N;;;;;
+13A48;EGYPTIAN HIEROGLYPH-13A48;Lo;0;L;;;;;N;;;;;
+13A49;EGYPTIAN HIEROGLYPH-13A49;Lo;0;L;;;;;N;;;;;
+13A4A;EGYPTIAN HIEROGLYPH-13A4A;Lo;0;L;;;;;N;;;;;
+13A4B;EGYPTIAN HIEROGLYPH-13A4B;Lo;0;L;;;;;N;;;;;
+13A4C;EGYPTIAN HIEROGLYPH-13A4C;Lo;0;L;;;;;N;;;;;
+13A4D;EGYPTIAN HIEROGLYPH-13A4D;Lo;0;L;;;;;N;;;;;
+13A4E;EGYPTIAN HIEROGLYPH-13A4E;Lo;0;L;;;;;N;;;;;
+13A4F;EGYPTIAN HIEROGLYPH-13A4F;Lo;0;L;;;;;N;;;;;
+13A50;EGYPTIAN HIEROGLYPH-13A50;Lo;0;L;;;;;N;;;;;
+13A51;EGYPTIAN HIEROGLYPH-13A51;Lo;0;L;;;;;N;;;;;
+13A52;EGYPTIAN HIEROGLYPH-13A52;Lo;0;L;;;;;N;;;;;
+13A53;EGYPTIAN HIEROGLYPH-13A53;Lo;0;L;;;;;N;;;;;
+13A54;EGYPTIAN HIEROGLYPH-13A54;Lo;0;L;;;;;N;;;;;
+13A55;EGYPTIAN HIEROGLYPH-13A55;Lo;0;L;;;;;N;;;;;
+13A56;EGYPTIAN HIEROGLYPH-13A56;Lo;0;L;;;;;N;;;;;
+13A57;EGYPTIAN HIEROGLYPH-13A57;Lo;0;L;;;;;N;;;;;
+13A58;EGYPTIAN HIEROGLYPH-13A58;Lo;0;L;;;;;N;;;;;
+13A59;EGYPTIAN HIEROGLYPH-13A59;Lo;0;L;;;;;N;;;;;
+13A5A;EGYPTIAN HIEROGLYPH-13A5A;Lo;0;L;;;;;N;;;;;
+13A5B;EGYPTIAN HIEROGLYPH-13A5B;Lo;0;L;;;;;N;;;;;
+13A5C;EGYPTIAN HIEROGLYPH-13A5C;Lo;0;L;;;;;N;;;;;
+13A5D;EGYPTIAN HIEROGLYPH-13A5D;Lo;0;L;;;;;N;;;;;
+13A5E;EGYPTIAN HIEROGLYPH-13A5E;Lo;0;L;;;;;N;;;;;
+13A5F;EGYPTIAN HIEROGLYPH-13A5F;Lo;0;L;;;;;N;;;;;
+13A60;EGYPTIAN HIEROGLYPH-13A60;Lo;0;L;;;;;N;;;;;
+13A61;EGYPTIAN HIEROGLYPH-13A61;Lo;0;L;;;;;N;;;;;
+13A62;EGYPTIAN HIEROGLYPH-13A62;Lo;0;L;;;;;N;;;;;
+13A63;EGYPTIAN HIEROGLYPH-13A63;Lo;0;L;;;;;N;;;;;
+13A64;EGYPTIAN HIEROGLYPH-13A64;Lo;0;L;;;;;N;;;;;
+13A65;EGYPTIAN HIEROGLYPH-13A65;Lo;0;L;;;;;N;;;;;
+13A66;EGYPTIAN HIEROGLYPH-13A66;Lo;0;L;;;;;N;;;;;
+13A67;EGYPTIAN HIEROGLYPH-13A67;Lo;0;L;;;;;N;;;;;
+13A68;EGYPTIAN HIEROGLYPH-13A68;Lo;0;L;;;;;N;;;;;
+13A69;EGYPTIAN HIEROGLYPH-13A69;Lo;0;L;;;;;N;;;;;
+13A6A;EGYPTIAN HIEROGLYPH-13A6A;Lo;0;L;;;;;N;;;;;
+13A6B;EGYPTIAN HIEROGLYPH-13A6B;Lo;0;L;;;;;N;;;;;
+13A6C;EGYPTIAN HIEROGLYPH-13A6C;Lo;0;L;;;;;N;;;;;
+13A6D;EGYPTIAN HIEROGLYPH-13A6D;Lo;0;L;;;;;N;;;;;
+13A6E;EGYPTIAN HIEROGLYPH-13A6E;Lo;0;L;;;;;N;;;;;
+13A6F;EGYPTIAN HIEROGLYPH-13A6F;Lo;0;L;;;;;N;;;;;
+13A70;EGYPTIAN HIEROGLYPH-13A70;Lo;0;L;;;;;N;;;;;
+13A71;EGYPTIAN HIEROGLYPH-13A71;Lo;0;L;;;;;N;;;;;
+13A72;EGYPTIAN HIEROGLYPH-13A72;Lo;0;L;;;;;N;;;;;
+13A73;EGYPTIAN HIEROGLYPH-13A73;Lo;0;L;;;;;N;;;;;
+13A74;EGYPTIAN HIEROGLYPH-13A74;Lo;0;L;;;;;N;;;;;
+13A75;EGYPTIAN HIEROGLYPH-13A75;Lo;0;L;;;;;N;;;;;
+13A76;EGYPTIAN HIEROGLYPH-13A76;Lo;0;L;;;;;N;;;;;
+13A77;EGYPTIAN HIEROGLYPH-13A77;Lo;0;L;;;;;N;;;;;
+13A78;EGYPTIAN HIEROGLYPH-13A78;Lo;0;L;;;;;N;;;;;
+13A79;EGYPTIAN HIEROGLYPH-13A79;Lo;0;L;;;;;N;;;;;
+13A7A;EGYPTIAN HIEROGLYPH-13A7A;Lo;0;L;;;;;N;;;;;
+13A7B;EGYPTIAN HIEROGLYPH-13A7B;Lo;0;L;;;;;N;;;;;
+13A7C;EGYPTIAN HIEROGLYPH-13A7C;Lo;0;L;;;;;N;;;;;
+13A7D;EGYPTIAN HIEROGLYPH-13A7D;Lo;0;L;;;;;N;;;;;
+13A7E;EGYPTIAN HIEROGLYPH-13A7E;Lo;0;L;;;;;N;;;;;
+13A7F;EGYPTIAN HIEROGLYPH-13A7F;Lo;0;L;;;;;N;;;;;
+13A80;EGYPTIAN HIEROGLYPH-13A80;Lo;0;L;;;;;N;;;;;
+13A81;EGYPTIAN HIEROGLYPH-13A81;Lo;0;L;;;;;N;;;;;
+13A82;EGYPTIAN HIEROGLYPH-13A82;Lo;0;L;;;;;N;;;;;
+13A83;EGYPTIAN HIEROGLYPH-13A83;Lo;0;L;;;;;N;;;;;
+13A84;EGYPTIAN HIEROGLYPH-13A84;Lo;0;L;;;;;N;;;;;
+13A85;EGYPTIAN HIEROGLYPH-13A85;Lo;0;L;;;;;N;;;;;
+13A86;EGYPTIAN HIEROGLYPH-13A86;Lo;0;L;;;;;N;;;;;
+13A87;EGYPTIAN HIEROGLYPH-13A87;Lo;0;L;;;;;N;;;;;
+13A88;EGYPTIAN HIEROGLYPH-13A88;Lo;0;L;;;;;N;;;;;
+13A89;EGYPTIAN HIEROGLYPH-13A89;Lo;0;L;;;;;N;;;;;
+13A8A;EGYPTIAN HIEROGLYPH-13A8A;Lo;0;L;;;;;N;;;;;
+13A8B;EGYPTIAN HIEROGLYPH-13A8B;Lo;0;L;;;;;N;;;;;
+13A8C;EGYPTIAN HIEROGLYPH-13A8C;Lo;0;L;;;;;N;;;;;
+13A8D;EGYPTIAN HIEROGLYPH-13A8D;Lo;0;L;;;;;N;;;;;
+13A8E;EGYPTIAN HIEROGLYPH-13A8E;Lo;0;L;;;;;N;;;;;
+13A8F;EGYPTIAN HIEROGLYPH-13A8F;Lo;0;L;;;;;N;;;;;
+13A90;EGYPTIAN HIEROGLYPH-13A90;Lo;0;L;;;;;N;;;;;
+13A91;EGYPTIAN HIEROGLYPH-13A91;Lo;0;L;;;;;N;;;;;
+13A92;EGYPTIAN HIEROGLYPH-13A92;Lo;0;L;;;;;N;;;;;
+13A93;EGYPTIAN HIEROGLYPH-13A93;Lo;0;L;;;;;N;;;;;
+13A94;EGYPTIAN HIEROGLYPH-13A94;Lo;0;L;;;;;N;;;;;
+13A95;EGYPTIAN HIEROGLYPH-13A95;Lo;0;L;;;;;N;;;;;
+13A96;EGYPTIAN HIEROGLYPH-13A96;Lo;0;L;;;;;N;;;;;
+13A97;EGYPTIAN HIEROGLYPH-13A97;Lo;0;L;;;;;N;;;;;
+13A98;EGYPTIAN HIEROGLYPH-13A98;Lo;0;L;;;;;N;;;;;
+13A99;EGYPTIAN HIEROGLYPH-13A99;Lo;0;L;;;;;N;;;;;
+13A9A;EGYPTIAN HIEROGLYPH-13A9A;Lo;0;L;;;;;N;;;;;
+13A9B;EGYPTIAN HIEROGLYPH-13A9B;Lo;0;L;;;;;N;;;;;
+13A9C;EGYPTIAN HIEROGLYPH-13A9C;Lo;0;L;;;;;N;;;;;
+13A9D;EGYPTIAN HIEROGLYPH-13A9D;Lo;0;L;;;;;N;;;;;
+13A9E;EGYPTIAN HIEROGLYPH-13A9E;Lo;0;L;;;;;N;;;;;
+13A9F;EGYPTIAN HIEROGLYPH-13A9F;Lo;0;L;;;;;N;;;;;
+13AA0;EGYPTIAN HIEROGLYPH-13AA0;Lo;0;L;;;;;N;;;;;
+13AA1;EGYPTIAN HIEROGLYPH-13AA1;Lo;0;L;;;;;N;;;;;
+13AA2;EGYPTIAN HIEROGLYPH-13AA2;Lo;0;L;;;;;N;;;;;
+13AA3;EGYPTIAN HIEROGLYPH-13AA3;Lo;0;L;;;;;N;;;;;
+13AA4;EGYPTIAN HIEROGLYPH-13AA4;Lo;0;L;;;;;N;;;;;
+13AA5;EGYPTIAN HIEROGLYPH-13AA5;Lo;0;L;;;;;N;;;;;
+13AA6;EGYPTIAN HIEROGLYPH-13AA6;Lo;0;L;;;;;N;;;;;
+13AA7;EGYPTIAN HIEROGLYPH-13AA7;Lo;0;L;;;;;N;;;;;
+13AA8;EGYPTIAN HIEROGLYPH-13AA8;Lo;0;L;;;;;N;;;;;
+13AA9;EGYPTIAN HIEROGLYPH-13AA9;Lo;0;L;;;;;N;;;;;
+13AAA;EGYPTIAN HIEROGLYPH-13AAA;Lo;0;L;;;;;N;;;;;
+13AAB;EGYPTIAN HIEROGLYPH-13AAB;Lo;0;L;;;;;N;;;;;
+13AAC;EGYPTIAN HIEROGLYPH-13AAC;Lo;0;L;;;;;N;;;;;
+13AAD;EGYPTIAN HIEROGLYPH-13AAD;Lo;0;L;;;;;N;;;;;
+13AAE;EGYPTIAN HIEROGLYPH-13AAE;Lo;0;L;;;;;N;;;;;
+13AAF;EGYPTIAN HIEROGLYPH-13AAF;Lo;0;L;;;;;N;;;;;
+13AB0;EGYPTIAN HIEROGLYPH-13AB0;Lo;0;L;;;;;N;;;;;
+13AB1;EGYPTIAN HIEROGLYPH-13AB1;Lo;0;L;;;;;N;;;;;
+13AB2;EGYPTIAN HIEROGLYPH-13AB2;Lo;0;L;;;;;N;;;;;
+13AB3;EGYPTIAN HIEROGLYPH-13AB3;Lo;0;L;;;;;N;;;;;
+13AB4;EGYPTIAN HIEROGLYPH-13AB4;Lo;0;L;;;;;N;;;;;
+13AB5;EGYPTIAN HIEROGLYPH-13AB5;Lo;0;L;;;;;N;;;;;
+13AB6;EGYPTIAN HIEROGLYPH-13AB6;Lo;0;L;;;;;N;;;;;
+13AB7;EGYPTIAN HIEROGLYPH-13AB7;Lo;0;L;;;;;N;;;;;
+13AB8;EGYPTIAN HIEROGLYPH-13AB8;Lo;0;L;;;;;N;;;;;
+13AB9;EGYPTIAN HIEROGLYPH-13AB9;Lo;0;L;;;;;N;;;;;
+13ABA;EGYPTIAN HIEROGLYPH-13ABA;Lo;0;L;;;;;N;;;;;
+13ABB;EGYPTIAN HIEROGLYPH-13ABB;Lo;0;L;;;;;N;;;;;
+13ABC;EGYPTIAN HIEROGLYPH-13ABC;Lo;0;L;;;;;N;;;;;
+13ABD;EGYPTIAN HIEROGLYPH-13ABD;Lo;0;L;;;;;N;;;;;
+13ABE;EGYPTIAN HIEROGLYPH-13ABE;Lo;0;L;;;;;N;;;;;
+13ABF;EGYPTIAN HIEROGLYPH-13ABF;Lo;0;L;;;;;N;;;;;
+13AC0;EGYPTIAN HIEROGLYPH-13AC0;Lo;0;L;;;;;N;;;;;
+13AC1;EGYPTIAN HIEROGLYPH-13AC1;Lo;0;L;;;;;N;;;;;
+13AC2;EGYPTIAN HIEROGLYPH-13AC2;Lo;0;L;;;;;N;;;;;
+13AC3;EGYPTIAN HIEROGLYPH-13AC3;Lo;0;L;;;;;N;;;;;
+13AC4;EGYPTIAN HIEROGLYPH-13AC4;Lo;0;L;;;;;N;;;;;
+13AC5;EGYPTIAN HIEROGLYPH-13AC5;Lo;0;L;;;;;N;;;;;
+13AC6;EGYPTIAN HIEROGLYPH-13AC6;Lo;0;L;;;;;N;;;;;
+13AC7;EGYPTIAN HIEROGLYPH-13AC7;Lo;0;L;;;;;N;;;;;
+13AC8;EGYPTIAN HIEROGLYPH-13AC8;Lo;0;L;;;;;N;;;;;
+13AC9;EGYPTIAN HIEROGLYPH-13AC9;Lo;0;L;;;;;N;;;;;
+13ACA;EGYPTIAN HIEROGLYPH-13ACA;Lo;0;L;;;;;N;;;;;
+13ACB;EGYPTIAN HIEROGLYPH-13ACB;Lo;0;L;;;;;N;;;;;
+13ACC;EGYPTIAN HIEROGLYPH-13ACC;Lo;0;L;;;;;N;;;;;
+13ACD;EGYPTIAN HIEROGLYPH-13ACD;Lo;0;L;;;;;N;;;;;
+13ACE;EGYPTIAN HIEROGLYPH-13ACE;Lo;0;L;;;;;N;;;;;
+13ACF;EGYPTIAN HIEROGLYPH-13ACF;Lo;0;L;;;;;N;;;;;
+13AD0;EGYPTIAN HIEROGLYPH-13AD0;Lo;0;L;;;;;N;;;;;
+13AD1;EGYPTIAN HIEROGLYPH-13AD1;Lo;0;L;;;;;N;;;;;
+13AD2;EGYPTIAN HIEROGLYPH-13AD2;Lo;0;L;;;;;N;;;;;
+13AD3;EGYPTIAN HIEROGLYPH-13AD3;Lo;0;L;;;;;N;;;;;
+13AD4;EGYPTIAN HIEROGLYPH-13AD4;Lo;0;L;;;;;N;;;;;
+13AD5;EGYPTIAN HIEROGLYPH-13AD5;Lo;0;L;;;;;N;;;;;
+13AD6;EGYPTIAN HIEROGLYPH-13AD6;Lo;0;L;;;;;N;;;;;
+13AD7;EGYPTIAN HIEROGLYPH-13AD7;Lo;0;L;;;;;N;;;;;
+13AD8;EGYPTIAN HIEROGLYPH-13AD8;Lo;0;L;;;;;N;;;;;
+13AD9;EGYPTIAN HIEROGLYPH-13AD9;Lo;0;L;;;;;N;;;;;
+13ADA;EGYPTIAN HIEROGLYPH-13ADA;Lo;0;L;;;;;N;;;;;
+13ADB;EGYPTIAN HIEROGLYPH-13ADB;Lo;0;L;;;;;N;;;;;
+13ADC;EGYPTIAN HIEROGLYPH-13ADC;Lo;0;L;;;;;N;;;;;
+13ADD;EGYPTIAN HIEROGLYPH-13ADD;Lo;0;L;;;;;N;;;;;
+13ADE;EGYPTIAN HIEROGLYPH-13ADE;Lo;0;L;;;;;N;;;;;
+13ADF;EGYPTIAN HIEROGLYPH-13ADF;Lo;0;L;;;;;N;;;;;
+13AE0;EGYPTIAN HIEROGLYPH-13AE0;Lo;0;L;;;;;N;;;;;
+13AE1;EGYPTIAN HIEROGLYPH-13AE1;Lo;0;L;;;;;N;;;;;
+13AE2;EGYPTIAN HIEROGLYPH-13AE2;Lo;0;L;;;;;N;;;;;
+13AE3;EGYPTIAN HIEROGLYPH-13AE3;Lo;0;L;;;;;N;;;;;
+13AE4;EGYPTIAN HIEROGLYPH-13AE4;Lo;0;L;;;;;N;;;;;
+13AE5;EGYPTIAN HIEROGLYPH-13AE5;Lo;0;L;;;;;N;;;;;
+13AE6;EGYPTIAN HIEROGLYPH-13AE6;Lo;0;L;;;;;N;;;;;
+13AE7;EGYPTIAN HIEROGLYPH-13AE7;Lo;0;L;;;;;N;;;;;
+13AE8;EGYPTIAN HIEROGLYPH-13AE8;Lo;0;L;;;;;N;;;;;
+13AE9;EGYPTIAN HIEROGLYPH-13AE9;Lo;0;L;;;;;N;;;;;
+13AEA;EGYPTIAN HIEROGLYPH-13AEA;Lo;0;L;;;;;N;;;;;
+13AEB;EGYPTIAN HIEROGLYPH-13AEB;Lo;0;L;;;;;N;;;;;
+13AEC;EGYPTIAN HIEROGLYPH-13AEC;Lo;0;L;;;;;N;;;;;
+13AED;EGYPTIAN HIEROGLYPH-13AED;Lo;0;L;;;;;N;;;;;
+13AEE;EGYPTIAN HIEROGLYPH-13AEE;Lo;0;L;;;;;N;;;;;
+13AEF;EGYPTIAN HIEROGLYPH-13AEF;Lo;0;L;;;;;N;;;;;
+13AF0;EGYPTIAN HIEROGLYPH-13AF0;Lo;0;L;;;;;N;;;;;
+13AF1;EGYPTIAN HIEROGLYPH-13AF1;Lo;0;L;;;;;N;;;;;
+13AF2;EGYPTIAN HIEROGLYPH-13AF2;Lo;0;L;;;;;N;;;;;
+13AF3;EGYPTIAN HIEROGLYPH-13AF3;Lo;0;L;;;;;N;;;;;
+13AF4;EGYPTIAN HIEROGLYPH-13AF4;Lo;0;L;;;;;N;;;;;
+13AF5;EGYPTIAN HIEROGLYPH-13AF5;Lo;0;L;;;;;N;;;;;
+13AF6;EGYPTIAN HIEROGLYPH-13AF6;Lo;0;L;;;;;N;;;;;
+13AF7;EGYPTIAN HIEROGLYPH-13AF7;Lo;0;L;;;;;N;;;;;
+13AF8;EGYPTIAN HIEROGLYPH-13AF8;Lo;0;L;;;;;N;;;;;
+13AF9;EGYPTIAN HIEROGLYPH-13AF9;Lo;0;L;;;;;N;;;;;
+13AFA;EGYPTIAN HIEROGLYPH-13AFA;Lo;0;L;;;;;N;;;;;
+13AFB;EGYPTIAN HIEROGLYPH-13AFB;Lo;0;L;;;;;N;;;;;
+13AFC;EGYPTIAN HIEROGLYPH-13AFC;Lo;0;L;;;;;N;;;;;
+13AFD;EGYPTIAN HIEROGLYPH-13AFD;Lo;0;L;;;;;N;;;;;
+13AFE;EGYPTIAN HIEROGLYPH-13AFE;Lo;0;L;;;;;N;;;;;
+13AFF;EGYPTIAN HIEROGLYPH-13AFF;Lo;0;L;;;;;N;;;;;
+13B00;EGYPTIAN HIEROGLYPH-13B00;Lo;0;L;;;;;N;;;;;
+13B01;EGYPTIAN HIEROGLYPH-13B01;Lo;0;L;;;;;N;;;;;
+13B02;EGYPTIAN HIEROGLYPH-13B02;Lo;0;L;;;;;N;;;;;
+13B03;EGYPTIAN HIEROGLYPH-13B03;Lo;0;L;;;;;N;;;;;
+13B04;EGYPTIAN HIEROGLYPH-13B04;Lo;0;L;;;;;N;;;;;
+13B05;EGYPTIAN HIEROGLYPH-13B05;Lo;0;L;;;;;N;;;;;
+13B06;EGYPTIAN HIEROGLYPH-13B06;Lo;0;L;;;;;N;;;;;
+13B07;EGYPTIAN HIEROGLYPH-13B07;Lo;0;L;;;;;N;;;;;
+13B08;EGYPTIAN HIEROGLYPH-13B08;Lo;0;L;;;;;N;;;;;
+13B09;EGYPTIAN HIEROGLYPH-13B09;Lo;0;L;;;;;N;;;;;
+13B0A;EGYPTIAN HIEROGLYPH-13B0A;Lo;0;L;;;;;N;;;;;
+13B0B;EGYPTIAN HIEROGLYPH-13B0B;Lo;0;L;;;;;N;;;;;
+13B0C;EGYPTIAN HIEROGLYPH-13B0C;Lo;0;L;;;;;N;;;;;
+13B0D;EGYPTIAN HIEROGLYPH-13B0D;Lo;0;L;;;;;N;;;;;
+13B0E;EGYPTIAN HIEROGLYPH-13B0E;Lo;0;L;;;;;N;;;;;
+13B0F;EGYPTIAN HIEROGLYPH-13B0F;Lo;0;L;;;;;N;;;;;
+13B10;EGYPTIAN HIEROGLYPH-13B10;Lo;0;L;;;;;N;;;;;
+13B11;EGYPTIAN HIEROGLYPH-13B11;Lo;0;L;;;;;N;;;;;
+13B12;EGYPTIAN HIEROGLYPH-13B12;Lo;0;L;;;;;N;;;;;
+13B13;EGYPTIAN HIEROGLYPH-13B13;Lo;0;L;;;;;N;;;;;
+13B14;EGYPTIAN HIEROGLYPH-13B14;Lo;0;L;;;;;N;;;;;
+13B15;EGYPTIAN HIEROGLYPH-13B15;Lo;0;L;;;;;N;;;;;
+13B16;EGYPTIAN HIEROGLYPH-13B16;Lo;0;L;;;;;N;;;;;
+13B17;EGYPTIAN HIEROGLYPH-13B17;Lo;0;L;;;;;N;;;;;
+13B18;EGYPTIAN HIEROGLYPH-13B18;Lo;0;L;;;;;N;;;;;
+13B19;EGYPTIAN HIEROGLYPH-13B19;Lo;0;L;;;;;N;;;;;
+13B1A;EGYPTIAN HIEROGLYPH-13B1A;Lo;0;L;;;;;N;;;;;
+13B1B;EGYPTIAN HIEROGLYPH-13B1B;Lo;0;L;;;;;N;;;;;
+13B1C;EGYPTIAN HIEROGLYPH-13B1C;Lo;0;L;;;;;N;;;;;
+13B1D;EGYPTIAN HIEROGLYPH-13B1D;Lo;0;L;;;;;N;;;;;
+13B1E;EGYPTIAN HIEROGLYPH-13B1E;Lo;0;L;;;;;N;;;;;
+13B1F;EGYPTIAN HIEROGLYPH-13B1F;Lo;0;L;;;;;N;;;;;
+13B20;EGYPTIAN HIEROGLYPH-13B20;Lo;0;L;;;;;N;;;;;
+13B21;EGYPTIAN HIEROGLYPH-13B21;Lo;0;L;;;;;N;;;;;
+13B22;EGYPTIAN HIEROGLYPH-13B22;Lo;0;L;;;;;N;;;;;
+13B23;EGYPTIAN HIEROGLYPH-13B23;Lo;0;L;;;;;N;;;;;
+13B24;EGYPTIAN HIEROGLYPH-13B24;Lo;0;L;;;;;N;;;;;
+13B25;EGYPTIAN HIEROGLYPH-13B25;Lo;0;L;;;;;N;;;;;
+13B26;EGYPTIAN HIEROGLYPH-13B26;Lo;0;L;;;;;N;;;;;
+13B27;EGYPTIAN HIEROGLYPH-13B27;Lo;0;L;;;;;N;;;;;
+13B28;EGYPTIAN HIEROGLYPH-13B28;Lo;0;L;;;;;N;;;;;
+13B29;EGYPTIAN HIEROGLYPH-13B29;Lo;0;L;;;;;N;;;;;
+13B2A;EGYPTIAN HIEROGLYPH-13B2A;Lo;0;L;;;;;N;;;;;
+13B2B;EGYPTIAN HIEROGLYPH-13B2B;Lo;0;L;;;;;N;;;;;
+13B2C;EGYPTIAN HIEROGLYPH-13B2C;Lo;0;L;;;;;N;;;;;
+13B2D;EGYPTIAN HIEROGLYPH-13B2D;Lo;0;L;;;;;N;;;;;
+13B2E;EGYPTIAN HIEROGLYPH-13B2E;Lo;0;L;;;;;N;;;;;
+13B2F;EGYPTIAN HIEROGLYPH-13B2F;Lo;0;L;;;;;N;;;;;
+13B30;EGYPTIAN HIEROGLYPH-13B30;Lo;0;L;;;;;N;;;;;
+13B31;EGYPTIAN HIEROGLYPH-13B31;Lo;0;L;;;;;N;;;;;
+13B32;EGYPTIAN HIEROGLYPH-13B32;Lo;0;L;;;;;N;;;;;
+13B33;EGYPTIAN HIEROGLYPH-13B33;Lo;0;L;;;;;N;;;;;
+13B34;EGYPTIAN HIEROGLYPH-13B34;Lo;0;L;;;;;N;;;;;
+13B35;EGYPTIAN HIEROGLYPH-13B35;Lo;0;L;;;;;N;;;;;
+13B36;EGYPTIAN HIEROGLYPH-13B36;Lo;0;L;;;;;N;;;;;
+13B37;EGYPTIAN HIEROGLYPH-13B37;Lo;0;L;;;;;N;;;;;
+13B38;EGYPTIAN HIEROGLYPH-13B38;Lo;0;L;;;;;N;;;;;
+13B39;EGYPTIAN HIEROGLYPH-13B39;Lo;0;L;;;;;N;;;;;
+13B3A;EGYPTIAN HIEROGLYPH-13B3A;Lo;0;L;;;;;N;;;;;
+13B3B;EGYPTIAN HIEROGLYPH-13B3B;Lo;0;L;;;;;N;;;;;
+13B3C;EGYPTIAN HIEROGLYPH-13B3C;Lo;0;L;;;;;N;;;;;
+13B3D;EGYPTIAN HIEROGLYPH-13B3D;Lo;0;L;;;;;N;;;;;
+13B3E;EGYPTIAN HIEROGLYPH-13B3E;Lo;0;L;;;;;N;;;;;
+13B3F;EGYPTIAN HIEROGLYPH-13B3F;Lo;0;L;;;;;N;;;;;
+13B40;EGYPTIAN HIEROGLYPH-13B40;Lo;0;L;;;;;N;;;;;
+13B41;EGYPTIAN HIEROGLYPH-13B41;Lo;0;L;;;;;N;;;;;
+13B42;EGYPTIAN HIEROGLYPH-13B42;Lo;0;L;;;;;N;;;;;
+13B43;EGYPTIAN HIEROGLYPH-13B43;Lo;0;L;;;;;N;;;;;
+13B44;EGYPTIAN HIEROGLYPH-13B44;Lo;0;L;;;;;N;;;;;
+13B45;EGYPTIAN HIEROGLYPH-13B45;Lo;0;L;;;;;N;;;;;
+13B46;EGYPTIAN HIEROGLYPH-13B46;Lo;0;L;;;;;N;;;;;
+13B47;EGYPTIAN HIEROGLYPH-13B47;Lo;0;L;;;;;N;;;;;
+13B48;EGYPTIAN HIEROGLYPH-13B48;Lo;0;L;;;;;N;;;;;
+13B49;EGYPTIAN HIEROGLYPH-13B49;Lo;0;L;;;;;N;;;;;
+13B4A;EGYPTIAN HIEROGLYPH-13B4A;Lo;0;L;;;;;N;;;;;
+13B4B;EGYPTIAN HIEROGLYPH-13B4B;Lo;0;L;;;;;N;;;;;
+13B4C;EGYPTIAN HIEROGLYPH-13B4C;Lo;0;L;;;;;N;;;;;
+13B4D;EGYPTIAN HIEROGLYPH-13B4D;Lo;0;L;;;;;N;;;;;
+13B4E;EGYPTIAN HIEROGLYPH-13B4E;Lo;0;L;;;;;N;;;;;
+13B4F;EGYPTIAN HIEROGLYPH-13B4F;Lo;0;L;;;;;N;;;;;
+13B50;EGYPTIAN HIEROGLYPH-13B50;Lo;0;L;;;;;N;;;;;
+13B51;EGYPTIAN HIEROGLYPH-13B51;Lo;0;L;;;;;N;;;;;
+13B52;EGYPTIAN HIEROGLYPH-13B52;Lo;0;L;;;;;N;;;;;
+13B53;EGYPTIAN HIEROGLYPH-13B53;Lo;0;L;;;;;N;;;;;
+13B54;EGYPTIAN HIEROGLYPH-13B54;Lo;0;L;;;;;N;;;;;
+13B55;EGYPTIAN HIEROGLYPH-13B55;Lo;0;L;;;;;N;;;;;
+13B56;EGYPTIAN HIEROGLYPH-13B56;Lo;0;L;;;;;N;;;;;
+13B57;EGYPTIAN HIEROGLYPH-13B57;Lo;0;L;;;;;N;;;;;
+13B58;EGYPTIAN HIEROGLYPH-13B58;Lo;0;L;;;;;N;;;;;
+13B59;EGYPTIAN HIEROGLYPH-13B59;Lo;0;L;;;;;N;;;;;
+13B5A;EGYPTIAN HIEROGLYPH-13B5A;Lo;0;L;;;;;N;;;;;
+13B5B;EGYPTIAN HIEROGLYPH-13B5B;Lo;0;L;;;;;N;;;;;
+13B5C;EGYPTIAN HIEROGLYPH-13B5C;Lo;0;L;;;;;N;;;;;
+13B5D;EGYPTIAN HIEROGLYPH-13B5D;Lo;0;L;;;;;N;;;;;
+13B5E;EGYPTIAN HIEROGLYPH-13B5E;Lo;0;L;;;;;N;;;;;
+13B5F;EGYPTIAN HIEROGLYPH-13B5F;Lo;0;L;;;;;N;;;;;
+13B60;EGYPTIAN HIEROGLYPH-13B60;Lo;0;L;;;;;N;;;;;
+13B61;EGYPTIAN HIEROGLYPH-13B61;Lo;0;L;;;;;N;;;;;
+13B62;EGYPTIAN HIEROGLYPH-13B62;Lo;0;L;;;;;N;;;;;
+13B63;EGYPTIAN HIEROGLYPH-13B63;Lo;0;L;;;;;N;;;;;
+13B64;EGYPTIAN HIEROGLYPH-13B64;Lo;0;L;;;;;N;;;;;
+13B65;EGYPTIAN HIEROGLYPH-13B65;Lo;0;L;;;;;N;;;;;
+13B66;EGYPTIAN HIEROGLYPH-13B66;Lo;0;L;;;;;N;;;;;
+13B67;EGYPTIAN HIEROGLYPH-13B67;Lo;0;L;;;;;N;;;;;
+13B68;EGYPTIAN HIEROGLYPH-13B68;Lo;0;L;;;;;N;;;;;
+13B69;EGYPTIAN HIEROGLYPH-13B69;Lo;0;L;;;;;N;;;;;
+13B6A;EGYPTIAN HIEROGLYPH-13B6A;Lo;0;L;;;;;N;;;;;
+13B6B;EGYPTIAN HIEROGLYPH-13B6B;Lo;0;L;;;;;N;;;;;
+13B6C;EGYPTIAN HIEROGLYPH-13B6C;Lo;0;L;;;;;N;;;;;
+13B6D;EGYPTIAN HIEROGLYPH-13B6D;Lo;0;L;;;;;N;;;;;
+13B6E;EGYPTIAN HIEROGLYPH-13B6E;Lo;0;L;;;;;N;;;;;
+13B6F;EGYPTIAN HIEROGLYPH-13B6F;Lo;0;L;;;;;N;;;;;
+13B70;EGYPTIAN HIEROGLYPH-13B70;Lo;0;L;;;;;N;;;;;
+13B71;EGYPTIAN HIEROGLYPH-13B71;Lo;0;L;;;;;N;;;;;
+13B72;EGYPTIAN HIEROGLYPH-13B72;Lo;0;L;;;;;N;;;;;
+13B73;EGYPTIAN HIEROGLYPH-13B73;Lo;0;L;;;;;N;;;;;
+13B74;EGYPTIAN HIEROGLYPH-13B74;Lo;0;L;;;;;N;;;;;
+13B75;EGYPTIAN HIEROGLYPH-13B75;Lo;0;L;;;;;N;;;;;
+13B76;EGYPTIAN HIEROGLYPH-13B76;Lo;0;L;;;;;N;;;;;
+13B77;EGYPTIAN HIEROGLYPH-13B77;Lo;0;L;;;;;N;;;;;
+13B78;EGYPTIAN HIEROGLYPH-13B78;Lo;0;L;;;;;N;;;;;
+13B79;EGYPTIAN HIEROGLYPH-13B79;Lo;0;L;;;;;N;;;;;
+13B7A;EGYPTIAN HIEROGLYPH-13B7A;Lo;0;L;;;;;N;;;;;
+13B7B;EGYPTIAN HIEROGLYPH-13B7B;Lo;0;L;;;;;N;;;;;
+13B7C;EGYPTIAN HIEROGLYPH-13B7C;Lo;0;L;;;;;N;;;;;
+13B7D;EGYPTIAN HIEROGLYPH-13B7D;Lo;0;L;;;;;N;;;;;
+13B7E;EGYPTIAN HIEROGLYPH-13B7E;Lo;0;L;;;;;N;;;;;
+13B7F;EGYPTIAN HIEROGLYPH-13B7F;Lo;0;L;;;;;N;;;;;
+13B80;EGYPTIAN HIEROGLYPH-13B80;Lo;0;L;;;;;N;;;;;
+13B81;EGYPTIAN HIEROGLYPH-13B81;Lo;0;L;;;;;N;;;;;
+13B82;EGYPTIAN HIEROGLYPH-13B82;Lo;0;L;;;;;N;;;;;
+13B83;EGYPTIAN HIEROGLYPH-13B83;Lo;0;L;;;;;N;;;;;
+13B84;EGYPTIAN HIEROGLYPH-13B84;Lo;0;L;;;;;N;;;;;
+13B85;EGYPTIAN HIEROGLYPH-13B85;Lo;0;L;;;;;N;;;;;
+13B86;EGYPTIAN HIEROGLYPH-13B86;Lo;0;L;;;;;N;;;;;
+13B87;EGYPTIAN HIEROGLYPH-13B87;Lo;0;L;;;;;N;;;;;
+13B88;EGYPTIAN HIEROGLYPH-13B88;Lo;0;L;;;;;N;;;;;
+13B89;EGYPTIAN HIEROGLYPH-13B89;Lo;0;L;;;;;N;;;;;
+13B8A;EGYPTIAN HIEROGLYPH-13B8A;Lo;0;L;;;;;N;;;;;
+13B8B;EGYPTIAN HIEROGLYPH-13B8B;Lo;0;L;;;;;N;;;;;
+13B8C;EGYPTIAN HIEROGLYPH-13B8C;Lo;0;L;;;;;N;;;;;
+13B8D;EGYPTIAN HIEROGLYPH-13B8D;Lo;0;L;;;;;N;;;;;
+13B8E;EGYPTIAN HIEROGLYPH-13B8E;Lo;0;L;;;;;N;;;;;
+13B8F;EGYPTIAN HIEROGLYPH-13B8F;Lo;0;L;;;;;N;;;;;
+13B90;EGYPTIAN HIEROGLYPH-13B90;Lo;0;L;;;;;N;;;;;
+13B91;EGYPTIAN HIEROGLYPH-13B91;Lo;0;L;;;;;N;;;;;
+13B92;EGYPTIAN HIEROGLYPH-13B92;Lo;0;L;;;;;N;;;;;
+13B93;EGYPTIAN HIEROGLYPH-13B93;Lo;0;L;;;;;N;;;;;
+13B94;EGYPTIAN HIEROGLYPH-13B94;Lo;0;L;;;;;N;;;;;
+13B95;EGYPTIAN HIEROGLYPH-13B95;Lo;0;L;;;;;N;;;;;
+13B96;EGYPTIAN HIEROGLYPH-13B96;Lo;0;L;;;;;N;;;;;
+13B97;EGYPTIAN HIEROGLYPH-13B97;Lo;0;L;;;;;N;;;;;
+13B98;EGYPTIAN HIEROGLYPH-13B98;Lo;0;L;;;;;N;;;;;
+13B99;EGYPTIAN HIEROGLYPH-13B99;Lo;0;L;;;;;N;;;;;
+13B9A;EGYPTIAN HIEROGLYPH-13B9A;Lo;0;L;;;;;N;;;;;
+13B9B;EGYPTIAN HIEROGLYPH-13B9B;Lo;0;L;;;;;N;;;;;
+13B9C;EGYPTIAN HIEROGLYPH-13B9C;Lo;0;L;;;;;N;;;;;
+13B9D;EGYPTIAN HIEROGLYPH-13B9D;Lo;0;L;;;;;N;;;;;
+13B9E;EGYPTIAN HIEROGLYPH-13B9E;Lo;0;L;;;;;N;;;;;
+13B9F;EGYPTIAN HIEROGLYPH-13B9F;Lo;0;L;;;;;N;;;;;
+13BA0;EGYPTIAN HIEROGLYPH-13BA0;Lo;0;L;;;;;N;;;;;
+13BA1;EGYPTIAN HIEROGLYPH-13BA1;Lo;0;L;;;;;N;;;;;
+13BA2;EGYPTIAN HIEROGLYPH-13BA2;Lo;0;L;;;;;N;;;;;
+13BA3;EGYPTIAN HIEROGLYPH-13BA3;Lo;0;L;;;;;N;;;;;
+13BA4;EGYPTIAN HIEROGLYPH-13BA4;Lo;0;L;;;;;N;;;;;
+13BA5;EGYPTIAN HIEROGLYPH-13BA5;Lo;0;L;;;;;N;;;;;
+13BA6;EGYPTIAN HIEROGLYPH-13BA6;Lo;0;L;;;;;N;;;;;
+13BA7;EGYPTIAN HIEROGLYPH-13BA7;Lo;0;L;;;;;N;;;;;
+13BA8;EGYPTIAN HIEROGLYPH-13BA8;Lo;0;L;;;;;N;;;;;
+13BA9;EGYPTIAN HIEROGLYPH-13BA9;Lo;0;L;;;;;N;;;;;
+13BAA;EGYPTIAN HIEROGLYPH-13BAA;Lo;0;L;;;;;N;;;;;
+13BAB;EGYPTIAN HIEROGLYPH-13BAB;Lo;0;L;;;;;N;;;;;
+13BAC;EGYPTIAN HIEROGLYPH-13BAC;Lo;0;L;;;;;N;;;;;
+13BAD;EGYPTIAN HIEROGLYPH-13BAD;Lo;0;L;;;;;N;;;;;
+13BAE;EGYPTIAN HIEROGLYPH-13BAE;Lo;0;L;;;;;N;;;;;
+13BAF;EGYPTIAN HIEROGLYPH-13BAF;Lo;0;L;;;;;N;;;;;
+13BB0;EGYPTIAN HIEROGLYPH-13BB0;Lo;0;L;;;;;N;;;;;
+13BB1;EGYPTIAN HIEROGLYPH-13BB1;Lo;0;L;;;;;N;;;;;
+13BB2;EGYPTIAN HIEROGLYPH-13BB2;Lo;0;L;;;;;N;;;;;
+13BB3;EGYPTIAN HIEROGLYPH-13BB3;Lo;0;L;;;;;N;;;;;
+13BB4;EGYPTIAN HIEROGLYPH-13BB4;Lo;0;L;;;;;N;;;;;
+13BB5;EGYPTIAN HIEROGLYPH-13BB5;Lo;0;L;;;;;N;;;;;
+13BB6;EGYPTIAN HIEROGLYPH-13BB6;Lo;0;L;;;;;N;;;;;
+13BB7;EGYPTIAN HIEROGLYPH-13BB7;Lo;0;L;;;;;N;;;;;
+13BB8;EGYPTIAN HIEROGLYPH-13BB8;Lo;0;L;;;;;N;;;;;
+13BB9;EGYPTIAN HIEROGLYPH-13BB9;Lo;0;L;;;;;N;;;;;
+13BBA;EGYPTIAN HIEROGLYPH-13BBA;Lo;0;L;;;;;N;;;;;
+13BBB;EGYPTIAN HIEROGLYPH-13BBB;Lo;0;L;;;;;N;;;;;
+13BBC;EGYPTIAN HIEROGLYPH-13BBC;Lo;0;L;;;;;N;;;;;
+13BBD;EGYPTIAN HIEROGLYPH-13BBD;Lo;0;L;;;;;N;;;;;
+13BBE;EGYPTIAN HIEROGLYPH-13BBE;Lo;0;L;;;;;N;;;;;
+13BBF;EGYPTIAN HIEROGLYPH-13BBF;Lo;0;L;;;;;N;;;;;
+13BC0;EGYPTIAN HIEROGLYPH-13BC0;Lo;0;L;;;;;N;;;;;
+13BC1;EGYPTIAN HIEROGLYPH-13BC1;Lo;0;L;;;;;N;;;;;
+13BC2;EGYPTIAN HIEROGLYPH-13BC2;Lo;0;L;;;;;N;;;;;
+13BC3;EGYPTIAN HIEROGLYPH-13BC3;Lo;0;L;;;;;N;;;;;
+13BC4;EGYPTIAN HIEROGLYPH-13BC4;Lo;0;L;;;;;N;;;;;
+13BC5;EGYPTIAN HIEROGLYPH-13BC5;Lo;0;L;;;;;N;;;;;
+13BC6;EGYPTIAN HIEROGLYPH-13BC6;Lo;0;L;;;;;N;;;;;
+13BC7;EGYPTIAN HIEROGLYPH-13BC7;Lo;0;L;;;;;N;;;;;
+13BC8;EGYPTIAN HIEROGLYPH-13BC8;Lo;0;L;;;;;N;;;;;
+13BC9;EGYPTIAN HIEROGLYPH-13BC9;Lo;0;L;;;;;N;;;;;
+13BCA;EGYPTIAN HIEROGLYPH-13BCA;Lo;0;L;;;;;N;;;;;
+13BCB;EGYPTIAN HIEROGLYPH-13BCB;Lo;0;L;;;;;N;;;;;
+13BCC;EGYPTIAN HIEROGLYPH-13BCC;Lo;0;L;;;;;N;;;;;
+13BCD;EGYPTIAN HIEROGLYPH-13BCD;Lo;0;L;;;;;N;;;;;
+13BCE;EGYPTIAN HIEROGLYPH-13BCE;Lo;0;L;;;;;N;;;;;
+13BCF;EGYPTIAN HIEROGLYPH-13BCF;Lo;0;L;;;;;N;;;;;
+13BD0;EGYPTIAN HIEROGLYPH-13BD0;Lo;0;L;;;;;N;;;;;
+13BD1;EGYPTIAN HIEROGLYPH-13BD1;Lo;0;L;;;;;N;;;;;
+13BD2;EGYPTIAN HIEROGLYPH-13BD2;Lo;0;L;;;;;N;;;;;
+13BD3;EGYPTIAN HIEROGLYPH-13BD3;Lo;0;L;;;;;N;;;;;
+13BD4;EGYPTIAN HIEROGLYPH-13BD4;Lo;0;L;;;;;N;;;;;
+13BD5;EGYPTIAN HIEROGLYPH-13BD5;Lo;0;L;;;;;N;;;;;
+13BD6;EGYPTIAN HIEROGLYPH-13BD6;Lo;0;L;;;;;N;;;;;
+13BD7;EGYPTIAN HIEROGLYPH-13BD7;Lo;0;L;;;;;N;;;;;
+13BD8;EGYPTIAN HIEROGLYPH-13BD8;Lo;0;L;;;;;N;;;;;
+13BD9;EGYPTIAN HIEROGLYPH-13BD9;Lo;0;L;;;;;N;;;;;
+13BDA;EGYPTIAN HIEROGLYPH-13BDA;Lo;0;L;;;;;N;;;;;
+13BDB;EGYPTIAN HIEROGLYPH-13BDB;Lo;0;L;;;;;N;;;;;
+13BDC;EGYPTIAN HIEROGLYPH-13BDC;Lo;0;L;;;;;N;;;;;
+13BDD;EGYPTIAN HIEROGLYPH-13BDD;Lo;0;L;;;;;N;;;;;
+13BDE;EGYPTIAN HIEROGLYPH-13BDE;Lo;0;L;;;;;N;;;;;
+13BDF;EGYPTIAN HIEROGLYPH-13BDF;Lo;0;L;;;;;N;;;;;
+13BE0;EGYPTIAN HIEROGLYPH-13BE0;Lo;0;L;;;;;N;;;;;
+13BE1;EGYPTIAN HIEROGLYPH-13BE1;Lo;0;L;;;;;N;;;;;
+13BE2;EGYPTIAN HIEROGLYPH-13BE2;Lo;0;L;;;;;N;;;;;
+13BE3;EGYPTIAN HIEROGLYPH-13BE3;Lo;0;L;;;;;N;;;;;
+13BE4;EGYPTIAN HIEROGLYPH-13BE4;Lo;0;L;;;;;N;;;;;
+13BE5;EGYPTIAN HIEROGLYPH-13BE5;Lo;0;L;;;;;N;;;;;
+13BE6;EGYPTIAN HIEROGLYPH-13BE6;Lo;0;L;;;;;N;;;;;
+13BE7;EGYPTIAN HIEROGLYPH-13BE7;Lo;0;L;;;;;N;;;;;
+13BE8;EGYPTIAN HIEROGLYPH-13BE8;Lo;0;L;;;;;N;;;;;
+13BE9;EGYPTIAN HIEROGLYPH-13BE9;Lo;0;L;;;;;N;;;;;
+13BEA;EGYPTIAN HIEROGLYPH-13BEA;Lo;0;L;;;;;N;;;;;
+13BEB;EGYPTIAN HIEROGLYPH-13BEB;Lo;0;L;;;;;N;;;;;
+13BEC;EGYPTIAN HIEROGLYPH-13BEC;Lo;0;L;;;;;N;;;;;
+13BED;EGYPTIAN HIEROGLYPH-13BED;Lo;0;L;;;;;N;;;;;
+13BEE;EGYPTIAN HIEROGLYPH-13BEE;Lo;0;L;;;;;N;;;;;
+13BEF;EGYPTIAN HIEROGLYPH-13BEF;Lo;0;L;;;;;N;;;;;
+13BF0;EGYPTIAN HIEROGLYPH-13BF0;Lo;0;L;;;;;N;;;;;
+13BF1;EGYPTIAN HIEROGLYPH-13BF1;Lo;0;L;;;;;N;;;;;
+13BF2;EGYPTIAN HIEROGLYPH-13BF2;Lo;0;L;;;;;N;;;;;
+13BF3;EGYPTIAN HIEROGLYPH-13BF3;Lo;0;L;;;;;N;;;;;
+13BF4;EGYPTIAN HIEROGLYPH-13BF4;Lo;0;L;;;;;N;;;;;
+13BF5;EGYPTIAN HIEROGLYPH-13BF5;Lo;0;L;;;;;N;;;;;
+13BF6;EGYPTIAN HIEROGLYPH-13BF6;Lo;0;L;;;;;N;;;;;
+13BF7;EGYPTIAN HIEROGLYPH-13BF7;Lo;0;L;;;;;N;;;;;
+13BF8;EGYPTIAN HIEROGLYPH-13BF8;Lo;0;L;;;;;N;;;;;
+13BF9;EGYPTIAN HIEROGLYPH-13BF9;Lo;0;L;;;;;N;;;;;
+13BFA;EGYPTIAN HIEROGLYPH-13BFA;Lo;0;L;;;;;N;;;;;
+13BFB;EGYPTIAN HIEROGLYPH-13BFB;Lo;0;L;;;;;N;;;;;
+13BFC;EGYPTIAN HIEROGLYPH-13BFC;Lo;0;L;;;;;N;;;;;
+13BFD;EGYPTIAN HIEROGLYPH-13BFD;Lo;0;L;;;;;N;;;;;
+13BFE;EGYPTIAN HIEROGLYPH-13BFE;Lo;0;L;;;;;N;;;;;
+13BFF;EGYPTIAN HIEROGLYPH-13BFF;Lo;0;L;;;;;N;;;;;
+13C00;EGYPTIAN HIEROGLYPH-13C00;Lo;0;L;;;;;N;;;;;
+13C01;EGYPTIAN HIEROGLYPH-13C01;Lo;0;L;;;;;N;;;;;
+13C02;EGYPTIAN HIEROGLYPH-13C02;Lo;0;L;;;;;N;;;;;
+13C03;EGYPTIAN HIEROGLYPH-13C03;Lo;0;L;;;;;N;;;;;
+13C04;EGYPTIAN HIEROGLYPH-13C04;Lo;0;L;;;;;N;;;;;
+13C05;EGYPTIAN HIEROGLYPH-13C05;Lo;0;L;;;;;N;;;;;
+13C06;EGYPTIAN HIEROGLYPH-13C06;Lo;0;L;;;;;N;;;;;
+13C07;EGYPTIAN HIEROGLYPH-13C07;Lo;0;L;;;;;N;;;;;
+13C08;EGYPTIAN HIEROGLYPH-13C08;Lo;0;L;;;;;N;;;;;
+13C09;EGYPTIAN HIEROGLYPH-13C09;Lo;0;L;;;;;N;;;;;
+13C0A;EGYPTIAN HIEROGLYPH-13C0A;Lo;0;L;;;;;N;;;;;
+13C0B;EGYPTIAN HIEROGLYPH-13C0B;Lo;0;L;;;;;N;;;;;
+13C0C;EGYPTIAN HIEROGLYPH-13C0C;Lo;0;L;;;;;N;;;;;
+13C0D;EGYPTIAN HIEROGLYPH-13C0D;Lo;0;L;;;;;N;;;;;
+13C0E;EGYPTIAN HIEROGLYPH-13C0E;Lo;0;L;;;;;N;;;;;
+13C0F;EGYPTIAN HIEROGLYPH-13C0F;Lo;0;L;;;;;N;;;;;
+13C10;EGYPTIAN HIEROGLYPH-13C10;Lo;0;L;;;;;N;;;;;
+13C11;EGYPTIAN HIEROGLYPH-13C11;Lo;0;L;;;;;N;;;;;
+13C12;EGYPTIAN HIEROGLYPH-13C12;Lo;0;L;;;;;N;;;;;
+13C13;EGYPTIAN HIEROGLYPH-13C13;Lo;0;L;;;;;N;;;;;
+13C14;EGYPTIAN HIEROGLYPH-13C14;Lo;0;L;;;;;N;;;;;
+13C15;EGYPTIAN HIEROGLYPH-13C15;Lo;0;L;;;;;N;;;;;
+13C16;EGYPTIAN HIEROGLYPH-13C16;Lo;0;L;;;;;N;;;;;
+13C17;EGYPTIAN HIEROGLYPH-13C17;Lo;0;L;;;;;N;;;;;
+13C18;EGYPTIAN HIEROGLYPH-13C18;Lo;0;L;;;;;N;;;;;
+13C19;EGYPTIAN HIEROGLYPH-13C19;Lo;0;L;;;;;N;;;;;
+13C1A;EGYPTIAN HIEROGLYPH-13C1A;Lo;0;L;;;;;N;;;;;
+13C1B;EGYPTIAN HIEROGLYPH-13C1B;Lo;0;L;;;;;N;;;;;
+13C1C;EGYPTIAN HIEROGLYPH-13C1C;Lo;0;L;;;;;N;;;;;
+13C1D;EGYPTIAN HIEROGLYPH-13C1D;Lo;0;L;;;;;N;;;;;
+13C1E;EGYPTIAN HIEROGLYPH-13C1E;Lo;0;L;;;;;N;;;;;
+13C1F;EGYPTIAN HIEROGLYPH-13C1F;Lo;0;L;;;;;N;;;;;
+13C20;EGYPTIAN HIEROGLYPH-13C20;Lo;0;L;;;;;N;;;;;
+13C21;EGYPTIAN HIEROGLYPH-13C21;Lo;0;L;;;;;N;;;;;
+13C22;EGYPTIAN HIEROGLYPH-13C22;Lo;0;L;;;;;N;;;;;
+13C23;EGYPTIAN HIEROGLYPH-13C23;Lo;0;L;;;;;N;;;;;
+13C24;EGYPTIAN HIEROGLYPH-13C24;Lo;0;L;;;;;N;;;;;
+13C25;EGYPTIAN HIEROGLYPH-13C25;Lo;0;L;;;;;N;;;;;
+13C26;EGYPTIAN HIEROGLYPH-13C26;Lo;0;L;;;;;N;;;;;
+13C27;EGYPTIAN HIEROGLYPH-13C27;Lo;0;L;;;;;N;;;;;
+13C28;EGYPTIAN HIEROGLYPH-13C28;Lo;0;L;;;;;N;;;;;
+13C29;EGYPTIAN HIEROGLYPH-13C29;Lo;0;L;;;;;N;;;;;
+13C2A;EGYPTIAN HIEROGLYPH-13C2A;Lo;0;L;;;;;N;;;;;
+13C2B;EGYPTIAN HIEROGLYPH-13C2B;Lo;0;L;;;;;N;;;;;
+13C2C;EGYPTIAN HIEROGLYPH-13C2C;Lo;0;L;;;;;N;;;;;
+13C2D;EGYPTIAN HIEROGLYPH-13C2D;Lo;0;L;;;;;N;;;;;
+13C2E;EGYPTIAN HIEROGLYPH-13C2E;Lo;0;L;;;;;N;;;;;
+13C2F;EGYPTIAN HIEROGLYPH-13C2F;Lo;0;L;;;;;N;;;;;
+13C30;EGYPTIAN HIEROGLYPH-13C30;Lo;0;L;;;;;N;;;;;
+13C31;EGYPTIAN HIEROGLYPH-13C31;Lo;0;L;;;;;N;;;;;
+13C32;EGYPTIAN HIEROGLYPH-13C32;Lo;0;L;;;;;N;;;;;
+13C33;EGYPTIAN HIEROGLYPH-13C33;Lo;0;L;;;;;N;;;;;
+13C34;EGYPTIAN HIEROGLYPH-13C34;Lo;0;L;;;;;N;;;;;
+13C35;EGYPTIAN HIEROGLYPH-13C35;Lo;0;L;;;;;N;;;;;
+13C36;EGYPTIAN HIEROGLYPH-13C36;Lo;0;L;;;;;N;;;;;
+13C37;EGYPTIAN HIEROGLYPH-13C37;Lo;0;L;;;;;N;;;;;
+13C38;EGYPTIAN HIEROGLYPH-13C38;Lo;0;L;;;;;N;;;;;
+13C39;EGYPTIAN HIEROGLYPH-13C39;Lo;0;L;;;;;N;;;;;
+13C3A;EGYPTIAN HIEROGLYPH-13C3A;Lo;0;L;;;;;N;;;;;
+13C3B;EGYPTIAN HIEROGLYPH-13C3B;Lo;0;L;;;;;N;;;;;
+13C3C;EGYPTIAN HIEROGLYPH-13C3C;Lo;0;L;;;;;N;;;;;
+13C3D;EGYPTIAN HIEROGLYPH-13C3D;Lo;0;L;;;;;N;;;;;
+13C3E;EGYPTIAN HIEROGLYPH-13C3E;Lo;0;L;;;;;N;;;;;
+13C3F;EGYPTIAN HIEROGLYPH-13C3F;Lo;0;L;;;;;N;;;;;
+13C40;EGYPTIAN HIEROGLYPH-13C40;Lo;0;L;;;;;N;;;;;
+13C41;EGYPTIAN HIEROGLYPH-13C41;Lo;0;L;;;;;N;;;;;
+13C42;EGYPTIAN HIEROGLYPH-13C42;Lo;0;L;;;;;N;;;;;
+13C43;EGYPTIAN HIEROGLYPH-13C43;Lo;0;L;;;;;N;;;;;
+13C44;EGYPTIAN HIEROGLYPH-13C44;Lo;0;L;;;;;N;;;;;
+13C45;EGYPTIAN HIEROGLYPH-13C45;Lo;0;L;;;;;N;;;;;
+13C46;EGYPTIAN HIEROGLYPH-13C46;Lo;0;L;;;;;N;;;;;
+13C47;EGYPTIAN HIEROGLYPH-13C47;Lo;0;L;;;;;N;;;;;
+13C48;EGYPTIAN HIEROGLYPH-13C48;Lo;0;L;;;;;N;;;;;
+13C49;EGYPTIAN HIEROGLYPH-13C49;Lo;0;L;;;;;N;;;;;
+13C4A;EGYPTIAN HIEROGLYPH-13C4A;Lo;0;L;;;;;N;;;;;
+13C4B;EGYPTIAN HIEROGLYPH-13C4B;Lo;0;L;;;;;N;;;;;
+13C4C;EGYPTIAN HIEROGLYPH-13C4C;Lo;0;L;;;;;N;;;;;
+13C4D;EGYPTIAN HIEROGLYPH-13C4D;Lo;0;L;;;;;N;;;;;
+13C4E;EGYPTIAN HIEROGLYPH-13C4E;Lo;0;L;;;;;N;;;;;
+13C4F;EGYPTIAN HIEROGLYPH-13C4F;Lo;0;L;;;;;N;;;;;
+13C50;EGYPTIAN HIEROGLYPH-13C50;Lo;0;L;;;;;N;;;;;
+13C51;EGYPTIAN HIEROGLYPH-13C51;Lo;0;L;;;;;N;;;;;
+13C52;EGYPTIAN HIEROGLYPH-13C52;Lo;0;L;;;;;N;;;;;
+13C53;EGYPTIAN HIEROGLYPH-13C53;Lo;0;L;;;;;N;;;;;
+13C54;EGYPTIAN HIEROGLYPH-13C54;Lo;0;L;;;;;N;;;;;
+13C55;EGYPTIAN HIEROGLYPH-13C55;Lo;0;L;;;;;N;;;;;
+13C56;EGYPTIAN HIEROGLYPH-13C56;Lo;0;L;;;;;N;;;;;
+13C57;EGYPTIAN HIEROGLYPH-13C57;Lo;0;L;;;;;N;;;;;
+13C58;EGYPTIAN HIEROGLYPH-13C58;Lo;0;L;;;;;N;;;;;
+13C59;EGYPTIAN HIEROGLYPH-13C59;Lo;0;L;;;;;N;;;;;
+13C5A;EGYPTIAN HIEROGLYPH-13C5A;Lo;0;L;;;;;N;;;;;
+13C5B;EGYPTIAN HIEROGLYPH-13C5B;Lo;0;L;;;;;N;;;;;
+13C5C;EGYPTIAN HIEROGLYPH-13C5C;Lo;0;L;;;;;N;;;;;
+13C5D;EGYPTIAN HIEROGLYPH-13C5D;Lo;0;L;;;;;N;;;;;
+13C5E;EGYPTIAN HIEROGLYPH-13C5E;Lo;0;L;;;;;N;;;;;
+13C5F;EGYPTIAN HIEROGLYPH-13C5F;Lo;0;L;;;;;N;;;;;
+13C60;EGYPTIAN HIEROGLYPH-13C60;Lo;0;L;;;;;N;;;;;
+13C61;EGYPTIAN HIEROGLYPH-13C61;Lo;0;L;;;;;N;;;;;
+13C62;EGYPTIAN HIEROGLYPH-13C62;Lo;0;L;;;;;N;;;;;
+13C63;EGYPTIAN HIEROGLYPH-13C63;Lo;0;L;;;;;N;;;;;
+13C64;EGYPTIAN HIEROGLYPH-13C64;Lo;0;L;;;;;N;;;;;
+13C65;EGYPTIAN HIEROGLYPH-13C65;Lo;0;L;;;;;N;;;;;
+13C66;EGYPTIAN HIEROGLYPH-13C66;Lo;0;L;;;;;N;;;;;
+13C67;EGYPTIAN HIEROGLYPH-13C67;Lo;0;L;;;;;N;;;;;
+13C68;EGYPTIAN HIEROGLYPH-13C68;Lo;0;L;;;;;N;;;;;
+13C69;EGYPTIAN HIEROGLYPH-13C69;Lo;0;L;;;;;N;;;;;
+13C6A;EGYPTIAN HIEROGLYPH-13C6A;Lo;0;L;;;;;N;;;;;
+13C6B;EGYPTIAN HIEROGLYPH-13C6B;Lo;0;L;;;;;N;;;;;
+13C6C;EGYPTIAN HIEROGLYPH-13C6C;Lo;0;L;;;;;N;;;;;
+13C6D;EGYPTIAN HIEROGLYPH-13C6D;Lo;0;L;;;;;N;;;;;
+13C6E;EGYPTIAN HIEROGLYPH-13C6E;Lo;0;L;;;;;N;;;;;
+13C6F;EGYPTIAN HIEROGLYPH-13C6F;Lo;0;L;;;;;N;;;;;
+13C70;EGYPTIAN HIEROGLYPH-13C70;Lo;0;L;;;;;N;;;;;
+13C71;EGYPTIAN HIEROGLYPH-13C71;Lo;0;L;;;;;N;;;;;
+13C72;EGYPTIAN HIEROGLYPH-13C72;Lo;0;L;;;;;N;;;;;
+13C73;EGYPTIAN HIEROGLYPH-13C73;Lo;0;L;;;;;N;;;;;
+13C74;EGYPTIAN HIEROGLYPH-13C74;Lo;0;L;;;;;N;;;;;
+13C75;EGYPTIAN HIEROGLYPH-13C75;Lo;0;L;;;;;N;;;;;
+13C76;EGYPTIAN HIEROGLYPH-13C76;Lo;0;L;;;;;N;;;;;
+13C77;EGYPTIAN HIEROGLYPH-13C77;Lo;0;L;;;;;N;;;;;
+13C78;EGYPTIAN HIEROGLYPH-13C78;Lo;0;L;;;;;N;;;;;
+13C79;EGYPTIAN HIEROGLYPH-13C79;Lo;0;L;;;;;N;;;;;
+13C7A;EGYPTIAN HIEROGLYPH-13C7A;Lo;0;L;;;;;N;;;;;
+13C7B;EGYPTIAN HIEROGLYPH-13C7B;Lo;0;L;;;;;N;;;;;
+13C7C;EGYPTIAN HIEROGLYPH-13C7C;Lo;0;L;;;;;N;;;;;
+13C7D;EGYPTIAN HIEROGLYPH-13C7D;Lo;0;L;;;;;N;;;;;
+13C7E;EGYPTIAN HIEROGLYPH-13C7E;Lo;0;L;;;;;N;;;;;
+13C7F;EGYPTIAN HIEROGLYPH-13C7F;Lo;0;L;;;;;N;;;;;
+13C80;EGYPTIAN HIEROGLYPH-13C80;Lo;0;L;;;;;N;;;;;
+13C81;EGYPTIAN HIEROGLYPH-13C81;Lo;0;L;;;;;N;;;;;
+13C82;EGYPTIAN HIEROGLYPH-13C82;Lo;0;L;;;;;N;;;;;
+13C83;EGYPTIAN HIEROGLYPH-13C83;Lo;0;L;;;;;N;;;;;
+13C84;EGYPTIAN HIEROGLYPH-13C84;Lo;0;L;;;;;N;;;;;
+13C85;EGYPTIAN HIEROGLYPH-13C85;Lo;0;L;;;;;N;;;;;
+13C86;EGYPTIAN HIEROGLYPH-13C86;Lo;0;L;;;;;N;;;;;
+13C87;EGYPTIAN HIEROGLYPH-13C87;Lo;0;L;;;;;N;;;;;
+13C88;EGYPTIAN HIEROGLYPH-13C88;Lo;0;L;;;;;N;;;;;
+13C89;EGYPTIAN HIEROGLYPH-13C89;Lo;0;L;;;;;N;;;;;
+13C8A;EGYPTIAN HIEROGLYPH-13C8A;Lo;0;L;;;;;N;;;;;
+13C8B;EGYPTIAN HIEROGLYPH-13C8B;Lo;0;L;;;;;N;;;;;
+13C8C;EGYPTIAN HIEROGLYPH-13C8C;Lo;0;L;;;;;N;;;;;
+13C8D;EGYPTIAN HIEROGLYPH-13C8D;Lo;0;L;;;;;N;;;;;
+13C8E;EGYPTIAN HIEROGLYPH-13C8E;Lo;0;L;;;;;N;;;;;
+13C8F;EGYPTIAN HIEROGLYPH-13C8F;Lo;0;L;;;;;N;;;;;
+13C90;EGYPTIAN HIEROGLYPH-13C90;Lo;0;L;;;;;N;;;;;
+13C91;EGYPTIAN HIEROGLYPH-13C91;Lo;0;L;;;;;N;;;;;
+13C92;EGYPTIAN HIEROGLYPH-13C92;Lo;0;L;;;;;N;;;;;
+13C93;EGYPTIAN HIEROGLYPH-13C93;Lo;0;L;;;;;N;;;;;
+13C94;EGYPTIAN HIEROGLYPH-13C94;Lo;0;L;;;;;N;;;;;
+13C95;EGYPTIAN HIEROGLYPH-13C95;Lo;0;L;;;;;N;;;;;
+13C96;EGYPTIAN HIEROGLYPH-13C96;Lo;0;L;;;;;N;;;;;
+13C97;EGYPTIAN HIEROGLYPH-13C97;Lo;0;L;;;;;N;;;;;
+13C98;EGYPTIAN HIEROGLYPH-13C98;Lo;0;L;;;;;N;;;;;
+13C99;EGYPTIAN HIEROGLYPH-13C99;Lo;0;L;;;;;N;;;;;
+13C9A;EGYPTIAN HIEROGLYPH-13C9A;Lo;0;L;;;;;N;;;;;
+13C9B;EGYPTIAN HIEROGLYPH-13C9B;Lo;0;L;;;;;N;;;;;
+13C9C;EGYPTIAN HIEROGLYPH-13C9C;Lo;0;L;;;;;N;;;;;
+13C9D;EGYPTIAN HIEROGLYPH-13C9D;Lo;0;L;;;;;N;;;;;
+13C9E;EGYPTIAN HIEROGLYPH-13C9E;Lo;0;L;;;;;N;;;;;
+13C9F;EGYPTIAN HIEROGLYPH-13C9F;Lo;0;L;;;;;N;;;;;
+13CA0;EGYPTIAN HIEROGLYPH-13CA0;Lo;0;L;;;;;N;;;;;
+13CA1;EGYPTIAN HIEROGLYPH-13CA1;Lo;0;L;;;;;N;;;;;
+13CA2;EGYPTIAN HIEROGLYPH-13CA2;Lo;0;L;;;;;N;;;;;
+13CA3;EGYPTIAN HIEROGLYPH-13CA3;Lo;0;L;;;;;N;;;;;
+13CA4;EGYPTIAN HIEROGLYPH-13CA4;Lo;0;L;;;;;N;;;;;
+13CA5;EGYPTIAN HIEROGLYPH-13CA5;Lo;0;L;;;;;N;;;;;
+13CA6;EGYPTIAN HIEROGLYPH-13CA6;Lo;0;L;;;;;N;;;;;
+13CA7;EGYPTIAN HIEROGLYPH-13CA7;Lo;0;L;;;;;N;;;;;
+13CA8;EGYPTIAN HIEROGLYPH-13CA8;Lo;0;L;;;;;N;;;;;
+13CA9;EGYPTIAN HIEROGLYPH-13CA9;Lo;0;L;;;;;N;;;;;
+13CAA;EGYPTIAN HIEROGLYPH-13CAA;Lo;0;L;;;;;N;;;;;
+13CAB;EGYPTIAN HIEROGLYPH-13CAB;Lo;0;L;;;;;N;;;;;
+13CAC;EGYPTIAN HIEROGLYPH-13CAC;Lo;0;L;;;;;N;;;;;
+13CAD;EGYPTIAN HIEROGLYPH-13CAD;Lo;0;L;;;;;N;;;;;
+13CAE;EGYPTIAN HIEROGLYPH-13CAE;Lo;0;L;;;;;N;;;;;
+13CAF;EGYPTIAN HIEROGLYPH-13CAF;Lo;0;L;;;;;N;;;;;
+13CB0;EGYPTIAN HIEROGLYPH-13CB0;Lo;0;L;;;;;N;;;;;
+13CB1;EGYPTIAN HIEROGLYPH-13CB1;Lo;0;L;;;;;N;;;;;
+13CB2;EGYPTIAN HIEROGLYPH-13CB2;Lo;0;L;;;;;N;;;;;
+13CB3;EGYPTIAN HIEROGLYPH-13CB3;Lo;0;L;;;;;N;;;;;
+13CB4;EGYPTIAN HIEROGLYPH-13CB4;Lo;0;L;;;;;N;;;;;
+13CB5;EGYPTIAN HIEROGLYPH-13CB5;Lo;0;L;;;;;N;;;;;
+13CB6;EGYPTIAN HIEROGLYPH-13CB6;Lo;0;L;;;;;N;;;;;
+13CB7;EGYPTIAN HIEROGLYPH-13CB7;Lo;0;L;;;;;N;;;;;
+13CB8;EGYPTIAN HIEROGLYPH-13CB8;Lo;0;L;;;;;N;;;;;
+13CB9;EGYPTIAN HIEROGLYPH-13CB9;Lo;0;L;;;;;N;;;;;
+13CBA;EGYPTIAN HIEROGLYPH-13CBA;Lo;0;L;;;;;N;;;;;
+13CBB;EGYPTIAN HIEROGLYPH-13CBB;Lo;0;L;;;;;N;;;;;
+13CBC;EGYPTIAN HIEROGLYPH-13CBC;Lo;0;L;;;;;N;;;;;
+13CBD;EGYPTIAN HIEROGLYPH-13CBD;Lo;0;L;;;;;N;;;;;
+13CBE;EGYPTIAN HIEROGLYPH-13CBE;Lo;0;L;;;;;N;;;;;
+13CBF;EGYPTIAN HIEROGLYPH-13CBF;Lo;0;L;;;;;N;;;;;
+13CC0;EGYPTIAN HIEROGLYPH-13CC0;Lo;0;L;;;;;N;;;;;
+13CC1;EGYPTIAN HIEROGLYPH-13CC1;Lo;0;L;;;;;N;;;;;
+13CC2;EGYPTIAN HIEROGLYPH-13CC2;Lo;0;L;;;;;N;;;;;
+13CC3;EGYPTIAN HIEROGLYPH-13CC3;Lo;0;L;;;;;N;;;;;
+13CC4;EGYPTIAN HIEROGLYPH-13CC4;Lo;0;L;;;;;N;;;;;
+13CC5;EGYPTIAN HIEROGLYPH-13CC5;Lo;0;L;;;;;N;;;;;
+13CC6;EGYPTIAN HIEROGLYPH-13CC6;Lo;0;L;;;;;N;;;;;
+13CC7;EGYPTIAN HIEROGLYPH-13CC7;Lo;0;L;;;;;N;;;;;
+13CC8;EGYPTIAN HIEROGLYPH-13CC8;Lo;0;L;;;;;N;;;;;
+13CC9;EGYPTIAN HIEROGLYPH-13CC9;Lo;0;L;;;;;N;;;;;
+13CCA;EGYPTIAN HIEROGLYPH-13CCA;Lo;0;L;;;;;N;;;;;
+13CCB;EGYPTIAN HIEROGLYPH-13CCB;Lo;0;L;;;;;N;;;;;
+13CCC;EGYPTIAN HIEROGLYPH-13CCC;Lo;0;L;;;;;N;;;;;
+13CCD;EGYPTIAN HIEROGLYPH-13CCD;Lo;0;L;;;;;N;;;;;
+13CCE;EGYPTIAN HIEROGLYPH-13CCE;Lo;0;L;;;;;N;;;;;
+13CCF;EGYPTIAN HIEROGLYPH-13CCF;Lo;0;L;;;;;N;;;;;
+13CD0;EGYPTIAN HIEROGLYPH-13CD0;Lo;0;L;;;;;N;;;;;
+13CD1;EGYPTIAN HIEROGLYPH-13CD1;Lo;0;L;;;;;N;;;;;
+13CD2;EGYPTIAN HIEROGLYPH-13CD2;Lo;0;L;;;;;N;;;;;
+13CD3;EGYPTIAN HIEROGLYPH-13CD3;Lo;0;L;;;;;N;;;;;
+13CD4;EGYPTIAN HIEROGLYPH-13CD4;Lo;0;L;;;;;N;;;;;
+13CD5;EGYPTIAN HIEROGLYPH-13CD5;Lo;0;L;;;;;N;;;;;
+13CD6;EGYPTIAN HIEROGLYPH-13CD6;Lo;0;L;;;;;N;;;;;
+13CD7;EGYPTIAN HIEROGLYPH-13CD7;Lo;0;L;;;;;N;;;;;
+13CD8;EGYPTIAN HIEROGLYPH-13CD8;Lo;0;L;;;;;N;;;;;
+13CD9;EGYPTIAN HIEROGLYPH-13CD9;Lo;0;L;;;;;N;;;;;
+13CDA;EGYPTIAN HIEROGLYPH-13CDA;Lo;0;L;;;;;N;;;;;
+13CDB;EGYPTIAN HIEROGLYPH-13CDB;Lo;0;L;;;;;N;;;;;
+13CDC;EGYPTIAN HIEROGLYPH-13CDC;Lo;0;L;;;;;N;;;;;
+13CDD;EGYPTIAN HIEROGLYPH-13CDD;Lo;0;L;;;;;N;;;;;
+13CDE;EGYPTIAN HIEROGLYPH-13CDE;Lo;0;L;;;;;N;;;;;
+13CDF;EGYPTIAN HIEROGLYPH-13CDF;Lo;0;L;;;;;N;;;;;
+13CE0;EGYPTIAN HIEROGLYPH-13CE0;Lo;0;L;;;;;N;;;;;
+13CE1;EGYPTIAN HIEROGLYPH-13CE1;Lo;0;L;;;;;N;;;;;
+13CE2;EGYPTIAN HIEROGLYPH-13CE2;Lo;0;L;;;;;N;;;;;
+13CE3;EGYPTIAN HIEROGLYPH-13CE3;Lo;0;L;;;;;N;;;;;
+13CE4;EGYPTIAN HIEROGLYPH-13CE4;Lo;0;L;;;;;N;;;;;
+13CE5;EGYPTIAN HIEROGLYPH-13CE5;Lo;0;L;;;;;N;;;;;
+13CE6;EGYPTIAN HIEROGLYPH-13CE6;Lo;0;L;;;;;N;;;;;
+13CE7;EGYPTIAN HIEROGLYPH-13CE7;Lo;0;L;;;;;N;;;;;
+13CE8;EGYPTIAN HIEROGLYPH-13CE8;Lo;0;L;;;;;N;;;;;
+13CE9;EGYPTIAN HIEROGLYPH-13CE9;Lo;0;L;;;;;N;;;;;
+13CEA;EGYPTIAN HIEROGLYPH-13CEA;Lo;0;L;;;;;N;;;;;
+13CEB;EGYPTIAN HIEROGLYPH-13CEB;Lo;0;L;;;;;N;;;;;
+13CEC;EGYPTIAN HIEROGLYPH-13CEC;Lo;0;L;;;;;N;;;;;
+13CED;EGYPTIAN HIEROGLYPH-13CED;Lo;0;L;;;;;N;;;;;
+13CEE;EGYPTIAN HIEROGLYPH-13CEE;Lo;0;L;;;;;N;;;;;
+13CEF;EGYPTIAN HIEROGLYPH-13CEF;Lo;0;L;;;;;N;;;;;
+13CF0;EGYPTIAN HIEROGLYPH-13CF0;Lo;0;L;;;;;N;;;;;
+13CF1;EGYPTIAN HIEROGLYPH-13CF1;Lo;0;L;;;;;N;;;;;
+13CF2;EGYPTIAN HIEROGLYPH-13CF2;Lo;0;L;;;;;N;;;;;
+13CF3;EGYPTIAN HIEROGLYPH-13CF3;Lo;0;L;;;;;N;;;;;
+13CF4;EGYPTIAN HIEROGLYPH-13CF4;Lo;0;L;;;;;N;;;;;
+13CF5;EGYPTIAN HIEROGLYPH-13CF5;Lo;0;L;;;;;N;;;;;
+13CF6;EGYPTIAN HIEROGLYPH-13CF6;Lo;0;L;;;;;N;;;;;
+13CF7;EGYPTIAN HIEROGLYPH-13CF7;Lo;0;L;;;;;N;;;;;
+13CF8;EGYPTIAN HIEROGLYPH-13CF8;Lo;0;L;;;;;N;;;;;
+13CF9;EGYPTIAN HIEROGLYPH-13CF9;Lo;0;L;;;;;N;;;;;
+13CFA;EGYPTIAN HIEROGLYPH-13CFA;Lo;0;L;;;;;N;;;;;
+13CFB;EGYPTIAN HIEROGLYPH-13CFB;Lo;0;L;;;;;N;;;;;
+13CFC;EGYPTIAN HIEROGLYPH-13CFC;Lo;0;L;;;;;N;;;;;
+13CFD;EGYPTIAN HIEROGLYPH-13CFD;Lo;0;L;;;;;N;;;;;
+13CFE;EGYPTIAN HIEROGLYPH-13CFE;Lo;0;L;;;;;N;;;;;
+13CFF;EGYPTIAN HIEROGLYPH-13CFF;Lo;0;L;;;;;N;;;;;
+13D00;EGYPTIAN HIEROGLYPH-13D00;Lo;0;L;;;;;N;;;;;
+13D01;EGYPTIAN HIEROGLYPH-13D01;Lo;0;L;;;;;N;;;;;
+13D02;EGYPTIAN HIEROGLYPH-13D02;Lo;0;L;;;;;N;;;;;
+13D03;EGYPTIAN HIEROGLYPH-13D03;Lo;0;L;;;;;N;;;;;
+13D04;EGYPTIAN HIEROGLYPH-13D04;Lo;0;L;;;;;N;;;;;
+13D05;EGYPTIAN HIEROGLYPH-13D05;Lo;0;L;;;;;N;;;;;
+13D06;EGYPTIAN HIEROGLYPH-13D06;Lo;0;L;;;;;N;;;;;
+13D07;EGYPTIAN HIEROGLYPH-13D07;Lo;0;L;;;;;N;;;;;
+13D08;EGYPTIAN HIEROGLYPH-13D08;Lo;0;L;;;;;N;;;;;
+13D09;EGYPTIAN HIEROGLYPH-13D09;Lo;0;L;;;;;N;;;;;
+13D0A;EGYPTIAN HIEROGLYPH-13D0A;Lo;0;L;;;;;N;;;;;
+13D0B;EGYPTIAN HIEROGLYPH-13D0B;Lo;0;L;;;;;N;;;;;
+13D0C;EGYPTIAN HIEROGLYPH-13D0C;Lo;0;L;;;;;N;;;;;
+13D0D;EGYPTIAN HIEROGLYPH-13D0D;Lo;0;L;;;;;N;;;;;
+13D0E;EGYPTIAN HIEROGLYPH-13D0E;Lo;0;L;;;;;N;;;;;
+13D0F;EGYPTIAN HIEROGLYPH-13D0F;Lo;0;L;;;;;N;;;;;
+13D10;EGYPTIAN HIEROGLYPH-13D10;Lo;0;L;;;;;N;;;;;
+13D11;EGYPTIAN HIEROGLYPH-13D11;Lo;0;L;;;;;N;;;;;
+13D12;EGYPTIAN HIEROGLYPH-13D12;Lo;0;L;;;;;N;;;;;
+13D13;EGYPTIAN HIEROGLYPH-13D13;Lo;0;L;;;;;N;;;;;
+13D14;EGYPTIAN HIEROGLYPH-13D14;Lo;0;L;;;;;N;;;;;
+13D15;EGYPTIAN HIEROGLYPH-13D15;Lo;0;L;;;;;N;;;;;
+13D16;EGYPTIAN HIEROGLYPH-13D16;Lo;0;L;;;;;N;;;;;
+13D17;EGYPTIAN HIEROGLYPH-13D17;Lo;0;L;;;;;N;;;;;
+13D18;EGYPTIAN HIEROGLYPH-13D18;Lo;0;L;;;;;N;;;;;
+13D19;EGYPTIAN HIEROGLYPH-13D19;Lo;0;L;;;;;N;;;;;
+13D1A;EGYPTIAN HIEROGLYPH-13D1A;Lo;0;L;;;;;N;;;;;
+13D1B;EGYPTIAN HIEROGLYPH-13D1B;Lo;0;L;;;;;N;;;;;
+13D1C;EGYPTIAN HIEROGLYPH-13D1C;Lo;0;L;;;;;N;;;;;
+13D1D;EGYPTIAN HIEROGLYPH-13D1D;Lo;0;L;;;;;N;;;;;
+13D1E;EGYPTIAN HIEROGLYPH-13D1E;Lo;0;L;;;;;N;;;;;
+13D1F;EGYPTIAN HIEROGLYPH-13D1F;Lo;0;L;;;;;N;;;;;
+13D20;EGYPTIAN HIEROGLYPH-13D20;Lo;0;L;;;;;N;;;;;
+13D21;EGYPTIAN HIEROGLYPH-13D21;Lo;0;L;;;;;N;;;;;
+13D22;EGYPTIAN HIEROGLYPH-13D22;Lo;0;L;;;;;N;;;;;
+13D23;EGYPTIAN HIEROGLYPH-13D23;Lo;0;L;;;;;N;;;;;
+13D24;EGYPTIAN HIEROGLYPH-13D24;Lo;0;L;;;;;N;;;;;
+13D25;EGYPTIAN HIEROGLYPH-13D25;Lo;0;L;;;;;N;;;;;
+13D26;EGYPTIAN HIEROGLYPH-13D26;Lo;0;L;;;;;N;;;;;
+13D27;EGYPTIAN HIEROGLYPH-13D27;Lo;0;L;;;;;N;;;;;
+13D28;EGYPTIAN HIEROGLYPH-13D28;Lo;0;L;;;;;N;;;;;
+13D29;EGYPTIAN HIEROGLYPH-13D29;Lo;0;L;;;;;N;;;;;
+13D2A;EGYPTIAN HIEROGLYPH-13D2A;Lo;0;L;;;;;N;;;;;
+13D2B;EGYPTIAN HIEROGLYPH-13D2B;Lo;0;L;;;;;N;;;;;
+13D2C;EGYPTIAN HIEROGLYPH-13D2C;Lo;0;L;;;;;N;;;;;
+13D2D;EGYPTIAN HIEROGLYPH-13D2D;Lo;0;L;;;;;N;;;;;
+13D2E;EGYPTIAN HIEROGLYPH-13D2E;Lo;0;L;;;;;N;;;;;
+13D2F;EGYPTIAN HIEROGLYPH-13D2F;Lo;0;L;;;;;N;;;;;
+13D30;EGYPTIAN HIEROGLYPH-13D30;Lo;0;L;;;;;N;;;;;
+13D31;EGYPTIAN HIEROGLYPH-13D31;Lo;0;L;;;;;N;;;;;
+13D32;EGYPTIAN HIEROGLYPH-13D32;Lo;0;L;;;;;N;;;;;
+13D33;EGYPTIAN HIEROGLYPH-13D33;Lo;0;L;;;;;N;;;;;
+13D34;EGYPTIAN HIEROGLYPH-13D34;Lo;0;L;;;;;N;;;;;
+13D35;EGYPTIAN HIEROGLYPH-13D35;Lo;0;L;;;;;N;;;;;
+13D36;EGYPTIAN HIEROGLYPH-13D36;Lo;0;L;;;;;N;;;;;
+13D37;EGYPTIAN HIEROGLYPH-13D37;Lo;0;L;;;;;N;;;;;
+13D38;EGYPTIAN HIEROGLYPH-13D38;Lo;0;L;;;;;N;;;;;
+13D39;EGYPTIAN HIEROGLYPH-13D39;Lo;0;L;;;;;N;;;;;
+13D3A;EGYPTIAN HIEROGLYPH-13D3A;Lo;0;L;;;;;N;;;;;
+13D3B;EGYPTIAN HIEROGLYPH-13D3B;Lo;0;L;;;;;N;;;;;
+13D3C;EGYPTIAN HIEROGLYPH-13D3C;Lo;0;L;;;;;N;;;;;
+13D3D;EGYPTIAN HIEROGLYPH-13D3D;Lo;0;L;;;;;N;;;;;
+13D3E;EGYPTIAN HIEROGLYPH-13D3E;Lo;0;L;;;;;N;;;;;
+13D3F;EGYPTIAN HIEROGLYPH-13D3F;Lo;0;L;;;;;N;;;;;
+13D40;EGYPTIAN HIEROGLYPH-13D40;Lo;0;L;;;;;N;;;;;
+13D41;EGYPTIAN HIEROGLYPH-13D41;Lo;0;L;;;;;N;;;;;
+13D42;EGYPTIAN HIEROGLYPH-13D42;Lo;0;L;;;;;N;;;;;
+13D43;EGYPTIAN HIEROGLYPH-13D43;Lo;0;L;;;;;N;;;;;
+13D44;EGYPTIAN HIEROGLYPH-13D44;Lo;0;L;;;;;N;;;;;
+13D45;EGYPTIAN HIEROGLYPH-13D45;Lo;0;L;;;;;N;;;;;
+13D46;EGYPTIAN HIEROGLYPH-13D46;Lo;0;L;;;;;N;;;;;
+13D47;EGYPTIAN HIEROGLYPH-13D47;Lo;0;L;;;;;N;;;;;
+13D48;EGYPTIAN HIEROGLYPH-13D48;Lo;0;L;;;;;N;;;;;
+13D49;EGYPTIAN HIEROGLYPH-13D49;Lo;0;L;;;;;N;;;;;
+13D4A;EGYPTIAN HIEROGLYPH-13D4A;Lo;0;L;;;;;N;;;;;
+13D4B;EGYPTIAN HIEROGLYPH-13D4B;Lo;0;L;;;;;N;;;;;
+13D4C;EGYPTIAN HIEROGLYPH-13D4C;Lo;0;L;;;;;N;;;;;
+13D4D;EGYPTIAN HIEROGLYPH-13D4D;Lo;0;L;;;;;N;;;;;
+13D4E;EGYPTIAN HIEROGLYPH-13D4E;Lo;0;L;;;;;N;;;;;
+13D4F;EGYPTIAN HIEROGLYPH-13D4F;Lo;0;L;;;;;N;;;;;
+13D50;EGYPTIAN HIEROGLYPH-13D50;Lo;0;L;;;;;N;;;;;
+13D51;EGYPTIAN HIEROGLYPH-13D51;Lo;0;L;;;;;N;;;;;
+13D52;EGYPTIAN HIEROGLYPH-13D52;Lo;0;L;;;;;N;;;;;
+13D53;EGYPTIAN HIEROGLYPH-13D53;Lo;0;L;;;;;N;;;;;
+13D54;EGYPTIAN HIEROGLYPH-13D54;Lo;0;L;;;;;N;;;;;
+13D55;EGYPTIAN HIEROGLYPH-13D55;Lo;0;L;;;;;N;;;;;
+13D56;EGYPTIAN HIEROGLYPH-13D56;Lo;0;L;;;;;N;;;;;
+13D57;EGYPTIAN HIEROGLYPH-13D57;Lo;0;L;;;;;N;;;;;
+13D58;EGYPTIAN HIEROGLYPH-13D58;Lo;0;L;;;;;N;;;;;
+13D59;EGYPTIAN HIEROGLYPH-13D59;Lo;0;L;;;;;N;;;;;
+13D5A;EGYPTIAN HIEROGLYPH-13D5A;Lo;0;L;;;;;N;;;;;
+13D5B;EGYPTIAN HIEROGLYPH-13D5B;Lo;0;L;;;;;N;;;;;
+13D5C;EGYPTIAN HIEROGLYPH-13D5C;Lo;0;L;;;;;N;;;;;
+13D5D;EGYPTIAN HIEROGLYPH-13D5D;Lo;0;L;;;;;N;;;;;
+13D5E;EGYPTIAN HIEROGLYPH-13D5E;Lo;0;L;;;;;N;;;;;
+13D5F;EGYPTIAN HIEROGLYPH-13D5F;Lo;0;L;;;;;N;;;;;
+13D60;EGYPTIAN HIEROGLYPH-13D60;Lo;0;L;;;;;N;;;;;
+13D61;EGYPTIAN HIEROGLYPH-13D61;Lo;0;L;;;;;N;;;;;
+13D62;EGYPTIAN HIEROGLYPH-13D62;Lo;0;L;;;;;N;;;;;
+13D63;EGYPTIAN HIEROGLYPH-13D63;Lo;0;L;;;;;N;;;;;
+13D64;EGYPTIAN HIEROGLYPH-13D64;Lo;0;L;;;;;N;;;;;
+13D65;EGYPTIAN HIEROGLYPH-13D65;Lo;0;L;;;;;N;;;;;
+13D66;EGYPTIAN HIEROGLYPH-13D66;Lo;0;L;;;;;N;;;;;
+13D67;EGYPTIAN HIEROGLYPH-13D67;Lo;0;L;;;;;N;;;;;
+13D68;EGYPTIAN HIEROGLYPH-13D68;Lo;0;L;;;;;N;;;;;
+13D69;EGYPTIAN HIEROGLYPH-13D69;Lo;0;L;;;;;N;;;;;
+13D6A;EGYPTIAN HIEROGLYPH-13D6A;Lo;0;L;;;;;N;;;;;
+13D6B;EGYPTIAN HIEROGLYPH-13D6B;Lo;0;L;;;;;N;;;;;
+13D6C;EGYPTIAN HIEROGLYPH-13D6C;Lo;0;L;;;;;N;;;;;
+13D6D;EGYPTIAN HIEROGLYPH-13D6D;Lo;0;L;;;;;N;;;;;
+13D6E;EGYPTIAN HIEROGLYPH-13D6E;Lo;0;L;;;;;N;;;;;
+13D6F;EGYPTIAN HIEROGLYPH-13D6F;Lo;0;L;;;;;N;;;;;
+13D70;EGYPTIAN HIEROGLYPH-13D70;Lo;0;L;;;;;N;;;;;
+13D71;EGYPTIAN HIEROGLYPH-13D71;Lo;0;L;;;;;N;;;;;
+13D72;EGYPTIAN HIEROGLYPH-13D72;Lo;0;L;;;;;N;;;;;
+13D73;EGYPTIAN HIEROGLYPH-13D73;Lo;0;L;;;;;N;;;;;
+13D74;EGYPTIAN HIEROGLYPH-13D74;Lo;0;L;;;;;N;;;;;
+13D75;EGYPTIAN HIEROGLYPH-13D75;Lo;0;L;;;;;N;;;;;
+13D76;EGYPTIAN HIEROGLYPH-13D76;Lo;0;L;;;;;N;;;;;
+13D77;EGYPTIAN HIEROGLYPH-13D77;Lo;0;L;;;;;N;;;;;
+13D78;EGYPTIAN HIEROGLYPH-13D78;Lo;0;L;;;;;N;;;;;
+13D79;EGYPTIAN HIEROGLYPH-13D79;Lo;0;L;;;;;N;;;;;
+13D7A;EGYPTIAN HIEROGLYPH-13D7A;Lo;0;L;;;;;N;;;;;
+13D7B;EGYPTIAN HIEROGLYPH-13D7B;Lo;0;L;;;;;N;;;;;
+13D7C;EGYPTIAN HIEROGLYPH-13D7C;Lo;0;L;;;;;N;;;;;
+13D7D;EGYPTIAN HIEROGLYPH-13D7D;Lo;0;L;;;;;N;;;;;
+13D7E;EGYPTIAN HIEROGLYPH-13D7E;Lo;0;L;;;;;N;;;;;
+13D7F;EGYPTIAN HIEROGLYPH-13D7F;Lo;0;L;;;;;N;;;;;
+13D80;EGYPTIAN HIEROGLYPH-13D80;Lo;0;L;;;;;N;;;;;
+13D81;EGYPTIAN HIEROGLYPH-13D81;Lo;0;L;;;;;N;;;;;
+13D82;EGYPTIAN HIEROGLYPH-13D82;Lo;0;L;;;;;N;;;;;
+13D83;EGYPTIAN HIEROGLYPH-13D83;Lo;0;L;;;;;N;;;;;
+13D84;EGYPTIAN HIEROGLYPH-13D84;Lo;0;L;;;;;N;;;;;
+13D85;EGYPTIAN HIEROGLYPH-13D85;Lo;0;L;;;;;N;;;;;
+13D86;EGYPTIAN HIEROGLYPH-13D86;Lo;0;L;;;;;N;;;;;
+13D87;EGYPTIAN HIEROGLYPH-13D87;Lo;0;L;;;;;N;;;;;
+13D88;EGYPTIAN HIEROGLYPH-13D88;Lo;0;L;;;;;N;;;;;
+13D89;EGYPTIAN HIEROGLYPH-13D89;Lo;0;L;;;;;N;;;;;
+13D8A;EGYPTIAN HIEROGLYPH-13D8A;Lo;0;L;;;;;N;;;;;
+13D8B;EGYPTIAN HIEROGLYPH-13D8B;Lo;0;L;;;;;N;;;;;
+13D8C;EGYPTIAN HIEROGLYPH-13D8C;Lo;0;L;;;;;N;;;;;
+13D8D;EGYPTIAN HIEROGLYPH-13D8D;Lo;0;L;;;;;N;;;;;
+13D8E;EGYPTIAN HIEROGLYPH-13D8E;Lo;0;L;;;;;N;;;;;
+13D8F;EGYPTIAN HIEROGLYPH-13D8F;Lo;0;L;;;;;N;;;;;
+13D90;EGYPTIAN HIEROGLYPH-13D90;Lo;0;L;;;;;N;;;;;
+13D91;EGYPTIAN HIEROGLYPH-13D91;Lo;0;L;;;;;N;;;;;
+13D92;EGYPTIAN HIEROGLYPH-13D92;Lo;0;L;;;;;N;;;;;
+13D93;EGYPTIAN HIEROGLYPH-13D93;Lo;0;L;;;;;N;;;;;
+13D94;EGYPTIAN HIEROGLYPH-13D94;Lo;0;L;;;;;N;;;;;
+13D95;EGYPTIAN HIEROGLYPH-13D95;Lo;0;L;;;;;N;;;;;
+13D96;EGYPTIAN HIEROGLYPH-13D96;Lo;0;L;;;;;N;;;;;
+13D97;EGYPTIAN HIEROGLYPH-13D97;Lo;0;L;;;;;N;;;;;
+13D98;EGYPTIAN HIEROGLYPH-13D98;Lo;0;L;;;;;N;;;;;
+13D99;EGYPTIAN HIEROGLYPH-13D99;Lo;0;L;;;;;N;;;;;
+13D9A;EGYPTIAN HIEROGLYPH-13D9A;Lo;0;L;;;;;N;;;;;
+13D9B;EGYPTIAN HIEROGLYPH-13D9B;Lo;0;L;;;;;N;;;;;
+13D9C;EGYPTIAN HIEROGLYPH-13D9C;Lo;0;L;;;;;N;;;;;
+13D9D;EGYPTIAN HIEROGLYPH-13D9D;Lo;0;L;;;;;N;;;;;
+13D9E;EGYPTIAN HIEROGLYPH-13D9E;Lo;0;L;;;;;N;;;;;
+13D9F;EGYPTIAN HIEROGLYPH-13D9F;Lo;0;L;;;;;N;;;;;
+13DA0;EGYPTIAN HIEROGLYPH-13DA0;Lo;0;L;;;;;N;;;;;
+13DA1;EGYPTIAN HIEROGLYPH-13DA1;Lo;0;L;;;;;N;;;;;
+13DA2;EGYPTIAN HIEROGLYPH-13DA2;Lo;0;L;;;;;N;;;;;
+13DA3;EGYPTIAN HIEROGLYPH-13DA3;Lo;0;L;;;;;N;;;;;
+13DA4;EGYPTIAN HIEROGLYPH-13DA4;Lo;0;L;;;;;N;;;;;
+13DA5;EGYPTIAN HIEROGLYPH-13DA5;Lo;0;L;;;;;N;;;;;
+13DA6;EGYPTIAN HIEROGLYPH-13DA6;Lo;0;L;;;;;N;;;;;
+13DA7;EGYPTIAN HIEROGLYPH-13DA7;Lo;0;L;;;;;N;;;;;
+13DA8;EGYPTIAN HIEROGLYPH-13DA8;Lo;0;L;;;;;N;;;;;
+13DA9;EGYPTIAN HIEROGLYPH-13DA9;Lo;0;L;;;;;N;;;;;
+13DAA;EGYPTIAN HIEROGLYPH-13DAA;Lo;0;L;;;;;N;;;;;
+13DAB;EGYPTIAN HIEROGLYPH-13DAB;Lo;0;L;;;;;N;;;;;
+13DAC;EGYPTIAN HIEROGLYPH-13DAC;Lo;0;L;;;;;N;;;;;
+13DAD;EGYPTIAN HIEROGLYPH-13DAD;Lo;0;L;;;;;N;;;;;
+13DAE;EGYPTIAN HIEROGLYPH-13DAE;Lo;0;L;;;;;N;;;;;
+13DAF;EGYPTIAN HIEROGLYPH-13DAF;Lo;0;L;;;;;N;;;;;
+13DB0;EGYPTIAN HIEROGLYPH-13DB0;Lo;0;L;;;;;N;;;;;
+13DB1;EGYPTIAN HIEROGLYPH-13DB1;Lo;0;L;;;;;N;;;;;
+13DB2;EGYPTIAN HIEROGLYPH-13DB2;Lo;0;L;;;;;N;;;;;
+13DB3;EGYPTIAN HIEROGLYPH-13DB3;Lo;0;L;;;;;N;;;;;
+13DB4;EGYPTIAN HIEROGLYPH-13DB4;Lo;0;L;;;;;N;;;;;
+13DB5;EGYPTIAN HIEROGLYPH-13DB5;Lo;0;L;;;;;N;;;;;
+13DB6;EGYPTIAN HIEROGLYPH-13DB6;Lo;0;L;;;;;N;;;;;
+13DB7;EGYPTIAN HIEROGLYPH-13DB7;Lo;0;L;;;;;N;;;;;
+13DB8;EGYPTIAN HIEROGLYPH-13DB8;Lo;0;L;;;;;N;;;;;
+13DB9;EGYPTIAN HIEROGLYPH-13DB9;Lo;0;L;;;;;N;;;;;
+13DBA;EGYPTIAN HIEROGLYPH-13DBA;Lo;0;L;;;;;N;;;;;
+13DBB;EGYPTIAN HIEROGLYPH-13DBB;Lo;0;L;;;;;N;;;;;
+13DBC;EGYPTIAN HIEROGLYPH-13DBC;Lo;0;L;;;;;N;;;;;
+13DBD;EGYPTIAN HIEROGLYPH-13DBD;Lo;0;L;;;;;N;;;;;
+13DBE;EGYPTIAN HIEROGLYPH-13DBE;Lo;0;L;;;;;N;;;;;
+13DBF;EGYPTIAN HIEROGLYPH-13DBF;Lo;0;L;;;;;N;;;;;
+13DC0;EGYPTIAN HIEROGLYPH-13DC0;Lo;0;L;;;;;N;;;;;
+13DC1;EGYPTIAN HIEROGLYPH-13DC1;Lo;0;L;;;;;N;;;;;
+13DC2;EGYPTIAN HIEROGLYPH-13DC2;Lo;0;L;;;;;N;;;;;
+13DC3;EGYPTIAN HIEROGLYPH-13DC3;Lo;0;L;;;;;N;;;;;
+13DC4;EGYPTIAN HIEROGLYPH-13DC4;Lo;0;L;;;;;N;;;;;
+13DC5;EGYPTIAN HIEROGLYPH-13DC5;Lo;0;L;;;;;N;;;;;
+13DC6;EGYPTIAN HIEROGLYPH-13DC6;Lo;0;L;;;;;N;;;;;
+13DC7;EGYPTIAN HIEROGLYPH-13DC7;Lo;0;L;;;;;N;;;;;
+13DC8;EGYPTIAN HIEROGLYPH-13DC8;Lo;0;L;;;;;N;;;;;
+13DC9;EGYPTIAN HIEROGLYPH-13DC9;Lo;0;L;;;;;N;;;;;
+13DCA;EGYPTIAN HIEROGLYPH-13DCA;Lo;0;L;;;;;N;;;;;
+13DCB;EGYPTIAN HIEROGLYPH-13DCB;Lo;0;L;;;;;N;;;;;
+13DCC;EGYPTIAN HIEROGLYPH-13DCC;Lo;0;L;;;;;N;;;;;
+13DCD;EGYPTIAN HIEROGLYPH-13DCD;Lo;0;L;;;;;N;;;;;
+13DCE;EGYPTIAN HIEROGLYPH-13DCE;Lo;0;L;;;;;N;;;;;
+13DCF;EGYPTIAN HIEROGLYPH-13DCF;Lo;0;L;;;;;N;;;;;
+13DD0;EGYPTIAN HIEROGLYPH-13DD0;Lo;0;L;;;;;N;;;;;
+13DD1;EGYPTIAN HIEROGLYPH-13DD1;Lo;0;L;;;;;N;;;;;
+13DD2;EGYPTIAN HIEROGLYPH-13DD2;Lo;0;L;;;;;N;;;;;
+13DD3;EGYPTIAN HIEROGLYPH-13DD3;Lo;0;L;;;;;N;;;;;
+13DD4;EGYPTIAN HIEROGLYPH-13DD4;Lo;0;L;;;;;N;;;;;
+13DD5;EGYPTIAN HIEROGLYPH-13DD5;Lo;0;L;;;;;N;;;;;
+13DD6;EGYPTIAN HIEROGLYPH-13DD6;Lo;0;L;;;;;N;;;;;
+13DD7;EGYPTIAN HIEROGLYPH-13DD7;Lo;0;L;;;;;N;;;;;
+13DD8;EGYPTIAN HIEROGLYPH-13DD8;Lo;0;L;;;;;N;;;;;
+13DD9;EGYPTIAN HIEROGLYPH-13DD9;Lo;0;L;;;;;N;;;;;
+13DDA;EGYPTIAN HIEROGLYPH-13DDA;Lo;0;L;;;;;N;;;;;
+13DDB;EGYPTIAN HIEROGLYPH-13DDB;Lo;0;L;;;;;N;;;;;
+13DDC;EGYPTIAN HIEROGLYPH-13DDC;Lo;0;L;;;;;N;;;;;
+13DDD;EGYPTIAN HIEROGLYPH-13DDD;Lo;0;L;;;;;N;;;;;
+13DDE;EGYPTIAN HIEROGLYPH-13DDE;Lo;0;L;;;;;N;;;;;
+13DDF;EGYPTIAN HIEROGLYPH-13DDF;Lo;0;L;;;;;N;;;;;
+13DE0;EGYPTIAN HIEROGLYPH-13DE0;Lo;0;L;;;;;N;;;;;
+13DE1;EGYPTIAN HIEROGLYPH-13DE1;Lo;0;L;;;;;N;;;;;
+13DE2;EGYPTIAN HIEROGLYPH-13DE2;Lo;0;L;;;;;N;;;;;
+13DE3;EGYPTIAN HIEROGLYPH-13DE3;Lo;0;L;;;;;N;;;;;
+13DE4;EGYPTIAN HIEROGLYPH-13DE4;Lo;0;L;;;;;N;;;;;
+13DE5;EGYPTIAN HIEROGLYPH-13DE5;Lo;0;L;;;;;N;;;;;
+13DE6;EGYPTIAN HIEROGLYPH-13DE6;Lo;0;L;;;;;N;;;;;
+13DE7;EGYPTIAN HIEROGLYPH-13DE7;Lo;0;L;;;;;N;;;;;
+13DE8;EGYPTIAN HIEROGLYPH-13DE8;Lo;0;L;;;;;N;;;;;
+13DE9;EGYPTIAN HIEROGLYPH-13DE9;Lo;0;L;;;;;N;;;;;
+13DEA;EGYPTIAN HIEROGLYPH-13DEA;Lo;0;L;;;;;N;;;;;
+13DEB;EGYPTIAN HIEROGLYPH-13DEB;Lo;0;L;;;;;N;;;;;
+13DEC;EGYPTIAN HIEROGLYPH-13DEC;Lo;0;L;;;;;N;;;;;
+13DED;EGYPTIAN HIEROGLYPH-13DED;Lo;0;L;;;;;N;;;;;
+13DEE;EGYPTIAN HIEROGLYPH-13DEE;Lo;0;L;;;;;N;;;;;
+13DEF;EGYPTIAN HIEROGLYPH-13DEF;Lo;0;L;;;;;N;;;;;
+13DF0;EGYPTIAN HIEROGLYPH-13DF0;Lo;0;L;;;;;N;;;;;
+13DF1;EGYPTIAN HIEROGLYPH-13DF1;Lo;0;L;;;;;N;;;;;
+13DF2;EGYPTIAN HIEROGLYPH-13DF2;Lo;0;L;;;;;N;;;;;
+13DF3;EGYPTIAN HIEROGLYPH-13DF3;Lo;0;L;;;;;N;;;;;
+13DF4;EGYPTIAN HIEROGLYPH-13DF4;Lo;0;L;;;;;N;;;;;
+13DF5;EGYPTIAN HIEROGLYPH-13DF5;Lo;0;L;;;;;N;;;;;
+13DF6;EGYPTIAN HIEROGLYPH-13DF6;Lo;0;L;;;;;N;;;;;
+13DF7;EGYPTIAN HIEROGLYPH-13DF7;Lo;0;L;;;;;N;;;;;
+13DF8;EGYPTIAN HIEROGLYPH-13DF8;Lo;0;L;;;;;N;;;;;
+13DF9;EGYPTIAN HIEROGLYPH-13DF9;Lo;0;L;;;;;N;;;;;
+13DFA;EGYPTIAN HIEROGLYPH-13DFA;Lo;0;L;;;;;N;;;;;
+13DFB;EGYPTIAN HIEROGLYPH-13DFB;Lo;0;L;;;;;N;;;;;
+13DFC;EGYPTIAN HIEROGLYPH-13DFC;Lo;0;L;;;;;N;;;;;
+13DFD;EGYPTIAN HIEROGLYPH-13DFD;Lo;0;L;;;;;N;;;;;
+13DFE;EGYPTIAN HIEROGLYPH-13DFE;Lo;0;L;;;;;N;;;;;
+13DFF;EGYPTIAN HIEROGLYPH-13DFF;Lo;0;L;;;;;N;;;;;
+13E00;EGYPTIAN HIEROGLYPH-13E00;Lo;0;L;;;;;N;;;;;
+13E01;EGYPTIAN HIEROGLYPH-13E01;Lo;0;L;;;;;N;;;;;
+13E02;EGYPTIAN HIEROGLYPH-13E02;Lo;0;L;;;;;N;;;;;
+13E03;EGYPTIAN HIEROGLYPH-13E03;Lo;0;L;;;;;N;;;;;
+13E04;EGYPTIAN HIEROGLYPH-13E04;Lo;0;L;;;;;N;;;;;
+13E05;EGYPTIAN HIEROGLYPH-13E05;Lo;0;L;;;;;N;;;;;
+13E06;EGYPTIAN HIEROGLYPH-13E06;Lo;0;L;;;;;N;;;;;
+13E07;EGYPTIAN HIEROGLYPH-13E07;Lo;0;L;;;;;N;;;;;
+13E08;EGYPTIAN HIEROGLYPH-13E08;Lo;0;L;;;;;N;;;;;
+13E09;EGYPTIAN HIEROGLYPH-13E09;Lo;0;L;;;;;N;;;;;
+13E0A;EGYPTIAN HIEROGLYPH-13E0A;Lo;0;L;;;;;N;;;;;
+13E0B;EGYPTIAN HIEROGLYPH-13E0B;Lo;0;L;;;;;N;;;;;
+13E0C;EGYPTIAN HIEROGLYPH-13E0C;Lo;0;L;;;;;N;;;;;
+13E0D;EGYPTIAN HIEROGLYPH-13E0D;Lo;0;L;;;;;N;;;;;
+13E0E;EGYPTIAN HIEROGLYPH-13E0E;Lo;0;L;;;;;N;;;;;
+13E0F;EGYPTIAN HIEROGLYPH-13E0F;Lo;0;L;;;;;N;;;;;
+13E10;EGYPTIAN HIEROGLYPH-13E10;Lo;0;L;;;;;N;;;;;
+13E11;EGYPTIAN HIEROGLYPH-13E11;Lo;0;L;;;;;N;;;;;
+13E12;EGYPTIAN HIEROGLYPH-13E12;Lo;0;L;;;;;N;;;;;
+13E13;EGYPTIAN HIEROGLYPH-13E13;Lo;0;L;;;;;N;;;;;
+13E14;EGYPTIAN HIEROGLYPH-13E14;Lo;0;L;;;;;N;;;;;
+13E15;EGYPTIAN HIEROGLYPH-13E15;Lo;0;L;;;;;N;;;;;
+13E16;EGYPTIAN HIEROGLYPH-13E16;Lo;0;L;;;;;N;;;;;
+13E17;EGYPTIAN HIEROGLYPH-13E17;Lo;0;L;;;;;N;;;;;
+13E18;EGYPTIAN HIEROGLYPH-13E18;Lo;0;L;;;;;N;;;;;
+13E19;EGYPTIAN HIEROGLYPH-13E19;Lo;0;L;;;;;N;;;;;
+13E1A;EGYPTIAN HIEROGLYPH-13E1A;Lo;0;L;;;;;N;;;;;
+13E1B;EGYPTIAN HIEROGLYPH-13E1B;Lo;0;L;;;;;N;;;;;
+13E1C;EGYPTIAN HIEROGLYPH-13E1C;Lo;0;L;;;;;N;;;;;
+13E1D;EGYPTIAN HIEROGLYPH-13E1D;Lo;0;L;;;;;N;;;;;
+13E1E;EGYPTIAN HIEROGLYPH-13E1E;Lo;0;L;;;;;N;;;;;
+13E1F;EGYPTIAN HIEROGLYPH-13E1F;Lo;0;L;;;;;N;;;;;
+13E20;EGYPTIAN HIEROGLYPH-13E20;Lo;0;L;;;;;N;;;;;
+13E21;EGYPTIAN HIEROGLYPH-13E21;Lo;0;L;;;;;N;;;;;
+13E22;EGYPTIAN HIEROGLYPH-13E22;Lo;0;L;;;;;N;;;;;
+13E23;EGYPTIAN HIEROGLYPH-13E23;Lo;0;L;;;;;N;;;;;
+13E24;EGYPTIAN HIEROGLYPH-13E24;Lo;0;L;;;;;N;;;;;
+13E25;EGYPTIAN HIEROGLYPH-13E25;Lo;0;L;;;;;N;;;;;
+13E26;EGYPTIAN HIEROGLYPH-13E26;Lo;0;L;;;;;N;;;;;
+13E27;EGYPTIAN HIEROGLYPH-13E27;Lo;0;L;;;;;N;;;;;
+13E28;EGYPTIAN HIEROGLYPH-13E28;Lo;0;L;;;;;N;;;;;
+13E29;EGYPTIAN HIEROGLYPH-13E29;Lo;0;L;;;;;N;;;;;
+13E2A;EGYPTIAN HIEROGLYPH-13E2A;Lo;0;L;;;;;N;;;;;
+13E2B;EGYPTIAN HIEROGLYPH-13E2B;Lo;0;L;;;;;N;;;;;
+13E2C;EGYPTIAN HIEROGLYPH-13E2C;Lo;0;L;;;;;N;;;;;
+13E2D;EGYPTIAN HIEROGLYPH-13E2D;Lo;0;L;;;;;N;;;;;
+13E2E;EGYPTIAN HIEROGLYPH-13E2E;Lo;0;L;;;;;N;;;;;
+13E2F;EGYPTIAN HIEROGLYPH-13E2F;Lo;0;L;;;;;N;;;;;
+13E30;EGYPTIAN HIEROGLYPH-13E30;Lo;0;L;;;;;N;;;;;
+13E31;EGYPTIAN HIEROGLYPH-13E31;Lo;0;L;;;;;N;;;;;
+13E32;EGYPTIAN HIEROGLYPH-13E32;Lo;0;L;;;;;N;;;;;
+13E33;EGYPTIAN HIEROGLYPH-13E33;Lo;0;L;;;;;N;;;;;
+13E34;EGYPTIAN HIEROGLYPH-13E34;Lo;0;L;;;;;N;;;;;
+13E35;EGYPTIAN HIEROGLYPH-13E35;Lo;0;L;;;;;N;;;;;
+13E36;EGYPTIAN HIEROGLYPH-13E36;Lo;0;L;;;;;N;;;;;
+13E37;EGYPTIAN HIEROGLYPH-13E37;Lo;0;L;;;;;N;;;;;
+13E38;EGYPTIAN HIEROGLYPH-13E38;Lo;0;L;;;;;N;;;;;
+13E39;EGYPTIAN HIEROGLYPH-13E39;Lo;0;L;;;;;N;;;;;
+13E3A;EGYPTIAN HIEROGLYPH-13E3A;Lo;0;L;;;;;N;;;;;
+13E3B;EGYPTIAN HIEROGLYPH-13E3B;Lo;0;L;;;;;N;;;;;
+13E3C;EGYPTIAN HIEROGLYPH-13E3C;Lo;0;L;;;;;N;;;;;
+13E3D;EGYPTIAN HIEROGLYPH-13E3D;Lo;0;L;;;;;N;;;;;
+13E3E;EGYPTIAN HIEROGLYPH-13E3E;Lo;0;L;;;;;N;;;;;
+13E3F;EGYPTIAN HIEROGLYPH-13E3F;Lo;0;L;;;;;N;;;;;
+13E40;EGYPTIAN HIEROGLYPH-13E40;Lo;0;L;;;;;N;;;;;
+13E41;EGYPTIAN HIEROGLYPH-13E41;Lo;0;L;;;;;N;;;;;
+13E42;EGYPTIAN HIEROGLYPH-13E42;Lo;0;L;;;;;N;;;;;
+13E43;EGYPTIAN HIEROGLYPH-13E43;Lo;0;L;;;;;N;;;;;
+13E44;EGYPTIAN HIEROGLYPH-13E44;Lo;0;L;;;;;N;;;;;
+13E45;EGYPTIAN HIEROGLYPH-13E45;Lo;0;L;;;;;N;;;;;
+13E46;EGYPTIAN HIEROGLYPH-13E46;Lo;0;L;;;;;N;;;;;
+13E47;EGYPTIAN HIEROGLYPH-13E47;Lo;0;L;;;;;N;;;;;
+13E48;EGYPTIAN HIEROGLYPH-13E48;Lo;0;L;;;;;N;;;;;
+13E49;EGYPTIAN HIEROGLYPH-13E49;Lo;0;L;;;;;N;;;;;
+13E4A;EGYPTIAN HIEROGLYPH-13E4A;Lo;0;L;;;;;N;;;;;
+13E4B;EGYPTIAN HIEROGLYPH-13E4B;Lo;0;L;;;;;N;;;;;
+13E4C;EGYPTIAN HIEROGLYPH-13E4C;Lo;0;L;;;;;N;;;;;
+13E4D;EGYPTIAN HIEROGLYPH-13E4D;Lo;0;L;;;;;N;;;;;
+13E4E;EGYPTIAN HIEROGLYPH-13E4E;Lo;0;L;;;;;N;;;;;
+13E4F;EGYPTIAN HIEROGLYPH-13E4F;Lo;0;L;;;;;N;;;;;
+13E50;EGYPTIAN HIEROGLYPH-13E50;Lo;0;L;;;;;N;;;;;
+13E51;EGYPTIAN HIEROGLYPH-13E51;Lo;0;L;;;;;N;;;;;
+13E52;EGYPTIAN HIEROGLYPH-13E52;Lo;0;L;;;;;N;;;;;
+13E53;EGYPTIAN HIEROGLYPH-13E53;Lo;0;L;;;;;N;;;;;
+13E54;EGYPTIAN HIEROGLYPH-13E54;Lo;0;L;;;;;N;;;;;
+13E55;EGYPTIAN HIEROGLYPH-13E55;Lo;0;L;;;;;N;;;;;
+13E56;EGYPTIAN HIEROGLYPH-13E56;Lo;0;L;;;;;N;;;;;
+13E57;EGYPTIAN HIEROGLYPH-13E57;Lo;0;L;;;;;N;;;;;
+13E58;EGYPTIAN HIEROGLYPH-13E58;Lo;0;L;;;;;N;;;;;
+13E59;EGYPTIAN HIEROGLYPH-13E59;Lo;0;L;;;;;N;;;;;
+13E5A;EGYPTIAN HIEROGLYPH-13E5A;Lo;0;L;;;;;N;;;;;
+13E5B;EGYPTIAN HIEROGLYPH-13E5B;Lo;0;L;;;;;N;;;;;
+13E5C;EGYPTIAN HIEROGLYPH-13E5C;Lo;0;L;;;;;N;;;;;
+13E5D;EGYPTIAN HIEROGLYPH-13E5D;Lo;0;L;;;;;N;;;;;
+13E5E;EGYPTIAN HIEROGLYPH-13E5E;Lo;0;L;;;;;N;;;;;
+13E5F;EGYPTIAN HIEROGLYPH-13E5F;Lo;0;L;;;;;N;;;;;
+13E60;EGYPTIAN HIEROGLYPH-13E60;Lo;0;L;;;;;N;;;;;
+13E61;EGYPTIAN HIEROGLYPH-13E61;Lo;0;L;;;;;N;;;;;
+13E62;EGYPTIAN HIEROGLYPH-13E62;Lo;0;L;;;;;N;;;;;
+13E63;EGYPTIAN HIEROGLYPH-13E63;Lo;0;L;;;;;N;;;;;
+13E64;EGYPTIAN HIEROGLYPH-13E64;Lo;0;L;;;;;N;;;;;
+13E65;EGYPTIAN HIEROGLYPH-13E65;Lo;0;L;;;;;N;;;;;
+13E66;EGYPTIAN HIEROGLYPH-13E66;Lo;0;L;;;;;N;;;;;
+13E67;EGYPTIAN HIEROGLYPH-13E67;Lo;0;L;;;;;N;;;;;
+13E68;EGYPTIAN HIEROGLYPH-13E68;Lo;0;L;;;;;N;;;;;
+13E69;EGYPTIAN HIEROGLYPH-13E69;Lo;0;L;;;;;N;;;;;
+13E6A;EGYPTIAN HIEROGLYPH-13E6A;Lo;0;L;;;;;N;;;;;
+13E6B;EGYPTIAN HIEROGLYPH-13E6B;Lo;0;L;;;;;N;;;;;
+13E6C;EGYPTIAN HIEROGLYPH-13E6C;Lo;0;L;;;;;N;;;;;
+13E6D;EGYPTIAN HIEROGLYPH-13E6D;Lo;0;L;;;;;N;;;;;
+13E6E;EGYPTIAN HIEROGLYPH-13E6E;Lo;0;L;;;;;N;;;;;
+13E6F;EGYPTIAN HIEROGLYPH-13E6F;Lo;0;L;;;;;N;;;;;
+13E70;EGYPTIAN HIEROGLYPH-13E70;Lo;0;L;;;;;N;;;;;
+13E71;EGYPTIAN HIEROGLYPH-13E71;Lo;0;L;;;;;N;;;;;
+13E72;EGYPTIAN HIEROGLYPH-13E72;Lo;0;L;;;;;N;;;;;
+13E73;EGYPTIAN HIEROGLYPH-13E73;Lo;0;L;;;;;N;;;;;
+13E74;EGYPTIAN HIEROGLYPH-13E74;Lo;0;L;;;;;N;;;;;
+13E75;EGYPTIAN HIEROGLYPH-13E75;Lo;0;L;;;;;N;;;;;
+13E76;EGYPTIAN HIEROGLYPH-13E76;Lo;0;L;;;;;N;;;;;
+13E77;EGYPTIAN HIEROGLYPH-13E77;Lo;0;L;;;;;N;;;;;
+13E78;EGYPTIAN HIEROGLYPH-13E78;Lo;0;L;;;;;N;;;;;
+13E79;EGYPTIAN HIEROGLYPH-13E79;Lo;0;L;;;;;N;;;;;
+13E7A;EGYPTIAN HIEROGLYPH-13E7A;Lo;0;L;;;;;N;;;;;
+13E7B;EGYPTIAN HIEROGLYPH-13E7B;Lo;0;L;;;;;N;;;;;
+13E7C;EGYPTIAN HIEROGLYPH-13E7C;Lo;0;L;;;;;N;;;;;
+13E7D;EGYPTIAN HIEROGLYPH-13E7D;Lo;0;L;;;;;N;;;;;
+13E7E;EGYPTIAN HIEROGLYPH-13E7E;Lo;0;L;;;;;N;;;;;
+13E7F;EGYPTIAN HIEROGLYPH-13E7F;Lo;0;L;;;;;N;;;;;
+13E80;EGYPTIAN HIEROGLYPH-13E80;Lo;0;L;;;;;N;;;;;
+13E81;EGYPTIAN HIEROGLYPH-13E81;Lo;0;L;;;;;N;;;;;
+13E82;EGYPTIAN HIEROGLYPH-13E82;Lo;0;L;;;;;N;;;;;
+13E83;EGYPTIAN HIEROGLYPH-13E83;Lo;0;L;;;;;N;;;;;
+13E84;EGYPTIAN HIEROGLYPH-13E84;Lo;0;L;;;;;N;;;;;
+13E85;EGYPTIAN HIEROGLYPH-13E85;Lo;0;L;;;;;N;;;;;
+13E86;EGYPTIAN HIEROGLYPH-13E86;Lo;0;L;;;;;N;;;;;
+13E87;EGYPTIAN HIEROGLYPH-13E87;Lo;0;L;;;;;N;;;;;
+13E88;EGYPTIAN HIEROGLYPH-13E88;Lo;0;L;;;;;N;;;;;
+13E89;EGYPTIAN HIEROGLYPH-13E89;Lo;0;L;;;;;N;;;;;
+13E8A;EGYPTIAN HIEROGLYPH-13E8A;Lo;0;L;;;;;N;;;;;
+13E8B;EGYPTIAN HIEROGLYPH-13E8B;Lo;0;L;;;;;N;;;;;
+13E8C;EGYPTIAN HIEROGLYPH-13E8C;Lo;0;L;;;;;N;;;;;
+13E8D;EGYPTIAN HIEROGLYPH-13E8D;Lo;0;L;;;;;N;;;;;
+13E8E;EGYPTIAN HIEROGLYPH-13E8E;Lo;0;L;;;;;N;;;;;
+13E8F;EGYPTIAN HIEROGLYPH-13E8F;Lo;0;L;;;;;N;;;;;
+13E90;EGYPTIAN HIEROGLYPH-13E90;Lo;0;L;;;;;N;;;;;
+13E91;EGYPTIAN HIEROGLYPH-13E91;Lo;0;L;;;;;N;;;;;
+13E92;EGYPTIAN HIEROGLYPH-13E92;Lo;0;L;;;;;N;;;;;
+13E93;EGYPTIAN HIEROGLYPH-13E93;Lo;0;L;;;;;N;;;;;
+13E94;EGYPTIAN HIEROGLYPH-13E94;Lo;0;L;;;;;N;;;;;
+13E95;EGYPTIAN HIEROGLYPH-13E95;Lo;0;L;;;;;N;;;;;
+13E96;EGYPTIAN HIEROGLYPH-13E96;Lo;0;L;;;;;N;;;;;
+13E97;EGYPTIAN HIEROGLYPH-13E97;Lo;0;L;;;;;N;;;;;
+13E98;EGYPTIAN HIEROGLYPH-13E98;Lo;0;L;;;;;N;;;;;
+13E99;EGYPTIAN HIEROGLYPH-13E99;Lo;0;L;;;;;N;;;;;
+13E9A;EGYPTIAN HIEROGLYPH-13E9A;Lo;0;L;;;;;N;;;;;
+13E9B;EGYPTIAN HIEROGLYPH-13E9B;Lo;0;L;;;;;N;;;;;
+13E9C;EGYPTIAN HIEROGLYPH-13E9C;Lo;0;L;;;;;N;;;;;
+13E9D;EGYPTIAN HIEROGLYPH-13E9D;Lo;0;L;;;;;N;;;;;
+13E9E;EGYPTIAN HIEROGLYPH-13E9E;Lo;0;L;;;;;N;;;;;
+13E9F;EGYPTIAN HIEROGLYPH-13E9F;Lo;0;L;;;;;N;;;;;
+13EA0;EGYPTIAN HIEROGLYPH-13EA0;Lo;0;L;;;;;N;;;;;
+13EA1;EGYPTIAN HIEROGLYPH-13EA1;Lo;0;L;;;;;N;;;;;
+13EA2;EGYPTIAN HIEROGLYPH-13EA2;Lo;0;L;;;;;N;;;;;
+13EA3;EGYPTIAN HIEROGLYPH-13EA3;Lo;0;L;;;;;N;;;;;
+13EA4;EGYPTIAN HIEROGLYPH-13EA4;Lo;0;L;;;;;N;;;;;
+13EA5;EGYPTIAN HIEROGLYPH-13EA5;Lo;0;L;;;;;N;;;;;
+13EA6;EGYPTIAN HIEROGLYPH-13EA6;Lo;0;L;;;;;N;;;;;
+13EA7;EGYPTIAN HIEROGLYPH-13EA7;Lo;0;L;;;;;N;;;;;
+13EA8;EGYPTIAN HIEROGLYPH-13EA8;Lo;0;L;;;;;N;;;;;
+13EA9;EGYPTIAN HIEROGLYPH-13EA9;Lo;0;L;;;;;N;;;;;
+13EAA;EGYPTIAN HIEROGLYPH-13EAA;Lo;0;L;;;;;N;;;;;
+13EAB;EGYPTIAN HIEROGLYPH-13EAB;Lo;0;L;;;;;N;;;;;
+13EAC;EGYPTIAN HIEROGLYPH-13EAC;Lo;0;L;;;;;N;;;;;
+13EAD;EGYPTIAN HIEROGLYPH-13EAD;Lo;0;L;;;;;N;;;;;
+13EAE;EGYPTIAN HIEROGLYPH-13EAE;Lo;0;L;;;;;N;;;;;
+13EAF;EGYPTIAN HIEROGLYPH-13EAF;Lo;0;L;;;;;N;;;;;
+13EB0;EGYPTIAN HIEROGLYPH-13EB0;Lo;0;L;;;;;N;;;;;
+13EB1;EGYPTIAN HIEROGLYPH-13EB1;Lo;0;L;;;;;N;;;;;
+13EB2;EGYPTIAN HIEROGLYPH-13EB2;Lo;0;L;;;;;N;;;;;
+13EB3;EGYPTIAN HIEROGLYPH-13EB3;Lo;0;L;;;;;N;;;;;
+13EB4;EGYPTIAN HIEROGLYPH-13EB4;Lo;0;L;;;;;N;;;;;
+13EB5;EGYPTIAN HIEROGLYPH-13EB5;Lo;0;L;;;;;N;;;;;
+13EB6;EGYPTIAN HIEROGLYPH-13EB6;Lo;0;L;;;;;N;;;;;
+13EB7;EGYPTIAN HIEROGLYPH-13EB7;Lo;0;L;;;;;N;;;;;
+13EB8;EGYPTIAN HIEROGLYPH-13EB8;Lo;0;L;;;;;N;;;;;
+13EB9;EGYPTIAN HIEROGLYPH-13EB9;Lo;0;L;;;;;N;;;;;
+13EBA;EGYPTIAN HIEROGLYPH-13EBA;Lo;0;L;;;;;N;;;;;
+13EBB;EGYPTIAN HIEROGLYPH-13EBB;Lo;0;L;;;;;N;;;;;
+13EBC;EGYPTIAN HIEROGLYPH-13EBC;Lo;0;L;;;;;N;;;;;
+13EBD;EGYPTIAN HIEROGLYPH-13EBD;Lo;0;L;;;;;N;;;;;
+13EBE;EGYPTIAN HIEROGLYPH-13EBE;Lo;0;L;;;;;N;;;;;
+13EBF;EGYPTIAN HIEROGLYPH-13EBF;Lo;0;L;;;;;N;;;;;
+13EC0;EGYPTIAN HIEROGLYPH-13EC0;Lo;0;L;;;;;N;;;;;
+13EC1;EGYPTIAN HIEROGLYPH-13EC1;Lo;0;L;;;;;N;;;;;
+13EC2;EGYPTIAN HIEROGLYPH-13EC2;Lo;0;L;;;;;N;;;;;
+13EC3;EGYPTIAN HIEROGLYPH-13EC3;Lo;0;L;;;;;N;;;;;
+13EC4;EGYPTIAN HIEROGLYPH-13EC4;Lo;0;L;;;;;N;;;;;
+13EC5;EGYPTIAN HIEROGLYPH-13EC5;Lo;0;L;;;;;N;;;;;
+13EC6;EGYPTIAN HIEROGLYPH-13EC6;Lo;0;L;;;;;N;;;;;
+13EC7;EGYPTIAN HIEROGLYPH-13EC7;Lo;0;L;;;;;N;;;;;
+13EC8;EGYPTIAN HIEROGLYPH-13EC8;Lo;0;L;;;;;N;;;;;
+13EC9;EGYPTIAN HIEROGLYPH-13EC9;Lo;0;L;;;;;N;;;;;
+13ECA;EGYPTIAN HIEROGLYPH-13ECA;Lo;0;L;;;;;N;;;;;
+13ECB;EGYPTIAN HIEROGLYPH-13ECB;Lo;0;L;;;;;N;;;;;
+13ECC;EGYPTIAN HIEROGLYPH-13ECC;Lo;0;L;;;;;N;;;;;
+13ECD;EGYPTIAN HIEROGLYPH-13ECD;Lo;0;L;;;;;N;;;;;
+13ECE;EGYPTIAN HIEROGLYPH-13ECE;Lo;0;L;;;;;N;;;;;
+13ECF;EGYPTIAN HIEROGLYPH-13ECF;Lo;0;L;;;;;N;;;;;
+13ED0;EGYPTIAN HIEROGLYPH-13ED0;Lo;0;L;;;;;N;;;;;
+13ED1;EGYPTIAN HIEROGLYPH-13ED1;Lo;0;L;;;;;N;;;;;
+13ED2;EGYPTIAN HIEROGLYPH-13ED2;Lo;0;L;;;;;N;;;;;
+13ED3;EGYPTIAN HIEROGLYPH-13ED3;Lo;0;L;;;;;N;;;;;
+13ED4;EGYPTIAN HIEROGLYPH-13ED4;Lo;0;L;;;;;N;;;;;
+13ED5;EGYPTIAN HIEROGLYPH-13ED5;Lo;0;L;;;;;N;;;;;
+13ED6;EGYPTIAN HIEROGLYPH-13ED6;Lo;0;L;;;;;N;;;;;
+13ED7;EGYPTIAN HIEROGLYPH-13ED7;Lo;0;L;;;;;N;;;;;
+13ED8;EGYPTIAN HIEROGLYPH-13ED8;Lo;0;L;;;;;N;;;;;
+13ED9;EGYPTIAN HIEROGLYPH-13ED9;Lo;0;L;;;;;N;;;;;
+13EDA;EGYPTIAN HIEROGLYPH-13EDA;Lo;0;L;;;;;N;;;;;
+13EDB;EGYPTIAN HIEROGLYPH-13EDB;Lo;0;L;;;;;N;;;;;
+13EDC;EGYPTIAN HIEROGLYPH-13EDC;Lo;0;L;;;;;N;;;;;
+13EDD;EGYPTIAN HIEROGLYPH-13EDD;Lo;0;L;;;;;N;;;;;
+13EDE;EGYPTIAN HIEROGLYPH-13EDE;Lo;0;L;;;;;N;;;;;
+13EDF;EGYPTIAN HIEROGLYPH-13EDF;Lo;0;L;;;;;N;;;;;
+13EE0;EGYPTIAN HIEROGLYPH-13EE0;Lo;0;L;;;;;N;;;;;
+13EE1;EGYPTIAN HIEROGLYPH-13EE1;Lo;0;L;;;;;N;;;;;
+13EE2;EGYPTIAN HIEROGLYPH-13EE2;Lo;0;L;;;;;N;;;;;
+13EE3;EGYPTIAN HIEROGLYPH-13EE3;Lo;0;L;;;;;N;;;;;
+13EE4;EGYPTIAN HIEROGLYPH-13EE4;Lo;0;L;;;;;N;;;;;
+13EE5;EGYPTIAN HIEROGLYPH-13EE5;Lo;0;L;;;;;N;;;;;
+13EE6;EGYPTIAN HIEROGLYPH-13EE6;Lo;0;L;;;;;N;;;;;
+13EE7;EGYPTIAN HIEROGLYPH-13EE7;Lo;0;L;;;;;N;;;;;
+13EE8;EGYPTIAN HIEROGLYPH-13EE8;Lo;0;L;;;;;N;;;;;
+13EE9;EGYPTIAN HIEROGLYPH-13EE9;Lo;0;L;;;;;N;;;;;
+13EEA;EGYPTIAN HIEROGLYPH-13EEA;Lo;0;L;;;;;N;;;;;
+13EEB;EGYPTIAN HIEROGLYPH-13EEB;Lo;0;L;;;;;N;;;;;
+13EEC;EGYPTIAN HIEROGLYPH-13EEC;Lo;0;L;;;;;N;;;;;
+13EED;EGYPTIAN HIEROGLYPH-13EED;Lo;0;L;;;;;N;;;;;
+13EEE;EGYPTIAN HIEROGLYPH-13EEE;Lo;0;L;;;;;N;;;;;
+13EEF;EGYPTIAN HIEROGLYPH-13EEF;Lo;0;L;;;;;N;;;;;
+13EF0;EGYPTIAN HIEROGLYPH-13EF0;Lo;0;L;;;;;N;;;;;
+13EF1;EGYPTIAN HIEROGLYPH-13EF1;Lo;0;L;;;;;N;;;;;
+13EF2;EGYPTIAN HIEROGLYPH-13EF2;Lo;0;L;;;;;N;;;;;
+13EF3;EGYPTIAN HIEROGLYPH-13EF3;Lo;0;L;;;;;N;;;;;
+13EF4;EGYPTIAN HIEROGLYPH-13EF4;Lo;0;L;;;;;N;;;;;
+13EF5;EGYPTIAN HIEROGLYPH-13EF5;Lo;0;L;;;;;N;;;;;
+13EF6;EGYPTIAN HIEROGLYPH-13EF6;Lo;0;L;;;;;N;;;;;
+13EF7;EGYPTIAN HIEROGLYPH-13EF7;Lo;0;L;;;;;N;;;;;
+13EF8;EGYPTIAN HIEROGLYPH-13EF8;Lo;0;L;;;;;N;;;;;
+13EF9;EGYPTIAN HIEROGLYPH-13EF9;Lo;0;L;;;;;N;;;;;
+13EFA;EGYPTIAN HIEROGLYPH-13EFA;Lo;0;L;;;;;N;;;;;
+13EFB;EGYPTIAN HIEROGLYPH-13EFB;Lo;0;L;;;;;N;;;;;
+13EFC;EGYPTIAN HIEROGLYPH-13EFC;Lo;0;L;;;;;N;;;;;
+13EFD;EGYPTIAN HIEROGLYPH-13EFD;Lo;0;L;;;;;N;;;;;
+13EFE;EGYPTIAN HIEROGLYPH-13EFE;Lo;0;L;;;;;N;;;;;
+13EFF;EGYPTIAN HIEROGLYPH-13EFF;Lo;0;L;;;;;N;;;;;
+13F00;EGYPTIAN HIEROGLYPH-13F00;Lo;0;L;;;;;N;;;;;
+13F01;EGYPTIAN HIEROGLYPH-13F01;Lo;0;L;;;;;N;;;;;
+13F02;EGYPTIAN HIEROGLYPH-13F02;Lo;0;L;;;;;N;;;;;
+13F03;EGYPTIAN HIEROGLYPH-13F03;Lo;0;L;;;;;N;;;;;
+13F04;EGYPTIAN HIEROGLYPH-13F04;Lo;0;L;;;;;N;;;;;
+13F05;EGYPTIAN HIEROGLYPH-13F05;Lo;0;L;;;;;N;;;;;
+13F06;EGYPTIAN HIEROGLYPH-13F06;Lo;0;L;;;;;N;;;;;
+13F07;EGYPTIAN HIEROGLYPH-13F07;Lo;0;L;;;;;N;;;;;
+13F08;EGYPTIAN HIEROGLYPH-13F08;Lo;0;L;;;;;N;;;;;
+13F09;EGYPTIAN HIEROGLYPH-13F09;Lo;0;L;;;;;N;;;;;
+13F0A;EGYPTIAN HIEROGLYPH-13F0A;Lo;0;L;;;;;N;;;;;
+13F0B;EGYPTIAN HIEROGLYPH-13F0B;Lo;0;L;;;;;N;;;;;
+13F0C;EGYPTIAN HIEROGLYPH-13F0C;Lo;0;L;;;;;N;;;;;
+13F0D;EGYPTIAN HIEROGLYPH-13F0D;Lo;0;L;;;;;N;;;;;
+13F0E;EGYPTIAN HIEROGLYPH-13F0E;Lo;0;L;;;;;N;;;;;
+13F0F;EGYPTIAN HIEROGLYPH-13F0F;Lo;0;L;;;;;N;;;;;
+13F10;EGYPTIAN HIEROGLYPH-13F10;Lo;0;L;;;;;N;;;;;
+13F11;EGYPTIAN HIEROGLYPH-13F11;Lo;0;L;;;;;N;;;;;
+13F12;EGYPTIAN HIEROGLYPH-13F12;Lo;0;L;;;;;N;;;;;
+13F13;EGYPTIAN HIEROGLYPH-13F13;Lo;0;L;;;;;N;;;;;
+13F14;EGYPTIAN HIEROGLYPH-13F14;Lo;0;L;;;;;N;;;;;
+13F15;EGYPTIAN HIEROGLYPH-13F15;Lo;0;L;;;;;N;;;;;
+13F16;EGYPTIAN HIEROGLYPH-13F16;Lo;0;L;;;;;N;;;;;
+13F17;EGYPTIAN HIEROGLYPH-13F17;Lo;0;L;;;;;N;;;;;
+13F18;EGYPTIAN HIEROGLYPH-13F18;Lo;0;L;;;;;N;;;;;
+13F19;EGYPTIAN HIEROGLYPH-13F19;Lo;0;L;;;;;N;;;;;
+13F1A;EGYPTIAN HIEROGLYPH-13F1A;Lo;0;L;;;;;N;;;;;
+13F1B;EGYPTIAN HIEROGLYPH-13F1B;Lo;0;L;;;;;N;;;;;
+13F1C;EGYPTIAN HIEROGLYPH-13F1C;Lo;0;L;;;;;N;;;;;
+13F1D;EGYPTIAN HIEROGLYPH-13F1D;Lo;0;L;;;;;N;;;;;
+13F1E;EGYPTIAN HIEROGLYPH-13F1E;Lo;0;L;;;;;N;;;;;
+13F1F;EGYPTIAN HIEROGLYPH-13F1F;Lo;0;L;;;;;N;;;;;
+13F20;EGYPTIAN HIEROGLYPH-13F20;Lo;0;L;;;;;N;;;;;
+13F21;EGYPTIAN HIEROGLYPH-13F21;Lo;0;L;;;;;N;;;;;
+13F22;EGYPTIAN HIEROGLYPH-13F22;Lo;0;L;;;;;N;;;;;
+13F23;EGYPTIAN HIEROGLYPH-13F23;Lo;0;L;;;;;N;;;;;
+13F24;EGYPTIAN HIEROGLYPH-13F24;Lo;0;L;;;;;N;;;;;
+13F25;EGYPTIAN HIEROGLYPH-13F25;Lo;0;L;;;;;N;;;;;
+13F26;EGYPTIAN HIEROGLYPH-13F26;Lo;0;L;;;;;N;;;;;
+13F27;EGYPTIAN HIEROGLYPH-13F27;Lo;0;L;;;;;N;;;;;
+13F28;EGYPTIAN HIEROGLYPH-13F28;Lo;0;L;;;;;N;;;;;
+13F29;EGYPTIAN HIEROGLYPH-13F29;Lo;0;L;;;;;N;;;;;
+13F2A;EGYPTIAN HIEROGLYPH-13F2A;Lo;0;L;;;;;N;;;;;
+13F2B;EGYPTIAN HIEROGLYPH-13F2B;Lo;0;L;;;;;N;;;;;
+13F2C;EGYPTIAN HIEROGLYPH-13F2C;Lo;0;L;;;;;N;;;;;
+13F2D;EGYPTIAN HIEROGLYPH-13F2D;Lo;0;L;;;;;N;;;;;
+13F2E;EGYPTIAN HIEROGLYPH-13F2E;Lo;0;L;;;;;N;;;;;
+13F2F;EGYPTIAN HIEROGLYPH-13F2F;Lo;0;L;;;;;N;;;;;
+13F30;EGYPTIAN HIEROGLYPH-13F30;Lo;0;L;;;;;N;;;;;
+13F31;EGYPTIAN HIEROGLYPH-13F31;Lo;0;L;;;;;N;;;;;
+13F32;EGYPTIAN HIEROGLYPH-13F32;Lo;0;L;;;;;N;;;;;
+13F33;EGYPTIAN HIEROGLYPH-13F33;Lo;0;L;;;;;N;;;;;
+13F34;EGYPTIAN HIEROGLYPH-13F34;Lo;0;L;;;;;N;;;;;
+13F35;EGYPTIAN HIEROGLYPH-13F35;Lo;0;L;;;;;N;;;;;
+13F36;EGYPTIAN HIEROGLYPH-13F36;Lo;0;L;;;;;N;;;;;
+13F37;EGYPTIAN HIEROGLYPH-13F37;Lo;0;L;;;;;N;;;;;
+13F38;EGYPTIAN HIEROGLYPH-13F38;Lo;0;L;;;;;N;;;;;
+13F39;EGYPTIAN HIEROGLYPH-13F39;Lo;0;L;;;;;N;;;;;
+13F3A;EGYPTIAN HIEROGLYPH-13F3A;Lo;0;L;;;;;N;;;;;
+13F3B;EGYPTIAN HIEROGLYPH-13F3B;Lo;0;L;;;;;N;;;;;
+13F3C;EGYPTIAN HIEROGLYPH-13F3C;Lo;0;L;;;;;N;;;;;
+13F3D;EGYPTIAN HIEROGLYPH-13F3D;Lo;0;L;;;;;N;;;;;
+13F3E;EGYPTIAN HIEROGLYPH-13F3E;Lo;0;L;;;;;N;;;;;
+13F3F;EGYPTIAN HIEROGLYPH-13F3F;Lo;0;L;;;;;N;;;;;
+13F40;EGYPTIAN HIEROGLYPH-13F40;Lo;0;L;;;;;N;;;;;
+13F41;EGYPTIAN HIEROGLYPH-13F41;Lo;0;L;;;;;N;;;;;
+13F42;EGYPTIAN HIEROGLYPH-13F42;Lo;0;L;;;;;N;;;;;
+13F43;EGYPTIAN HIEROGLYPH-13F43;Lo;0;L;;;;;N;;;;;
+13F44;EGYPTIAN HIEROGLYPH-13F44;Lo;0;L;;;;;N;;;;;
+13F45;EGYPTIAN HIEROGLYPH-13F45;Lo;0;L;;;;;N;;;;;
+13F46;EGYPTIAN HIEROGLYPH-13F46;Lo;0;L;;;;;N;;;;;
+13F47;EGYPTIAN HIEROGLYPH-13F47;Lo;0;L;;;;;N;;;;;
+13F48;EGYPTIAN HIEROGLYPH-13F48;Lo;0;L;;;;;N;;;;;
+13F49;EGYPTIAN HIEROGLYPH-13F49;Lo;0;L;;;;;N;;;;;
+13F4A;EGYPTIAN HIEROGLYPH-13F4A;Lo;0;L;;;;;N;;;;;
+13F4B;EGYPTIAN HIEROGLYPH-13F4B;Lo;0;L;;;;;N;;;;;
+13F4C;EGYPTIAN HIEROGLYPH-13F4C;Lo;0;L;;;;;N;;;;;
+13F4D;EGYPTIAN HIEROGLYPH-13F4D;Lo;0;L;;;;;N;;;;;
+13F4E;EGYPTIAN HIEROGLYPH-13F4E;Lo;0;L;;;;;N;;;;;
+13F4F;EGYPTIAN HIEROGLYPH-13F4F;Lo;0;L;;;;;N;;;;;
+13F50;EGYPTIAN HIEROGLYPH-13F50;Lo;0;L;;;;;N;;;;;
+13F51;EGYPTIAN HIEROGLYPH-13F51;Lo;0;L;;;;;N;;;;;
+13F52;EGYPTIAN HIEROGLYPH-13F52;Lo;0;L;;;;;N;;;;;
+13F53;EGYPTIAN HIEROGLYPH-13F53;Lo;0;L;;;;;N;;;;;
+13F54;EGYPTIAN HIEROGLYPH-13F54;Lo;0;L;;;;;N;;;;;
+13F55;EGYPTIAN HIEROGLYPH-13F55;Lo;0;L;;;;;N;;;;;
+13F56;EGYPTIAN HIEROGLYPH-13F56;Lo;0;L;;;;;N;;;;;
+13F57;EGYPTIAN HIEROGLYPH-13F57;Lo;0;L;;;;;N;;;;;
+13F58;EGYPTIAN HIEROGLYPH-13F58;Lo;0;L;;;;;N;;;;;
+13F59;EGYPTIAN HIEROGLYPH-13F59;Lo;0;L;;;;;N;;;;;
+13F5A;EGYPTIAN HIEROGLYPH-13F5A;Lo;0;L;;;;;N;;;;;
+13F5B;EGYPTIAN HIEROGLYPH-13F5B;Lo;0;L;;;;;N;;;;;
+13F5C;EGYPTIAN HIEROGLYPH-13F5C;Lo;0;L;;;;;N;;;;;
+13F5D;EGYPTIAN HIEROGLYPH-13F5D;Lo;0;L;;;;;N;;;;;
+13F5E;EGYPTIAN HIEROGLYPH-13F5E;Lo;0;L;;;;;N;;;;;
+13F5F;EGYPTIAN HIEROGLYPH-13F5F;Lo;0;L;;;;;N;;;;;
+13F60;EGYPTIAN HIEROGLYPH-13F60;Lo;0;L;;;;;N;;;;;
+13F61;EGYPTIAN HIEROGLYPH-13F61;Lo;0;L;;;;;N;;;;;
+13F62;EGYPTIAN HIEROGLYPH-13F62;Lo;0;L;;;;;N;;;;;
+13F63;EGYPTIAN HIEROGLYPH-13F63;Lo;0;L;;;;;N;;;;;
+13F64;EGYPTIAN HIEROGLYPH-13F64;Lo;0;L;;;;;N;;;;;
+13F65;EGYPTIAN HIEROGLYPH-13F65;Lo;0;L;;;;;N;;;;;
+13F66;EGYPTIAN HIEROGLYPH-13F66;Lo;0;L;;;;;N;;;;;
+13F67;EGYPTIAN HIEROGLYPH-13F67;Lo;0;L;;;;;N;;;;;
+13F68;EGYPTIAN HIEROGLYPH-13F68;Lo;0;L;;;;;N;;;;;
+13F69;EGYPTIAN HIEROGLYPH-13F69;Lo;0;L;;;;;N;;;;;
+13F6A;EGYPTIAN HIEROGLYPH-13F6A;Lo;0;L;;;;;N;;;;;
+13F6B;EGYPTIAN HIEROGLYPH-13F6B;Lo;0;L;;;;;N;;;;;
+13F6C;EGYPTIAN HIEROGLYPH-13F6C;Lo;0;L;;;;;N;;;;;
+13F6D;EGYPTIAN HIEROGLYPH-13F6D;Lo;0;L;;;;;N;;;;;
+13F6E;EGYPTIAN HIEROGLYPH-13F6E;Lo;0;L;;;;;N;;;;;
+13F6F;EGYPTIAN HIEROGLYPH-13F6F;Lo;0;L;;;;;N;;;;;
+13F70;EGYPTIAN HIEROGLYPH-13F70;Lo;0;L;;;;;N;;;;;
+13F71;EGYPTIAN HIEROGLYPH-13F71;Lo;0;L;;;;;N;;;;;
+13F72;EGYPTIAN HIEROGLYPH-13F72;Lo;0;L;;;;;N;;;;;
+13F73;EGYPTIAN HIEROGLYPH-13F73;Lo;0;L;;;;;N;;;;;
+13F74;EGYPTIAN HIEROGLYPH-13F74;Lo;0;L;;;;;N;;;;;
+13F75;EGYPTIAN HIEROGLYPH-13F75;Lo;0;L;;;;;N;;;;;
+13F76;EGYPTIAN HIEROGLYPH-13F76;Lo;0;L;;;;;N;;;;;
+13F77;EGYPTIAN HIEROGLYPH-13F77;Lo;0;L;;;;;N;;;;;
+13F78;EGYPTIAN HIEROGLYPH-13F78;Lo;0;L;;;;;N;;;;;
+13F79;EGYPTIAN HIEROGLYPH-13F79;Lo;0;L;;;;;N;;;;;
+13F7A;EGYPTIAN HIEROGLYPH-13F7A;Lo;0;L;;;;;N;;;;;
+13F7B;EGYPTIAN HIEROGLYPH-13F7B;Lo;0;L;;;;;N;;;;;
+13F7C;EGYPTIAN HIEROGLYPH-13F7C;Lo;0;L;;;;;N;;;;;
+13F7D;EGYPTIAN HIEROGLYPH-13F7D;Lo;0;L;;;;;N;;;;;
+13F7E;EGYPTIAN HIEROGLYPH-13F7E;Lo;0;L;;;;;N;;;;;
+13F7F;EGYPTIAN HIEROGLYPH-13F7F;Lo;0;L;;;;;N;;;;;
+13F80;EGYPTIAN HIEROGLYPH-13F80;Lo;0;L;;;;;N;;;;;
+13F81;EGYPTIAN HIEROGLYPH-13F81;Lo;0;L;;;;;N;;;;;
+13F82;EGYPTIAN HIEROGLYPH-13F82;Lo;0;L;;;;;N;;;;;
+13F83;EGYPTIAN HIEROGLYPH-13F83;Lo;0;L;;;;;N;;;;;
+13F84;EGYPTIAN HIEROGLYPH-13F84;Lo;0;L;;;;;N;;;;;
+13F85;EGYPTIAN HIEROGLYPH-13F85;Lo;0;L;;;;;N;;;;;
+13F86;EGYPTIAN HIEROGLYPH-13F86;Lo;0;L;;;;;N;;;;;
+13F87;EGYPTIAN HIEROGLYPH-13F87;Lo;0;L;;;;;N;;;;;
+13F88;EGYPTIAN HIEROGLYPH-13F88;Lo;0;L;;;;;N;;;;;
+13F89;EGYPTIAN HIEROGLYPH-13F89;Lo;0;L;;;;;N;;;;;
+13F8A;EGYPTIAN HIEROGLYPH-13F8A;Lo;0;L;;;;;N;;;;;
+13F8B;EGYPTIAN HIEROGLYPH-13F8B;Lo;0;L;;;;;N;;;;;
+13F8C;EGYPTIAN HIEROGLYPH-13F8C;Lo;0;L;;;;;N;;;;;
+13F8D;EGYPTIAN HIEROGLYPH-13F8D;Lo;0;L;;;;;N;;;;;
+13F8E;EGYPTIAN HIEROGLYPH-13F8E;Lo;0;L;;;;;N;;;;;
+13F8F;EGYPTIAN HIEROGLYPH-13F8F;Lo;0;L;;;;;N;;;;;
+13F90;EGYPTIAN HIEROGLYPH-13F90;Lo;0;L;;;;;N;;;;;
+13F91;EGYPTIAN HIEROGLYPH-13F91;Lo;0;L;;;;;N;;;;;
+13F92;EGYPTIAN HIEROGLYPH-13F92;Lo;0;L;;;;;N;;;;;
+13F93;EGYPTIAN HIEROGLYPH-13F93;Lo;0;L;;;;;N;;;;;
+13F94;EGYPTIAN HIEROGLYPH-13F94;Lo;0;L;;;;;N;;;;;
+13F95;EGYPTIAN HIEROGLYPH-13F95;Lo;0;L;;;;;N;;;;;
+13F96;EGYPTIAN HIEROGLYPH-13F96;Lo;0;L;;;;;N;;;;;
+13F97;EGYPTIAN HIEROGLYPH-13F97;Lo;0;L;;;;;N;;;;;
+13F98;EGYPTIAN HIEROGLYPH-13F98;Lo;0;L;;;;;N;;;;;
+13F99;EGYPTIAN HIEROGLYPH-13F99;Lo;0;L;;;;;N;;;;;
+13F9A;EGYPTIAN HIEROGLYPH-13F9A;Lo;0;L;;;;;N;;;;;
+13F9B;EGYPTIAN HIEROGLYPH-13F9B;Lo;0;L;;;;;N;;;;;
+13F9C;EGYPTIAN HIEROGLYPH-13F9C;Lo;0;L;;;;;N;;;;;
+13F9D;EGYPTIAN HIEROGLYPH-13F9D;Lo;0;L;;;;;N;;;;;
+13F9E;EGYPTIAN HIEROGLYPH-13F9E;Lo;0;L;;;;;N;;;;;
+13F9F;EGYPTIAN HIEROGLYPH-13F9F;Lo;0;L;;;;;N;;;;;
+13FA0;EGYPTIAN HIEROGLYPH-13FA0;Lo;0;L;;;;;N;;;;;
+13FA1;EGYPTIAN HIEROGLYPH-13FA1;Lo;0;L;;;;;N;;;;;
+13FA2;EGYPTIAN HIEROGLYPH-13FA2;Lo;0;L;;;;;N;;;;;
+13FA3;EGYPTIAN HIEROGLYPH-13FA3;Lo;0;L;;;;;N;;;;;
+13FA4;EGYPTIAN HIEROGLYPH-13FA4;Lo;0;L;;;;;N;;;;;
+13FA5;EGYPTIAN HIEROGLYPH-13FA5;Lo;0;L;;;;;N;;;;;
+13FA6;EGYPTIAN HIEROGLYPH-13FA6;Lo;0;L;;;;;N;;;;;
+13FA7;EGYPTIAN HIEROGLYPH-13FA7;Lo;0;L;;;;;N;;;;;
+13FA8;EGYPTIAN HIEROGLYPH-13FA8;Lo;0;L;;;;;N;;;;;
+13FA9;EGYPTIAN HIEROGLYPH-13FA9;Lo;0;L;;;;;N;;;;;
+13FAA;EGYPTIAN HIEROGLYPH-13FAA;Lo;0;L;;;;;N;;;;;
+13FAB;EGYPTIAN HIEROGLYPH-13FAB;Lo;0;L;;;;;N;;;;;
+13FAC;EGYPTIAN HIEROGLYPH-13FAC;Lo;0;L;;;;;N;;;;;
+13FAD;EGYPTIAN HIEROGLYPH-13FAD;Lo;0;L;;;;;N;;;;;
+13FAE;EGYPTIAN HIEROGLYPH-13FAE;Lo;0;L;;;;;N;;;;;
+13FAF;EGYPTIAN HIEROGLYPH-13FAF;Lo;0;L;;;;;N;;;;;
+13FB0;EGYPTIAN HIEROGLYPH-13FB0;Lo;0;L;;;;;N;;;;;
+13FB1;EGYPTIAN HIEROGLYPH-13FB1;Lo;0;L;;;;;N;;;;;
+13FB2;EGYPTIAN HIEROGLYPH-13FB2;Lo;0;L;;;;;N;;;;;
+13FB3;EGYPTIAN HIEROGLYPH-13FB3;Lo;0;L;;;;;N;;;;;
+13FB4;EGYPTIAN HIEROGLYPH-13FB4;Lo;0;L;;;;;N;;;;;
+13FB5;EGYPTIAN HIEROGLYPH-13FB5;Lo;0;L;;;;;N;;;;;
+13FB6;EGYPTIAN HIEROGLYPH-13FB6;Lo;0;L;;;;;N;;;;;
+13FB7;EGYPTIAN HIEROGLYPH-13FB7;Lo;0;L;;;;;N;;;;;
+13FB8;EGYPTIAN HIEROGLYPH-13FB8;Lo;0;L;;;;;N;;;;;
+13FB9;EGYPTIAN HIEROGLYPH-13FB9;Lo;0;L;;;;;N;;;;;
+13FBA;EGYPTIAN HIEROGLYPH-13FBA;Lo;0;L;;;;;N;;;;;
+13FBB;EGYPTIAN HIEROGLYPH-13FBB;Lo;0;L;;;;;N;;;;;
+13FBC;EGYPTIAN HIEROGLYPH-13FBC;Lo;0;L;;;;;N;;;;;
+13FBD;EGYPTIAN HIEROGLYPH-13FBD;Lo;0;L;;;;;N;;;;;
+13FBE;EGYPTIAN HIEROGLYPH-13FBE;Lo;0;L;;;;;N;;;;;
+13FBF;EGYPTIAN HIEROGLYPH-13FBF;Lo;0;L;;;;;N;;;;;
+13FC0;EGYPTIAN HIEROGLYPH-13FC0;Lo;0;L;;;;;N;;;;;
+13FC1;EGYPTIAN HIEROGLYPH-13FC1;Lo;0;L;;;;;N;;;;;
+13FC2;EGYPTIAN HIEROGLYPH-13FC2;Lo;0;L;;;;;N;;;;;
+13FC3;EGYPTIAN HIEROGLYPH-13FC3;Lo;0;L;;;;;N;;;;;
+13FC4;EGYPTIAN HIEROGLYPH-13FC4;Lo;0;L;;;;;N;;;;;
+13FC5;EGYPTIAN HIEROGLYPH-13FC5;Lo;0;L;;;;;N;;;;;
+13FC6;EGYPTIAN HIEROGLYPH-13FC6;Lo;0;L;;;;;N;;;;;
+13FC7;EGYPTIAN HIEROGLYPH-13FC7;Lo;0;L;;;;;N;;;;;
+13FC8;EGYPTIAN HIEROGLYPH-13FC8;Lo;0;L;;;;;N;;;;;
+13FC9;EGYPTIAN HIEROGLYPH-13FC9;Lo;0;L;;;;;N;;;;;
+13FCA;EGYPTIAN HIEROGLYPH-13FCA;Lo;0;L;;;;;N;;;;;
+13FCB;EGYPTIAN HIEROGLYPH-13FCB;Lo;0;L;;;;;N;;;;;
+13FCC;EGYPTIAN HIEROGLYPH-13FCC;Lo;0;L;;;;;N;;;;;
+13FCD;EGYPTIAN HIEROGLYPH-13FCD;Lo;0;L;;;;;N;;;;;
+13FCE;EGYPTIAN HIEROGLYPH-13FCE;Lo;0;L;;;;;N;;;;;
+13FCF;EGYPTIAN HIEROGLYPH-13FCF;Lo;0;L;;;;;N;;;;;
+13FD0;EGYPTIAN HIEROGLYPH-13FD0;Lo;0;L;;;;;N;;;;;
+13FD1;EGYPTIAN HIEROGLYPH-13FD1;Lo;0;L;;;;;N;;;;;
+13FD2;EGYPTIAN HIEROGLYPH-13FD2;Lo;0;L;;;;;N;;;;;
+13FD3;EGYPTIAN HIEROGLYPH-13FD3;Lo;0;L;;;;;N;;;;;
+13FD4;EGYPTIAN HIEROGLYPH-13FD4;Lo;0;L;;;;;N;;;;;
+13FD5;EGYPTIAN HIEROGLYPH-13FD5;Lo;0;L;;;;;N;;;;;
+13FD6;EGYPTIAN HIEROGLYPH-13FD6;Lo;0;L;;;;;N;;;;;
+13FD7;EGYPTIAN HIEROGLYPH-13FD7;Lo;0;L;;;;;N;;;;;
+13FD8;EGYPTIAN HIEROGLYPH-13FD8;Lo;0;L;;;;;N;;;;;
+13FD9;EGYPTIAN HIEROGLYPH-13FD9;Lo;0;L;;;;;N;;;;;
+13FDA;EGYPTIAN HIEROGLYPH-13FDA;Lo;0;L;;;;;N;;;;;
+13FDB;EGYPTIAN HIEROGLYPH-13FDB;Lo;0;L;;;;;N;;;;;
+13FDC;EGYPTIAN HIEROGLYPH-13FDC;Lo;0;L;;;;;N;;;;;
+13FDD;EGYPTIAN HIEROGLYPH-13FDD;Lo;0;L;;;;;N;;;;;
+13FDE;EGYPTIAN HIEROGLYPH-13FDE;Lo;0;L;;;;;N;;;;;
+13FDF;EGYPTIAN HIEROGLYPH-13FDF;Lo;0;L;;;;;N;;;;;
+13FE0;EGYPTIAN HIEROGLYPH-13FE0;Lo;0;L;;;;;N;;;;;
+13FE1;EGYPTIAN HIEROGLYPH-13FE1;Lo;0;L;;;;;N;;;;;
+13FE2;EGYPTIAN HIEROGLYPH-13FE2;Lo;0;L;;;;;N;;;;;
+13FE3;EGYPTIAN HIEROGLYPH-13FE3;Lo;0;L;;;;;N;;;;;
+13FE4;EGYPTIAN HIEROGLYPH-13FE4;Lo;0;L;;;;;N;;;;;
+13FE5;EGYPTIAN HIEROGLYPH-13FE5;Lo;0;L;;;;;N;;;;;
+13FE6;EGYPTIAN HIEROGLYPH-13FE6;Lo;0;L;;;;;N;;;;;
+13FE7;EGYPTIAN HIEROGLYPH-13FE7;Lo;0;L;;;;;N;;;;;
+13FE8;EGYPTIAN HIEROGLYPH-13FE8;Lo;0;L;;;;;N;;;;;
+13FE9;EGYPTIAN HIEROGLYPH-13FE9;Lo;0;L;;;;;N;;;;;
+13FEA;EGYPTIAN HIEROGLYPH-13FEA;Lo;0;L;;;;;N;;;;;
+13FEB;EGYPTIAN HIEROGLYPH-13FEB;Lo;0;L;;;;;N;;;;;
+13FEC;EGYPTIAN HIEROGLYPH-13FEC;Lo;0;L;;;;;N;;;;;
+13FED;EGYPTIAN HIEROGLYPH-13FED;Lo;0;L;;;;;N;;;;;
+13FEE;EGYPTIAN HIEROGLYPH-13FEE;Lo;0;L;;;;;N;;;;;
+13FEF;EGYPTIAN HIEROGLYPH-13FEF;Lo;0;L;;;;;N;;;;;
+13FF0;EGYPTIAN HIEROGLYPH-13FF0;Lo;0;L;;;;;N;;;;;
+13FF1;EGYPTIAN HIEROGLYPH-13FF1;Lo;0;L;;;;;N;;;;;
+13FF2;EGYPTIAN HIEROGLYPH-13FF2;Lo;0;L;;;;;N;;;;;
+13FF3;EGYPTIAN HIEROGLYPH-13FF3;Lo;0;L;;;;;N;;;;;
+13FF4;EGYPTIAN HIEROGLYPH-13FF4;Lo;0;L;;;;;N;;;;;
+13FF5;EGYPTIAN HIEROGLYPH-13FF5;Lo;0;L;;;;;N;;;;;
+13FF6;EGYPTIAN HIEROGLYPH-13FF6;Lo;0;L;;;;;N;;;;;
+13FF7;EGYPTIAN HIEROGLYPH-13FF7;Lo;0;L;;;;;N;;;;;
+13FF8;EGYPTIAN HIEROGLYPH-13FF8;Lo;0;L;;;;;N;;;;;
+13FF9;EGYPTIAN HIEROGLYPH-13FF9;Lo;0;L;;;;;N;;;;;
+13FFA;EGYPTIAN HIEROGLYPH-13FFA;Lo;0;L;;;;;N;;;;;
+13FFB;EGYPTIAN HIEROGLYPH-13FFB;Lo;0;L;;;;;N;;;;;
+13FFC;EGYPTIAN HIEROGLYPH-13FFC;Lo;0;L;;;;;N;;;;;
+13FFD;EGYPTIAN HIEROGLYPH-13FFD;Lo;0;L;;;;;N;;;;;
+13FFE;EGYPTIAN HIEROGLYPH-13FFE;Lo;0;L;;;;;N;;;;;
+13FFF;EGYPTIAN HIEROGLYPH-13FFF;Lo;0;L;;;;;N;;;;;
+14000;EGYPTIAN HIEROGLYPH-14000;Lo;0;L;;;;;N;;;;;
+14001;EGYPTIAN HIEROGLYPH-14001;Lo;0;L;;;;;N;;;;;
+14002;EGYPTIAN HIEROGLYPH-14002;Lo;0;L;;;;;N;;;;;
+14003;EGYPTIAN HIEROGLYPH-14003;Lo;0;L;;;;;N;;;;;
+14004;EGYPTIAN HIEROGLYPH-14004;Lo;0;L;;;;;N;;;;;
+14005;EGYPTIAN HIEROGLYPH-14005;Lo;0;L;;;;;N;;;;;
+14006;EGYPTIAN HIEROGLYPH-14006;Lo;0;L;;;;;N;;;;;
+14007;EGYPTIAN HIEROGLYPH-14007;Lo;0;L;;;;;N;;;;;
+14008;EGYPTIAN HIEROGLYPH-14008;Lo;0;L;;;;;N;;;;;
+14009;EGYPTIAN HIEROGLYPH-14009;Lo;0;L;;;;;N;;;;;
+1400A;EGYPTIAN HIEROGLYPH-1400A;Lo;0;L;;;;;N;;;;;
+1400B;EGYPTIAN HIEROGLYPH-1400B;Lo;0;L;;;;;N;;;;;
+1400C;EGYPTIAN HIEROGLYPH-1400C;Lo;0;L;;;;;N;;;;;
+1400D;EGYPTIAN HIEROGLYPH-1400D;Lo;0;L;;;;;N;;;;;
+1400E;EGYPTIAN HIEROGLYPH-1400E;Lo;0;L;;;;;N;;;;;
+1400F;EGYPTIAN HIEROGLYPH-1400F;Lo;0;L;;;;;N;;;;;
+14010;EGYPTIAN HIEROGLYPH-14010;Lo;0;L;;;;;N;;;;;
+14011;EGYPTIAN HIEROGLYPH-14011;Lo;0;L;;;;;N;;;;;
+14012;EGYPTIAN HIEROGLYPH-14012;Lo;0;L;;;;;N;;;;;
+14013;EGYPTIAN HIEROGLYPH-14013;Lo;0;L;;;;;N;;;;;
+14014;EGYPTIAN HIEROGLYPH-14014;Lo;0;L;;;;;N;;;;;
+14015;EGYPTIAN HIEROGLYPH-14015;Lo;0;L;;;;;N;;;;;
+14016;EGYPTIAN HIEROGLYPH-14016;Lo;0;L;;;;;N;;;;;
+14017;EGYPTIAN HIEROGLYPH-14017;Lo;0;L;;;;;N;;;;;
+14018;EGYPTIAN HIEROGLYPH-14018;Lo;0;L;;;;;N;;;;;
+14019;EGYPTIAN HIEROGLYPH-14019;Lo;0;L;;;;;N;;;;;
+1401A;EGYPTIAN HIEROGLYPH-1401A;Lo;0;L;;;;;N;;;;;
+1401B;EGYPTIAN HIEROGLYPH-1401B;Lo;0;L;;;;;N;;;;;
+1401C;EGYPTIAN HIEROGLYPH-1401C;Lo;0;L;;;;;N;;;;;
+1401D;EGYPTIAN HIEROGLYPH-1401D;Lo;0;L;;;;;N;;;;;
+1401E;EGYPTIAN HIEROGLYPH-1401E;Lo;0;L;;;;;N;;;;;
+1401F;EGYPTIAN HIEROGLYPH-1401F;Lo;0;L;;;;;N;;;;;
+14020;EGYPTIAN HIEROGLYPH-14020;Lo;0;L;;;;;N;;;;;
+14021;EGYPTIAN HIEROGLYPH-14021;Lo;0;L;;;;;N;;;;;
+14022;EGYPTIAN HIEROGLYPH-14022;Lo;0;L;;;;;N;;;;;
+14023;EGYPTIAN HIEROGLYPH-14023;Lo;0;L;;;;;N;;;;;
+14024;EGYPTIAN HIEROGLYPH-14024;Lo;0;L;;;;;N;;;;;
+14025;EGYPTIAN HIEROGLYPH-14025;Lo;0;L;;;;;N;;;;;
+14026;EGYPTIAN HIEROGLYPH-14026;Lo;0;L;;;;;N;;;;;
+14027;EGYPTIAN HIEROGLYPH-14027;Lo;0;L;;;;;N;;;;;
+14028;EGYPTIAN HIEROGLYPH-14028;Lo;0;L;;;;;N;;;;;
+14029;EGYPTIAN HIEROGLYPH-14029;Lo;0;L;;;;;N;;;;;
+1402A;EGYPTIAN HIEROGLYPH-1402A;Lo;0;L;;;;;N;;;;;
+1402B;EGYPTIAN HIEROGLYPH-1402B;Lo;0;L;;;;;N;;;;;
+1402C;EGYPTIAN HIEROGLYPH-1402C;Lo;0;L;;;;;N;;;;;
+1402D;EGYPTIAN HIEROGLYPH-1402D;Lo;0;L;;;;;N;;;;;
+1402E;EGYPTIAN HIEROGLYPH-1402E;Lo;0;L;;;;;N;;;;;
+1402F;EGYPTIAN HIEROGLYPH-1402F;Lo;0;L;;;;;N;;;;;
+14030;EGYPTIAN HIEROGLYPH-14030;Lo;0;L;;;;;N;;;;;
+14031;EGYPTIAN HIEROGLYPH-14031;Lo;0;L;;;;;N;;;;;
+14032;EGYPTIAN HIEROGLYPH-14032;Lo;0;L;;;;;N;;;;;
+14033;EGYPTIAN HIEROGLYPH-14033;Lo;0;L;;;;;N;;;;;
+14034;EGYPTIAN HIEROGLYPH-14034;Lo;0;L;;;;;N;;;;;
+14035;EGYPTIAN HIEROGLYPH-14035;Lo;0;L;;;;;N;;;;;
+14036;EGYPTIAN HIEROGLYPH-14036;Lo;0;L;;;;;N;;;;;
+14037;EGYPTIAN HIEROGLYPH-14037;Lo;0;L;;;;;N;;;;;
+14038;EGYPTIAN HIEROGLYPH-14038;Lo;0;L;;;;;N;;;;;
+14039;EGYPTIAN HIEROGLYPH-14039;Lo;0;L;;;;;N;;;;;
+1403A;EGYPTIAN HIEROGLYPH-1403A;Lo;0;L;;;;;N;;;;;
+1403B;EGYPTIAN HIEROGLYPH-1403B;Lo;0;L;;;;;N;;;;;
+1403C;EGYPTIAN HIEROGLYPH-1403C;Lo;0;L;;;;;N;;;;;
+1403D;EGYPTIAN HIEROGLYPH-1403D;Lo;0;L;;;;;N;;;;;
+1403E;EGYPTIAN HIEROGLYPH-1403E;Lo;0;L;;;;;N;;;;;
+1403F;EGYPTIAN HIEROGLYPH-1403F;Lo;0;L;;;;;N;;;;;
+14040;EGYPTIAN HIEROGLYPH-14040;Lo;0;L;;;;;N;;;;;
+14041;EGYPTIAN HIEROGLYPH-14041;Lo;0;L;;;;;N;;;;;
+14042;EGYPTIAN HIEROGLYPH-14042;Lo;0;L;;;;;N;;;;;
+14043;EGYPTIAN HIEROGLYPH-14043;Lo;0;L;;;;;N;;;;;
+14044;EGYPTIAN HIEROGLYPH-14044;Lo;0;L;;;;;N;;;;;
+14045;EGYPTIAN HIEROGLYPH-14045;Lo;0;L;;;;;N;;;;;
+14046;EGYPTIAN HIEROGLYPH-14046;Lo;0;L;;;;;N;;;;;
+14047;EGYPTIAN HIEROGLYPH-14047;Lo;0;L;;;;;N;;;;;
+14048;EGYPTIAN HIEROGLYPH-14048;Lo;0;L;;;;;N;;;;;
+14049;EGYPTIAN HIEROGLYPH-14049;Lo;0;L;;;;;N;;;;;
+1404A;EGYPTIAN HIEROGLYPH-1404A;Lo;0;L;;;;;N;;;;;
+1404B;EGYPTIAN HIEROGLYPH-1404B;Lo;0;L;;;;;N;;;;;
+1404C;EGYPTIAN HIEROGLYPH-1404C;Lo;0;L;;;;;N;;;;;
+1404D;EGYPTIAN HIEROGLYPH-1404D;Lo;0;L;;;;;N;;;;;
+1404E;EGYPTIAN HIEROGLYPH-1404E;Lo;0;L;;;;;N;;;;;
+1404F;EGYPTIAN HIEROGLYPH-1404F;Lo;0;L;;;;;N;;;;;
+14050;EGYPTIAN HIEROGLYPH-14050;Lo;0;L;;;;;N;;;;;
+14051;EGYPTIAN HIEROGLYPH-14051;Lo;0;L;;;;;N;;;;;
+14052;EGYPTIAN HIEROGLYPH-14052;Lo;0;L;;;;;N;;;;;
+14053;EGYPTIAN HIEROGLYPH-14053;Lo;0;L;;;;;N;;;;;
+14054;EGYPTIAN HIEROGLYPH-14054;Lo;0;L;;;;;N;;;;;
+14055;EGYPTIAN HIEROGLYPH-14055;Lo;0;L;;;;;N;;;;;
+14056;EGYPTIAN HIEROGLYPH-14056;Lo;0;L;;;;;N;;;;;
+14057;EGYPTIAN HIEROGLYPH-14057;Lo;0;L;;;;;N;;;;;
+14058;EGYPTIAN HIEROGLYPH-14058;Lo;0;L;;;;;N;;;;;
+14059;EGYPTIAN HIEROGLYPH-14059;Lo;0;L;;;;;N;;;;;
+1405A;EGYPTIAN HIEROGLYPH-1405A;Lo;0;L;;;;;N;;;;;
+1405B;EGYPTIAN HIEROGLYPH-1405B;Lo;0;L;;;;;N;;;;;
+1405C;EGYPTIAN HIEROGLYPH-1405C;Lo;0;L;;;;;N;;;;;
+1405D;EGYPTIAN HIEROGLYPH-1405D;Lo;0;L;;;;;N;;;;;
+1405E;EGYPTIAN HIEROGLYPH-1405E;Lo;0;L;;;;;N;;;;;
+1405F;EGYPTIAN HIEROGLYPH-1405F;Lo;0;L;;;;;N;;;;;
+14060;EGYPTIAN HIEROGLYPH-14060;Lo;0;L;;;;;N;;;;;
+14061;EGYPTIAN HIEROGLYPH-14061;Lo;0;L;;;;;N;;;;;
+14062;EGYPTIAN HIEROGLYPH-14062;Lo;0;L;;;;;N;;;;;
+14063;EGYPTIAN HIEROGLYPH-14063;Lo;0;L;;;;;N;;;;;
+14064;EGYPTIAN HIEROGLYPH-14064;Lo;0;L;;;;;N;;;;;
+14065;EGYPTIAN HIEROGLYPH-14065;Lo;0;L;;;;;N;;;;;
+14066;EGYPTIAN HIEROGLYPH-14066;Lo;0;L;;;;;N;;;;;
+14067;EGYPTIAN HIEROGLYPH-14067;Lo;0;L;;;;;N;;;;;
+14068;EGYPTIAN HIEROGLYPH-14068;Lo;0;L;;;;;N;;;;;
+14069;EGYPTIAN HIEROGLYPH-14069;Lo;0;L;;;;;N;;;;;
+1406A;EGYPTIAN HIEROGLYPH-1406A;Lo;0;L;;;;;N;;;;;
+1406B;EGYPTIAN HIEROGLYPH-1406B;Lo;0;L;;;;;N;;;;;
+1406C;EGYPTIAN HIEROGLYPH-1406C;Lo;0;L;;;;;N;;;;;
+1406D;EGYPTIAN HIEROGLYPH-1406D;Lo;0;L;;;;;N;;;;;
+1406E;EGYPTIAN HIEROGLYPH-1406E;Lo;0;L;;;;;N;;;;;
+1406F;EGYPTIAN HIEROGLYPH-1406F;Lo;0;L;;;;;N;;;;;
+14070;EGYPTIAN HIEROGLYPH-14070;Lo;0;L;;;;;N;;;;;
+14071;EGYPTIAN HIEROGLYPH-14071;Lo;0;L;;;;;N;;;;;
+14072;EGYPTIAN HIEROGLYPH-14072;Lo;0;L;;;;;N;;;;;
+14073;EGYPTIAN HIEROGLYPH-14073;Lo;0;L;;;;;N;;;;;
+14074;EGYPTIAN HIEROGLYPH-14074;Lo;0;L;;;;;N;;;;;
+14075;EGYPTIAN HIEROGLYPH-14075;Lo;0;L;;;;;N;;;;;
+14076;EGYPTIAN HIEROGLYPH-14076;Lo;0;L;;;;;N;;;;;
+14077;EGYPTIAN HIEROGLYPH-14077;Lo;0;L;;;;;N;;;;;
+14078;EGYPTIAN HIEROGLYPH-14078;Lo;0;L;;;;;N;;;;;
+14079;EGYPTIAN HIEROGLYPH-14079;Lo;0;L;;;;;N;;;;;
+1407A;EGYPTIAN HIEROGLYPH-1407A;Lo;0;L;;;;;N;;;;;
+1407B;EGYPTIAN HIEROGLYPH-1407B;Lo;0;L;;;;;N;;;;;
+1407C;EGYPTIAN HIEROGLYPH-1407C;Lo;0;L;;;;;N;;;;;
+1407D;EGYPTIAN HIEROGLYPH-1407D;Lo;0;L;;;;;N;;;;;
+1407E;EGYPTIAN HIEROGLYPH-1407E;Lo;0;L;;;;;N;;;;;
+1407F;EGYPTIAN HIEROGLYPH-1407F;Lo;0;L;;;;;N;;;;;
+14080;EGYPTIAN HIEROGLYPH-14080;Lo;0;L;;;;;N;;;;;
+14081;EGYPTIAN HIEROGLYPH-14081;Lo;0;L;;;;;N;;;;;
+14082;EGYPTIAN HIEROGLYPH-14082;Lo;0;L;;;;;N;;;;;
+14083;EGYPTIAN HIEROGLYPH-14083;Lo;0;L;;;;;N;;;;;
+14084;EGYPTIAN HIEROGLYPH-14084;Lo;0;L;;;;;N;;;;;
+14085;EGYPTIAN HIEROGLYPH-14085;Lo;0;L;;;;;N;;;;;
+14086;EGYPTIAN HIEROGLYPH-14086;Lo;0;L;;;;;N;;;;;
+14087;EGYPTIAN HIEROGLYPH-14087;Lo;0;L;;;;;N;;;;;
+14088;EGYPTIAN HIEROGLYPH-14088;Lo;0;L;;;;;N;;;;;
+14089;EGYPTIAN HIEROGLYPH-14089;Lo;0;L;;;;;N;;;;;
+1408A;EGYPTIAN HIEROGLYPH-1408A;Lo;0;L;;;;;N;;;;;
+1408B;EGYPTIAN HIEROGLYPH-1408B;Lo;0;L;;;;;N;;;;;
+1408C;EGYPTIAN HIEROGLYPH-1408C;Lo;0;L;;;;;N;;;;;
+1408D;EGYPTIAN HIEROGLYPH-1408D;Lo;0;L;;;;;N;;;;;
+1408E;EGYPTIAN HIEROGLYPH-1408E;Lo;0;L;;;;;N;;;;;
+1408F;EGYPTIAN HIEROGLYPH-1408F;Lo;0;L;;;;;N;;;;;
+14090;EGYPTIAN HIEROGLYPH-14090;Lo;0;L;;;;;N;;;;;
+14091;EGYPTIAN HIEROGLYPH-14091;Lo;0;L;;;;;N;;;;;
+14092;EGYPTIAN HIEROGLYPH-14092;Lo;0;L;;;;;N;;;;;
+14093;EGYPTIAN HIEROGLYPH-14093;Lo;0;L;;;;;N;;;;;
+14094;EGYPTIAN HIEROGLYPH-14094;Lo;0;L;;;;;N;;;;;
+14095;EGYPTIAN HIEROGLYPH-14095;Lo;0;L;;;;;N;;;;;
+14096;EGYPTIAN HIEROGLYPH-14096;Lo;0;L;;;;;N;;;;;
+14097;EGYPTIAN HIEROGLYPH-14097;Lo;0;L;;;;;N;;;;;
+14098;EGYPTIAN HIEROGLYPH-14098;Lo;0;L;;;;;N;;;;;
+14099;EGYPTIAN HIEROGLYPH-14099;Lo;0;L;;;;;N;;;;;
+1409A;EGYPTIAN HIEROGLYPH-1409A;Lo;0;L;;;;;N;;;;;
+1409B;EGYPTIAN HIEROGLYPH-1409B;Lo;0;L;;;;;N;;;;;
+1409C;EGYPTIAN HIEROGLYPH-1409C;Lo;0;L;;;;;N;;;;;
+1409D;EGYPTIAN HIEROGLYPH-1409D;Lo;0;L;;;;;N;;;;;
+1409E;EGYPTIAN HIEROGLYPH-1409E;Lo;0;L;;;;;N;;;;;
+1409F;EGYPTIAN HIEROGLYPH-1409F;Lo;0;L;;;;;N;;;;;
+140A0;EGYPTIAN HIEROGLYPH-140A0;Lo;0;L;;;;;N;;;;;
+140A1;EGYPTIAN HIEROGLYPH-140A1;Lo;0;L;;;;;N;;;;;
+140A2;EGYPTIAN HIEROGLYPH-140A2;Lo;0;L;;;;;N;;;;;
+140A3;EGYPTIAN HIEROGLYPH-140A3;Lo;0;L;;;;;N;;;;;
+140A4;EGYPTIAN HIEROGLYPH-140A4;Lo;0;L;;;;;N;;;;;
+140A5;EGYPTIAN HIEROGLYPH-140A5;Lo;0;L;;;;;N;;;;;
+140A6;EGYPTIAN HIEROGLYPH-140A6;Lo;0;L;;;;;N;;;;;
+140A7;EGYPTIAN HIEROGLYPH-140A7;Lo;0;L;;;;;N;;;;;
+140A8;EGYPTIAN HIEROGLYPH-140A8;Lo;0;L;;;;;N;;;;;
+140A9;EGYPTIAN HIEROGLYPH-140A9;Lo;0;L;;;;;N;;;;;
+140AA;EGYPTIAN HIEROGLYPH-140AA;Lo;0;L;;;;;N;;;;;
+140AB;EGYPTIAN HIEROGLYPH-140AB;Lo;0;L;;;;;N;;;;;
+140AC;EGYPTIAN HIEROGLYPH-140AC;Lo;0;L;;;;;N;;;;;
+140AD;EGYPTIAN HIEROGLYPH-140AD;Lo;0;L;;;;;N;;;;;
+140AE;EGYPTIAN HIEROGLYPH-140AE;Lo;0;L;;;;;N;;;;;
+140AF;EGYPTIAN HIEROGLYPH-140AF;Lo;0;L;;;;;N;;;;;
+140B0;EGYPTIAN HIEROGLYPH-140B0;Lo;0;L;;;;;N;;;;;
+140B1;EGYPTIAN HIEROGLYPH-140B1;Lo;0;L;;;;;N;;;;;
+140B2;EGYPTIAN HIEROGLYPH-140B2;Lo;0;L;;;;;N;;;;;
+140B3;EGYPTIAN HIEROGLYPH-140B3;Lo;0;L;;;;;N;;;;;
+140B4;EGYPTIAN HIEROGLYPH-140B4;Lo;0;L;;;;;N;;;;;
+140B5;EGYPTIAN HIEROGLYPH-140B5;Lo;0;L;;;;;N;;;;;
+140B6;EGYPTIAN HIEROGLYPH-140B6;Lo;0;L;;;;;N;;;;;
+140B7;EGYPTIAN HIEROGLYPH-140B7;Lo;0;L;;;;;N;;;;;
+140B8;EGYPTIAN HIEROGLYPH-140B8;Lo;0;L;;;;;N;;;;;
+140B9;EGYPTIAN HIEROGLYPH-140B9;Lo;0;L;;;;;N;;;;;
+140BA;EGYPTIAN HIEROGLYPH-140BA;Lo;0;L;;;;;N;;;;;
+140BB;EGYPTIAN HIEROGLYPH-140BB;Lo;0;L;;;;;N;;;;;
+140BC;EGYPTIAN HIEROGLYPH-140BC;Lo;0;L;;;;;N;;;;;
+140BD;EGYPTIAN HIEROGLYPH-140BD;Lo;0;L;;;;;N;;;;;
+140BE;EGYPTIAN HIEROGLYPH-140BE;Lo;0;L;;;;;N;;;;;
+140BF;EGYPTIAN HIEROGLYPH-140BF;Lo;0;L;;;;;N;;;;;
+140C0;EGYPTIAN HIEROGLYPH-140C0;Lo;0;L;;;;;N;;;;;
+140C1;EGYPTIAN HIEROGLYPH-140C1;Lo;0;L;;;;;N;;;;;
+140C2;EGYPTIAN HIEROGLYPH-140C2;Lo;0;L;;;;;N;;;;;
+140C3;EGYPTIAN HIEROGLYPH-140C3;Lo;0;L;;;;;N;;;;;
+140C4;EGYPTIAN HIEROGLYPH-140C4;Lo;0;L;;;;;N;;;;;
+140C5;EGYPTIAN HIEROGLYPH-140C5;Lo;0;L;;;;;N;;;;;
+140C6;EGYPTIAN HIEROGLYPH-140C6;Lo;0;L;;;;;N;;;;;
+140C7;EGYPTIAN HIEROGLYPH-140C7;Lo;0;L;;;;;N;;;;;
+140C8;EGYPTIAN HIEROGLYPH-140C8;Lo;0;L;;;;;N;;;;;
+140C9;EGYPTIAN HIEROGLYPH-140C9;Lo;0;L;;;;;N;;;;;
+140CA;EGYPTIAN HIEROGLYPH-140CA;Lo;0;L;;;;;N;;;;;
+140CB;EGYPTIAN HIEROGLYPH-140CB;Lo;0;L;;;;;N;;;;;
+140CC;EGYPTIAN HIEROGLYPH-140CC;Lo;0;L;;;;;N;;;;;
+140CD;EGYPTIAN HIEROGLYPH-140CD;Lo;0;L;;;;;N;;;;;
+140CE;EGYPTIAN HIEROGLYPH-140CE;Lo;0;L;;;;;N;;;;;
+140CF;EGYPTIAN HIEROGLYPH-140CF;Lo;0;L;;;;;N;;;;;
+140D0;EGYPTIAN HIEROGLYPH-140D0;Lo;0;L;;;;;N;;;;;
+140D1;EGYPTIAN HIEROGLYPH-140D1;Lo;0;L;;;;;N;;;;;
+140D2;EGYPTIAN HIEROGLYPH-140D2;Lo;0;L;;;;;N;;;;;
+140D3;EGYPTIAN HIEROGLYPH-140D3;Lo;0;L;;;;;N;;;;;
+140D4;EGYPTIAN HIEROGLYPH-140D4;Lo;0;L;;;;;N;;;;;
+140D5;EGYPTIAN HIEROGLYPH-140D5;Lo;0;L;;;;;N;;;;;
+140D6;EGYPTIAN HIEROGLYPH-140D6;Lo;0;L;;;;;N;;;;;
+140D7;EGYPTIAN HIEROGLYPH-140D7;Lo;0;L;;;;;N;;;;;
+140D8;EGYPTIAN HIEROGLYPH-140D8;Lo;0;L;;;;;N;;;;;
+140D9;EGYPTIAN HIEROGLYPH-140D9;Lo;0;L;;;;;N;;;;;
+140DA;EGYPTIAN HIEROGLYPH-140DA;Lo;0;L;;;;;N;;;;;
+140DB;EGYPTIAN HIEROGLYPH-140DB;Lo;0;L;;;;;N;;;;;
+140DC;EGYPTIAN HIEROGLYPH-140DC;Lo;0;L;;;;;N;;;;;
+140DD;EGYPTIAN HIEROGLYPH-140DD;Lo;0;L;;;;;N;;;;;
+140DE;EGYPTIAN HIEROGLYPH-140DE;Lo;0;L;;;;;N;;;;;
+140DF;EGYPTIAN HIEROGLYPH-140DF;Lo;0;L;;;;;N;;;;;
+140E0;EGYPTIAN HIEROGLYPH-140E0;Lo;0;L;;;;;N;;;;;
+140E1;EGYPTIAN HIEROGLYPH-140E1;Lo;0;L;;;;;N;;;;;
+140E2;EGYPTIAN HIEROGLYPH-140E2;Lo;0;L;;;;;N;;;;;
+140E3;EGYPTIAN HIEROGLYPH-140E3;Lo;0;L;;;;;N;;;;;
+140E4;EGYPTIAN HIEROGLYPH-140E4;Lo;0;L;;;;;N;;;;;
+140E5;EGYPTIAN HIEROGLYPH-140E5;Lo;0;L;;;;;N;;;;;
+140E6;EGYPTIAN HIEROGLYPH-140E6;Lo;0;L;;;;;N;;;;;
+140E7;EGYPTIAN HIEROGLYPH-140E7;Lo;0;L;;;;;N;;;;;
+140E8;EGYPTIAN HIEROGLYPH-140E8;Lo;0;L;;;;;N;;;;;
+140E9;EGYPTIAN HIEROGLYPH-140E9;Lo;0;L;;;;;N;;;;;
+140EA;EGYPTIAN HIEROGLYPH-140EA;Lo;0;L;;;;;N;;;;;
+140EB;EGYPTIAN HIEROGLYPH-140EB;Lo;0;L;;;;;N;;;;;
+140EC;EGYPTIAN HIEROGLYPH-140EC;Lo;0;L;;;;;N;;;;;
+140ED;EGYPTIAN HIEROGLYPH-140ED;Lo;0;L;;;;;N;;;;;
+140EE;EGYPTIAN HIEROGLYPH-140EE;Lo;0;L;;;;;N;;;;;
+140EF;EGYPTIAN HIEROGLYPH-140EF;Lo;0;L;;;;;N;;;;;
+140F0;EGYPTIAN HIEROGLYPH-140F0;Lo;0;L;;;;;N;;;;;
+140F1;EGYPTIAN HIEROGLYPH-140F1;Lo;0;L;;;;;N;;;;;
+140F2;EGYPTIAN HIEROGLYPH-140F2;Lo;0;L;;;;;N;;;;;
+140F3;EGYPTIAN HIEROGLYPH-140F3;Lo;0;L;;;;;N;;;;;
+140F4;EGYPTIAN HIEROGLYPH-140F4;Lo;0;L;;;;;N;;;;;
+140F5;EGYPTIAN HIEROGLYPH-140F5;Lo;0;L;;;;;N;;;;;
+140F6;EGYPTIAN HIEROGLYPH-140F6;Lo;0;L;;;;;N;;;;;
+140F7;EGYPTIAN HIEROGLYPH-140F7;Lo;0;L;;;;;N;;;;;
+140F8;EGYPTIAN HIEROGLYPH-140F8;Lo;0;L;;;;;N;;;;;
+140F9;EGYPTIAN HIEROGLYPH-140F9;Lo;0;L;;;;;N;;;;;
+140FA;EGYPTIAN HIEROGLYPH-140FA;Lo;0;L;;;;;N;;;;;
+140FB;EGYPTIAN HIEROGLYPH-140FB;Lo;0;L;;;;;N;;;;;
+140FC;EGYPTIAN HIEROGLYPH-140FC;Lo;0;L;;;;;N;;;;;
+140FD;EGYPTIAN HIEROGLYPH-140FD;Lo;0;L;;;;;N;;;;;
+140FE;EGYPTIAN HIEROGLYPH-140FE;Lo;0;L;;;;;N;;;;;
+140FF;EGYPTIAN HIEROGLYPH-140FF;Lo;0;L;;;;;N;;;;;
+14100;EGYPTIAN HIEROGLYPH-14100;Lo;0;L;;;;;N;;;;;
+14101;EGYPTIAN HIEROGLYPH-14101;Lo;0;L;;;;;N;;;;;
+14102;EGYPTIAN HIEROGLYPH-14102;Lo;0;L;;;;;N;;;;;
+14103;EGYPTIAN HIEROGLYPH-14103;Lo;0;L;;;;;N;;;;;
+14104;EGYPTIAN HIEROGLYPH-14104;Lo;0;L;;;;;N;;;;;
+14105;EGYPTIAN HIEROGLYPH-14105;Lo;0;L;;;;;N;;;;;
+14106;EGYPTIAN HIEROGLYPH-14106;Lo;0;L;;;;;N;;;;;
+14107;EGYPTIAN HIEROGLYPH-14107;Lo;0;L;;;;;N;;;;;
+14108;EGYPTIAN HIEROGLYPH-14108;Lo;0;L;;;;;N;;;;;
+14109;EGYPTIAN HIEROGLYPH-14109;Lo;0;L;;;;;N;;;;;
+1410A;EGYPTIAN HIEROGLYPH-1410A;Lo;0;L;;;;;N;;;;;
+1410B;EGYPTIAN HIEROGLYPH-1410B;Lo;0;L;;;;;N;;;;;
+1410C;EGYPTIAN HIEROGLYPH-1410C;Lo;0;L;;;;;N;;;;;
+1410D;EGYPTIAN HIEROGLYPH-1410D;Lo;0;L;;;;;N;;;;;
+1410E;EGYPTIAN HIEROGLYPH-1410E;Lo;0;L;;;;;N;;;;;
+1410F;EGYPTIAN HIEROGLYPH-1410F;Lo;0;L;;;;;N;;;;;
+14110;EGYPTIAN HIEROGLYPH-14110;Lo;0;L;;;;;N;;;;;
+14111;EGYPTIAN HIEROGLYPH-14111;Lo;0;L;;;;;N;;;;;
+14112;EGYPTIAN HIEROGLYPH-14112;Lo;0;L;;;;;N;;;;;
+14113;EGYPTIAN HIEROGLYPH-14113;Lo;0;L;;;;;N;;;;;
+14114;EGYPTIAN HIEROGLYPH-14114;Lo;0;L;;;;;N;;;;;
+14115;EGYPTIAN HIEROGLYPH-14115;Lo;0;L;;;;;N;;;;;
+14116;EGYPTIAN HIEROGLYPH-14116;Lo;0;L;;;;;N;;;;;
+14117;EGYPTIAN HIEROGLYPH-14117;Lo;0;L;;;;;N;;;;;
+14118;EGYPTIAN HIEROGLYPH-14118;Lo;0;L;;;;;N;;;;;
+14119;EGYPTIAN HIEROGLYPH-14119;Lo;0;L;;;;;N;;;;;
+1411A;EGYPTIAN HIEROGLYPH-1411A;Lo;0;L;;;;;N;;;;;
+1411B;EGYPTIAN HIEROGLYPH-1411B;Lo;0;L;;;;;N;;;;;
+1411C;EGYPTIAN HIEROGLYPH-1411C;Lo;0;L;;;;;N;;;;;
+1411D;EGYPTIAN HIEROGLYPH-1411D;Lo;0;L;;;;;N;;;;;
+1411E;EGYPTIAN HIEROGLYPH-1411E;Lo;0;L;;;;;N;;;;;
+1411F;EGYPTIAN HIEROGLYPH-1411F;Lo;0;L;;;;;N;;;;;
+14120;EGYPTIAN HIEROGLYPH-14120;Lo;0;L;;;;;N;;;;;
+14121;EGYPTIAN HIEROGLYPH-14121;Lo;0;L;;;;;N;;;;;
+14122;EGYPTIAN HIEROGLYPH-14122;Lo;0;L;;;;;N;;;;;
+14123;EGYPTIAN HIEROGLYPH-14123;Lo;0;L;;;;;N;;;;;
+14124;EGYPTIAN HIEROGLYPH-14124;Lo;0;L;;;;;N;;;;;
+14125;EGYPTIAN HIEROGLYPH-14125;Lo;0;L;;;;;N;;;;;
+14126;EGYPTIAN HIEROGLYPH-14126;Lo;0;L;;;;;N;;;;;
+14127;EGYPTIAN HIEROGLYPH-14127;Lo;0;L;;;;;N;;;;;
+14128;EGYPTIAN HIEROGLYPH-14128;Lo;0;L;;;;;N;;;;;
+14129;EGYPTIAN HIEROGLYPH-14129;Lo;0;L;;;;;N;;;;;
+1412A;EGYPTIAN HIEROGLYPH-1412A;Lo;0;L;;;;;N;;;;;
+1412B;EGYPTIAN HIEROGLYPH-1412B;Lo;0;L;;;;;N;;;;;
+1412C;EGYPTIAN HIEROGLYPH-1412C;Lo;0;L;;;;;N;;;;;
+1412D;EGYPTIAN HIEROGLYPH-1412D;Lo;0;L;;;;;N;;;;;
+1412E;EGYPTIAN HIEROGLYPH-1412E;Lo;0;L;;;;;N;;;;;
+1412F;EGYPTIAN HIEROGLYPH-1412F;Lo;0;L;;;;;N;;;;;
+14130;EGYPTIAN HIEROGLYPH-14130;Lo;0;L;;;;;N;;;;;
+14131;EGYPTIAN HIEROGLYPH-14131;Lo;0;L;;;;;N;;;;;
+14132;EGYPTIAN HIEROGLYPH-14132;Lo;0;L;;;;;N;;;;;
+14133;EGYPTIAN HIEROGLYPH-14133;Lo;0;L;;;;;N;;;;;
+14134;EGYPTIAN HIEROGLYPH-14134;Lo;0;L;;;;;N;;;;;
+14135;EGYPTIAN HIEROGLYPH-14135;Lo;0;L;;;;;N;;;;;
+14136;EGYPTIAN HIEROGLYPH-14136;Lo;0;L;;;;;N;;;;;
+14137;EGYPTIAN HIEROGLYPH-14137;Lo;0;L;;;;;N;;;;;
+14138;EGYPTIAN HIEROGLYPH-14138;Lo;0;L;;;;;N;;;;;
+14139;EGYPTIAN HIEROGLYPH-14139;Lo;0;L;;;;;N;;;;;
+1413A;EGYPTIAN HIEROGLYPH-1413A;Lo;0;L;;;;;N;;;;;
+1413B;EGYPTIAN HIEROGLYPH-1413B;Lo;0;L;;;;;N;;;;;
+1413C;EGYPTIAN HIEROGLYPH-1413C;Lo;0;L;;;;;N;;;;;
+1413D;EGYPTIAN HIEROGLYPH-1413D;Lo;0;L;;;;;N;;;;;
+1413E;EGYPTIAN HIEROGLYPH-1413E;Lo;0;L;;;;;N;;;;;
+1413F;EGYPTIAN HIEROGLYPH-1413F;Lo;0;L;;;;;N;;;;;
+14140;EGYPTIAN HIEROGLYPH-14140;Lo;0;L;;;;;N;;;;;
+14141;EGYPTIAN HIEROGLYPH-14141;Lo;0;L;;;;;N;;;;;
+14142;EGYPTIAN HIEROGLYPH-14142;Lo;0;L;;;;;N;;;;;
+14143;EGYPTIAN HIEROGLYPH-14143;Lo;0;L;;;;;N;;;;;
+14144;EGYPTIAN HIEROGLYPH-14144;Lo;0;L;;;;;N;;;;;
+14145;EGYPTIAN HIEROGLYPH-14145;Lo;0;L;;;;;N;;;;;
+14146;EGYPTIAN HIEROGLYPH-14146;Lo;0;L;;;;;N;;;;;
+14147;EGYPTIAN HIEROGLYPH-14147;Lo;0;L;;;;;N;;;;;
+14148;EGYPTIAN HIEROGLYPH-14148;Lo;0;L;;;;;N;;;;;
+14149;EGYPTIAN HIEROGLYPH-14149;Lo;0;L;;;;;N;;;;;
+1414A;EGYPTIAN HIEROGLYPH-1414A;Lo;0;L;;;;;N;;;;;
+1414B;EGYPTIAN HIEROGLYPH-1414B;Lo;0;L;;;;;N;;;;;
+1414C;EGYPTIAN HIEROGLYPH-1414C;Lo;0;L;;;;;N;;;;;
+1414D;EGYPTIAN HIEROGLYPH-1414D;Lo;0;L;;;;;N;;;;;
+1414E;EGYPTIAN HIEROGLYPH-1414E;Lo;0;L;;;;;N;;;;;
+1414F;EGYPTIAN HIEROGLYPH-1414F;Lo;0;L;;;;;N;;;;;
+14150;EGYPTIAN HIEROGLYPH-14150;Lo;0;L;;;;;N;;;;;
+14151;EGYPTIAN HIEROGLYPH-14151;Lo;0;L;;;;;N;;;;;
+14152;EGYPTIAN HIEROGLYPH-14152;Lo;0;L;;;;;N;;;;;
+14153;EGYPTIAN HIEROGLYPH-14153;Lo;0;L;;;;;N;;;;;
+14154;EGYPTIAN HIEROGLYPH-14154;Lo;0;L;;;;;N;;;;;
+14155;EGYPTIAN HIEROGLYPH-14155;Lo;0;L;;;;;N;;;;;
+14156;EGYPTIAN HIEROGLYPH-14156;Lo;0;L;;;;;N;;;;;
+14157;EGYPTIAN HIEROGLYPH-14157;Lo;0;L;;;;;N;;;;;
+14158;EGYPTIAN HIEROGLYPH-14158;Lo;0;L;;;;;N;;;;;
+14159;EGYPTIAN HIEROGLYPH-14159;Lo;0;L;;;;;N;;;;;
+1415A;EGYPTIAN HIEROGLYPH-1415A;Lo;0;L;;;;;N;;;;;
+1415B;EGYPTIAN HIEROGLYPH-1415B;Lo;0;L;;;;;N;;;;;
+1415C;EGYPTIAN HIEROGLYPH-1415C;Lo;0;L;;;;;N;;;;;
+1415D;EGYPTIAN HIEROGLYPH-1415D;Lo;0;L;;;;;N;;;;;
+1415E;EGYPTIAN HIEROGLYPH-1415E;Lo;0;L;;;;;N;;;;;
+1415F;EGYPTIAN HIEROGLYPH-1415F;Lo;0;L;;;;;N;;;;;
+14160;EGYPTIAN HIEROGLYPH-14160;Lo;0;L;;;;;N;;;;;
+14161;EGYPTIAN HIEROGLYPH-14161;Lo;0;L;;;;;N;;;;;
+14162;EGYPTIAN HIEROGLYPH-14162;Lo;0;L;;;;;N;;;;;
+14163;EGYPTIAN HIEROGLYPH-14163;Lo;0;L;;;;;N;;;;;
+14164;EGYPTIAN HIEROGLYPH-14164;Lo;0;L;;;;;N;;;;;
+14165;EGYPTIAN HIEROGLYPH-14165;Lo;0;L;;;;;N;;;;;
+14166;EGYPTIAN HIEROGLYPH-14166;Lo;0;L;;;;;N;;;;;
+14167;EGYPTIAN HIEROGLYPH-14167;Lo;0;L;;;;;N;;;;;
+14168;EGYPTIAN HIEROGLYPH-14168;Lo;0;L;;;;;N;;;;;
+14169;EGYPTIAN HIEROGLYPH-14169;Lo;0;L;;;;;N;;;;;
+1416A;EGYPTIAN HIEROGLYPH-1416A;Lo;0;L;;;;;N;;;;;
+1416B;EGYPTIAN HIEROGLYPH-1416B;Lo;0;L;;;;;N;;;;;
+1416C;EGYPTIAN HIEROGLYPH-1416C;Lo;0;L;;;;;N;;;;;
+1416D;EGYPTIAN HIEROGLYPH-1416D;Lo;0;L;;;;;N;;;;;
+1416E;EGYPTIAN HIEROGLYPH-1416E;Lo;0;L;;;;;N;;;;;
+1416F;EGYPTIAN HIEROGLYPH-1416F;Lo;0;L;;;;;N;;;;;
+14170;EGYPTIAN HIEROGLYPH-14170;Lo;0;L;;;;;N;;;;;
+14171;EGYPTIAN HIEROGLYPH-14171;Lo;0;L;;;;;N;;;;;
+14172;EGYPTIAN HIEROGLYPH-14172;Lo;0;L;;;;;N;;;;;
+14173;EGYPTIAN HIEROGLYPH-14173;Lo;0;L;;;;;N;;;;;
+14174;EGYPTIAN HIEROGLYPH-14174;Lo;0;L;;;;;N;;;;;
+14175;EGYPTIAN HIEROGLYPH-14175;Lo;0;L;;;;;N;;;;;
+14176;EGYPTIAN HIEROGLYPH-14176;Lo;0;L;;;;;N;;;;;
+14177;EGYPTIAN HIEROGLYPH-14177;Lo;0;L;;;;;N;;;;;
+14178;EGYPTIAN HIEROGLYPH-14178;Lo;0;L;;;;;N;;;;;
+14179;EGYPTIAN HIEROGLYPH-14179;Lo;0;L;;;;;N;;;;;
+1417A;EGYPTIAN HIEROGLYPH-1417A;Lo;0;L;;;;;N;;;;;
+1417B;EGYPTIAN HIEROGLYPH-1417B;Lo;0;L;;;;;N;;;;;
+1417C;EGYPTIAN HIEROGLYPH-1417C;Lo;0;L;;;;;N;;;;;
+1417D;EGYPTIAN HIEROGLYPH-1417D;Lo;0;L;;;;;N;;;;;
+1417E;EGYPTIAN HIEROGLYPH-1417E;Lo;0;L;;;;;N;;;;;
+1417F;EGYPTIAN HIEROGLYPH-1417F;Lo;0;L;;;;;N;;;;;
+14180;EGYPTIAN HIEROGLYPH-14180;Lo;0;L;;;;;N;;;;;
+14181;EGYPTIAN HIEROGLYPH-14181;Lo;0;L;;;;;N;;;;;
+14182;EGYPTIAN HIEROGLYPH-14182;Lo;0;L;;;;;N;;;;;
+14183;EGYPTIAN HIEROGLYPH-14183;Lo;0;L;;;;;N;;;;;
+14184;EGYPTIAN HIEROGLYPH-14184;Lo;0;L;;;;;N;;;;;
+14185;EGYPTIAN HIEROGLYPH-14185;Lo;0;L;;;;;N;;;;;
+14186;EGYPTIAN HIEROGLYPH-14186;Lo;0;L;;;;;N;;;;;
+14187;EGYPTIAN HIEROGLYPH-14187;Lo;0;L;;;;;N;;;;;
+14188;EGYPTIAN HIEROGLYPH-14188;Lo;0;L;;;;;N;;;;;
+14189;EGYPTIAN HIEROGLYPH-14189;Lo;0;L;;;;;N;;;;;
+1418A;EGYPTIAN HIEROGLYPH-1418A;Lo;0;L;;;;;N;;;;;
+1418B;EGYPTIAN HIEROGLYPH-1418B;Lo;0;L;;;;;N;;;;;
+1418C;EGYPTIAN HIEROGLYPH-1418C;Lo;0;L;;;;;N;;;;;
+1418D;EGYPTIAN HIEROGLYPH-1418D;Lo;0;L;;;;;N;;;;;
+1418E;EGYPTIAN HIEROGLYPH-1418E;Lo;0;L;;;;;N;;;;;
+1418F;EGYPTIAN HIEROGLYPH-1418F;Lo;0;L;;;;;N;;;;;
+14190;EGYPTIAN HIEROGLYPH-14190;Lo;0;L;;;;;N;;;;;
+14191;EGYPTIAN HIEROGLYPH-14191;Lo;0;L;;;;;N;;;;;
+14192;EGYPTIAN HIEROGLYPH-14192;Lo;0;L;;;;;N;;;;;
+14193;EGYPTIAN HIEROGLYPH-14193;Lo;0;L;;;;;N;;;;;
+14194;EGYPTIAN HIEROGLYPH-14194;Lo;0;L;;;;;N;;;;;
+14195;EGYPTIAN HIEROGLYPH-14195;Lo;0;L;;;;;N;;;;;
+14196;EGYPTIAN HIEROGLYPH-14196;Lo;0;L;;;;;N;;;;;
+14197;EGYPTIAN HIEROGLYPH-14197;Lo;0;L;;;;;N;;;;;
+14198;EGYPTIAN HIEROGLYPH-14198;Lo;0;L;;;;;N;;;;;
+14199;EGYPTIAN HIEROGLYPH-14199;Lo;0;L;;;;;N;;;;;
+1419A;EGYPTIAN HIEROGLYPH-1419A;Lo;0;L;;;;;N;;;;;
+1419B;EGYPTIAN HIEROGLYPH-1419B;Lo;0;L;;;;;N;;;;;
+1419C;EGYPTIAN HIEROGLYPH-1419C;Lo;0;L;;;;;N;;;;;
+1419D;EGYPTIAN HIEROGLYPH-1419D;Lo;0;L;;;;;N;;;;;
+1419E;EGYPTIAN HIEROGLYPH-1419E;Lo;0;L;;;;;N;;;;;
+1419F;EGYPTIAN HIEROGLYPH-1419F;Lo;0;L;;;;;N;;;;;
+141A0;EGYPTIAN HIEROGLYPH-141A0;Lo;0;L;;;;;N;;;;;
+141A1;EGYPTIAN HIEROGLYPH-141A1;Lo;0;L;;;;;N;;;;;
+141A2;EGYPTIAN HIEROGLYPH-141A2;Lo;0;L;;;;;N;;;;;
+141A3;EGYPTIAN HIEROGLYPH-141A3;Lo;0;L;;;;;N;;;;;
+141A4;EGYPTIAN HIEROGLYPH-141A4;Lo;0;L;;;;;N;;;;;
+141A5;EGYPTIAN HIEROGLYPH-141A5;Lo;0;L;;;;;N;;;;;
+141A6;EGYPTIAN HIEROGLYPH-141A6;Lo;0;L;;;;;N;;;;;
+141A7;EGYPTIAN HIEROGLYPH-141A7;Lo;0;L;;;;;N;;;;;
+141A8;EGYPTIAN HIEROGLYPH-141A8;Lo;0;L;;;;;N;;;;;
+141A9;EGYPTIAN HIEROGLYPH-141A9;Lo;0;L;;;;;N;;;;;
+141AA;EGYPTIAN HIEROGLYPH-141AA;Lo;0;L;;;;;N;;;;;
+141AB;EGYPTIAN HIEROGLYPH-141AB;Lo;0;L;;;;;N;;;;;
+141AC;EGYPTIAN HIEROGLYPH-141AC;Lo;0;L;;;;;N;;;;;
+141AD;EGYPTIAN HIEROGLYPH-141AD;Lo;0;L;;;;;N;;;;;
+141AE;EGYPTIAN HIEROGLYPH-141AE;Lo;0;L;;;;;N;;;;;
+141AF;EGYPTIAN HIEROGLYPH-141AF;Lo;0;L;;;;;N;;;;;
+141B0;EGYPTIAN HIEROGLYPH-141B0;Lo;0;L;;;;;N;;;;;
+141B1;EGYPTIAN HIEROGLYPH-141B1;Lo;0;L;;;;;N;;;;;
+141B2;EGYPTIAN HIEROGLYPH-141B2;Lo;0;L;;;;;N;;;;;
+141B3;EGYPTIAN HIEROGLYPH-141B3;Lo;0;L;;;;;N;;;;;
+141B4;EGYPTIAN HIEROGLYPH-141B4;Lo;0;L;;;;;N;;;;;
+141B5;EGYPTIAN HIEROGLYPH-141B5;Lo;0;L;;;;;N;;;;;
+141B6;EGYPTIAN HIEROGLYPH-141B6;Lo;0;L;;;;;N;;;;;
+141B7;EGYPTIAN HIEROGLYPH-141B7;Lo;0;L;;;;;N;;;;;
+141B8;EGYPTIAN HIEROGLYPH-141B8;Lo;0;L;;;;;N;;;;;
+141B9;EGYPTIAN HIEROGLYPH-141B9;Lo;0;L;;;;;N;;;;;
+141BA;EGYPTIAN HIEROGLYPH-141BA;Lo;0;L;;;;;N;;;;;
+141BB;EGYPTIAN HIEROGLYPH-141BB;Lo;0;L;;;;;N;;;;;
+141BC;EGYPTIAN HIEROGLYPH-141BC;Lo;0;L;;;;;N;;;;;
+141BD;EGYPTIAN HIEROGLYPH-141BD;Lo;0;L;;;;;N;;;;;
+141BE;EGYPTIAN HIEROGLYPH-141BE;Lo;0;L;;;;;N;;;;;
+141BF;EGYPTIAN HIEROGLYPH-141BF;Lo;0;L;;;;;N;;;;;
+141C0;EGYPTIAN HIEROGLYPH-141C0;Lo;0;L;;;;;N;;;;;
+141C1;EGYPTIAN HIEROGLYPH-141C1;Lo;0;L;;;;;N;;;;;
+141C2;EGYPTIAN HIEROGLYPH-141C2;Lo;0;L;;;;;N;;;;;
+141C3;EGYPTIAN HIEROGLYPH-141C3;Lo;0;L;;;;;N;;;;;
+141C4;EGYPTIAN HIEROGLYPH-141C4;Lo;0;L;;;;;N;;;;;
+141C5;EGYPTIAN HIEROGLYPH-141C5;Lo;0;L;;;;;N;;;;;
+141C6;EGYPTIAN HIEROGLYPH-141C6;Lo;0;L;;;;;N;;;;;
+141C7;EGYPTIAN HIEROGLYPH-141C7;Lo;0;L;;;;;N;;;;;
+141C8;EGYPTIAN HIEROGLYPH-141C8;Lo;0;L;;;;;N;;;;;
+141C9;EGYPTIAN HIEROGLYPH-141C9;Lo;0;L;;;;;N;;;;;
+141CA;EGYPTIAN HIEROGLYPH-141CA;Lo;0;L;;;;;N;;;;;
+141CB;EGYPTIAN HIEROGLYPH-141CB;Lo;0;L;;;;;N;;;;;
+141CC;EGYPTIAN HIEROGLYPH-141CC;Lo;0;L;;;;;N;;;;;
+141CD;EGYPTIAN HIEROGLYPH-141CD;Lo;0;L;;;;;N;;;;;
+141CE;EGYPTIAN HIEROGLYPH-141CE;Lo;0;L;;;;;N;;;;;
+141CF;EGYPTIAN HIEROGLYPH-141CF;Lo;0;L;;;;;N;;;;;
+141D0;EGYPTIAN HIEROGLYPH-141D0;Lo;0;L;;;;;N;;;;;
+141D1;EGYPTIAN HIEROGLYPH-141D1;Lo;0;L;;;;;N;;;;;
+141D2;EGYPTIAN HIEROGLYPH-141D2;Lo;0;L;;;;;N;;;;;
+141D3;EGYPTIAN HIEROGLYPH-141D3;Lo;0;L;;;;;N;;;;;
+141D4;EGYPTIAN HIEROGLYPH-141D4;Lo;0;L;;;;;N;;;;;
+141D5;EGYPTIAN HIEROGLYPH-141D5;Lo;0;L;;;;;N;;;;;
+141D6;EGYPTIAN HIEROGLYPH-141D6;Lo;0;L;;;;;N;;;;;
+141D7;EGYPTIAN HIEROGLYPH-141D7;Lo;0;L;;;;;N;;;;;
+141D8;EGYPTIAN HIEROGLYPH-141D8;Lo;0;L;;;;;N;;;;;
+141D9;EGYPTIAN HIEROGLYPH-141D9;Lo;0;L;;;;;N;;;;;
+141DA;EGYPTIAN HIEROGLYPH-141DA;Lo;0;L;;;;;N;;;;;
+141DB;EGYPTIAN HIEROGLYPH-141DB;Lo;0;L;;;;;N;;;;;
+141DC;EGYPTIAN HIEROGLYPH-141DC;Lo;0;L;;;;;N;;;;;
+141DD;EGYPTIAN HIEROGLYPH-141DD;Lo;0;L;;;;;N;;;;;
+141DE;EGYPTIAN HIEROGLYPH-141DE;Lo;0;L;;;;;N;;;;;
+141DF;EGYPTIAN HIEROGLYPH-141DF;Lo;0;L;;;;;N;;;;;
+141E0;EGYPTIAN HIEROGLYPH-141E0;Lo;0;L;;;;;N;;;;;
+141E1;EGYPTIAN HIEROGLYPH-141E1;Lo;0;L;;;;;N;;;;;
+141E2;EGYPTIAN HIEROGLYPH-141E2;Lo;0;L;;;;;N;;;;;
+141E3;EGYPTIAN HIEROGLYPH-141E3;Lo;0;L;;;;;N;;;;;
+141E4;EGYPTIAN HIEROGLYPH-141E4;Lo;0;L;;;;;N;;;;;
+141E5;EGYPTIAN HIEROGLYPH-141E5;Lo;0;L;;;;;N;;;;;
+141E6;EGYPTIAN HIEROGLYPH-141E6;Lo;0;L;;;;;N;;;;;
+141E7;EGYPTIAN HIEROGLYPH-141E7;Lo;0;L;;;;;N;;;;;
+141E8;EGYPTIAN HIEROGLYPH-141E8;Lo;0;L;;;;;N;;;;;
+141E9;EGYPTIAN HIEROGLYPH-141E9;Lo;0;L;;;;;N;;;;;
+141EA;EGYPTIAN HIEROGLYPH-141EA;Lo;0;L;;;;;N;;;;;
+141EB;EGYPTIAN HIEROGLYPH-141EB;Lo;0;L;;;;;N;;;;;
+141EC;EGYPTIAN HIEROGLYPH-141EC;Lo;0;L;;;;;N;;;;;
+141ED;EGYPTIAN HIEROGLYPH-141ED;Lo;0;L;;;;;N;;;;;
+141EE;EGYPTIAN HIEROGLYPH-141EE;Lo;0;L;;;;;N;;;;;
+141EF;EGYPTIAN HIEROGLYPH-141EF;Lo;0;L;;;;;N;;;;;
+141F0;EGYPTIAN HIEROGLYPH-141F0;Lo;0;L;;;;;N;;;;;
+141F1;EGYPTIAN HIEROGLYPH-141F1;Lo;0;L;;;;;N;;;;;
+141F2;EGYPTIAN HIEROGLYPH-141F2;Lo;0;L;;;;;N;;;;;
+141F3;EGYPTIAN HIEROGLYPH-141F3;Lo;0;L;;;;;N;;;;;
+141F4;EGYPTIAN HIEROGLYPH-141F4;Lo;0;L;;;;;N;;;;;
+141F5;EGYPTIAN HIEROGLYPH-141F5;Lo;0;L;;;;;N;;;;;
+141F6;EGYPTIAN HIEROGLYPH-141F6;Lo;0;L;;;;;N;;;;;
+141F7;EGYPTIAN HIEROGLYPH-141F7;Lo;0;L;;;;;N;;;;;
+141F8;EGYPTIAN HIEROGLYPH-141F8;Lo;0;L;;;;;N;;;;;
+141F9;EGYPTIAN HIEROGLYPH-141F9;Lo;0;L;;;;;N;;;;;
+141FA;EGYPTIAN HIEROGLYPH-141FA;Lo;0;L;;;;;N;;;;;
+141FB;EGYPTIAN HIEROGLYPH-141FB;Lo;0;L;;;;;N;;;;;
+141FC;EGYPTIAN HIEROGLYPH-141FC;Lo;0;L;;;;;N;;;;;
+141FD;EGYPTIAN HIEROGLYPH-141FD;Lo;0;L;;;;;N;;;;;
+141FE;EGYPTIAN HIEROGLYPH-141FE;Lo;0;L;;;;;N;;;;;
+141FF;EGYPTIAN HIEROGLYPH-141FF;Lo;0;L;;;;;N;;;;;
+14200;EGYPTIAN HIEROGLYPH-14200;Lo;0;L;;;;;N;;;;;
+14201;EGYPTIAN HIEROGLYPH-14201;Lo;0;L;;;;;N;;;;;
+14202;EGYPTIAN HIEROGLYPH-14202;Lo;0;L;;;;;N;;;;;
+14203;EGYPTIAN HIEROGLYPH-14203;Lo;0;L;;;;;N;;;;;
+14204;EGYPTIAN HIEROGLYPH-14204;Lo;0;L;;;;;N;;;;;
+14205;EGYPTIAN HIEROGLYPH-14205;Lo;0;L;;;;;N;;;;;
+14206;EGYPTIAN HIEROGLYPH-14206;Lo;0;L;;;;;N;;;;;
+14207;EGYPTIAN HIEROGLYPH-14207;Lo;0;L;;;;;N;;;;;
+14208;EGYPTIAN HIEROGLYPH-14208;Lo;0;L;;;;;N;;;;;
+14209;EGYPTIAN HIEROGLYPH-14209;Lo;0;L;;;;;N;;;;;
+1420A;EGYPTIAN HIEROGLYPH-1420A;Lo;0;L;;;;;N;;;;;
+1420B;EGYPTIAN HIEROGLYPH-1420B;Lo;0;L;;;;;N;;;;;
+1420C;EGYPTIAN HIEROGLYPH-1420C;Lo;0;L;;;;;N;;;;;
+1420D;EGYPTIAN HIEROGLYPH-1420D;Lo;0;L;;;;;N;;;;;
+1420E;EGYPTIAN HIEROGLYPH-1420E;Lo;0;L;;;;;N;;;;;
+1420F;EGYPTIAN HIEROGLYPH-1420F;Lo;0;L;;;;;N;;;;;
+14210;EGYPTIAN HIEROGLYPH-14210;Lo;0;L;;;;;N;;;;;
+14211;EGYPTIAN HIEROGLYPH-14211;Lo;0;L;;;;;N;;;;;
+14212;EGYPTIAN HIEROGLYPH-14212;Lo;0;L;;;;;N;;;;;
+14213;EGYPTIAN HIEROGLYPH-14213;Lo;0;L;;;;;N;;;;;
+14214;EGYPTIAN HIEROGLYPH-14214;Lo;0;L;;;;;N;;;;;
+14215;EGYPTIAN HIEROGLYPH-14215;Lo;0;L;;;;;N;;;;;
+14216;EGYPTIAN HIEROGLYPH-14216;Lo;0;L;;;;;N;;;;;
+14217;EGYPTIAN HIEROGLYPH-14217;Lo;0;L;;;;;N;;;;;
+14218;EGYPTIAN HIEROGLYPH-14218;Lo;0;L;;;;;N;;;;;
+14219;EGYPTIAN HIEROGLYPH-14219;Lo;0;L;;;;;N;;;;;
+1421A;EGYPTIAN HIEROGLYPH-1421A;Lo;0;L;;;;;N;;;;;
+1421B;EGYPTIAN HIEROGLYPH-1421B;Lo;0;L;;;;;N;;;;;
+1421C;EGYPTIAN HIEROGLYPH-1421C;Lo;0;L;;;;;N;;;;;
+1421D;EGYPTIAN HIEROGLYPH-1421D;Lo;0;L;;;;;N;;;;;
+1421E;EGYPTIAN HIEROGLYPH-1421E;Lo;0;L;;;;;N;;;;;
+1421F;EGYPTIAN HIEROGLYPH-1421F;Lo;0;L;;;;;N;;;;;
+14220;EGYPTIAN HIEROGLYPH-14220;Lo;0;L;;;;;N;;;;;
+14221;EGYPTIAN HIEROGLYPH-14221;Lo;0;L;;;;;N;;;;;
+14222;EGYPTIAN HIEROGLYPH-14222;Lo;0;L;;;;;N;;;;;
+14223;EGYPTIAN HIEROGLYPH-14223;Lo;0;L;;;;;N;;;;;
+14224;EGYPTIAN HIEROGLYPH-14224;Lo;0;L;;;;;N;;;;;
+14225;EGYPTIAN HIEROGLYPH-14225;Lo;0;L;;;;;N;;;;;
+14226;EGYPTIAN HIEROGLYPH-14226;Lo;0;L;;;;;N;;;;;
+14227;EGYPTIAN HIEROGLYPH-14227;Lo;0;L;;;;;N;;;;;
+14228;EGYPTIAN HIEROGLYPH-14228;Lo;0;L;;;;;N;;;;;
+14229;EGYPTIAN HIEROGLYPH-14229;Lo;0;L;;;;;N;;;;;
+1422A;EGYPTIAN HIEROGLYPH-1422A;Lo;0;L;;;;;N;;;;;
+1422B;EGYPTIAN HIEROGLYPH-1422B;Lo;0;L;;;;;N;;;;;
+1422C;EGYPTIAN HIEROGLYPH-1422C;Lo;0;L;;;;;N;;;;;
+1422D;EGYPTIAN HIEROGLYPH-1422D;Lo;0;L;;;;;N;;;;;
+1422E;EGYPTIAN HIEROGLYPH-1422E;Lo;0;L;;;;;N;;;;;
+1422F;EGYPTIAN HIEROGLYPH-1422F;Lo;0;L;;;;;N;;;;;
+14230;EGYPTIAN HIEROGLYPH-14230;Lo;0;L;;;;;N;;;;;
+14231;EGYPTIAN HIEROGLYPH-14231;Lo;0;L;;;;;N;;;;;
+14232;EGYPTIAN HIEROGLYPH-14232;Lo;0;L;;;;;N;;;;;
+14233;EGYPTIAN HIEROGLYPH-14233;Lo;0;L;;;;;N;;;;;
+14234;EGYPTIAN HIEROGLYPH-14234;Lo;0;L;;;;;N;;;;;
+14235;EGYPTIAN HIEROGLYPH-14235;Lo;0;L;;;;;N;;;;;
+14236;EGYPTIAN HIEROGLYPH-14236;Lo;0;L;;;;;N;;;;;
+14237;EGYPTIAN HIEROGLYPH-14237;Lo;0;L;;;;;N;;;;;
+14238;EGYPTIAN HIEROGLYPH-14238;Lo;0;L;;;;;N;;;;;
+14239;EGYPTIAN HIEROGLYPH-14239;Lo;0;L;;;;;N;;;;;
+1423A;EGYPTIAN HIEROGLYPH-1423A;Lo;0;L;;;;;N;;;;;
+1423B;EGYPTIAN HIEROGLYPH-1423B;Lo;0;L;;;;;N;;;;;
+1423C;EGYPTIAN HIEROGLYPH-1423C;Lo;0;L;;;;;N;;;;;
+1423D;EGYPTIAN HIEROGLYPH-1423D;Lo;0;L;;;;;N;;;;;
+1423E;EGYPTIAN HIEROGLYPH-1423E;Lo;0;L;;;;;N;;;;;
+1423F;EGYPTIAN HIEROGLYPH-1423F;Lo;0;L;;;;;N;;;;;
+14240;EGYPTIAN HIEROGLYPH-14240;Lo;0;L;;;;;N;;;;;
+14241;EGYPTIAN HIEROGLYPH-14241;Lo;0;L;;;;;N;;;;;
+14242;EGYPTIAN HIEROGLYPH-14242;Lo;0;L;;;;;N;;;;;
+14243;EGYPTIAN HIEROGLYPH-14243;Lo;0;L;;;;;N;;;;;
+14244;EGYPTIAN HIEROGLYPH-14244;Lo;0;L;;;;;N;;;;;
+14245;EGYPTIAN HIEROGLYPH-14245;Lo;0;L;;;;;N;;;;;
+14246;EGYPTIAN HIEROGLYPH-14246;Lo;0;L;;;;;N;;;;;
+14247;EGYPTIAN HIEROGLYPH-14247;Lo;0;L;;;;;N;;;;;
+14248;EGYPTIAN HIEROGLYPH-14248;Lo;0;L;;;;;N;;;;;
+14249;EGYPTIAN HIEROGLYPH-14249;Lo;0;L;;;;;N;;;;;
+1424A;EGYPTIAN HIEROGLYPH-1424A;Lo;0;L;;;;;N;;;;;
+1424B;EGYPTIAN HIEROGLYPH-1424B;Lo;0;L;;;;;N;;;;;
+1424C;EGYPTIAN HIEROGLYPH-1424C;Lo;0;L;;;;;N;;;;;
+1424D;EGYPTIAN HIEROGLYPH-1424D;Lo;0;L;;;;;N;;;;;
+1424E;EGYPTIAN HIEROGLYPH-1424E;Lo;0;L;;;;;N;;;;;
+1424F;EGYPTIAN HIEROGLYPH-1424F;Lo;0;L;;;;;N;;;;;
+14250;EGYPTIAN HIEROGLYPH-14250;Lo;0;L;;;;;N;;;;;
+14251;EGYPTIAN HIEROGLYPH-14251;Lo;0;L;;;;;N;;;;;
+14252;EGYPTIAN HIEROGLYPH-14252;Lo;0;L;;;;;N;;;;;
+14253;EGYPTIAN HIEROGLYPH-14253;Lo;0;L;;;;;N;;;;;
+14254;EGYPTIAN HIEROGLYPH-14254;Lo;0;L;;;;;N;;;;;
+14255;EGYPTIAN HIEROGLYPH-14255;Lo;0;L;;;;;N;;;;;
+14256;EGYPTIAN HIEROGLYPH-14256;Lo;0;L;;;;;N;;;;;
+14257;EGYPTIAN HIEROGLYPH-14257;Lo;0;L;;;;;N;;;;;
+14258;EGYPTIAN HIEROGLYPH-14258;Lo;0;L;;;;;N;;;;;
+14259;EGYPTIAN HIEROGLYPH-14259;Lo;0;L;;;;;N;;;;;
+1425A;EGYPTIAN HIEROGLYPH-1425A;Lo;0;L;;;;;N;;;;;
+1425B;EGYPTIAN HIEROGLYPH-1425B;Lo;0;L;;;;;N;;;;;
+1425C;EGYPTIAN HIEROGLYPH-1425C;Lo;0;L;;;;;N;;;;;
+1425D;EGYPTIAN HIEROGLYPH-1425D;Lo;0;L;;;;;N;;;;;
+1425E;EGYPTIAN HIEROGLYPH-1425E;Lo;0;L;;;;;N;;;;;
+1425F;EGYPTIAN HIEROGLYPH-1425F;Lo;0;L;;;;;N;;;;;
+14260;EGYPTIAN HIEROGLYPH-14260;Lo;0;L;;;;;N;;;;;
+14261;EGYPTIAN HIEROGLYPH-14261;Lo;0;L;;;;;N;;;;;
+14262;EGYPTIAN HIEROGLYPH-14262;Lo;0;L;;;;;N;;;;;
+14263;EGYPTIAN HIEROGLYPH-14263;Lo;0;L;;;;;N;;;;;
+14264;EGYPTIAN HIEROGLYPH-14264;Lo;0;L;;;;;N;;;;;
+14265;EGYPTIAN HIEROGLYPH-14265;Lo;0;L;;;;;N;;;;;
+14266;EGYPTIAN HIEROGLYPH-14266;Lo;0;L;;;;;N;;;;;
+14267;EGYPTIAN HIEROGLYPH-14267;Lo;0;L;;;;;N;;;;;
+14268;EGYPTIAN HIEROGLYPH-14268;Lo;0;L;;;;;N;;;;;
+14269;EGYPTIAN HIEROGLYPH-14269;Lo;0;L;;;;;N;;;;;
+1426A;EGYPTIAN HIEROGLYPH-1426A;Lo;0;L;;;;;N;;;;;
+1426B;EGYPTIAN HIEROGLYPH-1426B;Lo;0;L;;;;;N;;;;;
+1426C;EGYPTIAN HIEROGLYPH-1426C;Lo;0;L;;;;;N;;;;;
+1426D;EGYPTIAN HIEROGLYPH-1426D;Lo;0;L;;;;;N;;;;;
+1426E;EGYPTIAN HIEROGLYPH-1426E;Lo;0;L;;;;;N;;;;;
+1426F;EGYPTIAN HIEROGLYPH-1426F;Lo;0;L;;;;;N;;;;;
+14270;EGYPTIAN HIEROGLYPH-14270;Lo;0;L;;;;;N;;;;;
+14271;EGYPTIAN HIEROGLYPH-14271;Lo;0;L;;;;;N;;;;;
+14272;EGYPTIAN HIEROGLYPH-14272;Lo;0;L;;;;;N;;;;;
+14273;EGYPTIAN HIEROGLYPH-14273;Lo;0;L;;;;;N;;;;;
+14274;EGYPTIAN HIEROGLYPH-14274;Lo;0;L;;;;;N;;;;;
+14275;EGYPTIAN HIEROGLYPH-14275;Lo;0;L;;;;;N;;;;;
+14276;EGYPTIAN HIEROGLYPH-14276;Lo;0;L;;;;;N;;;;;
+14277;EGYPTIAN HIEROGLYPH-14277;Lo;0;L;;;;;N;;;;;
+14278;EGYPTIAN HIEROGLYPH-14278;Lo;0;L;;;;;N;;;;;
+14279;EGYPTIAN HIEROGLYPH-14279;Lo;0;L;;;;;N;;;;;
+1427A;EGYPTIAN HIEROGLYPH-1427A;Lo;0;L;;;;;N;;;;;
+1427B;EGYPTIAN HIEROGLYPH-1427B;Lo;0;L;;;;;N;;;;;
+1427C;EGYPTIAN HIEROGLYPH-1427C;Lo;0;L;;;;;N;;;;;
+1427D;EGYPTIAN HIEROGLYPH-1427D;Lo;0;L;;;;;N;;;;;
+1427E;EGYPTIAN HIEROGLYPH-1427E;Lo;0;L;;;;;N;;;;;
+1427F;EGYPTIAN HIEROGLYPH-1427F;Lo;0;L;;;;;N;;;;;
+14280;EGYPTIAN HIEROGLYPH-14280;Lo;0;L;;;;;N;;;;;
+14281;EGYPTIAN HIEROGLYPH-14281;Lo;0;L;;;;;N;;;;;
+14282;EGYPTIAN HIEROGLYPH-14282;Lo;0;L;;;;;N;;;;;
+14283;EGYPTIAN HIEROGLYPH-14283;Lo;0;L;;;;;N;;;;;
+14284;EGYPTIAN HIEROGLYPH-14284;Lo;0;L;;;;;N;;;;;
+14285;EGYPTIAN HIEROGLYPH-14285;Lo;0;L;;;;;N;;;;;
+14286;EGYPTIAN HIEROGLYPH-14286;Lo;0;L;;;;;N;;;;;
+14287;EGYPTIAN HIEROGLYPH-14287;Lo;0;L;;;;;N;;;;;
+14288;EGYPTIAN HIEROGLYPH-14288;Lo;0;L;;;;;N;;;;;
+14289;EGYPTIAN HIEROGLYPH-14289;Lo;0;L;;;;;N;;;;;
+1428A;EGYPTIAN HIEROGLYPH-1428A;Lo;0;L;;;;;N;;;;;
+1428B;EGYPTIAN HIEROGLYPH-1428B;Lo;0;L;;;;;N;;;;;
+1428C;EGYPTIAN HIEROGLYPH-1428C;Lo;0;L;;;;;N;;;;;
+1428D;EGYPTIAN HIEROGLYPH-1428D;Lo;0;L;;;;;N;;;;;
+1428E;EGYPTIAN HIEROGLYPH-1428E;Lo;0;L;;;;;N;;;;;
+1428F;EGYPTIAN HIEROGLYPH-1428F;Lo;0;L;;;;;N;;;;;
+14290;EGYPTIAN HIEROGLYPH-14290;Lo;0;L;;;;;N;;;;;
+14291;EGYPTIAN HIEROGLYPH-14291;Lo;0;L;;;;;N;;;;;
+14292;EGYPTIAN HIEROGLYPH-14292;Lo;0;L;;;;;N;;;;;
+14293;EGYPTIAN HIEROGLYPH-14293;Lo;0;L;;;;;N;;;;;
+14294;EGYPTIAN HIEROGLYPH-14294;Lo;0;L;;;;;N;;;;;
+14295;EGYPTIAN HIEROGLYPH-14295;Lo;0;L;;;;;N;;;;;
+14296;EGYPTIAN HIEROGLYPH-14296;Lo;0;L;;;;;N;;;;;
+14297;EGYPTIAN HIEROGLYPH-14297;Lo;0;L;;;;;N;;;;;
+14298;EGYPTIAN HIEROGLYPH-14298;Lo;0;L;;;;;N;;;;;
+14299;EGYPTIAN HIEROGLYPH-14299;Lo;0;L;;;;;N;;;;;
+1429A;EGYPTIAN HIEROGLYPH-1429A;Lo;0;L;;;;;N;;;;;
+1429B;EGYPTIAN HIEROGLYPH-1429B;Lo;0;L;;;;;N;;;;;
+1429C;EGYPTIAN HIEROGLYPH-1429C;Lo;0;L;;;;;N;;;;;
+1429D;EGYPTIAN HIEROGLYPH-1429D;Lo;0;L;;;;;N;;;;;
+1429E;EGYPTIAN HIEROGLYPH-1429E;Lo;0;L;;;;;N;;;;;
+1429F;EGYPTIAN HIEROGLYPH-1429F;Lo;0;L;;;;;N;;;;;
+142A0;EGYPTIAN HIEROGLYPH-142A0;Lo;0;L;;;;;N;;;;;
+142A1;EGYPTIAN HIEROGLYPH-142A1;Lo;0;L;;;;;N;;;;;
+142A2;EGYPTIAN HIEROGLYPH-142A2;Lo;0;L;;;;;N;;;;;
+142A3;EGYPTIAN HIEROGLYPH-142A3;Lo;0;L;;;;;N;;;;;
+142A4;EGYPTIAN HIEROGLYPH-142A4;Lo;0;L;;;;;N;;;;;
+142A5;EGYPTIAN HIEROGLYPH-142A5;Lo;0;L;;;;;N;;;;;
+142A6;EGYPTIAN HIEROGLYPH-142A6;Lo;0;L;;;;;N;;;;;
+142A7;EGYPTIAN HIEROGLYPH-142A7;Lo;0;L;;;;;N;;;;;
+142A8;EGYPTIAN HIEROGLYPH-142A8;Lo;0;L;;;;;N;;;;;
+142A9;EGYPTIAN HIEROGLYPH-142A9;Lo;0;L;;;;;N;;;;;
+142AA;EGYPTIAN HIEROGLYPH-142AA;Lo;0;L;;;;;N;;;;;
+142AB;EGYPTIAN HIEROGLYPH-142AB;Lo;0;L;;;;;N;;;;;
+142AC;EGYPTIAN HIEROGLYPH-142AC;Lo;0;L;;;;;N;;;;;
+142AD;EGYPTIAN HIEROGLYPH-142AD;Lo;0;L;;;;;N;;;;;
+142AE;EGYPTIAN HIEROGLYPH-142AE;Lo;0;L;;;;;N;;;;;
+142AF;EGYPTIAN HIEROGLYPH-142AF;Lo;0;L;;;;;N;;;;;
+142B0;EGYPTIAN HIEROGLYPH-142B0;Lo;0;L;;;;;N;;;;;
+142B1;EGYPTIAN HIEROGLYPH-142B1;Lo;0;L;;;;;N;;;;;
+142B2;EGYPTIAN HIEROGLYPH-142B2;Lo;0;L;;;;;N;;;;;
+142B3;EGYPTIAN HIEROGLYPH-142B3;Lo;0;L;;;;;N;;;;;
+142B4;EGYPTIAN HIEROGLYPH-142B4;Lo;0;L;;;;;N;;;;;
+142B5;EGYPTIAN HIEROGLYPH-142B5;Lo;0;L;;;;;N;;;;;
+142B6;EGYPTIAN HIEROGLYPH-142B6;Lo;0;L;;;;;N;;;;;
+142B7;EGYPTIAN HIEROGLYPH-142B7;Lo;0;L;;;;;N;;;;;
+142B8;EGYPTIAN HIEROGLYPH-142B8;Lo;0;L;;;;;N;;;;;
+142B9;EGYPTIAN HIEROGLYPH-142B9;Lo;0;L;;;;;N;;;;;
+142BA;EGYPTIAN HIEROGLYPH-142BA;Lo;0;L;;;;;N;;;;;
+142BB;EGYPTIAN HIEROGLYPH-142BB;Lo;0;L;;;;;N;;;;;
+142BC;EGYPTIAN HIEROGLYPH-142BC;Lo;0;L;;;;;N;;;;;
+142BD;EGYPTIAN HIEROGLYPH-142BD;Lo;0;L;;;;;N;;;;;
+142BE;EGYPTIAN HIEROGLYPH-142BE;Lo;0;L;;;;;N;;;;;
+142BF;EGYPTIAN HIEROGLYPH-142BF;Lo;0;L;;;;;N;;;;;
+142C0;EGYPTIAN HIEROGLYPH-142C0;Lo;0;L;;;;;N;;;;;
+142C1;EGYPTIAN HIEROGLYPH-142C1;Lo;0;L;;;;;N;;;;;
+142C2;EGYPTIAN HIEROGLYPH-142C2;Lo;0;L;;;;;N;;;;;
+142C3;EGYPTIAN HIEROGLYPH-142C3;Lo;0;L;;;;;N;;;;;
+142C4;EGYPTIAN HIEROGLYPH-142C4;Lo;0;L;;;;;N;;;;;
+142C5;EGYPTIAN HIEROGLYPH-142C5;Lo;0;L;;;;;N;;;;;
+142C6;EGYPTIAN HIEROGLYPH-142C6;Lo;0;L;;;;;N;;;;;
+142C7;EGYPTIAN HIEROGLYPH-142C7;Lo;0;L;;;;;N;;;;;
+142C8;EGYPTIAN HIEROGLYPH-142C8;Lo;0;L;;;;;N;;;;;
+142C9;EGYPTIAN HIEROGLYPH-142C9;Lo;0;L;;;;;N;;;;;
+142CA;EGYPTIAN HIEROGLYPH-142CA;Lo;0;L;;;;;N;;;;;
+142CB;EGYPTIAN HIEROGLYPH-142CB;Lo;0;L;;;;;N;;;;;
+142CC;EGYPTIAN HIEROGLYPH-142CC;Lo;0;L;;;;;N;;;;;
+142CD;EGYPTIAN HIEROGLYPH-142CD;Lo;0;L;;;;;N;;;;;
+142CE;EGYPTIAN HIEROGLYPH-142CE;Lo;0;L;;;;;N;;;;;
+142CF;EGYPTIAN HIEROGLYPH-142CF;Lo;0;L;;;;;N;;;;;
+142D0;EGYPTIAN HIEROGLYPH-142D0;Lo;0;L;;;;;N;;;;;
+142D1;EGYPTIAN HIEROGLYPH-142D1;Lo;0;L;;;;;N;;;;;
+142D2;EGYPTIAN HIEROGLYPH-142D2;Lo;0;L;;;;;N;;;;;
+142D3;EGYPTIAN HIEROGLYPH-142D3;Lo;0;L;;;;;N;;;;;
+142D4;EGYPTIAN HIEROGLYPH-142D4;Lo;0;L;;;;;N;;;;;
+142D5;EGYPTIAN HIEROGLYPH-142D5;Lo;0;L;;;;;N;;;;;
+142D6;EGYPTIAN HIEROGLYPH-142D6;Lo;0;L;;;;;N;;;;;
+142D7;EGYPTIAN HIEROGLYPH-142D7;Lo;0;L;;;;;N;;;;;
+142D8;EGYPTIAN HIEROGLYPH-142D8;Lo;0;L;;;;;N;;;;;
+142D9;EGYPTIAN HIEROGLYPH-142D9;Lo;0;L;;;;;N;;;;;
+142DA;EGYPTIAN HIEROGLYPH-142DA;Lo;0;L;;;;;N;;;;;
+142DB;EGYPTIAN HIEROGLYPH-142DB;Lo;0;L;;;;;N;;;;;
+142DC;EGYPTIAN HIEROGLYPH-142DC;Lo;0;L;;;;;N;;;;;
+142DD;EGYPTIAN HIEROGLYPH-142DD;Lo;0;L;;;;;N;;;;;
+142DE;EGYPTIAN HIEROGLYPH-142DE;Lo;0;L;;;;;N;;;;;
+142DF;EGYPTIAN HIEROGLYPH-142DF;Lo;0;L;;;;;N;;;;;
+142E0;EGYPTIAN HIEROGLYPH-142E0;Lo;0;L;;;;;N;;;;;
+142E1;EGYPTIAN HIEROGLYPH-142E1;Lo;0;L;;;;;N;;;;;
+142E2;EGYPTIAN HIEROGLYPH-142E2;Lo;0;L;;;;;N;;;;;
+142E3;EGYPTIAN HIEROGLYPH-142E3;Lo;0;L;;;;;N;;;;;
+142E4;EGYPTIAN HIEROGLYPH-142E4;Lo;0;L;;;;;N;;;;;
+142E5;EGYPTIAN HIEROGLYPH-142E5;Lo;0;L;;;;;N;;;;;
+142E6;EGYPTIAN HIEROGLYPH-142E6;Lo;0;L;;;;;N;;;;;
+142E7;EGYPTIAN HIEROGLYPH-142E7;Lo;0;L;;;;;N;;;;;
+142E8;EGYPTIAN HIEROGLYPH-142E8;Lo;0;L;;;;;N;;;;;
+142E9;EGYPTIAN HIEROGLYPH-142E9;Lo;0;L;;;;;N;;;;;
+142EA;EGYPTIAN HIEROGLYPH-142EA;Lo;0;L;;;;;N;;;;;
+142EB;EGYPTIAN HIEROGLYPH-142EB;Lo;0;L;;;;;N;;;;;
+142EC;EGYPTIAN HIEROGLYPH-142EC;Lo;0;L;;;;;N;;;;;
+142ED;EGYPTIAN HIEROGLYPH-142ED;Lo;0;L;;;;;N;;;;;
+142EE;EGYPTIAN HIEROGLYPH-142EE;Lo;0;L;;;;;N;;;;;
+142EF;EGYPTIAN HIEROGLYPH-142EF;Lo;0;L;;;;;N;;;;;
+142F0;EGYPTIAN HIEROGLYPH-142F0;Lo;0;L;;;;;N;;;;;
+142F1;EGYPTIAN HIEROGLYPH-142F1;Lo;0;L;;;;;N;;;;;
+142F2;EGYPTIAN HIEROGLYPH-142F2;Lo;0;L;;;;;N;;;;;
+142F3;EGYPTIAN HIEROGLYPH-142F3;Lo;0;L;;;;;N;;;;;
+142F4;EGYPTIAN HIEROGLYPH-142F4;Lo;0;L;;;;;N;;;;;
+142F5;EGYPTIAN HIEROGLYPH-142F5;Lo;0;L;;;;;N;;;;;
+142F6;EGYPTIAN HIEROGLYPH-142F6;Lo;0;L;;;;;N;;;;;
+142F7;EGYPTIAN HIEROGLYPH-142F7;Lo;0;L;;;;;N;;;;;
+142F8;EGYPTIAN HIEROGLYPH-142F8;Lo;0;L;;;;;N;;;;;
+142F9;EGYPTIAN HIEROGLYPH-142F9;Lo;0;L;;;;;N;;;;;
+142FA;EGYPTIAN HIEROGLYPH-142FA;Lo;0;L;;;;;N;;;;;
+142FB;EGYPTIAN HIEROGLYPH-142FB;Lo;0;L;;;;;N;;;;;
+142FC;EGYPTIAN HIEROGLYPH-142FC;Lo;0;L;;;;;N;;;;;
+142FD;EGYPTIAN HIEROGLYPH-142FD;Lo;0;L;;;;;N;;;;;
+142FE;EGYPTIAN HIEROGLYPH-142FE;Lo;0;L;;;;;N;;;;;
+142FF;EGYPTIAN HIEROGLYPH-142FF;Lo;0;L;;;;;N;;;;;
+14300;EGYPTIAN HIEROGLYPH-14300;Lo;0;L;;;;;N;;;;;
+14301;EGYPTIAN HIEROGLYPH-14301;Lo;0;L;;;;;N;;;;;
+14302;EGYPTIAN HIEROGLYPH-14302;Lo;0;L;;;;;N;;;;;
+14303;EGYPTIAN HIEROGLYPH-14303;Lo;0;L;;;;;N;;;;;
+14304;EGYPTIAN HIEROGLYPH-14304;Lo;0;L;;;;;N;;;;;
+14305;EGYPTIAN HIEROGLYPH-14305;Lo;0;L;;;;;N;;;;;
+14306;EGYPTIAN HIEROGLYPH-14306;Lo;0;L;;;;;N;;;;;
+14307;EGYPTIAN HIEROGLYPH-14307;Lo;0;L;;;;;N;;;;;
+14308;EGYPTIAN HIEROGLYPH-14308;Lo;0;L;;;;;N;;;;;
+14309;EGYPTIAN HIEROGLYPH-14309;Lo;0;L;;;;;N;;;;;
+1430A;EGYPTIAN HIEROGLYPH-1430A;Lo;0;L;;;;;N;;;;;
+1430B;EGYPTIAN HIEROGLYPH-1430B;Lo;0;L;;;;;N;;;;;
+1430C;EGYPTIAN HIEROGLYPH-1430C;Lo;0;L;;;;;N;;;;;
+1430D;EGYPTIAN HIEROGLYPH-1430D;Lo;0;L;;;;;N;;;;;
+1430E;EGYPTIAN HIEROGLYPH-1430E;Lo;0;L;;;;;N;;;;;
+1430F;EGYPTIAN HIEROGLYPH-1430F;Lo;0;L;;;;;N;;;;;
+14310;EGYPTIAN HIEROGLYPH-14310;Lo;0;L;;;;;N;;;;;
+14311;EGYPTIAN HIEROGLYPH-14311;Lo;0;L;;;;;N;;;;;
+14312;EGYPTIAN HIEROGLYPH-14312;Lo;0;L;;;;;N;;;;;
+14313;EGYPTIAN HIEROGLYPH-14313;Lo;0;L;;;;;N;;;;;
+14314;EGYPTIAN HIEROGLYPH-14314;Lo;0;L;;;;;N;;;;;
+14315;EGYPTIAN HIEROGLYPH-14315;Lo;0;L;;;;;N;;;;;
+14316;EGYPTIAN HIEROGLYPH-14316;Lo;0;L;;;;;N;;;;;
+14317;EGYPTIAN HIEROGLYPH-14317;Lo;0;L;;;;;N;;;;;
+14318;EGYPTIAN HIEROGLYPH-14318;Lo;0;L;;;;;N;;;;;
+14319;EGYPTIAN HIEROGLYPH-14319;Lo;0;L;;;;;N;;;;;
+1431A;EGYPTIAN HIEROGLYPH-1431A;Lo;0;L;;;;;N;;;;;
+1431B;EGYPTIAN HIEROGLYPH-1431B;Lo;0;L;;;;;N;;;;;
+1431C;EGYPTIAN HIEROGLYPH-1431C;Lo;0;L;;;;;N;;;;;
+1431D;EGYPTIAN HIEROGLYPH-1431D;Lo;0;L;;;;;N;;;;;
+1431E;EGYPTIAN HIEROGLYPH-1431E;Lo;0;L;;;;;N;;;;;
+1431F;EGYPTIAN HIEROGLYPH-1431F;Lo;0;L;;;;;N;;;;;
+14320;EGYPTIAN HIEROGLYPH-14320;Lo;0;L;;;;;N;;;;;
+14321;EGYPTIAN HIEROGLYPH-14321;Lo;0;L;;;;;N;;;;;
+14322;EGYPTIAN HIEROGLYPH-14322;Lo;0;L;;;;;N;;;;;
+14323;EGYPTIAN HIEROGLYPH-14323;Lo;0;L;;;;;N;;;;;
+14324;EGYPTIAN HIEROGLYPH-14324;Lo;0;L;;;;;N;;;;;
+14325;EGYPTIAN HIEROGLYPH-14325;Lo;0;L;;;;;N;;;;;
+14326;EGYPTIAN HIEROGLYPH-14326;Lo;0;L;;;;;N;;;;;
+14327;EGYPTIAN HIEROGLYPH-14327;Lo;0;L;;;;;N;;;;;
+14328;EGYPTIAN HIEROGLYPH-14328;Lo;0;L;;;;;N;;;;;
+14329;EGYPTIAN HIEROGLYPH-14329;Lo;0;L;;;;;N;;;;;
+1432A;EGYPTIAN HIEROGLYPH-1432A;Lo;0;L;;;;;N;;;;;
+1432B;EGYPTIAN HIEROGLYPH-1432B;Lo;0;L;;;;;N;;;;;
+1432C;EGYPTIAN HIEROGLYPH-1432C;Lo;0;L;;;;;N;;;;;
+1432D;EGYPTIAN HIEROGLYPH-1432D;Lo;0;L;;;;;N;;;;;
+1432E;EGYPTIAN HIEROGLYPH-1432E;Lo;0;L;;;;;N;;;;;
+1432F;EGYPTIAN HIEROGLYPH-1432F;Lo;0;L;;;;;N;;;;;
+14330;EGYPTIAN HIEROGLYPH-14330;Lo;0;L;;;;;N;;;;;
+14331;EGYPTIAN HIEROGLYPH-14331;Lo;0;L;;;;;N;;;;;
+14332;EGYPTIAN HIEROGLYPH-14332;Lo;0;L;;;;;N;;;;;
+14333;EGYPTIAN HIEROGLYPH-14333;Lo;0;L;;;;;N;;;;;
+14334;EGYPTIAN HIEROGLYPH-14334;Lo;0;L;;;;;N;;;;;
+14335;EGYPTIAN HIEROGLYPH-14335;Lo;0;L;;;;;N;;;;;
+14336;EGYPTIAN HIEROGLYPH-14336;Lo;0;L;;;;;N;;;;;
+14337;EGYPTIAN HIEROGLYPH-14337;Lo;0;L;;;;;N;;;;;
+14338;EGYPTIAN HIEROGLYPH-14338;Lo;0;L;;;;;N;;;;;
+14339;EGYPTIAN HIEROGLYPH-14339;Lo;0;L;;;;;N;;;;;
+1433A;EGYPTIAN HIEROGLYPH-1433A;Lo;0;L;;;;;N;;;;;
+1433B;EGYPTIAN HIEROGLYPH-1433B;Lo;0;L;;;;;N;;;;;
+1433C;EGYPTIAN HIEROGLYPH-1433C;Lo;0;L;;;;;N;;;;;
+1433D;EGYPTIAN HIEROGLYPH-1433D;Lo;0;L;;;;;N;;;;;
+1433E;EGYPTIAN HIEROGLYPH-1433E;Lo;0;L;;;;;N;;;;;
+1433F;EGYPTIAN HIEROGLYPH-1433F;Lo;0;L;;;;;N;;;;;
+14340;EGYPTIAN HIEROGLYPH-14340;Lo;0;L;;;;;N;;;;;
+14341;EGYPTIAN HIEROGLYPH-14341;Lo;0;L;;;;;N;;;;;
+14342;EGYPTIAN HIEROGLYPH-14342;Lo;0;L;;;;;N;;;;;
+14343;EGYPTIAN HIEROGLYPH-14343;Lo;0;L;;;;;N;;;;;
+14344;EGYPTIAN HIEROGLYPH-14344;Lo;0;L;;;;;N;;;;;
+14345;EGYPTIAN HIEROGLYPH-14345;Lo;0;L;;;;;N;;;;;
+14346;EGYPTIAN HIEROGLYPH-14346;Lo;0;L;;;;;N;;;;;
+14347;EGYPTIAN HIEROGLYPH-14347;Lo;0;L;;;;;N;;;;;
+14348;EGYPTIAN HIEROGLYPH-14348;Lo;0;L;;;;;N;;;;;
+14349;EGYPTIAN HIEROGLYPH-14349;Lo;0;L;;;;;N;;;;;
+1434A;EGYPTIAN HIEROGLYPH-1434A;Lo;0;L;;;;;N;;;;;
+1434B;EGYPTIAN HIEROGLYPH-1434B;Lo;0;L;;;;;N;;;;;
+1434C;EGYPTIAN HIEROGLYPH-1434C;Lo;0;L;;;;;N;;;;;
+1434D;EGYPTIAN HIEROGLYPH-1434D;Lo;0;L;;;;;N;;;;;
+1434E;EGYPTIAN HIEROGLYPH-1434E;Lo;0;L;;;;;N;;;;;
+1434F;EGYPTIAN HIEROGLYPH-1434F;Lo;0;L;;;;;N;;;;;
+14350;EGYPTIAN HIEROGLYPH-14350;Lo;0;L;;;;;N;;;;;
+14351;EGYPTIAN HIEROGLYPH-14351;Lo;0;L;;;;;N;;;;;
+14352;EGYPTIAN HIEROGLYPH-14352;Lo;0;L;;;;;N;;;;;
+14353;EGYPTIAN HIEROGLYPH-14353;Lo;0;L;;;;;N;;;;;
+14354;EGYPTIAN HIEROGLYPH-14354;Lo;0;L;;;;;N;;;;;
+14355;EGYPTIAN HIEROGLYPH-14355;Lo;0;L;;;;;N;;;;;
+14356;EGYPTIAN HIEROGLYPH-14356;Lo;0;L;;;;;N;;;;;
+14357;EGYPTIAN HIEROGLYPH-14357;Lo;0;L;;;;;N;;;;;
+14358;EGYPTIAN HIEROGLYPH-14358;Lo;0;L;;;;;N;;;;;
+14359;EGYPTIAN HIEROGLYPH-14359;Lo;0;L;;;;;N;;;;;
+1435A;EGYPTIAN HIEROGLYPH-1435A;Lo;0;L;;;;;N;;;;;
+1435B;EGYPTIAN HIEROGLYPH-1435B;Lo;0;L;;;;;N;;;;;
+1435C;EGYPTIAN HIEROGLYPH-1435C;Lo;0;L;;;;;N;;;;;
+1435D;EGYPTIAN HIEROGLYPH-1435D;Lo;0;L;;;;;N;;;;;
+1435E;EGYPTIAN HIEROGLYPH-1435E;Lo;0;L;;;;;N;;;;;
+1435F;EGYPTIAN HIEROGLYPH-1435F;Lo;0;L;;;;;N;;;;;
+14360;EGYPTIAN HIEROGLYPH-14360;Lo;0;L;;;;;N;;;;;
+14361;EGYPTIAN HIEROGLYPH-14361;Lo;0;L;;;;;N;;;;;
+14362;EGYPTIAN HIEROGLYPH-14362;Lo;0;L;;;;;N;;;;;
+14363;EGYPTIAN HIEROGLYPH-14363;Lo;0;L;;;;;N;;;;;
+14364;EGYPTIAN HIEROGLYPH-14364;Lo;0;L;;;;;N;;;;;
+14365;EGYPTIAN HIEROGLYPH-14365;Lo;0;L;;;;;N;;;;;
+14366;EGYPTIAN HIEROGLYPH-14366;Lo;0;L;;;;;N;;;;;
+14367;EGYPTIAN HIEROGLYPH-14367;Lo;0;L;;;;;N;;;;;
+14368;EGYPTIAN HIEROGLYPH-14368;Lo;0;L;;;;;N;;;;;
+14369;EGYPTIAN HIEROGLYPH-14369;Lo;0;L;;;;;N;;;;;
+1436A;EGYPTIAN HIEROGLYPH-1436A;Lo;0;L;;;;;N;;;;;
+1436B;EGYPTIAN HIEROGLYPH-1436B;Lo;0;L;;;;;N;;;;;
+1436C;EGYPTIAN HIEROGLYPH-1436C;Lo;0;L;;;;;N;;;;;
+1436D;EGYPTIAN HIEROGLYPH-1436D;Lo;0;L;;;;;N;;;;;
+1436E;EGYPTIAN HIEROGLYPH-1436E;Lo;0;L;;;;;N;;;;;
+1436F;EGYPTIAN HIEROGLYPH-1436F;Lo;0;L;;;;;N;;;;;
+14370;EGYPTIAN HIEROGLYPH-14370;Lo;0;L;;;;;N;;;;;
+14371;EGYPTIAN HIEROGLYPH-14371;Lo;0;L;;;;;N;;;;;
+14372;EGYPTIAN HIEROGLYPH-14372;Lo;0;L;;;;;N;;;;;
+14373;EGYPTIAN HIEROGLYPH-14373;Lo;0;L;;;;;N;;;;;
+14374;EGYPTIAN HIEROGLYPH-14374;Lo;0;L;;;;;N;;;;;
+14375;EGYPTIAN HIEROGLYPH-14375;Lo;0;L;;;;;N;;;;;
+14376;EGYPTIAN HIEROGLYPH-14376;Lo;0;L;;;;;N;;;;;
+14377;EGYPTIAN HIEROGLYPH-14377;Lo;0;L;;;;;N;;;;;
+14378;EGYPTIAN HIEROGLYPH-14378;Lo;0;L;;;;;N;;;;;
+14379;EGYPTIAN HIEROGLYPH-14379;Lo;0;L;;;;;N;;;;;
+1437A;EGYPTIAN HIEROGLYPH-1437A;Lo;0;L;;;;;N;;;;;
+1437B;EGYPTIAN HIEROGLYPH-1437B;Lo;0;L;;;;;N;;;;;
+1437C;EGYPTIAN HIEROGLYPH-1437C;Lo;0;L;;;;;N;;;;;
+1437D;EGYPTIAN HIEROGLYPH-1437D;Lo;0;L;;;;;N;;;;;
+1437E;EGYPTIAN HIEROGLYPH-1437E;Lo;0;L;;;;;N;;;;;
+1437F;EGYPTIAN HIEROGLYPH-1437F;Lo;0;L;;;;;N;;;;;
+14380;EGYPTIAN HIEROGLYPH-14380;Lo;0;L;;;;;N;;;;;
+14381;EGYPTIAN HIEROGLYPH-14381;Lo;0;L;;;;;N;;;;;
+14382;EGYPTIAN HIEROGLYPH-14382;Lo;0;L;;;;;N;;;;;
+14383;EGYPTIAN HIEROGLYPH-14383;Lo;0;L;;;;;N;;;;;
+14384;EGYPTIAN HIEROGLYPH-14384;Lo;0;L;;;;;N;;;;;
+14385;EGYPTIAN HIEROGLYPH-14385;Lo;0;L;;;;;N;;;;;
+14386;EGYPTIAN HIEROGLYPH-14386;Lo;0;L;;;;;N;;;;;
+14387;EGYPTIAN HIEROGLYPH-14387;Lo;0;L;;;;;N;;;;;
+14388;EGYPTIAN HIEROGLYPH-14388;Lo;0;L;;;;;N;;;;;
+14389;EGYPTIAN HIEROGLYPH-14389;Lo;0;L;;;;;N;;;;;
+1438A;EGYPTIAN HIEROGLYPH-1438A;Lo;0;L;;;;;N;;;;;
+1438B;EGYPTIAN HIEROGLYPH-1438B;Lo;0;L;;;;;N;;;;;
+1438C;EGYPTIAN HIEROGLYPH-1438C;Lo;0;L;;;;;N;;;;;
+1438D;EGYPTIAN HIEROGLYPH-1438D;Lo;0;L;;;;;N;;;;;
+1438E;EGYPTIAN HIEROGLYPH-1438E;Lo;0;L;;;;;N;;;;;
+1438F;EGYPTIAN HIEROGLYPH-1438F;Lo;0;L;;;;;N;;;;;
+14390;EGYPTIAN HIEROGLYPH-14390;Lo;0;L;;;;;N;;;;;
+14391;EGYPTIAN HIEROGLYPH-14391;Lo;0;L;;;;;N;;;;;
+14392;EGYPTIAN HIEROGLYPH-14392;Lo;0;L;;;;;N;;;;;
+14393;EGYPTIAN HIEROGLYPH-14393;Lo;0;L;;;;;N;;;;;
+14394;EGYPTIAN HIEROGLYPH-14394;Lo;0;L;;;;;N;;;;;
+14395;EGYPTIAN HIEROGLYPH-14395;Lo;0;L;;;;;N;;;;;
+14396;EGYPTIAN HIEROGLYPH-14396;Lo;0;L;;;;;N;;;;;
+14397;EGYPTIAN HIEROGLYPH-14397;Lo;0;L;;;;;N;;;;;
+14398;EGYPTIAN HIEROGLYPH-14398;Lo;0;L;;;;;N;;;;;
+14399;EGYPTIAN HIEROGLYPH-14399;Lo;0;L;;;;;N;;;;;
+1439A;EGYPTIAN HIEROGLYPH-1439A;Lo;0;L;;;;;N;;;;;
+1439B;EGYPTIAN HIEROGLYPH-1439B;Lo;0;L;;;;;N;;;;;
+1439C;EGYPTIAN HIEROGLYPH-1439C;Lo;0;L;;;;;N;;;;;
+1439D;EGYPTIAN HIEROGLYPH-1439D;Lo;0;L;;;;;N;;;;;
+1439E;EGYPTIAN HIEROGLYPH-1439E;Lo;0;L;;;;;N;;;;;
+1439F;EGYPTIAN HIEROGLYPH-1439F;Lo;0;L;;;;;N;;;;;
+143A0;EGYPTIAN HIEROGLYPH-143A0;Lo;0;L;;;;;N;;;;;
+143A1;EGYPTIAN HIEROGLYPH-143A1;Lo;0;L;;;;;N;;;;;
+143A2;EGYPTIAN HIEROGLYPH-143A2;Lo;0;L;;;;;N;;;;;
+143A3;EGYPTIAN HIEROGLYPH-143A3;Lo;0;L;;;;;N;;;;;
+143A4;EGYPTIAN HIEROGLYPH-143A4;Lo;0;L;;;;;N;;;;;
+143A5;EGYPTIAN HIEROGLYPH-143A5;Lo;0;L;;;;;N;;;;;
+143A6;EGYPTIAN HIEROGLYPH-143A6;Lo;0;L;;;;;N;;;;;
+143A7;EGYPTIAN HIEROGLYPH-143A7;Lo;0;L;;;;;N;;;;;
+143A8;EGYPTIAN HIEROGLYPH-143A8;Lo;0;L;;;;;N;;;;;
+143A9;EGYPTIAN HIEROGLYPH-143A9;Lo;0;L;;;;;N;;;;;
+143AA;EGYPTIAN HIEROGLYPH-143AA;Lo;0;L;;;;;N;;;;;
+143AB;EGYPTIAN HIEROGLYPH-143AB;Lo;0;L;;;;;N;;;;;
+143AC;EGYPTIAN HIEROGLYPH-143AC;Lo;0;L;;;;;N;;;;;
+143AD;EGYPTIAN HIEROGLYPH-143AD;Lo;0;L;;;;;N;;;;;
+143AE;EGYPTIAN HIEROGLYPH-143AE;Lo;0;L;;;;;N;;;;;
+143AF;EGYPTIAN HIEROGLYPH-143AF;Lo;0;L;;;;;N;;;;;
+143B0;EGYPTIAN HIEROGLYPH-143B0;Lo;0;L;;;;;N;;;;;
+143B1;EGYPTIAN HIEROGLYPH-143B1;Lo;0;L;;;;;N;;;;;
+143B2;EGYPTIAN HIEROGLYPH-143B2;Lo;0;L;;;;;N;;;;;
+143B3;EGYPTIAN HIEROGLYPH-143B3;Lo;0;L;;;;;N;;;;;
+143B4;EGYPTIAN HIEROGLYPH-143B4;Lo;0;L;;;;;N;;;;;
+143B5;EGYPTIAN HIEROGLYPH-143B5;Lo;0;L;;;;;N;;;;;
+143B6;EGYPTIAN HIEROGLYPH-143B6;Lo;0;L;;;;;N;;;;;
+143B7;EGYPTIAN HIEROGLYPH-143B7;Lo;0;L;;;;;N;;;;;
+143B8;EGYPTIAN HIEROGLYPH-143B8;Lo;0;L;;;;;N;;;;;
+143B9;EGYPTIAN HIEROGLYPH-143B9;Lo;0;L;;;;;N;;;;;
+143BA;EGYPTIAN HIEROGLYPH-143BA;Lo;0;L;;;;;N;;;;;
+143BB;EGYPTIAN HIEROGLYPH-143BB;Lo;0;L;;;;;N;;;;;
+143BC;EGYPTIAN HIEROGLYPH-143BC;Lo;0;L;;;;;N;;;;;
+143BD;EGYPTIAN HIEROGLYPH-143BD;Lo;0;L;;;;;N;;;;;
+143BE;EGYPTIAN HIEROGLYPH-143BE;Lo;0;L;;;;;N;;;;;
+143BF;EGYPTIAN HIEROGLYPH-143BF;Lo;0;L;;;;;N;;;;;
+143C0;EGYPTIAN HIEROGLYPH-143C0;Lo;0;L;;;;;N;;;;;
+143C1;EGYPTIAN HIEROGLYPH-143C1;Lo;0;L;;;;;N;;;;;
+143C2;EGYPTIAN HIEROGLYPH-143C2;Lo;0;L;;;;;N;;;;;
+143C3;EGYPTIAN HIEROGLYPH-143C3;Lo;0;L;;;;;N;;;;;
+143C4;EGYPTIAN HIEROGLYPH-143C4;Lo;0;L;;;;;N;;;;;
+143C5;EGYPTIAN HIEROGLYPH-143C5;Lo;0;L;;;;;N;;;;;
+143C6;EGYPTIAN HIEROGLYPH-143C6;Lo;0;L;;;;;N;;;;;
+143C7;EGYPTIAN HIEROGLYPH-143C7;Lo;0;L;;;;;N;;;;;
+143C8;EGYPTIAN HIEROGLYPH-143C8;Lo;0;L;;;;;N;;;;;
+143C9;EGYPTIAN HIEROGLYPH-143C9;Lo;0;L;;;;;N;;;;;
+143CA;EGYPTIAN HIEROGLYPH-143CA;Lo;0;L;;;;;N;;;;;
+143CB;EGYPTIAN HIEROGLYPH-143CB;Lo;0;L;;;;;N;;;;;
+143CC;EGYPTIAN HIEROGLYPH-143CC;Lo;0;L;;;;;N;;;;;
+143CD;EGYPTIAN HIEROGLYPH-143CD;Lo;0;L;;;;;N;;;;;
+143CE;EGYPTIAN HIEROGLYPH-143CE;Lo;0;L;;;;;N;;;;;
+143CF;EGYPTIAN HIEROGLYPH-143CF;Lo;0;L;;;;;N;;;;;
+143D0;EGYPTIAN HIEROGLYPH-143D0;Lo;0;L;;;;;N;;;;;
+143D1;EGYPTIAN HIEROGLYPH-143D1;Lo;0;L;;;;;N;;;;;
+143D2;EGYPTIAN HIEROGLYPH-143D2;Lo;0;L;;;;;N;;;;;
+143D3;EGYPTIAN HIEROGLYPH-143D3;Lo;0;L;;;;;N;;;;;
+143D4;EGYPTIAN HIEROGLYPH-143D4;Lo;0;L;;;;;N;;;;;
+143D5;EGYPTIAN HIEROGLYPH-143D5;Lo;0;L;;;;;N;;;;;
+143D6;EGYPTIAN HIEROGLYPH-143D6;Lo;0;L;;;;;N;;;;;
+143D7;EGYPTIAN HIEROGLYPH-143D7;Lo;0;L;;;;;N;;;;;
+143D8;EGYPTIAN HIEROGLYPH-143D8;Lo;0;L;;;;;N;;;;;
+143D9;EGYPTIAN HIEROGLYPH-143D9;Lo;0;L;;;;;N;;;;;
+143DA;EGYPTIAN HIEROGLYPH-143DA;Lo;0;L;;;;;N;;;;;
+143DB;EGYPTIAN HIEROGLYPH-143DB;Lo;0;L;;;;;N;;;;;
+143DC;EGYPTIAN HIEROGLYPH-143DC;Lo;0;L;;;;;N;;;;;
+143DD;EGYPTIAN HIEROGLYPH-143DD;Lo;0;L;;;;;N;;;;;
+143DE;EGYPTIAN HIEROGLYPH-143DE;Lo;0;L;;;;;N;;;;;
+143DF;EGYPTIAN HIEROGLYPH-143DF;Lo;0;L;;;;;N;;;;;
+143E0;EGYPTIAN HIEROGLYPH-143E0;Lo;0;L;;;;;N;;;;;
+143E1;EGYPTIAN HIEROGLYPH-143E1;Lo;0;L;;;;;N;;;;;
+143E2;EGYPTIAN HIEROGLYPH-143E2;Lo;0;L;;;;;N;;;;;
+143E3;EGYPTIAN HIEROGLYPH-143E3;Lo;0;L;;;;;N;;;;;
+143E4;EGYPTIAN HIEROGLYPH-143E4;Lo;0;L;;;;;N;;;;;
+143E5;EGYPTIAN HIEROGLYPH-143E5;Lo;0;L;;;;;N;;;;;
+143E6;EGYPTIAN HIEROGLYPH-143E6;Lo;0;L;;;;;N;;;;;
+143E7;EGYPTIAN HIEROGLYPH-143E7;Lo;0;L;;;;;N;;;;;
+143E8;EGYPTIAN HIEROGLYPH-143E8;Lo;0;L;;;;;N;;;;;
+143E9;EGYPTIAN HIEROGLYPH-143E9;Lo;0;L;;;;;N;;;;;
+143EA;EGYPTIAN HIEROGLYPH-143EA;Lo;0;L;;;;;N;;;;;
+143EB;EGYPTIAN HIEROGLYPH-143EB;Lo;0;L;;;;;N;;;;;
+143EC;EGYPTIAN HIEROGLYPH-143EC;Lo;0;L;;;;;N;;;;;
+143ED;EGYPTIAN HIEROGLYPH-143ED;Lo;0;L;;;;;N;;;;;
+143EE;EGYPTIAN HIEROGLYPH-143EE;Lo;0;L;;;;;N;;;;;
+143EF;EGYPTIAN HIEROGLYPH-143EF;Lo;0;L;;;;;N;;;;;
+143F0;EGYPTIAN HIEROGLYPH-143F0;Lo;0;L;;;;;N;;;;;
+143F1;EGYPTIAN HIEROGLYPH-143F1;Lo;0;L;;;;;N;;;;;
+143F2;EGYPTIAN HIEROGLYPH-143F2;Lo;0;L;;;;;N;;;;;
+143F3;EGYPTIAN HIEROGLYPH-143F3;Lo;0;L;;;;;N;;;;;
+143F4;EGYPTIAN HIEROGLYPH-143F4;Lo;0;L;;;;;N;;;;;
+143F5;EGYPTIAN HIEROGLYPH-143F5;Lo;0;L;;;;;N;;;;;
+143F6;EGYPTIAN HIEROGLYPH-143F6;Lo;0;L;;;;;N;;;;;
+143F7;EGYPTIAN HIEROGLYPH-143F7;Lo;0;L;;;;;N;;;;;
+143F8;EGYPTIAN HIEROGLYPH-143F8;Lo;0;L;;;;;N;;;;;
+143F9;EGYPTIAN HIEROGLYPH-143F9;Lo;0;L;;;;;N;;;;;
+143FA;EGYPTIAN HIEROGLYPH-143FA;Lo;0;L;;;;;N;;;;;
14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
@@ -24771,6 +29053,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
14644;ANATOLIAN HIEROGLYPH A528;Lo;0;L;;;;;N;;;;;
14645;ANATOLIAN HIEROGLYPH A529;Lo;0;L;;;;;N;;;;;
14646;ANATOLIAN HIEROGLYPH A530;Lo;0;L;;;;;N;;;;;
+16100;GURUNG KHEMA LETTER A;Lo;0;L;;;;;N;;;;;
+16101;GURUNG KHEMA LETTER KA;Lo;0;L;;;;;N;;;;;
+16102;GURUNG KHEMA LETTER KHA;Lo;0;L;;;;;N;;;;;
+16103;GURUNG KHEMA LETTER GA;Lo;0;L;;;;;N;;;;;
+16104;GURUNG KHEMA LETTER GHA;Lo;0;L;;;;;N;;;;;
+16105;GURUNG KHEMA LETTER NGA;Lo;0;L;;;;;N;;;;;
+16106;GURUNG KHEMA LETTER CA;Lo;0;L;;;;;N;;;;;
+16107;GURUNG KHEMA LETTER CHA;Lo;0;L;;;;;N;;;;;
+16108;GURUNG KHEMA LETTER JA;Lo;0;L;;;;;N;;;;;
+16109;GURUNG KHEMA LETTER JHA;Lo;0;L;;;;;N;;;;;
+1610A;GURUNG KHEMA LETTER HA;Lo;0;L;;;;;N;;;;;
+1610B;GURUNG KHEMA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1610C;GURUNG KHEMA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1610D;GURUNG KHEMA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1610E;GURUNG KHEMA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+1610F;GURUNG KHEMA LETTER VA;Lo;0;L;;;;;N;;;;;
+16110;GURUNG KHEMA LETTER TA;Lo;0;L;;;;;N;;;;;
+16111;GURUNG KHEMA LETTER THA;Lo;0;L;;;;;N;;;;;
+16112;GURUNG KHEMA LETTER DA;Lo;0;L;;;;;N;;;;;
+16113;GURUNG KHEMA LETTER DHA;Lo;0;L;;;;;N;;;;;
+16114;GURUNG KHEMA LETTER NA;Lo;0;L;;;;;N;;;;;
+16115;GURUNG KHEMA LETTER PA;Lo;0;L;;;;;N;;;;;
+16116;GURUNG KHEMA LETTER PHA;Lo;0;L;;;;;N;;;;;
+16117;GURUNG KHEMA LETTER BA;Lo;0;L;;;;;N;;;;;
+16118;GURUNG KHEMA LETTER BHA;Lo;0;L;;;;;N;;;;;
+16119;GURUNG KHEMA LETTER MA;Lo;0;L;;;;;N;;;;;
+1611A;GURUNG KHEMA LETTER YA;Lo;0;L;;;;;N;;;;;
+1611B;GURUNG KHEMA LETTER RA;Lo;0;L;;;;;N;;;;;
+1611C;GURUNG KHEMA LETTER LA;Lo;0;L;;;;;N;;;;;
+1611D;GURUNG KHEMA LETTER SA;Lo;0;L;;;;;N;;;;;
+1611E;GURUNG KHEMA VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+1611F;GURUNG KHEMA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+16120;GURUNG KHEMA VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+16121;GURUNG KHEMA VOWEL SIGN U;Mn;0;NSM;1611E 1611E;;;;N;;;;;
+16122;GURUNG KHEMA VOWEL SIGN UU;Mn;0;NSM;1611E 16129;;;;N;;;;;
+16123;GURUNG KHEMA VOWEL SIGN E;Mn;0;NSM;1611E 1611F;;;;N;;;;;
+16124;GURUNG KHEMA VOWEL SIGN EE;Mn;0;NSM;16129 1611F;;;;N;;;;;
+16125;GURUNG KHEMA VOWEL SIGN AI;Mn;0;NSM;1611E 16120;;;;N;;;;;
+16126;GURUNG KHEMA VOWEL SIGN O;Mn;0;NSM;16121 1611F;;;;N;;;;;
+16127;GURUNG KHEMA VOWEL SIGN OO;Mn;0;NSM;16122 1611F;;;;N;;;;;
+16128;GURUNG KHEMA VOWEL SIGN AU;Mn;0;NSM;16121 16120;;;;N;;;;;
+16129;GURUNG KHEMA VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+1612A;GURUNG KHEMA CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
+1612B;GURUNG KHEMA CONSONANT SIGN MEDIAL VA;Mc;0;L;;;;;N;;;;;
+1612C;GURUNG KHEMA CONSONANT SIGN MEDIAL HA;Mc;0;L;;;;;N;;;;;
+1612D;GURUNG KHEMA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1612E;GURUNG KHEMA CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
+1612F;GURUNG KHEMA SIGN THOLHOMA;Mn;9;NSM;;;;;N;;;;;
+16130;GURUNG KHEMA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+16131;GURUNG KHEMA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+16132;GURUNG KHEMA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+16133;GURUNG KHEMA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+16134;GURUNG KHEMA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+16135;GURUNG KHEMA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+16136;GURUNG KHEMA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+16137;GURUNG KHEMA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+16138;GURUNG KHEMA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+16139;GURUNG KHEMA DIGIT NINE;Nd;0;L;;9;9;9;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;;;;;
@@ -25635,6 +29975,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
16B8D;PAHAWH HMONG CLAN SIGN TSWB;Lo;0;L;;;;;N;;;;;
16B8E;PAHAWH HMONG CLAN SIGN KWM;Lo;0;L;;;;;N;;;;;
16B8F;PAHAWH HMONG CLAN SIGN VWJ;Lo;0;L;;;;;N;;;;;
+16D40;KIRAT RAI SIGN ANUSVARA;Lm;0;L;;;;;N;;;;;
+16D41;KIRAT RAI SIGN TONPI;Lm;0;L;;;;;N;;;;;
+16D42;KIRAT RAI SIGN VISARGA;Lm;0;L;;;;;N;;;;;
+16D43;KIRAT RAI LETTER A;Lo;0;L;;;;;N;;;;;
+16D44;KIRAT RAI LETTER KA;Lo;0;L;;;;;N;;;;;
+16D45;KIRAT RAI LETTER KHA;Lo;0;L;;;;;N;;;;;
+16D46;KIRAT RAI LETTER GA;Lo;0;L;;;;;N;;;;;
+16D47;KIRAT RAI LETTER GHA;Lo;0;L;;;;;N;;;;;
+16D48;KIRAT RAI LETTER NGA;Lo;0;L;;;;;N;;;;;
+16D49;KIRAT RAI LETTER CA;Lo;0;L;;;;;N;;;;;
+16D4A;KIRAT RAI LETTER CHA;Lo;0;L;;;;;N;;;;;
+16D4B;KIRAT RAI LETTER JA;Lo;0;L;;;;;N;;;;;
+16D4C;KIRAT RAI LETTER JHA;Lo;0;L;;;;;N;;;;;
+16D4D;KIRAT RAI LETTER NYA;Lo;0;L;;;;;N;;;;;
+16D4E;KIRAT RAI LETTER TTA;Lo;0;L;;;;;N;;;;;
+16D4F;KIRAT RAI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+16D50;KIRAT RAI LETTER DDA;Lo;0;L;;;;;N;;;;;
+16D51;KIRAT RAI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+16D52;KIRAT RAI LETTER TA;Lo;0;L;;;;;N;;;;;
+16D53;KIRAT RAI LETTER THA;Lo;0;L;;;;;N;;;;;
+16D54;KIRAT RAI LETTER DA;Lo;0;L;;;;;N;;;;;
+16D55;KIRAT RAI LETTER DHA;Lo;0;L;;;;;N;;;;;
+16D56;KIRAT RAI LETTER NA;Lo;0;L;;;;;N;;;;;
+16D57;KIRAT RAI LETTER PA;Lo;0;L;;;;;N;;;;;
+16D58;KIRAT RAI LETTER PHA;Lo;0;L;;;;;N;;;;;
+16D59;KIRAT RAI LETTER BA;Lo;0;L;;;;;N;;;;;
+16D5A;KIRAT RAI LETTER BHA;Lo;0;L;;;;;N;;;;;
+16D5B;KIRAT RAI LETTER MA;Lo;0;L;;;;;N;;;;;
+16D5C;KIRAT RAI LETTER YA;Lo;0;L;;;;;N;;;;;
+16D5D;KIRAT RAI LETTER RA;Lo;0;L;;;;;N;;;;;
+16D5E;KIRAT RAI LETTER LA;Lo;0;L;;;;;N;;;;;
+16D5F;KIRAT RAI LETTER VA;Lo;0;L;;;;;N;;;;;
+16D60;KIRAT RAI LETTER SA;Lo;0;L;;;;;N;;;;;
+16D61;KIRAT RAI LETTER SHA;Lo;0;L;;;;;N;;;;;
+16D62;KIRAT RAI LETTER HA;Lo;0;L;;;;;N;;;;;
+16D63;KIRAT RAI VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+16D64;KIRAT RAI VOWEL SIGN I;Lo;0;L;;;;;N;;;;;
+16D65;KIRAT RAI VOWEL SIGN U;Lo;0;L;;;;;N;;;;;
+16D66;KIRAT RAI VOWEL SIGN UE;Lo;0;L;;;;;N;;;;;
+16D67;KIRAT RAI VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+16D68;KIRAT RAI VOWEL SIGN AI;Lo;0;L;16D67 16D67;;;;N;;;;;
+16D69;KIRAT RAI VOWEL SIGN O;Lo;0;L;16D63 16D67;;;;N;;;;;
+16D6A;KIRAT RAI VOWEL SIGN AU;Lo;0;L;16D69 16D67;;;;N;;;;;
+16D6B;KIRAT RAI SIGN VIRAMA;Lm;0;L;;;;;N;;;;;
+16D6C;KIRAT RAI SIGN SAAT;Lm;0;L;;;;;N;;;;;
+16D6D;KIRAT RAI SIGN YUPI;Po;0;L;;;;;N;;;;;
+16D6E;KIRAT RAI DANDA;Po;0;L;;;;;N;;;;;
+16D6F;KIRAT RAI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+16D70;KIRAT RAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+16D71;KIRAT RAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+16D72;KIRAT RAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+16D73;KIRAT RAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+16D74;KIRAT RAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+16D75;KIRAT RAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+16D76;KIRAT RAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+16D77;KIRAT RAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+16D78;KIRAT RAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+16D79;KIRAT RAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
16E40;MEDEFAIDRIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;16E60;
16E41;MEDEFAIDRIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;16E61;
16E42;MEDEFAIDRIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;16E62;
@@ -27122,6 +31520,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
18CD3;KHITAN SMALL SCRIPT CHARACTER-18CD3;Lo;0;L;;;;;N;;;;;
18CD4;KHITAN SMALL SCRIPT CHARACTER-18CD4;Lo;0;L;;;;;N;;;;;
18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;;
+18CFF;KHITAN SMALL SCRIPT CHARACTER-18CFF;Lo;0;L;;;;;N;;;;;
18D00;;Lo;0;L;;;;;N;;;;;
18D08;;Lo;0;L;;;;;N;;;;;
1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;;
@@ -27980,6 +32379,692 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;;
1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;;
1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;;
+1CC00;UP-POINTING GO-KART;So;0;ON;;;;;N;;;;;
+1CC01;RIGHT-POINTING GO-KART;So;0;ON;;;;;N;;;;;
+1CC02;LEFT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC03;RIGHT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC04;DOWN-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC05;LOWER HORIZONTAL RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC06;RIGHT VERTICAL RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC07;LOWER RIGHT RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC08;ANTENNA;So;0;ON;;;;;N;;;;;
+1CC09;HORIZONTAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;;
+1CC0A;VERTICAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;;
+1CC0B;LEFT THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0C;MIDDLE THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0D;RIGHT THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0E;LEFT-POINTING DIODE;So;0;ON;;;;;N;;;;;
+1CC0F;RIGHT-POINTING DIODE;So;0;ON;;;;;N;;;;;
+1CC10;NPN TRANSISTOR;So;0;ON;;;;;N;;;;;
+1CC11;PNP TRANSISTOR;So;0;ON;;;;;N;;;;;
+1CC12;RECEPTACLE;So;0;ON;;;;;N;;;;;
+1CC13;HORIZONTAL CAPACITOR;So;0;ON;;;;;N;;;;;
+1CC14;VERTICAL CAPACITOR;So;0;ON;;;;;N;;;;;
+1CC15;LOGIC GATE OR;So;0;ON;;;;;N;;;;;
+1CC16;LOGIC GATE AND;So;0;ON;;;;;N;;;;;
+1CC17;LOGIC GATE INVERTED INPUTS;So;0;ON;;;;;N;;;;;
+1CC18;LOGIC GATE INVERTED OUTPUT;So;0;ON;;;;;N;;;;;
+1CC19;LOGIC GATE BUFFER;So;0;ON;;;;;N;;;;;
+1CC1A;LOGIC GATE BUFFER WITH INVERTED INPUT;So;0;ON;;;;;N;;;;;
+1CC1B;BOX DRAWINGS LIGHT HORIZONTAL AND UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CC1C;BOX DRAWINGS LIGHT HORIZONTAL AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CC1D;BOX DRAWINGS LIGHT TOP AND UPPER LEFT;So;0;ON;;;;;N;;;;;
+1CC1E;BOX DRAWINGS LIGHT BOTTOM AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CC1F;BOX DRAWINGS DOUBLE DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CC20;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CC21;SEPARATED BLOCK QUADRANT-1;So;0;ON;;;;;N;;;;;
+1CC22;SEPARATED BLOCK QUADRANT-2;So;0;ON;;;;;N;;;;;
+1CC23;SEPARATED BLOCK QUADRANT-12;So;0;ON;;;;;N;;;;;
+1CC24;SEPARATED BLOCK QUADRANT-3;So;0;ON;;;;;N;;;;;
+1CC25;SEPARATED BLOCK QUADRANT-13;So;0;ON;;;;;N;;;;;
+1CC26;SEPARATED BLOCK QUADRANT-23;So;0;ON;;;;;N;;;;;
+1CC27;SEPARATED BLOCK QUADRANT-123;So;0;ON;;;;;N;;;;;
+1CC28;SEPARATED BLOCK QUADRANT-4;So;0;ON;;;;;N;;;;;
+1CC29;SEPARATED BLOCK QUADRANT-14;So;0;ON;;;;;N;;;;;
+1CC2A;SEPARATED BLOCK QUADRANT-24;So;0;ON;;;;;N;;;;;
+1CC2B;SEPARATED BLOCK QUADRANT-124;So;0;ON;;;;;N;;;;;
+1CC2C;SEPARATED BLOCK QUADRANT-34;So;0;ON;;;;;N;;;;;
+1CC2D;SEPARATED BLOCK QUADRANT-134;So;0;ON;;;;;N;;;;;
+1CC2E;SEPARATED BLOCK QUADRANT-234;So;0;ON;;;;;N;;;;;
+1CC2F;SEPARATED BLOCK QUADRANT-1234;So;0;ON;;;;;N;;;;;
+1CC30;UPPER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC31;UPPER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC32;UPPER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC33;UPPER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC34;UPPER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC35;UPPER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC36;UPPER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC37;UPPER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC38;LOWER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC39;LOWER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3A;LOWER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3B;LOWER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3C;LOWER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3D;LOWER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3E;LOWER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3F;LOWER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC40;SPARSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+1CC41;SPARSE VERTICAL FILL;So;0;ON;;;;;N;;;;;
+1CC42;ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+1CC43;DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+1CC44;DENSE VERTICAL FILL;So;0;ON;;;;;N;;;;;
+1CC45;DENSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+1CC46;SPECKLE FILL FRAME-1;So;0;ON;;;;;N;;;;;
+1CC47;SPECKLE FILL FRAME-2;So;0;ON;;;;;N;;;;;
+1CC48;LEFT-FACING BASSINET;So;0;ON;;;;;N;;;;;
+1CC49;RIGHT-FACING BASSINET;So;0;ON;;;;;N;;;;;
+1CC4A;FLYING SAUCER WITH BEAMS;So;0;ON;;;;;N;;;;;
+1CC4B;FLYING SAUCER WITHOUT BEAMS;So;0;ON;;;;;N;;;;;
+1CC4C;ALIEN MONSTER OPEN JAWS;So;0;ON;;;;;N;;;;;
+1CC4D;ALIEN MONSTER CLOSED JAWS;So;0;ON;;;;;N;;;;;
+1CC4E;ALIEN SQUID OPEN TENTACLES;So;0;ON;;;;;N;;;;;
+1CC4F;ALIEN SQUID CLOSED TENTACLES;So;0;ON;;;;;N;;;;;
+1CC50;ALIEN CRAB STEPPING RIGHT;So;0;ON;;;;;N;;;;;
+1CC51;ALIEN CRAB STEPPING LEFT;So;0;ON;;;;;N;;;;;
+1CC52;ALIEN SPIDER CROUCHING;So;0;ON;;;;;N;;;;;
+1CC53;ALIEN SPIDER SPREAD;So;0;ON;;;;;N;;;;;
+1CC54;ALIEN MONSTER STEP-1;So;0;ON;;;;;N;;;;;
+1CC55;ALIEN MONSTER STEP-2;So;0;ON;;;;;N;;;;;
+1CC56;LEFT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC57;UP-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC58;RIGHT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC59;DOWN-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC5A;TOP HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5B;TOP HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5C;TOP HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5D;BOTTOM HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5E;BOTTOM HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5F;BOTTOM HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC60;LEFT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC61;UP-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC62;RIGHT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC63;DOWN-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC64;MUSHROOM CLOUD;So;0;ON;;;;;N;;;;;
+1CC65;LEFT-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC66;UP-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC67;RIGHT-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC68;DOWN-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC69;EIGHT RAYS INWARD;So;0;ON;;;;;N;;;;;
+1CC6A;EIGHT RAYS OUTWARD;So;0;ON;;;;;N;;;;;
+1CC6B;BLACK LARGE CIRCLE MINUS LEFT QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6C;BLACK LARGE CIRCLE MINUS UPPER QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6D;BLACK LARGE CIRCLE MINUS RIGHT QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6E;BLACK LARGE CIRCLE MINUS LOWER QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6F;BLACK NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CC70;LEFT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC71;UP-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC72;RIGHT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC73;DOWN-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC74;LEFT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC75;UP-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC76;RIGHT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC77;DOWN-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC78;LEFT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC79;UP-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7A;RIGHT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7B;DOWN-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7C;SQUARE SPIRAL FROM TOP LEFT;So;0;ON;;;;;N;;;;;
+1CC7D;SQUARE SPIRAL FROM TOP RIGHT;So;0;ON;;;;;N;;;;;
+1CC7E;SQUARE SPIRAL FROM BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+1CC7F;SQUARE SPIRAL FROM BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+1CC80;STRIPED LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC81;STRIPED UP-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC82;STRIPED RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC83;STRIPED DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC84;VERTICAL LADDER;So;0;ON;;;;;N;;;;;
+1CC85;HORIZONTAL LADDER;So;0;ON;;;;;N;;;;;
+1CC86;WHITE LOWER LEFT POINTER;So;0;ON;;;;;N;;;;;
+1CC87;WHITE LOWER RIGHT POINTER;So;0;ON;;;;;N;;;;;
+1CC88;TWO RINGS ALIGNED HORIZONTALLY;So;0;ON;;;;;N;;;;;
+1CC89;SQUARE FOUR CORNER SALTIRES;So;0;ON;;;;;N;;;;;
+1CC8A;SQUARE FOUR CORNER DIAGONALS;So;0;ON;;;;;N;;;;;
+1CC8B;SQUARE FOUR CORNER BLACK TRIANGLES;So;0;ON;;;;;N;;;;;
+1CC8C;SQUARE APERTURE;So;0;ON;;;;;N;;;;;
+1CC8D;INVERSE BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+1CC8E;LEFT AND UPPER ONE EIGHTH BLOCK CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CC8F;INVERSE BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CC90;VERTICAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;;
+1CC91;HORIZONTAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;;
+1CC92;LEFT-FACING FISH;So;0;ON;;;;;N;;;;;
+1CC93;RIGHT-FACING FISH;So;0;ON;;;;;N;;;;;
+1CC94;LEFT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC95;RIGHT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC96;FLAPPING BIRD;So;0;ON;;;;;N;;;;;
+1CC97;LEFT-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC98;UP-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC99;RIGHT-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9A;DOWN-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9B;HORIZONTAL RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9C;VERTICAL RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9D;VERTICAL GO-KART;So;0;ON;;;;;N;;;;;
+1CC9E;LEFT-POINTING TANK;So;0;ON;;;;;N;;;;;
+1CC9F;RIGHT-POINTING TANK;So;0;ON;;;;;N;;;;;
+1CCA0;LEFT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;;
+1CCA1;RIGHT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;;
+1CCA2;LEFT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;;
+1CCA3;RIGHT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;;
+1CCA4;LEFT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1CCA5;RIGHT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1CCA6;UPPER LEFT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;;
+1CCA7;UPPER RIGHT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;;
+1CCA8;UPPER LEFT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
+1CCA9;UPPER RIGHT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
+1CCAA;LOWER LEFT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;;
+1CCAB;LOWER RIGHT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;;
+1CCAC;LOWER LEFT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CCAD;LOWER RIGHT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CCAE;LOWER LEFT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CCAF;LOWER RIGHT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CCB0;LOWER LEFT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;;
+1CCB1;LOWER RIGHT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;;
+1CCB2;UPPER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB3;UPPER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB4;LOWER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB5;LOWER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB6;UPPER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB7;UPPER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB8;LOWER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB9;LOWER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCBA;UPPER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBB;UPPER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBC;LOWER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBD;LOWER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBE;UPPER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCBF;UPPER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC0;LOWER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC1;LOWER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC2;UPPER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC3;UPPER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC4;LOWER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC5;LOWER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC6;UPPER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC7;UPPER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC8;LOWER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC9;LOWER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCCA;UPPER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCB;UPPER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCC;LOWER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCD;LOWER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCE;UPPER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCCF;UPPER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD0;LOWER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD1;LOWER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD2;UPPER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD3;UPPER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD4;LOWER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD5;LOWER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD6;OUTLINED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;;
+1CCD7;OUTLINED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;;
+1CCD8;OUTLINED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;;
+1CCD9;OUTLINED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;;
+1CCDA;OUTLINED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;;
+1CCDB;OUTLINED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;;
+1CCDC;OUTLINED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;;
+1CCDD;OUTLINED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;;
+1CCDE;OUTLINED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;;
+1CCDF;OUTLINED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;;
+1CCE0;OUTLINED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;;
+1CCE1;OUTLINED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;;
+1CCE2;OUTLINED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;;
+1CCE3;OUTLINED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;;
+1CCE4;OUTLINED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;;
+1CCE5;OUTLINED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;;
+1CCE6;OUTLINED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;;
+1CCE7;OUTLINED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;;
+1CCE8;OUTLINED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;;
+1CCE9;OUTLINED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;;
+1CCEA;OUTLINED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;;
+1CCEB;OUTLINED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;;
+1CCEC;OUTLINED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;;
+1CCED;OUTLINED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;;
+1CCEE;OUTLINED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;;
+1CCEF;OUTLINED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;;
+1CCF0;OUTLINED DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;;
+1CCF1;OUTLINED DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;;
+1CCF2;OUTLINED DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;;
+1CCF3;OUTLINED DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;;
+1CCF4;OUTLINED DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;;
+1CCF5;OUTLINED DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;;
+1CCF6;OUTLINED DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;;
+1CCF7;OUTLINED DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;;
+1CCF8;OUTLINED DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;;
+1CCF9;OUTLINED DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;;
+1CD00;BLOCK OCTANT-3;So;0;ON;;;;;N;;;;;
+1CD01;BLOCK OCTANT-23;So;0;ON;;;;;N;;;;;
+1CD02;BLOCK OCTANT-123;So;0;ON;;;;;N;;;;;
+1CD03;BLOCK OCTANT-4;So;0;ON;;;;;N;;;;;
+1CD04;BLOCK OCTANT-14;So;0;ON;;;;;N;;;;;
+1CD05;BLOCK OCTANT-124;So;0;ON;;;;;N;;;;;
+1CD06;BLOCK OCTANT-34;So;0;ON;;;;;N;;;;;
+1CD07;BLOCK OCTANT-134;So;0;ON;;;;;N;;;;;
+1CD08;BLOCK OCTANT-234;So;0;ON;;;;;N;;;;;
+1CD09;BLOCK OCTANT-5;So;0;ON;;;;;N;;;;;
+1CD0A;BLOCK OCTANT-15;So;0;ON;;;;;N;;;;;
+1CD0B;BLOCK OCTANT-25;So;0;ON;;;;;N;;;;;
+1CD0C;BLOCK OCTANT-125;So;0;ON;;;;;N;;;;;
+1CD0D;BLOCK OCTANT-135;So;0;ON;;;;;N;;;;;
+1CD0E;BLOCK OCTANT-235;So;0;ON;;;;;N;;;;;
+1CD0F;BLOCK OCTANT-1235;So;0;ON;;;;;N;;;;;
+1CD10;BLOCK OCTANT-45;So;0;ON;;;;;N;;;;;
+1CD11;BLOCK OCTANT-145;So;0;ON;;;;;N;;;;;
+1CD12;BLOCK OCTANT-245;So;0;ON;;;;;N;;;;;
+1CD13;BLOCK OCTANT-1245;So;0;ON;;;;;N;;;;;
+1CD14;BLOCK OCTANT-345;So;0;ON;;;;;N;;;;;
+1CD15;BLOCK OCTANT-1345;So;0;ON;;;;;N;;;;;
+1CD16;BLOCK OCTANT-2345;So;0;ON;;;;;N;;;;;
+1CD17;BLOCK OCTANT-12345;So;0;ON;;;;;N;;;;;
+1CD18;BLOCK OCTANT-6;So;0;ON;;;;;N;;;;;
+1CD19;BLOCK OCTANT-16;So;0;ON;;;;;N;;;;;
+1CD1A;BLOCK OCTANT-26;So;0;ON;;;;;N;;;;;
+1CD1B;BLOCK OCTANT-126;So;0;ON;;;;;N;;;;;
+1CD1C;BLOCK OCTANT-36;So;0;ON;;;;;N;;;;;
+1CD1D;BLOCK OCTANT-136;So;0;ON;;;;;N;;;;;
+1CD1E;BLOCK OCTANT-236;So;0;ON;;;;;N;;;;;
+1CD1F;BLOCK OCTANT-1236;So;0;ON;;;;;N;;;;;
+1CD20;BLOCK OCTANT-146;So;0;ON;;;;;N;;;;;
+1CD21;BLOCK OCTANT-246;So;0;ON;;;;;N;;;;;
+1CD22;BLOCK OCTANT-1246;So;0;ON;;;;;N;;;;;
+1CD23;BLOCK OCTANT-346;So;0;ON;;;;;N;;;;;
+1CD24;BLOCK OCTANT-1346;So;0;ON;;;;;N;;;;;
+1CD25;BLOCK OCTANT-2346;So;0;ON;;;;;N;;;;;
+1CD26;BLOCK OCTANT-12346;So;0;ON;;;;;N;;;;;
+1CD27;BLOCK OCTANT-56;So;0;ON;;;;;N;;;;;
+1CD28;BLOCK OCTANT-156;So;0;ON;;;;;N;;;;;
+1CD29;BLOCK OCTANT-256;So;0;ON;;;;;N;;;;;
+1CD2A;BLOCK OCTANT-1256;So;0;ON;;;;;N;;;;;
+1CD2B;BLOCK OCTANT-356;So;0;ON;;;;;N;;;;;
+1CD2C;BLOCK OCTANT-1356;So;0;ON;;;;;N;;;;;
+1CD2D;BLOCK OCTANT-2356;So;0;ON;;;;;N;;;;;
+1CD2E;BLOCK OCTANT-12356;So;0;ON;;;;;N;;;;;
+1CD2F;BLOCK OCTANT-456;So;0;ON;;;;;N;;;;;
+1CD30;BLOCK OCTANT-1456;So;0;ON;;;;;N;;;;;
+1CD31;BLOCK OCTANT-2456;So;0;ON;;;;;N;;;;;
+1CD32;BLOCK OCTANT-12456;So;0;ON;;;;;N;;;;;
+1CD33;BLOCK OCTANT-3456;So;0;ON;;;;;N;;;;;
+1CD34;BLOCK OCTANT-13456;So;0;ON;;;;;N;;;;;
+1CD35;BLOCK OCTANT-23456;So;0;ON;;;;;N;;;;;
+1CD36;BLOCK OCTANT-17;So;0;ON;;;;;N;;;;;
+1CD37;BLOCK OCTANT-27;So;0;ON;;;;;N;;;;;
+1CD38;BLOCK OCTANT-127;So;0;ON;;;;;N;;;;;
+1CD39;BLOCK OCTANT-37;So;0;ON;;;;;N;;;;;
+1CD3A;BLOCK OCTANT-137;So;0;ON;;;;;N;;;;;
+1CD3B;BLOCK OCTANT-237;So;0;ON;;;;;N;;;;;
+1CD3C;BLOCK OCTANT-1237;So;0;ON;;;;;N;;;;;
+1CD3D;BLOCK OCTANT-47;So;0;ON;;;;;N;;;;;
+1CD3E;BLOCK OCTANT-147;So;0;ON;;;;;N;;;;;
+1CD3F;BLOCK OCTANT-247;So;0;ON;;;;;N;;;;;
+1CD40;BLOCK OCTANT-1247;So;0;ON;;;;;N;;;;;
+1CD41;BLOCK OCTANT-347;So;0;ON;;;;;N;;;;;
+1CD42;BLOCK OCTANT-1347;So;0;ON;;;;;N;;;;;
+1CD43;BLOCK OCTANT-2347;So;0;ON;;;;;N;;;;;
+1CD44;BLOCK OCTANT-12347;So;0;ON;;;;;N;;;;;
+1CD45;BLOCK OCTANT-157;So;0;ON;;;;;N;;;;;
+1CD46;BLOCK OCTANT-257;So;0;ON;;;;;N;;;;;
+1CD47;BLOCK OCTANT-1257;So;0;ON;;;;;N;;;;;
+1CD48;BLOCK OCTANT-357;So;0;ON;;;;;N;;;;;
+1CD49;BLOCK OCTANT-2357;So;0;ON;;;;;N;;;;;
+1CD4A;BLOCK OCTANT-12357;So;0;ON;;;;;N;;;;;
+1CD4B;BLOCK OCTANT-457;So;0;ON;;;;;N;;;;;
+1CD4C;BLOCK OCTANT-1457;So;0;ON;;;;;N;;;;;
+1CD4D;BLOCK OCTANT-12457;So;0;ON;;;;;N;;;;;
+1CD4E;BLOCK OCTANT-3457;So;0;ON;;;;;N;;;;;
+1CD4F;BLOCK OCTANT-13457;So;0;ON;;;;;N;;;;;
+1CD50;BLOCK OCTANT-23457;So;0;ON;;;;;N;;;;;
+1CD51;BLOCK OCTANT-67;So;0;ON;;;;;N;;;;;
+1CD52;BLOCK OCTANT-167;So;0;ON;;;;;N;;;;;
+1CD53;BLOCK OCTANT-267;So;0;ON;;;;;N;;;;;
+1CD54;BLOCK OCTANT-1267;So;0;ON;;;;;N;;;;;
+1CD55;BLOCK OCTANT-367;So;0;ON;;;;;N;;;;;
+1CD56;BLOCK OCTANT-1367;So;0;ON;;;;;N;;;;;
+1CD57;BLOCK OCTANT-2367;So;0;ON;;;;;N;;;;;
+1CD58;BLOCK OCTANT-12367;So;0;ON;;;;;N;;;;;
+1CD59;BLOCK OCTANT-467;So;0;ON;;;;;N;;;;;
+1CD5A;BLOCK OCTANT-1467;So;0;ON;;;;;N;;;;;
+1CD5B;BLOCK OCTANT-2467;So;0;ON;;;;;N;;;;;
+1CD5C;BLOCK OCTANT-12467;So;0;ON;;;;;N;;;;;
+1CD5D;BLOCK OCTANT-3467;So;0;ON;;;;;N;;;;;
+1CD5E;BLOCK OCTANT-13467;So;0;ON;;;;;N;;;;;
+1CD5F;BLOCK OCTANT-23467;So;0;ON;;;;;N;;;;;
+1CD60;BLOCK OCTANT-123467;So;0;ON;;;;;N;;;;;
+1CD61;BLOCK OCTANT-567;So;0;ON;;;;;N;;;;;
+1CD62;BLOCK OCTANT-1567;So;0;ON;;;;;N;;;;;
+1CD63;BLOCK OCTANT-2567;So;0;ON;;;;;N;;;;;
+1CD64;BLOCK OCTANT-12567;So;0;ON;;;;;N;;;;;
+1CD65;BLOCK OCTANT-3567;So;0;ON;;;;;N;;;;;
+1CD66;BLOCK OCTANT-13567;So;0;ON;;;;;N;;;;;
+1CD67;BLOCK OCTANT-23567;So;0;ON;;;;;N;;;;;
+1CD68;BLOCK OCTANT-123567;So;0;ON;;;;;N;;;;;
+1CD69;BLOCK OCTANT-4567;So;0;ON;;;;;N;;;;;
+1CD6A;BLOCK OCTANT-14567;So;0;ON;;;;;N;;;;;
+1CD6B;BLOCK OCTANT-24567;So;0;ON;;;;;N;;;;;
+1CD6C;BLOCK OCTANT-124567;So;0;ON;;;;;N;;;;;
+1CD6D;BLOCK OCTANT-34567;So;0;ON;;;;;N;;;;;
+1CD6E;BLOCK OCTANT-134567;So;0;ON;;;;;N;;;;;
+1CD6F;BLOCK OCTANT-234567;So;0;ON;;;;;N;;;;;
+1CD70;BLOCK OCTANT-1234567;So;0;ON;;;;;N;;;;;
+1CD71;BLOCK OCTANT-18;So;0;ON;;;;;N;;;;;
+1CD72;BLOCK OCTANT-28;So;0;ON;;;;;N;;;;;
+1CD73;BLOCK OCTANT-128;So;0;ON;;;;;N;;;;;
+1CD74;BLOCK OCTANT-38;So;0;ON;;;;;N;;;;;
+1CD75;BLOCK OCTANT-138;So;0;ON;;;;;N;;;;;
+1CD76;BLOCK OCTANT-238;So;0;ON;;;;;N;;;;;
+1CD77;BLOCK OCTANT-1238;So;0;ON;;;;;N;;;;;
+1CD78;BLOCK OCTANT-48;So;0;ON;;;;;N;;;;;
+1CD79;BLOCK OCTANT-148;So;0;ON;;;;;N;;;;;
+1CD7A;BLOCK OCTANT-248;So;0;ON;;;;;N;;;;;
+1CD7B;BLOCK OCTANT-1248;So;0;ON;;;;;N;;;;;
+1CD7C;BLOCK OCTANT-348;So;0;ON;;;;;N;;;;;
+1CD7D;BLOCK OCTANT-1348;So;0;ON;;;;;N;;;;;
+1CD7E;BLOCK OCTANT-2348;So;0;ON;;;;;N;;;;;
+1CD7F;BLOCK OCTANT-12348;So;0;ON;;;;;N;;;;;
+1CD80;BLOCK OCTANT-58;So;0;ON;;;;;N;;;;;
+1CD81;BLOCK OCTANT-158;So;0;ON;;;;;N;;;;;
+1CD82;BLOCK OCTANT-258;So;0;ON;;;;;N;;;;;
+1CD83;BLOCK OCTANT-1258;So;0;ON;;;;;N;;;;;
+1CD84;BLOCK OCTANT-358;So;0;ON;;;;;N;;;;;
+1CD85;BLOCK OCTANT-1358;So;0;ON;;;;;N;;;;;
+1CD86;BLOCK OCTANT-2358;So;0;ON;;;;;N;;;;;
+1CD87;BLOCK OCTANT-12358;So;0;ON;;;;;N;;;;;
+1CD88;BLOCK OCTANT-458;So;0;ON;;;;;N;;;;;
+1CD89;BLOCK OCTANT-1458;So;0;ON;;;;;N;;;;;
+1CD8A;BLOCK OCTANT-2458;So;0;ON;;;;;N;;;;;
+1CD8B;BLOCK OCTANT-12458;So;0;ON;;;;;N;;;;;
+1CD8C;BLOCK OCTANT-3458;So;0;ON;;;;;N;;;;;
+1CD8D;BLOCK OCTANT-13458;So;0;ON;;;;;N;;;;;
+1CD8E;BLOCK OCTANT-23458;So;0;ON;;;;;N;;;;;
+1CD8F;BLOCK OCTANT-123458;So;0;ON;;;;;N;;;;;
+1CD90;BLOCK OCTANT-168;So;0;ON;;;;;N;;;;;
+1CD91;BLOCK OCTANT-268;So;0;ON;;;;;N;;;;;
+1CD92;BLOCK OCTANT-1268;So;0;ON;;;;;N;;;;;
+1CD93;BLOCK OCTANT-368;So;0;ON;;;;;N;;;;;
+1CD94;BLOCK OCTANT-2368;So;0;ON;;;;;N;;;;;
+1CD95;BLOCK OCTANT-12368;So;0;ON;;;;;N;;;;;
+1CD96;BLOCK OCTANT-468;So;0;ON;;;;;N;;;;;
+1CD97;BLOCK OCTANT-1468;So;0;ON;;;;;N;;;;;
+1CD98;BLOCK OCTANT-12468;So;0;ON;;;;;N;;;;;
+1CD99;BLOCK OCTANT-3468;So;0;ON;;;;;N;;;;;
+1CD9A;BLOCK OCTANT-13468;So;0;ON;;;;;N;;;;;
+1CD9B;BLOCK OCTANT-23468;So;0;ON;;;;;N;;;;;
+1CD9C;BLOCK OCTANT-568;So;0;ON;;;;;N;;;;;
+1CD9D;BLOCK OCTANT-1568;So;0;ON;;;;;N;;;;;
+1CD9E;BLOCK OCTANT-2568;So;0;ON;;;;;N;;;;;
+1CD9F;BLOCK OCTANT-12568;So;0;ON;;;;;N;;;;;
+1CDA0;BLOCK OCTANT-3568;So;0;ON;;;;;N;;;;;
+1CDA1;BLOCK OCTANT-13568;So;0;ON;;;;;N;;;;;
+1CDA2;BLOCK OCTANT-23568;So;0;ON;;;;;N;;;;;
+1CDA3;BLOCK OCTANT-123568;So;0;ON;;;;;N;;;;;
+1CDA4;BLOCK OCTANT-4568;So;0;ON;;;;;N;;;;;
+1CDA5;BLOCK OCTANT-14568;So;0;ON;;;;;N;;;;;
+1CDA6;BLOCK OCTANT-24568;So;0;ON;;;;;N;;;;;
+1CDA7;BLOCK OCTANT-124568;So;0;ON;;;;;N;;;;;
+1CDA8;BLOCK OCTANT-34568;So;0;ON;;;;;N;;;;;
+1CDA9;BLOCK OCTANT-134568;So;0;ON;;;;;N;;;;;
+1CDAA;BLOCK OCTANT-234568;So;0;ON;;;;;N;;;;;
+1CDAB;BLOCK OCTANT-1234568;So;0;ON;;;;;N;;;;;
+1CDAC;BLOCK OCTANT-178;So;0;ON;;;;;N;;;;;
+1CDAD;BLOCK OCTANT-278;So;0;ON;;;;;N;;;;;
+1CDAE;BLOCK OCTANT-1278;So;0;ON;;;;;N;;;;;
+1CDAF;BLOCK OCTANT-378;So;0;ON;;;;;N;;;;;
+1CDB0;BLOCK OCTANT-1378;So;0;ON;;;;;N;;;;;
+1CDB1;BLOCK OCTANT-2378;So;0;ON;;;;;N;;;;;
+1CDB2;BLOCK OCTANT-12378;So;0;ON;;;;;N;;;;;
+1CDB3;BLOCK OCTANT-478;So;0;ON;;;;;N;;;;;
+1CDB4;BLOCK OCTANT-1478;So;0;ON;;;;;N;;;;;
+1CDB5;BLOCK OCTANT-2478;So;0;ON;;;;;N;;;;;
+1CDB6;BLOCK OCTANT-12478;So;0;ON;;;;;N;;;;;
+1CDB7;BLOCK OCTANT-3478;So;0;ON;;;;;N;;;;;
+1CDB8;BLOCK OCTANT-13478;So;0;ON;;;;;N;;;;;
+1CDB9;BLOCK OCTANT-23478;So;0;ON;;;;;N;;;;;
+1CDBA;BLOCK OCTANT-123478;So;0;ON;;;;;N;;;;;
+1CDBB;BLOCK OCTANT-578;So;0;ON;;;;;N;;;;;
+1CDBC;BLOCK OCTANT-1578;So;0;ON;;;;;N;;;;;
+1CDBD;BLOCK OCTANT-2578;So;0;ON;;;;;N;;;;;
+1CDBE;BLOCK OCTANT-12578;So;0;ON;;;;;N;;;;;
+1CDBF;BLOCK OCTANT-3578;So;0;ON;;;;;N;;;;;
+1CDC0;BLOCK OCTANT-13578;So;0;ON;;;;;N;;;;;
+1CDC1;BLOCK OCTANT-23578;So;0;ON;;;;;N;;;;;
+1CDC2;BLOCK OCTANT-123578;So;0;ON;;;;;N;;;;;
+1CDC3;BLOCK OCTANT-4578;So;0;ON;;;;;N;;;;;
+1CDC4;BLOCK OCTANT-14578;So;0;ON;;;;;N;;;;;
+1CDC5;BLOCK OCTANT-24578;So;0;ON;;;;;N;;;;;
+1CDC6;BLOCK OCTANT-124578;So;0;ON;;;;;N;;;;;
+1CDC7;BLOCK OCTANT-34578;So;0;ON;;;;;N;;;;;
+1CDC8;BLOCK OCTANT-134578;So;0;ON;;;;;N;;;;;
+1CDC9;BLOCK OCTANT-234578;So;0;ON;;;;;N;;;;;
+1CDCA;BLOCK OCTANT-1234578;So;0;ON;;;;;N;;;;;
+1CDCB;BLOCK OCTANT-678;So;0;ON;;;;;N;;;;;
+1CDCC;BLOCK OCTANT-1678;So;0;ON;;;;;N;;;;;
+1CDCD;BLOCK OCTANT-2678;So;0;ON;;;;;N;;;;;
+1CDCE;BLOCK OCTANT-12678;So;0;ON;;;;;N;;;;;
+1CDCF;BLOCK OCTANT-3678;So;0;ON;;;;;N;;;;;
+1CDD0;BLOCK OCTANT-13678;So;0;ON;;;;;N;;;;;
+1CDD1;BLOCK OCTANT-23678;So;0;ON;;;;;N;;;;;
+1CDD2;BLOCK OCTANT-123678;So;0;ON;;;;;N;;;;;
+1CDD3;BLOCK OCTANT-4678;So;0;ON;;;;;N;;;;;
+1CDD4;BLOCK OCTANT-14678;So;0;ON;;;;;N;;;;;
+1CDD5;BLOCK OCTANT-24678;So;0;ON;;;;;N;;;;;
+1CDD6;BLOCK OCTANT-124678;So;0;ON;;;;;N;;;;;
+1CDD7;BLOCK OCTANT-34678;So;0;ON;;;;;N;;;;;
+1CDD8;BLOCK OCTANT-134678;So;0;ON;;;;;N;;;;;
+1CDD9;BLOCK OCTANT-234678;So;0;ON;;;;;N;;;;;
+1CDDA;BLOCK OCTANT-1234678;So;0;ON;;;;;N;;;;;
+1CDDB;BLOCK OCTANT-15678;So;0;ON;;;;;N;;;;;
+1CDDC;BLOCK OCTANT-25678;So;0;ON;;;;;N;;;;;
+1CDDD;BLOCK OCTANT-125678;So;0;ON;;;;;N;;;;;
+1CDDE;BLOCK OCTANT-35678;So;0;ON;;;;;N;;;;;
+1CDDF;BLOCK OCTANT-235678;So;0;ON;;;;;N;;;;;
+1CDE0;BLOCK OCTANT-1235678;So;0;ON;;;;;N;;;;;
+1CDE1;BLOCK OCTANT-45678;So;0;ON;;;;;N;;;;;
+1CDE2;BLOCK OCTANT-145678;So;0;ON;;;;;N;;;;;
+1CDE3;BLOCK OCTANT-1245678;So;0;ON;;;;;N;;;;;
+1CDE4;BLOCK OCTANT-1345678;So;0;ON;;;;;N;;;;;
+1CDE5;BLOCK OCTANT-2345678;So;0;ON;;;;;N;;;;;
+1CDE6;TOP HALF STANDING PERSON;So;0;ON;;;;;N;;;;;
+1CDE7;BOTTOM HALF STANDING PERSON;So;0;ON;;;;;N;;;;;
+1CDE8;TOP HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDE9;BOTTOM HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDEA;TOP HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEB;BOTTOM HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEC;TOP HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDED;BOTTOM HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDEE;TOP HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEF;BOTTOM HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF0;TOP HALF FORWARD-FACING RUNNER;So;0;ON;;;;;N;;;;;
+1CDF1;BOTTOM HALF FORWARD-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDF2;BOTTOM HALF FORWARD-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF3;BOTTOM HALF FORWARD-FACING RUNNER FRAME-3;So;0;ON;;;;;N;;;;;
+1CDF4;BOTTOM HALF FORWARD-FACING RUNNER FRAME-4;So;0;ON;;;;;N;;;;;
+1CDF5;MOON LANDER;So;0;ON;;;;;N;;;;;
+1CDF6;TOP HALF FLAILING ROBOT FRAME-1;So;0;ON;;;;;N;;;;;
+1CDF7;TOP HALF FLAILING ROBOT FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF8;DOWN-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDF9;LEFT-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDFA;SMALL UP-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDFB;UP-POINTING FROG;So;0;ON;;;;;N;;;;;
+1CDFC;DOWN-POINTING FROG;So;0;ON;;;;;N;;;;;
+1CDFD;EXPLOSION FRAME-1;So;0;ON;;;;;N;;;;;
+1CDFE;EXPLOSION FRAME-2;So;0;ON;;;;;N;;;;;
+1CDFF;EXPLOSION FRAME-3;So;0;ON;;;;;N;;;;;
+1CE00;RIGHT HALF AND LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1CE01;LOWER HALF AND UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1CE02;EXPLOSION AT HORIZON;So;0;ON;;;;;N;;;;;
+1CE03;UPPER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;
+1CE04;LOWER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;
+1CE05;HEAVY WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CE06;WHITE VERTICAL RECTANGLE WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+1CE07;TOP LEFT BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;;;;;
+1CE08;FUNNEL;So;0;ON;;;;;N;;;;;
+1CE09;BOX DRAWINGS DOUBLE DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE0A;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CE0B;LEFT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;;
+1CE0C;RIGHT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;;
+1CE0D;LEFT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;;
+1CE0E;RIGHT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;;
+1CE0F;HORIZONTAL LINE WITH TICK MARK;So;0;ON;;;;;N;;;;;
+1CE10;LEFT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE11;RIGHT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE12;HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE13;LOWER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE14;UPPER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE15;VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE16;BOX DRAWINGS LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+1CE17;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+1CE18;BOX DRAWINGS LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+1CE19;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+1CE1A;LARGE TYPE PIECE UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE1B;LARGE TYPE PIECE UPPER LEFT CORNER;So;0;ON;;;;;N;;;;;
+1CE1C;LARGE TYPE PIECE UPPER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE1D;LARGE TYPE PIECE UPPER LEFT CROTCH;So;0;ON;;;;;N;;;;;
+1CE1E;LARGE TYPE PIECE LEFT ARM;So;0;ON;;;;;N;;;;;
+1CE1F;LARGE TYPE PIECE CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE20;LARGE TYPE PIECE CROSSBAR WITH LOWER STEM;So;0;ON;;;;;N;;;;;
+1CE21;LARGE TYPE PIECE UPPER HALF VERTEX OF M;So;0;ON;;;;;N;;;;;
+1CE22;LARGE TYPE PIECE DIAGONAL LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CE23;LARGE TYPE PIECE SHORT UPPER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE24;LARGE TYPE PIECE UPPER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE25;LARGE TYPE PIECE RIGHT ARM;So;0;ON;;;;;N;;;;;
+1CE26;LARGE TYPE PIECE UPPER RIGHT CROTCH;So;0;ON;;;;;N;;;;;
+1CE27;LARGE TYPE PIECE UPPER RIGHT CORNER;So;0;ON;;;;;N;;;;;
+1CE28;LARGE TYPE PIECE STEM WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE29;LARGE TYPE PIECE STEM;So;0;ON;;;;;N;;;;;
+1CE2A;LARGE TYPE PIECE DIAGONAL UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2B;LARGE TYPE PIECE DIAGONAL UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2C;LARGE TYPE PIECE DIAGONAL LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2D;LARGE TYPE PIECE SHORT LOWER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE2E;LARGE TYPE PIECE LOWER LEFT AND UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE2F;LARGE TYPE PIECE CENTRE OF K;So;0;ON;;;;;N;;;;;
+1CE30;LARGE TYPE PIECE LOWER HALF VERTEX OF M;So;0;ON;;;;;N;;;;;
+1CE31;LARGE TYPE PIECE UPPER HALF VERTEX OF W;So;0;ON;;;;;N;;;;;
+1CE32;LARGE TYPE PIECE CENTRE OF X;So;0;ON;;;;;N;;;;;
+1CE33;LARGE TYPE PIECE CENTRE OF Y;So;0;ON;;;;;N;;;;;
+1CE34;LARGE TYPE PIECE CENTRE OF Z WITH CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE35;LARGE TYPE PIECE RAISED UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE36;LARGE TYPE PIECE STEM WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE37;LARGE TYPE PIECE LOWER RIGHT AND UPPER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE38;LARGE TYPE PIECE DIAGONAL UPPER LEFT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CE39;LARGE TYPE PIECE STEM WITH LEFT JOINT;So;0;ON;;;;;N;;;;;
+1CE3A;LARGE TYPE PIECE STEM WITH CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE3B;LARGE TYPE PIECE DIAGONAL UPPER LEFT;So;0;ON;;;;;N;;;;;
+1CE3C;LARGE TYPE PIECE LOWER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE3D;LARGE TYPE PIECE LOWER LEFT CORNER;So;0;ON;;;;;N;;;;;
+1CE3E;LARGE TYPE PIECE LOWER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE3F;LARGE TYPE PIECE LOWER LEFT CROTCH;So;0;ON;;;;;N;;;;;
+1CE40;LARGE TYPE PIECE CROSSBAR WITH UPPER STEM;So;0;ON;;;;;N;;;;;
+1CE41;LARGE TYPE PIECE VERTEX OF V;So;0;ON;;;;;N;;;;;
+1CE42;LARGE TYPE PIECE LOWER HALF VERTEX OF W;So;0;ON;;;;;N;;;;;
+1CE43;LARGE TYPE PIECE LOWER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE44;LARGE TYPE PIECE LOWER RIGHT CORNER;So;0;ON;;;;;N;;;;;
+1CE45;LARGE TYPE PIECE LOWER RIGHT ARC WITH TAIL;So;0;ON;;;;;N;;;;;
+1CE46;LARGE TYPE PIECE LOWER RIGHT CROTCH;So;0;ON;;;;;N;;;;;
+1CE47;LARGE TYPE PIECE STEM-45;So;0;ON;;;;;N;;;;;
+1CE48;LARGE TYPE PIECE STEM-2345;So;0;ON;;;;;N;;;;;
+1CE49;LARGE TYPE PIECE STEM-4;So;0;ON;;;;;N;;;;;
+1CE4A;LARGE TYPE PIECE STEM-34;So;0;ON;;;;;N;;;;;
+1CE4B;LARGE TYPE PIECE STEM-234;So;0;ON;;;;;N;;;;;
+1CE4C;LARGE TYPE PIECE STEM-1234;So;0;ON;;;;;N;;;;;
+1CE4D;LARGE TYPE PIECE STEM-3;So;0;ON;;;;;N;;;;;
+1CE4E;LARGE TYPE PIECE STEM-23;So;0;ON;;;;;N;;;;;
+1CE4F;LARGE TYPE PIECE STEM-2;So;0;ON;;;;;N;;;;;
+1CE50;LARGE TYPE PIECE STEM-12;So;0;ON;;;;;N;;;;;
+1CE51;SEPARATED BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;
+1CE52;SEPARATED BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;
+1CE53;SEPARATED BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;
+1CE54;SEPARATED BLOCK SEXTANT-3;So;0;ON;;;;;N;;;;;
+1CE55;SEPARATED BLOCK SEXTANT-13;So;0;ON;;;;;N;;;;;
+1CE56;SEPARATED BLOCK SEXTANT-23;So;0;ON;;;;;N;;;;;
+1CE57;SEPARATED BLOCK SEXTANT-123;So;0;ON;;;;;N;;;;;
+1CE58;SEPARATED BLOCK SEXTANT-4;So;0;ON;;;;;N;;;;;
+1CE59;SEPARATED BLOCK SEXTANT-14;So;0;ON;;;;;N;;;;;
+1CE5A;SEPARATED BLOCK SEXTANT-24;So;0;ON;;;;;N;;;;;
+1CE5B;SEPARATED BLOCK SEXTANT-124;So;0;ON;;;;;N;;;;;
+1CE5C;SEPARATED BLOCK SEXTANT-34;So;0;ON;;;;;N;;;;;
+1CE5D;SEPARATED BLOCK SEXTANT-134;So;0;ON;;;;;N;;;;;
+1CE5E;SEPARATED BLOCK SEXTANT-234;So;0;ON;;;;;N;;;;;
+1CE5F;SEPARATED BLOCK SEXTANT-1234;So;0;ON;;;;;N;;;;;
+1CE60;SEPARATED BLOCK SEXTANT-5;So;0;ON;;;;;N;;;;;
+1CE61;SEPARATED BLOCK SEXTANT-15;So;0;ON;;;;;N;;;;;
+1CE62;SEPARATED BLOCK SEXTANT-25;So;0;ON;;;;;N;;;;;
+1CE63;SEPARATED BLOCK SEXTANT-125;So;0;ON;;;;;N;;;;;
+1CE64;SEPARATED BLOCK SEXTANT-35;So;0;ON;;;;;N;;;;;
+1CE65;SEPARATED BLOCK SEXTANT-135;So;0;ON;;;;;N;;;;;
+1CE66;SEPARATED BLOCK SEXTANT-235;So;0;ON;;;;;N;;;;;
+1CE67;SEPARATED BLOCK SEXTANT-1235;So;0;ON;;;;;N;;;;;
+1CE68;SEPARATED BLOCK SEXTANT-45;So;0;ON;;;;;N;;;;;
+1CE69;SEPARATED BLOCK SEXTANT-145;So;0;ON;;;;;N;;;;;
+1CE6A;SEPARATED BLOCK SEXTANT-245;So;0;ON;;;;;N;;;;;
+1CE6B;SEPARATED BLOCK SEXTANT-1245;So;0;ON;;;;;N;;;;;
+1CE6C;SEPARATED BLOCK SEXTANT-345;So;0;ON;;;;;N;;;;;
+1CE6D;SEPARATED BLOCK SEXTANT-1345;So;0;ON;;;;;N;;;;;
+1CE6E;SEPARATED BLOCK SEXTANT-2345;So;0;ON;;;;;N;;;;;
+1CE6F;SEPARATED BLOCK SEXTANT-12345;So;0;ON;;;;;N;;;;;
+1CE70;SEPARATED BLOCK SEXTANT-6;So;0;ON;;;;;N;;;;;
+1CE71;SEPARATED BLOCK SEXTANT-16;So;0;ON;;;;;N;;;;;
+1CE72;SEPARATED BLOCK SEXTANT-26;So;0;ON;;;;;N;;;;;
+1CE73;SEPARATED BLOCK SEXTANT-126;So;0;ON;;;;;N;;;;;
+1CE74;SEPARATED BLOCK SEXTANT-36;So;0;ON;;;;;N;;;;;
+1CE75;SEPARATED BLOCK SEXTANT-136;So;0;ON;;;;;N;;;;;
+1CE76;SEPARATED BLOCK SEXTANT-236;So;0;ON;;;;;N;;;;;
+1CE77;SEPARATED BLOCK SEXTANT-1236;So;0;ON;;;;;N;;;;;
+1CE78;SEPARATED BLOCK SEXTANT-46;So;0;ON;;;;;N;;;;;
+1CE79;SEPARATED BLOCK SEXTANT-146;So;0;ON;;;;;N;;;;;
+1CE7A;SEPARATED BLOCK SEXTANT-246;So;0;ON;;;;;N;;;;;
+1CE7B;SEPARATED BLOCK SEXTANT-1246;So;0;ON;;;;;N;;;;;
+1CE7C;SEPARATED BLOCK SEXTANT-346;So;0;ON;;;;;N;;;;;
+1CE7D;SEPARATED BLOCK SEXTANT-1346;So;0;ON;;;;;N;;;;;
+1CE7E;SEPARATED BLOCK SEXTANT-2346;So;0;ON;;;;;N;;;;;
+1CE7F;SEPARATED BLOCK SEXTANT-12346;So;0;ON;;;;;N;;;;;
+1CE80;SEPARATED BLOCK SEXTANT-56;So;0;ON;;;;;N;;;;;
+1CE81;SEPARATED BLOCK SEXTANT-156;So;0;ON;;;;;N;;;;;
+1CE82;SEPARATED BLOCK SEXTANT-256;So;0;ON;;;;;N;;;;;
+1CE83;SEPARATED BLOCK SEXTANT-1256;So;0;ON;;;;;N;;;;;
+1CE84;SEPARATED BLOCK SEXTANT-356;So;0;ON;;;;;N;;;;;
+1CE85;SEPARATED BLOCK SEXTANT-1356;So;0;ON;;;;;N;;;;;
+1CE86;SEPARATED BLOCK SEXTANT-2356;So;0;ON;;;;;N;;;;;
+1CE87;SEPARATED BLOCK SEXTANT-12356;So;0;ON;;;;;N;;;;;
+1CE88;SEPARATED BLOCK SEXTANT-456;So;0;ON;;;;;N;;;;;
+1CE89;SEPARATED BLOCK SEXTANT-1456;So;0;ON;;;;;N;;;;;
+1CE8A;SEPARATED BLOCK SEXTANT-2456;So;0;ON;;;;;N;;;;;
+1CE8B;SEPARATED BLOCK SEXTANT-12456;So;0;ON;;;;;N;;;;;
+1CE8C;SEPARATED BLOCK SEXTANT-3456;So;0;ON;;;;;N;;;;;
+1CE8D;SEPARATED BLOCK SEXTANT-13456;So;0;ON;;;;;N;;;;;
+1CE8E;SEPARATED BLOCK SEXTANT-23456;So;0;ON;;;;;N;;;;;
+1CE8F;SEPARATED BLOCK SEXTANT-123456;So;0;ON;;;;;N;;;;;
+1CE90;UPPER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE91;UPPER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE92;UPPER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE93;UPPER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE94;UPPER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE95;UPPER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE96;UPPER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE97;UPPER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE98;LOWER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE99;LOWER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9A;LOWER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9B;LOWER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9C;LOWER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9D;LOWER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9E;LOWER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9F;LOWER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CEA0;RIGHT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA1;RIGHT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA2;LEFT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA3;LEFT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA4;LOWER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA5;LOWER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA6;UPPER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA7;UPPER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA8;LEFT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA9;LEFT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAA;RIGHT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAB;RIGHT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAC;UPPER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAD;UPPER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAE;LOWER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAF;LOWER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEB0;HORIZONTAL ZIGZAG LINE;So;0;ON;;;;;N;;;;;
+1CEB1;KEYHOLE;So;0;ON;;;;;N;;;;;
+1CEB2;OLD PERSONAL COMPUTER WITH MONITOR IN PORTRAIT ORIENTATION;So;0;ON;;;;;N;;;;;
+1CEB3;BLACK RIGHT TRIANGLE CARET;So;0;ON;;;;;N;;;;;
1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;;
@@ -29545,7 +34630,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;;
1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;;
1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;;
-1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;ON; 2207;;;;N;;;;;
1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;;
1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;;
1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;;
@@ -29603,7 +34688,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;;
1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;;
1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;;
-1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;ON; 2207;;;;N;;;;;
1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;;
1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;;
1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;;
@@ -29661,7 +34746,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;;
1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;;
1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;;
-1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;ON; 2207;;;;N;;;;;
1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;;
1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;;
1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;;
@@ -29719,7 +34804,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;;
1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;;
1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;;
-1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;ON; 2207;;;;N;;;;;
1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;;
1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;;
1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;;
@@ -29777,7 +34862,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;;
1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;;
1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;;
-1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;ON; 2207;;;;N;;;;;
1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;;
1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;;
1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;;
@@ -30875,6 +35960,50 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1E5D0;OL ONAL LETTER O;Lo;0;L;;;;;N;;;;;
+1E5D1;OL ONAL LETTER OM;Lo;0;L;;;;;N;;;;;
+1E5D2;OL ONAL LETTER ONG;Lo;0;L;;;;;N;;;;;
+1E5D3;OL ONAL LETTER ORR;Lo;0;L;;;;;N;;;;;
+1E5D4;OL ONAL LETTER OO;Lo;0;L;;;;;N;;;;;
+1E5D5;OL ONAL LETTER OY;Lo;0;L;;;;;N;;;;;
+1E5D6;OL ONAL LETTER A;Lo;0;L;;;;;N;;;;;
+1E5D7;OL ONAL LETTER AD;Lo;0;L;;;;;N;;;;;
+1E5D8;OL ONAL LETTER AB;Lo;0;L;;;;;N;;;;;
+1E5D9;OL ONAL LETTER AH;Lo;0;L;;;;;N;;;;;
+1E5DA;OL ONAL LETTER AL;Lo;0;L;;;;;N;;;;;
+1E5DB;OL ONAL LETTER AW;Lo;0;L;;;;;N;;;;;
+1E5DC;OL ONAL LETTER I;Lo;0;L;;;;;N;;;;;
+1E5DD;OL ONAL LETTER IT;Lo;0;L;;;;;N;;;;;
+1E5DE;OL ONAL LETTER IP;Lo;0;L;;;;;N;;;;;
+1E5DF;OL ONAL LETTER ITT;Lo;0;L;;;;;N;;;;;
+1E5E0;OL ONAL LETTER ID;Lo;0;L;;;;;N;;;;;
+1E5E1;OL ONAL LETTER IN;Lo;0;L;;;;;N;;;;;
+1E5E2;OL ONAL LETTER U;Lo;0;L;;;;;N;;;;;
+1E5E3;OL ONAL LETTER UK;Lo;0;L;;;;;N;;;;;
+1E5E4;OL ONAL LETTER UDD;Lo;0;L;;;;;N;;;;;
+1E5E5;OL ONAL LETTER UJ;Lo;0;L;;;;;N;;;;;
+1E5E6;OL ONAL LETTER UNY;Lo;0;L;;;;;N;;;;;
+1E5E7;OL ONAL LETTER UR;Lo;0;L;;;;;N;;;;;
+1E5E8;OL ONAL LETTER E;Lo;0;L;;;;;N;;;;;
+1E5E9;OL ONAL LETTER ES;Lo;0;L;;;;;N;;;;;
+1E5EA;OL ONAL LETTER EH;Lo;0;L;;;;;N;;;;;
+1E5EB;OL ONAL LETTER EC;Lo;0;L;;;;;N;;;;;
+1E5EC;OL ONAL LETTER ENN;Lo;0;L;;;;;N;;;;;
+1E5ED;OL ONAL LETTER EG;Lo;0;L;;;;;N;;;;;
+1E5EE;OL ONAL SIGN MU;Mn;230;NSM;;;;;N;;;;;
+1E5EF;OL ONAL SIGN IKIR;Mn;220;NSM;;;;;N;;;;;
+1E5F0;OL ONAL SIGN HODDOND;Lo;0;L;;;;;N;;;;;
+1E5F1;OL ONAL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1E5F2;OL ONAL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1E5F3;OL ONAL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1E5F4;OL ONAL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1E5F5;OL ONAL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1E5F6;OL ONAL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1E5F7;OL ONAL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1E5F8;OL ONAL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1E5F9;OL ONAL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1E5FA;OL ONAL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1E5FF;OL ONAL ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;;
1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;;
1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;;
@@ -33357,6 +38486,18 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;;
1F8B0;ARROW POINTING UPWARDS THEN NORTH WEST;So;0;ON;;;;;N;;;;;
1F8B1;ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST;So;0;ON;;;;;N;;;;;
+1F8B2;RIGHTWARDS ARROW WITH LOWER HOOK;So;0;ON;;;;;N;;;;;
+1F8B3;DOWNWARDS BLACK ARROW TO BAR;So;0;ON;;;;;N;;;;;
+1F8B4;NEGATIVE SQUARED LEFTWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B5;NEGATIVE SQUARED UPWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B6;NEGATIVE SQUARED RIGHTWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B7;NEGATIVE SQUARED DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B8;NORTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8B9;NORTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8BA;SOUTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8BB;SOUTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8C0;LEFTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8C1;RIGHTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
1F900;CIRCLED CROSS FORMEE WITH FOUR DOTS;So;0;ON;;;;;N;;;;;
1F901;CIRCLED CROSS FORMEE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
1F902;CIRCLED CROSS FORMEE;So;0;ON;;;;;N;;;;;
@@ -33733,6 +38874,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;
1FA87;MARACAS;So;0;ON;;;;;N;;;;;
1FA88;FLUTE;So;0;ON;;;;;N;;;;;
+1FA89;HARP;So;0;ON;;;;;N;;;;;
+1FA8F;SHOVEL;So;0;ON;;;;;N;;;;;
1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
1FA91;CHAIR;So;0;ON;;;;;N;;;;;
1FA92;RAZOR;So;0;ON;;;;;N;;;;;
@@ -33779,6 +38922,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FABB;HYACINTH;So;0;ON;;;;;N;;;;;
1FABC;JELLYFISH;So;0;ON;;;;;N;;;;;
1FABD;WING;So;0;ON;;;;;N;;;;;
+1FABE;LEAFLESS TREE;So;0;ON;;;;;N;;;;;
1FABF;GOOSE;So;0;ON;;;;;N;;;;;
1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;
1FAC1;LUNGS;So;0;ON;;;;;N;;;;;
@@ -33786,6 +38930,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;;
1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;;
1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;;
+1FAC6;FINGERPRINT;So;0;ON;;;;;N;;;;;
1FACE;MOOSE;So;0;ON;;;;;N;;;;;
1FACF;DONKEY;So;0;ON;;;;;N;;;;;
1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;
@@ -33800,6 +38945,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAD9;JAR;So;0;ON;;;;;N;;;;;
1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;;
1FADB;PEA POD;So;0;ON;;;;;N;;;;;
+1FADC;ROOT VEGETABLE;So;0;ON;;;;;N;;;;;
+1FADF;SPLATTER;So;0;ON;;;;;N;;;;;
1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;;
1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;;
1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;;
@@ -33809,6 +38956,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAE6;BITING LIP;So;0;ON;;;;;N;;;;;
1FAE7;BUBBLES;So;0;ON;;;;;N;;;;;
1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;;
+1FAE9;FACE WITH BAGS UNDER EYES;So;0;ON;;;;;N;;;;;
1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;;
1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;;
1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;;
@@ -34020,6 +39168,43 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FBC8;STICK FIGURE LEANING RIGHT;So;0;ON;;;;;N;;;;;
1FBC9;STICK FIGURE WITH DRESS;So;0;ON;;;;;N;;;;;
1FBCA;WHITE UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;
+1FBCB;WHITE CROSS MARK;So;0;ON;;;;;N;;;;;
+1FBCC;RAISED SMALL LEFT SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+1FBCD;BLACK SMALL UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;
+1FBCE;LEFT TWO THIRDS BLOCK;So;0;ON;;;;;N;;;;;
+1FBCF;LEFT ONE THIRD BLOCK;So;0;ON;;;;;N;;;;;
+1FBD0;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBD1;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT;So;0;ON;;;;;N;;;;;
+1FBD2;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+1FBD3;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD4;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+1FBD5;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD6;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+1FBD7;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBD8;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD9;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDA;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDB;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBDC;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDD;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDE;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDF;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBE0;TOP JUSTIFIED LOWER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE1;RIGHT JUSTIFIED LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE2;BOTTOM JUSTIFIED UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE3;LEFT JUSTIFIED RIGHT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE4;UPPER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE5;LOWER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE6;MIDDLE LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE7;MIDDLE RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE8;TOP JUSTIFIED LOWER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE9;RIGHT JUSTIFIED LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEA;BOTTOM JUSTIFIED UPPER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEB;LEFT JUSTIFIED RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEC;TOP RIGHT JUSTIFIED LOWER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBED;BOTTOM LEFT JUSTIFIED UPPER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEE;BOTTOM RIGHT JUSTIFIED UPPER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEF;TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
1FBF0;SEGMENTED DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;;
1FBF1;SEGMENTED DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;;
1FBF2;SEGMENTED DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;;
diff --git a/resources/standards-data/unicode-character-database/WordBreakProperty.txt b/resources/standards-data/unicode-character-database/WordBreakProperty.txt
new file mode 100644
index 0000000000..e557c3d0de
--- /dev/null
+++ b/resources/standards-data/unicode-character-database/WordBreakProperty.txt
@@ -0,0 +1,1516 @@
+# WordBreakProperty-16.0.0.txt
+# Date: 2024-07-29, 16:27:36 GMT
+# © 2024 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see https://www.unicode.org/reports/tr44/
+
+# ================================================
+
+# Property: Word_Break
+
+# All code points not explicitly listed for Word_Break
+# have the value Other (XX).
+
+# @missing: 0000..10FFFF; Other
+
+# ================================================
+
+0022 ; Double_Quote # Po QUOTATION MARK
+
+# Total code points: 1
+
+# ================================================
+
+0027 ; Single_Quote # Po APOSTROPHE
+
+# Total code points: 1
+
+# ================================================
+
+05D0..05EA ; Hebrew_Letter # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05EF..05F2 ; Hebrew_Letter # Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
+FB1D ; Hebrew_Letter # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; Hebrew_Letter # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB2A..FB36 ; Hebrew_Letter # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Hebrew_Letter # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Hebrew_Letter # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Hebrew_Letter # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Hebrew_Letter # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Hebrew_Letter # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+
+# Total code points: 75
+
+# ================================================
+
+000D ; CR # Cc
+
+# Total code points: 1
+
+# ================================================
+
+000A ; LF # Cc
+
+# Total code points: 1
+
+# ================================================
+
+000B..000C ; Newline # Cc [2] ..
+0085 ; Newline # Cc
+2028 ; Newline # Zl LINE SEPARATOR
+2029 ; Newline # Zp PARAGRAPH SEPARATOR
+
+# Total code points: 5
+
+# ================================================
+
+0300..036F ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0487 ; Extend # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0488..0489 ; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+0591..05BD ; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF ; Extend # Mn HEBREW POINT RAFE
+05C1..05C2 ; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5 ; Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7 ; Extend # Mn HEBREW POINT QAMATS QATAN
+0610..061A ; Extend # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+064B..065F ; Extend # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
+0670 ; Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC ; Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DF..06E4 ; Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8 ; Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED ; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711 ; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+07FD ; Extend # Mn NKO DANTAYALAN
+0816..0819 ; Extend # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
+081B..0823 ; Extend # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+0897..089F ; Extend # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
+08CA..08E1 ; Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
+08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+0903 ; Extend # Mc DEVANAGARI SIGN VISARGA
+093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE
+093B ; Extend # Mc DEVANAGARI VOWEL SIGN OOE
+093C ; Extend # Mn DEVANAGARI SIGN NUKTA
+093E..0940 ; Extend # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+0949..094C ; Extend # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+094D ; Extend # Mn DEVANAGARI SIGN VIRAMA
+094E..094F ; Extend # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+0951..0957 ; Extend # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+0962..0963 ; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981 ; Extend # Mn BENGALI SIGN CANDRABINDU
+0982..0983 ; Extend # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+09BC ; Extend # Mn BENGALI SIGN NUKTA
+09BE..09C0 ; Extend # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+09C1..09C4 ; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09C7..09C8 ; Extend # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; Extend # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09CD ; Extend # Mn BENGALI SIGN VIRAMA
+09D7 ; Extend # Mc BENGALI AU LENGTH MARK
+09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+09FE ; Extend # Mn BENGALI SANDHI MARK
+0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A03 ; Extend # Mc GURMUKHI SIGN VISARGA
+0A3C ; Extend # Mn GURMUKHI SIGN NUKTA
+0A3E..0A40 ; Extend # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A51 ; Extend # Mn GURMUKHI SIGN UDAAT
+0A70..0A71 ; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A75 ; Extend # Mn GURMUKHI SIGN YAKASH
+0A81..0A82 ; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0A83 ; Extend # Mc GUJARATI SIGN VISARGA
+0ABC ; Extend # Mn GUJARATI SIGN NUKTA
+0ABE..0AC0 ; Extend # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC1..0AC5 ; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0AC9 ; Extend # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; Extend # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0ACD ; Extend # Mn GUJARATI SIGN VIRAMA
+0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0AFA..0AFF ; Extend # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU
+0B02..0B03 ; Extend # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B3C ; Extend # Mn ORIYA SIGN NUKTA
+0B3E ; Extend # Mc ORIYA VOWEL SIGN AA
+0B3F ; Extend # Mn ORIYA VOWEL SIGN I
+0B40 ; Extend # Mc ORIYA VOWEL SIGN II
+0B41..0B44 ; Extend # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B47..0B48 ; Extend # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Extend # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B4D ; Extend # Mn ORIYA SIGN VIRAMA
+0B55..0B56 ; Extend # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+0B57 ; Extend # Mc ORIYA AU LENGTH MARK
+0B62..0B63 ; Extend # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B82 ; Extend # Mn TAMIL SIGN ANUSVARA
+0BBE..0BBF ; Extend # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+0BC0 ; Extend # Mn TAMIL VOWEL SIGN II
+0BC1..0BC2 ; Extend # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; Extend # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; Extend # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0BCD ; Extend # Mn TAMIL SIGN VIRAMA
+0BD7 ; Extend # Mc TAMIL AU LENGTH MARK
+0C00 ; Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
+0C01..0C03 ; Extend # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C04 ; Extend # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE
+0C3C ; Extend # Mn TELUGU SIGN NUKTA
+0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C41..0C44 ; Extend # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C62..0C63 ; Extend # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0C81 ; Extend # Mn KANNADA SIGN CANDRABINDU
+0C82..0C83 ; Extend # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0CBC ; Extend # Mn KANNADA SIGN NUKTA
+0CBE ; Extend # Mc KANNADA VOWEL SIGN AA
+0CBF ; Extend # Mn KANNADA VOWEL SIGN I
+0CC0..0CC4 ; Extend # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+0CC6 ; Extend # Mn KANNADA VOWEL SIGN E
+0CC7..0CC8 ; Extend # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Extend # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0CF3 ; Extend # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
+0D00..0D01 ; Extend # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+0D02..0D03 ; Extend # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D3B..0D3C ; Extend # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+0D3E..0D40 ; Extend # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+0D41..0D44 ; Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D46..0D48 ; Extend # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; Extend # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA
+0D57 ; Extend # Mc MALAYALAM AU LENGTH MARK
+0D62..0D63 ; Extend # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0D81 ; Extend # Mn SINHALA SIGN CANDRABINDU
+0D82..0D83 ; Extend # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0DCA ; Extend # Mn SINHALA SIGN AL-LAKUNA
+0DCF..0DD1 ; Extend # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2..0DD4 ; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8..0DDF ; Extend # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+0DF2..0DF3 ; Extend # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0E31 ; Extend # Mn THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN
+0EB4..0EBC ; Extend # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+0EC8..0ECE ; Extend # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN
+0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37 ; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39 ; Extend # Mn TIBETAN MARK TSA -PHRU
+0F3E..0F3F ; Extend # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F71..0F7E ; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F7F ; Extend # Mc TIBETAN SIGN RNAM BCAD
+0F80..0F84 ; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87 ; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F8D..0F97 ; Extend # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6 ; Extend # Mn TIBETAN SYMBOL PADMA GDAN
+102B..102C ; Extend # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+102D..1030 ; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1031 ; Extend # Mc MYANMAR VOWEL SIGN E
+1032..1037 ; Extend # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+1038 ; Extend # Mc MYANMAR SIGN VISARGA
+1039..103A ; Extend # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+103B..103C ; Extend # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+103D..103E ; Extend # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+1056..1057 ; Extend # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1058..1059 ; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105E..1060 ; Extend # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1062..1064 ; Extend # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+1067..106D ; Extend # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+1071..1074 ; Extend # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1082 ; Extend # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1083..1084 ; Extend # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+1085..1086 ; Extend # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+1087..108C ; Extend # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+108D ; Extend # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+108F ; Extend # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
+109A..109C ; Extend # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
+109D ; Extend # Mn MYANMAR VOWEL SIGN AITON AI
+135D..135F ; Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1715 ; Extend # Mc TAGALOG SIGN PAMUDPOD
+1732..1733 ; Extend # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+1734 ; Extend # Mc HANUNOO SIGN PAMUDPOD
+1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B4..17B5 ; Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B6 ; Extend # Mc KHMER VOWEL SIGN AA
+17B7..17BD ; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17BE..17C5 ; Extend # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C6 ; Extend # Mn KHMER SIGN NIKAHIT
+17C7..17C8 ; Extend # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD ; Extend # Mn KHMER SIGN ATTHACAN
+180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+180F ; Extend # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
+1885..1886 ; Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1923..1926 ; Extend # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1929..192B ; Extend # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; Extend # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA
+1933..1938 ; Extend # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1A19..1A1A ; Extend # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
+1A1B ; Extend # Mn BUGINESE VOWEL SIGN AE
+1A55 ; Extend # Mc TAI THAM CONSONANT SIGN MEDIAL RA
+1A56 ; Extend # Mn TAI THAM CONSONANT SIGN MEDIAL LA
+1A57 ; Extend # Mc TAI THAM CONSONANT SIGN LA TANG LAI
+1A58..1A5E ; Extend # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+1A60 ; Extend # Mn TAI THAM SIGN SAKOT
+1A61 ; Extend # Mc TAI THAM VOWEL SIGN A
+1A62 ; Extend # Mn TAI THAM VOWEL SIGN MAI SAT
+1A63..1A64 ; Extend # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
+1A65..1A6C ; Extend # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+1A6D..1A72 ; Extend # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
+1A73..1A7C ; Extend # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
+1A7F ; Extend # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
+1AB0..1ABD ; Extend # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+1ABE ; Extend # Me COMBINING PARENTHESES OVERLAY
+1ABF..1ACE ; Extend # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
+1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B04 ; Extend # Mc BALINESE SIGN BISAH
+1B34 ; Extend # Mn BALINESE SIGN REREKAN
+1B35 ; Extend # Mc BALINESE VOWEL SIGN TEDUNG
+1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3B ; Extend # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B3D..1B41 ; Extend # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET
+1B43..1B44 ; Extend # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1B80..1B81 ; Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1B82 ; Extend # Mc SUNDANESE SIGN PANGWISAD
+1BA1 ; Extend # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
+1BA2..1BA5 ; Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA6..1BA7 ; Extend # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+1BA8..1BA9 ; Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAA ; Extend # Mc SUNDANESE SIGN PAMAAEH
+1BAB..1BAD ; Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
+1BE6 ; Extend # Mn BATAK SIGN TOMPI
+1BE7 ; Extend # Mc BATAK VOWEL SIGN E
+1BE8..1BE9 ; Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+1BEA..1BEC ; Extend # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
+1BED ; Extend # Mn BATAK VOWEL SIGN KARO O
+1BEE ; Extend # Mc BATAK VOWEL SIGN U
+1BEF..1BF1 ; Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+1BF2..1BF3 ; Extend # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
+1C24..1C2B ; Extend # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+1C2C..1C33 ; Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C34..1C35 ; Extend # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+1C36..1C37 ; Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+1CD0..1CD2 ; Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+1CD4..1CE0 ; Extend # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+1CE1 ; Extend # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+1CE2..1CE8 ; Extend # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+1CED ; Extend # Mn VEDIC SIGN TIRYAK
+1CF4 ; Extend # Mn VEDIC TONE CANDRA ABOVE
+1CF7 ; Extend # Mc VEDIC SIGN ATIKRAMA
+1CF8..1CF9 ; Extend # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+1DC0..1DFF ; Extend # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C ; Extend # Cf ZERO WIDTH NON-JOINER
+20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20F0 ; Extend # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+2CEF..2CF1 ; Extend # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
+2D7F ; Extend # Mn TIFINAGH CONSONANT JOINER
+2DE0..2DFF ; Extend # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+302A..302D ; Extend # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+302E..302F ; Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A66F ; Extend # Mn COMBINING CYRILLIC VZMET
+A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A674..A67D ; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
+A69E..A69F ; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+A6F0..A6F1 ; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA
+A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA
+A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA
+A823..A824 ; Extend # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A827 ; Extend # Mc SYLOTI NAGRI VOWEL SIGN OO
+A82C ; Extend # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
+A880..A881 ; Extend # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+A8B4..A8C3 ; Extend # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A8C4..A8C5 ; Extend # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
+A8E0..A8F1 ; Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+A8FF ; Extend # Mn DEVANAGARI VOWEL SIGN AY
+A926..A92D ; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+A947..A951 ; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A952..A953 ; Extend # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+A980..A982 ; Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+A983 ; Extend # Mc JAVANESE SIGN WIGNYAN
+A9B3 ; Extend # Mn JAVANESE SIGN CECAK TELU
+A9B4..A9B5 ; Extend # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
+A9B6..A9B9 ; Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+A9BA..A9BB ; Extend # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
+A9BC..A9BD ; Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+A9BE..A9C0 ; Extend # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+A9E5 ; Extend # Mn MYANMAR SIGN SHAN SAW
+AA29..AA2E ; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA2F..AA30 ; Extend # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+AA31..AA32 ; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA33..AA34 ; Extend # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+AA35..AA36 ; Extend # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA43 ; Extend # Mn CHAM CONSONANT SIGN FINAL NG
+AA4C ; Extend # Mn CHAM CONSONANT SIGN FINAL M
+AA4D ; Extend # Mc CHAM CONSONANT SIGN FINAL H
+AA7B ; Extend # Mc MYANMAR SIGN PAO KAREN TONE
+AA7C ; Extend # Mn MYANMAR SIGN TAI LAING TONE-2
+AA7D ; Extend # Mc MYANMAR SIGN TAI LAING TONE-5
+AAB0 ; Extend # Mn TAI VIET MAI KANG
+AAB2..AAB4 ; Extend # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+AAB7..AAB8 ; Extend # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+AABE..AABF ; Extend # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
+AAC1 ; Extend # Mn TAI VIET TONE MAI THO
+AAEB ; Extend # Mc MEETEI MAYEK VOWEL SIGN II
+AAEC..AAED ; Extend # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+AAEE..AAEF ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
+AAF5 ; Extend # Mc MEETEI MAYEK VOWEL SIGN VISARGA
+AAF6 ; Extend # Mn MEETEI MAYEK VIRAMA
+ABE3..ABE4 ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
+ABE5 ; Extend # Mn MEETEI MAYEK VOWEL SIGN ANAP
+ABE6..ABE7 ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
+ABE8 ; Extend # Mn MEETEI MAYEK VOWEL SIGN UNAP
+ABE9..ABEA ; Extend # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
+ABEC ; Extend # Mc MEETEI MAYEK LUM IYEK
+ABED ; Extend # Mn MEETEI MAYEK APUN IYEK
+FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE2F ; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+102E0 ; Extend # Mn COPTIC EPACT THOUSANDS MARK
+10376..1037A ; Extend # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+10A01..10A03 ; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Extend # Mn KHAROSHTHI VIRAMA
+10AE5..10AE6 ; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D69..10D6D ; Extend # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10EAB..10EAC ; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+10EFC..10EFF ; Extend # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
+10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+10F82..10F85 ; Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+11000 ; Extend # Mc BRAHMI SIGN CANDRABINDU
+11001 ; Extend # Mn BRAHMI SIGN ANUSVARA
+11002 ; Extend # Mc BRAHMI SIGN VISARGA
+11038..11046 ; Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
+11070 ; Extend # Mn BRAHMI SIGN OLD TAMIL VIRAMA
+11073..11074 ; Extend # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+1107F..11081 ; Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+11082 ; Extend # Mc KAITHI SIGN VISARGA
+110B0..110B2 ; Extend # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
+110B3..110B6 ; Extend # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+110B7..110B8 ; Extend # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+110B9..110BA ; Extend # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+110C2 ; Extend # Mn KAITHI VOWEL SIGN VOCALIC R
+11100..11102 ; Extend # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+11127..1112B ; Extend # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+1112C ; Extend # Mc CHAKMA VOWEL SIGN E
+1112D..11134 ; Extend # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
+11145..11146 ; Extend # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+11173 ; Extend # Mn MAHAJANI SIGN NUKTA
+11180..11181 ; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+11182 ; Extend # Mc SHARADA SIGN VISARGA
+111B3..111B5 ; Extend # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
+111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+111BF..111C0 ; Extend # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+111C9..111CC ; Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+111CE ; Extend # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E
+111CF ; Extend # Mn SHARADA SIGN INVERTED CANDRABINDU
+1122C..1122E ; Extend # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
+1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+11232..11233 ; Extend # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
+11234 ; Extend # Mn KHOJKI SIGN ANUSVARA
+11235 ; Extend # Mc KHOJKI SIGN VIRAMA
+11236..11237 ; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E ; Extend # Mn KHOJKI SIGN SUKUN
+11241 ; Extend # Mn KHOJKI VOWEL SIGN VOCALIC R
+112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA
+112E0..112E2 ; Extend # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
+112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+11302..11303 ; Extend # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
+1133B..1133C ; Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+1133E..1133F ; Extend # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
+11340 ; Extend # Mn GRANTHA VOWEL SIGN II
+11341..11344 ; Extend # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
+11347..11348 ; Extend # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+1134B..1134D ; Extend # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+11357 ; Extend # Mc GRANTHA AU LENGTH MARK
+11362..11363 ; Extend # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11366..1136C ; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
+11370..11374 ; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+113B8..113BA ; Extend # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; Extend # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; Extend # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Extend # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; Extend # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; Extend # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; Extend # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; Extend # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; Extend # Mn TULU-TIGALARI CONJOINER
+113D2 ; Extend # Mn TULU-TIGALARI GEMINATION MARK
+113E1..113E2 ; Extend # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
+11435..11437 ; Extend # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F ; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441 ; Extend # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444 ; Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445 ; Extend # Mc NEWA SIGN VISARGA
+11446 ; Extend # Mn NEWA SIGN NUKTA
+1145E ; Extend # Mn NEWA SANDHI MARK
+114B0..114B2 ; Extend # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
+114B3..114B8 ; Extend # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+114B9 ; Extend # Mc TIRHUTA VOWEL SIGN E
+114BA ; Extend # Mn TIRHUTA VOWEL SIGN SHORT E
+114BB..114BE ; Extend # Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU
+114BF..114C0 ; Extend # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+114C1 ; Extend # Mc TIRHUTA SIGN VISARGA
+114C2..114C3 ; Extend # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+115AF..115B1 ; Extend # Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II
+115B2..115B5 ; Extend # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+115B8..115BB ; Extend # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
+115BC..115BD ; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+115BE ; Extend # Mc SIDDHAM SIGN VISARGA
+115BF..115C0 ; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+115DC..115DD ; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+11630..11632 ; Extend # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
+11633..1163A ; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+1163B..1163C ; Extend # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
+1163D ; Extend # Mn MODI SIGN ANUSVARA
+1163E ; Extend # Mc MODI SIGN VISARGA
+1163F..11640 ; Extend # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+116AB ; Extend # Mn TAKRI SIGN ANUSVARA
+116AC ; Extend # Mc TAKRI SIGN VISARGA
+116AD ; Extend # Mn TAKRI VOWEL SIGN AA
+116AE..116AF ; Extend # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
+116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+116B6 ; Extend # Mc TAKRI SIGN VIRAMA
+116B7 ; Extend # Mn TAKRI SIGN NUKTA
+1171D ; Extend # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; Extend # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; Extend # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
+11720..11721 ; Extend # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
+11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+11726 ; Extend # Mc AHOM VOWEL SIGN E
+11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+1182C..1182E ; Extend # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+1182F..11837 ; Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11838 ; Extend # Mc DOGRA SIGN VISARGA
+11839..1183A ; Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+11930..11935 ; Extend # Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E
+11937..11938 ; Extend # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+1193B..1193C ; Extend # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+1193D ; Extend # Mc DIVES AKURU SIGN HALANTA
+1193E ; Extend # Mn DIVES AKURU VIRAMA
+11940 ; Extend # Mc DIVES AKURU MEDIAL YA
+11942 ; Extend # Mc DIVES AKURU MEDIAL RA
+11943 ; Extend # Mn DIVES AKURU SIGN NUKTA
+119D1..119D3 ; Extend # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
+119D4..119D7 ; Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+119DA..119DB ; Extend # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+119DC..119DF ; Extend # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
+119E0 ; Extend # Mn NANDINAGARI SIGN VIRAMA
+119E4 ; Extend # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+11A01..11A0A ; Extend # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+11A33..11A38 ; Extend # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+11A39 ; Extend # Mc ZANABAZAR SQUARE SIGN VISARGA
+11A3B..11A3E ; Extend # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+11A47 ; Extend # Mn ZANABAZAR SQUARE SUBJOINER
+11A51..11A56 ; Extend # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+11A57..11A58 ; Extend # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
+11A59..11A5B ; Extend # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+11A8A..11A96 ; Extend # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+11A97 ; Extend # Mc SOYOMBO SIGN VISARGA
+11A98..11A99 ; Extend # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+11C2F ; Extend # Mc BHAIKSUKI VOWEL SIGN AA
+11C30..11C36 ; Extend # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D ; Extend # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E ; Extend # Mc BHAIKSUKI SIGN VISARGA
+11C3F ; Extend # Mn BHAIKSUKI SIGN VIRAMA
+11C92..11CA7 ; Extend # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9 ; Extend # Mc MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0 ; Extend # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1 ; Extend # Mc MARCHEN VOWEL SIGN I
+11CB2..11CB3 ; Extend # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4 ; Extend # Mc MARCHEN VOWEL SIGN O
+11CB5..11CB6 ; Extend # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+11D31..11D36 ; Extend # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+11D3A ; Extend # Mn MASARAM GONDI VOWEL SIGN E
+11D3C..11D3D ; Extend # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+11D3F..11D45 ; Extend # Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+11D47 ; Extend # Mn MASARAM GONDI RA-KARA
+11D8A..11D8E ; Extend # Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+11D90..11D91 ; Extend # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D93..11D94 ; Extend # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+11D95 ; Extend # Mn GUNJALA GONDI SIGN ANUSVARA
+11D96 ; Extend # Mc GUNJALA GONDI SIGN VISARGA
+11D97 ; Extend # Mn GUNJALA GONDI VIRAMA
+11EF3..11EF4 ; Extend # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+11EF5..11EF6 ; Extend # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+11F00..11F01 ; Extend # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+11F03 ; Extend # Mc KAWI SIGN VISARGA
+11F34..11F35 ; Extend # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+11F36..11F3A ; Extend # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+11F3E..11F3F ; Extend # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+11F40 ; Extend # Mn KAWI VOWEL SIGN EU
+11F41 ; Extend # Mc KAWI SIGN KILLER
+11F42 ; Extend # Mn KAWI CONJOINER
+11F5A ; Extend # Mn KAWI SIGN NUKTA
+13440 ; Extend # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+13447..13455 ; Extend # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1611E..16129 ; Extend # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; Extend # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; Extend # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
+16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
+16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+16F4F ; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR
+16F51..16F87 ; Extend # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
+16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
+16FE4 ; Extend # Mn KHITAN SMALL SCRIPT FILLER
+16FF0..16FF1 ; Extend # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+1BC9D..1BC9E ; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+1CF00..1CF2D ; Extend # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+1CF30..1CF46 ; Extend # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+1D165..1D166 ; Extend # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16D..1D172 ; Extend # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
+1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+1DA00..1DA36 ; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+1DA3B..1DA6C ; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+1DA75 ; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK
+1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018 ; Extend # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024 ; Extend # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A ; Extend # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+1E08F ; Extend # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+1E130..1E136 ; Extend # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+1E2AE ; Extend # Mn TOTO SIGN RISING TONE
+1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
+1E4EC..1E4EF ; Extend # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E5EE..1E5EF ; Extend # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
+1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1F3FB..1F3FF ; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG
+E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 2605
+
+# ================================================
+
+1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
+
+# Total code points: 26
+
+# ================================================
+
+00AD ; Format # Cf SOFT HYPHEN
+061C ; Format # Cf ARABIC LETTER MARK
+180E ; Format # Cf MONGOLIAN VOWEL SEPARATOR
+200E..200F ; Format # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+202A..202E ; Format # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2064 ; Format # Cf [5] WORD JOINER..INVISIBLE PLUS
+2066..206F ; Format # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+FEFF ; Format # Cf ZERO WIDTH NO-BREAK SPACE
+FFF9..FFFB ; Format # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+13430..1343F ; Format # Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE
+1BCA0..1BCA3 ; Format # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1D173..1D17A ; Format # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0001 ; Format # Cf LANGUAGE TAG
+
+# Total code points: 58
+
+# ================================================
+
+3031..3035 ; Katakana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+309B..309C ; Katakana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+30A0 ; Katakana # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
+30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FC..30FE ; Katakana # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO
+31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+32D0..32FE ; Katakana # So [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO
+3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO
+FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; Katakana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+1AFF0..1AFF3 ; Katakana # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+1AFF5..1AFFB ; Katakana # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+1AFFD..1AFFE ; Katakana # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+1B000 ; Katakana # Lo KATAKANA LETTER ARCHAIC E
+1B120..1B122 ; Katakana # Lo [3] KATAKANA LETTER ARCHAIC YI..KATAKANA LETTER ARCHAIC WU
+1B155 ; Katakana # Lo KATAKANA LETTER SMALL KO
+1B164..1B167 ; Katakana # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
+
+# Total code points: 331
+
+# ================================================
+
+0041..005A ; ALetter # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+0061..007A ; ALetter # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA ; ALetter # Lo FEMININE ORDINAL INDICATOR
+00B5 ; ALetter # L& MICRO SIGN
+00BA ; ALetter # Lo MASCULINE ORDINAL INDICATOR
+00C0..00D6 ; ALetter # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00F6 ; ALetter # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..01BA ; ALetter # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+01BB ; ALetter # Lo LATIN LETTER TWO WITH STROKE
+01BC..01BF ; ALetter # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+01C0..01C3 ; ALetter # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+01C4..0293 ; ALetter # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+0294 ; ALetter # Lo LATIN LETTER GLOTTAL STOP
+0295..02AF ; ALetter # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0..02C1 ; ALetter # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2..02C5 ; ALetter # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+02C6..02D1 ; ALetter # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02D2..02D7 ; ALetter # Sk [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN
+02DE..02DF ; ALetter # Sk [2] MODIFIER LETTER RHOTIC HOOK..MODIFIER LETTER CROSS ACCENT
+02E0..02E4 ; ALetter # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02E5..02EB ; ALetter # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC ; ALetter # Lm MODIFIER LETTER VOICING
+02ED ; ALetter # Sk MODIFIER LETTER UNASPIRATED
+02EE ; ALetter # Lm MODIFIER LETTER DOUBLE APOSTROPHE
+02EF..02FF ; ALetter # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+0370..0373 ; ALetter # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+0374 ; ALetter # Lm GREEK NUMERAL SIGN
+0376..0377 ; ALetter # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+037A ; ALetter # Lm GREEK YPOGEGRAMMENI
+037B..037D ; ALetter # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+037F ; ALetter # L& GREEK CAPITAL LETTER YOT
+0386 ; ALetter # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; ALetter # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; ALetter # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..03A1 ; ALetter # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+03A3..03F5 ; ALetter # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+03F7..0481 ; ALetter # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+048A..052F ; ALetter # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+0531..0556 ; ALetter # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+0559 ; ALetter # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A..055C ; ALetter # Po [3] ARMENIAN APOSTROPHE..ARMENIAN EXCLAMATION MARK
+055E ; ALetter # Po ARMENIAN QUESTION MARK
+0560..0588 ; ALetter # L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+058A ; ALetter # Pd ARMENIAN HYPHEN
+05F3 ; ALetter # Po HEBREW PUNCTUATION GERESH
+0620..063F ; ALetter # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+0640 ; ALetter # Lm ARABIC TATWEEL
+0641..064A ; ALetter # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+066E..066F ; ALetter # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3 ; ALetter # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D5 ; ALetter # Lo ARABIC LETTER AE
+06E5..06E6 ; ALetter # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+06EE..06EF ; ALetter # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06FA..06FC ; ALetter # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FF ; ALetter # Lo ARABIC LETTER HEH WITH INVERTED V
+070F ; ALetter # Cf SYRIAC ABBREVIATION MARK
+0710 ; ALetter # Lo SYRIAC LETTER ALAPH
+0712..072F ; ALetter # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+074D..07A5 ; ALetter # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+07B1 ; ALetter # Lo THAANA LETTER NAA
+07CA..07EA ; ALetter # Lo [33] NKO LETTER A..NKO LETTER JONA RA
+07F4..07F5 ; ALetter # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07FA ; ALetter # Lm NKO LAJANYALAN
+0800..0815 ; ALetter # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+081A ; ALetter # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+0824 ; ALetter # Lm SAMARITAN MODIFIER LETTER SHORT A
+0828 ; ALetter # Lm SAMARITAN MODIFIER LETTER I
+0840..0858 ; ALetter # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+0860..086A ; ALetter # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
+0870..0887 ; ALetter # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
+0889..088E ; ALetter # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+08A0..08C8 ; ALetter # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
+08C9 ; ALetter # Lm ARABIC SMALL FARSI YEH
+0904..0939 ; ALetter # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093D ; ALetter # Lo DEVANAGARI SIGN AVAGRAHA
+0950 ; ALetter # Lo DEVANAGARI OM
+0958..0961 ; ALetter # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+0971 ; ALetter # Lm DEVANAGARI SIGN HIGH SPACING DOT
+0972..0980 ; ALetter # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
+0985..098C ; ALetter # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; ALetter # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; ALetter # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; ALetter # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; ALetter # Lo BENGALI LETTER LA
+09B6..09B9 ; ALetter # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BD ; ALetter # Lo BENGALI SIGN AVAGRAHA
+09CE ; ALetter # Lo BENGALI LETTER KHANDA TA
+09DC..09DD ; ALetter # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; ALetter # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09F0..09F1 ; ALetter # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+09FC ; ALetter # Lo BENGALI LETTER VEDIC ANUSVARA
+0A05..0A0A ; ALetter # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; ALetter # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; ALetter # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; ALetter # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; ALetter # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; ALetter # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; ALetter # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A59..0A5C ; ALetter # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; ALetter # Lo GURMUKHI LETTER FA
+0A72..0A74 ; ALetter # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+0A85..0A8D ; ALetter # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; ALetter # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; ALetter # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; ALetter # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; ALetter # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; ALetter # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABD ; ALetter # Lo GUJARATI SIGN AVAGRAHA
+0AD0 ; ALetter # Lo GUJARATI OM
+0AE0..0AE1 ; ALetter # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0AF9 ; ALetter # Lo GUJARATI LETTER ZHA
+0B05..0B0C ; ALetter # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; ALetter # Lo [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; ALetter # Lo [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; ALetter # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; ALetter # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39 ; ALetter # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3D ; ALetter # Lo ORIYA SIGN AVAGRAHA
+0B5C..0B5D ; ALetter # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; ALetter # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B71 ; ALetter # Lo ORIYA LETTER WA
+0B83 ; ALetter # Lo TAMIL SIGN VISARGA
+0B85..0B8A ; ALetter # Lo [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; ALetter # Lo [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; ALetter # Lo [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; ALetter # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; ALetter # Lo TAMIL LETTER JA
+0B9E..0B9F ; ALetter # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; ALetter # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; ALetter # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9 ; ALetter # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA
+0BD0 ; ALetter # Lo TAMIL OM
+0C05..0C0C ; ALetter # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; ALetter # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; ALetter # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C39 ; ALetter # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA
+0C3D ; ALetter # Lo TELUGU SIGN AVAGRAHA
+0C58..0C5A ; ALetter # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+0C5D ; ALetter # Lo TELUGU LETTER NAKAARA POLLU
+0C60..0C61 ; ALetter # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C80 ; ALetter # Lo KANNADA SIGN SPACING CANDRABINDU
+0C85..0C8C ; ALetter # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; ALetter # Lo [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; ALetter # Lo [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; ALetter # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; ALetter # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBD ; ALetter # Lo KANNADA SIGN AVAGRAHA
+0CDD..0CDE ; ALetter # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
+0CE0..0CE1 ; ALetter # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0CF1..0CF2 ; ALetter # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+0D04..0D0C ; ALetter # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; ALetter # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D3A ; ALetter # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
+0D3D ; ALetter # Lo MALAYALAM SIGN AVAGRAHA
+0D4E ; ALetter # Lo MALAYALAM LETTER DOT REPH
+0D54..0D56 ; ALetter # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+0D5F..0D61 ; ALetter # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
+0D7A..0D7F ; ALetter # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+0D85..0D96 ; ALetter # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; ALetter # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; ALetter # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; ALetter # Lo SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; ALetter # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0F00 ; ALetter # Lo TIBETAN SYLLABLE OM
+0F40..0F47 ; ALetter # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6C ; ALetter # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+0F88..0F8C ; ALetter # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
+10A0..10C5 ; ALetter # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+10C7 ; ALetter # L& GEORGIAN CAPITAL LETTER YN
+10CD ; ALetter # L& GEORGIAN CAPITAL LETTER AEN
+10D0..10FA ; ALetter # L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10FC ; ALetter # Lm MODIFIER LETTER GEORGIAN NAR
+10FD..10FF ; ALetter # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+1100..1248 ; ALetter # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA
+124A..124D ; ALetter # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; ALetter # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; ALetter # Lo ETHIOPIC SYLLABLE QHWA
+125A..125D ; ALetter # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288 ; ALetter # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D ; ALetter # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0 ; ALetter # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; ALetter # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; ALetter # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; ALetter # Lo ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; ALetter # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6 ; ALetter # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310 ; ALetter # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315 ; ALetter # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A ; ALetter # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+1380..138F ; ALetter # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+13A0..13F5 ; ALetter # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+13F8..13FD ; ALetter # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1401..166C ; ALetter # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166F..167F ; ALetter # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
+1681..169A ; ALetter # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+16A0..16EA ; ALetter # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+16EE..16F0 ; ALetter # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+16F1..16F8 ; ALetter # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
+1700..1711 ; ALetter # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA
+171F..1731 ; ALetter # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
+1740..1751 ; ALetter # Lo [18] BUHID LETTER A..BUHID LETTER HA
+1760..176C ; ALetter # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; ALetter # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1820..1842 ; ALetter # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1843 ; ALetter # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844..1878 ; ALetter # Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
+1880..1884 ; ALetter # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1887..18A8 ; ALetter # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
+18AA ; ALetter # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA
+18B0..18F5 ; ALetter # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
+1900..191E ; ALetter # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
+1A00..1A16 ; ALetter # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1B05..1B33 ; ALetter # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B45..1B4C ; ALetter # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+1B83..1BA0 ; ALetter # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+1BAE..1BAF ; ALetter # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+1BBA..1BE5 ; ALetter # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U
+1C00..1C23 ; ALetter # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A
+1C4D..1C4F ; ALetter # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+1C5A..1C77 ; ALetter # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+1C78..1C7D ; ALetter # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C8A ; ALetter # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
+1C90..1CBA ; ALetter # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+1CBD..1CBF ; ALetter # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+1CE9..1CEC ; ALetter # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+1CEE..1CF3 ; ALetter # Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
+1CF5..1CF6 ; ALetter # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+1CFA ; ALetter # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+1D00..1D2B ; ALetter # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+1D2C..1D6A ; ALetter # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+1D6B..1D77 ; ALetter # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+1D78 ; ALetter # Lm MODIFIER LETTER CYRILLIC EN
+1D79..1D9A ; ALetter # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1D9B..1DBF ; ALetter # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E00..1F15 ; ALetter # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; ALetter # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; ALetter # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; ALetter # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; ALetter # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; ALetter # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; ALetter # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; ALetter # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBE ; ALetter # L& GREEK PROSGEGRAMMENI
+1FC2..1FC4 ; ALetter # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; ALetter # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FD0..1FD3 ; ALetter # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; ALetter # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE0..1FEC ; ALetter # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FF2..1FF4 ; ALetter # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; ALetter # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+2071 ; ALetter # Lm SUPERSCRIPT LATIN SMALL LETTER I
+207F ; ALetter # Lm SUPERSCRIPT LATIN SMALL LETTER N
+2090..209C ; ALetter # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+2102 ; ALetter # L& DOUBLE-STRUCK CAPITAL C
+2107 ; ALetter # L& EULER CONSTANT
+210A..2113 ; ALetter # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; ALetter # L& DOUBLE-STRUCK CAPITAL N
+2119..211D ; ALetter # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2124 ; ALetter # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; ALetter # L& OHM SIGN
+2128 ; ALetter # L& BLACK-LETTER CAPITAL Z
+212A..212D ; ALetter # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2134 ; ALetter # L& [6] SCRIPT SMALL E..SCRIPT SMALL O
+2135..2138 ; ALetter # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; ALetter # L& INFORMATION SOURCE
+213C..213F ; ALetter # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2145..2149 ; ALetter # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+214E ; ALetter # L& TURNED SMALL F
+2160..2182 ; ALetter # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+2183..2184 ; ALetter # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+2185..2188 ; ALetter # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+24B6..24E9 ; ALetter # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
+2C00..2C7B ; ALetter # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+2C7C..2C7D ; ALetter # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+2C7E..2CE4 ; ALetter # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+2CEB..2CEE ; ALetter # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+2CF2..2CF3 ; ALetter # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+2D00..2D25 ; ALetter # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+2D27 ; ALetter # L& GEORGIAN SMALL LETTER YN
+2D2D ; ALetter # L& GEORGIAN SMALL LETTER AEN
+2D30..2D67 ; ALetter # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
+2D6F ; ALetter # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2D80..2D96 ; ALetter # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; ALetter # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; ALetter # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+2E2F ; ALetter # Lm VERTICAL TILDE
+3005 ; ALetter # Lm IDEOGRAPHIC ITERATION MARK
+303B ; ALetter # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
+303C ; ALetter # Lo MASU MARK
+3105..312F ; ALetter # Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
+3131..318E ; ALetter # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+31A0..31BF ; ALetter # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
+A000..A014 ; ALetter # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
+A015 ; ALetter # Lm YI SYLLABLE WU
+A016..A48C ; ALetter # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A4D0..A4F7 ; ALetter # Lo [40] LISU LETTER BA..LISU LETTER OE
+A4F8..A4FD ; ALetter # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+A500..A60B ; ALetter # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+A60C ; ALetter # Lm VAI SYLLABLE LENGTHENER
+A610..A61F ; ALetter # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+A62A..A62B ; ALetter # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+A640..A66D ; ALetter # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+A66E ; ALetter # Lo CYRILLIC LETTER MULTIOCULAR O
+A67F ; ALetter # Lm CYRILLIC PAYEROK
+A680..A69B ; ALetter # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+A69C..A69D ; ALetter # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+A6A0..A6E5 ; ALetter # Lo [70] BAMUM LETTER A..BAMUM LETTER KI
+A6E6..A6EF ; ALetter # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
+A708..A716 ; ALetter # Sk [15] MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A717..A71F ; ALetter # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+A720..A721 ; ALetter # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+A722..A76F ; ALetter # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+A770 ; ALetter # Lm MODIFIER LETTER US
+A771..A787 ; ALetter # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+A788 ; ALetter # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+A789..A78A ; ALetter # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
+A78B..A78E ; ALetter # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+A78F ; ALetter # Lo LATIN LETTER SINOLOGICAL DOT
+A790..A7CD ; ALetter # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
+A7D0..A7D1 ; ALetter # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+A7D3 ; ALetter # L& LATIN SMALL LETTER DOUBLE THORN
+A7D5..A7DC ; ALetter # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
+A7F2..A7F4 ; ALetter # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+A7F5..A7F6 ; ALetter # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+A7F7 ; ALetter # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
+A7F8..A7F9 ; ALetter # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+A7FA ; ALetter # L& LATIN LETTER SMALL CAPITAL TURNED M
+A7FB..A801 ; ALetter # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+A803..A805 ; ALetter # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A807..A80A ; ALetter # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80C..A822 ; ALetter # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A840..A873 ; ALetter # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+A882..A8B3 ; ALetter # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+A8F2..A8F7 ; ALetter # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+A8FB ; ALetter # Lo DEVANAGARI HEADSTROKE
+A8FD..A8FE ; ALetter # Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+A90A..A925 ; ALetter # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+A930..A946 ; ALetter # Lo [23] REJANG LETTER KA..REJANG LETTER A
+A960..A97C ; ALetter # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+A984..A9B2 ; ALetter # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA
+A9CF ; ALetter # Lm JAVANESE PANGRANGKEP
+AA00..AA28 ; ALetter # Lo [41] CHAM LETTER A..CHAM LETTER HA
+AA40..AA42 ; ALetter # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+AA44..AA4B ; ALetter # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+AAE0..AAEA ; ALetter # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
+AAF2 ; ALetter # Lo MEETEI MAYEK ANJI
+AAF3..AAF4 ; ALetter # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+AB01..AB06 ; ALetter # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
+AB09..AB0E ; ALetter # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
+AB11..AB16 ; ALetter # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
+AB20..AB26 ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
+AB28..AB2E ; ALetter # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
+AB30..AB5A ; ALetter # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+AB5B ; ALetter # Sk MODIFIER BREVE WITH INVERTED BREVE
+AB5C..AB5F ; ALetter # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+AB60..AB68 ; ALetter # L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+AB69 ; ALetter # Lm MODIFIER LETTER SMALL TURNED W
+AB70..ABBF ; ALetter # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ABC0..ABE2 ; ALetter # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
+AC00..D7A3 ; ALetter # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+D7B0..D7C6 ; ALetter # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+D7CB..D7FB ; ALetter # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+FB00..FB06 ; ALetter # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; ALetter # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB50..FBB1 ; ALetter # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; ALetter # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; ALetter # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; ALetter # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; ALetter # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FE70..FE74 ; ALetter # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; ALetter # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF21..FF3A ; ALetter # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF41..FF5A ; ALetter # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FFA0..FFBE ; ALetter # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+10000..1000B ; ALetter # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; ALetter # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; ALetter # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; ALetter # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; ALetter # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; ALetter # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; ALetter # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+10140..10174 ; ALetter # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10280..1029C ; ALetter # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X
+102A0..102D0 ; ALetter # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3
+10300..1031F ; ALetter # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
+1032D..10340 ; ALetter # Lo [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA
+10341 ; ALetter # Nl GOTHIC LETTER NINETY
+10342..10349 ; ALetter # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+1034A ; ALetter # Nl GOTHIC LETTER NINE HUNDRED
+10350..10375 ; ALetter # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
+10380..1039D ; ALetter # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+103A0..103C3 ; ALetter # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF ; ALetter # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+103D1..103D5 ; ALetter # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+10400..1044F ; ALetter # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+10450..1049D ; ALetter # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+104B0..104D3 ; ALetter # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB ; ALetter # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+10500..10527 ; ALetter # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE
+10530..10563 ; ALetter # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
+10570..1057A ; ALetter # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+1057C..1058A ; ALetter # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+1058C..10592 ; ALetter # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+10594..10595 ; ALetter # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+10597..105A1 ; ALetter # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+105A3..105B1 ; ALetter # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+105B3..105B9 ; ALetter # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+105BB..105BC ; ALetter # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; ALetter # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
+10600..10736 ; ALetter # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
+10740..10755 ; ALetter # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
+10760..10767 ; ALetter # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+10780..10785 ; ALetter # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+10787..107B0 ; ALetter # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+107B2..107BA ; ALetter # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+10800..10805 ; ALetter # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; ALetter # Lo CYPRIOT SYLLABLE JO
+1080A..10835 ; ALetter # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; ALetter # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; ALetter # Lo CYPRIOT SYLLABLE ZA
+1083F..10855 ; ALetter # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
+10860..10876 ; ALetter # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
+10880..1089E ; ALetter # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
+108E0..108F2 ; ALetter # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
+108F4..108F5 ; ALetter # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
+10900..10915 ; ALetter # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10920..10939 ; ALetter # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C
+10980..109B7 ; ALetter # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
+109BE..109BF ; ALetter # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
+10A00 ; ALetter # Lo KHAROSHTHI LETTER A
+10A10..10A13 ; ALetter # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17 ; ALetter # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A35 ; ALetter # Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
+10A60..10A7C ; ALetter # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
+10A80..10A9C ; ALetter # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
+10AC0..10AC7 ; ALetter # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
+10AC9..10AE4 ; ALetter # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
+10B00..10B35 ; ALetter # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE
+10B40..10B55 ; ALetter # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
+10B60..10B72 ; ALetter # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
+10B80..10B91 ; ALetter # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
+10C00..10C48 ; ALetter # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
+10C80..10CB2 ; ALetter # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+10CC0..10CF2 ; ALetter # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+10D00..10D23 ; ALetter # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+10D4A..10D4D ; ALetter # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; ALetter # Lm GARAY VOWEL LENGTH MARK
+10D4F ; ALetter # Lo GARAY SUKUN
+10D50..10D65 ; ALetter # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D6F ; ALetter # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; ALetter # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
+10E80..10EA9 ; ALetter # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+10EB0..10EB1 ; ALetter # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EC2..10EC4 ; ALetter # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10F00..10F1C ; ALetter # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+10F27 ; ALetter # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
+10F30..10F45 ; ALetter # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+10F70..10F81 ; ALetter # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+10FB0..10FC4 ; ALetter # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+10FE0..10FF6 ; ALetter # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
+11003..11037 ; ALetter # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
+11071..11072 ; ALetter # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+11075 ; ALetter # Lo BRAHMI LETTER OLD TAMIL LLA
+11083..110AF ; ALetter # Lo [45] KAITHI LETTER A..KAITHI LETTER HA
+110D0..110E8 ; ALetter # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
+11103..11126 ; ALetter # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
+11144 ; ALetter # Lo CHAKMA LETTER LHAA
+11147 ; ALetter # Lo CHAKMA LETTER VAA
+11150..11172 ; ALetter # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
+11176 ; ALetter # Lo MAHAJANI LIGATURE SHRI
+11183..111B2 ; ALetter # Lo [48] SHARADA LETTER A..SHARADA LETTER HA
+111C1..111C4 ; ALetter # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM
+111DA ; ALetter # Lo SHARADA EKAM
+111DC ; ALetter # Lo SHARADA HEADSTROKE
+11200..11211 ; ALetter # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA
+11213..1122B ; ALetter # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
+1123F..11240 ; ALetter # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+11280..11286 ; ALetter # Lo [7] MULTANI LETTER A..MULTANI LETTER GA
+11288 ; ALetter # Lo MULTANI LETTER GHA
+1128A..1128D ; ALetter # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA
+1128F..1129D ; ALetter # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA
+1129F..112A8 ; ALetter # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA
+112B0..112DE ; ALetter # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
+11305..1130C ; ALetter # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
+1130F..11310 ; ALetter # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI
+11313..11328 ; ALetter # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA
+1132A..11330 ; ALetter # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA
+11332..11333 ; ALetter # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
+11335..11339 ; ALetter # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+1133D ; ALetter # Lo GRANTHA SIGN AVAGRAHA
+11350 ; ALetter # Lo GRANTHA OM
+1135D..11361 ; ALetter # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11380..11389 ; ALetter # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; ALetter # Lo TULU-TIGALARI LETTER EE
+1138E ; ALetter # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; ALetter # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; ALetter # Lo TULU-TIGALARI SIGN AVAGRAHA
+113D1 ; ALetter # Lo TULU-TIGALARI REPHA
+113D3 ; ALetter # Lo TULU-TIGALARI SIGN PLUTA
+11400..11434 ; ALetter # Lo [53] NEWA LETTER A..NEWA LETTER HA
+11447..1144A ; ALetter # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1145F..11461 ; ALetter # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
+11480..114AF ; ALetter # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA
+114C4..114C5 ; ALetter # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
+114C7 ; ALetter # Lo TIRHUTA OM
+11580..115AE ; ALetter # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
+115D8..115DB ; ALetter # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
+11600..1162F ; ALetter # Lo [48] MODI LETTER A..MODI LETTER LLA
+11644 ; ALetter # Lo MODI SIGN HUVA
+11680..116AA ; ALetter # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA
+116B8 ; ALetter # Lo TAKRI LETTER ARCHAIC KHA
+11800..1182B ; ALetter # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA
+118A0..118DF ; ALetter # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+118FF..11906 ; ALetter # Lo [8] WARANG CITI OM..DIVES AKURU LETTER E
+11909 ; ALetter # Lo DIVES AKURU LETTER O
+1190C..11913 ; ALetter # Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+11915..11916 ; ALetter # Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+11918..1192F ; ALetter # Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+1193F ; ALetter # Lo DIVES AKURU PREFIXED NASAL SIGN
+11941 ; ALetter # Lo DIVES AKURU INITIAL RA
+119A0..119A7 ; ALetter # Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
+119AA..119D0 ; ALetter # Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
+119E1 ; ALetter # Lo NANDINAGARI SIGN AVAGRAHA
+119E3 ; ALetter # Lo NANDINAGARI HEADSTROKE
+11A00 ; ALetter # Lo ZANABAZAR SQUARE LETTER A
+11A0B..11A32 ; ALetter # Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
+11A3A ; ALetter # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+11A50 ; ALetter # Lo SOYOMBO LETTER A
+11A5C..11A89 ; ALetter # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
+11A9D ; ALetter # Lo SOYOMBO MARK PLUTA
+11AB0..11AF8 ; ALetter # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+11BC0..11BE0 ; ALetter # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11C00..11C08 ; ALetter # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E ; ALetter # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C40 ; ALetter # Lo BHAIKSUKI SIGN AVAGRAHA
+11C72..11C8F ; ALetter # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11D00..11D06 ; ALetter # Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
+11D08..11D09 ; ALetter # Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
+11D0B..11D30 ; ALetter # Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA
+11D46 ; ALetter # Lo MASARAM GONDI REPHA
+11D60..11D65 ; ALetter # Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+11D67..11D68 ; ALetter # Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+11D6A..11D89 ; ALetter # Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+11D98 ; ALetter # Lo GUNJALA GONDI OM
+11EE0..11EF2 ; ALetter # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA
+11F02 ; ALetter # Lo KAWI SIGN REPHA
+11F04..11F10 ; ALetter # Lo [13] KAWI LETTER A..KAWI LETTER O
+11F12..11F33 ; ALetter # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA
+11FB0 ; ALetter # Lo LISU LETTER YHA
+12000..12399 ; ALetter # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
+12400..1246E ; ALetter # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+12480..12543 ; ALetter # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+12F90..12FF0 ; ALetter # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
+13000..1342F ; ALetter # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
+13441..13446 ; ALetter # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+13460..143FA ; ALetter # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
+14400..14646 ; ALetter # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; ALetter # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+16800..16A38 ; ALetter # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
+16A40..16A5E ; ALetter # Lo [31] MRO LETTER TA..MRO LETTER TEK
+16A70..16ABE ; ALetter # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+16AD0..16AED ; ALetter # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
+16B00..16B2F ; ALetter # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
+16B40..16B43 ; ALetter # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+16B63..16B77 ; ALetter # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
+16B7D..16B8F ; ALetter # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; ALetter # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; ALetter # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; ALetter # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16E40..16E7F ; ALetter # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+16F00..16F4A ; ALetter # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
+16F50 ; ALetter # Lo MIAO LETTER NASALIZATION
+16F93..16F9F ; ALetter # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0..16FE1 ; ALetter # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+16FE3 ; ALetter # Lm OLD CHINESE ITERATION MARK
+1BC00..1BC6A ; ALetter # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
+1BC70..1BC7C ; ALetter # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+1BC80..1BC88 ; ALetter # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
+1BC90..1BC99 ; ALetter # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
+1D400..1D454 ; ALetter # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; ALetter # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; ALetter # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; ALetter # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; ALetter # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; ALetter # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; ALetter # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; ALetter # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; ALetter # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; ALetter # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; ALetter # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; ALetter # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; ALetter # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; ALetter # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; ALetter # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; ALetter # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; ALetter # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; ALetter # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; ALetter # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; ALetter # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C2..1D6DA ; ALetter # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DC..1D6FA ; ALetter # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FC..1D714 ; ALetter # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D716..1D734 ; ALetter # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D736..1D74E ; ALetter # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D750..1D76E ; ALetter # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D770..1D788 ; ALetter # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D78A..1D7A8 ; ALetter # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7AA..1D7C2 ; ALetter # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C4..1D7CB ; ALetter # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1DF00..1DF09 ; ALetter # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+1DF0A ; ALetter # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+1DF0B..1DF1E ; ALetter # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+1DF25..1DF2A ; ALetter # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+1E030..1E06D ; ALetter # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+1E100..1E12C ; ALetter # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
+1E137..1E13D ; ALetter # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+1E14E ; ALetter # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+1E290..1E2AD ; ALetter # Lo [30] TOTO LETTER PA..TOTO LETTER A
+1E2C0..1E2EB ; ALetter # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
+1E4D0..1E4EA ; ALetter # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+1E4EB ; ALetter # Lm NAG MUNDARI SIGN OJOD
+1E5D0..1E5ED ; ALetter # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5F0 ; ALetter # Lo OL ONAL SIGN HODDOND
+1E7E0..1E7E6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+1E7E8..1E7EB ; ALetter # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+1E7ED..1E7EE ; ALetter # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+1E7F0..1E7FE ; ALetter # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
+1E800..1E8C4 ; ALetter # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+1E900..1E943 ; ALetter # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E94B ; ALetter # Lm ADLAM NASALIZATION MARK
+1EE00..1EE03 ; ALetter # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+1EE05..1EE1F ; ALetter # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+1EE21..1EE22 ; ALetter # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+1EE24 ; ALetter # Lo ARABIC MATHEMATICAL INITIAL HEH
+1EE27 ; ALetter # Lo ARABIC MATHEMATICAL INITIAL HAH
+1EE29..1EE32 ; ALetter # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+1EE34..1EE37 ; ALetter # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+1EE39 ; ALetter # Lo ARABIC MATHEMATICAL INITIAL DAD
+1EE3B ; ALetter # Lo ARABIC MATHEMATICAL INITIAL GHAIN
+1EE42 ; ALetter # Lo ARABIC MATHEMATICAL TAILED JEEM
+1EE47 ; ALetter # Lo ARABIC MATHEMATICAL TAILED HAH
+1EE49 ; ALetter # Lo ARABIC MATHEMATICAL TAILED YEH
+1EE4B ; ALetter # Lo ARABIC MATHEMATICAL TAILED LAM
+1EE4D..1EE4F ; ALetter # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+1EE51..1EE52 ; ALetter # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+1EE54 ; ALetter # Lo ARABIC MATHEMATICAL TAILED SHEEN
+1EE57 ; ALetter # Lo ARABIC MATHEMATICAL TAILED KHAH
+1EE59 ; ALetter # Lo ARABIC MATHEMATICAL TAILED DAD
+1EE5B ; ALetter # Lo ARABIC MATHEMATICAL TAILED GHAIN
+1EE5D ; ALetter # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON
+1EE5F ; ALetter # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF
+1EE61..1EE62 ; ALetter # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+1EE64 ; ALetter # Lo ARABIC MATHEMATICAL STRETCHED HEH
+1EE67..1EE6A ; ALetter # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+1EE6C..1EE72 ; ALetter # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+1EE74..1EE77 ; ALetter # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+1EE79..1EE7C ; ALetter # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+1EE7E ; ALetter # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+1EE80..1EE89 ; ALetter # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+1EE8B..1EE9B ; ALetter # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+1EEA1..1EEA3 ; ALetter # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+1EEA5..1EEA9 ; ALetter # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+1EEAB..1EEBB ; ALetter # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+1F130..1F149 ; ALetter # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
+1F150..1F169 ; ALetter # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+1F170..1F189 ; ALetter # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+
+# Total code points: 33791
+
+# ================================================
+
+003A ; MidLetter # Po COLON
+00B7 ; MidLetter # Po MIDDLE DOT
+0387 ; MidLetter # Po GREEK ANO TELEIA
+055F ; MidLetter # Po ARMENIAN ABBREVIATION MARK
+05F4 ; MidLetter # Po HEBREW PUNCTUATION GERSHAYIM
+2027 ; MidLetter # Po HYPHENATION POINT
+FE13 ; MidLetter # Po PRESENTATION FORM FOR VERTICAL COLON
+FE55 ; MidLetter # Po SMALL COLON
+FF1A ; MidLetter # Po FULLWIDTH COLON
+
+# Total code points: 9
+
+# ================================================
+
+002C ; MidNum # Po COMMA
+003B ; MidNum # Po SEMICOLON
+037E ; MidNum # Po GREEK QUESTION MARK
+0589 ; MidNum # Po ARMENIAN FULL STOP
+060C..060D ; MidNum # Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR
+066C ; MidNum # Po ARABIC THOUSANDS SEPARATOR
+07F8 ; MidNum # Po NKO COMMA
+2044 ; MidNum # Sm FRACTION SLASH
+FE50 ; MidNum # Po SMALL COMMA
+FE54 ; MidNum # Po SMALL SEMICOLON
+FF0C ; MidNum # Po FULLWIDTH COMMA
+FF1B ; MidNum # Po FULLWIDTH SEMICOLON
+
+# Total code points: 13
+
+# ================================================
+
+002E ; MidNumLet # Po FULL STOP
+2018 ; MidNumLet # Pi LEFT SINGLE QUOTATION MARK
+2019 ; MidNumLet # Pf RIGHT SINGLE QUOTATION MARK
+2024 ; MidNumLet # Po ONE DOT LEADER
+FE52 ; MidNumLet # Po SMALL FULL STOP
+FF07 ; MidNumLet # Po FULLWIDTH APOSTROPHE
+FF0E ; MidNumLet # Po FULLWIDTH FULL STOP
+
+# Total code points: 7
+
+# ================================================
+
+0030..0039 ; Numeric # Nd [10] DIGIT ZERO..DIGIT NINE
+0600..0605 ; Numeric # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
+0660..0669 ; Numeric # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+066B ; Numeric # Po ARABIC DECIMAL SEPARATOR
+06DD ; Numeric # Cf ARABIC END OF AYAH
+06F0..06F9 ; Numeric # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+07C0..07C9 ; Numeric # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
+0890..0891 ; Numeric # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
+08E2 ; Numeric # Cf ARABIC DISPUTED END OF AYAH
+0966..096F ; Numeric # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+09E6..09EF ; Numeric # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+0A66..0A6F ; Numeric # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0AE6..0AEF ; Numeric # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0B66..0B6F ; Numeric # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0BE6..0BEF ; Numeric # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0C66..0C6F ; Numeric # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0CE6..0CEF ; Numeric # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0D66..0D6F ; Numeric # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0DE6..0DEF ; Numeric # Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
+0E50..0E59 ; Numeric # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0ED0..0ED9 ; Numeric # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0F20..0F29 ; Numeric # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+1040..1049 ; Numeric # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+1090..1099 ; Numeric # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+17E0..17E9 ; Numeric # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+1810..1819 ; Numeric # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1946..194F ; Numeric # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+19D0..19D9 ; Numeric # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+19DA ; Numeric # No NEW TAI LUE THAM DIGIT ONE
+1A80..1A89 ; Numeric # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE
+1A90..1A99 ; Numeric # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
+1B50..1B59 ; Numeric # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+1BB0..1BB9 ; Numeric # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+1C40..1C49 ; Numeric # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+1C50..1C59 ; Numeric # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+A620..A629 ; Numeric # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE
+A8D0..A8D9 ; Numeric # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+A900..A909 ; Numeric # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+A9D0..A9D9 ; Numeric # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
+A9F0..A9F9 ; Numeric # Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE
+AA50..AA59 ; Numeric # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+ABF0..ABF9 ; Numeric # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
+FF10..FF19 ; Numeric # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+104A0..104A9 ; Numeric # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+10D30..10D39 ; Numeric # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; Numeric # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+11066..1106F ; Numeric # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
+110BD ; Numeric # Cf KAITHI NUMBER SIGN
+110CD ; Numeric # Cf KAITHI NUMBER SIGN ABOVE
+110F0..110F9 ; Numeric # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
+11136..1113F ; Numeric # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
+111D0..111D9 ; Numeric # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
+112F0..112F9 ; Numeric # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+11450..11459 ; Numeric # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+114D0..114D9 ; Numeric # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
+11650..11659 ; Numeric # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE
+116C0..116C9 ; Numeric # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; Numeric # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
+11730..11739 ; Numeric # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
+118E0..118E9 ; Numeric # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+11950..11959 ; Numeric # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
+11BF0..11BF9 ; Numeric # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
+11C50..11C59 ; Numeric # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11D50..11D59 ; Numeric # Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
+11DA0..11DA9 ; Numeric # Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
+11F50..11F59 ; Numeric # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+16130..16139 ; Numeric # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
+16A60..16A69 ; Numeric # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
+16AC0..16AC9 ; Numeric # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
+16B50..16B59 ; Numeric # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
+16D70..16D79 ; Numeric # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
+1CCF0..1CCF9 ; Numeric # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
+1D7CE..1D7FF ; Numeric # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1E140..1E149 ; Numeric # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
+1E2F0..1E2F9 ; Numeric # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
+1E4F0..1E4F9 ; Numeric # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5F1..1E5FA ; Numeric # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
+1E950..1E959 ; Numeric # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1FBF0..1FBF9 ; Numeric # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+
+# Total code points: 774
+
+# ================================================
+
+005F ; ExtendNumLet # Pc LOW LINE
+202F ; ExtendNumLet # Zs NARROW NO-BREAK SPACE
+203F..2040 ; ExtendNumLet # Pc [2] UNDERTIE..CHARACTER TIE
+2054 ; ExtendNumLet # Pc INVERTED UNDERTIE
+FE33..FE34 ; ExtendNumLet # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE4D..FE4F ; ExtendNumLet # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FF3F ; ExtendNumLet # Pc FULLWIDTH LOW LINE
+
+# Total code points: 11
+
+# ================================================
+
+200D ; ZWJ # Cf ZERO WIDTH JOINER
+
+# Total code points: 1
+
+# ================================================
+
+0020 ; WSegSpace # Zs SPACE
+1680 ; WSegSpace # Zs OGHAM SPACE MARK
+2000..2006 ; WSegSpace # Zs [7] EN QUAD..SIX-PER-EM SPACE
+2008..200A ; WSegSpace # Zs [3] PUNCTUATION SPACE..HAIR SPACE
+205F ; WSegSpace # Zs MEDIUM MATHEMATICAL SPACE
+3000 ; WSegSpace # Zs IDEOGRAPHIC SPACE
+
+# Total code points: 14
+
+# EOF
diff --git a/resources/standards-data/unicode-character-database/download.sh b/resources/standards-data/unicode-character-database/download.sh
new file mode 100755
index 0000000000..a6675d2874
--- /dev/null
+++ b/resources/standards-data/unicode-character-database/download.sh
@@ -0,0 +1,58 @@
+#!/usr/bin/env bash
+
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "$(dirname "$THIS_SCRIPT")/../../../resources/build/builder.inc.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+. "$KEYMAN_ROOT/resources/build/minimum-versions.inc.sh"
+
+################################ Main script ################################
+
+builder_describe \
+ "Downloads Unicode data files, version $KEYMAN_VERSION_UNICODE (see minimum-versions.inc.sh), to be committed to repo." \
+ download+
+
+builder_describe_outputs \
+ download /resources/standards-data/unicode-character-database/UnicodeData.txt
+
+builder_parse "$@"
+
+# Used by Developer
+BLOCKS_SRC_HREF="https://www.unicode.org/Public/$KEYMAN_VERSION_UNICODE/ucd/Blocks.txt"
+BLOCKS_SRC_LOCAL="./Blocks.txt"
+
+UNICODE_DATA_SRC_HREF="https://www.unicode.org/Public/$KEYMAN_VERSION_UNICODE/ucd/UnicodeData.txt"
+UNICODE_DATA_SRC_LOCAL="./UnicodeData.txt"
+
+# Used by web/src/engine/predictive-text/wordbreakers for the default Unicode wordbreaker.
+WORDBREAK_PROP_SRC_HREF="https://www.unicode.org/Public/$KEYMAN_VERSION_UNICODE/ucd/auxiliary/WordBreakProperty.txt"
+WORDBREAK_PROP_SRC_LOCAL="./WordBreakProperty.txt"
+
+EMOJI_DATA_SRC_HREF="https://www.unicode.org/Public/$KEYMAN_VERSION_UNICODE/ucd/emoji/emoji-data.txt"
+EMOJI_DATA_SRC_LOCAL="./emoji-data.txt"
+
+function downloadPropertyFile() {
+ local SRC="$1"
+ local DEST="$2"
+
+ local RETRY=5 # Curl retries this number of times before giving up
+ local RETRY_DELAY=5 # Make curl sleep this amount of time before each retry when a transfer has failed
+
+ echo "Downloading ${SRC} - ${RETRY} attempts"
+ # local URL_DOWNLOAD_FILE=`curl --retry "$RETRY" --retry-delay "$RETRY_DELAY" --silent "${SRC}" | "$JQ" -r .txt`
+ curl --fail --retry "$RETRY" --retry-delay "$RETRY_DELAY" --silent "$SRC" --output "$DEST" || {
+ builder_die "Downloading $SRC failed with error $?"
+ }
+}
+
+do_download() {
+ downloadPropertyFile "${BLOCKS_SRC_HREF}" "${BLOCKS_SRC_LOCAL}"
+ downloadPropertyFile "${UNICODE_DATA_SRC_HREF}" "${UNICODE_DATA_SRC_LOCAL}"
+
+ downloadPropertyFile "${WORDBREAK_PROP_SRC_HREF}" "${WORDBREAK_PROP_SRC_LOCAL}"
+ downloadPropertyFile "${EMOJI_DATA_SRC_HREF}" "${EMOJI_DATA_SRC_LOCAL}"
+}
+
+builder_run_action download do_download
diff --git a/resources/standards-data/unicode-character-database/emoji-data.txt b/resources/standards-data/unicode-character-database/emoji-data.txt
new file mode 100644
index 0000000000..ff99028248
--- /dev/null
+++ b/resources/standards-data/unicode-character-database/emoji-data.txt
@@ -0,0 +1,1340 @@
+# emoji-data.txt
+# Date: 2024-05-01, 21:25:24 GMT
+# © 2024 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
+#
+# Emoji Data for UTS #51
+# Used with Emoji Version 16.0 and subsequent minor revisions (if any)
+#
+# For documentation and usage, see https://www.unicode.org/reports/tr51
+#
+# Format:
+# ; #
+# Note: there is no guarantee as to the structure of whitespace or comments
+#
+# Characters and sequences are listed in code point order. Users should be shown a more natural order.
+# See the CLDR collation order for Emoji.
+
+
+# ================================================
+
+# All omitted code points have Emoji=No
+
+0023 ; Emoji # E0.0 [1] (#️) hash sign
+002A ; Emoji # E0.0 [1] (*️) asterisk
+0030..0039 ; Emoji # E0.0 [10] (0️..9️) digit zero..digit nine
+00A9 ; Emoji # E0.6 [1] (©️) copyright
+00AE ; Emoji # E0.6 [1] (®️) registered
+203C ; Emoji # E0.6 [1] (‼️) double exclamation mark
+2049 ; Emoji # E0.6 [1] (⁉️) exclamation question mark
+2122 ; Emoji # E0.6 [1] (™️) trade mark
+2139 ; Emoji # E0.6 [1] (ℹ️) information
+2194..2199 ; Emoji # E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow
+21A9..21AA ; Emoji # E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right
+231A..231B ; Emoji # E0.6 [2] (⌚..⌛) watch..hourglass done
+2328 ; Emoji # E1.0 [1] (⌨️) keyboard
+23CF ; Emoji # E1.0 [1] (⏏️) eject button
+23E9..23EC ; Emoji # E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23ED..23EE ; Emoji # E0.7 [2] (⏭️..⏮️) next track button..last track button
+23EF ; Emoji # E1.0 [1] (⏯️) play or pause button
+23F0 ; Emoji # E0.6 [1] (⏰) alarm clock
+23F1..23F2 ; Emoji # E1.0 [2] (⏱️..⏲️) stopwatch..timer clock
+23F3 ; Emoji # E0.6 [1] (⏳) hourglass not done
+23F8..23FA ; Emoji # E0.7 [3] (⏸️..⏺️) pause button..record button
+24C2 ; Emoji # E0.6 [1] (Ⓜ️) circled M
+25AA..25AB ; Emoji # E0.6 [2] (▪️..▫️) black small square..white small square
+25B6 ; Emoji # E0.6 [1] (▶️) play button
+25C0 ; Emoji # E0.6 [1] (◀️) reverse button
+25FB..25FE ; Emoji # E0.6 [4] (◻️..◾) white medium square..black medium-small square
+2600..2601 ; Emoji # E0.6 [2] (☀️..☁️) sun..cloud
+2602..2603 ; Emoji # E0.7 [2] (☂️..☃️) umbrella..snowman
+2604 ; Emoji # E1.0 [1] (☄️) comet
+260E ; Emoji # E0.6 [1] (☎️) telephone
+2611 ; Emoji # E0.6 [1] (☑️) check box with check
+2614..2615 ; Emoji # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2618 ; Emoji # E1.0 [1] (☘️) shamrock
+261D ; Emoji # E0.6 [1] (☝️) index pointing up
+2620 ; Emoji # E1.0 [1] (☠️) skull and crossbones
+2622..2623 ; Emoji # E1.0 [2] (☢️..☣️) radioactive..biohazard
+2626 ; Emoji # E1.0 [1] (☦️) orthodox cross
+262A ; Emoji # E0.7 [1] (☪️) star and crescent
+262E ; Emoji # E1.0 [1] (☮️) peace symbol
+262F ; Emoji # E0.7 [1] (☯️) yin yang
+2638..2639 ; Emoji # E0.7 [2] (☸️..☹️) wheel of dharma..frowning face
+263A ; Emoji # E0.6 [1] (☺️) smiling face
+2640 ; Emoji # E4.0 [1] (♀️) female sign
+2642 ; Emoji # E4.0 [1] (♂️) male sign
+2648..2653 ; Emoji # E0.6 [12] (♈..♓) Aries..Pisces
+265F ; Emoji # E11.0 [1] (♟️) chess pawn
+2660 ; Emoji # E0.6 [1] (♠️) spade suit
+2663 ; Emoji # E0.6 [1] (♣️) club suit
+2665..2666 ; Emoji # E0.6 [2] (♥️..♦️) heart suit..diamond suit
+2668 ; Emoji # E0.6 [1] (♨️) hot springs
+267B ; Emoji # E0.6 [1] (♻️) recycling symbol
+267E ; Emoji # E11.0 [1] (♾️) infinity
+267F ; Emoji # E0.6 [1] (♿) wheelchair symbol
+2692 ; Emoji # E1.0 [1] (⚒️) hammer and pick
+2693 ; Emoji # E0.6 [1] (⚓) anchor
+2694 ; Emoji # E1.0 [1] (⚔️) crossed swords
+2695 ; Emoji # E4.0 [1] (⚕️) medical symbol
+2696..2697 ; Emoji # E1.0 [2] (⚖️..⚗️) balance scale..alembic
+2699 ; Emoji # E1.0 [1] (⚙️) gear
+269B..269C ; Emoji # E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis
+26A0..26A1 ; Emoji # E0.6 [2] (⚠️..⚡) warning..high voltage
+26A7 ; Emoji # E13.0 [1] (⚧️) transgender symbol
+26AA..26AB ; Emoji # E0.6 [2] (⚪..⚫) white circle..black circle
+26B0..26B1 ; Emoji # E1.0 [2] (⚰️..⚱️) coffin..funeral urn
+26BD..26BE ; Emoji # E0.6 [2] (⚽..⚾) soccer ball..baseball
+26C4..26C5 ; Emoji # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26C8 ; Emoji # E0.7 [1] (⛈️) cloud with lightning and rain
+26CE ; Emoji # E0.6 [1] (⛎) Ophiuchus
+26CF ; Emoji # E0.7 [1] (⛏️) pick
+26D1 ; Emoji # E0.7 [1] (⛑️) rescue worker’s helmet
+26D3 ; Emoji # E0.7 [1] (⛓️) chains
+26D4 ; Emoji # E0.6 [1] (⛔) no entry
+26E9 ; Emoji # E0.7 [1] (⛩️) shinto shrine
+26EA ; Emoji # E0.6 [1] (⛪) church
+26F0..26F1 ; Emoji # E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground
+26F2..26F3 ; Emoji # E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F4 ; Emoji # E0.7 [1] (⛴️) ferry
+26F5 ; Emoji # E0.6 [1] (⛵) sailboat
+26F7..26F9 ; Emoji # E0.7 [3] (⛷️..⛹️) skier..person bouncing ball
+26FA ; Emoji # E0.6 [1] (⛺) tent
+26FD ; Emoji # E0.6 [1] (⛽) fuel pump
+2702 ; Emoji # E0.6 [1] (✂️) scissors
+2705 ; Emoji # E0.6 [1] (✅) check mark button
+2708..270C ; Emoji # E0.6 [5] (✈️..✌️) airplane..victory hand
+270D ; Emoji # E0.7 [1] (✍️) writing hand
+270F ; Emoji # E0.6 [1] (✏️) pencil
+2712 ; Emoji # E0.6 [1] (✒️) black nib
+2714 ; Emoji # E0.6 [1] (✔️) check mark
+2716 ; Emoji # E0.6 [1] (✖️) multiply
+271D ; Emoji # E0.7 [1] (✝️) latin cross
+2721 ; Emoji # E0.7 [1] (✡️) star of David
+2728 ; Emoji # E0.6 [1] (✨) sparkles
+2733..2734 ; Emoji # E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
+2744 ; Emoji # E0.6 [1] (❄️) snowflake
+2747 ; Emoji # E0.6 [1] (❇️) sparkle
+274C ; Emoji # E0.6 [1] (❌) cross mark
+274E ; Emoji # E0.6 [1] (❎) cross mark button
+2753..2755 ; Emoji # E0.6 [3] (❓..❕) red question mark..white exclamation mark
+2757 ; Emoji # E0.6 [1] (❗) red exclamation mark
+2763 ; Emoji # E1.0 [1] (❣️) heart exclamation
+2764 ; Emoji # E0.6 [1] (❤️) red heart
+2795..2797 ; Emoji # E0.6 [3] (➕..➗) plus..divide
+27A1 ; Emoji # E0.6 [1] (➡️) right arrow
+27B0 ; Emoji # E0.6 [1] (➰) curly loop
+27BF ; Emoji # E1.0 [1] (➿) double curly loop
+2934..2935 ; Emoji # E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
+2B05..2B07 ; Emoji # E0.6 [3] (⬅️..⬇️) left arrow..down arrow
+2B1B..2B1C ; Emoji # E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Emoji # E0.6 [1] (⭐) star
+2B55 ; Emoji # E0.6 [1] (⭕) hollow red circle
+3030 ; Emoji # E0.6 [1] (〰️) wavy dash
+303D ; Emoji # E0.6 [1] (〽️) part alternation mark
+3297 ; Emoji # E0.6 [1] (㊗️) Japanese “congratulations” button
+3299 ; Emoji # E0.6 [1] (㊙️) Japanese “secret” button
+1F004 ; Emoji # E0.6 [1] (🀄) mahjong red dragon
+1F0CF ; Emoji # E0.6 [1] (🃏) joker
+1F170..1F171 ; Emoji # E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
+1F17E..1F17F ; Emoji # E0.6 [2] (🅾️..🅿️) O button (blood type)..P button
+1F18E ; Emoji # E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Emoji # E0.6 [10] (🆑..🆚) CL button..VS button
+1F1E6..1F1FF ; Emoji # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F201..1F202 ; Emoji # E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
+1F21A ; Emoji # E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Emoji # E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F23A ; Emoji # E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
+1F250..1F251 ; Emoji # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C ; Emoji # E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Emoji # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Emoji # E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Emoji # E1.0 [1] (🌐) globe with meridians
+1F311 ; Emoji # E0.6 [1] (🌑) new moon
+1F312 ; Emoji # E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Emoji # E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Emoji # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Emoji # E0.6 [1] (🌙) crescent moon
+1F31A ; Emoji # E1.0 [1] (🌚) new moon face
+1F31B ; Emoji # E0.6 [1] (🌛) first quarter moon face
+1F31C ; Emoji # E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Emoji # E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Emoji # E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F321 ; Emoji # E0.7 [1] (🌡️) thermometer
+1F324..1F32C ; Emoji # E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face
+1F32D..1F32F ; Emoji # E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Emoji # E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Emoji # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Emoji # E0.6 [2] (🌴..🌵) palm tree..cactus
+1F336 ; Emoji # E0.7 [1] (🌶️) hot pepper
+1F337..1F34A ; Emoji # E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Emoji # E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Emoji # E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Emoji # E1.0 [1] (🍐) pear
+1F351..1F37B ; Emoji # E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Emoji # E1.0 [1] (🍼) baby bottle
+1F37D ; Emoji # E0.7 [1] (🍽️) fork and knife with plate
+1F37E..1F37F ; Emoji # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Emoji # E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F396..1F397 ; Emoji # E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon
+1F399..1F39B ; Emoji # E0.7 [3] (🎙️..🎛️) studio microphone..control knobs
+1F39E..1F39F ; Emoji # E0.7 [2] (🎞️..🎟️) film frames..admission tickets
+1F3A0..1F3C4 ; Emoji # E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Emoji # E1.0 [1] (🏅) sports medal
+1F3C6 ; Emoji # E0.6 [1] (🏆) trophy
+1F3C7 ; Emoji # E1.0 [1] (🏇) horse racing
+1F3C8 ; Emoji # E0.6 [1] (🏈) american football
+1F3C9 ; Emoji # E1.0 [1] (🏉) rugby football
+1F3CA ; Emoji # E0.6 [1] (🏊) person swimming
+1F3CB..1F3CE ; Emoji # E0.7 [4] (🏋️..🏎️) person lifting weights..racing car
+1F3CF..1F3D3 ; Emoji # E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3D4..1F3DF ; Emoji # E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium
+1F3E0..1F3E3 ; Emoji # E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Emoji # E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Emoji # E0.6 [12] (🏥..🏰) hospital..castle
+1F3F3 ; Emoji # E0.7 [1] (🏳️) white flag
+1F3F4 ; Emoji # E1.0 [1] (🏴) black flag
+1F3F5 ; Emoji # E0.7 [1] (🏵️) rosette
+1F3F7 ; Emoji # E0.7 [1] (🏷️) label
+1F3F8..1F407 ; Emoji # E1.0 [16] (🏸..🐇) badminton..rabbit
+1F408 ; Emoji # E0.7 [1] (🐈) cat
+1F409..1F40B ; Emoji # E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Emoji # E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Emoji # E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Emoji # E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Emoji # E1.0 [1] (🐓) rooster
+1F414 ; Emoji # E0.6 [1] (🐔) chicken
+1F415 ; Emoji # E0.7 [1] (🐕) dog
+1F416 ; Emoji # E1.0 [1] (🐖) pig
+1F417..1F429 ; Emoji # E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Emoji # E1.0 [1] (🐪) camel
+1F42B..1F43E ; Emoji # E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F43F ; Emoji # E0.7 [1] (🐿️) chipmunk
+1F440 ; Emoji # E0.6 [1] (👀) eyes
+1F441 ; Emoji # E0.7 [1] (👁️) eye
+1F442..1F464 ; Emoji # E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Emoji # E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Emoji # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Emoji # E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Emoji # E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Emoji # E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Emoji # E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Emoji # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Emoji # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Emoji # E0.6 [1] (📮) postbox
+1F4EF ; Emoji # E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Emoji # E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Emoji # E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Emoji # E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Emoji # E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Emoji # E0.6 [4] (📹..📼) video camera..videocassette
+1F4FD ; Emoji # E0.7 [1] (📽️) film projector
+1F4FF..1F502 ; Emoji # E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Emoji # E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Emoji # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Emoji # E0.7 [1] (🔈) speaker low volume
+1F509 ; Emoji # E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Emoji # E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Emoji # E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Emoji # E0.6 [22] (🔖..🔫) bookmark..water pistol
+1F52C..1F52D ; Emoji # E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Emoji # E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F549..1F54A ; Emoji # E0.7 [2] (🕉️..🕊️) om..dove
+1F54B..1F54E ; Emoji # E1.0 [4] (🕋..🕎) kaaba..menorah
+1F550..1F55B ; Emoji # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Emoji # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F56F..1F570 ; Emoji # E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock
+1F573..1F579 ; Emoji # E0.7 [7] (🕳️..🕹️) hole..joystick
+1F57A ; Emoji # E3.0 [1] (🕺) man dancing
+1F587 ; Emoji # E0.7 [1] (🖇️) linked paperclips
+1F58A..1F58D ; Emoji # E0.7 [4] (🖊️..🖍️) pen..crayon
+1F590 ; Emoji # E0.7 [1] (🖐️) hand with fingers splayed
+1F595..1F596 ; Emoji # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F5A4 ; Emoji # E3.0 [1] (🖤) black heart
+1F5A5 ; Emoji # E0.7 [1] (🖥️) desktop computer
+1F5A8 ; Emoji # E0.7 [1] (🖨️) printer
+1F5B1..1F5B2 ; Emoji # E0.7 [2] (🖱️..🖲️) computer mouse..trackball
+1F5BC ; Emoji # E0.7 [1] (🖼️) framed picture
+1F5C2..1F5C4 ; Emoji # E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet
+1F5D1..1F5D3 ; Emoji # E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar
+1F5DC..1F5DE ; Emoji # E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper
+1F5E1 ; Emoji # E0.7 [1] (🗡️) dagger
+1F5E3 ; Emoji # E0.7 [1] (🗣️) speaking head
+1F5E8 ; Emoji # E2.0 [1] (🗨️) left speech bubble
+1F5EF ; Emoji # E0.7 [1] (🗯️) right anger bubble
+1F5F3 ; Emoji # E0.7 [1] (🗳️) ballot box with ballot
+1F5FA ; Emoji # E0.7 [1] (🗺️) world map
+1F5FB..1F5FF ; Emoji # E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Emoji # E1.0 [1] (😀) grinning face
+1F601..1F606 ; Emoji # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Emoji # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Emoji # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Emoji # E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Emoji # E0.6 [1] (😏) smirking face
+1F610 ; Emoji # E0.7 [1] (😐) neutral face
+1F611 ; Emoji # E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Emoji # E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Emoji # E1.0 [1] (😕) confused face
+1F616 ; Emoji # E0.6 [1] (😖) confounded face
+1F617 ; Emoji # E1.0 [1] (😗) kissing face
+1F618 ; Emoji # E0.6 [1] (😘) face blowing a kiss
+1F619 ; Emoji # E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Emoji # E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Emoji # E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Emoji # E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Emoji # E1.0 [1] (😟) worried face
+1F620..1F625 ; Emoji # E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Emoji # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Emoji # E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Emoji # E1.0 [1] (😬) grimacing face
+1F62D ; Emoji # E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Emoji # E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Emoji # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Emoji # E1.0 [1] (😴) sleeping face
+1F635 ; Emoji # E0.6 [1] (😵) face with crossed-out eyes
+1F636 ; Emoji # E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Emoji # E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Emoji # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Emoji # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Emoji # E0.6 [1] (🚀) rocket
+1F681..1F682 ; Emoji # E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Emoji # E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Emoji # E1.0 [1] (🚆) train
+1F687 ; Emoji # E0.6 [1] (🚇) metro
+1F688 ; Emoji # E1.0 [1] (🚈) light rail
+1F689 ; Emoji # E0.6 [1] (🚉) station
+1F68A..1F68B ; Emoji # E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Emoji # E0.6 [1] (🚌) bus
+1F68D ; Emoji # E0.7 [1] (🚍) oncoming bus
+1F68E ; Emoji # E1.0 [1] (🚎) trolleybus
+1F68F ; Emoji # E0.6 [1] (🚏) bus stop
+1F690 ; Emoji # E1.0 [1] (🚐) minibus
+1F691..1F693 ; Emoji # E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Emoji # E0.7 [1] (🚔) oncoming police car
+1F695 ; Emoji # E0.6 [1] (🚕) taxi
+1F696 ; Emoji # E1.0 [1] (🚖) oncoming taxi
+1F697 ; Emoji # E0.6 [1] (🚗) automobile
+1F698 ; Emoji # E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Emoji # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Emoji # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Emoji # E0.6 [1] (🚢) ship
+1F6A3 ; Emoji # E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Emoji # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Emoji # E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Emoji # E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Emoji # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Emoji # E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Emoji # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Emoji # E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Emoji # E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Emoji # E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Emoji # E1.0 [1] (🚿) shower
+1F6C0 ; Emoji # E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Emoji # E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6CB ; Emoji # E0.7 [1] (🛋️) couch and lamp
+1F6CC ; Emoji # E1.0 [1] (🛌) person in bed
+1F6CD..1F6CF ; Emoji # E0.7 [3] (🛍️..🛏️) shopping bags..bed
+1F6D0 ; Emoji # E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Emoji # E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D5 ; Emoji # E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Emoji # E13.0 [2] (🛖..🛗) hut..elevator
+1F6DC ; Emoji # E15.0 [1] (🛜) wireless
+1F6DD..1F6DF ; Emoji # E14.0 [3] (🛝..🛟) playground slide..ring buoy
+1F6E0..1F6E5 ; Emoji # E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
+1F6E9 ; Emoji # E0.7 [1] (🛩️) small airplane
+1F6EB..1F6EC ; Emoji # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6F0 ; Emoji # E0.7 [1] (🛰️) satellite
+1F6F3 ; Emoji # E0.7 [1] (🛳️) passenger ship
+1F6F4..1F6F6 ; Emoji # E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Emoji # E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Emoji # E11.0 [1] (🛹) skateboard
+1F6FA ; Emoji # E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Emoji # E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F7E0..1F7EB ; Emoji # E12.0 [12] (🟠..🟫) orange circle..brown square
+1F7F0 ; Emoji # E14.0 [1] (🟰) heavy equals sign
+1F90C ; Emoji # E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Emoji # E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Emoji # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Emoji # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji # E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Emoji # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Emoji # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Emoji # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Emoji # E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Emoji # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Emoji # E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Emoji # E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Emoji # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Emoji # E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Emoji # E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Emoji # E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Emoji # E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Emoji # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Emoji # E12.0 [1] (🥱) yawning face
+1F972 ; Emoji # E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Emoji # E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Emoji # E13.0 [2] (🥷..🥸) ninja..disguised face
+1F979 ; Emoji # E14.0 [1] (🥹) face holding back tears
+1F97A ; Emoji # E11.0 [1] (🥺) pleading face
+1F97B ; Emoji # E12.0 [1] (🥻) sari
+1F97C..1F97F ; Emoji # E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Emoji # E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Emoji # E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Emoji # E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Emoji # E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Emoji # E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Emoji # E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Emoji # E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Emoji # E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Emoji # E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Emoji # E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Emoji # E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Emoji # E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Emoji # E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Emoji # E13.0 [1] (🧋) bubble tea
+1F9CC ; Emoji # E14.0 [1] (🧌) troll
+1F9CD..1F9CF ; Emoji # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Emoji # E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Emoji # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA70..1FA73 ; Emoji # E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Emoji # E13.0 [1] (🩴) thong sandal
+1FA75..1FA77 ; Emoji # E15.0 [3] (🩵..🩷) light blue heart..pink heart
+1FA78..1FA7A ; Emoji # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA7B..1FA7C ; Emoji # E14.0 [2] (🩻..🩼) x-ray..crutch
+1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA87..1FA88 ; Emoji # E15.0 [2] (🪇..🪈) maracas..flute
+1FA89 ; Emoji # E16.0 [1] () harp
+1FA8F ; Emoji # E16.0 [1] () shovel
+1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock
+1FAA9..1FAAC ; Emoji # E14.0 [4] (🪩..🪬) mirror ball..hamsa
+1FAAD..1FAAF ; Emoji # E15.0 [3] (🪭..🪯) folding hand fan..khanda
+1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather
+1FAB7..1FABA ; Emoji # E14.0 [4] (🪷..🪺) lotus..nest with eggs
+1FABB..1FABD ; Emoji # E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABE ; Emoji # E16.0 [1] () leafless tree
+1FABF ; Emoji # E15.0 [1] (🪿) goose
+1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAC3..1FAC5 ; Emoji # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAC6 ; Emoji # E16.0 [1] () fingerprint
+1FACE..1FACF ; Emoji # E15.0 [2] (🫎..🫏) moose..donkey
+1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot
+1FAD7..1FAD9 ; Emoji # E14.0 [3] (🫗..🫙) pouring liquid..jar
+1FADA..1FADB ; Emoji # E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FADC ; Emoji # E16.0 [1] () root vegetable
+1FADF ; Emoji # E16.0 [1] () splatter
+1FAE0..1FAE7 ; Emoji # E14.0 [8] (🫠..🫧) melting face..bubbles
+1FAE8 ; Emoji # E15.0 [1] (🫨) shaking face
+1FAE9 ; Emoji # E16.0 [1] () face with bags under eyes
+1FAF0..1FAF6 ; Emoji # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Emoji # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 1431
+
+# ================================================
+
+# All omitted code points have Emoji_Presentation=No
+
+231A..231B ; Emoji_Presentation # E0.6 [2] (⌚..⌛) watch..hourglass done
+23E9..23EC ; Emoji_Presentation # E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23F0 ; Emoji_Presentation # E0.6 [1] (⏰) alarm clock
+23F3 ; Emoji_Presentation # E0.6 [1] (⏳) hourglass not done
+25FD..25FE ; Emoji_Presentation # E0.6 [2] (◽..◾) white medium-small square..black medium-small square
+2614..2615 ; Emoji_Presentation # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2648..2653 ; Emoji_Presentation # E0.6 [12] (♈..♓) Aries..Pisces
+267F ; Emoji_Presentation # E0.6 [1] (♿) wheelchair symbol
+2693 ; Emoji_Presentation # E0.6 [1] (⚓) anchor
+26A1 ; Emoji_Presentation # E0.6 [1] (⚡) high voltage
+26AA..26AB ; Emoji_Presentation # E0.6 [2] (⚪..⚫) white circle..black circle
+26BD..26BE ; Emoji_Presentation # E0.6 [2] (⚽..⚾) soccer ball..baseball
+26C4..26C5 ; Emoji_Presentation # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26CE ; Emoji_Presentation # E0.6 [1] (⛎) Ophiuchus
+26D4 ; Emoji_Presentation # E0.6 [1] (⛔) no entry
+26EA ; Emoji_Presentation # E0.6 [1] (⛪) church
+26F2..26F3 ; Emoji_Presentation # E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F5 ; Emoji_Presentation # E0.6 [1] (⛵) sailboat
+26FA ; Emoji_Presentation # E0.6 [1] (⛺) tent
+26FD ; Emoji_Presentation # E0.6 [1] (⛽) fuel pump
+2705 ; Emoji_Presentation # E0.6 [1] (✅) check mark button
+270A..270B ; Emoji_Presentation # E0.6 [2] (✊..✋) raised fist..raised hand
+2728 ; Emoji_Presentation # E0.6 [1] (✨) sparkles
+274C ; Emoji_Presentation # E0.6 [1] (❌) cross mark
+274E ; Emoji_Presentation # E0.6 [1] (❎) cross mark button
+2753..2755 ; Emoji_Presentation # E0.6 [3] (❓..❕) red question mark..white exclamation mark
+2757 ; Emoji_Presentation # E0.6 [1] (❗) red exclamation mark
+2795..2797 ; Emoji_Presentation # E0.6 [3] (➕..➗) plus..divide
+27B0 ; Emoji_Presentation # E0.6 [1] (➰) curly loop
+27BF ; Emoji_Presentation # E1.0 [1] (➿) double curly loop
+2B1B..2B1C ; Emoji_Presentation # E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Emoji_Presentation # E0.6 [1] (⭐) star
+2B55 ; Emoji_Presentation # E0.6 [1] (⭕) hollow red circle
+1F004 ; Emoji_Presentation # E0.6 [1] (🀄) mahjong red dragon
+1F0CF ; Emoji_Presentation # E0.6 [1] (🃏) joker
+1F18E ; Emoji_Presentation # E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Emoji_Presentation # E0.6 [10] (🆑..🆚) CL button..VS button
+1F1E6..1F1FF ; Emoji_Presentation # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F201 ; Emoji_Presentation # E0.6 [1] (🈁) Japanese “here” button
+1F21A ; Emoji_Presentation # E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Emoji_Presentation # E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F236 ; Emoji_Presentation # E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button
+1F238..1F23A ; Emoji_Presentation # E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button
+1F250..1F251 ; Emoji_Presentation # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C ; Emoji_Presentation # E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Emoji_Presentation # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Emoji_Presentation # E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Emoji_Presentation # E1.0 [1] (🌐) globe with meridians
+1F311 ; Emoji_Presentation # E0.6 [1] (🌑) new moon
+1F312 ; Emoji_Presentation # E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Emoji_Presentation # E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Emoji_Presentation # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Emoji_Presentation # E0.6 [1] (🌙) crescent moon
+1F31A ; Emoji_Presentation # E1.0 [1] (🌚) new moon face
+1F31B ; Emoji_Presentation # E0.6 [1] (🌛) first quarter moon face
+1F31C ; Emoji_Presentation # E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Emoji_Presentation # E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Emoji_Presentation # E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F32D..1F32F ; Emoji_Presentation # E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Emoji_Presentation # E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Emoji_Presentation # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Emoji_Presentation # E0.6 [2] (🌴..🌵) palm tree..cactus
+1F337..1F34A ; Emoji_Presentation # E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Emoji_Presentation # E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Emoji_Presentation # E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Emoji_Presentation # E1.0 [1] (🍐) pear
+1F351..1F37B ; Emoji_Presentation # E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Emoji_Presentation # E1.0 [1] (🍼) baby bottle
+1F37E..1F37F ; Emoji_Presentation # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Emoji_Presentation # E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F3A0..1F3C4 ; Emoji_Presentation # E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Emoji_Presentation # E1.0 [1] (🏅) sports medal
+1F3C6 ; Emoji_Presentation # E0.6 [1] (🏆) trophy
+1F3C7 ; Emoji_Presentation # E1.0 [1] (🏇) horse racing
+1F3C8 ; Emoji_Presentation # E0.6 [1] (🏈) american football
+1F3C9 ; Emoji_Presentation # E1.0 [1] (🏉) rugby football
+1F3CA ; Emoji_Presentation # E0.6 [1] (🏊) person swimming
+1F3CF..1F3D3 ; Emoji_Presentation # E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3E0..1F3E3 ; Emoji_Presentation # E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Emoji_Presentation # E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Emoji_Presentation # E0.6 [12] (🏥..🏰) hospital..castle
+1F3F4 ; Emoji_Presentation # E1.0 [1] (🏴) black flag
+1F3F8..1F407 ; Emoji_Presentation # E1.0 [16] (🏸..🐇) badminton..rabbit
+1F408 ; Emoji_Presentation # E0.7 [1] (🐈) cat
+1F409..1F40B ; Emoji_Presentation # E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Emoji_Presentation # E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Emoji_Presentation # E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Emoji_Presentation # E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Emoji_Presentation # E1.0 [1] (🐓) rooster
+1F414 ; Emoji_Presentation # E0.6 [1] (🐔) chicken
+1F415 ; Emoji_Presentation # E0.7 [1] (🐕) dog
+1F416 ; Emoji_Presentation # E1.0 [1] (🐖) pig
+1F417..1F429 ; Emoji_Presentation # E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Emoji_Presentation # E1.0 [1] (🐪) camel
+1F42B..1F43E ; Emoji_Presentation # E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F440 ; Emoji_Presentation # E0.6 [1] (👀) eyes
+1F442..1F464 ; Emoji_Presentation # E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Emoji_Presentation # E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Emoji_Presentation # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji_Presentation # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Emoji_Presentation # E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Emoji_Presentation # E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Emoji_Presentation # E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Emoji_Presentation # E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Emoji_Presentation # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Emoji_Presentation # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Emoji_Presentation # E0.6 [1] (📮) postbox
+1F4EF ; Emoji_Presentation # E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Emoji_Presentation # E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Emoji_Presentation # E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Emoji_Presentation # E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Emoji_Presentation # E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Emoji_Presentation # E0.6 [4] (📹..📼) video camera..videocassette
+1F4FF..1F502 ; Emoji_Presentation # E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Emoji_Presentation # E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Emoji_Presentation # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Emoji_Presentation # E0.7 [1] (🔈) speaker low volume
+1F509 ; Emoji_Presentation # E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Emoji_Presentation # E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Emoji_Presentation # E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Emoji_Presentation # E0.6 [22] (🔖..🔫) bookmark..water pistol
+1F52C..1F52D ; Emoji_Presentation # E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Emoji_Presentation # E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F54B..1F54E ; Emoji_Presentation # E1.0 [4] (🕋..🕎) kaaba..menorah
+1F550..1F55B ; Emoji_Presentation # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Emoji_Presentation # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F57A ; Emoji_Presentation # E3.0 [1] (🕺) man dancing
+1F595..1F596 ; Emoji_Presentation # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F5A4 ; Emoji_Presentation # E3.0 [1] (🖤) black heart
+1F5FB..1F5FF ; Emoji_Presentation # E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Emoji_Presentation # E1.0 [1] (😀) grinning face
+1F601..1F606 ; Emoji_Presentation # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Emoji_Presentation # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Emoji_Presentation # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Emoji_Presentation # E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Emoji_Presentation # E0.6 [1] (😏) smirking face
+1F610 ; Emoji_Presentation # E0.7 [1] (😐) neutral face
+1F611 ; Emoji_Presentation # E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Emoji_Presentation # E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Emoji_Presentation # E1.0 [1] (😕) confused face
+1F616 ; Emoji_Presentation # E0.6 [1] (😖) confounded face
+1F617 ; Emoji_Presentation # E1.0 [1] (😗) kissing face
+1F618 ; Emoji_Presentation # E0.6 [1] (😘) face blowing a kiss
+1F619 ; Emoji_Presentation # E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Emoji_Presentation # E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Emoji_Presentation # E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Emoji_Presentation # E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Emoji_Presentation # E1.0 [1] (😟) worried face
+1F620..1F625 ; Emoji_Presentation # E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Emoji_Presentation # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Emoji_Presentation # E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Emoji_Presentation # E1.0 [1] (😬) grimacing face
+1F62D ; Emoji_Presentation # E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Emoji_Presentation # E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Emoji_Presentation # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Emoji_Presentation # E1.0 [1] (😴) sleeping face
+1F635 ; Emoji_Presentation # E0.6 [1] (😵) face with crossed-out eyes
+1F636 ; Emoji_Presentation # E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Emoji_Presentation # E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Emoji_Presentation # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Emoji_Presentation # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Emoji_Presentation # E0.6 [1] (🚀) rocket
+1F681..1F682 ; Emoji_Presentation # E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Emoji_Presentation # E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Emoji_Presentation # E1.0 [1] (🚆) train
+1F687 ; Emoji_Presentation # E0.6 [1] (🚇) metro
+1F688 ; Emoji_Presentation # E1.0 [1] (🚈) light rail
+1F689 ; Emoji_Presentation # E0.6 [1] (🚉) station
+1F68A..1F68B ; Emoji_Presentation # E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Emoji_Presentation # E0.6 [1] (🚌) bus
+1F68D ; Emoji_Presentation # E0.7 [1] (🚍) oncoming bus
+1F68E ; Emoji_Presentation # E1.0 [1] (🚎) trolleybus
+1F68F ; Emoji_Presentation # E0.6 [1] (🚏) bus stop
+1F690 ; Emoji_Presentation # E1.0 [1] (🚐) minibus
+1F691..1F693 ; Emoji_Presentation # E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Emoji_Presentation # E0.7 [1] (🚔) oncoming police car
+1F695 ; Emoji_Presentation # E0.6 [1] (🚕) taxi
+1F696 ; Emoji_Presentation # E1.0 [1] (🚖) oncoming taxi
+1F697 ; Emoji_Presentation # E0.6 [1] (🚗) automobile
+1F698 ; Emoji_Presentation # E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Emoji_Presentation # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Emoji_Presentation # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Emoji_Presentation # E0.6 [1] (🚢) ship
+1F6A3 ; Emoji_Presentation # E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Emoji_Presentation # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Emoji_Presentation # E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Emoji_Presentation # E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Emoji_Presentation # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Emoji_Presentation # E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Emoji_Presentation # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Emoji_Presentation # E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Emoji_Presentation # E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Emoji_Presentation # E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Emoji_Presentation # E1.0 [1] (🚿) shower
+1F6C0 ; Emoji_Presentation # E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Emoji_Presentation # E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6CC ; Emoji_Presentation # E1.0 [1] (🛌) person in bed
+1F6D0 ; Emoji_Presentation # E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Emoji_Presentation # E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D5 ; Emoji_Presentation # E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Emoji_Presentation # E13.0 [2] (🛖..🛗) hut..elevator
+1F6DC ; Emoji_Presentation # E15.0 [1] (🛜) wireless
+1F6DD..1F6DF ; Emoji_Presentation # E14.0 [3] (🛝..🛟) playground slide..ring buoy
+1F6EB..1F6EC ; Emoji_Presentation # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6F4..1F6F6 ; Emoji_Presentation # E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Emoji_Presentation # E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Emoji_Presentation # E11.0 [1] (🛹) skateboard
+1F6FA ; Emoji_Presentation # E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Emoji_Presentation # E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F7E0..1F7EB ; Emoji_Presentation # E12.0 [12] (🟠..🟫) orange circle..brown square
+1F7F0 ; Emoji_Presentation # E14.0 [1] (🟰) heavy equals sign
+1F90C ; Emoji_Presentation # E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Emoji_Presentation # E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Emoji_Presentation # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Emoji_Presentation # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji_Presentation # E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Emoji_Presentation # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Emoji_Presentation # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Emoji_Presentation # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji_Presentation # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Emoji_Presentation # E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Emoji_Presentation # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Emoji_Presentation # E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Emoji_Presentation # E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Emoji_Presentation # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Emoji_Presentation # E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Emoji_Presentation # E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Emoji_Presentation # E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Emoji_Presentation # E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Emoji_Presentation # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Emoji_Presentation # E12.0 [1] (🥱) yawning face
+1F972 ; Emoji_Presentation # E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Emoji_Presentation # E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Emoji_Presentation # E13.0 [2] (🥷..🥸) ninja..disguised face
+1F979 ; Emoji_Presentation # E14.0 [1] (🥹) face holding back tears
+1F97A ; Emoji_Presentation # E11.0 [1] (🥺) pleading face
+1F97B ; Emoji_Presentation # E12.0 [1] (🥻) sari
+1F97C..1F97F ; Emoji_Presentation # E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Emoji_Presentation # E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Emoji_Presentation # E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Emoji_Presentation # E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Emoji_Presentation # E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Emoji_Presentation # E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Emoji_Presentation # E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Emoji_Presentation # E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Emoji_Presentation # E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Emoji_Presentation # E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Emoji_Presentation # E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Emoji_Presentation # E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Emoji_Presentation # E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Emoji_Presentation # E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Emoji_Presentation # E13.0 [1] (🧋) bubble tea
+1F9CC ; Emoji_Presentation # E14.0 [1] (🧌) troll
+1F9CD..1F9CF ; Emoji_Presentation # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Emoji_Presentation # E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Emoji_Presentation # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA70..1FA73 ; Emoji_Presentation # E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Emoji_Presentation # E13.0 [1] (🩴) thong sandal
+1FA75..1FA77 ; Emoji_Presentation # E15.0 [3] (🩵..🩷) light blue heart..pink heart
+1FA78..1FA7A ; Emoji_Presentation # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA7B..1FA7C ; Emoji_Presentation # E14.0 [2] (🩻..🩼) x-ray..crutch
+1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA87..1FA88 ; Emoji_Presentation # E15.0 [2] (🪇..🪈) maracas..flute
+1FA89 ; Emoji_Presentation # E16.0 [1] () harp
+1FA8F ; Emoji_Presentation # E16.0 [1] () shovel
+1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock
+1FAA9..1FAAC ; Emoji_Presentation # E14.0 [4] (🪩..🪬) mirror ball..hamsa
+1FAAD..1FAAF ; Emoji_Presentation # E15.0 [3] (🪭..🪯) folding hand fan..khanda
+1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather
+1FAB7..1FABA ; Emoji_Presentation # E14.0 [4] (🪷..🪺) lotus..nest with eggs
+1FABB..1FABD ; Emoji_Presentation # E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABE ; Emoji_Presentation # E16.0 [1] () leafless tree
+1FABF ; Emoji_Presentation # E15.0 [1] (🪿) goose
+1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAC3..1FAC5 ; Emoji_Presentation # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAC6 ; Emoji_Presentation # E16.0 [1] () fingerprint
+1FACE..1FACF ; Emoji_Presentation # E15.0 [2] (🫎..🫏) moose..donkey
+1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot
+1FAD7..1FAD9 ; Emoji_Presentation # E14.0 [3] (🫗..🫙) pouring liquid..jar
+1FADA..1FADB ; Emoji_Presentation # E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FADC ; Emoji_Presentation # E16.0 [1] () root vegetable
+1FADF ; Emoji_Presentation # E16.0 [1] () splatter
+1FAE0..1FAE7 ; Emoji_Presentation # E14.0 [8] (🫠..🫧) melting face..bubbles
+1FAE8 ; Emoji_Presentation # E15.0 [1] (🫨) shaking face
+1FAE9 ; Emoji_Presentation # E16.0 [1] () face with bags under eyes
+1FAF0..1FAF6 ; Emoji_Presentation # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Emoji_Presentation # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 1212
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier=No
+
+1F3FB..1F3FF ; Emoji_Modifier # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone
+
+# Total elements: 5
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier_Base=No
+
+261D ; Emoji_Modifier_Base # E0.6 [1] (☝️) index pointing up
+26F9 ; Emoji_Modifier_Base # E0.7 [1] (⛹️) person bouncing ball
+270A..270C ; Emoji_Modifier_Base # E0.6 [3] (✊..✌️) raised fist..victory hand
+270D ; Emoji_Modifier_Base # E0.7 [1] (✍️) writing hand
+1F385 ; Emoji_Modifier_Base # E0.6 [1] (🎅) Santa Claus
+1F3C2..1F3C4 ; Emoji_Modifier_Base # E0.6 [3] (🏂..🏄) snowboarder..person surfing
+1F3C7 ; Emoji_Modifier_Base # E1.0 [1] (🏇) horse racing
+1F3CA ; Emoji_Modifier_Base # E0.6 [1] (🏊) person swimming
+1F3CB..1F3CC ; Emoji_Modifier_Base # E0.7 [2] (🏋️..🏌️) person lifting weights..person golfing
+1F442..1F443 ; Emoji_Modifier_Base # E0.6 [2] (👂..👃) ear..nose
+1F446..1F450 ; Emoji_Modifier_Base # E0.6 [11] (👆..👐) backhand index pointing up..open hands
+1F466..1F46B ; Emoji_Modifier_Base # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji_Modifier_Base # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F478 ; Emoji_Modifier_Base # E0.6 [11] (👮..👸) police officer..princess
+1F47C ; Emoji_Modifier_Base # E0.6 [1] (👼) baby angel
+1F481..1F483 ; Emoji_Modifier_Base # E0.6 [3] (💁..💃) person tipping hand..woman dancing
+1F485..1F487 ; Emoji_Modifier_Base # E0.6 [3] (💅..💇) nail polish..person getting haircut
+1F48F ; Emoji_Modifier_Base # E0.6 [1] (💏) kiss
+1F491 ; Emoji_Modifier_Base # E0.6 [1] (💑) couple with heart
+1F4AA ; Emoji_Modifier_Base # E0.6 [1] (💪) flexed biceps
+1F574..1F575 ; Emoji_Modifier_Base # E0.7 [2] (🕴️..🕵️) person in suit levitating..detective
+1F57A ; Emoji_Modifier_Base # E3.0 [1] (🕺) man dancing
+1F590 ; Emoji_Modifier_Base # E0.7 [1] (🖐️) hand with fingers splayed
+1F595..1F596 ; Emoji_Modifier_Base # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F645..1F647 ; Emoji_Modifier_Base # E0.6 [3] (🙅..🙇) person gesturing NO..person bowing
+1F64B..1F64F ; Emoji_Modifier_Base # E0.6 [5] (🙋..🙏) person raising hand..folded hands
+1F6A3 ; Emoji_Modifier_Base # E1.0 [1] (🚣) person rowing boat
+1F6B4..1F6B5 ; Emoji_Modifier_Base # E1.0 [2] (🚴..🚵) person biking..person mountain biking
+1F6B6 ; Emoji_Modifier_Base # E0.6 [1] (🚶) person walking
+1F6C0 ; Emoji_Modifier_Base # E0.6 [1] (🛀) person taking bath
+1F6CC ; Emoji_Modifier_Base # E1.0 [1] (🛌) person in bed
+1F90C ; Emoji_Modifier_Base # E13.0 [1] (🤌) pinched fingers
+1F90F ; Emoji_Modifier_Base # E12.0 [1] (🤏) pinching hand
+1F918 ; Emoji_Modifier_Base # E1.0 [1] (🤘) sign of the horns
+1F919..1F91E ; Emoji_Modifier_Base # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji_Modifier_Base # E5.0 [1] (🤟) love-you gesture
+1F926 ; Emoji_Modifier_Base # E3.0 [1] (🤦) person facepalming
+1F930 ; Emoji_Modifier_Base # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji_Modifier_Base # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F939 ; Emoji_Modifier_Base # E3.0 [7] (🤳..🤹) selfie..person juggling
+1F93C..1F93E ; Emoji_Modifier_Base # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F977 ; Emoji_Modifier_Base # E13.0 [1] (🥷) ninja
+1F9B5..1F9B6 ; Emoji_Modifier_Base # E11.0 [2] (🦵..🦶) leg..foot
+1F9B8..1F9B9 ; Emoji_Modifier_Base # E11.0 [2] (🦸..🦹) superhero..supervillain
+1F9BB ; Emoji_Modifier_Base # E12.0 [1] (🦻) ear with hearing aid
+1F9CD..1F9CF ; Emoji_Modifier_Base # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D1..1F9DD ; Emoji_Modifier_Base # E5.0 [13] (🧑..🧝) person..elf
+1FAC3..1FAC5 ; Emoji_Modifier_Base # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAF0..1FAF6 ; Emoji_Modifier_Base # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Emoji_Modifier_Base # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+
+# Total elements: 134
+
+# ================================================
+
+# All omitted code points have Emoji_Component=No
+
+0023 ; Emoji_Component # E0.0 [1] (#️) hash sign
+002A ; Emoji_Component # E0.0 [1] (*️) asterisk
+0030..0039 ; Emoji_Component # E0.0 [10] (0️..9️) digit zero..digit nine
+200D ; Emoji_Component # E0.0 [1] () zero width joiner
+20E3 ; Emoji_Component # E0.0 [1] (⃣) combining enclosing keycap
+FE0F ; Emoji_Component # E0.0 [1] () VARIATION SELECTOR-16
+1F1E6..1F1FF ; Emoji_Component # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F3FB..1F3FF ; Emoji_Component # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone
+1F9B0..1F9B3 ; Emoji_Component # E11.0 [4] (🦰..🦳) red hair..white hair
+E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..cancel tag
+
+# Total elements: 146
+
+# ================================================
+
+# All omitted code points have Extended_Pictographic=No
+
+00A9 ; Extended_Pictographic# E0.6 [1] (©️) copyright
+00AE ; Extended_Pictographic# E0.6 [1] (®️) registered
+203C ; Extended_Pictographic# E0.6 [1] (‼️) double exclamation mark
+2049 ; Extended_Pictographic# E0.6 [1] (⁉️) exclamation question mark
+2122 ; Extended_Pictographic# E0.6 [1] (™️) trade mark
+2139 ; Extended_Pictographic# E0.6 [1] (ℹ️) information
+2194..2199 ; Extended_Pictographic# E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow
+21A9..21AA ; Extended_Pictographic# E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right
+231A..231B ; Extended_Pictographic# E0.6 [2] (⌚..⌛) watch..hourglass done
+2328 ; Extended_Pictographic# E1.0 [1] (⌨️) keyboard
+2388 ; Extended_Pictographic# E0.0 [1] (⎈) HELM SYMBOL
+23CF ; Extended_Pictographic# E1.0 [1] (⏏️) eject button
+23E9..23EC ; Extended_Pictographic# E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23ED..23EE ; Extended_Pictographic# E0.7 [2] (⏭️..⏮️) next track button..last track button
+23EF ; Extended_Pictographic# E1.0 [1] (⏯️) play or pause button
+23F0 ; Extended_Pictographic# E0.6 [1] (⏰) alarm clock
+23F1..23F2 ; Extended_Pictographic# E1.0 [2] (⏱️..⏲️) stopwatch..timer clock
+23F3 ; Extended_Pictographic# E0.6 [1] (⏳) hourglass not done
+23F8..23FA ; Extended_Pictographic# E0.7 [3] (⏸️..⏺️) pause button..record button
+24C2 ; Extended_Pictographic# E0.6 [1] (Ⓜ️) circled M
+25AA..25AB ; Extended_Pictographic# E0.6 [2] (▪️..▫️) black small square..white small square
+25B6 ; Extended_Pictographic# E0.6 [1] (▶️) play button
+25C0 ; Extended_Pictographic# E0.6 [1] (◀️) reverse button
+25FB..25FE ; Extended_Pictographic# E0.6 [4] (◻️..◾) white medium square..black medium-small square
+2600..2601 ; Extended_Pictographic# E0.6 [2] (☀️..☁️) sun..cloud
+2602..2603 ; Extended_Pictographic# E0.7 [2] (☂️..☃️) umbrella..snowman
+2604 ; Extended_Pictographic# E1.0 [1] (☄️) comet
+2605 ; Extended_Pictographic# E0.0 [1] (★) BLACK STAR
+2607..260D ; Extended_Pictographic# E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION
+260E ; Extended_Pictographic# E0.6 [1] (☎️) telephone
+260F..2610 ; Extended_Pictographic# E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX
+2611 ; Extended_Pictographic# E0.6 [1] (☑️) check box with check
+2612 ; Extended_Pictographic# E0.0 [1] (☒) BALLOT BOX WITH X
+2614..2615 ; Extended_Pictographic# E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2616..2617 ; Extended_Pictographic# E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE
+2618 ; Extended_Pictographic# E1.0 [1] (☘️) shamrock
+2619..261C ; Extended_Pictographic# E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX
+261D ; Extended_Pictographic# E0.6 [1] (☝️) index pointing up
+261E..261F ; Extended_Pictographic# E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX
+2620 ; Extended_Pictographic# E1.0 [1] (☠️) skull and crossbones
+2621 ; Extended_Pictographic# E0.0 [1] (☡) CAUTION SIGN
+2622..2623 ; Extended_Pictographic# E1.0 [2] (☢️..☣️) radioactive..biohazard
+2624..2625 ; Extended_Pictographic# E0.0 [2] (☤..☥) CADUCEUS..ANKH
+2626 ; Extended_Pictographic# E1.0 [1] (☦️) orthodox cross
+2627..2629 ; Extended_Pictographic# E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM
+262A ; Extended_Pictographic# E0.7 [1] (☪️) star and crescent
+262B..262D ; Extended_Pictographic# E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE
+262E ; Extended_Pictographic# E1.0 [1] (☮️) peace symbol
+262F ; Extended_Pictographic# E0.7 [1] (☯️) yin yang
+2630..2637 ; Extended_Pictographic# E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH
+2638..2639 ; Extended_Pictographic# E0.7 [2] (☸️..☹️) wheel of dharma..frowning face
+263A ; Extended_Pictographic# E0.6 [1] (☺️) smiling face
+263B..263F ; Extended_Pictographic# E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY
+2640 ; Extended_Pictographic# E4.0 [1] (♀️) female sign
+2641 ; Extended_Pictographic# E0.0 [1] (♁) EARTH
+2642 ; Extended_Pictographic# E4.0 [1] (♂️) male sign
+2643..2647 ; Extended_Pictographic# E0.0 [5] (♃..♇) JUPITER..PLUTO
+2648..2653 ; Extended_Pictographic# E0.6 [12] (♈..♓) Aries..Pisces
+2654..265E ; Extended_Pictographic# E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT
+265F ; Extended_Pictographic# E11.0 [1] (♟️) chess pawn
+2660 ; Extended_Pictographic# E0.6 [1] (♠️) spade suit
+2661..2662 ; Extended_Pictographic# E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT
+2663 ; Extended_Pictographic# E0.6 [1] (♣️) club suit
+2664 ; Extended_Pictographic# E0.0 [1] (♤) WHITE SPADE SUIT
+2665..2666 ; Extended_Pictographic# E0.6 [2] (♥️..♦️) heart suit..diamond suit
+2667 ; Extended_Pictographic# E0.0 [1] (♧) WHITE CLUB SUIT
+2668 ; Extended_Pictographic# E0.6 [1] (♨️) hot springs
+2669..267A ; Extended_Pictographic# E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS
+267B ; Extended_Pictographic# E0.6 [1] (♻️) recycling symbol
+267C..267D ; Extended_Pictographic# E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
+267E ; Extended_Pictographic# E11.0 [1] (♾️) infinity
+267F ; Extended_Pictographic# E0.6 [1] (♿) wheelchair symbol
+2680..2685 ; Extended_Pictographic# E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6
+2690..2691 ; Extended_Pictographic# E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG
+2692 ; Extended_Pictographic# E1.0 [1] (⚒️) hammer and pick
+2693 ; Extended_Pictographic# E0.6 [1] (⚓) anchor
+2694 ; Extended_Pictographic# E1.0 [1] (⚔️) crossed swords
+2695 ; Extended_Pictographic# E4.0 [1] (⚕️) medical symbol
+2696..2697 ; Extended_Pictographic# E1.0 [2] (⚖️..⚗️) balance scale..alembic
+2698 ; Extended_Pictographic# E0.0 [1] (⚘) FLOWER
+2699 ; Extended_Pictographic# E1.0 [1] (⚙️) gear
+269A ; Extended_Pictographic# E0.0 [1] (⚚) STAFF OF HERMES
+269B..269C ; Extended_Pictographic# E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis
+269D..269F ; Extended_Pictographic# E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT
+26A0..26A1 ; Extended_Pictographic# E0.6 [2] (⚠️..⚡) warning..high voltage
+26A2..26A6 ; Extended_Pictographic# E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN
+26A7 ; Extended_Pictographic# E13.0 [1] (⚧️) transgender symbol
+26A8..26A9 ; Extended_Pictographic# E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN
+26AA..26AB ; Extended_Pictographic# E0.6 [2] (⚪..⚫) white circle..black circle
+26AC..26AF ; Extended_Pictographic# E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL
+26B0..26B1 ; Extended_Pictographic# E1.0 [2] (⚰️..⚱️) coffin..funeral urn
+26B2..26BC ; Extended_Pictographic# E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE
+26BD..26BE ; Extended_Pictographic# E0.6 [2] (⚽..⚾) soccer ball..baseball
+26BF..26C3 ; Extended_Pictographic# E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING
+26C4..26C5 ; Extended_Pictographic# E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26C6..26C7 ; Extended_Pictographic# E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN
+26C8 ; Extended_Pictographic# E0.7 [1] (⛈️) cloud with lightning and rain
+26C9..26CD ; Extended_Pictographic# E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR
+26CE ; Extended_Pictographic# E0.6 [1] (⛎) Ophiuchus
+26CF ; Extended_Pictographic# E0.7 [1] (⛏️) pick
+26D0 ; Extended_Pictographic# E0.0 [1] (⛐) CAR SLIDING
+26D1 ; Extended_Pictographic# E0.7 [1] (⛑️) rescue worker’s helmet
+26D2 ; Extended_Pictographic# E0.0 [1] (⛒) CIRCLED CROSSING LANES
+26D3 ; Extended_Pictographic# E0.7 [1] (⛓️) chains
+26D4 ; Extended_Pictographic# E0.6 [1] (⛔) no entry
+26D5..26E8 ; Extended_Pictographic# E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD
+26E9 ; Extended_Pictographic# E0.7 [1] (⛩️) shinto shrine
+26EA ; Extended_Pictographic# E0.6 [1] (⛪) church
+26EB..26EF ; Extended_Pictographic# E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE
+26F0..26F1 ; Extended_Pictographic# E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground
+26F2..26F3 ; Extended_Pictographic# E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F4 ; Extended_Pictographic# E0.7 [1] (⛴️) ferry
+26F5 ; Extended_Pictographic# E0.6 [1] (⛵) sailboat
+26F6 ; Extended_Pictographic# E0.0 [1] (⛶) SQUARE FOUR CORNERS
+26F7..26F9 ; Extended_Pictographic# E0.7 [3] (⛷️..⛹️) skier..person bouncing ball
+26FA ; Extended_Pictographic# E0.6 [1] (⛺) tent
+26FB..26FC ; Extended_Pictographic# E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
+26FD ; Extended_Pictographic# E0.6 [1] (⛽) fuel pump
+26FE..2701 ; Extended_Pictographic# E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS
+2702 ; Extended_Pictographic# E0.6 [1] (✂️) scissors
+2703..2704 ; Extended_Pictographic# E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS
+2705 ; Extended_Pictographic# E0.6 [1] (✅) check mark button
+2708..270C ; Extended_Pictographic# E0.6 [5] (✈️..✌️) airplane..victory hand
+270D ; Extended_Pictographic# E0.7 [1] (✍️) writing hand
+270E ; Extended_Pictographic# E0.0 [1] (✎) LOWER RIGHT PENCIL
+270F ; Extended_Pictographic# E0.6 [1] (✏️) pencil
+2710..2711 ; Extended_Pictographic# E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB
+2712 ; Extended_Pictographic# E0.6 [1] (✒️) black nib
+2714 ; Extended_Pictographic# E0.6 [1] (✔️) check mark
+2716 ; Extended_Pictographic# E0.6 [1] (✖️) multiply
+271D ; Extended_Pictographic# E0.7 [1] (✝️) latin cross
+2721 ; Extended_Pictographic# E0.7 [1] (✡️) star of David
+2728 ; Extended_Pictographic# E0.6 [1] (✨) sparkles
+2733..2734 ; Extended_Pictographic# E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
+2744 ; Extended_Pictographic# E0.6 [1] (❄️) snowflake
+2747 ; Extended_Pictographic# E0.6 [1] (❇️) sparkle
+274C ; Extended_Pictographic# E0.6 [1] (❌) cross mark
+274E ; Extended_Pictographic# E0.6 [1] (❎) cross mark button
+2753..2755 ; Extended_Pictographic# E0.6 [3] (❓..❕) red question mark..white exclamation mark
+2757 ; Extended_Pictographic# E0.6 [1] (❗) red exclamation mark
+2763 ; Extended_Pictographic# E1.0 [1] (❣️) heart exclamation
+2764 ; Extended_Pictographic# E0.6 [1] (❤️) red heart
+2765..2767 ; Extended_Pictographic# E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET
+2795..2797 ; Extended_Pictographic# E0.6 [3] (➕..➗) plus..divide
+27A1 ; Extended_Pictographic# E0.6 [1] (➡️) right arrow
+27B0 ; Extended_Pictographic# E0.6 [1] (➰) curly loop
+27BF ; Extended_Pictographic# E1.0 [1] (➿) double curly loop
+2934..2935 ; Extended_Pictographic# E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
+2B05..2B07 ; Extended_Pictographic# E0.6 [3] (⬅️..⬇️) left arrow..down arrow
+2B1B..2B1C ; Extended_Pictographic# E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Extended_Pictographic# E0.6 [1] (⭐) star
+2B55 ; Extended_Pictographic# E0.6 [1] (⭕) hollow red circle
+3030 ; Extended_Pictographic# E0.6 [1] (〰️) wavy dash
+303D ; Extended_Pictographic# E0.6 [1] (〽️) part alternation mark
+3297 ; Extended_Pictographic# E0.6 [1] (㊗️) Japanese “congratulations” button
+3299 ; Extended_Pictographic# E0.6 [1] (㊙️) Japanese “secret” button
+1F000..1F003 ; Extended_Pictographic# E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND
+1F004 ; Extended_Pictographic# E0.6 [1] (🀄) mahjong red dragon
+1F005..1F0CE ; Extended_Pictographic# E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS
+1F0CF ; Extended_Pictographic# E0.6 [1] (🃏) joker
+1F0D0..1F0FF ; Extended_Pictographic# E0.0 [48] (..) ..
+1F10D..1F10F ; Extended_Pictographic# E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+1F12F ; Extended_Pictographic# E0.0 [1] (🄯) COPYLEFT SYMBOL
+1F16C..1F16F ; Extended_Pictographic# E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE
+1F170..1F171 ; Extended_Pictographic# E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
+1F17E..1F17F ; Extended_Pictographic# E0.6 [2] (🅾️..🅿️) O button (blood type)..P button
+1F18E ; Extended_Pictographic# E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Extended_Pictographic# E0.6 [10] (🆑..🆚) CL button..VS button
+1F1AD..1F1E5 ; Extended_Pictographic# E0.0 [57] (🆭..) MASK WORK SYMBOL..
+1F201..1F202 ; Extended_Pictographic# E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
+1F203..1F20F ; Extended_Pictographic# E0.0 [13] (..) ..
+1F21A ; Extended_Pictographic# E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Extended_Pictographic# E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F23A ; Extended_Pictographic# E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
+1F23C..1F23F ; Extended_Pictographic# E0.0 [4] (..) ..
+1F249..1F24F ; Extended_Pictographic# E0.0 [7] (..) ..
+1F250..1F251 ; Extended_Pictographic# E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F252..1F2FF ; Extended_Pictographic# E0.0 [174] (..) ..
+1F300..1F30C ; Extended_Pictographic# E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Extended_Pictographic# E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Extended_Pictographic# E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Extended_Pictographic# E1.0 [1] (🌐) globe with meridians
+1F311 ; Extended_Pictographic# E0.6 [1] (🌑) new moon
+1F312 ; Extended_Pictographic# E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Extended_Pictographic# E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Extended_Pictographic# E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Extended_Pictographic# E0.6 [1] (🌙) crescent moon
+1F31A ; Extended_Pictographic# E1.0 [1] (🌚) new moon face
+1F31B ; Extended_Pictographic# E0.6 [1] (🌛) first quarter moon face
+1F31C ; Extended_Pictographic# E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Extended_Pictographic# E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Extended_Pictographic# E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F321 ; Extended_Pictographic# E0.7 [1] (🌡️) thermometer
+1F322..1F323 ; Extended_Pictographic# E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN
+1F324..1F32C ; Extended_Pictographic# E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face
+1F32D..1F32F ; Extended_Pictographic# E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Extended_Pictographic# E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Extended_Pictographic# E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Extended_Pictographic# E0.6 [2] (🌴..🌵) palm tree..cactus
+1F336 ; Extended_Pictographic# E0.7 [1] (🌶️) hot pepper
+1F337..1F34A ; Extended_Pictographic# E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Extended_Pictographic# E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Extended_Pictographic# E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Extended_Pictographic# E1.0 [1] (🍐) pear
+1F351..1F37B ; Extended_Pictographic# E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Extended_Pictographic# E1.0 [1] (🍼) baby bottle
+1F37D ; Extended_Pictographic# E0.7 [1] (🍽️) fork and knife with plate
+1F37E..1F37F ; Extended_Pictographic# E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Extended_Pictographic# E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F394..1F395 ; Extended_Pictographic# E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS
+1F396..1F397 ; Extended_Pictographic# E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon
+1F398 ; Extended_Pictographic# E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS
+1F399..1F39B ; Extended_Pictographic# E0.7 [3] (🎙️..🎛️) studio microphone..control knobs
+1F39C..1F39D ; Extended_Pictographic# E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES
+1F39E..1F39F ; Extended_Pictographic# E0.7 [2] (🎞️..🎟️) film frames..admission tickets
+1F3A0..1F3C4 ; Extended_Pictographic# E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Extended_Pictographic# E1.0 [1] (🏅) sports medal
+1F3C6 ; Extended_Pictographic# E0.6 [1] (🏆) trophy
+1F3C7 ; Extended_Pictographic# E1.0 [1] (🏇) horse racing
+1F3C8 ; Extended_Pictographic# E0.6 [1] (🏈) american football
+1F3C9 ; Extended_Pictographic# E1.0 [1] (🏉) rugby football
+1F3CA ; Extended_Pictographic# E0.6 [1] (🏊) person swimming
+1F3CB..1F3CE ; Extended_Pictographic# E0.7 [4] (🏋️..🏎️) person lifting weights..racing car
+1F3CF..1F3D3 ; Extended_Pictographic# E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3D4..1F3DF ; Extended_Pictographic# E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium
+1F3E0..1F3E3 ; Extended_Pictographic# E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Extended_Pictographic# E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Extended_Pictographic# E0.6 [12] (🏥..🏰) hospital..castle
+1F3F1..1F3F2 ; Extended_Pictographic# E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT
+1F3F3 ; Extended_Pictographic# E0.7 [1] (🏳️) white flag
+1F3F4 ; Extended_Pictographic# E1.0 [1] (🏴) black flag
+1F3F5 ; Extended_Pictographic# E0.7 [1] (🏵️) rosette
+1F3F6 ; Extended_Pictographic# E0.0 [1] (🏶) BLACK ROSETTE
+1F3F7 ; Extended_Pictographic# E0.7 [1] (🏷️) label
+1F3F8..1F3FA ; Extended_Pictographic# E1.0 [3] (🏸..🏺) badminton..amphora
+1F400..1F407 ; Extended_Pictographic# E1.0 [8] (🐀..🐇) rat..rabbit
+1F408 ; Extended_Pictographic# E0.7 [1] (🐈) cat
+1F409..1F40B ; Extended_Pictographic# E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Extended_Pictographic# E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Extended_Pictographic# E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Extended_Pictographic# E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Extended_Pictographic# E1.0 [1] (🐓) rooster
+1F414 ; Extended_Pictographic# E0.6 [1] (🐔) chicken
+1F415 ; Extended_Pictographic# E0.7 [1] (🐕) dog
+1F416 ; Extended_Pictographic# E1.0 [1] (🐖) pig
+1F417..1F429 ; Extended_Pictographic# E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Extended_Pictographic# E1.0 [1] (🐪) camel
+1F42B..1F43E ; Extended_Pictographic# E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F43F ; Extended_Pictographic# E0.7 [1] (🐿️) chipmunk
+1F440 ; Extended_Pictographic# E0.6 [1] (👀) eyes
+1F441 ; Extended_Pictographic# E0.7 [1] (👁️) eye
+1F442..1F464 ; Extended_Pictographic# E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Extended_Pictographic# E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Extended_Pictographic# E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Extended_Pictographic# E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Extended_Pictographic# E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Extended_Pictographic# E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Extended_Pictographic# E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Extended_Pictographic# E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Extended_Pictographic# E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Extended_Pictographic# E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Extended_Pictographic# E0.6 [1] (📮) postbox
+1F4EF ; Extended_Pictographic# E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Extended_Pictographic# E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Extended_Pictographic# E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Extended_Pictographic# E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Extended_Pictographic# E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Extended_Pictographic# E0.6 [4] (📹..📼) video camera..videocassette
+1F4FD ; Extended_Pictographic# E0.7 [1] (📽️) film projector
+1F4FE ; Extended_Pictographic# E0.0 [1] (📾) PORTABLE STEREO
+1F4FF..1F502 ; Extended_Pictographic# E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Extended_Pictographic# E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Extended_Pictographic# E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Extended_Pictographic# E0.7 [1] (🔈) speaker low volume
+1F509 ; Extended_Pictographic# E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Extended_Pictographic# E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Extended_Pictographic# E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Extended_Pictographic# E0.6 [22] (🔖..🔫) bookmark..water pistol
+1F52C..1F52D ; Extended_Pictographic# E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Extended_Pictographic# E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F546..1F548 ; Extended_Pictographic# E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS
+1F549..1F54A ; Extended_Pictographic# E0.7 [2] (🕉️..🕊️) om..dove
+1F54B..1F54E ; Extended_Pictographic# E1.0 [4] (🕋..🕎) kaaba..menorah
+1F54F ; Extended_Pictographic# E0.0 [1] (🕏) BOWL OF HYGIEIA
+1F550..1F55B ; Extended_Pictographic# E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Extended_Pictographic# E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F568..1F56E ; Extended_Pictographic# E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK
+1F56F..1F570 ; Extended_Pictographic# E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock
+1F571..1F572 ; Extended_Pictographic# E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY
+1F573..1F579 ; Extended_Pictographic# E0.7 [7] (🕳️..🕹️) hole..joystick
+1F57A ; Extended_Pictographic# E3.0 [1] (🕺) man dancing
+1F57B..1F586 ; Extended_Pictographic# E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE
+1F587 ; Extended_Pictographic# E0.7 [1] (🖇️) linked paperclips
+1F588..1F589 ; Extended_Pictographic# E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL
+1F58A..1F58D ; Extended_Pictographic# E0.7 [4] (🖊️..🖍️) pen..crayon
+1F58E..1F58F ; Extended_Pictographic# E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN
+1F590 ; Extended_Pictographic# E0.7 [1] (🖐️) hand with fingers splayed
+1F591..1F594 ; Extended_Pictographic# E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND
+1F595..1F596 ; Extended_Pictographic# E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F597..1F5A3 ; Extended_Pictographic# E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX
+1F5A4 ; Extended_Pictographic# E3.0 [1] (🖤) black heart
+1F5A5 ; Extended_Pictographic# E0.7 [1] (🖥️) desktop computer
+1F5A6..1F5A7 ; Extended_Pictographic# E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS
+1F5A8 ; Extended_Pictographic# E0.7 [1] (🖨️) printer
+1F5A9..1F5B0 ; Extended_Pictographic# E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE
+1F5B1..1F5B2 ; Extended_Pictographic# E0.7 [2] (🖱️..🖲️) computer mouse..trackball
+1F5B3..1F5BB ; Extended_Pictographic# E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE
+1F5BC ; Extended_Pictographic# E0.7 [1] (🖼️) framed picture
+1F5BD..1F5C1 ; Extended_Pictographic# E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER
+1F5C2..1F5C4 ; Extended_Pictographic# E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet
+1F5C5..1F5D0 ; Extended_Pictographic# E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES
+1F5D1..1F5D3 ; Extended_Pictographic# E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar
+1F5D4..1F5DB ; Extended_Pictographic# E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL
+1F5DC..1F5DE ; Extended_Pictographic# E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper
+1F5DF..1F5E0 ; Extended_Pictographic# E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART
+1F5E1 ; Extended_Pictographic# E0.7 [1] (🗡️) dagger
+1F5E2 ; Extended_Pictographic# E0.0 [1] (🗢) LIPS
+1F5E3 ; Extended_Pictographic# E0.7 [1] (🗣️) speaking head
+1F5E4..1F5E7 ; Extended_Pictographic# E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT
+1F5E8 ; Extended_Pictographic# E2.0 [1] (🗨️) left speech bubble
+1F5E9..1F5EE ; Extended_Pictographic# E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE
+1F5EF ; Extended_Pictographic# E0.7 [1] (🗯️) right anger bubble
+1F5F0..1F5F2 ; Extended_Pictographic# E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD
+1F5F3 ; Extended_Pictographic# E0.7 [1] (🗳️) ballot box with ballot
+1F5F4..1F5F9 ; Extended_Pictographic# E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK
+1F5FA ; Extended_Pictographic# E0.7 [1] (🗺️) world map
+1F5FB..1F5FF ; Extended_Pictographic# E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Extended_Pictographic# E1.0 [1] (😀) grinning face
+1F601..1F606 ; Extended_Pictographic# E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Extended_Pictographic# E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Extended_Pictographic# E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Extended_Pictographic# E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Extended_Pictographic# E0.6 [1] (😏) smirking face
+1F610 ; Extended_Pictographic# E0.7 [1] (😐) neutral face
+1F611 ; Extended_Pictographic# E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Extended_Pictographic# E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Extended_Pictographic# E1.0 [1] (😕) confused face
+1F616 ; Extended_Pictographic# E0.6 [1] (😖) confounded face
+1F617 ; Extended_Pictographic# E1.0 [1] (😗) kissing face
+1F618 ; Extended_Pictographic# E0.6 [1] (😘) face blowing a kiss
+1F619 ; Extended_Pictographic# E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Extended_Pictographic# E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Extended_Pictographic# E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Extended_Pictographic# E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Extended_Pictographic# E1.0 [1] (😟) worried face
+1F620..1F625 ; Extended_Pictographic# E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Extended_Pictographic# E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Extended_Pictographic# E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Extended_Pictographic# E1.0 [1] (😬) grimacing face
+1F62D ; Extended_Pictographic# E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Extended_Pictographic# E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Extended_Pictographic# E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Extended_Pictographic# E1.0 [1] (😴) sleeping face
+1F635 ; Extended_Pictographic# E0.6 [1] (😵) face with crossed-out eyes
+1F636 ; Extended_Pictographic# E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Extended_Pictographic# E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Extended_Pictographic# E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Extended_Pictographic# E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Extended_Pictographic# E0.6 [1] (🚀) rocket
+1F681..1F682 ; Extended_Pictographic# E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Extended_Pictographic# E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Extended_Pictographic# E1.0 [1] (🚆) train
+1F687 ; Extended_Pictographic# E0.6 [1] (🚇) metro
+1F688 ; Extended_Pictographic# E1.0 [1] (🚈) light rail
+1F689 ; Extended_Pictographic# E0.6 [1] (🚉) station
+1F68A..1F68B ; Extended_Pictographic# E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Extended_Pictographic# E0.6 [1] (🚌) bus
+1F68D ; Extended_Pictographic# E0.7 [1] (🚍) oncoming bus
+1F68E ; Extended_Pictographic# E1.0 [1] (🚎) trolleybus
+1F68F ; Extended_Pictographic# E0.6 [1] (🚏) bus stop
+1F690 ; Extended_Pictographic# E1.0 [1] (🚐) minibus
+1F691..1F693 ; Extended_Pictographic# E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Extended_Pictographic# E0.7 [1] (🚔) oncoming police car
+1F695 ; Extended_Pictographic# E0.6 [1] (🚕) taxi
+1F696 ; Extended_Pictographic# E1.0 [1] (🚖) oncoming taxi
+1F697 ; Extended_Pictographic# E0.6 [1] (🚗) automobile
+1F698 ; Extended_Pictographic# E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Extended_Pictographic# E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Extended_Pictographic# E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Extended_Pictographic# E0.6 [1] (🚢) ship
+1F6A3 ; Extended_Pictographic# E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Extended_Pictographic# E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Extended_Pictographic# E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Extended_Pictographic# E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Extended_Pictographic# E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Extended_Pictographic# E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Extended_Pictographic# E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Extended_Pictographic# E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Extended_Pictographic# E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Extended_Pictographic# E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Extended_Pictographic# E1.0 [1] (🚿) shower
+1F6C0 ; Extended_Pictographic# E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Extended_Pictographic# E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6C6..1F6CA ; Extended_Pictographic# E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL
+1F6CB ; Extended_Pictographic# E0.7 [1] (🛋️) couch and lamp
+1F6CC ; Extended_Pictographic# E1.0 [1] (🛌) person in bed
+1F6CD..1F6CF ; Extended_Pictographic# E0.7 [3] (🛍️..🛏️) shopping bags..bed
+1F6D0 ; Extended_Pictographic# E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Extended_Pictographic# E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D3..1F6D4 ; Extended_Pictographic# E0.0 [2] (🛓..🛔) STUPA..PAGODA
+1F6D5 ; Extended_Pictographic# E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Extended_Pictographic# E13.0 [2] (🛖..🛗) hut..elevator
+1F6D8..1F6DB ; Extended_Pictographic# E0.0 [4] (..) ..
+1F6DC ; Extended_Pictographic# E15.0 [1] (🛜) wireless
+1F6DD..1F6DF ; Extended_Pictographic# E14.0 [3] (🛝..🛟) playground slide..ring buoy
+1F6E0..1F6E5 ; Extended_Pictographic# E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
+1F6E6..1F6E8 ; Extended_Pictographic# E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE
+1F6E9 ; Extended_Pictographic# E0.7 [1] (🛩️) small airplane
+1F6EA ; Extended_Pictographic# E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE
+1F6EB..1F6EC ; Extended_Pictographic# E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6ED..1F6EF ; Extended_Pictographic# E0.0 [3] (..) ..
+1F6F0 ; Extended_Pictographic# E0.7 [1] (🛰️) satellite
+1F6F1..1F6F2 ; Extended_Pictographic# E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE
+1F6F3 ; Extended_Pictographic# E0.7 [1] (🛳️) passenger ship
+1F6F4..1F6F6 ; Extended_Pictographic# E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Extended_Pictographic# E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Extended_Pictographic# E11.0 [1] (🛹) skateboard
+1F6FA ; Extended_Pictographic# E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Extended_Pictographic# E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F6FD..1F6FF ; Extended_Pictographic# E0.0 [3] (..) ..
+1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) LOT OF FORTUNE..ORCUS
+1F7D5..1F7DF ; Extended_Pictographic# E0.0 [11] (🟕..) CIRCLED TRIANGLE..
+1F7E0..1F7EB ; Extended_Pictographic# E12.0 [12] (🟠..🟫) orange circle..brown square
+1F7EC..1F7EF ; Extended_Pictographic# E0.0 [4] (..) ..
+1F7F0 ; Extended_Pictographic# E14.0 [1] (🟰) heavy equals sign
+1F7F1..1F7FF ; Extended_Pictographic# E0.0 [15] (..) ..
+1F80C..1F80F ; Extended_Pictographic# E0.0 [4] (..) ..
+1F848..1F84F ; Extended_Pictographic# E0.0 [8] (..) ..
+1F85A..1F85F ; Extended_Pictographic# E0.0 [6] (..) ..
+1F888..1F88F ; Extended_Pictographic# E0.0 [8] (..) ..
+1F8AE..1F8FF ; Extended_Pictographic# E0.0 [82] (..) ..
+1F90C ; Extended_Pictographic# E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Extended_Pictographic# E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Extended_Pictographic# E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Extended_Pictographic# E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Extended_Pictographic# E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Extended_Pictographic# E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Extended_Pictographic# E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Extended_Pictographic# E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Extended_Pictographic# E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Extended_Pictographic# E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Extended_Pictographic# E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Extended_Pictographic# E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Extended_Pictographic# E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Extended_Pictographic# E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Extended_Pictographic# E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Extended_Pictographic# E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Extended_Pictographic# E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Extended_Pictographic# E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Extended_Pictographic# E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Extended_Pictographic# E12.0 [1] (🥱) yawning face
+1F972 ; Extended_Pictographic# E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Extended_Pictographic# E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Extended_Pictographic# E13.0 [2] (🥷..🥸) ninja..disguised face
+1F979 ; Extended_Pictographic# E14.0 [1] (🥹) face holding back tears
+1F97A ; Extended_Pictographic# E11.0 [1] (🥺) pleading face
+1F97B ; Extended_Pictographic# E12.0 [1] (🥻) sari
+1F97C..1F97F ; Extended_Pictographic# E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Extended_Pictographic# E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Extended_Pictographic# E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Extended_Pictographic# E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Extended_Pictographic# E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Extended_Pictographic# E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Extended_Pictographic# E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Extended_Pictographic# E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Extended_Pictographic# E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Extended_Pictographic# E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Extended_Pictographic# E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Extended_Pictographic# E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Extended_Pictographic# E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Extended_Pictographic# E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Extended_Pictographic# E13.0 [1] (🧋) bubble tea
+1F9CC ; Extended_Pictographic# E14.0 [1] (🧌) troll
+1F9CD..1F9CF ; Extended_Pictographic# E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Extended_Pictographic# E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Extended_Pictographic# E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA00..1FA6F ; Extended_Pictographic# E0.0 [112] (🨀..) NEUTRAL CHESS KING..
+1FA70..1FA73 ; Extended_Pictographic# E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Extended_Pictographic# E13.0 [1] (🩴) thong sandal
+1FA75..1FA77 ; Extended_Pictographic# E15.0 [3] (🩵..🩷) light blue heart..pink heart
+1FA78..1FA7A ; Extended_Pictographic# E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA7B..1FA7C ; Extended_Pictographic# E14.0 [2] (🩻..🩼) x-ray..crutch
+1FA7D..1FA7F ; Extended_Pictographic# E0.0 [3] (..) ..
+1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA87..1FA88 ; Extended_Pictographic# E15.0 [2] (🪇..🪈) maracas..flute
+1FA89 ; Extended_Pictographic# E16.0 [1] () harp
+1FA8A..1FA8E ; Extended_Pictographic# E0.0 [5] (..) ..
+1FA8F ; Extended_Pictographic# E16.0 [1] () shovel
+1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock
+1FAA9..1FAAC ; Extended_Pictographic# E14.0 [4] (🪩..🪬) mirror ball..hamsa
+1FAAD..1FAAF ; Extended_Pictographic# E15.0 [3] (🪭..🪯) folding hand fan..khanda
+1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather
+1FAB7..1FABA ; Extended_Pictographic# E14.0 [4] (🪷..🪺) lotus..nest with eggs
+1FABB..1FABD ; Extended_Pictographic# E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABE ; Extended_Pictographic# E16.0 [1] () leafless tree
+1FABF ; Extended_Pictographic# E15.0 [1] (🪿) goose
+1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAC3..1FAC5 ; Extended_Pictographic# E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAC6 ; Extended_Pictographic# E16.0 [1] () fingerprint
+1FAC7..1FACD ; Extended_Pictographic# E0.0 [7] (..) ..
+1FACE..1FACF ; Extended_Pictographic# E15.0 [2] (🫎..🫏) moose..donkey
+1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot
+1FAD7..1FAD9 ; Extended_Pictographic# E14.0 [3] (🫗..🫙) pouring liquid..jar
+1FADA..1FADB ; Extended_Pictographic# E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FADC ; Extended_Pictographic# E16.0 [1] () root vegetable
+1FADD..1FADE ; Extended_Pictographic# E0.0 [2] (..) ..
+1FADF ; Extended_Pictographic# E16.0 [1] () splatter
+1FAE0..1FAE7 ; Extended_Pictographic# E14.0 [8] (🫠..🫧) melting face..bubbles
+1FAE8 ; Extended_Pictographic# E15.0 [1] (🫨) shaking face
+1FAE9 ; Extended_Pictographic# E16.0 [1] () face with bags under eyes
+1FAEA..1FAEF ; Extended_Pictographic# E0.0 [6] (..) ..
+1FAF0..1FAF6 ; Extended_Pictographic# E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
+1FAF7..1FAF8 ; Extended_Pictographic# E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
+1FAF9..1FAFF ; Extended_Pictographic# E0.0 [7] (..) ..
+1FC00..1FFFD ; Extended_Pictographic# E0.0[1022] (..) ..
+
+# Total elements: 3537
+
+#EOF
diff --git a/resources/stats/stats.sh b/resources/stats/stats.sh
index 791aba8e14..949d137e4b 100755
--- a/resources/stats/stats.sh
+++ b/resources/stats/stats.sh
@@ -13,7 +13,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
cd "$THIS_SCRIPT_PATH"
-platforms=(android/ ios/ linux/ mac/ web/ windows/ developer/ core/ common/models/)
+platforms=(android/ ios/ linux/ mac/ web/ windows/ developer/ core/)
builder_describe "Stats collector for Keyman PRs and issues
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 7f69376372..9369051820 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -27,10 +27,9 @@
"paths": {
"@keymanapp/common-types": ["./common/web/types/src/main"],
"@keymanapp/keyman": ["./web" ],
- "@keymanapp/models-types": ["./common/models/types"],
- "@keymanapp/models-templates": ["./common/models/templates"],
- "@keymanapp/models-wordbreakers": ["./common/models/wordbreakers"],
- "@keymanapp/web-utils": ["./common/web/utils"],
+ "@keymanapp/models-templates": ["./web/src/engine/predictive-text/templates/"],
+ "@keymanapp/models-wordbreakers": ["./web/src/engine/predictive-text/wordbreakers"],
+ "@keymanapp/web-utils": ["./web/src/engine/common/web-utils"],
"@keymanapp/lm-message-types": ["./web/src/engine/predictive-text/types"],
"@keymanapp/keyman-version": ["./common/web/keyman-version"],
"@keymanapp/ldml-keyboard-constants": [ "./core/include/ldml" ],
diff --git a/tsconfig.json b/tsconfig.json
index 1a02e20ff1..28f8eab293 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,18 +2,10 @@
"references": [
{ "path": "./core/include/ldml/tsconfig.json" },
- { "path": "./common/models/templates/tsconfig.json" },
- { "path": "./common/models/types/tsconfig.json" },
- { "path": "./common/models/wordbreakers/tsconfig.json" },
{ "path": "./common/tools/hextobin/" },
- { "path": "./common/web/gesture-recognizer/tsconfig.json" },
- { "path": "./common/web/gesture-recognizer/src/tools/unit-test-resources/tsconfig.json" },
{ "path": "./common/web/keyman-version" },
- { "path": "./common/web/recorder/tsconfig.json" },
- { "path": "./common/web/sentry-manager/src/tsconfig.json" },
{ "path": "./common/web/types/" },
- { "path": "./common/web/utils/tsconfig.json" },
{ "path": "./developer/src/common/web/test-helpers/tsconfig.json" },
{ "path": "./developer/src/common/web/utils/tsconfig.json" },
@@ -40,9 +32,17 @@
{ "path": "./resources/build/version/" },
{ "path": "./web/src/tsconfig.all.json" },
+ { "path": "./web/src/engine/common/web-utils" },
{ "path": "./web/src/engine/predictive-text/types/" },
+ { "path": "./web/src/engine/predictive-text/templates" },
+ { "path": "./web/src/engine/predictive-text/wordbreakers" },
{ "path": "./web/src/engine/predictive-text/worker-main/tsconfig.all.json" },
{ "path": "./web/src/engine/predictive-text/worker-thread" },
+ { "path": "./web/src/engine/osk/gesture-processor/tsconfig.json" },
+ { "path": "./web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/tsconfig.json" },
+ { "path": "./web/src/engine/sentry-manager" },
+
+ { "path": "./web/src/tools/recorder-recorder" },
// { "path": "./web/tools/recorder/tsconfig.json" },
// { "path": "./web/tools/sourcemap-root/tsconfig.json" },
]
diff --git a/web/.mocharc.json b/web/.mocharc.json
new file mode 100644
index 0000000000..e8ecf2c60f
--- /dev/null
+++ b/web/.mocharc.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "https://json.schemastore.org/mocharc.json",
+ "require": "tsx"
+}
diff --git a/web/README.md b/web/README.md
index f09fe519bb..7f7415c698 100644
--- a/web/README.md
+++ b/web/README.md
@@ -84,17 +84,17 @@ graph TD;
KeyboardSpec["/web/src/engine/keyboard"];
JSProc["/web/src/engine/js-processor"];
OSK-->KeyboardSpec;
- WebUtils["@keymanapp/web-utils
(/common/web/utils)"];
+ WebUtils["@keymanapp/web-utils
(/web/src/engine/common/web-utils)"];
KeyboardSpec---->WebUtils;
- Wordbreakers["@keymanapp/models-wordbreakers
(/common/models/wordbreakers)"];
- Models["@keymanapp/models-templates
(/common/models/templates)"];
+ Wordbreakers["@keymanapp/models-wordbreakers
(/web/src/engine/predictive-text/wordbreakers)"];
+ Models["@keymanapp/models-templates
(/web/src/engine/predictive-text/templates/)"];
Models-->WebUtils;
LMWorker["@keymanapp/lm-worker
(/web/src/engine/predictive-text/worker-thread)"];
LMWorker-->Models;
LMWorker-->Wordbreakers;
LMLayer["@keymanapp/lexical-model-layer
(/web/src/engine/predictive-text/worker-main)"];
LMLayer-->LMWorker;
- Gestures["@keymanapp/gesture-recognizer
(/common/web/gesture-recognizer)"];
+ Gestures["@keymanapp/gesture-recognizer
(/web/src/engine/osk/gesture-recognizer)"];
Gestures-->WebUtils;
subgraph PredText["PredText: WebWorker + its interface"]
@@ -116,8 +116,6 @@ graph TD;
subgraph ClassicWeb["`**ClassicWeb**
Intermediate-level engine modules`"]
- Device["/web/src/engine/device-detect"];
- Device----->WebUtils;
Elements["/web/src/engine/element-wrappers"];
Elements-->JSProc;
KeyboardStorage["/web/src/engine/keyboard-storage"];
diff --git a/web/build.sh b/web/build.sh
index 16d3d11235..be1227cdee 100755
--- a/web/build.sh
+++ b/web/build.sh
@@ -23,7 +23,6 @@ builder_describe "Builds engine modules for Keyman Engine for Web (KMW)." \
":app/webview A puppetable version of KMW designed for use in a host app's WebView" \
":app/ui Builds KMW's desktop form-factor keyboard-selection UI modules" \
":engine/attachment Subset used for detecting valid page contexts for use in text editing " \
- ":engine/device-detect Subset used for device-detection " \
":engine/dom-utils A common subset of function used for DOM calculations, layout, etc" \
":engine/events Specialized classes utilized to support KMW API events" \
":engine/element-wrappers Subset used to integrate with website elements" \
@@ -56,7 +55,6 @@ builder_describe_outputs \
build:app/webview "/web/build/app/webview/${config}/keymanweb-webview.js" \
build:app/ui "/web/build/app/ui/${config}/kmwuitoggle.js" \
build:engine/attachment "/web/build/engine/attachment/lib/index.mjs" \
- build:engine/device-detect "/web/build/engine/device-detect/lib/index.mjs" \
build:engine/dom-utils "/web/build/engine/dom-utils/obj/index.js" \
build:engine/events "/web/build/engine/events/lib/index.mjs" \
build:engine/element-wrappers "/web/build/engine/element-wrappers/lib/index.mjs" \
@@ -71,7 +69,7 @@ builder_describe_outputs \
build:tools "/web/build/tools/building/sourcemap-root/index.js" \
build:test-pages "/web/build/test-resources/sentry-manager.js"
-BUNDLE_CMD="node ${KEYMAN_ROOT}/common/web/es-bundling/build/common-bundle.mjs"
+BUNDLE_CMD="node ${KEYMAN_ROOT}/web/src/tools/es-bundling/build/common-bundle.mjs"
#### Build action definitions ####
@@ -109,6 +107,11 @@ precompile() {
build_action() {
builder_echo "Building auto tests..."
+
+ # The currently-bundled declaration file for gesture-processor generates
+ # errors when compiling against it with current tsc versions.
+ rm -f "${KEYMAN_ROOT}/node_modules/promise-status-async/lib/index.d.ts"
+
tsc --project "${KEYMAN_ROOT}/web/src/test/auto/tsconfig.json"
for dir in \
@@ -141,7 +144,6 @@ coverage_action() {
cd web
}
-builder_run_child_actions build:engine/device-detect
builder_run_child_actions build:engine/dom-utils
builder_run_child_actions build:engine/keyboard
@@ -159,7 +161,7 @@ builder_run_child_actions build:engine/attachment
# Uses engine/interfaces (due to resource-path config interface)
builder_run_child_actions build:engine/keyboard-storage
-# Uses engine/interfaces, engine/device-detect, engine/keyboard-storage, & engine/osk
+# Uses engine/interfaces, engine/keyboard-storage, & engine/osk
builder_run_child_actions build:engine/main
# Uses all but engine/element-wrappers and engine/attachment
diff --git a/web/ci.sh b/web/ci.sh
index 5e26a1e30e..43f176fdd6 100755
--- a/web/ci.sh
+++ b/web/ci.sh
@@ -63,10 +63,10 @@ if builder_start_action build; then
# Upload the sentry-configuration engine used by the mobile apps to sentry
# Also, clean 'em first.
- for sourcemap in "$KEYMAN_ROOT/common/web/sentry-manager/build/lib/"*.map; do
+ for sourcemap in "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/"*.map; do
node "$KEYMAN_ROOT/web/build/tools/building/sourcemap-root/index.js" null "$sourcemap" --clean
done
- web_sentry_upload "$KEYMAN_ROOT/common/web/sentry-manager/build/lib/"
+ web_sentry_upload "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/"
# And, of course, the main build-products too
web_sentry_upload "$KEYMAN_ROOT/web/build/app/webview/release/"
@@ -86,7 +86,7 @@ if builder_start_action test; then
# No --reporter option exists yet for the headless modules.
"$KEYMAN_ROOT/web/src/engine/keyboard/build.sh" test $OPTIONS
- "$KEYMAN_ROOT/common/web/gesture-recognizer/test.sh" $OPTIONS
+ "$KEYMAN_ROOT/web/src/engine/osk/gesture-processor/build.sh" test $OPTIONS
./build.sh test $OPTIONS
diff --git a/web/common.inc.sh b/web/common.inc.sh
index 9457fa5a41..429c9a9a8d 100644
--- a/web/common.inc.sh
+++ b/web/common.inc.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
#
-BUNDLE_CMD="node $KEYMAN_ROOT/common/web/es-bundling/build/common-bundle.mjs"
+BUNDLE_CMD="node $KEYMAN_ROOT/web/src/tools/es-bundling/build/common-bundle.mjs"
# Compiles all build products corresponding to the specified target.
# This should be called from the working directory of a child project's
@@ -10,6 +10,8 @@ BUNDLE_CMD="node $KEYMAN_ROOT/common/web/es-bundling/build/common-bundle.mjs"
# ### Parameters
#
# * 1: `product` the product's source path under src/
+# * 2: `src_dir` the source directory. Optional. Default: ${KEYMAN_ROOT}/web/src
+# * 3: `build_dir` the build directory. Optional. Default: ${KEYMAN_ROOT}/web/build
#
# ### Example
#
@@ -22,11 +24,13 @@ function compile() {
fi
local COMPILE_TARGET="$1"
+ local SRC_DIR=${2:-"${KEYMAN_ROOT}/web/src"}
+ local BUILD_DIR=${3:-"${KEYMAN_ROOT}/web/build"}
- tsc -b "${KEYMAN_ROOT}/web/src/$COMPILE_TARGET"
+ tsc -b "${SRC_DIR}/$COMPILE_TARGET"
# So... tsc does declaration-bundling on its own pretty well, at least for local development.
- tsc --emitDeclarationOnly --outFile "${KEYMAN_ROOT}/web/build/$COMPILE_TARGET/lib/index.d.ts" -p "${KEYMAN_ROOT}/web/src/$COMPILE_TARGET"
+ tsc --emitDeclarationOnly --outFile "${BUILD_DIR}/$COMPILE_TARGET/lib/index.d.ts" -p "${SRC_DIR}/$COMPILE_TARGET"
}
function _copy_dir_if_exists() {
diff --git a/web/package.json b/web/package.json
index 96a11c0cd3..f30a0b4218 100644
--- a/web/package.json
+++ b/web/package.json
@@ -17,11 +17,6 @@
"types": "./build/engine/interfaces/obj/index.d.ts",
"import": "./build/engine/interfaces/obj/index.js"
},
- "./engine/device-detect": {
- "es6-bundling": "./src/engine/device-detect/src/index.ts",
- "types": "./build/engine/device-detect/obj/index.d.ts",
- "import": "./build/engine/device-detect/obj/index.js"
- },
"./engine/dom-utils": {
"es6-bundling": "./src/engine/dom-utils/src/index.ts",
"types": "./build/engine/dom-utils/obj/index.d.ts",
@@ -89,6 +84,7 @@
}
},
"imports": {
+ "#gesture-tools": "./src/engine/osk/gesture-processor/build/tools/obj/index.js",
"#recorder": "./build/tools/testing/recorder/obj/index.js"
},
"repository": {
@@ -113,7 +109,8 @@
"@zip.js/zip.js": "^2.7.32",
"c8": "^7.12.0",
"jsdom": "^23.0.1",
- "mocha": "^10.0.0"
+ "mocha": "^10.0.0",
+ "tsx": "^4.19.0"
},
"scripts": {
"test": "gosh ./test.sh"
@@ -121,7 +118,7 @@
"dependencies": {
"@keymanapp/keyman-version": "*",
"@keymanapp/lexical-model-layer": "*",
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/recorder-core": "*",
"@keymanapp/web-utils": "*",
"core-js": "^3.34.0",
diff --git a/web/src/app/browser/build.sh b/web/src/app/browser/build.sh
index 1d757e264a..d4c1023314 100755
--- a/web/src/app/browser/build.sh
+++ b/web/src/app/browser/build.sh
@@ -44,22 +44,20 @@ do_clean() {
}
compile_and_copy() {
- local COMPILE_FLAGS=
- if builder_has_option --ci; then
- COMPILE_FLAGS=--ci
- fi
- compile $SUBPROJECT_NAME $COMPILE_FLAGS
+ compile $SUBPROJECT_NAME
BUILD_ROOT="${KEYMAN_ROOT}/web/build/app/browser"
SRC_ROOT="${KEYMAN_ROOT}/web/src/app/browser/src"
$BUNDLE_CMD "${SRC_ROOT}/debug-main.js" \
--out "${BUILD_ROOT}/debug/keymanweb.js" \
+ --charset "utf8" \
--sourceRoot "@keymanapp/keyman/web/build/app/browser/debug" \
--target "es6"
$BUNDLE_CMD "${SRC_ROOT}/release-main.js" \
--out "${BUILD_ROOT}/release/keymanweb.js" \
+ --charset "utf8" \
--profile "${BUILD_ROOT}/filesize-profile.log" \
--sourceRoot "@keymanapp/keyman/web/build/app/browser/release" \
--minify \
@@ -67,6 +65,7 @@ compile_and_copy() {
$BUNDLE_CMD "${BUILD_ROOT}/obj/test-index.js" \
--out "${BUILD_ROOT}/lib/index.mjs" \
+ --charset "utf8" \
--sourceRoot "@keymanapp/keyman/web/build/app/browser/lib" \
--format esm
diff --git a/web/src/app/browser/src/keymanEngine.ts b/web/src/app/browser/src/keymanEngine.ts
index 324394bae2..803d601ec2 100644
--- a/web/src/app/browser/src/keymanEngine.ts
+++ b/web/src/app/browser/src/keymanEngine.ts
@@ -1,5 +1,4 @@
-import { KeymanEngine as KeymanEngineBase } from 'keyman/engine/main';
-import { Device as DeviceDetector } from 'keyman/engine/device-detect';
+import { KeymanEngine as KeymanEngineBase, DeviceDetector } from 'keyman/engine/main';
import { getAbsoluteY } from 'keyman/engine/dom-utils';
import { OutputTarget } from 'keyman/engine/element-wrappers';
import {
@@ -660,7 +659,7 @@ export default class KeymanEngine extends KeymanEngineBase void;
diff --git a/common/web/utils/.c8rc.json b/web/src/engine/common/web-utils/.c8rc.json
similarity index 100%
rename from common/web/utils/.c8rc.json
rename to web/src/engine/common/web-utils/.c8rc.json
diff --git a/common/web/utils/.gitignore b/web/src/engine/common/web-utils/.gitignore
similarity index 100%
rename from common/web/utils/.gitignore
rename to web/src/engine/common/web-utils/.gitignore
diff --git a/common/web/utils/build.sh b/web/src/engine/common/web-utils/build.sh
similarity index 69%
rename from common/web/utils/build.sh
rename to web/src/engine/common/web-utils/build.sh
index 19ab896032..303bd2664b 100755
--- a/common/web/utils/build.sh
+++ b/web/src/engine/common/web-utils/build.sh
@@ -5,39 +5,43 @@
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "${THIS_SCRIPT%/*}/../../../resources/build/builder.inc.sh"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
+. "${KEYMAN_ROOT}/web/common.inc.sh"
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
-BUNDLE_CMD="node $KEYMAN_ROOT/common/web/es-bundling/build/common-bundle.mjs"
+SUBPROJECT_NAME=engine/common/web-utils
+BUILD_DIR="/web/src/engine/common/web-utils/build"
+
+BUNDLE_CMD="node $KEYMAN_ROOT/web/src/tools/es-bundling/build/common-bundle.mjs"
################################ Main script ################################
builder_describe \
"Compiles the web-oriented utility function module." \
"@/common/web/keyman-version" \
- "@/common/web/es-bundling" \
+ "@/web/src/tools/es-bundling" \
clean configure build test \
"--ci For use with action ${BUILDER_TERM_START}test${BUILDER_TERM_END} - emits CI-friendly test reports"
builder_describe_outputs \
configure "/node_modules" \
- build "/common/web/utils/build/obj/index.js"
+ build "${BUILD_DIR}/obj/index.js"
builder_parse "$@"
function do_build() {
- tsc --build "$THIS_SCRIPT_PATH/tsconfig.json"
+ tsc --build $builder_verbose "$THIS_SCRIPT_PATH/tsconfig.json"
# May be useful one day, for building a mass .d.ts for KMW as a whole.
# So... tsc does declaration-bundling on its own pretty well, at least for local development.
- tsc --emitDeclarationOnly --outFile ./build/lib/index.d.ts
+ tsc --emitDeclarationOnly --outFile "${KEYMAN_ROOT}/${BUILD_DIR}/lib/index.d.ts"
# One of the functions (timedPromise) is quite helpful for automated testing, even in the DOM.
# So, to make sure it's easily-accessible for the DOM-based tests...
- $BUNDLE_CMD "${KEYMAN_ROOT}/common/web/utils/build/obj/index.js" \
- --out "${KEYMAN_ROOT}/common/web/utils/build/lib/index.mjs" \
+ $BUNDLE_CMD "${KEYMAN_ROOT}/${BUILD_DIR}/obj/index.js" \
+ --out "${KEYMAN_ROOT}/${BUILD_DIR}/lib/index.mjs" \
--format esm
}
@@ -56,4 +60,4 @@ function do_test() {
builder_run_action configure verify_npm_setup
builder_run_action clean rm -rf build/
builder_run_action build do_build
-builder_run_action test do_test
\ No newline at end of file
+builder_run_action test do_test
diff --git a/common/web/utils/package.json b/web/src/engine/common/web-utils/package.json
similarity index 100%
rename from common/web/utils/package.json
rename to web/src/engine/common/web-utils/package.json
diff --git a/common/web/utils/src/deepCopy.ts b/web/src/engine/common/web-utils/src/deepCopy.ts
similarity index 100%
rename from common/web/utils/src/deepCopy.ts
rename to web/src/engine/common/web-utils/src/deepCopy.ts
diff --git a/common/web/utils/src/deviceSpec.ts b/web/src/engine/common/web-utils/src/deviceSpec.ts
similarity index 100%
rename from common/web/utils/src/deviceSpec.ts
rename to web/src/engine/common/web-utils/src/deviceSpec.ts
diff --git a/common/web/utils/src/globalObject.ts b/web/src/engine/common/web-utils/src/globalObject.ts
similarity index 100%
rename from common/web/utils/src/globalObject.ts
rename to web/src/engine/common/web-utils/src/globalObject.ts
diff --git a/common/web/utils/src/index.ts b/web/src/engine/common/web-utils/src/index.ts
similarity index 100%
rename from common/web/utils/src/index.ts
rename to web/src/engine/common/web-utils/src/index.ts
diff --git a/common/web/utils/src/kmwstring.ts b/web/src/engine/common/web-utils/src/kmwstring.ts
similarity index 100%
rename from common/web/utils/src/kmwstring.ts
rename to web/src/engine/common/web-utils/src/kmwstring.ts
diff --git a/common/web/utils/src/managedPromise.ts b/web/src/engine/common/web-utils/src/managedPromise.ts
similarity index 100%
rename from common/web/utils/src/managedPromise.ts
rename to web/src/engine/common/web-utils/src/managedPromise.ts
diff --git a/common/web/utils/src/priority-queue.ts b/web/src/engine/common/web-utils/src/priority-queue.ts
similarity index 100%
rename from common/web/utils/src/priority-queue.ts
rename to web/src/engine/common/web-utils/src/priority-queue.ts
diff --git a/common/web/utils/src/test/deepCopy.js b/web/src/engine/common/web-utils/src/test/deepCopy.js
similarity index 100%
rename from common/web/utils/src/test/deepCopy.js
rename to web/src/engine/common/web-utils/src/test/deepCopy.js
diff --git a/common/web/utils/src/test/managedPromise.js b/web/src/engine/common/web-utils/src/test/managedPromise.js
similarity index 100%
rename from common/web/utils/src/test/managedPromise.js
rename to web/src/engine/common/web-utils/src/test/managedPromise.js
diff --git a/common/web/utils/src/test/priorityQueue.js b/web/src/engine/common/web-utils/src/test/priorityQueue.js
similarity index 100%
rename from common/web/utils/src/test/priorityQueue.js
rename to web/src/engine/common/web-utils/src/test/priorityQueue.js
diff --git a/common/web/utils/src/test/timeoutPromise.js b/web/src/engine/common/web-utils/src/test/timeoutPromise.js
similarity index 100%
rename from common/web/utils/src/test/timeoutPromise.js
rename to web/src/engine/common/web-utils/src/test/timeoutPromise.js
diff --git a/common/web/utils/src/test/versions.js b/web/src/engine/common/web-utils/src/test/versions.js
similarity index 100%
rename from common/web/utils/src/test/versions.js
rename to web/src/engine/common/web-utils/src/test/versions.js
diff --git a/common/web/utils/src/timeoutPromise.ts b/web/src/engine/common/web-utils/src/timeoutPromise.ts
similarity index 100%
rename from common/web/utils/src/timeoutPromise.ts
rename to web/src/engine/common/web-utils/src/timeoutPromise.ts
diff --git a/common/web/utils/src/version.ts b/web/src/engine/common/web-utils/src/version.ts
similarity index 100%
rename from common/web/utils/src/version.ts
rename to web/src/engine/common/web-utils/src/version.ts
diff --git a/common/web/utils/tsconfig.json b/web/src/engine/common/web-utils/tsconfig.json
similarity index 71%
rename from common/web/utils/tsconfig.json
rename to web/src/engine/common/web-utils/tsconfig.json
index cb87a6a7c4..a4d2e57702 100644
--- a/common/web/utils/tsconfig.json
+++ b/web/src/engine/common/web-utils/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../tsconfig.kmw-main-base.json",
+ "extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"tsBuildInfoFile": "./build/obj/tsconfig.tsbuildinfo",
"baseUrl": "./",
@@ -7,7 +7,7 @@
"rootDir": "./src"
},
"references": [
- { "path": "../keyman-version"}
+ { "path": "../../../../../common/web/keyman-version" },
],
"include": [
"src/*.ts"
diff --git a/web/src/engine/device-detect/build.sh b/web/src/engine/device-detect/build.sh
deleted file mode 100755
index 4e25f55bd7..0000000000
--- a/web/src/engine/device-detect/build.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env bash
-
-## START STANDARD BUILD SCRIPT INCLUDE
-# adjust relative paths as necessary
-THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "${THIS_SCRIPT%/*}/../../../../resources/build/builder.inc.sh"
-## END STANDARD BUILD SCRIPT INCLUDE
-
-SUBPROJECT_NAME=engine/device-detect
-. "$KEYMAN_ROOT/web/common.inc.sh"
-. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
-
-# ################################ Main script ################################
-
-builder_describe "Builds the device-detection component of Keyman Engine for Web (KMW)." \
- "@/common/web/keyman-version" \
- "@/common/web/utils" \
- "clean" \
- "configure" \
- "build" \
- "test" \
- "--ci+ Set to utilize CI-based test configurations & reporting."
-
-# Possible TODO?
-# "upload-symbols Uploads build product to Sentry for error report symbolification. Only defined for $DOC_BUILD_EMBED_WEB" \
-
-builder_describe_outputs \
- configure /node_modules \
- build /web/build/$SUBPROJECT_NAME/lib/index.mjs
-
-builder_parse "$@"
-
-#### Build action definitions ####
-
-do_build () {
- compile $SUBPROJECT_NAME
-
- $BUNDLE_CMD "${KEYMAN_ROOT}/web/build/${SUBPROJECT_NAME}/obj/index.js" \
- --out "${KEYMAN_ROOT}/web/build/${SUBPROJECT_NAME}/lib/index.mjs" \
- --format esm
-}
-
-builder_run_action configure verify_npm_setup
-builder_run_action clean rm -rf "$KEYMAN_ROOT/web/build/$SUBPROJECT_NAME"
-builder_run_action build do_build
-builder_run_action test
-
-# No headless tests for this child project. Currently, DOM-based unit &
-# integrated tests are run solely by the top-level $KEYMAN_ROOT/web project.
\ No newline at end of file
diff --git a/web/src/engine/device-detect/readme.md b/web/src/engine/device-detect/readme.md
deleted file mode 100644
index aa3d725835..0000000000
--- a/web/src/engine/device-detect/readme.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## engine/device-detect
-
-This submodule provides the subset of the main engine's Web-oriented code that's used to detect
-the user's device in isolation from the rest of KMW code. Fortunately, it doesn't have any
-cross-references with other top-level KMW code, so it was possible to modularize in the form
-seen here.
\ No newline at end of file
diff --git a/web/src/engine/device-detect/tsconfig.json b/web/src/engine/device-detect/tsconfig.json
deleted file mode 100644
index a53bb60766..0000000000
--- a/web/src/engine/device-detect/tsconfig.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "extends": "../../tsconfig.dom.json",
-
- "compilerOptions": {
- "baseUrl": "./",
- "outDir": "../../../build/engine/device-detect/obj/",
- "tsBuildInfoFile": "../../../build/engine/device-detect/obj/tsconfig.tsbuildinfo",
- "rootDir": "./src"
- },
-
- "include": [ "**/*.ts" ],
-
- "references": [
- { "path": "../../../../common/web/keyman-version" },
- { "path": "../../../../common/web/utils" }
- ]
-}
diff --git a/web/src/engine/dom-utils/build.sh b/web/src/engine/dom-utils/build.sh
index d2e424db20..f842655c45 100755
--- a/web/src/engine/dom-utils/build.sh
+++ b/web/src/engine/dom-utils/build.sh
@@ -15,7 +15,7 @@ SUBPROJECT_NAME=engine/dom-utils
# ################################ Main script ################################
builder_describe "Builds DOM-utility modules used by the Keyman Engine for Web (KMW)." \
- "@/common/web/utils" \
+ "@/web/src/engine/common/web-utils" \
"@/web/src/engine/keyboard" \
"clean" \
"configure" \
diff --git a/web/src/engine/dom-utils/tsconfig.json b/web/src/engine/dom-utils/tsconfig.json
index dadf4db5c8..aab3cabf87 100644
--- a/web/src/engine/dom-utils/tsconfig.json
+++ b/web/src/engine/dom-utils/tsconfig.json
@@ -12,6 +12,6 @@
"references": [
{ "path": "../keyboard" },
- { "path": "../../../../common/web/utils" }
+ { "path": "../common/web-utils" }
]
}
diff --git a/web/src/engine/events/build.sh b/web/src/engine/events/build.sh
index 1b8993f570..600ca8dc0c 100755
--- a/web/src/engine/events/build.sh
+++ b/web/src/engine/events/build.sh
@@ -13,7 +13,7 @@ SUBPROJECT_NAME=engine/events
# ################################ Main script ################################
builder_describe "Builds specialized event-related modules utilized by Keyman Engine for Web." \
- "@/common/web/utils build" \
+ "@/web/src/engine/common/web-utils build" \
"@/web/src/engine/keyboard build" \
"clean" \
"configure" \
diff --git a/web/src/engine/events/tsconfig.json b/web/src/engine/events/tsconfig.json
index 5d0a45bbab..8ab284c473 100644
--- a/web/src/engine/events/tsconfig.json
+++ b/web/src/engine/events/tsconfig.json
@@ -11,7 +11,7 @@
"include": [ "src/**/*.ts" ],
"references": [
- { "path": "../../../../common/web/utils" },
+ { "path": "../common/web-utils" },
{ "path": "../keyboard" }
]
}
diff --git a/web/src/engine/interfaces/build.sh b/web/src/engine/interfaces/build.sh
index 568bd7940d..94bb267cbc 100755
--- a/web/src/engine/interfaces/build.sh
+++ b/web/src/engine/interfaces/build.sh
@@ -13,7 +13,7 @@ SUBPROJECT_NAME=engine/interfaces
# ################################ Main script ################################
builder_describe "Builds configuration subclasses used by the Keyman Engine for Web (KMW)." \
- "@/common/web/es-bundling" \
+ "@/web/src/tools/es-bundling" \
"@/web/src/engine/keyboard" \
"@/web/src/engine/js-processor" \
"clean" \
diff --git a/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts b/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts
index 84e7851987..303fa99fc3 100644
--- a/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts
+++ b/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts
@@ -1,5 +1,4 @@
-///
-
+import { Suggestion, Reversion } from '@keymanapp/common-types';
import { EventEmitter } from "eventemitter3";
import { OutputTarget } from "keyman/engine/keyboard";
diff --git a/web/src/engine/interfaces/src/prediction/predictionContext.ts b/web/src/engine/interfaces/src/prediction/predictionContext.ts
index cd856153b2..758ef8f46b 100644
--- a/web/src/engine/interfaces/src/prediction/predictionContext.ts
+++ b/web/src/engine/interfaces/src/prediction/predictionContext.ts
@@ -1,4 +1,5 @@
import { EventEmitter } from "eventemitter3";
+import { Keep, Reversion, Suggestion } from '@keymanapp/common-types';
import { type LanguageProcessorSpec , ReadySuggestions, type InvalidateSourceEnum, StateChangeHandler } from './languageProcessor.interface.js';
import { type OutputTarget } from "keyman/engine/keyboard";
@@ -209,7 +210,9 @@ export default class PredictionContext extends EventEmitter
-
import { extendString } from "@keymanapp/web-utils";
import { findCommonSubstringEndIndex } from "./stringDivergence.js";
import { Mock } from "./mock.js";
@@ -10,6 +8,7 @@ extendString();
// Defines deadkey management in a manner attachable to each element interface.
import { type KeyEvent } from 'keyman/engine/keyboard';
import { Deadkey, DeadkeyTracker } from "./deadkeys.js";
+import { ProbabilityMass, Transform } from '@keymanapp/common-types';
// Also relies on string-extensions provided by the web-utils package.
diff --git a/web/src/engine/js-processor/src/ruleBehavior.ts b/web/src/engine/js-processor/src/ruleBehavior.ts
index a6b2c9973a..2923450622 100644
--- a/web/src/engine/js-processor/src/ruleBehavior.ts
+++ b/web/src/engine/js-processor/src/ruleBehavior.ts
@@ -1,10 +1,9 @@
-///
-
import KeyboardProcessor from "./keyboardProcessor.js";
import { VariableStoreDictionary } from "keyman/engine/keyboard";
import OutputTarget, { type Transcription } from './outputTarget.js';
import { Mock } from "./mock.js";
import { type VariableStore } from "./systemStores.js";
+import { Suggestion } from '@keymanapp/common-types';
/**
* Represents the commands and state changes that result from a matched keyboard rule.
diff --git a/web/src/engine/keyboard-storage/build.sh b/web/src/engine/keyboard-storage/build.sh
index 33873355ff..b7ffc4d6b3 100755
--- a/web/src/engine/keyboard-storage/build.sh
+++ b/web/src/engine/keyboard-storage/build.sh
@@ -13,7 +13,7 @@ SUBPROJECT_NAME=engine/keyboard-storage
# ################################ Main script ################################
builder_describe "Builds Keyman Engine modules for keyboard cloud-querying & caching + model caching." \
- "@/common/web/es-bundling" \
+ "@/web/src/tools/es-bundling" \
"clean" \
"configure" \
"build" \
diff --git a/web/src/engine/keyboard/build.sh b/web/src/engine/keyboard/build.sh
index 226a7d9d75..fd15e59bc1 100755
--- a/web/src/engine/keyboard/build.sh
+++ b/web/src/engine/keyboard/build.sh
@@ -17,11 +17,11 @@ SUBPROJECT_NAME=engine/keyboard
builder_describe \
"Compiles the web-oriented utility function module." \
- "@/web/src/tools/testing/recorder-core test" \
"@/common/web/keyman-version" \
- "@/common/web/es-bundling" \
"@/common/web/types" \
- "@/common/web/utils" \
+ "@/web/src/tools/testing/recorder-core test" \
+ "@/web/src/tools/es-bundling" \
+ "@/web/src/engine/common/web-utils" \
configure \
clean \
build \
@@ -66,12 +66,6 @@ function do_build() {
--format esm \
--platform node
- # # Tests
- # builder_echo "Bundle tests"
- # ${BUNDLE_CMD} "${BUILD_DIR}/tests/dom/cases/domKeyboardLoader.spec.js" \
- # --out "${BUILD_DIR}/tests/dom/domKeyboardLoader.spec.mjs" \
- # --format esm
-
# Declaration bundling.
builder_echo "Declaration bundling"
tsc --emitDeclarationOnly --outFile "${BUILD_DIR}/lib/index.d.ts"
diff --git a/web/src/engine/main/build.sh b/web/src/engine/main/build.sh
index 77673626e0..705bfbb902 100755
--- a/web/src/engine/main/build.sh
+++ b/web/src/engine/main/build.sh
@@ -16,7 +16,6 @@ builder_describe "Builds the Keyman Engine for Web's common top-level base class
"@/common/web/keyman-version" \
"@/web/src/engine/keyboard" \
"@/web/src/engine/interfaces build" \
- "@/web/src/engine/device-detect build" \
"@/web/src/engine/js-processor build" \
"@/web/src/engine/keyboard-storage build" \
"@/web/src/engine/osk build" \
diff --git a/web/src/engine/main/src/engineConfiguration.ts b/web/src/engine/main/src/engineConfiguration.ts
index aac559acab..40485c0f0f 100644
--- a/web/src/engine/main/src/engineConfiguration.ts
+++ b/web/src/engine/main/src/engineConfiguration.ts
@@ -3,7 +3,7 @@ import { EventEmitter } from "eventemitter3";
import { DeviceSpec, KeyboardProperties, ManagedPromise, physicalKeyDeviceAlias, SpacebarText } from "keyman/engine/keyboard";
import { OutputTarget, RuleBehavior } from 'keyman/engine/js-processor';
import { PathConfiguration, PathOptionDefaults, PathOptionSpec } from "keyman/engine/interfaces";
-import { Device } from "keyman/engine/device-detect";
+import { DeviceDetector } from "./headless/deviceDetector.js";
import { KeyboardStub } from "keyman/engine/keyboard-storage";
interface EventMap {
@@ -31,7 +31,7 @@ export class EngineConfiguration extends EventEmitter {
super();
if(!device) {
- const deviceDetector = new Device();
+ const deviceDetector = new DeviceDetector();
deviceDetector.detect();
device = deviceDetector.coreSpec;
diff --git a/web/src/engine/main/src/headless/contextWindow.ts b/web/src/engine/main/src/headless/contextWindow.ts
index 9fcd1458b2..fd8385f45e 100644
--- a/web/src/engine/main/src/headless/contextWindow.ts
+++ b/web/src/engine/main/src/headless/contextWindow.ts
@@ -1,3 +1,4 @@
+import { CasingForm, Configuration, Context } from '@keymanapp/common-types';
import { Mock } from "keyman/engine/js-processor";
export default class ContextWindow implements Context {
diff --git a/web/src/engine/device-detect/src/index.ts b/web/src/engine/main/src/headless/deviceDetector.ts
similarity index 98%
rename from web/src/engine/device-detect/src/index.ts
rename to web/src/engine/main/src/headless/deviceDetector.ts
index 97b14280b3..cd0bf7a185 100644
--- a/web/src/engine/device-detect/src/index.ts
+++ b/web/src/engine/main/src/headless/deviceDetector.ts
@@ -1,9 +1,12 @@
+/*
+ * Keyman is copyright (C) SIL International. MIT License.
+ *
+ * Detect the user's device.
+ */
import StyleConstants from './utils/styleConstants.js';
import { DeviceSpec, Version } from "@keymanapp/web-utils";
-// The Device object definition -------------------------------------------------
-
-export class Device {
+export class DeviceDetector {
// These correspond directly to the properties & parameters for `DeviceSpec`.
touchable: boolean;
OS: string;
@@ -203,5 +206,3 @@ export class Device {
return new DeviceSpec(this.browser, this.formFactor, this.OS, this.touchable);
}
}
-
-export default Device;
\ No newline at end of file
diff --git a/web/src/engine/main/src/headless/inputProcessor.ts b/web/src/engine/main/src/headless/inputProcessor.ts
index 6d8904c563..d08774850f 100644
--- a/web/src/engine/main/src/headless/inputProcessor.ts
+++ b/web/src/engine/main/src/headless/inputProcessor.ts
@@ -1,7 +1,5 @@
// Defines a 'polyfill' of sorts for NPM's events module
-///
-
import ContextWindow from "./contextWindow.js";
import { LanguageProcessor } from "./languageProcessor.js";
import type { ModelSpec } from "keyman/engine/interfaces";
@@ -21,6 +19,7 @@ import {
} from 'keyman/engine/js-processor';
import { TranscriptionCache } from "./transcriptionCache.js";
+import { Transform } from '@keymanapp/common-types';
export class InputProcessor {
public static readonly DEFAULT_OPTIONS: ProcessorInitOptions = {
diff --git a/web/src/engine/main/src/headless/languageProcessor.ts b/web/src/engine/main/src/headless/languageProcessor.ts
index cd39afc672..ed82943565 100644
--- a/web/src/engine/main/src/headless/languageProcessor.ts
+++ b/web/src/engine/main/src/headless/languageProcessor.ts
@@ -4,6 +4,7 @@ import { OutputTarget, Transcription, Mock } from "keyman/engine/js-processor";
import { LanguageProcessorEventMap, ModelSpec, StateChangeEnum, ReadySuggestions } from 'keyman/engine/interfaces';
import ContextWindow from "./contextWindow.js";
import { TranscriptionCache } from "./transcriptionCache.js";
+import { Capabilities, Configuration, Reversion, Suggestion } from '@keymanapp/common-types';
/* Is more like the model configuration engine */
export class LanguageProcessor extends EventEmitter {
diff --git a/web/src/engine/device-detect/src/utils/styleConstants.ts b/web/src/engine/main/src/headless/utils/styleConstants.ts
similarity index 100%
rename from web/src/engine/device-detect/src/utils/styleConstants.ts
rename to web/src/engine/main/src/headless/utils/styleConstants.ts
diff --git a/web/src/engine/main/src/index.ts b/web/src/engine/main/src/index.ts
index b928d72c8a..9e33d0d4ef 100644
--- a/web/src/engine/main/src/index.ts
+++ b/web/src/engine/main/src/index.ts
@@ -7,4 +7,5 @@ export { LegacyAPIEvents } from './legacyAPIEvents.js';
export { VariableStoreCookieSerializer } from './variableStoreCookieSerializer.js';
export { LanguageProcessor } from './headless/languageProcessor.js';
export { TranscriptionCache } from './headless/transcriptionCache.js';
-export { InputProcessor } from './headless/inputProcessor.js';
\ No newline at end of file
+export { InputProcessor } from './headless/inputProcessor.js';
+export { DeviceDetector } from './headless/deviceDetector.js';
\ No newline at end of file
diff --git a/web/src/engine/main/tsconfig.json b/web/src/engine/main/tsconfig.json
index d2e0580161..f49d40dc35 100644
--- a/web/src/engine/main/tsconfig.json
+++ b/web/src/engine/main/tsconfig.json
@@ -11,7 +11,6 @@
"include": [ "src/**/*.ts" ],
"references": [
- { "path": "../device-detect" },
{ "path": "../osk" },
{ "path": "../keyboard-storage" },
{ "path": "../interfaces" },
diff --git a/web/src/engine/osk/build.sh b/web/src/engine/osk/build.sh
index 0d676a2d3e..e54a75bad1 100755
--- a/web/src/engine/osk/build.sh
+++ b/web/src/engine/osk/build.sh
@@ -14,10 +14,10 @@ SUBPROJECT_NAME=engine/osk
builder_describe "Builds the Keyman Engine for Web's On-Screen Keyboard package (OSK)." \
"@/web/src/engine/keyboard build" \
- "@/common/web/gesture-recognizer build" \
"@/web/src/engine/interfaces build" \
"@/web/src/engine/dom-utils build" \
"@/web/src/engine/events build" \
+ "@/web/src/engine/osk/gesture-processor" \
"clean" \
"configure" \
"build" \
diff --git a/common/web/gesture-recognizer/.c8rc.json b/web/src/engine/osk/gesture-processor/.c8rc.json
similarity index 100%
rename from common/web/gesture-recognizer/.c8rc.json
rename to web/src/engine/osk/gesture-processor/.c8rc.json
diff --git a/common/web/gesture-recognizer/.gitignore b/web/src/engine/osk/gesture-processor/.gitignore
similarity index 100%
rename from common/web/gesture-recognizer/.gitignore
rename to web/src/engine/osk/gesture-processor/.gitignore
diff --git a/common/web/gesture-recognizer/README.md b/web/src/engine/osk/gesture-processor/README.md
similarity index 78%
rename from common/web/gesture-recognizer/README.md
rename to web/src/engine/osk/gesture-processor/README.md
index cbb310092d..3b941963de 100644
--- a/common/web/gesture-recognizer/README.md
+++ b/web/src/engine/osk/gesture-processor/README.md
@@ -6,6 +6,6 @@ KeymanWeb, seen within this repo at /web/.
## Minimum Compilation Requirements
-See the repo-level [document for build configuration](../../../docs/build/index.md) for details on how to
+See the repo-level [document for build configuration](../../../../../docs/build/index.md) for details on how to
configure your build environment.
- Follow the Keyman Engine for Web (KeymanWeb) requirements where appropriate.
\ No newline at end of file
diff --git a/web/src/engine/osk/gesture-processor/build.sh b/web/src/engine/osk/gesture-processor/build.sh
new file mode 100755
index 0000000000..70080b1a7f
--- /dev/null
+++ b/web/src/engine/osk/gesture-processor/build.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "$(dirname "$THIS_SCRIPT")/../../../../../resources/build/builder.inc.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+SUBPROJECT_NAME=engine/osk/gesture-processor
+
+. "${KEYMAN_ROOT}/web/common.inc.sh"
+. "${KEYMAN_ROOT}/resources/shellHelperFunctions.sh"
+
+BUNDLE_CMD="node $KEYMAN_ROOT/web/src/tools/es-bundling/build/common-bundle.mjs"
+
+BUILD_DIR="/web/src/engine/osk/gesture-processor/build"
+
+################################ Main script ################################
+
+builder_describe "Builds the gesture-recognition model for Web-based on-screen keyboards" \
+ "@/web/src/tools/es-bundling build" \
+ "@/web/src/engine/common/web-utils build" \
+ "clean" \
+ "configure" \
+ "build" \
+ "test" \
+ ":module" \
+ ":tools tools for testing & developing test resources for this module" \
+ "--ci sets the --ci option for child scripts (i.e, the $(builder_term test) action)"
+
+builder_describe_outputs \
+ configure /node_modules \
+ build:module "${BUILD_DIR}/lib/index.mjs" \
+ build:tools "${BUILD_DIR}/tools/lib/index.mjs"
+
+builder_parse "$@"
+
+# TODO: build if out-of-date if test is specified
+# TODO: configure if npm has not been run, and build is specified
+
+function do_configure() {
+ verify_npm_setup
+}
+
+function do_build_module() {
+ # Build
+ tsc --build $builder_verbose
+
+ $BUNDLE_CMD "${KEYMAN_ROOT}/${BUILD_DIR}/obj/index.js" \
+ --out "${KEYMAN_ROOT}/${BUILD_DIR}/lib/index.mjs" \
+ --format esm
+}
+
+function do_test_tools() {
+ if ! builder_has_action test:module; then
+ echo "The $(builder_term test:tools) action is currently a no-op."
+ fi
+}
+
+builder_run_action configure do_configure
+builder_run_action clean rm -rf build/ intermediate/
+builder_run_action build:module do_build_module
+builder_run_action build:tools src/tools/build.sh build
+builder_run_action test:module test-headless-typescript "${SUBPROJECT_NAME}"
+builder_run_action test:tools do_test_tools
diff --git a/common/web/gesture-recognizer/docs/host-page-viz.png b/web/src/engine/osk/gesture-processor/docs/host-page-viz.png
similarity index 100%
rename from common/web/gesture-recognizer/docs/host-page-viz.png
rename to web/src/engine/osk/gesture-processor/docs/host-page-viz.png
diff --git a/common/web/gesture-recognizer/docs/recognizer-configuration.md b/web/src/engine/osk/gesture-processor/docs/recognizer-configuration.md
similarity index 100%
rename from common/web/gesture-recognizer/docs/recognizer-configuration.md
rename to web/src/engine/osk/gesture-processor/docs/recognizer-configuration.md
diff --git a/common/web/gesture-recognizer/package.json b/web/src/engine/osk/gesture-processor/package.json
similarity index 88%
rename from common/web/gesture-recognizer/package.json
rename to web/src/engine/osk/gesture-processor/package.json
index 66cf248c0f..fd8e7fcddf 100644
--- a/common/web/gesture-recognizer/package.json
+++ b/web/src/engine/osk/gesture-processor/package.json
@@ -8,14 +8,12 @@
"promise-status-async": "^1.2.10",
"typescript": "^5.4.5"
},
- "imports": {
- "#tools": "./build/tools/obj/index.js"
- },
"scripts": {
"build": "gosh ./build.sh",
- "test": "gosh ./test.sh"
+ "test": "gosh ./build.sh test"
},
"dependencies": {
+ "@keymanapp/web-utils": "*",
"eventemitter3": "^5.0.0"
},
"main": "./build/obj/index.js",
diff --git a/common/web/gesture-recognizer/src/engine/configuration/gestureRecognizerConfiguration.ts b/web/src/engine/osk/gesture-processor/src/engine/configuration/gestureRecognizerConfiguration.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/configuration/gestureRecognizerConfiguration.ts
rename to web/src/engine/osk/gesture-processor/src/engine/configuration/gestureRecognizerConfiguration.ts
diff --git a/common/web/gesture-recognizer/src/engine/configuration/paddedZoneSource.ts b/web/src/engine/osk/gesture-processor/src/engine/configuration/paddedZoneSource.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/configuration/paddedZoneSource.ts
rename to web/src/engine/osk/gesture-processor/src/engine/configuration/paddedZoneSource.ts
diff --git a/common/web/gesture-recognizer/src/engine/configuration/recognitionZoneSource.ts b/web/src/engine/osk/gesture-processor/src/engine/configuration/recognitionZoneSource.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/configuration/recognitionZoneSource.ts
rename to web/src/engine/osk/gesture-processor/src/engine/configuration/recognitionZoneSource.ts
diff --git a/common/web/gesture-recognizer/src/engine/configuration/viewportZoneSource.ts b/web/src/engine/osk/gesture-processor/src/engine/configuration/viewportZoneSource.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/configuration/viewportZoneSource.ts
rename to web/src/engine/osk/gesture-processor/src/engine/configuration/viewportZoneSource.ts
diff --git a/common/web/gesture-recognizer/src/engine/configuration/zoneBoundaryChecker.ts b/web/src/engine/osk/gesture-processor/src/engine/configuration/zoneBoundaryChecker.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/configuration/zoneBoundaryChecker.ts
rename to web/src/engine/osk/gesture-processor/src/engine/configuration/zoneBoundaryChecker.ts
diff --git a/common/web/gesture-recognizer/src/engine/gestureRecognizer.ts b/web/src/engine/osk/gesture-processor/src/engine/gestureRecognizer.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/gestureRecognizer.ts
rename to web/src/engine/osk/gesture-processor/src/engine/gestureRecognizer.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/asyncClosureDispatchQueue.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/asyncClosureDispatchQueue.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/asyncClosureDispatchQueue.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/asyncClosureDispatchQueue.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/cumulativePathStats.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/cumulativePathStats.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/cumulativePathStats.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/cumulativePathStats.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestureDebugPath.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestureDebugPath.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestureDebugPath.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestureDebugPath.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestureDebugSource.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestureDebugSource.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestureDebugSource.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestureDebugSource.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gesturePath.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gesturePath.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gesturePath.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gesturePath.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestureSource.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestureSource.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestureSource.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestureSource.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/index.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/index.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/index.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/index.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/matchers/gestureMatcher.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/gestureMatcher.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/matchers/gestureMatcher.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/gestureMatcher.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/matchers/gestureSequence.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/gestureSequence.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/matchers/gestureSequence.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/gestureSequence.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/matchers/index.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/index.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/matchers/index.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/index.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/matchers/matcherSelector.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/matcherSelector.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/matchers/matcherSelector.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/matcherSelector.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/matchers/pathMatcher.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/pathMatcher.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/matchers/pathMatcher.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/matchers/pathMatcher.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/specs/contactModel.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/contactModel.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/specs/contactModel.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/contactModel.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/specs/gestureModel.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/gestureModel.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/specs/gestureModel.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/gestureModel.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/specs/gestureModelDefs.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/gestureModelDefs.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/specs/gestureModelDefs.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/gestureModelDefs.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/specs/index.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/index.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/specs/index.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/index.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/specs/modelDefValidator.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/modelDefValidator.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/specs/modelDefValidator.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/modelDefValidator.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/gestures/specs/pathModel.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/pathModel.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/gestures/specs/pathModel.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/gestures/specs/pathModel.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/inputEngineBase.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/inputEngineBase.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/inputEngineBase.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/inputEngineBase.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/inputSample.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/inputSample.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/inputSample.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/inputSample.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/segmentClassifier.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/segmentClassifier.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/segmentClassifier.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/segmentClassifier.ts
diff --git a/common/web/gesture-recognizer/src/engine/headless/touchpointCoordinator.ts b/web/src/engine/osk/gesture-processor/src/engine/headless/touchpointCoordinator.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/headless/touchpointCoordinator.ts
rename to web/src/engine/osk/gesture-processor/src/engine/headless/touchpointCoordinator.ts
diff --git a/common/web/gesture-recognizer/src/engine/index.ts b/web/src/engine/osk/gesture-processor/src/engine/index.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/index.ts
rename to web/src/engine/osk/gesture-processor/src/engine/index.ts
diff --git a/common/web/gesture-recognizer/src/engine/inputEventEngine.ts b/web/src/engine/osk/gesture-processor/src/engine/inputEventEngine.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/inputEventEngine.ts
rename to web/src/engine/osk/gesture-processor/src/engine/inputEventEngine.ts
diff --git a/common/web/gesture-recognizer/src/engine/mouseEventEngine.ts b/web/src/engine/osk/gesture-processor/src/engine/mouseEventEngine.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/mouseEventEngine.ts
rename to web/src/engine/osk/gesture-processor/src/engine/mouseEventEngine.ts
diff --git a/common/web/gesture-recognizer/src/engine/mutable.ts b/web/src/engine/osk/gesture-processor/src/engine/mutable.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/mutable.ts
rename to web/src/engine/osk/gesture-processor/src/engine/mutable.ts
diff --git a/common/web/gesture-recognizer/src/engine/nonoptional.ts b/web/src/engine/osk/gesture-processor/src/engine/nonoptional.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/nonoptional.ts
rename to web/src/engine/osk/gesture-processor/src/engine/nonoptional.ts
diff --git a/common/web/gesture-recognizer/src/engine/reportError.ts b/web/src/engine/osk/gesture-processor/src/engine/reportError.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/reportError.ts
rename to web/src/engine/osk/gesture-processor/src/engine/reportError.ts
diff --git a/common/web/gesture-recognizer/src/engine/touchEventEngine.ts b/web/src/engine/osk/gesture-processor/src/engine/touchEventEngine.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/engine/touchEventEngine.ts
rename to web/src/engine/osk/gesture-processor/src/engine/touchEventEngine.ts
diff --git a/common/web/gesture-recognizer/src/tools/build.sh b/web/src/engine/osk/gesture-processor/src/tools/build.sh
similarity index 52%
rename from common/web/gesture-recognizer/src/tools/build.sh
rename to web/src/engine/osk/gesture-processor/src/tools/build.sh
index 657a8ab1bf..343d90a117 100755
--- a/common/web/gesture-recognizer/src/tools/build.sh
+++ b/web/src/engine/osk/gesture-processor/src/tools/build.sh
@@ -3,61 +3,49 @@
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "$(dirname "$THIS_SCRIPT")/../../../../../resources/build/builder.inc.sh"
+. "$(dirname "$THIS_SCRIPT")/../../../../../../../resources/build/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
+. "$KEYMAN_ROOT/web/common.inc.sh"
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
-BUNDLE_CMD="node $KEYMAN_ROOT/common/web/es-bundling/build/common-bundle.mjs"
+BUNDLE_CMD="node $KEYMAN_ROOT/web/src/tools/es-bundling/build/common-bundle.mjs"
+
+BASE_DIR="/web/src/engine/osk/gesture-processor"
+BUILD_DIR="${BASE_DIR}/build"
################################ Main script ################################
-builder_describe "Testing-oriented tools for the Gesture Recognizer module of web-based Keyman OSKs" \
+builder_describe "Testing-oriented tools for the Gesture Processor module of web-based Keyman OSKs" \
"clean" \
"build" \
":fixture The HTML-element fixture and CSS fixture used for both user-testing and unit-testing" \
":recorder The web page used for recording input sequences for use in unit-testing" \
- ":test-module The TS library used to interface with the main gesture-recognizer module for tests"
+ ":test-module The TS library used to interface with the main gesture-processor module for tests"
builder_parse "$@"
builder_describe_outputs \
configure /node_modules \
- build:fixture /common/web/gesture-recognizer/build/tools/host-fixture.html \
- build:recorder /common/web/gesture-recognizer/src/tools/recorder/build/recorder.mjs \
- build:test-module /common/web/gesture-recognizer/build/tools/lib/index.mjs
+ build:fixture "${BUILD_DIR}/tools/host-fixture.html" \
+ build:recorder "${BASE_DIR}/src/tools/recorder/build/recorder.mjs" \
+ build:test-module "${BUILD_DIR}/tools/lib/index.mjs"
# TODO: build if out-of-date if test is specified
# TODO: configure if npm has not been run, and build is specified
-if builder_start_action clean:recorder; then
- rm -rf ./recorder/build
- builder_finish_action success clean:recorder
-fi
-
-if builder_start_action clean:fixture; then
+function do_clean_fixture() {
rm -f ../../build/tools/host-fixture.html
rm -f ../../build/tools/gestureHost.css
- builder_finish_action success clean:fixture
-fi
+}
-if builder_start_action clean:test-module; then
+function do_clean_testmodule() {
rm -rf ../../build/tools/*.ts*
rm -rf ../../build/tools/*.js*
- builder_finish_action success clean:test-module
-fi
+}
-if builder_start_action build:fixture; then
- if [ ! -d ../../build/tools ]; then
- mkdir -p ../../build/tools
- fi
- ./host-fixture/extract-fixture.sh > ../../build/tools/host-fixture.html
- cp ./host-fixture/gestureHost.css ../../build/tools/gestureHost.css
- builder_finish_action success build:fixture
-fi
-
-if builder_start_action build:recorder; then
- if [ ! -d recorder/build ]; then
+function do_build_recorder() {
+ if [[ ! -d recorder/build ]]; then
mkdir -p recorder/build
fi
cp recorder/src/pageStyle.css recorder/build/pageStyle.css
@@ -70,15 +58,27 @@ if builder_start_action build:recorder; then
pushd recorder >/dev/null
node update-index.cjs build/index.html
popd >/dev/null
- builder_finish_action success build:recorder
-fi
+}
-if builder_start_action build:test-module; then
- tsc -b "$THIS_SCRIPT_PATH/unit-test-resources/tsconfig.json"
+function do_build_fixture() {
+ if [[ ! -d ../../build/tools ]]; then
+ mkdir -p ../../build/tools
+ fi
+ ./host-fixture/extract-fixture.sh > ../../build/tools/host-fixture.html
+ cp ./host-fixture/gestureHost.css ../../build/tools/gestureHost.css
+}
- $BUNDLE_CMD "${KEYMAN_ROOT}/common/web/gesture-recognizer/build/tools/obj/index.js" \
- --out "${KEYMAN_ROOT}/common/web/gesture-recognizer/build/tools/lib/index.mjs" \
+function do_build_testmodule() {
+ compile "" "${THIS_SCRIPT_PATH}/unit-test-resources" "${KEYMAN_ROOT}/${BUILD_DIR}/tools"
+
+ $BUNDLE_CMD "${KEYMAN_ROOT}/${BUILD_DIR}/tools/obj/index.js" \
+ --out "${KEYMAN_ROOT}/${BUILD_DIR}/tools/lib/index.mjs" \
--format "esm"
+}
- builder_finish_action success build:test-module
-fi
\ No newline at end of file
+builder_run_action clean:recorder rm -rf ./recorder/build
+builder_run_action clean:fixture do_clean_fixture
+builder_run_action clean:test-module do_clean_testmodule
+builder_run_action build:recorder do_build_recorder
+builder_run_action build:fixture do_build_fixture
+builder_run_action build:test-module do_build_testmodule
diff --git a/common/web/gesture-recognizer/src/tools/host-fixture/extract-fixture.sh b/web/src/engine/osk/gesture-processor/src/tools/host-fixture/extract-fixture.sh
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/host-fixture/extract-fixture.sh
rename to web/src/engine/osk/gesture-processor/src/tools/host-fixture/extract-fixture.sh
diff --git a/common/web/gesture-recognizer/src/tools/host-fixture/extractor.cjs b/web/src/engine/osk/gesture-processor/src/tools/host-fixture/extractor.cjs
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/host-fixture/extractor.cjs
rename to web/src/engine/osk/gesture-processor/src/tools/host-fixture/extractor.cjs
diff --git a/common/web/gesture-recognizer/src/test/auto/browser/cases/gestureHost.css b/web/src/engine/osk/gesture-processor/src/tools/host-fixture/gestureHost.css
similarity index 100%
rename from common/web/gesture-recognizer/src/test/auto/browser/cases/gestureHost.css
rename to web/src/engine/osk/gesture-processor/src/tools/host-fixture/gestureHost.css
diff --git a/common/web/gesture-recognizer/src/tools/host-fixture/host-fixture.html b/web/src/engine/osk/gesture-processor/src/tools/host-fixture/host-fixture.html
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/host-fixture/host-fixture.html
rename to web/src/engine/osk/gesture-processor/src/tools/host-fixture/host-fixture.html
diff --git a/common/web/gesture-recognizer/src/tools/recorder/src/index.html b/web/src/engine/osk/gesture-processor/src/tools/recorder/src/index.html
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/recorder/src/index.html
rename to web/src/engine/osk/gesture-processor/src/tools/recorder/src/index.html
diff --git a/common/web/gesture-recognizer/src/tools/recorder/src/pageStyle.css b/web/src/engine/osk/gesture-processor/src/tools/recorder/src/pageStyle.css
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/recorder/src/pageStyle.css
rename to web/src/engine/osk/gesture-processor/src/tools/recorder/src/pageStyle.css
diff --git a/common/web/gesture-recognizer/src/tools/recorder/src/recorder.mjs b/web/src/engine/osk/gesture-processor/src/tools/recorder/src/recorder.mjs
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/recorder/src/recorder.mjs
rename to web/src/engine/osk/gesture-processor/src/tools/recorder/src/recorder.mjs
diff --git a/common/web/gesture-recognizer/src/tools/recorder/update-index.cjs b/web/src/engine/osk/gesture-processor/src/tools/recorder/update-index.cjs
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/recorder/update-index.cjs
rename to web/src/engine/osk/gesture-processor/src/tools/recorder/update-index.cjs
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/build-bundler.js b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/build-bundler.js
similarity index 82%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/build-bundler.js
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/build-bundler.js
index bd8f07077e..4603b338ad 100644
--- a/common/web/gesture-recognizer/src/tools/unit-test-resources/build-bundler.js
+++ b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/build-bundler.js
@@ -1,5 +1,5 @@
import esbuild from 'esbuild';
-import { esmConfiguration, bundleObjEntryPoints } from '../../../../es-bundling/build/index.mjs';
+import { esmConfiguration, bundleObjEntryPoints } from '../../../../../../tools/es-bundling/build/index.mjs';
await esbuild.build({
...esmConfiguration,
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/fixtureLayoutConfiguration.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/fixtureLayoutConfiguration.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/fixtureLayoutConfiguration.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/fixtureLayoutConfiguration.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/headlessInputEngine.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/headlessInputEngine.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/headlessInputEngine.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/headlessInputEngine.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/hostFixtureLayoutController.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/hostFixtureLayoutController.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/hostFixtureLayoutController.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/hostFixtureLayoutController.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/index.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/index.ts
similarity index 87%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/index.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/index.ts
index e3bf02cc37..dfc9740330 100644
--- a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/index.ts
+++ b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/index.ts
@@ -1,6 +1,7 @@
export * from './fixtureLayoutConfiguration.js';
export * from './headlessInputEngine.js';
export * from './hostFixtureLayoutController.js';
+export * from './inputRecording.js';
export * from './inputSequenceSimulator.js';
export * from './sequenceRecorder.js';
export * from './touchpathTurtle.js';
\ No newline at end of file
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/inputRecording.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/inputRecording.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/inputRecording.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/inputRecording.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/inputSequenceSimulator.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/inputSequenceSimulator.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/inputSequenceSimulator.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/inputSequenceSimulator.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/jsonObject.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/jsonObject.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/jsonObject.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/jsonObject.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/sequenceRecorder.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/sequenceRecorder.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/sequenceRecorder.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/sequenceRecorder.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/src/touchpathTurtle.ts b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/touchpathTurtle.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/src/touchpathTurtle.ts
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/src/touchpathTurtle.ts
diff --git a/common/web/gesture-recognizer/src/tools/unit-test-resources/tsconfig.json b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/tsconfig.json
similarity index 84%
rename from common/web/gesture-recognizer/src/tools/unit-test-resources/tsconfig.json
rename to web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/tsconfig.json
index 7254159211..34d1929af1 100644
--- a/common/web/gesture-recognizer/src/tools/unit-test-resources/tsconfig.json
+++ b/web/src/engine/osk/gesture-processor/src/tools/unit-test-resources/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../../../../tsconfig.kmw-main-base.json",
+ "extends": "../../../../../../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "./",
"lib": [ "dom", "es6" ],
diff --git a/common/web/gesture-recognizer/tsconfig.json b/web/src/engine/osk/gesture-processor/tsconfig.json
similarity index 62%
rename from common/web/gesture-recognizer/tsconfig.json
rename to web/src/engine/osk/gesture-processor/tsconfig.json
index c4ff34e963..a6c7a8de7a 100644
--- a/common/web/gesture-recognizer/tsconfig.json
+++ b/web/src/engine/osk/gesture-processor/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../tsconfig.kmw-main-base.json",
+ "extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "./",
"lib": [ "dom", "es6" ],
@@ -8,8 +8,8 @@
"tsBuildInfoFile": "./build/obj/tsconfig.tsbuildinfo",
},
"include": ["./src/engine/**/*.ts"],
- "exclude": ["./src/test/**/*.ts", "./src/tools/**/*.ts"],
"references": [
- { "path": "../utils" }
- ]
+ { "path": "../../common/web-utils" },
+ ],
+ "exclude": ["./src/test/**/*.ts", "./src/tools/**/*.ts"]
}
diff --git a/web/src/engine/osk/src/banner/suggestionBanner.ts b/web/src/engine/osk/src/banner/suggestionBanner.ts
index 34455fd061..f32cbdacd2 100644
--- a/web/src/engine/osk/src/banner/suggestionBanner.ts
+++ b/web/src/engine/osk/src/banner/suggestionBanner.ts
@@ -19,6 +19,7 @@ import { ParsedLengthStyle } from '../lengthStyle.js';
import { getFontSizeStyle } from '../fontSizeUtils.js';
import { getTextMetrics } from '../keyboard-layout/getTextMetrics.js';
import { BannerScrollState } from './bannerScrollState.js';
+import { Suggestion } from '@keymanapp/common-types';
const TOUCHED_CLASS: string = 'kmw-suggest-touched';
const BANNER_SCROLLER_CLASS = 'kmw-suggest-banner-scroller';
diff --git a/web/src/engine/osk/src/visualKeyboard.ts b/web/src/engine/osk/src/visualKeyboard.ts
index 013ad76241..570a82a209 100644
--- a/web/src/engine/osk/src/visualKeyboard.ts
+++ b/web/src/engine/osk/src/visualKeyboard.ts
@@ -1239,6 +1239,7 @@ export default class VisualKeyboard extends EventEmitter implements Ke
const groupStyle = getComputedStyle(this.layerGroup.element);
const isInDOM = computedStyle.height != '' && computedStyle.height != 'auto';
+ const isGroupInDOM = groupStyle.height != '' && groupStyle.height != 'auto';
if (computedStyle.border) {
this._borderWidth = new ParsedLengthStyle(computedStyle.borderWidth).val;
@@ -1251,10 +1252,11 @@ export default class VisualKeyboard extends EventEmitter implements Ke
this._computedHeight = this.height;
} else if (isInDOM) {
this._computedWidth = parseInt(computedStyle.width, 10);
- if (!this._computedWidth) {
- this._computedWidth = parseInt(groupStyle.width, 10);
- }
this._computedHeight = parseInt(computedStyle.height, 10);
+ } else if (isGroupInDOM) {
+ // May occur for documentation-keyboards, which are detached from their VisualKeyboard base.
+ this._computedWidth = parseInt(groupStyle.width, 10);
+ this._computedHeight = parseInt(groupStyle.height, 10);
} else {
// Cannot perform layout operations!
return;
@@ -1597,6 +1599,16 @@ export default class VisualKeyboard extends EventEmitter implements Ke
// the page.
kbdObj.appendStyleSheet();
+ // Unset the width + height we used thus far; this method's consumer may choose to rescale
+ // the returned element. If so, we don't want to use our outdated value by mistake.
+ //
+ // While `kbdObj.setSize()` could be used in theory, it _also_ unsets the element styling.
+ // We actually wish to _leave_ this styling in place - one of our parameters is `height`, and
+ // it should remain in place in the styling on the output element as the default in case
+ // the consumer _doesn't_ add styling afterward.
+ delete kbdObj._width;
+ delete kbdObj._height;
+
return classWrapper;
}
diff --git a/web/src/engine/osk/tsconfig.json b/web/src/engine/osk/tsconfig.json
index 0f24be8efa..629443ed50 100644
--- a/web/src/engine/osk/tsconfig.json
+++ b/web/src/engine/osk/tsconfig.json
@@ -12,7 +12,7 @@
"include": [ "src/**/*.ts" ],
"references": [
- { "path": "../../../../common/web/gesture-recognizer" },
+ { "path": "./gesture-processor" },
{ "path": "../interfaces" },
{ "path": "../dom-utils" },
{ "path": "../events" }
diff --git a/common/models/templates/.c8rc.json b/web/src/engine/predictive-text/templates/.c8rc.json
similarity index 100%
rename from common/models/templates/.c8rc.json
rename to web/src/engine/predictive-text/templates/.c8rc.json
diff --git a/common/models/templates/.gitignore b/web/src/engine/predictive-text/templates/.gitignore
similarity index 100%
rename from common/models/templates/.gitignore
rename to web/src/engine/predictive-text/templates/.gitignore
diff --git a/common/models/templates/build.sh b/web/src/engine/predictive-text/templates/build.sh
similarity index 89%
rename from common/models/templates/build.sh
rename to web/src/engine/predictive-text/templates/build.sh
index acc81bd84b..e7aaaac124 100755
--- a/common/models/templates/build.sh
+++ b/web/src/engine/predictive-text/templates/build.sh
@@ -5,7 +5,7 @@
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "$(dirname "$THIS_SCRIPT")/../../../resources/build/builder.inc.sh"
+. "$(dirname "$THIS_SCRIPT")/../../../../../resources/build/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
@@ -14,8 +14,8 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
builder_describe "Builds the predictive-text model template implementation module" \
"@/common/web/keyman-version" \
- "@/common/web/es-bundling" \
- "@/common/models/wordbreakers" \
+ "@/web/src/tools/es-bundling" \
+ "@../wordbreakers" \
"clean" \
"configure" \
"build" \
diff --git a/common/models/templates/package.json b/web/src/engine/predictive-text/templates/package.json
similarity index 95%
rename from common/models/templates/package.json
rename to web/src/engine/predictive-text/templates/package.json
index 2a25297f93..c976bcdbe3 100644
--- a/common/models/templates/package.json
+++ b/web/src/engine/predictive-text/templates/package.json
@@ -51,7 +51,7 @@
"url": "https://github.com/keymanapp/keyman/issues"
},
"devDependencies": {
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/web-utils": "*",
"@types/mocha": "^7.0.2",
"c8": "^7.12.0",
@@ -61,7 +61,7 @@
},
"dependencies": {
"@keymanapp/keyman-version": "*",
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/models-wordbreakers": "*",
"@keymanapp/resources-gosh": "*"
}
diff --git a/common/models/templates/src/common.ts b/web/src/engine/predictive-text/templates/src/common.ts
similarity index 98%
rename from common/models/templates/src/common.ts
rename to web/src/engine/predictive-text/templates/src/common.ts
index 853bc7c18d..2524ac40fb 100644
--- a/common/models/templates/src/common.ts
+++ b/web/src/engine/predictive-text/templates/src/common.ts
@@ -1,4 +1,5 @@
// Allows the kmwstring bindings to resolve.
+import { CasingForm, Context, Outcome, Suggestion, Transform, WithOutcome } from '@keymanapp/common-types';
import { extendString } from "@keymanapp/web-utils";
extendString();
diff --git a/common/models/templates/src/index.ts b/web/src/engine/predictive-text/templates/src/index.ts
similarity index 100%
rename from common/models/templates/src/index.ts
rename to web/src/engine/predictive-text/templates/src/index.ts
diff --git a/common/models/templates/src/quote-behavior.ts b/web/src/engine/predictive-text/templates/src/quote-behavior.ts
similarity index 93%
rename from common/models/templates/src/quote-behavior.ts
rename to web/src/engine/predictive-text/templates/src/quote-behavior.ts
index 2ca7bbd04c..cbf1a869f4 100644
--- a/common/models/templates/src/quote-behavior.ts
+++ b/web/src/engine/predictive-text/templates/src/quote-behavior.ts
@@ -1,3 +1,5 @@
+import { LexicalModelPunctuation } from '@keymanapp/common-types';
+
export enum QuoteBehavior {
noQuotes = "no-quotes",
useQuotes = "use-quotes",
@@ -35,4 +37,4 @@ export namespace QuoteBehavior {
}
}
-export default QuoteBehavior;
\ No newline at end of file
+export default QuoteBehavior;
diff --git a/common/models/templates/src/tokenization.ts b/web/src/engine/predictive-text/templates/src/tokenization.ts
similarity index 98%
rename from common/models/templates/src/tokenization.ts
rename to web/src/engine/predictive-text/templates/src/tokenization.ts
index 2fb07da357..c5a1ac69cd 100644
--- a/common/models/templates/src/tokenization.ts
+++ b/web/src/engine/predictive-text/templates/src/tokenization.ts
@@ -1,6 +1,8 @@
// While we _could_ define this within @keymanapp/models-wordbreakers instead, it's probably
// better to leave that package as _just_ the wordbreakers.
+import { WordBreakingFunction, USVString, Context } from '@keymanapp/common-types';
+
export interface Token {
text: string,
isWhitespace?: boolean
@@ -214,4 +216,4 @@ export function getLastPreCaretToken(wordBreaker: WordBreakingFunction, context:
// would likely be pretty painful.
export function wordbreak(wordBreaker: WordBreakingFunction, context: Context): USVString {
return getLastPreCaretToken(wordBreaker, context);
-}
\ No newline at end of file
+}
diff --git a/common/models/templates/src/trie-model.ts b/web/src/engine/predictive-text/templates/src/trie-model.ts
similarity index 98%
rename from common/models/templates/src/trie-model.ts
rename to web/src/engine/predictive-text/templates/src/trie-model.ts
index bfe41c7aba..527b7a36cb 100644
--- a/common/models/templates/src/trie-model.ts
+++ b/web/src/engine/predictive-text/templates/src/trie-model.ts
@@ -31,6 +31,7 @@ import { default as defaultWordBreaker } from "@keymanapp/models-wordbreakers";
import { applyTransform, isHighSurrogate, isSentinel, SENTINEL_CODE_UNIT, transformToSuggestion } from "./common.js";
import { getLastPreCaretToken } from "./tokenization.js";
+import { Capabilities, CasingFunction, Configuration, Context, Distribution, LexicalModel, LexicalModelPunctuation, LexiconTraversal, Suggestion, TextWithProbability, Transform, USVString, WithOutcome, WordBreakingFunction } from '@keymanapp/common-types';
extendString();
diff --git a/common/models/templates/test/custom-breakers.def.js b/web/src/engine/predictive-text/templates/test/custom-breakers.def.js
similarity index 100%
rename from common/models/templates/test/custom-breakers.def.js
rename to web/src/engine/predictive-text/templates/test/custom-breakers.def.js
diff --git a/common/models/templates/test/fixtures/tries/accented.json b/web/src/engine/predictive-text/templates/test/fixtures/tries/accented.json
similarity index 100%
rename from common/models/templates/test/fixtures/tries/accented.json
rename to web/src/engine/predictive-text/templates/test/fixtures/tries/accented.json
diff --git a/common/models/templates/test/fixtures/tries/english-1000.json b/web/src/engine/predictive-text/templates/test/fixtures/tries/english-1000.json
similarity index 100%
rename from common/models/templates/test/fixtures/tries/english-1000.json
rename to web/src/engine/predictive-text/templates/test/fixtures/tries/english-1000.json
diff --git a/common/models/templates/test/fixtures/tries/smp-apple.json b/web/src/engine/predictive-text/templates/test/fixtures/tries/smp-apple.json
similarity index 100%
rename from common/models/templates/test/fixtures/tries/smp-apple.json
rename to web/src/engine/predictive-text/templates/test/fixtures/tries/smp-apple.json
diff --git a/common/models/templates/test/helpers.js b/web/src/engine/predictive-text/templates/test/helpers.js
similarity index 100%
rename from common/models/templates/test/helpers.js
rename to web/src/engine/predictive-text/templates/test/helpers.js
diff --git a/common/models/templates/test/test-common.js b/web/src/engine/predictive-text/templates/test/test-common.js
similarity index 100%
rename from common/models/templates/test/test-common.js
rename to web/src/engine/predictive-text/templates/test/test-common.js
diff --git a/common/models/templates/test/test-quote-behavior.js b/web/src/engine/predictive-text/templates/test/test-quote-behavior.js
similarity index 100%
rename from common/models/templates/test/test-quote-behavior.js
rename to web/src/engine/predictive-text/templates/test/test-quote-behavior.js
diff --git a/common/models/templates/test/test-tokenization.js b/web/src/engine/predictive-text/templates/test/test-tokenization.js
similarity index 100%
rename from common/models/templates/test/test-tokenization.js
rename to web/src/engine/predictive-text/templates/test/test-tokenization.js
diff --git a/common/models/templates/test/test-trie-model.js b/web/src/engine/predictive-text/templates/test/test-trie-model.js
similarity index 100%
rename from common/models/templates/test/test-trie-model.js
rename to web/src/engine/predictive-text/templates/test/test-trie-model.js
diff --git a/common/models/templates/test/test-trie-traversal.js b/web/src/engine/predictive-text/templates/test/test-trie-traversal.js
similarity index 100%
rename from common/models/templates/test/test-trie-traversal.js
rename to web/src/engine/predictive-text/templates/test/test-trie-traversal.js
diff --git a/common/models/templates/tsconfig.json b/web/src/engine/predictive-text/templates/tsconfig.json
similarity index 60%
rename from common/models/templates/tsconfig.json
rename to web/src/engine/predictive-text/templates/tsconfig.json
index 34b528d7cf..e8217e9ad9 100644
--- a/common/models/templates/tsconfig.json
+++ b/web/src/engine/predictive-text/templates/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../tsconfig.kmw-worker-base.json",
+ "extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"strict": true,
"baseUrl": "./",
@@ -8,9 +8,9 @@
"rootDir": "./src"
},
"references": [
- { "path": "../types" },
- { "path": "../../web/utils" },
- { "path": "../../models/wordbreakers" }
+ { "path": "../../../../../common/web/types" },
+ { "path": "../../common/web-utils" },
+ { "path": "../wordbreakers" }
],
"include": [
"src/**/*.ts"
diff --git a/web/src/engine/predictive-text/types/message.d.ts b/web/src/engine/predictive-text/types/message.d.ts
index 36aab25657..c20bcc29e8 100644
--- a/web/src/engine/predictive-text/types/message.d.ts
+++ b/web/src/engine/predictive-text/types/message.d.ts
@@ -20,7 +20,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-///
+import { Configuration, Reversion, Suggestion, USVString } from '@keymanapp/common-types';
/**
* Tokens are signed 31-bit integers!
diff --git a/web/src/engine/predictive-text/types/package.json b/web/src/engine/predictive-text/types/package.json
index 835a95045b..b6c98eba96 100644
--- a/web/src/engine/predictive-text/types/package.json
+++ b/web/src/engine/predictive-text/types/package.json
@@ -1,6 +1,7 @@
{
"name": "@keymanapp/lm-message-types",
"description": "Type definitions in used in the lm layer (lexical model/predictive text) component of Keyman.",
+ "type": "module",
"types": "./message.d.ts",
"scripts": {
"test": "tsc test.ts -lib es6"
diff --git a/common/models/wordbreakers/.c8rc.json b/web/src/engine/predictive-text/wordbreakers/.c8rc.json
similarity index 100%
rename from common/models/wordbreakers/.c8rc.json
rename to web/src/engine/predictive-text/wordbreakers/.c8rc.json
diff --git a/web/src/engine/predictive-text/wordbreakers/.gitignore b/web/src/engine/predictive-text/wordbreakers/.gitignore
new file mode 100644
index 0000000000..032a2a523f
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/.gitignore
@@ -0,0 +1,2 @@
+build/
+src/main/default/data.inc.ts
\ No newline at end of file
diff --git a/common/models/wordbreakers/README.md b/web/src/engine/predictive-text/wordbreakers/README.md
similarity index 62%
rename from common/models/wordbreakers/README.md
rename to web/src/engine/predictive-text/wordbreakers/README.md
index 29ba5d51c7..8f6ac0b398 100644
--- a/common/models/wordbreakers/README.md
+++ b/web/src/engine/predictive-text/wordbreakers/README.md
@@ -4,13 +4,13 @@ The word breakers bundled in Keyman's modeling layer (common/models).
Includes:
- - `default` — a word breaker based on the Unicode default word boundary specification
- - _deprecated_ `ascii` — an example word breaker
- - _deprecated_ `placeholder` — an example word breaker
+- `default` — a word breaker based on the Unicode default word boundary specification
+- _deprecated_ `ascii` — an example word breaker
+- _deprecated_ `placeholder` — an example word breaker
## Usage
-```
+```typescript
import {wordBreakers} from '@keymanapp/models-wordbreakers';
const breakWords = wordBreakers['default'];
diff --git a/common/models/wordbreakers/build.sh b/web/src/engine/predictive-text/wordbreakers/build.sh
similarity index 53%
rename from common/models/wordbreakers/build.sh
rename to web/src/engine/predictive-text/wordbreakers/build.sh
index f127d58c3f..4591cc34e1 100755
--- a/common/models/wordbreakers/build.sh
+++ b/web/src/engine/predictive-text/wordbreakers/build.sh
@@ -5,13 +5,15 @@
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "$(dirname "$THIS_SCRIPT")/../../../resources/build/builder.inc.sh"
+. "$(dirname "$THIS_SCRIPT")/../../../../../resources/build/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
################################ Main script ################################
+# Note: the raw text files used for data.inc.ts are found within
+# /resources/standards-data/unicode-character-database.
builder_describe "Builds the predictive-text wordbreaker implementation module" \
"clean" \
"configure" \
@@ -20,16 +22,26 @@ builder_describe "Builds the predictive-text wordbreaker implementation module"
"--ci"
builder_describe_outputs \
- configure /node_modules \
- build build/obj/index.js
+ configure src/main/default/data.inc.ts \
+ build build/main/obj/index.js
builder_parse "$@"
+function do_configure() {
+ verify_npm_setup
+
+ # This is a script used to build the data.inc.ts file needed by the
+ # default wordbreaker. We rarely update the backing data, but it
+ # is needed _before_ the `build` action's compilation step.
+ tsc -b tools/data-compiler/tsconfig.json
+ node ./build/tools/data-compiler/obj/index.js
+}
+
function do_build() {
- tsc -b
+ tsc -b ./tsconfig.json
# Declaration bundling.
- tsc --emitDeclarationOnly --outFile ./build/lib/index.d.ts
+ tsc -p ./tsconfig.json --emitDeclarationOnly --outFile ./build/main/lib/index.d.ts
}
function do_test() {
@@ -40,7 +52,7 @@ function do_test() {
fi
}
-builder_run_action configure verify_npm_setup
+builder_run_action configure do_configure
builder_run_action clean rm -rf build/
builder_run_action build do_build
builder_run_action test do_test
\ No newline at end of file
diff --git a/common/models/wordbreakers/package.json b/web/src/engine/predictive-text/wordbreakers/package.json
similarity index 71%
rename from common/models/wordbreakers/package.json
rename to web/src/engine/predictive-text/wordbreakers/package.json
index 580e600c0e..5ac5fd4a28 100644
--- a/common/models/wordbreakers/package.json
+++ b/web/src/engine/predictive-text/wordbreakers/package.json
@@ -14,17 +14,23 @@
],
"homepage": "https://github.com/keymanapp/keyman",
"license": "MIT",
- "main": "build/obj/index.js",
- "types": "build/obj/index.d.ts",
+ "main": "build/main/obj/index.js",
+ "types": "build/main/obj/index.d.ts",
"exports": {
".": {
- "es6-bundling": "./src/index.ts",
- "default": "./build/obj/index.js"
+ "es6-bundling": "./src/main/index.ts",
+ "default": "./build/main/obj/index.js"
},
"./lib": {
- "types": "./build/lib/index.d.ts"
+ "types": "./build/main/lib/index.d.ts"
},
- "./obj/*.js": "./build/obj/*.js"
+ "./obj/*.js": "./build/main/obj/*.js",
+ "./test-index": {
+ "default": "./build/main/obj/test-index.js"
+ },
+ "./README.md": {
+ "default": "./README.md"
+ }
},
"directories": {
"lib": "lib",
@@ -48,7 +54,7 @@
"url": "https://github.com/keymanapp/keyman/issues"
},
"devDependencies": {
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/resources-gosh": "*",
"@types/mocha": "^7.0.2",
"c8": "^7.12.0",
diff --git a/common/models/wordbreakers/src/ascii.ts b/web/src/engine/predictive-text/wordbreakers/src/main/ascii.ts
similarity index 94%
rename from common/models/wordbreakers/src/ascii.ts
rename to web/src/engine/predictive-text/wordbreakers/src/main/ascii.ts
index 902a6e7058..1b3a91a145 100644
--- a/common/models/wordbreakers/src/ascii.ts
+++ b/web/src/engine/predictive-text/wordbreakers/src/main/ascii.ts
@@ -1,4 +1,4 @@
-///
+import { Span } from '@keymanapp/common-types';
/**
* Splits ASCII words.
diff --git a/common/models/wordbreakers/src/default/index.ts b/web/src/engine/predictive-text/wordbreakers/src/main/default/index.ts
similarity index 94%
rename from common/models/wordbreakers/src/default/index.ts
rename to web/src/engine/predictive-text/wordbreakers/src/main/default/index.ts
index ef50ab4b31..bebed01cc4 100644
--- a/common/models/wordbreakers/src/default/index.ts
+++ b/web/src/engine/predictive-text/wordbreakers/src/main/default/index.ts
@@ -1,4 +1,7 @@
-import { WordBreakProperty, WORD_BREAK_PROPERTY, I, propertyMap } from "./data.js";
+import { Span } from '@keymanapp/common-types';
+import { WordBreakProperty, propertyMap } from "./data.inc.js";
+
+import { searchForProperty } from "./searchForProperty.js";
/**
* A set of options used to customize and extend the behavior of the default
@@ -566,7 +569,7 @@ function property(character: string, options?: DefaultWordBreakerOptions): WordB
// TODO: remove dependence on character.codepointAt()?
let codepoint = character.codePointAt(0) as number;
- return searchForProperty(codepoint, 0, WORD_BREAK_PROPERTY.length - 1);
+ return searchForProperty(codepoint);
}
function propertyVal(propName: string, options?: DefaultWordBreakerOptions) {
@@ -575,34 +578,3 @@ function propertyVal(propName: string, options?: DefaultWordBreakerOptions) {
const customIndex = options?.customProperties?.findIndex(matcher) ?? -1;
return customIndex != -1 ? -customIndex - 1 : propertyMap.findIndex(matcher);
}
-
-/**
- * Binary search for the word break property of a given CODE POINT.
- *
- * The auto-generated data.ts master array defines a **character range**
- * lookup table. If a character's codepoint is equal to or greater than
- * the I.Start value for an entry and exclusively less than the next entry,
- * it falls in the first entry's range bucket and is classified accordingly
- * by this method.
- */
-function searchForProperty(codePoint: number, left: number, right: number): WordBreakProperty {
- // All items that are not found in the array are assigned the 'Other' property.
- if (right < left) {
- return WordBreakProperty.Other;
- }
-
- let midpoint = left + ~~((right - left) / 2);
- let candidate = WORD_BREAK_PROPERTY[midpoint];
-
- let nextRange = WORD_BREAK_PROPERTY[midpoint + 1];
- let startOfNextRange = nextRange ? nextRange[I.Start] : Infinity;
-
- if (codePoint < candidate[I.Start]) {
- return searchForProperty(codePoint, left, midpoint - 1);
- } else if (codePoint >= startOfNextRange) {
- return searchForProperty(codePoint, midpoint + 1, right);
- }
-
- // We found it!
- return candidate[I.Value];
-}
diff --git a/web/src/engine/predictive-text/wordbreakers/src/main/default/searchForProperty.ts b/web/src/engine/predictive-text/wordbreakers/src/main/default/searchForProperty.ts
new file mode 100644
index 0000000000..78f1b5f268
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/src/main/default/searchForProperty.ts
@@ -0,0 +1,43 @@
+import { WordBreakProperty, WORD_BREAK_PROPERTY_BMP, WORD_BREAK_PROPERTY_NON_BMP } from "./data.inc.js";
+
+export function searchForProperty(codePoint: number): WordBreakProperty {
+ const bucketSize = codePoint <= 0xFFFF ? 2 : 3;
+
+ // SMP chars take a bit more space to encode.
+ const encodedArray = bucketSize == 2 ? WORD_BREAK_PROPERTY_BMP : WORD_BREAK_PROPERTY_NON_BMP;
+
+ return _searchForProperty(encodedArray, codePoint, bucketSize, 0, encodedArray.length / bucketSize - 1) - 0x20;
+}
+
+/**
+ * Binary search for the word break property of a given CODE POINT.
+ *
+ * The auto-generated data.ts master strings encode **character range**
+ * lookup tables. If a character's codepoint is equal to or greater than
+ * the start-of-range value for an entry and exclusively less than the next
+ * entry's start-of-range, it falls within the first entry's range bucket
+ * and is classified accordingly by this method.
+ */
+function _searchForProperty(encodedArray: string, codePoint: number, bucketSize: number, left: number, right: number): WordBreakProperty {
+ // All items that are not found in the array are assigned the 'Other' property.
+ if (right < left) { // May need special handling at end of BMP / start of non-BMP.
+ return WordBreakProperty.Other;
+ }
+
+ let midpoint = left + ~~((right - left) / 2);
+ let candidate = encodedArray.codePointAt(bucketSize * midpoint);
+
+ // If out-of-bounds, gives NaN.
+ let nextRange = encodedArray.codePointAt(bucketSize * (midpoint + 1));
+ let startOfNextRange = isNaN(nextRange) ? Infinity : nextRange;
+
+ if (codePoint < candidate) {
+ return _searchForProperty(encodedArray, codePoint, bucketSize, left, midpoint - 1);
+ } else if (codePoint >= startOfNextRange) {
+ return _searchForProperty(encodedArray, codePoint, bucketSize, midpoint + 1, right);
+ }
+
+ // We found it!
+ const propertyCode = encodedArray.charCodeAt(bucketSize * (midpoint + 1) - 1);
+ return propertyCode as WordBreakProperty;
+}
\ No newline at end of file
diff --git a/common/models/wordbreakers/src/index.ts b/web/src/engine/predictive-text/wordbreakers/src/main/index.ts
similarity index 100%
rename from common/models/wordbreakers/src/index.ts
rename to web/src/engine/predictive-text/wordbreakers/src/main/index.ts
diff --git a/common/models/wordbreakers/src/placeholder.ts b/web/src/engine/predictive-text/wordbreakers/src/main/placeholder.ts
similarity index 92%
rename from common/models/wordbreakers/src/placeholder.ts
rename to web/src/engine/predictive-text/wordbreakers/src/main/placeholder.ts
index 87832505ed..1d6f55d967 100644
--- a/common/models/wordbreakers/src/placeholder.ts
+++ b/web/src/engine/predictive-text/wordbreakers/src/main/placeholder.ts
@@ -1,3 +1,5 @@
+import { Span } from '@keymanapp/common-types';
+
/**
* A **VERY** dumb word breaker that simply splits at words. Do not use this
* word breaker!
diff --git a/web/src/engine/predictive-text/wordbreakers/src/main/test-index.ts b/web/src/engine/predictive-text/wordbreakers/src/main/test-index.ts
new file mode 100644
index 0000000000..6ea7b04532
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/src/main/test-index.ts
@@ -0,0 +1,5 @@
+// Include all standard exports.
+export * from './index.js';
+
+// Exposes some internal properties for unit-test accessibility
+export { WordBreakProperty } from './default/data.inc.js';
diff --git a/common/models/wordbreakers/test/test-ascii-word-breaker.js b/web/src/engine/predictive-text/wordbreakers/test/test-ascii-word-breaker.js
similarity index 100%
rename from common/models/wordbreakers/test/test-ascii-word-breaker.js
rename to web/src/engine/predictive-text/wordbreakers/test/test-ascii-word-breaker.js
diff --git a/common/models/wordbreakers/test/test-default-word-breaker.js b/web/src/engine/predictive-text/wordbreakers/test/test-default-word-breaker.js
similarity index 100%
rename from common/models/wordbreakers/test/test-default-word-breaker.js
rename to web/src/engine/predictive-text/wordbreakers/test/test-default-word-breaker.js
diff --git a/common/models/wordbreakers/test/test-placeholder-word-breaker.js b/web/src/engine/predictive-text/wordbreakers/test/test-placeholder-word-breaker.js
similarity index 100%
rename from common/models/wordbreakers/test/test-placeholder-word-breaker.js
rename to web/src/engine/predictive-text/wordbreakers/test/test-placeholder-word-breaker.js
diff --git a/web/src/engine/predictive-text/wordbreakers/test/test-search-property.js b/web/src/engine/predictive-text/wordbreakers/test/test-search-property.js
new file mode 100644
index 0000000000..9f33e4cc0c
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/test/test-search-property.js
@@ -0,0 +1,33 @@
+/**
+ * Smoke-test the default
+ */
+
+import { assert } from 'chai';
+import { searchForProperty } from '../build/main/obj/default/searchForProperty.js';
+import { propertyMap } from '../build/main/obj/default/data.inc.js';
+
+describe('searchForProperty', () => {
+ it('correctly finds character classes for standard ASCII characters', () => {
+ assert.equal(searchForProperty('a'.codePointAt(0)), propertyMap.indexOf('ALetter'));
+ assert.equal(searchForProperty('Z'.codePointAt(0)), propertyMap.indexOf('ALetter'));
+
+ assert.equal(searchForProperty("'".codePointAt(0)), propertyMap.indexOf('Single_Quote'));
+ assert.equal(searchForProperty('"'.codePointAt(0)), propertyMap.indexOf('Double_Quote'));
+ assert.equal(searchForProperty(','.codePointAt(0)), propertyMap.indexOf('MidNum'));
+ assert.equal(searchForProperty('.'.codePointAt(0)), propertyMap.indexOf('MidNumLet'));
+ assert.equal(searchForProperty('-'.codePointAt(0)), propertyMap.indexOf('Other'));
+ });
+
+ it('correctly finds character classes for specialized BMP characters', () => {
+ assert.equal(searchForProperty(0x05D0), propertyMap.indexOf('Hebrew_Letter'));
+ assert.equal(searchForProperty(0x3031), propertyMap.indexOf('Katakana'));
+ assert.equal(searchForProperty(0xFFFE), propertyMap.indexOf('Other'));
+ assert.equal(searchForProperty(0xFFFF), propertyMap.indexOf('Other'));
+ });
+
+ it('correctly finds character classes for non-BMP characters', () => {
+ assert.equal(searchForProperty(0x0001F1E6), propertyMap.indexOf('Regional_Indicator'));
+ assert.equal(searchForProperty(0x00013430), propertyMap.indexOf('Format'));
+ assert.equal(searchForProperty(0x00010000), propertyMap.indexOf('ALetter'));
+ });
+});
\ No newline at end of file
diff --git a/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/LICENSE b/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/LICENSE
new file mode 100644
index 0000000000..14c39a294a
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2019 National Research Council Canada
+Copyright (c) 2024 Eddie Antonio Santos
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/index.ts b/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/index.ts
new file mode 100644
index 0000000000..7feb16e5b1
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/index.ts
@@ -0,0 +1,388 @@
+#!/usr/bin/env node
+
+// Original version found at: https://github.com/eddieantonio/unicode-default-word-boundary/blob/master/libexec/compile-word-break.js
+
+import fs from 'fs';
+import path from 'path';
+
+import { createRequire } from 'module';
+const require = createRequire(import.meta.url);
+
+/*
+ * Generates the TypeScript file for data required for the word boundary
+ * function:
+ *
+ * - a sorted array to facilitate binary search of the Word_Break property.
+ * - a regular expression that matches characters that have Extended_Pictographic=Yes.
+ *
+ * For internal use only. Please keep away from children.
+ *
+ * The generated file is saved to ../../src/main/default/data.inc.ts
+ */
+
+const MAX_CODE_POINT = 0x10FFFF;
+
+// Where to get the data:
+// - https://www.unicode.org/reports/tr51/#emoji_data
+// - https://www.unicode.org/reports/tr41/#Props0
+
+//////////////////////////////////// Main ////////////////////////////////////
+
+const projectDir = path.dirname(require.resolve("@keymanapp/models-wordbreakers/README.md"));
+const generatedFilename = path.join(projectDir, 'src', 'main', 'default', 'data.inc.ts');
+
+// The data files should be in this repository, with names matching the
+// Unicode version.
+const wordBoundaryFilename = path.join(projectDir, `../../../../../resources/standards-data/unicode-character-database/WordBreakProperty.txt`);
+const emojiDataFilename = path.join(projectDir, `../../../../../resources/standards-data/unicode-character-database/emoji-data.txt`);
+
+///////////////////////////// Word_Boundary file /////////////////////////////
+
+interface DataRange {
+ start: number;
+ end: number;
+ property: string;
+}
+
+// Extract the ranges IN ASCENDING ORDER from the file.
+// This will be the big binary search table.
+let ranges = readCharacterPropertyFile(wordBoundaryFilename)
+ .sort((a, b) => {
+ return a.start - b.start;
+ });
+
+// The list of ranges are initially sparse — having gaps between assigned
+// ranges. Fill in those gaps:
+ranges = makeDense(ranges);
+ensureDense(ranges);
+
+// The possible Word_Break property assignments.
+let categories = new Set();
+for (let {property} of ranges) {
+ categories.add(property);
+}
+// Also add pseudo-categories of start-of-text and end-of-text:
+categories.add('sot');
+categories.add('eot');
+
+///////////////////////// Extended_Pictographic=Yes //////////////////////////
+
+let extendedPictographicCodePoints = readCharacterPropertyFile(emojiDataFilename)
+ .filter(({property}) => property === 'Extended_Pictographic');
+
+// Try generating the regular expression both in a way that is
+// backwards-compatbile and one that only works in ES6+.
+// let extendedPictographicRegExp;
+let compatibleRegexp = utf16AlternativesStrategy();
+let es6Regexp = unicodeRangeStrategy();
+
+// Choose the shortest regular expression.
+// In my experience, the ES6 regexp is an order of magnitude smaller!
+if (es6Regexp.length < compatibleRegexp.length) {
+ // extendedPictographicRegExp = es6Regexp;
+ console.warn(`Using ES6 regexp [${es6Regexp.length} chars]`);
+} else {
+ // extendedPictographicRegExp = compatibleRegexp;
+ console.warn(`Using compatibility regexp [${compatibleRegexp.length} chars]`);
+}
+
+let catIndexSeed = 0;
+const categoryMap = new Map();
+
+for(let cat of categories) {
+ categoryMap.set(cat, catIndexSeed++);
+ if(catIndexSeed == '`'.charCodeAt(0)) {
+ catIndexSeed++; // Skip the back-tick as an encoding symbol.
+ // Reduces complications, as it's the encoding string start/end char.
+ }
+}
+
+const bmpRanges: typeof ranges = [];
+const nonBmpRanges: typeof ranges = [];
+
+// { start: number, property: number}[]
+for(let range of ranges) { // already sorted
+ if(range.start <= 0xFFFF) {
+ bmpRanges.push(range);
+ } else {
+ if(nonBmpRanges.length == 0) {
+ const finalBmpRange = bmpRanges[bmpRanges.length - 1];
+ bmpRanges.push({
+ start: 0xFFFF,
+ property: finalBmpRange.property,
+ end: undefined
+ });
+
+ if(range.start != 0x10000) {
+ nonBmpRanges.push({
+ start: 0x10000,
+ property: finalBmpRange.property,
+ end: undefined
+ });
+ }
+ }
+
+ nonBmpRanges.push(range);
+ }
+}
+
+//////////////////////// Creating the generated file /////////////////////////
+
+// Save the output in the gen/ directory.
+let stream = fs.createWriteStream(generatedFilename);
+
+function escape(codedChar: string) {
+ if(codedChar == '`' || codedChar == '\\') {
+ return '\\' + codedChar;
+ } else {
+ return codedChar;
+ }
+}
+
+// // Former entry in the original version by Eddie that was never included in our repo:
+// export const extendedPictographic = ${extendedPictographicRegExp};
+
+// Generate the file!
+stream.write(`// Automatically generated file. DO NOT MODIFY.
+// The generator script is defined at /web/src/engine/predictive-text/wordbreakers/src/data-compiler/index.ts.
+
+/**
+ * Valid values for a word break property.
+ *
+ * Is optimized away at compile-time; use \`propertyMap\` to find the mapped
+ * value at runtime for a property name if needed.
+ */
+export const enum WordBreakProperty {
+${ /* Create enum values for each word break property */
+ Array.from(categories)
+ .map(x => ` ${x} = ${categoryMap.get(x)}`)
+ .join(',\n')
+}
+};
+
+/**
+ * Contains property names per associated index, as this is compiled away
+ * by TypeScript for \`const enum\` cases like \`WordBreakProperty\`.
+ */
+export const propertyMap = [
+${ /* Enumerate the plain-text names for ease of lookup at runtime */
+ Array.from(categories)
+ .map(x => ` "${x}"`)
+ .join(',\n')
+}
+];
+
+export const WORD_BREAK_PROPERTY_BMP: string = \`${
+ // To consider: emit `\uxxxx` codes instead of the raw char?
+ bmpRanges.map(({start, property}) => {
+ let codedStart = escape(String.fromCodePoint(start));
+
+ // Offset the encoded property value to lie within a friendlier range,
+ // with characters that render naturally within code editors.
+ const codedProp = escape(String.fromCharCode(categoryMap.get(property) + 0x20));
+ return `${codedStart}${codedProp}`;
+ }).join('')
+}\`;
+
+export const WORD_BREAK_PROPERTY_NON_BMP: string = \`${
+ // To consider: emit `\uxxxx` codes instead of the raw char?
+ nonBmpRanges.map(({start, property}) => {
+ const codedStart = escape(String.fromCodePoint(start));
+
+ // Offset the encoded property value to lie within a friendlier range,
+ // with characters that render naturally within code editors.
+ const codedProp = escape(String.fromCharCode(categoryMap.get(property) + 0x20));
+ return `${codedStart}${codedProp}`;
+ }).join('')
+}\`;
+`);
+
+/**
+ * Reads a Unicode character property file.
+ *
+ * Character property files are composed of comment lines, empty lines, and
+ * property lines. Comments lines begin with '#' and should be ignored, as
+ * well as empty lines.
+ *
+ * Property lines have a code point or a code point range, followed by a
+ * semi-colon, followed by the property text. e.g.,
+ *
+ * 1F600 ; Emoji # 6.1 [1] (😀) grinning face
+ * 26C4..26C5 ; Emoji_Presentation # 5.2 [2] (⛄..⛅) snowman without snow..sun behind butt
+ *
+ * This will read the file at the given filename, and return an ordered array
+ * or property lines, with attributes:
+ *
+ * {start: number, end: number, property: string}
+ *
+ * If the property specifies a single code point (i.e., not a range of code
+ * points), then end === start.
+ */
+function readCharacterPropertyFile(filename: string) {
+ let textContents = fs.readFileSync(filename, { encoding: 'utf8'});
+
+ return textContents.split('\n')
+ .filter(line => !line.startsWith('#') && line.trim())
+ .map(line => {
+ let [_, startText, endText, property] = line.match(
+ // Parse lines that look like this:
+ // 0000 .. 0000 ; CategoryName
+ /^([0-9A-F]{4,6})(?:..([0-9A-F]{4,6}))?\s+;\s+([A-Za-z_]+)/
+ );
+
+ let start = parseCodepoint(startText);
+ let end = endText !== undefined ? parseCodepoint(endText) : start;
+
+ return { start, end, property };
+ });
+}
+
+/**
+ * Parses a code point, expressed as a 4 or 6 digit hexadecimal string.
+ * Does some bounds checking in order to determine if the string is in fact a
+ * valid code point.
+ */
+function parseCodepoint(hexString: string) {
+ let number = parseInt(hexString, 16);
+ if (Number.isNaN(number)) {
+ throw new SyntaxError(`Cannot parse codepoint: ${hexString}`);
+ }
+
+ if (number < 0 || number > MAX_CODE_POINT) {
+ throw new RangeError(`Codepoint out of range: ${number}`);
+ }
+
+ return number;
+}
+
+function toUnicodeEscape(codePoint: number) {
+ let isBMP = codePoint <= 0xFFFF;
+ let simpleConversion = codePoint.toString(16).toUpperCase();
+
+ let padding = (isBMP ? 4 : 6) - simpleConversion.length;
+ let digits = '0'.repeat(padding) + simpleConversion;
+
+ if (isBMP) {
+ return '\\u' + digits;
+ } else {
+ return `\\u{${digits}}`;
+ }
+}
+
+function utf16AlternativesStrategy() {
+ let codePoints = [];
+ for (let {start, end} of extendedPictographicCodePoints) {
+ for (let current = start; current <= end; current ++) {
+ codePoints.push(current);
+ }
+ }
+
+ let alternatives = codePoints.map(codePointToUTF16Escape);
+ return `/^(?:${alternatives.join('|')})/`;
+}
+
+function codePointToUTF16Escape(codePoint: number): string {
+ // Scalar values remain the same
+ if (codePoint <= 0xFFFF) {
+ return toUnicodeEscape(codePoint);
+ }
+
+ const LOWEST_TEN_BITS_MASK = 0x03FF;
+ let astralBits = codePoint - 0x10000;
+
+ let highSurrogate = 0xD800 + (astralBits >>> 10);
+ let lowSurrogate = 0xDC00 + (astralBits & LOWEST_TEN_BITS_MASK);
+
+ console.assert(highSurrogate <= 0xDBFF);
+ console.assert(lowSurrogate <= 0xDFFF);
+ console.assert(String.fromCharCode(highSurrogate) + String.fromCharCode(lowSurrogate) ===
+ String.fromCodePoint(codePoint));
+ return codePointToUTF16Escape(highSurrogate) + codePointToUTF16Escape(lowSurrogate);
+}
+
+function unicodeRangeStrategy() {
+ let regexp = '';
+ for (let {start, end} of extendedPictographicCodePoints) {
+ if (start === end) {
+ regexp += toUnicodeEscape(start);
+ } else {
+ regexp += toUnicodeEscape(start) + '-' + toUnicodeEscape(end);
+ }
+ }
+ return `/^[${regexp}]/u`;
+}
+
+function makeDense(ranges: DataRange[]) {
+ return joinSameAdjacentProperties(fillInGaps(ranges));
+}
+
+function ensureDense(ranges: DataRange[]) {
+ let lastEnd = -1;
+ let lastProperty = 'sot';
+ for (let range of ranges) {
+ let {start, end, property} = range
+
+ if (lastEnd + 1 !== start) {
+ throw new Error(`Non-adjacent range: ${JSON.stringify(range)}`);
+ }
+
+ if (lastProperty === property) {
+ throw new Error(`adjacent ranges have same property: ${JSON.stringify(range)}`);
+ }
+
+ lastEnd = end;
+ lastProperty = property;
+ }
+}
+
+
+function joinSameAdjacentProperties(ranges: DataRange[]) {
+ console.assert(ranges.length > 1);
+
+ let conjoinedRanges = [];
+ conjoinedRanges.push(ranges.shift());
+
+ for (let range of ranges) {
+ let lastRange = conjoinedRanges[conjoinedRanges.length - 1];
+ if (range.property === lastRange.property) {
+ lastRange.end = range.end;
+ } else {
+ conjoinedRanges.push(range);
+ }
+ }
+
+ return conjoinedRanges;
+}
+
+function fillInGaps(ranges: DataRange[]) {
+ console.assert(ranges.length > 1);
+
+ let denseRanges = [];
+ let nextUnaccountedCodepoint = 0x0000;
+
+ for (let range of ranges) {
+ if (range.start > nextUnaccountedCodepoint) {
+ // Need to create a range BEFORE the next start of ranges
+ denseRanges.push({
+ start: nextUnaccountedCodepoint,
+ end: range.start - 1,
+ // If it's unassigned in the file, it should be 'Other'.
+ property: 'Other',
+ });
+ }
+
+ denseRanges.push(range);
+ nextUnaccountedCodepoint = range.end + 1;
+ }
+
+ // Create the last range (till the end)
+ if (nextUnaccountedCodepoint < MAX_CODE_POINT) {
+ denseRanges.push({
+ start: nextUnaccountedCodepoint,
+ end: MAX_CODE_POINT,
+ property: 'Other',
+ })
+ }
+
+ return denseRanges;
+}
\ No newline at end of file
diff --git a/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/tsconfig.json b/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/tsconfig.json
new file mode 100644
index 0000000000..2cef116f60
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/tools/data-compiler/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "extends": "../../../../../../tsconfig.base.json",
+ "compilerOptions": {
+ "baseUrl": "./",
+ "outDir": "../../build/tools/data-compiler/obj",
+ "tsBuildInfoFile": "../../build/tools/data-compiler/obj/tsconfig.tsbuildinfo",
+ "rootDir": "./",
+ "module": "node16",
+ "moduleResolution": "node16"
+ },
+ "references": [
+ { "path": "../../../../../../../common/web/types" }
+ ],
+ "include": [
+ "./**/*"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/web/src/engine/predictive-text/wordbreakers/tsconfig.json b/web/src/engine/predictive-text/wordbreakers/tsconfig.json
new file mode 100644
index 0000000000..b122825413
--- /dev/null
+++ b/web/src/engine/predictive-text/wordbreakers/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "extends": "../../../../tsconfig.base.json",
+ "compilerOptions": {
+ "baseUrl": "./",
+ "outDir": "./build/main/obj",
+ "tsBuildInfoFile": "./build/main/obj/tsconfig.tsbuildinfo",
+ "rootDir": "./src/main"
+ },
+ "include": [
+ "./src/main/**/*"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/web/src/engine/predictive-text/worker-main/build.sh b/web/src/engine/predictive-text/worker-main/build.sh
index 33e5eaebeb..f7b788b6ef 100755
--- a/web/src/engine/predictive-text/worker-main/build.sh
+++ b/web/src/engine/predictive-text/worker-main/build.sh
@@ -13,15 +13,14 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
-BUNDLE_CMD="node $KEYMAN_ROOT/common/web/es-bundling/build/common-bundle.mjs"
+BUNDLE_CMD="node $KEYMAN_ROOT/web/src/tools/es-bundling/build/common-bundle.mjs"
################################ Main script ################################
-# "@../models/types" \ # is just a .d.ts, so there's nothing to actually BUILD.
-
builder_describe "Builds the lm-layer module" \
"@/common/web/keyman-version" \
- "@/common/web/es-bundling" \
+ "@/common/web/types" \
+ "@/web/src/tools/es-bundling" \
"@/web/src/engine/predictive-text/worker-thread" \
"clean" \
"configure" \
diff --git a/web/src/engine/predictive-text/worker-main/package.json b/web/src/engine/predictive-text/worker-main/package.json
index 978bcd6dcf..29c0f9c329 100644
--- a/web/src/engine/predictive-text/worker-main/package.json
+++ b/web/src/engine/predictive-text/worker-main/package.json
@@ -42,7 +42,7 @@
},
"homepage": "https://github.com/keymanapp/keyman#readme",
"devDependencies": {
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/resources-gosh": "*",
"mocha": "^10.0.0",
"mocha-teamcity-reporter": "^4.0.0",
diff --git a/web/src/engine/predictive-text/worker-main/src/lmlayer.ts b/web/src/engine/predictive-text/worker-main/src/lmlayer.ts
index d9dfb8e867..9153c0ed64 100644
--- a/web/src/engine/predictive-text/worker-main/src/lmlayer.ts
+++ b/web/src/engine/predictive-text/worker-main/src/lmlayer.ts
@@ -20,9 +20,10 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+import { Capabilities, Configuration, Context, Distribution, Reversion, Suggestion, Transform, USVString } from '@keymanapp/common-types';
import PromiseStore from "./promise-store.js";
+import { OutgoingMessage } from '@keymanapp/lm-message-types';
-///
///
/**
diff --git a/web/src/engine/predictive-text/worker-main/src/promise-store.ts b/web/src/engine/predictive-text/worker-main/src/promise-store.ts
index 890ba59239..9548dd1c97 100644
--- a/web/src/engine/predictive-text/worker-main/src/promise-store.ts
+++ b/web/src/engine/predictive-text/worker-main/src/promise-store.ts
@@ -22,6 +22,8 @@
///
+import { Token } from '@keymanapp/lm-message-types';
+
type Resolve = (value?: T | PromiseLike) => void;
type Reject = (reason?: any) => void;
interface PromiseCallbacks {
diff --git a/web/src/engine/predictive-text/worker-main/src/tsconfig.json b/web/src/engine/predictive-text/worker-main/src/tsconfig.json
index edf6195b3a..0ee72aedba 100644
--- a/web/src/engine/predictive-text/worker-main/src/tsconfig.json
+++ b/web/src/engine/predictive-text/worker-main/src/tsconfig.json
@@ -8,8 +8,8 @@
"rootDir": "./"
},
"references": [
- { "path": "../../../../../../common/web/utils" },
- { "path": "../../../../../../common/models/types"},
+ { "path": "../../../common/web-utils" },
+ { "path": "../../../../../../common/web/types"},
{ "path": "../../types"}
],
"include" : [ "./*.ts" ],
diff --git a/web/src/engine/predictive-text/worker-main/tsconfig.all.json b/web/src/engine/predictive-text/worker-main/tsconfig.all.json
index 722ce0114b..6e7eb4cc80 100644
--- a/web/src/engine/predictive-text/worker-main/tsconfig.all.json
+++ b/web/src/engine/predictive-text/worker-main/tsconfig.all.json
@@ -13,8 +13,8 @@
},
"files": [],
"references": [
- { "path": "../../../../../common/web/utils" },
- { "path": "../../../../../common/models/types"},
+ { "path": "../../common/web-utils" },
+ { "path": "../../../../../common/web/types"},
{ "path": "../types"},
{ "path": "src/node" },
{ "path": "src/web" }
diff --git a/web/src/engine/predictive-text/worker-main/unit_tests/test.sh b/web/src/engine/predictive-text/worker-main/unit_tests/test.sh
index dda8d57864..2ade97b599 100755
--- a/web/src/engine/predictive-text/worker-main/unit_tests/test.sh
+++ b/web/src/engine/predictive-text/worker-main/unit_tests/test.sh
@@ -48,13 +48,13 @@ if builder_start_action test:libraries; then
# So, for now, we add a text header to clarify what is running at each stage, in
# addition to fair bit of `pushd` and `popd`.
echo
- echo "### Running $(builder_term common/models/wordbreakers) tests"
- "$KEYMAN_ROOT/common/models/wordbreakers/build.sh" test $TEST_OPTS
+ echo "### Running $(builder_term web/src/engine/predictive-text/wordbreakers) tests"
+ "$KEYMAN_ROOT/web/src/engine/predictive-text/wordbreakers/build.sh" test $TEST_OPTS
- pushd "$KEYMAN_ROOT/common/models/templates"
+ pushd "$KEYMAN_ROOT/web/src/engine/predictive-text/templates/"
echo
- echo "### Running $(builder_term common/models/templates) tests"
- "$KEYMAN_ROOT/common/models/templates/build.sh" test $TEST_OPTS
+ echo "### Running $(builder_term web/src/engine/predictive-text/templates/) tests"
+ "$KEYMAN_ROOT/web/src/engine/predictive-text/templates/build.sh" test $TEST_OPTS
popd
pushd "$KEYMAN_ROOT/web/src/engine/predictive-text/worker-thread"
diff --git a/web/src/engine/predictive-text/worker-thread/build.sh b/web/src/engine/predictive-text/worker-thread/build.sh
index 8c6a4ca001..05c7326cd0 100755
--- a/web/src/engine/predictive-text/worker-thread/build.sh
+++ b/web/src/engine/predictive-text/worker-thread/build.sh
@@ -17,7 +17,7 @@ WORKER_OUTPUT_FILENAME=build/lib/worker-main.js
INTERMEDIATE=./build/intermediate
LIB=./build/lib
-bundle_cmd="node ${KEYMAN_ROOT}/common/web/es-bundling/build/common-bundle.mjs"
+bundle_cmd="node ${KEYMAN_ROOT}/web/src/tools/es-bundling/build/common-bundle.mjs"
SRCMAP_CLEANER="node $KEYMAN_ROOT/web/build/tools/building/sourcemap-root/index.js"
@@ -25,11 +25,11 @@ SRCMAP_CLEANER="node $KEYMAN_ROOT/web/build/tools/building/sourcemap-root/index.
builder_describe \
"Compiles the Language Modeling Layer for common use in predictive text and autocorrective applications." \
- "@/web/src/tools/building/sourcemap-root" \
"@/common/web/keyman-version" \
- "@/common/web/es-bundling" \
- "@/common/models/wordbreakers" \
- "@/common/models/templates" \
+ "@/web/src/tools/building/sourcemap-root" \
+ "@/web/src/tools/es-bundling" \
+ "@../wordbreakers" \
+ "@../templates" \
configure clean build test --ci
builder_describe_outputs \
@@ -64,6 +64,7 @@ function do_build() {
# The ES6 target needs no polyfills - we go straight to the wrapped version.
$bundle_cmd src/main/worker-main.ts \
--out $INTERMEDIATE/worker-main.js \
+ --charset "utf8" \
--target "es6" \
--sourceRoot '@keymanapp/keyman/web/src/engine/predictive-text/worker-thread/src/main'
@@ -75,6 +76,7 @@ function do_build() {
$bundle_cmd src/main/worker-main.ts \
--out $INTERMEDIATE/worker-main.min.js \
--minify \
+ --charset "utf8" \
--profile build/filesize-profile.log \
--target "es6" \
--sourceRoot '@keymanapp/keyman/web/src/engine/predictive-text/worker-thread/src/main'
diff --git a/web/src/engine/predictive-text/worker-thread/package.json b/web/src/engine/predictive-text/worker-thread/package.json
index 9ebc26a4eb..6c9bf52da7 100644
--- a/web/src/engine/predictive-text/worker-thread/package.json
+++ b/web/src/engine/predictive-text/worker-thread/package.json
@@ -26,7 +26,7 @@
"license": "MIT",
"devDependencies": {
"@keymanapp/common-test-resources": "*",
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/resources-gosh": "*",
"c8": "^7.12.0",
"combine-source-map": "^0.8.0",
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts b/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts
index 9dc8b0f676..69472bf02b 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts
@@ -5,6 +5,7 @@ import { SearchSpace } from './distance-modeler.js';
import TransformUtils from '../transformUtils.js';
import { determineModelTokenizer } from '../model-helpers.js';
import { tokenizeTransform, tokenizeTransformDistribution } from './transform-tokenization.js';
+import { Context, Distribution, LexicalModel, Suggestion, Transform, USVString } from '@keymanapp/common-types';
function textToCharTransforms(text: string, transformId?: number) {
let perCharTransforms: Transform[] = [];
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts b/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts
index e06e9e3059..c102af9eef 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts
@@ -3,6 +3,7 @@ import { QueueComparator as Comparator, PriorityQueue } from '@keymanapp/web-uti
import { ClassicalDistanceCalculation, EditToken } from './classical-calculation.js';
import { ExecutionTimer, STANDARD_TIME_BETWEEN_DEFERS } from './execution-timer.js';
+import { Distribution, LexicalModel, LexiconTraversal, ProbabilityMass, Transform, USVString } from '@keymanapp/common-types';
type RealizedInput = ProbabilityMass[]; // NOT Distribution - they're masses from separate distributions.
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts b/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts
index 5dc428c0c3..a5d3c1bf0e 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts
@@ -1,3 +1,4 @@
+import { Context, Distribution, Transform } from '@keymanapp/common-types';
import { applyTransform, type Tokenization } from "@keymanapp/models-templates";
/**
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/index.ts b/web/src/engine/predictive-text/worker-thread/src/main/index.ts
index 3873dd19ab..3abc9ddcd0 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/index.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/index.ts
@@ -40,6 +40,8 @@ import * as wordBreakers from '@keymanapp/models-wordbreakers';
import ModelCompositor from './model-compositor.js';
import { ImportScripts, IncomingMessage, LMLayerWorkerState, LoadMessage, ModelEval, ModelFile, ModelSourceSpec, PostMessage } from './worker-interfaces.js';
+import { Capabilities, LexicalModel } from '@keymanapp/common-types';
+import { OutgoingMessageKind } from '@keymanapp/lm-message-types';
/**
* Encapsulates all the state required for the LMLayer's worker thread.
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts b/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts
index c6b8367b78..2a8f67a547 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts
@@ -4,6 +4,7 @@ import * as correction from './correction/index.js'
import TransformUtils from './transformUtils.js';
import { correctAndEnumerate, dedupeSuggestions, finalizeSuggestions, predictionAutoSelect, processSimilarity, toAnnotatedSuggestion, tupleDisplayOrderSort } from './predict-helpers.js';
import { detectCurrentCasing, determineModelTokenizer, determineModelWordbreaker, determinePunctuationFromModel } from './model-helpers.js';
+import { CasingForm, Context, Distribution, LexicalModel, LexicalModelPunctuation, Reversion, Suggestion, Transform, USVString } from '@keymanapp/common-types';
export class ModelCompositor {
private lexicalModel: LexicalModel;
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts b/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts
index 17ad212671..0f0fa02de6 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts
@@ -1,3 +1,4 @@
+import { CasingForm, Context, LexicalModel, LexicalModelPunctuation } from '@keymanapp/common-types';
import * as models from '@keymanapp/models-templates';
import * as wordBreakers from '@keymanapp/models-wordbreakers';
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts b/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts
index 0b1fbf3cfc..254b881883 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts
@@ -1,5 +1,7 @@
///
+import { Capabilities, CasingForm, Configuration, Context, Distribution, LexicalModel, LexicalModelPunctuation, Outcome, Suggestion, Transform, WordBreakingFunction } from '@keymanapp/common-types';
+
/*
* Copyright (c) 2018 National Research Council Canada (author: Eddie A. Santos)
* Copyright (c) 2018 SIL International
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts
index 44bfb29c0b..bd7d19cd89 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts
@@ -5,6 +5,7 @@ import { determineModelTokenizer, determineModelWordbreaker, determinePunctuatio
import { ContextTracker, TrackedContextState } from './correction/context-tracker.js';
import { ExecutionTimer } from './correction/execution-timer.js';
import ModelCompositor from './model-compositor.js';
+import { ProbabilityMass, Suggestion, LexicalModel, Distribution, Outcome, Keep, SuggestionTag, Reversion, Transform, Context } from '@keymanapp/common-types';
/*
* The functions in this file exist to provide unit-testable stateless components for the
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts b/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts
index f9d8d8a63f..5cbc6f2d0d 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts
@@ -1,3 +1,5 @@
+import { Transform } from '@keymanapp/common-types';
+
export default class TransformUtils {
static isWhitespace(transform: Transform): boolean {
// Matches a string that is entirely one or more characters with Unicode general property Z* or the following: CR, LF, and Tab.
diff --git a/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts b/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts
index bcde9b56fd..c57c1c0946 100644
--- a/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts
+++ b/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts
@@ -28,7 +28,9 @@
///
+import { Capabilities, Context, Distribution, LexicalModel, Reversion, Suggestion, Transform } from '@keymanapp/common-types';
import type ModelCompositor from './model-compositor.js';
+import { Token } from '@keymanapp/models-templates';
/**
* The signature of self.postMessage(), so that unit tests can mock it.
diff --git a/web/src/engine/predictive-text/worker-thread/tsconfig.json b/web/src/engine/predictive-text/worker-thread/tsconfig.json
index bfc8498730..252ec84ceb 100644
--- a/web/src/engine/predictive-text/worker-thread/tsconfig.json
+++ b/web/src/engine/predictive-text/worker-thread/tsconfig.json
@@ -18,13 +18,13 @@
},
"references": [
// types
- { "path": "../../../../../common/models/types" },
+ { "path": "../../../../../common/web/types" },
{ "path": "../types" },
// modules
{ "path": "../../../../../common/web/keyman-version" },
- { "path": "../../../../../common/web/utils" },
- { "path": "../../../../../common/models/templates" },
- { "path": "../../../../../common/models/wordbreakers" },
+ { "path": "../../common/web-utils" },
+ { "path": "../templates" },
+ { "path": "../wordbreakers" },
],
"include": [
"src/main/**/*.ts"
diff --git a/common/web/sentry-manager/.gitignore b/web/src/engine/sentry-manager/.gitignore
similarity index 100%
rename from common/web/sentry-manager/.gitignore
rename to web/src/engine/sentry-manager/.gitignore
diff --git a/common/web/sentry-manager/build.sh b/web/src/engine/sentry-manager/build.sh
similarity index 62%
rename from common/web/sentry-manager/build.sh
rename to web/src/engine/sentry-manager/build.sh
index b2541eb769..e91b78ce7e 100755
--- a/common/web/sentry-manager/build.sh
+++ b/web/src/engine/sentry-manager/build.sh
@@ -5,12 +5,11 @@
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "${THIS_SCRIPT%/*}/../../../resources/build/builder.inc.sh"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
-
-BUNDLE_CMD="node $KEYMAN_ROOT/common/web/es-bundling/build/common-bundle.mjs"
+. "${KEYMAN_ROOT}/web/common.inc.sh"
+. "${KEYMAN_ROOT}/resources/shellHelperFunctions.sh"
builder_describe "Builds the Sentry-reporting module used with Keyman Engine for Web" \
"@/common/web/keyman-version" \
@@ -18,7 +17,7 @@ builder_describe "Builds the Sentry-reporting module used with Keyman Engine for
builder_describe_outputs \
configure /node_modules \
- build /common/web/sentry-manager/build/lib/index.js
+ build /web/src/engine/sentry-manager/build/lib/index.js
builder_parse "$@"
@@ -39,9 +38,9 @@ fi
if builder_start_action build; then
tsc --build "$THIS_SCRIPT_PATH/src/tsconfig.json"
- $BUNDLE_CMD "${KEYMAN_ROOT}/common/web/sentry-manager/build/obj/index.js" \
- --out "${KEYMAN_ROOT}/common/web/sentry-manager/build/lib/index.js" \
- --sourceRoot "@keymanapp/keyman/common/web/sentry-manager/build/lib/"
+ $BUNDLE_CMD "${KEYMAN_ROOT}/web/src/engine/sentry-manager/build/obj/index.js" \
+ --out "${KEYMAN_ROOT}/web/src/engine/sentry-manager/build/lib/index.js" \
+ --sourceRoot "@keymanapp/keyman/web/src/engine/sentry-manager/build/lib/"
builder_finish_action success build
fi
diff --git a/common/web/sentry-manager/package.json b/web/src/engine/sentry-manager/package.json
similarity index 100%
rename from common/web/sentry-manager/package.json
rename to web/src/engine/sentry-manager/package.json
diff --git a/common/web/sentry-manager/src/index.ts b/web/src/engine/sentry-manager/src/index.ts
similarity index 100%
rename from common/web/sentry-manager/src/index.ts
rename to web/src/engine/sentry-manager/src/index.ts
diff --git a/common/web/sentry-manager/src/tsconfig.json b/web/src/engine/sentry-manager/src/tsconfig.json
similarity index 81%
rename from common/web/sentry-manager/src/tsconfig.json
rename to web/src/engine/sentry-manager/src/tsconfig.json
index 9bcc311d10..c15e339457 100644
--- a/common/web/sentry-manager/src/tsconfig.json
+++ b/web/src/engine/sentry-manager/src/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../../tsconfig.kmw-main-base.json",
+ "extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "./",
"lib": ["es6", "dom"],
diff --git a/common/web/gesture-recognizer/src/test/auto/browser/cases/canary.def.ts b/web/src/test/auto/dom/cases/gesture-processor/canary.spec.ts
similarity index 87%
rename from common/web/gesture-recognizer/src/test/auto/browser/cases/canary.def.ts
rename to web/src/test/auto/dom/cases/gesture-processor/canary.spec.ts
index 241977b322..78fbcf6f79 100644
--- a/common/web/gesture-recognizer/src/test/auto/browser/cases/canary.def.ts
+++ b/web/src/test/auto/dom/cases/gesture-processor/canary.spec.ts
@@ -2,10 +2,14 @@ import { assert } from 'chai';
import sinon from 'sinon';
import {
+ DeviceLayoutClass,
FixtureLayoutConfiguration,
HostFixtureLayoutController,
- InputSequenceSimulator
-} from '#tools';
+ InputSequenceSimulator,
+ ReceiverLayoutClass,
+ RoamingLayoutClass,
+ SafeLayoutClass
+} from '#gesture-tools';
import { DEFAULT_BROWSER_TIMEOUT } from '@keymanapp/common-test-resources/test-timeouts.mjs';
@@ -75,11 +79,11 @@ describe("'Canary' checks", function() {
it("InputSequenceSimulator.replayTouchSample", async function() {
let playbackEngine = new InputSequenceSimulator(this.controller);
- let layout = new FixtureLayoutConfiguration("screen2", "bounds1", "full", "safe-loose");
+ let layout = new FixtureLayoutConfiguration("screen2" as DeviceLayoutClass, "bounds1" as RoamingLayoutClass, "full" as ReceiverLayoutClass, "safe-loose" as SafeLayoutClass);
this.controller.layoutConfiguration = layout;
let fireEvent = () => {
- playbackEngine.replayTouchSamples(/*relative coord:*/ [ { sample: {targetX: 10, targetY: 10}, identifier: 1}],
+ playbackEngine.replayTouchSamples(/*relative coord:*/ [ { sample: {targetX: 10, targetY: 10, t: 0}, identifier: 1}],
/*state:*/ "start",
/*recentTouches:*/ [],
);
@@ -101,11 +105,11 @@ describe("'Canary' checks", function() {
it("InputSequenceSimulator.replayMouseSample", async function() {
let playbackEngine = new InputSequenceSimulator(this.controller);
- let layout = new FixtureLayoutConfiguration("screen2", "bounds1", "full", "safe-loose");
+ let layout = new FixtureLayoutConfiguration("screen2" as DeviceLayoutClass, "bounds1" as RoamingLayoutClass, "full" as ReceiverLayoutClass, "safe-loose" as SafeLayoutClass);
this.controller.layoutConfiguration = layout;
let fireEvent = () => {
- playbackEngine.replayMouseSample(/*relative coord:*/ {targetX: 15, targetY: 15},
+ playbackEngine.replayMouseSample(/*relative coord:*/ {targetX: 15, targetY: 15, t: 0},
/*state:*/ "start"
);
}
diff --git a/common/web/gesture-recognizer/src/tools/host-fixture/gestureHost.css b/web/src/test/auto/dom/cases/gesture-processor/gestureHost.css
similarity index 100%
rename from common/web/gesture-recognizer/src/tools/host-fixture/gestureHost.css
rename to web/src/test/auto/dom/cases/gesture-processor/gestureHost.css
diff --git a/common/web/gesture-recognizer/src/test/auto/browser/cases/host-page.spec.html b/web/src/test/auto/dom/cases/gesture-processor/host-page.spec.html
similarity index 90%
rename from common/web/gesture-recognizer/src/test/auto/browser/cases/host-page.spec.html
rename to web/src/test/auto/dom/cases/gesture-processor/host-page.spec.html
index c4a4d7a47e..ce3aae6c48 100644
--- a/common/web/gesture-recognizer/src/test/auto/browser/cases/host-page.spec.html
+++ b/web/src/test/auto/dom/cases/gesture-processor/host-page.spec.html
@@ -1,6 +1,6 @@
+ imports for the .spec.js test suites. -->
@@ -18,9 +18,9 @@
import { runTests } from '@web/test-runner-mocha';
runTests(async() => {
- await import('./canary.def.ts');
- await import('./ignoredInputs.def.ts');
- await import('./recordedCoordSequences.def.ts');
+ await import('./canary.spec.ts');
+ await import('./ignoredInputs.spec.ts');
+ await import('./recordedCoordSequences.spec.ts');
});
diff --git a/common/web/gesture-recognizer/src/test/auto/browser/cases/ignoredInputs.def.ts b/web/src/test/auto/dom/cases/gesture-processor/ignoredInputs.spec.ts
similarity index 82%
rename from common/web/gesture-recognizer/src/test/auto/browser/cases/ignoredInputs.def.ts
rename to web/src/test/auto/dom/cases/gesture-processor/ignoredInputs.spec.ts
index b107fdea5d..a288f925a3 100644
--- a/common/web/gesture-recognizer/src/test/auto/browser/cases/ignoredInputs.def.ts
+++ b/web/src/test/auto/dom/cases/gesture-processor/ignoredInputs.spec.ts
@@ -5,8 +5,12 @@ import {
FixtureLayoutConfiguration,
HostFixtureLayoutController,
InputSequenceSimulator,
- SequenceRecorder
-} from '#tools';
+ SequenceRecorder,
+ DeviceLayoutClass,
+ RoamingLayoutClass,
+ ReceiverLayoutClass,
+ SafeLayoutClass
+} from '#gesture-tools';
import { DEFAULT_BROWSER_TIMEOUT } from '@keymanapp/common-test-resources/test-timeouts.mjs';
@@ -28,19 +32,20 @@ describe("Layer one - DOM -> InputSequence", function() {
it("starts in roaming zone are ignored", function() {
let playbackEngine = new InputSequenceSimulator(controller);
let recorder = new SequenceRecorder(controller);
- let layout = new FixtureLayoutConfiguration("screen2", "bounds1", "full", "safe-loose");
+ let layout = new FixtureLayoutConfiguration("screen2" as DeviceLayoutClass, "bounds1" as RoamingLayoutClass, "full" as ReceiverLayoutClass, "safe-loose" as SafeLayoutClass);
controller.layoutConfiguration = layout;
let fireEvent = () => {
- playbackEngine.replayTouchSamples(/*relative coord:*/ [{sample: {targetX: 10, targetY: -5}, identifier: 1}],
+ playbackEngine.replayTouchSamples(/*relative coord:*/ [{sample: {targetX: 10, targetY: -5, t: 0}, identifier: 1}],
/*state:*/ "start",
/*recentTouches:*/ [],
- /*targetElement:*/ controller.recognizer.config.maxRoamingBounds
+ /*targetElement:*/ controller.recognizer.config.maxRoamingBounds as HTMLElement
);
}
// This test is invalidated if the handler itself isn't called. So... let's verify that!
// This requires white-box inspection of the actual handler control-flow, and we must do
+ // @ts-ignore // touchEngine is private
let touchEngine = controller.recognizer.touchEngine;
let trueHandler = touchEngine.onTouchStart;
let fakeHandler = touchEngine.onTouchStart = sinon.fake();
@@ -61,11 +66,11 @@ describe("Layer one - DOM -> InputSequence", function() {
it("ignores target-external events", function() {
let playbackEngine = new InputSequenceSimulator(controller);
let recorder = new SequenceRecorder(controller);
- let layout = new FixtureLayoutConfiguration("screen2", "bounds1", "full", "safe-loose");
+ let layout = new FixtureLayoutConfiguration("screen2" as DeviceLayoutClass, "bounds1" as RoamingLayoutClass, "full" as ReceiverLayoutClass, "safe-loose" as SafeLayoutClass);
controller.layoutConfiguration = layout;
let fireEvent = () => {
- playbackEngine.replayMouseSample(/*relative coord:*/ {targetX: -5, targetY: 15},
+ playbackEngine.replayMouseSample(/*relative coord:*/ {targetX: -5, targetY: 15, t: 0},
/*state:*/ "start",
/*targetElement:*/ document.body
);
@@ -73,6 +78,7 @@ describe("Layer one - DOM -> InputSequence", function() {
// This test is invalidated if the handler itself isn't called. So... let's verify that!
// Not quite covered by the canary cases b/c of the distinct targetElement.
+ // @ts-ignore // touchEngine is private
let mouseEngine = controller.recognizer.mouseEngine;
let trueHandler = mouseEngine.onMouseStart;
let fakeHandler = mouseEngine.onMouseStart = sinon.fake();
diff --git a/common/web/gesture-recognizer/src/test/auto/browser/cases/recordedCoordSequences.def.ts b/web/src/test/auto/dom/cases/gesture-processor/recordedCoordSequences.spec.ts
similarity index 88%
rename from common/web/gesture-recognizer/src/test/auto/browser/cases/recordedCoordSequences.def.ts
rename to web/src/test/auto/dom/cases/gesture-processor/recordedCoordSequences.spec.ts
index 95af23b61d..06136c66a7 100644
--- a/common/web/gesture-recognizer/src/test/auto/browser/cases/recordedCoordSequences.def.ts
+++ b/web/src/test/auto/dom/cases/gesture-processor/recordedCoordSequences.spec.ts
@@ -5,12 +5,13 @@ import type { GestureDebugSource, InputSample, SerializedGestureSource } from '@
import {
HostFixtureLayoutController,
- InputSequenceSimulator
-} from '#tools';
+ InputSequenceSimulator,
+ RecordedCoordSequenceSet
+} from '#gesture-tools';
function isOnAndroid() {
const agent=navigator.userAgent;
- return agent.indexOf('Android' >= 0);
+ return agent.indexOf('Android') >= 0;
}
const loc = document.location;
@@ -18,7 +19,7 @@ const loc = document.location;
// filesystem for the drive.
const domain = `${loc.protocol}/${loc.host}`
-async function fetchRecording(jsonFilename) {
+async function fetchRecording(jsonFilename: string): Promise {
const jsonResponse = await fetch(new URL(`${domain}/resources/json/${jsonFilename}.json`));
return await jsonResponse.json();
}
@@ -47,7 +48,7 @@ describe("Layer one - DOM -> InputSequence", function() {
});
// We rely on this function to have the same context as `it` - the test-definition function.
- let replayAndCompare = function(testObj) {
+ let replayAndCompare = function(testObj: RecordedCoordSequenceSet, mochaContext: Mocha.Context) {
let playbackEngine = new InputSequenceSimulator(controller);
// **********************************
@@ -68,18 +69,18 @@ describe("Layer one - DOM -> InputSequence", function() {
// replayAsync sets up timeouts against the `clock` object.
// This will run through the simulated timeout queue asynchronously.
- this.clock.runAllAsync();
+ mochaContext.clock.runAllAsync();
// resultPromise resolves on the final timeout in the queue.
- return resultPromise.then((result) => {
+ return resultPromise.then((result: RecordedCoordSequenceSet) => {
assert.equal(result.inputs.length, testObj.inputs.length);
// Removes the timestamp element; we know that this component may not match perfectly.
- let sampleCleaner = (sample) => { return {targetX: sample.targetX, targetY: sample.targetY} };
+ let sampleCleaner = (sample: InputSample) => { return {targetX: sample.targetX, targetY: sample.targetY} };
// Returns just the observed, cleaned samples for a sequence object. The recorded coordinates
// should match perfectly.
- let seqCleaner = (input) => {
+ let seqCleaner = (input: SerializedGestureSource) => {
return input.path.coords.map(sampleCleaner);
};
@@ -124,7 +125,7 @@ describe("Layer one - DOM -> InputSequence", function() {
// The 'terminationEvent' property should match. Any sequence that was "canceled" should still
// cancel; that's a pretty critical detail!
- let terminationEventMapper = (seq) => {
+ let terminationEventMapper = (seq: SerializedGestureSource) => {
return seq.path.wasCancelled;
}
@@ -151,7 +152,7 @@ describe("Layer one - DOM -> InputSequence", function() {
// 'describe' has a notably different `this` reference than `it`, `before`, etc,
// hence the `.call` construction.
- return replayAndCompare.call(this, testObj);
+ return replayAndCompare.call(this, testObj, this);
});
}
});
diff --git a/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.spec.ts b/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.spec.ts
index da610402eb..95db91b0f8 100644
--- a/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.spec.ts
+++ b/web/src/test/auto/dom/cases/keyboard/domKeyboardLoader.spec.ts
@@ -30,7 +30,7 @@ describe('Keyboard loading in DOM', function() {
it('`window`, disabled rule processing', async () => {
const harness = new KeyboardHarness(window, MinimalKeymanGlobal);
let keyboardLoader = new DOMKeyboardLoader(harness);
- let keyboard: Keyboard = await keyboardLoader.loadKeyboardFromPath('/resources/keyboards/khmer_angkor.js');
+ let keyboard: Keyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/khmer_angkor.js');
assert.isOk(keyboard);
assert.equal(keyboard.id, 'Keyboard_khmer_angkor');
@@ -48,7 +48,7 @@ describe('Keyboard loading in DOM', function() {
it('`window`, enabled rule processing', async () => {
const harness = new KeyboardInterface(window, MinimalKeymanGlobal);
const keyboardLoader = new DOMKeyboardLoader(harness);
- const keyboard: Keyboard = await keyboardLoader.loadKeyboardFromPath('/resources/keyboards/khmer_angkor.js');
+ const keyboard: Keyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/khmer_angkor.js');
harness.activeKeyboard = keyboard;
assert.isOk(keyboard);
@@ -80,14 +80,14 @@ describe('Keyboard loading in DOM', function() {
let keyboardLoader = new DOMKeyboardLoader(harness);
// Preload a keyboard and make it active.
- const test_kbd: Keyboard = await keyboardLoader.loadKeyboardFromPath('/resources/keyboards/test_917.js');
+ const test_kbd: Keyboard = await keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/test_917.js');
harness.activeKeyboard = test_kbd;
assert.isNotOk(harness.loadedKeyboard);
// With an active keyboard, load three keyboards but activate none of them.
- const lao_keyboard_promise = keyboardLoader.loadKeyboardFromPath('/resources/keyboards/lao_2008_basic.js');
- const khmer_keyboard_promise = keyboardLoader.loadKeyboardFromPath('/resources/keyboards/khmer_angkor.js');
- const chiral_keyboard_promise = keyboardLoader.loadKeyboardFromPath('/resources/keyboards/test_chirality.js');
+ const lao_keyboard_promise = keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/lao_2008_basic.js');
+ const khmer_keyboard_promise = keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/khmer_angkor.js');
+ const chiral_keyboard_promise = keyboardLoader.loadKeyboardFromPath('/common/test/resources/keyboards/test_chirality.js');
// Sure, why not `await` out of order?
const chiral_keyboard = await chiral_keyboard_promise;
diff --git a/web/src/test/auto/dom/cases/osk/activation.spec.ts b/web/src/test/auto/dom/cases/osk/activation.spec.ts
index 48f82bede3..a78c5f0d4a 100644
--- a/web/src/test/auto/dom/cases/osk/activation.spec.ts
+++ b/web/src/test/auto/dom/cases/osk/activation.spec.ts
@@ -1,5 +1,5 @@
import * as KeymanOSK from 'keyman/engine/osk';
-import Device from 'keyman/engine/device-detect';
+import { DeviceDetector } from 'keyman/engine/main';
import { loadKeyboardsFromStubs } from '../../kbdLoader.js';
import { timedPromise } from '@keymanapp/web-utils';
@@ -7,7 +7,7 @@ import { timedPromise } from '@keymanapp/web-utils';
import { assert } from 'chai';
import { DEFAULT_BROWSER_TIMEOUT } from '@keymanapp/common-test-resources/test-timeouts.mjs';
-const device = new Device();
+const device = new DeviceDetector();
device.detect();
const TestResources = {
diff --git a/web/src/test/auto/dom/cases/osk/events.spec.ts b/web/src/test/auto/dom/cases/osk/events.spec.ts
index efe5570df0..c0a5932c0b 100644
--- a/web/src/test/auto/dom/cases/osk/events.spec.ts
+++ b/web/src/test/auto/dom/cases/osk/events.spec.ts
@@ -1,5 +1,5 @@
import * as KeymanOSK from 'keyman/engine/osk';
-import Device from 'keyman/engine/device-detect';
+import { DeviceDetector } from 'keyman/engine/main';
import { loadKeyboardsFromStubs } from '../../kbdLoader.js';
import { timedPromise } from '@keymanapp/web-utils';
@@ -9,7 +9,7 @@ import sinon from 'sinon';
import { assert } from 'chai';
import { DEFAULT_BROWSER_TIMEOUT } from '@keymanapp/common-test-resources/test-timeouts.mjs';
-const device = new Device();
+const device = new DeviceDetector();
device.detect();
const TestResources = {
diff --git a/web/src/test/auto/dom/test_init_check.spec.ts b/web/src/test/auto/dom/test_init_check.spec.ts
index ad694e9543..46ad413673 100644
--- a/web/src/test/auto/dom/test_init_check.spec.ts
+++ b/web/src/test/auto/dom/test_init_check.spec.ts
@@ -2,7 +2,7 @@
// We'll let things break after this reports, since this will likely signal a LOT of other failures.
import { assert } from 'chai';
-import Device from 'keyman/engine/device-detect';
+import { DeviceDetector } from 'keyman/engine/main';
/* Note - we still have to prevent errors setting up test resources;
* Karma will fail to report errors for affected browsers otherwise.
@@ -17,7 +17,7 @@ describe('Test Initialization', function() {
it("Detects device without JS errors", function() {
try {
- const device = new Device();
+ const device = new DeviceDetector();
device.detect();
console.log("Detected platform: " + device.browser + " on " + device.OS + " with form factor " + device.formFactor);
diff --git a/web/src/test/auto/dom/web-test-runner.config.mjs b/web/src/test/auto/dom/web-test-runner.config.mjs
index 62edfc7dbf..3050837cd5 100644
--- a/web/src/test/auto/dom/web-test-runner.config.mjs
+++ b/web/src/test/auto/dom/web-test-runner.config.mjs
@@ -1,8 +1,8 @@
// @ts-check
import { devices, playwrightLauncher } from '@web/test-runner-playwright';
import { defaultReporter, summaryReporter } from '@web/test-runner';
-import teamcityReporter from '@keymanapp/common-test-resources/test-runner-TC-reporter.mjs';
import { LauncherWrapper, sessionStabilityReporter } from '@keymanapp/common-test-resources/test-runner-stability-reporter.mjs';
+import named from '@keymanapp/common-test-resources/test-runner-rename-browser.mjs'
import { importMapsPlugin } from '@web/dev-server-import-maps';
import { dirname, resolve } from 'path';
import { fileURLToPath } from 'url';
@@ -17,7 +17,17 @@ export default {
browsers: [
new LauncherWrapper(playwrightLauncher({ product: 'chromium' })),
new LauncherWrapper(playwrightLauncher({ product: 'firefox' })),
- new LauncherWrapper(playwrightLauncher({ product: 'webkit', concurrency: 1 }))
+ new LauncherWrapper(playwrightLauncher({ product: 'webkit', concurrency: 1 })),
+ // named(new LauncherWrapper(playwrightLauncher({
+ // product: 'webkit', concurrency: 1, createBrowserContext({ browser }) {
+ // return browser.newContext({ ...devices['iPhone X'] });
+ // }
+ // })), 'iOS Phone (emulated)'),
+ // named(new LauncherWrapper(playwrightLauncher({
+ // product: 'chromium', createBrowserContext({ browser }) {
+ // return browser.newContext({ ...devices['Pixel 4'] })
+ // }
+ // })), 'Android Phone (emulated)'),
],
concurrency: 10,
nodeResolve: true,
@@ -51,14 +61,25 @@ export default {
files: ['build/test/dom/cases/element-wrappers/**/*.spec.mjs']
},
{
- name: 'engine/osk',
+ name: 'engine/gesture-processor',
// Relative, from the containing package.json
- files: ['build/test/dom/cases/osk/**/*.spec.mjs']
+ // Note: here we use the .spec.html file in the src directory!
+ files: ['src/test/auto/dom/cases/gesture-processor/**/*.spec.html']
+ },
+ {
+ name: 'engine/keyboard',
+ // Relative, from the containing package.json
+ files: ['build/test/dom/cases/keyboard/**/*.spec.mjs']
},
{
name: 'engine/keyboard-storage',
// Relative, from the containing package.json
files: ['build/test/dom/cases/keyboard-storage/**/*.spec.mjs']
+ },
+ {
+ name: 'engine/osk',
+ // Relative, from the containing package.json
+ files: ['build/test/dom/cases/osk/**/*.spec.mjs']
}
],
middleware: [
@@ -72,7 +93,7 @@ export default {
}
],
plugins: [
- esbuildPlugin({ts: true}),
+ esbuildPlugin({ts: true, target: 'auto'}),
importMapsPlugin({
inject: {
importMap: {
@@ -88,8 +109,12 @@ export default {
reporters: [
summaryReporter({}), /* local-dev mocha-style */
sessionStabilityReporter({}),
- defaultReporter()
+ defaultReporter({})
],
+ /*
+ Un-comment the next two lines for easy interactive debugging; it'll launch the
+ test page in your preferred browser.
+ */
// open: true,
// manual: true,
rootDir: KEYMAN_ROOT
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/asyncClosureDispatchQueue.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/asyncClosureDispatchQueue.tests.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/auto/headless/asyncClosureDispatchQueue.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/asyncClosureDispatchQueue.tests.ts
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gesturePath.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gesturePath.tests.ts
similarity index 97%
rename from common/web/gesture-recognizer/src/test/auto/headless/gesturePath.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gesturePath.tests.ts
index 111e00ee93..0a90b0c628 100644
--- a/common/web/gesture-recognizer/src/test/auto/headless/gesturePath.spec.ts
+++ b/web/src/test/auto/headless/engine/osk/gesture-processor/gesturePath.tests.ts
@@ -6,14 +6,14 @@ import fs from 'fs';
import { GestureDebugPath } from '@keymanapp/gesture-recognizer';
import { timedPromise } from '@keymanapp/web-utils';
-import { TouchpathTurtle } from '#tools';
+import { TouchpathTurtle } from '#gesture-tools';
// Ensures that the resources are resolved relative to this script's source, not
// to the cwd when the test runner was launched or to its built version.
const scriptFolder = path.dirname(url.fileURLToPath(import.meta.url))
- .replace("build/test/auto", "src/test/auto") // Mac/Linux
- .replace("build\\test\\auto", "src\\test\\auto"); // Windows
-const SEGMENT_TEST_JSON_FOLDER = path.resolve(`${scriptFolder}/../../resources/json/segmentation`);
+ .replace("build/test", "src/test/auto") // Mac/Linux
+ .replace("build\\test", "src\\test\\auto"); // Windows
+const SEGMENT_TEST_JSON_FOLDER = path.resolve(`${scriptFolder}/../../../../resources/json/segmentation`);
describe("GesturePath", function() {
// Note: if part of the suite below fails, it'll probably cascade into failures for some of the
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestureSource.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestureSource.tests.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestureSource.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestureSource.tests.ts
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureMatcher.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureMatcher.tests.ts
similarity index 99%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureMatcher.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureMatcher.tests.ts
index aea79a15a9..ede257ca75 100644
--- a/common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureMatcher.spec.ts
+++ b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureMatcher.tests.ts
@@ -3,13 +3,13 @@ import sinon from 'sinon';
import * as PromiseStatusModule from 'promise-status-async';
const PromiseStatuses = PromiseStatusModule.PromiseStatuses;
-import { assertingPromiseStatus as promiseStatus } from '../../../resources/assertingPromiseStatus.js';
+import { assertingPromiseStatus as promiseStatus } from '../../../../../resources/assertingPromiseStatus.js';
import { InputSample, gestures, GestureDebugPath } from '@keymanapp/gesture-recognizer';
-import { TouchpathTurtle } from '#tools';
+import { TouchpathTurtle } from '#gesture-tools';
-import { simulateMultiSourceMatcherInput } from "../../../resources/simulateMultiSourceInput.js";
+import { simulateMultiSourceMatcherInput } from "../../../../../resources/simulateMultiSourceInput.js";
import {
FlickEndModel,
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureModelDefs.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureModelDefs.tests.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureModelDefs.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureModelDefs.tests.ts
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureSequence.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureSequence.tests.ts
similarity index 99%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureSequence.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureSequence.tests.ts
index 346e146809..fe3837e42f 100644
--- a/common/web/gesture-recognizer/src/test/auto/headless/gestures/gestureSequence.spec.ts
+++ b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/gestureSequence.tests.ts
@@ -2,7 +2,7 @@ import { assert } from 'chai'
import sinon from 'sinon';
import * as PromiseStatusModule from 'promise-status-async';
-import { assertingPromiseStatus as promiseStatus } from '../../../resources/assertingPromiseStatus.js';
+import { assertingPromiseStatus as promiseStatus } from '../../../../../resources/assertingPromiseStatus.js';
import { GestureModelDefs, buildGestureMatchInspector, gestures } from '@keymanapp/gesture-recognizer';
const { matchers } = gestures;
@@ -16,10 +16,10 @@ type MatcherSelection = gestures.matchers.MatcherSelection;
const getGestureModelSet = gestures.specs.getGestureModelSet;
const modelSetForAction = gestures.matchers.modelSetForAction;
-import { HeadlessInputEngine, TouchpathTurtle } from '#tools';
+import { HeadlessInputEngine, TouchpathTurtle } from '#gesture-tools';
import { ManagedPromise, timedPromise } from '@keymanapp/web-utils';
-import { assertGestureSequence, SequenceAssertion } from "../../../resources/sequenceAssertions.js";
+import { assertGestureSequence, SequenceAssertion } from "../../../../../resources/sequenceAssertions.js";
import {
LongpressModel,
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/isolatedGestureSpecs.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/isolatedGestureSpecs.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/isolatedGestureSpecs.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/isolatedGestureSpecs.ts
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/isolatedPathSpecs.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/isolatedPathSpecs.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/isolatedPathSpecs.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/isolatedPathSpecs.ts
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/matcherSelector.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/matcherSelector.tests.ts
similarity index 99%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/matcherSelector.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/matcherSelector.tests.ts
index 8fdfd936a6..583e0c6031 100644
--- a/common/web/gesture-recognizer/src/test/auto/headless/gestures/matcherSelector.spec.ts
+++ b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/matcherSelector.tests.ts
@@ -3,14 +3,14 @@ import sinon from 'sinon';
import * as PromiseStatusModule from 'promise-status-async';
const PromiseStatuses = PromiseStatusModule.PromiseStatuses;
-import { assertingPromiseStatus as promiseStatus } from '../../../resources/assertingPromiseStatus.js';
+import { assertingPromiseStatus as promiseStatus } from '../../../../../resources/assertingPromiseStatus.js';
-import { simulateMultiSourceMatcherInput, simulateSelectorInput } from "../../../resources/simulateMultiSourceInput.js";
+import { simulateMultiSourceMatcherInput, simulateSelectorInput } from "../../../../../resources/simulateMultiSourceInput.js";
import { timedPromise } from '@keymanapp/web-utils';
import { gestures } from '@keymanapp/gesture-recognizer';
-import { TouchpathTurtle } from '#tools';
+import { TouchpathTurtle } from '#gesture-tools';
type MatcherSelection = gestures.matchers.MatcherSelection;
type GestureModel = gestures.specs.GestureModel;
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/pathMatcher.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/pathMatcher.tests.ts
similarity index 99%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/pathMatcher.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/pathMatcher.tests.ts
index 4678efed71..ac2250f5f9 100644
--- a/common/web/gesture-recognizer/src/test/auto/headless/gestures/pathMatcher.spec.ts
+++ b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/pathMatcher.tests.ts
@@ -3,7 +3,7 @@ import sinon from 'sinon';
import * as PromiseStatusModule from 'promise-status-async';
const PromiseStatuses = PromiseStatusModule.PromiseStatuses;
-import { assertingPromiseStatus as promiseStatus } from '../../../resources/assertingPromiseStatus.js';
+import { assertingPromiseStatus as promiseStatus } from '../../../../../resources/assertingPromiseStatus.js';
import { InputSample, GestureSource, gestures, CumulativePathStats } from '@keymanapp/gesture-recognizer';
import { timedPromise } from '@keymanapp/web-utils';
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/gestures/touchpointCoordinator.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/touchpointCoordinator.tests.ts
similarity index 99%
rename from common/web/gesture-recognizer/src/test/auto/headless/gestures/touchpointCoordinator.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/gestures/touchpointCoordinator.tests.ts
index 784d7e30b6..44f0bce4f7 100644
--- a/common/web/gesture-recognizer/src/test/auto/headless/gestures/touchpointCoordinator.spec.ts
+++ b/web/src/test/auto/headless/engine/osk/gesture-processor/gestures/touchpointCoordinator.tests.ts
@@ -2,7 +2,7 @@ import { assert } from 'chai'
import sinon from 'sinon';
import * as PromiseStatusModule from 'promise-status-async';
-import { assertingPromiseStatus as promiseStatus } from '../../../resources/assertingPromiseStatus.js';
+import { assertingPromiseStatus as promiseStatus } from '../../../../../resources/assertingPromiseStatus.js';
import { GestureModelDefs, GestureSource, gestures, TouchpointCoordinator } from '@keymanapp/gesture-recognizer';
const { matchers } = gestures;
@@ -11,10 +11,10 @@ const { matchers } = gestures;
const { GestureSequence } = matchers;
type GestureSequence = gestures.matchers.GestureSequence;
-import { HeadlessInputEngine, TouchpathTurtle } from '#tools';
+import { HeadlessInputEngine, TouchpathTurtle } from '#gesture-tools';
import { ManagedPromise, timedPromise } from '@keymanapp/web-utils';
-import { assertGestureSequence, SequenceAssertion } from "../../../resources/sequenceAssertions.js";
+import { assertGestureSequence, SequenceAssertion } from "../../../../../resources/sequenceAssertions.js";
import {
LongpressModel,
diff --git a/common/web/gesture-recognizer/src/test/auto/headless/pathStats.spec.ts b/web/src/test/auto/headless/engine/osk/gesture-processor/pathStats.tests.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/auto/headless/pathStats.spec.ts
rename to web/src/test/auto/headless/engine/osk/gesture-processor/pathStats.tests.ts
diff --git a/web/src/test/auto/integrated/cases/basics.spec.ts b/web/src/test/auto/integrated/cases/basics.spec.ts
index 2ca272b7e8..6103701fd8 100644
--- a/web/src/test/auto/integrated/cases/basics.spec.ts
+++ b/web/src/test/auto/integrated/cases/basics.spec.ts
@@ -1,7 +1,7 @@
import { assert } from 'chai';
import { DEVICE_DETECT_FAILURE, setupKMW, teardownKMW } from "../test_utils.js";
-import { Device } from "keyman/engine/device-detect";
+import { DeviceDetector } from "keyman/engine/main";
import { KeymanEngine } from "keyman/app/browser";
const baseTimeout = 5000;
@@ -49,7 +49,7 @@ describe('Basic KeymanWeb', function() {
});
});
-const device = new Device();
+const device = new DeviceDetector();
device.detect();
if(!device.touchable) {
describe('Basic Toggle UI', function() {
diff --git a/web/src/test/auto/integrated/test_init_check.spec.ts b/web/src/test/auto/integrated/test_init_check.spec.ts
index f51a280f56..813ac7ba45 100644
--- a/web/src/test/auto/integrated/test_init_check.spec.ts
+++ b/web/src/test/auto/integrated/test_init_check.spec.ts
@@ -2,7 +2,7 @@
// We'll let things break after this reports, since this will likely signal a LOT of other failures.
import { assert } from 'chai';
-import Device from 'keyman/engine/device-detect';
+import { DeviceDetector } from 'keyman/engine/main';
/* Note - we still have to prevent errors setting up test resources;
* Karma will fail to report errors for affected browsers otherwise.
@@ -16,9 +16,9 @@ describe('Test Initialization', function() {
this.timeout(15000);
it("Detects device without JS errors", function() {
- let device: Device;
+ let device: DeviceDetector;
try {
- device = new Device();
+ device = new DeviceDetector();
device.detect();
console.log("Detected platform: " + device.browser + " on " + device.OS + " with form factor " + device.formFactor);
diff --git a/web/src/test/auto/integrated/test_utils.ts b/web/src/test/auto/integrated/test_utils.ts
index 6e04885b1a..9cacb46cb0 100644
--- a/web/src/test/auto/integrated/test_utils.ts
+++ b/web/src/test/auto/integrated/test_utils.ts
@@ -1,6 +1,6 @@
-// // KeymanWeb test suite - processing of the Karma configuration's client.args parameter.
+// KeymanWeb test suite - processing of the Karma configuration's client.args parameter.
-import Device from 'keyman/engine/device-detect';
+import { DeviceDetector } from 'keyman/engine/main';
import * as KMWRecorder from '#recorder';
import { type BrowserInitOptionSpec, type KeymanEngine } from 'keyman/app/browser';
import { ErrorStub, type KeyboardAPISpec, type KeyboardStub } from 'keyman/engine/keyboard-storage';
@@ -17,7 +17,7 @@ const domain = `${loc.protocol}/${loc.host}`
// If we've set things up to support Device dection without loading KMW...
try {
- const device = new Device();
+ const device = new DeviceDetector();
device.detect();
} catch (err) {
// Sets a warning flag that unit-test files can use to disable themselves.
@@ -233,7 +233,7 @@ export async function runKeyboardTestFromJSON(jsonPath: any, params: any, assert
const testJSON = await jsonResponse.json();
const testSpec = new KMWRecorder.KeyboardTest(testJSON);
- const device = new Device();
+ const device = new DeviceDetector();
device.detect();
// @ts-ignore // Types are a bit messy here.
diff --git a/common/web/gesture-recognizer/src/test/resources/@types/promiseStatus.d.ts b/web/src/test/auto/resources/@types/promiseStatus.d.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/@types/promiseStatus.d.ts
rename to web/src/test/auto/resources/@types/promiseStatus.d.ts
diff --git a/common/web/gesture-recognizer/src/test/resources/assertSegmentSimilarity.js b/web/src/test/auto/resources/assertSegmentSimilarity.js
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/assertSegmentSimilarity.js
rename to web/src/test/auto/resources/assertSegmentSimilarity.js
diff --git a/common/web/gesture-recognizer/src/test/resources/assertingPromiseStatus.ts b/web/src/test/auto/resources/assertingPromiseStatus.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/assertingPromiseStatus.ts
rename to web/src/test/auto/resources/assertingPromiseStatus.ts
diff --git a/common/web/gesture-recognizer/src/test/resources/json/canaryRecording.json b/web/src/test/auto/resources/json/canaryRecording.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/canaryRecording.json
rename to web/src/test/auto/resources/json/canaryRecording.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/basicMultitouch.json b/web/src/test/auto/resources/json/receiver/basicMultitouch.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/basicMultitouch.json
rename to web/src/test/auto/resources/json/receiver/basicMultitouch.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/desktopRoamAndReturn.json b/web/src/test/auto/resources/json/receiver/desktopRoamAndReturn.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/desktopRoamAndReturn.json
rename to web/src/test/auto/resources/json/receiver/desktopRoamAndReturn.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/embeddedBorderCancel.json b/web/src/test/auto/resources/json/receiver/embeddedBorderCancel.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/embeddedBorderCancel.json
rename to web/src/test/auto/resources/json/receiver/embeddedBorderCancel.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/hardBorderCancel.json b/web/src/test/auto/resources/json/receiver/hardBorderCancel.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/hardBorderCancel.json
rename to web/src/test/auto/resources/json/receiver/hardBorderCancel.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/mobileProximityApproach.json b/web/src/test/auto/resources/json/receiver/mobileProximityApproach.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/mobileProximityApproach.json
rename to web/src/test/auto/resources/json/receiver/mobileProximityApproach.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/mobileSafeZoneCancel.json b/web/src/test/auto/resources/json/receiver/mobileSafeZoneCancel.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/mobileSafeZoneCancel.json
rename to web/src/test/auto/resources/json/receiver/mobileSafeZoneCancel.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/popupLongRoamingEnd.json b/web/src/test/auto/resources/json/receiver/popupLongRoamingEnd.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/popupLongRoamingEnd.json
rename to web/src/test/auto/resources/json/receiver/popupLongRoamingEnd.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/popupSafePersistence.json b/web/src/test/auto/resources/json/receiver/popupSafePersistence.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/popupSafePersistence.json
rename to web/src/test/auto/resources/json/receiver/popupSafePersistence.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/receiver/popupShimCancel.json b/web/src/test/auto/resources/json/receiver/popupShimCancel.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/receiver/popupShimCancel.json
rename to web/src/test/auto/resources/json/receiver/popupShimCancel.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/segmentation/flick_ne_se.json b/web/src/test/auto/resources/json/segmentation/flick_ne_se.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/segmentation/flick_ne_se.json
rename to web/src/test/auto/resources/json/segmentation/flick_ne_se.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/segmentation/longpress_to_ne.json b/web/src/test/auto/resources/json/segmentation/longpress_to_ne.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/segmentation/longpress_to_ne.json
rename to web/src/test/auto/resources/json/segmentation/longpress_to_ne.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/segmentation/nonstationary_hold.json b/web/src/test/auto/resources/json/segmentation/nonstationary_hold.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/segmentation/nonstationary_hold.json
rename to web/src/test/auto/resources/json/segmentation/nonstationary_hold.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/segmentation/quick_small_square.json b/web/src/test/auto/resources/json/segmentation/quick_small_square.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/segmentation/quick_small_square.json
rename to web/src/test/auto/resources/json/segmentation/quick_small_square.json
diff --git a/common/web/gesture-recognizer/src/test/resources/json/segmentation/simple_ne_move.json b/web/src/test/auto/resources/json/segmentation/simple_ne_move.json
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/json/segmentation/simple_ne_move.json
rename to web/src/test/auto/resources/json/segmentation/simple_ne_move.json
diff --git a/common/web/gesture-recognizer/src/test/resources/sequenceAssertions.ts b/web/src/test/auto/resources/sequenceAssertions.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/sequenceAssertions.ts
rename to web/src/test/auto/resources/sequenceAssertions.ts
diff --git a/common/web/gesture-recognizer/src/test/resources/simulateMultiSourceInput.ts b/web/src/test/auto/resources/simulateMultiSourceInput.ts
similarity index 100%
rename from common/web/gesture-recognizer/src/test/resources/simulateMultiSourceInput.ts
rename to web/src/test/auto/resources/simulateMultiSourceInput.ts
diff --git a/web/src/test/auto/tsconfig.json b/web/src/test/auto/tsconfig.json
index f61a4f23a8..f88f147539 100644
--- a/web/src/test/auto/tsconfig.json
+++ b/web/src/test/auto/tsconfig.json
@@ -11,6 +11,7 @@
"include": [
"dom/**/*.ts",
"headless/**/*.ts",
- "integrated/**/*.ts"
+ "integrated/**/*.ts",
+ "resources/**/*.ts"
]
}
diff --git a/web/src/test/manual/build.sh b/web/src/test/manual/build.sh
index 046cefe152..ee75c87710 100755
--- a/web/src/test/manual/build.sh
+++ b/web/src/test/manual/build.sh
@@ -11,7 +11,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
# ################################ Main script ################################
builder_describe "Builds the Keyman Engine for Web's sample page setups." \
- "@/common/web/sentry-manager build" \
+ "@/web/src/engine/sentry-manager build" \
"@/web/src/app/browser build" \
"@/web/src/app/ui build" \
"@/web/src/tools build" \
@@ -33,8 +33,8 @@ builder_describe_outputs \
#### Resource paths ####
-SENTRY_MANAGER_SRC="$KEYMAN_ROOT/common/web/sentry-manager/build/lib/index.js"
-SENTRY_MANAGER_MAP="$KEYMAN_ROOT/common/web/sentry-manager/build/lib/index.js.map"
+SENTRY_MANAGER_SRC="$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js"
+SENTRY_MANAGER_MAP="$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js.map"
SENTRY_SRC="$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js"
SENTRY_MAP="$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js.map"
@@ -49,11 +49,11 @@ function do_copy() {
cp "$SENTRY_SRC" "$KEYMAN_ROOT/$DEST/sentry-bundle.min.js"
cp "$SENTRY_MAP" "$KEYMAN_ROOT/$DEST/sentry-bundle.min.js.map"
- GESTURE_RECOGNIZER_BUILD="$KEYMAN_ROOT/common/web/gesture-recognizer/build/lib/."
- GESTURE_RECOGNIZER_TARGET="$KEYMAN_ROOT/web/build/engine/gesture-recognizer/lib/"
+ GESTURE_PROCESSOR_BUILD="$KEYMAN_ROOT/web/src/engine/osk/gesture-processor/build/lib/."
+ GESTURE_PROCESSOR_TARGET="$KEYMAN_ROOT/web/build/engine/gesture-processor/lib/"
- mkdir -p "$GESTURE_RECOGNIZER_TARGET"
- cp -a "$GESTURE_RECOGNIZER_BUILD" "$GESTURE_RECOGNIZER_TARGET"
+ mkdir -p "$GESTURE_PROCESSOR_TARGET"
+ cp -a "$GESTURE_PROCESSOR_BUILD" "$GESTURE_PROCESSOR_TARGET"
}
builder_run_action clean rm -rf "$KEYMAN_ROOT/$DEST"
diff --git a/web/src/test/manual/embed/android-harness/build.sh b/web/src/test/manual/embed/android-harness/build.sh
index 1f9c8066dd..015660cb0b 100755
--- a/web/src/test/manual/embed/android-harness/build.sh
+++ b/web/src/test/manual/embed/android-harness/build.sh
@@ -9,7 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
builder_describe "Builds a debug-host page simulating Keyman Android's WebView setup for KMW use" \
"@/common/web/keyman-version" \
"@/web/src/app/webview" \
- "@/common/web/sentry-manager" \
+ "@/web/src/engine/sentry-manager" \
clean configure build
builder_describe_outputs \
@@ -43,7 +43,7 @@ if builder_start_action build; then
cp "$KEYMAN_ROOT/web/build/app/resources/osk/keymanweb-osk.ttf" "host/keymanweb-osk.ttf"
# We shouldn't rely on a prior Android build for these files! We can retrieve them separately.
- cp "$KEYMAN_ROOT/common/web/sentry-manager/build/lib/index.js" "host/keyman-sentry.js"
+ cp "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js" "host/keyman-sentry.js"
cp "$KEYMAN_ROOT/node_modules/es6-shim/es6-shim.min.js" "host/es6-shim.min.js"
cp "$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js" "host/sentry.min.js"
diff --git a/web/src/test/manual/web/gesture-recognizer/hostConfiguration.mjs b/web/src/test/manual/web/gesture-recognizer/hostConfiguration.mjs
index 7bd1426a58..2e40a29640 100644
--- a/web/src/test/manual/web/gesture-recognizer/hostConfiguration.mjs
+++ b/web/src/test/manual/web/gesture-recognizer/hostConfiguration.mjs
@@ -1,6 +1,6 @@
// -- BEGIN: Code for controlling the layout-simulation elements --
-import { GestureRecognizer } from '../../../../../build/engine/gesture-recognizer/lib/index.mjs';
+import { GestureRecognizer } from '../../../../../build/engine/gesture-processor/lib/index.mjs';
function updateConfig() {
let layout = document.config.screen;
diff --git a/web/src/test/manual/web/osk/scratchspace/setup.mjs b/web/src/test/manual/web/osk/scratchspace/setup.mjs
index ec3ae0dcac..f4c1923b5d 100644
--- a/web/src/test/manual/web/osk/scratchspace/setup.mjs
+++ b/web/src/test/manual/web/osk/scratchspace/setup.mjs
@@ -1,12 +1,12 @@
import * as KeymanOSK from '../../../../../../build/engine/osk/lib/index.mjs';
-import Device from '../../../../../../build/engine/device-detect/lib/index.mjs';
+import { DeviceDetector } from '../../../../../../build/engine/main/lib/index.mjs';
import { loadKeyboardFromPath, loadKeyboardsFromStubs } from '../kbdLoader.mjs';
// NOTE: we must actually set these in this manner to have accessibility outside of
// this script tag!
window.modules = {
osk: KeymanOSK,
- device: Device
+ device: DeviceDetector
};
let prefix = '../../';
@@ -22,7 +22,7 @@ window.keyboards = loadKeyboardsFromStubs(stubs).then((keyboards) => {
window.keyboards = keyboards;
});
-let device = new Device();
+let device = new DeviceDetector();
device.detect();
if(device.formFactor == 'phone') {
diff --git a/common/web/es-bundling/README.md b/web/src/tools/es-bundling/README.md
similarity index 100%
rename from common/web/es-bundling/README.md
rename to web/src/tools/es-bundling/README.md
diff --git a/common/web/es-bundling/build.sh b/web/src/tools/es-bundling/build.sh
similarity index 83%
rename from common/web/es-bundling/build.sh
rename to web/src/tools/es-bundling/build.sh
index 768f41fa2f..ec2deee862 100755
--- a/common/web/es-bundling/build.sh
+++ b/web/src/tools/es-bundling/build.sh
@@ -3,7 +3,7 @@
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "${THIS_SCRIPT%/*}/../../../resources/build/builder.inc.sh"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
@@ -17,7 +17,7 @@ builder_describe "Builds KMW's esbuild-oriented common configuration & tooling"
builder_describe_outputs \
configure /node_modules \
- build /common/web/es-bundling/build/index.mjs
+ build /web/src/tools/es-bundling/build/index.mjs
builder_parse "$@"
diff --git a/common/web/es-bundling/src/classTreeshaker.mts b/web/src/tools/es-bundling/src/classTreeshaker.mts
similarity index 100%
rename from common/web/es-bundling/src/classTreeshaker.mts
rename to web/src/tools/es-bundling/src/classTreeshaker.mts
diff --git a/common/web/es-bundling/src/common-bundle.mts b/web/src/tools/es-bundling/src/common-bundle.mts
similarity index 84%
rename from common/web/es-bundling/src/common-bundle.mts
rename to web/src/tools/es-bundling/src/common-bundle.mts
index fb3dfb95a4..856d08ec05 100644
--- a/common/web/es-bundling/src/common-bundle.mts
+++ b/web/src/tools/es-bundling/src/common-bundle.mts
@@ -3,6 +3,7 @@ import esbuild from 'esbuild';
import { esmConfiguration, forES6, iifeConfiguration } from './configuration.mjs';
import { prepareTslibTreeshaking } from './tslibTreeshaking.mjs';
+let CHARSET = 'ascii';
let FORMAT = 'iife';
let MINIFY = false;
@@ -28,6 +29,8 @@ Parameters:
Options:
--help Shows this script's documentation
+ --charset= Sets the charset type for esbuild to emit. Defaults to 'ascii'
+ but may also be 'utf8'.
--format= Sets the format type to use for the generated bundle. Should be
'iife' or 'esm'.
@@ -49,15 +52,28 @@ if(process.argv.length > 2) {
case '--help':
doHelp();
break;
- case '--format': // bc TS uses this exact flag. esbuild... uses sourcemap (in the JS config)
- let input = process.argv[++i];
- switch(input) {
- case 'iife':
- case 'esm':
- FORMAT = input;
+ case '--charset':
+ let charsetOption = process.argv[++i];
+ switch(charsetOption) {
+ case 'ascii':
+ case 'utf8':
+ CHARSET = charsetOption;
break;
default:
- console.error(`Invalid bundling format specified: ${input}. Must be 'iife' or 'esm'.`);
+ console.error(`Invalid bundling format specified: ${charsetOption}. Must be 'ascii' or 'utf8'.`);
+ doHelp(1);
+ break;
+ }
+ break;
+ case '--format': // bc TS uses this exact flag. esbuild... uses sourcemap (in the JS config)
+ let formatOption = process.argv[++i];
+ switch(formatOption) {
+ case 'iife':
+ case 'esm':
+ FORMAT = formatOption;
+ break;
+ default:
+ console.error(`Invalid bundling format specified: ${formatOption}. Must be 'iife' or 'esm'.`);
doHelp(1);
break;
}
@@ -128,6 +144,7 @@ const baseConfig = FORMAT == 'iife' ? iifeConfiguration : esmConfiguration;
const config: esbuild.BuildOptions = {
...jsVersionTarget == 'es6' ? forES6(baseConfig) : baseConfig,
entryPoints: [sourceFile],
+ charset: CHARSET as 'ascii' | 'utf8',
outfile: destFile,
minify: MINIFY,
metafile: !!profilePath,
diff --git a/common/web/es-bundling/src/configuration.mts b/web/src/tools/es-bundling/src/configuration.mts
similarity index 100%
rename from common/web/es-bundling/src/configuration.mts
rename to web/src/tools/es-bundling/src/configuration.mts
diff --git a/common/web/es-bundling/src/index.mts b/web/src/tools/es-bundling/src/index.mts
similarity index 100%
rename from common/web/es-bundling/src/index.mts
rename to web/src/tools/es-bundling/src/index.mts
diff --git a/common/web/es-bundling/src/tslibTreeshaking.mts b/web/src/tools/es-bundling/src/tslibTreeshaking.mts
similarity index 100%
rename from common/web/es-bundling/src/tslibTreeshaking.mts
rename to web/src/tools/es-bundling/src/tslibTreeshaking.mts
diff --git a/common/web/es-bundling/tsconfig.json b/web/src/tools/es-bundling/tsconfig.json
similarity index 82%
rename from common/web/es-bundling/tsconfig.json
rename to web/src/tools/es-bundling/tsconfig.json
index 54c922e1bd..1c317aabec 100644
--- a/common/web/es-bundling/tsconfig.json
+++ b/web/src/tools/es-bundling/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../../../tsconfig.base.json",
+ "extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"baseUrl": "./",
diff --git a/web/src/tools/testing/bulk_rendering/renderer_core.ts b/web/src/tools/testing/bulk_rendering/renderer_core.ts
index 8c00c9b917..50c5ca2494 100644
--- a/web/src/tools/testing/bulk_rendering/renderer_core.ts
+++ b/web/src/tools/testing/bulk_rendering/renderer_core.ts
@@ -1,5 +1,5 @@
// Includes KeymanWeb's Device class, as it's quite a useful resource for KMW-related projects.
-import { Device } from 'keyman/engine/device-detect';
+import { DeviceDetector } from 'keyman/engine/main';
import { type DeviceSpec } from '@keymanapp/web-utils';
import type { KeymanEngine } from 'keyman/app/browser';
@@ -243,7 +243,7 @@ export class BatchRenderer {
fillDeviceNotes() {
let description = document.createElement('p');
- let device = new Device();
+ let device = new DeviceDetector();
device.detect();
description.appendChild(document.createTextNode('Browser: ' + device.browser));
diff --git a/web/src/tools/testing/bulk_rendering/tsconfig.json b/web/src/tools/testing/bulk_rendering/tsconfig.json
index 3ada9b1853..8256bda7b9 100644
--- a/web/src/tools/testing/bulk_rendering/tsconfig.json
+++ b/web/src/tools/testing/bulk_rendering/tsconfig.json
@@ -14,6 +14,6 @@
"references": [
{ "path": "../../../app/browser" },
- { "path": "../../../engine/device-detect" }
+ { "path": "../../../engine/main" }
]
}
diff --git a/web/src/tools/testing/recorder-core/package.json b/web/src/tools/testing/recorder-core/package.json
index 426595e567..6bec4354ae 100644
--- a/web/src/tools/testing/recorder-core/package.json
+++ b/web/src/tools/testing/recorder-core/package.json
@@ -19,7 +19,7 @@
},
"homepage": "https://github.com/keymanapp/keyman#readme",
"dependencies": {
- "@keymanapp/models-types": "*",
+ "@keymanapp/common-types": "*",
"@keymanapp/keyman-version": "*",
"@keymanapp/web-utils": "*"
},
diff --git a/web/src/tools/testing/recorder-core/tsconfig.json b/web/src/tools/testing/recorder-core/tsconfig.json
index 01e1431945..67affcca5e 100644
--- a/web/src/tools/testing/recorder-core/tsconfig.json
+++ b/web/src/tools/testing/recorder-core/tsconfig.json
@@ -15,7 +15,7 @@
"references": [
{ "path": "../../../../../common/web/keyman-version" },
- { "path": "../../../../../common/web/utils/" },
+ { "path": "../../../engine/common/web-utils/" },
{ "path": "../../../engine/predictive-text/types" },
{ "path": "../../../engine/js-processor" },
{ "path": "../../../engine/keyboard" },
diff --git a/web/src/tools/testing/recorder/recorder_ui_and_stubs.js b/web/src/tools/testing/recorder/recorder_ui_and_stubs.js
index f543b881fe..6e0d182578 100644
--- a/web/src/tools/testing/recorder/recorder_ui_and_stubs.js
+++ b/web/src/tools/testing/recorder/recorder_ui_and_stubs.js
@@ -1,5 +1,5 @@
import * as KMWRecorder from '../../../../build/tools/testing/recorder/lib/index.mjs';
-import { Device } from '../../../../build/engine/device-detect/lib/index.mjs';
+import { DeviceDetector } from '../../../../build/engine/main/lib/index.mjs';
import { getResourcePathPrefix } from './recorder_KeyboardScripts.js';
@@ -124,7 +124,7 @@ window.errorUpdate = () => {
window.initDevice = () => {
// From KMW.
- var device = new Device();
+ var device = new DeviceDetector();
device.detect();
document.getElementById("activeFormFactor").textContent = device.formFactor;
diff --git a/web/src/tools/testing/recorder/tsconfig.json b/web/src/tools/testing/recorder/tsconfig.json
index e25a4f6034..a33d2ee5eb 100644
--- a/web/src/tools/testing/recorder/tsconfig.json
+++ b/web/src/tools/testing/recorder/tsconfig.json
@@ -11,7 +11,7 @@
"references": [
{ "path": "../../../../../common/web/keyman-version" },
- { "path": "../../../../../common/web/utils" },
+ { "path": "../../../engine/common/web-utils" },
{ "path": "../../../engine/predictive-text/types" },
{ "path": "../../../app/browser" },
{ "path": "../recorder-core" },
diff --git a/windows/src/.gitignore b/windows/src/.gitignore
index 350b7e4bdb..065f4a07f3 100644
--- a/windows/src/.gitignore
+++ b/windows/src/.gitignore
@@ -34,3 +34,8 @@ keyman-windows-coverity.tgz
# This file is still generated by devtools. TODO: eliminate in future
PathDefines.mak
+
+# .res files, generated during build
+desktop/kmshell/kmshell.res
+engine/keyman/keyman.res
+engine/keyman32/version64.res
diff --git a/windows/src/README.md b/windows/src/README.md
index 1d057482bb..b18b626dc0 100644
--- a/windows/src/README.md
+++ b/windows/src/README.md
@@ -1,40 +1,39 @@
-# Keyman for Windows and Keyman Developer
+# Keyman for Windows
## Build Prerequisites
* See [Windows Build Environment Configuration](../../docs/build/windows.md).
-## Building Keyman for Windows and Keyman Developer
+## Building Keyman for Windows
-1. Start 'Developer Command Prompt for VS 2019'.
-2. Run `nmake build` from the **windows/src** folder.
+1. Start 'Git Bash' (part of Git for Windows).
+2. Run `windows/src/build.sh`.
3. Artifacts from a successful build will be placed in **windows/bin** folder.
-*Note*: running `nmake build` will currently reset the packages and path settings
+*Note*: running `build.sh` will currently reset the packages and path settings
in your Delphi environment. If you use Delphi for other projects, you should
consider building Keyman under a login user dedicated to it, or in a VM.
-Type `nmake` to see build targets. Common build targets are:
+Type `build.sh` to see build targets and actions. Common build actions are:
-* `nmake build`
-: builds Keyman for Windows and Keyman Developer
+* `build.sh build`
+: builds Keyman for Windows
-* `nmake clean`
+* `build.sh clean`
: remove temporary files and build artifacts
-* `nmake release`
+* `build.sh publish`
: makes a release of all Keyman Windows projects
-* `nmake install`
+* `build.sh install`
: install some or all components to Program Files (requires elevated command prompt).
### Building without Delphi
-It is possible to build all components that do _not_ require Delphi by adding
-the environment variable `NODELPHI=1` before starting the build. Currently many
-components are Delphi-based, but if you are working just in Keyman Core, the
-compiler, or Keyman Engine's C++ components, you may be able to get away without
-building them. In this situation, we recommend copying the relevant Delphi-built
+It is possible to build all components that do _not_ require Delphi. Currently
+many components are Delphi-based, but if you are working just in Keyman Core, or
+Keyman Engine's C++ components, you may be able to get away without building
+them. In this situation, we recommend copying the relevant Delphi-built
components into windows/bin folders from a compatible installed version of
Keyman for testing and debugging purposes.
@@ -45,8 +44,8 @@ build, you will need to obtain valid code signing certificates. See
Certificates, below. Official release builds for Keyman are built in the Keyman
project's CI environment.
-1. Start 'Developer Command Prompt for VS 2019'.
-2. Run `nmake release` from the **windows/src** folder.
+1. Start 'Git Bash'.
+2. Run `windows/src/build.sh publish`.
3. Artifacts from a successful build will be placed in **windows/release**
folder.
4. **buildtools/help-keyman-com.sh** will push updated documentation to
@@ -65,7 +64,7 @@ globally trusted. The environment variables `SC_PFX_SHA1` and `SC_PFX_SHA256`
can be set to custom certificate paths.
The Keyman repo can build test certificates for you. To build your own, run
-`./build.sh certificates` from **common/windows/delphi/tools/certificates** to
+`./common/windows/delphi/tools/certificates/build.sh certificates` to
build and install your own local root CA "**KeymanTestCA**" certificates. If you
specify a password for the certificate, you'll need to set that in the
environment variable `SC_PWD`.
@@ -76,7 +75,7 @@ You do not need to install the **KeymanTest** certificates, only the
**KeymanTestCA** certificates.
If you have not already installed the **KeymanTestCA** certificates using the
-`nmake` command above, to manually install the Keyman **KeymanTestCA**
+`build.sh` command above, to manually install the Keyman **KeymanTestCA**
certificates, do the following in **common/windows/delphi/tools/certificates**:
1. Open the certificate and click 'Install certificate...' to open the
diff --git a/windows/src/build.sh b/windows/src/build.sh
index a1fc4d0e1a..4ef6da65b8 100755
--- a/windows/src/build.sh
+++ b/windows/src/build.sh
@@ -18,6 +18,7 @@ builder_describe \
":engine Keyman Engine for Windows" \
":desktop Keyman for Windows" \
":components=global/delphi Delphi components" \
+ ":support Support tools" \
":test=test/unit-tests Shared unit tests" \
":fv=../../oem/firstvoices/windows/src/inst OEM FirstVoices for Windows app"
diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res
deleted file mode 100644
index 5154f0aa06..0000000000
Binary files a/windows/src/desktop/kmshell/kmshell.res and /dev/null differ
diff --git a/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml b/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml
index 0248e5185b..d8ae71a33b 100644
--- a/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml
+++ b/windows/src/desktop/kmshell/locale/cs-CZ/strings.xml
@@ -47,7 +47,7 @@
- Add/remove language...
+ Přidat/odebrat jazyk...
@@ -71,15 +71,15 @@
- Uninstall
+ Odinstalovat
- Enable
+ Povolit
- Disable
+ Zakázat
@@ -191,7 +191,7 @@
- Add/remove language
+ Přidat/odebrat jazyk
@@ -243,7 +243,7 @@
- Keyboard options...
+ Možnosti klávesnice...
@@ -361,7 +361,7 @@
- (no hotkey)
+ (žádná klávesová zkratka)
@@ -610,13 +610,16 @@ klávesnici, kterou používáte v systému Windows. Klávesnice se automaticky
- Klíč
Počáteční klíč
+
+ Spustit %1$s
+
+
Ukončit
@@ -658,7 +661,6 @@ klávesnici, kterou používáte v systému Windows. Klávesnice se automaticky
- Klíč
@@ -782,7 +784,6 @@ klávesnici, kterou používáte v systému Windows. Klávesnice se automaticky
- Klíč
@@ -905,6 +906,10 @@ klávesnici, kterou používáte v systému Windows. Klávesnice se automaticky
Vyberte klávesnici klávesnice pro nalezení souvisejících písma.
+
+
+
+ Pro klávesnici %1$s nebyla nalezena žádná písma.
diff --git a/windows/src/desktop/kmshell/locale/it-IT/strings.xml b/windows/src/desktop/kmshell/locale/it-IT/strings.xml
index 40088f6e8d..13e1cee816 100644
--- a/windows/src/desktop/kmshell/locale/it-IT/strings.xml
+++ b/windows/src/desktop/kmshell/locale/it-IT/strings.xml
@@ -46,6 +46,10 @@
Annulla
+
+ Aggiungi/rimuovi lingua...
+
+
Fare clic su questa icona per selezionare una tastiera
@@ -64,6 +68,18 @@
Aiuto
+
+
+
+ Disinstalla
+
+
+
+ Abilita
+
+
+
+ Disabilita
@@ -174,6 +190,10 @@
Aggiungi lingua
+
+ Aggiungi/rimuovi lingua
+
+
Tastiera A Schermo:
@@ -223,7 +243,7 @@
- Opzioni tastiera
+ Opzioni tastiera…
@@ -275,6 +295,10 @@
Simula AltGr con Ctrl+Alt
+
+ Allow right modifier for hotkeys
+
+
Tratta i morti hardware come semplici tasti
@@ -341,7 +365,7 @@
- (nessuno)
+ (Nessun tasto)
@@ -400,6 +424,14 @@
Copyright © SIL International. Tutti I Diritti Riservati.
+
+ Created by %1$s
+
+
+
+ Copyright © %1$s. All Rights Reserved.
+
+
Versione
@@ -590,13 +622,16 @@ che usi in Windows. Le tastiere Keyman si adatteranno automaticamente al layout
- Keyman
Avvia Keyman
+
+ Start %1$s
+
+
Esci
@@ -638,7 +673,6 @@ che usi in Windows. Le tastiere Keyman si adatteranno automaticamente al layout
- Keyman
@@ -762,7 +796,6 @@ che usi in Windows. Le tastiere Keyman si adatteranno automaticamente al layout
- Keyman
@@ -885,6 +918,10 @@ che usi in Windows. Le tastiere Keyman si adatteranno automaticamente al layout
Seleziona una tastiera Keyman per trovare i caratteri correlati.
+
+
+
+ Nessun carattere trovato come suggerimento per la tastiera %1$s.
diff --git a/windows/src/desktop/kmshell/xml/config.css b/windows/src/desktop/kmshell/xml/config.css
index 704c4e6f92..4a433082a1 100644
--- a/windows/src/desktop/kmshell/xml/config.css
+++ b/windows/src/desktop/kmshell/xml/config.css
@@ -840,10 +840,10 @@ th
color: #444;
position: absolute;
bottom: 32px;
- left: 80px;
- height: 50px;
- padding-top: 25px;
- padding-left: 56px;
+ left: 73px;
+ height: 64px;
+ padding-top: 32px;
+ padding-left: 110px;
box-sizing: border-box;
}
diff --git a/windows/src/desktop/kmshell/xml/keyman_support.xsl b/windows/src/desktop/kmshell/xml/keyman_support.xsl
index e33d031a47..b36a30a0d8 100644
--- a/windows/src/desktop/kmshell/xml/keyman_support.xsl
+++ b/windows/src/desktop/kmshell/xml/keyman_support.xsl
@@ -29,11 +29,19 @@
diff --git a/windows/src/desktop/kmshell/xml/sil-logo-blue.png b/windows/src/desktop/kmshell/xml/sil-logo-blue.png
index e0d7ab6b37..b65c2a4e08 100644
Binary files a/windows/src/desktop/kmshell/xml/sil-logo-blue.png and b/windows/src/desktop/kmshell/xml/sil-logo-blue.png differ
diff --git a/windows/src/desktop/kmshell/xml/splash.css b/windows/src/desktop/kmshell/xml/splash.css
index 413280ce05..de0a33b188 100644
--- a/windows/src/desktop/kmshell/xml/splash.css
+++ b/windows/src/desktop/kmshell/xml/splash.css
@@ -33,7 +33,7 @@ div {
}
#silLogo {
- position: absolute; right: 20px; top: 24px; background: url("sil-logo-blue.png"); width: 48px; height: 50px;
+ position: absolute; right: 20px; top: 15px; background: url("sil-logo-blue.png"); width: 107px; height: 64px;
}
#family {
diff --git a/windows/src/desktop/kmshell/xml/strings.xml b/windows/src/desktop/kmshell/xml/strings.xml
index 850f27930c..24909d3486 100644
--- a/windows/src/desktop/kmshell/xml/strings.xml
+++ b/windows/src/desktop/kmshell/xml/strings.xml
@@ -377,6 +377,11 @@
Simulate AltGr with Ctrl+Alt
+
+
+
+ Allow right modifier for hotkeys
+
@@ -541,6 +546,16 @@
Copyright © SIL International. All Rights Reserved.
+
+
+
+ Created by %1$s
+
+
+
+
+ Copyright © %1$s. All Rights Reserved.
+
diff --git a/windows/src/desktop/setup/UfrmRunDesktop.dfm b/windows/src/desktop/setup/UfrmRunDesktop.dfm
index c9872c3b51..c298bf1243 100644
--- a/windows/src/desktop/setup/UfrmRunDesktop.dfm
+++ b/windows/src/desktop/setup/UfrmRunDesktop.dfm
@@ -30,412 +30,575 @@ object frmRunDesktop: TfrmRunDesktop
AutoSize = True
Picture.Data = {
0954506E67496D61676589504E470D0A1A0A0000000D49484452000002BB0000
- 0067080600000000008AFF000000017352474200AECE1CE90000000467414D41
- 0000B18F0BFC6105000000097048597300000D8A00000D8A01FD2DA348000032
- 5A4944415478DAED9D097C54D5D9FF9F3B6B32931D02041209229B828A056BF1
- 558322B5B56EADEBEB025671EFDF0DB10256D00275A9A27D5BADD58A5A972E2A
- 2E6D5544032AB24A70615F12CC0209D993C93699F99F27F74EBC33B9F7CEB977
- EECC2433CFD7CFF94466EE3DDBDCE577CE79CEF308DEBBC00F0441104452B2FA
- CD29F1AE0291C4AC7CFAAFF1AE029104082476098220921712BB443C21B14BC4
- 0212BB044110490C895D229E90D8256201895D8220882486C42E114F48EC12B1
- 80C42E411044124362978827247689584062972008228921B14BC41312BB442C
- 10FC7ED2BA0441100441104462426297200882200882485848EC120441100441
- 10090B895D822008822008226121B14B100441100441242C2476098220088220
- 888485C42E41100441100491B090D825088220088220121612BB044110044110
- 44C2426297200882200882485848EC12044110044110090B895D822008822008
- 226121B14B100441100441242C2476098220088220888485C42E411004411004
- 91B090D825088220088220121612BB04411004411044C2426297200882200882
- 485848EC12044110044110090B895D822008822008226121B14B100441100431
- 8011AE7936A1C49CFFA51B0433F323B14B1004411004318021B1AB0D895D8220
- 08822088010C895D6D48EC1204411004410C6048EC6A43629720088220086200
- 4362571B12BB044110044110031812BBDA90D825088220088218C090D8D586C4
- 2E4110044110C40086C4AE36247609822008822006302476B521B14B10044110
- 04318021B1AB4DD289DDB9AB77CE028B7F76CF3FFCFE524180958F4E3FF6ED78
- D78B2008225A088290CDFE4C65691A4B53583A86A571B24376B154C6D25E96BE
- 64690B7EC6DE0F6DF1AE3B4110E121B1AB4D5289DDB91F6F7F813579B6C2570D
- 2C15835F58D96D6D7FFB89A2131BE25D573DB01719BEB4FECED209610EDDC6D2
- 65EC37DF65429967B03F2FB23492F3141C50DCCACAAE88675F1144B2C0EE5127
- FB339DA55B59FA99812C9A595ACDD2B32C1593F02588FE0B895D6D9246EC6A08
- DDBE084CF8FA80095F8109DFF1A5F1AE7BD8EAC658EC92D02588FE0BBB3FF125
- 3199A5C5604CE42A81B3BE7F606905BB8F6BE3DD4682208221B1AB4D52885D5D
- 42B72FA5AC87565A2DFE171F293AB624DE6D5122966297953591FD798EA51F72
- 9EF2214BB7B132F7C4BB9F0822D19166736F6069094BE95128029F1D0FB2F406
- BBA73BE2DD5E9DFD82038014D9C75E96B6B17634C7BB7E0411292476B54968B1
- 7B67714996D5EF7C0BFC506452960DEC2758D9DFEC7C632576593913D81F3670
- E016BA1B58BA9695B723DE7D4410890EBB3FDDECCF7C29A981C20E07EDEB590A
- CCD05A599AC452214BA77016F7164B73D9BDBD3FDEEDE6EC9B41ECCF2B2CFD58
- F6B169665D04116F48EC6A93B062775EF1F6137DDDC20B20C0896AC7D8AC42D3
- A014CB6E6F77B7B3C6E39B64B158F414D1E00761F9EFCF1CBF38DE6D8D85D865
- 658C607FFEC8D2059CA790D0258818C1EE4F1BFB73374BBF5339E43596FEC4D2
- 46764F766AE4930AA2F0BD9CA59F83B6A9123E47EE60F9BD1FEFF673F40F895D
- 22A121B1AB4D428ADDB9AB77DCCE44EEA2E16ECBFEA64E5F8ADBEA1B7AB8DD82
- 0F3B18ECB26FC9B0FBB35D0EFBA0B45467A6FCBC5D15D50DF5DD8E2C3D65592C
- FEC9F1366F88B6D865F90F657FFE0CFA842EDAE86E8967BF1044B2C0EED15341
- 1473A1E214EFF97B585ACDEE479FCE3C71A6F8621045F42485437076F746966F
- 4DBCDBCFD11612BB44424362579B8412BBF77CB2FD02BF4F5884B3B9D9A9F612
- ABB76D58B7603B227477E5D575DB7BC4EEA4A1AE52B7D3511838A7AAAEB1C3E9
- B07565A4A6B86D56AB5072A0A2D623A40EE29DE5EDB608A3E2BD892D9A6297E5
- 9D03E26CD11CCE5330EF1B58196BE3D92704912CB07B3403C4CD63D7847C65CA
- EA8A247AD10E78214B39D2C798E7E52CEFAFE2DD7ECE3690D825121A12BBDA0C
- 78B18BE60ADD3E6116EB950B41B439EB25DD61DB75DCB0B471D50DCDB0F38807
- 1C0E67606637674866DAA8F223F5D0D025EC28C8700ECE74A7E6E2395DDE6EF8
- F6BB43B5ED56F7A0403E68EE906EB7EC6FF0740CF75B6C43BEEF3D78F1B1E913
- 66C7BB0FA22576A597DC232CDDC25915DCB13D8BE5BF26DE7D4210C902BB4FCF
- 02719655BE21CDD47B51E6E161194B3F62E926965EF30F901708895D22D121B1
- ABCD8013BBB8E9CCE2733E20E0A6330D7B5C64689A75B3C7D391E5B4DB5B335D
- F6D4EE6E5F4A63AB2763507A5A4D5D53D3D195AD3E6B4E7ADA9E3183538F4A75
- D871B72EECADAC69CF4A733794D6B678BB7CFE144F47A77FFAF811199BF7957B
- DC2E57CD91968E7C67AADBC50E6DECB60827CA67758B474DCEEAF2DA67E1FFDB
- 6D5D2F161DD81A137FBDD110BB9C9B5DE4E0CBF5972C7D32505E800431D09144
- E802961E0AF9EA2996E699ED31415AE9B988A5570792DF5D12BB44A24362579B
- 012776EFF9686791DFE2FF44EDFB3487757757479BA34370148E1DEC5A93E372
- 9C117A4CA3A7ADA3BCBEA522D3ED3AE2F37A3306A7A78EB6DBAC56BBD51A64BB
- D0D8DAD6D5D4D6E139DCD279B80B2CC3058B2DADB7E398EE7EF4CC09CBE5C77F
- 943F15EB5524FDB3C466F74E8F85E0355BEC726C76090585EE5D2CBD45429720
- 6207BB57713617378E5E1DF2D54C762BAE8A77FDFA0B2476894447AFD8C561F2
- 4985B970C6F83C38664806DE235076A419B61DAC852F4B8FC0E1A6BE6359AB45
- 00FC2F800FFCE0F305176B67324A0891A95D5E3C521F492F7691B91FEF409139
- 9BA5A00D662874270C71175A2D164793A7DDE372DA7B34AC1965767577FBBE39
- 585D357C50567963ABA763FE69138344F4EAFC29CBFD20DC1E725AC98CF24D93
- A3DD1F668A5D49E8E212E552E0F3D3D90C262E694AE58F66E97FA4846D92F7E1
- 5610ED82D749E96BADDDE5898CD457E80E0E4D787083128683C599B73A107F6B
- 742FF51F08B3033F244F7CC0E4B33413C4FE1F0FDFBBA3C2410DFA4BDE04A2FF
- E40D036976CF0CA4150FEC6BDCAC795248DF7C0B629FA37782ADAC6FBC31A80F
- 9A5FBDCAD20CD9C75FB374292B7F67BCFBABBF4062974874F488DD1F8D190A4F
- 5D350D4E1A99DB4798223EF62ABFFF8DCDB0ECDDADBD9FA5D8ADF0F5D24BA030
- F77B59F0EABABD30EBD9E0B9C7B50BCE87696386067D36F4B697A1B6A55D577B
- 48EC4AA03983CDE7B88309CC3B4012BDE307A79664B99CBDA60D0D2D1EA86E6A
- 3D929F9399ED4A7158CD28B7AEC5537AB0AEA9E8B7674E2E0B7CF651C1D42236
- 6C519C6D16C0BFE2ACF2CDD746B32FCC12BB92D0B982A56720C64257DA647325
- 4B3783F2CE6F35F077789EA51759150EAAE43D0A44D74B3CFE816F62F9FCD960
- 1BD06DD3132CDDC87138CE9CA3107D1DC2FF6E1F60DF042257B1727005E24C10
- 07245339CA42F183B6966FAA2D6B4B79E2000E67E879A36E61DF3FC9D2B32CDF
- 56837DE6607FD0AD1DDEB728DCF1B747C18ED783DCE72B3E7571D77F254B9FB1
- 849E3EB6EB1DE8B0F2F01AFB1BC7A1BF61793F243B4F699356447D6E062AF73E
- 89B81048EC12890EAFD8BDE0A44278FD96B3C069D7964437BEF029FCA5F8FBBD
- AD2876BF5D76298C9289DD57D6ED81ABFF1C2C7D3E5B78411FB19B7BEB4B2476
- 2325207A339CB673321C82B3BDCB6BF7777B0795D7B7B81CAE8C8C805785B139
- 293B5ADBDB87170CCECA345A161BED7898783DF59231237A5D8D952E5E9EB56D
- D5E77BDCA5A583D5CE8BB6E03543EC4A42F732109744795EE62874EF0451641A
- 9EC192221BFD82A5DFB0342E826EC0D9CC47B1FEA1119158197857A370B98F23
- 9F9741749BA63BAA928EDFA10AC4D9D846CEE37BC5AE6433896DE1DD3428E79F
- 2CDD191AB699E5390CC4885BBF34902782B3BCB7F3CE24B2F2B241141DE8C715
- 3757F15C6F4AE06F8E8398BFB254C2E35ACB88D865E7E00C2EDAC09E6AA08E78
- 3DA1EDEC21836D0CD79E012B76A5670EBE158B583A0D8267CA119C25C76B0A07
- 371FB1F49D5EF769B2B248EC2A20DD8BD358FA2988034D1C74A29A09041FC141
- 1B3E7FD6B37EAA8E777D097578C4EEB0CC54D8F1F0659099EA089BDF49BF7903
- 4ACABE8F0C4E62378A7816E4BD037E388F35FB73BF5F78CB39F607DB6CD7BEF7
- 91DAF18F7CF6D573992ED7150D9EF63AAF5F68AEEBF01504EC6CD11599A5CB93
- 376AE8A04136ABC5A6B72EAC979AC0EF3B432E74918F27CE5CED1F9493EFDDB7
- 6FACD638299A82D724B18BB37A2F82B613F900F8204421F04484421745167A7B
- B8DA681E0ABCC7D25DA1E1895576AC2B81E75D6CC4A5920E21D523A8591A0E3A
- C42E88A14E71E6F89208FA0723FFA16FD4C3529D7167FDD31C750887A69B2B69
- E61867D67125003738991DCAF625961E60E5976A1DA447ECB2F45B1067BB71A5
- 23928158509F9B096B0F5E4328E28A42BE3AA3BFBAFF33B88A807C0AE24AC27B
- 5AB3E53A575878095D5DC181CF6721C7E08AD09D6699F6A89411B4E2C0D1E6FF
- 61C77FAE707C2188D738FA51E65DC543F31C1CF4AD333AE820A2078FD8FDDDA5
- 27C3BC73FBEEEB6FEDE8823D879AC0EBF3C1886C3764B91C9075D30AE8EAFEFE
- 6726B11B253CF3F37049BA00FFDF923964A7FFE893C1969D3BBEBDA6A6BAABA5
- 7169CE9C7F3CA976EE931B77FCCEE570DC989DE6CADA515E7DA8C96F73DB05A1
- 657CAE3BA5B9ADA36568567A819EBAB01EDAD6ED152EBC7CFCB052F9E7ABF3A7
- BCE00761366F3E4CF03EC904EF1D66F755A462979D7F3AFBF32CF0BFD07FCDD2
- EF2314BA58169A1F18992D0B479FA016D20C06967711C7F9D7B3739FD7D91E9C
- A146E1FEFF78F3D7F1BBE18B16CD1E70F69537B08716FFC7D23C964E06FE010E
- 0FAAA24E3203C072679B5496123D11BDB0BFD4CC6A748ADDB526F60F462F9B67
- D4DC430DD61E5CA97A0E44D12207AF9727FADB8651565FB401C715183D223714
- 1CD0DECF9AA618CC87C46E104162573A0EEF91B9607C45856B6049C496706217
- 378E6D79F0E730313FF8675FB7E7305CF4E4074C8C76F41E37B970106CD85B1D
- B4A98CC46E1468BB2FEF36BFD0E3241DACC7CF28B60C2E280A3DA6ABB9A9ADA3
- F6C8CBD9D7BFAEFA407BF4F3AFAE670395BB2A5A7D13C6E5BA0FEEA8ACCF9D7A
- F4D0C39EF6CE82DCCC34EBB60315AD8DDD36F7292307B73478DABA8664A66587
- 64D1C8BA7CF9C5C70C5F149AF7FAABE6BDEEA9AF3BC55352323245E0FF4D9838
- BEF6ECF28D2BCCECAF48C42E3B17ED245F003E7B56045D913D1E891DA281328D
- D067A691958B66178F739CBB82A5DBF4081396370A22DC28342DCCA1BDBF81CE
- DFED3B884C20C8C1591A147CB8746996D00D802FD2A79444166BEF75200AB368
- A2E95F5687D8C5592C7C1E98758D629F63B095D7CD6CAC86890E5E3357F49770
- DDD26C2E9A2BA1D035E39A4313965FB1F47AE82C2389DD207AC5AE14F23DD295
- A100789F6164BE376896B77F104EECA6A5D861D72397415EA62BE8F3E9CBDE85
- 353BABC2E64F62D76C168F70793A7C3D22C37ECACFD7812B53533C74B7B77B3B
- 6AABD7648E1C7331143DA0E8E6EBCEE29D85369F6F36CEC21E3B38A5B3ACBA6E
- 48E1D0412D95758DCE4EB0D53577C1D8F1B9A9DFE4B85327E2F13EBFBFC222C0
- 73365BE7F20B0B0BFBE4B9F186074ADA1B1A0A3A76ED6EB2646576E68C19E76D
- F7768EAE5DB5CAC9237CCD16BC46C5AE01D1891BA29646323B6520F47024E00C
- C4AF587D9BA4B28F03D16E754298F350205CC2CEFB5647BBCE077166331CBDFE
- 4F75FC6E03091C64A0C83AA0D047BCFD6F461D144D2A7488DD68F00E4B73CCB6
- 7D646D42DBE73714BEC2EBF1D6501BED58C3E1E10585EBBF411C60544A9FA188
- 3F16C48D9867A99C870308B45D7F552EB848EC06D12376D9F763405C5999A950
- 14F63F7AB6D9C852A7D4F7F84CC2F782D6C004FB1F273F9E8985E711421B2EB1
- FB3013BB59C16277C6C3FF868FB7877F4490D83519CFFCE11FB2669E0D29EEC3
- F66997E2D2671ACF797E5FB7BFBDA6669BB7BDFDBE9CEB5E7D5FEDB85BDEDD74
- 43BA3BF5948943D37F9AEA74F4FC221B761F6CB0B932BF1D3728A52CDDE5FCE7
- 2F46E7AD543A1737A3D555377F9199331897E2A072EFDE4ECFA76B1DEEDCDC5D
- D63163BD5D020C3EF2D9A7433384F0A186CD14BC46C4AE34CAC7CD68BCA233E2
- 6558E9A58726100F19CDC300BD338D464C0D38DB85D6FEE893F84E8EC32F60F9
- BE239D97886217B98AB5F195D00F6364CA10405178C459ECA238B888D569B599
- 99B236E58138B09BA1F035BA89C37BE08B78983484F1F082836E5CC17B393020
- 55C9033797E1E6497C76842EBDF7993197EE479C453E4A761C8AC14B2178A085
- D359683F5FC7D114DC4CFA37564E8B54C68011BB2CED85BE130CD86FB88701CD
- D7362889556936BE10442F247340D9ECC1948DCA44E48413BBE823F7D385E7C3
- 29A38385E86A26742F58FE01783AB47F3E12BB26D271DF8899DD820F47D0609D
- 34BDD8925B5864249FF62335FBBDEDADCF64CF7EF551B86F64362C2BAB8FB46E
- 9B6E5C7C434666E6C336A7334BFEF986E79F832192C787A13FFEF1BA0307CBA6
- D976EC0007C46E8657AFD8650967ABF5CCAE9A626F28D906E34B298FF314DC69
- BF42AA37DE89289671B6011FBCBC4BFAA1B3D96AB360A160B95CA60C1A9B8442
- C1CD95D7B03CABA4F31255ECE24BF7D74A6EC16264CA80280ACB388B5D04DD91
- A1BD69B79999B2765D0EA27051DB6C8462184D08B6C772D95963E32B0AADB9AC
- 2EFB75E4A5E615437373A474AEA9DE180690D83D87255C75927B6F41EF2968F6
- B2957700246D68C399F92B14BEC6E7190E703F36A3DD84317836A8CD3E6D2CFC
- F5FAA23E9F6F3A5003B39F2D861D95EA5289C4AE592C166C9E8E615D817FDA4F
- BBA204EC292746926567637DB5B7A9FEADCC6B5FBFC9681E6BAFBA77566676D6
- 436959597D36B5757576C2972FBFD42B76475C76D98E92E24F46E71EAE0EEFD7
- 438209DEC94CF096F01EAF844EB18B4211BD42DCCC99FD5F40142E3CB31F5A75
- 44BFA9388B730DC7E1F8F2C10D36FF557A314B330E3F0171669AC7FEAF77B34E
- 98593039DCA60C2CCFB3417C8184E37E9696045E3006C52E8A38140F3868D80D
- 18C4469C7D3997250C6A6274D309123AB81802E2CB125FA07ABC11E092F4D5AC
- 997D9E9C614C19D0D55493547EC0E70D3E5931A8089EA7D7D6B38FE8362876F1
- DA7F526A57A9F4592118EBF37F81B86AD0A8B30E9A48B3E6B86A11CE251D7A34
- C0DF197D3C1B76E5C55927F4B6F29CD44F727036F56E56768D813CD596E37B36
- 5DAA09CD2416BB78CDCAFB1F9FC10B0CBA56C49531F4A0B154E16BB40BBE8A36
- ADC50F1EB18B9BCF3EB9EFBC3E6214C199DDE51F7E0D0FADFC123ABC7DC7E224
- 764DC2333F0F6FC2DB02FF8E64663708D6BEF623D5ADA9B9C316DB042672CE5A
- C2E5FE67E39C0716399CCE39E9D9D9C3B58E3BB0ADA4213523C3DF527AA02E6F
- F20F5277BDF9AFE1D91C660C321A98E09D1E89E0D5E9DF15FD7DEA89EA8662F7
- 4E136675795D7F696E300AC913EDF950B8849B29EE9D5195965517009F294558
- 53066983D003200A592D7A7CEBB2FC36CACED52B7671060B37E56C56D90086E6
- 3528CA6672E61700FB1C5DA1A90D2EF4BA88D37271173065C065669C75459323
- 5CCD29D75A0695063868C3899B6278064C483188769695B27CF48A5D45DFC4B2
- FC8E0671B6F15CCEFCD043C8E52CBFBD3AEAC085E48319CD69E6709E82BFCF9B
- 523F61BDEACC327590EE3334175A1EF255C46ED8241188C2553EF8D134114962
- B12B079F0D0B4C3045530B258FF6BB8F98BD6A41F0C11B54A220270D56DD7B2E
- 8C1DA61C720067792F7EEA43F8AE2EF83221B16B02EDF7E715F9BA8323905986
- 1DBDDE7AEC19A718CD53CEA18FDEED1876D6CFEC4C5456B29BF571FB8C254F28
- 1D57BAF899C2C6BAFA67535DEE33AC36BBE6EC6C6D4545D3A15D3BBB5CDDDE7A
- D7D061AD35BB761664E70DAFA8DFBD7B925B87770689069BDD3BAAE8C0D606BD
- 272231580E4737558F1B7D88E9B49545FBB0E7785EBA3A6D80E5B6B2E8720BED
- B2C389E41510C69481E585C14470A6EA9C3079F599D1D3F9BB710D02589EC783
- 38EBCBBB098C2B0A9E64E38DED9CCE91A7A6AF626976EEB0969DA6463DF0379F
- 05E28B9DC73F6890BF599D62179F495787DBE0A573A3675443F94AA207C5C83C
- CEFE9183A20FC522CEFAAE539A99D7510FA5A885A62C776B08E9DECD9F0AE724
- BBD8C541DB8D91FCA6B2B2DC5259A1832ADD1B7B09F3D0132E78707A0ABC7CE3
- 74387B623E5814F4CAAEAA0698F6E0DB50EFF9FE5622B16B02729FBABD1573BA
- 0ED94EBD6C9819F91F2AFED03BE4B8B19F7D3F532C3CCB046FD04301379F7575
- D9BFB30816AE0D715FAD5DD3993F6AD4A1CA55AB8E32206E95B87346F9A6E546
- 4E8C81D8E59E6D55A91FAF5BAE209B56CEBC794301F72E69EBD82815F6E12DBD
- 90FE0BE185459F59629DBF9BEA8B3C244FDE99E60038DB7E1DCF4B50A7BDADA2
- 337B3390064FE873F86E8EC3F1BA7D4976AE1EB1FB0B76EE9B9C75E2756B17D5
- BE91EA820F245CBD590CC6DDD5E12008852FDA0117EB117052F9D74BE7CAF93D
- 88338B11874F56197CA9DEAF492E76B15F2E37122847A36E6A83EA7EE9DF3919
- D0237611DCB076E5B431F087AB4F85F4147B9FEF577CBA1BAE7BAEB8D7D72E89
- DD08699F3F7CA10FFC8A3373669932547DF2210C9D3836282FBF0D26388A96F6
- CEAEECBDFF992201FC9FE8CDBBEE5095AFDDD3D25EF9F917D6415EAFD3702505
- 583CE3BB4D8B0C9D1A9B8D4E866DB274B8E5BA89E5FF679D79F386024621FDBF
- 013B411DC24DD59441874984E24B58E7EF36939DBF8AB34F702320EFC084BBCF
- 2533897F801856341CD11674BCB3F341E24087D82D8610138830F5C1973FCEDE
- 8F8977DFC8EA14885A87A62F574490150E76D1CC6C45C0F556987295025DF431
- E389B06D6AF79EE2F59CE462D774F3028D4135F7E0993017BD6237009A33BC7D
- C78F615C5ED0DE7B6869EF82D1735F839A6651A492D88D80B68523A6F97D3ECD
- 87BE75E8D15F76A60C72415A768AD5959E6D4FCFC8E4CD3F008ADD21E347ADB1
- E68D3923F0995FF0CF779CB56C59E0DF7B16FCE9448B45D86AB42D8DB5B5B07F
- F5AAA6F4564F86D54806024C6762B7D8D0A9B1DBD56FC82B03AB1F0AD1A5610E
- 8B244C2FCF06317CD99E1788AAA6634658F505A6232A9BE2ACAC19619E55FAE3
- 1810675D7EC07138B7F092DA8BB3693CF6A9D116BBB920AE1684DB6888D72C6E
- 866A97CEE315BBBA848B8A988A4BDFA8D40F371B5E08A2FBADB30C6683D7DF83
- 200612D00AD78BD7DDBB103C10E909916D64639446394AAB2A41BFB7ECD86415
- BB51332D501970063D6789D86154EC226398E0FD7AC925E0B005EF37BAE24FAB
- E1EF1BF6F5FC3F89DD08E8F5A9AB03EBB853FF6B1931F6277ACEA9DBF625A45A
- DABF4D9D34EDB8DE0FFDFE75F6B39705B9B0D97DDF1F0E5B6DB62146DBF3CD9A
- 4F1A1C35D55DF6E6D65C9DA7AE9951BEA9C868B9317661859B945ED1E1B286D7
- C1BBEA0E7E8E3278671CE576BBBCCBFD5A9BAD945EEA4A282E87EB0C177C25CF
- AC9A942FAFF0D22BA2F538EB0F2BE824FB5BBC27A7B0846EA5C68238332ADF78
- 8403D01AA9AEB889139DDF978328707884779000D1132E584954C4AA6FA28934
- 68990AA2AB3CB435D7B36115414179BF9A8716953EBE8B1DFF44D89CF5B543C9
- E55FD00A8EECD86415BBA6D629A44CB550D541A643446C8844ECA249C3C6453F
- 87C92307057DBEF08D4DB0F41D710E90C4AE41DAE6E7CD63253F6CE45CEBC917
- 6EB5A465733FA05BCB0F42FBC19DF583A6CD0C0A076CCF2E74C00F6EE87577B6
- 77C19F5E162CC25546DBB4E59FAFB7E4B478D26C191915DEDC5C0FECDB177649
- 5300FF36ABBDBBC8E8E6B49E3C622B767149F34A1DB381BCC20B67089E063182
- 8F5EF0A18B4B9A53C31C17F4C2D5E121422D48028F9D6631A82C8727ABD865F9
- A0B37FDC6486A6244642C7E23588261D682F786A986349EC86AF3BDE3F183D12
- 852F0E1E789EAD8A5E1524F38207A42487DB0C4747BD3114147A18B85EF6B1E2
- 06C02416BBBA4DC374D44FEDB7D675EF10E61089D8B531B1BB6DC925306178B0
- 29C3DDAFAD8727DE17175B49EC1AC0B370F814F0F937193DDF7ECACFD7822BF3
- 743DE794BFF152C7E0A93FDADDD9D631C2027E8FBFABA3C1D2EDDD9875F7C7D7
- 058ED977FFD3B8CCF796913AEDFE720B7496944060B35A46D1F45DEDDECEACE6
- 3D7BBD368FC76E6D6E569A316EF4835014433FBB4AE04B0B378EA0494738E120
- 3F87CB7D90CE25F568136ABFC96B86D0E725A631AB110A96B758C95E2ED9C4AE
- B43110BD6D2C84C8FC01EB81C4AE0E240193CF12065FC167A3D66A491FB32695
- 7E306CA2C4515725B1A574ED25ABD88DB63991D2FD14B5D964421DE72F9FF787
- 5587020485BBB25A2C302C33156E3C7302CCFD49DFD7D0E94BDE81CF761FEAF9
- FF48C46EC11DAF405D6B07F0EA4D3CAAFDF9EB1240EC2EC87B87B5E63CA3E71B
- 0938D1527600BA0E95D5A53ABCD5FE6EBF0DEA2B8EB158FC8BD396552D921FC7
- 04AFEE0E69AAAB85C6AACA8ACAF51B4604024C205E87A33975E2C4CA8C11C3D3
- 2BB77C09CECA4AB9CF5E53842E1281D8453B5774ADB54723D2911A5C3BABFB59
- 94B03EF67CAC7EF8727826CC797D5E8A9C1B92D03EF1271A339C492376D9B9F8
- F4C34D4E97F094652224760D22B509BD39A06F63B55593A0550F9D76DDD1023D
- 0FFC3DA42DC92876A3EAE64E2A576933ACE9F6D944781A5A3BF9B48B10FCBF28
- 621DB6BE3B8DCA6A5BE0D85FFF03DA3A45F7E79188DDE6B62EF0813E6995E572
- 0C6CB1DB367FF81D7E88CC762B92E86ADD6D6D50FDC13F61704637FED2EFBA96
- 549D2FFF7EE7BCE5ABED4EE7997AF23C54560A759B36D4399B5B73E4E6DD68A2
- C004ED0996C1B9FBBD9D6D2E4B53CB30DB8993F779F7EFF5FBC64E583873E51F
- FFAEA71C350C0ACAA0109B619C852BC1EB9FB53F895DA5195AAD885E72425FEA
- 3C2259736772B2885D4900A1D0BD92A71C9321B11B2152B00AEC0BA5E86C6803
- 3F87B5A75A3A56CF46BD68D1C7EC2849C5AEE1F64558475DCF2BC21CD85BD854
- 3177CB8B9FC1331F6FEFFD772462D7088200035BEC7AE6E77D03E2A614C3D87F
- 78D13A706785F3D9DA075F571734EDDDE9B1946D71A53A7ADADD068277B46B49
- 4DAF5FD7FD0B9FBEC32F806E31EE696E064F636353D5964D5D6975F5BD56DED9
- A79FB1A17CEBE6B1EEE6D66C183CB8CCDFD4946DE9E8987556C5E69566F5A9C1
- 485C7D62C94BA2041FD8BCB36FF830BD224C4CFAFE2E7679035EF49EABC34FAF
- E6A69C6410BB1A01006205895D13D008471C14B98CC42E895D20B11B17CC12BB
- DD3E3F2CFFE06B98F7FAFAA00C49ECEA84895D9C01D0EBAD2008EB0FCE5D6BC9
- 1CA268B38B6EC6864D1CF337217754EF46B3B6C395DECE9A4375C2E13DA9A982
- 27643392FF3CD7D243EF05FE8551D4BABDFE0346EB86B6BBFE6D25E0907EA7C2
- 59B33D5B3FFEC89AD6D0D024389C1DD6DABAFBCF2EDFB8C2CC3ED5292851E8A2
- EFD86F54F2D2130D0AD1B4DFD51150221628BE8C38FD00F7BE3838FB9B272045
- 32885D5E176F0170961DCD69D01F6B6D207CB15436B60BBD36A09D342E93F3D8
- FD92D83509D6C64210FB2ED4B67F3E6BCF32E918255B7614C468AE152B1BCE3F
- B1FA04DDCF2476A3834A1DF1F7BF9D95EB8956B9445F2215BB1DDE6EF8B6BC1E
- 16BDB519FEBDED20844A4312BB3AF1CC1FCE6E04FF758633B0D85BADD32EA9B1
- 389C85F28FBDAD2DD0DDD1D164B1D9D2EC1999BDD604351B3E6D7337ED4BB55B
- 95DBC93E7DC4BDB4EA5EF9673BE73DB9DFEE748C523ABEB6AA0A8EECDC593168
- E4C8D6ECA38E1A8533BAE9D9D9F6B21DDFB6A7BADC4D75E5E516FBEEDD83B102
- 1687A369E4955765E0795B56BED99477C2092F9EF6B7C77842E6EA4287680A1B
- AE539A894307F4B844CF1B6E1443F6FE9EE5EB55C8AF3FD8F005507B51A0EB30
- 749513CE676BCF8C11A7605A01E1430D2783D8E50DDE8175B803DBCA192A1AC3
- 34A3FFE270C11248EC9A84462007F9AA87523FC4DDF76A928A5D8436A8250977
- BFB63E48EE86D3BE81A7ACB7DB07E5F5ADB0B5EC0854D4B582D7A77C9ECD6A81
- 7B7E7A3CE4B8BF8F9DF565692DBCB67E6FD071B7CE380E0A077305A2D564EE4F
- 4F18D862B7737EDEB15E515818DA9D6F3F6146310C2A280AFDBCED5015F83ADA
- EADD238FEE712FD6D9500F0DEB3EE8CC4E697384C9F22BD7D2AA20B1B1F3DEE5
- 7FB63B9C37281D8C33B7F66DDB823E4B2938EA2BA1706476EDDAB5052E59E8E0
- F471E3360E9E76EAC93D79AEFFE2837357BD744E34FAD4ECE0043AC3B1223873
- 7375E86C8A94570A889BD96E099387A27FCC5820BDC4EF94EAA9053EC417487D
- 134ED4840D359BE86297A52DC0F7DBAB5E3F26D485C4AE89A8AC8204F9C866C7
- A0EFEA07438EE9F5711DA77A27ABD855749B68162A0183C8F5581C88C4F5587F
- 24215C8F219EFB865DCF8A9F0542CF4B910BEBD0C22D96E3A6AB8AE483EFFCB3
- E5A8F32FE9195234EEDA01B07F03B89CE1DB27586CF9A9BFFDAE22F06FADD0C1
- DB3E2DEECED8BBBFCFD6C594DCDC5DED0505C3DD3983EC7EAFB7E5F0E68DB6CC
- CE2E61E879E7D7B7B4B6B4FDF0B9878E8D565F46231297B47B1E1FDE17705643
- D10E58CA8B67335790ED5FACE10C3F8BFD87A1377F03DACBF2D81768CBAC690E
- 9304627727673D74871825B11B1F786C3455FA1805F012DE603451A8772CC4AE
- A9CBF72AFDA857ECE267BF66E718F15F1EAE7EB8F2F74710030DC989AAC02694
- 21B1AB4D5C23A8216DF70DFF85DFE29FC5E38A2C9C1786FA6FBE82ECF1133683
- CD3EE5D0DA8F21ABB30CAC9670B962270817A72EAB7C43FED9DEF9FFE711ACD6
- D4D063BFFCCFBF5BB20F1FEE33478F260BCE3163F7B70B9069B73B5B3CF547D2
- 2D757529BEC6E64FCEA9D8F4BFD1ECC328869DD5EB8E0C67EC7FC5F26F0AC947
- 29ACA7128A617563818E4D67FF61E9A7618E41FBC5FBC3C5A24F02B17B84B37D
- 8B41F445CCFD30D278D1864262D74454445EE8CCAE526441DD031A93EB1D0BB1
- 6BDAEA94DE800D1AD71FD7C0DB601D953CD9C4DD64255921B1AB4DDCC56E8096
- F97967B096A11761D59797FDE40B3E83B41CD599E0E6FD7BC19D7FD4115F6767
- 4ED5076F5A86656B6A8D5E5817BCE45E56354BFED9F6BB1E7BCF62B79FDBD6D2
- 0C1939DF87D02B595BEC4BDDB7CFE250B09D7616147CDDED74DAB2274ECC49CB
- CE195A535EBEEF9417961C13EDBE8BA2D8C5466274A2677554A78FFDAE8EE00D
- BA97B343EA8BA21C9DE0BFAF643FCC713E3AD27F43EF790A6DE09AA126B1DB8B
- EE654F1D7D97F06257721BE86679369A95A746594A660CA17DACB6492D9E2B37
- 668B5DA5EBCFB4E0191ACF4CBD6217415BF8A7CC9C55D730FD8AEBA0269921B1
- AB4DBF11BB019AE60D1963B5D96E13C08FE23353FE9D75D2F4624B6E61916AE7
- 78BD20D86C3D33BC50B615D2527DBCC5D6BB965605EDEC5E957FF26C4766DA43
- 2D6D1D59479D7AEA662664A759AD36475767276CFBCF7B2D83EA1B342DB0D1C7
- EEE8395715153E7087E130C0BC444BEC4A79ABB91C520343B9626CF435B23CF4
- 8866ACE3CDECFC2F74D411F3FF1188EEADC6B3F45B969ED43B436CC0738012EF
- 8328D88F709447625744D752AB4E7766092D76651B4AE7B2F42B96D645CB5440
- 63835A9F9979958D892B20CCA6CD681105B18B1E85D0CB4CE8A6565396F03542
- 991B11BBA67B65D0F0CCA1E96E91881E2476B5E9776237C0E17B86B9D36CC26D
- ECF17A3348CBE8E1C46E7BF561E8A82E6F80EFBECE425B5DCBD153FED301CE51
- 9DDBBF98E04ED116BE16104E4F595AF969E0DFC5A3266779BB6CBDA3538BC3D1
- 9872FCA483D963C68DAAADACB4A7656494EF7967E5E86CA1AF9D040A5DABBDBB
- A8E8C0D6A80BDD9EF2A22876A5FCF5BA23C3A533147C7B64791482F2C35109AC
- 1F6E70798323421B2E95DE0EA21897BF183038C6523D517C585E688B8DCB86F7
- EBE99F107053DF139C1E05125DECF2DAEC46D3BC26D1C5AEBC2F70A08936E5FF
- 30B2B2C151D608103DAB4C0FF9AACFE633958123DE8B37B0635F37B14EB899D6
- 1ACE4E360A6257EDF75634E5D299B75BCA7B8EC2D746C42ED227B47304F5C395
- 041CE0CC0FF92AEAAECE087548EC6AD36FC5AE9CD6F9C3AF6602F23626763D6A
- 62B7B5E23B68DFFA3164B87A82D235D94FBFB256B03946D56EDD0CA935DF80DD
- 16C60D07C063EEA555F7C83F5B9D3FA50423A0F5E934267C3B9DF64E4B736B6E
- E84EB5580BDD9E32A32C76A5326682181E97D71D59D0C3559A1542A1F1B28E62
- 31DC250A135CFA2C957D8EEEDCD0761B97F8B4FCAD625977EBB1A1D3615FAC84
- 2E7BB52410BB5FEA38FE2F20CEEED669948FC206039EE0CC3DAF1D79C28A5D8D
- 41E8632C3D62A667138D088BEB40B4532D0B395E6DF65DD3CFB7CE3AE1F57017
- 8803E85B43EB1072AC9A0BC433D8796B0D96AFB4F1362241CFE1FAD1A8D84550
- 9C3E1EC99E8830F5C3FC1F09B75781880E2476B51910623740FBAB973D68C939
- EA56C1660F12371DB547A069DBBA962CA8ED312DB08E995262299874A2B7B515
- 6A56BD2186060ED71102EC4A5D52355EFED9470553173115FC40D893BFA7D1DB
- 6D3BF19CAA2F4A63D92F3112BB7AC30923E8BEEDB9C02CA701930833C0CD339A
- 2FC29076F2DA172BB102742CD326BAD895FCECF278E208B009447184EDADC3EB
- 46BAEEF259C2194C5C1A3F8D33AF0009297659792EA9AFE6A81C827D89E2E3E3
- 40608E08CAC2E52BDC648B03586E81232DF563FF87DE4B110B5E8510C6D89FD7
- A95DCB1ABF0FF74A8C429E6AA1C60DB54F1292386BFE57501FCCE915BB380097
- 6F14C419D9478DCCF04AD7C1E52086FE0E9D6040EF45B89A57A1375FC21C48EC
- 6A33A0C46E0FC58B535A8E1CBA57B05A6F76A4670C6DDCBD03FC7B37803B456A
- 476AD676FB8F2E3A16430357AFF9B0335BA8765838BBACBBDB323EFDE18ADE87
- E5AAFC934F14C0BF95B3668D7E108ACE2EDF5812EB2E8985D895CAD1EB8E4CC9
- 7E57AF4984193C09E2AC613B673B79032184822FB8E7790F4E12B1AB26086245
- 428A5DA94C1493B84148CB23055E3B8FB2B4C6E0A64D1CA0E2EC29AE7A850A5D
- 6C03DAA8966A9C3F05C415A150F186D7DC4296DED423C625C185AB06E8DB35D4
- 246A9D549F032AE72AF9840D1BF25CA32E6ACBF9817C6F054E1B6A69961A0714
- 382B1F109238500F9D89D62B762F656956483E1831142771B6F28A7CE95AC381
- 41A8B918D2E7394FC41E12BBDA0C3CB12BE3D06F4FBDB7BDA2ECD221D9DD7823
- 16F47C6873001CF3A30DAD7BB78F4DEDAAC9E615BA3D9DC11EE8A94BAB1E937F
- F651FED45208BF641A37A1DB53EF18895DA9ACE3D91F5CA2E3152F7DC209B33C
- 2682282663217835C319ABB4D18840D3EDE22749C4AE1976D09190B06257562E
- 0A10EC632DD31BB949D0D75A9B01A519461CD8A237055C9D99A4701897C091F2
- C299DDC741F939FA96D46F5F688971960D06073A596AAB52D43CAC0FEEEF785F
- 4DC0699828E12C380AB9CF4385B7AC2FD08CEBDD502F03ECEB31209A47283DCB
- D0A401AF3F749157A6542FA95DA783B8C1507EBFE22C3ADA41BF1F728AEE086A
- 2C619B9E86E0E70CD6ED5FD2393B54A25F62DBF3A5FEBE45E5F7C37C6E62E9B5
- 78F950264406AAD8C5ABECD21F8E86821C37941D69817F6DDCDF13FB8DC4AE12
- 8B8F73B4B6D5DE2C58045CD23BCE6836AC273E752FAD3A5DFED9AAFC9357489E
- 2134CE1326C74BE8223116BB46C209A3FFDA79F2C84292A0C41701CF8635A3E8
- B6D995EA86B32C686EA127B4B36E1FC1C92076A5F3F4AE08F08075CF82F003D1
- 8416BB52D9784FA26F5B346BE0BD9F70C50A7F7714C10113041C98A0B09DCCD2
- 388D7375091C0EC18BA0582D6669A3542FAC13CE2AE373026787D13B819A6DFE
- 2EA93E6BB4EA239928E1F57089469FA0179883D2BF8F02D1CB0BF687E23DA8E3
- 79B84BCA7BA7F4EF74A95D5315DAD533406709DD569A122E987D8FEF35F486A3
- F4BBA29DFC3AA9EF7110A4E73AC059ED67A2B12192D0C74015BBF94CE4CE9C98
- 0F3327E5C3EA6F2BE0D52FF6426B8797C46E38DA17E45DE3F3FB6F604D3324A2
- BAFC8E9CCC6565BDA3F7D523A65CE81784B7D48E6742F75A267457C4B3CDB114
- BB5279F8604531781BE7298A2F4769696C11986FC38BE5E1D2EDE346771FB3BA
- 9DCDFE7CA8E39499ACAC553ACB480AB12B9D6BA6F90A0E6270397A39471B135E
- ECCAEA80E2106762D13B09EF063EBDE0B5827E5B3FD0190444EE1E70AA89F5C1
- 25F97B585576F21C2CCDEEBE62A07F54EF41C99C012744F0F737B2B1550E3E73
- D0EE7F8F49E182E583CE93401C949B31C160C80C85881E0355ECA6A5D8E1CE1F
- 4F82D223CD307A48062C7D772B747A7D247679F12CC83B177C7033087D6C9E34
- B108302B6549D54B817F87BA2093D31F842E126BB12B95A9E686480DB489BB3C
- D4E1BA6483772688E2C58C97E07B525EEB235956935C9AE1753083E3708C9C74
- 0D2BAE4A6719492376A5F3474AE71BD9FC87E020066D247189D7C5D9C6A411BB
- B2BAE0EF3F1B44BFBB668A5EBC1F1ED0B2D1E5A89B96EDA71E703612BD723CAB
- 67402B89EECB40342DC8E13D0FC2DC8352BE782DA2981FA7235F39785D2F0AAC
- 44992D76A5E3CC986088F83A20CC67A08A5DC4EDB4C3B1C3B3607B6503B47674
- F57C466257279E85C3A7F87DBE3B04E879C9F1F4C8DBAE25872E947FF451C1D4
- 954CD9062DC1F617A1DB53E538885DA95CBDE18455ED6725D30114CEF8B0C625
- 4B3D2F42144138FB8ECB741BCC5852D38810A404DAA32ED12BAE934DEC4A79E0
- EFFC3396EE05FEC14DC0BE10C5CD01C94B036F1B934EEC86D40967D2AF01D184
- 448FB80B80A21207B5D88F3BCDB2CB64754313019C0DC5CDA07A04399A5DE07D
- FE1AEFFDA05036DEDBB8448F03A79F719C82D71F3EE7EE6365B684C91BC5245E
- 03F8ECE0ED6FBCBF1F06D10CC327CBCB74B11BD27E9C99E51D78069EB168AEB1
- 816673FB1FC2357F492831E77F690E895D23B42D1C51E0F3F9E7B206DF080238
- 350EDDEB5A5A3546FE818229C39D33CA37F1446F220C20D9D6A1109A06A25D1B
- DAAEC9674BD0B60E6DFC706309DA9A6D8D46A854CEF0C1389B7B212B7F63BCFB
- 6D20212DFD8E05716083BF33FEBE93A5AF5160A1105F0FA21DE7FA489CF413BD
- FD8D9B8DB08F7183282E6963844A1C68054459A0DF03F7166EBAD4DCCC6642BD
- 708316DA874E93D250599D764975D926FD3FAEA07C6796D09256958E0551F09D
- 02A27D704078E3B587A6112844D17D5BB5CEBC03038D22109F65F2BC03CF2FDC
- DC879BD04A4D700FC72D7665E70436DF611D4F937E07F45F8E130D286E711FCA
- D7521FACD7DB0704D19F481AB1DBCBE2E31C9E8EDAB97EBF703BBBD587847E8D
- 0129DC4BAB32433FEF11BC16011F04C533BEDB541CEF66109123B945C2DFBA8F
- 5B261D36A638EB75AB9E486D044110666244EC124432917C62578667FEB0EBD8
- 53E26EA6707B5D4CB1A16E71EAD22A5E3B54628012E27101678DD0D518465242
- 83219CFDC297068FED9D2EDFBA0441106643629720B4496AB11B0037B3097E98
- EB17A0C6B5A4EAD278D787883E1ACEEEF56068631A4110849990D825086D48EC
- 12498789810ED005D353E44C9D20887842629720B421B14B241D2685B0A558F0
- 0441F40B48EC128436247689A442A74B313570331A0ADDB7E3DD1E82200812BB
- 04A10D895D22A9602F8551ECCF6B105924AF5FB3F47B0A914910447F80C42E41
- 68436297482AD84B019DEBFF158C39D84716B1F448204801411044BC21B14B10
- DA90D825920E83E154D1B9FA22965652F4208220FA13247609421B12BB44D222
- 45953A9E250CCB89D19B0A418CA48404A249A1C8C5E8791B6836972088FE0889
- 5D82D086C42E41100441100491B090D825088220088220121612BB0441100441
- 1044C2426297200882200882485848EC12044110044110090B895D8220088220
- 08226121B14B100441100441242C24760982200882208884E5FF037933C780A7
- F045C20000000049454E44AE426082}
+ 0067080600000000008AFF000000C67A5458745261772070726F66696C652074
+ 7970652065786966000078DA6D505B0E032108FCE7143D02022A1EC77D25BD41
+ 8F5F5036A99B4EE2803C4604CECFFB8297839280E4AAA595820669D2A89BA338
+ D1072794C103DB8614D1250EA546135988CDF2BC6A9936DDF168B86DEAE6E51F
+ 21DD23B1AD8926A1AF0FA178887D229FED08A116424C339142A0CF6F61695A97
+ AF9DB842E701A73D6309B181E75DAA6DEFC8F60E139D9C188D9975D6B01F01EE
+ E6A831B17AA195B95F8D33D798C416F26F4F37E00BBA4A59FA71D652FC000001
+ 84694343504943432070726F66696C650000789C7D913D48C3401CC55F53B545
+ 2A0E7610E990A13AD9C58A38962A16C142692BB4EA6072E917343124292E8E82
+ 6BC1C18FC5AA838BB3AE0EAE8220F801E2ECE0A4E82225FE2F29B488F1E0B81F
+ EFEE3DEEDE0142ABCE54B32F01A89A65645349B1505C1103AF08228201C41097
+ 98A9A7730B79788EAF7BF8F87A17E359DEE7FE1C434AC964804F244E30DDB088
+ D78967362D9DF33E7198552585F89C78D2A00B123F725D76F98D73C561816786
+ 8D7C768E384C2C567A58EE61563554E269E2A8A26A942F145C56386F7156EB0D
+ D6B9277F61A8A42DE7B84E3382141691460622643450431D16F55583468A892C
+ ED273DFC638E3F432E995C353072CC63032A24C70FFE07BFBB35CBF129372994
+ 04FA5F6CFB631C08EC02EDA66D7F1FDB76FB04F03F03575AD7BFD102663F496F
+ 76B5E81130BC0D5C5C7735790FB8DC01469F74C9901CC94F53289781F733FAA6
+ 2230720B0CAEBABD75F671FA00E4A9ABA51BE0E01098A850F69AC7BB83BDBDFD
+ 7BA6D3DF0F168772E851144DAD00000D7669545874584D4C3A636F6D2E61646F
+ 62652E786D7000000000003C3F787061636B657420626567696E3D22EFBBBF22
+ 2069643D2257354D304D7043656869487A7265537A4E54637A6B633964223F3E
+ 0A3C783A786D706D65746120786D6C6E733A783D2261646F62653A6E733A6D65
+ 74612F2220783A786D70746B3D22584D5020436F726520342E342E302D457869
+ 7632223E0A203C7264663A52444620786D6C6E733A7264663D22687474703A2F
+ 2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E7461
+ 782D6E7323223E0A20203C7264663A4465736372697074696F6E207264663A61
+ 626F75743D22220A20202020786D6C6E733A786D704D4D3D22687474703A2F2F
+ 6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F220A20202020786D
+ 6C6E733A73744576743D22687474703A2F2F6E732E61646F62652E636F6D2F78
+ 61702F312E302F73547970652F5265736F757263654576656E7423220A202020
+ 20786D6C6E733A64633D22687474703A2F2F7075726C2E6F72672F64632F656C
+ 656D656E74732F312E312F220A20202020786D6C6E733A47494D503D22687474
+ 703A2F2F7777772E67696D702E6F72672F786D702F220A20202020786D6C6E73
+ 3A746966663D22687474703A2F2F6E732E61646F62652E636F6D2F746966662F
+ 312E302F220A20202020786D6C6E733A786D703D22687474703A2F2F6E732E61
+ 646F62652E636F6D2F7861702F312E302F220A202020786D704D4D3A446F6375
+ 6D656E7449443D2267696D703A646F6369643A67696D703A6161396535366135
+ 2D333431342D343666352D613332652D636634366131363238666130220A2020
+ 20786D704D4D3A496E7374616E636549443D22786D702E6969643A3338336433
+ 3663392D303533352D343866372D613937392D39376362663636653861386522
+ 0A202020786D704D4D3A4F726967696E616C446F63756D656E7449443D22786D
+ 702E6469643A33393739313537392D393962652D346132322D393138362D3261
+ 66363332643536316464220A20202064633A466F726D61743D22696D6167652F
+ 706E67220A20202047494D503A4150493D22322E30220A20202047494D503A50
+ 6C6174666F726D3D2257696E646F7773220A20202047494D503A54696D655374
+ 616D703D2231373234383434343935383930383934220A20202047494D503A56
+ 657273696F6E3D22322E31302E3338220A202020746966663A4F7269656E7461
+ 74696F6E3D2231220A202020786D703A43726561746F72546F6F6C3D2247494D
+ 5020322E3130220A202020786D703A4D65746164617461446174653D22323032
+ 343A30383A32385432313A32373A35372B31303A3030220A202020786D703A4D
+ 6F64696679446174653D22323032343A30383A32385432313A32373A35372B31
+ 303A3030223E0A2020203C786D704D4D3A486973746F72793E0A202020203C72
+ 64663A5365713E0A20202020203C7264663A6C690A2020202020207374457674
+ 3A616374696F6E3D227361766564220A20202020202073744576743A6368616E
+ 6765643D222F220A20202020202073744576743A696E7374616E636549443D22
+ 786D702E6969643A65363665353134362D313361392D346661642D393062322D
+ 393933653737386139353165220A20202020202073744576743A736F66747761
+ 72654167656E743D2247696D7020322E3130202857696E646F777329220A2020
+ 2020202073744576743A7768656E3D22323032342D30382D32385432313A3238
+ 3A3135222F3E0A202020203C2F7264663A5365713E0A2020203C2F786D704D4D
+ 3A486973746F72793E0A20203C2F7264663A4465736372697074696F6E3E0A20
+ 3C2F7264663A5244463E0A3C2F783A786D706D6574613E0A2020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 202020202020202020202020202020202020202020202020202020200A202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 200A202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020200A20202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 20202020202020202020200A2020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 202020202020202020202020202020200A202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020200A20202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 20202020202020202020202020202020202020202020202020200A2020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 202020202020202020202020202020202020202020202020202020202020200A
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 202020200A202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020200A20202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 20202020202020202020202020200A2020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 202020202020202020202020202020202020200A202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020200A20202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 20202020202020202020202020202020202020202020202020202020200A2020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 20200A2020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 202020202020200A202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020200A20202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 20202020202020202020202020202020200A2020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 202020202020202020202020202020202020202020200A202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020202020202020
+ 2020202020202020202020202020202020202020202020202020200A20202020
+ 20202020202020202020202020202020202020202020200A3C3F787061636B65
+ 7420656E643D2277223F3EDC58905300000006624B474400FF00FF00FFA0BDA7
+ 93000000097048597300000D8A00000D8A01FD2DA3480000000774494D4507E8
+ 081C0B1C0F66E13F84000036CA4944415478DAED9D099C1C6599FF9FEA73667A
+ EEC9E44E980472410209240A412111C2211EE80A2E8B0AC8A1ACEC7F410E09A0
+ 06C50485D5B8BBCAEAA2465C76659143D6658580098781404212AE1CE49884CC
+ 643293B9677AA6A78FFAD76FAA7BA6BA52D5FD56754DF74CF7F3FD7C5EC854D7
+ F9D6F1FEDEE77DDEE79122DF24991886619882E4C52717E7FA149802E6E9877E
+ 9DEB53600A0089C52EC3304CE1C26297C9252C76996CC062976118A68061B1CB
+ E41216BB4C3660B1CB300C53C0B0D86572098B5D261BB0D8651886296058EC32
+ B984C52E930D58EC320CC314302C76995CC26297C90652AE4F80611886611886
+ 61460A16BB0CC3300CC3304CDEC26297611886611886C95B58EC320CC3300CC3
+ 30790B8B5D866118866118266F61B1CB300CC3300CC3E42D2C76198661188661
+ 98BC85C52EC3300CC3300C93B7B0D865188661188661F21616BB0CC3300CC330
+ 4CDEC26297611886611886C95B58EC320CC3300CC330790B8B5D866118866118
+ 266F61B1CB300CC3300CC3E42D2C7619866118866198BC85C52EC3300CC3300C
+ 93B7B0D865188661188661F21616BB0CC3300CC3304CDEC26297611886611886
+ C95B58EC320CC3300CC330790B8B5D866118866118266F61B1CB300CC3300CC3
+ E42D2C7619866118866198BC85C52EC3300CC3300C93B7B0D865188661188661
+ F21616BB0CC3300CC3304CDEC26297611886611886C95B58EC320CC3300CC318
+ 50FEE8812AE57F1FC9F5791851ED77D1BC4ADF713AAE2314AB7FED9229BB127F
+ CFBAE6897931994EC8F5F95AC12D496FEEF9CDE75B9DDA1F8B5D866118866118
+ 0314B17BB6F2BF57737D1E462CA8F25185CF95B4AC2F2AD33B6D036B8F5D5177
+ 4B62D9CCABFEB05696E91F737DBE5670B9A415FBD6FDCD0B4EED8FC52EC3300C
+ C3308C01A355EC4E29F1D08C324FD2B2984CF476DB00F544626BBBAE9CC16257
+ 43C189DD5B5FD87915B9E4AB07FF90E57A49A2A71FFCC4297FCCF579310CC38C
+ 20188A5DA294A54A59AC9493943247F3FB6EA51C54CA5EA5BCA594ADF1657DB9
+ 3E7186C925A351EC16B9253ABDC64F2E9D823BD01DA1866004FF64B1ABA3A0C4
+ EEAD2FBEF71BE592AF36F8A943291B49969E8EBAFBFFB876F9A28E5C9FAB45D0
+ 683DA694D3D2ACB743295F24B511CB947395F25BA588FA01A143F10DA534E4A8
+ 8E18A6D0F02B6539A9EFDDA76C6CDFAD941795F24BC2F791852F53808C46B17B
+ 4AA58FAAFCC9EE0B5DE118DC174856FF64B1ABA360C46E0AA17B3C92F2618F91
+ 227C2545F8CEABCFF5B90B906DB1CB429761462FF8AE2F52CABD644FE41A01AB
+ EFBF28659D521C9B34C230A39DD126763129ED6445EC6A81FBC2B6B610F545E4
+ C42216BB3A0A42EC5A12BAC753AF3C3E4FBB5DF26F1F587ECAF65C5F8B09D914
+ BBF395F2B0523E2AB8FEF34AB949291FE4B88E18A6108035F706A5FC40296523
+ B07F7C3BBEA794279412CAF5C55AAC1774008A34CB30DE8B6F6277AE4F8E19BD
+ 8C26B13BD88BADF153892759BA7DD81BA1833D11ED2216BB3AF25AECDEBC615B
+ A55BF63F45322D7368971D44F2D3A3D0CF375B62779E52948E83B0D0DDAC946B
+ 94B233D715C4300540402977C58B191076E8B4BF4EC3165AB7521628A54E2967
+ 0A1EEB29A5DCA694FDB9BE68416A94F2A8522ED42C73D2AD8BC9534693D89D50
+ ECA659E5DEA465A1A84C5B5B4383D65D0D2C7675E4ADD8BD7DC37B0B6351E937
+ CA152E345BC7E396BA6A8A5C7B22D1A8BF25185BE072B9AC1CA2432669ED8FCF
+ 9B776FAEAF95B22376A728E5674AF9ACE0FA2C7419267B605AF6AD4AB9DFE4F7
+ FF52CACF95F286520652ECA79854E1FBB74AF93CA57655C277E466A5FC39D717
+ 2F008B5DC616A345EC42AC9D3ECE4FC5EE64D9B6A7334CCDFD51FDEA2C7675E4
+ A5D8BDF585F7FF51B9B2559303AEFD5D03B1A2803B36E168BF0B1F3B1A57E2DD
+ 5AEE95AB4A7CDE9AD2627F8576BBDD0DCD1DED515FA59563B95CF2A251E0DE30
+ D2627782527E41D6842E7C74B7E6B85E18A65040830C31A717A778E76F2775A2
+ 59CCE23E6129FE02A9227A81C1EFB0EE7E4D292DB9BE780158EC32B6182D6277
+ 5C919BE656245B75831199B6B586483E7E7516BB3AF24AECDEF697F73E2BC7A4
+ 55B0E656157BB7BB237D13A392E798140D4F6A8B7A07C5EE820925F501BFAF2E
+ B1CD91B6CE90DFE709971717053C6EB7B4FD40436B502AAE11B5F2465DD28C51
+ 30896D24C56E35A9D6A2EB05D7C7BEE133F8728EEB84610A857252278F7D45B7
+ DCA9D115885EBCD3F790FA3DA0F83E61FD7D3BD7172F088B5DC616E9C42E0CAD
+ 357E3795FB5C835657FC1D56D467E7408C8E042314952D1C2C05A756FBA8DC9B
+ AC4B767786A9E578AB2E60B1AB63CC8B5DB82B4463D255CA855C4AAACFD91065
+ 3ECFEE532696CE69EEE8A65DC782E4F3F91396DDEAF115A5330E1F6BA78EB0B4
+ 735AB97F5C45A0B816DB8423517AEFC3A6D67E77A026B11FB83B94795DFB3B82
+ A1C9B2CB335E537BBFFDA74F9C7C75AEEB80464EECA291FB9152FE5E707DCCD8
+ BE4A292FE5BA4218A680388F542BAB76429AD3EF6222C2C31AA59CA594AF93EA
+ 1AE150533EE2B0D8656C61267611E3765AC043934B3CE4365152F0A77DAF6360
+ D0029B09989086B8BAFA7D6F3916327B0159ECEA1873621793CE5C31FF77254C
+ 3A4BE18F0B2694BAB70483A14ABFD7DB5B51E22D8E4663459DBDC1F29AB2D296
+ B6AEAE998DBD31777559E907B3C6154F2FF679079FA4BD8D2DFD95A5818EFAD6
+ 9E48382617054303F2F2B953CAB7EC3B1C0C9494B41CEB094DF517074A94553B
+ A32E69A1D6AABBA16E616538E24503435E4FF8B7CBEBB7672B5EEF48885D91C9
+ 2E5AD0B87E15D54063A7016498B10EBEE1772BE5FBBAE5FFAC943BC8F98809B0
+ EC7E4E29FF49632BEE2E8B5DC6164662B7D4EBA23915DEE3FC678D802885AB41
+ 267A1799D290314D4B7D4F840EF746CC3661B1AB63CC89DDDBD6EF5C26BBE40D
+ 66BF97FADC7BC2A13E5F48F2D5CD1E57F2527589EF5CFD3A9DC1BED0E1F69E86
+ 8A40C9B15824523EAEACF844AFC7EDF6BADD4963049DBD7DE1AEBE50F068CFC0
+ D130B9264B2E4FA9A6E26E79F0BC93D76AD75F3F6531CE6B59FCCFED1E6F6479
+ 9604AFD36237DD64173D10BADF24D5BAC4429761B207ACB99838FA65DDF20B94
+ B23ED727378A60B1CBD8422F76E13B3BBBDC7B5CF6B2544094D6F744C437D0B1
+ 649C9FFC1A618D46F6CD96100DC44C9B5B16BB3AC69CD805B7BEF83E44E6D54A
+ 499A6006A13B6F7CA0CEED72F9BA82FDC112BF7750C33A71CC70341A7BF750F3
+ 91C93595873B7B83A1BBCF599024A25F9872C65A9924FDC3B47D45C3964559A8
+ 1227C52E842E86285793589CCE6E72764813C73F51291F8B175C93B60EB7C5CF
+ 7F53BCBC43A96797E733A82B8483830B0F3EC848070BCB5B1BA9F71AE1A59EA5
+ F433F0B5E09B309554B184FA9F4BC3E1A8D0A941BCE437498D9F0C9FD0B164DD
+ 73028C78A0AE3159F3745DDDBC476A9D233A019E53FBAD9B3870BF8295F57CCD
+ 32BC13972B6557AE2B6B14C16297B18556EC8E5784EEAC0AAFA970420368F45B
+ 5811A56FB4846C3590655E179D569D9C44A23D141B748F48018B5D1D6352EC02
+ B8337862BE9B158189D03783A277EEB8E2ED9525FE21D7868E9E203577F51E9B
+ 5A5D515552E4733B71DCB69E60FDA1B6AE653F38EFF4838965EBA72E5EA63CC5
+ 86D66689E475E7376CBD6684ABC329B18BE7E10AA5FC1B655FE86292CD954AB9
+ 918C677E9B81FBF02B5233BA1D32596746FC1C45E203E37A7E61F31A10B6E927
+ A4CE504F072CE710A2BFA7F4F7EDB978DD24E2A26204E213A4764896081C0BE2
+ 07BE964F92F9B036F6890E1C2CF4A259B750F73F25359D6CAFCD3AC3571C61ED
+ F0DE42B8E3DE43B0E379D0C67C8578C4ACFF46521B1E44FA789FAC7774508FFF
+ 21B0DE7728D935C06892562A44EADC098CDE7D1671C7C36297B14542EC56FA5C
+ 744A95CF5034750CC406933A748763831658A4F3D5277ED8D13630F8BB554E28
+ F50CFA066BF9A02B4C47FBA2A93663B1AB63CC8ADD0409D15BEEF75C54EE93FC
+ FDE188578E466A0EB7F794F84ACACB135115665717EDECEDEF9F3C6D5C6585DD
+ 63C56439A888D7B32F9F3D7528D4D881553FA9DCB1FEAF1F04EAEBC7996D9705
+ C1EB84D895E2BF614854A43187D0C5CB04919989050BBED27F43AAB89893C17E
+ 60CD7C207EFEFA8C48E8E840B8AC14D8CFEF480D9B6627AB92E87D3842AA35B6
+ 53707DADD8AD8E5F8BE8A4412D8F937ACFF4699B27929A71EBAB36F60960E5C5
+ 8754D4925845AAE8401CD7F348EC793302F71C9D985F939A2841A425B1237661
+ C1850FECD936CE11CF137C679B6C5E633AC6B2D8C53707610D9729E5E3946C29
+ 07B092E39942E7068DDE87643D7C5A0216BBC6E05D5CAA944F92DAD144A71386
+ 8E44F21174DAF0FDC1BD68CEF5C9E60288DD22B7F4EAC26A1F790C7C170EF546
+ E890CE45A1B6C83DE8D3AB65AF22509B520B544370DC525D1486CD2DA1416B71
+ 0A58ECEA18D562B7F7AE89CF904C9F2692FF2ACBD253FED967ECF07EF57F4D2F
+ FE87AFEC78B8A2A4E48A8E607F5B4496BADB42B169093F5B842273858393664C
+ A8A9F1B85D1EF1B350511EAB2E9263E76A852E78F194152FCA35D55323FBF6CD
+ 4E653A1E61C1EB84D885550FC2F5044A0F3E841002B06266227421B210EDE1CB
+ 19EC43CF9F48B54EEAD3131BCD583702DB21B6A89D904AA2422A21A8279335B1
+ 8B54A7A8F3CB32A81F64FE83E5F968FC6FCCAC7F48E01CD2912ECC15BED6B0AC
+ C3728E094E4EA7B27D4429DF554A7D9AF5AC88DDFB487D2F30D29149474C5FE7
+ 4E826708226E996E39CE7BB486FFB3338A005E21752401EF782A6BB995111651
+ F4A32B4633F431220481E1946B8FD131F4230EE9AE19AE487F3558BF2EBE2F7C
+ EB4447F1E09E834E1FDCC7EC763AC61C55FF79E0EC53AA7CAFEAC37E0158733F
+ 34982466E47A60248AD301E3F047C7172509B5DE488CB6B5A61DD062B1AB63D4
+ 8ADDDE951331243D6DF0A22BC6EF92677E843C55B573FB5B5A9AC33D9DAB6B6E
+ 78FCA766DBAEDDFCFEFD253EDFD7AA4A4B2A771E6E6EEA923D01AF24F5CCAD0D
+ 1475F7857A2654964DB3722E8AD0DD118D48975E316F52BD76F90B53CEF88D4C
+ D2D5A2FB5104EF4F15C17BF3085457A662F71C5287A2451BF43B95F24F9499D0
+ C5B1E07E60C75A960EA3A41655F1E37D4E60FBEBE2EB5A01166A08F7FF6761FF
+ A2F70D0D2DDC1E607D154DEC918A7F25D5DAF81112EFE088904AD405E2C7BDDA
+ A1631991C8E885FA32337B5811BB2F3B583FC85E863AB7EBEE610646AA1E2655
+ B468C1F3F2131A7D1346E1038E11182B22570FC4EEB749B53C1AC1627718BDD8
+ C57A784790EAD9EE888A68C7322FB870FD918FB9A5C18E5612C85A86EC654640
+ 189FAA13BB7626A955C55D27B43406A3B4BF3B9C6E53DB62D7254974DACC2A3A
+ F9844A0A1479A8B52B44BB3EEC1C2CD158F63E2705217683774EBC49960683A4
+ 93FBD4F337BAC64D5BA65F27DCDDD5176A3DF6BBEAEB1F33FDA0FDE8D51DD7C5
+ 62F4CD86DED8BC39B581433B1BDB6B97CC9C7034D83F30ADB6A2D4BDE340436F
+ 67D41338F384713D1DC1BEF0F88AD22ADD2E3A95B662ED65B3A6ACD2EFFBB52B
+ 6FFF7DB0BDEDCCE0F6ED271449E2D5A888E36B2E6878739DC3559689D8859FE4
+ 6F48CC9F152014D98F29333F44ABC7B48391A5F196F8B9A7639D526E226BC204
+ 8208138596A6594F7B0FACDC370CE1662210B4C04A03C1F749724EE82640430A
+ EB8FD157F15A5285D948922EBEACA8D885150BDF03A79E51D4397C7E7FEFF0F5
+ 9AB9E8E09981FFFD6849D70DB318DC9520749D78E6E0C2F20FA4D6A7DECAC862
+ 7718ADD89D42998F0C25C07B86CC7C4F509E5B792F7EE1C8C7244A16BB7D5199
+ B6B7864C1346C0BF77BE4EA4C2027CD0A2D885AF2E7C76B5A44824A1C596D83D
+ F7D409F49D2B17D28C89A5C7FDD6D93B405FB86F23ED6B1CF6F07BECAE73E9C4
+ C9C303034B6F7E960622C38FC3EB3FBD84B4D3A53EFD9D17E9C316B16635EFC5
+ AEBC6A724930141BAC0DEF999FDF44251529C543B4BF3F126A6D7EA9E284595F
+ 9096AF320CF375F3869D759E58EC6A58614F1E573470B0B96D7CDD849A9EC6B6
+ 4EFF0079DA944ED2ECB9B5C5EF56078AE763FD982C37B8247AD8E31958FBB919
+ 338EDBE7E6EBBFB3BDBFA3635A68F79E2E5765C540F5AC3991FEC8C089ADEBD7
+ FB4584EF08085EBB62D7AAE85C1D2F9958A7ACA61ECE045820D02076C5FF3E85
+ 54BFD57969B683404083F09E85637D8654CB663AB4F14F45EFDB58029D0C88AC
+ 0306BF89D6BF13E760E652212A7647826748CD44E8B4EF237C9F9F30588EE711
+ 231C0DD676E738E922BC40B8FE2FA91D8CC6F832B49027933A11F33C93EDD0EA
+ C2771D9D4CADE062B13B4C42ECCE227564E502836D51FF704D48446D41DDE39B
+ 84762155C704F50FE307DC7CB2117924271889DD77DA070633A4996194DAD7CC
+ E52115D807F6A5E52D45640B24A9B02C763F73D634FAF1D7960C5A768D50B6A7
+ 85373E43DD7DC356E5FFFBC10A9A33B57CF87CAF7D2A49ECEE7CF852F27B87CF
+ 7FF91DCFD1C1A33D42D79EF762B777E5A4E7956A5D414581A3DEA59763E8B354
+ 643B391695FB5B5A7644FAFB57D65CF75F7F365BEFC667DEB8A12C507CE6FC09
+ 659F2CF6FB20BC68F39E431D9E928AF7E6D4141D2C2BF13FFE8593263F6DB42D
+ 26A3B53577BF56513D0E4371D4B877EF40F095977D81DADADDEE59B3236189C6
+ 1D7BF59509E552FA54C30E0B5E3B6217BD7C4CE612159D4E0CC3A2D1830BC4F7
+ 33D88755B496463BAE0622A00B8F98C4B708AC8BFA7E26FEEF7C14BBE04BA4FA
+ 91EAC9862B430233E1914BB10B7100379A171DDEEF24523B76E71BFC86307178
+ 075EA3DCB834A48AF082EF1046F0E0C3DE95621F985C86C993F876E887DE8D2C
+ E6781F61459EAE59063188706CDA8ED691F8B1DB04AE039349F1DC245AEAB124
+ 76F7D2F10606D41BE630C07D0D9D4323158686AC2E5EBFE8A419B93D38355179
+ D4A217BBA9DC171220ABDACCB2648BECBEEE301D095A9BA0B6A8C64F014F727C
+ DD4D47FB455E644B62B7BACC4F2F3D78D1A0DB8219879A7B69D9EDC9D28AC5AE
+ 4DFAEF9C7C41548AA1074DEE05CB37BA6AEB96D9DACFB196FD91FEDE7FABBEE6
+ BF1E90EF9C5E25DD7FA83DD3737BE3865537945754FCD0E3F7576A976FFED5C3
+ 343E1EF161C285176E3A70E8E052CFCE9DE413A85A0705AF55B10B6BB515EBAA
+ 53FE86F00D46A33449707DCCB45F173F6F7C48F126C2DA800FAFE890BEDE9A6D
+ 6605D383E38ABA32984D12D28317F72BA436B2205FC52E1A5D0813A35914D970
+ 650066C232976217201C19FC4DAD4FCB4ECDDF922A5CCC261B410CC38500E1DA
+ B239EC6C36F115420B7EA3FB2DECCB2C2A46BAC991C0E9680C6345EC5E44EAA8
+ 93367A0BA2A7C0ED05E1FC443B4075A45AE6AF30F80DDF337470FFE2D0758F2A
+ B462172EAB5B5B438359D15231B3CCAB08DE648BEC2E45201F4BEF7E90C459E3
+ 8B925211C37D62EB31210F424B62F7EA1527D177BE94DC0CBD73A09DFEF0CA41
+ EAEA0BD38993CAA8C4EFA6FBFE3379DE368B5D1BC8ABC8130C4D1CEA2E793F7E
+ C576F2162DCC649F039DEDCD91AEF6A72ABFFAD8D7EDEEE3A52BEFB8AAA2AAF2
+ FBA59595C74D6A0B0F0CD05BBF7B6448EC4EF9E217776EDFB8E1C4DAA3CD3ED1
+ FD2B8277912278B78BAE6F8215B10BA18886E146C17DFF3BA9C245C4FA910ABC
+ 11B0E27C45605D343E9860F37F64DC30A3C22F26D5322DE2FFA79DAC93CA0AA6
+ C58A2BC30A521B907440E4FC80861B183B6217220EE2019D863DF1FAA953CA25
+ A486FFB23BE904E83B17E3496D2CBF46D6A21160481A11368C3A99A95C1910DE
+ A82B7EFCC47031C4DBA2F876567D3D8D44B71DB18B67FFA7F1EBAA8F2FAB237B
+ 75FE0752470D3A2D9E433A6035C7A845BA907468B4719F11E33993505E2220DA
+ CAC3F17AD2026B2ADEC9161BFB341B8E4F4CBA34139A852A76F1CC6AEB1FDF60
+ A497B6135A11236388A0B1DAE037B84A40F0D63B74EDA306ADD8159C1C361867
+ B7CA9F3CC26B35CE2EC29C9D59EB4F5A06D709B850086049EC3E78FD62FAFCC7
+ 863FAFCD1DFDB4ECB63F537F38B53867B16B83DE9513F112DE94F83B13CB6E12
+ CA1DEE3FD6DC5B5C3BF15E8F448F48E7AF160AFFB3F9BAEFACF2F9FDD7975555
+ 4D4EB5DE811DDB3B8ACBCBE59EFA036D93169D51BCFBC93F4CAE127063D0D0A1
+ 08DEE5190A5E2BF15D11EFD34A5637885DBC34995A7545437FA59B60A405FE7C
+ 102EE92CC55A8B2A9E797CEC455C29445C19F0266366F2B7D3AC9788ADFB8666
+ 9955B10B0B167C90B790B14506EE3510651708EE2F01EA1CBE9D669D0BAB21E2
+ 528988842B0386996175C5B81846730E53EA6150BC54F0E1C4A418910E13D848
+ AAB86DD42CB32A76CD6213279849AAB5F112C1FD214208ACB07B2D9C832810DD
+ 70A7B95E707DDC9F27E3F584F382A877CAD501EF19DC85D6EA963B11860D2210
+ C255DBF949E72252A862570BBE0DF8F665EA8A66964A1EFEBBF84E383D6A9153
+ 1262172FC69663E9ADBA60F1383F15B993E5D51BA9D3FB1E0792529C5E932C76
+ 31316D77677AB14D16C5EECF6E3A932E5E3265E8EFB7F7B7D3A5F7A637D4B3D8
+ B548DF3D1397C5A2C919C85C1367BEEE3EF9DC33EDEE534BD30BFF139A78DEA7
+ BC8AA86C9424E9C7BE15AB7F62B4DE81550FD575B6B5FFB2B82470AEDBE34D69
+ 9D6D6D68E86ADABD2B5C128DB4974C98D8DBB27BD7B4AA49931BDAF7EC5910B0
+ 109D214E87C71B99B1BC7E7B87D50DE38CF470382C26886260F72366C55716FE
+ 61B006897C15ACF8006B7D6511720B7ED9E944F23A4AEFCA806422B0545D9466
+ 5F46163D2BF74DB413702AA9565FD14960A259F0A6C4AF73B9C03ED3C52A8675
+ 0E62A74B605F7A3CF17AC03B2C121F541F6FD68AD8C53709023FDD042F2B133D
+ 473A952F440FC4C81D82F5A305A20F6211565F4C58CAC4FDCB286BA153C3DD66
+ 425A3BF9534FA18BDDC7E3BF65ECD2476A8715C7D277AAEC4CEC1DF524C4AEA8
+ D044DE89B374B171A1713735F75B3AAE51F832F8FCEE13B02C9345B17BFB65F3
+ E9C64F0D0FDE45A231BA74D5067AFF506A49C262D722DA98BA4327E62F69F29C
+ FDC5894EECBF69E3F391F1A7CC7E75D8522CFD5211BC491F054C3E0B87BD1FBA
+ 2497D084B8B75F7E6960EA8C194D8DEBD74FB7216E8DB86545C396B536B71D69
+ B16BC5DA6A8468582EBD4FAB08A2A980B543DAA213A5443EDE689060114D272C
+ 8CACC456EE5BAA865C8BA8A53901ACEDF0A3156904ADF8DB9A05B37702749EE0
+ 0E72ABC0BA786E1FD1FC6D45ECC2FAFCA4E0BAA261ED46BA6E003E4818BDB997
+ EC87AB432708C2177EC01BC99A80C3F1AF8B6FAB05B1B9615974227DB251E72B
+ D5FB5AC86217F582D1043B8972CC30EB548FD6F8CEB64988DDB7DB06A84BC00D
+ C1C8228BE80988A26005A318BB1662F55A12BBB315C1FAEC7DE7274562E80A86
+ E9BB8F6CA33FBEF6A1E94158EC5AA06FE5A47B62241B5AE69C726538B2E1799A
+ 307F76D2BE640FCDF32F5F33645DF9E09E879649246FB0BAEFB6A623B1FE604F
+ 7FE35F5F73D744227EABDB0F21D1BD2B0E6F596573EB6C4C74CAC4274B342C17
+ 2C8CBFB0B86FD154C07869FE8E86FD0445855B2A5706519708B346D8CA7D836B
+ C27AC13AC14440D18E89953A879BC47F939A56341D232DE844ADF37A71202A76
+ 37D2F12E10A940E30FEBFDAC515037091259EBE0FA724506FB4167176E66EB68
+ D8973A1546892E8CDC7832C1ECDD337B9E0B59EC8E847B8159A7DA4AE7794C00
+ B1DB1F955F119C18661876AC2D14A3F73B847C6D87A8F1BB685EA52E0B9B2274
+ 0F89852FB31C7AECEEBF3B95AEBDF0F8CFD7ABEF1EA53B7FFD1635B6068FFB8D
+ C5AE20C1BB272F9563B1941F7DF784996F0D14D59450695591BBA4ACCA5B565E
+ 61F53810BBE3E7CE78C93D69D6B98965B224DFE53FFFFE3589BFF7DCF5B3854A
+ E56EB37B2D9DADADB4FFC5F55D65BDC172B79D1D48B45C11BB1B6D1E3E5BB3FA
+ ED466580105D9D669D4CD2F48A4C104363FB691ACEAA266A114ED58089666533
+ B3CA3A91E6D9889348B5BA9C21B0AE15E185EB85354DC43F75A4055D2DA9A305
+ E9261AE29985B5293186282A76AD0A17233195ABBA3102930D2136E142719ECD
+ 7DE0F9FB1EA9D14C52B5FC78EEFE87923B228914D9762646996134AAA2BFDF09
+ 0A55EC8EA46B81518753FF9D1DF340EC7ED81379455064D2F48087A6EB124134
+ 042374A0DB5A64B61ABF5B11BBB663F55A16BB6E97440F5CBF982E5D3AFDB8DF
+ DABA4374D503AFD27B0793DD1A58EC0A321453D702EE3967FF9F6BCAEC8BAD6C
+ D3B6E32D2A76F5BF57BC60E929430B657993EF82FB9342D8ECBEF39F8FBA3D9E
+ F176AFE7DD973674F85A9AC3DEEEDE5A8B9BBEB4A261CB32DB1599DD1056F061
+ 44A3213A4C251AE03DD50CFE74885A1CB57EBBA2C3FDA91A44A346DD08B3E170
+ 2BE982B501EDD3212ABCAC36F65682F58B083AB408782717931A566A36A99651
+ EDC42374405BE2E78A499CF025C56436081C11E1AD172056D2055B8907ED74DD
+ 8C24E8B42C2135541E7CCDAD4C58051094786FCC22B418D5F137E3F5E3244621
+ FFF42338090A55EC3A7D4E5ACC5255EB5D87C63410BBDB5A43AF08247218644E
+ 85976A758920F67685A9A9CF9A613DDB621740107EE9BC13E98ECBE71F177317
+ 111A2EBE7B3DB5F70C5BA859EC0A105C39F10EE5D1F9A19D6DDD1FB9749BABB4
+ 4AF803DD7BF810F51FDAD55EB3F482A474C0DEAA3A9FB4F86B43DEDE1FDCF5B3
+ DF492EE94B76AF69EBE3BFEFA9EE09967ACACB1B22B5B541DAB72FED90A644F2
+ 0EB737BA2C83C969209B6217439A68CC441B6B51E1050BC143641C9B351DF8E8
+ 624873499AF5F40DAE688408B32409227E9A1BC97C38BC50C52E4C07681031DC
+ 6927752C9E41B874C05FF0EC34EBB2D84D0FDE1F648F84F045E741E4DB6A1655
+ 016DCA77E3458B15371C514A488D30709D6699D904C04215BB765CC34431BBD7
+ 56DF9D51CDDCA70E7DAC31187D4574FD85D53E2AF52647647AB77D803A06AC45
+ F9ABF6BBE8E44ADB29876D89DD04D36A03F4AFDFF8282D98912499E897CFEEA1
+ FB1F7B67E86F16BB69E8BD7BD2628AC96FDADDDE7BE6E75FA6928A73AC6C73F8
+ 894742E3969CB567A02F34C54572500E873A5CD1C81B55B76DB836B1CEDE7B7E
+ 8E61BEA7EC9CD39EB7B6D2C0F6ED9498AC56BE6CF9EEFEC84065F7077B239E60
+ D0EBEEEE36B21877CA242DCB629C5D23D06861E2085C3AD20907ED36A2E183AC
+ 0CA98F34FA8FB0A81B8251236666D5D083E361A29051B7BED0C42E260622DAC6
+ 3D94593C602BB0D8B5063E6053494DBE826F63AAD11223B726A37AC8C44529DD
+ B91A892DA3FA2D54B13BD2CF9AD1FB3492D6E4AC53FEE801A3FB608A3E110440
+ C8B27E8190655A2A7C2E5AA09BA066C11D2223B10B4A8BBD8A983D9FA6D4940C
+ 2D3BDCD24BE7DC369C458DC56E1A7AEF9AF80CC9837E3DB6B09370A2E7E0010A
+ 371D6C2BF6459AE5A8ECA1F686935C2EF9DEB2FB9B5669D75304AFE559A45D6D
+ ADD479A4B1A1F1F5CD5312092640C4E7EB2E9E3FBFB17CCAE4B2C6AD6F91BFB1
+ 511BB3D729A10BEC8A5DF8B922B4161A23B34C476688CEAC1E4D59C28CFCF9D0
+ 38FC5B9AED8C1A45910949F04F84CB8D596353486217A9B931C9E932C1633905
+ 8B5DFBE09A10CD01B18DCD464DF4A31E56FCBA470A441E784CB7AC10C5EE4887
+ B90346936147C23F3B675811BB5E97441FD52582B090E23789528F8B16D6248B
+ 5DB842C02542808CC52EB8EB8A53E9BA8B869B38651F34FBAB4F52341E2F98C5
+ 6E0A822B27DD2C939C91EF5626D9D5A27D7DD4FCDCE334AE3C8AABFF9FC0EAA6
+ CF687FDF79FB4F5EF4FAFD9FB0B2CFA683F5D4F6E6E6367F776FB576F0022E0A
+ 8AA03DCD35AE767F64A0AFC4D5D533D1B370D1BEC8FEBD726CF6BC7B2EFCE3CF
+ 1FB3729C14D81194FA149BA982851B211A9F7534895DA3C62855462F2DFA465D
+ 4424A79B995C28621702E85FE2D7906D58EC664E75BC2E8CB2B3C1071EF1569B
+ E37F5B99A8375218B91D15A2D8CDE4FA323947ABDFAB518D15B11BF048B44817
+ 760C892490504214651783111DE0B3ABCFC206E370AF22269149ADB93F4A7DE6
+ 7EC48E88DDEF5FB588AEFCC4CCA1BFC3CAB1E75EF7D4A0E8052C7653D0BB72E2
+ BBA40A0CDB783FFAB94D14A84C17B3F53862E13075EDDD15741DDC5A52EC1BBC
+ 5B7D24454E0CAC3E3614D775DFDD3FBF5996AC4FA408767753B0B3B3EBC8D637
+ C3A56DED3589E555E79CBBF9F0B62DB303DDBD55346EDC41B9ABABCA150A5D75
+ 7EE3D6A71DAC563B99B88C72C94394E0832D6A7DC3C7F40A4A9D937EB48B5DD1
+ 8417DA6D45E3F4A69B94530862D72C0140B660B1EB0C66E988F599CB58ECB2D8
+ 2D58B16BE47A0071BAAD35FD54145885A706DC34B1D8739C1B84194874B1BF3B
+ 42E1E333B32589DD0B573EBF562663B16B74A8D2122F7D7CFE04FAFB4FCF21AF
+ 7B5870BF7DA09D2E5D359C13C6AAD8BDF6C77F3D2E84993CF49FE46592442B9E
+ 5B7DC19816BBB000588D569084FB8C4B5E76558C37F4D94598B189F367FD8754
+ 3B6368A259DFD1C6C8404B539B74F483E26229A89B8C247F3AB0E6E89F127F21
+ 8B5A34221FB07B6EF0DD95776C275FBC6AEBAEBA3AB8ED2F2FB84B3B3ABA249F
+ 3FE46E6DFBF6050D6FAE73B85AAD084A085D4CE878D7E4772BD9A0403AFF5DD1
+ 8412D9C0AC31128903AC6D3844EA5B24E44F21885DD1106F096065873BCD1BF1
+ EB4D7C398BE3D785A80DF0FFC430B988DF2F8B5DE7A823B5EEF4BEFD88E39A08
+ E368E4CB0E410C77AD6CF970C25D49FF3EB3D81D198CCE11F71FC22A687D77A3
+ 0F2B62D7685219125120218519C8B836B5C4435302E222570B2CC7EFB787A927
+ 9234012E49ECCAB20C638365CBAE9E6FFF761B3DFA97FD437F5B15BB16395F92
+ A417ED6EAC2707627792F222C8D7DADE81CBDBEB5E7A598BCBE7AFD32E8EF4F6
+ 503414EA72793CA5DEF28AA1AE48CBE657FA025DFB8ABD6E6373BFB2F447A56B
+ 9ABEA55DB6F3F6B5FBBD7EDF0CA3F55B8F1CA163BB7635D49C70426FD5F4E933
+ 60D12DABAAF21EDCF95E7F7149A0ABEDF0619777CF9E71380197CFD775C2955F
+ 1A7C12B63EFD64D7A4D34EFBED398FFE9348CA5CAB888A2691749D782660ADC5
+ 10BD68BA516426830FAF91E7FC68F0E14B60D65020741842E5A48BD99AB01889
+ 08A675943ED57021885DD1E41D38879BE3D72AE2DE8634CD885F9C2E59028B5D
+ E7304BE4A0AD63A37A180DB1570B51EC029EA0962156C4AE51B8B0546217E278
+ 6699978AECA85C0DB0ECEE508EA19904E7B8D8DDF47EF360ACDDA8C68ACC6237
+ 05A195134F8EA8C2C2D6EC7CEF69E76FA49A69CBF4CBFB9A8E502CD4D71E3861
+ E660AC8C818E76EAD8F4DC4055519F2FCD2EDF0EAC694A121B3BEFF8C92FBC3E
+ FF0D462BC372EBDDB1236959D1B4E96F4B752754B5BEFCF2B4124DBABDB23973
+ DE18B7F46C04DEA65DAFBFF6DCA75EF8DD452354AD4E2727B0928E15C0728318
+ B946D6D1225285F0DFA7D987597CCC6C809B764BFC3C53818FF8DDF1BA49276A
+ 4452CDE6BBD885B811B9F7A99E9F4CCF85C5AEB3188D82E863642306EFF774EB
+ 68635CE7824215BB6661139DC22861505E851EB32276E1637B8ACEB26BE4B35B
+ AC88DB198AC8ADD6F9E4EA0929E2D5AF13C248190C4D8B6DCB3421CEDA43317A
+ 6F384B9B636217E2F6BF5FAEA7FB1EDD417D03C9418558EC0AD07BE784EB94C3
+ 5FA59CC1C744B7714FA8DBEA3A65B9A9483EF4CCE33DD33F735929FEDDB97B27
+ D1FECD54E24F6F24925C9EA9253F38DC90F83B55EAE01DAF6C8C96EFDD7FDCDD
+ 2BAAADDDDD3F6DDAE440758D578E447A8E6E79C353311096267CFA33ED3DBD3D
+ 7D67FEEABE9347B03A4722131766CFE3E3FD59C17330F303062293B9F4BE7FD9
+ 4624FD2CEA0F43B6F898A71A96475DC0E298CE1D26DFC5EE2EC1F3B0936294C5
+ 6E6E10F1D134AA63086074122D47BB71886C885DA787EF8DEAD1AAD8C5328CBC
+ D9895F9E0E8CFCFD8CD48E8E969116D859C58AD82DF14874BA6E821A400485A3
+ 7D512A567E9F5CE2A109C5EE94E20B93CF206A91C8E2B46A5F92A86D56F6B327
+ 1E91618AB2AF1965C3C91FDE3C161A14C8A413BB4FBE7A5048ECCAF2F0EB190C
+ 45696F6317BDB8FD08351C337EA4EFFDF2429A326E3834D9D7FFF9758A4487C5
+ EE43FF7026793DA9057D0A569CB768F2D8F5D9D513BC73D2DFC82EF92A915064
+ E9A230B4BFFB3655CD9DB7853CDEC54D2FFF852A070E925BA09E2559FA42C9FD
+ 479ED02EFB60E5BF0425B7BB58BFEE5BCFFE6F4FD5D1A3A5FAE57059F0CF9ABD
+ BF5FA20AAFD7DF136C3F56E66A6B2B8A75766FB8B871CBDF8D70358E54DA59AB
+ E1C860B1FF07A574E9961BA5F534C22CAD6E36109D74F6AC523E99661DF82FA2
+ 714F973227DFC5EE31C1EBBB375EAC0821B386560F8B5D67316AF8F5965DA3CC
+ 82763A344E920DB1EBE4E894D5840D66CF9F68C7DB0E46916C4683CB8AA35811
+ BBB869671AC4D915057EB7FBBA22D41D1E168CE58AD03DB53AD95AACCDC88650
+ 6798DC0634C92B1C89C6904BC67C340633BA574E3C5739996BA5148D97F7239F
+ 7D954AAB4D2DC1DDFBF75260EAF463B18181EA23CF3DE99A5825969E4F79081E
+ 29BDBFE92AEDB2F76E79E04F2EAFF792BE9E6E2AAF1E0AAE40DB5FDE182BDEB7
+ CFE533A83AFFB469EF44FD7E4FD5FCF9D5A555D5135A0E1FDE77D6BAD52765A1
+ FA464AECE2223199ED9716CEC5C87F573479839DE16C2D10E50882FF6732F61F
+ 4E0702E93F61633BFD35885AA859ECAAD819F614ADBB4210BB30EDA0B3D6E9E0
+ 3ECD307263D0D7B1D924B55C8EDC382D768D9E3F279367987D33AD8A5D005F78
+ 18129CB4AA9BB97EE5BA53E33856934ACC2AF70E5A6EAD0083EAA1DEC8A035D7
+ E826D5957A686A20397D6F6B283AE8A30B4B71428DC037B82BCC62D788512376
+ 1374DE5E3BCBEDF1DC24910CF159A1FDCDBD60F946576DDD32B36DE54884248F
+ 67D0C24B07B75169B1707ABEF6C09AA6A499DDCF4F5972B5AFA2F4FB3D7DA1CA
+ E9679FBD4511B24BDD6E8F2F3C30403B9EFD534F4D7B4769AA1D22C6EE89D77F
+ 69D98C55B764920658949112BBC02CE4901948E58A7BA70D346E4534E31C6F54
+ CA6B16CE11FB3F8BD4F0567395721FA96944AD5A88AD460E3002421B82FD98C0
+ BA2C7655AC0EB55A096796EF623731A1F43652475536D1C8B90A984D5033B2CC
+ 1B4D4C5C47E9276D8E144E8B5D4414429419FDA456A786F0CD5299DB11BB2311
+ 95A18E8C2373A40BB738E6B02A7631D90CAE0C2E4175D51B91694F6778304499
+ 19D8D5EC0A2FD516998B68CC1BDBDCD24FF1396A2C76758C3AB19BA0E9B60981
+ 528F7493240D0A9FC161F47462B7BFF928859A0F77D087EF54C257D73573F1B3
+ 21F2CF1878FFB57981A2D4C2D745D239C56B8E0CE5BFDE50B7B03212F60CF54E
+ 5D3E5F67D1A90B0E55CD9A33A3B5B1D15B5A5E7EF883679E3EB14A3ADE4F0242
+ D7ED8D2E5B5EBF3D1B42178CA4D80556C39161E80C82EF03CDB23A32FE381A81
+ F3C304175859D309560C95E2258618D7360C488E81891356B2F8E04B8261C36F
+ 5BAC1F2D98D4878FBD88E0C877B12BEAB33B92EE35F92E76B575818E267CCAFF
+ 9BEC8D6CA4630AA9915596EB961B4D3E33EA38E25DC4C4DFDF3B784E7090C47B
+ 9BCE4FD669B16B76BFCD5CB9AC1088EFFB7A83DFEC885D6094DAD92E3031A273
+ 73976E7936429D651DAB62172029C49C722F4929141622287CD81BA123C1A870
+ EF745AC043D39562B45F58860FF50CBDF62C76758C5AB1ABA567E5A42F2B02F2
+ 2645EC06CDC46E6FC387D4BFED2F545E12C383D3E53DE7CA56C9E39BD1BA6D0B
+ 15B7BC4B5E4FEAC749F9F5C1D2354DB76B97BD30E58CEDC880765CA529C277C0
+ EF1D7075F7D6EAFB593910BA60A4C52EB880D4F4B8A2E1C8F41F573C6B101ABF
+ B3704CA4BB8430C1D067BD6639A67FC2771B437CA9E2ADE258109F567CE844FD
+ 8B8DB0EAAF96EF62F72D0BEBFF3BA9D6DDB614EB40D82076312CF7A27EE4F92C
+ 76CD3AA10F923A1AE3646413B30C8BB024C34FF5A06EB999F53D5D9C6F2BE079
+ 802511EFEC370CCE418B59084474165EB6797CA389B7990AFA74A11FED8A5D00
+ 71FA63CA6C4E44AAF3C3FEF1DC89F90F8E11EC885D806C6AD34B3D54E5730F59
+ 79617D859B019241A0C46C8CC1C0723CA9D84DE53E1779941D433463D25AC287
+ 370E8B5D1D6342EC26E87BF4F2EFB9AAA77F43F27893C44DA8F51875EDD8D453
+ 49AD83AE05EE598BB7BBA62D5818E9EDA596F54FA8A981D3558444BB4B5637CD
+ D52E5B3F75F12A45057F37EDC6C37446A29E851737BD5E9FE5AAC986D8B59A4E
+ 18E0A38FA1CCC42B6DD525C2093079265D43A845D4BFD88875646D9836DFC5EE
+ 5F492C12478237491547B85E885E3C3778EEA6922A4A3034FE71C17D25C857B1
+ 5B12AFABEB4D7E475D427C20A6B6B03F970918BE82A04507D68AC0C1503FEA5F
+ FF2E392178F5298C13319DCD9E65B3FB636524468F59AA71BBD787F61856F35F
+ 937967CEAAD845075C3B511016D907C89E8517CFC1DF929AFA5B6F6040F4228C
+ E63558DDE968C7AED84D809BEA89ABDDB01D756B0F16BB3AC694D805F2865545
+ 3DC79ABE25B9DD37FACACA2774EED949F2DECD14288A3F44C595EF7BCFFADCC9
+ 480DDCFCD2F3035552B34FD477261A75CD2DFF51E3D0C7F2F9294B164A246F13
+ 3CB54E99A4651734BCB93D07D5920DB10BAC862333F2DFB5EA12E104F0DF85D5
+ B05F707DD144087AD0C0FDCAC2FA852076CD0441B6C857B10B20263141285544
+ 0A3C3B10377807EDB836A0830AEB2946BDF44217D7001FD5FA14DB2F26754448
+ 2FDEF0CCDD436A2C6A2B62DC15AF3FB828E95DA236C5CFC72CF280514C589194
+ E766980DE727F6FB0D12F7A186951A1D0A58E51342121D75BD25DAAAD8BD9CD4
+ 6FB0763FC8180A23CE36C1730378D6D031D0BB8B01A3EF7CDE90A9D8CD112C76
+ 758C39B1ABE5C8F7977EABBFE1E0E5E3ABA27811A70D2EF4F8884E3A6B73EFDE
+ F76717875BAA44856EBC326E2F59D3F4A076D9FA298BEB29FD90692E852EC896
+ D805A7923A44272A5E8CD209CF27554C6643F0A64B676C841D816627C44F2188
+ 5D27FCA033219FC56EE2B81020A8E354AE375A9720FC3BD564407C35D1B14564
+ 018CCE2C30584754E0605FB0EC62F8DCE83BFA54BCDE302135951847ECA58FC4
+ AFD5286B1ECE07F33B3041D44CC099B928C10A0E21877BA217DE89BA801B17C2
+ A9E9A30CCC22D53DC2E85B0697063C7F3F8B9F9FD179E1BACE217582A1F67D85
+ 15FD99F8F568B193410DD7F410257F67706E7F886FB3D3A4EE71ED53E3F58D7A
+ 37BA7FD8CFD749F5CFCE550CE51185C56E6E60B16B80BCEA645F6F5FEB8D924B
+ C290DE29B6F743F44AE99AA673B4CB9E9FB2645D3C32448AEDA4453914BA209B
+ 62D74E3A61C4AF85FFAE36B310EE131A0291096B76B1E3B30B6065C1D0AC95D4
+ CE7662041782D80556470444C0B95752FA8E68BE8B5D807712B16DE1D620FA3E
+ C1AA87FB0EE19B704140C704C27611A9CFA61956054E3AC10B2006372AE58DF8
+ 79E19C6055C67702D661442730F3CDDF1D3F9F97D29C0F5C94F03C5C96A24E20
+ BA0FC5FF9E4E6A9417D487D93B28FA3DDC1DDFF7AEF8DF65F1EB5A62705D890E
+ 3AC2563A952E18ED1AA2E118DD57B80C6D8AD73D3A41569E83BBE2D73E121322
+ 47052C76B3C315CB665065A98FB6EE6DA537761D63B19B8EBEBB267E2526CB37
+ 2897664B4485655F75E5FD87867AEF2F4C3EE35259929E325B5F11BAD7284277
+ 5D8E2F3B9B6217E0C30A317893E0FA668D232CF2ABC8791F5E1C0F43B7685CED
+ CE3E5EA194E72DAC0FCBCF7A8BC72814B10B9C745F412706C3D16B05AEB110C4
+ 6E0288435862D1A8894EE0B30A9E15C46DC53369C592A70D0FB8C4C1F3C1903C
+ 5C2C7609AE8F76E1511BF593EA1D843B030C22B8FF7626B66AC13707DFD50FC8
+ 9974C1DA67ED74523BE54E1818ECBAA18C3958EC8E3C1EB78BAEBD681645A331
+ 3AD8DC4BEBDF6A64B12B4AEF5D132F515EC11B952BBCC4CA762E89AE2A5EDDF4
+ 48E26F7D08322DA344E8826C8B5D601686C80C0C956172833EE03A7CF03E41AA
+ 7871A211FC537C5FAF5366C36A98D481E7E07C8175F1427E85D4C920562824B1
+ 0B4E886F6F67F21F4027063E9218E22D11BCC64212BB0970FFAF2635049693A2
+ 17EF03DC25EA33D8472ADF4F2BC01A89A81CB0565AE9D0A2CDC3330FD7826A0B
+ DBA57B07B15F3C8B10F3734477AA03CFF52A1A1E89725AEC02270C0C4E3C0763
+ 0616BBD9E1AC79B554E473D381A61EAA3FDAC362D72ABD774F5A2CC762374B24
+ 5D29B48124FF31B0FAE8A5DA45EBA72E7E5A914D4943B0A348E8825C885D6035
+ 9D702AFF59B80E2C8FFF8E214B2B0D214410ACEF68F8E03BEBC4909A59862023
+ E08FFA03B22EAE0B4DEC02DCE74F29E55B24DEB949F81742DCC0275AB6708D85
+ 2876B5E7044B3A3A62F87E59117709202AD1A9453DC27AEA945F265C04600DC5
+ 64502B821C6E1778CF314A24FA3EE8C1BB8D217A749C3E25B03E9E3F7CE730C1
+ AD27CDBA10937806F0CC89D637DEEF1F92EA86A1B5928E84D8D55E3F2CB3A21D
+ CFC437162E0B9B29CFADB95A58ECE60616BB3609DE3D795A2C26DF26C9F2D794
+ ABF6A758756F604DD32CED020357865B56346C11C9DEC4D803BE7510424B49F5
+ 6B83EF9AD65A02DF3AF8F86162C9A6F8DF23912A55247D30ACB9E81CBD91DB2A
+ 1B7360E87736A91D1BDC67DCDF45F1DF20B020C4619DDF18FF7F2641FA99E110
+ 6EA8634C10C590363254A2A3951065897A4FBC5B1035E926B3650A2668C13F74
+ 69BC4CD09CD3EEF8B9EC88FF1B0DDF87E49CD0C2A8D2C9A40ABE3349F50F4E08
+ 6F3C7310F710A208DFD66C71DF898EC63252BF65DA7D27BE5F10B7988456EFC0
+ 355911BB091293EF708E08E987FB80F8E5303440DC621ECA3BF13A78DD461DE4
+ 058AD84DC4751F4B342862775FE28F59D73C394796E5E9B93E292BB85DD2D6DD
+ BFFE7C5BE67B522918B19B0093D982A1D6DB6459FA4749A2F1C7FDAE34AAA56B
+ 9A2AF4CB0705AF4BC203BF71C5E12D1B737D1D8C234048E35E1B856512F53185
+ D50B2186AC646A63188671123B6297610A868213BB5A7A574EB89624E95645E1
+ 0E8598522A6463C99A26513F5466ECA28DB800AB11428D2193529854EB171A0D
+ 11DF3BABB1751986619C86C52EC3A4A0A0C56E024C669364BA4D96A825B0BAE9
+ F25C9F0F9315CC82DD5BC1EEC4348661182761B1CB302960B1CB14224E253A40
+ 082684F2C9CB60EA0CC38C1958EC324C0A58EC32858813296CF336173CC33063
+ 0E16BB0C930216BB4CA16125A49819988C06A1FBC75C5F0CC3300CB1D8659894
+ B0D8650A8D19A4C6E8CC2493D79DA48AE5BC4D91C930CC9882C52EC3A480C52E
+ 536820B8FEAFC95E807DB08AD4280E7D36B7671886711A16BB0C930216BB4C21
+ 62279D2A82ABAF52CAD35440D98318861913B0D8659814B0D8650A1964953A95
+ D4B49CC8DE54476A262590C82605918BEC79C826C5D65C866146232C76192605
+ 2C7619866118866198BC85C52EC3300CC3300C93B7B0D865188661188661F216
+ 16BB0CC3300CC3304CDEC26297611886611886C95B58EC320CC3300CC330790B
+ 8B5D866118866118266F61B1CB300CC3300CC3E42DFF1FCED20B5884D2840600
+ 00000049454E44AE426082}
end
object panContent: TPanel
Left = 0
diff --git a/windows/src/desktop/setup/keyman_setup_sil.xcf b/windows/src/desktop/setup/keyman_setup_sil.xcf
new file mode 100644
index 0000000000..61a5350613
Binary files /dev/null and b/windows/src/desktop/setup/keyman_setup_sil.xcf differ
diff --git a/windows/src/desktop/setup/locale/cs-CZ/strings.xml b/windows/src/desktop/setup/locale/cs-CZ/strings.xml
index c5b42a648a..196dc26a81 100644
--- a/windows/src/desktop/setup/locale/cs-CZ/strings.xml
+++ b/windows/src/desktop/setup/locale/cs-CZ/strings.xml
@@ -72,9 +72,7 @@ Restartovat nyní?
Stahování %0:s
Stahování %0:s
- $APPNAME Instalace se nemohla připojit k keyman.com a stáhnout další zdroje.
-
-Zkontrolujte, zda jste online, a povolte $APPNAME nastavení přístupu k Internetu v nastavení firewall.
-
-Kliknutím na tlačítko Zrušit instalaci, zkuste znovu stáhnout zdroje znovu, nebo ignorujte pro pokračování v režimu offline.
+ $APPNAME Nastavení se nepodařilo připojit ke keyman.com a stáhnout další zdroje.
+ Zkontrolujte, zda jste online a zda jste v nastavení brány firewall udělili aplikaci $APPNAME Setup oprávnění k přístupu na internet.
+ Kliknutím na Přerušit ukončíte nastavení, kliknutím na Zkusit znovu se pokusíte znovu stáhnout prostředky nebo kliknutím na Ignorovat budete pokračovat v offline režimu.
diff --git a/windows/src/desktop/setup/locale/it-IT/strings.xml b/windows/src/desktop/setup/locale/it-IT/strings.xml
index a8b8a5a83c..281c086f09 100644
--- a/windows/src/desktop/setup/locale/it-IT/strings.xml
+++ b/windows/src/desktop/setup/locale/it-IT/strings.xml
@@ -72,9 +72,7 @@ Riavvia ora?
Scaricamento di %0:s
Scaricamento di %0:s
- $APPNAME L\'impostazione non può connettersi a keyman.com per scaricare risorse aggiuntive.
-
-Verificare di essere online e dare a $APPNAME il permesso di configurazione per accedere a Internet nelle impostazioni del firewall.
-
-Fare clic su Interrompi per uscire dalla configurazione, Riprova a provare e scaricare nuovamente le risorse, oppure Ignora per continuare offline.
+ $APPNAME L\'impostazione non può connettersi a keyman.com per scaricare risorse aggiuntive.
+ Verificare di essere online e dare a $APPNAME il permesso di configurazione per accedere a Internet nelle impostazioni del firewall.
+ Fare clic su Interrompi per uscire dalla configurazione, Riprova a provare e scaricare nuovamente le risorse, oppure Ignora per continuare offline.
diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas
index 5034c0e664..d8cb3e30e7 100644
--- a/windows/src/engine/keyman/UfrmKeyman7Main.pas
+++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas
@@ -228,9 +228,6 @@ type
FActiveHKL: Integer;
FTrayIcon: TIcon; // I4359
- FHotkeyWindow: HWND;
- FHotkeys: TIntegerList;
-
FInputPane: TFrameworkInputPane;
FIsInputPaneVisible: Boolean;
@@ -295,12 +292,6 @@ type
procedure UnregisterControllerWindows; // I4731
function IsSysTrayWindow(AHandle: THandle): Boolean;
procedure GetTrayIconHandle; // I4731
-
- procedure RegisterHotkeys;
- procedure UnregisterHotkeys;
- procedure HotkeyWndProc(var Message: TMessage);
-
- procedure DoLanguageHotkey(Index: Integer);
protected
procedure DoInterfaceHotkey(Target: Integer);
@@ -550,8 +541,6 @@ begin
FreeAndNil(FInputPane);
- UnregisterHotkeys;
-
with TRegistryErrorControlled.Create do // I2890
try
if OpenKey(SRegKey_KeymanOSK_CU, True) then
@@ -833,7 +822,6 @@ begin
end;
FOSKManuallyClosedThisSession := False;
FRunningProduct.FLangSwitchConfiguration.Refresh;
- RegisterHotkeys;
end;
KMC_NOTIFYWELCOME: // I1248 - Redesigned welcome
begin
@@ -869,23 +857,6 @@ begin
end;
end;
-procedure TfrmKeyman7Main.DoLanguageHotkey(Index: Integer);
-var
- FKeyboard: TLangSwitchKeyboard;
-begin
- if (Index >= 0) and (Index < kmcom.Languages.Count) then
- begin
- FKeyboard := FLangSwitchManager.FindKeyboard(kmcom.Languages[Index].HKL, kmcom.Languages[Index].ProfileGUID);
- if not Assigned(FKeyboard) then Exit;
-
- // Handle toggle hotkey
- if (FKeyboard = FLangSwitchManager.ActiveKeyboard) and (kmcom.Options['koKeyboardHotkeysAreToggle'].Value) then
- FKeyboard := FLangSwitchManager.Languages[0].Keyboards[0];
-
- ActivateKeyboard(FKeyboard);
- end;
-end;
-
procedure TfrmKeyman7Main.DoInterfaceHotkey(Target: Integer);
begin
if not Assigned(FRunningProduct) then
@@ -1356,7 +1327,6 @@ begin
StartKeymanX64;
- RegisterHotkeys;
end;
procedure TfrmKeyman7Main.RequestCurrentActiveKeyboard(Command: WORD); // I3961
@@ -2023,18 +1993,6 @@ begin
end;
end;
-procedure TfrmKeyman7Main.HotkeyWndProc(var Message: TMessage);
-begin
- if Message.Msg = WM_HOTKEY then
- begin
- KL.Log('Hotkey %d', [Message.WParam]);
- if Message.WParam > kh__High
- then DoLanguageHotkey(Message.WParam - kh__High - 1)
- else DoInterfaceHotkey(Message.WParam);
- end;
- Message.Result := DefWindowProc(FHotkeyWindow, Message.Msg, Message.WParam, Message.LParam);
-end;
-
function KeymanHotkeyModifiersToWindowsHotkeyModifiers(v: KeymanHotkeyModifiers): Integer;
begin
Result := 0;
@@ -2043,83 +2001,6 @@ begin
if (v and HK_ALT) = HK_ALT then Result := Result or MOD_ALT;
end;
-procedure TfrmKeyman7Main.RegisterHotkeys;
-var
- hk: IKeymanHotkey;
- i: Integer;
- language: IKeymanLanguage;
- id: Integer;
-begin
- if not Reg_GetDebugFlag(SRegValue_Flag_UseRegisterHotkey) then Exit;
-
- TDebugLogClient.Instance.WriteMessage('Enter RegisterHotkeys', []);
-
- if FHotkeyWindow = 0 then
- FHotkeyWindow := AllocateHWnd(HotkeyWndProc);
-
- if not Assigned(FHotkeys) then
- FHotkeys := TIntegerList.Create;
-
- UnregisterHotkeys;
-
- for i := 0 to kmcom.Hotkeys.Count - 1 do
- begin
- hk := kmcom.Hotkeys[i];
- if not hk.IsEmpty and (hk.VirtualKey <> 0) then
- begin
- // Note, if hk.VirtualKey is 0, this indicates a modifier-only hotkey such
- // as Alt+Left Shift. These are handled in keyman32 k32_lowlevelkeyboardhook
- // because RegisterHotkey cannot handle modifier-only hotkeys.
- if RegisterHotkey(FHotkeyWindow, hk.Target, KeymanHotkeyModifiersToWindowsHotkeyModifiers(hk.Modifiers), hk.VirtualKey) then
- begin
- TDebugLogClient.Instance.WriteMessage('Added hotkey %d -> %x %x', [hk.Target,
- KeymanHotkeyModifiersToWindowsHotkeyModifiers(hk.Modifiers), hk.VirtualKey]);
- FHotkeys.Add(hk.Target)
- end
- else
- TDebugLogClient.Instance.WriteLastError('RegisterHotkeys', 'RegisterHotkey', 'Failed to register hotkey '+IntToStr(hk.Target));
- end;
- end;
-
- for i := 0 to kmcom.Languages.Count - 1 do
- begin
- language := kmcom.Languages[i];
- hk := language.Hotkey;
- if Assigned(hk) and not hk.IsEmpty and (hk.VirtualKey <> 0) then
- begin
- id := kh__High + 1 + i;
- if RegisterHotkey(FHotkeyWindow, id, KeymanHotkeyModifiersToWindowsHotkeyModifiers(hk.Modifiers), hk.VirtualKey) then
- begin
- TDebugLogClient.Instance.WriteMessage('Added hotkey for language %s [%d] -> %x %x', [language.LocaleName, id,
- KeymanHotkeyModifiersToWindowsHotkeyModifiers(hk.Modifiers), hk.VirtualKey]);
- FHotkeys.Add(id);
- end
- else
- TDebugLogClient.Instance.WriteLastError('RegisterHotkeys', 'RegisterHotkey', 'Failed to register hotkey '+IntToStr(id));
- end;
- end;
-end;
-
-procedure TfrmKeyman7Main.UnregisterHotkeys;
-var
- i, hk: Integer;
-begin
- if not Reg_GetDebugFlag(SRegValue_Flag_UseRegisterHotkey) then Exit;
-
- TDebugLogClient.Instance.WriteMessage('Enter UnregisterHotkeys', []);
-
- if not Assigned(FHotkeys) then
- Exit;
-
- for i := 0 to FHotkeys.Count - 1 do
- begin
- hk := FHotkeys[i];
- if not UnregisterHotKey(FHotkeyWindow, hk) then
- TDebugLogClient.Instance.WriteLastError('UnregisterHotkeys', 'UnregisterHotkey', 'Failed to unregister hotkey '+IntToStr(hk));
- end;
- FHotkeys.Clear;
-end;
-
{ TLangSwitchRefreshWatcher }
constructor TLangSwitchRefreshWatcher.Create(AOwnerHandle: THandle);
diff --git a/windows/src/engine/keyman/build.sh b/windows/src/engine/keyman/build.sh
index 50ef210ce2..ce34599410 100755
--- a/windows/src/engine/keyman/build.sh
+++ b/windows/src/engine/keyman/build.sh
@@ -8,6 +8,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
builder_describe "Keyman main host process (32-bit)" \
@/common/include \
@/common/windows/delphi \
+ @/windows/src/global/delphi \
clean configure build test publish install debug-manifest
builder_parse "$@"
diff --git a/windows/src/engine/keyman32/calldll.cpp b/windows/src/engine/keyman32/calldll.cpp
index bd917ae9c5..5b08f7b5e0 100644
--- a/windows/src/engine/keyman32/calldll.cpp
+++ b/windows/src/engine/keyman32/calldll.cpp
@@ -439,26 +439,69 @@ extern "C" BOOL _declspec(dllexport) WINAPI KMDisplayIM(HWND hwnd, BOOL FShowAlw
*Globals::hwndIM() = hwnd;
*Globals::hwndIMAlways() = FShowAlways;
- POINT pt;
- RECT r;
+ POINT IMTop, Caret;
+ RECT RectIM, RectApp;
+ HWND hFocus;
+ int n = 0;
- GetCaretPos(&pt);
+ HMONITOR hMonitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
+ if (hMonitor == NULL) {
+ return FALSE;
+ }
- int n;
- //if(pt.x == 0 && pt.y == 0)
- n = SWP_NOMOVE;
- //else n = 0;
+ MONITORINFO monitor_info;
+ monitor_info.cbSize = sizeof(monitor_info);
+ if (!GetMonitorInfo(hMonitor, &monitor_info)) {
+ return FALSE;
+ }
- ClientToScreen(hwndFocus, &pt);
- GetWindowRect(hwnd, &r);
- if(pt.x + r.right - r.left >= GetSystemMetrics(SM_CXSCREEN))
- pt.x = GetSystemMetrics(SM_CXSCREEN) - (r.right - r.left);
+ if (!GetWindowRect(hwnd, &RectIM)) {
+ return FALSE;
+ }
- if(pt.y - (r.bottom-r.top) > 0) pt.y -= (r.bottom-r.top);
- else pt.y += 32; // guessing...
+ // Only adjust the IM window coordinates if it is not going to be visible on the
+ // monitor it is currently showing on. Otherwise leave it to the 3rd party app
+ // to control the location of the IM Window.
+ // If changing the coordinates to place the IM window use the caret postion of the
+ // application that has focus.
+ if ((RectIM.left < monitor_info.rcMonitor.left) || (RectIM.right > monitor_info.rcMonitor.right) ||
+ (RectIM.top < monitor_info.rcMonitor.top) || (RectIM.bottom > monitor_info.rcMonitor.bottom)) {
- SetWindowPos(hwnd, HWND_TOPMOST, pt.x,pt.y,0,0, n|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
- //SendDebugMessageFormat("Exit");
+ if (!GetCaretPos(&Caret)) {
+ return FALSE;
+ }
+
+ hFocus = GetFocus();
+ if (!GetWindowRect(hFocus, &RectApp)) {
+ return FALSE;
+ }
+
+ IMTop.x = Caret.x + RectApp.left;
+ IMTop.y = Caret.y + RectApp.top + 24;
+ LONG IMWidth = RectIM.right - RectIM.left;
+
+ if (IMTop.x + IMWidth > RectApp.right) {
+ // align IM right edge with App right edge
+ if (IMWidth < (RectApp.right - RectApp.left)) {
+ IMTop.x = RectApp.right - IMWidth;
+ }
+ else { // align IM left edge with App left edge
+ IMTop.x = RectApp.left;
+ }
+ }
+
+ if (IMTop.y + RectIM.bottom - RectIM.top > RectApp.bottom) {
+ IMTop.y = RectApp.top + Caret.y - (RectIM.bottom - RectIM.top);
+ }
+ n = 0; // Move to tracked postion
+ } else {
+ IMTop.x = 0; // will be ignored by SWP_NOMOVE;
+ IMTop.y = 0;
+ n = SWP_NOMOVE;
+ }
+
+ SetWindowPos(hwnd, HWND_TOPMOST, IMTop.x, IMTop.y, 0, 0, n|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
+ //SendDebugMessageFormat(0, sdmKeyboard, 0, "KMDisplayIM: Exit");
return TRUE;
}
diff --git a/windows/src/engine/keyman32/hotkeys.cpp b/windows/src/engine/keyman32/hotkeys.cpp
index 8327a78649..1652397d77 100644
--- a/windows/src/engine/keyman32/hotkeys.cpp
+++ b/windows/src/engine/keyman32/hotkeys.cpp
@@ -137,9 +137,11 @@ void Hotkeys::Load() { // I4390
Hotkey *Hotkeys::GetHotkey(DWORD hotkey)
{
- for(int i = 0; i < m_nHotkeys; i++)
- if(m_hotkeys[i].HotkeyValue == hotkey)
- return &m_hotkeys[i];
+ for (int i = 0; i < m_nHotkeys; i++) {
+ if (m_hotkeys[i].HotkeyValue == hotkey) {
+ return &m_hotkeys[i];
+ }
+ }
return NULL;
}
diff --git a/windows/src/engine/keyman32/k32_lowlevelkeyboardhook.cpp b/windows/src/engine/keyman32/k32_lowlevelkeyboardhook.cpp
index 019f88b073..a6a84faf44 100644
--- a/windows/src/engine/keyman32/k32_lowlevelkeyboardhook.cpp
+++ b/windows/src/engine/keyman32/k32_lowlevelkeyboardhook.cpp
@@ -130,26 +130,22 @@ BOOL IsTouchPanelVisible() {
}
/*
- Cache UseRegisterHotkey debug flag for this session
+ Cache AllowRightModifierHotKey for this session
*/
-BOOL UseRegisterHotkey() {
- static BOOL flag_UseRegisterHotkey = FALSE;
+BOOL AllowRightModifierHotKey() {
+ static BOOL flag_AllowRightModifierHotKey = FALSE;
static BOOL loaded = FALSE;
- if (!loaded) {
- loaded = TRUE;
- flag_UseRegisterHotkey = Reg_GetDebugFlag(REGSZ_Flag_UseRegisterHotkey, FALSE);
- }
- return flag_UseRegisterHotkey;
-}
-BOOL UseCachedHotkeyModifierState() {
- static BOOL flag_UseCachedHotkeyModifierState = FALSE;
- static BOOL loaded = FALSE;
if (!loaded) {
- loaded = TRUE;
- flag_UseCachedHotkeyModifierState = Reg_GetDebugFlag(REGSZ_Flag_UseCachedHotkeyModifierState, FALSE);
+ RegistryReadOnly reg(HKEY_CURRENT_USER);
+ if (reg.OpenKeyReadOnly(REGSZ_KeymanCU)) {
+ if (reg.ValueExists(REGSZ_AllowRightModifierHotKey)) {
+ flag_AllowRightModifierHotKey = !!reg.ReadInteger(REGSZ_AllowRightModifierHotKey);
+ }
+ }
+ loaded = TRUE; // Set loaded to TRUE whether or not the key exists
}
- return flag_UseCachedHotkeyModifierState;
+ return flag_AllowRightModifierHotKey;
}
LRESULT _kmnLowLevelKeyboardProc(
@@ -171,60 +167,36 @@ LRESULT _kmnLowLevelKeyboardProc(
SendDebugMessageFormat("wparam: %x lparam: %x [vk:%s scan:%x flags:%x extra:%x]", wParam, lParam, Debug_VirtualKey((WORD) hs->vkCode), hs->scanCode, hs->flags, hs->dwExtraInfo); // I4674
- DWORD Flag = 0;
- if (!UseCachedHotkeyModifierState()) {
- // #5190: Don't cache modifier state because sometimes we won't receive
- // modifier change events (e.g. on lock screen)
- FHotkeyShiftState = 0;
- if (GetKeyState(VK_LCONTROL) < 0) FHotkeyShiftState |= HK_CTRL;
- if (GetKeyState(VK_RCONTROL) < 0) FHotkeyShiftState |= HK_RCTRL_INVALID;
- if (GetKeyState(VK_LMENU) < 0) FHotkeyShiftState |= HK_ALT;
- if (GetKeyState(VK_RMENU) < 0) FHotkeyShiftState |= HK_RALT_INVALID;
- if (GetKeyState(VK_LSHIFT) < 0) FHotkeyShiftState |= HK_SHIFT;
- if (GetKeyState(VK_RSHIFT) < 0) FHotkeyShiftState |= HK_RSHIFT_INVALID;
- //TODO: #8064. Can remove debug message once issue #8064 is resolved
- SendDebugMessageFormat("!UseCachedHotkeyModifierState [FHotkeyShiftState:%x Flag:%x]", FHotkeyShiftState, Flag);
- }
- else if (UseRegisterHotkey()) {
- // The old RegisterHotkey pattern does not support chiral modifier keys
- switch (hs->vkCode) {
- case VK_LCONTROL:
- case VK_RCONTROL:
- case VK_CONTROL: Flag = HK_CTRL; break;
- case VK_LMENU:
- case VK_RMENU:
- case VK_MENU: Flag = HK_ALT; break;
- case VK_LSHIFT:
- case VK_RSHIFT:
- case VK_SHIFT: Flag = HK_SHIFT; break;
+ // #5190: Don't cache modifier state because sometimes we won't receive
+ // modifier change events (e.g. on lock screen)
+ FHotkeyShiftState = 0;
- }
- //TODO: #8064. Can remove debug message once issue #8064 is resolved
- SendDebugMessageFormat("UseRegisterHotkey [FHotkeyShiftState:%x Flag:%x]", FHotkeyShiftState, Flag);
- }
- else {
- // #4619: We differentiate between Left and Right Ctrl/Shift/Alt. The right modifiers are
- // not used for hotkeys, leaving them available for use as keystroke modifiers within a
- // Keyman keyboard. But we need to track them anyway, so that a user doesn't press them
- // and receive a hotkey event when they shouldn't (e.g. RALT+F4 if the hotkey is F4).
- switch (hs->vkCode) {
- case VK_LCONTROL: Flag = HK_CTRL; break;
- case VK_RCONTROL: Flag = HK_RCTRL_INVALID; break;
- case VK_CONTROL: Flag = extended ? HK_RCTRL_INVALID : HK_CTRL; break;
- case VK_LMENU: Flag = HK_ALT; break;
- case VK_RMENU: Flag = HK_RALT_INVALID; break;
- case VK_MENU: Flag = extended ? HK_RALT_INVALID : HK_ALT; break;
- case VK_LSHIFT: Flag = HK_SHIFT; break;
- case VK_RSHIFT: Flag = HK_RSHIFT_INVALID; break;
- case VK_SHIFT: Flag = hs->scanCode == SCANCODE_RSHIFT ? HK_RSHIFT_INVALID : HK_SHIFT; break;
- }
+ if (GetKeyState(VK_LCONTROL) < 0) {
+ FHotkeyShiftState |= HK_CTRL;
}
- if(Flag != 0) {
- if(isUp) FHotkeyShiftState &= ~Flag;
- else FHotkeyShiftState |= Flag;
+ if (GetKeyState(VK_RCONTROL) < 0) {
+ FHotkeyShiftState |= AllowRightModifierHotKey() ? HK_CTRL : HK_RCTRL_INVALID;
}
+ if (GetKeyState(VK_LMENU) < 0) {
+ FHotkeyShiftState |= HK_ALT;
+ }
+
+ if (GetKeyState(VK_RMENU) < 0) {
+ FHotkeyShiftState |= AllowRightModifierHotKey() ? HK_ALT : HK_RALT_INVALID;
+ }
+
+ if (GetKeyState(VK_LSHIFT) < 0) {
+ FHotkeyShiftState |= HK_SHIFT;
+ }
+ if (GetKeyState(VK_RSHIFT) < 0) {
+ FHotkeyShiftState |= AllowRightModifierHotKey() ? HK_SHIFT : HK_RSHIFT_INVALID;
+ }
+
+ //TODO: #8064. Can remove debug message once issue #8064 is resolved
+ SendDebugMessageFormat("[FHotkeyShiftState:%x]", FHotkeyShiftState);
+
// #7337 Post the modifier state ensuring the serialized queue is in sync
// Note that the modifier key may be posted again with WM_KEYMAN_KEY_EVENT,
// later in this function. This is intentional, as the WM_KEYMAN_MODIFIER_EVENT
@@ -304,9 +276,6 @@ LRESULT _kmnLowLevelKeyboardProc(
}
BOOL ProcessHotkey(UINT vkCode, BOOL isUp, DWORD ShiftState) {
- if (UseRegisterHotkey()) {
- return FALSE;
- }
Hotkeys *hotkeys = Hotkeys::Instance(); // I4641
if (!hotkeys) {
@@ -328,7 +297,6 @@ BOOL ProcessHotkey(UINT vkCode, BOOL isUp, DWORD ShiftState) {
else {
ReportKeyboardChanged(PC_HOTKEYCHANGE, hotkey->hkl == 0 ? TF_PROFILETYPE_INPUTPROCESSOR : TF_PROFILETYPE_KEYBOARDLAYOUT, 0, hotkey->hkl, GUID_NULL, hotkey->profileGUID);
}
-
/* Generate a dummy keystroke to block menu activations, etc but let the shift key through */
PostDummyKeyEvent(); // I3301 - this is imperfect because we don't deal with HC_NOREMOVE. But good enough? // I3534 // I4844
diff --git a/windows/src/engine/kmcomapi/util/utilkeymanoption.pas b/windows/src/engine/kmcomapi/util/utilkeymanoption.pas
index ec979eb215..5ceafbc07e 100644
--- a/windows/src/engine/kmcomapi/util/utilkeymanoption.pas
+++ b/windows/src/engine/kmcomapi/util/utilkeymanoption.pas
@@ -127,6 +127,7 @@ const KeymanOptionInfo: array[0..16] of TKeymanOptionInfo = ( // I3331 // I36
(opt: koKeyboardHotkeysAreToggle; RegistryName: SRegValue_KeyboardHotkeysAreToggle; OptionType: kotBool; BoolValue: False; GroupName: 'kogGeneral'),
(opt: koSwitchLanguageForAllApplications; RegistryName: SRegValue_SwitchLanguageForAllApplications; OptionType: kotBool; BoolValue: True; GroupName: 'kogGeneral'), // I2277 // I4393
(opt: koAltGrCtrlAlt; RegistryName: SRegValue_AltGrCtrlAlt; OptionType: kotBool; BoolValue: False; GroupName: 'kogGeneral'),
+ (opt: koRightModifierHK; RegistryName: SRegValue_AllowRightModifierHotKey; OptionType: kotBool; BoolValue: False; GroupName: 'kogGeneral'),
(opt: koShowHints; RegistryName: SRegValue_EnableHints; OptionType: kotBool; BoolValue: True; GroupName: 'kogGeneral'),
(opt: koBaseLayout; RegistryName: SRegValue_UnderlyingLayout; OptionType: kotLong; IntValue: 0; GroupName: 'kogGeneral'),
(opt: koAutomaticUpdate; RegistryName: SRegValue_AutomaticUpdates; OptionType: kotBool; BoolValue: True; GroupName: 'kogGeneral'),
diff --git a/windows/src/global/delphi/general/Keyman.System.Settings.pas b/windows/src/global/delphi/general/Keyman.System.Settings.pas
index b021e56cdd..d8acd9d25a 100644
--- a/windows/src/global/delphi/general/Keyman.System.Settings.pas
+++ b/windows/src/global/delphi/general/Keyman.System.Settings.pas
@@ -95,7 +95,7 @@ const
ValueType: kstInteger
);
- BaseKeymanSettings: array[0..33] of TKeymanSettingBase = (
+ BaseKeymanSettings: array[0..31] of TKeymanSettingBase = (
// TIKE:UTikeDebugMode.TikeDebugMode
(
@@ -370,14 +370,6 @@ const
// keyman:TfrmKeyman7Main.RegisterHotkeys,
// keyman:TfrmKeyman7Main.UnregisterHotkeys
// keyman32:k32_lowlevelkeyboardhook
- (
- ID: 'engine.compatibility.old_hotkey_registration';
- Name: SRegValue_Flag_UseRegisterHotkey;
- RootKey: HKCU;
- Key: SRegKey_KeymanEngineDebug_CU;
- Description: 'Set to 1 for old RegisterHotkey pathway';
- ValueType: kstInteger
- ),
(
ID: 'engine.compatibility.use_keyman_core';
@@ -391,18 +383,6 @@ const
ValueType: kstInteger
),
- // keyman32:k32_lowlevelkeyboardhook
- (
- ID: 'engine.compatibility.old_cached_hotkey_modifier_state';
- Name: SRegValue_Flag_UseCachedHotkeyModifierState;
- RootKey: HKCU;
- Key: SRegKey_KeymanEngineDebug_CU;
- Description: 'Set to 1 to use a cached modifer state when checking hotkeys; if '+
- 'set to 0 then engine.compatibility.old_hotkey_registration may not '+
- 'work';
- ValueType: kstInteger
- ),
-
// keyman32:keyman32.Initialise_Flag_ShouldSerializeInput
(
ID: 'engine.compatibility.serialize_input';
diff --git a/windows/src/global/delphi/general/KeymanOptionNames.pas b/windows/src/global/delphi/general/KeymanOptionNames.pas
index 07e0a85f7b..2d4be34c0a 100644
--- a/windows/src/global/delphi/general/KeymanOptionNames.pas
+++ b/windows/src/global/delphi/general/KeymanOptionNames.pas
@@ -5,7 +5,10 @@ interface
type
TUtilKeymanOption = (
// General options
- koKeyboardHotkeysAreToggle, koAltGrCtrlAlt, koReleaseShiftKeysAfterKeyPress,
+ koKeyboardHotkeysAreToggle,
+ koAltGrCtrlAlt,
+ koRightModifierHK,
+ koReleaseShiftKeysAfterKeyPress,
koShowHints, // I1256
koAutomaticUpdate,
// Startup options
diff --git a/windows/src/support/Makefile b/windows/src/support/Makefile
deleted file mode 100644
index 56609e21e4..0000000000
--- a/windows/src/support/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Support Makefile
-#
-
-!ifdef NODELPHI
-TARGETS=etl2log texteditor
-!else
-TARGETS=oskbulkrenderer etl2log texteditor
-!endif
-CLEANS=clean-support
-
-!include ..\Header.mak
-
-# ----------------------------------------------------------------------
-
-oskbulkrenderer: .virtual
- cd $(ROOT)\src\support\oskbulkrenderer
- $(MAKE) $(TARGET)
-
-etl2log: .virtual
- cd $(ROOT)\src\support\etl2log
- $(MAKE) $(TARGET)
-
-texteditor: .virtual
- cd $(ROOT)\src\support\texteditor
- $(MAKE) $(TARGET)
-
-# ----------------------------------------------------------------------
-
-clean-support:
- cd $(ROOT)\src\support
- -del version.txt
-
-!include ..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/windows/src/support/build.sh b/windows/src/support/build.sh
new file mode 100755
index 0000000000..f9f20f1716
--- /dev/null
+++ b/windows/src/support/build.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../resources/build/builder.inc.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe \
+ "Keyman for Windows support tools" \
+ \
+ clean \
+ configure \
+ build \
+ test \
+ \
+ :oskbulkrenderer \
+ :etl2log \
+ :texteditor
+
+builder_parse "$@"
+
+builder_run_child_actions clean configure build test publish install
diff --git a/windows/src/support/charident/Makefile b/windows/src/support/charident/Makefile
deleted file mode 100644
index cff6741677..0000000000
--- a/windows/src/support/charident/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# charident Makefile
-#
-
-!include ..\..\Defines.mak
-
-build: version.res dirs
- $(DCC32) charident.dpr
- $(COPY) charident.exe $(PROGRAM)\support
-
-clean: def-clean
-
-signcode:
- $(SIGNCODE) /d "Character Identifier" $(PROGRAM)\support\charident.exe
-
-wrap-symbols:
- $(SYMSTORE) $(PROGRAM)\support\charident.exe /t keyman-windows
-#TODO: $(SYMSTORE) $(DEBUGPATH)\support\charident.dbg /t keyman-windows
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/etl2log/Makefile b/windows/src/support/etl2log/Makefile
deleted file mode 100644
index 48bdb1a592..0000000000
--- a/windows/src/support/etl2log/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# etl2log Makefile
-#
-
-!include ..\..\Defines.mak
-
-build: version.res dirs
- $(MSBUILD) etl2log.vcxproj $(MSBUILD_BUILD)
- $(COPY) $(WIN32_TARGET_PATH)\etl2log.exe $(PROGRAM)\support
- $(COPY) $(WIN32_TARGET_PATH)\etl2log.pdb $(DEBUGPATH)\support
-
-clean: def-clean
- $(MSBUILD) etl2log.vcxproj $(MSBUILD_CLEAN)
-
-signcode:
- $(SIGNCODE) /d "Keyman Engine Tools" $(PROGRAM)\support\etl2log.exe
-
-wrap-symbols:
- $(SYMSTORE) $(PROGRAM)\support\etl2log.exe /t keyman-windows
- $(SYMSTORE) $(DEBUGPATH)\support\etl2log.pdb /t keyman-windows
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/etl2log/build.sh b/windows/src/support/etl2log/build.sh
new file mode 100755
index 0000000000..e2fdee1acd
--- /dev/null
+++ b/windows/src/support/etl2log/build.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/builder.inc.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "etl2log" \
+ clean configure build test
+
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+WIN32_TARGET="$WIN32_TARGET_PATH/etl2log.exe"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /windows/src/support/etl2log/$WIN32_TARGET
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ vs_msbuild etl2log.vcxproj //t:Clean
+ clean_windows_project_files
+}
+
+function do_build() {
+ create-windows-output-folders
+ build_version.res
+ vs_msbuild etl2log.vcxproj //t:Build "//p:Platform=Win32"
+ cp "$WIN32_TARGET" "$WINDOWS_PROGRAM_SUPPORT"
+ cp "$WIN32_TARGET_PATH/etl2log.pdb" "$WINDOWS_DEBUGPATH_SUPPORT"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/windows/src/support/kdebug/Makefile b/windows/src/support/kdebug/Makefile
deleted file mode 100644
index 1a13a18ebe..0000000000
--- a/windows/src/support/kdebug/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# KDebug Makefile
-#
-
-!include ..\..\Defines.mak
-
-!ifdef DEBUG
- NMCFG=kdebug - Win32 Debug
-!else
- NMCFG=kdebug - Win32 Release
-!endif
-
-install: dirs build
-
-build: version.res
- $(NMAKE) /f kdebug.mak "CFG=$(NMCFG)"
-
-clean: def-clean
- $(NMAKE) /f kdebug.mak "CFG=$(NMCFG)" CLEAN
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/keycodetester/Makefile b/windows/src/support/keycodetester/Makefile
deleted file mode 100644
index 38687abaeb..0000000000
--- a/windows/src/support/keycodetester/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Keycodetester Makefile
-#
-
-!include ..\..\Defines.mak
-
-install: dirs build
- $(COPY) keycodetester.exe $(PROGRAM)\bldutil
-
-build:
- $(DCC32) keycodetester.dpr
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/km_yim/Makefile b/windows/src/support/km_yim/Makefile
deleted file mode 100644
index 1aef5f80f0..0000000000
--- a/windows/src/support/km_yim/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# TODO: remove this project
-#
-
-!include ..\..\Defines.mak
-
-build:
-# version.res
- $(DCC32) km_yim.dpr
- rem $(TDSPACK) $(PROGRAM)\desktop\km_yim.exe km_yim.tds
- rem $(TDS2DBG) $(PROGRAM)\desktop\km_yim.exe
- $(WZZIP) inst_km_yim.zip km_yim.exe
-# $(WZSE) inst_km_yim -setup -t inst_km_yim.dialog.txt -st "Tavultesoft Keyman Desktop Yahoo Messenger Addin" -c km_yim.exe
-
-clean: def-clean
- if exist inst_km_yim.zip del inst_km_yim.zip
-
-signcode:
- $(SIGNCODE) /d "Tavultesoft Keyman Desktop Yahoo Messenger Addin" inst_km_yim.exe
-
-wrap-symbols:
- rem
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/kmkb0045/Makefile b/windows/src/support/kmkb0045/Makefile
deleted file mode 100644
index 3e914c8acd..0000000000
--- a/windows/src/support/kmkb0045/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# TODO: remove this project
-#
-
-!include ..\..\Defines.mak
-
-build: version.res manifest.res
- $(DCC32) kmkb0045.dpr
- $(SENTRYTOOL_DELPHIPREP) kmkb0045.exe -dpr kmkb0045.dpr
- $(TDS2DBG) kmkb0045.exe
- $(COPY) kmkb0045.exe $(PROGRAM)\support
-
-clean: def-clean
-
-signcode:
- $(SIGNCODE) /d "Tavultesoft KMKB0045" $(PROGRAM)\support\kmkb0045.exe
-
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/oskbulkrenderer/Makefile b/windows/src/support/oskbulkrenderer/Makefile
deleted file mode 100644
index 65b8e02ba6..0000000000
--- a/windows/src/support/oskbulkrenderer/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# oskbulkrenderer Makefile
-#
-
-!include ..\..\Defines.mak
-
-build: version.res dirs
- $(DELPHI_MSBUILD) oskbulkrenderer.dproj "/p:Platform=Win32"
-
- $(SENTRYTOOL_DELPHIPREP) $(WIN32_TARGET_PATH)\oskbulkrenderer.exe -dpr oskbulkrenderer.dpr
- $(TDS2DBG) $(WIN32_TARGET_PATH)\oskbulkrenderer.exe
- $(COPY) $(WIN32_TARGET_PATH)\oskbulkrenderer.exe $(PROGRAM)\support
- if exist $(WIN32_TARGET_PATH)\oskbulkrenderer.dbg $(COPY) $(WIN32_TARGET_PATH)\oskbulkrenderer.dbg $(DEBUGPATH)\support
-
-clean: def-clean
- -rd /s/q Win32
-
-signcode:
- rem Not signing this utility
-
-wrap-symbols:
- @rem
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/oskbulkrenderer/build.sh b/windows/src/support/oskbulkrenderer/build.sh
new file mode 100755
index 0000000000..76fa8a4032
--- /dev/null
+++ b/windows/src/support/oskbulkrenderer/build.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/builder.inc.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "oskbuildrenderer" \
+ clean configure build test
+
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+WIN32_TARGET="$WIN32_TARGET_PATH/oskbulkrenderer.exe"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /windows/src/support/oskbulkrenderer/$WIN32_TARGET
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ clean_windows_project_files
+}
+
+function do_build() {
+ create-windows-output-folders
+ build_version.res
+ delphi_msbuild oskbulkrenderer.dproj "//p:Platform=Win32"
+
+ cp "$WIN32_TARGET" "$WINDOWS_PROGRAM_SUPPORT"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/windows/src/support/richedit_examine/Makefile b/windows/src/support/richedit_examine/Makefile
deleted file mode 100644
index adacba5901..0000000000
--- a/windows/src/support/richedit_examine/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# richedit_examine Makefile
-#
-
-!include ..\..\Defines.mak
-
-install: dirs build
- $(COPY) richedit_examine.exe $(PROGRAM)\bldutil
-
-build: version.res
- $(DCC32) richedit_examine.dpr
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/windows/src/support/texteditor/Makefile b/windows/src/support/texteditor/Makefile
deleted file mode 100644
index 473bf57598..0000000000
--- a/windows/src/support/texteditor/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Keyman Text Editor Makefile
-#
-
-!include ..\..\Defines.mak
-
-build:
- $(MSBUILD) editor.vcxproj $(MSBUILD_BUILD) /p:Platform=x86
- $(MSBUILD) editor.vcxproj $(MSBUILD_BUILD) /p:Platform=x64
- $(COPY) $(WIN32_TARGET_PATH)\editor32.exe $(PROGRAM)\support
- $(COPY) $(WIN32_TARGET_PATH)\editor32.pdb $(DEBUGPATH)\support
- $(COPY) $(X64_TARGET_PATH)\editor64.exe $(PROGRAM)\support
- $(COPY) $(X64_TARGET_PATH)\editor64.pdb $(DEBUGPATH)\support
-
-clean: def-clean
- $(MSBUILD) $(MSBUILD_CLEAN) editor.sln
-
-signcode:
- $(SIGNCODE) /d "Text Editor for testing Keyman" $(PROGRAM)\support\editor32.exe
- $(SIGNCODE) /d "Text Editor for testing Keyman" $(PROGRAM)\support\editor64.exe
-
-install:
- $(COPY) $(PROGRAM)\support\editor32.exe "$(INSTALLPATH_KEYMANENGINE)"
- $(COPY) $(PROGRAM)\support\editor64.exe "$(INSTALLPATH_KEYMANENGINE)"
-
-wrap-symbols:
- $(SYMSTORE) $(PROGRAM)\support\editor32.exe /t keyman-windows
- $(SYMSTORE) $(PROGRAM)\support\editor64.exe /t keyman-windows
- $(SYMSTORE) $(DEBUGPATH)\support\editor32.pdb /t keyman-windows
- $(SYMSTORE) $(DEBUGPATH)\support\editor64.pdb /t keyman-windows
-
-
-!include ..\..\Target.mak
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/windows/src/support/texteditor/build.sh b/windows/src/support/texteditor/build.sh
new file mode 100755
index 0000000000..312ee1d0f4
--- /dev/null
+++ b/windows/src/support/texteditor/build.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/builder.inc.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "texteditor" \
+ clean configure build test
+
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+WIN32_TARGET="$WIN32_TARGET_PATH/editor32.exe"
+X64_TARGET="$X64_TARGET_PATH/editor64.exe"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /windows/src/support/texteditor/$WIN32_TARGET
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ vs_msbuild Editor.vcxproj //t:Clean
+ clean_windows_project_files
+}
+
+function do_build() {
+ create-windows-output-folders
+ # build_version.res
+ vs_msbuild Editor.vcxproj //t:Build "//p:Platform=Win32"
+ vs_msbuild Editor.vcxproj //t:Build "//p:Platform=x64"
+ cp "$WIN32_TARGET" "$WINDOWS_PROGRAM_SUPPORT"
+ cp "$X64_TARGET" "$WINDOWS_PROGRAM_SUPPORT"
+ cp "$WIN32_TARGET_PATH/editor32.pdb" "$WINDOWS_DEBUGPATH_SUPPORT"
+ cp "$X64_TARGET_PATH/editor64.pdb" "$WINDOWS_DEBUGPATH_SUPPORT"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/windows/src/support/windowinfo/Makefile b/windows/src/support/windowinfo/Makefile
deleted file mode 100644
index ac7da2c182..0000000000
--- a/windows/src/support/windowinfo/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# windowinfo Makefile
-#
-
-!include ..\..\Defines.mak
-
-install: dirs build
- $(COPY) windowinfo.exe $(PROGRAM)\bldutil
-
-build: version.res
- $(DCC32) windowinfo.dpr
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/windows/src/test/manual-tests/integration-tests/Makefile b/windows/src/test/manual-tests/integration-tests/Makefile
deleted file mode 100644
index 093dc44140..0000000000
--- a/windows/src/test/manual-tests/integration-tests/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Integration Tests Makefile.
-#
-
-# ----------------------------------------------------------------------
-
-TARGETS=keymanapi
-
-test:
- $(MAKE) "TARGET=test" $(TARGETS)
-
-!include ..\..\Header.mak
-
-# ----------------------------------------------------------------------
-
-keymanapi:
- cd $(ROOT)\src\test\integration-tests\keymanapi
- $(MAKE) $(TARGET)
-
-# ----------------------------------------------------------------------
-
-!include ..\..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/windows/src/test/manual-tests/integration-tests/keymanapi/Makefile b/windows/src/test/manual-tests/integration-tests/keymanapi/Makefile
deleted file mode 100644
index 7becbb044d..0000000000
--- a/windows/src/test/manual-tests/integration-tests/keymanapi/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Integration tests for keymanapi
-#
-
-!include ..\..\..\Defines.mak
-
-!ifdef EXCLUDE_ELEVATED
-TEST_MODE=--exclude:Elevated
-!endif
-
-test: build
- $(WIN32_TARGET_PATH)\keymanapi_test.exe -b -exit:continue $(TEST_MODE)
- $(WIN64_TARGET_PATH)\keymanapi_test.exe -b -exit:continue $(TEST_MODE)
-
-build:
- $(DELPHI_MSBUILD) "/p:Platform=Win32" keymanapi_test.dproj
- $(DELPHI_MSBUILD) "/p:Platform=Win64" keymanapi_test.dproj
-
-clean: def-clean
- -rd /s/q Win32
- -rd /s/q Win64
-
-!include ..\..\..\Target.mak
diff --git a/windows/src/test/manual-tests/regressiontest/Makefile b/windows/src/test/manual-tests/regressiontest/Makefile
deleted file mode 100644
index dbfa70078c..0000000000
--- a/windows/src/test/manual-tests/regressiontest/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# REGRESSIONTEST Makefile
-#
-
-
-!include ..\..\Defines.mak
-
-build: dirs
- $(DCC32) regressiontest.dpr
- $(COPY) regressiontest.exe $(PROGRAM)\support
-
-clean: def-clean
- cd tests
- $(MAKE) clean
-
-!include ..\..\Target.mak
diff --git a/windows/src/test/manual-tests/regressiontest/tests/Makefile b/windows/src/test/manual-tests/regressiontest/tests/Makefile
deleted file mode 100644
index 01f8705399..0000000000
--- a/windows/src/test/manual-tests/regressiontest/tests/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-
-!include ..\..\..\Defines.mak
-
-all:
- for %d in (*.kmn) do $(PROGRAM)\bin\kmc.cmd build "%d"
-
-.kmn.kmx:
- &$(PROGRAM)\bin\kmc.cmd build $**
-
-clean:
- -del *.kmx
diff --git a/windows/src/test/manual-tests/test_httpuploader/Makefile b/windows/src/test/manual-tests/test_httpuploader/Makefile
deleted file mode 100644
index b6250f4bfd..0000000000
--- a/windows/src/test/manual-tests/test_httpuploader/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# test_httpuploader Makefile
-#
-
-!include ..\..\Defines.mak
-
-build: version.res manifest.res
- $(DCC32) test_httpuploader.dpr
-
-icons:
- rc icons.rc
-
-clean: def-clean
-
-signcode:
- rem no signcode
-
-!include ..\..\Target.mak