enc-koi8.lisp - clic - Clic is an command line interactive client for gopher written in Common LISP
 (HTM) git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
       enc-koi8.lisp (19034B)
       ---
            1 ;;;; -*- Mode: lisp; indent-tabs-mode: nil -*-
            2 ;;;
            3 ;;; enc-cp1251.lisp --- Implementation of the CP1251 character encoding.
            4 ;;;
            5 ;;; Copyright (C) 2009, Andrey Moskvitin
            6 ;;;
            7 ;;; Permission is hereby granted, free of charge, to any person
            8 ;;; obtaining a copy of this software and associated documentation
            9 ;;; files (the "Software"), to deal in the Software without
           10 ;;; restriction, including without limitation the rights to use, copy,
           11 ;;; modify, merge, publish, distribute, sublicense, and/or sell copies
           12 ;;; of the Software, and to permit persons to whom the Software is
           13 ;;; furnished to do so, subject to the following conditions:
           14 ;;;
           15 ;;; The above copyright notice and this permission notice shall be
           16 ;;; included in all copies or substantial portions of the Software.
           17 ;;;
           18 ;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
           19 ;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
           20 ;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
           21 ;;; NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
           22 ;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
           23 ;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
           24 ;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
           25 ;;; DEALINGS IN THE SOFTWARE.
           26 
           27 (in-package #:babel-encodings)
           28 
           29 (define-character-encoding :koi8-ru
           30     "An 8-bit, fixed-width character Russian encoding."
           31   :literal-char-code-limit #x80)
           32 
           33 (define-constant +koi8-ru-to-unicode+
           34     #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524
           35       #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590
           36       #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248
           37       #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7
           38       #x2550 #x2551 #x2552 #x0451 #x0454 #x2554 #x0456 #x0457
           39       #x2557 #x2558 #x2559 #x255A #x255B #x0491 #x045E #x255E
           40       #x255F #x2560 #x2561 #x0401 #x0404 #x2563 #x0406 #x0407
           41       #x2566 #x2567 #x2568 #x2569 #x256A #x0490 #x040E #x00A9
           42       #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433
           43       #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E
           44       #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432
           45       #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A
           46       #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413
           47       #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E
           48       #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412
           49       #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A)
           50       :test #'equalp)
           51 
           52 (define-unibyte-decoder :koi8-ru (octet)
           53   (if (< octet #x80)
           54       octet
           55       (svref +koi8-ru-to-unicode+ (the ub8 (- octet #x80)))))
           56 
           57 (define-constant +unicode-04->koi8-ru+
           58     #(#x7f #x79 #x78 #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a
           59       #x49 #x4a #x4b #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48
           60       #x43 #x5e #x5b #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23 nil nil #x24
           61       nil #x26 #x27 nil nil nil nil nil nil #x2e nil nil nil nil nil nil nil
           62       nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
           63       nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
           64       nil nil nil nil nil nil #x3d #x2d)
           65   :test 'equalp)
           66 
           67 (define-unibyte-encoder :koi8-ru (code)
           68   (or (and (< code #x80) code)
           69       (let ((hi (ldb (byte 8 8) code))
           70             (lo (ldb (byte 8 0) code)))
           71         (case hi
           72           (#x4
           73            (case lo
           74              (#x1 #xb3)
           75              (#x4 #xb4)
           76              (#x6 #xb6)
           77              (#x7 #xb7)
           78              (#xe #xbe)
           79              (#x10 #xe1)
           80              (#x11 #xe2)
           81              (#x12 #xf7)
           82              (#x13 #xe7)
           83              (#x14 #xe4)
           84              (#x15 #xe5)
           85              (#x16 #xf6)
           86              (#x17 #xfa)
           87              (#x18 #xe9)
           88              (#x19 #xea)
           89              (#x1a #xeb)
           90              (#x1b #xec)
           91              (#x1c #xed)
           92              (#x1d #xee)
           93              (#x1e #xef)
           94              (#x1f #xf0)
           95              (#x20 #xf2)
           96              (#x21 #xf3)
           97              (#x22 #xf4)
           98              (#x23 #xf5)
           99              (#x24 #xe6)
          100              (#x25 #xe8)
          101              (#x26 #xe3)
          102              (#x27 #xfe)
          103              (#x28 #xfb)
          104              (#x29 #xfd)
          105              (#x2a #xff)
          106              (#x2b #xf9)
          107              (#x2c #xf8)
          108              (#x2d #xfc)
          109              (#x2e #xe0)
          110              (#x2f #xf1)
          111              (#x30 #xc1)
          112              (#x31 #xc2)
          113              (#x32 #xd7)
          114              (#x33 #xc7)
          115              (#x34 #xc4)
          116              (#x35 #xc5)
          117              (#x36 #xd6)
          118              (#x37 #xda)
          119              (#x38 #xc9)
          120              (#x39 #xca)
          121              (#x3a #xcb)
          122              (#x3b #xcc)
          123              (#x3c #xcd)
          124              (#x3d #xce)
          125              (#x3e #xcf)
          126              (#x3f #xd0)
          127              (#x40 #xd2)
          128              (#x41 #xd3)
          129              (#x42 #xd4)
          130              (#x43 #xd5)
          131              (#x44 #xc6)
          132              (#x45 #xc8)
          133              (#x46 #xc3)
          134              (#x47 #xde)
          135              (#x48 #xdb)
          136              (#x49 #xdd)
          137              (#x4a #xdf)
          138              (#x4b #xd9)
          139              (#x4c #xd8)
          140              (#x4d #xdc)
          141              (#x4e #xc0)
          142              (#x4f #xd1)
          143              (#x51 #xa3)
          144              (#x54 #xa4)
          145              (#x56 #xa6)
          146              (#x57 #xa7)
          147              (#x5e #xae)
          148              (#x90 #xbd)
          149              (#x91 #xad)))
          150           (#x0
          151            (case lo
          152              (#xa0 #x9a)
          153              (#xa9 #xbf)
          154              (#xb0 #x9c)
          155              (#xb2 #x9d)
          156              (#xb7 #x9e)
          157              (#xf7 #x9f)))
          158           (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99)))
          159           (#x23 (case lo (#x20 #x93) (#x21 #x9b)))
          160           (#x25
          161            (case lo
          162              (#x0 #x80)
          163              (#x2 #x81)
          164              (#xc #x82)
          165              (#x10 #x83)
          166              (#x14 #x84)
          167              (#x18 #x85)
          168              (#x1c #x86)
          169              (#x24 #x87)
          170              (#x2c #x88)
          171              (#x34 #x89)
          172              (#x3c #x8a)
          173              (#x50 #xa0)
          174              (#x51 #xa1)
          175              (#x52 #xa2)
          176              (#x54 #xa5)
          177              (#x57 #xa8)
          178              (#x58 #xa9)
          179              (#x59 #xaa)
          180              (#x5a #xab)
          181              (#x5b #xac)
          182              (#x5e #xaf)
          183              (#x5f #xb0)
          184              (#x60 #xb1)
          185              (#x61 #xb2)
          186              (#x63 #xb5)
          187              (#x66 #xb8)
          188              (#x67 #xb9)
          189              (#x68 #xba)
          190              (#x69 #xbb)
          191              (#x6a #xbc)
          192              (#x80 #x8b)
          193              (#x84 #x8c)
          194              (#x88 #x8d)
          195              (#x8c #x8e)
          196              (#x90 #x8f)
          197              (#x91 #x90)
          198              (#x92 #x91)
          199              (#x93 #x92)
          200              (#xa0 #x94)))))
          201       (handle-error)))
          202 
          203 (define-character-encoding :koi8-r
          204     "An 8-bit, fixed-width character Russian encoding."
          205   :literal-char-code-limit #x80)
          206 
          207 (define-constant +koi8-r-to-unicode+
          208     #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524
          209       #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590
          210       #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248
          211       #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7
          212       #x2550 #x2551 #x2552 #x0451 #x2553 #x2554 #x2555 #x2556
          213       #x2557 #x2558 #x2559 #x255A #x255B #x255C #x255D #x255E
          214       #x255F #x2560 #x2561 #x0401 #x2562 #x2563 #x2564 #x2565
          215       #x2566 #x2567 #x2568 #x2569 #x256A #x256B #x256C #x00A9
          216       #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433
          217       #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E
          218       #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432
          219       #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A
          220       #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413
          221       #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E
          222       #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412
          223       #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A)
          224   :test #'equalp)
          225 
          226 (define-unibyte-decoder :koi8-r (octet)
          227   (if (< octet #x80)
          228       octet
          229       (svref +koi8-r-to-unicode+ (the ub8 (- octet #x80)))))
          230 
          231 (define-constant +unicode-x04->koi8-r+
          232     #(nil #x33 nil nil nil nil nil nil nil nil nil nil nil nil nil nil #x61
          233       #x62 #x77 #x67 #x64 #x65 #x76 #x7a #x69 #x6a #x6b #x6c #x6d #x6e #x6f
          234       #x70 #x72 #x73 #x74 #x75 #x66 #x68 #x63 #x7e #x7b #x7d #x7f #x79 #x78
          235       #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a #x49 #x4a #x4b
          236       #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 #x43 #x5e #x5b
          237       #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23)
          238   :test 'equalp)
          239 
          240 (define-constant +unicode-x25->koi8-r+
          241     #(#x0 nil #x1 nil nil nil nil nil nil nil nil nil #x2 nil nil nil #x3 nil
          242       nil nil #x4 nil nil nil #x5 nil nil nil #x6 nil nil nil nil nil nil nil
          243       #x7 nil nil nil nil nil nil nil #x8 nil nil nil nil nil nil nil #x9 nil
          244       nil nil nil nil nil nil #xa nil nil nil nil nil nil nil nil nil nil nil
          245       nil nil nil nil nil nil nil nil #x20 #x21 #x22 #x24 #x25 #x26 #x27 #x28
          246       #x29 #x2a #x2b #x2c #x2d #x2e #x2f #x30 #x31 #x32 #x34 #x35 #x36 #x37
          247       #x38 #x39 #x3a #x3b #x3c #x3d #x3e nil nil nil nil nil nil nil nil nil
          248       nil nil nil nil nil nil nil nil nil nil #xb nil nil nil #xc nil nil nil
          249       #xd nil nil nil #xe nil nil nil #xf #x10 #x11 #x12 nil nil nil nil nil
          250       nil nil nil nil nil nil nil #x14)
          251     :test 'equalp)
          252 
          253 (define-unibyte-encoder :koi8-r (code)
          254   (or (and (< code #x80) code)
          255       (let ((hi (ldb (byte 8 8) code))
          256             (lo (ldb (byte 8 0) code)))
          257         (case hi
          258           (#x4
          259            (case lo
          260              (#x1 #xb3)
          261              (#x10 #xe1)
          262              (#x11 #xe2)
          263              (#x12 #xf7)
          264              (#x13 #xe7)
          265              (#x14 #xe4)
          266              (#x15 #xe5)
          267              (#x16 #xf6)
          268              (#x17 #xfa)
          269              (#x18 #xe9)
          270              (#x19 #xea)
          271              (#x1a #xeb)
          272              (#x1b #xec)
          273              (#x1c #xed)
          274              (#x1d #xee)
          275              (#x1e #xef)
          276              (#x1f #xf0)
          277              (#x20 #xf2)
          278              (#x21 #xf3)
          279              (#x22 #xf4)
          280              (#x23 #xf5)
          281              (#x24 #xe6)
          282              (#x25 #xe8)
          283              (#x26 #xe3)
          284              (#x27 #xfe)
          285              (#x28 #xfb)
          286              (#x29 #xfd)
          287              (#x2a #xff)
          288              (#x2b #xf9)
          289              (#x2c #xf8)
          290              (#x2d #xfc)
          291              (#x2e #xe0)
          292              (#x2f #xf1)
          293              (#x30 #xc1)
          294              (#x31 #xc2)
          295              (#x32 #xd7)
          296              (#x33 #xc7)
          297              (#x34 #xc4)
          298              (#x35 #xc5)
          299              (#x36 #xd6)
          300              (#x37 #xda)
          301              (#x38 #xc9)
          302              (#x39 #xca)
          303              (#x3a #xcb)
          304              (#x3b #xcc)
          305              (#x3c #xcd)
          306              (#x3d #xce)
          307              (#x3e #xcf)
          308              (#x3f #xd0)
          309              (#x40 #xd2)
          310              (#x41 #xd3)
          311              (#x42 #xd4)
          312              (#x43 #xd5)
          313              (#x44 #xc6)
          314              (#x45 #xc8)
          315              (#x46 #xc3)
          316              (#x47 #xde)
          317              (#x48 #xdb)
          318              (#x49 #xdd)
          319              (#x4a #xdf)
          320              (#x4b #xd9)
          321              (#x4c #xd8)
          322              (#x4d #xdc)
          323              (#x4e #xc0)
          324              (#x4f #xd1)
          325              (#x51 #xa3)))
          326           (#x0
          327            (case lo
          328              (#xa0 #x9a)
          329              (#xa9 #xbf)
          330              (#xb0 #x9c)
          331              (#xb2 #x9d)
          332              (#xb7 #x9e)
          333              (#xf7 #x9f)))
          334           (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99)))
          335           (#x23 (case lo (#x20 #x93) (#x21 #x9b)))
          336           (#x25
          337            (case lo
          338              (#x0 #x80)
          339              (#x2 #x81)
          340              (#xc #x82)
          341              (#x10 #x83)
          342              (#x14 #x84)
          343              (#x18 #x85)
          344              (#x1c #x86)
          345              (#x24 #x87)
          346              (#x2c #x88)
          347              (#x34 #x89)
          348              (#x3c #x8a)
          349              (#x50 #xa0)
          350              (#x51 #xa1)
          351              (#x52 #xa2)
          352              (#x53 #xa4)
          353              (#x54 #xa5)
          354              (#x55 #xa6)
          355              (#x56 #xa7)
          356              (#x57 #xa8)
          357              (#x58 #xa9)
          358              (#x59 #xaa)
          359              (#x5a #xab)
          360              (#x5b #xac)
          361              (#x5c #xad)
          362              (#x5d #xae)
          363              (#x5e #xaf)
          364              (#x5f #xb0)
          365              (#x60 #xb1)
          366              (#x61 #xb2)
          367              (#x62 #xb4)
          368              (#x63 #xb5)
          369              (#x64 #xb6)
          370              (#x65 #xb7)
          371              (#x66 #xb8)
          372              (#x67 #xb9)
          373              (#x68 #xba)
          374              (#x69 #xbb)
          375              (#x6a #xbc)
          376              (#x6b #xbd)
          377              (#x6c #xbe)
          378              (#x80 #x8b)
          379              (#x84 #x8c)
          380              (#x88 #x8d)
          381              (#x8c #x8e)
          382              (#x90 #x8f)
          383              (#x91 #x90)
          384              (#x92 #x91)
          385              (#x93 #x92)
          386              (#xa0 #x94)))))
          387       (handle-error)))
          388 
          389 (define-character-encoding :koi8-u
          390     "An 8-bit, fixed-width character Ukranian encoding."
          391   :literal-char-code-limit #x80)
          392 
          393 (define-constant +koi8-u-to-unicode+
          394     #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524
          395       #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590
          396       #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248
          397       #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7
          398       #x2550 #x2551 #x2552 #x0451 #x0454 #x2554 #x0456 #x0457
          399       #x2557 #x2558 #x2559 #x255A #x255B #x0491 #x255D #x255E
          400       #x255F #x2560 #x2561 #x0401 #x0404 #x2563 #x0406 #x0407
          401       #x2566 #x2567 #x2568 #x2569 #x256A #x0490 #x256C #x00A9
          402       #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433
          403       #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E
          404       #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432
          405       #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A
          406       #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413
          407       #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E
          408       #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412
          409       #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A )
          410   :test #'equalp)
          411 
          412 (define-unibyte-decoder :koi8-u (octet)
          413   (if (< octet #x80)
          414       octet
          415       (svref +koi8-u-to-unicode+ (the ub8 (- octet #x80)))))
          416 
          417 (define-constant +unicode-x04->koi8-u+
          418     #(nil #x33 nil nil #x34 nil #x36 #x37 nil nil nil nil nil nil nil nil #x61
          419       #x62 #x77 #x67 #x64 #x65 #x76 #x7a #x69 #x6a #x6b #x6c #x6d #x6e #x6f
          420       #x70 #x72 #x73 #x74 #x75 #x66 #x68 #x63 #x7e #x7b #x7d #x7f #x79 #x78
          421       #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a #x49 #x4a #x4b
          422       #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 #x43 #x5e #x5b
          423       #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23 nil nil #x24 nil #x26 #x27
          424       nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
          425       nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
          426       nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
          427       nil nil #x3d #x2d)
          428     :test 'equalp)
          429 
          430 (define-constant +unicode-x25->koi8-u+
          431     #(#x0 nil #x1 nil nil nil nil nil nil nil nil nil #x2 nil nil nil #x3 nil
          432       nil nil #x4 nil nil nil #x5 nil nil nil #x6 nil nil nil nil nil nil nil
          433       #x7 nil nil nil nil nil nil nil #x8 nil nil nil nil nil nil nil #x9 nil
          434       nil nil nil nil nil nil #xa nil nil nil nil nil nil nil nil nil nil nil
          435       nil nil nil nil nil nil nil nil #x20 #x21 #x22 nil #x25 nil nil #x28
          436       #x29 #x2a #x2b #x2c nil #x2e #x2f #x30 #x31 #x32 nil #x35 nil nil #x38
          437       #x39 #x3a #x3b #x3c nil #x3e nil nil nil nil nil nil nil nil nil nil nil
          438       nil nil nil nil nil nil nil nil #xb nil nil nil #xc nil nil nil #xd nil
          439       nil nil #xe nil nil nil #xf #x10 #x11 #x12 nil nil nil nil nil nil nil
          440       nil nil nil nil nil #x14)
          441   :test 'equalp)
          442 
          443 (define-unibyte-encoder :koi8-u (code)
          444   (or (and (< code #x80) code)
          445       (let ((hi (ldb (byte 8 8) code))
          446             (lo (ldb (byte 8 0) code)))
          447         (case hi
          448           (#x4
          449            (case lo
          450              (#x1 #xb3)
          451              (#x4 #xb4)
          452              (#x6 #xb6)
          453              (#x7 #xb7)
          454              (#x10 #xe1)
          455              (#x11 #xe2)
          456              (#x12 #xf7)
          457              (#x13 #xe7)
          458              (#x14 #xe4)
          459              (#x15 #xe5)
          460              (#x16 #xf6)
          461              (#x17 #xfa)
          462              (#x18 #xe9)
          463              (#x19 #xea)
          464              (#x1a #xeb)
          465              (#x1b #xec)
          466              (#x1c #xed)
          467              (#x1d #xee)
          468              (#x1e #xef)
          469              (#x1f #xf0)
          470              (#x20 #xf2)
          471              (#x21 #xf3)
          472              (#x22 #xf4)
          473              (#x23 #xf5)
          474              (#x24 #xe6)
          475              (#x25 #xe8)
          476              (#x26 #xe3)
          477              (#x27 #xfe)
          478              (#x28 #xfb)
          479              (#x29 #xfd)
          480              (#x2a #xff)
          481              (#x2b #xf9)
          482              (#x2c #xf8)
          483              (#x2d #xfc)
          484              (#x2e #xe0)
          485              (#x2f #xf1)
          486              (#x30 #xc1)
          487              (#x31 #xc2)
          488              (#x32 #xd7)
          489              (#x33 #xc7)
          490              (#x34 #xc4)
          491              (#x35 #xc5)
          492              (#x36 #xd6)
          493              (#x37 #xda)
          494              (#x38 #xc9)
          495              (#x39 #xca)
          496              (#x3a #xcb)
          497              (#x3b #xcc)
          498              (#x3c #xcd)
          499              (#x3d #xce)
          500              (#x3e #xcf)
          501              (#x3f #xd0)
          502              (#x40 #xd2)
          503              (#x41 #xd3)
          504              (#x42 #xd4)
          505              (#x43 #xd5)
          506              (#x44 #xc6)
          507              (#x45 #xc8)
          508              (#x46 #xc3)
          509              (#x47 #xde)
          510              (#x48 #xdb)
          511              (#x49 #xdd)
          512              (#x4a #xdf)
          513              (#x4b #xd9)
          514              (#x4c #xd8)
          515              (#x4d #xdc)
          516              (#x4e #xc0)
          517              (#x4f #xd1)
          518              (#x51 #xa3)
          519              (#x54 #xa4)
          520              (#x56 #xa6)
          521              (#x57 #xa7)
          522              (#x90 #xbd)
          523              (#x91 #xad)))
          524           (#x0
          525            (case lo
          526              (#xa0 #x9a)
          527              (#xa9 #xbf)
          528              (#xb0 #x9c)
          529              (#xb2 #x9d)
          530              (#xb7 #x9e)
          531              (#xf7 #x9f)))
          532           (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99)))
          533           (#x23 (case lo (#x20 #x93) (#x21 #x9b)))
          534           (#x25
          535            (case lo
          536              (#x0 #x80)
          537              (#x2 #x81)
          538              (#xc #x82)
          539              (#x10 #x83)
          540              (#x14 #x84)
          541              (#x18 #x85)
          542              (#x1c #x86)
          543              (#x24 #x87)
          544              (#x2c #x88)
          545              (#x34 #x89)
          546              (#x3c #x8a)
          547              (#x50 #xa0)
          548              (#x51 #xa1)
          549              (#x52 #xa2)
          550              (#x54 #xa5)
          551              (#x57 #xa8)
          552              (#x58 #xa9)
          553              (#x59 #xaa)
          554              (#x5a #xab)
          555              (#x5b #xac)
          556              (#x5d #xae)
          557              (#x5e #xaf)
          558              (#x5f #xb0)
          559              (#x60 #xb1)
          560              (#x61 #xb2)
          561              (#x63 #xb5)
          562              (#x66 #xb8)
          563              (#x67 #xb9)
          564              (#x68 #xba)
          565              (#x69 #xbb)
          566              (#x6a #xbc)
          567              (#x6c #xbe)
          568              (#x80 #x8b)
          569              (#x84 #x8c)
          570              (#x88 #x8d)
          571              (#x8c #x8e)
          572              (#x90 #x8f)
          573              (#x91 #x90)
          574              (#x92 #x91)
          575              (#x93 #x92)
          576              (#xa0 #x94)))))
          577       (handle-error)))