#define _URLTYPE_C

#define __UF_UNRESERVED 0x01
#define __UF_URIC       0x02
#define __UF_PCHAR      0x04
#define __UF_REGNAME    0x08
#define __UF_USERINFO   0x10
#define __UF_RELATIVE   0x20
#define __UF_SCHEME     0x40
#define __UF_SPECIAL    0x80
#define __UF_NOTADOS    0x100

#define UNRES   __UF_UNRESERVED
#define URIC    __UF_URIC
#define PCHAR   __UF_PCHAR
#define RN      __UF_REGNAME
#define UI      __UF_USERINFO
#define REL     __UF_RELATIVE
#define SCHEME  __UF_SCHEME
#define SPEC    __UF_SPECIAL
#define NDOS    __UF_NOTADOS

const short __UrlType[256] =
{
  NDOS,				// 00 = NUL
   NDOS,			// 01 = SOH
   NDOS,			// 02 = STX
   NDOS,			// 03 = ETX
   NDOS,			// 04 = EOT
   NDOS,			// 05 = ENQ
   NDOS,			// 06 = ACK
   NDOS,			// 07 = BEL
   NDOS,			// 08 = BS
   NDOS,			// 09 = Tab
   NDOS,			// 0a = Line Feed
   NDOS,			// 0b = VT
   NDOS,			// 0c = NP
   NDOS,			// 0d = Carriage Return
   NDOS,			// 0e = SO
   NDOS,			// 0f = SI
   NDOS,			// 10 = DLE
   NDOS,			// 11 = DC1
   NDOS,			// 12 = DC2
   NDOS,			// 13 = DC3
   NDOS,			// 14 = DC4
   NDOS,			// 15 = NAK
   NDOS,			// 16 = SYN
   NDOS,			// 17 = ETB
   NDOS,			// 18 = CAN
   NDOS,			// 19 = EM
   NDOS,			// 1a = SUB
   NDOS,			// 1b = ESC (Ansi Commands)
   NDOS,			// 1c = FS
   NDOS,			// 1d = GS
   NDOS,			// 1e = RS
   NDOS,			// 1f = US
   0,				// 20 = ' '
   UNRES,			// 21 = !
   NDOS,			// 22 = "
   SPEC | NDOS,			// 23 = #
   URIC | PCHAR | UI | RN | REL,	// 24 = $
   URIC | PCHAR | UI | RN | REL | NDOS,		// 25 = %
   URIC | PCHAR | UI | RN | REL,	// 26 = &
   UNRES | NDOS,		// 27 = '
   UNRES | NDOS,		// 28 = (
   UNRES | NDOS,		// 29 = )
   UNRES | NDOS,		// 2a = *
   URIC | PCHAR | UI | RN | REL | SCHEME,	// 2b = +
   URIC | PCHAR | UI | RN | REL,	// 2c = ,
   UNRES | SCHEME,		// 2d = -
   UNRES | SCHEME,		// 2e = .
   URIC | PCHAR | REL | NDOS,	// 2f = /
   UNRES | SCHEME,		// 30 = 0
   UNRES | SCHEME,		// 31 = 1
   UNRES | SCHEME,		// 32 = 2
   UNRES | SCHEME,		// 33 = 3
   UNRES | SCHEME,		// 34 = 4
   UNRES | SCHEME,		// 35 = 5
   UNRES | SCHEME,		// 36 = 6
   UNRES | SCHEME,		// 37 = 7
   UNRES | SCHEME,		// 38 = 8
   UNRES | SCHEME,		// 39 = 9
   URIC | PCHAR | UI | RN | NDOS,	// 3a = :
   URIC | PCHAR | UI | RN | REL | NDOS,		// 3b = ;
   NDOS,			// 3c = <
   URIC | PCHAR | UI | RN | REL | NDOS,		// 3d = =
   NDOS,			// 3e = >
   URIC | PCHAR | NDOS,		// 3f = ?
   URIC | PCHAR | RN | REL,	// 40 = @
   UNRES | SCHEME,		// 41 = A
   UNRES | SCHEME,		// 42 = B
   UNRES | SCHEME,		// 43 = C
   UNRES | SCHEME,		// 44 = D
   UNRES | SCHEME,		// 45 = E
   UNRES | SCHEME,		// 46 = F
   UNRES | SCHEME,		// 47 = G
   UNRES | SCHEME,		// 48 = H
   UNRES | SCHEME,		// 49 = I
   UNRES | SCHEME,		// 4a = J
   UNRES | SCHEME,		// 4b = K
   UNRES | SCHEME,		// 4c = L
   UNRES | SCHEME,		// 4d = M
   UNRES | SCHEME,		// 4e = N
   UNRES | SCHEME,		// 4f = O
   UNRES | SCHEME,		// 50 = P
   UNRES | SCHEME,		// 51 = Q
   UNRES | SCHEME,		// 52 = R
   UNRES | SCHEME,		// 53 = S
   UNRES | SCHEME,		// 54 = T
   UNRES | SCHEME,		// 55 = U
   UNRES | SCHEME,		// 56 = V
   UNRES | SCHEME,		// 57 = W
   UNRES | SCHEME,		// 58 = X
   UNRES | SCHEME,		// 59 = Y
   UNRES | SCHEME,		// 5a = Z
   NDOS,			// 5b = [
   NDOS,			// 5c =
   NDOS,			// 5d = ]
   0,				// 5e = ^
   UNRES,			// 5f = _
   NDOS,			// 60 = `
   UNRES | SCHEME,		// 61 = a
   UNRES | SCHEME,		// 62 = b
   UNRES | SCHEME,		// 63 = c
   UNRES | SCHEME,		// 64 = d
   UNRES | SCHEME,		// 65 = e
   UNRES | SCHEME,		// 66 = f
   UNRES | SCHEME,		// 67 = g
   UNRES | SCHEME,		// 68 = h
   UNRES | SCHEME,		// 69 = i
   UNRES | SCHEME,		// 6a = j
   UNRES | SCHEME,		// 6b = k
   UNRES | SCHEME,		// 6c = l
   UNRES | SCHEME,		// 6d = m
   UNRES | SCHEME,		// 6e = n
   UNRES | SCHEME,		// 6f = o
   UNRES | SCHEME,		// 70 = p
   UNRES | SCHEME,		// 71 = q
   UNRES | SCHEME,		// 72 = r
   UNRES | SCHEME,		// 73 = s
   UNRES | SCHEME,		// 74 = t
   UNRES | SCHEME,		// 75 = u
   UNRES | SCHEME,		// 76 = v
   UNRES | SCHEME,		// 77 = w
   UNRES | SCHEME,		// 78 = x
   UNRES | SCHEME,		// 79 = y
   UNRES | SCHEME,		// 7a = z
   0,				// 7b = {
   0,				// 7c = |
   0,				// 7d = }
   UNRES | NDOS,		// 7e = ~
   NDOS,			// 7f = DEL
   NDOS,			// 80 = NUL
   NDOS,			// 81 = SOH
   NDOS,			// 82 = STX
   NDOS,			// 83 = ETX
   NDOS,			// 84 = EOT
   NDOS,			// 85 = ENQ
   NDOS,			// 86 = ACK
   NDOS,			// 87 = BEL
   NDOS,			// 88 = BS
   NDOS,			// 89 = HT
   NDOS,			// 8a = NL
   NDOS,			// 8b = VT
   NDOS,			// 8c = NP
   NDOS,			// 8d = CR
   NDOS,			// 8e = SO
   NDOS,			// 8f = SI
   NDOS,			// 90 = DLE
   NDOS,			// 91 = DC1
   NDOS,			// 92 = DC2
   NDOS,			// 93 = DC3
   NDOS,			// 94 = DC4
   NDOS,			// 95 = NAK
   NDOS,			// 96 = SYN
   NDOS,			// 97 = ETB
   NDOS,			// 98 = CAN
   NDOS,			// 99 = EM
   NDOS,			// 9a = SUB
   NDOS,			// 9b = ESC
   NDOS,			// 9c = FS
   NDOS,			// 9d = GS
   NDOS,			// 9e = RS
   NDOS,			// 9f = US
   NDOS,			// a0 = ' ' (Not Breaking SPace)
   0,				// a1 = ¡
   0,				// a2 = ¢
   0,				// a3 = £
   0,				// a4 = ¤
   0,				// a5 = ¥
   0,				// a6 = ¦
   0,				// a7 = §
   0,				// a8 = ¨
   0,				// a9 = ©
   0,				// aa = ª
   0,				// ab = «
   0,				// ac = ¬
   0,				// ad = ­
   0,				// ae = ®
   0,				// af = ¯
   0,				// b0 = °
   0,				// b1 = ±
   0,				// b2 = ²
   0,				// b3 = ³
   0,				// b4 = ´
   0,				// b5 = µ
   0,				// b6 = ¶
   0,				// b7 = ·
   0,				// b8 = ¸
   0,				// b9 = ¹
   0,				// ba = º
   0,				// bb = »
   0,				// bc = ¼
   0,				// bd = ½
   0,				// be = ¾
   0,				// bf = ¿
   0,				// c0 = À
   0,				// c1 = Á
   0,				// c2 = Â
   0,				// c3 = Ã
   0,				// c4 = Ä
   0,				// c5 = Å
   0,				// c6 = Æ
   0,				// c7 = Ç
   0,				// c8 = È
   0,				// c9 = É
   0,				// ca = Ê
   0,				// cb = Ë
   0,				// cc = Ì
   0,				// cd = Í
   0,				// ce = Î
   0,				// cf = Ï
   0,				// d0 = Ð
   0,				// d1 = Ñ
   0,				// d2 = Ò
   0,				// d3 = Ó
   0,				// d4 = Ô
   0,				// d5 = Õ
   0,				// d6 = Ö
   0,				// d7 = ×
   0,				// d8 = Ø
   0,				// d9 = Ù
   0,				// da = Ú
   0,				// db = Û
   0,				// dc = Ü
   0,				// dd = Ý
   0,				// de = Þ
   0,				// df = ß
   0,				// e0 = à
   0,				// e1 = á
   0,				// e2 = â
   0,				// e3 = ã
   0,				// e4 = ä
   0,				// e5 = å
   0,				// e6 = æ
   0,				// e7 = ç
   0,				// e8 = è
   0,				// e9 = é
   0,				// ea = ê
   0,				// eb = ë
   0,				// ec = ì
   0,				// ed = í
   0,				// ee = î
   0,				// ef = ï
   0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0
};
