kuroko/modules/codecs/sbextra.krk
HarJIT fa6dbc8365
Expansion and fixes to codecs.sbextra docs. (#16)
Mostly expanding docs with more information, but also correcting a mistake
where the cp424 docstrings refer to cp273.
2021-10-07 07:18:11 +09:00

1006 lines
144 KiB
Python

"""
This module includes some additional single-byte encodings not specified by WHATWG.
As such, none of the codecs in this module should be used in HTML.
"""
from codecs.infrastructure import AsciiIncrementalEncoder, AsciiIncrementalDecoder, register_kuroko_codec, BaseEbcdicIncrementalEncoder, BaseEbcdicIncrementalDecoder, lazy_property
class Cp037IncrementalEncoder(BaseEbcdicIncrementalEncoder):
"""
IncrementalEncoder implementation for EBCDIC-037.
This is what might be considered the "default" EBCDIC set, and is used in the United States,
the Netherlands, Portugal, Brazil, Australia and New Zealand, and on the ESA/390 in Canada.
Amongst EBCDIC pages with the Latin-1 character repertoire, it is characterised by placing the
hard brackets (`[]`) at 0xBA and 0xBB.
"""
name = 'cp037'
html5name = None
@lazy_property
def sbcs_encode():
return {0: 0, 1: 1, 2: 2, 3: 3, 156: 4, 9: 5, 134: 6, 127: 7, 151: 8, 141: 9, 142: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 157: 20, 133: 21, 8: 22, 135: 23, 24: 24, 25: 25, 146: 26, 143: 27, 28: 28, 29: 29, 30: 30, 31: 31, 128: 32, 129: 33, 130: 34, 131: 35, 132: 36, 10: 37, 23: 38, 27: 39, 136: 40, 137: 41, 138: 42, 139: 43, 140: 44, 5: 45, 6: 46, 7: 47, 144: 48, 145: 49, 22: 50, 147: 51, 148: 52, 149: 53, 150: 54, 4: 55, 152: 56, 153: 57, 154: 58, 155: 59, 20: 60, 21: 61, 158: 62, 26: 63, 32: 64, 160: 65, 226: 66, 228: 67, 224: 68, 225: 69, 227: 70, 229: 71, 231: 72, 241: 73, 162: 74, 46: 75, 60: 76, 40: 77, 43: 78, 124: 79, 38: 80, 233: 81, 234: 82, 235: 83, 232: 84, 237: 85, 238: 86, 239: 87, 236: 88, 223: 89, 33: 90, 36: 91, 42: 92, 41: 93, 59: 94, 172: 95, 45: 96, 47: 97, 194: 98, 196: 99, 192: 100, 193: 101, 195: 102, 197: 103, 199: 104, 209: 105, 166: 106, 44: 107, 37: 108, 95: 109, 62: 110, 63: 111, 248: 112, 201: 113, 202: 114, 203: 115, 200: 116, 205: 117, 206: 118, 207: 119, 204: 120, 96: 121, 58: 122, 35: 123, 64: 124, 39: 125, 61: 126, 34: 127, 216: 128, 97: 129, 98: 130, 99: 131, 100: 132, 101: 133, 102: 134, 103: 135, 104: 136, 105: 137, 171: 138, 187: 139, 240: 140, 253: 141, 254: 142, 177: 143, 176: 144, 106: 145, 107: 146, 108: 147, 109: 148, 110: 149, 111: 150, 112: 151, 113: 152, 114: 153, 170: 154, 186: 155, 230: 156, 184: 157, 198: 158, 164: 159, 181: 160, 126: 161, 115: 162, 116: 163, 117: 164, 118: 165, 119: 166, 120: 167, 121: 168, 122: 169, 161: 170, 191: 171, 208: 172, 221: 173, 222: 174, 174: 175, 94: 176, 163: 177, 165: 178, 183: 179, 169: 180, 167: 181, 182: 182, 188: 183, 189: 184, 190: 185, 91: 186, 93: 187, 175: 188, 168: 189, 180: 190, 215: 191, 123: 192, 65: 193, 66: 194, 67: 195, 68: 196, 69: 197, 70: 198, 71: 199, 72: 200, 73: 201, 173: 202, 244: 203, 246: 204, 242: 205, 243: 206, 245: 207, 125: 208, 74: 209, 75: 210, 76: 211, 77: 212, 78: 213, 79: 214, 80: 215, 81: 216, 82: 217, 185: 218, 251: 219, 252: 220, 249: 221, 250: 222, 255: 223, 92: 224, 247: 225, 83: 226, 84: 227, 85: 228, 86: 229, 87: 230, 88: 231, 89: 232, 90: 233, 178: 234, 212: 235, 214: 236, 210: 237, 211: 238, 213: 239, 48: 240, 49: 241, 50: 242, 51: 243, 52: 244, 53: 245, 54: 246, 55: 247, 56: 248, 57: 249, 179: 250, 219: 251, 220: 252, 217: 253, 218: 254, 159: 255}
class Cp037IncrementalDecoder(BaseEbcdicIncrementalDecoder):
"""
IncrementalDecoder implementation for EBCDIC-037.
This is what might be considered the "default" EBCDIC set, and is used in the United States,
the Netherlands, Portugal, Brazil, Australia and New Zealand, and on the ESA/390 in Canada.
Amongst EBCDIC pages with the Latin-1 character repertoire, it is characterised by placing the
hard brackets (`[]`) at 0xBA and 0xBB.
"""
name = 'cp037'
html5name = None
@lazy_property
def sbcs_decode():
return {0: 0, 1: 1, 2: 2, 3: 3, 4: 156, 5: 9, 6: 134, 7: 127, 8: 151, 9: 141, 10: 142, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 157, 21: 133, 22: 8, 23: 135, 24: 24, 25: 25, 26: 146, 27: 143, 28: 28, 29: 29, 30: 30, 31: 31, 32: 128, 33: 129, 34: 130, 35: 131, 36: 132, 37: 10, 38: 23, 39: 27, 40: 136, 41: 137, 42: 138, 43: 139, 44: 140, 45: 5, 46: 6, 47: 7, 48: 144, 49: 145, 50: 22, 51: 147, 52: 148, 53: 149, 54: 150, 55: 4, 56: 152, 57: 153, 58: 154, 59: 155, 60: 20, 61: 21, 62: 158, 63: 26, 64: 32, 65: 160, 66: 226, 67: 228, 68: 224, 69: 225, 70: 227, 71: 229, 72: 231, 73: 241, 74: 162, 75: 46, 76: 60, 77: 40, 78: 43, 79: 124, 80: 38, 81: 233, 82: 234, 83: 235, 84: 232, 85: 237, 86: 238, 87: 239, 88: 236, 89: 223, 90: 33, 91: 36, 92: 42, 93: 41, 94: 59, 95: 172, 96: 45, 97: 47, 98: 194, 99: 196, 100: 192, 101: 193, 102: 195, 103: 197, 104: 199, 105: 209, 106: 166, 107: 44, 108: 37, 109: 95, 110: 62, 111: 63, 112: 248, 113: 201, 114: 202, 115: 203, 116: 200, 117: 205, 118: 206, 119: 207, 120: 204, 121: 96, 122: 58, 123: 35, 124: 64, 125: 39, 126: 61, 127: 34, 128: 216, 129: 97, 130: 98, 131: 99, 132: 100, 133: 101, 134: 102, 135: 103, 136: 104, 137: 105, 138: 171, 139: 187, 140: 240, 141: 253, 142: 254, 143: 177, 144: 176, 145: 106, 146: 107, 147: 108, 148: 109, 149: 110, 150: 111, 151: 112, 152: 113, 153: 114, 154: 170, 155: 186, 156: 230, 157: 184, 158: 198, 159: 164, 160: 181, 161: 126, 162: 115, 163: 116, 164: 117, 165: 118, 166: 119, 167: 120, 168: 121, 169: 122, 170: 161, 171: 191, 172: 208, 173: 221, 174: 222, 175: 174, 176: 94, 177: 163, 178: 165, 179: 183, 180: 169, 181: 167, 182: 182, 183: 188, 184: 189, 185: 190, 186: 91, 187: 93, 188: 175, 189: 168, 190: 180, 191: 215, 192: 123, 193: 65, 194: 66, 195: 67, 196: 68, 197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 173, 203: 244, 204: 246, 205: 242, 206: 243, 207: 245, 208: 125, 209: 74, 210: 75, 211: 76, 212: 77, 213: 78, 214: 79, 215: 80, 216: 81, 217: 82, 218: 185, 219: 251, 220: 252, 221: 249, 222: 250, 223: 255, 224: 92, 225: 247, 226: 83, 227: 84, 228: 85, 229: 86, 230: 87, 231: 88, 232: 89, 233: 90, 234: 178, 235: 212, 236: 214, 237: 210, 238: 211, 239: 213, 240: 48, 241: 49, 242: 50, 243: 51, 244: 52, 245: 53, 246: 54, 247: 55, 248: 56, 249: 57, 250: 179, 251: 219, 252: 220, 253: 217, 254: 218, 255: 159}
register_kuroko_codec(['cp037', '037', 'csibm037', 'ebcdic-cp-ca', 'ebcdic-cp-nl', 'ebcdic-cp-us', 'ebcdic-cp-wt', 'ibm037', 'ibm039'], Cp037IncrementalEncoder, Cp037IncrementalDecoder)
class Cp273IncrementalEncoder(BaseEbcdicIncrementalEncoder):
"""
IncrementalEncoder implementation for EBCDIC-273 (used in German-speaking locales). This is
somewhat related to EBCDIC-500, but with several character swaps corresponding to the
differences between DIN 66003 and ASCII.
"""
name = 'cp273'
html5name = None
@lazy_property
def sbcs_encode():
return {0: 0, 1: 1, 2: 2, 3: 3, 156: 4, 9: 5, 134: 6, 127: 7, 151: 8, 141: 9, 142: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 157: 20, 133: 21, 8: 22, 135: 23, 24: 24, 25: 25, 146: 26, 143: 27, 28: 28, 29: 29, 30: 30, 31: 31, 128: 32, 129: 33, 130: 34, 131: 35, 132: 36, 10: 37, 23: 38, 27: 39, 136: 40, 137: 41, 138: 42, 139: 43, 140: 44, 5: 45, 6: 46, 7: 47, 144: 48, 145: 49, 22: 50, 147: 51, 148: 52, 149: 53, 150: 54, 4: 55, 152: 56, 153: 57, 154: 58, 155: 59, 20: 60, 21: 61, 158: 62, 26: 63, 32: 64, 160: 65, 226: 66, 123: 67, 224: 68, 225: 69, 227: 70, 229: 71, 231: 72, 241: 73, 196: 74, 46: 75, 60: 76, 40: 77, 43: 78, 33: 79, 38: 80, 233: 81, 234: 82, 235: 83, 232: 84, 237: 85, 238: 86, 239: 87, 236: 88, 126: 89, 220: 90, 36: 91, 42: 92, 41: 93, 59: 94, 94: 95, 45: 96, 47: 97, 194: 98, 91: 99, 192: 100, 193: 101, 195: 102, 197: 103, 199: 104, 209: 105, 246: 106, 44: 107, 37: 108, 95: 109, 62: 110, 63: 111, 248: 112, 201: 113, 202: 114, 203: 115, 200: 116, 205: 117, 206: 118, 207: 119, 204: 120, 96: 121, 58: 122, 35: 123, 167: 124, 39: 125, 61: 126, 34: 127, 216: 128, 97: 129, 98: 130, 99: 131, 100: 132, 101: 133, 102: 134, 103: 135, 104: 136, 105: 137, 171: 138, 187: 139, 240: 140, 253: 141, 254: 142, 177: 143, 176: 144, 106: 145, 107: 146, 108: 147, 109: 148, 110: 149, 111: 150, 112: 151, 113: 152, 114: 153, 170: 154, 186: 155, 230: 156, 184: 157, 198: 158, 164: 159, 181: 160, 223: 161, 115: 162, 116: 163, 117: 164, 118: 165, 119: 166, 120: 167, 121: 168, 122: 169, 161: 170, 191: 171, 208: 172, 221: 173, 222: 174, 174: 175, 162: 176, 163: 177, 165: 178, 183: 179, 169: 180, 64: 181, 182: 182, 188: 183, 189: 184, 190: 185, 172: 186, 124: 187, 8254: 188, 168: 189, 180: 190, 215: 191, 228: 192, 65: 193, 66: 194, 67: 195, 68: 196, 69: 197, 70: 198, 71: 199, 72: 200, 73: 201, 173: 202, 244: 203, 166: 204, 242: 205, 243: 206, 245: 207, 252: 208, 74: 209, 75: 210, 76: 211, 77: 212, 78: 213, 79: 214, 80: 215, 81: 216, 82: 217, 185: 218, 251: 219, 125: 220, 249: 221, 250: 222, 255: 223, 214: 224, 247: 225, 83: 226, 84: 227, 85: 228, 86: 229, 87: 230, 88: 231, 89: 232, 90: 233, 178: 234, 212: 235, 92: 236, 210: 237, 211: 238, 213: 239, 48: 240, 49: 241, 50: 242, 51: 243, 52: 244, 53: 245, 54: 246, 55: 247, 56: 248, 57: 249, 179: 250, 219: 251, 93: 252, 217: 253, 218: 254, 159: 255}
class Cp273IncrementalDecoder(BaseEbcdicIncrementalDecoder):
"""
IncrementalDecoder implementation for EBCDIC-273 (used in German-speaking locales). This is
somewhat related to EBCDIC-500, but with several character swaps corresponding to the
differences between DIN 66003 and ASCII.
"""
name = 'cp273'
html5name = None
@lazy_property
def sbcs_decode():
return {0: 0, 1: 1, 2: 2, 3: 3, 4: 156, 5: 9, 6: 134, 7: 127, 8: 151, 9: 141, 10: 142, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 157, 21: 133, 22: 8, 23: 135, 24: 24, 25: 25, 26: 146, 27: 143, 28: 28, 29: 29, 30: 30, 31: 31, 32: 128, 33: 129, 34: 130, 35: 131, 36: 132, 37: 10, 38: 23, 39: 27, 40: 136, 41: 137, 42: 138, 43: 139, 44: 140, 45: 5, 46: 6, 47: 7, 48: 144, 49: 145, 50: 22, 51: 147, 52: 148, 53: 149, 54: 150, 55: 4, 56: 152, 57: 153, 58: 154, 59: 155, 60: 20, 61: 21, 62: 158, 63: 26, 64: 32, 65: 160, 66: 226, 67: 123, 68: 224, 69: 225, 70: 227, 71: 229, 72: 231, 73: 241, 74: 196, 75: 46, 76: 60, 77: 40, 78: 43, 79: 33, 80: 38, 81: 233, 82: 234, 83: 235, 84: 232, 85: 237, 86: 238, 87: 239, 88: 236, 89: 126, 90: 220, 91: 36, 92: 42, 93: 41, 94: 59, 95: 94, 96: 45, 97: 47, 98: 194, 99: 91, 100: 192, 101: 193, 102: 195, 103: 197, 104: 199, 105: 209, 106: 246, 107: 44, 108: 37, 109: 95, 110: 62, 111: 63, 112: 248, 113: 201, 114: 202, 115: 203, 116: 200, 117: 205, 118: 206, 119: 207, 120: 204, 121: 96, 122: 58, 123: 35, 124: 167, 125: 39, 126: 61, 127: 34, 128: 216, 129: 97, 130: 98, 131: 99, 132: 100, 133: 101, 134: 102, 135: 103, 136: 104, 137: 105, 138: 171, 139: 187, 140: 240, 141: 253, 142: 254, 143: 177, 144: 176, 145: 106, 146: 107, 147: 108, 148: 109, 149: 110, 150: 111, 151: 112, 152: 113, 153: 114, 154: 170, 155: 186, 156: 230, 157: 184, 158: 198, 159: 164, 160: 181, 161: 223, 162: 115, 163: 116, 164: 117, 165: 118, 166: 119, 167: 120, 168: 121, 169: 122, 170: 161, 171: 191, 172: 208, 173: 221, 174: 222, 175: 174, 176: 162, 177: 163, 178: 165, 179: 183, 180: 169, 181: 64, 182: 182, 183: 188, 184: 189, 185: 190, 186: 172, 187: 124, 188: 8254, 189: 168, 190: 180, 191: 215, 192: 228, 193: 65, 194: 66, 195: 67, 196: 68, 197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 173, 203: 244, 204: 166, 205: 242, 206: 243, 207: 245, 208: 252, 209: 74, 210: 75, 211: 76, 212: 77, 213: 78, 214: 79, 215: 80, 216: 81, 217: 82, 218: 185, 219: 251, 220: 125, 221: 249, 222: 250, 223: 255, 224: 214, 225: 247, 226: 83, 227: 84, 228: 85, 229: 86, 230: 87, 231: 88, 232: 89, 233: 90, 234: 178, 235: 212, 236: 92, 237: 210, 238: 211, 239: 213, 240: 48, 241: 49, 242: 50, 243: 51, 244: 52, 245: 53, 246: 54, 247: 55, 248: 56, 249: 57, 250: 179, 251: 219, 252: 93, 253: 217, 254: 218, 255: 159}
register_kuroko_codec(['cp273', '273', 'ibm273', 'csibm273'], Cp273IncrementalEncoder, Cp273IncrementalDecoder)
class Cp424IncrementalEncoder(BaseEbcdicIncrementalEncoder):
"""
IncrementalEncoder implementation for EBCDIC-424 (used in Hebrew-speaking locales).
"""
name = 'cp424'
html5name = None
@lazy_property
def sbcs_encode():
return {0: 0, 1: 1, 2: 2, 3: 3, 156: 4, 9: 5, 134: 6, 127: 7, 151: 8, 141: 9, 142: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 157: 20, 133: 21, 8: 22, 135: 23, 24: 24, 25: 25, 146: 26, 143: 27, 28: 28, 29: 29, 30: 30, 31: 31, 128: 32, 129: 33, 130: 34, 131: 35, 132: 36, 10: 37, 23: 38, 27: 39, 136: 40, 137: 41, 138: 42, 139: 43, 140: 44, 5: 45, 6: 46, 7: 47, 144: 48, 145: 49, 22: 50, 147: 51, 148: 52, 149: 53, 150: 54, 4: 55, 152: 56, 153: 57, 154: 58, 155: 59, 20: 60, 21: 61, 158: 62, 26: 63, 32: 64, 1488: 65, 1489: 66, 1490: 67, 1491: 68, 1492: 69, 1493: 70, 1494: 71, 1495: 72, 1496: 73, 162: 74, 46: 75, 60: 76, 40: 77, 43: 78, 124: 79, 38: 80, 1497: 81, 1498: 82, 1499: 83, 1500: 84, 1501: 85, 1502: 86, 1503: 87, 1504: 88, 1505: 89, 33: 90, 36: 91, 42: 92, 41: 93, 59: 94, 172: 95, 45: 96, 47: 97, 1506: 98, 1507: 99, 1508: 100, 1509: 101, 1510: 102, 1511: 103, 1512: 104, 1513: 105, 166: 106, 44: 107, 37: 108, 95: 109, 62: 110, 63: 111, 1514: 113, 160: 116, 8215: 120, 96: 121, 58: 122, 35: 123, 64: 124, 39: 125, 61: 126, 34: 127, 97: 129, 98: 130, 99: 131, 100: 132, 101: 133, 102: 134, 103: 135, 104: 136, 105: 137, 171: 138, 187: 139, 177: 143, 176: 144, 106: 145, 107: 146, 108: 147, 109: 148, 110: 149, 111: 150, 112: 151, 113: 152, 114: 153, 184: 157, 164: 159, 181: 160, 126: 161, 115: 162, 116: 163, 117: 164, 118: 165, 119: 166, 120: 167, 121: 168, 122: 169, 174: 175, 94: 176, 163: 177, 165: 178, 183: 179, 169: 180, 167: 181, 182: 182, 188: 183, 189: 184, 190: 185, 91: 186, 93: 187, 175: 188, 168: 189, 180: 190, 215: 191, 123: 192, 65: 193, 66: 194, 67: 195, 68: 196, 69: 197, 70: 198, 71: 199, 72: 200, 73: 201, 173: 202, 125: 208, 74: 209, 75: 210, 76: 211, 77: 212, 78: 213, 79: 214, 80: 215, 81: 216, 82: 217, 185: 218, 92: 224, 247: 225, 83: 226, 84: 227, 85: 228, 86: 229, 87: 230, 88: 231, 89: 232, 90: 233, 178: 234, 48: 240, 49: 241, 50: 242, 51: 243, 52: 244, 53: 245, 54: 246, 55: 247, 56: 248, 57: 249, 179: 250, 159: 255}
class Cp424IncrementalDecoder(BaseEbcdicIncrementalDecoder):
"""
IncrementalEncoder implementation for EBCDIC-424 (used in Hebrew-speaking locales).
"""
name = 'cp424'
html5name = None
@lazy_property
def sbcs_decode():
return {0: 0, 1: 1, 2: 2, 3: 3, 4: 156, 5: 9, 6: 134, 7: 127, 8: 151, 9: 141, 10: 142, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 157, 21: 133, 22: 8, 23: 135, 24: 24, 25: 25, 26: 146, 27: 143, 28: 28, 29: 29, 30: 30, 31: 31, 32: 128, 33: 129, 34: 130, 35: 131, 36: 132, 37: 10, 38: 23, 39: 27, 40: 136, 41: 137, 42: 138, 43: 139, 44: 140, 45: 5, 46: 6, 47: 7, 48: 144, 49: 145, 50: 22, 51: 147, 52: 148, 53: 149, 54: 150, 55: 4, 56: 152, 57: 153, 58: 154, 59: 155, 60: 20, 61: 21, 62: 158, 63: 26, 64: 32, 65: 1488, 66: 1489, 67: 1490, 68: 1491, 69: 1492, 70: 1493, 71: 1494, 72: 1495, 73: 1496, 74: 162, 75: 46, 76: 60, 77: 40, 78: 43, 79: 124, 80: 38, 81: 1497, 82: 1498, 83: 1499, 84: 1500, 85: 1501, 86: 1502, 87: 1503, 88: 1504, 89: 1505, 90: 33, 91: 36, 92: 42, 93: 41, 94: 59, 95: 172, 96: 45, 97: 47, 98: 1506, 99: 1507, 100: 1508, 101: 1509, 102: 1510, 103: 1511, 104: 1512, 105: 1513, 106: 166, 107: 44, 108: 37, 109: 95, 110: 62, 111: 63, 113: 1514, 116: 160, 120: 8215, 121: 96, 122: 58, 123: 35, 124: 64, 125: 39, 126: 61, 127: 34, 129: 97, 130: 98, 131: 99, 132: 100, 133: 101, 134: 102, 135: 103, 136: 104, 137: 105, 138: 171, 139: 187, 143: 177, 144: 176, 145: 106, 146: 107, 147: 108, 148: 109, 149: 110, 150: 111, 151: 112, 152: 113, 153: 114, 157: 184, 159: 164, 160: 181, 161: 126, 162: 115, 163: 116, 164: 117, 165: 118, 166: 119, 167: 120, 168: 121, 169: 122, 175: 174, 176: 94, 177: 163, 178: 165, 179: 183, 180: 169, 181: 167, 182: 182, 183: 188, 184: 189, 185: 190, 186: 91, 187: 93, 188: 175, 189: 168, 190: 180, 191: 215, 192: 123, 193: 65, 194: 66, 195: 67, 196: 68, 197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 173, 208: 125, 209: 74, 210: 75, 211: 76, 212: 77, 213: 78, 214: 79, 215: 80, 216: 81, 217: 82, 218: 185, 224: 92, 225: 247, 226: 83, 227: 84, 228: 85, 229: 86, 230: 87, 231: 88, 232: 89, 233: 90, 234: 178, 240: 48, 241: 49, 242: 50, 243: 51, 244: 52, 245: 53, 246: 54, 247: 55, 248: 56, 249: 57, 250: 179, 255: 159}
register_kuroko_codec(['cp424', '424', 'csibm424', 'ebcdic-cp-he', 'ibm424'], Cp424IncrementalEncoder, Cp424IncrementalDecoder)
class Cp437IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-437 (the default, hardware or United States DOS encoding)
"""
name = 'cp437'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 228: 132, 224: 133, 229: 134, 231: 135, 234: 136, 235: 137, 232: 138, 239: 139, 238: 140, 236: 141, 196: 142, 197: 143, 201: 144, 230: 145, 198: 146, 244: 147, 246: 148, 242: 149, 251: 150, 249: 151, 255: 152, 214: 153, 220: 154, 162: 155, 163: 156, 165: 157, 8359: 158, 402: 159, 225: 160, 237: 161, 243: 162, 250: 163, 241: 164, 209: 165, 170: 166, 186: 167, 191: 168, 8976: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 945: 224, 223: 225, 915: 226, 960: 227, 931: 228, 963: 229, 181: 230, 964: 231, 934: 232, 920: 233, 937: 234, 948: 235, 8734: 236, 966: 237, 949: 238, 8745: 239, 8801: 240, 177: 241, 8805: 242, 8804: 243, 8992: 244, 8993: 245, 247: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp437IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-437 (the default, hardware or United States DOS encoding)
"""
name = 'cp437'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 228, 133: 224, 134: 229, 135: 231, 136: 234, 137: 235, 138: 232, 139: 239, 140: 238, 141: 236, 142: 196, 143: 197, 144: 201, 145: 230, 146: 198, 147: 244, 148: 246, 149: 242, 150: 251, 151: 249, 152: 255, 153: 214, 154: 220, 155: 162, 156: 163, 157: 165, 158: 8359, 159: 402, 160: 225, 161: 237, 162: 243, 163: 250, 164: 241, 165: 209, 166: 170, 167: 186, 168: 191, 169: 8976, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 945, 225: 223, 226: 915, 227: 960, 228: 931, 229: 963, 230: 181, 231: 964, 232: 934, 233: 920, 234: 937, 235: 948, 236: 8734, 237: 966, 238: 949, 239: 8745, 240: 8801, 241: 177, 242: 8805, 243: 8804, 244: 8992, 245: 8993, 246: 247, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp437', '437', 'cspc8codepage437', 'ibm437', 'oem-us'], Cp437IncrementalEncoder, Cp437IncrementalDecoder)
class Cp500IncrementalEncoder(BaseEbcdicIncrementalEncoder):
"""
IncrementalEncoder implementation for EBCDIC-500.
This is the so-called "International" EBCDIC locale, used in Belgium and Switzerland, as well
as on the AS/400 in Canada. Amongst EBCDIC pages with the Latin-1 character repertoire, it is
characterised by placing the hard brackets (`[]`) at 0x4A and 0x5A.
"""
name = 'cp500'
html5name = None
@lazy_property
def sbcs_encode():
return {0: 0, 1: 1, 2: 2, 3: 3, 156: 4, 9: 5, 134: 6, 127: 7, 151: 8, 141: 9, 142: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 157: 20, 133: 21, 8: 22, 135: 23, 24: 24, 25: 25, 146: 26, 143: 27, 28: 28, 29: 29, 30: 30, 31: 31, 128: 32, 129: 33, 130: 34, 131: 35, 132: 36, 10: 37, 23: 38, 27: 39, 136: 40, 137: 41, 138: 42, 139: 43, 140: 44, 5: 45, 6: 46, 7: 47, 144: 48, 145: 49, 22: 50, 147: 51, 148: 52, 149: 53, 150: 54, 4: 55, 152: 56, 153: 57, 154: 58, 155: 59, 20: 60, 21: 61, 158: 62, 26: 63, 32: 64, 160: 65, 226: 66, 228: 67, 224: 68, 225: 69, 227: 70, 229: 71, 231: 72, 241: 73, 91: 74, 46: 75, 60: 76, 40: 77, 43: 78, 33: 79, 38: 80, 233: 81, 234: 82, 235: 83, 232: 84, 237: 85, 238: 86, 239: 87, 236: 88, 223: 89, 93: 90, 36: 91, 42: 92, 41: 93, 59: 94, 94: 95, 45: 96, 47: 97, 194: 98, 196: 99, 192: 100, 193: 101, 195: 102, 197: 103, 199: 104, 209: 105, 166: 106, 44: 107, 37: 108, 95: 109, 62: 110, 63: 111, 248: 112, 201: 113, 202: 114, 203: 115, 200: 116, 205: 117, 206: 118, 207: 119, 204: 120, 96: 121, 58: 122, 35: 123, 64: 124, 39: 125, 61: 126, 34: 127, 216: 128, 97: 129, 98: 130, 99: 131, 100: 132, 101: 133, 102: 134, 103: 135, 104: 136, 105: 137, 171: 138, 187: 139, 240: 140, 253: 141, 254: 142, 177: 143, 176: 144, 106: 145, 107: 146, 108: 147, 109: 148, 110: 149, 111: 150, 112: 151, 113: 152, 114: 153, 170: 154, 186: 155, 230: 156, 184: 157, 198: 158, 164: 159, 181: 160, 126: 161, 115: 162, 116: 163, 117: 164, 118: 165, 119: 166, 120: 167, 121: 168, 122: 169, 161: 170, 191: 171, 208: 172, 221: 173, 222: 174, 174: 175, 162: 176, 163: 177, 165: 178, 183: 179, 169: 180, 167: 181, 182: 182, 188: 183, 189: 184, 190: 185, 172: 186, 124: 187, 175: 188, 168: 189, 180: 190, 215: 191, 123: 192, 65: 193, 66: 194, 67: 195, 68: 196, 69: 197, 70: 198, 71: 199, 72: 200, 73: 201, 173: 202, 244: 203, 246: 204, 242: 205, 243: 206, 245: 207, 125: 208, 74: 209, 75: 210, 76: 211, 77: 212, 78: 213, 79: 214, 80: 215, 81: 216, 82: 217, 185: 218, 251: 219, 252: 220, 249: 221, 250: 222, 255: 223, 92: 224, 247: 225, 83: 226, 84: 227, 85: 228, 86: 229, 87: 230, 88: 231, 89: 232, 90: 233, 178: 234, 212: 235, 214: 236, 210: 237, 211: 238, 213: 239, 48: 240, 49: 241, 50: 242, 51: 243, 52: 244, 53: 245, 54: 246, 55: 247, 56: 248, 57: 249, 179: 250, 219: 251, 220: 252, 217: 253, 218: 254, 159: 255}
class Cp500IncrementalDecoder(BaseEbcdicIncrementalDecoder):
"""
IncrementalDecoder implementation for EBCDIC-500.
This is the so-called "International" EBCDIC locale, used in Belgium and Switzerland, as well
as on the AS/400 in Canada. Amongst EBCDIC pages with the Latin-1 character repertoire, it is
characterised by placing the hard brackets (`[]`) at 0x4A and 0x5A.
"""
name = 'cp500'
html5name = None
@lazy_property
def sbcs_decode():
return {0: 0, 1: 1, 2: 2, 3: 3, 4: 156, 5: 9, 6: 134, 7: 127, 8: 151, 9: 141, 10: 142, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 157, 21: 133, 22: 8, 23: 135, 24: 24, 25: 25, 26: 146, 27: 143, 28: 28, 29: 29, 30: 30, 31: 31, 32: 128, 33: 129, 34: 130, 35: 131, 36: 132, 37: 10, 38: 23, 39: 27, 40: 136, 41: 137, 42: 138, 43: 139, 44: 140, 45: 5, 46: 6, 47: 7, 48: 144, 49: 145, 50: 22, 51: 147, 52: 148, 53: 149, 54: 150, 55: 4, 56: 152, 57: 153, 58: 154, 59: 155, 60: 20, 61: 21, 62: 158, 63: 26, 64: 32, 65: 160, 66: 226, 67: 228, 68: 224, 69: 225, 70: 227, 71: 229, 72: 231, 73: 241, 74: 91, 75: 46, 76: 60, 77: 40, 78: 43, 79: 33, 80: 38, 81: 233, 82: 234, 83: 235, 84: 232, 85: 237, 86: 238, 87: 239, 88: 236, 89: 223, 90: 93, 91: 36, 92: 42, 93: 41, 94: 59, 95: 94, 96: 45, 97: 47, 98: 194, 99: 196, 100: 192, 101: 193, 102: 195, 103: 197, 104: 199, 105: 209, 106: 166, 107: 44, 108: 37, 109: 95, 110: 62, 111: 63, 112: 248, 113: 201, 114: 202, 115: 203, 116: 200, 117: 205, 118: 206, 119: 207, 120: 204, 121: 96, 122: 58, 123: 35, 124: 64, 125: 39, 126: 61, 127: 34, 128: 216, 129: 97, 130: 98, 131: 99, 132: 100, 133: 101, 134: 102, 135: 103, 136: 104, 137: 105, 138: 171, 139: 187, 140: 240, 141: 253, 142: 254, 143: 177, 144: 176, 145: 106, 146: 107, 147: 108, 148: 109, 149: 110, 150: 111, 151: 112, 152: 113, 153: 114, 154: 170, 155: 186, 156: 230, 157: 184, 158: 198, 159: 164, 160: 181, 161: 126, 162: 115, 163: 116, 164: 117, 165: 118, 166: 119, 167: 120, 168: 121, 169: 122, 170: 161, 171: 191, 172: 208, 173: 221, 174: 222, 175: 174, 176: 162, 177: 163, 178: 165, 179: 183, 180: 169, 181: 167, 182: 182, 183: 188, 184: 189, 185: 190, 186: 172, 187: 124, 188: 175, 189: 168, 190: 180, 191: 215, 192: 123, 193: 65, 194: 66, 195: 67, 196: 68, 197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 173, 203: 244, 204: 246, 205: 242, 206: 243, 207: 245, 208: 125, 209: 74, 210: 75, 211: 76, 212: 77, 213: 78, 214: 79, 215: 80, 216: 81, 217: 82, 218: 185, 219: 251, 220: 252, 221: 249, 222: 250, 223: 255, 224: 92, 225: 247, 226: 83, 227: 84, 228: 85, 229: 86, 230: 87, 231: 88, 232: 89, 233: 90, 234: 178, 235: 212, 236: 214, 237: 210, 238: 211, 239: 213, 240: 48, 241: 49, 242: 50, 243: 51, 244: 52, 245: 53, 246: 54, 247: 55, 248: 56, 249: 57, 250: 179, 251: 219, 252: 220, 253: 217, 254: 218, 255: 159}
register_kuroko_codec(['cp500', '500', 'csibm500', 'ebcdic-cp-be', 'ebcdic-cp-ch', 'ibm500'], Cp500IncrementalEncoder, Cp500IncrementalDecoder)
class Cp720IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-720 (Arabic Letters with Box Drawing)
Note: OEM-720 competed with OEM-864 (which used a different layout, did not include box drawing
characters, included positional forms rather than general letters for Arabic characters, and
included separate East Arabic digits).
"""
name = 'cp720'
html5name = None
@lazy_property
def encoding_map():
return {128: 128, 129: 129, 233: 130, 226: 131, 132: 132, 224: 133, 134: 134, 231: 135, 234: 136, 235: 137, 232: 138, 239: 139, 238: 140, 141: 141, 142: 142, 143: 143, 144: 144, 1617: 145, 1618: 146, 244: 147, 164: 148, 1600: 149, 251: 150, 249: 151, 1569: 152, 1570: 153, 1571: 154, 1572: 155, 163: 156, 1573: 157, 1574: 158, 1575: 159, 1576: 160, 1577: 161, 1578: 162, 1579: 163, 1580: 164, 1581: 165, 1582: 166, 1583: 167, 1584: 168, 1585: 169, 1586: 170, 1587: 171, 1588: 172, 1589: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 1590: 224, 1591: 225, 1592: 226, 1593: 227, 1594: 228, 1601: 229, 181: 230, 1602: 231, 1603: 232, 1604: 233, 1605: 234, 1606: 235, 1607: 236, 1608: 237, 1609: 238, 1610: 239, 8801: 240, 1611: 241, 1612: 242, 1613: 243, 1614: 244, 1615: 245, 1616: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp720IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-720 (Arabic Letters with Box Drawing)
Note: OEM-720 competed with OEM-864 (which used a different layout, did not include box drawing
characters, included positional forms rather than general letters for Arabic characters, and
included separate East Arabic digits).
"""
name = 'cp720'
html5name = None
@lazy_property
def decoding_map():
return {128: 128, 129: 129, 130: 233, 131: 226, 132: 132, 133: 224, 134: 134, 135: 231, 136: 234, 137: 235, 138: 232, 139: 239, 140: 238, 141: 141, 142: 142, 143: 143, 144: 144, 145: 1617, 146: 1618, 147: 244, 148: 164, 149: 1600, 150: 251, 151: 249, 152: 1569, 153: 1570, 154: 1571, 155: 1572, 156: 163, 157: 1573, 158: 1574, 159: 1575, 160: 1576, 161: 1577, 162: 1578, 163: 1579, 164: 1580, 165: 1581, 166: 1582, 167: 1583, 168: 1584, 169: 1585, 170: 1586, 171: 1587, 172: 1588, 173: 1589, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 1590, 225: 1591, 226: 1592, 227: 1593, 228: 1594, 229: 1601, 230: 181, 231: 1602, 232: 1603, 233: 1604, 234: 1605, 235: 1606, 236: 1607, 237: 1608, 238: 1609, 239: 1610, 240: 8801, 241: 1611, 242: 1612, 243: 1613, 244: 1614, 245: 1615, 246: 1616, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp720'], Cp720IncrementalEncoder, Cp720IncrementalDecoder)
class Cp737IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-737 (Greek with Box Drawing).
Note: OEM-737 competed with OEM-869 (which used a different Greek layout and preserved only a
subset of the box drawing characters, but included letters with combined trema/acute).
"""
name = 'cp737'
html5name = None
@lazy_property
def encoding_map():
return {913: 128, 914: 129, 915: 130, 916: 131, 917: 132, 918: 133, 919: 134, 920: 135, 921: 136, 922: 137, 923: 138, 924: 139, 925: 140, 926: 141, 927: 142, 928: 143, 929: 144, 931: 145, 932: 146, 933: 147, 934: 148, 935: 149, 936: 150, 937: 151, 945: 152, 946: 153, 947: 154, 948: 155, 949: 156, 950: 157, 951: 158, 952: 159, 953: 160, 954: 161, 955: 162, 956: 163, 957: 164, 958: 165, 959: 166, 960: 167, 961: 168, 963: 169, 962: 170, 964: 171, 965: 172, 966: 173, 967: 174, 968: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 969: 224, 940: 225, 941: 226, 942: 227, 970: 228, 943: 229, 972: 230, 973: 231, 971: 232, 974: 233, 902: 234, 904: 235, 905: 236, 906: 237, 908: 238, 910: 239, 911: 240, 177: 241, 8805: 242, 8804: 243, 938: 244, 939: 245, 247: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp737IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-737 (Greek with Box Drawing).
Note: OEM-737 competed with OEM-869 (which used a different Greek layout and preserved only a
subset of the box drawing characters, but included letters with combined trema/acute).
"""
name = 'cp737'
html5name = None
@lazy_property
def decoding_map():
return {128: 913, 129: 914, 130: 915, 131: 916, 132: 917, 133: 918, 134: 919, 135: 920, 136: 921, 137: 922, 138: 923, 139: 924, 140: 925, 141: 926, 142: 927, 143: 928, 144: 929, 145: 931, 146: 932, 147: 933, 148: 934, 149: 935, 150: 936, 151: 937, 152: 945, 153: 946, 154: 947, 155: 948, 156: 949, 157: 950, 158: 951, 159: 952, 160: 953, 161: 954, 162: 955, 163: 956, 164: 957, 165: 958, 166: 959, 167: 960, 168: 961, 169: 963, 170: 962, 171: 964, 172: 965, 173: 966, 174: 967, 175: 968, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 969, 225: 940, 226: 941, 227: 942, 228: 970, 229: 943, 230: 972, 231: 973, 232: 971, 233: 974, 234: 902, 235: 904, 236: 905, 237: 906, 238: 908, 239: 910, 240: 911, 241: 177, 242: 8805, 243: 8804, 244: 938, 245: 939, 246: 247, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp737'], Cp737IncrementalEncoder, Cp737IncrementalDecoder)
class Cp775IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-775 (Baltic Rim)
"""
name = 'cp775'
html5name = None
@lazy_property
def encoding_map():
return {262: 128, 252: 129, 233: 130, 257: 131, 228: 132, 291: 133, 229: 134, 263: 135, 322: 136, 275: 137, 342: 138, 343: 139, 299: 140, 377: 141, 196: 142, 197: 143, 201: 144, 230: 145, 198: 146, 333: 147, 246: 148, 290: 149, 162: 150, 346: 151, 347: 152, 214: 153, 220: 154, 248: 155, 163: 156, 216: 157, 215: 158, 164: 159, 256: 160, 298: 161, 243: 162, 379: 163, 380: 164, 378: 165, 8221: 166, 166: 167, 169: 168, 174: 169, 172: 170, 189: 171, 188: 172, 321: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 260: 181, 268: 182, 280: 183, 278: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 302: 189, 352: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 370: 198, 362: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 381: 207, 261: 208, 269: 209, 281: 210, 279: 211, 303: 212, 353: 213, 371: 214, 363: 215, 382: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 211: 224, 223: 225, 332: 226, 323: 227, 245: 228, 213: 229, 181: 230, 324: 231, 310: 232, 311: 233, 315: 234, 316: 235, 326: 236, 274: 237, 325: 238, 8217: 239, 173: 240, 177: 241, 8220: 242, 190: 243, 182: 244, 167: 245, 247: 246, 8222: 247, 176: 248, 8729: 249, 183: 250, 185: 251, 179: 252, 178: 253, 9632: 254, 160: 255}
class Cp775IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-775 (Baltic Rim)
"""
name = 'cp775'
html5name = None
@lazy_property
def decoding_map():
return {128: 262, 129: 252, 130: 233, 131: 257, 132: 228, 133: 291, 134: 229, 135: 263, 136: 322, 137: 275, 138: 342, 139: 343, 140: 299, 141: 377, 142: 196, 143: 197, 144: 201, 145: 230, 146: 198, 147: 333, 148: 246, 149: 290, 150: 162, 151: 346, 152: 347, 153: 214, 154: 220, 155: 248, 156: 163, 157: 216, 158: 215, 159: 164, 160: 256, 161: 298, 162: 243, 163: 379, 164: 380, 165: 378, 166: 8221, 167: 166, 168: 169, 169: 174, 170: 172, 171: 189, 172: 188, 173: 321, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 260, 182: 268, 183: 280, 184: 278, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 302, 190: 352, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 370, 199: 362, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 381, 208: 261, 209: 269, 210: 281, 211: 279, 212: 303, 213: 353, 214: 371, 215: 363, 216: 382, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 211, 225: 223, 226: 332, 227: 323, 228: 245, 229: 213, 230: 181, 231: 324, 232: 310, 233: 311, 234: 315, 235: 316, 236: 326, 237: 274, 238: 325, 239: 8217, 240: 173, 241: 177, 242: 8220, 243: 190, 244: 182, 245: 167, 246: 247, 247: 8222, 248: 176, 249: 8729, 250: 183, 251: 185, 252: 179, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp775', '775', 'cspc775baltic', 'ibm775'], Cp775IncrementalEncoder, Cp775IncrementalDecoder)
class Cp850IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-850 (Western Europe and Canada)
"""
name = 'cp850'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 228: 132, 224: 133, 229: 134, 231: 135, 234: 136, 235: 137, 232: 138, 239: 139, 238: 140, 236: 141, 196: 142, 197: 143, 201: 144, 230: 145, 198: 146, 244: 147, 246: 148, 242: 149, 251: 150, 249: 151, 255: 152, 214: 153, 220: 154, 248: 155, 163: 156, 216: 157, 215: 158, 402: 159, 225: 160, 237: 161, 243: 162, 250: 163, 241: 164, 209: 165, 170: 166, 186: 167, 191: 168, 174: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 193: 181, 194: 182, 192: 183, 169: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 162: 189, 165: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 227: 198, 195: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 164: 207, 240: 208, 208: 209, 202: 210, 203: 211, 200: 212, 305: 213, 205: 214, 206: 215, 207: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 166: 221, 204: 222, 9600: 223, 211: 224, 223: 225, 212: 226, 210: 227, 245: 228, 213: 229, 181: 230, 254: 231, 222: 232, 218: 233, 219: 234, 217: 235, 253: 236, 221: 237, 175: 238, 180: 239, 173: 240, 177: 241, 8215: 242, 190: 243, 182: 244, 167: 245, 247: 246, 184: 247, 176: 248, 168: 249, 183: 250, 185: 251, 179: 252, 178: 253, 9632: 254, 160: 255}
class Cp850IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-850 (Western Europe and Canada)
"""
name = 'cp850'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 228, 133: 224, 134: 229, 135: 231, 136: 234, 137: 235, 138: 232, 139: 239, 140: 238, 141: 236, 142: 196, 143: 197, 144: 201, 145: 230, 146: 198, 147: 244, 148: 246, 149: 242, 150: 251, 151: 249, 152: 255, 153: 214, 154: 220, 155: 248, 156: 163, 157: 216, 158: 215, 159: 402, 160: 225, 161: 237, 162: 243, 163: 250, 164: 241, 165: 209, 166: 170, 167: 186, 168: 191, 169: 174, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 193, 182: 194, 183: 192, 184: 169, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 162, 190: 165, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 227, 199: 195, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 164, 208: 240, 209: 208, 210: 202, 211: 203, 212: 200, 213: 305, 214: 205, 215: 206, 216: 207, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 166, 222: 204, 223: 9600, 224: 211, 225: 223, 226: 212, 227: 210, 228: 245, 229: 213, 230: 181, 231: 254, 232: 222, 233: 218, 234: 219, 235: 217, 236: 253, 237: 221, 238: 175, 239: 180, 240: 173, 241: 177, 242: 8215, 243: 190, 244: 182, 245: 167, 246: 247, 247: 184, 248: 176, 249: 168, 250: 183, 251: 185, 252: 179, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp850', '850', 'cspc850multilingual', 'ibm850'], Cp850IncrementalEncoder, Cp850IncrementalDecoder)
class Cp852IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-852 (Central Europe)
"""
name = 'cp852'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 228: 132, 367: 133, 263: 134, 231: 135, 322: 136, 235: 137, 336: 138, 337: 139, 238: 140, 377: 141, 196: 142, 262: 143, 201: 144, 313: 145, 314: 146, 244: 147, 246: 148, 317: 149, 318: 150, 346: 151, 347: 152, 214: 153, 220: 154, 356: 155, 357: 156, 321: 157, 215: 158, 269: 159, 225: 160, 237: 161, 243: 162, 250: 163, 260: 164, 261: 165, 381: 166, 382: 167, 280: 168, 281: 169, 172: 170, 378: 171, 268: 172, 351: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 193: 181, 194: 182, 282: 183, 350: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 379: 189, 380: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 258: 198, 259: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 164: 207, 273: 208, 272: 209, 270: 210, 203: 211, 271: 212, 327: 213, 205: 214, 206: 215, 283: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 354: 221, 366: 222, 9600: 223, 211: 224, 223: 225, 212: 226, 323: 227, 324: 228, 328: 229, 352: 230, 353: 231, 340: 232, 218: 233, 341: 234, 368: 235, 253: 236, 221: 237, 355: 238, 180: 239, 173: 240, 733: 241, 731: 242, 711: 243, 728: 244, 167: 245, 247: 246, 184: 247, 176: 248, 168: 249, 729: 250, 369: 251, 344: 252, 345: 253, 9632: 254, 160: 255}
class Cp852IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-852 (Central Europe)
"""
name = 'cp852'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 228, 133: 367, 134: 263, 135: 231, 136: 322, 137: 235, 138: 336, 139: 337, 140: 238, 141: 377, 142: 196, 143: 262, 144: 201, 145: 313, 146: 314, 147: 244, 148: 246, 149: 317, 150: 318, 151: 346, 152: 347, 153: 214, 154: 220, 155: 356, 156: 357, 157: 321, 158: 215, 159: 269, 160: 225, 161: 237, 162: 243, 163: 250, 164: 260, 165: 261, 166: 381, 167: 382, 168: 280, 169: 281, 170: 172, 171: 378, 172: 268, 173: 351, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 193, 182: 194, 183: 282, 184: 350, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 379, 190: 380, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 258, 199: 259, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 164, 208: 273, 209: 272, 210: 270, 211: 203, 212: 271, 213: 327, 214: 205, 215: 206, 216: 283, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 354, 222: 366, 223: 9600, 224: 211, 225: 223, 226: 212, 227: 323, 228: 324, 229: 328, 230: 352, 231: 353, 232: 340, 233: 218, 234: 341, 235: 368, 236: 253, 237: 221, 238: 355, 239: 180, 240: 173, 241: 733, 242: 731, 243: 711, 244: 728, 245: 167, 246: 247, 247: 184, 248: 176, 249: 168, 250: 729, 251: 369, 252: 344, 253: 345, 254: 9632, 255: 160}
register_kuroko_codec(['cp852', '852', 'cspcp852', 'ibm852'], Cp852IncrementalEncoder, Cp852IncrementalDecoder)
class Cp855IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-855 (Balkan Cyrillic).
Note: OEM-855 competed with OEM-866 for Cyrillic; OEM-866 preserved all box drawing characters
(rather then only a subset) and was more popular for Russian, but did not provide coverage
for all of the different South Slavic Cyrillic orthographies, unlike OEM-855. Their layouts
for Cyrillic are entirely different.
"""
name = 'cp855'
html5name = None
@lazy_property
def encoding_map():
return {1106: 128, 1026: 129, 1107: 130, 1027: 131, 1105: 132, 1025: 133, 1108: 134, 1028: 135, 1109: 136, 1029: 137, 1110: 138, 1030: 139, 1111: 140, 1031: 141, 1112: 142, 1032: 143, 1113: 144, 1033: 145, 1114: 146, 1034: 147, 1115: 148, 1035: 149, 1116: 150, 1036: 151, 1118: 152, 1038: 153, 1119: 154, 1039: 155, 1102: 156, 1070: 157, 1098: 158, 1066: 159, 1072: 160, 1040: 161, 1073: 162, 1041: 163, 1094: 164, 1062: 165, 1076: 166, 1044: 167, 1077: 168, 1045: 169, 1092: 170, 1060: 171, 1075: 172, 1043: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 1093: 181, 1061: 182, 1080: 183, 1048: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 1081: 189, 1049: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 1082: 198, 1050: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 164: 207, 1083: 208, 1051: 209, 1084: 210, 1052: 211, 1085: 212, 1053: 213, 1086: 214, 1054: 215, 1087: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 1055: 221, 1103: 222, 9600: 223, 1071: 224, 1088: 225, 1056: 226, 1089: 227, 1057: 228, 1090: 229, 1058: 230, 1091: 231, 1059: 232, 1078: 233, 1046: 234, 1074: 235, 1042: 236, 1100: 237, 1068: 238, 8470: 239, 173: 240, 1099: 241, 1067: 242, 1079: 243, 1047: 244, 1096: 245, 1064: 246, 1101: 247, 1069: 248, 1097: 249, 1065: 250, 1095: 251, 1063: 252, 167: 253, 9632: 254, 160: 255}
class Cp855IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-855 (Balkan Cyrillic).
Note: OEM-855 competed with OEM-866 for Cyrillic; OEM-866 preserved all box drawing characters
(rather then only a subset) and was more popular for Russian, but did not provide coverage
for all of the different South Slavic Cyrillic orthographies, unlike OEM-855. Their layouts
for Cyrillic are entirely different.
"""
name = 'cp855'
html5name = None
@lazy_property
def decoding_map():
return {128: 1106, 129: 1026, 130: 1107, 131: 1027, 132: 1105, 133: 1025, 134: 1108, 135: 1028, 136: 1109, 137: 1029, 138: 1110, 139: 1030, 140: 1111, 141: 1031, 142: 1112, 143: 1032, 144: 1113, 145: 1033, 146: 1114, 147: 1034, 148: 1115, 149: 1035, 150: 1116, 151: 1036, 152: 1118, 153: 1038, 154: 1119, 155: 1039, 156: 1102, 157: 1070, 158: 1098, 159: 1066, 160: 1072, 161: 1040, 162: 1073, 163: 1041, 164: 1094, 165: 1062, 166: 1076, 167: 1044, 168: 1077, 169: 1045, 170: 1092, 171: 1060, 172: 1075, 173: 1043, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 1093, 182: 1061, 183: 1080, 184: 1048, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 1081, 190: 1049, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 1082, 199: 1050, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 164, 208: 1083, 209: 1051, 210: 1084, 211: 1052, 212: 1085, 213: 1053, 214: 1086, 215: 1054, 216: 1087, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 1055, 222: 1103, 223: 9600, 224: 1071, 225: 1088, 226: 1056, 227: 1089, 228: 1057, 229: 1090, 230: 1058, 231: 1091, 232: 1059, 233: 1078, 234: 1046, 235: 1074, 236: 1042, 237: 1100, 238: 1068, 239: 8470, 240: 173, 241: 1099, 242: 1067, 243: 1079, 244: 1047, 245: 1096, 246: 1064, 247: 1101, 248: 1069, 249: 1097, 250: 1065, 251: 1095, 252: 1063, 253: 167, 254: 9632, 255: 160}
register_kuroko_codec(['cp855', '855', 'csibm855', 'ibm855'], Cp855IncrementalEncoder, Cp855IncrementalDecoder)
class Cp856IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-856 (Hebrew).
Note: OEM-856 competed with OEM-862 for Hebrew, although they encoded the Hebrew letters in the
same layout. OEM-862 preserved all box drawing characters, while OEM-856 preserved a subset only.
"""
name = 'cp856'
html5name = None
@lazy_property
def encoding_map():
return {1488: 128, 1489: 129, 1490: 130, 1491: 131, 1492: 132, 1493: 133, 1494: 134, 1495: 135, 1496: 136, 1497: 137, 1498: 138, 1499: 139, 1500: 140, 1501: 141, 1502: 142, 1503: 143, 1504: 144, 1505: 145, 1506: 146, 1507: 147, 1508: 148, 1509: 149, 1510: 150, 1511: 151, 1512: 152, 1513: 153, 1514: 154, 163: 156, 215: 158, 174: 169, 172: 170, 189: 171, 188: 172, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 169: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 162: 189, 165: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 164: 207, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 166: 221, 9600: 223, 181: 230, 175: 238, 180: 239, 173: 240, 177: 241, 8215: 242, 190: 243, 182: 244, 167: 245, 247: 246, 184: 247, 176: 248, 168: 249, 183: 250, 185: 251, 179: 252, 178: 253, 9632: 254, 160: 255}
class Cp856IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-856 (Hebrew).
Note: OEM-856 competed with OEM-862 for Hebrew, although they encoded the Hebrew letters in the
same layout. OEM-862 preserved all box drawing characters, while OEM-856 preserved a subset only.
"""
name = 'cp856'
html5name = None
@lazy_property
def decoding_map():
return {128: 1488, 129: 1489, 130: 1490, 131: 1491, 132: 1492, 133: 1493, 134: 1494, 135: 1495, 136: 1496, 137: 1497, 138: 1498, 139: 1499, 140: 1500, 141: 1501, 142: 1502, 143: 1503, 144: 1504, 145: 1505, 146: 1506, 147: 1507, 148: 1508, 149: 1509, 150: 1510, 151: 1511, 152: 1512, 153: 1513, 154: 1514, 156: 163, 158: 215, 169: 174, 170: 172, 171: 189, 172: 188, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 184: 169, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 162, 190: 165, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 164, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 166, 223: 9600, 230: 181, 238: 175, 239: 180, 240: 173, 241: 177, 242: 8215, 243: 190, 244: 182, 245: 167, 246: 247, 247: 184, 248: 176, 249: 168, 250: 183, 251: 185, 252: 179, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp856'], Cp856IncrementalEncoder, Cp856IncrementalDecoder)
class Cp857IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-857 (Turkish).
"""
name = 'cp857'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 228: 132, 224: 133, 229: 134, 231: 135, 234: 136, 235: 137, 232: 138, 239: 139, 238: 140, 305: 141, 196: 142, 197: 143, 201: 144, 230: 145, 198: 146, 244: 147, 246: 148, 242: 149, 251: 150, 249: 151, 304: 152, 214: 153, 220: 154, 248: 155, 163: 156, 216: 157, 350: 158, 351: 159, 225: 160, 237: 161, 243: 162, 250: 163, 241: 164, 209: 165, 286: 166, 287: 167, 191: 168, 174: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 193: 181, 194: 182, 192: 183, 169: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 162: 189, 165: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 227: 198, 195: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 164: 207, 186: 208, 170: 209, 202: 210, 203: 211, 200: 212, 205: 214, 206: 215, 207: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 166: 221, 204: 222, 9600: 223, 211: 224, 223: 225, 212: 226, 210: 227, 245: 228, 213: 229, 181: 230, 215: 232, 218: 233, 219: 234, 217: 235, 236: 236, 255: 237, 175: 238, 180: 239, 173: 240, 177: 241, 190: 243, 182: 244, 167: 245, 247: 246, 184: 247, 176: 248, 168: 249, 183: 250, 185: 251, 179: 252, 178: 253, 9632: 254, 160: 255}
class Cp857IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-857 (Turkish).
"""
name = 'cp857'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 228, 133: 224, 134: 229, 135: 231, 136: 234, 137: 235, 138: 232, 139: 239, 140: 238, 141: 305, 142: 196, 143: 197, 144: 201, 145: 230, 146: 198, 147: 244, 148: 246, 149: 242, 150: 251, 151: 249, 152: 304, 153: 214, 154: 220, 155: 248, 156: 163, 157: 216, 158: 350, 159: 351, 160: 225, 161: 237, 162: 243, 163: 250, 164: 241, 165: 209, 166: 286, 167: 287, 168: 191, 169: 174, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 193, 182: 194, 183: 192, 184: 169, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 162, 190: 165, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 227, 199: 195, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 164, 208: 186, 209: 170, 210: 202, 211: 203, 212: 200, 214: 205, 215: 206, 216: 207, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 166, 222: 204, 223: 9600, 224: 211, 225: 223, 226: 212, 227: 210, 228: 245, 229: 213, 230: 181, 232: 215, 233: 218, 234: 219, 235: 217, 236: 236, 237: 255, 238: 175, 239: 180, 240: 173, 241: 177, 243: 190, 244: 182, 245: 167, 246: 247, 247: 184, 248: 176, 249: 168, 250: 183, 251: 185, 252: 179, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp857', '857', 'csibm857', 'ibm857'], Cp857IncrementalEncoder, Cp857IncrementalDecoder)
class Cp858IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-858 (Western Europe and Canada with the Euro sign).
"""
name = 'cp858'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 228: 132, 224: 133, 229: 134, 231: 135, 234: 136, 235: 137, 232: 138, 239: 139, 238: 140, 236: 141, 196: 142, 197: 143, 201: 144, 230: 145, 198: 146, 244: 147, 246: 148, 242: 149, 251: 150, 249: 151, 255: 152, 214: 153, 220: 154, 248: 155, 163: 156, 216: 157, 215: 158, 402: 159, 225: 160, 237: 161, 243: 162, 250: 163, 241: 164, 209: 165, 170: 166, 186: 167, 191: 168, 174: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 193: 181, 194: 182, 192: 183, 169: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 162: 189, 165: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 227: 198, 195: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 164: 207, 240: 208, 208: 209, 202: 210, 203: 211, 200: 212, 8364: 213, 205: 214, 206: 215, 207: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 166: 221, 204: 222, 9600: 223, 211: 224, 223: 225, 212: 226, 210: 227, 245: 228, 213: 229, 181: 230, 254: 231, 222: 232, 218: 233, 219: 234, 217: 235, 253: 236, 221: 237, 175: 238, 180: 239, 173: 240, 177: 241, 8215: 242, 190: 243, 182: 244, 167: 245, 247: 246, 184: 247, 176: 248, 168: 249, 183: 250, 185: 251, 179: 252, 178: 253, 9632: 254, 160: 255}
class Cp858IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-858 (Western Europe and Canada with the Euro sign).
"""
name = 'cp858'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 228, 133: 224, 134: 229, 135: 231, 136: 234, 137: 235, 138: 232, 139: 239, 140: 238, 141: 236, 142: 196, 143: 197, 144: 201, 145: 230, 146: 198, 147: 244, 148: 246, 149: 242, 150: 251, 151: 249, 152: 255, 153: 214, 154: 220, 155: 248, 156: 163, 157: 216, 158: 215, 159: 402, 160: 225, 161: 237, 162: 243, 163: 250, 164: 241, 165: 209, 166: 170, 167: 186, 168: 191, 169: 174, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 193, 182: 194, 183: 192, 184: 169, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 162, 190: 165, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 227, 199: 195, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 164, 208: 240, 209: 208, 210: 202, 211: 203, 212: 200, 213: 8364, 214: 205, 215: 206, 216: 207, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 166, 222: 204, 223: 9600, 224: 211, 225: 223, 226: 212, 227: 210, 228: 245, 229: 213, 230: 181, 231: 254, 232: 222, 233: 218, 234: 219, 235: 217, 236: 253, 237: 221, 238: 175, 239: 180, 240: 173, 241: 177, 242: 8215, 243: 190, 244: 182, 245: 167, 246: 247, 247: 184, 248: 176, 249: 168, 250: 183, 251: 185, 252: 179, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp858', '858', 'csibm858', 'ibm858'], Cp858IncrementalEncoder, Cp858IncrementalDecoder)
class Cp860IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-860 (European Portugese).
"""
name = 'cp860'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 227: 132, 224: 133, 193: 134, 231: 135, 234: 136, 202: 137, 232: 138, 205: 139, 212: 140, 236: 141, 195: 142, 194: 143, 201: 144, 192: 145, 200: 146, 244: 147, 245: 148, 242: 149, 218: 150, 249: 151, 204: 152, 213: 153, 220: 154, 162: 155, 163: 156, 217: 157, 8359: 158, 211: 159, 225: 160, 237: 161, 243: 162, 250: 163, 241: 164, 209: 165, 170: 166, 186: 167, 191: 168, 210: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 945: 224, 223: 225, 915: 226, 960: 227, 931: 228, 963: 229, 181: 230, 964: 231, 934: 232, 920: 233, 937: 234, 948: 235, 8734: 236, 966: 237, 949: 238, 8745: 239, 8801: 240, 177: 241, 8805: 242, 8804: 243, 8992: 244, 8993: 245, 247: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp860IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-860 (European Portugese).
"""
name = 'cp860'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 227, 133: 224, 134: 193, 135: 231, 136: 234, 137: 202, 138: 232, 139: 205, 140: 212, 141: 236, 142: 195, 143: 194, 144: 201, 145: 192, 146: 200, 147: 244, 148: 245, 149: 242, 150: 218, 151: 249, 152: 204, 153: 213, 154: 220, 155: 162, 156: 163, 157: 217, 158: 8359, 159: 211, 160: 225, 161: 237, 162: 243, 163: 250, 164: 241, 165: 209, 166: 170, 167: 186, 168: 191, 169: 210, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 945, 225: 223, 226: 915, 227: 960, 228: 931, 229: 963, 230: 181, 231: 964, 232: 934, 233: 920, 234: 937, 235: 948, 236: 8734, 237: 966, 238: 949, 239: 8745, 240: 8801, 241: 177, 242: 8805, 243: 8804, 244: 8992, 245: 8993, 246: 247, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp860', '860', 'csibm860', 'ibm860'], Cp860IncrementalEncoder, Cp860IncrementalDecoder)
class Cp861IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-861 (Icelandic).
"""
name = 'cp861'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 228: 132, 224: 133, 229: 134, 231: 135, 234: 136, 235: 137, 232: 138, 208: 139, 240: 140, 222: 141, 196: 142, 197: 143, 201: 144, 230: 145, 198: 146, 244: 147, 246: 148, 254: 149, 251: 150, 221: 151, 253: 152, 214: 153, 220: 154, 248: 155, 163: 156, 216: 157, 8359: 158, 402: 159, 225: 160, 237: 161, 243: 162, 250: 163, 193: 164, 205: 165, 211: 166, 218: 167, 191: 168, 8976: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 945: 224, 223: 225, 915: 226, 960: 227, 931: 228, 963: 229, 181: 230, 964: 231, 934: 232, 920: 233, 937: 234, 948: 235, 8734: 236, 966: 237, 949: 238, 8745: 239, 8801: 240, 177: 241, 8805: 242, 8804: 243, 8992: 244, 8993: 245, 247: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp861IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-861 (Icelandic).
"""
name = 'cp861'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 228, 133: 224, 134: 229, 135: 231, 136: 234, 137: 235, 138: 232, 139: 208, 140: 240, 141: 222, 142: 196, 143: 197, 144: 201, 145: 230, 146: 198, 147: 244, 148: 246, 149: 254, 150: 251, 151: 221, 152: 253, 153: 214, 154: 220, 155: 248, 156: 163, 157: 216, 158: 8359, 159: 402, 160: 225, 161: 237, 162: 243, 163: 250, 164: 193, 165: 205, 166: 211, 167: 218, 168: 191, 169: 8976, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 945, 225: 223, 226: 915, 227: 960, 228: 931, 229: 963, 230: 181, 231: 964, 232: 934, 233: 920, 234: 937, 235: 948, 236: 8734, 237: 966, 238: 949, 239: 8745, 240: 8801, 241: 177, 242: 8805, 243: 8804, 244: 8992, 245: 8993, 246: 247, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp861', '861', 'cp-is', 'csibm861', 'ibm861'], Cp861IncrementalEncoder, Cp861IncrementalDecoder)
class Cp862IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-862 (Hebrew and Box Drawing).
Note: OEM-862 competed with OEM-856 for Hebrew, although they encoded the Hebrew letters in the
same layout. OEM-862 preserved all box drawing characters, while OEM-856 preserved a subset only.
"""
name = 'cp862'
html5name = None
@lazy_property
def encoding_map():
return {1488: 128, 1489: 129, 1490: 130, 1491: 131, 1492: 132, 1493: 133, 1494: 134, 1495: 135, 1496: 136, 1497: 137, 1498: 138, 1499: 139, 1500: 140, 1501: 141, 1502: 142, 1503: 143, 1504: 144, 1505: 145, 1506: 146, 1507: 147, 1508: 148, 1509: 149, 1510: 150, 1511: 151, 1512: 152, 1513: 153, 1514: 154, 162: 155, 163: 156, 165: 157, 8359: 158, 402: 159, 225: 160, 237: 161, 243: 162, 250: 163, 241: 164, 209: 165, 170: 166, 186: 167, 191: 168, 8976: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 945: 224, 223: 225, 915: 226, 960: 227, 931: 228, 963: 229, 181: 230, 964: 231, 934: 232, 920: 233, 937: 234, 948: 235, 8734: 236, 966: 237, 949: 238, 8745: 239, 8801: 240, 177: 241, 8805: 242, 8804: 243, 8992: 244, 8993: 245, 247: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp862IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-862 (Hebrew and Box Drawing).
Note: OEM-862 competed with OEM-856 for Hebrew, although they encoded the Hebrew letters in the
same layout. OEM-862 preserved all box drawing characters, while OEM-856 preserved a subset only.
"""
name = 'cp862'
html5name = None
@lazy_property
def decoding_map():
return {128: 1488, 129: 1489, 130: 1490, 131: 1491, 132: 1492, 133: 1493, 134: 1494, 135: 1495, 136: 1496, 137: 1497, 138: 1498, 139: 1499, 140: 1500, 141: 1501, 142: 1502, 143: 1503, 144: 1504, 145: 1505, 146: 1506, 147: 1507, 148: 1508, 149: 1509, 150: 1510, 151: 1511, 152: 1512, 153: 1513, 154: 1514, 155: 162, 156: 163, 157: 165, 158: 8359, 159: 402, 160: 225, 161: 237, 162: 243, 163: 250, 164: 241, 165: 209, 166: 170, 167: 186, 168: 191, 169: 8976, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 945, 225: 223, 226: 915, 227: 960, 228: 931, 229: 963, 230: 181, 231: 964, 232: 934, 233: 920, 234: 937, 235: 948, 236: 8734, 237: 966, 238: 949, 239: 8745, 240: 8801, 241: 177, 242: 8805, 243: 8804, 244: 8992, 245: 8993, 246: 247, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp862', '862', 'cspc862latinhebrew', 'ibm862'], Cp862IncrementalEncoder, Cp862IncrementalDecoder)
class Cp863IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-863 (Canadian French).
"""
name = 'cp863'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 194: 132, 224: 133, 182: 134, 231: 135, 234: 136, 235: 137, 232: 138, 239: 139, 238: 140, 8215: 141, 192: 142, 167: 143, 201: 144, 200: 145, 202: 146, 244: 147, 203: 148, 207: 149, 251: 150, 249: 151, 164: 152, 212: 153, 220: 154, 162: 155, 163: 156, 217: 157, 219: 158, 402: 159, 166: 160, 180: 161, 243: 162, 250: 163, 168: 164, 184: 165, 179: 166, 175: 167, 206: 168, 8976: 169, 172: 170, 189: 171, 188: 172, 190: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 945: 224, 223: 225, 915: 226, 960: 227, 931: 228, 963: 229, 181: 230, 964: 231, 934: 232, 920: 233, 937: 234, 948: 235, 8734: 236, 966: 237, 949: 238, 8745: 239, 8801: 240, 177: 241, 8805: 242, 8804: 243, 8992: 244, 8993: 245, 247: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp863IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-863 (Canadian French).
"""
name = 'cp863'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 194, 133: 224, 134: 182, 135: 231, 136: 234, 137: 235, 138: 232, 139: 239, 140: 238, 141: 8215, 142: 192, 143: 167, 144: 201, 145: 200, 146: 202, 147: 244, 148: 203, 149: 207, 150: 251, 151: 249, 152: 164, 153: 212, 154: 220, 155: 162, 156: 163, 157: 217, 158: 219, 159: 402, 160: 166, 161: 180, 162: 243, 163: 250, 164: 168, 165: 184, 166: 179, 167: 175, 168: 206, 169: 8976, 170: 172, 171: 189, 172: 188, 173: 190, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 945, 225: 223, 226: 915, 227: 960, 228: 931, 229: 963, 230: 181, 231: 964, 232: 934, 233: 920, 234: 937, 235: 948, 236: 8734, 237: 966, 238: 949, 239: 8745, 240: 8801, 241: 177, 242: 8805, 243: 8804, 244: 8992, 245: 8993, 246: 247, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp863', '863', 'csibm863', 'ibm863'], Cp863IncrementalEncoder, Cp863IncrementalDecoder)
class Cp864IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-864 (Arabic Positional Forms)
Note: OEM-864 competed with OEM-720 (which used a different layout, included box drawing
characters, included general letters rather than positional forms of Arabic characters, and
didn't include separate East Arabic digits).
"""
name = 'cp864'
html5name = None
@lazy_property
def encoding_map():
return {176: 128, 183: 129, 8729: 130, 8730: 131, 9618: 132, 9472: 133, 9474: 134, 9532: 135, 9508: 136, 9516: 137, 9500: 138, 9524: 139, 9488: 140, 9484: 141, 9492: 142, 9496: 143, 946: 144, 8734: 145, 966: 146, 177: 147, 189: 148, 188: 149, 8776: 150, 171: 151, 187: 152, 65271: 153, 65272: 154, 65275: 157, 65276: 158, 160: 160, 173: 161, 65154: 162, 163: 163, 164: 164, 65156: 165, 65166: 168, 65167: 169, 65173: 170, 65177: 171, 1548: 172, 65181: 173, 65185: 174, 65189: 175, 1632: 176, 1633: 177, 1634: 178, 1635: 179, 1636: 180, 1637: 181, 1638: 182, 1639: 183, 1640: 184, 1641: 185, 65233: 186, 1563: 187, 65201: 188, 65205: 189, 65209: 190, 1567: 191, 162: 192, 65152: 193, 65153: 194, 65155: 195, 65157: 196, 65226: 197, 65163: 198, 65165: 199, 65169: 200, 65171: 201, 65175: 202, 65179: 203, 65183: 204, 65187: 205, 65191: 206, 65193: 207, 65195: 208, 65197: 209, 65199: 210, 65203: 211, 65207: 212, 65211: 213, 65215: 214, 65217: 215, 65221: 216, 65227: 217, 65231: 218, 166: 219, 172: 220, 247: 221, 215: 222, 65225: 223, 1600: 224, 65235: 225, 65239: 226, 65243: 227, 65247: 228, 65251: 229, 65255: 230, 65259: 231, 65261: 232, 65263: 233, 65267: 234, 65213: 235, 65228: 236, 65230: 237, 65229: 238, 65249: 239, 65149: 240, 1617: 241, 65253: 242, 65257: 243, 65260: 244, 65264: 245, 65266: 246, 65232: 247, 65237: 248, 65269: 249, 65270: 250, 65245: 251, 65241: 252, 65265: 253, 9632: 254}
class Cp864IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-864 (Arabic Positional Forms)
Note: OEM-864 competed with OEM-720 (which used a different layout, included box drawing
characters, included general letters rather than positional forms of Arabic characters, and
didn't include separate East Arabic digits).
"""
name = 'cp864'
html5name = None
@lazy_property
def decoding_map():
return {128: 176, 129: 183, 130: 8729, 131: 8730, 132: 9618, 133: 9472, 134: 9474, 135: 9532, 136: 9508, 137: 9516, 138: 9500, 139: 9524, 140: 9488, 141: 9484, 142: 9492, 143: 9496, 144: 946, 145: 8734, 146: 966, 147: 177, 148: 189, 149: 188, 150: 8776, 151: 171, 152: 187, 153: 65271, 154: 65272, 157: 65275, 158: 65276, 160: 160, 161: 173, 162: 65154, 163: 163, 164: 164, 165: 65156, 168: 65166, 169: 65167, 170: 65173, 171: 65177, 172: 1548, 173: 65181, 174: 65185, 175: 65189, 176: 1632, 177: 1633, 178: 1634, 179: 1635, 180: 1636, 181: 1637, 182: 1638, 183: 1639, 184: 1640, 185: 1641, 186: 65233, 187: 1563, 188: 65201, 189: 65205, 190: 65209, 191: 1567, 192: 162, 193: 65152, 194: 65153, 195: 65155, 196: 65157, 197: 65226, 198: 65163, 199: 65165, 200: 65169, 201: 65171, 202: 65175, 203: 65179, 204: 65183, 205: 65187, 206: 65191, 207: 65193, 208: 65195, 209: 65197, 210: 65199, 211: 65203, 212: 65207, 213: 65211, 214: 65215, 215: 65217, 216: 65221, 217: 65227, 218: 65231, 219: 166, 220: 172, 221: 247, 222: 215, 223: 65225, 224: 1600, 225: 65235, 226: 65239, 227: 65243, 228: 65247, 229: 65251, 230: 65255, 231: 65259, 232: 65261, 233: 65263, 234: 65267, 235: 65213, 236: 65228, 237: 65230, 238: 65229, 239: 65249, 240: 65149, 241: 1617, 242: 65253, 243: 65257, 244: 65260, 245: 65264, 246: 65266, 247: 65232, 248: 65237, 249: 65269, 250: 65270, 251: 65245, 252: 65241, 253: 65265, 254: 9632}
register_kuroko_codec(['cp864', '864', 'csibm864', 'ibm864'], Cp864IncrementalEncoder, Cp864IncrementalDecoder)
class Cp865IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-865 (Continental Nordic)
"""
name = 'cp865'
html5name = None
@lazy_property
def encoding_map():
return {199: 128, 252: 129, 233: 130, 226: 131, 228: 132, 224: 133, 229: 134, 231: 135, 234: 136, 235: 137, 232: 138, 239: 139, 238: 140, 236: 141, 196: 142, 197: 143, 201: 144, 230: 145, 198: 146, 244: 147, 246: 148, 242: 149, 251: 150, 249: 151, 255: 152, 214: 153, 220: 154, 248: 155, 163: 156, 216: 157, 8359: 158, 402: 159, 225: 160, 237: 161, 243: 162, 250: 163, 241: 164, 209: 165, 170: 166, 186: 167, 191: 168, 8976: 169, 172: 170, 189: 171, 188: 172, 161: 173, 171: 174, 164: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 945: 224, 223: 225, 915: 226, 960: 227, 931: 228, 963: 229, 181: 230, 964: 231, 934: 232, 920: 233, 937: 234, 948: 235, 8734: 236, 966: 237, 949: 238, 8745: 239, 8801: 240, 177: 241, 8805: 242, 8804: 243, 8992: 244, 8993: 245, 247: 246, 8776: 247, 176: 248, 8729: 249, 183: 250, 8730: 251, 8319: 252, 178: 253, 9632: 254, 160: 255}
class Cp865IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-865 (Continental Nordic)
"""
name = 'cp865'
html5name = None
@lazy_property
def decoding_map():
return {128: 199, 129: 252, 130: 233, 131: 226, 132: 228, 133: 224, 134: 229, 135: 231, 136: 234, 137: 235, 138: 232, 139: 239, 140: 238, 141: 236, 142: 196, 143: 197, 144: 201, 145: 230, 146: 198, 147: 244, 148: 246, 149: 242, 150: 251, 151: 249, 152: 255, 153: 214, 154: 220, 155: 248, 156: 163, 157: 216, 158: 8359, 159: 402, 160: 225, 161: 237, 162: 243, 163: 250, 164: 241, 165: 209, 166: 170, 167: 186, 168: 191, 169: 8976, 170: 172, 171: 189, 172: 188, 173: 161, 174: 171, 175: 164, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 945, 225: 223, 226: 915, 227: 960, 228: 931, 229: 963, 230: 181, 231: 964, 232: 934, 233: 920, 234: 937, 235: 948, 236: 8734, 237: 966, 238: 949, 239: 8745, 240: 8801, 241: 177, 242: 8805, 243: 8804, 244: 8992, 245: 8993, 246: 247, 247: 8776, 248: 176, 249: 8729, 250: 183, 251: 8730, 252: 8319, 253: 178, 254: 9632, 255: 160}
register_kuroko_codec(['cp865', '865', 'csibm865', 'ibm865'], Cp865IncrementalEncoder, Cp865IncrementalDecoder)
class Cp869IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-869 (Greek).
Note: OEM-869 competed with OEM-737 (which used a different Greek layout and preserved all of
the box drawing characters rather than a subset, but omitted letters with combined trema/acute).
"""
name = 'cp869'
html5name = None
@lazy_property
def encoding_map():
return {902: 134, 183: 136, 172: 137, 166: 138, 8216: 139, 8217: 140, 904: 141, 8213: 142, 905: 143, 906: 144, 938: 145, 908: 146, 910: 149, 939: 150, 169: 151, 911: 152, 178: 153, 179: 154, 940: 155, 163: 156, 941: 157, 942: 158, 943: 159, 970: 160, 912: 161, 972: 162, 973: 163, 913: 164, 914: 165, 915: 166, 916: 167, 917: 168, 918: 169, 919: 170, 189: 171, 920: 172, 921: 173, 171: 174, 187: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 922: 181, 923: 182, 924: 183, 925: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 926: 189, 927: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 928: 198, 929: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 931: 207, 932: 208, 933: 209, 934: 210, 935: 211, 936: 212, 937: 213, 945: 214, 946: 215, 947: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 948: 221, 949: 222, 9600: 223, 950: 224, 951: 225, 952: 226, 953: 227, 954: 228, 955: 229, 956: 230, 957: 231, 958: 232, 959: 233, 960: 234, 961: 235, 963: 236, 962: 237, 964: 238, 900: 239, 173: 240, 177: 241, 965: 242, 966: 243, 967: 244, 167: 245, 968: 246, 901: 247, 176: 248, 168: 249, 969: 250, 971: 251, 944: 252, 974: 253, 9632: 254, 160: 255}
class Cp869IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-869 (Greek).
Note: OEM-869 competed with OEM-737 (which used a different Greek layout and preserved all of
the box drawing characters rather than a subset, but omitted letters with combined trema/acute).
"""
name = 'cp869'
html5name = None
@lazy_property
def decoding_map():
return {134: 902, 136: 183, 137: 172, 138: 166, 139: 8216, 140: 8217, 141: 904, 142: 8213, 143: 905, 144: 906, 145: 938, 146: 908, 149: 910, 150: 939, 151: 169, 152: 911, 153: 178, 154: 179, 155: 940, 156: 163, 157: 941, 158: 942, 159: 943, 160: 970, 161: 912, 162: 972, 163: 973, 164: 913, 165: 914, 166: 915, 167: 916, 168: 917, 169: 918, 170: 919, 171: 189, 172: 920, 173: 921, 174: 171, 175: 187, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 922, 182: 923, 183: 924, 184: 925, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 926, 190: 927, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 928, 199: 929, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 931, 208: 932, 209: 933, 210: 934, 211: 935, 212: 936, 213: 937, 214: 945, 215: 946, 216: 947, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 948, 222: 949, 223: 9600, 224: 950, 225: 951, 226: 952, 227: 953, 228: 954, 229: 955, 230: 956, 231: 957, 232: 958, 233: 959, 234: 960, 235: 961, 236: 963, 237: 962, 238: 964, 239: 900, 240: 173, 241: 177, 242: 965, 243: 966, 244: 967, 245: 167, 246: 968, 247: 901, 248: 176, 249: 168, 250: 969, 251: 971, 252: 944, 253: 974, 254: 9632, 255: 160}
register_kuroko_codec(['cp869', '869', 'cp-gr', 'csibm869', 'ibm869'], Cp869IncrementalEncoder, Cp869IncrementalDecoder)
class Cp875IncrementalEncoder(BaseEbcdicIncrementalEncoder):
"""
IncrementalEncoder implementation for EBCDIC-875 (used in Greek-speaking locales).
"""
name = 'cp875'
html5name = None
@lazy_property
def sbcs_encode():
return {0: 0, 1: 1, 2: 2, 3: 3, 156: 4, 9: 5, 134: 6, 127: 7, 151: 8, 141: 9, 142: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 157: 20, 133: 21, 8: 22, 135: 23, 24: 24, 25: 25, 146: 26, 143: 27, 28: 28, 29: 29, 30: 30, 31: 31, 128: 32, 129: 33, 130: 34, 131: 35, 132: 36, 10: 37, 23: 38, 27: 39, 136: 40, 137: 41, 138: 42, 139: 43, 140: 44, 5: 45, 6: 46, 7: 47, 144: 48, 145: 49, 22: 50, 147: 51, 148: 52, 149: 53, 150: 54, 4: 55, 152: 56, 153: 57, 154: 58, 155: 59, 20: 60, 21: 61, 158: 62, 26: 253, 32: 64, 913: 65, 914: 66, 915: 67, 916: 68, 917: 69, 918: 70, 919: 71, 920: 72, 921: 73, 91: 74, 46: 75, 60: 76, 40: 77, 43: 78, 33: 79, 38: 80, 922: 81, 923: 82, 924: 83, 925: 84, 926: 85, 927: 86, 928: 87, 929: 88, 931: 89, 93: 90, 36: 91, 42: 92, 41: 93, 59: 94, 94: 95, 45: 96, 47: 97, 932: 98, 933: 99, 934: 100, 935: 101, 936: 102, 937: 103, 938: 104, 939: 105, 124: 106, 44: 107, 37: 108, 95: 109, 62: 110, 63: 111, 168: 112, 902: 113, 904: 114, 905: 115, 160: 116, 906: 117, 908: 118, 910: 119, 911: 120, 96: 121, 58: 122, 35: 123, 64: 124, 39: 125, 61: 126, 34: 127, 901: 128, 97: 129, 98: 130, 99: 131, 100: 132, 101: 133, 102: 134, 103: 135, 104: 136, 105: 137, 945: 138, 946: 139, 947: 140, 948: 141, 949: 142, 950: 143, 176: 144, 106: 145, 107: 146, 108: 147, 109: 148, 110: 149, 111: 150, 112: 151, 113: 152, 114: 153, 951: 154, 952: 155, 953: 156, 954: 157, 955: 158, 956: 159, 180: 160, 126: 161, 115: 162, 116: 163, 117: 164, 118: 165, 119: 166, 120: 167, 121: 168, 122: 169, 957: 170, 958: 171, 959: 172, 960: 173, 961: 174, 963: 175, 163: 176, 940: 177, 941: 178, 942: 179, 970: 180, 943: 181, 972: 182, 973: 183, 971: 184, 974: 185, 962: 186, 964: 187, 965: 188, 966: 189, 967: 190, 968: 191, 123: 192, 65: 193, 66: 194, 67: 195, 68: 196, 69: 197, 70: 198, 71: 199, 72: 200, 73: 201, 173: 202, 969: 203, 912: 204, 944: 205, 8216: 206, 8213: 207, 125: 208, 74: 209, 75: 210, 76: 211, 77: 212, 78: 213, 79: 214, 80: 215, 81: 216, 82: 217, 177: 218, 189: 219, 903: 221, 8217: 222, 166: 223, 92: 224, 83: 226, 84: 227, 85: 228, 86: 229, 87: 230, 88: 231, 89: 232, 90: 233, 178: 234, 167: 235, 171: 238, 172: 239, 48: 240, 49: 241, 50: 242, 51: 243, 52: 244, 53: 245, 54: 246, 55: 247, 56: 248, 57: 249, 179: 250, 169: 251, 187: 254, 159: 255}
class Cp875IncrementalDecoder(BaseEbcdicIncrementalDecoder):
"""
IncrementalDecoder implementation for EBCDIC-875 (used in Greek-speaking locales).
"""
name = 'cp875'
html5name = None
@lazy_property
def sbcs_decode():
return {0: 0, 1: 1, 2: 2, 3: 3, 4: 156, 5: 9, 6: 134, 7: 127, 8: 151, 9: 141, 10: 142, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 157, 21: 133, 22: 8, 23: 135, 24: 24, 25: 25, 26: 146, 27: 143, 28: 28, 29: 29, 30: 30, 31: 31, 32: 128, 33: 129, 34: 130, 35: 131, 36: 132, 37: 10, 38: 23, 39: 27, 40: 136, 41: 137, 42: 138, 43: 139, 44: 140, 45: 5, 46: 6, 47: 7, 48: 144, 49: 145, 50: 22, 51: 147, 52: 148, 53: 149, 54: 150, 55: 4, 56: 152, 57: 153, 58: 154, 59: 155, 60: 20, 61: 21, 62: 158, 63: 26, 64: 32, 65: 913, 66: 914, 67: 915, 68: 916, 69: 917, 70: 918, 71: 919, 72: 920, 73: 921, 74: 91, 75: 46, 76: 60, 77: 40, 78: 43, 79: 33, 80: 38, 81: 922, 82: 923, 83: 924, 84: 925, 85: 926, 86: 927, 87: 928, 88: 929, 89: 931, 90: 93, 91: 36, 92: 42, 93: 41, 94: 59, 95: 94, 96: 45, 97: 47, 98: 932, 99: 933, 100: 934, 101: 935, 102: 936, 103: 937, 104: 938, 105: 939, 106: 124, 107: 44, 108: 37, 109: 95, 110: 62, 111: 63, 112: 168, 113: 902, 114: 904, 115: 905, 116: 160, 117: 906, 118: 908, 119: 910, 120: 911, 121: 96, 122: 58, 123: 35, 124: 64, 125: 39, 126: 61, 127: 34, 128: 901, 129: 97, 130: 98, 131: 99, 132: 100, 133: 101, 134: 102, 135: 103, 136: 104, 137: 105, 138: 945, 139: 946, 140: 947, 141: 948, 142: 949, 143: 950, 144: 176, 145: 106, 146: 107, 147: 108, 148: 109, 149: 110, 150: 111, 151: 112, 152: 113, 153: 114, 154: 951, 155: 952, 156: 953, 157: 954, 158: 955, 159: 956, 160: 180, 161: 126, 162: 115, 163: 116, 164: 117, 165: 118, 166: 119, 167: 120, 168: 121, 169: 122, 170: 957, 171: 958, 172: 959, 173: 960, 174: 961, 175: 963, 176: 163, 177: 940, 178: 941, 179: 942, 180: 970, 181: 943, 182: 972, 183: 973, 184: 971, 185: 974, 186: 962, 187: 964, 188: 965, 189: 966, 190: 967, 191: 968, 192: 123, 193: 65, 194: 66, 195: 67, 196: 68, 197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 173, 203: 969, 204: 912, 205: 944, 206: 8216, 207: 8213, 208: 125, 209: 74, 210: 75, 211: 76, 212: 77, 213: 78, 214: 79, 215: 80, 216: 81, 217: 82, 218: 177, 219: 189, 220: 26, 221: 903, 222: 8217, 223: 166, 224: 92, 225: 26, 226: 83, 227: 84, 228: 85, 229: 86, 230: 87, 231: 88, 232: 89, 233: 90, 234: 178, 235: 167, 236: 26, 237: 26, 238: 171, 239: 172, 240: 48, 241: 49, 242: 50, 243: 51, 244: 52, 245: 53, 246: 54, 247: 55, 248: 56, 249: 57, 250: 179, 251: 169, 252: 26, 253: 26, 254: 187, 255: 159}
register_kuroko_codec(['cp875'], Cp875IncrementalEncoder, Cp875IncrementalDecoder)
class Cp1006IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-1006 (Urdu).
"""
name = 'cp1006'
html5name = None
@lazy_property
def encoding_map():
return {128: 128, 129: 129, 130: 130, 131: 131, 132: 132, 133: 133, 134: 134, 135: 135, 136: 136, 137: 137, 138: 138, 139: 139, 140: 140, 141: 141, 142: 142, 143: 143, 144: 144, 145: 145, 146: 146, 147: 147, 148: 148, 149: 149, 150: 150, 151: 151, 152: 152, 153: 153, 154: 154, 155: 155, 156: 156, 157: 157, 158: 158, 159: 159, 160: 160, 1776: 161, 1777: 162, 1778: 163, 1779: 164, 1780: 165, 1781: 166, 1782: 167, 1783: 168, 1784: 169, 1785: 170, 1548: 171, 1563: 172, 173: 173, 1567: 174, 65153: 175, 65165: 176, 65166: 178, 65167: 179, 65169: 180, 64342: 181, 64344: 182, 65171: 183, 65173: 184, 65175: 185, 64358: 186, 64360: 187, 65177: 188, 65179: 189, 65181: 190, 65183: 191, 64378: 192, 64380: 193, 65185: 194, 65187: 195, 65189: 196, 65191: 197, 65193: 198, 64388: 199, 65195: 200, 65197: 201, 64396: 202, 65199: 203, 64394: 204, 65201: 205, 65203: 206, 65205: 207, 65207: 208, 65209: 209, 65211: 210, 65213: 211, 65215: 212, 65217: 213, 65221: 214, 65225: 215, 65226: 216, 65227: 217, 65228: 218, 65229: 219, 65230: 220, 65231: 221, 65232: 222, 65233: 223, 65235: 224, 65237: 225, 65239: 226, 65241: 227, 65243: 228, 64402: 229, 64404: 230, 65245: 231, 65247: 232, 65248: 233, 65249: 234, 65251: 235, 64414: 236, 65253: 237, 65255: 238, 65157: 239, 65261: 240, 64422: 241, 64424: 242, 64425: 243, 64426: 244, 65152: 245, 65161: 246, 65162: 247, 65163: 248, 65265: 249, 65266: 250, 65267: 251, 64432: 252, 64430: 253, 65148: 254, 65149: 255}
class Cp1006IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-1006 (Urdu).
"""
name = 'cp1006'
html5name = None
@lazy_property
def decoding_map():
return {128: 128, 129: 129, 130: 130, 131: 131, 132: 132, 133: 133, 134: 134, 135: 135, 136: 136, 137: 137, 138: 138, 139: 139, 140: 140, 141: 141, 142: 142, 143: 143, 144: 144, 145: 145, 146: 146, 147: 147, 148: 148, 149: 149, 150: 150, 151: 151, 152: 152, 153: 153, 154: 154, 155: 155, 156: 156, 157: 157, 158: 158, 159: 159, 160: 160, 161: 1776, 162: 1777, 163: 1778, 164: 1779, 165: 1780, 166: 1781, 167: 1782, 168: 1783, 169: 1784, 170: 1785, 171: 1548, 172: 1563, 173: 173, 174: 1567, 175: 65153, 176: 65165, 177: 65166, 178: 65166, 179: 65167, 180: 65169, 181: 64342, 182: 64344, 183: 65171, 184: 65173, 185: 65175, 186: 64358, 187: 64360, 188: 65177, 189: 65179, 190: 65181, 191: 65183, 192: 64378, 193: 64380, 194: 65185, 195: 65187, 196: 65189, 197: 65191, 198: 65193, 199: 64388, 200: 65195, 201: 65197, 202: 64396, 203: 65199, 204: 64394, 205: 65201, 206: 65203, 207: 65205, 208: 65207, 209: 65209, 210: 65211, 211: 65213, 212: 65215, 213: 65217, 214: 65221, 215: 65225, 216: 65226, 217: 65227, 218: 65228, 219: 65229, 220: 65230, 221: 65231, 222: 65232, 223: 65233, 224: 65235, 225: 65237, 226: 65239, 227: 65241, 228: 65243, 229: 64402, 230: 64404, 231: 65245, 232: 65247, 233: 65248, 234: 65249, 235: 65251, 236: 64414, 237: 65253, 238: 65255, 239: 65157, 240: 65261, 241: 64422, 242: 64424, 243: 64425, 244: 64426, 245: 65152, 246: 65161, 247: 65162, 248: 65163, 249: 65265, 250: 65266, 251: 65267, 252: 64432, 253: 64430, 254: 65148, 255: 65149}
register_kuroko_codec(['cp1006'], Cp1006IncrementalEncoder, Cp1006IncrementalDecoder)
class Cp1026IncrementalEncoder(BaseEbcdicIncrementalEncoder):
"""
IncrementalEncoder implementation for EBCDIC-1026 (used in Turkish-speaking locales).
"""
name = 'cp1026'
html5name = None
@lazy_property
def sbcs_encode():
return {0: 0, 1: 1, 2: 2, 3: 3, 156: 4, 9: 5, 134: 6, 127: 7, 151: 8, 141: 9, 142: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 157: 20, 133: 21, 8: 22, 135: 23, 24: 24, 25: 25, 146: 26, 143: 27, 28: 28, 29: 29, 30: 30, 31: 31, 128: 32, 129: 33, 130: 34, 131: 35, 132: 36, 10: 37, 23: 38, 27: 39, 136: 40, 137: 41, 138: 42, 139: 43, 140: 44, 5: 45, 6: 46, 7: 47, 144: 48, 145: 49, 22: 50, 147: 51, 148: 52, 149: 53, 150: 54, 4: 55, 152: 56, 153: 57, 154: 58, 155: 59, 20: 60, 21: 61, 158: 62, 26: 63, 32: 64, 160: 65, 226: 66, 228: 67, 224: 68, 225: 69, 227: 70, 229: 71, 123: 72, 241: 73, 199: 74, 46: 75, 60: 76, 40: 77, 43: 78, 33: 79, 38: 80, 233: 81, 234: 82, 235: 83, 232: 84, 237: 85, 238: 86, 239: 87, 236: 88, 223: 89, 286: 90, 304: 91, 42: 92, 41: 93, 59: 94, 94: 95, 45: 96, 47: 97, 194: 98, 196: 99, 192: 100, 193: 101, 195: 102, 197: 103, 91: 104, 209: 105, 351: 106, 44: 107, 37: 108, 95: 109, 62: 110, 63: 111, 248: 112, 201: 113, 202: 114, 203: 115, 200: 116, 205: 117, 206: 118, 207: 119, 204: 120, 305: 121, 58: 122, 214: 123, 350: 124, 39: 125, 61: 126, 220: 127, 216: 128, 97: 129, 98: 130, 99: 131, 100: 132, 101: 133, 102: 134, 103: 135, 104: 136, 105: 137, 171: 138, 187: 139, 125: 140, 96: 141, 166: 142, 177: 143, 176: 144, 106: 145, 107: 146, 108: 147, 109: 148, 110: 149, 111: 150, 112: 151, 113: 152, 114: 153, 170: 154, 186: 155, 230: 156, 184: 157, 198: 158, 164: 159, 181: 160, 246: 161, 115: 162, 116: 163, 117: 164, 118: 165, 119: 166, 120: 167, 121: 168, 122: 169, 161: 170, 191: 171, 93: 172, 36: 173, 64: 174, 174: 175, 162: 176, 163: 177, 165: 178, 183: 179, 169: 180, 167: 181, 182: 182, 188: 183, 189: 184, 190: 185, 172: 186, 124: 187, 175: 188, 168: 189, 180: 190, 215: 191, 231: 192, 65: 193, 66: 194, 67: 195, 68: 196, 69: 197, 70: 198, 71: 199, 72: 200, 73: 201, 173: 202, 244: 203, 126: 204, 242: 205, 243: 206, 245: 207, 287: 208, 74: 209, 75: 210, 76: 211, 77: 212, 78: 213, 79: 214, 80: 215, 81: 216, 82: 217, 185: 218, 251: 219, 92: 220, 249: 221, 250: 222, 255: 223, 252: 224, 247: 225, 83: 226, 84: 227, 85: 228, 86: 229, 87: 230, 88: 231, 89: 232, 90: 233, 178: 234, 212: 235, 35: 236, 210: 237, 211: 238, 213: 239, 48: 240, 49: 241, 50: 242, 51: 243, 52: 244, 53: 245, 54: 246, 55: 247, 56: 248, 57: 249, 179: 250, 219: 251, 34: 252, 217: 253, 218: 254, 159: 255}
class Cp1026IncrementalDecoder(BaseEbcdicIncrementalDecoder):
"""
IncrementalDecoder implementation for EBCDIC-1026 (used in Turkish-speaking locales).
"""
name = 'cp1026'
html5name = None
@lazy_property
def sbcs_decode():
return {0: 0, 1: 1, 2: 2, 3: 3, 4: 156, 5: 9, 6: 134, 7: 127, 8: 151, 9: 141, 10: 142, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 157, 21: 133, 22: 8, 23: 135, 24: 24, 25: 25, 26: 146, 27: 143, 28: 28, 29: 29, 30: 30, 31: 31, 32: 128, 33: 129, 34: 130, 35: 131, 36: 132, 37: 10, 38: 23, 39: 27, 40: 136, 41: 137, 42: 138, 43: 139, 44: 140, 45: 5, 46: 6, 47: 7, 48: 144, 49: 145, 50: 22, 51: 147, 52: 148, 53: 149, 54: 150, 55: 4, 56: 152, 57: 153, 58: 154, 59: 155, 60: 20, 61: 21, 62: 158, 63: 26, 64: 32, 65: 160, 66: 226, 67: 228, 68: 224, 69: 225, 70: 227, 71: 229, 72: 123, 73: 241, 74: 199, 75: 46, 76: 60, 77: 40, 78: 43, 79: 33, 80: 38, 81: 233, 82: 234, 83: 235, 84: 232, 85: 237, 86: 238, 87: 239, 88: 236, 89: 223, 90: 286, 91: 304, 92: 42, 93: 41, 94: 59, 95: 94, 96: 45, 97: 47, 98: 194, 99: 196, 100: 192, 101: 193, 102: 195, 103: 197, 104: 91, 105: 209, 106: 351, 107: 44, 108: 37, 109: 95, 110: 62, 111: 63, 112: 248, 113: 201, 114: 202, 115: 203, 116: 200, 117: 205, 118: 206, 119: 207, 120: 204, 121: 305, 122: 58, 123: 214, 124: 350, 125: 39, 126: 61, 127: 220, 128: 216, 129: 97, 130: 98, 131: 99, 132: 100, 133: 101, 134: 102, 135: 103, 136: 104, 137: 105, 138: 171, 139: 187, 140: 125, 141: 96, 142: 166, 143: 177, 144: 176, 145: 106, 146: 107, 147: 108, 148: 109, 149: 110, 150: 111, 151: 112, 152: 113, 153: 114, 154: 170, 155: 186, 156: 230, 157: 184, 158: 198, 159: 164, 160: 181, 161: 246, 162: 115, 163: 116, 164: 117, 165: 118, 166: 119, 167: 120, 168: 121, 169: 122, 170: 161, 171: 191, 172: 93, 173: 36, 174: 64, 175: 174, 176: 162, 177: 163, 178: 165, 179: 183, 180: 169, 181: 167, 182: 182, 183: 188, 184: 189, 185: 190, 186: 172, 187: 124, 188: 175, 189: 168, 190: 180, 191: 215, 192: 231, 193: 65, 194: 66, 195: 67, 196: 68, 197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 173, 203: 244, 204: 126, 205: 242, 206: 243, 207: 245, 208: 287, 209: 74, 210: 75, 211: 76, 212: 77, 213: 78, 214: 79, 215: 80, 216: 81, 217: 82, 218: 185, 219: 251, 220: 92, 221: 249, 222: 250, 223: 255, 224: 252, 225: 247, 226: 83, 227: 84, 228: 85, 229: 86, 230: 87, 231: 88, 232: 89, 233: 90, 234: 178, 235: 212, 236: 35, 237: 210, 238: 211, 239: 213, 240: 48, 241: 49, 242: 50, 243: 51, 244: 52, 245: 53, 246: 54, 247: 55, 248: 56, 249: 57, 250: 179, 251: 219, 252: 34, 253: 217, 254: 218, 255: 159}
register_kuroko_codec(['cp1026', '1026', 'csibm1026', 'ibm1026'], Cp1026IncrementalEncoder, Cp1026IncrementalDecoder)
class Cp1125IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for OEM-1125 (Ukrainian Cyrillic).
OEM-1125 is the Ukrainian standard RST 2018-91; due to both being modifications of the so-called
Alternative Code Page, OEM-1125 and OEM-866 are compatible for the Russian/Bulgarian letters.
"""
name = 'cp1125'
html5name = None
@lazy_property
def encoding_map():
return {1040: 128, 1041: 129, 1042: 130, 1043: 131, 1044: 132, 1045: 133, 1046: 134, 1047: 135, 1048: 136, 1049: 137, 1050: 138, 1051: 139, 1052: 140, 1053: 141, 1054: 142, 1055: 143, 1056: 144, 1057: 145, 1058: 146, 1059: 147, 1060: 148, 1061: 149, 1062: 150, 1063: 151, 1064: 152, 1065: 153, 1066: 154, 1067: 155, 1068: 156, 1069: 157, 1070: 158, 1071: 159, 1072: 160, 1073: 161, 1074: 162, 1075: 163, 1076: 164, 1077: 165, 1078: 166, 1079: 167, 1080: 168, 1081: 169, 1082: 170, 1083: 171, 1084: 172, 1085: 173, 1086: 174, 1087: 175, 9617: 176, 9618: 177, 9619: 178, 9474: 179, 9508: 180, 9569: 181, 9570: 182, 9558: 183, 9557: 184, 9571: 185, 9553: 186, 9559: 187, 9565: 188, 9564: 189, 9563: 190, 9488: 191, 9492: 192, 9524: 193, 9516: 194, 9500: 195, 9472: 196, 9532: 197, 9566: 198, 9567: 199, 9562: 200, 9556: 201, 9577: 202, 9574: 203, 9568: 204, 9552: 205, 9580: 206, 9575: 207, 9576: 208, 9572: 209, 9573: 210, 9561: 211, 9560: 212, 9554: 213, 9555: 214, 9579: 215, 9578: 216, 9496: 217, 9484: 218, 9608: 219, 9604: 220, 9612: 221, 9616: 222, 9600: 223, 1088: 224, 1089: 225, 1090: 226, 1091: 227, 1092: 228, 1093: 229, 1094: 230, 1095: 231, 1096: 232, 1097: 233, 1098: 234, 1099: 235, 1100: 236, 1101: 237, 1102: 238, 1103: 239, 1025: 240, 1105: 241, 1168: 242, 1169: 243, 1028: 244, 1108: 245, 1030: 246, 1110: 247, 1031: 248, 1111: 249, 183: 250, 8730: 251, 8470: 252, 164: 253, 9632: 254, 160: 255}
class Cp1125IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for OEM-1125 (Ukrainian Cyrillic).
OEM-1125 is the Ukrainian standard RST 2018-91; due to both being modifications of the so-called
Alternative Code Page, OEM-1125 and OEM-866 are compatible for the Russian/Bulgarian letters.
"""
name = 'cp1125'
html5name = None
@lazy_property
def decoding_map():
return {128: 1040, 129: 1041, 130: 1042, 131: 1043, 132: 1044, 133: 1045, 134: 1046, 135: 1047, 136: 1048, 137: 1049, 138: 1050, 139: 1051, 140: 1052, 141: 1053, 142: 1054, 143: 1055, 144: 1056, 145: 1057, 146: 1058, 147: 1059, 148: 1060, 149: 1061, 150: 1062, 151: 1063, 152: 1064, 153: 1065, 154: 1066, 155: 1067, 156: 1068, 157: 1069, 158: 1070, 159: 1071, 160: 1072, 161: 1073, 162: 1074, 163: 1075, 164: 1076, 165: 1077, 166: 1078, 167: 1079, 168: 1080, 169: 1081, 170: 1082, 171: 1083, 172: 1084, 173: 1085, 174: 1086, 175: 1087, 176: 9617, 177: 9618, 178: 9619, 179: 9474, 180: 9508, 181: 9569, 182: 9570, 183: 9558, 184: 9557, 185: 9571, 186: 9553, 187: 9559, 188: 9565, 189: 9564, 190: 9563, 191: 9488, 192: 9492, 193: 9524, 194: 9516, 195: 9500, 196: 9472, 197: 9532, 198: 9566, 199: 9567, 200: 9562, 201: 9556, 202: 9577, 203: 9574, 204: 9568, 205: 9552, 206: 9580, 207: 9575, 208: 9576, 209: 9572, 210: 9573, 211: 9561, 212: 9560, 213: 9554, 214: 9555, 215: 9579, 216: 9578, 217: 9496, 218: 9484, 219: 9608, 220: 9604, 221: 9612, 222: 9616, 223: 9600, 224: 1088, 225: 1089, 226: 1090, 227: 1091, 228: 1092, 229: 1093, 230: 1094, 231: 1095, 232: 1096, 233: 1097, 234: 1098, 235: 1099, 236: 1100, 237: 1101, 238: 1102, 239: 1103, 240: 1025, 241: 1105, 242: 1168, 243: 1169, 244: 1028, 245: 1108, 246: 1030, 247: 1110, 248: 1031, 249: 1111, 250: 183, 251: 8730, 252: 8470, 253: 164, 254: 9632, 255: 160}
register_kuroko_codec(['cp1125', '1125', 'ibm1125', 'cp866u', 'ruscii'], Cp1125IncrementalEncoder, Cp1125IncrementalDecoder)
class Cp1140IncrementalEncoder(BaseEbcdicIncrementalEncoder):
"""
IncrementalEncoder implementation for EBCDIC-1140 (EBCDIC with Euro sign). In particular, this
is the Euro update of EBCDIC-037.
"""
name = 'cp1140'
html5name = None
@lazy_property
def sbcs_encode():
return {0: 0, 1: 1, 2: 2, 3: 3, 156: 4, 9: 5, 134: 6, 127: 7, 151: 8, 141: 9, 142: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 157: 20, 133: 21, 8: 22, 135: 23, 24: 24, 25: 25, 146: 26, 143: 27, 28: 28, 29: 29, 30: 30, 31: 31, 128: 32, 129: 33, 130: 34, 131: 35, 132: 36, 10: 37, 23: 38, 27: 39, 136: 40, 137: 41, 138: 42, 139: 43, 140: 44, 5: 45, 6: 46, 7: 47, 144: 48, 145: 49, 22: 50, 147: 51, 148: 52, 149: 53, 150: 54, 4: 55, 152: 56, 153: 57, 154: 58, 155: 59, 20: 60, 21: 61, 158: 62, 26: 63, 32: 64, 160: 65, 226: 66, 228: 67, 224: 68, 225: 69, 227: 70, 229: 71, 231: 72, 241: 73, 162: 74, 46: 75, 60: 76, 40: 77, 43: 78, 124: 79, 38: 80, 233: 81, 234: 82, 235: 83, 232: 84, 237: 85, 238: 86, 239: 87, 236: 88, 223: 89, 33: 90, 36: 91, 42: 92, 41: 93, 59: 94, 172: 95, 45: 96, 47: 97, 194: 98, 196: 99, 192: 100, 193: 101, 195: 102, 197: 103, 199: 104, 209: 105, 166: 106, 44: 107, 37: 108, 95: 109, 62: 110, 63: 111, 248: 112, 201: 113, 202: 114, 203: 115, 200: 116, 205: 117, 206: 118, 207: 119, 204: 120, 96: 121, 58: 122, 35: 123, 64: 124, 39: 125, 61: 126, 34: 127, 216: 128, 97: 129, 98: 130, 99: 131, 100: 132, 101: 133, 102: 134, 103: 135, 104: 136, 105: 137, 171: 138, 187: 139, 240: 140, 253: 141, 254: 142, 177: 143, 176: 144, 106: 145, 107: 146, 108: 147, 109: 148, 110: 149, 111: 150, 112: 151, 113: 152, 114: 153, 170: 154, 186: 155, 230: 156, 184: 157, 198: 158, 8364: 159, 181: 160, 126: 161, 115: 162, 116: 163, 117: 164, 118: 165, 119: 166, 120: 167, 121: 168, 122: 169, 161: 170, 191: 171, 208: 172, 221: 173, 222: 174, 174: 175, 94: 176, 163: 177, 165: 178, 183: 179, 169: 180, 167: 181, 182: 182, 188: 183, 189: 184, 190: 185, 91: 186, 93: 187, 175: 188, 168: 189, 180: 190, 215: 191, 123: 192, 65: 193, 66: 194, 67: 195, 68: 196, 69: 197, 70: 198, 71: 199, 72: 200, 73: 201, 173: 202, 244: 203, 246: 204, 242: 205, 243: 206, 245: 207, 125: 208, 74: 209, 75: 210, 76: 211, 77: 212, 78: 213, 79: 214, 80: 215, 81: 216, 82: 217, 185: 218, 251: 219, 252: 220, 249: 221, 250: 222, 255: 223, 92: 224, 247: 225, 83: 226, 84: 227, 85: 228, 86: 229, 87: 230, 88: 231, 89: 232, 90: 233, 178: 234, 212: 235, 214: 236, 210: 237, 211: 238, 213: 239, 48: 240, 49: 241, 50: 242, 51: 243, 52: 244, 53: 245, 54: 246, 55: 247, 56: 248, 57: 249, 179: 250, 219: 251, 220: 252, 217: 253, 218: 254, 159: 255}
class Cp1140IncrementalDecoder(BaseEbcdicIncrementalDecoder):
"""
IncrementalDecoder implementation for EBCDIC-1140 (EBCDIC with Euro sign). In particular, this
is the Euro update of EBCDIC-037.
"""
name = 'cp1140'
html5name = None
@lazy_property
def sbcs_decode():
return {0: 0, 1: 1, 2: 2, 3: 3, 4: 156, 5: 9, 6: 134, 7: 127, 8: 151, 9: 141, 10: 142, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 157, 21: 133, 22: 8, 23: 135, 24: 24, 25: 25, 26: 146, 27: 143, 28: 28, 29: 29, 30: 30, 31: 31, 32: 128, 33: 129, 34: 130, 35: 131, 36: 132, 37: 10, 38: 23, 39: 27, 40: 136, 41: 137, 42: 138, 43: 139, 44: 140, 45: 5, 46: 6, 47: 7, 48: 144, 49: 145, 50: 22, 51: 147, 52: 148, 53: 149, 54: 150, 55: 4, 56: 152, 57: 153, 58: 154, 59: 155, 60: 20, 61: 21, 62: 158, 63: 26, 64: 32, 65: 160, 66: 226, 67: 228, 68: 224, 69: 225, 70: 227, 71: 229, 72: 231, 73: 241, 74: 162, 75: 46, 76: 60, 77: 40, 78: 43, 79: 124, 80: 38, 81: 233, 82: 234, 83: 235, 84: 232, 85: 237, 86: 238, 87: 239, 88: 236, 89: 223, 90: 33, 91: 36, 92: 42, 93: 41, 94: 59, 95: 172, 96: 45, 97: 47, 98: 194, 99: 196, 100: 192, 101: 193, 102: 195, 103: 197, 104: 199, 105: 209, 106: 166, 107: 44, 108: 37, 109: 95, 110: 62, 111: 63, 112: 248, 113: 201, 114: 202, 115: 203, 116: 200, 117: 205, 118: 206, 119: 207, 120: 204, 121: 96, 122: 58, 123: 35, 124: 64, 125: 39, 126: 61, 127: 34, 128: 216, 129: 97, 130: 98, 131: 99, 132: 100, 133: 101, 134: 102, 135: 103, 136: 104, 137: 105, 138: 171, 139: 187, 140: 240, 141: 253, 142: 254, 143: 177, 144: 176, 145: 106, 146: 107, 147: 108, 148: 109, 149: 110, 150: 111, 151: 112, 152: 113, 153: 114, 154: 170, 155: 186, 156: 230, 157: 184, 158: 198, 159: 8364, 160: 181, 161: 126, 162: 115, 163: 116, 164: 117, 165: 118, 166: 119, 167: 120, 168: 121, 169: 122, 170: 161, 171: 191, 172: 208, 173: 221, 174: 222, 175: 174, 176: 94, 177: 163, 178: 165, 179: 183, 180: 169, 181: 167, 182: 182, 183: 188, 184: 189, 185: 190, 186: 91, 187: 93, 188: 175, 189: 168, 190: 180, 191: 215, 192: 123, 193: 65, 194: 66, 195: 67, 196: 68, 197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 173, 203: 244, 204: 246, 205: 242, 206: 243, 207: 245, 208: 125, 209: 74, 210: 75, 211: 76, 212: 77, 213: 78, 214: 79, 215: 80, 216: 81, 217: 82, 218: 185, 219: 251, 220: 252, 221: 249, 222: 250, 223: 255, 224: 92, 225: 247, 226: 83, 227: 84, 228: 85, 229: 86, 230: 87, 231: 88, 232: 89, 233: 90, 234: 178, 235: 212, 236: 214, 237: 210, 238: 211, 239: 213, 240: 48, 241: 49, 242: 50, 243: 51, 244: 52, 245: 53, 246: 54, 247: 55, 248: 56, 249: 57, 250: 179, 251: 219, 252: 220, 253: 217, 254: 218, 255: 159}
register_kuroko_codec(['cp1140', '1140', 'ibm1140'], Cp1140IncrementalEncoder, Cp1140IncrementalDecoder)
class HpRoman8IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the HP 8-bit Roman encoding.
"""
name = 'hp-roman8'
html5name = None
@lazy_property
def encoding_map():
return {128: 128, 129: 129, 130: 130, 131: 131, 132: 132, 133: 133, 134: 134, 135: 135, 136: 136, 137: 137, 138: 138, 139: 139, 140: 140, 141: 141, 142: 142, 143: 143, 144: 144, 145: 145, 146: 146, 147: 147, 148: 148, 149: 149, 150: 150, 151: 151, 152: 152, 153: 153, 154: 154, 155: 155, 156: 156, 157: 157, 158: 158, 159: 159, 160: 160, 192: 161, 194: 162, 200: 163, 202: 164, 203: 165, 206: 166, 207: 167, 180: 168, 715: 169, 710: 170, 168: 171, 732: 172, 217: 173, 219: 174, 8356: 175, 175: 176, 221: 177, 253: 178, 176: 179, 199: 180, 231: 181, 209: 182, 241: 183, 161: 184, 191: 185, 164: 186, 163: 187, 165: 188, 167: 189, 402: 190, 162: 191, 226: 192, 234: 193, 244: 194, 251: 195, 225: 196, 233: 197, 243: 198, 250: 199, 224: 200, 232: 201, 242: 202, 249: 203, 228: 204, 235: 205, 246: 206, 252: 207, 197: 208, 238: 209, 216: 210, 198: 211, 229: 212, 237: 213, 248: 214, 230: 215, 196: 216, 236: 217, 214: 218, 220: 219, 201: 220, 239: 221, 223: 222, 212: 223, 193: 224, 195: 225, 227: 226, 208: 227, 240: 228, 205: 229, 204: 230, 211: 231, 210: 232, 213: 233, 245: 234, 352: 235, 353: 236, 218: 237, 376: 238, 255: 239, 222: 240, 254: 241, 183: 242, 181: 243, 182: 244, 190: 245, 8212: 246, 188: 247, 189: 248, 170: 249, 186: 250, 171: 251, 9632: 252, 187: 253, 177: 254}
class HpRoman8IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the HP 8-bit Roman encoding.
"""
name = 'hp-roman8'
html5name = None
@lazy_property
def decoding_map():
return {128: 128, 129: 129, 130: 130, 131: 131, 132: 132, 133: 133, 134: 134, 135: 135, 136: 136, 137: 137, 138: 138, 139: 139, 140: 140, 141: 141, 142: 142, 143: 143, 144: 144, 145: 145, 146: 146, 147: 147, 148: 148, 149: 149, 150: 150, 151: 151, 152: 152, 153: 153, 154: 154, 155: 155, 156: 156, 157: 157, 158: 158, 159: 159, 160: 160, 161: 192, 162: 194, 163: 200, 164: 202, 165: 203, 166: 206, 167: 207, 168: 180, 169: 715, 170: 710, 171: 168, 172: 732, 173: 217, 174: 219, 175: 8356, 176: 175, 177: 221, 178: 253, 179: 176, 180: 199, 181: 231, 182: 209, 183: 241, 184: 161, 185: 191, 186: 164, 187: 163, 188: 165, 189: 167, 190: 402, 191: 162, 192: 226, 193: 234, 194: 244, 195: 251, 196: 225, 197: 233, 198: 243, 199: 250, 200: 224, 201: 232, 202: 242, 203: 249, 204: 228, 205: 235, 206: 246, 207: 252, 208: 197, 209: 238, 210: 216, 211: 198, 212: 229, 213: 237, 214: 248, 215: 230, 216: 196, 217: 236, 218: 214, 219: 220, 220: 201, 221: 239, 222: 223, 223: 212, 224: 193, 225: 195, 226: 227, 227: 208, 228: 240, 229: 205, 230: 204, 231: 211, 232: 210, 233: 213, 234: 245, 235: 352, 236: 353, 237: 218, 238: 376, 239: 255, 240: 222, 241: 254, 242: 183, 243: 181, 244: 182, 245: 190, 246: 8212, 247: 188, 248: 189, 249: 170, 250: 186, 251: 171, 252: 9632, 253: 187, 254: 177}
register_kuroko_codec(['hp-roman8', 'roman8', 'r8', 'csHPRoman8', 'cp1051', 'ibm1051'], HpRoman8IncrementalEncoder, HpRoman8IncrementalDecoder)
class Koi8TIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the KOI8-T (KOI-8 Cyrillic for Tajik) encoding.
"""
name = 'koi8-t'
html5name = None
@lazy_property
def encoding_map():
return {1179: 128, 1171: 129, 8218: 130, 1170: 131, 8222: 132, 8230: 133, 8224: 134, 8225: 135, 8240: 137, 1203: 138, 8249: 139, 1202: 140, 1207: 141, 1206: 142, 1178: 144, 8216: 145, 8217: 146, 8220: 147, 8221: 148, 8226: 149, 8211: 150, 8212: 151, 8482: 153, 8250: 155, 1263: 161, 1262: 162, 1105: 163, 164: 164, 1251: 165, 166: 166, 167: 167, 171: 171, 172: 172, 173: 173, 174: 174, 176: 176, 177: 177, 178: 178, 1025: 179, 1250: 181, 182: 182, 183: 183, 8470: 185, 187: 187, 169: 191, 1102: 192, 1072: 193, 1073: 194, 1094: 195, 1076: 196, 1077: 197, 1092: 198, 1075: 199, 1093: 200, 1080: 201, 1081: 202, 1082: 203, 1083: 204, 1084: 205, 1085: 206, 1086: 207, 1087: 208, 1103: 209, 1088: 210, 1089: 211, 1090: 212, 1091: 213, 1078: 214, 1074: 215, 1100: 216, 1099: 217, 1079: 218, 1096: 219, 1101: 220, 1097: 221, 1095: 222, 1098: 223, 1070: 224, 1040: 225, 1041: 226, 1062: 227, 1044: 228, 1045: 229, 1060: 230, 1043: 231, 1061: 232, 1048: 233, 1049: 234, 1050: 235, 1051: 236, 1052: 237, 1053: 238, 1054: 239, 1055: 240, 1071: 241, 1056: 242, 1057: 243, 1058: 244, 1059: 245, 1046: 246, 1042: 247, 1068: 248, 1067: 249, 1047: 250, 1064: 251, 1069: 252, 1065: 253, 1063: 254, 1066: 255}
class Koi8TIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the KOI8-T (KOI-8 Cyrillic for Tajik) encoding.
"""
name = 'koi8-t'
html5name = None
@lazy_property
def decoding_map():
return {128: 1179, 129: 1171, 130: 8218, 131: 1170, 132: 8222, 133: 8230, 134: 8224, 135: 8225, 137: 8240, 138: 1203, 139: 8249, 140: 1202, 141: 1207, 142: 1206, 144: 1178, 145: 8216, 146: 8217, 147: 8220, 148: 8221, 149: 8226, 150: 8211, 151: 8212, 153: 8482, 155: 8250, 161: 1263, 162: 1262, 163: 1105, 164: 164, 165: 1251, 166: 166, 167: 167, 171: 171, 172: 172, 173: 173, 174: 174, 176: 176, 177: 177, 178: 178, 179: 1025, 181: 1250, 182: 182, 183: 183, 185: 8470, 187: 187, 191: 169, 192: 1102, 193: 1072, 194: 1073, 195: 1094, 196: 1076, 197: 1077, 198: 1092, 199: 1075, 200: 1093, 201: 1080, 202: 1081, 203: 1082, 204: 1083, 205: 1084, 206: 1085, 207: 1086, 208: 1087, 209: 1103, 210: 1088, 211: 1089, 212: 1090, 213: 1091, 214: 1078, 215: 1074, 216: 1100, 217: 1099, 218: 1079, 219: 1096, 220: 1101, 221: 1097, 222: 1095, 223: 1098, 224: 1070, 225: 1040, 226: 1041, 227: 1062, 228: 1044, 229: 1045, 230: 1060, 231: 1043, 232: 1061, 233: 1048, 234: 1049, 235: 1050, 236: 1051, 237: 1052, 238: 1053, 239: 1054, 240: 1055, 241: 1071, 242: 1056, 243: 1057, 244: 1058, 245: 1059, 246: 1046, 247: 1042, 248: 1068, 249: 1067, 250: 1047, 251: 1064, 252: 1069, 253: 1065, 254: 1063, 255: 1066}
register_kuroko_codec(['koi8-t'], Koi8TIncrementalEncoder, Koi8TIncrementalDecoder)
class Kz1048IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for Kazakh standard KZ-1048.
This is an modification of Windows-1251 to add support for Kazakh.
"""
name = 'kz1048'
html5name = None
@lazy_property
def encoding_map():
return {1026: 128, 1027: 129, 8218: 130, 1107: 131, 8222: 132, 8230: 133, 8224: 134, 8225: 135, 8364: 136, 8240: 137, 1033: 138, 8249: 139, 1034: 140, 1178: 141, 1210: 142, 1039: 143, 1106: 144, 8216: 145, 8217: 146, 8220: 147, 8221: 148, 8226: 149, 8211: 150, 8212: 151, 8482: 153, 1113: 154, 8250: 155, 1114: 156, 1179: 157, 1211: 158, 1119: 159, 160: 160, 1200: 161, 1201: 162, 1240: 163, 164: 164, 1256: 165, 166: 166, 167: 167, 1025: 168, 169: 169, 1170: 170, 171: 171, 172: 172, 173: 173, 174: 174, 1198: 175, 176: 176, 177: 177, 1030: 178, 1110: 179, 1257: 180, 181: 181, 182: 182, 183: 183, 1105: 184, 8470: 185, 1171: 186, 187: 187, 1241: 188, 1186: 189, 1187: 190, 1199: 191, 1040: 192, 1041: 193, 1042: 194, 1043: 195, 1044: 196, 1045: 197, 1046: 198, 1047: 199, 1048: 200, 1049: 201, 1050: 202, 1051: 203, 1052: 204, 1053: 205, 1054: 206, 1055: 207, 1056: 208, 1057: 209, 1058: 210, 1059: 211, 1060: 212, 1061: 213, 1062: 214, 1063: 215, 1064: 216, 1065: 217, 1066: 218, 1067: 219, 1068: 220, 1069: 221, 1070: 222, 1071: 223, 1072: 224, 1073: 225, 1074: 226, 1075: 227, 1076: 228, 1077: 229, 1078: 230, 1079: 231, 1080: 232, 1081: 233, 1082: 234, 1083: 235, 1084: 236, 1085: 237, 1086: 238, 1087: 239, 1088: 240, 1089: 241, 1090: 242, 1091: 243, 1092: 244, 1093: 245, 1094: 246, 1095: 247, 1096: 248, 1097: 249, 1098: 250, 1099: 251, 1100: 252, 1101: 253, 1102: 254, 1103: 255}
class Kz1048IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for Kazakh standard KZ-1048.
This is an modification of Windows-1251 to add support for Kazakh.
"""
name = 'kz1048'
html5name = None
@lazy_property
def decoding_map():
return {128: 1026, 129: 1027, 130: 8218, 131: 1107, 132: 8222, 133: 8230, 134: 8224, 135: 8225, 136: 8364, 137: 8240, 138: 1033, 139: 8249, 140: 1034, 141: 1178, 142: 1210, 143: 1039, 144: 1106, 145: 8216, 146: 8217, 147: 8220, 148: 8221, 149: 8226, 150: 8211, 151: 8212, 153: 8482, 154: 1113, 155: 8250, 156: 1114, 157: 1179, 158: 1211, 159: 1119, 160: 160, 161: 1200, 162: 1201, 163: 1240, 164: 164, 165: 1256, 166: 166, 167: 167, 168: 1025, 169: 169, 170: 1170, 171: 171, 172: 172, 173: 173, 174: 174, 175: 1198, 176: 176, 177: 177, 178: 1030, 179: 1110, 180: 1257, 181: 181, 182: 182, 183: 183, 184: 1105, 185: 8470, 186: 1171, 187: 187, 188: 1241, 189: 1186, 190: 1187, 191: 1199, 192: 1040, 193: 1041, 194: 1042, 195: 1043, 196: 1044, 197: 1045, 198: 1046, 199: 1047, 200: 1048, 201: 1049, 202: 1050, 203: 1051, 204: 1052, 205: 1053, 206: 1054, 207: 1055, 208: 1056, 209: 1057, 210: 1058, 211: 1059, 212: 1060, 213: 1061, 214: 1062, 215: 1063, 216: 1064, 217: 1065, 218: 1066, 219: 1067, 220: 1068, 221: 1069, 222: 1070, 223: 1071, 224: 1072, 225: 1073, 226: 1074, 227: 1075, 228: 1076, 229: 1077, 230: 1078, 231: 1079, 232: 1080, 233: 1081, 234: 1082, 235: 1083, 236: 1084, 237: 1085, 238: 1086, 239: 1087, 240: 1088, 241: 1089, 242: 1090, 243: 1091, 244: 1092, 245: 1093, 246: 1094, 247: 1095, 248: 1096, 249: 1097, 250: 1098, 251: 1099, 252: 1100, 253: 1101, 254: 1102, 255: 1103}
register_kuroko_codec(['kz1048', 'kz-1048', 'rk1048', 'strk1048-2002'], Kz1048IncrementalEncoder, Kz1048IncrementalDecoder)
class PalmosIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the PalmOS encoding.
This is a modification of ISO-8859-1 along similar lines to Windows-1252.
"""
name = 'palmos'
html5name = None
@lazy_property
def encoding_map():
return {8364: 128, 129: 129, 8218: 130, 402: 131, 8222: 132, 8230: 133, 8224: 134, 8225: 135, 710: 136, 8240: 137, 352: 138, 8249: 139, 338: 140, 9830: 141, 9827: 142, 9829: 143, 9824: 144, 8216: 145, 8217: 146, 8220: 147, 8221: 148, 8226: 149, 8211: 150, 8212: 151, 732: 152, 8482: 153, 353: 154, 155: 155, 339: 156, 157: 157, 158: 158, 376: 159, 160: 160, 161: 161, 162: 162, 163: 163, 164: 164, 165: 165, 166: 166, 167: 167, 168: 168, 169: 169, 170: 170, 171: 171, 172: 172, 173: 173, 174: 174, 175: 175, 176: 176, 177: 177, 178: 178, 179: 179, 180: 180, 181: 181, 182: 182, 183: 183, 184: 184, 185: 185, 186: 186, 187: 187, 188: 188, 189: 189, 190: 190, 191: 191, 192: 192, 193: 193, 194: 194, 195: 195, 196: 196, 197: 197, 198: 198, 199: 199, 200: 200, 201: 201, 202: 202, 203: 203, 204: 204, 205: 205, 206: 206, 207: 207, 208: 208, 209: 209, 210: 210, 211: 211, 212: 212, 213: 213, 214: 214, 215: 215, 216: 216, 217: 217, 218: 218, 219: 219, 220: 220, 221: 221, 222: 222, 223: 223, 224: 224, 225: 225, 226: 226, 227: 227, 228: 228, 229: 229, 230: 230, 231: 231, 232: 232, 233: 233, 234: 234, 235: 235, 236: 236, 237: 237, 238: 238, 239: 239, 240: 240, 241: 241, 242: 242, 243: 243, 244: 244, 245: 245, 246: 246, 247: 247, 248: 248, 249: 249, 250: 250, 251: 251, 252: 252, 253: 253, 254: 254, 255: 255}
class PalmosIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the PalmOS encoding.
This is a modification of ISO-8859-1 along similar lines to Windows-1252.
"""
name = 'palmos'
html5name = None
@lazy_property
def decoding_map():
return {128: 8364, 129: 129, 130: 8218, 131: 402, 132: 8222, 133: 8230, 134: 8224, 135: 8225, 136: 710, 137: 8240, 138: 352, 139: 8249, 140: 338, 141: 9830, 142: 9827, 143: 9829, 144: 9824, 145: 8216, 146: 8217, 147: 8220, 148: 8221, 149: 8226, 150: 8211, 151: 8212, 152: 732, 153: 8482, 154: 353, 155: 155, 156: 339, 157: 157, 158: 158, 159: 376, 160: 160, 161: 161, 162: 162, 163: 163, 164: 164, 165: 165, 166: 166, 167: 167, 168: 168, 169: 169, 170: 170, 171: 171, 172: 172, 173: 173, 174: 174, 175: 175, 176: 176, 177: 177, 178: 178, 179: 179, 180: 180, 181: 181, 182: 182, 183: 183, 184: 184, 185: 185, 186: 186, 187: 187, 188: 188, 189: 189, 190: 190, 191: 191, 192: 192, 193: 193, 194: 194, 195: 195, 196: 196, 197: 197, 198: 198, 199: 199, 200: 200, 201: 201, 202: 202, 203: 203, 204: 204, 205: 205, 206: 206, 207: 207, 208: 208, 209: 209, 210: 210, 211: 211, 212: 212, 213: 213, 214: 214, 215: 215, 216: 216, 217: 217, 218: 218, 219: 219, 220: 220, 221: 221, 222: 222, 223: 223, 224: 224, 225: 225, 226: 226, 227: 227, 228: 228, 229: 229, 230: 230, 231: 231, 232: 232, 233: 233, 234: 234, 235: 235, 236: 236, 237: 237, 238: 238, 239: 239, 240: 240, 241: 241, 242: 242, 243: 243, 244: 244, 245: 245, 246: 246, 247: 247, 248: 248, 249: 249, 250: 250, 251: 251, 252: 252, 253: 253, 254: 254, 255: 255}
register_kuroko_codec(['palmos'], PalmosIncrementalEncoder, PalmosIncrementalDecoder)
class Ptcp154IncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for Paratype PTCP-154 (Asian Cyrillic).
This is an modification of Windows-1251 to add support for Asian Cyrillic orthographies.
"""
name = 'ptcp154'
html5name = None
@lazy_property
def encoding_map():
return {1174: 128, 1170: 129, 1262: 130, 1171: 131, 8222: 132, 8230: 133, 1206: 134, 1198: 135, 1202: 136, 1199: 137, 1184: 138, 1250: 139, 1186: 140, 1178: 141, 1210: 142, 1208: 143, 1175: 144, 8216: 145, 8217: 146, 8220: 147, 8221: 148, 8226: 149, 8211: 150, 8212: 151, 1203: 152, 1207: 153, 1185: 154, 1251: 155, 1187: 156, 1179: 157, 1211: 158, 1209: 159, 160: 160, 1038: 161, 1118: 162, 1032: 163, 1256: 164, 1176: 165, 1200: 166, 167: 167, 1025: 168, 169: 169, 1240: 170, 171: 171, 172: 172, 1263: 173, 174: 174, 1180: 175, 176: 176, 1201: 177, 1030: 178, 1110: 179, 1177: 180, 1257: 181, 182: 182, 183: 183, 1105: 184, 8470: 185, 1241: 186, 187: 187, 1112: 188, 1194: 189, 1195: 190, 1181: 191, 1040: 192, 1041: 193, 1042: 194, 1043: 195, 1044: 196, 1045: 197, 1046: 198, 1047: 199, 1048: 200, 1049: 201, 1050: 202, 1051: 203, 1052: 204, 1053: 205, 1054: 206, 1055: 207, 1056: 208, 1057: 209, 1058: 210, 1059: 211, 1060: 212, 1061: 213, 1062: 214, 1063: 215, 1064: 216, 1065: 217, 1066: 218, 1067: 219, 1068: 220, 1069: 221, 1070: 222, 1071: 223, 1072: 224, 1073: 225, 1074: 226, 1075: 227, 1076: 228, 1077: 229, 1078: 230, 1079: 231, 1080: 232, 1081: 233, 1082: 234, 1083: 235, 1084: 236, 1085: 237, 1086: 238, 1087: 239, 1088: 240, 1089: 241, 1090: 242, 1091: 243, 1092: 244, 1093: 245, 1094: 246, 1095: 247, 1096: 248, 1097: 249, 1098: 250, 1099: 251, 1100: 252, 1101: 253, 1102: 254, 1103: 255}
class Ptcp154IncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for Paratype PTCP-154 (Asian Cyrillic).
This is an modification of Windows-1251 to add support for Asian Cyrillic orthographies.
"""
name = 'ptcp154'
html5name = None
@lazy_property
def decoding_map():
return {128: 1174, 129: 1170, 130: 1262, 131: 1171, 132: 8222, 133: 8230, 134: 1206, 135: 1198, 136: 1202, 137: 1199, 138: 1184, 139: 1250, 140: 1186, 141: 1178, 142: 1210, 143: 1208, 144: 1175, 145: 8216, 146: 8217, 147: 8220, 148: 8221, 149: 8226, 150: 8211, 151: 8212, 152: 1203, 153: 1207, 154: 1185, 155: 1251, 156: 1187, 157: 1179, 158: 1211, 159: 1209, 160: 160, 161: 1038, 162: 1118, 163: 1032, 164: 1256, 165: 1176, 166: 1200, 167: 167, 168: 1025, 169: 169, 170: 1240, 171: 171, 172: 172, 173: 1263, 174: 174, 175: 1180, 176: 176, 177: 1201, 178: 1030, 179: 1110, 180: 1177, 181: 1257, 182: 182, 183: 183, 184: 1105, 185: 8470, 186: 1241, 187: 187, 188: 1112, 189: 1194, 190: 1195, 191: 1181, 192: 1040, 193: 1041, 194: 1042, 195: 1043, 196: 1044, 197: 1045, 198: 1046, 199: 1047, 200: 1048, 201: 1049, 202: 1050, 203: 1051, 204: 1052, 205: 1053, 206: 1054, 207: 1055, 208: 1056, 209: 1057, 210: 1058, 211: 1059, 212: 1060, 213: 1061, 214: 1062, 215: 1063, 216: 1064, 217: 1065, 218: 1066, 219: 1067, 220: 1068, 221: 1069, 222: 1070, 223: 1071, 224: 1072, 225: 1073, 226: 1074, 227: 1075, 228: 1076, 229: 1077, 230: 1078, 231: 1079, 232: 1080, 233: 1081, 234: 1082, 235: 1083, 236: 1084, 237: 1085, 238: 1086, 239: 1087, 240: 1088, 241: 1089, 242: 1090, 243: 1091, 244: 1092, 245: 1093, 246: 1094, 247: 1095, 248: 1096, 249: 1097, 250: 1098, 251: 1099, 252: 1100, 253: 1101, 254: 1102, 255: 1103}
register_kuroko_codec(['ptcp154', 'csptcp154', 'pt154', 'cp154', 'cyrillic-asian'], Ptcp154IncrementalEncoder, Ptcp154IncrementalDecoder)
class XMacArabicIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Arabic encoding.
"""
name = 'x-mac-arabic'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 160: 129, 199: 130, 201: 131, 209: 132, 214: 133, 220: 134, 225: 135, 224: 136, 226: 137, 228: 138, 1722: 139, 171: 140, 231: 141, 233: 142, 232: 143, 234: 144, 235: 145, 237: 146, 8230: 147, 238: 148, 239: 149, 241: 150, 243: 151, 187: 152, 244: 153, 246: 154, 247: 155, 250: 156, 249: 157, 251: 158, 252: 159, 32: 160, 33: 161, 34: 162, 35: 163, 36: 164, 1642: 165, 38: 166, 39: 167, 40: 168, 41: 169, 42: 170, 43: 171, 1548: 172, 45: 173, 46: 174, 47: 175, 1632: 176, 1633: 177, 1634: 178, 1635: 179, 1636: 180, 1637: 181, 1638: 182, 1639: 183, 1640: 184, 1641: 185, 58: 186, 1563: 187, 60: 188, 61: 189, 62: 190, 1567: 191, 10058: 192, 1569: 193, 1570: 194, 1571: 195, 1572: 196, 1573: 197, 1574: 198, 1575: 199, 1576: 200, 1577: 201, 1578: 202, 1579: 203, 1580: 204, 1581: 205, 1582: 206, 1583: 207, 1584: 208, 1585: 209, 1586: 210, 1587: 211, 1588: 212, 1589: 213, 1590: 214, 1591: 215, 1592: 216, 1593: 217, 1594: 218, 91: 219, 92: 220, 93: 221, 94: 222, 95: 223, 1600: 224, 1601: 225, 1602: 226, 1603: 227, 1604: 228, 1605: 229, 1606: 230, 1607: 231, 1608: 232, 1609: 233, 1610: 234, 1611: 235, 1612: 236, 1613: 237, 1614: 238, 1615: 239, 1616: 240, 1617: 241, 1618: 242, 1662: 243, 1657: 244, 1670: 245, 1749: 246, 1700: 247, 1711: 248, 1672: 249, 1681: 250, 123: 251, 124: 252, 125: 253, 1688: 254, 1746: 255}
class XMacArabicIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the Macintosh Arabic encoding.
"""
name = 'x-mac-arabic'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 160, 130: 199, 131: 201, 132: 209, 133: 214, 134: 220, 135: 225, 136: 224, 137: 226, 138: 228, 139: 1722, 140: 171, 141: 231, 142: 233, 143: 232, 144: 234, 145: 235, 146: 237, 147: 8230, 148: 238, 149: 239, 150: 241, 151: 243, 152: 187, 153: 244, 154: 246, 155: 247, 156: 250, 157: 249, 158: 251, 159: 252, 160: 32, 161: 33, 162: 34, 163: 35, 164: 36, 165: 1642, 166: 38, 167: 39, 168: 40, 169: 41, 170: 42, 171: 43, 172: 1548, 173: 45, 174: 46, 175: 47, 176: 1632, 177: 1633, 178: 1634, 179: 1635, 180: 1636, 181: 1637, 182: 1638, 183: 1639, 184: 1640, 185: 1641, 186: 58, 187: 1563, 188: 60, 189: 61, 190: 62, 191: 1567, 192: 10058, 193: 1569, 194: 1570, 195: 1571, 196: 1572, 197: 1573, 198: 1574, 199: 1575, 200: 1576, 201: 1577, 202: 1578, 203: 1579, 204: 1580, 205: 1581, 206: 1582, 207: 1583, 208: 1584, 209: 1585, 210: 1586, 211: 1587, 212: 1588, 213: 1589, 214: 1590, 215: 1591, 216: 1592, 217: 1593, 218: 1594, 219: 91, 220: 92, 221: 93, 222: 94, 223: 95, 224: 1600, 225: 1601, 226: 1602, 227: 1603, 228: 1604, 229: 1605, 230: 1606, 231: 1607, 232: 1608, 233: 1609, 234: 1610, 235: 1611, 236: 1612, 237: 1613, 238: 1614, 239: 1615, 240: 1616, 241: 1617, 242: 1618, 243: 1662, 244: 1657, 245: 1670, 246: 1749, 247: 1700, 248: 1711, 249: 1672, 250: 1681, 251: 123, 252: 124, 253: 125, 254: 1688, 255: 1746}
register_kuroko_codec(['mac-arabic', 'x-mac-arabic'], XMacArabicIncrementalEncoder, XMacArabicIncrementalDecoder)
class XMacCeIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Central European encoding.
"""
name = 'x-mac-ce'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 256: 129, 257: 130, 201: 131, 260: 132, 214: 133, 220: 134, 225: 135, 261: 136, 268: 137, 228: 138, 269: 139, 262: 140, 263: 141, 233: 142, 377: 143, 378: 144, 270: 145, 237: 146, 271: 147, 274: 148, 275: 149, 278: 150, 243: 151, 279: 152, 244: 153, 246: 154, 245: 155, 250: 156, 282: 157, 283: 158, 252: 159, 8224: 160, 176: 161, 280: 162, 163: 163, 167: 164, 8226: 165, 182: 166, 223: 167, 174: 168, 169: 169, 8482: 170, 281: 171, 168: 172, 8800: 173, 291: 174, 302: 175, 303: 176, 298: 177, 8804: 178, 8805: 179, 299: 180, 310: 181, 8706: 182, 8721: 183, 322: 184, 315: 185, 316: 186, 317: 187, 318: 188, 313: 189, 314: 190, 325: 191, 326: 192, 323: 193, 172: 194, 8730: 195, 324: 196, 327: 197, 8710: 198, 171: 199, 187: 200, 8230: 201, 160: 202, 328: 203, 336: 204, 213: 205, 337: 206, 332: 207, 8211: 208, 8212: 209, 8220: 210, 8221: 211, 8216: 212, 8217: 213, 247: 214, 9674: 215, 333: 216, 340: 217, 341: 218, 344: 219, 8249: 220, 8250: 221, 345: 222, 342: 223, 343: 224, 352: 225, 8218: 226, 8222: 227, 353: 228, 346: 229, 347: 230, 193: 231, 356: 232, 357: 233, 205: 234, 381: 235, 382: 236, 362: 237, 211: 238, 212: 239, 363: 240, 366: 241, 218: 242, 367: 243, 368: 244, 369: 245, 370: 246, 371: 247, 221: 248, 253: 249, 311: 250, 379: 251, 321: 252, 380: 253, 290: 254, 711: 255}
class XMacCeIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the Macintosh Central European encoding.
"""
name = 'x-mac-ce'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 256, 130: 257, 131: 201, 132: 260, 133: 214, 134: 220, 135: 225, 136: 261, 137: 268, 138: 228, 139: 269, 140: 262, 141: 263, 142: 233, 143: 377, 144: 378, 145: 270, 146: 237, 147: 271, 148: 274, 149: 275, 150: 278, 151: 243, 152: 279, 153: 244, 154: 246, 155: 245, 156: 250, 157: 282, 158: 283, 159: 252, 160: 8224, 161: 176, 162: 280, 163: 163, 164: 167, 165: 8226, 166: 182, 167: 223, 168: 174, 169: 169, 170: 8482, 171: 281, 172: 168, 173: 8800, 174: 291, 175: 302, 176: 303, 177: 298, 178: 8804, 179: 8805, 180: 299, 181: 310, 182: 8706, 183: 8721, 184: 322, 185: 315, 186: 316, 187: 317, 188: 318, 189: 313, 190: 314, 191: 325, 192: 326, 193: 323, 194: 172, 195: 8730, 196: 324, 197: 327, 198: 8710, 199: 171, 200: 187, 201: 8230, 202: 160, 203: 328, 204: 336, 205: 213, 206: 337, 207: 332, 208: 8211, 209: 8212, 210: 8220, 211: 8221, 212: 8216, 213: 8217, 214: 247, 215: 9674, 216: 333, 217: 340, 218: 341, 219: 344, 220: 8249, 221: 8250, 222: 345, 223: 342, 224: 343, 225: 352, 226: 8218, 227: 8222, 228: 353, 229: 346, 230: 347, 231: 193, 232: 356, 233: 357, 234: 205, 235: 381, 236: 382, 237: 362, 238: 211, 239: 212, 240: 363, 241: 366, 242: 218, 243: 367, 244: 368, 245: 369, 246: 370, 247: 371, 248: 221, 249: 253, 250: 311, 251: 379, 252: 321, 253: 380, 254: 290, 255: 711}
register_kuroko_codec(['mac-centeuro', 'x-mac-ce', 'mac-latin2', 'maccentraleurope', 'maclatin2'], XMacCeIncrementalEncoder, XMacCeIncrementalDecoder)
class XMacCroatianIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Croatian encoding.
In contrast to the Windows and ISO Central European encodings, the Macintosh Central European
encoding did not include complete coverage for Gajica, hence a separate encoding was used.
The two do not resemble one another except insofar as both derive from Macintosh Roman.
"""
name = 'x-mac-croatian'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 197: 129, 199: 130, 201: 131, 209: 132, 214: 133, 220: 134, 225: 135, 224: 136, 226: 137, 228: 138, 227: 139, 229: 140, 231: 141, 233: 142, 232: 143, 234: 144, 235: 145, 237: 146, 236: 147, 238: 148, 239: 149, 241: 150, 243: 151, 242: 152, 244: 153, 246: 154, 245: 155, 250: 156, 249: 157, 251: 158, 252: 159, 8224: 160, 176: 161, 162: 162, 163: 163, 167: 164, 8226: 165, 182: 166, 223: 167, 174: 168, 352: 169, 8482: 170, 180: 171, 168: 172, 8800: 173, 381: 174, 216: 175, 8734: 176, 177: 177, 8804: 178, 8805: 179, 8710: 180, 181: 181, 8706: 182, 8721: 183, 8719: 184, 353: 185, 8747: 186, 170: 187, 186: 188, 937: 189, 382: 190, 248: 191, 191: 192, 161: 193, 172: 194, 8730: 195, 402: 196, 8776: 197, 262: 198, 171: 199, 268: 200, 8230: 201, 160: 202, 192: 203, 195: 204, 213: 205, 338: 206, 339: 207, 272: 208, 8212: 209, 8220: 210, 8221: 211, 8216: 212, 8217: 213, 247: 214, 9674: 215, 63743: 216, 169: 217, 8260: 218, 8364: 219, 8249: 220, 8250: 221, 198: 222, 187: 223, 8211: 224, 183: 225, 8218: 226, 8222: 227, 8240: 228, 194: 229, 263: 230, 193: 231, 269: 232, 200: 233, 205: 234, 206: 235, 207: 236, 204: 237, 211: 238, 212: 239, 273: 240, 210: 241, 218: 242, 219: 243, 217: 244, 305: 245, 710: 246, 732: 247, 175: 248, 960: 249, 203: 250, 730: 251, 184: 252, 202: 253, 230: 254, 711: 255}
class XMacCroatianIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the Macintosh Croatian encoding.
In contrast to the Windows and ISO Central European encodings, the Macintosh Central European
encoding did not include complete coverage for Gajica, hence a separate encoding was used.
The two do not resemble one another except insofar as both derive from Macintosh Roman.
"""
name = 'x-mac-croatian'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 197, 130: 199, 131: 201, 132: 209, 133: 214, 134: 220, 135: 225, 136: 224, 137: 226, 138: 228, 139: 227, 140: 229, 141: 231, 142: 233, 143: 232, 144: 234, 145: 235, 146: 237, 147: 236, 148: 238, 149: 239, 150: 241, 151: 243, 152: 242, 153: 244, 154: 246, 155: 245, 156: 250, 157: 249, 158: 251, 159: 252, 160: 8224, 161: 176, 162: 162, 163: 163, 164: 167, 165: 8226, 166: 182, 167: 223, 168: 174, 169: 352, 170: 8482, 171: 180, 172: 168, 173: 8800, 174: 381, 175: 216, 176: 8734, 177: 177, 178: 8804, 179: 8805, 180: 8710, 181: 181, 182: 8706, 183: 8721, 184: 8719, 185: 353, 186: 8747, 187: 170, 188: 186, 189: 937, 190: 382, 191: 248, 192: 191, 193: 161, 194: 172, 195: 8730, 196: 402, 197: 8776, 198: 262, 199: 171, 200: 268, 201: 8230, 202: 160, 203: 192, 204: 195, 205: 213, 206: 338, 207: 339, 208: 272, 209: 8212, 210: 8220, 211: 8221, 212: 8216, 213: 8217, 214: 247, 215: 9674, 216: 63743, 217: 169, 218: 8260, 219: 8364, 220: 8249, 221: 8250, 222: 198, 223: 187, 224: 8211, 225: 183, 226: 8218, 227: 8222, 228: 8240, 229: 194, 230: 263, 231: 193, 232: 269, 233: 200, 234: 205, 235: 206, 236: 207, 237: 204, 238: 211, 239: 212, 240: 273, 241: 210, 242: 218, 243: 219, 244: 217, 245: 305, 246: 710, 247: 732, 248: 175, 249: 960, 250: 203, 251: 730, 252: 184, 253: 202, 254: 230, 255: 711}
register_kuroko_codec(['mac-croatian', 'x-mac-croatian'], XMacCroatianIncrementalEncoder, XMacCroatianIncrementalDecoder)
class XMacFarsiIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Farsi encoding.
"""
name = 'x-mac-farsi'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 160: 129, 199: 130, 201: 131, 209: 132, 214: 133, 220: 134, 225: 135, 224: 136, 226: 137, 228: 138, 1722: 139, 171: 140, 231: 141, 233: 142, 232: 143, 234: 144, 235: 145, 237: 146, 8230: 147, 238: 148, 239: 149, 241: 150, 243: 151, 187: 152, 244: 153, 246: 154, 247: 155, 250: 156, 249: 157, 251: 158, 252: 159, 32: 160, 33: 161, 34: 162, 35: 163, 36: 164, 1642: 165, 38: 166, 39: 167, 40: 168, 41: 169, 42: 170, 43: 171, 1548: 172, 45: 173, 46: 174, 47: 175, 1776: 176, 1777: 177, 1778: 178, 1779: 179, 1780: 180, 1781: 181, 1782: 182, 1783: 183, 1784: 184, 1785: 185, 58: 186, 1563: 187, 60: 188, 61: 189, 62: 190, 1567: 191, 10058: 192, 1569: 193, 1570: 194, 1571: 195, 1572: 196, 1573: 197, 1574: 198, 1575: 199, 1576: 200, 1577: 201, 1578: 202, 1579: 203, 1580: 204, 1581: 205, 1582: 206, 1583: 207, 1584: 208, 1585: 209, 1586: 210, 1587: 211, 1588: 212, 1589: 213, 1590: 214, 1591: 215, 1592: 216, 1593: 217, 1594: 218, 91: 219, 92: 220, 93: 221, 94: 222, 95: 223, 1600: 224, 1601: 225, 1602: 226, 1603: 227, 1604: 228, 1605: 229, 1606: 230, 1607: 231, 1608: 232, 1609: 233, 1610: 234, 1611: 235, 1612: 236, 1613: 237, 1614: 238, 1615: 239, 1616: 240, 1617: 241, 1618: 242, 1662: 243, 1657: 244, 1670: 245, 1749: 246, 1700: 247, 1711: 248, 1672: 249, 1681: 250, 123: 251, 124: 252, 125: 253, 1688: 254, 1746: 255}
class XMacFarsiIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the Macintosh Farsi encoding.
"""
name = 'x-mac-farsi'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 160, 130: 199, 131: 201, 132: 209, 133: 214, 134: 220, 135: 225, 136: 224, 137: 226, 138: 228, 139: 1722, 140: 171, 141: 231, 142: 233, 143: 232, 144: 234, 145: 235, 146: 237, 147: 8230, 148: 238, 149: 239, 150: 241, 151: 243, 152: 187, 153: 244, 154: 246, 155: 247, 156: 250, 157: 249, 158: 251, 159: 252, 160: 32, 161: 33, 162: 34, 163: 35, 164: 36, 165: 1642, 166: 38, 167: 39, 168: 40, 169: 41, 170: 42, 171: 43, 172: 1548, 173: 45, 174: 46, 175: 47, 176: 1776, 177: 1777, 178: 1778, 179: 1779, 180: 1780, 181: 1781, 182: 1782, 183: 1783, 184: 1784, 185: 1785, 186: 58, 187: 1563, 188: 60, 189: 61, 190: 62, 191: 1567, 192: 10058, 193: 1569, 194: 1570, 195: 1571, 196: 1572, 197: 1573, 198: 1574, 199: 1575, 200: 1576, 201: 1577, 202: 1578, 203: 1579, 204: 1580, 205: 1581, 206: 1582, 207: 1583, 208: 1584, 209: 1585, 210: 1586, 211: 1587, 212: 1588, 213: 1589, 214: 1590, 215: 1591, 216: 1592, 217: 1593, 218: 1594, 219: 91, 220: 92, 221: 93, 222: 94, 223: 95, 224: 1600, 225: 1601, 226: 1602, 227: 1603, 228: 1604, 229: 1605, 230: 1606, 231: 1607, 232: 1608, 233: 1609, 234: 1610, 235: 1611, 236: 1612, 237: 1613, 238: 1614, 239: 1615, 240: 1616, 241: 1617, 242: 1618, 243: 1662, 244: 1657, 245: 1670, 246: 1749, 247: 1700, 248: 1711, 249: 1672, 250: 1681, 251: 123, 252: 124, 253: 125, 254: 1688, 255: 1746}
register_kuroko_codec(['mac-farsi', 'x-mac-farsi'], XMacFarsiIncrementalEncoder, XMacFarsiIncrementalDecoder)
class XMacGreekIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Greek encoding.
"""
name = 'x-mac-greek'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 185: 129, 178: 130, 201: 131, 179: 132, 214: 133, 220: 134, 901: 135, 224: 136, 226: 137, 228: 138, 900: 139, 168: 140, 231: 141, 233: 142, 232: 143, 234: 144, 235: 145, 163: 146, 8482: 147, 238: 148, 239: 149, 8226: 150, 189: 151, 8240: 152, 244: 153, 246: 154, 166: 155, 8364: 156, 249: 157, 251: 158, 252: 159, 8224: 160, 915: 161, 916: 162, 920: 163, 923: 164, 926: 165, 928: 166, 223: 167, 174: 168, 169: 169, 931: 170, 938: 171, 167: 172, 8800: 173, 176: 174, 183: 175, 913: 176, 177: 177, 8804: 178, 8805: 179, 165: 180, 914: 181, 917: 182, 918: 183, 919: 184, 921: 185, 922: 186, 924: 187, 934: 188, 939: 189, 936: 190, 937: 191, 940: 192, 925: 193, 172: 194, 927: 195, 929: 196, 8776: 197, 932: 198, 171: 199, 187: 200, 8230: 201, 160: 202, 933: 203, 935: 204, 902: 205, 904: 206, 339: 207, 8211: 208, 8213: 209, 8220: 210, 8221: 211, 8216: 212, 8217: 213, 247: 214, 905: 215, 906: 216, 908: 217, 910: 218, 941: 219, 942: 220, 943: 221, 972: 222, 911: 223, 973: 224, 945: 225, 946: 226, 968: 227, 948: 228, 949: 229, 966: 230, 947: 231, 951: 232, 953: 233, 958: 234, 954: 235, 955: 236, 956: 237, 957: 238, 959: 239, 960: 240, 974: 241, 961: 242, 963: 243, 964: 244, 952: 245, 969: 246, 962: 247, 967: 248, 965: 249, 950: 250, 970: 251, 971: 252, 912: 253, 944: 254, 173: 255}
class XMacGreekIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the Macintosh Greek encoding.
"""
name = 'x-mac-greek'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 185, 130: 178, 131: 201, 132: 179, 133: 214, 134: 220, 135: 901, 136: 224, 137: 226, 138: 228, 139: 900, 140: 168, 141: 231, 142: 233, 143: 232, 144: 234, 145: 235, 146: 163, 147: 8482, 148: 238, 149: 239, 150: 8226, 151: 189, 152: 8240, 153: 244, 154: 246, 155: 166, 156: 8364, 157: 249, 158: 251, 159: 252, 160: 8224, 161: 915, 162: 916, 163: 920, 164: 923, 165: 926, 166: 928, 167: 223, 168: 174, 169: 169, 170: 931, 171: 938, 172: 167, 173: 8800, 174: 176, 175: 183, 176: 913, 177: 177, 178: 8804, 179: 8805, 180: 165, 181: 914, 182: 917, 183: 918, 184: 919, 185: 921, 186: 922, 187: 924, 188: 934, 189: 939, 190: 936, 191: 937, 192: 940, 193: 925, 194: 172, 195: 927, 196: 929, 197: 8776, 198: 932, 199: 171, 200: 187, 201: 8230, 202: 160, 203: 933, 204: 935, 205: 902, 206: 904, 207: 339, 208: 8211, 209: 8213, 210: 8220, 211: 8221, 212: 8216, 213: 8217, 214: 247, 215: 905, 216: 906, 217: 908, 218: 910, 219: 941, 220: 942, 221: 943, 222: 972, 223: 911, 224: 973, 225: 945, 226: 946, 227: 968, 228: 948, 229: 949, 230: 966, 231: 947, 232: 951, 233: 953, 234: 958, 235: 954, 236: 955, 237: 956, 238: 957, 239: 959, 240: 960, 241: 974, 242: 961, 243: 963, 244: 964, 245: 952, 246: 969, 247: 962, 248: 967, 249: 965, 250: 950, 251: 970, 252: 971, 253: 912, 254: 944, 255: 173}
register_kuroko_codec(['mac-greek', 'macgreek', 'x-mac-greek'], XMacGreekIncrementalEncoder, XMacGreekIncrementalDecoder)
class XMacIcelandicIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Icelandic encoding.
"""
name = 'x-mac-icelandic'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 197: 129, 199: 130, 201: 131, 209: 132, 214: 133, 220: 134, 225: 135, 224: 136, 226: 137, 228: 138, 227: 139, 229: 140, 231: 141, 233: 142, 232: 143, 234: 144, 235: 145, 237: 146, 236: 147, 238: 148, 239: 149, 241: 150, 243: 151, 242: 152, 244: 153, 246: 154, 245: 155, 250: 156, 249: 157, 251: 158, 252: 159, 221: 160, 176: 161, 162: 162, 163: 163, 167: 164, 8226: 165, 182: 166, 223: 167, 174: 168, 169: 169, 8482: 170, 180: 171, 168: 172, 8800: 173, 198: 174, 216: 175, 8734: 176, 177: 177, 8804: 178, 8805: 179, 165: 180, 181: 181, 8706: 182, 8721: 183, 8719: 184, 960: 185, 8747: 186, 170: 187, 186: 188, 937: 189, 230: 190, 248: 191, 191: 192, 161: 193, 172: 194, 8730: 195, 402: 196, 8776: 197, 8710: 198, 171: 199, 187: 200, 8230: 201, 160: 202, 192: 203, 195: 204, 213: 205, 338: 206, 339: 207, 8211: 208, 8212: 209, 8220: 210, 8221: 211, 8216: 212, 8217: 213, 247: 214, 9674: 215, 255: 216, 376: 217, 8260: 218, 8364: 219, 208: 220, 240: 221, 222: 222, 254: 223, 253: 224, 183: 225, 8218: 226, 8222: 227, 8240: 228, 194: 229, 202: 230, 193: 231, 203: 232, 200: 233, 205: 234, 206: 235, 207: 236, 204: 237, 211: 238, 212: 239, 63743: 240, 210: 241, 218: 242, 219: 243, 217: 244, 305: 245, 710: 246, 732: 247, 175: 248, 728: 249, 729: 250, 730: 251, 184: 252, 733: 253, 731: 254, 711: 255}
class XMacIcelandicIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalEncoder implementation for the Macintosh Icelandic encoding.
"""
name = 'x-mac-icelandic'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 197, 130: 199, 131: 201, 132: 209, 133: 214, 134: 220, 135: 225, 136: 224, 137: 226, 138: 228, 139: 227, 140: 229, 141: 231, 142: 233, 143: 232, 144: 234, 145: 235, 146: 237, 147: 236, 148: 238, 149: 239, 150: 241, 151: 243, 152: 242, 153: 244, 154: 246, 155: 245, 156: 250, 157: 249, 158: 251, 159: 252, 160: 221, 161: 176, 162: 162, 163: 163, 164: 167, 165: 8226, 166: 182, 167: 223, 168: 174, 169: 169, 170: 8482, 171: 180, 172: 168, 173: 8800, 174: 198, 175: 216, 176: 8734, 177: 177, 178: 8804, 179: 8805, 180: 165, 181: 181, 182: 8706, 183: 8721, 184: 8719, 185: 960, 186: 8747, 187: 170, 188: 186, 189: 937, 190: 230, 191: 248, 192: 191, 193: 161, 194: 172, 195: 8730, 196: 402, 197: 8776, 198: 8710, 199: 171, 200: 187, 201: 8230, 202: 160, 203: 192, 204: 195, 205: 213, 206: 338, 207: 339, 208: 8211, 209: 8212, 210: 8220, 211: 8221, 212: 8216, 213: 8217, 214: 247, 215: 9674, 216: 255, 217: 376, 218: 8260, 219: 8364, 220: 208, 221: 240, 222: 222, 223: 254, 224: 253, 225: 183, 226: 8218, 227: 8222, 228: 8240, 229: 194, 230: 202, 231: 193, 232: 203, 233: 200, 234: 205, 235: 206, 236: 207, 237: 204, 238: 211, 239: 212, 240: 63743, 241: 210, 242: 218, 243: 219, 244: 217, 245: 305, 246: 710, 247: 732, 248: 175, 249: 728, 250: 729, 251: 730, 252: 184, 253: 733, 254: 731, 255: 711}
register_kuroko_codec(['mac-iceland', 'maciceland', 'x-mac-icelandic'], XMacIcelandicIncrementalEncoder, XMacIcelandicIncrementalDecoder)
class XMacRomanianIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Romanian encoding.
"""
name = 'x-mac-romanian'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 197: 129, 199: 130, 201: 131, 209: 132, 214: 133, 220: 134, 225: 135, 224: 136, 226: 137, 228: 138, 227: 139, 229: 140, 231: 141, 233: 142, 232: 143, 234: 144, 235: 145, 237: 146, 236: 147, 238: 148, 239: 149, 241: 150, 243: 151, 242: 152, 244: 153, 246: 154, 245: 155, 250: 156, 249: 157, 251: 158, 252: 159, 8224: 160, 176: 161, 162: 162, 163: 163, 167: 164, 8226: 165, 182: 166, 223: 167, 174: 168, 169: 169, 8482: 170, 180: 171, 168: 172, 8800: 173, 258: 174, 536: 175, 8734: 176, 177: 177, 8804: 178, 8805: 179, 165: 180, 181: 181, 8706: 182, 8721: 183, 8719: 184, 960: 185, 8747: 186, 170: 187, 186: 188, 937: 189, 259: 190, 537: 191, 191: 192, 161: 193, 172: 194, 8730: 195, 402: 196, 8776: 197, 8710: 198, 171: 199, 187: 200, 8230: 201, 160: 202, 192: 203, 195: 204, 213: 205, 338: 206, 339: 207, 8211: 208, 8212: 209, 8220: 210, 8221: 211, 8216: 212, 8217: 213, 247: 214, 9674: 215, 255: 216, 376: 217, 8260: 218, 8364: 219, 8249: 220, 8250: 221, 538: 222, 539: 223, 8225: 224, 183: 225, 8218: 226, 8222: 227, 8240: 228, 194: 229, 202: 230, 193: 231, 203: 232, 200: 233, 205: 234, 206: 235, 207: 236, 204: 237, 211: 238, 212: 239, 63743: 240, 210: 241, 218: 242, 219: 243, 217: 244, 305: 245, 710: 246, 732: 247, 175: 248, 728: 249, 729: 250, 730: 251, 184: 252, 733: 253, 731: 254, 711: 255}
class XMacRomanianIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the Macintosh Romanian encoding.
"""
name = 'x-mac-romanian'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 197, 130: 199, 131: 201, 132: 209, 133: 214, 134: 220, 135: 225, 136: 224, 137: 226, 138: 228, 139: 227, 140: 229, 141: 231, 142: 233, 143: 232, 144: 234, 145: 235, 146: 237, 147: 236, 148: 238, 149: 239, 150: 241, 151: 243, 152: 242, 153: 244, 154: 246, 155: 245, 156: 250, 157: 249, 158: 251, 159: 252, 160: 8224, 161: 176, 162: 162, 163: 163, 164: 167, 165: 8226, 166: 182, 167: 223, 168: 174, 169: 169, 170: 8482, 171: 180, 172: 168, 173: 8800, 174: 258, 175: 536, 176: 8734, 177: 177, 178: 8804, 179: 8805, 180: 165, 181: 181, 182: 8706, 183: 8721, 184: 8719, 185: 960, 186: 8747, 187: 170, 188: 186, 189: 937, 190: 259, 191: 537, 192: 191, 193: 161, 194: 172, 195: 8730, 196: 402, 197: 8776, 198: 8710, 199: 171, 200: 187, 201: 8230, 202: 160, 203: 192, 204: 195, 205: 213, 206: 338, 207: 339, 208: 8211, 209: 8212, 210: 8220, 211: 8221, 212: 8216, 213: 8217, 214: 247, 215: 9674, 216: 255, 217: 376, 218: 8260, 219: 8364, 220: 8249, 221: 8250, 222: 538, 223: 539, 224: 8225, 225: 183, 226: 8218, 227: 8222, 228: 8240, 229: 194, 230: 202, 231: 193, 232: 203, 233: 200, 234: 205, 235: 206, 236: 207, 237: 204, 238: 211, 239: 212, 240: 63743, 241: 210, 242: 218, 243: 219, 244: 217, 245: 305, 246: 710, 247: 732, 248: 175, 249: 728, 250: 729, 251: 730, 252: 184, 253: 733, 254: 731, 255: 711}
register_kuroko_codec(['mac-romanian', 'x-mac-romanian'], XMacRomanianIncrementalEncoder, XMacRomanianIncrementalDecoder)
class XMacTurkishIncrementalEncoder(AsciiIncrementalEncoder):
"""
IncrementalEncoder implementation for the Macintosh Turkish encoding.
"""
name = 'x-mac-turkish'
html5name = None
@lazy_property
def encoding_map():
return {196: 128, 197: 129, 199: 130, 201: 131, 209: 132, 214: 133, 220: 134, 225: 135, 224: 136, 226: 137, 228: 138, 227: 139, 229: 140, 231: 141, 233: 142, 232: 143, 234: 144, 235: 145, 237: 146, 236: 147, 238: 148, 239: 149, 241: 150, 243: 151, 242: 152, 244: 153, 246: 154, 245: 155, 250: 156, 249: 157, 251: 158, 252: 159, 8224: 160, 176: 161, 162: 162, 163: 163, 167: 164, 8226: 165, 182: 166, 223: 167, 174: 168, 169: 169, 8482: 170, 180: 171, 168: 172, 8800: 173, 198: 174, 216: 175, 8734: 176, 177: 177, 8804: 178, 8805: 179, 165: 180, 181: 181, 8706: 182, 8721: 183, 8719: 184, 960: 185, 8747: 186, 170: 187, 186: 188, 937: 189, 230: 190, 248: 191, 191: 192, 161: 193, 172: 194, 8730: 195, 402: 196, 8776: 197, 8710: 198, 171: 199, 187: 200, 8230: 201, 160: 202, 192: 203, 195: 204, 213: 205, 338: 206, 339: 207, 8211: 208, 8212: 209, 8220: 210, 8221: 211, 8216: 212, 8217: 213, 247: 214, 9674: 215, 255: 216, 376: 217, 286: 218, 287: 219, 304: 220, 305: 221, 350: 222, 351: 223, 8225: 224, 183: 225, 8218: 226, 8222: 227, 8240: 228, 194: 229, 202: 230, 193: 231, 203: 232, 200: 233, 205: 234, 206: 235, 207: 236, 204: 237, 211: 238, 212: 239, 63743: 240, 210: 241, 218: 242, 219: 243, 217: 244, 63648: 245, 710: 246, 732: 247, 175: 248, 728: 249, 729: 250, 730: 251, 184: 252, 733: 253, 731: 254, 711: 255}
class XMacTurkishIncrementalDecoder(AsciiIncrementalDecoder):
"""
IncrementalDecoder implementation for the Macintosh Turkish encoding.
"""
name = 'x-mac-turkish'
html5name = None
@lazy_property
def decoding_map():
return {128: 196, 129: 197, 130: 199, 131: 201, 132: 209, 133: 214, 134: 220, 135: 225, 136: 224, 137: 226, 138: 228, 139: 227, 140: 229, 141: 231, 142: 233, 143: 232, 144: 234, 145: 235, 146: 237, 147: 236, 148: 238, 149: 239, 150: 241, 151: 243, 152: 242, 153: 244, 154: 246, 155: 245, 156: 250, 157: 249, 158: 251, 159: 252, 160: 8224, 161: 176, 162: 162, 163: 163, 164: 167, 165: 8226, 166: 182, 167: 223, 168: 174, 169: 169, 170: 8482, 171: 180, 172: 168, 173: 8800, 174: 198, 175: 216, 176: 8734, 177: 177, 178: 8804, 179: 8805, 180: 165, 181: 181, 182: 8706, 183: 8721, 184: 8719, 185: 960, 186: 8747, 187: 170, 188: 186, 189: 937, 190: 230, 191: 248, 192: 191, 193: 161, 194: 172, 195: 8730, 196: 402, 197: 8776, 198: 8710, 199: 171, 200: 187, 201: 8230, 202: 160, 203: 192, 204: 195, 205: 213, 206: 338, 207: 339, 208: 8211, 209: 8212, 210: 8220, 211: 8221, 212: 8216, 213: 8217, 214: 247, 215: 9674, 216: 255, 217: 376, 218: 286, 219: 287, 220: 304, 221: 305, 222: 350, 223: 351, 224: 8225, 225: 183, 226: 8218, 227: 8222, 228: 8240, 229: 194, 230: 202, 231: 193, 232: 203, 233: 200, 234: 205, 235: 206, 236: 207, 237: 204, 238: 211, 239: 212, 240: 63743, 241: 210, 242: 218, 243: 219, 244: 217, 245: 63648, 246: 710, 247: 732, 248: 175, 249: 728, 250: 729, 251: 730, 252: 184, 253: 733, 254: 731, 255: 711}
register_kuroko_codec(['mac-turkish', 'macturkish', 'x-mac-turkish'], XMacTurkishIncrementalEncoder, XMacTurkishIncrementalDecoder)