Compare commits
1 Commits
main
...
weekly-updates
| Author | SHA1 | Date | |
|---|---|---|---|
| 254b949ad3 |
+42
-51
@@ -1,11 +1,11 @@
|
||||
# This software is Copyright (c) 2012-2020 magnum, and it is hereby
|
||||
# This software is Copyright (c) 2012-2024 magnum, and it is hereby
|
||||
# released to the general public under the following terms:
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted.
|
||||
#
|
||||
# Generic implementation of "dumb" exhaustive search of Unicode BMP.
|
||||
# Default is to try *all* allocated characters in the BMP of Unicode v13
|
||||
# (there's 55,387 of them). Even if a fast format can exhaust two characters
|
||||
# Default is to try *all* allocated characters in the BMP of Unicode v16
|
||||
# (there's 55,537 of them). Even if a fast format can exhaust two characters
|
||||
# in 15 minutes, three characters would take 1.5 years...
|
||||
#
|
||||
# Note that these modes will handle --max-len differently than normal: They
|
||||
@@ -22,7 +22,7 @@ int maxlength; // Maximum password length to try
|
||||
int last; // Last character position, zero-based
|
||||
int lastid; // Character index in the last position
|
||||
int id[0x7f]; // Current character indices for other positions
|
||||
int charset[0x10000], c0; // Characters
|
||||
int charset[0xd900], c0; // Characters
|
||||
|
||||
void init()
|
||||
{
|
||||
@@ -43,7 +43,7 @@ void init()
|
||||
|
||||
/*
|
||||
* This defines the character set. This is auto-generated from UnicodeData.txt
|
||||
* and we skip control characters.
|
||||
* of Unicode 16.0.0 and we skip control characters.
|
||||
*/
|
||||
i = 0;
|
||||
// 0000..007F; Basic Latin
|
||||
@@ -119,9 +119,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 0600..06FF; Arabic
|
||||
c = 0x600; // from ARABIC NUMBER SIGN
|
||||
while (c <= 0x61c) // ..to ARABIC LETTER MARK
|
||||
charset[i++] = c++;
|
||||
c = 0x61e; // from ARABIC TRIPLE DOT PUNCTUATION MARK
|
||||
while (c <= 0x6ff) // ..to ARABIC LETTER HEH WITH INVERTED V
|
||||
charset[i++] = c++;
|
||||
// 0700..074F; Syriac
|
||||
@@ -163,14 +160,17 @@ void init()
|
||||
c = 0x860; // from SYRIAC LETTER MALAYALAM NGA
|
||||
while (c <= 0x86a) // ..to SYRIAC LETTER MALAYALAM SSA
|
||||
charset[i++] = c++;
|
||||
// 0870..089F; Arabic Extended-B
|
||||
c = 0x870; // from ARABIC LETTER ALEF WITH ATTACHED FATHA
|
||||
while (c <= 0x88e) // ..to ARABIC VERTICAL TAIL
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x890; // ARABIC POUND MARK ABOVE
|
||||
charset[i++] = 0x891; // ARABIC PIASTRE MARK ABOVE
|
||||
c = 0x897; // from ARABIC PEPET
|
||||
while (c <= 0x89f) // ..to ARABIC HALF MADDA OVER MADDA
|
||||
charset[i++] = c++;
|
||||
// 08A0..08FF; Arabic Extended-A
|
||||
c = 0x8a0; // from ARABIC LETTER BEH WITH SMALL V BELOW
|
||||
while (c <= 0x8b4) // ..to ARABIC LETTER KAF WITH DOT BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x8b6; // from ARABIC LETTER BEH WITH SMALL MEEM ABOVE
|
||||
while (c <= 0x8c7) // ..to ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0x8d3; // from ARABIC SMALL LOW WAW
|
||||
while (c <= 0x8ff) // ..to ARABIC MARK SIDEWAYS NOON GHUNNA
|
||||
charset[i++] = c++;
|
||||
// 0900..097F; Devanagari
|
||||
@@ -360,7 +360,7 @@ void init()
|
||||
c = 0xc2a; // from TELUGU LETTER PA
|
||||
while (c <= 0xc39) // ..to TELUGU LETTER HA
|
||||
charset[i++] = c++;
|
||||
c = 0xc3d; // from TELUGU SIGN AVAGRAHA
|
||||
c = 0xc3c; // from TELUGU SIGN NUKTA
|
||||
while (c <= 0xc44) // ..to TELUGU VOWEL SIGN VOCALIC RR
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xc46; // TELUGU VOWEL SIGN E
|
||||
@@ -406,6 +406,8 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcd5; // KANNADA LENGTH MARK
|
||||
charset[i++] = 0xcd6; // KANNADA AI LENGTH MARK
|
||||
charset[i++] = 0xcdd; // KANNADA LETTER NAKAARA POLLU
|
||||
charset[i++] = 0xcde; // KANNADA LETTER FA
|
||||
c = 0xce0; // from KANNADA LETTER VOCALIC RR
|
||||
while (c <= 0xce3) // ..to KANNADA VOWEL SIGN VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
@@ -413,7 +415,7 @@ void init()
|
||||
while (c <= 0xcef) // ..to KANNADA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcf1; // KANNADA SIGN JIHVAMULIYA
|
||||
charset[i++] = 0xcf2; // KANNADA SIGN UPADHMANIYA
|
||||
charset[i++] = 0xcf3; // KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
|
||||
// 0D00..0D7F; Malayalam
|
||||
c = 0xd00; // from MALAYALAM SIGN COMBINING ANUSVARA ABOVE
|
||||
while (c <= 0xd0c) // ..to MALAYALAM LETTER VOCALIC L
|
||||
@@ -483,7 +485,7 @@ void init()
|
||||
while (c <= 0xec4) // ..to LAO VOWEL SIGN AI
|
||||
charset[i++] = c++;
|
||||
c = 0xec8; // from LAO TONE MAI EK
|
||||
while (c <= 0xecd) // ..to LAO NIGGAHITA
|
||||
while (c <= 0xece) // ..to LAO YAMAKKAN
|
||||
charset[i++] = c++;
|
||||
c = 0xed0; // from LAO DIGIT ZERO
|
||||
while (c <= 0xed9) // ..to LAO DIGIT NINE
|
||||
@@ -596,11 +598,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1700..171F; Tagalog
|
||||
c = 0x1700; // from TAGALOG LETTER A
|
||||
while (c <= 0x170c) // ..to TAGALOG LETTER YA
|
||||
charset[i++] = c++;
|
||||
c = 0x170e; // from TAGALOG LETTER LA
|
||||
while (c <= 0x1714) // ..to TAGALOG SIGN VIRAMA
|
||||
while (c <= 0x1715) // ..to TAGALOG SIGN PAMUDPOD
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x171f; // TAGALOG LETTER ARCHAIC RA
|
||||
// 1720..173F; Hanunoo
|
||||
c = 0x1720; // from HANUNOO LETTER A
|
||||
while (c <= 0x1736) // ..to PHILIPPINE DOUBLE PUNCTUATION
|
||||
@@ -629,9 +629,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1800..18AF; Mongolian
|
||||
c = 0x1800; // from MONGOLIAN BIRGA
|
||||
while (c <= 0x180e) // ..to MONGOLIAN VOWEL SEPARATOR
|
||||
charset[i++] = c++;
|
||||
c = 0x1810; // from MONGOLIAN DIGIT ZERO
|
||||
while (c <= 0x1819) // ..to MONGOLIAN DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
c = 0x1820; // from MONGOLIAN LETTER A
|
||||
@@ -704,14 +701,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1AB0..1AFF; Combining Diacritical Marks Extended
|
||||
c = 0x1ab0; // from COMBINING DOUBLED CIRCUMFLEX ACCENT
|
||||
while (c <= 0x1ac0) // ..to COMBINING LATIN SMALL LETTER TURNED W BELOW
|
||||
while (c <= 0x1ace) // ..to COMBINING LATIN SMALL LETTER INSULAR T
|
||||
charset[i++] = c++;
|
||||
// 1B00..1B7F; Balinese
|
||||
c = 0x1b00; // from BALINESE SIGN ULU RICEM
|
||||
while (c <= 0x1b4b) // ..to BALINESE LETTER ASYURA SASAK
|
||||
while (c <= 0x1b4c) // ..to BALINESE LETTER ARCHAIC JNYA
|
||||
charset[i++] = c++;
|
||||
c = 0x1b50; // from BALINESE DIGIT ZERO
|
||||
while (c <= 0x1b7c) // ..to BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
|
||||
c = 0x1b4e; // from BALINESE INVERTED CARIK SIKI
|
||||
while (c <= 0x1b7f) // ..to BALINESE PANTI BAWAK
|
||||
charset[i++] = c++;
|
||||
// 1B80..1BBF; Sundanese
|
||||
c = 0x1b80; // from SUNDANESE SIGN PANYECEK
|
||||
@@ -739,7 +736,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1C80..1C8F; Cyrillic Extended-C
|
||||
c = 0x1c80; // from CYRILLIC SMALL LETTER ROUNDED VE
|
||||
while (c <= 0x1c88) // ..to CYRILLIC SMALL LETTER UNBLENDED UK
|
||||
while (c <= 0x1c8a) // ..to CYRILLIC SMALL LETTER TJE
|
||||
charset[i++] = c++;
|
||||
// 1C90..1CBF; Georgian Extended
|
||||
c = 0x1c90; // from GEORGIAN MTAVRULI CAPITAL LETTER AN
|
||||
@@ -765,9 +762,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1DC0..1DFF; Combining Diacritical Marks Supplement
|
||||
c = 0x1dc0; // from COMBINING DOTTED GRAVE ACCENT
|
||||
while (c <= 0x1df9) // ..to COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x1dfb; // from COMBINING DELETION MARK
|
||||
while (c <= 0x1dff) // ..to COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
charset[i++] = c++;
|
||||
// 1E00..1EFF; Latin Extended Additional
|
||||
@@ -831,7 +825,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 20A0..20CF; Currency Symbols
|
||||
c = 0x20a0; // from EURO-CURRENCY SIGN
|
||||
while (c <= 0x20bf) // ..to BITCOIN SIGN
|
||||
while (c <= 0x20c0) // ..to SOM SIGN
|
||||
charset[i++] = c++;
|
||||
// 20D0..20FF; Combining Diacritical Marks for Symbols
|
||||
c = 0x20d0; // from COMBINING LEFT HARPOON ABOVE
|
||||
@@ -859,7 +853,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2400..243F; Control Pictures
|
||||
c = 0x2400; // from SYMBOL FOR NULL
|
||||
while (c <= 0x2426) // ..to SYMBOL FOR SUBSTITUTE FORM TWO
|
||||
while (c <= 0x2429) // ..to SYMBOL FOR DELETE MEDIUM SHADE FORM
|
||||
charset[i++] = c++;
|
||||
// 2440..245F; Optical Character Recognition
|
||||
c = 0x2440; // from OCR HOOK
|
||||
@@ -925,10 +919,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2C00..2C5F; Glagolitic
|
||||
c = 0x2c00; // from GLAGOLITIC CAPITAL LETTER AZU
|
||||
while (c <= 0x2c2e) // ..to GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
|
||||
charset[i++] = c++;
|
||||
c = 0x2c30; // from GLAGOLITIC SMALL LETTER AZU
|
||||
while (c <= 0x2c5e) // ..to GLAGOLITIC SMALL LETTER LATINATE MYSLITE
|
||||
while (c <= 0x2c5f) // ..to GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
|
||||
charset[i++] = c++;
|
||||
// 2C60..2C7F; Latin Extended-C
|
||||
c = 0x2c60; // from LATIN CAPITAL LETTER L WITH DOUBLE BAR
|
||||
@@ -989,7 +980,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2E00..2E7F; Supplemental Punctuation
|
||||
c = 0x2e00; // from RIGHT ANGLE SUBSTITUTION MARKER
|
||||
while (c <= 0x2e52) // ..to TIRONIAN SIGN CAPITAL ET
|
||||
while (c <= 0x2e5d) // ..to OBLIQUE HYPHEN
|
||||
charset[i++] = c++;
|
||||
// 2E80..2EFF; CJK Radicals Supplement
|
||||
c = 0x2e80; // from CJK RADICAL REPEAT
|
||||
@@ -1004,7 +995,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2FF0..2FFF; Ideographic Description Characters
|
||||
c = 0x2ff0; // from IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
|
||||
while (c <= 0x2ffb) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
|
||||
while (c <= 0x2fff) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
|
||||
charset[i++] = c++;
|
||||
// 3000..303F; CJK Symbols and Punctuation
|
||||
c = 0x3000; // from IDEOGRAPHIC SPACE
|
||||
@@ -1039,8 +1030,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 31C0..31EF; CJK Strokes
|
||||
c = 0x31c0; // from CJK STROKE T
|
||||
while (c <= 0x31e3) // ..to CJK STROKE Q
|
||||
while (c <= 0x31e5) // ..to CJK STROKE SZP
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x31ef; // IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
|
||||
// 31F0..31FF; Katakana Phonetic Extensions
|
||||
c = 0x31f0; // from KATAKANA LETTER SMALL KU
|
||||
while (c <= 0x31ff) // ..to KATAKANA LETTER SMALL RO
|
||||
@@ -1066,7 +1058,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 4E00..9FFF; CJK Unified Ideographs
|
||||
c = 0x4e00; // from <CJK Ideograph, First>
|
||||
while (c <= 0x9ffc) // ..to <CJK Ideograph, Last>
|
||||
while (c <= 0x9fff) // ..to <CJK Ideograph, Last>
|
||||
charset[i++] = c++;
|
||||
// A000..A48F; Yi Syllables
|
||||
c = 0xa000; // from YI SYLLABLE IT
|
||||
@@ -1098,12 +1090,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// A720..A7FF; Latin Extended-D
|
||||
c = 0xa720; // from MODIFIER LETTER STRESS AND HIGH TONE
|
||||
while (c <= 0xa7bf) // ..to LATIN SMALL LETTER GLOTTAL U
|
||||
while (c <= 0xa7cd) // ..to LATIN SMALL LETTER S WITH DIAGONAL STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7c2; // from LATIN CAPITAL LETTER ANGLICANA W
|
||||
while (c <= 0xa7ca) // ..to LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
|
||||
charset[i++] = 0xa7d0; // LATIN CAPITAL LETTER CLOSED INSULAR G
|
||||
charset[i++] = 0xa7d1; // LATIN SMALL LETTER CLOSED INSULAR G
|
||||
c = 0xa7d5; // from LATIN SMALL LETTER DOUBLE WYNN
|
||||
while (c <= 0xa7dc) // ..to LATIN CAPITAL LETTER LAMBDA WITH STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7f5; // from LATIN CAPITAL LETTER REVERSED HALF H
|
||||
c = 0xa7f2; // from MODIFIER LETTER CAPITAL C
|
||||
while (c <= 0xa7ff) // ..to LATIN EPIGRAPHIC LETTER ARCHAIC M
|
||||
charset[i++] = c++;
|
||||
// A800..A82F; Syloti Nagri
|
||||
@@ -1258,19 +1252,16 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// FB50..FDFF; Arabic Presentation Forms-A
|
||||
c = 0xfb50; // from ARABIC LETTER ALEF WASLA ISOLATED FORM
|
||||
while (c <= 0xfbc1) // ..to ARABIC SYMBOL SMALL TAH BELOW
|
||||
while (c <= 0xfbc2) // ..to ARABIC SYMBOL WASLA ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0xfbd3; // from ARABIC LETTER NG ISOLATED FORM
|
||||
while (c <= 0xfd3f) // ..to ORNATE RIGHT PARENTHESIS
|
||||
charset[i++] = c++;
|
||||
c = 0xfd50; // from ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
|
||||
while (c <= 0xfd8f) // ..to ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfd92; // from ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
|
||||
while (c <= 0xfdc7) // ..to ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfdf0; // from ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
|
||||
while (c <= 0xfdfd) // ..to ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
|
||||
while (c <= 0xfdff) // ..to ARABIC LIGATURE AZZA WA JALL
|
||||
charset[i++] = c++;
|
||||
// FE00..FE0F; Variation Selectors
|
||||
c = 0xfe00; // from VARIATION SELECTOR-1
|
||||
|
||||
+283
-91
@@ -1,11 +1,11 @@
|
||||
# This software is Copyright (c) 2012-2020 magnum, and it is hereby
|
||||
# This software is Copyright (c) 2012-2024 magnum, and it is hereby
|
||||
# released to the general public under the following terms:
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted.
|
||||
#
|
||||
# Generic implementation of "dumb" exhaustive search of FULL Unicode.
|
||||
# Default is to try *all* allocated characters in Unicode v13 (there's
|
||||
# 143,532 of them). Even if a fast format can exhaust two characters in one
|
||||
# Default is to try *all* allocated characters in Unicode v16 (there's
|
||||
# 154,663 of them). Even if a fast format can exhaust two characters in one
|
||||
# hour, three characters would take 12 years...
|
||||
#
|
||||
# Note that these modes will handle --max-len differently than normal: They
|
||||
@@ -27,7 +27,7 @@ int maxlength; // Maximum password length to try
|
||||
int last; // Last character position, zero-based
|
||||
int lastid; // Character index in the last position
|
||||
int id[0x7f]; // Current character indices for other positions
|
||||
int charset[0x24000], c0; // Characters
|
||||
int charset[0x25c30], c0; // Characters
|
||||
|
||||
void init()
|
||||
{
|
||||
@@ -48,7 +48,7 @@ void init()
|
||||
|
||||
/*
|
||||
* This defines the character set. This is auto-generated from UnicodeData.txt
|
||||
* and we skip control characters.
|
||||
* of Unicode 16.0.0 and we skip control characters.
|
||||
*/
|
||||
i = 0;
|
||||
// 0000..007F; Basic Latin
|
||||
@@ -124,9 +124,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 0600..06FF; Arabic
|
||||
c = 0x600; // from ARABIC NUMBER SIGN
|
||||
while (c <= 0x61c) // ..to ARABIC LETTER MARK
|
||||
charset[i++] = c++;
|
||||
c = 0x61e; // from ARABIC TRIPLE DOT PUNCTUATION MARK
|
||||
while (c <= 0x6ff) // ..to ARABIC LETTER HEH WITH INVERTED V
|
||||
charset[i++] = c++;
|
||||
// 0700..074F; Syriac
|
||||
@@ -168,14 +165,17 @@ void init()
|
||||
c = 0x860; // from SYRIAC LETTER MALAYALAM NGA
|
||||
while (c <= 0x86a) // ..to SYRIAC LETTER MALAYALAM SSA
|
||||
charset[i++] = c++;
|
||||
// 0870..089F; Arabic Extended-B
|
||||
c = 0x870; // from ARABIC LETTER ALEF WITH ATTACHED FATHA
|
||||
while (c <= 0x88e) // ..to ARABIC VERTICAL TAIL
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x890; // ARABIC POUND MARK ABOVE
|
||||
charset[i++] = 0x891; // ARABIC PIASTRE MARK ABOVE
|
||||
c = 0x897; // from ARABIC PEPET
|
||||
while (c <= 0x89f) // ..to ARABIC HALF MADDA OVER MADDA
|
||||
charset[i++] = c++;
|
||||
// 08A0..08FF; Arabic Extended-A
|
||||
c = 0x8a0; // from ARABIC LETTER BEH WITH SMALL V BELOW
|
||||
while (c <= 0x8b4) // ..to ARABIC LETTER KAF WITH DOT BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x8b6; // from ARABIC LETTER BEH WITH SMALL MEEM ABOVE
|
||||
while (c <= 0x8c7) // ..to ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0x8d3; // from ARABIC SMALL LOW WAW
|
||||
while (c <= 0x8ff) // ..to ARABIC MARK SIDEWAYS NOON GHUNNA
|
||||
charset[i++] = c++;
|
||||
// 0900..097F; Devanagari
|
||||
@@ -365,7 +365,7 @@ void init()
|
||||
c = 0xc2a; // from TELUGU LETTER PA
|
||||
while (c <= 0xc39) // ..to TELUGU LETTER HA
|
||||
charset[i++] = c++;
|
||||
c = 0xc3d; // from TELUGU SIGN AVAGRAHA
|
||||
c = 0xc3c; // from TELUGU SIGN NUKTA
|
||||
while (c <= 0xc44) // ..to TELUGU VOWEL SIGN VOCALIC RR
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xc46; // TELUGU VOWEL SIGN E
|
||||
@@ -411,6 +411,8 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcd5; // KANNADA LENGTH MARK
|
||||
charset[i++] = 0xcd6; // KANNADA AI LENGTH MARK
|
||||
charset[i++] = 0xcdd; // KANNADA LETTER NAKAARA POLLU
|
||||
charset[i++] = 0xcde; // KANNADA LETTER FA
|
||||
c = 0xce0; // from KANNADA LETTER VOCALIC RR
|
||||
while (c <= 0xce3) // ..to KANNADA VOWEL SIGN VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
@@ -418,7 +420,7 @@ void init()
|
||||
while (c <= 0xcef) // ..to KANNADA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcf1; // KANNADA SIGN JIHVAMULIYA
|
||||
charset[i++] = 0xcf2; // KANNADA SIGN UPADHMANIYA
|
||||
charset[i++] = 0xcf3; // KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
|
||||
// 0D00..0D7F; Malayalam
|
||||
c = 0xd00; // from MALAYALAM SIGN COMBINING ANUSVARA ABOVE
|
||||
while (c <= 0xd0c) // ..to MALAYALAM LETTER VOCALIC L
|
||||
@@ -488,7 +490,7 @@ void init()
|
||||
while (c <= 0xec4) // ..to LAO VOWEL SIGN AI
|
||||
charset[i++] = c++;
|
||||
c = 0xec8; // from LAO TONE MAI EK
|
||||
while (c <= 0xecd) // ..to LAO NIGGAHITA
|
||||
while (c <= 0xece) // ..to LAO YAMAKKAN
|
||||
charset[i++] = c++;
|
||||
c = 0xed0; // from LAO DIGIT ZERO
|
||||
while (c <= 0xed9) // ..to LAO DIGIT NINE
|
||||
@@ -601,11 +603,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1700..171F; Tagalog
|
||||
c = 0x1700; // from TAGALOG LETTER A
|
||||
while (c <= 0x170c) // ..to TAGALOG LETTER YA
|
||||
charset[i++] = c++;
|
||||
c = 0x170e; // from TAGALOG LETTER LA
|
||||
while (c <= 0x1714) // ..to TAGALOG SIGN VIRAMA
|
||||
while (c <= 0x1715) // ..to TAGALOG SIGN PAMUDPOD
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x171f; // TAGALOG LETTER ARCHAIC RA
|
||||
// 1720..173F; Hanunoo
|
||||
c = 0x1720; // from HANUNOO LETTER A
|
||||
while (c <= 0x1736) // ..to PHILIPPINE DOUBLE PUNCTUATION
|
||||
@@ -634,9 +634,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1800..18AF; Mongolian
|
||||
c = 0x1800; // from MONGOLIAN BIRGA
|
||||
while (c <= 0x180e) // ..to MONGOLIAN VOWEL SEPARATOR
|
||||
charset[i++] = c++;
|
||||
c = 0x1810; // from MONGOLIAN DIGIT ZERO
|
||||
while (c <= 0x1819) // ..to MONGOLIAN DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
c = 0x1820; // from MONGOLIAN LETTER A
|
||||
@@ -709,14 +706,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1AB0..1AFF; Combining Diacritical Marks Extended
|
||||
c = 0x1ab0; // from COMBINING DOUBLED CIRCUMFLEX ACCENT
|
||||
while (c <= 0x1ac0) // ..to COMBINING LATIN SMALL LETTER TURNED W BELOW
|
||||
while (c <= 0x1ace) // ..to COMBINING LATIN SMALL LETTER INSULAR T
|
||||
charset[i++] = c++;
|
||||
// 1B00..1B7F; Balinese
|
||||
c = 0x1b00; // from BALINESE SIGN ULU RICEM
|
||||
while (c <= 0x1b4b) // ..to BALINESE LETTER ASYURA SASAK
|
||||
while (c <= 0x1b4c) // ..to BALINESE LETTER ARCHAIC JNYA
|
||||
charset[i++] = c++;
|
||||
c = 0x1b50; // from BALINESE DIGIT ZERO
|
||||
while (c <= 0x1b7c) // ..to BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
|
||||
c = 0x1b4e; // from BALINESE INVERTED CARIK SIKI
|
||||
while (c <= 0x1b7f) // ..to BALINESE PANTI BAWAK
|
||||
charset[i++] = c++;
|
||||
// 1B80..1BBF; Sundanese
|
||||
c = 0x1b80; // from SUNDANESE SIGN PANYECEK
|
||||
@@ -744,7 +741,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1C80..1C8F; Cyrillic Extended-C
|
||||
c = 0x1c80; // from CYRILLIC SMALL LETTER ROUNDED VE
|
||||
while (c <= 0x1c88) // ..to CYRILLIC SMALL LETTER UNBLENDED UK
|
||||
while (c <= 0x1c8a) // ..to CYRILLIC SMALL LETTER TJE
|
||||
charset[i++] = c++;
|
||||
// 1C90..1CBF; Georgian Extended
|
||||
c = 0x1c90; // from GEORGIAN MTAVRULI CAPITAL LETTER AN
|
||||
@@ -770,9 +767,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1DC0..1DFF; Combining Diacritical Marks Supplement
|
||||
c = 0x1dc0; // from COMBINING DOTTED GRAVE ACCENT
|
||||
while (c <= 0x1df9) // ..to COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x1dfb; // from COMBINING DELETION MARK
|
||||
while (c <= 0x1dff) // ..to COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
charset[i++] = c++;
|
||||
// 1E00..1EFF; Latin Extended Additional
|
||||
@@ -836,7 +830,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 20A0..20CF; Currency Symbols
|
||||
c = 0x20a0; // from EURO-CURRENCY SIGN
|
||||
while (c <= 0x20bf) // ..to BITCOIN SIGN
|
||||
while (c <= 0x20c0) // ..to SOM SIGN
|
||||
charset[i++] = c++;
|
||||
// 20D0..20FF; Combining Diacritical Marks for Symbols
|
||||
c = 0x20d0; // from COMBINING LEFT HARPOON ABOVE
|
||||
@@ -864,7 +858,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2400..243F; Control Pictures
|
||||
c = 0x2400; // from SYMBOL FOR NULL
|
||||
while (c <= 0x2426) // ..to SYMBOL FOR SUBSTITUTE FORM TWO
|
||||
while (c <= 0x2429) // ..to SYMBOL FOR DELETE MEDIUM SHADE FORM
|
||||
charset[i++] = c++;
|
||||
// 2440..245F; Optical Character Recognition
|
||||
c = 0x2440; // from OCR HOOK
|
||||
@@ -930,10 +924,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2C00..2C5F; Glagolitic
|
||||
c = 0x2c00; // from GLAGOLITIC CAPITAL LETTER AZU
|
||||
while (c <= 0x2c2e) // ..to GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
|
||||
charset[i++] = c++;
|
||||
c = 0x2c30; // from GLAGOLITIC SMALL LETTER AZU
|
||||
while (c <= 0x2c5e) // ..to GLAGOLITIC SMALL LETTER LATINATE MYSLITE
|
||||
while (c <= 0x2c5f) // ..to GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
|
||||
charset[i++] = c++;
|
||||
// 2C60..2C7F; Latin Extended-C
|
||||
c = 0x2c60; // from LATIN CAPITAL LETTER L WITH DOUBLE BAR
|
||||
@@ -994,7 +985,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2E00..2E7F; Supplemental Punctuation
|
||||
c = 0x2e00; // from RIGHT ANGLE SUBSTITUTION MARKER
|
||||
while (c <= 0x2e52) // ..to TIRONIAN SIGN CAPITAL ET
|
||||
while (c <= 0x2e5d) // ..to OBLIQUE HYPHEN
|
||||
charset[i++] = c++;
|
||||
// 2E80..2EFF; CJK Radicals Supplement
|
||||
c = 0x2e80; // from CJK RADICAL REPEAT
|
||||
@@ -1009,7 +1000,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2FF0..2FFF; Ideographic Description Characters
|
||||
c = 0x2ff0; // from IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
|
||||
while (c <= 0x2ffb) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
|
||||
while (c <= 0x2fff) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
|
||||
charset[i++] = c++;
|
||||
// 3000..303F; CJK Symbols and Punctuation
|
||||
c = 0x3000; // from IDEOGRAPHIC SPACE
|
||||
@@ -1044,8 +1035,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 31C0..31EF; CJK Strokes
|
||||
c = 0x31c0; // from CJK STROKE T
|
||||
while (c <= 0x31e3) // ..to CJK STROKE Q
|
||||
while (c <= 0x31e5) // ..to CJK STROKE SZP
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x31ef; // IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
|
||||
// 31F0..31FF; Katakana Phonetic Extensions
|
||||
c = 0x31f0; // from KATAKANA LETTER SMALL KU
|
||||
while (c <= 0x31ff) // ..to KATAKANA LETTER SMALL RO
|
||||
@@ -1071,7 +1063,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 4E00..9FFF; CJK Unified Ideographs
|
||||
c = 0x4e00; // from <CJK Ideograph, First>
|
||||
while (c <= 0x9ffc) // ..to <CJK Ideograph, Last>
|
||||
while (c <= 0x9fff) // ..to <CJK Ideograph, Last>
|
||||
charset[i++] = c++;
|
||||
// A000..A48F; Yi Syllables
|
||||
c = 0xa000; // from YI SYLLABLE IT
|
||||
@@ -1103,12 +1095,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// A720..A7FF; Latin Extended-D
|
||||
c = 0xa720; // from MODIFIER LETTER STRESS AND HIGH TONE
|
||||
while (c <= 0xa7bf) // ..to LATIN SMALL LETTER GLOTTAL U
|
||||
while (c <= 0xa7cd) // ..to LATIN SMALL LETTER S WITH DIAGONAL STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7c2; // from LATIN CAPITAL LETTER ANGLICANA W
|
||||
while (c <= 0xa7ca) // ..to LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
|
||||
charset[i++] = 0xa7d0; // LATIN CAPITAL LETTER CLOSED INSULAR G
|
||||
charset[i++] = 0xa7d1; // LATIN SMALL LETTER CLOSED INSULAR G
|
||||
c = 0xa7d5; // from LATIN SMALL LETTER DOUBLE WYNN
|
||||
while (c <= 0xa7dc) // ..to LATIN CAPITAL LETTER LAMBDA WITH STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7f5; // from LATIN CAPITAL LETTER REVERSED HALF H
|
||||
c = 0xa7f2; // from MODIFIER LETTER CAPITAL C
|
||||
while (c <= 0xa7ff) // ..to LATIN EPIGRAPHIC LETTER ARCHAIC M
|
||||
charset[i++] = c++;
|
||||
// A800..A82F; Syloti Nagri
|
||||
@@ -1263,19 +1257,16 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// FB50..FDFF; Arabic Presentation Forms-A
|
||||
c = 0xfb50; // from ARABIC LETTER ALEF WASLA ISOLATED FORM
|
||||
while (c <= 0xfbc1) // ..to ARABIC SYMBOL SMALL TAH BELOW
|
||||
while (c <= 0xfbc2) // ..to ARABIC SYMBOL WASLA ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0xfbd3; // from ARABIC LETTER NG ISOLATED FORM
|
||||
while (c <= 0xfd3f) // ..to ORNATE RIGHT PARENTHESIS
|
||||
charset[i++] = c++;
|
||||
c = 0xfd50; // from ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
|
||||
while (c <= 0xfd8f) // ..to ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfd92; // from ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
|
||||
while (c <= 0xfdc7) // ..to ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfdf0; // from ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
|
||||
while (c <= 0xfdfd) // ..to ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
|
||||
while (c <= 0xfdff) // ..to ARABIC LIGATURE AZZA WA JALL
|
||||
charset[i++] = c++;
|
||||
// FE00..FE0F; Variation Selectors
|
||||
c = 0xfe00; // from VARIATION SELECTOR-1
|
||||
@@ -1448,6 +1439,33 @@ void init()
|
||||
while (c <= 0x10563) // ..to CAUCASIAN ALBANIAN LETTER KIW
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1056f; // CAUCASIAN ALBANIAN CITATION MARK
|
||||
// 10570..105BF; Vithkuqi
|
||||
c = 0x10570; // from VITHKUQI CAPITAL LETTER A
|
||||
while (c <= 0x1057a) // ..to VITHKUQI CAPITAL LETTER GA
|
||||
charset[i++] = c++;
|
||||
c = 0x1057c; // from VITHKUQI CAPITAL LETTER HA
|
||||
while (c <= 0x1058a) // ..to VITHKUQI CAPITAL LETTER RE
|
||||
charset[i++] = c++;
|
||||
c = 0x1058c; // from VITHKUQI CAPITAL LETTER SE
|
||||
while (c <= 0x10592) // ..to VITHKUQI CAPITAL LETTER XE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x10594; // VITHKUQI CAPITAL LETTER Y
|
||||
charset[i++] = 0x10595; // VITHKUQI CAPITAL LETTER ZE
|
||||
c = 0x10597; // from VITHKUQI SMALL LETTER A
|
||||
while (c <= 0x105a1) // ..to VITHKUQI SMALL LETTER GA
|
||||
charset[i++] = c++;
|
||||
c = 0x105a3; // from VITHKUQI SMALL LETTER HA
|
||||
while (c <= 0x105b1) // ..to VITHKUQI SMALL LETTER RE
|
||||
charset[i++] = c++;
|
||||
c = 0x105b3; // from VITHKUQI SMALL LETTER SE
|
||||
while (c <= 0x105b9) // ..to VITHKUQI SMALL LETTER XE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x105bb; // VITHKUQI SMALL LETTER Y
|
||||
charset[i++] = 0x105bc; // VITHKUQI SMALL LETTER ZE
|
||||
// 105C0..105FF; Todhri
|
||||
c = 0x105c0; // from TODHRI LETTER A
|
||||
while (c <= 0x105f3) // ..to TODHRI LETTER OO
|
||||
charset[i++] = c++;
|
||||
// 10600..1077F; Linear A
|
||||
c = 0x10600; // from LINEAR A SIGN AB001
|
||||
while (c <= 0x10736) // ..to LINEAR A SIGN A664
|
||||
@@ -1458,6 +1476,16 @@ void init()
|
||||
c = 0x10760; // from LINEAR A SIGN A800
|
||||
while (c <= 0x10767) // ..to LINEAR A SIGN A807
|
||||
charset[i++] = c++;
|
||||
// 10780..107BF; Latin Extended-F
|
||||
c = 0x10780; // from MODIFIER LETTER SMALL CAPITAL AA
|
||||
while (c <= 0x10785) // ..to MODIFIER LETTER SMALL B WITH HOOK
|
||||
charset[i++] = c++;
|
||||
c = 0x10787; // from MODIFIER LETTER SMALL DZ DIGRAPH
|
||||
while (c <= 0x107b0) // ..to MODIFIER LETTER SMALL V WITH RIGHT HOOK
|
||||
charset[i++] = c++;
|
||||
c = 0x107b2; // from MODIFIER LETTER SMALL CAPITAL Y
|
||||
while (c <= 0x107ba) // ..to MODIFIER LETTER SMALL S WITH CURL
|
||||
charset[i++] = c++;
|
||||
// 10800..1083F; Cypriot Syllabary
|
||||
c = 0x10800; // from CYPRIOT SYLLABLE A
|
||||
while (c <= 0x10805) // ..to CYPRIOT SYLLABLE JA
|
||||
@@ -1610,6 +1638,15 @@ void init()
|
||||
c = 0x10d30; // from HANIFI ROHINGYA DIGIT ZERO
|
||||
while (c <= 0x10d39) // ..to HANIFI ROHINGYA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 10D40..10D8F; Garay
|
||||
c = 0x10d40; // from GARAY DIGIT ZERO
|
||||
while (c <= 0x10d65) // ..to GARAY CAPITAL LETTER OLD NA
|
||||
charset[i++] = c++;
|
||||
c = 0x10d69; // from GARAY VOWEL SIGN E
|
||||
while (c <= 0x10d85) // ..to GARAY SMALL LETTER OLD NA
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x10d8e; // GARAY PLUS SIGN
|
||||
charset[i++] = 0x10d8f; // GARAY MINUS SIGN
|
||||
// 10E60..10E7F; Rumi Numeral Symbols
|
||||
c = 0x10e60; // from RUMI DIGIT ONE
|
||||
while (c <= 0x10e7e) // ..to RUMI FRACTION TWO THIRDS
|
||||
@@ -1622,6 +1659,12 @@ void init()
|
||||
charset[i++] = 0x10ead; // YEZIDI HYPHENATION MARK
|
||||
charset[i++] = 0x10eb0; // YEZIDI LETTER LAM WITH DOT ABOVE
|
||||
charset[i++] = 0x10eb1; // YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
|
||||
// 10EC0..10EFF; Arabic Extended-C
|
||||
charset[i++] = 0x10ec2; // ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW
|
||||
charset[i++] = 0x10ec4; // ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
|
||||
c = 0x10efc; // from ARABIC COMBINING ALEF OVERLAY
|
||||
while (c <= 0x10eff) // ..to ARABIC SMALL LOW WORD MADDA
|
||||
charset[i++] = c++;
|
||||
// 10F00..10F2F; Old Sogdian
|
||||
c = 0x10f00; // from OLD SOGDIAN LETTER ALEPH
|
||||
while (c <= 0x10f27) // ..to OLD SOGDIAN LIGATURE AYIN-DALETH
|
||||
@@ -1630,6 +1673,10 @@ void init()
|
||||
c = 0x10f30; // from SOGDIAN LETTER ALEPH
|
||||
while (c <= 0x10f59) // ..to SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
|
||||
charset[i++] = c++;
|
||||
// 10F70..10FAF; Old Uyghur
|
||||
c = 0x10f70; // from OLD UYGHUR LETTER ALEPH
|
||||
while (c <= 0x10f89) // ..to OLD UYGHUR PUNCTUATION FOUR DOTS
|
||||
charset[i++] = c++;
|
||||
// 10FB0..10FDF; Chorasmian
|
||||
c = 0x10fb0; // from CHORASMIAN LETTER ALEPH
|
||||
while (c <= 0x10fcb) // ..to CHORASMIAN NUMBER ONE HUNDRED
|
||||
@@ -1643,12 +1690,12 @@ void init()
|
||||
while (c <= 0x1104d) // ..to BRAHMI PUNCTUATION LOTUS
|
||||
charset[i++] = c++;
|
||||
c = 0x11052; // from BRAHMI NUMBER ONE
|
||||
while (c <= 0x1106f) // ..to BRAHMI DIGIT NINE
|
||||
while (c <= 0x11075) // ..to BRAHMI LETTER OLD TAMIL LLA
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1107f; // BRAHMI NUMBER JOINER
|
||||
// 11080..110CF; Kaithi
|
||||
c = 0x11080; // from KAITHI SIGN CANDRABINDU
|
||||
while (c <= 0x110c1) // ..to KAITHI DOUBLE DANDA
|
||||
while (c <= 0x110c2) // ..to KAITHI VOWEL SIGN VOCALIC R
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x110cd; // KAITHI NUMBER SIGN ABOVE
|
||||
// 110D0..110FF; Sora Sompeng
|
||||
@@ -1682,7 +1729,7 @@ void init()
|
||||
while (c <= 0x11211) // ..to KHOJKI LETTER JJA
|
||||
charset[i++] = c++;
|
||||
c = 0x11213; // from KHOJKI LETTER NYA
|
||||
while (c <= 0x1123e) // ..to KHOJKI SIGN SUKUN
|
||||
while (c <= 0x11241) // ..to KHOJKI VOWEL SIGN VOCALIC R
|
||||
charset[i++] = c++;
|
||||
// 11280..112AF; Multani
|
||||
c = 0x11280; // from MULTANI LETTER A
|
||||
@@ -1740,6 +1787,26 @@ void init()
|
||||
c = 0x11370; // from COMBINING GRANTHA LETTER A
|
||||
while (c <= 0x11374) // ..to COMBINING GRANTHA LETTER PA
|
||||
charset[i++] = c++;
|
||||
// 11380..113FF; Tulu-Tigalari
|
||||
c = 0x11380; // from TULU-TIGALARI LETTER A
|
||||
while (c <= 0x11389) // ..to TULU-TIGALARI LETTER VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
c = 0x11390; // from TULU-TIGALARI LETTER OO
|
||||
while (c <= 0x113b5) // ..to TULU-TIGALARI LETTER LLLA
|
||||
charset[i++] = c++;
|
||||
c = 0x113b7; // from TULU-TIGALARI SIGN AVAGRAHA
|
||||
while (c <= 0x113c0) // ..to TULU-TIGALARI VOWEL SIGN VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
c = 0x113c7; // from TULU-TIGALARI VOWEL SIGN OO
|
||||
while (c <= 0x113ca) // ..to TULU-TIGALARI SIGN CANDRA ANUNASIKA
|
||||
charset[i++] = c++;
|
||||
c = 0x113cc; // from TULU-TIGALARI SIGN ANUSVARA
|
||||
while (c <= 0x113d5) // ..to TULU-TIGALARI DOUBLE DANDA
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x113d7; // TULU-TIGALARI SIGN OM PUSHPIKA
|
||||
charset[i++] = 0x113d8; // TULU-TIGALARI SIGN SHRII PUSHPIKA
|
||||
charset[i++] = 0x113e1; // TULU-TIGALARI VEDIC TONE SVARITA
|
||||
charset[i++] = 0x113e2; // TULU-TIGALARI VEDIC TONE ANUDATTA
|
||||
// 11400..1147F; Newa
|
||||
c = 0x11400; // from NEWA LETTER A
|
||||
while (c <= 0x1145b) // ..to NEWA PLACEHOLDER MARK
|
||||
@@ -1774,12 +1841,16 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 11680..116CF; Takri
|
||||
c = 0x11680; // from TAKRI LETTER A
|
||||
while (c <= 0x116b8) // ..to TAKRI LETTER ARCHAIC KHA
|
||||
while (c <= 0x116b9) // ..to TAKRI ABBREVIATION SIGN
|
||||
charset[i++] = c++;
|
||||
c = 0x116c0; // from TAKRI DIGIT ZERO
|
||||
while (c <= 0x116c9) // ..to TAKRI DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 11700..1173F; Ahom
|
||||
// 116D0..116FF; Myanmar Extended-C
|
||||
c = 0x116d0; // from MYANMAR PAO DIGIT ZERO
|
||||
while (c <= 0x116e3) // ..to MYANMAR EASTERN PWO KAREN DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 11700..1174F; Ahom
|
||||
c = 0x11700; // from AHOM LETTER KA
|
||||
while (c <= 0x1171a) // ..to AHOM LETTER ALTERNATE BA
|
||||
charset[i++] = c++;
|
||||
@@ -1787,7 +1858,7 @@ void init()
|
||||
while (c <= 0x1172b) // ..to AHOM SIGN KILLER
|
||||
charset[i++] = c++;
|
||||
c = 0x11730; // from AHOM DIGIT ZERO
|
||||
while (c <= 0x1173f) // ..to AHOM SYMBOL VI
|
||||
while (c <= 0x11746) // ..to AHOM LETTER LLA
|
||||
charset[i++] = c++;
|
||||
// 11800..1184F; Dogra
|
||||
c = 0x11800; // from DOGRA LETTER A
|
||||
@@ -1836,10 +1907,25 @@ void init()
|
||||
c = 0x11a50; // from SOYOMBO LETTER A
|
||||
while (c <= 0x11aa2) // ..to SOYOMBO TERMINAL MARK-2
|
||||
charset[i++] = c++;
|
||||
// 11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
|
||||
c = 0x11ab0; // from CANADIAN SYLLABICS NATTILIK HI
|
||||
while (c <= 0x11abf) // ..to CANADIAN SYLLABICS SPA
|
||||
charset[i++] = c++;
|
||||
// 11AC0..11AFF; Pau Cin Hau
|
||||
c = 0x11ac0; // from PAU CIN HAU LETTER PA
|
||||
while (c <= 0x11af8) // ..to PAU CIN HAU GLOTTAL STOP FINAL
|
||||
charset[i++] = c++;
|
||||
// 11B00..11B5F; Devanagari Extended-A
|
||||
c = 0x11b00; // from DEVANAGARI HEAD MARK
|
||||
while (c <= 0x11b09) // ..to DEVANAGARI SIGN MINDU
|
||||
charset[i++] = c++;
|
||||
// 11BC0..11BFF; Sunuwar
|
||||
c = 0x11bc0; // from SUNUWAR LETTER DEVI
|
||||
while (c <= 0x11be1) // ..to SUNUWAR SIGN PVO
|
||||
charset[i++] = c++;
|
||||
c = 0x11bf0; // from SUNUWAR DIGIT ZERO
|
||||
while (c <= 0x11bf9) // ..to SUNUWAR DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 11C00..11C6F; Bhaiksuki
|
||||
c = 0x11c00; // from BHAIKSUKI LETTER A
|
||||
while (c <= 0x11c08) // ..to BHAIKSUKI LETTER VOCALIC L
|
||||
@@ -1901,6 +1987,16 @@ void init()
|
||||
c = 0x11ee0; // from MAKASAR LETTER KA
|
||||
while (c <= 0x11ef8) // ..to MAKASAR END OF SECTION
|
||||
charset[i++] = c++;
|
||||
// 11F00..11F5F; Kawi
|
||||
c = 0x11f00; // from KAWI SIGN CANDRABINDU
|
||||
while (c <= 0x11f10) // ..to KAWI LETTER O
|
||||
charset[i++] = c++;
|
||||
c = 0x11f12; // from KAWI LETTER KA
|
||||
while (c <= 0x11f3a) // ..to KAWI VOWEL SIGN VOCALIC R
|
||||
charset[i++] = c++;
|
||||
c = 0x11f3e; // from KAWI VOWEL SIGN E
|
||||
while (c <= 0x11f5a) // ..to KAWI SIGN NUKTA
|
||||
charset[i++] = c++;
|
||||
// 11FB0..11FBF; Lisu Supplement
|
||||
charset[i++] = 0x11fb0; // LISU LETTER YHA
|
||||
// 11FC0..11FFF; Tamil Supplement
|
||||
@@ -1923,18 +2019,30 @@ void init()
|
||||
c = 0x12480; // from CUNEIFORM SIGN AB TIMES NUN TENU
|
||||
while (c <= 0x12543) // ..to CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
|
||||
charset[i++] = c++;
|
||||
// 12F90..12FFF; Cypro-Minoan
|
||||
c = 0x12f90; // from CYPRO-MINOAN SIGN CM001
|
||||
while (c <= 0x12ff2) // ..to CYPRO-MINOAN SIGN CM302
|
||||
charset[i++] = c++;
|
||||
// 13000..1342F; Egyptian Hieroglyphs
|
||||
c = 0x13000; // from EGYPTIAN HIEROGLYPH A001
|
||||
while (c <= 0x1342e) // ..to EGYPTIAN HIEROGLYPH AA032
|
||||
while (c <= 0x1342f) // ..to EGYPTIAN HIEROGLYPH V011D
|
||||
charset[i++] = c++;
|
||||
// 13430..1343F; Egyptian Hieroglyph Format Controls
|
||||
// 13430..1345F; Egyptian Hieroglyph Format Controls
|
||||
c = 0x13430; // from EGYPTIAN HIEROGLYPH VERTICAL JOINER
|
||||
while (c <= 0x13438) // ..to EGYPTIAN HIEROGLYPH END SEGMENT
|
||||
while (c <= 0x13455) // ..to EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
|
||||
charset[i++] = c++;
|
||||
// 13460..143FF; Egyptian Hieroglyphs Extended-A
|
||||
c = 0x13460; // from EGYPTIAN HIEROGLYPH-13460
|
||||
while (c <= 0x143fa) // ..to EGYPTIAN HIEROGLYPH-143FA
|
||||
charset[i++] = c++;
|
||||
// 14400..1467F; Anatolian Hieroglyphs
|
||||
c = 0x14400; // from ANATOLIAN HIEROGLYPH A001
|
||||
while (c <= 0x14646) // ..to ANATOLIAN HIEROGLYPH A530
|
||||
charset[i++] = c++;
|
||||
// 16100..1613F; Gurung Khema
|
||||
c = 0x16100; // from GURUNG KHEMA LETTER A
|
||||
while (c <= 0x16139) // ..to GURUNG KHEMA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 16800..16A3F; Bamum Supplement
|
||||
c = 0x16800; // from BAMUM LETTER PHASE-A NGKUE MFON
|
||||
while (c <= 0x16a38) // ..to BAMUM LETTER PHASE-F VUEQ
|
||||
@@ -1948,6 +2056,13 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x16a6e; // MRO DANDA
|
||||
charset[i++] = 0x16a6f; // MRO DOUBLE DANDA
|
||||
// 16A70..16ACF; Tangsa
|
||||
c = 0x16a70; // from TANGSA LETTER OZ
|
||||
while (c <= 0x16abe) // ..to TANGSA LETTER ZA
|
||||
charset[i++] = c++;
|
||||
c = 0x16ac0; // from TANGSA DIGIT ZERO
|
||||
while (c <= 0x16ac9) // ..to TANGSA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 16AD0..16AFF; Bassa Vah
|
||||
c = 0x16ad0; // from BASSA VAH LETTER ENNI
|
||||
while (c <= 0x16aed) // ..to BASSA VAH LETTER I
|
||||
@@ -1971,6 +2086,10 @@ void init()
|
||||
c = 0x16b7d; // from PAHAWH HMONG CLAN SIGN TSHEEJ
|
||||
while (c <= 0x16b8f) // ..to PAHAWH HMONG CLAN SIGN VWJ
|
||||
charset[i++] = c++;
|
||||
// 16D40..16D7F; Kirat Rai
|
||||
c = 0x16d40; // from KIRAT RAI SIGN ANUSVARA
|
||||
while (c <= 0x16d79) // ..to KIRAT RAI DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 16E40..16E9F; Medefaidrin
|
||||
c = 0x16e40; // from MEDEFAIDRIN CAPITAL LETTER M
|
||||
while (c <= 0x16e9a) // ..to MEDEFAIDRIN EXCLAMATION OH
|
||||
@@ -2003,17 +2122,27 @@ void init()
|
||||
c = 0x18b00; // from KHITAN SMALL SCRIPT CHARACTER-18B00
|
||||
while (c <= 0x18cd5) // ..to KHITAN SMALL SCRIPT CHARACTER-18CD5
|
||||
charset[i++] = c++;
|
||||
// 18D00..18D8F; Tangut Supplement
|
||||
charset[i++] = 0x18cff; // KHITAN SMALL SCRIPT CHARACTER-18CFF
|
||||
// 18D00..18D7F; Tangut Supplement
|
||||
c = 0x18d00; // from <Tangut Ideograph Supplement, First>
|
||||
while (c <= 0x18d08) // ..to <Tangut Ideograph Supplement, Last>
|
||||
charset[i++] = c++;
|
||||
// 1AFF0..1AFFF; Kana Extended-B
|
||||
c = 0x1aff0; // from KATAKANA LETTER MINNAN TONE-2
|
||||
while (c <= 0x1aff3) // ..to KATAKANA LETTER MINNAN TONE-5
|
||||
charset[i++] = c++;
|
||||
c = 0x1aff5; // from KATAKANA LETTER MINNAN TONE-7
|
||||
while (c <= 0x1affb) // ..to KATAKANA LETTER MINNAN NASALIZED TONE-5
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1affd; // KATAKANA LETTER MINNAN NASALIZED TONE-7
|
||||
charset[i++] = 0x1affe; // KATAKANA LETTER MINNAN NASALIZED TONE-8
|
||||
// 1B000..1B0FF; Kana Supplement
|
||||
c = 0x1b000; // from KATAKANA LETTER ARCHAIC E
|
||||
while (c <= 0x1b0ff) // ..to HENTAIGANA LETTER RE-2
|
||||
charset[i++] = c++;
|
||||
// 1B100..1B12F; Kana Extended-A
|
||||
c = 0x1b100; // from HENTAIGANA LETTER RE-3
|
||||
while (c <= 0x1b11e) // ..to HENTAIGANA LETTER N-MU-MO-2
|
||||
while (c <= 0x1b122) // ..to KATAKANA LETTER ARCHAIC WU
|
||||
charset[i++] = c++;
|
||||
// 1B130..1B16F; Small Kana Extension
|
||||
charset[i++] = 0x1b150; // HIRAGANA LETTER SMALL WI
|
||||
@@ -2045,6 +2174,23 @@ void init()
|
||||
c = 0x1bca0; // from SHORTHAND FORMAT LETTER OVERLAP
|
||||
while (c <= 0x1bca3) // ..to SHORTHAND FORMAT UP STEP
|
||||
charset[i++] = c++;
|
||||
// 1CC00..1CEBF; Symbols for Legacy Computing Supplement
|
||||
c = 0x1cc00; // from UP-POINTING GO-KART
|
||||
while (c <= 0x1ccf9) // ..to OUTLINED DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
c = 0x1cd00; // from BLOCK OCTANT-3
|
||||
while (c <= 0x1ceb3) // ..to BLACK RIGHT TRIANGLE CARET
|
||||
charset[i++] = c++;
|
||||
// 1CF00..1CFCF; Znamenny Musical Notation
|
||||
c = 0x1cf00; // from ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT
|
||||
while (c <= 0x1cf2d) // ..to ZNAMENNY COMBINING MARK KRYZH ON LEFT
|
||||
charset[i++] = c++;
|
||||
c = 0x1cf30; // from ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO
|
||||
while (c <= 0x1cf46) // ..to ZNAMENNY PRIZNAK MODIFIER ROG
|
||||
charset[i++] = c++;
|
||||
c = 0x1cf50; // from ZNAMENNY NEUME KRYUK
|
||||
while (c <= 0x1cfc3) // ..to ZNAMENNY NEUME PAUK
|
||||
charset[i++] = c++;
|
||||
// 1D000..1D0FF; Byzantine Musical Symbols
|
||||
c = 0x1d000; // from BYZANTINE MUSICAL SYMBOL PSILI
|
||||
while (c <= 0x1d0f5) // ..to BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
|
||||
@@ -2054,12 +2200,16 @@ void init()
|
||||
while (c <= 0x1d126) // ..to MUSICAL SYMBOL DRUM CLEF-2
|
||||
charset[i++] = c++;
|
||||
c = 0x1d129; // from MUSICAL SYMBOL MULTIPLE MEASURE REST
|
||||
while (c <= 0x1d1e8) // ..to MUSICAL SYMBOL KIEVAN FLAT SIGN
|
||||
while (c <= 0x1d1ea) // ..to MUSICAL SYMBOL KORON
|
||||
charset[i++] = c++;
|
||||
// 1D200..1D24F; Ancient Greek Musical Notation
|
||||
c = 0x1d200; // from GREEK VOCAL NOTATION SYMBOL-1
|
||||
while (c <= 0x1d245) // ..to GREEK MUSICAL LEIMMA
|
||||
charset[i++] = c++;
|
||||
// 1D2C0..1D2DF; Kaktovik Numerals
|
||||
c = 0x1d2c0; // from KAKTOVIK NUMERAL ZERO
|
||||
while (c <= 0x1d2d3) // ..to KAKTOVIK NUMERAL NINETEEN
|
||||
charset[i++] = c++;
|
||||
// 1D2E0..1D2FF; Mayan Numerals
|
||||
c = 0x1d2e0; // from MAYAN NUMERAL ZERO
|
||||
while (c <= 0x1d2f3) // ..to MAYAN NUMERAL NINETEEN
|
||||
@@ -2135,6 +2285,13 @@ void init()
|
||||
c = 0x1daa1; // from SIGNWRITING ROTATION MODIFIER-2
|
||||
while (c <= 0x1daaf) // ..to SIGNWRITING ROTATION MODIFIER-16
|
||||
charset[i++] = c++;
|
||||
// 1DF00..1DFFF; Latin Extended-G
|
||||
c = 0x1df00; // from LATIN SMALL LETTER FENG DIGRAPH WITH TRILL
|
||||
while (c <= 0x1df1e) // ..to LATIN SMALL LETTER S WITH CURL
|
||||
charset[i++] = c++;
|
||||
c = 0x1df25; // from LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK
|
||||
while (c <= 0x1df2a) // ..to LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
|
||||
charset[i++] = c++;
|
||||
// 1E000..1E02F; Glagolitic Supplement
|
||||
c = 0x1e000; // from COMBINING GLAGOLITIC LETTER AZU
|
||||
while (c <= 0x1e006) // ..to COMBINING GLAGOLITIC LETTER ZHIVETE
|
||||
@@ -2150,6 +2307,11 @@ void init()
|
||||
c = 0x1e026; // from COMBINING GLAGOLITIC LETTER YO
|
||||
while (c <= 0x1e02a) // ..to COMBINING GLAGOLITIC LETTER FITA
|
||||
charset[i++] = c++;
|
||||
// 1E030..1E08F; Cyrillic Extended-D
|
||||
c = 0x1e030; // from MODIFIER LETTER CYRILLIC SMALL A
|
||||
while (c <= 0x1e06d) // ..to MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e08f; // COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
// 1E100..1E14F; Nyiakeng Puachue Hmong
|
||||
c = 0x1e100; // from NYIAKENG PUACHUE HMONG LETTER MA
|
||||
while (c <= 0x1e12c) // ..to NYIAKENG PUACHUE HMONG LETTER W
|
||||
@@ -2162,11 +2324,36 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e14e; // NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
|
||||
charset[i++] = 0x1e14f; // NYIAKENG PUACHUE HMONG CIRCLED CA
|
||||
// 1E290..1E2BF; Toto
|
||||
c = 0x1e290; // from TOTO LETTER PA
|
||||
while (c <= 0x1e2ae) // ..to TOTO SIGN RISING TONE
|
||||
charset[i++] = c++;
|
||||
// 1E2C0..1E2FF; Wancho
|
||||
c = 0x1e2c0; // from WANCHO LETTER AA
|
||||
while (c <= 0x1e2f9) // ..to WANCHO DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e2ff; // WANCHO NGUN SIGN
|
||||
// 1E4D0..1E4FF; Nag Mundari
|
||||
c = 0x1e4d0; // from NAG MUNDARI LETTER O
|
||||
while (c <= 0x1e4f9) // ..to NAG MUNDARI DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 1E5D0..1E5FF; Ol Onal
|
||||
c = 0x1e5d0; // from OL ONAL LETTER O
|
||||
while (c <= 0x1e5fa) // ..to OL ONAL DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e5ff; // OL ONAL ABBREVIATION SIGN
|
||||
// 1E7E0..1E7FF; Ethiopic Extended-B
|
||||
c = 0x1e7e0; // from ETHIOPIC SYLLABLE HHYA
|
||||
while (c <= 0x1e7e6) // ..to ETHIOPIC SYLLABLE HHYO
|
||||
charset[i++] = c++;
|
||||
c = 0x1e7e8; // from ETHIOPIC SYLLABLE GURAGE HHWA
|
||||
while (c <= 0x1e7eb) // ..to ETHIOPIC SYLLABLE HHWE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e7ed; // ETHIOPIC SYLLABLE GURAGE MWI
|
||||
charset[i++] = 0x1e7ee; // ETHIOPIC SYLLABLE GURAGE MWEE
|
||||
c = 0x1e7f0; // from ETHIOPIC SYLLABLE GURAGE QWI
|
||||
while (c <= 0x1e7fe) // ..to ETHIOPIC SYLLABLE GURAGE PWEE
|
||||
charset[i++] = c++;
|
||||
// 1E800..1E8DF; Mende Kikakui
|
||||
c = 0x1e800; // from MENDE KIKAKUI SYLLABLE M001 KI
|
||||
while (c <= 0x1e8c4) // ..to MENDE KIKAKUI SYLLABLE M060 NYON
|
||||
@@ -2298,7 +2485,7 @@ void init()
|
||||
c = 0x1f680; // from ROCKET
|
||||
while (c <= 0x1f6d7) // ..to ELEVATOR
|
||||
charset[i++] = c++;
|
||||
c = 0x1f6e0; // from HAMMER AND WRENCH
|
||||
c = 0x1f6dc; // from WIRELESS
|
||||
while (c <= 0x1f6ec) // ..to AIRPLANE ARRIVING
|
||||
charset[i++] = c++;
|
||||
c = 0x1f6f0; // from SATELLITE
|
||||
@@ -2306,15 +2493,19 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1F700..1F77F; Alchemical Symbols
|
||||
c = 0x1f700; // from ALCHEMICAL SYMBOL FOR QUINTESSENCE
|
||||
while (c <= 0x1f773) // ..to ALCHEMICAL SYMBOL FOR HALF OUNCE
|
||||
while (c <= 0x1f776) // ..to LUNAR ECLIPSE
|
||||
charset[i++] = c++;
|
||||
c = 0x1f77b; // from HAUMEA
|
||||
while (c <= 0x1f77f) // ..to ORCUS
|
||||
charset[i++] = c++;
|
||||
// 1F780..1F7FF; Geometric Shapes Extended
|
||||
c = 0x1f780; // from BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE
|
||||
while (c <= 0x1f7d8) // ..to NEGATIVE CIRCLED SQUARE
|
||||
while (c <= 0x1f7d9) // ..to NINE POINTED WHITE STAR
|
||||
charset[i++] = c++;
|
||||
c = 0x1f7e0; // from LARGE ORANGE CIRCLE
|
||||
while (c <= 0x1f7eb) // ..to LARGE BROWN SQUARE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1f7f0; // HEAVY EQUALS SIGN
|
||||
// 1F800..1F8FF; Supplemental Arrows-C
|
||||
c = 0x1f800; // from LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
|
||||
while (c <= 0x1f80b) // ..to DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
|
||||
@@ -2331,16 +2522,13 @@ void init()
|
||||
c = 0x1f890; // from LEFTWARDS TRIANGLE ARROWHEAD
|
||||
while (c <= 0x1f8ad) // ..to WHITE ARROW SHAFT WIDTH TWO THIRDS
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1f8b0; // ARROW POINTING UPWARDS THEN NORTH WEST
|
||||
charset[i++] = 0x1f8b1; // ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
|
||||
c = 0x1f8b0; // from ARROW POINTING UPWARDS THEN NORTH WEST
|
||||
while (c <= 0x1f8bb) // ..to SOUTH WEST ARROW FROM BAR
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1f8c0; // LEFTWARDS ARROW FROM DOWNWARDS ARROW
|
||||
charset[i++] = 0x1f8c1; // RIGHTWARDS ARROW FROM DOWNWARDS ARROW
|
||||
// 1F900..1F9FF; Supplemental Symbols and Pictographs
|
||||
c = 0x1f900; // from CIRCLED CROSS FORMEE WITH FOUR DOTS
|
||||
while (c <= 0x1f978) // ..to DISGUISED FACE
|
||||
charset[i++] = c++;
|
||||
c = 0x1f97a; // from FACE WITH PLEADING EYES
|
||||
while (c <= 0x1f9cb) // ..to BUBBLE TEA
|
||||
charset[i++] = c++;
|
||||
c = 0x1f9cd; // from STANDING PERSON
|
||||
while (c <= 0x1f9ff) // ..to NAZAR AMULET
|
||||
charset[i++] = c++;
|
||||
// 1FA00..1FA6F; Chess Symbols
|
||||
@@ -2352,41 +2540,37 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1FA70..1FAFF; Symbols and Pictographs Extended-A
|
||||
c = 0x1fa70; // from BALLET SHOES
|
||||
while (c <= 0x1fa74) // ..to THONG SANDAL
|
||||
while (c <= 0x1fa7c) // ..to CRUTCH
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1fa78; // DROP OF BLOOD
|
||||
charset[i++] = 0x1fa7a; // STETHOSCOPE
|
||||
c = 0x1fa80; // from YO-YO
|
||||
while (c <= 0x1fa86) // ..to NESTING DOLLS
|
||||
while (c <= 0x1fa89) // ..to HARP
|
||||
charset[i++] = c++;
|
||||
c = 0x1fa90; // from RINGED PLANET
|
||||
while (c <= 0x1faa8) // ..to ROCK
|
||||
c = 0x1fa8f; // from SHOVEL
|
||||
while (c <= 0x1fac6) // ..to FINGERPRINT
|
||||
charset[i++] = c++;
|
||||
c = 0x1fab0; // from FLY
|
||||
while (c <= 0x1fab6) // ..to FEATHER
|
||||
c = 0x1face; // from MOOSE
|
||||
while (c <= 0x1fadc) // ..to ROOT VEGETABLE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1fac0; // ANATOMICAL HEART
|
||||
charset[i++] = 0x1fac2; // PEOPLE HUGGING
|
||||
c = 0x1fad0; // from BLUEBERRIES
|
||||
while (c <= 0x1fad6) // ..to TEAPOT
|
||||
c = 0x1fadf; // from SPLATTER
|
||||
while (c <= 0x1fae9) // ..to FACE WITH BAGS UNDER EYES
|
||||
charset[i++] = c++;
|
||||
c = 0x1faf0; // from HAND WITH INDEX FINGER AND THUMB CROSSED
|
||||
while (c <= 0x1faf8) // ..to RIGHTWARDS PUSHING HAND
|
||||
charset[i++] = c++;
|
||||
// 1FB00..1FBFF; Symbols for Legacy Computing
|
||||
c = 0x1fb00; // from BLOCK SEXTANT-1
|
||||
while (c <= 0x1fb92) // ..to UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
|
||||
charset[i++] = c++;
|
||||
c = 0x1fb94; // from LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK
|
||||
while (c <= 0x1fbca) // ..to WHITE UP-POINTING CHEVRON
|
||||
charset[i++] = c++;
|
||||
c = 0x1fbf0; // from SEGMENTED DIGIT ZERO
|
||||
while (c <= 0x1fbf9) // ..to SEGMENTED DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 20000..2A6DF; CJK Unified Ideographs Extension B
|
||||
c = 0x20000; // from <CJK Ideograph Extension B, First>
|
||||
while (c <= 0x2a6dd) // ..to <CJK Ideograph Extension B, Last>
|
||||
while (c <= 0x2a6df) // ..to <CJK Ideograph Extension B, Last>
|
||||
charset[i++] = c++;
|
||||
// 2A700..2B73F; CJK Unified Ideographs Extension C
|
||||
c = 0x2a700; // from <CJK Ideograph Extension C, First>
|
||||
while (c <= 0x2b734) // ..to <CJK Ideograph Extension C, Last>
|
||||
while (c <= 0x2b739) // ..to <CJK Ideograph Extension C, Last>
|
||||
charset[i++] = c++;
|
||||
// 2B740..2B81F; CJK Unified Ideographs Extension D
|
||||
c = 0x2b740; // from <CJK Ideograph Extension D, First>
|
||||
@@ -2400,6 +2584,10 @@ void init()
|
||||
c = 0x2ceb0; // from <CJK Ideograph Extension F, First>
|
||||
while (c <= 0x2ebe0) // ..to <CJK Ideograph Extension F, Last>
|
||||
charset[i++] = c++;
|
||||
// 2EBF0..2EE5F; CJK Unified Ideographs Extension I
|
||||
c = 0x2ebf0; // from <CJK Ideograph Extension I, First>
|
||||
while (c <= 0x2ee5d) // ..to <CJK Ideograph Extension I, Last>
|
||||
charset[i++] = c++;
|
||||
// 2F800..2FA1F; CJK Compatibility Ideographs Supplement
|
||||
c = 0x2f800; // from CJK COMPATIBILITY IDEOGRAPH-2F800
|
||||
while (c <= 0x2fa1d) // ..to CJK COMPATIBILITY IDEOGRAPH-2FA1D
|
||||
@@ -2408,6 +2596,10 @@ void init()
|
||||
c = 0x30000; // from <CJK Ideograph Extension G, First>
|
||||
while (c <= 0x3134a) // ..to <CJK Ideograph Extension G, Last>
|
||||
charset[i++] = c++;
|
||||
// 31350..323AF; CJK Unified Ideographs Extension H
|
||||
c = 0x31350; // from <CJK Ideograph Extension H, First>
|
||||
while (c <= 0x323af) // ..to <CJK Ideograph Extension H, Last>
|
||||
charset[i++] = c++;
|
||||
// E0000..E007F; Tags
|
||||
c = 0xe0020; // from TAG SPACE
|
||||
while (c <= 0xe007f) // ..to CANCEL TAG
|
||||
|
||||
@@ -466,7 +466,7 @@ Test=$dynamic_1014$e463b65f14643afd970c7ea7e7efeb0f$1234567890123456789012345678
|
||||
####################################################################
|
||||
# Dynamic type for md5(md5($p.$u).$s) for PostgreSQL 'pass the hash' weakness
|
||||
# See also dynamic_1034 for PostgreSQL MD5
|
||||
# http://www.openwall.com/lists/oss-security/2015/03/03/12
|
||||
# https://www.openwall.com/lists/oss-security/2015/03/03/12
|
||||
####################################################################
|
||||
[List.Generic:dynamic_1015]
|
||||
Expression=md5(md5($p.$u).$s) (PostgreSQL 'pass the hash')
|
||||
|
||||
+447
-191
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# This file is part of John the Ripper password cracker,
|
||||
# Copyright (c) 1996-2006,2008-2013,2019 by Solar Designer
|
||||
# Copyright (c) 1996-2025 by Solar Designer and others
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted.
|
||||
@@ -11,8 +11,6 @@
|
||||
# license above, many source files in John the Ripper are under GPLv2.
|
||||
# For licensing terms for John the Ripper as a whole, see doc/LICENSE.
|
||||
#
|
||||
# ...with changes in the jumbo patch, by various authors
|
||||
#
|
||||
|
||||
# The [Options] section is for general options only.
|
||||
# Note that MPI specific options have been moved
|
||||
@@ -108,23 +106,35 @@ LogDateStderrFormat =
|
||||
# parsed as ESC for use in ANSI codes (like in the default)
|
||||
TerminalReset = ^[0m
|
||||
|
||||
# If this is true, colorize some messages - such as test failures - if stdout
|
||||
# is a terminal.
|
||||
# The color codes can be redefined here if needed. The ^ character will be
|
||||
# parsed as ESC for use in ANSI escape sequences (like in the defaults here,
|
||||
# which define red for errors, green for notices and yellow for warnings).
|
||||
# Note that you don't strictly need to use ANSI sequences - other things are
|
||||
# fine too.
|
||||
# Set this to N or comment it out to disable all color stuff.
|
||||
UseColors = Y
|
||||
ColorError = ^[0;31m
|
||||
ColorNotice = ^[0;32m
|
||||
ColorWarning = ^[0;33m
|
||||
ColorEnd = ^[0m
|
||||
|
||||
# This can be used to colorize (on screen) or otherwise emphasize (in log
|
||||
# files) output whenever a supposed administrator password gets cracked.
|
||||
# files or if stdout is not a terminal) output whenever a supposed
|
||||
# administrator password, or some other password, gets cracked.
|
||||
#
|
||||
# The colors used will be yellow for regular cracks and red for users that we
|
||||
# know or guess are admin users (including but not limited to uid 0 or 500,
|
||||
# or login 'root' or 'Administrator').
|
||||
#
|
||||
# Set this to N or comment it out to disable all "MarkAdmin" stuff.
|
||||
MarkAdminCracks = Y
|
||||
ColorAdmin = ^[0;31m
|
||||
ColorCrack = ^[0;33m
|
||||
|
||||
# If MarkAdminCracks = Y above, the below will be used (if defined) for
|
||||
# terminal output. The default is to change color to red before the username
|
||||
# and reset to normal after it. Any "^" characters will be parsed as ESC for
|
||||
# use in ANSI codes (like in the defaults).
|
||||
# The "MarkOther" entries will make non-admin stuff brown.
|
||||
MarkAdminStart = ^[0;31m
|
||||
MarkAdminEnd = ^[0m
|
||||
MarkOtherStart = ^[0;33m
|
||||
MarkOtherEnd = ^[0m
|
||||
|
||||
# If MarkAdminCracks = Y above, the below will be used (if defined) for logs.
|
||||
# If MarkAdminCracks = Y above, the below will be used (if defined) for logs
|
||||
# or otherwise where stdout is not a terminal.
|
||||
# This literal string will be printed after the " + Cracked: root" line.
|
||||
MarkAdminString = (ADMIN ACCOUNT)
|
||||
|
||||
@@ -173,7 +183,7 @@ SingleWordsPairMax = 6
|
||||
|
||||
# Setting this to false stops Single mode from re-testing guessed plaintexts
|
||||
# with all other salts. This is deprecated: Use command-line per-session
|
||||
# option --single-retest-guess=no instead.
|
||||
# option --no-single-retest-guess instead.
|
||||
SingleRetestGuessed = Y
|
||||
|
||||
# Max recursion depth for SingleRetestGuessed, so we don't blow the stack
|
||||
@@ -239,8 +249,22 @@ ShowRemainOnStatus = N
|
||||
# Write cracked passwords to the log file (default is just the user name)
|
||||
LogCrackedPasswords = N
|
||||
|
||||
# Log per-rule statistics usable to generate re-ordered rule set with:
|
||||
# cut -c14- john.log | grep '^Score ' | sort -rnk 2 | cut -d: -f2- | sed 's/\\/\\\\/g; s/\[/\\[/g; s/^-: //'
|
||||
# or for use on the slowest hashes:
|
||||
# cut -c14- john.log | grep '^Score ' | sort -nk 4 | cut -d: -f2- | sed 's/\\/\\\\/g; s/\[/\\[/g; s/^-: //'
|
||||
# The "sed" invocation in these commands is to make the pre-processed rules
|
||||
# suitable for our rule preprocessor again. It should be omitted for
|
||||
# re-ordering hashcat mode rule sets, because that mode disables the
|
||||
# preprocessor. And yes, you cannot use these commands for re-ordering mixed
|
||||
# JtR native and hashcat mode rule sets, such as our Jumbo rule set, which
|
||||
# currently includes hashcat's best64. That's not only because of the
|
||||
# preprocessor, but also because hashcat mode on/off would get misplaced.
|
||||
# Please note that enabling this option has some performance impact.
|
||||
PerRuleStats = N
|
||||
|
||||
# Disable the dupe checking when loading hashes. For testing purposes only!
|
||||
# This is deprecated: Use per-session option --loader-dupecheck=no instead.
|
||||
# This is deprecated: Use per-session option --no-loader-dupe-check instead.
|
||||
NoLoaderDupeCheck = N
|
||||
|
||||
# Default encoding for input files (ie. login/GECOS fields) and wordlists
|
||||
@@ -350,6 +374,17 @@ AbortGraceTime = 30
|
||||
# This may produce some false positives if enabled, at least for SAP-B.
|
||||
SAPhalfHashes = N
|
||||
|
||||
# Opportunistic duplicate candidate password suppressor for wordlist+rules
|
||||
[Options:Suppressor]
|
||||
# Memory allocation size in MiB per process, 0 to disable unless forced.
|
||||
# The default is 256 MiB, the maximum is just below 256 GiB (on 64-bit).
|
||||
Size = 256
|
||||
|
||||
# Whether to lock the oldest half of entries as write-once (and only ever
|
||||
# update the other half). Empirically, this often provides best results,
|
||||
# but it can also backfire. The default is yes.
|
||||
LockHalf = Y
|
||||
|
||||
[Options:CPUtune]
|
||||
# If preset is given, use it and skip autotune (NOTE: non-intel archs will
|
||||
# currently ignore this option and always autotune)
|
||||
@@ -395,7 +430,22 @@ AbortTemperature = 95
|
||||
# interpret as intent to keep the GPU temperature around the limit.
|
||||
SleepOnTemperature = 1
|
||||
|
||||
# Enable a workaround for busy-waits, introducing calls to usleep(3). This
|
||||
# currently only applies to some formats on NVIDIA GPUs under Linux.
|
||||
AvoidBusyWait = Y
|
||||
|
||||
[Options:OpenCL]
|
||||
# Mute buggy nvidia warnings about kernel overriding noinline
|
||||
# attribute. Even with this set, they will show at "debug verbosity"
|
||||
# as in --verbose:6.
|
||||
MuteBogusWarnings = Y
|
||||
|
||||
# Add ptxas info (-cl-nv-verbose) to build options for nvidia
|
||||
NvidiaShowPtxas = Y
|
||||
|
||||
# Show runtime build warnings regardless of verbosity.
|
||||
AlwaysShowBuildWarnings = N
|
||||
|
||||
# Set default OpenCL device(s). Command line option will override this.
|
||||
# If not set, we will search for a GPU or fall-back to the most
|
||||
# powerful device. Syntax is same as --device option.
|
||||
@@ -722,7 +772,6 @@ DefaultCharset =
|
||||
-c /?d @?d >3 M [lc] Q Az"123" <+
|
||||
/?d @?d >2 al d
|
||||
-c /?d @?d >2 al M [lc] Q d
|
||||
(?a )?d /?d a0 'p Xpz0
|
||||
)?a (?d /?a a0 'p Xpz0
|
||||
|
||||
# "Single crack" mode rules
|
||||
@@ -730,11 +779,17 @@ DefaultCharset =
|
||||
# Simple rules come first...
|
||||
:
|
||||
-s x**
|
||||
<* $1
|
||||
-c (?a c Q
|
||||
-c l Q
|
||||
(?a )?d /?d a0 'p Xpz0
|
||||
<* $[230754968]
|
||||
-c [lu] Q
|
||||
-s-c x** /?u l
|
||||
# These were not included in crackers I've seen, but are pretty efficient,
|
||||
# so I include them near the beginning
|
||||
Az"123" <+
|
||||
r c
|
||||
-c )?a r l
|
||||
<* $!
|
||||
<* p
|
||||
-<6 >6 '6
|
||||
-<7 >7 '7 l
|
||||
-<6 -c >6 '6 /?u l
|
||||
@@ -746,12 +801,9 @@ DefaultCharset =
|
||||
# Weird order, eh? Can't do anything about it, the order is based on the
|
||||
# number of successful cracks...
|
||||
<* d
|
||||
r c
|
||||
-c <* (?a d c
|
||||
-<5 -c >5 '5 /?u l
|
||||
-c u Q
|
||||
-c )?a r l
|
||||
-[:c] <* !?A \p1[lc] p
|
||||
-c <* [lc] Q p
|
||||
-c <* c Q d
|
||||
-<7 -c >7 '7 /?u
|
||||
-<4 >4 '4 l
|
||||
@@ -779,51 +831,49 @@ r c
|
||||
# >4 x32 /?u l ... >9 x37 /?u l
|
||||
-c >[4-9] x3\p[2-7] /?u l
|
||||
# Now to the suffix stuff...
|
||||
<* l $[1-9!0a-rt-z"-/:-@\[-`{-~]
|
||||
-c <* (?a c $[1-9!0a-rt-z"-/:-@\[-`{-~]
|
||||
-[:c] <* !?A (?\p1[za] \p1[lc] $s M 'l p Q X0z0 'l $s
|
||||
-[:c] <* /?A (?\p1[za] \p1[lc] $s
|
||||
<* l r $[1-9!]
|
||||
-c <* /?a u $[1-9!]
|
||||
-[:c] <- (?\p1[za] \p1[lc] Az"'s"
|
||||
-[:c] <- (?\p1[za] \p1[lc] Az"!!"
|
||||
-[:c] (?\p1[za] \p1[lc] $! <- Az"!!"
|
||||
-c <* [lc] Q $[1230754968!]
|
||||
-\r[:cc] <* \p1[:lc] \r\p1[:QQ] $[a-rt-z"-/:-@\[-`{-~]
|
||||
-[:c] <* (?\p1[za] \p1[lc] $s M 'l p Q X0z0 'l $s
|
||||
<* l r $[1230754968!]
|
||||
-c <* /?a u $[1230754968!]
|
||||
-\r[:cc] <- \p1[:lc] \r\p1[:QQ] Az"'s"
|
||||
-\r[:cc] <- \p1[:lc] \r\p1[:QQ] Az"!!"
|
||||
-\r[:cc] <- \p1[:lc] \r\p1[:QQ] $! <- Az"!!"
|
||||
# Removing vowels...
|
||||
-[:c] /?v @?v >2 (?\p1[za] \p1[lc]
|
||||
-\r[:cc] /?v @?v >2 M \p1[:lc] \r\p1[:QQ]
|
||||
/?v @?v >2 <* d
|
||||
# crack -> cracked, crack -> cracking
|
||||
<* l [PI]
|
||||
-c <* l [PI] (?a c
|
||||
-\r[:cc] <* \p1[:lc] \r\p1[:QQ] [PI]
|
||||
# mary -> marie
|
||||
-[:c] <* (?\p1[za] \p1[lc] )y omi $e
|
||||
-\r[:cc] <* \p1[:lc] \r\p1[:QQ] )y omi $e
|
||||
# marie -> mary
|
||||
-[:c] (?\p1[za] \p1[lc] )e \] <+ )i val1 oay
|
||||
-\r[:cc] <* \p1[:lc] \r\p1[:QQ] )e \] <+ )i val1 oay
|
||||
# The following are some 3l33t rules
|
||||
-[:c] l /[aelos] s\0\p[4310$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /a /[elos] sa4 s\0\p[310$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /e /[los] se3 s\0\p[10$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /l /[os] sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /o /s so0 ss$ (?\p1[za] \p1[:c]
|
||||
-[:c] l /a /e /[los] sa4 se3 s\0\p[10$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /a /l /[os] sa4 sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /a /o /s sa4 so0 ss$ (?\p1[za] \p1[:c]
|
||||
-[:c] l /e /l /[os] se3 sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /[el] /o /s s\0\p[31] so0 ss$ (?\p1[za] \p1[:c]
|
||||
-[:c] l /a /e /l /[os] sa4 se3 sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-[:c] l /a /[el] /o /s sa4 s\0\p[31] so0 ss$ (?\p1[za] \p1[:c]
|
||||
-[:c] l /e /l /o /s se3 sl1 so0 ss$ (?\p1[za] \p1[:c]
|
||||
-[:c] l /a /e /l /o /s sa4 se3 sl1 so0 ss$ (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /[aelos] s\0\p[4310$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /a /[elos] sa4 s\0\p[310$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /e /[los] se3 s\0\p[10$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /l /[os] sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /o /s so0 ss$ (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /a /e /[los] sa4 se3 s\0\p[10$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /a /l /[os] sa4 sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /a /o /s sa4 so0 ss$ (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /e /l /[os] se3 sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /[el] /o /s s\0\p[31] so0 ss$ (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /a /e /l /[os] sa4 se3 sl1 s\0\p[0$] (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /a /[el] /o /s sa4 s\0\p[31] so0 ss$ (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /e /l /o /s se3 sl1 so0 ss$ (?\p1[za] \p1[:c]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] /a /e /l /o /s sa4 se3 sl1 so0 ss$ (?\p1[za] \p1[:c]
|
||||
# Now to the prefix stuff...
|
||||
l ^[1a-z2-90]
|
||||
-c l Q ^[A-Z]
|
||||
^[A-Z]
|
||||
l ^["-/:-@\[-`{-~]
|
||||
-[:c] <9 (?a \p1[lc] A0"[tT]he"
|
||||
-[:c] <9 (?a \p1[lc] A0"[aA]my"
|
||||
-[:c] <9 (?a \p1[lc] A0"[mdMD]r"
|
||||
-[:c] <9 (?a \p1[lc] A0"[mdMD]r."
|
||||
-[:c] <9 (?a \p1[lc] A0"__"
|
||||
<- !?A l p ^[240-9]
|
||||
-[:c] <9 (?\p1[za] \p1[lc] A0"[tT]he"
|
||||
-[:c] <9 (?\p1[za] \p1[lc] A0"[aA]my"
|
||||
-[:c] <9 (?\p1[za] \p1[lc] A0"[mdMD]r"
|
||||
-[:c] <9 (?\p1[za] \p1[lc] A0"[mdMD]r."
|
||||
-[:c] <9 (?\p1[za] \p1[lc] A0"__"
|
||||
<- l p ^[240-9]
|
||||
# Some word pair rules...
|
||||
# johnsmith -> JohnSmith, johnSmith
|
||||
-p-c (?a 2 (?a c 1 [cl]
|
||||
@@ -841,8 +891,8 @@ l ^["-/:-@\[-`{-~]
|
||||
-p-[c:] 1 l 2 \p1[ur]
|
||||
-p-c 1 (?a c 2 [ur]
|
||||
# jsmith -> smithj, etc...
|
||||
-[:c] (?a \p1[lc] [{}]
|
||||
-[:c] (?a \p1[lc] [{}] \0
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] [{}]
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] [{}] \0
|
||||
# Toggle case...
|
||||
-c <+ )?u l Tm
|
||||
-c T0 Q M c Q l Q u Q C Q X0z0 'l
|
||||
@@ -858,14 +908,11 @@ l ^["-/:-@\[-`{-~]
|
||||
=1?a \[ M c Q
|
||||
-c (?a >[1-9A-E] D\1 c
|
||||
# Inserting a dot...
|
||||
-[:c] >3 (?a \p1[lc] i[12].
|
||||
-\r[:cc] >3 \p1[:lc] \r\p1[:QQ] i[12].
|
||||
# More suffix stuff...
|
||||
<- l Az"[190][0-9]"
|
||||
-c <- (?a c Az"[190][0-9]"
|
||||
<- l Az"[782][0-9]"
|
||||
-c <- (?a c Az"[782][0-9]"
|
||||
<* l $[A-Z]
|
||||
-c <* (?a c $[A-Z]
|
||||
-\r[:cc] <- \p1[:lc] \r\p1[:QQ] Az"[190][0-9]"
|
||||
-\r[:cc] <- \p1[:lc] \r\p1[:QQ] Az"[782][0-9]"
|
||||
-\r[:cc] <* \p1[:lc] \r\p1[:QQ] $[A-Z]
|
||||
# cracking -> CRACKiNG
|
||||
-c u /I sIi
|
||||
# Crack96 -> cRACK96
|
||||
@@ -880,33 +927,32 @@ l Q [RL]
|
||||
-c (?a c Q [RL]
|
||||
:[RL] \0 Q
|
||||
# Both prefixing and suffixing...
|
||||
<- l ^[1!@#$%^&*\-=_+.?|:'"] $\1
|
||||
<- l ^[10-9!@#$%^&*\-=_+.?|:'"] $\0
|
||||
<- l ^[({[<] $\p[)}\]>]
|
||||
# The rest of two-digit suffix stuff, less common numbers...
|
||||
<- l Az"[63-5][0-9]"
|
||||
-c <- (?a c Az"[63-5][0-9]"
|
||||
-\r[:cc] <- \p1[:lc] \r\p1[:QQ] Az"[63-5][0-9]"
|
||||
# Some multi-digit numbers...
|
||||
-[:c] (?a \p1[lc] Az"007" <+
|
||||
-[:c] (?a \p1[lc] Az"123" <+
|
||||
-[:c] (?a \p1[lc] Az"[0-9]\0\0" <+
|
||||
-[:c] (?a \p1[lc] Az"1234" <+
|
||||
-[:c] (?a \p1[lc] Az"[0-9]\0\0\0" <+
|
||||
-[:c] (?a \p1[lc] Az"12345" <+
|
||||
-[:c] (?a \p1[lc] Az"[0-9]\0\0\0\0" <+
|
||||
-[:c] (?a \p1[lc] Az"123456" <+
|
||||
-[:c] (?a \p1[lc] Az"[0-9]\0\0\0\0\0" <+
|
||||
-c [lc] Q Az"123" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"007" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"[0-9]\0\0" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"1234" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"[0-9]\0\0\0" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"12345" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"[0-9]\0\0\0\0" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"123456" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"[0-9]\0\0\0\0\0" <+
|
||||
# Some [birth] years...
|
||||
l Az"19[7-96-0]" <+ >-
|
||||
l Az"20[012]" <+ >-
|
||||
l Az"19[7-9][0-9]" <+
|
||||
l Az"20[012][0-9]" <+
|
||||
l Az"19[6-0][9-0]" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"19[7-96-0]" <+ >-
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"20[012]" <+ >-
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"19[7-9][0-9]" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"20[012][0-9]" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"19[6-0][9-0]" <+
|
||||
|
||||
[List.Rules:Extra]
|
||||
# Insert/overstrike some characters...
|
||||
!?A >[1-6] l i\0[a-z]
|
||||
!?A l o0[a-z]
|
||||
!?A >[1-7] l o\0[a-z]
|
||||
# Overstrike/insert some characters...
|
||||
o0[a-z10-9A-Z] Q
|
||||
>[1-7] o\0[a-z10-9_@.\-#!] Q
|
||||
>[1-6] i\0[a-z10-9_@.\-# ]
|
||||
# Toggle case everywhere (up to length 8), assuming that certain case
|
||||
# combinations were already tried.
|
||||
-c T1 Q M T0 Q
|
||||
@@ -917,13 +963,20 @@ l Az"19[6-0][9-0]" <+
|
||||
-c T6 Q M T[z0] T[z1] T[z2] T[z3] T[z4] T[z5] Q
|
||||
-c T7 Q M T[z0] T[z1] T[z2] T[z3] T[z4] T[z5] T[z6] Q
|
||||
# Very slow stuff...
|
||||
l Az"[1-90][0-9][0-9]" <+
|
||||
-c (?a c Az"[1-90][0-9][0-9]" <+
|
||||
-\r[:cc] \p1[:lc] \r\p1[:QQ] Az"[1-90][0-9][0-9]" <+
|
||||
<[\-9] l A\p[z0]"[a-z][a-z]"
|
||||
<- l ^[A-Z] $\0
|
||||
<- l ^[a-z] $[a-z]
|
||||
|
||||
# Wordlist mode rules
|
||||
.include <rules-by-score.conf>
|
||||
.include <rules-by-rate.conf>
|
||||
|
||||
# New default wordlist mode rules
|
||||
[List.Rules:Wordlist]
|
||||
.include [List.Rules:Best-by-score]
|
||||
|
||||
# Former default wordlist mode rules, now usable to enforce a policy
|
||||
[List.Rules:Policy]
|
||||
# Try words as they are
|
||||
:
|
||||
# Lowercase every pure alphanumeric word
|
||||
@@ -1094,39 +1147,78 @@ s[ ][,&+*!'$/?:=#~] Q
|
||||
:
|
||||
->F -<F >F 'F
|
||||
|
||||
# Rules from Hash Runner 2014
|
||||
# Overstrike/insert rules originally from Hash Runner 2014
|
||||
|
||||
# Overstrike any one character
|
||||
[List.Rules:o1]
|
||||
# o[0-9A-Z][ -~]
|
||||
# Trivial
|
||||
#o[0-9A-Z][ -~]
|
||||
# Optimized
|
||||
->\r[1-9A-ZZ] >\p[0-9A-Z] o\0[ -~] Q
|
||||
|
||||
# Overstrike any two characters
|
||||
[List.Rules:o2]
|
||||
# o[0-9A-E][ -~] Q M o[0-9A-E][ -~] Q
|
||||
->[1-9A-F] ->[1-9A-F] >\p1[0-9A-E] >\p2[0-9A-E] o\3[ -~] Q M o\4[ -~] Q
|
||||
|
||||
[List.Rules:o3]
|
||||
# o[0-9][ -~] Q M o[0-9][ -~] Q M o[0-9][ -~] Q
|
||||
->[1-9A] ->[1-9A] ->[1-9A] >\p1[0-9] >\p2[0-9] >\p3[0-9] o\4[ -~] Q M o\5[ -~] Q M o\6[ -~] Q
|
||||
# Simple
|
||||
#o[0-9A-E][ -~] Q M o[0-9A-E][ -~] Q
|
||||
# Optimized, assumes we also run o1 separately if needed
|
||||
#->[1-9A-F] ->[2-9A-F] >\p1[0-9A-E] >\p2[1-9A-E] o\3[ -~] Q M o\4[ -~] Q
|
||||
# Optimized further, same assumption
|
||||
->[2-9A-F] >\p[1-9A-E] o0[ -~] Q M o\2[ -~] Q
|
||||
->[3-9A-F] >\p[2-9A-E] o1[ -~] Q M o\2[ -~] Q
|
||||
->[4-9A-F] >\p[3-9A-E] o2[ -~] Q M o\2[ -~] Q
|
||||
->[5-9A-F] >\p[4-9A-E] o3[ -~] Q M o\2[ -~] Q
|
||||
->[6-9A-F] >\p[5-9A-E] o4[ -~] Q M o\2[ -~] Q
|
||||
->[7-9A-F] >\p[6-9A-E] o5[ -~] Q M o\2[ -~] Q
|
||||
->[8-9A-F] >\p[7-9A-E] o6[ -~] Q M o\2[ -~] Q
|
||||
->[9A-F] >\p[8-9A-E] o7[ -~] Q M o\2[ -~] Q
|
||||
->[A-F] >\p[9A-E] o8[ -~] Q M o\2[ -~] Q
|
||||
->[B-F] >\p[A-E] o9[ -~] Q M o\2[ -~] Q
|
||||
->[C-F] >\p[B-E] oA[ -~] Q M o\2[ -~] Q
|
||||
->[D-F] >\p[C-E] oB[ -~] Q M o\2[ -~] Q
|
||||
->[E-F] >\p[D-E] oC[ -~] Q M o\2[ -~] Q
|
||||
->F >E oD[ -~] Q M oE[ -~] Q
|
||||
|
||||
# Overstrike any one or two characters
|
||||
[List.Rules:o]
|
||||
.include [List.Rules:o1]
|
||||
.include [List.Rules:o2]
|
||||
|
||||
# Insert any one character
|
||||
[List.Rules:i1]
|
||||
# i[0-9A-Z][ -~]
|
||||
# Trivial
|
||||
#i[0-9A-Z][ -~]
|
||||
# Optimized
|
||||
->\r[2-9A-ZZZ] >\p1[0-9A-Z] i\0[ -~]
|
||||
|
||||
# Insert any two characters
|
||||
[List.Rules:i2]
|
||||
# i[0-9A-E][ -~] i[0-9A-E][ -~]
|
||||
->[2-9A-G] ->[2-9A-G] >\p1[0-9A-E] >\p2[0-9A-E] i\3[ -~] i\4[ -~]
|
||||
|
||||
[List.Rules:i3]
|
||||
# i[0-9][ -~] i[0-9][ -~] i[0-9][ -~]
|
||||
->[4-9A-D] ->[4-9A-D] ->[4-9A-D] >\p1[0-9] >\p2[0-9] >\p3[0-9] i\4[ -~] i\5[ -~] i\6[ -~]
|
||||
# Trivial
|
||||
#i[0-9A-E][ -~] i[0-9A-E][ -~]
|
||||
# Optimized
|
||||
#->[2-9A-G] ->[2-9A-G] i\p1[0-9A-E][ -~] >\3 >\p2[0-9A-E] i\p2[1-9A-F][ -~]
|
||||
# Optimized further
|
||||
->[2-9A-G] i0[ -~] >\p1[0-9A-E] i\p1[1-9A-F][ -~]
|
||||
->[3-9A-G] i1[ -~] >\p1[1-9A-E] i\p1[2-9A-F][ -~]
|
||||
->[4-9A-G] i2[ -~] >\p1[2-9A-E] i\p1[3-9A-F][ -~]
|
||||
->[5-9A-G] i3[ -~] >\p1[3-9A-E] i\p1[4-9A-F][ -~]
|
||||
->[6-9A-G] i4[ -~] >\p1[4-9A-E] i\p1[5-9A-F][ -~]
|
||||
->[7-9A-G] i5[ -~] >\p1[5-9A-E] i\p1[6-9A-F][ -~]
|
||||
->[8-9A-G] i6[ -~] >\p1[6-9A-E] i\p1[7-9A-F][ -~]
|
||||
->[9A-G] i7[ -~] >\p1[7-9A-E] i\p1[8-9A-F][ -~]
|
||||
->[A-G] i8[ -~] >\p1[8-9A-E] i\p1[9A-F][ -~]
|
||||
->[B-G] i9[ -~] >\p1[9A-E] i\p1[A-F][ -~]
|
||||
->[C-G] iA[ -~] >\p1[A-E] i\p1[B-F][ -~]
|
||||
->[D-G] iB[ -~] >\p1[B-E] i\p1[C-F][ -~]
|
||||
->[E-G] iC[ -~] >\p1[C-E] i\p1[D-F][ -~]
|
||||
->[F-G] iD[ -~] >\p1[D-E] i\p1[E-F][ -~]
|
||||
->G iE[ -~] >E iF[ -~]
|
||||
|
||||
# Insert any one or two characters
|
||||
[List.Rules:i]
|
||||
.include [List.Rules:i1]
|
||||
.include [List.Rules:i2]
|
||||
|
||||
# Overstrike or insert any one or two characters
|
||||
[List.Rules:oi]
|
||||
.include [List.Rules:o1]
|
||||
.include [List.Rules:i1]
|
||||
@@ -1197,6 +1289,24 @@ a0 /?D l sa2 sb2 sc2 sd3 se3 sf3 sg4 sh4 si4 sj5 sk5 sl5 sm6 sn6 so6 sp7 sq7 sr7
|
||||
[List.Rules:passphrase-rule2]
|
||||
.include <rules/passphrase-rule2.rule>
|
||||
|
||||
# These rules are an optimized (large) subset of the hashcat rules
|
||||
# https://notsosecure.com/one-rule-to-rule-them-all
|
||||
# https://github.com/NotSoSecure/password_cracking_rules
|
||||
[List.Rules:OneRuleToRuleThemAll]
|
||||
!! hashcat logic ON
|
||||
.include <rules/OneRuleToRuleThemAll.rule>
|
||||
!! hashcat logic OFF
|
||||
|
||||
# These rules are an optimized version of OneRuleToRuleThemAll with removal of
|
||||
# rules that were effectively duplicate as well as some that were ineffective.
|
||||
# This cracks almost all of the same passwords in ~5% fewer rules.
|
||||
# https://in.security/2023/01/10/oneruletorulethemstill-new-and-improved/
|
||||
# https://github.com/stealthsploit/OneRuleToRuleThemStill
|
||||
[List.Rules:OneRuleToRuleThemStill]
|
||||
!! hashcat logic ON
|
||||
.include <rules/OneRuleToRuleThemStill.rule>
|
||||
!! hashcat logic OFF
|
||||
|
||||
# Default Loopback mode rules.
|
||||
[List.Rules:Loopback]
|
||||
.include [List.Rules:ShiftToggle]
|
||||
@@ -1219,8 +1329,7 @@ b1 ]
|
||||
# For Wordlist mode and very fast hashes
|
||||
[List.Rules:Jumbo]
|
||||
.include [List.Rules:Single-Extra]
|
||||
.include [List.Rules:Wordlist]
|
||||
.include [List.Rules:ShiftToggle]
|
||||
.include [List.Rules:Policy]
|
||||
.include [List.Rules:Multiword]
|
||||
.include [List.Rules:best64]
|
||||
.include [List.Rules:UnicodeSubstitution]
|
||||
@@ -1233,9 +1342,12 @@ b1 ]
|
||||
# ridiculous quality and lack optimizations - you have been warned.
|
||||
[List.Rules:All]
|
||||
.include [List.Rules:Jumbo]
|
||||
.include [List.Rules:KoreLogic]
|
||||
.include [List.Rules:OneRuleToRuleThemStill]
|
||||
.include [List.Rules:T9]
|
||||
.include [List.Rules:hashcat]
|
||||
.include [List.Rules:ShiftToggle]
|
||||
.include [List.Rules:oi]
|
||||
.include [List.Rules:KoreLogic]
|
||||
|
||||
# Incremental modes
|
||||
|
||||
@@ -1717,9 +1829,9 @@ void restore()
|
||||
|
||||
/* Global variables: current length and word */
|
||||
/* make this 'long' enough for other externs that include this one */
|
||||
/* (up to 125 bytes long) */
|
||||
/* (up to 320 bytes long) */
|
||||
|
||||
int length, current[126], max;
|
||||
int length, current[320], max;
|
||||
|
||||
/* this new 'type' variable, is used to tell double what character set to
|
||||
* use. It can use the original (alpha). If type is 0 (i.e. unset), then
|
||||
@@ -1872,7 +1984,7 @@ void init()
|
||||
# sections which include this External_base section.
|
||||
# The generate() function will limit the maximum length of generated
|
||||
# candidates to either the format's limit (maximum password length)
|
||||
# or to the limit specified with --stdout=LENGTH (Default: 125),
|
||||
# or to the limit specified with --stdout=LENGTH (Default: 319),
|
||||
# thus avoiding duplicate candidates for formats with limited maximum
|
||||
# passwortd length.
|
||||
# The comparison of the current length and the limit is only done
|
||||
@@ -1898,7 +2010,7 @@ void generate()
|
||||
c = minc;
|
||||
|
||||
if (++length > maxlength)
|
||||
c = 0; // Will NUL out the next "word" and thus terminate
|
||||
length = 0; // Will NUL out the next "word" and thus terminate
|
||||
}
|
||||
|
||||
# Try strings of repeated characters (range: space - 0xff).
|
||||
@@ -1982,7 +2094,7 @@ void init()
|
||||
#
|
||||
# The generate() function will limit the maximum length of generated
|
||||
# candidates to either the format's limit (maximum password length)
|
||||
# or to the limit specified with --stdout=LENGTH (Default: 125),
|
||||
# or to the limit specified with --stdout=LENGTH (Default: 319),
|
||||
# thus avoiding duplicate candidates for formats with limited maximum
|
||||
# passwortd length.
|
||||
# The comparison of the current length and the limit is only done
|
||||
@@ -2487,6 +2599,12 @@ void init()
|
||||
}
|
||||
}
|
||||
|
||||
// Must fit in id[] array
|
||||
if (minlength > 15)
|
||||
minlength = 15;
|
||||
if (maxlength > 15)
|
||||
maxlength = 15;
|
||||
|
||||
length = 0;
|
||||
while (length < minlength)
|
||||
id[length++] = 0;
|
||||
@@ -3791,94 +3909,232 @@ void filter()
|
||||
status = 1; // Print the status line
|
||||
}
|
||||
|
||||
#
|
||||
# Reference example hybrid-mode external. same as jtr-rule: $[0-9]$[0-9]
|
||||
# this format is to be used similar to a filter, in that it requires some
|
||||
# other word generator (markov, wordlist, etc). However, this type external
|
||||
# will get new() called with each word, and then have next() called, until
|
||||
# the word[0]=0 is seen (meaning all candidates for the base word have been
|
||||
# generated. Prior to new() or restore(), word[] is the 'base' word.
|
||||
# if the script is able to properly resume, then it should set the global
|
||||
# variable hybrid_total to the count of candidates that will be generated
|
||||
# for this word (in new() / restore(), then in the body of restore() there
|
||||
# is a global variable set 'hybrid_resume' that was the prior number of
|
||||
# canidates generated for this base-word. Resume should start at the NEXT
|
||||
# If the script is not able to easily resume, then simply do NOT set the
|
||||
# global hybrid_total to anything either function. JtR will 'still' resume
|
||||
# propery, but it will do so by calling new()/next()/next().../next() until
|
||||
# back to the proper resume location.
|
||||
#
|
||||
# script changed to append a _ character before the number, each time within
|
||||
# the next() function. Done this way to better validate that -restore within
|
||||
# jtr is working properly.
|
||||
#
|
||||
[List.External:Hybrid_example]
|
||||
/* static vars for the script */
|
||||
int cnt, length, total;
|
||||
# Several hybrid external modes follow. These are to be used on top of another
|
||||
# cracking mode and they generate multiple candidate passwords from each "word"
|
||||
# output by the other mode.
|
||||
|
||||
# Combine words coming from another cracking mode into pairs. This gradually
|
||||
# memorizes up to the initial 1 MB worth of words and uses them to prefix and
|
||||
# suffix each current word.
|
||||
# Known limitations:
|
||||
# 1. --restore of interrupted session does not work right (no opportunity to
|
||||
# re-memorize the other mode's skipped words), so do not use it.
|
||||
# 2. The progress indicator and ETA are too optimistic (they assume linear
|
||||
# progress through the input stream, but complexity within 1 MB is quadratic).
|
||||
# Example usage: --wordlist --external=combinator --rules-stack=phrase
|
||||
[List.External:Combinator]
|
||||
int separator;
|
||||
int words[1000000], size;
|
||||
int base[160], base_size, base_length, swap, p, q;
|
||||
|
||||
void init()
|
||||
{
|
||||
/* in this simple example, we always generate 100 candidates per word */
|
||||
total = 100;/* this is a VERY simple example */
|
||||
separator = ' '; // Set to 0 for no separators
|
||||
|
||||
size = 1000000; // Must not exceed size of words array
|
||||
base_size = 160; // Must not exceed size of base array, nor (319-1)/2+1
|
||||
|
||||
if (req_maxlen && base_size > req_maxlen + 1)
|
||||
base_size = req_maxlen + 1;
|
||||
q = 0;
|
||||
}
|
||||
|
||||
/* new word */
|
||||
void new()
|
||||
{
|
||||
/* get the word length) */
|
||||
length = 0; while (word[length++]) ; --length;
|
||||
swap = p = 0;
|
||||
|
||||
/*
|
||||
* If this was a more complex script, we would compute total candidates
|
||||
* at this location, if we can. If we can not compute total candidates
|
||||
* then it is likely we can not resume 'easily', so if that is the
|
||||
* case, we would simply set hybrid_total to -1, or do nothing, since
|
||||
* do_external_hybrid_crack() sets it to -1 before calling this function.
|
||||
*/
|
||||
hybrid_total = total;
|
||||
/* Memorize this base word if it fits and is of right length */
|
||||
base_length = -1;
|
||||
while (q < size && (words[q++] = word[++base_length]))
|
||||
continue;
|
||||
if (q < size && base_length < base_size && base_length)
|
||||
return;
|
||||
|
||||
/* Reset or counter for THIS word. */
|
||||
cnt = 0;
|
||||
|
||||
/*
|
||||
* word will be too long to be used, or too short to be used. If so
|
||||
* then set hybrid_total to 0 and this entire word will be skipped.
|
||||
*/
|
||||
if (req_minlen > length - 2 || (req_maxlen && req_maxlen < length + 2))
|
||||
hybrid_total = 0;
|
||||
/* Don't memorize this base word, but finish computing its length */
|
||||
q -= base_length + 1;
|
||||
if (word[base_length])
|
||||
while (word[++base_length])
|
||||
continue;
|
||||
else if (!base_length)
|
||||
base_length = base_size; // Skip empty words
|
||||
}
|
||||
|
||||
void next()
|
||||
{
|
||||
/* in this simple script, if cnt is 100, this word is DONE */
|
||||
if (cnt == 100) {
|
||||
word[0] = 0;
|
||||
int i, j;
|
||||
|
||||
if (base_length >= base_size) {
|
||||
word = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/* set word[] to the next candidate */
|
||||
word[length++] = '_';
|
||||
word[length ] = '0' + cnt / 10;
|
||||
word[length+1] = '0' + cnt % 10;
|
||||
word[length+2] = 0;
|
||||
++cnt;
|
||||
if (swap) {
|
||||
/* Next memorized word first, separator and current base word next */
|
||||
i = -1;
|
||||
while (word[++i] = words[p++])
|
||||
continue;
|
||||
if (p >= q) {
|
||||
word = 0;
|
||||
return;
|
||||
}
|
||||
if (separator)
|
||||
word[i++] = separator;
|
||||
j = 0;
|
||||
while (word[i++] = base[j++])
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Current base word first, separator and next memorized word next */
|
||||
i = base_length;
|
||||
if (separator)
|
||||
word[i++] = separator;
|
||||
while (word[i++] = words[p++])
|
||||
continue;
|
||||
if (p >= q) {
|
||||
p = 0;
|
||||
swap++;
|
||||
i = -1;
|
||||
while (++i < base_length)
|
||||
base[i] = word[i];
|
||||
base[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Called when restoring an interrupted session */
|
||||
void restore()
|
||||
# Shuffle (try all permutations of) characters in each short input word
|
||||
[List.External:Shuffle]
|
||||
int max_length, ctz_bits, ctz_mask, ctz[0x80000]; // Max 0xa00000 for length 20
|
||||
int length, base[0x20], id[0x20], unseen[0x20], is_dup[0x100], c2mask[0x100];
|
||||
|
||||
void init()
|
||||
{
|
||||
int i;
|
||||
max_length = 10; // ctz array size of 0x80000 is good up to length 16
|
||||
|
||||
length = 0; while (word[length++]) ; --length;
|
||||
|
||||
/* for this simple script, simply setting cnt resumes */
|
||||
cnt = hybrid_resume + 1; if (cnt > 100) cnt=100;
|
||||
/* Prepare a count trailing zero table */
|
||||
int i, j, mask;
|
||||
ctz_mask = (1 << (ctz_bits = max_length - 1)) - 1;
|
||||
i = 0;
|
||||
while (i++ < cnt) word[length++] = '_';
|
||||
word[length] = 0;
|
||||
while (i++ < ctz_bits) {
|
||||
j = 0;
|
||||
while (j <= ctz_mask)
|
||||
j += 1 << (ctz[j] = i);
|
||||
}
|
||||
/* followed by its revisions for skipping some bits */
|
||||
while ((i = j >> ctz_bits) < max_length) {
|
||||
mask = j & ctz_mask;
|
||||
while (i--)
|
||||
mask &= mask - 1;
|
||||
ctz[j++] = ctz[mask];
|
||||
}
|
||||
}
|
||||
|
||||
/* tell john that we have properly 'resumed', by setting a 'proper' total */
|
||||
hybrid_total = total;
|
||||
void new()
|
||||
{
|
||||
int c, i;
|
||||
|
||||
length = i = -1;
|
||||
while (c = word[++length]) {
|
||||
if (length > max_length)
|
||||
return;
|
||||
c2mask[base[length] = c] = id[length] = 0;
|
||||
}
|
||||
while (c = word[++i]) {
|
||||
is_dup[c] = c2mask[c];
|
||||
c2mask[c] |= 1 << i;
|
||||
}
|
||||
|
||||
unseen = 0;
|
||||
}
|
||||
|
||||
void next()
|
||||
{
|
||||
int prev_unseen, i, j;
|
||||
|
||||
if ((i = length - 1) < max_length)
|
||||
while (i--) {
|
||||
if (++id[i] >= length - i) {
|
||||
id[i] = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (unseen)
|
||||
prev_unseen = unseen[i];
|
||||
else
|
||||
unseen[i = 0] = prev_unseen = ctz_mask;
|
||||
while (i < length) {
|
||||
/* Skip id[i] previously unseen char indices */
|
||||
/* Take that char and see if it's unique */
|
||||
if (is_dup[word[i] = base[j = ctz[prev_unseen | (id[i] << ctz_bits)]]])
|
||||
if (c2mask[word[i]] & prev_unseen & ((1 << j) - 1))
|
||||
break; /* Dupe in wrong order */
|
||||
unseen[++i] = prev_unseen &= ~(1 << j);
|
||||
}
|
||||
|
||||
if (i >= length) /* Not a dupe */
|
||||
return;
|
||||
|
||||
/* Next loop ++id[i] will skip the dupe char in i's position */
|
||||
i++;
|
||||
}
|
||||
|
||||
word = 0;
|
||||
}
|
||||
|
||||
# Simplified or reference version of the above, same output much slower
|
||||
[List.External:Shuffle-simple]
|
||||
int max_length, length, base[320], id[320], jd[320];
|
||||
|
||||
void init()
|
||||
{
|
||||
max_length = 10; // Our usage of bitmasks is good up to length 32
|
||||
}
|
||||
|
||||
void new()
|
||||
{
|
||||
length = 0;
|
||||
while (base[length] = word[length])
|
||||
id[length++] = 0;
|
||||
}
|
||||
|
||||
void next()
|
||||
{
|
||||
int unseen, i, j, k;
|
||||
|
||||
if ((i = length) <= max_length)
|
||||
while (i--) {
|
||||
if (++id[i] >= length - i) {
|
||||
id[i] = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
i = unseen = -1;
|
||||
while (++i < length) {
|
||||
/* Skip id[i] previously unseen char indices, count */
|
||||
j = -1;
|
||||
k = id[i];
|
||||
while (k >= 0)
|
||||
if (unseen & (1 << ++j))
|
||||
k--;
|
||||
/* Take that char */
|
||||
word[k = i] = base[jd[i] = j];
|
||||
/* Same chars must only appear in one order */
|
||||
while (k--)
|
||||
if (word[k] == word[i])
|
||||
break;
|
||||
if (k >= 0)
|
||||
if (jd[k] >= j) /* Wrong order */
|
||||
break;
|
||||
unseen &= ~(1 << j);
|
||||
}
|
||||
|
||||
if (i >= length) /* Not a dupe */
|
||||
return;
|
||||
|
||||
/* Next loop ++id[i] will skip the dupe char in i's position */
|
||||
i++;
|
||||
}
|
||||
|
||||
word = 0;
|
||||
}
|
||||
|
||||
# External hybrid 'leet code
|
||||
@@ -3896,11 +4152,11 @@ void restore()
|
||||
* t -> t7
|
||||
*/
|
||||
|
||||
int rotor[626]; /* max length input is 125 bytes [125*5+1]; */
|
||||
int rotors[125];
|
||||
int rotor_ptr[125];
|
||||
int rotor_idx[125];
|
||||
int rotor_cnt[125];
|
||||
int rotor[1596]; /* max length input is 319 bytes [319*5+1] */
|
||||
int rotors[319];
|
||||
int rotor_ptr[319];
|
||||
int rotor_idx[319];
|
||||
int rotor_cnt[319];
|
||||
int current_word_count;
|
||||
int max_mangle; /* controls how many bytes we run through our 'leet' code */
|
||||
int max_mangle_letters;
|
||||
@@ -4011,11 +4267,11 @@ void next()
|
||||
# Shared base code for External hybrid CaSE and Wordcase mutation code
|
||||
[List.External_base:Case]
|
||||
|
||||
int rotor[251]; /* max length input is 125 bytes [125*5+1]; */
|
||||
int rotors[125];
|
||||
int rotor_ptr[125];
|
||||
int rotor_idx[125];
|
||||
int rotor_cnt[125];
|
||||
int rotor[639]; /* max length input is 319 bytes [319*2+1] */
|
||||
int rotors[319];
|
||||
int rotor_ptr[319];
|
||||
int rotor_idx[319];
|
||||
int rotor_cnt[319];
|
||||
int current_word_count;
|
||||
int max_mangle; /* controls how many bytes we run through our 'leet' code */
|
||||
int original_word; /* if set to 1 then we start with original word. If 0, then start with first mangled word */
|
||||
|
||||
+42
-51
@@ -1,11 +1,11 @@
|
||||
# This software is Copyright (c) 2012-2020 magnum, and it is hereby
|
||||
# This software is Copyright (c) 2012-2024 magnum, and it is hereby
|
||||
# released to the general public under the following terms:
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted.
|
||||
#
|
||||
# Try strings of repeated characters, Unicode (version 13) BMP version
|
||||
# Try strings of repeated characters, Unicode (version 16) BMP version
|
||||
#
|
||||
# Number of candidates = 55,387 x max-length
|
||||
# Number of candidates = 55,537 x max-length
|
||||
#
|
||||
# Note that these modes will handle --max-len differently than normal: They
|
||||
# will consider number of characters as opposed to number of bytes. This
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
[List.External:Repeats16]
|
||||
int minlength, maxlength, maxc, length, c;
|
||||
int charset[0x10000];
|
||||
int charset[0xd900];
|
||||
|
||||
void init()
|
||||
{
|
||||
@@ -39,7 +39,7 @@ void init()
|
||||
|
||||
/*
|
||||
* This defines the character set. This is auto-generated from UnicodeData.txt
|
||||
* and we skip control characters.
|
||||
* of Unicode 16.0.0 and we skip control characters.
|
||||
*/
|
||||
i = 0;
|
||||
// 0000..007F; Basic Latin
|
||||
@@ -115,9 +115,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 0600..06FF; Arabic
|
||||
c = 0x600; // from ARABIC NUMBER SIGN
|
||||
while (c <= 0x61c) // ..to ARABIC LETTER MARK
|
||||
charset[i++] = c++;
|
||||
c = 0x61e; // from ARABIC TRIPLE DOT PUNCTUATION MARK
|
||||
while (c <= 0x6ff) // ..to ARABIC LETTER HEH WITH INVERTED V
|
||||
charset[i++] = c++;
|
||||
// 0700..074F; Syriac
|
||||
@@ -159,14 +156,17 @@ void init()
|
||||
c = 0x860; // from SYRIAC LETTER MALAYALAM NGA
|
||||
while (c <= 0x86a) // ..to SYRIAC LETTER MALAYALAM SSA
|
||||
charset[i++] = c++;
|
||||
// 0870..089F; Arabic Extended-B
|
||||
c = 0x870; // from ARABIC LETTER ALEF WITH ATTACHED FATHA
|
||||
while (c <= 0x88e) // ..to ARABIC VERTICAL TAIL
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x890; // ARABIC POUND MARK ABOVE
|
||||
charset[i++] = 0x891; // ARABIC PIASTRE MARK ABOVE
|
||||
c = 0x897; // from ARABIC PEPET
|
||||
while (c <= 0x89f) // ..to ARABIC HALF MADDA OVER MADDA
|
||||
charset[i++] = c++;
|
||||
// 08A0..08FF; Arabic Extended-A
|
||||
c = 0x8a0; // from ARABIC LETTER BEH WITH SMALL V BELOW
|
||||
while (c <= 0x8b4) // ..to ARABIC LETTER KAF WITH DOT BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x8b6; // from ARABIC LETTER BEH WITH SMALL MEEM ABOVE
|
||||
while (c <= 0x8c7) // ..to ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0x8d3; // from ARABIC SMALL LOW WAW
|
||||
while (c <= 0x8ff) // ..to ARABIC MARK SIDEWAYS NOON GHUNNA
|
||||
charset[i++] = c++;
|
||||
// 0900..097F; Devanagari
|
||||
@@ -356,7 +356,7 @@ void init()
|
||||
c = 0xc2a; // from TELUGU LETTER PA
|
||||
while (c <= 0xc39) // ..to TELUGU LETTER HA
|
||||
charset[i++] = c++;
|
||||
c = 0xc3d; // from TELUGU SIGN AVAGRAHA
|
||||
c = 0xc3c; // from TELUGU SIGN NUKTA
|
||||
while (c <= 0xc44) // ..to TELUGU VOWEL SIGN VOCALIC RR
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xc46; // TELUGU VOWEL SIGN E
|
||||
@@ -402,6 +402,8 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcd5; // KANNADA LENGTH MARK
|
||||
charset[i++] = 0xcd6; // KANNADA AI LENGTH MARK
|
||||
charset[i++] = 0xcdd; // KANNADA LETTER NAKAARA POLLU
|
||||
charset[i++] = 0xcde; // KANNADA LETTER FA
|
||||
c = 0xce0; // from KANNADA LETTER VOCALIC RR
|
||||
while (c <= 0xce3) // ..to KANNADA VOWEL SIGN VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
@@ -409,7 +411,7 @@ void init()
|
||||
while (c <= 0xcef) // ..to KANNADA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcf1; // KANNADA SIGN JIHVAMULIYA
|
||||
charset[i++] = 0xcf2; // KANNADA SIGN UPADHMANIYA
|
||||
charset[i++] = 0xcf3; // KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
|
||||
// 0D00..0D7F; Malayalam
|
||||
c = 0xd00; // from MALAYALAM SIGN COMBINING ANUSVARA ABOVE
|
||||
while (c <= 0xd0c) // ..to MALAYALAM LETTER VOCALIC L
|
||||
@@ -479,7 +481,7 @@ void init()
|
||||
while (c <= 0xec4) // ..to LAO VOWEL SIGN AI
|
||||
charset[i++] = c++;
|
||||
c = 0xec8; // from LAO TONE MAI EK
|
||||
while (c <= 0xecd) // ..to LAO NIGGAHITA
|
||||
while (c <= 0xece) // ..to LAO YAMAKKAN
|
||||
charset[i++] = c++;
|
||||
c = 0xed0; // from LAO DIGIT ZERO
|
||||
while (c <= 0xed9) // ..to LAO DIGIT NINE
|
||||
@@ -592,11 +594,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1700..171F; Tagalog
|
||||
c = 0x1700; // from TAGALOG LETTER A
|
||||
while (c <= 0x170c) // ..to TAGALOG LETTER YA
|
||||
charset[i++] = c++;
|
||||
c = 0x170e; // from TAGALOG LETTER LA
|
||||
while (c <= 0x1714) // ..to TAGALOG SIGN VIRAMA
|
||||
while (c <= 0x1715) // ..to TAGALOG SIGN PAMUDPOD
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x171f; // TAGALOG LETTER ARCHAIC RA
|
||||
// 1720..173F; Hanunoo
|
||||
c = 0x1720; // from HANUNOO LETTER A
|
||||
while (c <= 0x1736) // ..to PHILIPPINE DOUBLE PUNCTUATION
|
||||
@@ -625,9 +625,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1800..18AF; Mongolian
|
||||
c = 0x1800; // from MONGOLIAN BIRGA
|
||||
while (c <= 0x180e) // ..to MONGOLIAN VOWEL SEPARATOR
|
||||
charset[i++] = c++;
|
||||
c = 0x1810; // from MONGOLIAN DIGIT ZERO
|
||||
while (c <= 0x1819) // ..to MONGOLIAN DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
c = 0x1820; // from MONGOLIAN LETTER A
|
||||
@@ -700,14 +697,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1AB0..1AFF; Combining Diacritical Marks Extended
|
||||
c = 0x1ab0; // from COMBINING DOUBLED CIRCUMFLEX ACCENT
|
||||
while (c <= 0x1ac0) // ..to COMBINING LATIN SMALL LETTER TURNED W BELOW
|
||||
while (c <= 0x1ace) // ..to COMBINING LATIN SMALL LETTER INSULAR T
|
||||
charset[i++] = c++;
|
||||
// 1B00..1B7F; Balinese
|
||||
c = 0x1b00; // from BALINESE SIGN ULU RICEM
|
||||
while (c <= 0x1b4b) // ..to BALINESE LETTER ASYURA SASAK
|
||||
while (c <= 0x1b4c) // ..to BALINESE LETTER ARCHAIC JNYA
|
||||
charset[i++] = c++;
|
||||
c = 0x1b50; // from BALINESE DIGIT ZERO
|
||||
while (c <= 0x1b7c) // ..to BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
|
||||
c = 0x1b4e; // from BALINESE INVERTED CARIK SIKI
|
||||
while (c <= 0x1b7f) // ..to BALINESE PANTI BAWAK
|
||||
charset[i++] = c++;
|
||||
// 1B80..1BBF; Sundanese
|
||||
c = 0x1b80; // from SUNDANESE SIGN PANYECEK
|
||||
@@ -735,7 +732,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1C80..1C8F; Cyrillic Extended-C
|
||||
c = 0x1c80; // from CYRILLIC SMALL LETTER ROUNDED VE
|
||||
while (c <= 0x1c88) // ..to CYRILLIC SMALL LETTER UNBLENDED UK
|
||||
while (c <= 0x1c8a) // ..to CYRILLIC SMALL LETTER TJE
|
||||
charset[i++] = c++;
|
||||
// 1C90..1CBF; Georgian Extended
|
||||
c = 0x1c90; // from GEORGIAN MTAVRULI CAPITAL LETTER AN
|
||||
@@ -761,9 +758,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1DC0..1DFF; Combining Diacritical Marks Supplement
|
||||
c = 0x1dc0; // from COMBINING DOTTED GRAVE ACCENT
|
||||
while (c <= 0x1df9) // ..to COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x1dfb; // from COMBINING DELETION MARK
|
||||
while (c <= 0x1dff) // ..to COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
charset[i++] = c++;
|
||||
// 1E00..1EFF; Latin Extended Additional
|
||||
@@ -827,7 +821,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 20A0..20CF; Currency Symbols
|
||||
c = 0x20a0; // from EURO-CURRENCY SIGN
|
||||
while (c <= 0x20bf) // ..to BITCOIN SIGN
|
||||
while (c <= 0x20c0) // ..to SOM SIGN
|
||||
charset[i++] = c++;
|
||||
// 20D0..20FF; Combining Diacritical Marks for Symbols
|
||||
c = 0x20d0; // from COMBINING LEFT HARPOON ABOVE
|
||||
@@ -855,7 +849,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2400..243F; Control Pictures
|
||||
c = 0x2400; // from SYMBOL FOR NULL
|
||||
while (c <= 0x2426) // ..to SYMBOL FOR SUBSTITUTE FORM TWO
|
||||
while (c <= 0x2429) // ..to SYMBOL FOR DELETE MEDIUM SHADE FORM
|
||||
charset[i++] = c++;
|
||||
// 2440..245F; Optical Character Recognition
|
||||
c = 0x2440; // from OCR HOOK
|
||||
@@ -921,10 +915,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2C00..2C5F; Glagolitic
|
||||
c = 0x2c00; // from GLAGOLITIC CAPITAL LETTER AZU
|
||||
while (c <= 0x2c2e) // ..to GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
|
||||
charset[i++] = c++;
|
||||
c = 0x2c30; // from GLAGOLITIC SMALL LETTER AZU
|
||||
while (c <= 0x2c5e) // ..to GLAGOLITIC SMALL LETTER LATINATE MYSLITE
|
||||
while (c <= 0x2c5f) // ..to GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
|
||||
charset[i++] = c++;
|
||||
// 2C60..2C7F; Latin Extended-C
|
||||
c = 0x2c60; // from LATIN CAPITAL LETTER L WITH DOUBLE BAR
|
||||
@@ -985,7 +976,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2E00..2E7F; Supplemental Punctuation
|
||||
c = 0x2e00; // from RIGHT ANGLE SUBSTITUTION MARKER
|
||||
while (c <= 0x2e52) // ..to TIRONIAN SIGN CAPITAL ET
|
||||
while (c <= 0x2e5d) // ..to OBLIQUE HYPHEN
|
||||
charset[i++] = c++;
|
||||
// 2E80..2EFF; CJK Radicals Supplement
|
||||
c = 0x2e80; // from CJK RADICAL REPEAT
|
||||
@@ -1000,7 +991,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2FF0..2FFF; Ideographic Description Characters
|
||||
c = 0x2ff0; // from IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
|
||||
while (c <= 0x2ffb) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
|
||||
while (c <= 0x2fff) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
|
||||
charset[i++] = c++;
|
||||
// 3000..303F; CJK Symbols and Punctuation
|
||||
c = 0x3000; // from IDEOGRAPHIC SPACE
|
||||
@@ -1035,8 +1026,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 31C0..31EF; CJK Strokes
|
||||
c = 0x31c0; // from CJK STROKE T
|
||||
while (c <= 0x31e3) // ..to CJK STROKE Q
|
||||
while (c <= 0x31e5) // ..to CJK STROKE SZP
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x31ef; // IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
|
||||
// 31F0..31FF; Katakana Phonetic Extensions
|
||||
c = 0x31f0; // from KATAKANA LETTER SMALL KU
|
||||
while (c <= 0x31ff) // ..to KATAKANA LETTER SMALL RO
|
||||
@@ -1062,7 +1054,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 4E00..9FFF; CJK Unified Ideographs
|
||||
c = 0x4e00; // from <CJK Ideograph, First>
|
||||
while (c <= 0x9ffc) // ..to <CJK Ideograph, Last>
|
||||
while (c <= 0x9fff) // ..to <CJK Ideograph, Last>
|
||||
charset[i++] = c++;
|
||||
// A000..A48F; Yi Syllables
|
||||
c = 0xa000; // from YI SYLLABLE IT
|
||||
@@ -1094,12 +1086,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// A720..A7FF; Latin Extended-D
|
||||
c = 0xa720; // from MODIFIER LETTER STRESS AND HIGH TONE
|
||||
while (c <= 0xa7bf) // ..to LATIN SMALL LETTER GLOTTAL U
|
||||
while (c <= 0xa7cd) // ..to LATIN SMALL LETTER S WITH DIAGONAL STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7c2; // from LATIN CAPITAL LETTER ANGLICANA W
|
||||
while (c <= 0xa7ca) // ..to LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
|
||||
charset[i++] = 0xa7d0; // LATIN CAPITAL LETTER CLOSED INSULAR G
|
||||
charset[i++] = 0xa7d1; // LATIN SMALL LETTER CLOSED INSULAR G
|
||||
c = 0xa7d5; // from LATIN SMALL LETTER DOUBLE WYNN
|
||||
while (c <= 0xa7dc) // ..to LATIN CAPITAL LETTER LAMBDA WITH STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7f5; // from LATIN CAPITAL LETTER REVERSED HALF H
|
||||
c = 0xa7f2; // from MODIFIER LETTER CAPITAL C
|
||||
while (c <= 0xa7ff) // ..to LATIN EPIGRAPHIC LETTER ARCHAIC M
|
||||
charset[i++] = c++;
|
||||
// A800..A82F; Syloti Nagri
|
||||
@@ -1254,19 +1248,16 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// FB50..FDFF; Arabic Presentation Forms-A
|
||||
c = 0xfb50; // from ARABIC LETTER ALEF WASLA ISOLATED FORM
|
||||
while (c <= 0xfbc1) // ..to ARABIC SYMBOL SMALL TAH BELOW
|
||||
while (c <= 0xfbc2) // ..to ARABIC SYMBOL WASLA ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0xfbd3; // from ARABIC LETTER NG ISOLATED FORM
|
||||
while (c <= 0xfd3f) // ..to ORNATE RIGHT PARENTHESIS
|
||||
charset[i++] = c++;
|
||||
c = 0xfd50; // from ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
|
||||
while (c <= 0xfd8f) // ..to ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfd92; // from ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
|
||||
while (c <= 0xfdc7) // ..to ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfdf0; // from ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
|
||||
while (c <= 0xfdfd) // ..to ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
|
||||
while (c <= 0xfdff) // ..to ARABIC LIGATURE AZZA WA JALL
|
||||
charset[i++] = c++;
|
||||
// FE00..FE0F; Variation Selectors
|
||||
c = 0xfe00; // from VARIATION SELECTOR-1
|
||||
|
||||
+283
-91
@@ -1,11 +1,11 @@
|
||||
# This software is Copyright (c) 2012-2020 magnum, and it is hereby
|
||||
# This software is Copyright (c) 2012-2024 magnum, and it is hereby
|
||||
# released to the general public under the following terms:
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted.
|
||||
#
|
||||
# Try strings of repeated characters, Full Unicode (version 13) version
|
||||
# Try strings of repeated characters, Full Unicode (version 16) version
|
||||
#
|
||||
# Number of candidates = 143,532 x length
|
||||
# Number of candidates = 154,663 x length
|
||||
#
|
||||
# Note that these modes will handle --max-len differently than normal: They
|
||||
# will consider number of characters as opposed to number of bytes. This
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
[List.External:Repeats32]
|
||||
int minlength, maxlength, maxc, length, c;
|
||||
int charset[0x24000];
|
||||
int charset[0x25c30];
|
||||
|
||||
void init()
|
||||
{
|
||||
@@ -44,7 +44,7 @@ void init()
|
||||
|
||||
/*
|
||||
* This defines the character set. This is auto-generated from UnicodeData.txt
|
||||
* and we skip control characters.
|
||||
* of Unicode 16.0.0 and we skip control characters.
|
||||
*/
|
||||
i = 0;
|
||||
// 0000..007F; Basic Latin
|
||||
@@ -120,9 +120,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 0600..06FF; Arabic
|
||||
c = 0x600; // from ARABIC NUMBER SIGN
|
||||
while (c <= 0x61c) // ..to ARABIC LETTER MARK
|
||||
charset[i++] = c++;
|
||||
c = 0x61e; // from ARABIC TRIPLE DOT PUNCTUATION MARK
|
||||
while (c <= 0x6ff) // ..to ARABIC LETTER HEH WITH INVERTED V
|
||||
charset[i++] = c++;
|
||||
// 0700..074F; Syriac
|
||||
@@ -164,14 +161,17 @@ void init()
|
||||
c = 0x860; // from SYRIAC LETTER MALAYALAM NGA
|
||||
while (c <= 0x86a) // ..to SYRIAC LETTER MALAYALAM SSA
|
||||
charset[i++] = c++;
|
||||
// 0870..089F; Arabic Extended-B
|
||||
c = 0x870; // from ARABIC LETTER ALEF WITH ATTACHED FATHA
|
||||
while (c <= 0x88e) // ..to ARABIC VERTICAL TAIL
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x890; // ARABIC POUND MARK ABOVE
|
||||
charset[i++] = 0x891; // ARABIC PIASTRE MARK ABOVE
|
||||
c = 0x897; // from ARABIC PEPET
|
||||
while (c <= 0x89f) // ..to ARABIC HALF MADDA OVER MADDA
|
||||
charset[i++] = c++;
|
||||
// 08A0..08FF; Arabic Extended-A
|
||||
c = 0x8a0; // from ARABIC LETTER BEH WITH SMALL V BELOW
|
||||
while (c <= 0x8b4) // ..to ARABIC LETTER KAF WITH DOT BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x8b6; // from ARABIC LETTER BEH WITH SMALL MEEM ABOVE
|
||||
while (c <= 0x8c7) // ..to ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0x8d3; // from ARABIC SMALL LOW WAW
|
||||
while (c <= 0x8ff) // ..to ARABIC MARK SIDEWAYS NOON GHUNNA
|
||||
charset[i++] = c++;
|
||||
// 0900..097F; Devanagari
|
||||
@@ -361,7 +361,7 @@ void init()
|
||||
c = 0xc2a; // from TELUGU LETTER PA
|
||||
while (c <= 0xc39) // ..to TELUGU LETTER HA
|
||||
charset[i++] = c++;
|
||||
c = 0xc3d; // from TELUGU SIGN AVAGRAHA
|
||||
c = 0xc3c; // from TELUGU SIGN NUKTA
|
||||
while (c <= 0xc44) // ..to TELUGU VOWEL SIGN VOCALIC RR
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xc46; // TELUGU VOWEL SIGN E
|
||||
@@ -407,6 +407,8 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcd5; // KANNADA LENGTH MARK
|
||||
charset[i++] = 0xcd6; // KANNADA AI LENGTH MARK
|
||||
charset[i++] = 0xcdd; // KANNADA LETTER NAKAARA POLLU
|
||||
charset[i++] = 0xcde; // KANNADA LETTER FA
|
||||
c = 0xce0; // from KANNADA LETTER VOCALIC RR
|
||||
while (c <= 0xce3) // ..to KANNADA VOWEL SIGN VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
@@ -414,7 +416,7 @@ void init()
|
||||
while (c <= 0xcef) // ..to KANNADA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0xcf1; // KANNADA SIGN JIHVAMULIYA
|
||||
charset[i++] = 0xcf2; // KANNADA SIGN UPADHMANIYA
|
||||
charset[i++] = 0xcf3; // KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
|
||||
// 0D00..0D7F; Malayalam
|
||||
c = 0xd00; // from MALAYALAM SIGN COMBINING ANUSVARA ABOVE
|
||||
while (c <= 0xd0c) // ..to MALAYALAM LETTER VOCALIC L
|
||||
@@ -484,7 +486,7 @@ void init()
|
||||
while (c <= 0xec4) // ..to LAO VOWEL SIGN AI
|
||||
charset[i++] = c++;
|
||||
c = 0xec8; // from LAO TONE MAI EK
|
||||
while (c <= 0xecd) // ..to LAO NIGGAHITA
|
||||
while (c <= 0xece) // ..to LAO YAMAKKAN
|
||||
charset[i++] = c++;
|
||||
c = 0xed0; // from LAO DIGIT ZERO
|
||||
while (c <= 0xed9) // ..to LAO DIGIT NINE
|
||||
@@ -597,11 +599,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1700..171F; Tagalog
|
||||
c = 0x1700; // from TAGALOG LETTER A
|
||||
while (c <= 0x170c) // ..to TAGALOG LETTER YA
|
||||
charset[i++] = c++;
|
||||
c = 0x170e; // from TAGALOG LETTER LA
|
||||
while (c <= 0x1714) // ..to TAGALOG SIGN VIRAMA
|
||||
while (c <= 0x1715) // ..to TAGALOG SIGN PAMUDPOD
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x171f; // TAGALOG LETTER ARCHAIC RA
|
||||
// 1720..173F; Hanunoo
|
||||
c = 0x1720; // from HANUNOO LETTER A
|
||||
while (c <= 0x1736) // ..to PHILIPPINE DOUBLE PUNCTUATION
|
||||
@@ -630,9 +630,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1800..18AF; Mongolian
|
||||
c = 0x1800; // from MONGOLIAN BIRGA
|
||||
while (c <= 0x180e) // ..to MONGOLIAN VOWEL SEPARATOR
|
||||
charset[i++] = c++;
|
||||
c = 0x1810; // from MONGOLIAN DIGIT ZERO
|
||||
while (c <= 0x1819) // ..to MONGOLIAN DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
c = 0x1820; // from MONGOLIAN LETTER A
|
||||
@@ -705,14 +702,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1AB0..1AFF; Combining Diacritical Marks Extended
|
||||
c = 0x1ab0; // from COMBINING DOUBLED CIRCUMFLEX ACCENT
|
||||
while (c <= 0x1ac0) // ..to COMBINING LATIN SMALL LETTER TURNED W BELOW
|
||||
while (c <= 0x1ace) // ..to COMBINING LATIN SMALL LETTER INSULAR T
|
||||
charset[i++] = c++;
|
||||
// 1B00..1B7F; Balinese
|
||||
c = 0x1b00; // from BALINESE SIGN ULU RICEM
|
||||
while (c <= 0x1b4b) // ..to BALINESE LETTER ASYURA SASAK
|
||||
while (c <= 0x1b4c) // ..to BALINESE LETTER ARCHAIC JNYA
|
||||
charset[i++] = c++;
|
||||
c = 0x1b50; // from BALINESE DIGIT ZERO
|
||||
while (c <= 0x1b7c) // ..to BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
|
||||
c = 0x1b4e; // from BALINESE INVERTED CARIK SIKI
|
||||
while (c <= 0x1b7f) // ..to BALINESE PANTI BAWAK
|
||||
charset[i++] = c++;
|
||||
// 1B80..1BBF; Sundanese
|
||||
c = 0x1b80; // from SUNDANESE SIGN PANYECEK
|
||||
@@ -740,7 +737,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1C80..1C8F; Cyrillic Extended-C
|
||||
c = 0x1c80; // from CYRILLIC SMALL LETTER ROUNDED VE
|
||||
while (c <= 0x1c88) // ..to CYRILLIC SMALL LETTER UNBLENDED UK
|
||||
while (c <= 0x1c8a) // ..to CYRILLIC SMALL LETTER TJE
|
||||
charset[i++] = c++;
|
||||
// 1C90..1CBF; Georgian Extended
|
||||
c = 0x1c90; // from GEORGIAN MTAVRULI CAPITAL LETTER AN
|
||||
@@ -766,9 +763,6 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1DC0..1DFF; Combining Diacritical Marks Supplement
|
||||
c = 0x1dc0; // from COMBINING DOTTED GRAVE ACCENT
|
||||
while (c <= 0x1df9) // ..to COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
charset[i++] = c++;
|
||||
c = 0x1dfb; // from COMBINING DELETION MARK
|
||||
while (c <= 0x1dff) // ..to COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
charset[i++] = c++;
|
||||
// 1E00..1EFF; Latin Extended Additional
|
||||
@@ -832,7 +826,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 20A0..20CF; Currency Symbols
|
||||
c = 0x20a0; // from EURO-CURRENCY SIGN
|
||||
while (c <= 0x20bf) // ..to BITCOIN SIGN
|
||||
while (c <= 0x20c0) // ..to SOM SIGN
|
||||
charset[i++] = c++;
|
||||
// 20D0..20FF; Combining Diacritical Marks for Symbols
|
||||
c = 0x20d0; // from COMBINING LEFT HARPOON ABOVE
|
||||
@@ -860,7 +854,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2400..243F; Control Pictures
|
||||
c = 0x2400; // from SYMBOL FOR NULL
|
||||
while (c <= 0x2426) // ..to SYMBOL FOR SUBSTITUTE FORM TWO
|
||||
while (c <= 0x2429) // ..to SYMBOL FOR DELETE MEDIUM SHADE FORM
|
||||
charset[i++] = c++;
|
||||
// 2440..245F; Optical Character Recognition
|
||||
c = 0x2440; // from OCR HOOK
|
||||
@@ -926,10 +920,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2C00..2C5F; Glagolitic
|
||||
c = 0x2c00; // from GLAGOLITIC CAPITAL LETTER AZU
|
||||
while (c <= 0x2c2e) // ..to GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
|
||||
charset[i++] = c++;
|
||||
c = 0x2c30; // from GLAGOLITIC SMALL LETTER AZU
|
||||
while (c <= 0x2c5e) // ..to GLAGOLITIC SMALL LETTER LATINATE MYSLITE
|
||||
while (c <= 0x2c5f) // ..to GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
|
||||
charset[i++] = c++;
|
||||
// 2C60..2C7F; Latin Extended-C
|
||||
c = 0x2c60; // from LATIN CAPITAL LETTER L WITH DOUBLE BAR
|
||||
@@ -990,7 +981,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2E00..2E7F; Supplemental Punctuation
|
||||
c = 0x2e00; // from RIGHT ANGLE SUBSTITUTION MARKER
|
||||
while (c <= 0x2e52) // ..to TIRONIAN SIGN CAPITAL ET
|
||||
while (c <= 0x2e5d) // ..to OBLIQUE HYPHEN
|
||||
charset[i++] = c++;
|
||||
// 2E80..2EFF; CJK Radicals Supplement
|
||||
c = 0x2e80; // from CJK RADICAL REPEAT
|
||||
@@ -1005,7 +996,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 2FF0..2FFF; Ideographic Description Characters
|
||||
c = 0x2ff0; // from IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
|
||||
while (c <= 0x2ffb) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
|
||||
while (c <= 0x2fff) // ..to IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
|
||||
charset[i++] = c++;
|
||||
// 3000..303F; CJK Symbols and Punctuation
|
||||
c = 0x3000; // from IDEOGRAPHIC SPACE
|
||||
@@ -1040,8 +1031,9 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 31C0..31EF; CJK Strokes
|
||||
c = 0x31c0; // from CJK STROKE T
|
||||
while (c <= 0x31e3) // ..to CJK STROKE Q
|
||||
while (c <= 0x31e5) // ..to CJK STROKE SZP
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x31ef; // IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
|
||||
// 31F0..31FF; Katakana Phonetic Extensions
|
||||
c = 0x31f0; // from KATAKANA LETTER SMALL KU
|
||||
while (c <= 0x31ff) // ..to KATAKANA LETTER SMALL RO
|
||||
@@ -1067,7 +1059,7 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 4E00..9FFF; CJK Unified Ideographs
|
||||
c = 0x4e00; // from <CJK Ideograph, First>
|
||||
while (c <= 0x9ffc) // ..to <CJK Ideograph, Last>
|
||||
while (c <= 0x9fff) // ..to <CJK Ideograph, Last>
|
||||
charset[i++] = c++;
|
||||
// A000..A48F; Yi Syllables
|
||||
c = 0xa000; // from YI SYLLABLE IT
|
||||
@@ -1099,12 +1091,14 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// A720..A7FF; Latin Extended-D
|
||||
c = 0xa720; // from MODIFIER LETTER STRESS AND HIGH TONE
|
||||
while (c <= 0xa7bf) // ..to LATIN SMALL LETTER GLOTTAL U
|
||||
while (c <= 0xa7cd) // ..to LATIN SMALL LETTER S WITH DIAGONAL STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7c2; // from LATIN CAPITAL LETTER ANGLICANA W
|
||||
while (c <= 0xa7ca) // ..to LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
|
||||
charset[i++] = 0xa7d0; // LATIN CAPITAL LETTER CLOSED INSULAR G
|
||||
charset[i++] = 0xa7d1; // LATIN SMALL LETTER CLOSED INSULAR G
|
||||
c = 0xa7d5; // from LATIN SMALL LETTER DOUBLE WYNN
|
||||
while (c <= 0xa7dc) // ..to LATIN CAPITAL LETTER LAMBDA WITH STROKE
|
||||
charset[i++] = c++;
|
||||
c = 0xa7f5; // from LATIN CAPITAL LETTER REVERSED HALF H
|
||||
c = 0xa7f2; // from MODIFIER LETTER CAPITAL C
|
||||
while (c <= 0xa7ff) // ..to LATIN EPIGRAPHIC LETTER ARCHAIC M
|
||||
charset[i++] = c++;
|
||||
// A800..A82F; Syloti Nagri
|
||||
@@ -1259,19 +1253,16 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// FB50..FDFF; Arabic Presentation Forms-A
|
||||
c = 0xfb50; // from ARABIC LETTER ALEF WASLA ISOLATED FORM
|
||||
while (c <= 0xfbc1) // ..to ARABIC SYMBOL SMALL TAH BELOW
|
||||
while (c <= 0xfbc2) // ..to ARABIC SYMBOL WASLA ABOVE
|
||||
charset[i++] = c++;
|
||||
c = 0xfbd3; // from ARABIC LETTER NG ISOLATED FORM
|
||||
while (c <= 0xfd3f) // ..to ORNATE RIGHT PARENTHESIS
|
||||
charset[i++] = c++;
|
||||
c = 0xfd50; // from ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
|
||||
while (c <= 0xfd8f) // ..to ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfd92; // from ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
|
||||
while (c <= 0xfdc7) // ..to ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
|
||||
charset[i++] = c++;
|
||||
c = 0xfdf0; // from ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
|
||||
while (c <= 0xfdfd) // ..to ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
|
||||
while (c <= 0xfdff) // ..to ARABIC LIGATURE AZZA WA JALL
|
||||
charset[i++] = c++;
|
||||
// FE00..FE0F; Variation Selectors
|
||||
c = 0xfe00; // from VARIATION SELECTOR-1
|
||||
@@ -1444,6 +1435,33 @@ void init()
|
||||
while (c <= 0x10563) // ..to CAUCASIAN ALBANIAN LETTER KIW
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1056f; // CAUCASIAN ALBANIAN CITATION MARK
|
||||
// 10570..105BF; Vithkuqi
|
||||
c = 0x10570; // from VITHKUQI CAPITAL LETTER A
|
||||
while (c <= 0x1057a) // ..to VITHKUQI CAPITAL LETTER GA
|
||||
charset[i++] = c++;
|
||||
c = 0x1057c; // from VITHKUQI CAPITAL LETTER HA
|
||||
while (c <= 0x1058a) // ..to VITHKUQI CAPITAL LETTER RE
|
||||
charset[i++] = c++;
|
||||
c = 0x1058c; // from VITHKUQI CAPITAL LETTER SE
|
||||
while (c <= 0x10592) // ..to VITHKUQI CAPITAL LETTER XE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x10594; // VITHKUQI CAPITAL LETTER Y
|
||||
charset[i++] = 0x10595; // VITHKUQI CAPITAL LETTER ZE
|
||||
c = 0x10597; // from VITHKUQI SMALL LETTER A
|
||||
while (c <= 0x105a1) // ..to VITHKUQI SMALL LETTER GA
|
||||
charset[i++] = c++;
|
||||
c = 0x105a3; // from VITHKUQI SMALL LETTER HA
|
||||
while (c <= 0x105b1) // ..to VITHKUQI SMALL LETTER RE
|
||||
charset[i++] = c++;
|
||||
c = 0x105b3; // from VITHKUQI SMALL LETTER SE
|
||||
while (c <= 0x105b9) // ..to VITHKUQI SMALL LETTER XE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x105bb; // VITHKUQI SMALL LETTER Y
|
||||
charset[i++] = 0x105bc; // VITHKUQI SMALL LETTER ZE
|
||||
// 105C0..105FF; Todhri
|
||||
c = 0x105c0; // from TODHRI LETTER A
|
||||
while (c <= 0x105f3) // ..to TODHRI LETTER OO
|
||||
charset[i++] = c++;
|
||||
// 10600..1077F; Linear A
|
||||
c = 0x10600; // from LINEAR A SIGN AB001
|
||||
while (c <= 0x10736) // ..to LINEAR A SIGN A664
|
||||
@@ -1454,6 +1472,16 @@ void init()
|
||||
c = 0x10760; // from LINEAR A SIGN A800
|
||||
while (c <= 0x10767) // ..to LINEAR A SIGN A807
|
||||
charset[i++] = c++;
|
||||
// 10780..107BF; Latin Extended-F
|
||||
c = 0x10780; // from MODIFIER LETTER SMALL CAPITAL AA
|
||||
while (c <= 0x10785) // ..to MODIFIER LETTER SMALL B WITH HOOK
|
||||
charset[i++] = c++;
|
||||
c = 0x10787; // from MODIFIER LETTER SMALL DZ DIGRAPH
|
||||
while (c <= 0x107b0) // ..to MODIFIER LETTER SMALL V WITH RIGHT HOOK
|
||||
charset[i++] = c++;
|
||||
c = 0x107b2; // from MODIFIER LETTER SMALL CAPITAL Y
|
||||
while (c <= 0x107ba) // ..to MODIFIER LETTER SMALL S WITH CURL
|
||||
charset[i++] = c++;
|
||||
// 10800..1083F; Cypriot Syllabary
|
||||
c = 0x10800; // from CYPRIOT SYLLABLE A
|
||||
while (c <= 0x10805) // ..to CYPRIOT SYLLABLE JA
|
||||
@@ -1606,6 +1634,15 @@ void init()
|
||||
c = 0x10d30; // from HANIFI ROHINGYA DIGIT ZERO
|
||||
while (c <= 0x10d39) // ..to HANIFI ROHINGYA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 10D40..10D8F; Garay
|
||||
c = 0x10d40; // from GARAY DIGIT ZERO
|
||||
while (c <= 0x10d65) // ..to GARAY CAPITAL LETTER OLD NA
|
||||
charset[i++] = c++;
|
||||
c = 0x10d69; // from GARAY VOWEL SIGN E
|
||||
while (c <= 0x10d85) // ..to GARAY SMALL LETTER OLD NA
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x10d8e; // GARAY PLUS SIGN
|
||||
charset[i++] = 0x10d8f; // GARAY MINUS SIGN
|
||||
// 10E60..10E7F; Rumi Numeral Symbols
|
||||
c = 0x10e60; // from RUMI DIGIT ONE
|
||||
while (c <= 0x10e7e) // ..to RUMI FRACTION TWO THIRDS
|
||||
@@ -1618,6 +1655,12 @@ void init()
|
||||
charset[i++] = 0x10ead; // YEZIDI HYPHENATION MARK
|
||||
charset[i++] = 0x10eb0; // YEZIDI LETTER LAM WITH DOT ABOVE
|
||||
charset[i++] = 0x10eb1; // YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
|
||||
// 10EC0..10EFF; Arabic Extended-C
|
||||
charset[i++] = 0x10ec2; // ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW
|
||||
charset[i++] = 0x10ec4; // ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
|
||||
c = 0x10efc; // from ARABIC COMBINING ALEF OVERLAY
|
||||
while (c <= 0x10eff) // ..to ARABIC SMALL LOW WORD MADDA
|
||||
charset[i++] = c++;
|
||||
// 10F00..10F2F; Old Sogdian
|
||||
c = 0x10f00; // from OLD SOGDIAN LETTER ALEPH
|
||||
while (c <= 0x10f27) // ..to OLD SOGDIAN LIGATURE AYIN-DALETH
|
||||
@@ -1626,6 +1669,10 @@ void init()
|
||||
c = 0x10f30; // from SOGDIAN LETTER ALEPH
|
||||
while (c <= 0x10f59) // ..to SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
|
||||
charset[i++] = c++;
|
||||
// 10F70..10FAF; Old Uyghur
|
||||
c = 0x10f70; // from OLD UYGHUR LETTER ALEPH
|
||||
while (c <= 0x10f89) // ..to OLD UYGHUR PUNCTUATION FOUR DOTS
|
||||
charset[i++] = c++;
|
||||
// 10FB0..10FDF; Chorasmian
|
||||
c = 0x10fb0; // from CHORASMIAN LETTER ALEPH
|
||||
while (c <= 0x10fcb) // ..to CHORASMIAN NUMBER ONE HUNDRED
|
||||
@@ -1639,12 +1686,12 @@ void init()
|
||||
while (c <= 0x1104d) // ..to BRAHMI PUNCTUATION LOTUS
|
||||
charset[i++] = c++;
|
||||
c = 0x11052; // from BRAHMI NUMBER ONE
|
||||
while (c <= 0x1106f) // ..to BRAHMI DIGIT NINE
|
||||
while (c <= 0x11075) // ..to BRAHMI LETTER OLD TAMIL LLA
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1107f; // BRAHMI NUMBER JOINER
|
||||
// 11080..110CF; Kaithi
|
||||
c = 0x11080; // from KAITHI SIGN CANDRABINDU
|
||||
while (c <= 0x110c1) // ..to KAITHI DOUBLE DANDA
|
||||
while (c <= 0x110c2) // ..to KAITHI VOWEL SIGN VOCALIC R
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x110cd; // KAITHI NUMBER SIGN ABOVE
|
||||
// 110D0..110FF; Sora Sompeng
|
||||
@@ -1678,7 +1725,7 @@ void init()
|
||||
while (c <= 0x11211) // ..to KHOJKI LETTER JJA
|
||||
charset[i++] = c++;
|
||||
c = 0x11213; // from KHOJKI LETTER NYA
|
||||
while (c <= 0x1123e) // ..to KHOJKI SIGN SUKUN
|
||||
while (c <= 0x11241) // ..to KHOJKI VOWEL SIGN VOCALIC R
|
||||
charset[i++] = c++;
|
||||
// 11280..112AF; Multani
|
||||
c = 0x11280; // from MULTANI LETTER A
|
||||
@@ -1736,6 +1783,26 @@ void init()
|
||||
c = 0x11370; // from COMBINING GRANTHA LETTER A
|
||||
while (c <= 0x11374) // ..to COMBINING GRANTHA LETTER PA
|
||||
charset[i++] = c++;
|
||||
// 11380..113FF; Tulu-Tigalari
|
||||
c = 0x11380; // from TULU-TIGALARI LETTER A
|
||||
while (c <= 0x11389) // ..to TULU-TIGALARI LETTER VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
c = 0x11390; // from TULU-TIGALARI LETTER OO
|
||||
while (c <= 0x113b5) // ..to TULU-TIGALARI LETTER LLLA
|
||||
charset[i++] = c++;
|
||||
c = 0x113b7; // from TULU-TIGALARI SIGN AVAGRAHA
|
||||
while (c <= 0x113c0) // ..to TULU-TIGALARI VOWEL SIGN VOCALIC LL
|
||||
charset[i++] = c++;
|
||||
c = 0x113c7; // from TULU-TIGALARI VOWEL SIGN OO
|
||||
while (c <= 0x113ca) // ..to TULU-TIGALARI SIGN CANDRA ANUNASIKA
|
||||
charset[i++] = c++;
|
||||
c = 0x113cc; // from TULU-TIGALARI SIGN ANUSVARA
|
||||
while (c <= 0x113d5) // ..to TULU-TIGALARI DOUBLE DANDA
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x113d7; // TULU-TIGALARI SIGN OM PUSHPIKA
|
||||
charset[i++] = 0x113d8; // TULU-TIGALARI SIGN SHRII PUSHPIKA
|
||||
charset[i++] = 0x113e1; // TULU-TIGALARI VEDIC TONE SVARITA
|
||||
charset[i++] = 0x113e2; // TULU-TIGALARI VEDIC TONE ANUDATTA
|
||||
// 11400..1147F; Newa
|
||||
c = 0x11400; // from NEWA LETTER A
|
||||
while (c <= 0x1145b) // ..to NEWA PLACEHOLDER MARK
|
||||
@@ -1770,12 +1837,16 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 11680..116CF; Takri
|
||||
c = 0x11680; // from TAKRI LETTER A
|
||||
while (c <= 0x116b8) // ..to TAKRI LETTER ARCHAIC KHA
|
||||
while (c <= 0x116b9) // ..to TAKRI ABBREVIATION SIGN
|
||||
charset[i++] = c++;
|
||||
c = 0x116c0; // from TAKRI DIGIT ZERO
|
||||
while (c <= 0x116c9) // ..to TAKRI DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 11700..1173F; Ahom
|
||||
// 116D0..116FF; Myanmar Extended-C
|
||||
c = 0x116d0; // from MYANMAR PAO DIGIT ZERO
|
||||
while (c <= 0x116e3) // ..to MYANMAR EASTERN PWO KAREN DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 11700..1174F; Ahom
|
||||
c = 0x11700; // from AHOM LETTER KA
|
||||
while (c <= 0x1171a) // ..to AHOM LETTER ALTERNATE BA
|
||||
charset[i++] = c++;
|
||||
@@ -1783,7 +1854,7 @@ void init()
|
||||
while (c <= 0x1172b) // ..to AHOM SIGN KILLER
|
||||
charset[i++] = c++;
|
||||
c = 0x11730; // from AHOM DIGIT ZERO
|
||||
while (c <= 0x1173f) // ..to AHOM SYMBOL VI
|
||||
while (c <= 0x11746) // ..to AHOM LETTER LLA
|
||||
charset[i++] = c++;
|
||||
// 11800..1184F; Dogra
|
||||
c = 0x11800; // from DOGRA LETTER A
|
||||
@@ -1832,10 +1903,25 @@ void init()
|
||||
c = 0x11a50; // from SOYOMBO LETTER A
|
||||
while (c <= 0x11aa2) // ..to SOYOMBO TERMINAL MARK-2
|
||||
charset[i++] = c++;
|
||||
// 11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
|
||||
c = 0x11ab0; // from CANADIAN SYLLABICS NATTILIK HI
|
||||
while (c <= 0x11abf) // ..to CANADIAN SYLLABICS SPA
|
||||
charset[i++] = c++;
|
||||
// 11AC0..11AFF; Pau Cin Hau
|
||||
c = 0x11ac0; // from PAU CIN HAU LETTER PA
|
||||
while (c <= 0x11af8) // ..to PAU CIN HAU GLOTTAL STOP FINAL
|
||||
charset[i++] = c++;
|
||||
// 11B00..11B5F; Devanagari Extended-A
|
||||
c = 0x11b00; // from DEVANAGARI HEAD MARK
|
||||
while (c <= 0x11b09) // ..to DEVANAGARI SIGN MINDU
|
||||
charset[i++] = c++;
|
||||
// 11BC0..11BFF; Sunuwar
|
||||
c = 0x11bc0; // from SUNUWAR LETTER DEVI
|
||||
while (c <= 0x11be1) // ..to SUNUWAR SIGN PVO
|
||||
charset[i++] = c++;
|
||||
c = 0x11bf0; // from SUNUWAR DIGIT ZERO
|
||||
while (c <= 0x11bf9) // ..to SUNUWAR DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 11C00..11C6F; Bhaiksuki
|
||||
c = 0x11c00; // from BHAIKSUKI LETTER A
|
||||
while (c <= 0x11c08) // ..to BHAIKSUKI LETTER VOCALIC L
|
||||
@@ -1897,6 +1983,16 @@ void init()
|
||||
c = 0x11ee0; // from MAKASAR LETTER KA
|
||||
while (c <= 0x11ef8) // ..to MAKASAR END OF SECTION
|
||||
charset[i++] = c++;
|
||||
// 11F00..11F5F; Kawi
|
||||
c = 0x11f00; // from KAWI SIGN CANDRABINDU
|
||||
while (c <= 0x11f10) // ..to KAWI LETTER O
|
||||
charset[i++] = c++;
|
||||
c = 0x11f12; // from KAWI LETTER KA
|
||||
while (c <= 0x11f3a) // ..to KAWI VOWEL SIGN VOCALIC R
|
||||
charset[i++] = c++;
|
||||
c = 0x11f3e; // from KAWI VOWEL SIGN E
|
||||
while (c <= 0x11f5a) // ..to KAWI SIGN NUKTA
|
||||
charset[i++] = c++;
|
||||
// 11FB0..11FBF; Lisu Supplement
|
||||
charset[i++] = 0x11fb0; // LISU LETTER YHA
|
||||
// 11FC0..11FFF; Tamil Supplement
|
||||
@@ -1919,18 +2015,30 @@ void init()
|
||||
c = 0x12480; // from CUNEIFORM SIGN AB TIMES NUN TENU
|
||||
while (c <= 0x12543) // ..to CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
|
||||
charset[i++] = c++;
|
||||
// 12F90..12FFF; Cypro-Minoan
|
||||
c = 0x12f90; // from CYPRO-MINOAN SIGN CM001
|
||||
while (c <= 0x12ff2) // ..to CYPRO-MINOAN SIGN CM302
|
||||
charset[i++] = c++;
|
||||
// 13000..1342F; Egyptian Hieroglyphs
|
||||
c = 0x13000; // from EGYPTIAN HIEROGLYPH A001
|
||||
while (c <= 0x1342e) // ..to EGYPTIAN HIEROGLYPH AA032
|
||||
while (c <= 0x1342f) // ..to EGYPTIAN HIEROGLYPH V011D
|
||||
charset[i++] = c++;
|
||||
// 13430..1343F; Egyptian Hieroglyph Format Controls
|
||||
// 13430..1345F; Egyptian Hieroglyph Format Controls
|
||||
c = 0x13430; // from EGYPTIAN HIEROGLYPH VERTICAL JOINER
|
||||
while (c <= 0x13438) // ..to EGYPTIAN HIEROGLYPH END SEGMENT
|
||||
while (c <= 0x13455) // ..to EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
|
||||
charset[i++] = c++;
|
||||
// 13460..143FF; Egyptian Hieroglyphs Extended-A
|
||||
c = 0x13460; // from EGYPTIAN HIEROGLYPH-13460
|
||||
while (c <= 0x143fa) // ..to EGYPTIAN HIEROGLYPH-143FA
|
||||
charset[i++] = c++;
|
||||
// 14400..1467F; Anatolian Hieroglyphs
|
||||
c = 0x14400; // from ANATOLIAN HIEROGLYPH A001
|
||||
while (c <= 0x14646) // ..to ANATOLIAN HIEROGLYPH A530
|
||||
charset[i++] = c++;
|
||||
// 16100..1613F; Gurung Khema
|
||||
c = 0x16100; // from GURUNG KHEMA LETTER A
|
||||
while (c <= 0x16139) // ..to GURUNG KHEMA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 16800..16A3F; Bamum Supplement
|
||||
c = 0x16800; // from BAMUM LETTER PHASE-A NGKUE MFON
|
||||
while (c <= 0x16a38) // ..to BAMUM LETTER PHASE-F VUEQ
|
||||
@@ -1944,6 +2052,13 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x16a6e; // MRO DANDA
|
||||
charset[i++] = 0x16a6f; // MRO DOUBLE DANDA
|
||||
// 16A70..16ACF; Tangsa
|
||||
c = 0x16a70; // from TANGSA LETTER OZ
|
||||
while (c <= 0x16abe) // ..to TANGSA LETTER ZA
|
||||
charset[i++] = c++;
|
||||
c = 0x16ac0; // from TANGSA DIGIT ZERO
|
||||
while (c <= 0x16ac9) // ..to TANGSA DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 16AD0..16AFF; Bassa Vah
|
||||
c = 0x16ad0; // from BASSA VAH LETTER ENNI
|
||||
while (c <= 0x16aed) // ..to BASSA VAH LETTER I
|
||||
@@ -1967,6 +2082,10 @@ void init()
|
||||
c = 0x16b7d; // from PAHAWH HMONG CLAN SIGN TSHEEJ
|
||||
while (c <= 0x16b8f) // ..to PAHAWH HMONG CLAN SIGN VWJ
|
||||
charset[i++] = c++;
|
||||
// 16D40..16D7F; Kirat Rai
|
||||
c = 0x16d40; // from KIRAT RAI SIGN ANUSVARA
|
||||
while (c <= 0x16d79) // ..to KIRAT RAI DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 16E40..16E9F; Medefaidrin
|
||||
c = 0x16e40; // from MEDEFAIDRIN CAPITAL LETTER M
|
||||
while (c <= 0x16e9a) // ..to MEDEFAIDRIN EXCLAMATION OH
|
||||
@@ -1999,17 +2118,27 @@ void init()
|
||||
c = 0x18b00; // from KHITAN SMALL SCRIPT CHARACTER-18B00
|
||||
while (c <= 0x18cd5) // ..to KHITAN SMALL SCRIPT CHARACTER-18CD5
|
||||
charset[i++] = c++;
|
||||
// 18D00..18D8F; Tangut Supplement
|
||||
charset[i++] = 0x18cff; // KHITAN SMALL SCRIPT CHARACTER-18CFF
|
||||
// 18D00..18D7F; Tangut Supplement
|
||||
c = 0x18d00; // from <Tangut Ideograph Supplement, First>
|
||||
while (c <= 0x18d08) // ..to <Tangut Ideograph Supplement, Last>
|
||||
charset[i++] = c++;
|
||||
// 1AFF0..1AFFF; Kana Extended-B
|
||||
c = 0x1aff0; // from KATAKANA LETTER MINNAN TONE-2
|
||||
while (c <= 0x1aff3) // ..to KATAKANA LETTER MINNAN TONE-5
|
||||
charset[i++] = c++;
|
||||
c = 0x1aff5; // from KATAKANA LETTER MINNAN TONE-7
|
||||
while (c <= 0x1affb) // ..to KATAKANA LETTER MINNAN NASALIZED TONE-5
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1affd; // KATAKANA LETTER MINNAN NASALIZED TONE-7
|
||||
charset[i++] = 0x1affe; // KATAKANA LETTER MINNAN NASALIZED TONE-8
|
||||
// 1B000..1B0FF; Kana Supplement
|
||||
c = 0x1b000; // from KATAKANA LETTER ARCHAIC E
|
||||
while (c <= 0x1b0ff) // ..to HENTAIGANA LETTER RE-2
|
||||
charset[i++] = c++;
|
||||
// 1B100..1B12F; Kana Extended-A
|
||||
c = 0x1b100; // from HENTAIGANA LETTER RE-3
|
||||
while (c <= 0x1b11e) // ..to HENTAIGANA LETTER N-MU-MO-2
|
||||
while (c <= 0x1b122) // ..to KATAKANA LETTER ARCHAIC WU
|
||||
charset[i++] = c++;
|
||||
// 1B130..1B16F; Small Kana Extension
|
||||
charset[i++] = 0x1b150; // HIRAGANA LETTER SMALL WI
|
||||
@@ -2041,6 +2170,23 @@ void init()
|
||||
c = 0x1bca0; // from SHORTHAND FORMAT LETTER OVERLAP
|
||||
while (c <= 0x1bca3) // ..to SHORTHAND FORMAT UP STEP
|
||||
charset[i++] = c++;
|
||||
// 1CC00..1CEBF; Symbols for Legacy Computing Supplement
|
||||
c = 0x1cc00; // from UP-POINTING GO-KART
|
||||
while (c <= 0x1ccf9) // ..to OUTLINED DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
c = 0x1cd00; // from BLOCK OCTANT-3
|
||||
while (c <= 0x1ceb3) // ..to BLACK RIGHT TRIANGLE CARET
|
||||
charset[i++] = c++;
|
||||
// 1CF00..1CFCF; Znamenny Musical Notation
|
||||
c = 0x1cf00; // from ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT
|
||||
while (c <= 0x1cf2d) // ..to ZNAMENNY COMBINING MARK KRYZH ON LEFT
|
||||
charset[i++] = c++;
|
||||
c = 0x1cf30; // from ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO
|
||||
while (c <= 0x1cf46) // ..to ZNAMENNY PRIZNAK MODIFIER ROG
|
||||
charset[i++] = c++;
|
||||
c = 0x1cf50; // from ZNAMENNY NEUME KRYUK
|
||||
while (c <= 0x1cfc3) // ..to ZNAMENNY NEUME PAUK
|
||||
charset[i++] = c++;
|
||||
// 1D000..1D0FF; Byzantine Musical Symbols
|
||||
c = 0x1d000; // from BYZANTINE MUSICAL SYMBOL PSILI
|
||||
while (c <= 0x1d0f5) // ..to BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
|
||||
@@ -2050,12 +2196,16 @@ void init()
|
||||
while (c <= 0x1d126) // ..to MUSICAL SYMBOL DRUM CLEF-2
|
||||
charset[i++] = c++;
|
||||
c = 0x1d129; // from MUSICAL SYMBOL MULTIPLE MEASURE REST
|
||||
while (c <= 0x1d1e8) // ..to MUSICAL SYMBOL KIEVAN FLAT SIGN
|
||||
while (c <= 0x1d1ea) // ..to MUSICAL SYMBOL KORON
|
||||
charset[i++] = c++;
|
||||
// 1D200..1D24F; Ancient Greek Musical Notation
|
||||
c = 0x1d200; // from GREEK VOCAL NOTATION SYMBOL-1
|
||||
while (c <= 0x1d245) // ..to GREEK MUSICAL LEIMMA
|
||||
charset[i++] = c++;
|
||||
// 1D2C0..1D2DF; Kaktovik Numerals
|
||||
c = 0x1d2c0; // from KAKTOVIK NUMERAL ZERO
|
||||
while (c <= 0x1d2d3) // ..to KAKTOVIK NUMERAL NINETEEN
|
||||
charset[i++] = c++;
|
||||
// 1D2E0..1D2FF; Mayan Numerals
|
||||
c = 0x1d2e0; // from MAYAN NUMERAL ZERO
|
||||
while (c <= 0x1d2f3) // ..to MAYAN NUMERAL NINETEEN
|
||||
@@ -2131,6 +2281,13 @@ void init()
|
||||
c = 0x1daa1; // from SIGNWRITING ROTATION MODIFIER-2
|
||||
while (c <= 0x1daaf) // ..to SIGNWRITING ROTATION MODIFIER-16
|
||||
charset[i++] = c++;
|
||||
// 1DF00..1DFFF; Latin Extended-G
|
||||
c = 0x1df00; // from LATIN SMALL LETTER FENG DIGRAPH WITH TRILL
|
||||
while (c <= 0x1df1e) // ..to LATIN SMALL LETTER S WITH CURL
|
||||
charset[i++] = c++;
|
||||
c = 0x1df25; // from LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK
|
||||
while (c <= 0x1df2a) // ..to LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
|
||||
charset[i++] = c++;
|
||||
// 1E000..1E02F; Glagolitic Supplement
|
||||
c = 0x1e000; // from COMBINING GLAGOLITIC LETTER AZU
|
||||
while (c <= 0x1e006) // ..to COMBINING GLAGOLITIC LETTER ZHIVETE
|
||||
@@ -2146,6 +2303,11 @@ void init()
|
||||
c = 0x1e026; // from COMBINING GLAGOLITIC LETTER YO
|
||||
while (c <= 0x1e02a) // ..to COMBINING GLAGOLITIC LETTER FITA
|
||||
charset[i++] = c++;
|
||||
// 1E030..1E08F; Cyrillic Extended-D
|
||||
c = 0x1e030; // from MODIFIER LETTER CYRILLIC SMALL A
|
||||
while (c <= 0x1e06d) // ..to MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e08f; // COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
// 1E100..1E14F; Nyiakeng Puachue Hmong
|
||||
c = 0x1e100; // from NYIAKENG PUACHUE HMONG LETTER MA
|
||||
while (c <= 0x1e12c) // ..to NYIAKENG PUACHUE HMONG LETTER W
|
||||
@@ -2158,11 +2320,36 @@ void init()
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e14e; // NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
|
||||
charset[i++] = 0x1e14f; // NYIAKENG PUACHUE HMONG CIRCLED CA
|
||||
// 1E290..1E2BF; Toto
|
||||
c = 0x1e290; // from TOTO LETTER PA
|
||||
while (c <= 0x1e2ae) // ..to TOTO SIGN RISING TONE
|
||||
charset[i++] = c++;
|
||||
// 1E2C0..1E2FF; Wancho
|
||||
c = 0x1e2c0; // from WANCHO LETTER AA
|
||||
while (c <= 0x1e2f9) // ..to WANCHO DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e2ff; // WANCHO NGUN SIGN
|
||||
// 1E4D0..1E4FF; Nag Mundari
|
||||
c = 0x1e4d0; // from NAG MUNDARI LETTER O
|
||||
while (c <= 0x1e4f9) // ..to NAG MUNDARI DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 1E5D0..1E5FF; Ol Onal
|
||||
c = 0x1e5d0; // from OL ONAL LETTER O
|
||||
while (c <= 0x1e5fa) // ..to OL ONAL DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e5ff; // OL ONAL ABBREVIATION SIGN
|
||||
// 1E7E0..1E7FF; Ethiopic Extended-B
|
||||
c = 0x1e7e0; // from ETHIOPIC SYLLABLE HHYA
|
||||
while (c <= 0x1e7e6) // ..to ETHIOPIC SYLLABLE HHYO
|
||||
charset[i++] = c++;
|
||||
c = 0x1e7e8; // from ETHIOPIC SYLLABLE GURAGE HHWA
|
||||
while (c <= 0x1e7eb) // ..to ETHIOPIC SYLLABLE HHWE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1e7ed; // ETHIOPIC SYLLABLE GURAGE MWI
|
||||
charset[i++] = 0x1e7ee; // ETHIOPIC SYLLABLE GURAGE MWEE
|
||||
c = 0x1e7f0; // from ETHIOPIC SYLLABLE GURAGE QWI
|
||||
while (c <= 0x1e7fe) // ..to ETHIOPIC SYLLABLE GURAGE PWEE
|
||||
charset[i++] = c++;
|
||||
// 1E800..1E8DF; Mende Kikakui
|
||||
c = 0x1e800; // from MENDE KIKAKUI SYLLABLE M001 KI
|
||||
while (c <= 0x1e8c4) // ..to MENDE KIKAKUI SYLLABLE M060 NYON
|
||||
@@ -2294,7 +2481,7 @@ void init()
|
||||
c = 0x1f680; // from ROCKET
|
||||
while (c <= 0x1f6d7) // ..to ELEVATOR
|
||||
charset[i++] = c++;
|
||||
c = 0x1f6e0; // from HAMMER AND WRENCH
|
||||
c = 0x1f6dc; // from WIRELESS
|
||||
while (c <= 0x1f6ec) // ..to AIRPLANE ARRIVING
|
||||
charset[i++] = c++;
|
||||
c = 0x1f6f0; // from SATELLITE
|
||||
@@ -2302,15 +2489,19 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1F700..1F77F; Alchemical Symbols
|
||||
c = 0x1f700; // from ALCHEMICAL SYMBOL FOR QUINTESSENCE
|
||||
while (c <= 0x1f773) // ..to ALCHEMICAL SYMBOL FOR HALF OUNCE
|
||||
while (c <= 0x1f776) // ..to LUNAR ECLIPSE
|
||||
charset[i++] = c++;
|
||||
c = 0x1f77b; // from HAUMEA
|
||||
while (c <= 0x1f77f) // ..to ORCUS
|
||||
charset[i++] = c++;
|
||||
// 1F780..1F7FF; Geometric Shapes Extended
|
||||
c = 0x1f780; // from BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE
|
||||
while (c <= 0x1f7d8) // ..to NEGATIVE CIRCLED SQUARE
|
||||
while (c <= 0x1f7d9) // ..to NINE POINTED WHITE STAR
|
||||
charset[i++] = c++;
|
||||
c = 0x1f7e0; // from LARGE ORANGE CIRCLE
|
||||
while (c <= 0x1f7eb) // ..to LARGE BROWN SQUARE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1f7f0; // HEAVY EQUALS SIGN
|
||||
// 1F800..1F8FF; Supplemental Arrows-C
|
||||
c = 0x1f800; // from LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
|
||||
while (c <= 0x1f80b) // ..to DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
|
||||
@@ -2327,16 +2518,13 @@ void init()
|
||||
c = 0x1f890; // from LEFTWARDS TRIANGLE ARROWHEAD
|
||||
while (c <= 0x1f8ad) // ..to WHITE ARROW SHAFT WIDTH TWO THIRDS
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1f8b0; // ARROW POINTING UPWARDS THEN NORTH WEST
|
||||
charset[i++] = 0x1f8b1; // ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
|
||||
c = 0x1f8b0; // from ARROW POINTING UPWARDS THEN NORTH WEST
|
||||
while (c <= 0x1f8bb) // ..to SOUTH WEST ARROW FROM BAR
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1f8c0; // LEFTWARDS ARROW FROM DOWNWARDS ARROW
|
||||
charset[i++] = 0x1f8c1; // RIGHTWARDS ARROW FROM DOWNWARDS ARROW
|
||||
// 1F900..1F9FF; Supplemental Symbols and Pictographs
|
||||
c = 0x1f900; // from CIRCLED CROSS FORMEE WITH FOUR DOTS
|
||||
while (c <= 0x1f978) // ..to DISGUISED FACE
|
||||
charset[i++] = c++;
|
||||
c = 0x1f97a; // from FACE WITH PLEADING EYES
|
||||
while (c <= 0x1f9cb) // ..to BUBBLE TEA
|
||||
charset[i++] = c++;
|
||||
c = 0x1f9cd; // from STANDING PERSON
|
||||
while (c <= 0x1f9ff) // ..to NAZAR AMULET
|
||||
charset[i++] = c++;
|
||||
// 1FA00..1FA6F; Chess Symbols
|
||||
@@ -2348,41 +2536,37 @@ void init()
|
||||
charset[i++] = c++;
|
||||
// 1FA70..1FAFF; Symbols and Pictographs Extended-A
|
||||
c = 0x1fa70; // from BALLET SHOES
|
||||
while (c <= 0x1fa74) // ..to THONG SANDAL
|
||||
while (c <= 0x1fa7c) // ..to CRUTCH
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1fa78; // DROP OF BLOOD
|
||||
charset[i++] = 0x1fa7a; // STETHOSCOPE
|
||||
c = 0x1fa80; // from YO-YO
|
||||
while (c <= 0x1fa86) // ..to NESTING DOLLS
|
||||
while (c <= 0x1fa89) // ..to HARP
|
||||
charset[i++] = c++;
|
||||
c = 0x1fa90; // from RINGED PLANET
|
||||
while (c <= 0x1faa8) // ..to ROCK
|
||||
c = 0x1fa8f; // from SHOVEL
|
||||
while (c <= 0x1fac6) // ..to FINGERPRINT
|
||||
charset[i++] = c++;
|
||||
c = 0x1fab0; // from FLY
|
||||
while (c <= 0x1fab6) // ..to FEATHER
|
||||
c = 0x1face; // from MOOSE
|
||||
while (c <= 0x1fadc) // ..to ROOT VEGETABLE
|
||||
charset[i++] = c++;
|
||||
charset[i++] = 0x1fac0; // ANATOMICAL HEART
|
||||
charset[i++] = 0x1fac2; // PEOPLE HUGGING
|
||||
c = 0x1fad0; // from BLUEBERRIES
|
||||
while (c <= 0x1fad6) // ..to TEAPOT
|
||||
c = 0x1fadf; // from SPLATTER
|
||||
while (c <= 0x1fae9) // ..to FACE WITH BAGS UNDER EYES
|
||||
charset[i++] = c++;
|
||||
c = 0x1faf0; // from HAND WITH INDEX FINGER AND THUMB CROSSED
|
||||
while (c <= 0x1faf8) // ..to RIGHTWARDS PUSHING HAND
|
||||
charset[i++] = c++;
|
||||
// 1FB00..1FBFF; Symbols for Legacy Computing
|
||||
c = 0x1fb00; // from BLOCK SEXTANT-1
|
||||
while (c <= 0x1fb92) // ..to UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
|
||||
charset[i++] = c++;
|
||||
c = 0x1fb94; // from LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK
|
||||
while (c <= 0x1fbca) // ..to WHITE UP-POINTING CHEVRON
|
||||
charset[i++] = c++;
|
||||
c = 0x1fbf0; // from SEGMENTED DIGIT ZERO
|
||||
while (c <= 0x1fbf9) // ..to SEGMENTED DIGIT NINE
|
||||
charset[i++] = c++;
|
||||
// 20000..2A6DF; CJK Unified Ideographs Extension B
|
||||
c = 0x20000; // from <CJK Ideograph Extension B, First>
|
||||
while (c <= 0x2a6dd) // ..to <CJK Ideograph Extension B, Last>
|
||||
while (c <= 0x2a6df) // ..to <CJK Ideograph Extension B, Last>
|
||||
charset[i++] = c++;
|
||||
// 2A700..2B73F; CJK Unified Ideographs Extension C
|
||||
c = 0x2a700; // from <CJK Ideograph Extension C, First>
|
||||
while (c <= 0x2b734) // ..to <CJK Ideograph Extension C, Last>
|
||||
while (c <= 0x2b739) // ..to <CJK Ideograph Extension C, Last>
|
||||
charset[i++] = c++;
|
||||
// 2B740..2B81F; CJK Unified Ideographs Extension D
|
||||
c = 0x2b740; // from <CJK Ideograph Extension D, First>
|
||||
@@ -2396,6 +2580,10 @@ void init()
|
||||
c = 0x2ceb0; // from <CJK Ideograph Extension F, First>
|
||||
while (c <= 0x2ebe0) // ..to <CJK Ideograph Extension F, Last>
|
||||
charset[i++] = c++;
|
||||
// 2EBF0..2EE5F; CJK Unified Ideographs Extension I
|
||||
c = 0x2ebf0; // from <CJK Ideograph Extension I, First>
|
||||
while (c <= 0x2ee5d) // ..to <CJK Ideograph Extension I, Last>
|
||||
charset[i++] = c++;
|
||||
// 2F800..2FA1F; CJK Compatibility Ideographs Supplement
|
||||
c = 0x2f800; // from CJK COMPATIBILITY IDEOGRAPH-2F800
|
||||
while (c <= 0x2fa1d) // ..to CJK COMPATIBILITY IDEOGRAPH-2FA1D
|
||||
@@ -2404,6 +2592,10 @@ void init()
|
||||
c = 0x30000; // from <CJK Ideograph Extension G, First>
|
||||
while (c <= 0x3134a) // ..to <CJK Ideograph Extension G, Last>
|
||||
charset[i++] = c++;
|
||||
// 31350..323AF; CJK Unified Ideographs Extension H
|
||||
c = 0x31350; // from <CJK Ideograph Extension H, First>
|
||||
while (c <= 0x323af) // ..to <CJK Ideograph Extension H, Last>
|
||||
charset[i++] = c++;
|
||||
// E0000..E007F; Tags
|
||||
c = 0xe0020; // from TAG SPACE
|
||||
while (c <= 0xe007f) // ..to CANCEL TAG
|
||||
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -10,7 +10,6 @@ bulletproof-security
|
||||
catch-themes-demo-import
|
||||
chopslider
|
||||
custom-registration-form-builder-with-submission-manager
|
||||
depicter
|
||||
download-manager
|
||||
drag-and-drop-multiple-file-upload-contact-form-7
|
||||
dukapress
|
||||
@@ -30,6 +29,7 @@ learnpress
|
||||
loginizer
|
||||
masterstudy-lms-learning-management-system
|
||||
modern-events-calendar-lite
|
||||
modern-events-calendar-lite
|
||||
nextgen-gallery
|
||||
ninja-forms
|
||||
paid-memberships-pro
|
||||
@@ -48,11 +48,7 @@ simple-file-list
|
||||
slideshow-gallery
|
||||
sp-client-document-manager
|
||||
subscribe-to-comments
|
||||
suretriggers
|
||||
tatsu
|
||||
ultimate-member
|
||||
user-registration
|
||||
user-registration-pro
|
||||
website-contact-form-with-file-upload
|
||||
woocommerce-abandoned-cart
|
||||
woocommerce-payments
|
||||
@@ -60,17 +56,18 @@ wordpress-mobile-pack
|
||||
wordpress-popular-posts
|
||||
work-the-flow-file-upload
|
||||
wp-automatic
|
||||
wpdiscuz
|
||||
wp-easycart
|
||||
wp-fastest-cache
|
||||
wp-file-manager
|
||||
wp-gdpr-compliance
|
||||
wp-mobile-detector
|
||||
wp-mobile-edition
|
||||
wps-hide-login
|
||||
wpshop
|
||||
wp-symposium
|
||||
wp-symposium
|
||||
wp-time-capsule
|
||||
wptouch
|
||||
wp-ultimate-csv-importer
|
||||
wpdiscuz
|
||||
wps-hide-login
|
||||
wpshop
|
||||
wptouch
|
||||
wysija-newsletters
|
||||
|
||||
+10946
-9
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -9,16 +9,16 @@ module Rex::UserAgent
|
||||
# Taken from https://www.whatismybrowser.com/guides/the-latest-user-agent/
|
||||
#
|
||||
COMMON_AGENTS = [
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', # Chrome Windows
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', # Chrome MacOS
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', # Chrome Windows
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', # Chrome MacOS
|
||||
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.2903.86', # Edge Windows
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.3912.98', # Edge Windows
|
||||
|
||||
'Mozilla/5.0 (iPad; CPU OS 17_7_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Mobile/15E148 Safari/604.1', # Safari iPad
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15', # Safari MacOS
|
||||
'Mozilla/5.0 (iPad; CPU OS 18_7_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1', # Safari iPad
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15', # Safari MacOS
|
||||
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0', # Firefox Windows
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.7; rv:133.0) Gecko/20100101 Firefox/133.0' # Firefox MacOS
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:150.0) Gecko/20100101 Firefox/150.0', # Firefox Windows
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:150.0) Gecko/20100101 Firefox/150.0' # Firefox MacOS
|
||||
]
|
||||
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user