;; Basic PinYin Translation Table for Egg+Takana+cWnn
;; Coded by Hiroshi Kuribayashi (kuri@nff.ncl.omron.co.jp)

(defun its:select-erpin () (interactive) (its:select-mode "erpin"))
(define-key mule-keymap "\C-e" 'its:select-erpin)
(define-key fence-mode-map "\ee" 'its:select-erpin)

(its-define-mode "erpin" "$A6~(B" t nil nil 'cserver (lambda () (setq cwnn-zhuyin nil)))

(its-defrule-select-mode-temporally "B" "downcase")
(its-defrule-select-mode-temporally "Q" "quanjiao-downcase")

(dolist (A	'("b" "c" "d" "f" "g" "h" "k" "l" "m" "n" "p" "s" "t" "w" "y" "z"))
    (its-defrule (concat A "a")		(concat (upcase A) "a(0@(B"))
    (its-defrule (concat A "a1")	(concat (upcase A) "(0!@(B"))
    (its-defrule (concat A "a2")	(concat (upcase A) "(0"@(B"))
    (its-defrule (concat A "a3")	(concat (upcase A) "(0#@(B"))
    (its-defrule (concat A "a4")	(concat (upcase A) "(0$@(B")))
(dolist (AI	'("b" "c" "d" "g" "h" "k" "l" "m" "n" "p" "s" "t" "w" "z"))
    (its-defrule (concat AI "s")	(concat (upcase AI) "ai(0@(B"))
    (its-defrule (concat AI "s1")	(concat (upcase AI) "(0!(Bi(0@(B"))
    (its-defrule (concat AI "s2")	(concat (upcase AI) "(0"(Bi(0@(B"))
    (its-defrule (concat AI "s3")	(concat (upcase AI) "(0#(Bi(0@(B"))
    (its-defrule (concat AI "s4")	(concat (upcase AI) "(0$(Bi(0@(B")))
(dolist (AN	'("b" "c" "d" "f" "g" "h" "k" "l" "m" "n" "p" "r" "s" "t" "w" "y" "z")) ;ANG
    (its-defrule (concat AN "g")	(concat (upcase AN) "ang(0@(B"))
    (its-defrule (concat AN "g1")	(concat (upcase AN) "(0!(Bng(0@(B"))
    (its-defrule (concat AN "g2")	(concat (upcase AN) "(0"(Bng(0@(B"))
    (its-defrule (concat AN "g3")	(concat (upcase AN) "(0#(Bng(0@(B"))
    (its-defrule (concat AN "g4")	(concat (upcase AN) "(0$(Bng(0@(B"))
    (its-defrule (concat AN "f")	(concat (upcase AN) "an(0@(B"))
    (its-defrule (concat AN "f1")	(concat (upcase AN) "(0!(Bn(0@(B"))
    (its-defrule (concat AN "f2")	(concat (upcase AN) "(0"(Bn(0@(B"))
    (its-defrule (concat AN "f3")	(concat (upcase AN) "(0#(Bn(0@(B"))
    (its-defrule (concat AN "f4")	(concat (upcase AN) "(0$(Bn(0@(B")))
(dolist (AO	'("b" "c" "d" "g" "h" "k" "l" "m" "n" "p" "r" "s" "t" "w" "y" "z"))
    (its-defrule (concat AO "d")	(concat (upcase AO) "ao(0@(B"))
    (its-defrule (concat AO "d1")	(concat (upcase AO) "(0!(Bo(0@(B"))
    (its-defrule (concat AO "d2")	(concat (upcase AO) "(0"(Bo(0@(B"))
    (its-defrule (concat AO "d3")	(concat (upcase AO) "(0#(Bo(0@(B"))
    (its-defrule (concat AO "d4")	(concat (upcase AO) "(0$(Bo(0@(B")))
(dolist (E	'("c" "d" "g" "h" "k" "l" "m" "n" "r" "s" "t" "y" "z"))
    (its-defrule (concat E "e")		(concat (upcase E) "e(0@(B"))
    (its-defrule (concat E "e1")	(concat (upcase E) "(0%@(B"))
    (its-defrule (concat E "e2")	(concat (upcase E) "(0&@(B"))
    (its-defrule (concat E "e3")	(concat (upcase E) "(0'@(B"))
    (its-defrule (concat E "e4")	(concat (upcase E) "(0(@(B")))
(dolist (EI	'("b" "c" "d" "f" "g" "h" "k" "l" "m" "n" "p" "t" "w" "z"))
    (its-defrule (concat EI "w")	(concat (upcase EI) "ei(0@(B"))
    (its-defrule (concat EI "w1")	(concat (upcase EI) "(0%(Bi(0@(B"))
    (its-defrule (concat EI "w2")	(concat (upcase EI) "(0&(Bi(0@(B"))
    (its-defrule (concat EI "w3")	(concat (upcase EI) "(0'(Bi(0@(B"))
    (its-defrule (concat EI "w4")	(concat (upcase EI) "(0((Bi(0@(B")))
(dolist (EN	'("b" "c" "f" "g" "h" "k" "m" "n" "p" "r" "s" "w" "z")) ;den
    (its-defrule (concat EN "r")	(concat (upcase EN) "en(0@(B"))
    (its-defrule (concat EN "r1")	(concat (upcase EN) "(0%(Bn(0@(B"))
    (its-defrule (concat EN "r2")	(concat (upcase EN) "(0&(Bn(0@(B"))
    (its-defrule (concat EN "r3")	(concat (upcase EN) "(0'(Bn(0@(B"))
    (its-defrule (concat EN "r4")	(concat (upcase EN) "(0((Bn(0@(B")))
(dolist (ENG	'("b" "c" "d" "f" "g" "h" "k" "l" "m" "n" "p" "r" "s" "t" "w" "z"))
    (its-defrule (concat ENG "t")	(concat (upcase ENG) "eng(0@(B"))
    (its-defrule (concat ENG "t1")	(concat (upcase ENG) "(0%(Bng(0@(B"))
    (its-defrule (concat ENG "t2")	(concat (upcase ENG) "(0&(Bng(0@(B"))
    (its-defrule (concat ENG "t3")	(concat (upcase ENG) "(0'(Bng(0@(B"))
    (its-defrule (concat ENG "t4")	(concat (upcase ENG) "(0((Bng(0@(B")))
(dolist (I	'("b" "c" "d" "j" "l" "m" "n" "p" "q" "r" "s" "t" "x" "y" "z"))
    (its-defrule (concat I "i")		(concat (upcase I) "i(0@(B"))
    (its-defrule (concat I "i1")	(concat (upcase I) "(0)@(B"))
    (its-defrule (concat I "i2")	(concat (upcase I) "(0*@(B"))
    (its-defrule (concat I "i3")	(concat (upcase I) "(0+@(B"))
    (its-defrule (concat I "i4")	(concat (upcase I) "(0,@(B")))
(dolist (IA	'("d" "j" "l" "q" "x")) ;nia
    (its-defrule (concat IA "p")	(concat (upcase IA) "ia(0@(B"))
    (its-defrule (concat IA "p1")	(concat (upcase IA) "i(0!@(B"))
    (its-defrule (concat IA "p2")	(concat (upcase IA) "i(0"@(B"))
    (its-defrule (concat IA "p3")	(concat (upcase IA) "i(0#@(B"))
    (its-defrule (concat IA "p4")	(concat (upcase IA) "i(0$@(B")))
(dolist (IAN	'("b" "d" "j" "l" "m" "n" "p" "q" "t" "x"))
    (its-defrule (concat IAN "h")	(concat (upcase IAN) "ian(0@(B"))
    (its-defrule (concat IAN "h1")	(concat (upcase IAN) "i(0!(Bn(0@(B"))
    (its-defrule (concat IAN "h2")	(concat (upcase IAN) "i(0"(Bn(0@(B"))
    (its-defrule (concat IAN "h3")	(concat (upcase IAN) "i(0#(Bn(0@(B"))
    (its-defrule (concat IAN "h4")	(concat (upcase IAN) "i(0$(Bn(0@(B")))
(dolist (IANG 	'("j" "l" "n" "q" "x"))
    (its-defrule (concat IANG "j")	(concat (upcase IANG) "iang(0@(B"))
    (its-defrule (concat IANG "j1")	(concat (upcase IANG) "i(0!(Bng(0@(B"))
    (its-defrule (concat IANG "j2")	(concat (upcase IANG) "i(0"(Bng(0@(B"))
    (its-defrule (concat IANG "j3")	(concat (upcase IANG) "i(0#(Bng(0@(B"))
    (its-defrule (concat IANG "j4")	(concat (upcase IANG) "i(0$(Bng(0@(B")))
(dolist (IAO	'("b" "d" "j" "l" "m" "n" "p" "q" "t" "x")) ;IE
    (its-defrule (concat IAO "k")	(concat (upcase IAO) "iao(0@(B"))
    (its-defrule (concat IAO "k1")	(concat (upcase IAO) "i(0!(Bo(0@(B"))
    (its-defrule (concat IAO "k2")	(concat (upcase IAO) "i(0"(Bo(0@(B"))
    (its-defrule (concat IAO "k3")	(concat (upcase IAO) "i(0#(Bo(0@(B"))
    (its-defrule (concat IAO "k4")	(concat (upcase IAO) "i(0$(Bo(0@(B"))
    (its-defrule (concat IAO "l")	(concat (upcase IAO) "ie(0@(B"))
    (its-defrule (concat IAO "l1")	(concat (upcase IAO) "i(0%@(B"))
    (its-defrule (concat IAO "l2")	(concat (upcase IAO) "i(0&@(B"))
    (its-defrule (concat IAO "l3")	(concat (upcase IAO) "i(0'@(B"))
    (its-defrule (concat IAO "l4")	(concat (upcase IAO) "i(0(@(B")))
(dolist (IN	'("b" "j" "l" "m" "n" "p" "q" "x" "y"))
    (its-defrule (concat IN "m")	(concat (upcase IN) "in(0@(B"))
    (its-defrule (concat IN "m1")	(concat (upcase IN) "(0)(Bn(0@(B"))
    (its-defrule (concat IN "m2")	(concat (upcase IN) "(0*(Bn(0@(B"))
    (its-defrule (concat IN "m3")	(concat (upcase IN) "(0+(Bn(0@(B"))
    (its-defrule (concat IN "m4")	(concat (upcase IN) "(0,(Bn(0@(B")))
(dolist (ING	'("b" "d" "j" "l" "m" "n" "p" "q" "t" "x" "y"))
    (its-defrule (concat ING "n")	(concat (upcase ING) "ing(0@(B"))
    (its-defrule (concat ING "n1")	(concat (upcase ING) "(0)(Bng(0@(B"))
    (its-defrule (concat ING "n2")	(concat (upcase ING) "(0*(Bng(0@(B"))
    (its-defrule (concat ING "n3")	(concat (upcase ING) "(0+(Bng(0@(B"))
    (its-defrule (concat ING "n4")	(concat (upcase ING) "(0,(Bng(0@(B")))
(dolist (IONG	'("j" "q" "x"))
    (its-defrule (concat IONG "b")	(concat (upcase IONG) "iong(0@(B"))
    (its-defrule (concat IONG "b1")	(concat (upcase IONG) "i(0-(Bng(0@(B"))
    (its-defrule (concat IONG "b2")	(concat (upcase IONG) "i(0.(Bng(0@(B"))
    (its-defrule (concat IONG "b3")	(concat (upcase IONG) "i(0/(Bng(0@(B"))
    (its-defrule (concat IONG "b4")	(concat (upcase IONG) "i(00(Bng(0@(B")))
(dolist (IU	'("d" "j" "l" "m" "n" "q" "x"))
    (its-defrule (concat IU "y")	(concat (upcase IU) "iu(0@(B"))
    (its-defrule (concat IU "y1")	(concat (upcase IU) "i(01@(B"))
    (its-defrule (concat IU "y2")	(concat (upcase IU) "i(02@(B"))
    (its-defrule (concat IU "y3")	(concat (upcase IU) "i(03@(B"))
    (its-defrule (concat IU "y4")	(concat (upcase IU) "i(04@(B")))
(dolist (O	'("b" "f" "m" "p" "w" "y")) ; "l"
    (its-defrule (concat O "o")		(concat (upcase O) "o(0@(B"))
    (its-defrule (concat O "o1")	(concat (upcase O) "(0-@(B"))
    (its-defrule (concat O "o2")	(concat (upcase O) "(0.@(B"))
    (its-defrule (concat O "o3")	(concat (upcase O) "(0/@(B"))
    (its-defrule (concat O "o4")	(concat (upcase O) "(00@(B")))
(dolist (ONG	'("c" "d" "g" "h" "k" "l" "n" "r" "s" "t" "y" "z"))
    (its-defrule (concat ONG "b")	(concat (upcase ONG) "ong(0@(B"))
    (its-defrule (concat ONG "b1")	(concat (upcase ONG) "(0-(Bng(0@(B"))
    (its-defrule (concat ONG "b2")	(concat (upcase ONG) "(0.(Bng(0@(B"))
    (its-defrule (concat ONG "b3")	(concat (upcase ONG) "(0/(Bng(0@(B"))
    (its-defrule (concat ONG "b4")	(concat (upcase ONG) "(00(Bng(0@(B")))
(dolist (OU	'("c" "d" "f" "g" "h" "k" "l" "m" "n" "p" "r" "s" "t" "y" "z"))
    (its-defrule (concat OU "q")	(concat (upcase OU) "ou(0@(B"))
    (its-defrule (concat OU "q1")	(concat (upcase OU) "(0-(Bu(0@(B"))
    (its-defrule (concat OU "q2")	(concat (upcase OU) "(0.(Bu(0@(B"))
    (its-defrule (concat OU "q3")	(concat (upcase OU) "(0/(Bu(0@(B"))
    (its-defrule (concat OU "q4")	(concat (upcase OU) "(00(Bu(0@(B")))
(dolist (U	'("b" "c" "d" "f" "g" "h" "j" "k" "l" "m" "n" "p" "q" "r" "s" "t" "w" "x" "y" "z"))
    (its-defrule (concat U "0")		(concat (upcase U) "0(0@(B")) ; ShengMu only, no YunMu.
    (its-defrule (concat U "1")		(concat (upcase U) "1(0@(B"))
    (its-defrule (concat U "2")		(concat (upcase U) "2(0@(B"))
    (its-defrule (concat U "3")		(concat (upcase U) "3(0@(B"))
    (its-defrule (concat U "4")		(concat (upcase U) "4(0@(B"))
    (its-defrule (concat U "u")		(concat (upcase U) "u(0@(B"))
    (its-defrule (concat U "u1")	(concat (upcase U) "(01@(B"))
    (its-defrule (concat U "u2")	(concat (upcase U) "(02@(B"))
    (its-defrule (concat U "u3")	(concat (upcase U) "(03@(B"))
    (its-defrule (concat U "u4")	(concat (upcase U) "(04@(B")))
(dolist (V	'("l" "n"))
    (its-defrule (concat V "v")		(concat (upcase V) "(09@(B"))
    (its-defrule (concat V "v1")	(concat (upcase V) "(05@(B"))
    (its-defrule (concat V "v2")	(concat (upcase V) "(06@(B"))
    (its-defrule (concat V "v3")	(concat (upcase V) "(07@(B"))
    (its-defrule (concat V "v4")	(concat (upcase V) "(08@(B")))
(dolist (UA	'("g" "h" "k" "r")) ;chua;
    (its-defrule (concat UA "p")	(concat (upcase UA) "ua(0@(B"))
    (its-defrule (concat UA "p1")	(concat (upcase UA) "u(0!@(B"))
    (its-defrule (concat UA "p2")	(concat (upcase UA) "u(0"@(B"))
    (its-defrule (concat UA "p3")	(concat (upcase UA) "u(0#@(B"))
    (its-defrule (concat UA "p4")	(concat (upcase UA) "u(0$@(B")))
(dolist (UAI	'("g" "h" "k"))
    (its-defrule (concat UAI "k")	(concat (upcase UAI) "uai(0@(B"))
    (its-defrule (concat UAI "k1")	(concat (upcase UAI) "u(0!(Bi(0@(B"))
    (its-defrule (concat UAI "k2")	(concat (upcase UAI) "u(0"(Bi(0@(B"))
    (its-defrule (concat UAI "k3")	(concat (upcase UAI) "u(0#(Bi(0@(B"))
    (its-defrule (concat UAI "k4")	(concat (upcase UAI) "u(0$(Bi(0@(B")))
(dolist (UAN	'("c" "d" "g" "h" "j" "k" "l" "n" "q" "r" "s" "t" "x" "y" "z"))
    (its-defrule (concat UAN "x")	(concat (upcase UAN) "uan(0@(B"))
    (its-defrule (concat UAN "x1")	(concat (upcase UAN) "u(0!(Bn(0@(B"))
    (its-defrule (concat UAN "x2")	(concat (upcase UAN) "u(0"(Bn(0@(B"))
    (its-defrule (concat UAN "x3")	(concat (upcase UAN) "u(0#(Bn(0@(B"))
    (its-defrule (concat UAN "x4")	(concat (upcase UAN) "u(0$(Bn(0@(B")))
(dolist (UANG	'("g" "h" "k"))
    (its-defrule (concat UANG "j")	(concat (upcase UANG) "uang(0@(B"))
    (its-defrule (concat UANG "j1")	(concat (upcase UANG) "u(0!(Bng(0@(B"))
    (its-defrule (concat UANG "j2")	(concat (upcase UANG) "u(0"(Bng(0@(B"))
    (its-defrule (concat UANG "j3")	(concat (upcase UANG) "u(0#(Bng(0@(B"))
    (its-defrule (concat UANG "j4")	(concat (upcase UANG) "u(0$(Bng(0@(B")))
(dolist (UE	'("j" "q" "x" "y"))
    (its-defrule (concat UE "c")	(concat (upcase UE) "ue(0@(B"))
    (its-defrule (concat UE "c1")	(concat (upcase UE) "u(0%@(B"))
    (its-defrule (concat UE "c2")	(concat (upcase UE) "u(0&@(B"))
    (its-defrule (concat UE "c3")	(concat (upcase UE) "u(0'@(B"))
    (its-defrule (concat UE "c4")	(concat (upcase UE) "u(0(@(B")))
(dolist (VE	'("l" "n"))
    (its-defrule (concat VE "c")	(concat (upcase VE) "(09(Be(0@(B"))
    (its-defrule (concat VE "c1")	(concat (upcase VE) "(09%@(B"))
    (its-defrule (concat VE "c2")	(concat (upcase VE) "(09&@(B"))
    (its-defrule (concat VE "c3")	(concat (upcase VE) "(09'@(B"))
    (its-defrule (concat VE "c4")	(concat (upcase VE) "(09(@(B")))
(dolist (UI	'("c" "d" "g" "h" "k" "r" "s" "t" "z"))
    (its-defrule (concat UI "c")	(concat (upcase UI) "ui(0@(B"))
    (its-defrule (concat UI "c1")	(concat (upcase UI) "u(0)@(B"))
    (its-defrule (concat UI "c2")	(concat (upcase UI) "u(0*@(B"))
    (its-defrule (concat UI "c3")	(concat (upcase UI) "u(0+@(B"))
    (its-defrule (concat UI "c4")	(concat (upcase UI) "u(0,@(B")))
(dolist (UN	'("c" "d" "g" "h" "j" "k" "l" "q" "r" "s" "t" "x" "y" "z"))
    (its-defrule (concat UN "z")	(concat (upcase UN) "un(0@(B"))
    (its-defrule (concat UN "z1")	(concat (upcase UN) "(01(Bn(0@(B"))
    (its-defrule (concat UN "z2")	(concat (upcase UN) "(02(Bn(0@(B"))
    (its-defrule (concat UN "z3")	(concat (upcase UN) "(03(Bn(0@(B"))
    (its-defrule (concat UN "z4")	(concat (upcase UN) "(04(Bn(0@(B")))
(dolist (UO	'("c" "d" "g" "h" "k" "l" "n" "r" "s" "t" "z"))
    (its-defrule (concat UO "o")	(concat (upcase UO) "uo(0@(B"))
    (its-defrule (concat UO "o1")	(concat (upcase UO) "u(0-@(B"))
    (its-defrule (concat UO "o2")	(concat (upcase UO) "u(0.@(B"))
    (its-defrule (concat UO "o3")	(concat (upcase UO) "u(0/@(B"))
    (its-defrule (concat UO "o4")	(concat (upcase UO) "u(00@(B")))
(dolist (CSZ	'(("i" . "Ch") ("u" . "Sh") ("v" . "Zh")))
;    (its-defrule (concat(car CSZ) "0")	(concat (cdr CSZ) "0(0@(B"))
;    (its-defrule (concat(car CSZ) "1")	(concat (cdr CSZ) "1(0@(B"))
;    (its-defrule (concat(car CSZ) "2")	(concat (cdr CSZ) "2(0@(B"))
;    (its-defrule (concat(car CSZ) "3")	(concat (cdr CSZ) "3(0@(B"))
;    (its-defrule (concat(car CSZ) "4")	(concat (cdr CSZ) "4(0@(B"))
    (its-defrule (concat(car CSZ) "a")	(concat (cdr CSZ) "a(0@(B"))
    (its-defrule (concat(car CSZ) "a1")	(concat (cdr CSZ) "(0!@(B"))
    (its-defrule (concat(car CSZ) "a2")	(concat (cdr CSZ) "(0"@(B"))
    (its-defrule (concat(car CSZ) "a3")	(concat (cdr CSZ) "(0#@(B"))
    (its-defrule (concat(car CSZ) "a4")	(concat (cdr CSZ) "(0$@(B"))
    (its-defrule (concat(car CSZ) "s")	(concat (cdr CSZ) "ai(0@(B"))
    (its-defrule (concat(car CSZ) "s1")	(concat (cdr CSZ) "(0!(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "s2")	(concat (cdr CSZ) "(0"(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "s3")	(concat (cdr CSZ) "(0#(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "s4")	(concat (cdr CSZ) "(0$(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "f")	(concat (cdr CSZ) "an(0@(B"))
    (its-defrule (concat(car CSZ) "f1")	(concat (cdr CSZ) "(0!(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "f2")	(concat (cdr CSZ) "(0"(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "f3")	(concat (cdr CSZ) "(0#(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "f4")	(concat (cdr CSZ) "(0$(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "g")	(concat (cdr CSZ) "ang(0@(B"))
    (its-defrule (concat(car CSZ) "g1")	(concat (cdr CSZ) "(0!(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "g2")	(concat (cdr CSZ) "(0"(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "g3")	(concat (cdr CSZ) "(0#(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "g4")	(concat (cdr CSZ) "(0$(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "d")	(concat (cdr CSZ) "ao(0@(B"))
    (its-defrule (concat(car CSZ) "d1")	(concat (cdr CSZ) "(0!(Bo(0@(B"))
    (its-defrule (concat(car CSZ) "d2")	(concat (cdr CSZ) "(0"(Bo(0@(B"))
    (its-defrule (concat(car CSZ) "d3")	(concat (cdr CSZ) "(0#(Bo(0@(B"))
    (its-defrule (concat(car CSZ) "d4")	(concat (cdr CSZ) "(0$(Bo(0@(B"))
    (its-defrule (concat(car CSZ) "e")	(concat (cdr CSZ) "e(0@(B"))
    (its-defrule (concat(car CSZ) "e1")	(concat (cdr CSZ) "(0%@(B"))
    (its-defrule (concat(car CSZ) "e2")	(concat (cdr CSZ) "(0&@(B"))
    (its-defrule (concat(car CSZ) "e3")	(concat (cdr CSZ) "(0'@(B"))
    (its-defrule (concat(car CSZ) "e4")	(concat (cdr CSZ) "(0(@(B"))
    (its-defrule (concat(car CSZ) "r")	(concat (cdr CSZ) "en(0@(B"))
    (its-defrule (concat(car CSZ) "r1")	(concat (cdr CSZ) "(0%(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "r2")	(concat (cdr CSZ) "(0&(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "r3")	(concat (cdr CSZ) "(0'(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "r4")	(concat (cdr CSZ) "(0((Bn(0@(B"))
    (its-defrule (concat(car CSZ) "t")	(concat (cdr CSZ) "eng(0@(B"))
    (its-defrule (concat(car CSZ) "t1")	(concat (cdr CSZ) "(0%(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "t2")	(concat (cdr CSZ) "(0&(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "t3")	(concat (cdr CSZ) "(0'(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "t4")	(concat (cdr CSZ) "(0((Bng(0@(B"))
    (its-defrule (concat(car CSZ) "i")	(concat (cdr CSZ) "i(0@(B"))
    (its-defrule (concat(car CSZ) "i1")	(concat (cdr CSZ) "(0)@(B"))
    (its-defrule (concat(car CSZ) "i2")	(concat (cdr CSZ) "(0*@(B"))
    (its-defrule (concat(car CSZ) "i3")	(concat (cdr CSZ) "(0+@(B"))
    (its-defrule (concat(car CSZ) "i4")	(concat (cdr CSZ) "(0,@(B"))
    (its-defrule (concat(car CSZ) "q")	(concat (cdr CSZ) "ou(0@(B"))
    (its-defrule (concat(car CSZ) "q1")	(concat (cdr CSZ) "(0-(Bu(0@(B"))
    (its-defrule (concat(car CSZ) "q2")	(concat (cdr CSZ) "(0.(Bu(0@(B"))
    (its-defrule (concat(car CSZ) "q3")	(concat (cdr CSZ) "(0/(Bu(0@(B"))
    (its-defrule (concat(car CSZ) "q4")	(concat (cdr CSZ) "(00(Bu(0@(B"))
    (its-defrule (concat(car CSZ) "u")	(concat (cdr CSZ) "u(0@(B"))
    (its-defrule (concat(car CSZ) "u1")	(concat (cdr CSZ) "(01@(B"))
    (its-defrule (concat(car CSZ) "u2")	(concat (cdr CSZ) "(02@(B"))
    (its-defrule (concat(car CSZ) "u3")	(concat (cdr CSZ) "(03@(B"))
    (its-defrule (concat(car CSZ) "u4")	(concat (cdr CSZ) "(04@(B"))
    (its-defrule (concat(car CSZ) "k")	(concat (cdr CSZ) "uai(0@(B"))
    (its-defrule (concat(car CSZ) "k1")	(concat (cdr CSZ) "u(0!(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "k2")	(concat (cdr CSZ) "u(0"(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "k3")	(concat (cdr CSZ) "u(0#(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "k4")	(concat (cdr CSZ) "u(0$(Bi(0@(B"))
    (its-defrule (concat(car CSZ) "x")	(concat (cdr CSZ) "uan(0@(B"))
    (its-defrule (concat(car CSZ) "x1")	(concat (cdr CSZ) "u(0!(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "x2")	(concat (cdr CSZ) "u(0"(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "x3")	(concat (cdr CSZ) "u(0#(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "x4")	(concat (cdr CSZ) "u(0$(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "j")	(concat (cdr CSZ) "uang(0@(B"))
    (its-defrule (concat(car CSZ) "j1")	(concat (cdr CSZ) "u(0!(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "j2")	(concat (cdr CSZ) "u(0"(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "j3")	(concat (cdr CSZ) "u(0#(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "j4")	(concat (cdr CSZ) "u(0$(Bng(0@(B"))
    (its-defrule (concat(car CSZ) "c")	(concat (cdr CSZ) "ui(0@(B"))
    (its-defrule (concat(car CSZ) "c1")	(concat (cdr CSZ) "u(0)@(B"))
    (its-defrule (concat(car CSZ) "c2")	(concat (cdr CSZ) "u(0*@(B"))
    (its-defrule (concat(car CSZ) "c3")	(concat (cdr CSZ) "u(0+@(B"))
    (its-defrule (concat(car CSZ) "c4")	(concat (cdr CSZ) "u(0,@(B"))
    (its-defrule (concat(car CSZ) "z")	(concat (cdr CSZ) "un(0@(B"))
    (its-defrule (concat(car CSZ) "z1")	(concat (cdr CSZ) "(01(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "z2")	(concat (cdr CSZ) "(02(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "z3")	(concat (cdr CSZ) "(03(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "z4")	(concat (cdr CSZ) "(04(Bn(0@(B"))
    (its-defrule (concat(car CSZ) "o")	(concat (cdr CSZ) "uo(0@(B"))
    (its-defrule (concat(car CSZ) "o1")	(concat (cdr CSZ) "u(0-@(B"))
    (its-defrule (concat(car CSZ) "o2")	(concat (cdr CSZ) "u(0.@(B"))
    (its-defrule (concat(car CSZ) "o3")	(concat (cdr CSZ) "u(0/@(B"))
    (its-defrule (concat(car CSZ) "o4")	(concat (cdr CSZ) "u(00@(B")))

(its-defrule	"oa"		"a(0@(B")
(its-defrule	"oa1"		"(0!@(B")
(its-defrule	"oa2"		"(0"@(B")
(its-defrule	"oa3"		"(0#@(B")
(its-defrule	"oa4"		"(0$@(B")
(its-defrule	"os"		"ai(0@(B")
(its-defrule	"os1"		"(0!(Bi(0@(B")
(its-defrule	"os2"		"(0"(Bi(0@(B")
(its-defrule	"os3"		"(0#(Bi(0@(B")
(its-defrule	"os4"		"(0$(Bi(0@(B")
(its-defrule	"of"		"an(0@(B")
(its-defrule	"of1"		"(0!(Bn(0@(B")
(its-defrule	"of2"		"(0"(Bn(0@(B")
(its-defrule	"of3"		"(0#(Bn(0@(B")
(its-defrule	"of4"		"(0$(Bn(0@(B")
(its-defrule	"og"		"ang(0@(B")
(its-defrule	"og1"		"(0!(Bng(0@(B")
(its-defrule	"og2"		"(0"(Bng(0@(B")
(its-defrule	"og3"		"(0#(Bng(0@(B")
(its-defrule	"og4"		"(0$(Bng(0@(B")
(its-defrule	"od"		"ao(0@(B")
(its-defrule	"od1"		"(0!(Bo(0@(B")
(its-defrule	"od2"		"(0"(Bo(0@(B")
(its-defrule	"od3"		"(0#(Bo(0@(B")
(its-defrule	"od4"		"(0$(Bo(0@(B")
(its-defrule	"ib"		"Chong(0@(B")
(its-defrule	"ib1"		"Ch(0-(Bng(0@(B")
(its-defrule	"ib2"		"Ch(0.(Bng(0@(B")
(its-defrule	"ib3"		"Ch(0/(Bng(0@(B")
(its-defrule	"ib4"		"Ch(00(Bng(0@(B")
(its-defrule	"oe"		"e(0@(B")
(its-defrule	"oe1"		"(0%@(B")
(its-defrule	"oe2"		"(0&@(B")
(its-defrule	"oe3"		"(0'@(B")
(its-defrule	"oe4"		"(0(@(B")
(its-defrule	"ow"		"ei(0@(B")
(its-defrule	"ow1"		"(0%(Bi(0@(B")
(its-defrule	"ow2"		"(0&(Bi(0@(B")
(its-defrule	"ow3"		"(0'(Bi(0@(B")
(its-defrule	"ow4"		"(0((Bi(0@(B")
(its-defrule	"or"		"en(0@(B")
(its-defrule	"or1"		"(0%(Bn(0@(B")
(its-defrule	"or2"		"(0&(Bn(0@(B")
(its-defrule	"or3"		"(0'(Bn(0@(B")
(its-defrule	"or4"		"(0((Bn(0@(B")
;(its-defrule	"ot"		"eng(0@(B")
;(its-defrule	"ot1"		"(0%(Bng(0@(B")
;(its-defrule	"ot2"		"(0&(Bng(0@(B")
;(its-defrule	"ot3"		"(0'(Bng(0@(B")
;(its-defrule	"ot4"		"(0((Bng(0@(B")
(its-defrule	"oy"		"er(0@(B")
(its-defrule	"oy1"		"(0%(Br(0@(B")
(its-defrule	"oy2"		"(0&(Br(0@(B")
(its-defrule	"oy3"		"(0'(Br(0@(B")
(its-defrule	"oy4"		"(0((Br(0@(B")
(its-defrule	"er"		"er(0@(B")
(its-defrule	"er1"		"(0%(Br(0@(B")
(its-defrule	"er2"		"(0&(Br(0@(B")
(its-defrule	"er3"		"(0'(Br(0@(B")
(its-defrule	"er4"		"(0((Br(0@(B")
(its-defrule	"oo"		"o(0@(B")
(its-defrule	"oo1"		"(0-@(B")
(its-defrule	"oo2"		"(0.@(B")
(its-defrule	"oo3"		"(0/@(B")
(its-defrule	"oo4"		"(00@(B")
(its-defrule	"oq"		"ou(0@(B")
(its-defrule	"oq1"		"(0-(Bu(0@(B")
(its-defrule	"oq2"		"(0.(Bu(0@(B")
(its-defrule	"oq3"		"(0/(Bu(0@(B")
(its-defrule	"oq4"		"(00(Bu(0@(B")
(its-defrule	"uw"		"Shei(0@(B")
(its-defrule	"uw1"		"Sh(0%(Bi(0@(B")
(its-defrule	"uw2"		"Sh(0&(Bi(0@(B")
(its-defrule	"uw3"		"Sh(0'(Bi(0@(B")
(its-defrule	"uw4"		"Sh(0((Bi(0@(B")
(its-defrule	"up"		"Shua(0@(B")
(its-defrule	"up1"		"Shu(0!@(B")
(its-defrule	"up2"		"Shu(0"@(B")
(its-defrule	"up3"		"Shu(0#@(B")
(its-defrule	"up4"		"Shu(0$@(B")
(its-defrule	"vw"		"Zhei(0@(B")
(its-defrule	"vw1"		"Zh(0%(Bi(0@(B")
(its-defrule	"vw2"		"Zh(0&(Bi(0@(B")
(its-defrule	"vw3"		"Zh(0'(Bi(0@(B")
(its-defrule	"vw4"		"Zh(0((Bi(0@(B")
(its-defrule	"vb"		"Zhong(0@(B")
(its-defrule	"vb1"		"Zh(0-(Bng(0@(B")
(its-defrule	"vb2"		"Zh(0.(Bng(0@(B")
(its-defrule	"vb3"		"Zh(0/(Bng(0@(B")
(its-defrule	"vb4"		"Zh(00(Bng(0@(B")
(its-defrule	"vp"		"Zhua(0@(B")
(its-defrule	"vp1"		"Zhu(0!@(B")
(its-defrule	"vp2"		"Zhu(0"@(B")
(its-defrule	"vp3"		"Zhu(0#@(B")
(its-defrule	"vp4"		"Zhu(0$@(B")

;;;;			-----------Special PinYin-------------
;(its-defrule	"hm"		"Hm(0@(B")
(its-defrule	"hng"		"Hng(0@(B")
(its-defrule	"ng "		"ng(0@(B")
(its-defrule	"om"		"m(0@(B")
(its-defrule	"on"		"n(0@(B")

(its-defrule	"b "		"$A2;(B")
(its-defrule	"c "		"$A2E(B")
(its-defrule	"ch "		"$A3v(B")
(its-defrule	"d "		"$A5D(B")
(its-defrule	"f "		"$A74(B")
(its-defrule	"g "		"$A8v(B")
(its-defrule	"h "		"$A:M(B")
(its-defrule	"i "		"$AR;(B")
(its-defrule	"j "		"$A>M(B")
(its-defrule	"k "		"$A?I(B")
(its-defrule	"l "		"$AAK(B")
(its-defrule	"m "		"$AC?(B")
(its-defrule	"n "		"$ADj(B")
(its-defrule	"p "		"$AEz(B")
(its-defrule	"q "		"$AH%(B")
(its-defrule	"r "		"$AHU(B")
(its-defrule	"s "		"$AJG(B")
(its-defrule	"sh "		"$AIO(B")
(its-defrule	"t "		"$AK{(B")
(its-defrule	"w "		"$ANR(B")
(its-defrule	"x "		"$AOr(B")
(its-defrule	"y "		"$ASV(B")
(its-defrule	"z "		"$ATZ(B")
(its-defrule	"zh "		"$AWE(B")

(its-defrule	","		"$A#,(B")
(its-defrule	"."		"$A!#(B")
(its-defrule	":"		"$A#:(B")
(its-defrule	";"		"$A#;(B")
(its-defrule	"/"		"$A!"(B")
(its-defrule	"?"		"$A#?(B")
(its-defrule	"!"		"$A#!(B")
(its-defrule	"["		"$A!0(B")
(its-defrule	"]"		"$A!1(B")
(its-defrule	"{"		"$A!.(B")
(its-defrule	"}"		"$A!/(B")
(its-defrule	"-"		"$A!*(B")
(its-defrule	"("		"$A#((B")
(its-defrule	")"		"$A#)(B")
(its-defrule	"<"		"$A!6(B")
(its-defrule	">"		"$A!7(B")
(its-defrule	"#"		"$A!-(B")
