Fix: SE045 Problem: GTK interface from JNetHack needs incorporting into Slash'EM. This has involved a number of changes to the GTK interface: * Makefile.src: CFLAGS & LFLAGS support is now via depend.awk and WINLIBS so that CFLAGS & LFLAGS can be set depending on the system requirements without needing to assume GTK is enabled, and without needing GTK extensions to all possible values. * Makefile.src: Corrections to allow GTK and/or X11 interfaces to be built (rather than assume both). * Tile table: this used to have static values for the size of pixmap in x11tiles. This is not suitable for Slash'EM where this size changes depending on the options selected. Changed to be determined from x11tiles. * DLB and FILE_AREAS support added. * Special start-up messages removed. * Secondary init (used to disable Play and enable Save etc) moved from unixmain.c to allmain.c * JNetHack support removed for simplicity * GTK specific topten windowing moved from topten.c to gtk.c * t32-1024.xpm and floor.xpm removed as we don't support them. * Wrote Install.GTK Known problems with GTK interface: * No support for big (32x32) tiles, including 3D tiles. This is because the XPM files as supplied are not suitable for Slash'EM. Instead we would need to generate these from TXT files (as we do for normal tiles). Missing tiles would have to be magnified from 16x16 tiles. There are also problems that need to be resolved since they use more colours than the TXT tile format currently can support. * Player selection is based on 3.2.2 and needs upgrading. * Slash'EM specific commands are not supported via Menus. * credit.xpm refers to NetHack 3.2. * HP and Pw gauges don't work. * show weight option is not supported. Compatible with: Slash'EM 0.0.6E0F1 Author: J. Ali Harlow, ali@avrc.city.ac.uk Date: 24 Jan 2000 *** ./README.gtk.orig Thu Jan 1 01:00:00 1970 --- ./README.gtk Mon Jan 24 13:59:38 2000 *************** *** 0 **** --- 1,15 ---- + + GTK-NetHack + + Copyright 1999 I.Numata + + COPYRIGHT NOTICE + + GTK NetHack is an interface for NetHack using the GTK+ library. You must read + the original license (dat/license) and obey it to redistribute and modify + this program. GTK NetHack obeys the original license completely. GTK + part copyright belongs to the author. + + To play in GTK+, add the following line to your .slashemrc: + + OPTIONS=windowtype:gtk *** ./dat/credit.xpm.orig Thu Jan 1 01:00:00 1970 --- ./dat/credit.xpm Fri Jan 21 18:32:37 2000 *************** *** 0 **** --- 1,519 ---- + /* XPM */ + static char *nhtitle_unix256[] = { + /* width height num_colors chars_per_pixel */ + " 202 256 256 2", + /* colors */ + ".. c #fffefd", + ".# c #f4f7f6", + ".a c #ffeded", + ".b c #eee5ec", + ".c c #fad9d8", + ".d c #e2d9da", + ".e c #fbcfcb", + ".f c #f3d79a", + ".g c #f7c6c6", + ".h c #dfd1c4", + ".i c #efc6c6", + ".j c #f2ce84", + ".k c #dcc1d3", + ".l c #e0c0c6", + ".m c #e7bdbd", + ".n c #e5c0b1", + ".o c #d8bbbd", + ".p c #cebdb2", + ".q c #e8b87c", + ".r c #d6b5b5", + ".s c #dab49b", + ".t c #d0abb2", + ".u c #efa968", + ".v c #c1b3ad", + ".w c #dba599", + ".x c #b8aec2", + ".y c #cea5a5", + ".z c #d4a789", + ".A c #cea59c", + ".B c #d5a871", + ".C c #cea594", + ".D c #bca9a5", + ".E c #c2a4ad", + ".F c #c6a59c", + ".G c #dc9c8c", + ".H c #c6a594", + ".I c #db9a94", + ".J c #d8999e", + ".K c #c6a58c", + ".L c #ce9c9c", + ".M c #ce9c94", + ".N c #ce98a5", + ".O c #c69ca5", + ".P c #e19484", + ".Q c #ce9c8c", + ".R c #dc9c64", + ".S c #cf9c81", + ".T c #bda09c", + ".U c #eb974e", + ".V c #c69c94", + ".W c #d7948c", + ".X c #c69e84", + ".Y c #c69c8c", + ".Z c #c6999c", + ".0 c #bd9f94", + ".1 c #ce949c", + ".2 c #c69f74", + ".3 c #e19462", + ".4 c #ce9494", + ".5 c #bd9e8c", + ".6 c #b59f9c", + ".7 c #ce948c", + ".8 c #ce9484", + ".9 c #b799a5", + "#. c #c69494", + "## c #c6948c", + "#a c #b59b94", + "#b c #ce9475", + "#c c #c69484", + "#d c #ce8c98", + "#e c #e28c60", + "#f c #ee8a48", + "#g c #bd9784", + "#h c #bd9494", + "#i c #a89d9c", + "#j c #ce8c8c", + "#k c #bd948c", + "#l c #b5988c", + "#m c #c69472", + "#n c #bd9873", + "#o c #ce8c84", + "#p c #ce8c7b", + "#q c #a69b94", + "#r c #b5987b", + "#s c #c68c8c", + "#t c #c68c84", + "#u c #ce8c6c", + "#v c #bf8c94", + "#w c #ad9884", + "#x c #c68c7b", + "#y c #ce848e", + "#z c #cb904f", + "#A c #b68c9d", + "#B c #b78c8c", + "#C c #da8648", + "#D c #b78c84", + "#E c #bd8c73", + "#F c #b88c7b", + "#G c #9e9786", + "#H c #be8492", + "#I c #ce807b", + "#J c #ba8c65", + "#K c #e27668", + "#L c #ce7f6d", + "#M c #c28472", + "#N c #ce778f", + "#O c #ba8084", + "#P c #c9814c", + "#Q c #b38b4d", + "#R c #be7693", + "#S c #b08077", + "#T c #c2786d", + "#U c #a18377", + "#V c #b07c64", + "#W c #98808c", + "#X c #968084", + "#Y c #8a7da7", + "#Z c #9d7e64", + "#0 c #ac7b4b", + "#1 c #908077", + "#2 c #897c94", + "#3 c #c56a48", + "#4 c #bf646d", + "#5 c #997364", + "#6 c #b2646a", + "#7 c #976c76", + "#8 c #a06b62", + "#9 c #b16747", + "a. c #936b6b", + "a# c #846f78", + "aa c #a0674e", + "ab c #8f6b5e", + "ac c #af5765", + "ad c #a15d62", + "ae c #8f694f", + "af c #846a63", + "ag c #746d78", + "ah c #6f6a8c", + "ai c #9f5f3e", + "aj c #905f61", + "ak c #7b6962", + "al c #6f6684", + "am c #806652", + "an c #816745", + "ao c #7c6077", + "ap c #6e6662", + "aq c #8f5b42", + "ar c #97505f", + "as c #8f5450", + "at c #6b664c", + "au c #795a5f", + "av c #7d5a52", + "aw c #805a45", + "ax c #8f5536", + "ay c #735a4c", + "az c #7b505d", + "aA c #605976", + "aB c #7a524e", + "aC c #665a4c", + "aD c #795242", + "aE c #675560", + "aF c #7b5237", + "aG c #6b524f", + "aH c #7a4a49", + "aI c #6b523e", + "aJ c #5e524e", + "aK c #744a36", + "aL c #6b4a48", + "aM c #5e5240", + "aN c #82403c", + "aO c #5d4a4e", + "aP c #514c60", + "aQ c #5b4a42", + "aR c #733f38", + "aS c #5d4a37", + "aT c #6b413f", + "aU c #504a4e", + "aV c #634044", + "aW c #634039", + "aX c #5a404d", + "aY c #5a4242", + "aZ c #6b3c2d", + "a0 c #50424c", + "a1 c #524242", + "a2 c #5a3f39", + "a3 c #524239", + "a4 c #633a2c", + "a5 c #4a4242", + "a6 c #504231", + "a7 c #5a3942", + "a8 c #5a3c31", + "a9 c #4a4239", + "b. c #523939", + "b# c #4f3843", + "ba c #523931", + "bb c #5a3527", + "bc c #4f3a28", + "bd c #4a3939", + "be c #403d3e", + "bf c #4a3931", + "bg c #4e3139", + "bh c #523129", + "bi c #40392f", + "bj c #4d3131", + "bk c #4e3120", + "bl c #4a3129", + "bm c #423131", + "bn c #3c313c", + "bo c #423129", + "bp c #4d292c", + "bq c #3e3221", + "br c #373131", + "bs c #393129", + "bt c #4d281f", + "bu c #422929", + "bv c #303129", + "bw c #422921", + "bx c #313121", + "by c #372934", + "bz c #3e2a18", + "bA c #392929", + "bB c #392921", + "bC c #312929", + "bD c #312921", + "bE c #312918", + "bF c #292929", + "bG c #3b2121", + "bH c #292921", + "bI c #3c2018", + "bJ c #332129", + "bK c #212929", + "bL c #312121", + "bM c #312118", + "bN c #291e36", + "bO c #272129", + "bP c #292121", + "bQ c #292118", + "bR c #311e10", + "bS c #212121", + "bT c #311821", + "bU c #212118", + "bV c #311818", + "bW c #182121", + "bX c #291821", + "bY c #291a10", + "bZ c #182118", + "b0 c #291818", + "b1 c #201821", + "b2 c #211818", + "b3 c #211810", + "b4 c #181818", + "b5 c #181810", + "b6 c #101818", + "b7 c #1a1018", + "b8 c #181010", + "b9 c #101010", + /* pixels */ + "#S#T#h.6#g###p#D#c#x#o.K.H#a#w#S#F#M#S#U#g.M.M.Q.5#L#p.7#t#g#o#c#h.Z.K.S#b#b.Q##.7#b#u#L#o.M.A#v#U#U#s#.#y#I#U.8.8#o###j.8.8#M#D#a#..Y#A#G#c.8.8.S.Q.8#p#I#4#T#T#B#m.8#L#x#F#M#L#M#q#l.V#g#o.F.L.L.M.M#L.8.7.M.7#B#T#M#J#U#c#w#G#1#8#Z#W.5#j.L#H#B#w#l###H#B#k#3#6#E#b.7.8#p#H#H#I#M#I#j##.S#g#g#g#r#w#l#N#y.7#r#E#U#U#S#7#1#S.5#k#Gag#1#G#q.K#b#r.7#x#b.8#p#M#L#I#x#F.8#b#y#y.7#M.8.S.M#O#U#F#F#U#M#M.7.Q.7.7.M#i#a", + "#V#a.Z#..Y.4.V#H#B#X#B.V#d#.#O#o#M#p#L#p.7.M.M.M###u#b#j#B#l###h#i.T.K.S.Q.8.Y.Q.7#p#M#k.X.A.A.1#O#S#N.8#j#g#F#x###w.5.7#m#u#b.Y#a#a.S.M.6#w#w#k.8.Q#a.V###x#t#p##.8.Y#g#c#p#L#p#p.K.K.V#l#k#a#i#h.4.V#D#O.Q.4.M#l#O#S#D#k###c#F#V#8#W#2.Z.T#W#W#G#l#o.Q.V#h#j#4#D#U.2.X#E#N#O#w#F.8.7#h#v.V.A.Y#S#G#q#A#R#R#O#l#E#G#U#1#U#D##.7###t#w#r#G#G.T.Q.Q.M.8#b.8#p#M#M#p#S#w#k#c#r#x#b#J.S.X#b#g#r#x#M#b#u#b.M.M#g#D.A.T.6", + "#F.T#A#S#s#A.Z#R#R#l#h.L.L.V#s#b#p#p#M#x.V.0#a.M.Q#b.S.Q.M#a#B#..A.A.C.M.7#M#g.V.Q#o.Q.5#a.A.L#v#H#I#N.S.Q.8#T#S#k#G.Z.M.S#c#w.Y#l.H.4.F.M#c#B#a.Y.A.F.T.V.8#p.8.Q.M.M.V#k#D#F.Y##.S.C.M.M#x#r#q.Z.M.M#k##.7.M.M#D#B#r.X.Y#k#D#M#p#w#A#i.Z#h#W#B#G#F.7.M.M.M.7#c#F#S.Z#o#S#H#G#D#E.X.Q.0.T.V.C.K#s#q#G#A#R#R#j#B#U#G#S#V#t.7.8.8.V.M#k#E#G#G#i#i#q#a#.#t.7.8#p#I#L#l###g#k.S#m#x#n.2#u.8.M.7.7#..7.8#g.V.L#v#k.L.F.1", + ".K.Z#v#T#q#v.9#q#l#h.V#y#..M.M.7#o#o#M#D.C.X.M.M.7.8.Q.M.V.L#h.9.C.A.A.V#p#M#q#a.M.7.M.Q.K.K#w#W#O#j#j.C.4#j#4#L.4.V#v.M.M.V.5#h.F.T.L.F.Z###i.V.M.A.A#.#a###p.8.Q.A#.#..Z#g#a.V.Y.Q.V.L.M.2#E.S.C.M.V#j.7.Q.4.M.Y.Q#####l#D#F#c.7#a.F.6.6#c#S#G#F#D.Q.M.M.M.8#k#w#W.6#I#p#r#r#E#x.Y.F.T.M.V.C.A.F.T.T.4#l.M.7#o#x#r#M#T#y###c#g.2.Y.Y.8#l#w#q.6.V#h#B#D###D#U#U#M.7.Q#m.Y.Q.2.5.V.7.8.4.Q.Q.Q.0.V.7.Y#..4.1.M.L.C.C", + ".K.0.Y#x#i.T#a#i#i#q#a.Q#k#l.1.4#o.8#L.7.C.C.M.M#j.7.V.F.Z.L.N.A.C.K.K#g#S#o#a.A.M.M.M.V.M.Y#G#A#t.7#j.M.V#j#T#L.7.M.4.M.V.A.A.L.A.A.4.M.T#h#h#..Z.Z.L.A.L#s#B.Y.C.A.F.L.A.Z.L.L.7#o.X.K.C.M#c#b.1.A.4.M.Q#l#k#a.5#l#l#w#O#M#x.Y.K.5#w#q#O#t#X#1#r#l.Q.M.M.M#c#F#t#a#A.C.C#b#u#J.Y.4.1.L.H.T.4#..Z.L.V#a#l#s#s#c#r#V#g#v#R#H#o#p.Q.0.V.7.5.5.T.A.M#g#a.8###w#U#U#x#k###g.Y.7.Q.S.Q#p.Q.V#a.Y.7.A.A.M.L#.#j.L.K.5.L.C", + ".C#a.Y.M.F.A.5.0.T#a.Y.S.2#..4.M#o#j#D#v#j.L.M.M.4.7.M.A.F.T.A.A.A.A.X#M.8#h#l.Q.M#a.L.A.F#a.F.M.8#s#v.1.L.7#L#8#y.4#a.Y.8.H.F.F.A.A.M.C.T.F.Z.L.F.M#.#a.M#B#l.Y.A.A.T.F.A.A.L.4#t#y.H.C.S#b.2#..L.M.7.M###w#G.5.V.5.5#D#E#J#G#G.5.H#r#w#w#D#X#X###k.7#y.4#t#S#S#O#i#a.K.5#E#r#E.5.1.L.A.0#.#v#v.A.L.4.V.V#g#D#w#J#m#x#s#s#j#g#M.M.F.A.V.M.8.M#a.Q#E#a.8.8#a#D#E#F#g.5.V#g#l#i#G#M.Q.V#a#q#h#j.M.1#d#d.L.L.M.T#a.Q.X", + ".C#a#a.A.C#..5.Z.A.8.Y.S.2.M.L.V#j.7###v#d.M.S.Q.7#..L.A.F.A.M.L.Z.M.K#E#g#H#a.F.V.T#..A.M.0.F#B#F#x.V.A.4#I#T#T#y.7#D#g#g#a#i.6.T.T.V.A.A.Z.T.T.A.S#a#G.H.4.4.M.M.A.A.O.A.F.L#k#S#v.T.T.4.2.7#..L.C#b.Q.8.8#B.7.M.H#g#S#E#F#G#q#i.H#w#G#G#r#w#q#B#H#j#y.7#T#4#O#R#d.C.5#S#U#r#k#a.K#a.T#w#l.Z.7.H.Q.Q.Q.2#m#F#U#D#m#m#l#y#y#M#O.C#i.6.6#p#u.S.V#g#F.X#b#p.Q#k#S#U#a#a#q#l#q#q#1#G#q#q#q#G.V#k#g.Z#d#N.4.C.C.C.X.K.5", + ".Y.L.Z.L.Z.T##.M.A.C.Q.Y.Q#..Z#v#B#l.M.M.L.K.7#b#p#j.1.F.y.A.A.Z.F.M.M.8#a.X.K.M.L.A.L#j.M#a.M#l#c#t.M.M.Y#g#I#c#c#c#g##.4.H.T.L.Z.T.Z.L.y#A#.#v.M.Q.Y#a#B.4.4.A.A.O.y.y.y.A#v#H#O#R.4.M.1.Z.T#h.M.Q.2.Q#b#b#M#o#j#.#s#O#U#i#i#i#i.H#q#G#D.8.5#l#.#.#.#j.8#I#4#N#d#d.4#L#M.8#c.M.Y.5#a.Y.2#l.F.M#q.2.K.S#n#u#L#x#c.S.2##.7#L#c#c#a#i.T#h#t#c.M.7#k#D.8.8#b.7.7#M#O#l#q#q#i#i#q#G#i#i.6#a#i#a#D#r.M.A#j#N#y.1.L.X#a#a", + ".Q.A.A.L.A.V.7.M.A.Z#B#x#B#h.Z#B#l#h.Q.C.A.4#7avaBavauazauauauauauauaf.4#a#w#gaEayauazaGauavavayau#S.Z.T.6###o#c#G#F#B#k.Q.K.H#h#j.C.C.y.C.4.1#y.1.M.1.A.4.L.4.L.A.O.L.C.L.Z#R#R#6aLauauauauauauauayavab.4###g#.araLaBaGazaEapaEaEapay#S#k#j#h#i#s#..6#k#M#M#T#N#d.1#u#M#x##.V.H.V.M.V.Q#k.F.y.T#q#a.H.M.Q#b#x#o#p#b.8###p.8#g#l#a#i.T#a.Q##.Y.Y#q.5.8.7#b#b.8#o#N#j.V.F.T#h#..O.A.F.F#a#a#q.5#k#o#I.Q#d#R#d.1.C.1.Z", + ".M.F.F.V.M.V#t.V#a#A#h#D#i.O.T.6.0.1.1.L.C.Kavb2bXb2bXbUb0bUb0bSb2bUb.#v.T#q.Vb0b1b2bQbXb2bPb2bXb2#8#l#i#q.Q.7.7#g#D#B.0.F.A.4.V.4.O.T.y#y#v#y#d#d.1#d.1.H.A.M#j.A.L.L.M#h#A#N#N#7bXb2b0b2bXbUb2bUbXb2a6.4#y#c.MbdbXbXb0bSb0bUbPbUb0bXa.#R#N#H#H#I#..H.Y#M#6#m.Q.4#I#L#p#g#a.1.1.7.Y.M.M.F.y.A.5.0.F.L.Y.V#c.X.S#t#b.8#O#p.8#D#G#q#i.T.0#a.V.M.S.Q.7#u.S#o.8#b#y#y.7##.1#d.4.L.A.A.A.Z.C.V#G#l.8#p#p#b.A.1#d#d.A.L.A", + ".0.0.H###h.Y#x#a#A#i#q#q.T.Z.F.L#q.T.V#a.Q.KavbP#7#W#W#W#2#W#W#W#7bmb..A.4.Z.Vb1bma.#A.9.9.9a.aubP#Z#l#l#h.M.M#t.8#D#q.T.T.F#p#k#a#U#7ad#7adadad#v.9.1.A#..A.F.1.Z.L.1.4#d#Nad#7azb0aX.y.a.c.a.a.a#Bbma3.F.7#o.MbdbQ#7.c.c.c.c.c.taXbU#7#y#v.Y#b.4.O.F#g#V#b.Q.Q.K#b#T#p.M.L.1.M#I.V#a.M.y.y.F.C.H.A#q#i.5.Q.8.S.M.M#o#L#t#j.X#k.5.6.F#a.0.H.7#b.Q.7#M.7#o#o.Q.M#t#N#N#y#N#N#d.L.M.1.Z.Z.C#a#l#g#p#p.8.4#j#d.y.A.F.T", + ".T.0.Y#M#a#w#E#q#G#q#2#B.5#..0.K.0.C.Y.Y.Z.FaubQbP#W#W#W#W#W#W#W#Sb1bi.L.C.C.Mb2bXa..9#A.9.9a.b1b0am#1a.#U#7#7ab#8#8#U#U#U#5aa#1#ZbnbXbXbXbXbSb1#7#U#U#X#U#U#U#X#U#U#7#7#7#7bXbXb0bSbQa..c.a.c.a.caXb0a1.L.7#j.Mb.bPbP.c.c.c.c.ca.b2bP#U.T#a.7.7#l#U#U#5#8#1#U#U#U#Z#8#S.Q.C.M#I##.7.Q#j.M.Z.X#D#Uapapauauapa.#S.M.S#L.8#Oa.#Z#7#Z#U#U#U#1#1#8#c.8#Sab#8#8#8#8#U#1ad#7ad#y.L.1.4.H.T#A.Z.Y.Q#w#g#M#L#L#N#R#d.N#..O.6", + "#s#c#B#U.M.Y#x#l#i#i#q#q#a.5#w.Z.F.H#l#D.H.Z.Tapb2#W#W#W#W#W#W#W#WaubXaJ.A.M.H#1b0a.#A.9.9.9a.bXbSbXb2bPb0bPbQbSbQbSb2b1b1bXb2b0b1b0bSaXb0bSaVbPbXb1bXb0bXb1bXb0b1b0bPbXbXbXbSbmbmb0b1a..a.c.a.a.aaYa1.L#h####.7#dbdbX.a.c.c.c.ca.bX#7#s#g#r#j.LapbXb2bPbPb0b1b0b1bXbUbf.Q.M#c#I#y.S.Q#v#BaubsbPb1b0b1bUb2b0bSb1bLa2aGbdaOb0bXbQbXb2b1b1bXbXb2#p#obdbXbSbXbUbPb0bXbPbXbX#d.1#d#.#a.5.0.1#.#a.5###c.8#p#j#H#d#d.N#d.L", + "#O#I#T#D.V.Q#F#G#q#i#l.Z.M.Y#q.V#a#a#t#t.V.T.TapbX#W#W#W#W#W#W#W#q#Waub0aJ.A.V#5b1a..9.9.9.9a.b1b0#U.O.9.O.T.O.O.9.O.O.O.O.T.O.T.O.T.ta.b1b0.O.T.O.O.T.O.T.O.T.O.O.T.O.T.O.T.O.oaYb1bQa..a.a.a.a.aaYb..A.1.8.V.V.Ka3b2.a.c.c.c.ca.bX#1#v#B#..C.Havbm#l.O.9.O.O.T.O#lbXbf.Q.Q#F#o.4.Y.XaubLb1bmaf#l.O.t.E.E.E.O#7aubmb2bXb0bSau#A#q#A#q#A#UbmbX#L#pb.b2#7#W#W#W#W#W#Wbmb1.9.9.Z#d#R#O.K.4.M.4##.S#r#c#c#I#R#d#d.V#.#d", + "#A#H#m#t#.#k#T#G#q#q.T#..7.M.H.V.M###O.V.A.C.MaBb1#W#W#W#W#W#W#W#W#A#WaVbXaf.V#5b0a.#A.9.9.9a.bXb1bX.E.E.y.t.t.t.t.t.r.r.r.r.r.r.o.o.ma.bXbS.l.i.i.i.i.i.i.i.i.e.i.c.c.c.c.c.c.caXbQb1a..a.a.a.a.aaXa3.F.L.8.C.K.Kb.b0.a.c.a.c.ca.bX#1.0#G#G.0.0aybX.t.i.i.i.i.i.l#lb1b..7#x#c#g#g#xbib0aX.O.t.t.t.y.E.y.E.E.E.E.9.9.9.ObSb0b2#q#A#q#A#qa7bXbS#I#Ob.bPaV#W#W#2a##WbJb2bP.y.O.T.Z#A#R.4.L.L.4.Q.Q.5#B.7#p#j#d.1.Q#..9", + "#d#N.X##.Q#g#E#U#w.5#O.L.4.L.F.V.M#j#j.4.1.A.QaybP#W#W#W#W#W#W#W#W#q#W#AbdbXaf#5b1a..9.9.9.9a.b1aJb0.E.E.E.t.t.t.t.t.t.r.r.r.r.r.m.o.ma.b1b0.i.i.i.i.i.i.i.i.e.e.e.e.c.c.c.c.c.caVb1bQa..a.a.a.a.aaYbAayayaFavavaybsb2.a.a.c.c.ca.b1a##B#i#2#G#qa9bm.i.i.i.i.i.i.m.lbmbL#E#u.2.X#JbobX#U.t.t.t.t.t.t.E.E.E.E.E.O.9.9.9aub0bAbX#q#A#q#W#AaXb2#8#LaGb1b.#W#W#W#W#Wb2bPam#Z.A.F#a.6.T.Y.4.7#k.5.F.M.4#v#c###.#k.V.2.Y#R", + "#d#H.Z.Q.V#g#x#s.8.S#H#v#j.Z.Z#w###j#j.4.M.F.Aaub2#W#W#W#W#W#W#W#W#A#W#A#qb.b1aGbXa.#A.9.9.9a.bXaub1.E.y.t.t.ta.a.a.a.a.a.a.a.a.a.a.#7a.bPb1.i.m.i.i.i.i.i.i.e.e.e.e.c.c.c.c.c.caXbQb1a..a.a.a.a.#aVbXbSb0bSb1bUbXb2bX.a.c.a.c.ca.bXa##D#i#G#a#UbU#B.i.i.i.i.i.i.m.i#Sb1av.S.C.KaJbX#7.r.r.t.t.t.t.y.t.E.E.E.O.9.9.9.9b0bvaGbX#q#A#A#A#qa7bP#BaQb1b.#W#W#W#Wajb1bD#Z#b#b.K.Z.C.K.K#g#t#O#O#t.T.4.T#a.5#w.V.5.X#b.7.L", + ".1#A#A.Y.X#b#m#j###a#v#y#v#i#i#G#H#y.7.M.K.F.FavbS#W#W#W#W#WaL#W#q#W#A#q#A#qb.bXbUa..9.9.9.9a.b1aub2.E.E.y.t.tb1bXb1bXb1bXb1bXb1bXbPbPaXb0bPafb1b2b1b0b1a..i.e.e.e.Ob2b0b1b0bXaXb.b1bQa..a.a.a.#.#.t.T.O.T.O.O.O.T.O.T.a.a.c.a.ca.b1#5#c#G#2#OaQbJ.l.i.i.i.o.o.i.m.l.lbmbL#F.7#Db2aV.r.r.t.t.t.t#7aGbmb0b1bmaz#S.E.9aLbSafazb2#A#q#q#W#AaXb2bdb2aV#W#2#W#WazbSbm#S.H.K#b#F#O.M.Q#c#E#L#I#O#j#l#A.6#w#l#h.0.5.2.C.1.y", + ".1#A#A.T#b#b.8.7#a#l#B#H#l#i#q#G#j#y#j.T.V.A.Faub0#W#W#W#W#WbXb##W#W#W#A#q#A#ibubXa.#A.9.9.9a.bXaGbP.E.E.t.t.tb2bPb0bSb0bSb0bSbmb2bmb0bQb1b0b1b0b.a3bmbPa..i.e.e.e.9bPbmb.bdb1bQb1bQb1a..a.a.#.#.#.............#.#.a.a.a.a.a.c.ca.bP#U#d#H#X#6bSa..i.i.i.iazau.i.i.l.m#Sb1ae#rakbX#l.r.t.r.t.ybmbPb1bmb.a3bAbSb1b..9bXbA.TaybX#q#A#A#A#qaYbXb2au#W#W#W#WazbUbj#D.V.Y.2#u#V#M#x#l.Y.8#I#I#N#H#a#a#q.Y.M.L#A#r#m#q.Z.A", + ".V.9.Z.T.Y.5.V#.#.#s#q#W#i#q#G#r#G#l#l#a.T.L.VavbS#W#W#W#W#Wb1bXaV#q#A#W#A#q#A#ibJa..9.9.9.9a.b1aGb2.E.y.E.t.ta.a.a.a.a.a.a.#7a.bP#7#8#7amayavau.T.Y#8bSa..i.e.e.e.Ob2#U.4#jazaGaGaWbPa..a.a.#.#...............#.#.a.a.a.a.c.a.ca.b1#5#u#UagaJb0.o.i.i.i.ob2b0.o.l.i.l.tbCbA.Ab#bS.r.r.r.t.rbCb1aC#B.Q.M.Z.M#DbmbCb.b1ae#qaub2#A#i#q#q#WaVbCaj#W#W#W#Wa.b1bn.Z.F#a.K.2#b#J#M#L#u#c.8#I#O#H#B#a.V#v#a.C.A.H#G#F#i.F.A", + ".V.6.T.H#v#l.6.M#k#y#N#H#i#Y#q.5#k##.H.F.X.X.6aub0#W#W#W#W#WbXbUbXaz#q#A#q#A#A#i#A#7.9.9.9.9a.bXaGbX.E.E.y.t.t.t.t.t.r.r.r.r.ra.bX.7#v.Z.C.C.A.N###k#8b0a..i.e.e.e.TbX#U.M.Q.7#c#u#5b0a..a.a.#.#...............#.#.a.a.a.a.a.c.ca.b0#0#r#r#XbHau.i.e.i.iazbPb1au.i.m.l.ma.bXafbnaV.r.r.r.t#Sb1aJ.T.Z.Q.M.V##.4aubLb1bA#G#iaubS#q#A#A#q#AaL#W#q#W#W#W#W#2bBbn.Z.A.H#g.S.S#b#L#T#L#M##.S.Q.M.Q.Q.V.V.4.M.M.M#F#U.F.F.T", + ".C.T#d.Z.N.T#a.F.0#y#N.7.M.M.M.Q#b.M.M.C.5#a#qaubU#W#W#W#W#Wb1bgbeb2az#q#A#q#A#A#A.9#A.9.9.9a.b1aGbX.E.E.y.t.t.t.t.t.t.r.r.r.ra.b1.Q.C.A.y.N.N.V.7#x#8b1a..i.e.e.e.Ob2#U.8.7.Q#x.8#8bSa..a.a.#.#...y.T.O.9.O.O.O.O.9.O.a.a.c.a.ca.b1a.#w#Gaub2.O.e.i.i.ob2bebAbC.l.l.m.l.tbCbAbPaY.r.r.r.ra.bX#U.9#A.6#.#j#H.1.CafbXbA#A.Cavb2#A#q#A#W#A#2#W#W#W#W#W#W#W#7bQaE.A.A.Y#M#o.5###O#T#T#D.Y.V.V.7.M.M#.#j.7.Q.7###B.C#q.V", + ".6.T.1.1.1.1.4.Z#.#j#j.Q.Q.V.Y#g#w.F.5#w###a##aub0#W#W#W#W#WbXa5#vbnb0az#q#A#A#i#A.9.9.9.9.9a.bXaGbX.E.E.t.t.t.9.O.T.O.T.O.O.ta.bX#a.X.F.y.A.Y#t#b#b#8bPa..i.e.e.e.9bP#Z.7.Q.7.7.7#Ub0a..a.a.a.#..aXb1b2bPb2bSb2b2bQb2.a.a.a.c.ca.bP#Z#r#GbAaX.e.i.e.ibmbXbAbsbXa..i.m.m.ma.b1b0aX.r.r.t.r#Bb2aC.6#i#q#.#y#j.4afbXbCbPaJ.CaybP#q#A#q#A#q#W#A#W#2#W#W#W#W#WaXbQ#1.1.Z###S#y#y#H#4#O#E.5.V.M###a.V#s.4.Q.M#a.Y.Q.Y#w#a", + ".9.O#d#A.N#d#j.L.L.V.2#p#4.4.Q.X.K.X#r#r#F.K.MaubU#W#W#W#W#Wb1a3.L.VbJb2#O#q#A#i#A#A.9.9.9.9a.bXaBb1.E.y.E.t.tb2bSbXbUbXb2b1b2aXbQ.C.2.C.A.8.8#D#o#b#8bUa..i.e.e.e.Ob2#8.Q.8.M.M.V#Ub1a..a.a.a.#.#aVbAazaGaEaCaCapbAbX.a.a.c.a.ca.b1#8#bajb2#S.e.e.i.taYaXaYaXaYaL.l.l.m.m.tbCbXbQ.r.r.r.t.tbCbXau#h.5###j.V#DaYbSa.aXb0a.aub2#A#q#A#q#A#W#q#ObX#U#W#W#2#Wa#bAby#v#v#H#N#I#I#y#N#I#t#w#h.4.V.C.4.M.7.L.L.M.Q.Q.Q#k##", + "#R#R#R#R#d#d#v.L.T.Z#b#L#o.8.8.7.S#b.2#u.2#r.Yavb1#W#W#W#W#WbXb..T.F#DbPb1#B#A#A#i#A.9.9.9.9a.b1aGb0.E.E.y.t.tb1bAauayapaybdbPb0b1avb1b0b1#b.7.8#I.7#8bPa..i.e.e.e.TbP#8#u.Y.Y.7.M#ZbXa..a.a.a.a.#aVbg#v#H#v#a#w.Tbdb1.a.c.a.c.ca.bP#U#Dbdbm.e.e.i.i.i.i.i.i.i.i.i.l.m.l.m.oajb1bX#l.r.r.t.t.ybmb1bLa1ayaubmb2bPaL.9.9bCbLaCb1#q#A#q#A#W#Aazb1b0bJ#W#W#W#W#W#7bPaG#R#B##.7#x.8#s#O#..V.7.S.L.T#..7.4#..M.V.M.Q.Q#F#x", + "#R#R#R#A.9#A.V.Z.0.Q#s#L#b.7.7.1.C.S#x.2#D#l.0apb0#W#W#W#W#Wb1bg#s.V.A#BbPb2#B#A#A.9#A.9.9.9a.bXayb1.E.E.E.y.tb2bPb2bPb2bPbXb2bPb0b1bQaXbQ.7#D#b.7#c#8b1a..i.e.e.e.Ob2#8#b.Q.S#b.2#ZbXa..a.a.a.a.aaYb.#H#j.M.V.5.ZbdbQ.a.c.c.c.ca.b1#1#8bP#7.c.e.i.i.i.i.i.i.i.i.l.m.l.m.o.m.ob2bPaX.r.t.r.t.t.t#7aGbmb1bUb.au.9.9.9.9#lb1bXb0#q#A#q#W#Aafb2bmaBb2aX#W#W#W#W#WaYb1a..5.M.V.Q#p#c##.7###D.X.L.Z#a.Q.K.K.M.1.M.Q.7#T#T", + "#Y#R#j.F.T#a.7.F#a.Q#s.8.7.7###a.Q#M.Q##.5.0.6apb0#W#W#W#W#WbXb.#N.y.y.y#Ub1b2#B#i#A.9#A.9.9a.b1aubU.E.E.t.t.ta.a.a.a.a.a.a.a.a.a.a.#la.b1.7.7.4.7#IadbXa..i.i.e.e.9bP#Z#b.S.Q#x#r#Zb0a..a.a.a.a.aaXbd#.###a.M.1.Zbdb1.a.a.c.c.ca.bX#5aObC.h.e.e.i#Ba.a.a.a.a.a.a.a..m.l.m.o.oaub2b0#B.t.r.t.t.t.t.t.t.E.E.E.E.O.9.9.9.9aLbSbX#q#A#A#q#WaVbX#x#Ib.bQ#7#W#W#W#2a#bAbC#g.M.M.Q#j#x.7.X#r#O.7.Q.K#l.V.M.C#.#H.Z.M#I#O#O", + "#H#j#k.T.O.0.8.F#a.V.7#b.8.4.L.Z.Q#b.7#c.M.M#aaObP#W#W#W#W#Wb1bm#S#v.Z.L.Zakb1b2#A#A.9.9.9.9a.b1aJb1.E.E.y.t.t.t.t.t.t.r.r.r.r.r.o.o.ma.bX.Q.4.M.7#tafb2a..i.e.i.e.Ob2aj.K.C.7.S.QavbPa..a.a.a.a.aaYbm#D#l#B.1#d#BbrbQ.a.c.c.c.ca.b1avb0az.e.e.i.ob2b1bXb1bXb1bXb1bXbm.m.o.m.r.tbXb1b2#U.t.t.t.t.t.t.E.E.E.E.O.9.9.9.9.9.9bCb0#q#A#q#A#qaXb0#V#.#FbXbC#W#W#W#W#2#7bQaY#D#k.Q###l#k#x.2#t.Y.S#b#H.Q#a.4#d#d.1.7#o#L#N", + ".M.A.V.V.C.S.8.F.V#c#m#b.S.M.M.M#c.8.Q.Y.V#aaubQb1#W#W#W#W#WbXb0b1#.#.#a.F.6aubXbC#A.9#A.9.9a.bXb2bP.E.E.E.y.t.t.t.t.r.t.r.r.r.r.r.o.oa.b1.7.M.7###Hb2bPa..i.i.e.e.TbXbU.Q.A.L#j#1b0b1a..a.c.a.a.aaYb2bd.7#v#N#HbebXb2.c.c.c.c.ca.bXb2bP.o.e.e.iaub1aJ.Y.V#w#w#o.8bdb0#B.r.r.r.raLbPbXb1aY.O.t.t.t.y.E.y.E.E.E.9.9.9#7bmbCb0b1#A#q#A#q#WaVbSb1.7#ob2bXaz#W#W#2#7#2aYb1b2#t#y.Q#a.H.V.7.L.V.Z#o#y#.#h.L#H.Z.V.8.7#j#F", + ".S#j#y.Q.K#c.7.V#x#u#b#u#b.M.Z.M#o##.V#a.A.Hapb0#U#W#W#W#W#W#7bmbP.6.L##.Y.Ma.bPaY.9.9.9#A.9a.aXbQ#7.O.O.O.T.9.O.T.O.9.O.9.O.O.O.O.O.ya.bX###H#I#O#Rb2bm#l.O.O.T.O.9aYbX.A.A.7#y#8bSaV#l.O.O.T.Z.9#Sbmb.###s#v#Hbdb0#U.O.O.O.O.O#laXbPaf.9.O.T.Oafb0aG.0.M.Y#k#I#Mb.b1#S.O.O.O.O#lbmb1aYbXb2bmaf#l.9.y.E.E.9.O#7aGb0bPbLbsbXau#q#W#A#q#A#qbubP#s#tb1bm#W#W#W#W#W#W#WbmbX#p#o.7.T.M.K.K.L.C###y#d.1.N.Z#R#T#O.S.Q.Q#x", + ".7#H#N#j#h.Y.Q###O#H.X#b.2.M.4.Q.8.V.V.M.L.Vaub2bXb2bXb2bXb0bPb2bX.6.6.7.K.0#1b0bXb2bXbUbPb2bXbQbXbPb2bSb2bXbQb1bXb2bPb2bPb2b1b2b1b1bSaXbQ#l#k#c.S#Bb1bXb1b2bSbXb2bPbXbU.A.L.7#x#8bPb2bXb2b2bXb2bPb1bXbmamaXbgbgbLb1bXb2bSb2bSb1bXbQb1b0bPb2bXbUbXbSaz.T.4#j#y#y#TbgbPb1b2b1b2b1bXb1bQ.7#5aObLb1bXbQb1b0b1b0bUbPb0bmam###Ub2b0bXbPb2b1b2bXbSb0.8#Db0b1b2b1b2b1b2b1b2bXbU.8#L#c#..V#q.A.L.M.4#N#R#R#H#A#N#O#p.Y.Y#b.8", + ".T#R#R#H#v#v.2.5#H#U.5.0.Y.M.V##.7.V.F.H.V.M#UapauavavaBaLaGaGauav.M.M#g.5#q#XapaGauaJbXb2bPaJauauaBayayaBaHaBavavauaCauaYb.avavavaJb0bQb1#v#v.4.0#laGavb.a8aHaDaDayawau.K.Y.Q.7#Sazaybaa8aIayaBaLbLbSb0b1bCaYaXbmb0bSbLauapauauaEbAbPb1b0bCaYaVbSb0bi#X#N.T.4#j#yajaHaBauayauayayaIay.8.Q.5.V#ZaGaCbda3b.aQaua.#a#H#T#o#SavapauauauavavavaIay#b#cauauavavauauauauauauau.M#j#L.M#..F.A.A.4.M.1.Z#A#A#R#A.Z.F#i#l#..Q", + "#y#N#R#N#H#h.S#v#R.6#i.6#g.K#a#g.4.V.Y.Q.7.A#Ub0b1bXb2bXbPb0bXb2b1b2b1bQb1bQbUb0bPb2bXbUbXb2bXb2b0bSbXb1b0bLaW#B#.afbmb2bXb2bXb2bmbXbSbXbQb0b1b2#1ajbjb2bPb1bQbuam.XbUb0b1b0b1b2bXbUbXbPb0bXb1bAb0bSb0au.y.c.c.c.c.tb.b1au.T.F#.a7bSb0au.t.i.i.i.la.bXbA#R#B.5#k.7#o#o#I#k.5.Y.X#b#.#g.M.5.Y#a#w#c.7.M.V.M.Q#k#a.L#j#j#L#L.4.C.M.Z.A.M.5.H.2.2.S.Q.4#v#j.Q#b.C.1.1.C.8.M.M.4#j.7.8.H.L#h#..H.V.F.9#A#i#W.6#i.6#a#a.V", + "#N#R#R#M###y#o.V#B#l#w#q#w.5.5#r.Y.Q#b.M.M.A#Ub1b.a.a.aub2bPbCaja.aubCbma.a.a.a.a.a.a.a.aubXaua.a.a.a.a.a.b.b1bmaOb0bma..O.O#Sa.aXb.bXaYa.a.aXbQbAbPbda..O.Oa.b.bXbibXbCaja.a.ajbCbXbma.a.aub0b.a2bX#l.c.c.h.O.O.c.c.lbmbL.A.Aa.b1bm.O.i.e.i.i.i.i.i#7bPau#s#F#r#E#T#E#T#b#F.V#a#a.5#G.0#l.2.Y#x#p#p#k#l.Y.7#c#l#a.Z.T.Z#o#L#o.Q.X.C.H#..A.A.M.M.4#j#s#v.Q.Q.S.L.L.M#I.4.7.Q#j#j#u.F.L#h.y.F#h.N.F.9#q#i#i#i#q.T.F.V", + "#v#A#B#R.4#d#v#H#2#G#G#q#B#r#l#w#n#r.S#a#q#k#Ub0bS#W#WazbPb2bC#W#Wazb0b1#A#q#A#A#i#A#A#Aaub2a..9.9.O.E.E.E.E#lb1b0aG.t.t.r.r.r.r.Obmb2aV.o.maYbXbP#7.i.i.i.i.i.i#7bAb2bX.T.e.e.lbdbXb2.c.ca.b1bf#MbLbm.oazb1b2bSaL.c.ca.b1#W.A.LaOb0aG.e.oaubXbC.o.i.ib.bj#J#u#J#V#X#U#V#M#L.X.Y.5.Q.K.Q.Y#c#D#B#D#M#F.5#a#a###l#q#i.6.T.K#b#T#o.X.F.N.1.L.A.1.Z#v#H#M#l.V.F.A.L.L.F#.#H#s.8.7.Q.C.T#j.V.T.T.O.O#.#v#W.6.A.4.V.T.F.M", + ".F.A#a.7.1.L.1.Q#q#q#i.V#g#G.T.5.X##.M.V.Y#D#aambXaz#W#WbJbPaz#W#Wb2bPb2#W#AazaYaXaYaXaYaLbPa..9.Ob1b0b1a..E.tb.b1.O.t#lbJb2bCaza.b1bPaX.m.oaVbSau.i.l#laXaY#l.i.i#Bb2bP.O.i.e.c.lbCbX.c.ca.bXab#xajb2b.b1b.a.a..O.c.lbmb0#B#.#v#ObCbX#7bmb2bPbC.o.i.ibdbj#u#m.2#F#r#F#D#G#F#c#D.5#G#U#X#w#####O#.#..V.H#i#..T.V#a#a.0.A.H.5.6#k#S.8.T.N#A.4.1.1.Z#v#H.F.F.A.N#d.1.C.4#y#s#j.8.M.M.S#w.T.6.T.O.O.y.M.Z.6.6.A#..L.M.L", + ".F.F##.M.A.y.A.F.0#q#l.M.C.F.A#a##.4.4.M.Q#g##.7bLbm#W#Wafb2#W#W#7bPb2bP#A#qazaXaYaVaYbPb1b0a..9.Ob2bPb0aL.E.EaXbQ.T.t.ta.aLb#bUbXbQb1aV.o.maXb0.y.l.Ob2b0bXb1.O.i.ibCb0.T.e.O.i.e.tbC.c.ca.b1#S#D#Sb0b1bQaX.c.c.c.c#Sb1bH#l.1#v.V#SbSbPb2bPaf.l.i.i#7bPay#T#D#v#w#U#W#G#Xafafavauab#1#U#D#g#M#V#M#E#l.6.T.T#..V#a#G#a.4#v.V#i#W#O#t#x#h.Z.1.Z.1.N#A.Z.F.T.y.y.N.L#a#v#..M.7#j#H#A#F###k#B.O.1.y.F.0.6.C.H.A.A.4.4#.", + ".H.M.7.V.F.A.H.T.C#l#w.M.A.A.A#a.0.V.M.V#x#3#c#kaOb0#W#W#WaX#W#Wbmb2bjb1#W#A#q#A#i#Aaub2aJb1a..9.9.O.T.O.T.E.Ob2bXau.t.t.t.r.r.ta.b1bQaX.m.oaYbX.l.ma.bXak#1b2a..i.iaYbX.O.ia.au.e.e.t.e.ca.bXa.#SaGb0bCbXaYa.a.#S.c.c.Ob1aYaGaz#1#lbAb1aV.o.i.i.laubQb1aSak#1afapaCaJaCaCaJaQaIab#V#J#J#J#Q#Vaaaaaiai#0#U#H#h#w#w#w#G#H#U#g.V#a#q.Y###S.4.y.N.1.N.L.4.Y.H.y.A.C.T.T.Y.Q.M.4#H#B.T#j#d#v#h.T.y.L.T#i#i#l.X.C.X.5.M.Y", + ".A.V#o.Q.A.T.H.0.F#a#a.F.T.6.A.M.V#a#.#o#c#b#c#s#Ub2af#W#W#W#W#Wb2aVb#bP#q#WazaYaXaYaXbQb1bQa..9.9.O.T.T.E#7bPbXbUbXbCaza.#l.r.r.raub1aV.r.oaVbS.o.l#SbSbibmbP#B.i.ibmb2.O.ia.b1aj.i.e.e.ea.b1aG#7bLaGajb1bPb1bXb1.O.e.ib.bPbXbUb0bmbSau.i.i.lafbCb2bXbUbSa3aZaRaNaxaF#0#J.K.j.j.j.q.R#z.U.U.U#e.3.B.B.2#z#3#9#E.Y.Y#k#O#S#F#B#W#B#v#j.5#D#j.Z#A#d#d.9.Z.8.M.A.F.D.y.F#j#N#j#R#v.8.7.1#H#A.F.4#j#H.9.F.6.2.K.K.Y.M.M", + ".M####.V.A.F.M.Y#q#q#w.0.0.F.F.Q.M.V#x.M.M#a.7.7.7bAbm#W#W#W#WaLbX#Ub.b2#W#Aaub2b0bXbQb1b.b1a..9.Ob2bC.O.Ea.b1bQbXa.b.b1bXb1bC.r.rafb0aX.r.oaXb0a..l.lajb1bPaf.m.i.9b0bP.T.ia.bXbS#B.i.e.ea.bXbaaGb0#l.c.yafaXaYau.l.i.ebmbC#l#7bPb2au.i.i.i#7a.a.a.a.a.bXaTaqaa#V.2.z.q.q.B.K.B.2.B.2#z#u#Q#9axai#9#0#J.j.j#uaxaB#S#D#D#F#D#G#B#W#O#M#h.V.7#t.T.1#A#A.T.A.8.M#..A.A.y#.#H#O#R#l#c#y#H#H#h.O.L#h#H.O.T.T.0.X.M.Q.Q.M", + "#p#c#a.F.A.C.Q.S.H#G#m#r#q.A.5.2.Y.S.Y.M.L#p#P#h.YaGb2#W#W#W#Wb1bA#Ub2bX#q#W#A#q#A#i#A#Aaub0a..9.9bPb0au.E.EaYbXbU.O.t.O.T.O.O.r.9bubSaV.r.raVbSbC.y.l.l.i.l.m.i.Eb.bSb0.O.ia.b1b0b1#B.i.ea.b1bLbAbm.t.i.c.e.e.e.e.i.ea.b1a..i.iaXbQ.l.i.i.i.i.i.i.l.l.Ob2blaI#Zaeaeamayanaman#5#V.2.3.U.U.U.u.u#e#C#9ax#9.R.j.j.B#V#8#S#S#O#S#D#B#B#s#v#a.A.M#p#s#v#R#j.K.S#c.4.L.T.A.y#i#G#W#H.Y#s#s#v.1.L.F.T.9#A#d#d#O#x#t.S.Q.M", + "#c#r#w.M.S#x#n#n.5#l#g.5.T.T.5.5.V.F.T###S#3#T###aaubQaz#W#WazbUb.#UbXbm#W#A#W#W#q#W#q#WazbSaj.9#SbCbXbm.O.9#lbmbCaz#7.O.T.T.T#BbybPb0aG.O.OaLbXbXbSaj.O.m.l.Oafb0bSb0bC#S.9a.bXbLb2aL.O.Ta.bXbPb0b1b2bm#7.O.l.i.o#Bbdb1bQb..l.tbCaX.O.T.O.9.O.9.O.O.O#Sb1aWaLaKaIaLaQaKaIaDaDanaeae#J#u.R.U#f#f#f#f#f#C#PaFa8aw.2.j#Vaqaqam#S#S#Z#S#B#H#k.V#a#k#N#N#N.1.M#v#y#j.M.F.A.F.T#h#B#O#k#g.X.M.V.Z#h.y#i.T#R#H#N#N#d.M.C.M", + ".M.Q.2.2#x#E#m#r.M.V.A.A.F#a.M.Y#q.6.Y#c#I#u.8.7.4ayb1bQb1b2bSbXb.#Ub2bXbPb1bPbXbXbXbXbXbCb0b1bPb1bXbUbXb2bQb1b0bXbQbPb2bXb1b1b2bPbLbSb0b1b2bPb2apbAb1b2b1b0b1b0bA#7bQbXb1bQb1bQbLbXb1bUbXb1bQbXbLbLbLb0bPb2bSbXb2b2bXbLbDb1bPb2bXbCb2bXb2bPb2bPb2b1b2bCbXbh#V#VaIa4a4aWaWaIanasaeaa#V#0#V.2.B.U#f#f#C#C#zaxaKbwbta4#J.j.BaqaL#5#8ac#4#R#B.6#.#v#O#N#j.4##.4#v.7.M.M.H.Z.A.M#i.5#D#c.7.A#a.C.N.O.D.C#N#R#A.H#v.1.1.L", + ".L.4.X.S.7.8#c.S.Q.M.Z.T.A##.V.0#q#l.7#g#p#b#c#b.8#Uauauauauavavaj#SauavayayayavauauavbDbXbSaOavayaBazavavavavayaG#V#Uauauauayab#gabayapauaCaGaC#U.Y#Sayavayaya.#D#SaObablbLbMbLbBbLbPbubAbAbAbub.blbubDbQbPbBbmaEbsbm#q.d#2aEaJbyb0bPbAbfbjbCbLbPbSbXbXbSbjaL.2.j#b#E#V#Z#J#V#J#M#V#J#u#n#m#r.2#z#C#C.U#C#Qaxaxbtbhbtbb#5.q#ZaWadad#V#6#B#A#d#R#I#o.M.M##.M.F.V.M.Y##.C.6#a#a.H.V#b.8.A.M.V.O.F.6.9#R#O#d.T#H#A.1.M", + ".H.A.A.M.S#g#a#g.5.C.V.M##.M.T#v#B#G#B.7.8#x#L#c#j##.C.A.X.S#m#u.8.Q.Q.8.7.7.V.H.M.Q.S.Q.K.X.Q#u#m.X#b.8.2.2#b#x#b.4.4.C.M.Q#p.5#w#w.Z#A#a#F#p#t#B.M.2#b.Q#D#D#D#UaublbubBbcaWa4aLaTaSaTaIaIaHazaVaLaBaTaIaGaI.D.da1a1.D#i#2a#aGaGaJaLaOb.bdaE#G#ia1bSbvbiaWaIayab#E.j.f.f.f.j.f.q.u.q.j.q.B#J#r.B.q.U.U.U.U#zaFbhaWaGaIaZa4#V.2aKajamaB#7###N#d.S#b.V.M.5.V#a.Z.F#h#c.7.F.T#a#a.M.M.8.8#b.H.T.C.F.Z.y#..4#A#N#A.V.V", + ".Z.A.C.K.M#w#l#q#q#q#w#c#k.Z.A.M#O#B#O#o#M#L.8.5#B#k.V.V.Q#p.8.2.2.V.8#b.7#l#G#q.7#j.X.K.X.2#u#b#J#w#D.5.5.X.Q.5#k#j.Z.L#j#x.S.4#l.V.6#i#l#S#x#t.4.V.Y.X#g#w#w#1aTbubsbjaLaDaLa6baaSaGayaeaeasafafauasawavaDbo.h#Ua1a##W#Wa#apaGayayaHa##Xap#X#Oajb.b4brbfbabaaI#VaHav.2.f.B.5.B.S.P.j.f.f.j#n#z.2.j.j.U.U#e#u#PbtaWa.a.ab#9aqaKaIbtaZaKaq#V#H.M.X#b#c#b.K##.X.C.6.0.Y.8.7.V#A.7#a.M.M#b#b.F.A.H.C#j.T.6.5#A#i#A.L.C", + ".F.A.A.C.M.Y.5#q#G#i#D.5#a.M.L.T.5#F#u#L#p.7.7.Y.Y.Q.V#E#g.7.4.M.M.Y#c.7.M.6#w#q#h#s.Y.M.M.S###a#n#m#w#G#w#g.5#q#a.A.T.F.7#c.X.L.T.6.T#a#F#u#I##.H.V.V#h.5#wafbabubwa2aqaLbfa2aMayavaGanae#5afauauauauavaqaIab.FafaOa#akapauaLaGayaGazabauazarasaTaTb4bCbobjbaboa6#J#5am#Z.j.2#J#E#Z.B.j.q.q.q.B#J.u.j.j.U#z#0aSaZaWa.#U#U#S#V#6aia8btaZax#V#p#j.L.7#L#c.V.Q#E.Y.H.T.A.8#t#j.4.M.M.Q#c#b#b.M##.T.F#H.9.F.F.O.6#..1.y", + ".Z.T.F.F.V.M#k#k.T.7#c.M.M.A.T.H#g#M#u#t.7#j#H#v#..8.5#r#o#j.L.C.Q.8#c.L.L.F.A#i#i#G#w.V.4.M#..Z.T#g.5#q#l#l#k.Z.0.6.6.F.C.K.1#a.F#i.K.8#M#o#o.4.A.V#q#l#DavbubBbLa2awaSa6aMapakabafab#Zanakap#5a#apauavaVbo#U#EauaXayaCaJaGaGaIaGaGaGauarasaLaWaVbAbBbha8bjbja8a4blae.2abae.q.2.2aead#T.P.8.B.z#r#n.q.f.j#u#zaiaZaRaf#1#S#O###M#4#6aaa4aK#9#L#s.M.V#o#O.Y.2#r#c.Y.Z.C.C###x#c.M.7####.7.8#o.7.A.F#.#N#d.O.N.O.X.M.A", + ".1.Z.V#a.T.H#c#D#k.Y.Q.7.M.F#a#p#M#c#l#D#o.7#j#g#G#j#l.5.8#j#j#L#g#k.Z.A.L.L.A.F.T#q.5#D.L.A.L.F.T#q#w#w#q.5.M.6.6.T.T.6.T.M.S#a#q#B#c#L#p#o#o.M.M.V#l#UaGbhbBbPa2avayaGaIaCa##U#q#iag#1#5#Z#X#W#W#WafauaGbAa2aqazaVaGaLaGaGaJayayaBaGararb.babBbVaWajaj#U#8ajaRa4aWbbaW#J#J.z#8aa.B#V#Z#8#J#J.2.2.2.B.q.f.u.R.U#9bzav#5#U#D#k#v#O#M#T#8asaT#Z#c#.#H#y#I.S#B#l#w#b####.4.L.Y#c#m.X.7.8#s.8.8.M.M.1#d#R#H#A.O#q#l.F.C", + ".L.M#..V.1.4#u#u.7.7#j.7.Q.S#L#x#c.7#k#F#o.8.7.8##.4.V.Y.7#x#3#I.F.4#d.T.Z.K#a.K#r#q.Q#g.T.Z.V.V#a#G#G#G#a.4.L.6#h.O.T.F.Z#l.Y#a#w#O#p#L#p#I.8.M#B#O#SaBbhbubLa2avava#afaCak#G#G#i#W#i.x#i.E.6#G#q.9#i#Wa.b.bBbubpaVaGaGaGaGaMaGaGavazara7bub0bGaT#S#l#O#S#S#F#F#5aLaZa8bpas.z.2aWaWaa.B#Javaa#V#P.B.B.q.z.q.u#e#CaFbwaB#5#7#D#a.F.V.8#T#4#O#O#k#a#R#R#R#p#y.8#x#x#O#v.4.M.C.4#L#t#c.8##.7#c.4.4#d#N#W#l.9.A.C#q#w#l", + ".M.M#v#H#v#v#y#p.Y.8#u#x.2#M#3#O#c.7.7#j#I#I.Q.4.M.V.M.7#L#L#p.M.L#k#O#a.F.K.H.A.5#r#g.5#i.V.7.Q.X#q#G#i.Y.2.H.T.T.T#i.M#..4#c#O#X#x#p#o#p#M#s.7#D#8#5bjbubQaSaD#Uaka##1#X#W#G.6.x.x.9.x.9.x.9#1#i.9.9#q#7azbCbAbmazaGaJaJaOaOaGavayasarbjbLbpav#D#l#k#D#F#T#V#S#D#UajaWa4bj#Z.jaeaHaZbuaaaya8aa#u.3.B.q#p#b.2.R#z#0bbbBb.ab#5#1#a.L.V#s#M#p#O#R#.#j#y#j#o#.#b.7#j#N#R#j.M.V#H#j.7#x.Q.8#o.7.4.M#..Z#i#q.Z.Z###w.2.H", + ".M.Q.1#h#h.T#H#N###b#D#m#u#P#L#O.7#o.8#I#I#y.M#y#d#l#g#M#P.V#a#y.O#a.H#k.M.A.L.A.C#c.Y.Y.K.K.4#H#j#q#2#i.6#G#w.6.y.y.A.1.1.7#c#D#V#T#x#b#M#S#G#G#1#VaVbobMbjaqaCaE.#.paga##2#i#i.x.x.x.x.9.9.9#W#i#i#q#W#U#WagaEao#7auafaLaJa0aQaGaGasaVbnbTbhab#G#B.X.H.L#.#I#T#T#s#x#8aNaZa4.2.2#S#8a4bpaSa8aI#V.j.3.q.P#J#J.R#P.RaqaWbtbaam#5#S#c.M.V.Y.7#j.4#j#H.L###D.5.X##.M#y#j#j#x.H.4.4.M.Q.Q.M.7.7###a#q#a#i.T.L.V###c.X.K", + ".M#a.0.F.6.T#A#B#b#r#B#L#L#u#b#x.8#T#x.8.7.V.Z#d#N#4#M#c.V.M.0.Q.A.6.F#c.V.Z.Z.C.V#a.M.L.Z#a#A#v#..T#i#i#i#h.6#i.H.A.F.L#y#s#D#J#9#S#E#L#M#G#1#U#VasbhbAbLaTaDaSaf#W.v.hapaE#2.x.9.x.k.x.x.x#R.9#A#w#G#q#W#2#2ao#W#2#7a#aGaGaGa1aGa1aLbgbybLbBau#G#t#c.Y.A.1#d.4#I#M.8#p#9aNbcaK.z#t#Saca4bbbbaDaI.q.q#e.q.2#z.R#e#e.RaaaLbBbjav#S#M#M.8.Q.7.7#x#m#v#.#q#D.2.2.2.C.L.T.4#g#r.K.A.A.S.S.A#.#y#y#B#w#a.6.Z.4.Y.Y.L.Q#m", + ".M.F#a.V.F#A.M.5#c.Y###I#M#b.8#J#T#x.7.Y.M.M.A.M#x#V#w#a.M#j#k.M.S.K#g#h.6.Z.1.4.4.T.M.M#i#q#q#..T.1#A#A#v#d.L.T.F.F.L.7#j#s#S#9#P#m#J#b#D#G#G#Vaaa4bjaGbsaKaGau#1aEag#U.V#2ag#Y.x.x.k.k.x.x.x#A.9#W#W#W#W#Wapaga#a#a#afaGaCapavaYb#bubybFbPbGaj#q#W#G.6.L.L#v.V.M#p#p.8#MaaaRbb.2#4#S#4arbkbtaTaS#m.q#e.q.B#n.R#u#e.P.u#baebhaW#8#S#J#M#F.8.X.X.K#h.6#a#m#P#z.S.C.A.N#d.V#F.K.F.C.Q.4.L#.#N#R#O#i.C#l.Y.7###b.Q#b#M", + ".M.M.M.7#a.V#k#l#x.Q.7#g#D#u#J#T#o.Y.7.4.M.Q.M.7#O#I.5.M#B#t.Q.Z.7.2#r#w.6.L.V.Y.M.M#w#r.H.7#X#g.Z.Z#q#R#H#h.1.1.L.A.4.8.Q#o#9#V#M#J#U#D#B#X#r#VaDa4bua2blaHay#1#W#UbHay#SapaE#Y.x.9.k.b.k.x.9#i#W#q#q#A#WakauaCaEa#a#apauafauauafb#byb2bCbPa8ab#G#2#i#q#H.V#a.M.Y#k#u#M#E#M#9aNaW#4#H#R#EaDbbbzbaaa.G.q.B.j#n.B.q.R.u.q.q.qaebbas#Z#S#S#E#c#w.2#b.Q#a.M#b#Q#J.2.A.A.L.L.C.S.V.Z.A.M.V.V#j#y.Z.6#a.5#l#a.5###p#m.8.Q", + ".V.Q#c#O.7.5#l#g.8.7#y#j#M#z#M#p.7.M.M.M.7#p.8.4#B#B#a#s#o#s#B#w#c.S.7#v#O#R#l.M.L#a#r#l.K#b#l.6.0.Z.Z#H#d.1#.#.#d.1.4#j#s#I#T#T#M#c#w#t#B#w#UaaaZb.bla8bcaIaG#7#q#BbrbPa0aAag.x.k.k.d.k.d.k#G#1#1#U#Wa#apapaCaJaEaoaoaza#akaEaGaub#bubPb2bpa8aE#G#G#i#k#H.Q#a#k#c#c#p#S#M#p#3#3aZ#7#D#D###8aZaZbcaq#M.j.j.f.2.B.R.B.P.u.q.u.BaSaTab#S#M#F#a.5#x#x#c#r#g#u#P#P.8.Z.K.Z.1.F.V#l#h.T.F.F.H#j.1.Z#l#a.V.M.V##.8#p#J#o#j", + "##.8#x#x.7.7#x.S.8###s#o#p#u.8#t.Y#p.M###L#T.8.M#j.V.V#M.X.8#E#G#l.X#g#g#l#O#y.1.F.C.2.X.Y#c##.L.H.T#.#d.L.L.Z#.#d#d.1#y#H###l#s.8###c.Q#c#S#ZaNbcbhaGaCa8aIaL#5#i#ia#aOb##2.9.d.#.#.b.k.d.o#G#1a.a#akapapaGaGaCagaoaua#a#aua1a1aOaBbmbPb4bAay#1#2#i.5#v.Q#a#l#t#D###o#J#u#L#L#3asas#I#O#j#cawaKa8ay#V.f.f.j.q#r.3.U.u.3.q.q.q#Vbkaw#V#S#t#.###I#L#u#J#m#z#u#u#..L.1#d#y#h#h#q#B#q#A.N.A.F#.#h.V.M.M.Y.Q.7.Q#x#D#x#g", + "###b#b.Q#c#c#b##.8#l#w#x#D###c#o.5#s#o#L#L#b.Q.M.M.M.Q#o#O#u.R#r#w.2#J#u#b.7#N#d.1.M.5#n#m.7.S.A.K#h#.#..M.M.F.T.T.1#d#y#O#A#B#v.M#k.5.5#F#Mabbbbbbo#1akaGaSaTab#B#i.9.9.9.x.k.b...#.a.k.k.x#qa##W#XagauapaGaGaua#auaoa#aoaEa1aObmaLb.b0b5buab#G#w#g#t##.8#g#g#t#F###o#u#P#L#T#L#8aR#x#x#k#k#VaTa6aSab.q.f.j.j#Z#Z#C#e.q.z.q.q.qaKbhaj#S#t#.#s#D#I#T#z#g.7.2#b.A.L.1#v#A#i#h#N#d#.#H#v.F.0#q#q#B.7.Y.Y#c##.7#D#D#g##", + "#c.8.8#t#b.7#b#F###G#c#o#t#D#t#o.7#p#I#p#b.M.M.M.M.M#D#F#t.X.X.Q#r#J#z#J.K#d#d.1.L.H.X.2.Q.Z.K.K.X.Y.C.K.Q.4#d.y.y.A#.#H#W#A#v#..M###a#w#X#ZaHbwbba8#i.xafaWa4aD#U#B#A.9.x.k.k.k.....a.k.x#q#2#1#1#W#WakauaOazaEazaoa#aoaOaCaO#1aybjaGbDb2bIaw#U#D#I###D#x#w#t#x#E#M#N#b#L#T#S#T#VaN#3#L#L###Oaqa2biaj#p.j.j.j#Zan#Q#C.R.q.q.j.j.BbbaLa.#t#s#c#k#O#J#M#g#a.C.8.V.T.Z.4#l#a#v#d.1.V#s.4.F.A.Z#A#A.M#..4#.#H#c#l#G#G#q", + "####.8#F#r.8#p#c.5#D#p#c#c#U#t#o#p#x#I.7.8.M.V.7.M.8#3#U#l.Y.Y#p.2#Q#z#J.M.A.O.y#d#j.2.R.K.H.T.C.C.C.M.7###j#..A.F.6.T#a#q#q#H#d#j#v#c#O#D#8b.bpbham#i.k.x#Xa8a4#J#X#A#Y.x.x.x.x.b.b.b.k#i#A#Xa##W#q#W#1aCaOaEaEaoaga#aEaGaJaf#1baa3bjbjbMbMa4#S#D#S#F#F#w#X#w#p#p#I#j#p#I#I#x#V#V#T#M#M#M.Y#cafaWbhaH#V.f.f.f.2aeaa#C#C#e.j.q.f.j#0blam#S#F.7.Y#k#x#x#l.H.L.4#s#l#l.7#o#b.L#A.4#H#v#..T.A.A#H#v.M#y#N#H#D#w#q#G#2#q", + "#y#I.8#D#G#o.8#k#l#O#S#g#x#F#o#p#x#b#j.Q.7.M#p#x#c#M#V#V#B#l#g#o.S#n#m#b.4.O.T.1#d.4.X.2.C.C.A.L.C.A.M#b.M.Z.y.Z.T.F.A#a.M#a#d.L#.#c#x#D#Oa.bwbhbhaf.9.x.#.xaGbbaa#G#q#A.x.x.9.x.x.k.k.x#Y#i#Xaf#U#W#X#1aCaGapaga#a#aEaXaEa#.6aQbAaBbja8bubMbqak#G#G#D#G#w#g#D.8#o#I#o#I#N#B#O#J#M#p#c#D#B#a#H#SaLa2bh#8.j.j.f.qaban#C#C#C.q.q.j.f.qbcaV#8#S.V#a.5.Q.7##.M.V.V#t#o#####D#t.F.5.V.M#v#..y.A.F#a.M.M.4#R#X#B#a.Y#w#q#i", + "#I#M#o#c#o#p.7.5#k#I#o.8#p#M#o#p#j.7.7.7.S#p#x#o#r#J#P#6#U#D#G.8.S#g#J#M.Y#v#N.N#d#..A.A.F.Z.F.1.7.C.M.C.1.A.A.6.1.A.L.H.X.C#a.4.M.X#u#O#UaubtbhaW#W.9.k.b.b#qaVaZ#Z#W#A#Y.9.9.x.9#i#Y#q#W#i#1afafapa#auaCapagagakaPaOao#W#qaJaYbaaBaTbaa8bzbGaQ#G#w#w#2#G#U#r#F#I#j#I#y.4#j#S#U#r.Q.7###j#.#N#jaba2a8aI.q.q.f.s.zanai#C#C.u.j.q.q.j#ZbwaB#7.Y.V#k#k.H.M.Q.V#a#D#M.7.7#l#D.X#j.4.4#R.8.S.Q.C.M.K#p.8#H#G#w.2#r#r#a.6", + "#b#F#I#t#x#b.Y#x#p#I#o#b#L#O#I#o.8.7.7.7#o#p###l#w#c#b#L#F#D#r#c.5#g#E#b#v#N.1#d#H#d.A.y.A.V.T.L.4.M.C.V.V.F#a.T.A.M.S#p.Q.F.V#v.M.4#M#B#SaTbhbhaK#G.9.x.k.k.tabblaI#X#X#W#Y#i.x.N#A#X#W#X#1akauapaCaEaCaIavapaua5aEao#i#2aXavaGbfaTaBbjaKbjbIbh#S#r#G#D#r#D#U#g#w#k.S#c.7#b#m#n.Y#b.S.Q.M#h#O#l#UaFaKbo#n.q.f.f.f#ZaF#C#C#C.B.j.q.B.qbcaW#5#D#D.V.V.T.F.M.Y.M.S#u#M.Q.X.2#b.K.V#..V#x#b.C.A.A.2#b#p#.#G#w###x#J.X.T", + "#b.8#y#I#c.Q.Y.8#p#c#c#F#x#p#I.8.Q.7.7.7#p.8.Q#k#r#b#o#L#D#D#D#l###c#S#c#R#y.M#y#H.Z.F.O.V.V.Z.M#t.L.A.A#h#a#a.A.L.M.8#u.Q.6#k.V.V#.#S#D#Sb.bhbhay#U#i.9#i#A.o#BavbkaE#X#1akag#A#A#Wa#afayatayayapapataJayavaMaJapag#qaoaXafavaGaTb.aBaWaTaWbGbGaw#g#c#E#D#G#O#l#G#l.2#B#t.2#r#b.C.S#b#p.Q#a#g#g.2#9aKa8aL.f.j.f.f.zay#0#P#C#C.j.q.B.qanbpas#Z#S#j###q.6.T#q.Y.4#c#J#g#b.Y#k#w.T#j#s.8.7.L.A.A.K.X.X#r#k#l###j#u.K.H", + ".Q.7.8#I.4.V.7#x#p.8#p#M#U#M.8.7#c#c###O#p#x#k#a#c.7#N#I#O#k#s#j.8#F#M#c#h.M#d#R.1.A.y.1#L.V.H.8.V.Z.L#b#j.V.A.M.Y#k#B#O#o#I#s#l#v#c#U#D#5bhbjbaaf#W#W#7#8#W#B.E#aaWbgaO#X#1atauauauafakakafamapakauayayayaG#1.x.x.9#2aEaLazauaBaGbaaHaHb.aQbBbTbb#O#t#S#O#B#l#q#q#q.V#t#D.5.2#b.S.7#x#M.M.V#F#x.8#LaxaTbw.q.j.j.f.f#raq#0#P#P#z.q.B.u#nbzaWad#U#g.7.M.0.K.Y.2.Q#a#g#O##.M#h#s.7#o.7.8.L#..F.L.A.K.2#u.Q#B#a.4.M.M.Q", + ".Q#b#p.Q#..M#x#F#p#t#F#u#F#F#g###b#g#s#O.8#D.V.5.Y.M.4.7.7.M#j#N#o#p#M#j#j.Z#d#d#h.H.0#T#M.M#a.8.A.A.M#b.1.L.M#k#G#B#R#R#4#I.8#B#H#M#U#DaGbhbhbaa.#1#1a1baau#X#U.D#wauaQau#W#W#X#1#Z#1afafa.#Zakapatapayava2.x.x.x#iakaGaGazayauayaWaHarbgaJbDbubp#S#O#x#U#k###l#q#W.Y.8#j.V.Q.8#b.8#l#g.8#g#D#o.7#b#9aWa8am.f.j.f.f.fae#9#3#Q#z.u.q.u.ubcbbaG#U#F#k#k.H.C.V#b.K#q.5#H.4#v#O#j#t#D.8.V.L.F.Z.Z#a.K#F#g.Y#B.L.A.4#I#o", + ".7.8#t.V.V#c#p#c#o#x#F#F#p#b#k.Q##.5#c.7.7#b#j#j#j.V.M#j.4.M.7#N#I#x#o.V.O.F.1.O.4.1###T#g.Y#k.7.A.S###y#j.M.Q####.8#F#O#R#I.8.V###M#F#SaWbpbha9ak#1ava6bjbAaQamab#B#8bcaG#X#W#W#X#W#X#X#1#X#X#1apapayakaCaQ.p#i#2afauaGaGauazauasaLaTaraYa1bobwbh#V#J#S.V##.Y##.Q.5.7#L#H#O#c.8.8.7#l#g.8#c#w#H#.#c#VaRaWbq.f.f.f.f.f.qaa#0#P#C.U.u.j.uaebkaDa.#F#k##.V.V.7#b.5#l.H#g#v#R#R#j#I.Q.7.4.A.O.D.A#l#g#c#l.Z#d#d.L.4#N#j", + "###o#O#k#o#p.8#x#F#I#u#F#F#c##.7#k##.7.8.7#x#I#H.4.4.Q#..4.M###T#N#o.7.4.A.M#.#c#c.Q#u#u.2.Y.7#t#j.V.A#j#N.M.5.Y.7.Y#F#G#M#D#E#t#M#V#SasblbBbha9apabaDbbb2bPbHbmaGayaqbuaDababa.#1afaf#1#X#X#G#1apapauayaJa1#iapapauauayaGaGauavauaGb.araHbmbjbBbjaj#S#F.7.V#a.V.M#a.V###t#g#b.8.7.7#j#s#D#D.5#..M.Q#IaNaWbhan.f.f.f.f.f#J#9#3#C#C.U.u.u.2bzaHab#F#c.V#a.K#.#F.X.C.F.A#g#R#N#o#I.8.7.M.F.D.F.y#..1.0#a#h.6.Z.M.M.Q#s", + "#I#O#H#S#I#p.8#p#L#M#p#p#t#k.7.7.7.7##.8.7#t###H#s#j.4#d#H.4#k#S#I.8.4#d.M#j#F#m.Q#m#z.2.M#I#L#M#R.4.F.4#v.Y#k#l##.5.Y#w#G#X#w#D#SajajaWbAbubcaSabaeaFaub0b4b2bAbLaLaIblajabafanamavakab#1#1af#1afayayayaGaMapapayauauafaEaGauauavaLaTasasbJblbMbhaW#6#S##.V.F.V.M#k.8.7#D#l##.Q###s.7#o#t##.7.Q.8.7.8#9aWa4bl#J.f.f.f.f.f#Q#9#3#C.U.u.u.Ra6bbab#S#B#a.V.7#H#B.X#l.T.T#q#H#L#L#I#b#s#..F.A.C.A#a.1.H.L.N.T.A.Z.T.V#l", + "#I#N#M#F#S#o#o#x#p#p#M#p#o.7.7.Q.7.8.7#j#j#I#j#y#y#O#j#R#d#H#B#S#R#o.L#.#v#A#D#w.V#b.8.C.L#y#o#I#y.M#a.5#v#a###k.5.Q.S#g#G#G#G#1aLaLbabBbLbua6aSaGaeaKafaHbub4b2bLbLbua3ajaf#5afabafa##1#1afamapauaGayaIaGaGa1#1aeaIaoazbdaGauaoauaGaVaNaraWbobDbLbwaW#8#D#w#..4.V#D#M#p.7#v.V.7##.7#o#I#O#O#s.7#l#D#m#VaWaWbwaI#n.f.f.f.f.j#0#3#C#z.U.j.u#QboaB#8#D.Y.Q#y#y.8#x#G#i.5#q#D#z#T#D#b#p#j.T.M.A.y#..N.C.A.A.V.1.6#q#q#q", + "#F###w#O#4#j.8#p#L#M#u#u.7.7##.7.7.7.7.7.7#o#t.1.V#w#a#j.1#O#B#M#o#..y.O.M#y#y#W#H.8.V.A.A.M.L#N.8.K.H.V.Y#c.Q#h.4.7#m#r#D#SaBa4bhbLbPbAbPbla6ayayaKayaGarbJb4b5b2bLbLbPbmaGauaf#1#1#1afapatayaGaGaGayayaIaSa3#8aFbLbPb4bCaGauaEalazaLaTaraBbAbAbmbjbGbbau#1#O#B#.#h#w#c#j.M.Q.Q#s#I#o#O#O#O#S#h#l#U#J#0bba6a8bkae#Z.B.f.j.f.q#0#P#z#C.j.u.RbbaZab#1#g###j.4#j.8#l.X.X.2.2#u#z#T#m#J#D#r.M.C.L.L.8#o.M.V.Z.L#a#q#i#U", + "#G#q#w#D#W#D#x#p#p#u#p.8.Y##.5##.7#j#y#o.8#p#B.A.A.5.F.A.V#R#F#r#g.C.y.Z#.#a.V#H#H#g.5.C.M.1#d.7.C.Q.Q.V.Y.8.7.7#t#M#V#rabaZaWaPaAaJaLaNbLaMaSanaBa4afaTarb1b2b4b2b2b2bQb0b2bPbCbea1aQaOaOayaGaGaLaLaGaIbabDbobobSb2b2b0bnayaGaOaEararaRasasbjbsbAaQa6bubtaVaj#8#S#B.5#w#h.M.M.M.4#j.4#o#y#R#B#j#y#R#I#T#9btaZbwa8aIae#Z.s.f.f.q#0#z#z.u.j.uaebham#8#F#c.7###H#y#p.S.K.2.2#x#x#J#m#r#k#h.Z.A.L.1###j.M.H#.#v.C#i.T#D", + "#q#q#r#G#S#F#u#x#E#E#F.Y#l#l#w#k#s#R#I#j#T#I##.C.C.Q.V.C.M#t#b.X.V.A.F.1#.#c#s#S#S#g#b.S.C.L#d.4.M.F.Y.M.M.7.8#m#x#F#ZaHaZaOaAapapaVaLaNbCayaSanaeaB#1aTaHbPbPbUb5b0b0bIbQbQbQbLb0bQbCbsa1aGaYa1bjbybPb2b2bQb0b2b2b2b2b2bCauaCaGaEararaRarara7bLbsa1a1a9bnbsbpaBab#5#S###B#D.Y.V.4.L#j#H#N#R#D#j#.#o#O#D#3axbIa4bqax.2aeae.B.f.f.B#P#z#C.u.u#zbkaL#5#V#F#g.7.8.8#T#N.4#h#a.7#a#r#F#u#t#A#A.Z.L.1.X.M.A.A.4#l#l#a#l.Z", + ".V.Y#c.5.V#k#F#E#U#E#D#l#l#G#q#G#O#O#H#I#M#o.7.C.C.M.M.F.M#k#b.K.C.K.C#.#.#o#O#6#W#c.S.1.M.V.1#d.A.V.V.V.Q.5#E#r#JaaaWaLaAagaga#auaYaVbbbjaLaQamaka.#WaVbgbwbPbUbUb2bQbLbIbIbMbVb0b0b0bLbLbQbPb2b1b2bUbVb0b2b4b2bPbLb0b0bP#WapaGaEazacaNaNaraVbJbrbea5a9a5bebnbLblaWad#S#F#D#S#D###B#R#R#R#S#n#r.V.Q#g#F#O#9aZbGbIaq#J.j.2ae#r.j.j#Q#z#z#z.q.uaKbcau#8#M#x.8.Y.M#H#O#j#..H.M#a.Y.8.2#g#h#a.F.4.8#r.5.6.L.M.V#l#a#v#.", + ".L.7.5#a.0.7#x#U#F#I.Y.7.V#l#w#k###B#O#u.8##.8.S.M.M.M.V.V.V.V.C.Q.4.Q.M.M.Q#j#y#H#S#j#j#H#v#d#d#l.4#a#a.X.7#x#8aNaWa1ahaga#a#auaYa8aKbha1a2ayaba##W#1bhbtbhbwbLbUb2b4b2b2b0bPb2b2b2b2b2b2bVbMbVbQb2b7b5b4b4b2bQbGbpbzbMbr#XafaCaAaracaraNarazbJbrbnbea9a1a1bdbebmbGbta8avad#6#S#O#R#4#R#j#F#B#r#r.2#l#B#O#O#9aZbtba.B#r.f.j#J#n.sae#z#z#z.R.B#0bcaDae#8#x.7.X.7.7#b#L.Y.C.V.M.M#c#r#J#D#v#k#s#h.K#g#B.6.6#.#s#g.V.Q", + ".Z.V.K#a.Q#c#c.5#l.7.7.7.M.8#c#r#D#D#I#t.7#t#b#b.Q.M.M.M.V.H.X.K.H.1.A.F.L.4#.#H#R#U#y#y#j#s#N#N#v.M.H#a#k#JaqaWa8bGaPa#a#aoaGaWaWa8aZbwa9a6ayauaf#W#iauaWbta4a8a4a4blb0b2b2bXbobCbLb0b2b3b2b2b2b4b4b8b4b2b2bQbQbwbbbbbMbF#X#1aJaEaoacaraNarasa9brbra1a1b.b.a3a3bea9bmbLbGa4asad#S#R#R#S#q#G#G.Y.2.H.Q#j#O#O#TaqaZbb#Z.2.q.f.j.2.jae#Q#z#z#z.u#zbbbbas#8#T.7.7.8.S#b#p.M.K.H.M.Q#b#J#m#l#A.5.X.M##.8#b.6.F.L#I.0.K.2", + "#a.K.L.Q#m#G#l#a.V###c.7.Q#o#D#D#B#M#S#g#o#o.8#b.Q.M.L.Z#h#a.5.H.0.F.F.T.A.4.L.Z.Z.L#H#k.7.7.Q.7.7.M#k#T#9aNaWbubraua#a#aEa3a2a4bjbwbtbMa3a9ayayau#7#i#iaublbhaKaHaqadaHbfbobQbLbmbjbmblblbjbwbLbMbBbAbPb0bBaGaqbbadaDbIb2#X#1aJauaXacaraNarasaVbsbma1b.bfa3b.a1a1a1a1a5bmbCbGbbaHad#6#B#g#r#G#l.Q.H.Q.8#p#I#T#8aqaRaS.q.s.f.f.q.z.j#Q#z#z#z#z#zaqbwaHae#V#M#o#b#x#g.Q.L.L.A.C##.2#u.2#s#..V.C.4#j.2#g.F.A.5#S#a.Q.Y", + ".V.T#a###r#w#w#a#q#O#c.7#o#x#D###F#L#F#c.8#o.8#c.Y.M.A.T#q#i.F.C.5.T#i#q.T.M.A.H.A#h#k#G#l.8#b.8#c###MaDaZbabLaUa#a#a#alb.bdbabLbtbIbIb0a9aMayayauaf#1#q#qaJa3baaKaNaBaBblaWaHa4aSaWaWa8aZaWaWa4aRbhbbaH#8asaKaZbwaZaxbGbS#ia#aCauaGararararaDaFbobCa1a3b.a9b.b.a1b.aVaQa5aYa1bgbubwbhaKaqae#k.V.V.Q.Q.7#b#M#F#M#8aNaKaS.2.f.f.f.f.f.2#z#z#z#z#z#zbcbhasab#V#T#O#c.2.M.M.L.A.0.S.2#u#H.1.A.H.A.M#.#F.0.6.V#g#S.Y.V.0", + ".M.L#H#U#G.X#a#a#l#O#s.8#F#F###D#E#M.8.8.8.8.S.Y.Y#a.A.H#G#i.D.A#a.6.T#i#h.L.M#s#.#l###l#G.7.8#o#F#S#8a4bBbCaAa#a##2a#a#aOa2b.bMb2b4b2b0beayauayakakak#1#i#2baaZa4aNaKbabkbGaLaqasaiaqaxaqaKaKaKaxaNad#8#8aqbhaZaqaiaibGa1#X#1aGazaGaracaNasaFaFbobHbFbdbda1a5b#a3a5a1bea5aOaOaOaOa9bobDbLa4#S#h.Y#g.2.S.7#p#J#S#U#UamaTbc.B.f.f.j.f.j#Q#z#z#z#z#zaqbIaRaqab#8#V.7.7.M.L.1.A.0.Q.S#m#R#d#d.A.4.Y#n#r.5#r#D#D#U.Y.Q#q", + ".M.M#o#U#n.2#i.T#l.8#j.Y#x#c#w#U#U#t.8#l#D.Q.5#a.X.M.y.T#i#q.6.M.T.T.T.O.1.L.L.M#s.Y###B#k#O#O#M#8#8asb.aE#Ya#a#a#a#a#a#aOaYaObLb4b2b0bPbdakamaCavafakaf#2#Gaha8a4a4aHaDaqaNaRaqaiaiaiaqaqaKaKaKasaiaiaaaaaa#9aKaqaqaKa8aE#q#WaGazasaTaraRaHaHaBbcbQbUbPbCb.a1a3b.b.b.a1a5aOaJaAalagaAaEa3bLab#k#k.V.C.K#a#H#I#M#S#S#7#5aIaI.q.f.f.f.f#J#z#z#z#z#Q#zbhbbaFasad#P.8.7.Q.A.A.H.A.M#d#N#N#R#R.T.Y#E.2.S#x#V#G#w#F#w#w#q", + ".7.Q.S.S#F.H.C.C#r.Y#k###k#D#G#M#x#c#b#x###a#a#k.V.F.D#i#i#i.H.T.A.O.y#..1.A.V#O#H###b#c#g#t#S#8ajaLaJ#2aha#agakaua##2a#aua0aOb.b8b4b0bJbda3ayayamakamamap#2#2#1a#aNbhaWaDaiaiaiasaiai#VaiaNaDaKaNasaq#8#6#VaaaqaqaKbm#2#G#q#WaJazazaT#9aNasasauaWbQb5bSb2bPbmb.b.bebea5a0aEakalalalalagaQbubh#U#F#g.C.K#v#N#s#S#T#VajabajaIaq.u.j.f.f.q#z#z#z#z#z#Q#0bIaZaNaq#9#u.4##.M.F.X.M.V#d#N#j#N#R#H#D.5#D#j###T#D#G###w#w#v", + ".8.Q.Y#x#F.7.K.M.4.7#j.7#l#U#x#F#t#k#x#c.Q.Y#g##.A.A.F.D.5#c.V.6#A#A#Y#R.O.4###v#x.2#J#x#D#SasaLa8b.aga5a##2agaEaPa#a#a#a#aOaOaLbXb8b0bfbraCafayayafatapaCap#X#W.d.TaqbfbjaBasaqaiai#0#J#VaFaNaFaHax#9#V#V#8aaaqaWaE#i.9agaJapaJazaLaRacaNarazauaTbEb5b4b4b5b2bDbdbebebdbnaAalalahaAagaEb.blbQaB#F#g#t.M#A.T#.#x#M#L#6aqajayaS#C.U.u.j.f#z#z#z#z#z#0#0axbzaZaNaq#L#o#B.M.H.V.7.Q.A.A.4#j#s#I#l.M#O#o#p#L#F.Y.4#a.4#v", + "#o#x.5#E#M#F#b.Z#h#j#I.M.X#F#F#U.Y#l#t#j##.Q#b#c#q.6.D.F#S#w.0#i#A#A#A#A#H#y.7#h#l#k#B#S#8aQbjbhbjb.aPaEa#alaJbraEap#2a##2aEaOaGbAb2b2bCaJajauatatafakataCaCaf#1.T#GaLbablaDaDaqaxai#V#M#gaqaNaNaDaq#E#J#TaqaKa1#2.d.xaga9aOayaEaGaHaNacaRarasaraYbPb4b5b4b2bHbPbnbvbObvaAaAagahaAaPaOaYaWaTb2bb#8#S#T#R#q#i.V###S#p#M#8amaBaI#9#f#f.R.f.R#z#z#z#z#zan#PaZbRbIaZ#9#M#y.4#a.V.7#a.A.A.4.8.8.8.Y.Y#B#O#O#I#o.M.M.8.Q.7", + "#b#b#c#x#M#I.2.K#..8#p.Y.8#M#M.8#k#D#c#k.V#c.8.2.6.y.L#l#a#q#l#A#R#A#Y.L#v#R#s.M#k#B#UaGbobhbhbla1aka#a#aoaua1bmbiaOa#ala#a#aEaLaWb7bAbAapafafavafanamamaCaCap#7#BaJbhbBbaaDaDaqaq#8#V#k.x#Saqaqaq#8#S#8aWbbap.x.##iaPaQaGayazaEaEarasarbparazasaVbHb2b2bUbPbCbFbrbea5aPaAagaEaEaOaVaLaBadadbjbuaR#6#R#R#W.Z#.#y#t#t#t#SabaBaSae.u#f#z.f.B#z#z#z#P#J#Qae#QbbbGaZaq#T#M.M.V.5.Y.V.A.A#s#R#..M.Y.Y.5##.8#x.8#.##.8.C.M", + "#l#L#p#x#b#x#c.M.M.8.8.Y#c#b#m.7#o#o#c#s##.8#b#g#A.V.Z#H#.#l#H#H.9#Y#i.O#.#H.L.F.5#1b.bGblbjbPaUa#a##2aha#a#aObabfbdaual#2agaAaOaTb0bPa1a1afabamamabamamayaCamag#Wb.bIbBa8aIaDaDaeaqad#x#k#Zaiasad#M#8aLa..n.d#iaEaEaGaQaGauazararazazasbgaVaHaHaLbPbCbObSbSbFbnaUaJaUa0aJaEaJaQaGasajadaracaHbXaRar#R#F.X.F.1.4#o#c#s#S#8asaWaI.u#e#f.B#J#z#z#z#P#P#z#u#0#0btbbaN#9#T#D.V.V.7#j.4.8#p#p.L.F.M#j#y#s#b.8.8#s#B#o.L.M", + "#g#M#F.8#I#t.8.M.Q.8.7.Q.8#M.7.8#M#g#j#y#c.7.Q.A.6.Z.L#N#y#H#s#A.y.0.O.A.M.Z.Z.Z#hb.bGbBbfa1blapalaga##2a#a#auaObfbdb#apahaha#aOaLbDb4bdaua3abamamafamavayataka.#ibjbIbBaTaDaDaI#5aeaZ#8asaqasaq#8#5abaC.d.b#WaEa#auaGaEaAaAararadazazasaHaraJb#a7bPb1bPbKbraUaPaAaPa0a0aOaJaBadadajajadarararbTa4aR#O#l.Y.X.K.2.S.7#B#l#OajaRa4.B.u.U#z#J#Q#z#z#3#3#0.3#T#QaibtaZaq#U#F.Q.M.7#p#T#T#L#p.L.L.V#B#O#I#x#c.8#b#b#c.M.M", + "#O#M#o.Q#j#o#t.7###k#s.7#c#m#o#o#b#j#N#I.7.7.M.L.1#v.1#j#j.8.M.A.N.K.A.C.M.V#v#h#Ba8bLbraOaBa8bpa1aEaUaPaoa#a#aubfbfbdaUaAalagaEaGbmb4bUaYayaOabamamamanayaCau#7#WbwbIbDaIaIaIaw#Saaaqbbbba4bb#8#J#8abboba#i#Xa#auauauakaoaAazadararazarazazaVaVbub2bSbraUaPaAaAaUa5aXaBaj#6#6#6#6adacararararbgbu#8#B#q.5.Q.X.5.H#t#D#c#O#8aDa8#m.u.U#z#Jai#z#z#C#3#9#z.P#u#0a4aZaw#S#D#x.Q###F#M#T#F#v.M.Z#q#g#o#g#c#D#F.7.7#g.Y.M", + "#y#p##.7#I#I#L####.5#g#c.8#b#b#I#j#y#I#j.7.4#d.1#..1.L.7#I.V.K.H.y.y.N.C.Q#D.5#F#Ua9bCbra1a3bubAbCbeb#aPaAalaoa#aEa1bibdaUagaAauaPa3b2b4b4bdavayamabamayatayam#YaubwbMbDaQaKaK#Z#M#V#V#8aqaLab#U#raaaqbhbG#Ga#afaGauaoaEaEaEaEacararararaNazaVbgbsa9aOaEaPaPaAaPaGaBada.ad#6#6#4#6#6ajararararaVbAaB#B#q#g.X.Y.H.Z#h#D#k#H#Sasa8#V.U.U.U#zae#Q#C#C#Q#9#z.q.q#PaFbcaq#T#D#B.7#c#D#E#T#w#A#q#i#i#w#g#c#c#U#U#G.V#k.V.V", + "#c#j#j#I#I#4#T#I#a###g#x.8#N#N#I#N#N#O#B#v.V.6#.#h.L###t#y#a.M.M.y.y.A###t#x#D#G#Zbebvbya1b.bsbmbAbCbNa5aPaAalaAaGbcbibjbeaEaoaPaUaGbsb2bUb2aQavam#Zakamayavav#RaPbtbPboaSaTaKam#V#V#V#8#6#Z#5#Z#5aeaNbbbt#X.Da.afazaEauaEaEazararacacaRa7a7a7aJaOaPaAaPaPaPaPaB#6#4#4#4#6#4#6#6acajadajararadarbfbo#S.Y#r.Q.5.M#d#v#B#H#c#Oaba4aq#f.U.U#z#n#0#P#Q#z#0aa.R.q.Baqbwaq#8#S#x.7.7#l#G#D.L#i#G#i.F#c#G#E#b#t#F#F.M##.Z.Y", + "#O#I.7.8#I#p#L#p.M#h#E#x#H#I#I#4#N#N#H#B#v#A#q#i.Z.Q#o#t.M.A.A.N.A.A.Z###U#W#B#XafbeaPbna3bfbAbCbdbCbJbFaPaEaAagaoa1bibibrb#apaEaUaOaSbQb0bPbLauakakapatavayau#Wa0bhbQbfaSa2a4aIayasabasajajabaeaDa4bhbpbzaG#ia#akaGazazaEaGaJararaNbpbya7aOaJaEaAahahaAaPaLarac#4#4#4ac#4ac#6#6adadadarazadacadbgbOau#g.Y#a.4#.#A#v###x#F#B#7aKaI.U#f.U#z.B#0#Q#C#z#Z#0#z.B.q.Rbka4aD#8.8.Y#l#w#a.V.M#q#i.L.M###D#F#L#M#x#c.Q.Q.C.C", + "#p.8#s#x#c#p#L#o.4#h#M#t#j.7#o#j#y#I#y#O#A#R#a.0.F.8#p.7.A.A.C.A.O.T#l#l#W#W#U#UaCbnaAbvbdb.bjb2bCbCbPbPbPbnaOaEaAaEbfbdbibia5aAaUa5a1b0bLb0bLbCafafamapayaEaG#Wb#aZb2a8aWa4bBbzbhbha2aTbhbjbhbbaZaKaZaRbzba#1akauaGaGaEaGaObrbubJbJa5aJaEaoagaAaAagaGaVaHacacac#4#6#6#4acacacadac#6aradarad#6acaTbubo#S#k#q#h#O#k.A.M#g.5###SaNa6.U#f.U.U.2#Q#z#C#z#Q#0#0.R.U.BaibwaDad#F#q#w#k#a.V.Y#q#a.V.6#..M.8#u#L#o.7.M.M.C.V", + "#t#v#j#x#c#I#c.8#..7###s#j#c.7.7#o#j#R#B#A#H.T.Y#.#t#b.L.A.A.A.O.T.T#W#l#Ba#aGbdbPbZbraAa1b.bjbPbnbybCbPbPbCbOaUaEaAa0bfbfbibnaUaPaYb.bQb0bDbQbPbj#7a.ayavavao#2b#bbbQaZaKaWbGbwbjaVa8a4aRaRaNaZaZbtaRaxbwblaJapapaGa3aYbrbCb4b2bCaEaoakagaoaoaAapaQaLaracacacacarac#4#6#6ac#6#6#4adadadadad#6#4arb.bMav#U#w.V####.Z.H#g#l#l#OaHbt#C.U#f.3#z#Q#z#C#C#z#z#0#z.3.u#zbkaW#8#5#q#l#w.Y.V.M.V#h#q#i#h#h#o#u#P#c.S.M.M.M.7", + "#.#H#D#M#I#O#j###H.7.8.7#o#j##.8#F#D#v#w#l#v.T.M.V.7#j.C.Z.F.F.T.1#R#q#hafb.bmbybCbraP#2aObdbdbPa1bibAbAbJbebmbPbraJaEa1bfbmbrbea5aUbmbAbAbLbSb2bQbAazabamabaA#2a7bubQaRaKaWaWbtbwaYaEaVbhbtbzbGbtaZaqaqbkbtbgapauaEbaa3bCb2bPbra0aUaJaOavauapaJaLasaBa7aracaraNarac#6#6ad#6ac#4#6#6arasajac#4#4#6aHbpbl#S#G#a#a.M#..Y.2.2#F#gajbt#0.U.U.u#z.R#J#C#z#Q#z#Q#P.U.3.3aibkaj#8#D.M##.7.Q.1.L#k#w#i.F.T.V.Q.Q#b#c.V.V#g#o", + ".5#B#w#t.7.7#y.7#O#O###c#o.7#b#x.Y###.#h#l.A.T.V###s#j.M.C.F.6.F#.#.#D#UaVbLaEagaoaEaEaga0b.bdbrbCbdbDbybybCbybebJbPbgaEa0bfbfbfbea5bdbdb.bPbJbTbCbPbPb#ajaGaoalaTbMbQbbaKaKaKaKaWbbbwbIbIbGbhaZaDaDaxaibbbtbuaJakaGbdbmbCb4bSa5a1brbeaIaIaIa3braYaHaVaVaHarasaradarad#6ac#4#4#4acadadasarad#6#4#4#6aWbMay#w#G.Z.4.4.M.Q.2#x#B#8bbax.U.U.U#z#C#Q.U.U#z#z#Q#0.3.U.U#PbbaN#8#Z.M.7#x##.M.C.X#w#i.F#a.V.L.M#b#b#k#w#w#G", + ".0.Y.V.7.M.M.4.Y#c#H#k#t.8.Y#c.7.5#a.Z.F#A.1.6#a#k#j.M.Q.V.H.H.H.5#l#Ua.bjbm#2a##YaEaEaPa1b.a3a1bda1a5bCbCbCbCbObrbmbCbPbnbebjbjbrbnbdb.a3bmbTbmbrbPb4bPbJb#alaAa7bMbGbkaRaRaKaq#8aeaDaKaHaKaFaFaDaxaiaibtbtboa3#7aEblbsbCb2bUaUbebPbsa8aMa6bDbDbAbjbgbgaNaLasar#6acad#4#4#6acar#6acarasajas#6#4#4#6arbhbw#U#h#k.V.M.M.M.Y#w#H#UaWaZ.U#f.U#z#C#Q#z#z.U.U#z#0#P.3.U#CaZbbajad####.8.8.M#a#G#G.5.M.M.4.L.A.S#r#E#r#b#D", + "#a#q.M.M.M.M.V#w#q#W#q#s.8####.Q#a.Y.A.T#A.6#a#l#k.M.Y.Q.Q.M.M.V#k#S#7aubAaXa#a##2agaEaPa1bdb.a3a3a9b.a3bsbLbra0bFbPbyb#bCbCbebgbrbibda1a3b.bLbubjbCbPbCbCb7aEbna4bMbhbtaZaKaLaq#V#E#J#Z#8#Z#V#8#9aiaiaxaZbtbtaB#qaXbDbEbQb4b2a5bdbmbsbkbcbib4b2b2b0buaTaTaHararaHarac#6acadasadac#6aBaBadad#6#6#4#6aca4bMaW#F#D#s.Y.Q.Q.V#B#v#Sasbt#C#f.U#C#z#Q#z#f.U.U#z#0#0#z.R#zaxbtaeab#O#k#t#u.8#a#a.Y.Q.S.C.M.M.M#x#Z#E#u.Q.2", + "#w#q#..V.Y.M.8.5#h#v#H##.7.Q.Q.M.M.1#v.6#h#B#a#k.7.M.Q.Q.H.S.8###Da.a#aGbOaAa##2a##2#2a#aEaOaOa0a1aXaOaOaOaAaUbebmbSbObCbCbyaXa1bdbdbeb.a3b.bgbgbdbnbmbCbSb2brb2bIb0bGbIbzbjaSaIaa#Z#E#E#E#J#J#VaaaxaRa4btbIbBbaaCb#bQbQb4b4b4bebebfbibcbcbib2b2bUbSbrbyaVadarasasacaradadadac#6acadadadad#6ad#6#4adadaLbtbIaa#S#O#s.8#j.4#H#h#Savbw#0#f#f#f#z#Q#Q.U#f.U.U#P#P#Q.u.UaibkaW#8#U#k#c#p#x#k.5.Y.8.Q.L.C.Y.Y.2#l#x.8.M##", + "#w#a#a.V.M.M#k#q#G#R.4.7##.Y.Q.M.V.8.Y.X.F#h.4#t.M.Y.V.M.T#B#E#O#Ba#a.b.bnal#2a#a##2#2#2a#a#a#a#a#a#a#a#a#a#akaOaEbvbnbnbybraXaXaXa5bdbdb.baaVb.b.bdbdbebrbCb4bCb2b2b0bMbIbQbPbwa8aDawaqaeaeaDbbbqbPbQbVbMb0b3b2bDbUb5bQbQb2b2bFbibca6bobeaPa0bebnbNbFbeaEa0beazasazadacac#6#6ac#6#6#6arararaHac#6aHasaHbjbVbhaN#x#s.8.Y#l.6#G#BaGbkax#P#f#C#z#Q#Q#Q#C.U.U.U#P#P#J#Q#0aNbkaja.#w#o.8#I#D#g.X.S.8.M.0#q#w#l.2.2#b.Q.8", + ".Y.Q.M.M.4.V#q#G#A.4.4.4##.5.X.Q.H.T.M.H.V#a##.7.Z.X.Y.1.1#v.V.V#S#5ambuaOa#a#a#a#a#a#a#a#a#a#a#a#a#a#a#aoasauauauaoapaOaYaYaYaXaYbda9b.b.a8a3b.bfbdbea5aOaUbPbPb2b8b2bGbMbMbMbGbMbLbwbjbhbDb0b2b2b4b0b2b8b8b5b5b3bzaUbeaUbebQbWbea6bDbeahahahahaPbeaPahaAahaAaPaoa.aoaEaPbgbma7aHadaraTbjaWaTaHaradaTasaWbtbVaF#S#O.8.M.Z.F#k#Uama8a6ax.U.U#z#Q#Q#Q#C.U#C.U#C#z#z#Pai#9bkas#7#x#t#F#c#x#b#b#c.7#M.M#G#w.5#c#c.Q.M#s", + ".M.Q.Q.Q.2.M.V#g#x.7##.5.Q.F.H.K.C.F#h.T.H.V#B#v.L.V.Q.C.7#j#H.7#V#ZaLbLapa#alaha#a##2a##2ala#a#aoaoaga#a.a#aga#agapaOaXaYaXaOa3a3b.b.a3a1b.b.a2a2a1bdbmbjaVbubQbQb8b9b8b2b3b0bYb0b2b2b3b2b3b5b8b5b5b5b8b8b5b8b3bDaJaUa5bvbsbQbSbrbdbnbraPaAahaAahahahahaoafaoalalalalalagalaAaPa1b.aLb.bGbJbJbpaWaRasadaBaRbVbbas#V#E.Y.C.A#a#D#7aKa8aI.u.U#z#z#0#Q#P#f.U#f.U.3#z#z#0#9aKa4#S#S#x#c.8#F#b.X#t#o.7.Q.A.F.Z#h.7.M.Y#h", + ".V.7.M#v#k#a#a#p#b#F#S#S#x.K.C.C.H.A.6#i.H#k#s#j.4.Q.2.Q.4#N#N#c#Zaja8bBakagagalaha#agahalaAahalaga#a#aka#a#a#a#aEa0aYaOaXaXa3b.b.a3a2aSa7a2b.b.aVa2bAbJbmbub2b0bMb3b8b5b8b5b8b8b8b3b8b8b8b8b8b8b4b8b9b5bDa9aE#X.v.vbeb3b2b5bUbUbsbib#a5a0aPaPaPaPaAaAaPahaAaEalalalalagaPahahahaAaAaObdbmbrbLbLbubtbLaHadaBbtbGaRax#V.5#..M#l#U#DaDaKaI.U#f.U#z#0#Q#Q#C#f#f.U.3#z#z#C#9axbw#8#Z#D.V.Q#E#n.X###c###r#r.K.L.A.V.Q.Q.V", + ".M.M.M#j#d#a#k#I#x#J#7#r#m#b.C.C#r.C.F.0.H.V#I#N.L.V.V.4#j#R#M#g#Ba.blbuapaEaEalala#agalagahaAalaoa.a.a#a#a#aoaUa1a2aOaOaYb.bdbia6a1a3b.a2b.bja8bjbDb2bQb0bLb0b0bMb0b3b8b3b8b3b8b8b8b8b8b8b8b8b8b4bCa1ap#1#X.h.xakbcb5bQb5b5b2bPa3aybrbeaPaPaPaPaPaPaPbeaPaAahagalalalaoaoalahaAahalagaPaUa0aOa5bmbpbwbPaWaLb.bVa4aNaa#S#M#x#D#D#SabaKaI#e#C#f#z#Q#Q#Q#C#f#f#f.U#e#z#z.U#0bIaj#J#m.K.V#g#E.X.H#w#r#g#g#v#..A#a.7.8#g", + ".M.Q.Q.V#..7#g#B#F#E#M#E.Q.Q.K.C.S.M.T#q#a#h#R#y.y.0.Y#j#N#O#J#x#O#SaWbwaOaPaPaOaJaEaPauaEaAapauajaoajaoa#aua1a3b#a2a3b.bfbfbfbab.b.bfbabababfbBb2b4bDbsbobcbMb2b0bQb8b8b8b8b4bUbPbPb2b2b2bHbraEak#X#1#i.vagaJa6a6a3bMb5b5b5b2bQbia6bfbHbFbeaPaPaEaEaPaPaPaPaPaEaPaPalalaoalahaAalagapagalaAaPaEaQaIbobJbXbAb.bBbta4aH#8#V#V#T#U#6asa4a4.U#C.U#z#Q#0#Q#Q#C.U#f.U#P#P#z#Q.2bkaF#M#b.X.Q.S.Q.K.7#a.8.8#g#t#O#a.0.S.7#c", + ".Q.S.S.Q#t#x#g#F#x#F#E#r.M.X.X.C.4#l.T.F.T#.#W.O.Z.H##.8#4#O#m#J#V#5aLbabAaEaPaOaOaOaXaOaOa3aYa7aSaQaXaQa1bab.baa3b.babcbabfbfbca6bibfbfbmbLbLbUb4bPbvbobobEb2bBbsb0b8b8b3aEbrbeaUapag#G#G.p.D#q#XaCa1a5a9aQa3bcbfb.blbYb5b5b5b4bQbsbEbsbDb2b4b2bPbma0aOaPaEaPaEa1bCa0aEadaoalagagagagagagahahaAaCaJaLaVbrbybCbCbqbMbBbaaTaBae#8#8asaWa8.U#f#f#z#Qaa#Q#Q#z.U#f#f#z#P#z#J#rbcaZ#U#h###o#b#b.Q#t.Q.Y#m#E#r#G#a.M.Y.S.M", + ".2#m#b#p#u#p#p#o#t#E#X#v.H.C.A.Q#y#s#a.T.T.L#i.T.O.L.7#j#I###c#M#0anaWb.bDbcaJaPaJaOa0aOaOaQaYaYaWa2a3babdbfbdbjb.bababab.a3bcbcbqbHbHb1b4bQbPb2b4bUbPbUbUbBbkbqbob2b3b8b0bBbLbBbwbwaCapaJaSa6a1a1a0a1a1a1a9a9aObdbsbwbMb8b3b2b2bUbqbUbDbsbsbDbPb2b4b2bSbCbrb#aOaEaOb#aXa7aVaLaEaoaAaEaAagagahahaAagaEaEaEaLb#bCbCa9bBbVbVbwaZaKaDa4bhbo#C#f#C#z#z#0#Q#Q#z#e#f.U#z#0#P#V#Jata4ab#k#g#l#a#b#b.X.M###G#b#x#D#w#t#D.5#a", + ".2#m#u#u#t#E#p.8#p#F#O#v.Q.C.M.8#O#b#a.F.F.L.T.6.T.M.7.8#c#c#m#z#PaNa4babPbiaYaOaOaOaOa5a1aYa3b.a6a3bfbabfbmbmb.b.babab.a3babfbDbUb5b6b4bPb2b2bSbSb5b2bDbqbvbobcbMbQb3b3b0bwbwbwbwboa3a1a1a3a3a1a1a0a1aJauak#1a.brbsbAbLb5b3b3b4bHbobDbQbsbqbsbsbsbDbQb2b2b1b1bPbJb#aPaXa7a2bgbgb.a1a5bmaUapaoaAaPaAaAahaEauauaXbvaEapaJbfbVb0btaZbhbjbs#C#f.U.U#z#0#0#Q#Q.R.U#Q.R#z#0#Q#Zanbbaw#k#l#q#l.2#m#i.6#l#Z#x#b#I#F#E#E#c.V", + ".7#b#u#p#g#x#t#p#p#c.Y.7.K.C.Q.Q.8.8.6.F.y.M.O.F.0.5#t#x#k#g#u#u#PaNaZbMbCaPaOaUaOaUa5bea0aYb#aYbob.bobabfbgbgb.bab.b.a6bfbsbSb4bUb5b2bPb2b4b4b5b2bPbDbvbobobia6blbQb0b2b3bBbwbzbqbda9a1a1a1a3aQaEa##G#Ga.#1afaka1bAbDbBb3b8b5b2bQbxbobUbqbqbsbqbsbsbsbsbPbXb2b2b2b1bPbob.b.bfbabab.b.bmbrbmb#aEaPbvaPahahaAara#aGazaga#agaua0bLbGbha8bh#C#f.U#z#z#0#0#Q#Q#z.U#z.R#J#0#Q#ZanbbaK#U#G#q#q#x#L#B#A.Y#L#x#M#u#x#x#F.Q##", + ".8#p#M#b#x#p#I#p#o.Q.Q.C.Q.4.Z.0###l#q.T.A.7.A.C.H#l#g#v#l#k#x#VaxbbbMbnaUagaAaEaEaPb#b#b#aYb.b.bCbcbDbeb.bgbgb.a3bdbmbHb2b1bSbOb4bSbFbPb4b5bUbPbHbHbCbsbaaVaWaLa4bhbQbYb3bMbtblbda9aQaEakag#U#i#i#W#1abababatayaSbHbMb2b5b5b3b0b2bDbqbQbQbobqbsbqbsbBbQbDbLbPbLbLbUbUboa2bobAbjb.b.bdbdbaa3a9beaAaPbeaPahaAah#7adaba#a#a#a#alaEbAbGbhbh#P#f.U.R.U#Q#0#Q#Q#Q#e#z#Q#r#z#Q.2#0bcaK#5#q#G#q#D#T#M#w#..8#L#L#u#p#F.7.Y.V", + "#o#L#p#b#p#u#x#M.8.7.Q.C.4.L.T#h#x.V#i.O.L#o.F.V.0.V.7#j#H#x#MaibtbYa8agaAagapalaAaObdbmbibfbgbAbAbqbAbda9a7a7bjbybFbSbPbFbObSb4b2bFbFb4b2b4bSbCbPbFbCboa8aTaIaDaDa4bLbMb0boblaWa2bmae#W#W#G#1abaqaqamaeawaDaIaIbob2b4b8b5b2b2bQbLbQbQbqbzaZaZaKa4bobDbDbobDbLbXbAbub2b2bQbabobQbja7a1a3bdb.b.b.a3aEaPbnbnaPaAahah#8#8a#a#a#ahaha0bJbuaZ#z#f.U#z.U#z#0#0#Q#Q#z#Q#Q#z.U#C.UaabkaF#5#G#G#q#B#T#T#D.6#j#L#V#T#T#I.7.M.Q", + "#M#I#u#o#o#p#I#I.7.7.S.Q.7.A.A.4.Q.Z.T.F.A#o.6#q#w#g#o#s#t#D#Saabhb0aCaAapaAaPaJa9bfbfbjbfbfbmbLbdbAbobibda1bAbObSbFbFbFbObSb4b4bFbCbObSbSb9bSbvbsbFa6aIaIaSaIaDaqaKblbIb3bMbBbwaSaKayasasasaIaLaSaLaQaVaSa6a6bfbCb5b4b4bPbBbLb0bQb2bQbqbbbbaiaiaxaxaKaZbcbibDb0bPbJbQbQb0bQbhblbPbAaYa1b#b.b#a9bmbma1aXaPbNbnaPalala#a.a#a#alahahbebNbu#Q#f.U.U#z#z#0#0#Q#Q#0#z#z#z.U#C.U#JbkaK#5#G#l#h#O#6#T#h.V#j#T#V#V#L#N#g##.M", + "#T#I#F#F#p#x#F#k#c.7#j#o.M.A.L.S#a#a.6.F##.Y.T.V#a#k#I#t#x#g#D#1aQbDa0aAaJa9a9a6bjbjbfbfbfbmbPbdbdbPbPbPbFbCbFbFbKbFbObObSb4b2bFbCbybUbOb4b5bUbCaMbvae#0aiaFaSaIayanbbbLbMb0b0bBaKaKaqaqanaqaLaWa2aSaQa2a2a3blbAb4b8b4b0bQb2b0bsbobob2bDa4#Jaaaiaiaiai#9aiaFbbb2b2bUblbQbQb0bGbAaYblbAa3a1b.bdb#a1bmbLbPbgb#bCbCb#aPalalagagalahaAaPbybP#9#f#f.U.U#f#0#0#Q#Q#0#0#Q#Q.U#z#e.Rbca4#8#g#w#w#O#O#S#k.Q.7#L#T#L#T#T#r#a.M", + "#t#t#u#E#F#F#t#c.7.Q###s.T.6.1#.#h#q.H.A#x#i#i#q.Y#p#L#c#D#B#k#SaVbFbna5bebebfbjbjbfbfbabfbPbmbCb2b4b4bUbFbObObObObFbKbSb4b4bHbFbCbPbLbSb8b4bSbCataI#0#P#P#9aSaSaManaIbGbIbLb0bVbIbBbhbkbkbcblbsbqbsbsbAbDb2b4b4b4bCbDbBbwbobcbsbobobLb2aS#Q.q#z#P#P#P.R#Paiaqa6b2b2b2bLbQb0bQbLbAbubdbCb.a7bgbebda3b.bobXbJbubybAbeaUaAahahagalaPaXb#bPbbai#C#f.U.U#z#0#0#Q#Q#0#z#P#C#Q#z.3aDbbav#B#G#G###x#Z#F.8.8#I#L#L#I#T#E.5.L", + "#T#x#p#F#x#t#b.8.7###E.V#i#i.A.L.M.M.A.H#F.A#q#q.Y#M#u#g#D#D#SabbabSbrbdbfbjbjbfbfbababfbLbPb2b2b7b9b1bObObObObSbSbFbrb4b4bPbFbDbCb2bAb2b4b8bUbCaI#Q#z.R#0#Paqa6aMataIbcbwbBbQb0bQbjbfbfbmbsbCbFbFbPbObCbCbCbmb#bibfbfbobsbqbobobobfbfbBbEay.B.j.u.j.q.u#C#z#0#QbQb2b2b2bMbLb0b2bQbLbPbLbLbpa7bdbdbga7aVb.bAbgb.bpbCbnaUaEalauaXaLaBajaTbVbIa4ai#P.U#z#0#0#Q#Q#0#P#C#C#C#Q.U#0bbaZ#B#G.Y.7#D#V#E#L.8#F#V#E.7#x#E.Y.F", + "#O#T#p#x#p#b#b.8.8#u#m.K.F.C.F.V.V.T.C#c.5.F.Q.Y#r#J#E#k#O#O#SaBbobPbebfbfbfbabab.bjbsbGbBbQb2b2b4bSbObJbCbCbCbCbFbFbPb4bObFbCbAb4bPbDb4b8b5bUa3aI#n.R.u.U#P#3aIaQanayawbbbbbDbQbUbPbCbrbrbnbebnbvbea9bdaXaOapaQbDbPbQbDbsbobibibfbfbfbcbHbQa6.z.j.f.f.j.q.3.R.BaSb2b2b2b2bQbQb0b2bQbAbQbLbLbLbAbmbaaTaHaHaVb.aHbjbjbDbra1aPaLadadadaBaWasbbbtbta8aF#C#Qae#Q#3#0#Q#C#f#z#Q#zaabcaZ#S#H#k.2#F#U#G#c#g#F#M#T.8.M.S#k.V", + "#T#S#F#p#t#c#o#I#I#x.K.H#a.K.V#.#.#..A#c.Z.A.S.Q#b#J#F#D#S#S#1aWbQbCbabdb.b.b.bjbmbCbubtbLbQb2b4bmaVazaoaoaObnbjbmbFb8bSbFb2bSbUb2bubQb8b5b9bUayai.B.U#f.q#z#P#3aKanaeaqa4bkbBbobmbPbDa1bebia9aUaUaJaJaJapag#W#qaObobibibebsbibsbibobibobsbDbUa3.j.f.j.f.f.q.j.f#0bPb2b2b2b2b0bQbPbDb0b2bLbPbLbLbPbLb.aHaHazaBasarbpbjbPbAa1azacaradasasaiaraRaZa8aF#C#Qaa#0#Paa#Q#C#z#z#z#Caabca2#7#a.H#a.H.H.V#j#t#c.8#I#p.M.M#j#u", + "#I#S#S.8#F#x#o#I#M##.F.T.X.S.K.T.L.A.M#c.0.C#m.2#u#J#t#F#1#1ambjb0bmbdb.bda3bablbrbCbybtbtbtbGbealahalalagaObfbabdbPb4bFbSb4bSb4bCbyb2b4b4b4b2ay.q.u.3#e.B.z#C#P#9anaeayaKblbMbLblaQa1auaman#5#r#G#i#i#i.v#i.x.vaJbibsbsbBbsbsbCbDbDbDbDbBbsbMbUaM.j.f.f.f.f.f.j.qa6b2b2b2b2b2bLbLbQb2bBbBbQbPbLbwbGb0bJb.aVaHazajasbpbpbLbAadac#6asajacac#6asbtbb#z.U#Q#0ai#P#0#Q#C#z#z#z#zaabqaKab###d#..Z.T.M.4#x##.7.7.7.Q.L.M.7", + "#4#T#I#t#I#I#I#M#F#a.C.X.2.K#b#q.T.L#j.M.F.S#m.2#u#u#t#M#Sa.aKbwbPbdb.a1a5bjbtbvbNbSbGbGbpbpb#ahahahalagaEbeb.bdbfb0bCbSb2bSb4b2bCbLb4b4b4b2b2an.q.u.u.B.2.B.R#z#0aqaeamana8bBbMbaayaf#1akayawayama##1#i#i#Xagapa5a1a3a6bobqbia9b.bjbobsbsbobfbobQaM.j.j.f.j.f.j.u#ZbQb2bQb2bQbLbDbLbobLb0bDbAb0bPbua7bBb2bAbgaTaYasarbjblbCbpasacadar#6#9arbpbb#C#f#f#z#Qae#0#P#0#z#C#f#C#C#0buaZas##.4#v#R#.#.#..M.7.4.M.4.4.C.M.4", + "#6#R#S#H#o#p#L#L#g.H.K.C.M.K.X#v#h.L###s.4.2#b#b#m#F#M#V#8aBa4bLbmaOaPbebubtbCbSb1b0bBa2bpbAaAaAahaAa#aoaUa9b.a3bAbmbfbPbUb4b2b2b2b4b7b4b4b4bQaq.j.u.u.B.B.q.R.R#0#0aeaaaaaFa6bwbBaTaba##5abamanamavau#G#2agaf#GapaJa9bibca6a1a3bobAbsbfa6a6a6bablbQaM.j.f.f.j.j.q.jaIbQbPbPbBbQbDbjbLbobmbJbPbPbPbJb.a2a3bjbLbHbaaRaracaTbgb#bJa7ar#4acacaRbp#3#f#f.U#C#Qaq#0#P#0#z#f#f#C#C#QblbaaK#k###H#W#d#d#H#y#B.4.L.F#a.Y.Q.S", + "#S#U#R#I#o#p#u#x.4.A.C.M.M.S.X.Y#A.Y.X#F#M#b#m#z#m#x#S#8avaZbbbtaLbebybubtbFbSb4b2bCbjbubQbeahahaAa#aoaua5bebeb.bPa2bLb3b5b2b2bzbLb8b4b5b4b2bQaD.j.B.3.B.q.2.R.3#z#9aa#0#0aaaWbhbMbiaB#7ab#Zafabaua.#X#q.9.p.x.xapaCaCaQbcbBbDbob.b.a7aSa2bfbsbLbQbwbQ#Z.j.z.f.f.j.q.Bbqa6bPbLbja2bPboaVa5b#bLbLbPbCbgaYb.aLaVbubTbgaVaradaTaVaVbpbpaHac#6aRbh#C.U.U.R.U#Qanae#0#0#Q#f#f#f#f#za8bpaZ#F###t#O#h#d#j#B#S#v#N#d.9.0#b.S", + "#c#B#R#O#I#T#I#B.Z.T.A.7.8.2.K.K#q#g#p#T#P#E.Q#b#b#c#8aybtbbbhbtbobybmbtbJbSb4bPbubjbubQbraAahaAa#a#auaObnbea9blbabDb2b2b4bMa4aZbbb0b4b4b2bQbQaK.j.q.u.q.q.B#u#K#z#J#0aeae#Qaqa4bLbAa1af#1#Zafa.ab#X#i.x.d.x.x.d.#.h#iaJbcbfbaa3a3aYa9bibsbsbDbLbBbBbsbx#r.j.z.f.f.u.uaIaybqbLbAbAbja2a2a0bebObPbPbPbyaXa9aVaHaLbubPbraVadasbgaHaVbjbpaWacasbb#P#f.U.U#f#P#0an#0#0#Q#f#f#f#C#CaDbGaZ#8#x#o#D#D.Z.F#i#B#p#H.N.9.H.Y.M", + "#c#g#D#D#x#T#O#B.L.L.M.X.Q.C.C.0.5.Q#j#N#T#m#b#b#b#MaqaZbMbzbtbpbwbtbtbPb2bSbAb.b.bobLa0ahahaAaoaoauaGa3bibda2blbLb0bBbqaZ#0.B.RaqbBbIb2b0bUb2a8.B.j.j.q.j.j.q.u#C.R#0ae#Z#5#Jaebob2bsaIanaba.afaf#i.x#i#i.d.h.x.d.b.d.b.p.D.p.D#i.v.p#qauaCa3bobPbUbMbQbDam.j.j.f.j.u#zataybobLbuaLa2a3aYbCa0bmbPbPbJa1a1aYaHaHaVaVbma3aBadasbpasaHaTbjbpaHbpaZ.U.U#f#f#P#Qaq#0#0#Q#C#f#f#C#zaqbBa8#8#S#I#x#x.Q.0.0.K#x.N.y.6.y.A.L", + ".8#c#g#F#U#t.Y###v.M.C.Q.K.A.C.F.H.7#j#L#L#u#p#p#p#9aRbbbVbtbtbtbtbGbQb4bCbrb.bubLbAauahalagaAaoaEaEaVa3a6a3aWbwb2bDaxae#J.B.B#JaZbkbkbQbDb2b2bo#m.j.j.j.j.j.f.q#e.U#z#Zae#5#Z#JawbDb2biak#1aka##W#Gag#i.D.k.x#2.h.p.a.b.h.d.d.k.t.9.v.9.D#ia.aIbfbQb2bMbQbPaS.s.j.s.u.UananatbCbLa2aVa3bmbeaEaObJbLbPbmaOaVaHasaHaLauaYaYasadaHbgasarasbpb.bjbkaF.U.U#f#C#Qae#0#P#0#z#f#f#f#Caabobhaj#S#4#4#u#s.X.C.K.Q.M.T.T.y.y.A", + "#g#l#F#p#p#p.S.7#j.M.Y.0.K.X.C.Z#c#o#T#p#I#u#I#o#PaibbbMbMbwbubtbGbMbSbCbmbmbLbAaYapahalalaAaEaEaEaGaJb.a6a9bob0b2a8#J.q.q.q#baeaqbkbzbBbCb2bSbM#Z.j.j.j.f.j.j.j.q.3.R#z#Z#V#V#Z#0aHbLbPbiaCak#W#Wag#1#1#W#1.p.p#i.h.D.h.d.k.d.o.E.N.p.p.9#A#wabasa7bLb2b0b2bUa6.B.B.q.U#z#Z.2a3bBbLb.a3bPbeaAaGbgbXbJbLa1a1aLasazaQaoaOa7aVadaca7aHasasasaraHbObl#Q.U#f#C#z#0ai#Qaq#Q#f#f#C#z#0a8bpaH#H#R#4#L#M#x.K.H#a.5#a.A.A.D.O", + "#k.8#x#U#r#D.8.Q#j.7.X.V.2.X.C.V#c.7.7.8#o#N#L#T#3aZbRb0bwbpbBbwbPbvbebmbLbLbdaEagahahalagaEaEa1aXaYb.bmaJa8bzbIb2btaa#0aeaqaKaTaKbzbqbIbPbUb4bPaS.B.j.q.j.j.j.j.j.q.R.3#z#V#Z#8#Vaaaqb2bFbiava#.6#i#1apap#U#1.D#iag.d.b.......b.p#l.9.x.E#O#1apaoazb.bDbQb3bMbSbx.2.R.u.U#J.B#ra6bLbLbAbMa7aEaEaXbybXbPbAaXaYaBaGaLauafaYaYaLadacbgasac#6aH#6aTbLbf#0#e#C#P#Qaiaaaq#Q#C#C#C#C#0aIbwaW#t#I#I#p#p#g.Y.C.L.A.M.X.Q#a#i", + "###o#x#D#X#B##.7#c.7#b.X.Y.K.H.5.7####.7#j#I#L#TaibtbVbLbubzbwbSbea0bnbPbCaOaoa#alahahaAaEaObmbCbfbaaD#J.B#VaqbBbQbtbkbbaKaKaRaLaHbwbwbBb4b4bUb2bc.B.j.q.j.j.j.j.j.j.q.u#z#Q#Z#Zab.BaabhbPbrbrab.0.Da#akafafakaQ#X.d.d.b.......h#U.T.x.6akaGagaga##7afbgbub0b0bwbUbs.B.u.U.U.B.qambobLbQbubaa0a0b#aXbPbPbQbgaYaLasaBaOa#aGaYaYaB#6adaZar#6as#4adbCbrbuab.R#z#Q#0aeaiaa#P#f#f#C#3awbwa4#D#p#v.8#x#t#j.Q.A.0.V.M.C.C.F", + ".8#p#o.8#j#B#D#D#g#c#m.5.5.5.Y.7###k.7.4#y#I#M#Ta4bGbbbubLbLbPa9aYbebPbeaAa#a#a#ahahalaEaEbmbmax#J.P.q.s#u#ZaKbzbtaZbbaiaiaRaTa4bha3#1aQbUb2bQbSbM#Z.B.j.j.q.q.j.j.q.j.q.R#z#Q#J#5#V.BawbBbHbsbfab#UamamaGaQat#1#1.k.b.#......#i#1#i.h#ia2baa1ap#W#A#WaLbgbGb2b0bwbUae.R.U.U.R.R.BaSa4bqbBbib#byaAaVbgbLbPbuaVaVasaHaLaoafaYaYaVad#4asaras#6#6#6aHa1aLbyaB#P#QaFaeaeaF#Q#f#f#C#Qaabfbh#S##.S#r#M#x#..Q.A.5.0.F.A.V.5", + "#M#o.8.7.8#b#O#U#k.8.X.S.X.M#c#####l.Q.M#c#I#F#O#6aHaRb.bPbCaYaYbnbOaPaha#a#a#ahahalauaGaIbAaIaa#V#J#VaKaxaSbqbtaZaiaZaHa4bjbjaL#Oa.#UambCb2bAbUbDa6.2.j.q.q.j.q.q.j.j.j.q.q#u#Z#0#Z.B#JaLbDbsbsa6ayauaSaLafa.#1a#.x.x.d.d.x#iafa6.h...d#Uana1aUa##A#aaja7bhbLb2b7bGbQaK#C.U#f.R.B#QbdaqbLbrbfbyaAaAaYbAbPbOaXaYaHasaLaza.aBa1aYaH#4acaHar#4#4adasasajara7aZ#QaiaFaeaI#Q#C#f#P#PaaaSbl#8#g.X#m.2#E#g#b.X.X.Y.A.V#k#D", + "#T#y.8.7.8.8#t#D#x#D.2#r#o#..Y##.8#b.X###t#x#D#OadaHaTbQbCaYaYbebnaAaha#a.alahahahauaGaIaGbfboa8aLaKaLaTaSbca8bwax#9.raz#H.d.r.t.J.1.Pa2bLbPbPbPbSbMae.q.q.q.j.q.f.j.j.j.j.q.q#n#Z#Z#V.BawaWbDbmboa6aKaDaba##1a#aoalag#q#q#XabaLa1.x.o.9#1aeaJbnap#X#la.aTa7bjb0b2b2bLb2bo#z#f.U.u.R.2aeaFbQbjbCaPahaLb.bDbPbdaOaLaraHaVadabaOaYa7ac#6acaras#4acaWasajaradaTa4awaDaeaI#0#Q#f#C#Paaaybwaj#S.Y.K#u#z#b.S#x.Q.A.y.T.Y#D", + "#o#o.7.8.7.8#F#J#J#Z#w.5.X#a.X.8#b#p.7###o#D#O#UaHaVbPbAb.aXaPbnaAahal#8a#ahahaAapaGaLaGasbBbhaFa8aTaKaKaDaDaDa8btaN#a.m.c...h.z.z#paibfbHbUbsb0bPbEbk.B.u.u.q.u.q.q.j.q.j.j.j.B#z#0#5.B#JaIblbCbDbJaDaaab#1a#aoaoaoa##Zafabamaybm#i.D#1aQaqa1bAaE#1#S#8aHaVbmbLb4b3bQb2b2aa.U#f.U.3.q.R#3bDbAbCa0alajaVbdbPbeaXaOasasaVajagazaYaYaH#7#4ar#6#4adaHaT#6asajadbgbba6amaman#P#C#f#C#PaqbGaG#V#g.M.2#u#m.S#D#t#v.N.1.4#j", + ".8#I#s###j#c#r#J#r#n#G.5#i.T.S#b#b#c###o#S#O#Sazb.bJbmaXa1aPbnaPahahad#8alahaAaAaCaOaQaJa2a4aFaFaIbab.a6bca2aKaKbkbwbj#1#i#qaEaJaLaRblbibLbQbCbCbQbqbM#Z.q.u.u.u.j.u#z.q.j.j.q.q.B#zaa#J.qaqaLbQbCbua4aqaja#a##7#7ara.a.#1a.afambabfakaMbobia1bCaCajajarara7bpbnb2b7b8bQbQbc#C#f#f.u.U.j#zaFb0bmaPa#a.aLb#bmbga1a0aBasaBaBaoa#aQa3aV#6#4#6ar#4adarad#4adaj#6arbtbbabaea3.R#P#C#C#PaablaW#V#J.Y#l.5.2#b#####h#w.F.H.M", + ".7.7###g#O#D#F#F#n#r.X.T.T.5.7#o.7.S#o#O#S#Oaub.bJbdaOaOa0braPahahafadahahaAaCaQaQa1bea3bhaiaR#7.t.l.b.o.v.p#SaDa4blbuaO#W#W#W#7ad#7aLbCbQbPbrbPbmbDbEbB.B.q.q.j.j.f#P#P#0#J.q.j.q.q#z#0.B#JaLbobPbybJaDaaaf#1aoajauaoa.a#a#a#abafbra1apbebibrbCa1ayayararaVb#bAbPb2b8bQbLb2aF#C#f.U.u.u.u#CbMbLaXalaoaoa5b#bya1aXaLasaDaTa.agaGaYaYad#4#4adacadadar#6acac#6acara4aqaeaI#P#C#C#C#Paaa8bja.#6.V.Q.V.C.Q##.7.7.F.A.T.Q", + "#o#s.8.8.8#I#x#F#J#r#A#A.F.T#x.8.7.7#m#M#Fabb.bGbCaOa0aXbva0ahaAagadaoahaAaPaYb.bjbwbbaKaqaqbt#G.t.d.p.v.t#p#9aWbBbjbuaL#A#R#R#R#6#RaLbPbQbPbPbrbsbLbobPaS.q.j.j.j.f.R#P#0aeaq#J.j.j.B#z#J.qaIaWbBbLbLblaqabagafaga.a#aoaja##1a#a.apbrbmbrbrbobaaQaBaBaracaTa7bJbSb2b5b0bMb2bD#9#C#f#f.U.j#eaZb2bgahahagaEb#bgbea9a2aHasaLauaoakaYaYasac#4adasaradac#4ad#6ad#6arara4#8anaq#f#P#C#0aaaTbq#V#F#k.V#.##.K.0.V.Q.F.L.Z.C", + "#I#N#N#o#b#p#x.2.2.Q#H.N.F.6#g.8###s#J#V#8aVbBbPaYaUaUbnbFaAahahabaoalahaAaXb#bua8ai#Q#b#baaa4aI#U#UaIa8aq#V#8axbwbMblaW#6#A#R.N#6#6aBbBbLbQbCbDbBbBbDbDbP#Z.2.q.q.j.j#z#Caaaeae#J.q.j#z#J.BaeaSbabLbAb2aFaqafaf#1aoaoarajajafakakafaybfbcaWaTaTavarasararaza7bCbPb0b3b5b0bQbLaK#3#C#f#f.u.uaibzbPaAagalaoaXa1a9a9bdaNaHazaEaoaoaOaYaLac#6adasbgadar#6acadad#6acacaZaNaaaK#f#z#C#0aiawbG#8#F#l#G##.Z#..O.F.V.V.A.C.A", + "#j###I#j#o#b#b#u#b.4.1.A.O#l#c.8#s#S#5#5aTbubLa1aOaObebFaAahaha.a#alahalaXb#bjbLaq#V#0anaZanaZbwaFanae#Z#J.B#LaiaNbtbobjaj#.ac.yaa#9axbGbwbMbLbIbwbBbBboa6bc#J.q.j.B.q.q.R#z#8aean#J.j.q.R.B.2aFa8bob2b3blaqaeavayafafajarauauamayanamanaDaIaqararaaararararb#bFbSbMb2b8b5bLb0aiaF#C#C#f.U.q#CbcbUaUahalaoaAa7aYa1a3a7azaBaLaoaoaraYaXad#6adaja7aHacacacarad#6#6acasbpaaa4#C#f#P#P#9anbwab#S#c#c#D#G#A#d#d.L#j.L.H.V", + "#s#B.7#o#o#g#c#L#b.S#b.K.2#n#m###D#1#8aIbjbQb.aYaUa0bObeahala.aoaoahahaEaYa3b.bLbkaSaKaFaqbcbka4bcay.B.z.q.q#uaNaiaFbwbqaq#xaa.N#4acaNbtbIbQbMbwbhbBbobsbqa3aS#J.j#V.B.j.j.u.3#zaaaI#m.j.R.R.qavaIbabDb2b0aFaDawananayaeaeanamanamanaqaqaqaearadajararacacazbebKbPbDb4b8b4bAb0ax#Cai#P#f#f.u.UaDbJbOahahaoalaPaOaYa3a9aHazaJaEaoadaLa1azadadasaBbjacad#6acad#6#6#6araRaZaR#9#C#C#C#9awbwas#S.2#b#T#t.y#d.N#A#R.Q#a.V", + ".7#N#o.8#x#F#j#I.2#b#o.K.2#r.2#O#S#5asbjbVbda1aOaObrbraAaga#a.aoalalaAaOa3a3a2bjbkaxaianaqaKbcaWbhbba4aIaIa4bla4aDaZaZbtai#Taa.w#4#9axbpbGbLbobobLbobababQbia6an#J#8#JaD#V.B.2#VamasaT#b.j.R.q#VawaTbabMb0btaFaFaFanaFaqanawaBasamavavaqaeajararajaracarararb#bKbPbAb8b8bPbMb0bc#fai#C.U.U.U.uaibjb0aPahalalaoaEaJa9beaVazaEaLajajaoa1aG#6adajazaXaH#6ac#6asac#6#6adarbhaNaK#f#C#C#3awbcaT#E#c#M#L#M.L.N.y#A#d#I.M.M", + ".7.8#o#p#D#c#o#O.X.Y.L.A.C#g.2#OadasbgbLa0aOa0aOa5bOaPalafadajaoalaAaVa7b#b.a2aZbtaZai#9a4a4asaRbtaNaiaFanaIaTaTaWaqaZbbax#6#9.L#3acaibtbhbLbLbLbobcbabqbQbPa6a6aI.q.q.zaia4aq#V#ZaeayaT#J.j#z.qayawaWbhbVbQbqasayaFawanawawasaBamauapauaoazaoarajacacarararbdbFbSbDb8b8b0b0b0aK#f#f#9#f.3#f.U#PbfbJbnalahaoaoafaOaUbhbcaLaXazazagagaJa2aradarararbg#6aRacarar#6#6acacaWaZa4.U#f#C#Panbla8#Z#t#H#L#L.M.y.y#d#d#v###y", + "#j.8#o#o#s#D#c#c.M.L.O.F.C#c#t#OajaWbubmaAb#aYaObCbeahafa.aga#ahalaXb#b.bgbhbwaRbMbMaIaI#1#5#8aVbwbbai#9aiaSaYaTaN#9a4bGax#3aa#T#4#9aNaKaDaTbzbubbbkbwbDbDbobQa6bt#b.q.s.RaeaiaiaSaeaeaeaa#J.B.B#ZayaDaRbub2b0btawawaGayazarazazaoauauaoajaoazadadadarajarazbybPb2bLb8b8b2b0b2bI#C#f#C#C.U.U.u#Pa1bob1aAaoaraoaoaoaJa6bfa7azazaHaoa#auaSaDadacadara7asacacadasac#6ad#6arbpbtai#C#C#Caqbcbha.#g#D#4#T#M.y.y#d#N#A.Y.7", + "#D#x#o#o#y#s#o.Y#..1.O.T.A.Y.Y#DaLbjbAaPaEa1a1bdbFaPalaaajahahahaPa1b.a2a2bAayaJbb#8...d#q#1#5aYbbbkaZaxaxa8bjaZaRaNaZaZbtaqbb#9#9aZae.B.P.BaabwbBbqbBbQbDbDbQbGbba4#V.q.q.P.2.RaWbd#8anaeae.2.2.qayaDaDaWb0b2b0boaLaBavauazazauaEajauajarara.adadararararaLbPb2bPbSb5b8b2b2b0b2ai#f#f#C#f.U#f#za4bfbQa0aj#7azalaAaPaYbjbjaHaHaHaoa#a#aQaL#6adararaLbp#4ar#6asadac#6#6adbjbwaq#C#C#CaiaSbhaj.V###O#4#4.C.y.N#R#v.8.8", + "###b.8.8#o#j.7.M.1.Z.T.6.5####abbabLa0agaXa1a1bPa5agagaaaoalahahaUb.a3a3aYbDbCa#.C.h.#.o#Gaob.bla8bzbcaKaZaZaZaZas#D#kaibzaZbta4aZ#V.q#b.B#VaZbIbqbabBbabQbmboaZa4axaFae#0#J#0aSblaYaeaIawaeae.B.q#JanaBawaSb0bQb0bMbaaGafa.a.aoaraoajad#7#7a.adajararaza7bLb2b2b0b7b8b8b2b0bDb0bq#f#f#f#C.U#e#faqbDb2bna.aoaAaAalaAaXa1bpa7aTaVaza#a#apaYasadadazaHbJasas#6acasacac#4ada7bAaT#P#P#CaiaLbhaB#.#s#I#L#3.Z.1#d.1.H.8.8", + ".7#p.8#c#c#t.Y#q#a.F.O.T#F.X#DaVbDb.aEaEb.a1bmbCaAaga.a#ahaAahaAaUa1b.a3a3bobUbQbBboa3#7#8asaBbwa4aSbo#U.Q.e.y.O.r.p.vaqbwaZbtaq.B.q.z.q.zaKbza4axaxbtbBbQ.6#V#9aZaFaiaiaiaqbcbtawboaWaLaLaDaB#V.q.qaeayaIaabqbLbMb0bQbwaVae#Z#8#E#V#VaradadajarararaHbjbQbLb2b2b5b8b5b3b0b0b0b2bL#C#f#f#C#C#f#f#0bPb2bCaoaAahahaAalalaobdbgb#aYaGaga#agaOaOadadajasb.a4#6ad#6asarad#6adaBbAa3#P#C#CaiaDaSaW#O#v#O###D#B#R#d.1.C#a.Y", + ".Q#F.8.8.8#x.Y.5#a.F.F.0#F#UabbjbuaGagaua3a1bJa1alagagagalahaPaMaIbjb.b.b.bybsbDbQbpbbad#9asaxa4a8amam.h.d...p.O.t.r.Yaya4aiboaZ#8#V#ZaIbkbkaZaZaxaiaibhbQ.D.v#8#uaeaLaWaIaf#Sabawa2boaWaLaIaHay.q.q#ZayaHaDa8bMbGb2b2b3bLbaaIaGae#Z#8adajasarajaraVbubQbLbUb2b5b8b8b5b2b2b2b2b0b2#P#f#f#f#P#e#f#3bAb2bPaoalalalahalalaoaLb.baaOaJaoa#agaua1auadadazaHbLadaracasasasasarasbjbA#P#C#C#9ayawa8#D###o#g#O#N#N#d#d.5.5.K", + ".A#c.8.8.7#u#c#w.2.K.H#k#D#UaGbBa2akafaQa2bjbBauahalahalagaUaKaKabaSbjb.bubybAb0b0bpbharac#9aNaDbwa8aD#l.a...h.t.r.t.4abaMa6bkaZaFbcbcaZaxaxaxbbaq#L#PaFbl#q.Dab.s.h.D#q#W.O.y#V#3bablbuaIaBaBaa#Q#P#0aaaIaSa3bPb4bPb2b2b2b2bMa6a2aSa8aDadasaHaTbgbBbMbLb2b5b8b5b5b5b2b2b2b4b0blbQaq#f#f#f#C#C#f#3bfbPb2aPahahaAahalalalaja3a6aUaJaEala#agaUaHadadavazbjaTarararaHacasadaBa2bJaa#C#C#PaBanbh#1#R#R#j#N#R#N#N.O.H.X.X", + ".F.Q.8.7.7#p#o##.M.A.C#g#SabbjbuaGa#a#a2a2bBaRahahahahaAaUaNaxaa.2bBbha4btbtbQbQbQbGbparar#6axaxaZbLbBbhaD#1#Uagao#7avaIbkaIa4bkaiaiaiaxbbbkaZaG.t.G#9aKbkap.daG.b.#.d.o.y#L#3#9#3axbGbabaaq#0#0aaaD#Vawaea8a8bDbSb4b4b0b2bPb2b0bQb2b0bLbGbTbLbJbAbPbPb4b8b5b5b8b5b2b2b2b4b5bBbabLa4#f#f#C#f#C#f#Pbjb2bQaPalahahagagaga#a.aEa3a1aUaPalagagaCaSaqadadasaBbpadaTacacasaaasasaGbCaC#C#C#3aDaea4aj#B#H#N#y#N#4.Z.y.A.K#b", + ".A.A.Q#y.8.8#u#o.A.L.F#S#SaGbIaVafa#auaYbabLauahahahalbeaq#0#J.qaIbBa4btbbbwbQbLbMbwbGaL#M#8btaNaNbEbfbBaE#G#q#2#2a.aZa4aSae#lbbbkbbbba4ai#r.x#1.F#Naabkbba4.v#q#a.y#V#b#9#9#3axaxbbbpaLaTaD#0ae#Z#JaaaBaDbcbLbQbSbSb4bmbLb2b2bAbLb5b5b2b2b2b0bLbPbSb5b8b5b8b5b5b5b2b4b2b2b4bAbMbPbD#C#f#f#f#f#C#Cb.bPbPa0alaga#aAaAagafagaAa5a5aPaPaAalaEaGaQasadajarasaYaTbjas#6ac#6adasaGbmbj#C#3#CaBaebhas#k#t.7.7.Q#y.4.A.A.C.A", + ".A.A.Q#H#u.7#b.Q.L.7.V#Sa.babAaua#ahaGa2bAbnahahahaAbnaSaF#V.B#5blaWbGa4aNaKbBbcbwbkaF#u#Ja4aNa4aKbwblbCaOau#i#i#2#7aLbBaS#r.la.#W.6.9.p.h.d.k#qa.aza7a8aKaKaLamafavb.bababbbbbtbtaRa4aZ#3aSaIae.q.s.q.PabatbDb4bObFbPb4bLbPb2b2b2bQbPb5b4b5b2b7b4b2b4b5b8b4b8b4b4b2b4b2b2b2b2b2b0bQ#9.U#f#f#f#C#CbdbCbObnaga#aoaoalalagalahaPbeaPaPaAapaGa3bDbaaLaBaBarazbrboaNacadaraBasaBbmbu#3#C#CawaebcaD#s#F#k.7.M.M.L.6.F.F.A", + ".T#h#x#b#j#p#o.A.H.Y#B#SavbJaOagalahaVbabLaPahahaha0bvaDaeaeaFbcaWaLa8##.8#9bwbbaF#J#maea4axaiaRbabBbLbzbjap#q.xagahazbwbMaf.c.h...c.k.b.l.h.6apbdaYaSaQbbbla4b.babua8a2aWbabwbbaZbzbcbbaqa4bubl#V.q.q.q.s#Va3b4bCbCbCbFbPb4b2bPbQb2b8b2b4b4b4bSbPbPb5b8b2b8b8b2b4b2b2b2b2b5b5b2b2b2an#f#C#C#C#f#CbCbmbPbFaEaoagaoalalalahalahaUaUaPaAapaGa3bDbubDblbjbab.bdbDbDbDa8aBaHaHaBbdbBaN#3#Caqaea4aR#O#u#x#O.M.M.A.T.O.T.L", + ".L.V#b#u#o#o#H#v.H.Z#BabaVbAaoagahaAaWbobCaAahahahaPbnbeaFaKbfaWaVaFaI.y.LaxbbaZai#0aSbkaWaNaq#5#ZaMbLbMbwaL#i.dau#Ya#btbzbo#q.a...d.t.c.r#S#waGboa2aS#Za8#J#5aFaLaLa8bubobDbwblbMbAbzbhbhaqaTbkaF#V.q.w.q#Zbsb0bBbFbFbCbybCbPb2b2b2b2b7b4b4b2bSbPb2b5b5b2b8b4b2b2b2b2b2b2b4b2b2bMbQa6#K#C#C#f#C#PbPbdbPbQb#alalagahahahahahahaAaXaPaEaEaGaQbLa##iaEbdbobaaJaEaya0bobaa#.ha1bjbpa4#3#PaqaeaZaR#T#M#O#J#g.V.A.T#a.L.1", + ".5.Y.8#x#D.Q#d#d#.#A#Saubla0agagahaGa2bJa0alaAahahaPbnbFbma1aWaLaK#5.l.m#TbbaZbbaKa4a6aLaLaDav#5#U#1a4bDbwaZ#G.b#1#Aacbkbqa6bsap.d.b.h.E.E.h#WaIbBa6a8aKaa#m.B.z#b#0aiaqa4bGbwbMbLbBbkbtaq.T.0baaFaFaq#JaaaZbDbqb0bCbCbCbsbsbraQbgbmbJbPbFbSb2bSb2b3b5b5b2b8bPb2b4b2bQb2b2b2b4b4bqb0bq#3#C#9#f#C#CbCa1bPb2brahala#ahahahahahahahaEaJaCaEaGaLbD#X.....b.o.6.9#q#Wa#aGasaC..afbhbbbw#9#PawaqaKaZaa#L#D#x###a#h.V.F.y.A", + "#k#g.Y.V#v.Z.N#d.Z#W#UaLbAaAagahagaQbfbJaAahahalaAaJaOa1bmaOaLaN.L.d...daBaVbubtbkaZaSaSaLanay#Z.Y.QabaSbta4aj.b#D.S#6bkbwbmbPbQbc#1.o.d#qaAaEbfboaZaNaNbban#J#b.q.q.q#LaabbbIbLbEbqbzbq#U...s#ZaZaxaKaFaaaxboblbLbUbHbCbvbvbiawaBaLbmbCbObPbFbCb0b3b8b2b8b2bUb2b2bQb0b2b2b2b3b2b4bQbU#9#f#9#C#C#PbJbdb2bAbHaAa#alahahahahalalagaEaLaGaLaLaLbua0.o.b.#.a.d.d.k#GapamapaJ.bagbpbhbGax#0ayaBaKa4#8#D#x#p#c#q.6##.4.L.y", + ".V#.#a#.#h.O.O.L#h#Ua#babmalalahagaQbubma#ahahahaEaXa2b#aWa2aO#O.d....#haXaob#bMbzaZa4aw#1af#Z.4.7#g#9aDbaa8as.d.7#p#9btbBbQbMbLblbja#.vaGa8bAbuas.G#KaZbtaxaqaFanaqaKbbbtbtbLbMbBbqblbE#w.b.d.h.s#E#6ad#6#8#ubmbpb2bHbvbvbvbdaiasaja7b#brbCbCbPbVb5b8b2b5b2b2b2b4bMb2b2b2b0b2b4bPb2b2aK#C#C#C#f#3bSbmb2bmbCaEa#ahahahahahagagagaGaOaEaHaLaGbjbLau#i.x.o.p.6af#5abafaEa0.#aJbAb.bIaZaaaIaGaRa8#S#c#m#M#l#h.M.7#y.A.y", + "#v#d#h#l.F.y.O.A#h#SaGbla0alalahagaQbLa0alahahagaJaYb.bebf##.F.N.#..#ha0aoaoazbJbAayaw#q.k.p.v#7.o.Taqasa8bcaL.y.r#I#4bbbLbQbLbMbMbBaE.xavaWbhbL#U.a.I#La4bbbcbbaFaxaZaNaxbbbMbPbobobcbo#W...v.f.d.D.D.O#O#9akatbAaZb3bDbrbna1aeasadararazbrbAb2b4b8b8b2b4b3b3b2b2b2bQb2b2b2bQb2b8bUb2bc#C#C#P#C#PbPbPb2bda3aOaoahahahahaoapakaoaEaJauajaCaGaTbMbDaLafaf#1#1#Z#5abama9ag.baobDaqbLboawaHaBa4aW#S#k#F#r#D#v.H.M.4.y.A", + ".L.4#h.4.A.O.y.F#k#7aWblaEahahahapbabLaEahahaoaoaOa1a3bdbAaI.6.h.n#MakaoaoaVazbyaG#W.v.....9#2#7#qaOaEaBa8aKa4#1.h#T#LbbbIbQbQbGbMbLa1#iaLaWaTbu#1.c.S.G.wajbbbtbba4ad#b#LaibMbDbobfbobB#W.#.k.p.d.p.x.t.9#VayaybaanaFblbsbiaQabajaracararaTbob2b5b8b2b2b2bUb2b2b4b2b2b2b2bQb2b2bHbAbUbH#3#C#C#C#3bsb2bPa3aOaOalahahahahauaEaEapaCapaaawayaWaQbobMbBa2amakaCaJaIaIbmaJ.v#W#XbBbhaxbAaIaIaBa8aR#S#l#D#D#G#W.6.Z#y.A.K", + ".L.V#h#..y.D.6.V#k#5a8bpaAahahahaubAbAalahahaoaEb#a3a3bdbmbCbLbuaYaHa##WaoaLaVbgbs#1.x.d.D.6#2a#aLaOb#aSbDbcbh.o.b#t#Ta4btbQbQbtbMbDbw#.afaWaVaWaC...v.l.b.b.y#S#Z#V.W.M#I#4bqbobobobDbmbs.v...9a#ag#S#6ac#9aTa8aF#JavaqblbvbfamafauaracararbAb2b2b8b4b5bUb2b2b2b2b4b2b4b5b2bwbabLb4b4b0ai#C#C#C#PaWbQbCb#a1a0aAahahaha#auaEapaoayauavaGa6bDbLbDbDbQbPbAbma1a3a6aJ#1#1apaM.DaWbLaZaZaTaIaDbbaH#S#l#k#t#a#h.1.O.1.y.Q", + "#v#v#v.F.O.6.T.T#kava8blalahalagaGbPb.agahala#aOb#b.b.a3b.bLb1bJbGbwas#2aoaLaVaLbnbCbsak#i.v#GazaVbubybubsbQbp.D..#U#TaZbtbMbMbMbQbobt#T#UaTaWaVaW#i.#.d.....h.o.o.p.E.v#y#8aqbhbPbLbfbfbCaE.x.oa.auajaWbtbhblaF#z.q.BaBaqbqbsaKaGavacacacarbpb2b3b5b4b4b2b2b2b0bQb4b4b4b4bAbhbIb4b2bLb2aZ#P#C#P#9aybPbra5a5a5aAahahalaEapaEapapauauayaSbLbDbDbMbDbQbDbDbDbDbLbEbobsbAaQaC#iafbGb0bba4aVaHbbaD#S#.#a#t.C.H.A.A.y.Y.Y", + "#v.1#..F.y.T.6#a#BaIbabjalahahagb.bPaJalahahaka1a1b.b.b.bub1bUbPbAbPaT#A#2aLaVaGaObAbBaIa3.D.9ayaWaWaYbya6bla4.v...D#Za4bBbBbLbQbMbwbt#9#BajaTajazba#U.b.....d.k.h.o.v.A.4#TaZbobvbvbobobC.x#Wajajajazbua4aZaa#u.q.j.z#Laaaibca8aBaHasacacacbjb2b2b2b2b4b2bzb2bQb2b2b2b2bFbPb0bQbPb2b5b4bqae#fai#9aPbUbvbebeaUaPahahapapaEapaoapauavaIbobfaSaSbobBbLblaSa2a3bBbubhaua8aQaMau#qbobwbmaWaLaTbhas#6.V#g#m.X#a.F.A.A#x.M", + "#a.A.F.A.A#d.O#h#SaVbaaYalalahakbCbCauahahalaEa3a9bibfbdbLb1bLbrbybLbL#7.taHaVaLaOaLbPa8boa#.k#qaTaWaWbrbla4bt#U.d.daba4baa6bMbQbLbwbtax.y.Tas#Oadajbjap.v.d.o.o.v.n.Qas#3aNbzbsbobsbebCaE.b#7adajazaXbAaLai#0.u.f.f.q.P#u#0#0a4bhaNazaracacbpbMb2b5b5b2bIbQb2b2b2b2bPbPb4b4bQbMb2b5bXbQb4aF#PaF#0a5bSbeb#a1aUaPahaAapauapaoapaEayaGaQboaQ#UafaMaTbqbMbjaQa2bebBbbbba4bfaCbfa2bqbw#Xa1aTaNbjae#7#l#..8#w.F.A.A.F#r.7", + ".F.F.y.A.O.y.H#h#5a8bhaXahagahaEbUbnaoahalalaUa9a9bjbfbmb2bDbrbsbsbAbQbl.G#XaTaTaB#6b#bubfaM#i.EaGaKaWbubrbtaR#V.d..#8aIaSbAbLbBaRaxbb#V.h.d#6.d#R#6asbeaP#W#W#W#2#8axaZaNbtbMbQbPa4brbC.p.b#7adaqaRbLb.aS#P#9.u.j.j.P.q.q.R#0#0aZbwaRasacaca7bIb0b5b8b4b0bVb2b2bMb0bUb4b5b2bMb0b2bQbQb5b2aZaiaxaibrbybnb#a1a5aPaAagaEaEagaAaEaCaGa2bsbuaL#1.d#WabasaZbIbDbmbsbPbQbta4bjafaTa8bqbjaGa0buaTbhaj#S#v#R#t#l.A.L.1#d#.#B", + "#l.6.F.C.A.F.K#lafa8bhaPalahala5bUaXaoahahaAaQb#bgbmbabLbUbLbsbsbsbCbLbLaK.raHaTaz#OarbgbubBaf.oafa2aWaWb.bjav.o.d.DajaKbqbwbkaLaqai#9.o...##d.i#H#6azaVaEalafauaf#8aRbwbMbQbQbLbMbwboa3.b.badaraiaNbPaQaI#C#0.3.f.P.P.q.q.j.B#0#0aFbtbbasacaNbwbMb2b9b6b4bMb3b2bMb0b2b5b4b0bMbMbLb7b2b2b4aK#PaxaibCbna1a5a5a0aPapapaCaPapapaQbfbobDbBbEbfaf.d.#.t#7adaZbIbQbAa8bAa2bbbl#UambBaM#q#1a2bLblbhav#S#.#v#O#B#y#d#N#N#A#l", + "#H#d.Z.F.y.K.5#2atb.blaEahalaAbebPaEaoahahaEa1a7bjbjbub4bDbDbsbqbDbsbmbAbw#8.TaSaB#4#4aHa7blay.y#i#1ayaTaTaHacad.DamavbbbbbbaB.8#K#L.M.d...h#R#4#4#6asaV.9#ialad#6#7a7bMb0bQbQbDbLbIbw.6.x.hajadarbwbAboaI#3#P#P.j.P#K.G.q.q.q.q#P#0aia4btaNasbwbwb3b4b9b6bIb2b0bMb0b2bUb2b2bwb0b4b5b7b5b2bk#0aiaqbvb.a1a5a5a0aUaEaCapapapaMbobBbobBbDbDbDaQ#q.#...Eafa4bbbBaQa1bjaYam#W#7a3aM.v.6afbpbBbVbBaj#S.V#s#R#O#N#N#N#N#A#A", + "#y#d.4.A.H.H.T#GaCa8buaPahaoaPbNbyaEagahalaXa1a1bfbabPbUbQbsbsbDbDbobPbobhbb.Ha.aM#4#4#6acaTbh#S.x#W#1aL#7a7#6#7aCaCa8aZbtaW.C.W.t.x.d.#.EaLad#6#R#6azaY.xa#ag#6#R#6bgbLbEbCa6a8bbbba2.pa#.oagadaNbsbsbHaDai#3#P#K#K.P.u.j.j.q.j.q#z#0#9aZbta8bwbtbIb2b4b8b2b2b0bVbMbLb2b2b2bMb2b5b8b4bPbHbB#9aaaqbra1bea5a0b#aOaEaEaEaCaMa8bEa2aQbhbQbMbDbrag.#.b#i#i.TaDbwa2.vbdb.aG#G.d.#.d#iaBbjbgbhbMbBam#D#####M#I#N#d.4.1.N.1", + "#N#y#j.Q.5#a#i#waNaWbwaAahaoaPbObeaEalalaEa0aXa1bfbjb2bPbAbCbCbDbJbPbsbobtbkaa.vauaj#4#Oacadbhad.d#W.vavadaLacacazaIa4bbbh#5.I.t#Y.#.xa#ayaQarad#6aoaVbf.oa#a##R#6#6aWbaa3bobBa4#7#Wa##2aO.D#XaBbjb#bsbCaFaD#9ai#P#K.P.q.j.f.j.f.j.q#zaa#0aKbtbtbtbtbIb8b8b8b2b0b0bMb2b3b2b0bMb2b8b2bSb4b4b0#9#9aqbmb#a0aUa0a1aJaEaEaJaTaTa6bLa.apbfbDbDbDbHa3.x.x.d.#.k#1aSbw.D#1bubGa1afapapbwa8aNasaWb0bBaj#g#g#c#M#I#O.7.C.L#..1", + "#R#H#O#r#r#G#i#2aMaRbkalahauaUbSaPaEalagaJa0aUb.bfbCbSbPbHbDbCbPbDbmbPbGbIbtaN#U#GaLad#S#7ada7b.#i#i#i#B#6araz#7araVaxbt#8.Y#T.k.x.kaoaVaLaTaVazaLbjblbl.b#X#G.r#6#7bga4blbh#9.t.k.k.k.xaf#i#XasbjbnbibwbBaHaq#0#P#P#P#P#P#P.B.q.q.q.u.R#Q#0aibwbzbtbIb7b7b4bLbAb0b0b2b8b8b0bVb4bPb2b8b7b2b0ax#PaKbeb#a0a0a0aMaMaJaIaQbabcbobEa#.DaMbDa3bDbDbDaL.9...#.#.xa#a8#i.baObubTbBbBblbjaNaVaraHbVbwab#U#x#x#V#p#c#j#d.V.A.L", + "#R#s#U#Q#G#G#r#1a8aKblagalaEbnbFaPaEapapa0a1aYbfbjbUbPbPbDbLbSbCbAbQbPbIbhai#D.d.haLaGafafavbjbpah.x#2.x#6acaHaraBaZaNaS#c#V#L.x.xahaObjbjbpbpbLbJblaiab..#1.6.t#RacbpaNaSaG.C.n.o.x.#.dau.D#Badasb#brbBbPbbae#9#P#P#P#P#P#P#P#P#P#z.R.R.u#u#PaibbbbbtbVb7b8bPb2b2bVb0b5b7b0bwb2b4b4b8b9b2bLbkaxbjb#a1a0aUaQaLaMaIaIaSbDbMbQbQaQ.dakbPbjblbfbmbma#.k.b.d#1#7aV#q.#aEaQbubAa6a8bhbgaWacaHb0bha.#r#g.8#M#p#t##.M.V.F.Z", + ".6#h#r#n#r#r#m#VaZaRbhahalaPbrbraEaAapaJa3a3a3bfbsb2bPbPbQbPbsbCb0bAbMbf#Z#S.....hayaGakapbfaZbbah#Y#2.k#X#6a7aHaBaZaZ#1aqaS#1aU.vaJaJbababLbBbhaK#Vav.6.b#1.6.t#4araRaZaTavaf.t.k.b...b#1.h#wacada.bybQbLbDbcaI#0#P#z.B.B#u#P#P#J#P#P#z#f#C#P#PaabtbbaZb7b2b2b2b2b0bMb3b7bVbIb4b4b8b9b2bDb0btaxbmb#a5aUaYaMaMaMaSbBbLbBaSbobH#X.b#ia3bLbabBaLbBbm#iag#i.Fa.a9#i..#i#G#Xa6bQb0bub2aH#4aWbVaW#8#s.Q.Y#b#o#O#j.M#k.M.F", + "#i#q#B#l#G#Q#z#ZaKaZbaalaAaEbFbiaEaAapaQa6a3b.bfbPbSb0bQbPbHbPbUbmbDbM#U#S.o.....DaGaGaGbmaJ#UaLaO#X.#.x.DaBaWaKaDaZbt#XaMat#2ag.vatata9bDbqaI.6.6#waq.o.d#1.6.N#4aHai#9bkaQayaf.k...k#i.k.b#1ar#6adaPbPbLbPbhaKaSaF#0#z#J.R#P#u#P#P#P#P#z#e#z#P#QaibtaZbGb2b0b0b4b0bRb5b3b2bMb7b8b4b1b4b2bMbtaxbebdb#aOaQaIaMa6brbkbwa8aKbobv#2.#.a#XaQaVbBbla2bLbe.x.d#iaUaC.h.d.T#WbxbLb2bDb8bpacadbLbtaW#8#i#q#a.8#b#s#j#t#k.7.A", + "#..M#.#A.0#r#J#0aRaZb.alapa5bFaUaAagaAa1bca6bfbrb2bPbPbPbCb2b4bsbmbUa6.Ya..D.b.#afaLaWbibr#X.ta#aU.d...k.paGaTaDaya6bo#Xa6atagat#GaUbvbHbqaG.h.T#i.D.p.h.oaf.D#Rad#9#9ai#9baa9aJap.x.k.x.p.6auaj#4#6afbabMbLbBax#Z#0aa#0#Q#P#P#P.P.q.3#u#P#P#P#9#P#0aqbpbtb2b2b0b2b0bQb2b8b0b0b8bSbSb8b4bQb0bMbBb#b.b#aQaTaLa8bsa8btbDaIaybcbvag.d.#.dauaVa2buaVa2bBa6aC#1#X.d.d.v.h#1aJbuaWbhb2aHasaHb0bhaW#Z#.#a.M#y#L.X.4#t#x#B.1", + ".L.V.7.T.6.V#E#VaFbba4alaJa5bFaEaAagaAa9bdbabfbFb2bQbLbsb2b4bCbobsb2av#c#XaG.b.baLaWbobsbm.N.d.9aO.k...x.xaLaWaIaMbfbi#Ga5beagbvagbKbxbkaC.b#S.y.k.d.b.d.DaB#qasao#9#3#9ai#9aZbia5al.x.xaLaGaTaB#6#6#4#5bBbEbMaZaa#J.R.R.2#z#P#Q#P#P.3.3.q.R#0#9#P#0#PaKb0b2bQbLb2b2bMb2b5b2b0bXb2b4b4b4b2bLb2bLa5a9a1aQaIaIbaaWbbbbbD#X#UbfbCaJ.b.d.ka#aVaSbabubGbobebe#W..#i.D#G.ha3bDb8aHaNbjarasbMbBa8aW#1.Z#j#H#y#p.S.M.2#J#c.V", + ".M.V#c.C.C.2#F#ZaZbhaJagaPbnbCaAalagaEbdb.bjbibPb2b2bHb2b4bCbAbsbPbP.S#L.9.D...hblbGbBbDaT.l.b.o#2.k.x.xa#aLaTaSa3blbfagaUbv#GbiatbibqaG.d#F#M.b.b...#.ka.av.6aLau#7#o#3aiax#3aZbnbnah#2aWaTaGaGaaac#4#MaMbLbQbwaqae#z#e.B.B#m#P#0#0#P#u#z.B#u#z#P#P#Q#0btb0b2b2b2b2b0b2b4b0bGb7b2b2b8b4bPb2b2bHbma1a0aQaTaSbBblbwbBbD.k#ibmbHa1.o.k.h#qaVaVa3bDaS#Z#a#Gap.o.d#i#X.haIbfb9buarasasbwb2blbca2#Z.T#R#y#p#o#..M.M#x#x##", + ".V.M#x.H.C###Da.aWbwaGahaQbtbiahahaoaXbgb.bjbsb0b4bSb2b2bSbCbDbsbLbD.Q#3.v.d.##Ua8bqbqbq#1.a.b.k.d#YahahaOa4a8a4bbblba#1aMbxataCbHboay.d#c.8.k.b.....b.va.#U.DaGaEah#A.O#Taiax#9bja0byalaLaTaIaLas#9acac#UbMb0bBaTaxaa#u.3.B.B.B#m#Q#0#0#P#z.R#m#z#0#P#PaFbQb2b2b2b2b2b5b2b2b2b2b2b4bUb4bQbPb2bvb#beaUa2aMbibDbubobBbj.b.9aJbQbv.x.k.h#q#i#1aQboam.K.d.k#YaJ#WaJ#1.vayaWb0b2acarblb2bMbabaaG#7#q#v#N#s#o#j.7.V.5#c#j", + ".V.Q#p.A.L###Faba4bwaLaga4bIa1ahahaoa7bgb.bjbJb2bSb4b2bSbCbLbobsbPa3#xaF.K.#.hanbzbkbcba.6.a.d.d.hagagalaGa4bla4aaaaa2akbebKbvagbQa1.p.h.A.d.d.#.....b#W.9.v.vaGaLaAah#A#R#Taibba4bGbHbCa6aSaWaGav#9#6#9#SbobQbBbtaDae#J.3.R.B.B.B#u#z#u#Q#P#J#z#u#P#P#P#0bkb0b2b0bQb2b2b8b5bQb4b4bUb7b2bCb2bSbeb#a5aOa6aSbobAboblbBb....xaJbDbLa#.k.Ea#aoa#aybAat#w.d.k.oa5bHa6#1.b#ZaTbQb2adasbLb8bDbjbwaB#S#v#.#j.7.7#o.7.2#l#E##", + "#.#j#M.T.M#c#Eaea4buaHafbabIaQahalazbgbjb.bfbSb4b4b2bPbCbPbobAbibUap#Zan.s.d.HaSbzbkaSaG.T.d.p.b.b#UaBaLbaaWaa#K#KaabB#1bibvbSapbs#1.b.W.k.d.b......#iaLaj#XafaLaLa0al#R#q#O#3axa4btbGbQbQbDboa2aLasaa#3#9aTbQbMbQaLaw#8.3.R#z.B.R#z#u#z#P#P#0#P#z#z#P#P#Pa8bMbUbDb4b5b7b9b4b3b7b0b4bSbSb2b2bDa3a1aQa3bfa6bBa8#Uajbu#U...xaJbobUbraPaE.x#GbobfbPbqaQ#A#YaVbobo#i.b.daeaKbUb2acarbLb5bCbAbGbb#x#c#T#T.8#j#t#b#r#l#S#O", + ".1#o#u#g.V.8#MaabhbpazafblbzaGahalaLbgbgbgbmb2b7b4bSbFbSbsbrbrbLbQaf.j.u.j.BaIbkbqbzaKay.T.p#1.p.d#Uas#6#T#L#K#9aRbtbDaCa9brbQbDaU.v.kaXap#W.k....#iauaYaWaWbaaLaLb#aladaja.#3#3aNbtbwbQbUbMbfbmbjbjbbaN#9asbMbQbDblawae#z.u.R.u#z#u.B.u.R#z#P#P#Q#J#P#P#Paia8bDb2b4b8b5b7b8b2b7b4bPb4b4bPb2bsa6aQaLbabjbsbBaB.Eavbj#q...xaCa3bQbDaJ.x.#aka3bPbQbqa3aYbqbDbqbsbu#l.daWbcb2bMad#6bub4bDbwbwbI#8#o#4#I#p.7#x#b.7.5#s#O", + "#h.V#c#a#q#g#FadbjbpasazblbwaBahala1bpbjbabDb4b4b1bPbPbsbAbobPbfbDaS.f.u.j.uaSbkbzbzaSay#U.vaZai.w.g#3#6axaZbtbIbIbGbDaLaEbibPb0a1.kaAaPaAah.k..a#bobdaYaVaWaVaIaOaValajaqauaa#9#9a4bcbwb2bUb0bPbnaXaZbbaNaqbGbUbBb2aDae#P.u.U.u.q.u.R.U.3#z#P#P#P#P#z#J#P#0aFbLb5b4b8b9b9b4b5b4bJb2b4bSb4b2boa2aSaQblaVbja8aj.dazbo#i.d.xaIaSbqbsbr.E..aCa3bcbsbsbqbqbDbEb2b0bjaT#WafbBa8aWac#4bjb2bQbAbpb0bh#j#y#I#L#s#c#p.S.M.7#p", + "#G#l.V.H#G#r#MaabbbparazbGbuajahalbgbjbababPb4b4bPbPbCbCbibQbibCbQbk.h.j.u.uanbkbkbza6ay#U.A#3#9#9#SaRbtbIbIbIbIbIbtbubbakb.bfbQap.kaAaAaPaP.x#i#2#2ala0bnbnbgaYaOazahasasav#8#9#3aiaWasbMb2b1b2bXbJaRaxaaaHbMbQbBbQbcaq#z.R.u.U.u.u.u.U#e#e#z#e#P#z#P#0#0#9aia8b5b8b4b5b5b8bSbLb2b2b2b4bSbPa3aSaYa1bjaKbwaLa...aGaQ#A.9#Wbibsa6babB#W..apbsbdbgbmaCbqbDb2bPa3bwaTb.aJawaNaK#6#4aWb2bPbpbGb0bM#4#N.7#M#B#t#O.Q.L.Q#p", + "#w#S#w.H.Y#F#M#6bhbhasasbTbkafahaAbmbobfbmb4b2bUbPbCbLbvbSbrbHbUbMbw#Z.f#z#z#Qbzbkbza4#w#UavaNbbbtbtbtbtbbaZbIbIbVbIbpbGaTaObobPak.xaPaAahah.xaAaA#Y.x#Y.x#Y#YalaAa0aPaVaWaLaa#V#3#6aqadaZb2b2b7b7b1aZaxasaHbJb0bBbDb0aLaTae#Q#P#z#z#P#P#P#C#P#P#z#e#z#P#P#0aiaFbQb9b5b5b5bSbPb4b2b7b4bOb4bCa4aSaWa1aSaWbtav#U.#aQaG#Uafa5#ia3bibobQaJ.dapbAbgb#bg#X#1a5aJa9a1bBbub2b2#zaDas#6#4bjbQb4blbAb3b0aR.7.M###g#D#c.8#.#a.8", + "#H#s.H#a.X#x#J#3bhbbaNaxbTbaafahaPbjbmbdbPb2bSbSbPbPbLb4b4bUb2b2btbtbk.v.2#Q#QbkbkbqaK#1#XaK#3#3bbbbaZaZaNaNbtbRbVbVbGbtbtavbdbUap.vaPahaA#Y.xaAbNbNaA#Y.x.x.x.x.x.x#Y#YaAaPaAaA#R#6ax#6axb2b2b7b7b7bbaxasaLbub2bDbBb2bwa8aIaa#P#Q#P#P#P#J#P#0#P#P#P#z#u#P#0#9aeaKb6b9b2bSb2b4b4b4b1bOb4b4bmaSaSaWa8aKaWbAaO#i#abfaQaMbsag..#1bDbUbQaQ#1akbCb#a7bdag.v#ibvbCb0b0b2b2bc#0acad#6#6bLbDb8bwbwbMb2bI#V.7.Y#w#c#p.Q.V#j#o", + "#H#N.L.A.K#l#S#3aZa4aNaxbMbaa#ahaPbabnbjbQb4bUb1bPbDb4b5b4b2bUbSbwbtbzaS.s#Q#QbcbkbkaSaS.vaK#K#KacbtaZbtaNaNbtbIbIbVbGbIaZbtaCbPap.xbN#Yah#Y.xbNbNbNbNbNbNaAah#Y#Y#Y.x#YaPahaAaAazaLaN#SaRbQb7b7b9b7bua4aLazbAb2bDbDbMbLaHaBaa#C#C#P#z#u#z#z#P#Q#P#P#P#P#P#0#PaxawbQb9bPb2b4b4b8bSbSb4b4b4bdaWaKa2aIbkbfboayapavbobfbCbP.v.Dagbobsbsa3#1aJbna7byb2bDaObBb0b8b8bYb8b0bcas#6#6#4aTbLbQb4bBbDbLb0bVax###g#l#x#p.Q.M.4#j", + "#y#d#..H.T#q#S#3aNa4a4aNbMa8ahaha1babjbAb2b4b1b2bOb2bUb4bUbPbUbPbLbwbtbza6#Z#0bcbqaFaSaS.Dau#K#K#KbtaNbtaNaNbtbIbVbIbtbtbtbtbbbLaU.Dbn#Y#Y#Y#YaPbNbNbNbnbnbNbNaPaPbNaPbNbNbNaPb#b#aPaN#TaZbTb4b7b7b7bgbpajaHb2bQbLbDbDb0aTaDad#C#C.U.U.R.R.2#z#P#P#P#P#P#P#P#PaqaFbwb9b4b4b4b4bSbPb4bSbSb2b.aSaSaSaWbDbBbsaQap#1bib.a3boaJ.vapbPbobvbqa3aOb#bJbPb4bubub0b3bubjbmbXb0bpad#4#4acbubob7b4bubLbDb2bMbt#T####.8#o.S.Q.M.8", + "#R#j.Z#i#i#B#F#4aNaZaZbhbMaVahahb.bab.bLb2b1bWbSb4bDbSb2bUbDbPb2b2bVbtbqbqbEbEaSaSaIbqbiap.p#L#K#Ka4bbaZaZaNbbbIbRbIbtbIbtbtaZbIbC#ibNah#Y#YaPbNbNbNbNbnbNbNbNaAaAahahbNaPaPah#Y#Y#YaN#RaHbMb2b7b7bXbpaVajaYbQbPbLb0b0bQblaBaq#z.U#f.U.U#z#z.U#P#P#C#C#z#z#z#Paqaia8b9b4b4b4bPbSb4bSbFb4bUa2aVaQaSa4bDblbsbobe.papbsbPbsbSagbUbFbSbQbDbxbAbJbybybXbObMbub#aXaHbgb2buaH#4#4araTbDbDb9bPbjbPbCbQbIbIax#s#h.Q#x.S#c.7.S", + ".M.4.V.T#i#B#T#4acbbaNa4b0aLahahbdbabfbPb1b4bSbSbLa5bSb2bQbobfb4b5b4b5bQbBbqbqbqa6aMaya3aS#G.t#K#3aNbtaZbbaNbbbIbVbIbtbIbIaNaNaZb0.xbFbN#YahaAbNbNbNbNbNbNbNbNbNbNaAahaPbNaP#Y#Y#Y#YaN#SasbGb2b7b7bVaVajazbubDbQbLbLb2bQbVbjay#P.U#f#f.U#z.R.U#C#C#C#C#z.R.R#PaaaiaKbQb9b4bPbSb4bSbObFb4bPa2aQaIbcbDbLaWa6bDaJ.haJbFbQbUbxbibZbCbybybvbrbJbJbTbXbLbyaVa7b#arbgb1bLarac#4adaNbLbqb4b4bCbAbPbSbJbMbIaZ#S.V.S.R.2.S.8.7", + ".7#l#l#q#W#W#TacacaZaNaZbVazahaAbfb.bob1bSbSbSbOaJbFb2bCbQbBbBbsbCbSb2b5b4b5bUbQbDbsbcbQbcaCaf#1aNaibtbbbtaNbbbIbRbVbtbVbtaNaNaNbGapaEbKbNahaAbNbNbWbNbNbNbNbNbNbNahaAbNbNaA#Y#Y#Y#7aR#OarbMb2bJbLa7azazaVb2b0bLbQbDbqbMbQbLaW#V#f#f#f#f#C#f#C#P#C#C#C#C.R.R#z#0aFaKbqb9bSbPb2bSbSbSbSb4bCaSaIaQbPbQbMbLbwbzbD#XaUb5b5b5bQbQbCbgbeaEbCbXbybybJbya7b#byaHaHbubXbJaH#6ad#6asbLbPbQb5b4bCbAbCb2bFb0bIbt#V.Y.X.2#x#b#b#b", + "#O#W#G#2#q#k#6#6#9aiaNa4bGasahaAbababLbSbSbSbPaUbebSbPbPbCbfbLbUb4b5b4b5b9b9b9b8b5b5b5b5b5bBaJbsb.aLaZbtbtaZbbbIbVbMbIbRaZaNaNacbbbA#WbKbWbNbNaPbNbWbNbNbNbNbNbNaAaAahbNaPaP#Y#YaraiaR#Oasb2bPbAaLa7azazbQb2bUbLbLbbblbobDb0a2aa#C#f#f#f#f#C#C#C#C#C#C#z.U.R#u#PaDaqbcb9bSb4bPbPbSbSbSb8bmaQaGaIaSbAbQbMbQbQbs.vbCbXbPb2b2b2bSbXbnbnbgbybJbJbybybgaNaLb#bJbJbCaTacacacasb2b2b2b4b5bHbBbAbAb4bPb0bIbIaq.0.M#k#r#u#m#p", + "#U#G#G#G.T#s#4#T#P#6aNaZbwakahaPa6bfb2bSbSbWbrapbebebPbSb2b8b8b4b5b2b2b2b2b4b9b9b4b4bSbUbUbQbqbLbBa8aTbbbtbbaZbIbIbIbVbVaZaNacadaZbMapa5bSbNbNaPbNbWbNbNbNbJbua7aoaoaAbNaAbgararaiaxas#OaLbJbCbgb.azaGbPbDbPbDbPbsbhbbbhbBbMbuas.3#C.U.U.U#z#Q#P#C#C#C.U#f.U.B#zaaaqbbbUb9b2bObSb4bObSb9bdaQaJaGaMaMbfbLb0b3bQagbObPbXbPb3b9bJbgbybJbJbJbJbTbJbJbJbNb#b#bgb#aTas#6adasbXb2b4b4bQb2bHbDbAbqbUb4bQbMbVaZ#w.V#k#E#E#F#D", + "#T#F#G#q.Y.8#t#T#P#3aFaZbIafalaUbdbsb4bSbSbPa5bebrbea5brbUb4b1b2b4b4b5b4b3b2bMb4b7b6b9b4bSbUb2bDb0bBa8aLa4bIbtbIbtbIbRbIaNac#6aNaZbMbfagbUbKbNaPbNbNbNbNbNbNbparaoaAbNaAaAaNaiai#3aN#6#SbgbLb.aLaBb#b0b4bHbCbsbPbDbubpbjbBb0bGay#z.U#f#e.U#z#P#Q#Q#Q#C#P#C.U.u.3#PaqaZbkb9bSbPb4bObSb4b4a3aQaEaEaJa1a3bobQb5bMbQbXbXb0b8b3b7bXbJbXb4bJbTbJbJbJb#aXaXaXaXazasaH#6asaTbXb2bSb2b7bUbobHbMbDbDbHb7bQbLbIbb#U.Z#..8#E#g#G", + "#S#D#c#w.Y.8###x#L#Paxa4bwaualaUbfb2b4bOb4bCaJbSbda9bea5a5bvbUb4b2b2bQbMbLbBbha4bcbSb4b9b4bHbPb2bDbMbMbwa8blbMbBbwbkbIaNajada4bMbQbLbQaCbebPbNbnbnbNbNbNbNbNaPahahaPaPaAbgaraiaiaiar#SajbAbDbLbAb4bUbCbCbCbFbCbSbPbubpbmb0b0bwaq#P#C#f.U.u#C#C#P#P#C#P#C#f.U.U.u#zaqaKa4b4b1b4bObSbSb4b4aQaEalahaUa3b.bsbBbsbqbQbQb0b5b5b8b9b7bXbOb3bybnb#b#aXaXazaEaLasasar#6asbhb7bUbObSbUbcbUbHbMbLbFbHbFb4b4bMbIbt#Z.Z.8.8#S#l#w", + "#S#I#j#B#c#k.V.8#E#TaxaZbLaAala5brb5bWbKbCaJapa1apaJapaJa1bQbLbLbqbcaSaIaDaSboanaea9bSbSbKb4b4b4b2b2bQbQb0bMbMbGbqbbaHaBaLbMb5b2b2bUb2bQaJbAbSbObObOb1bNbNbnaPaPbNaPaAbpaRaNaNaN#7#6#7b.bBbDbSb7b4b4bPbCbvbCbCbSb2bmaybcaqbBbb#P#P#C#C.U.U#C#P#Q#C#C#3#P.U.U.U.U#PaqaqaibIb4bSbSbSbSb9bSaOaAahahaPbdbdbAbHbDbDbDbQbQbQbQbxbHbPbybybLbJbJbuaXaPazb#bJaVaHad#6aWb7b4bUbSbPb4bxaSbHbPbDbHbFbHbCbPb4b0bVbwaj#l.5#x#I#t#s", + "#I#u###l.Y#l.V#c#E#JaqaZbLaPaAa5bCb4bPbFbCaJa5bsbCbSbQbqbqbsbcaIamavaeaeayaWaSamaebvbFbKbFb4b8b4bHbFbCbCbHbPbQbMbQbQb0bMbYb2b4b2bSbQbPbPbsbfbubPbPbSbObObnaPaPbNbNbNbNbJbpaLar#7#6#7aTbMbDbQb4b4b4b4b4bFbCbCbHbPb4bFb2a8#6bVbb#P#P#3#f#e.U#C#Q#C#P#0#C#3#C.U.U.U#PaaaqaKaZb4bSbUbUb4b9bFbnaAahaAaPbnbebsbLbPbDbUb3bUb0bPbPbDbDbJbObCbubgbybub#aVazasar#6arbLb7bUb2b1b4b4b4aFbxbObDbPbObFbFbCbFb4bLbVbIaq#k.2#x#O#D#w", + ".8#u.Y#l#k.X.Y###p#LaiaRbBaPaAa5bSb4bFbFbC#Xa9bCb2b2bzbqa6ayaeabafafaeaya6a2ababaGbFbFbOb4b4b4b2bCbsbCbvbCbCbvbvb2bQbPbPbDbEbUb2b4b4b2b2bUbPbsbDbQb2b2bLb.b#bNbnbNbNb#a7azaj#7#7azb.bBbcbobDbUbCa3aIa6bibrbHbJbSb4bPbUaqa8bMbzai#P#C#z.U.u.U#f#C#C#C#C#P#C#f.U#f.UaqaFaKaFbLb1b4bSb4b4bFbvaPaAaAaPa5bmbmbPbUbDbvbZbQbPbQb0bBbwbGbLbLbJbuaLaHaHazararasaTbub4b4b4b4bSbSbHaMaMbxbJbDbFbFbPbCbCbFb2bPbMbMaN#h.5#w.8#c#a", + ".7###l#H#B.7.Q.8#p#T#9aRbwa5aAa5b4bSbFbCapapa1apap#1#1ayaIaIayamabababababababambybCbCbSb2b2bCbCbvbibfbibsbvbCbCbvbPb4bPbFbCbsbCbCbCbCbvbDbUbQbUbPbDbPb2b2b4b2bPbnaLazajaLaja7b0bQbUb2b4b4bsbDbFbCa2aSaIaDa2aSbobDbUbba8bQbPbzaF#9#P#z.B.u.U#f#C#Cai#z#Q#C#f#f#f#f.R#0aaaxbBbSbObUb9bSbFbFa0aAaPaUaUbmbmbPbQb2bCbvb2bDbCbUb4b2b0bPbPbXbPbXbXbLbpbLb2b2bSbSbSbSbWb4b2bSananbHbDbLbLbSbObFbCbCbHbObSbGbIa4#X#2#G.S#x.Y", + ".L.V#k.V.M.8.8#x#x#T#9aNbwbnaAa0b7bFbFa5#Xa.aCbeaM#5abaeaeae#Z#Z#Z#0#5#Z#8#6#5aMbvbvbCbFbvbPb2bCbsbiaSaybDbSbHbvbibibCb2b4bSbFbFbCbFbUbPbibibibCbQb4b4b2bQbPbDbmbrbnbdbyb#bfbCbFbPbDbPb4b5b7b4b8b4bHaI#VaIayaQa6bqb2bqbQb2bMbQbzaZ#9#3#P#u#f#C#f#0#0#0an#Q#C#f#f#f#z#QaaaqbkbSbSb4b4bObFbNbnaPaJaJaUbebrbLbPbPbLbAbCbBbCbPb4b4b9b9b8b8b2bJbLbPb4bSbSbSbSbSbSbPb2b4bPbD.BbxbJbObPbSbSbObObCbybFbSbPbBbwbk#1#U#G#G#x#b", + ".A.F#B.V.4#s#t#g#S#6#VaNbhbjaAbeb1bPb4apakbqat#U#w#1#Z#0#Z#r#r#J#r#J#Q#E#S#T#8bfbCbvbSbPbPb4bPbmaTa6bea9bvbOb2b2bSbvbsbsbsbDbFbFbFbSb4bva9bibrbrbCbFbCbDbPb2bUb2bQbAbDb2b2bPbHbrbvbCbibfbFbFbFbSbSbSbiaeaIabaMaMbqb0bcbBb3bMb0bQbMbhaq#0#P#C#f#f#f#C#0anan#z.U.U#C#z#zaaaqbhb4bSb9bObKbFbFbna1aQaOa0bdbybCbPbPbLbLbAaIbBbDbSbSb4b4b4b2b4bSbSbSbSbSbPbSbSbUbXbPb4bPbSanbxbHbFbCbSbFbSbJbFbFbobFbSbFbCbkbBau#1#w#G#D.4", + "#..T#s#s#y#O#t#o#O#U#SasbhbpaEbNbUb4bDafaS#5#r#r#Z#Z#Zaa#Q#r#r#r#r.2#J#V#6#EaybsbmbSb4bobCbCbr#S#U#Uaeaya9brbHbUbMaSae#Q#0aeaya3bFb4b8b2brbrbvbFbFbFbmaIblbmbjbfbfbmbDbLbsbEbDbDbCbFbCbvbibsbCbvbCbCbFbPaS#5aCavbobMbBb0b2bDbBbBbkbIbMbbaa#P#C#C#C#Q#Q#Q#Q#Q#z#C.U#C#z#0ana4b4b9bSbFbObKbObFbiaOaOa1a1bJbTbLbPbLbLbL#0aSbDbLbCb2b1bSbHbSbObSbPbSbSbSbUb0bPbJbPb2bCbDaKbDb4bCbPbObSbObubCbCbCbCbSbPbvbwbIas#1#U.5#t#l", + ".5#l.X#I#j.8#p.8#b#F#Saabbbta5bSb4b2aUafamae#Z#V#U#m.B.z.B.B.s.s.f.s.G#c.5#Ua3brbibsbPbLbHbCam#F.5.K#r#J#5a8bEboay#Z#V#U#Z#Zaeama6bUb4bFbFbFbCbFbHb.aIbuaIaeamamaeaebaboaSbaayaba9bvbvbCbDbvbrbvbrbvbFb4bFat#1#VbDbibMb3bUbDbqa4a8bcbhbLbkaq#9#C#C#C#Qai#C#Q#Q.U.U.U#f#QaeaZb4b9bSbFbFbFbSbFbra0a1aXa1bJbLbLbPbQbDbDaSaaaDbQb2bHbFbPbSbObSbPbSbSbSbUbPbPbDbFb2bDaSanaKbAb4bJbHbSbPbHbybDbObCbFbPbZbvbwbwaD#V#r#G#g##", + ".Q#h.S.8.8.8.8.8#o#E#V#8aZbMbebPbobsaf#Zam#Z#J#V#J#b.z.K.z#J.2#b.n.f#d.K.zafa1a1bra1aCbsb2bDae#E#D#F#J#Zawbqbqbqam.5.K#Ja6a8anaKbqbBaMaCbCbFbHbOa3aebjboamabababaeayboa6buav#Z#V#1#5aSbfbCbvbvbrbsbrbFb4bCbCaJabbEapbYbLb4bHboaSa4aSa4bcbLbtaZaq#C#C#C#0#0#C#C#f.U.U#C#CaaaFb4b4bFbFbHbObHbSbCa5a1a1a1bmbLbJbLbPbLbsbi#z#9aqb2b8bPbSbObSbObSbPbSbUb2bSbPbPbPbHbL#Q.jaIbDb1bHbSbPbPbPbAbAbFbHbFbFb4bCbobta4#5#F#G#D#b", + ".A.A.A.7.8.8.8#t#o#M#0#8aNbIbJbAbga6#a#5#Z#J#Zaeaqaeawaa#E.p.v.A.z.m.J#r#UavaQa1a3ayaf#U#S#Z#Z#Z#r#VaeaIa8bqaIae.X.2.2aqaSawana8aIaT.5.5atbebea3aQanbca6#Z#r#Z#ZaebobqboaM#5#5#5#1#S#S#Zama1brbvbCbvbSbObCbFbFbFapbfbMbUbDbCboaSa8bkbcbobDbMbtbtaF#P#C#C#9#0#0#z.U.3.U#C#Qaqb2bSbSbFbCbFbSbHbFbCa1a5b#bnbJbDbCbPbPbAbs#z#JasbwbQbobPbPbPbSbPbSbUbSbSbPbPbSbPb2bE#Q.Ba4bUbLbPbPbSbPbPblbubDbHbFbFb4bObmbwbb#8#S#G#G#w", + ".1.1.1#y#I#p.8#D#D#x#V#8aNbDbGbobmab.T#Z#r#r#g#M#J#Jaqbkbka3aK.K#b.w.n.K#n#5ab#Z#Z#Z#S#T#F#x#g#r#raebka8aTaDaaae#ZaDaSa8bcataMa8aIam.H.C.C.s#GabamaLbca3#F.s.n.SaZa6aMa6#5akakaf#G#U#r.w.s#raCa5bvbCb4bvbrbCbvaU#1bQbQbHbKbKbsbobibvbvbfa8blbMbtbwaZ#P#Cai#0#0#J.u.U.R#C#PaqbQb4bFbFbCbObSbObPbCbda1a5bdbLbCbCbPbPbCbsbb#9asboa6aSbubQbHbQbUbQbPbQbHbPbPbPb8b0aF#Q#QbobPbQbPbObFbPbPbpblbCbObFbFb1b2bebIbtad#S.6#.#O", + "#d#d.1#N#N#p.8#S#x#u#VadasbwbPbJaf#a.0.K.z.s.p.s.0#0aZbBbEbkbw.F.q.j.n.s.s.s.z.Y#r#E#E#U#r#S#r.5#raDa4#0#0#0#0am#Va8aSaeae#5bcaea6#Z#r#r#l.C#raea9boaM#Z.2.K#gaebfbfbfam#5#Z#1#q#w#r#r.2.X.5#G#UapbibHbrbsbrbC.DaybMbMbCbSbSbSbPbHa3#5#ZabaaaHbBbtbwbb#9#0ai#0#Q.q.u.U#C#CaibDb4bSbFbCbFbFbFbSbCbma1a1bdbCbLbJbCbFbCbCbLbhaFbfaIaqbobDb0bQbQbSbHbHbFbPbPb2b2bqbx#0biaIb2bPbObHbSbPbPbobubCbFbSbObSb4brbtbGas#S.T#N#v", + "#N#d#d#j#o#y#o#L#P#L#6adasbjbPaO.p.p.s.z.y.A.s.C#9aNbBb5b2bMaS.s.2.z.f.f.n.n.n.f.p.n.s.v.H.6#a.K.X#Zbkaq#0#8amaL#oaeaS.z.s#Zaf.Kay#E#r#r#ZabaSbfay#5#Z#r.X#g#5boaMboaM#5#U.H.n.n.n.s.q.z.w.C#a.H#waSaIa1biayaT.paQbwbxbxbHbqbqaIaead#Z#r#r#5aeaqbmbwbta4ai#9#0#Z.B.B.u#C#C#0bBb9bPbFbCbObObFbSbCbra1a1bdbybPbCbCbCbCbDbMbzaIbca6aaa6a6b2bRbEbDbDbCbHbPbPb2bqboaIana6#zbobUbCbObFbObPbBbCbHbSbFbSbOb4bFbhbIaD#8.A.Z#v", + "#d#N.Z#h.8#o#s#D#L#I#TadaHaWbs.6#a.H.J.s.H#wambbbkbMb5brbvb0ab#g#0.W.m.g.h.n.s.n.p.h.f.p.p.s#r#x.z.Kaba6aSanaV#5#JaSaf.s.C.5.K.S#V#r#Vakakaf#U#G.K#g#U#Z#U#Va6aSbcbq#5.s.n.h.f.i.f.f.f.f.n.n.w.CaqaC#J#V#UaD#V.yaCb4bDbHbvaSaIaw#5#Z#Z#S#U#D#I#JaabjbDbzaK#9#0anan.R.u.U#C#PbAb8bSbObCbFbFbSbFbHbva1a1bebybLbCbrbCbAbDbjbbaIbobsasa6aabobzbEbBbobDbLbPbQbPa6aTaWbo.B.qanbUbCbCbSbObCbAbCbFbKbKbKbFb4bPbabIaZ#V#c.0#A", + "#d#d.N.Y.7.8#c#E#M#T#T#7araW#G#G#X#m.s.s.C.Ka2bMbIbwbPbeb2aE.p.H.C.w.w.m.p.p.p.n.v.s.s.K.K.s.q.w.s.s.S#8aIaSae.2.2#Z.s.s.C.0.s.s.z.K.2#r.5.s.n.p.n.n.s#r#ZabbkbcboaS#U.H.s.f.i.f.e.f.s.f.f.s.2#0aS#Z.S#Zaw#r.5.6aJbSbFbPbcanananaa#Z#1#S#U##.w.S#E#0a4bBbIaF#0#0aaan.u.U#P#Pbfb4b4bKbCbObFbObHbSbCaYaYa9bmbPbDbAbCbAbGaWaD#QbobaaIbsaDbubUbAbobAbDbPbDb3bAayaLa8bs#Q.q#0bUbrbybSbFbCbCbCbCbCbFbSbSbSb4bsbwbhab#w.A.L", + "#d.M.A.7#O.8#E#x#u#u#M#6araWaC.v#G#w#M.s.s#TaZbJbVbGbAbCa1.D.p.p.v.v#Xab#D.v.F.p.n.n.s.v.s.s.B.P#J.y#V#0aa#Z#Z#V#J#J#J#E#0#Z#r.C.s.z.z.K#m#M.Q.C.s.s.z.X#F#ZanaIab#r#c.K.s.n.n.n.e.f.f.s.s#J#Vayae#m#uaa#V.5a#aCaUbHbFbQaIababaeab#8#V#S#U.K.s.q.K.2#3aLbIbQaK#0#Qai#J.u#z#PaSbQb4bObFbObFbObObObCa1aOa1a3bHbPbAbCbDbu.B.q#Qa6a8bsbjaKbob2b0bAbDbLbDbDbca9bcaBaRbPaM.B#Zb5bmbrbObFbCbCbCbJbCbNbOb4bSb8bSbkbtae#F.C.2", + ".X.X.S.7#o#E#n#n#n#J#r#S#8aRbba9.6.D.T.w.w#4acaZbVbRb2bvaJ#q.v#Ga1bAbLb.b.a2a2bf#q#D#U#a#1#G#l#r.H.p#g#V.K#J#V.2#V#9#9#3#3#9#T#I.w.w.G.S.Y#l.5.z.z.X.S.z.2#V#r#r#r#r.Y.K.s.n.n.p.n.s.v#Gaeaeak#U#E#c#D#1aCbvb4bSbDbSbHbC#Z#Z#G#5#5ae#E#U.S.s.f.s.2.K.S#uaqbLbMaF#P#zaI.R.R#Jaebob4bObFbKbFbHbHbObCaQaEa1a3bAbPbDbCbLa6.q#QbibsbmaHaias#0blasbkbcbBbB#0.qatboblbAbPbsatakbSbmbybPbrbybJbJbObFbKbFb4b2b4b4bBbMax#J#b.K", + ".1.Z.F.X#c#J#J.2#r.5#w#1#8aHa4bTbs#G.v.y#j#4acaWbIb5b2bF#q#i.6bDb2b2b0bbavaEbDb0bBbma3bMbQbRbq#1.vaB#Z.H.D.T.6#8#S#Z#S#U#5adaqasaqaa#8#M.X.X#r.B.z.z.w.2#J#J#F.X.s.s.s.s.s.n.n.f.n.z#Zaeae#1#ZabaGbobQb0b8b4bPbPb2bFbCay.s.v.C#V#Zae#Z.z.n.n.n.s#nab.H#M#VaeapbDan.Raa#0.R.B#ua4b7bSbHbFbHbFbFbObsayaEb#b#bmbPbLbAbLbDbcanbobsbsas#3.j#9a8aqanaFawbM#z.janaKbPbPbSanaMbibUbCbCbPbmbCbObObFbFbFbFbSb7bSb8bMbQa4#V.H.2", + ".y.O.D.T.6#x#z.2#q#l#g#D#7asaRbIbPbmaQ.v.A#VaqaNbEb5b7b2aJ.6apa1aQbdbIbt#8.n.6akaGaWaRaZa4bhbkaZ#8aRa4aK#8#5aqaSbkaZaZaRaZaNaFaNaxaxaNaZab.P#U.z.B.B.s.n.n.f.K.X#l.s.s.s.s.q.s.s#Jaean#Z.6atbLb3b2b4b2b3b2bCbCbSbSb2bD#D.n.g.f.v#r#Zan.2.n.s#Z#Z#UaqaI.0#V#S#qbsbs#V#QaF#z.u.RaRb4bSbPbHbFbFbFbFb#aJaOb#a1bebQbPbCbDbc#QaSbsbAbrbGan#zaabaaNaSanbkbqa6bqaDa4bSbPbSbvbqbBbQbAbPbObCbCbFbObKbFbFbFbFb4b4b4bMbMa4#8.6.0", + ".N.O.D#.#i.K#u.8.V#x#D#G#UasaNbkb0blboaQ.p#SaKaGbzb3b4b4b4#qbsbsaGa.#5ajaB#S.A.h.w.A#a.D.H.y#aafbDb0bQbQbQbMa8aZbbbhbtbwbwbIbGbkbhbba4aKa4aqam#X#J#b.X.s.s.f.n.s.C.6.2.Q.K.s.q.K#U#r#G.6akb2b7b4b4b4bQb2bUbQbFbCb2bSbDaq.s.e.e.n.s#JaaaaaebcbqbcbcaKaean.F#Z#a#1bQaC#raK#C.u.uaFbMb4bHbFbObSbFbObia1a6b.b.bmbPbPbLbC.B#zatbcbsbobLbsaaaabAbjboaSbqaSbqbDaWbDbLbPbPbCbHan#QanbHbPbCbCbObObHbFbCbCbFb2b4bPb0bMbtaw#F.F", + ".1.9#i#i#i.F#b#c.5#G#X#G#SadaNbbb0bQblba#1#GaLaybzb3b4b8bC#Xb3bIbk#V#8#5#X#1#1#a.p.G#c.C.r.n.A.s.t#G#V#M.S.Q.w.5#U#l.Q#c#U#1#U##.C.C.C#JbGb2bQbq#XataZ#m.s.f.s.n.f.p.v.C.s.s.s.K#1atakaUb8b8b4bHb1bUbSb4b8b4bPbFbFbPbqaa.2.e.g.g.f.KaDbbbqboblbqbqbwbcaq#V.F#l.DbCa6#ZaF#P.3.uaqbAb4bFbFbFbSbFbSbiaQbfbobfa3bLbPbLbBaI#0bibDbAbmbsbPbuaqbAbAbsbfbo#0anb2bAbLbPbPbLbmbiaMaFbibHbCbJbJbSbSbFbFbCbCbCbCb7bPbPbMbBaKad.Z", + "#j#R#Y#i#..C.M#O#t#D#H#c#tabaNaZbMbMbQbBbf#wajaIbzb3b4b2bSbHb2blaK#Zabaqaq#5#X#X#q.6.y#b#M#b.w.r.h.l.h.d.h.h.r.s.r.o.h.h.h.o.v.6#D#Sama8bIb2b3bBa6.6#G#Z#J#J.p.s.p.n.p.s.s.s.5#Ubwb0b7b4bSbHb1b4bUbSbSb4b9b9b4bPbSbDanaa#J.n.f.f.faba6bqboaSaIbcbkbkbkblaF#9#S.Hapboabaq#9.u.uaabub4bObFbFb1bFbWb#aObabfbda3bCbPbDbs#Q#QaIbAbsbabobDbBaWa8bj#Q.qanananbcbCbLbPbPbCbmbsbqbiaSbHbCbJbFbObPbObObCbybCbCbPbPb0bIbIaRax#.", + ".X#h#i.O#H#A.1.7#M#I#x.2#g#VaNaKbGbMbMbYbc#1#ZbcbQbLb4bSb2b4b5bMa4#Z#s#o#Vaaaaam...a.p.D#l#l.A.h.l.h.h.p.v.v.o.p.p.v.6#q#X#X#1afafaMa8a4bwbQb2b5bDa6#X.p.p#w#J.5.f.f.n.n.z#bbabbbMb7b2bObFbFbCbFbSbCbSbUb4b8b9b4b2boaqaa#V.s.s.safa9a6boaKaIbobqa4aqaiaKbqbtbka.aCbBaCaeaq.u.u#Vblb4bObFb4b4bFbWb#aObdbdb.b.bsbPbLbsa6#0#QbvbAa2blbobqbkbB#Q.j#Qana6a6a6b0bQbPbPbCbCbAboananbxbCbCbFbObFbFbFbCbmbybCbObJbPb0bMbbaN#T", + ".K#a#q.O#H#v##.Y#o#T#c#c#g#VaNaNbhbYbEbz#U#UakbMb0bBb4b8bPb5b8blaKaWaN#V#T#0aqaa#q.d...c.p.o.p.6#G#G#G#G#D#U#G#X#X#GafakafakakataGaWa2aZa8bQb2b5b8b4bqaM#X.p#aan#F.n.n.w.P#8bkbzb2bSbFbFbFbObSbUb1bUb1bUb4bSb4b2bHb.aqaKaq.S.s.2bqa6aIawaDbcaI#r.2#J#3aaaqbkbkaZbqbQaM#0aF.3.u#0bjb4bPbFb4bSbFbSbda3bdbdb.b.bmbPbPbCa8#0#QbsbAa2bobaaSbkbB.q.jaMbqbsbsaSb5b2bPbDbmbrbvboaIbxbFbCbCbFbObFbFbFbCbubAbCbCbNbPb2bVbwaR#V", + ".V#a.y.9#d.S#s##.7#T#M#M#F#VaqaNa8bQbYak#G#abfb2b3bxb0b4b2bPb5a5#5#VaqaZaxaaatae##ak.#...D#U#1#X#U#G#G#q.6.6#q#G#XafaJa2a6aIawaZaWb.aSaTaKblbUb4b9b8b4bAbDboaf.D.6#F.w.P.PaqbtbQbQbCbFbDbDbFbUbSbCbrbibSbUb2bSb4bea1amaF#9.2#baqbqa4#8aaaSab.z.z.s.w.w#IaraIaZbkbQb2ba#9ax.U.u#Vbob3bSbFb4bSbSb1bma1a3bfb.a3a9bPbPbDa8#QaSbobAa3bfa3aIblbE#z#QbxbsaeaIbQb4b3bQbBbabfbmbQa6bSbCbrbFbSbFbFbCbFbObybybCbCbJbOb3bGbVaZ#8", + ".V#a.F.y.1.Z#d#B.8#I#t#g#g#OadaxaZb0aJ#X#wafbQbEb3bqbMb8bDbCb4a5#U#M#J#9aqaIaCayaqap.d.#.6af#1#U#U#S#a.6#UavaIaQa6bcaKaKaKaZaWaTaFaGaSaTa4a8bAb2b8b9b2bPbUb2bQbDak.p#x#3#MbbbIb0bHbPbCbFbSbUbFbrbda1aJa9b2bZb9b4bvau#5#9#3#JaqbkbBae#r#Uab.S.5#UaCaIava.#8anaKbtblbDbLai#9.u.u#Jbab5bPbPb2bSb4bSboa1a3b.b.a3aYbPbPbDa4#0aIblbsba#ZaIbfa8bQbqaM#rbsan#Qbxb0bc.janboa3bdbvbUbSbrbmbFbFbFbFbCbFbFbybrbCbCbCbCb2bGbMbkae", + ".V.0#a.A.T.6.T#D#c#N#4#R#k#D#SaNaKbL#1aka1bEbqbBbYbLb2b2bPbUbSa9.z#b.B.z#b#xafbcaW.h.#.a#G#U#E#J#z#0.5#maIbla8aSaKaFaKaTaSa4aTaDaFawaMaWa2a8bcbUb0b9b4bHbSbDb2b0bw#a#8#9#8bkbQb2bHbSbSb4bUbCa9aQaCaJaQa6bSb2b4b9b4aCab#V#3#Vbbbkbc#U.D#V#V#UbcaCaGbka6a2ak#VaxaDbhbabMaq.U.3.R.Rbfb4bSbFbZb1b2bSbob.bdb.b.a3a3bLbPbLaS#0anbkbAbo.q#QbobBbzbE.j.jbqaMaebAb4bY#Q.jana6b.a6#Qa6bibdbCbKbFbFbCbFbObCbrbCbCbCbCb2bMbpbIaH", + ".5#a.H.F.O.6.F###j#O#N#O#R#O#SavaRblbQbhbwbkbcbqbRbkb8b2b4bQbCbe.C.B.P.s.w.Q#ZaK#a.#.#.d#1#w.2.B.K#Z#S#xawbuaLaDaIaLbablbobla8a8a4bbbjbja6a8babUbQb3b9bSbHbFbCbSbU#1#1as#8aZb0b0bSbSbSbSbFa5a3a5aUa3a3a1bibZb4b4bSbPaf#UaeaqbkbIaC.T.F#0#E#J#DaCbqbtbqbc#1#5bb#8bfa8bMaI.U#P.3.3b.b2bSbObSb2bPbPbAa9b.a3a3b.b.bAbPbPa4#Qana8bDboan#5bsblbbbQ#Q.ja6bcaSbLb8bHan#Q.ja6a2bra6ata5bdbrbFbCbCbCbrbFbFbybvbCbCbCb0bVbhbMa4", + ".Y.V.M.C.A.C.H#a###B#s#t#O#B#S#5aZa8bQbfbIbQbcbYbIbbb2b4b5bCbva5.H.P#b.G.C.Q#MaaaS.a.#.h#1.6.z#z.X.y.H.HaDbuaKaDaSaQa3a2aWaLanawaIaLaSaJa3bcbob2bUb0b5b4bHbFbFbSbFaf.pavabbkbMb4b2b4b2bFbrbea5aJaMaMaMa9a9bUbSb4b6b4beaf#UavbhbQaf.v.van#w#raMbkbqbtbtaL#aaebbayaMaWbMaS#0.U.3#eb.b2bSbFbPb4bsb0bsb.a3a3a3a3b.bmbPbPaSanbka4bCbj#0.Ba6a8a6bob3anaFbibAbQb0bsa6bq.uatbabd#0aQbmaLa7bybCbFbnbrbFbFbCbvbCbCbCb0b0btbGbG", + ".Q.V#..M.A.C.5.Y#a#a.7#M#F#l#O#7aHa8bMblbwb0bMbqbhbbbzb4bPbvbva1#r.z.S.G.w.z#Va4.T.d.h.caf.p.C#J.C.p.K.vaqaRaNaRa8bobobobBbDbAbobBbBbbbsbDbBbwbwbPbUb2b8b4bHbFbSbFbHaM.vakbMb3b4bSbUbraQaJaJaUataQaQaMaQa3bFbUb4b9b9b4aJ#1a.a9bG#1.p#w#1abaGbbbkbtbka8#G#5a4bbblaubab2bcaW#P.U.3aLb0b1bObPb4bmbQbAa3b.a3b.b.bdbmbPbPa6#Q#Qa6bDbj#Qbcbobfbha8bqbYbQbsbAbDbDb.bgbaaS#Qa3a1bvayb#azarbybDbHbna5bFbFbHbCbFbJbCbPb0bwbkbV", + ".Y.V.V.C.A.C.S.V.V.V.8#j#v#B#D#UavbfbBbwbwb3b0aM#1btbIbsaLb.byaC#M.w.w.G.z.K#Zam.b.d.a.aap.v.C.2#0af#w.sabbkbpbGboboblbcbibsbobababaa8a6a9baa3bbbQbMb2bMb8b5bPbHbPbCbC#1#1b3b8bZbCbSaJaQaUaJataUaMaJaJa3bvbrb2bSb8b4b4b4apa#a.bqak.6#wavbcbka4a4bka6#aayaqa4btbBaJbob4bfa4#9#f.3aDbQb2bObSb4bobLbDb.a3b.b.bdb.bdbPbPboananbsbCbfaTa6bsbjbgbjbjbQb0bDbba8boaVaVaqbq#Qa6aSbd#QaGaLarbAbDbPbnaEbCbPbQbCbCbObCbJb2bBbhbV", + ".2.S.Y.2.X.C.H.T.F.A.M.V.M#v#UaVavaWbtbQbBb0b3aJ#1blbwa5aqbAbCav#L.R.q.w.W.H.5#V#9#8.D.##w.p.K#ra4bsbca6bqbwa8aWaWaTaFaqataQaWaSaQaWaWa2aSaJaMa6bQbQbUbQb5b4b8b5b5bPbCapafb5b9bCbvbva5aJaUaUa5bibibebia6aSa3bUbPb4b4b4b4bPaC#1afaQakakbkbtbbai#V#D.5avbbbkbtbtboaubobPbia4#9#C.U#JbDb2bFbSb4bAbsbDa3a3bdbfbfbfbabPbPbCbca6blbsbiaeana6bmbjbjbjbkbEbGa8#0bubgaVaLbwbca3a1bdaQb.azazbubPbLa0aobAbHbFbCbCbCbCbCb0bGbbbI", + "#m#m.X.Y.K.K.6#i.F.A.M.M.V#.#Oaubjb.bbb0bMb0bMa6#qaDaIaMaqbybCaWaa#L.G.w.w.s.H#V#9aa#1.a.p.p#U#raSboaqaKa8bla8aWaZaKaKaHaGaMaSaYaQa2a2aSataCaMaQbabQbQbUbQb2b5b1bFbobDbia5b8b4bCbPbHbvbvbvbea9aMa1aQaJaIaVaMbCbUb4b4b4bSb4b4bDbPbQbaapafbfbtbbbba4bbbtbta4aRa4aMaYbAbCbJaWaN#e#f#bbDb2bFbSb1bDbmbPbaa3bebfbfbcbdbDbSbDatanbabAa9#Q#zaebibabjbl.BanbqaW#Va4baaeaIbwbmaQaOa0bmbmazarbybPbPaPagbnbCbCbCbCbFbCbyb0bMa8bt", + ".8.2.M.M.5.H.T#q#i.C.Y.M.V#.#O#SasbubpbMb0b0bIbA#q#VaDavaebiay#VawaR#9.I.y.s.s#L#9#9ab.d.h.v#Z#5bsbBaKaIaKaKaKaRb.aWaFaIaIaGaSbaaSa2aQayaIaMaJa2a6b2bMbQb2b3bPbFbDbAbobsbXbPbrbvbSbxbFa5aCaJaMaJaJaMaJaVaVaQa9bSbPb4bSb4b4b4b4b2bCbPb2bPbDb2b0bIbta4aNaaaiaWa2aJbfbmbCbOa8aD#C#e#JbDb2bFbPbSbQbfbPbab.bdbebfbfbfbCbQbLbAbsbmbAbsaM#0anbibabjbc.jaSa4aq.RaFa8a6anbBaYaOaOaObea7ajasbCbPbPaEa#a3brbJbCbCbFbFbyb0bVbjbb", + ".Q.7.Y.S#a#a.A.T#a.F.M.4#H#N#v#h#7aBbub0b0b0bVbQ.D#ZaDamakab#M#x#I#Taqaq#O.H.z#6#9#9av.h.d.v#5akbMbfa6a8a4aTaKaKb.aTaDaIaQaSbCbQbPbDbsbDbxbDbDbHbFbMbQb0b2bQbPbPbPbHbDbCbPbPbDbvaJaka9beaJaMaJaCaMaCaJaQaLaMaCbFbPbPb4b4bSb4b2bDbPb2b2bUbobjbDbDbPbIbbbhbua1aJbubmbsbCbCbmaF#9.U#zbAb0bFbSbFb2bfbQbfb.a3b.bdbjbjbAbSbLbAbAbsbfbfaS#QaMbqbabjbc#QbcaZ#0.uaqa4#Qa6bcaGaOaOa0beaVazarbCbPbPaEaua3bibrbCbvbFbFbrbPb0bha4", + ".Q.8.Q.K.K.M.A.F.1#a.Q.M.4#R#.#h#WajaBbBb0b0blbq#GakaZaZae#S#x#I#I#L#u#Saeayaq#9#9#3aT.d.h.v#ZaQbsbfbfbfbaa4aZa8a4aLaSaSaMaQbobra.#1.6#G#1a.apayaUaQa6bPb0bMbGbUbUbPbsbDb2bobm#U#r#UapbSa9a9aQa9bebebibfbobcbibibSbCbHbSb2b4bCbPb4bSb4b4bPbCbsbrapaJaUaJapaUbCbCbCbvbCbCbsaTaq#C#Cblb2bObFbDbPbob2bAbda1aOa3bdblbobSbFbFbCboa2anan#zanbsbfbjbmaManaxaN#z#0bh.BaSaLaAaXaPa0a1aYaLarbCbPbPaEaEa3a6aVaLbebCbFbFbLb2blbh", + "#q.7.M.C.4#j.V.0.M.Y.M.M.4#j#v#O#X#1ava2b0b2bBbo#Gapabbkbba6aT#Z#I#b#b#U#F#rabaNai#9aN.h.h.v#Ua6baa6bfa6aWaZaWa8a8babca6bobsbDbs#1.p#l#G#r#w#l.p.p.TafayaCa1bibebrbrbibObAboan#0a8biaUbSbPbDbsbrbibibfbjbaa8a8a6a9bSbPb2bHbObCbLbubeb2b5bPbFbFbCbFbea1a5bsbvbCbCbCbsbCbCbva6aK#3#CaZb2bPbFbJbDbLbPbPbea1aOa1b.bfbcbPbObObCbja9an.B.BaSbqbab.bgbfaiaKax#zaaaS.ja6aEaAaPaUa5a1a1aLazbnbJbCaPaEaQbabdaja7bybFbCbFb3bpa4", + "#a.Y.M#B#O#S#O.V.M#a.0.Q.7###s#Za1aUayaLbDb2bQbMakak#U#GaQa3aDbfaV#V#x#g#E#S#T#maDaxaR.v#a.D#1bqa6bfbsbvbwbBbtbubBbAbcbcaSa1aSap.p#r#UaKaSaSa4aSanafaCabataCamamaWbPbrbsbfa6#0aeaIaGaObQbsaJa1aJaMaMaMaLaDayaIaMa1bDbUb4bFbSbPbdbMa1b5b5bQbPbObPbJbCbsbsbCbCbCbCbCbsbCbFbCbfa6aq#CaZb2bPbFbHbAbPbPb2bia3bra1bfbabfb1bSbObPbmaYaQaI#QaSbsbjbmbgaza4aRbb#9aNaM#0biaEala5a0a0a1b#a7aXbmbCbraJaEaQa3b.aHarbrbFbFbCb2bBbj", + ".V.M#1bHbKbFbK#1.M#D.Y#E#S#S#p#U#7aJblbubDb2b0bMaEaCaM#F.p#XapataIa8aQ#ZabaBar#u#baZbFbFbF#1afbDbobsbca6babFa4a2a8bca8a6aIaCaCa3#a.K#z#J#PaebFanaea5bFbibQbMbqaeaebsbSbFbPaa#0#0aqasajbobFa5bebrbibia6a3a3a6a6bobfbAbobPbUb2bCbFbQa1a5b5b4bFbFbFbPbAbCbCbFbCbCbHbCbmbvbCbCbfbaaF#faNb0bSbHbCbsb2bPbUbrb.a3a1a1b.bsbFbSbWbFbCaYbfbHaSaTbDbKbFbFaPaiaRa4aK#QbcaFbeaEaPbKbna1a1b#a7aXbCbCbnaPaAaOb#b.aHadaVbFbCbyb3bGbb", + ".Q#1bP........bOakbSafbKbFbFambFbHbFaGbFbFbFb2boa1bsbFbwbFbFbHaEbFbFbFbobFbHbHaeaabF......bFbFb2bFbfa3bfbF..bFaSblbFbqbFa2aGbi#q.p#r#J#J#VbH..bFaSbF..bFbUbSbs#GbFbBbF..bFaeaeataJae#5a2bHbHbea9a6a6bfbibCbFbPbFbsa1bma2bSbSbF..bFa3a#b5bF......bFbBbCbFbCbFbPbFbHbsbCbvbsbsbfaI.U#9bYbPbFbCbDbPbUbLbCbda3aOa1bmbF..bFbF..bFbAbF..bHbcbK......bPbOaxaRaSaKbca4a1aUbK..bFb#b#b#a7b#bybya0aAaAaPa3bdaBadarbrbFbAb0bMbh", + "#EbS.abKbFbFbF.abS.abK.a.a.abK.a.a.abK.a.a.bbFb2bsbF.abK.a.a.abS.a.b.abF.a.a.abSaKbH.abKbFbF.abK.abKbububF.abKbfbF.abK.abKaSbfaJ.h#E#V#0#0bO.a.bbF.a.bbFbvbQaCbO.abKbF.abKan#ZataJan#8a2bHbSbsa3aMaLaQa1bF.abK.abKaQbCbDbebrbF.abKaOakbF.abKbFbFb2bSbFbPbFbPbF.abFbPbDbvbvbPbDaS#0aib0bSbPbDbLbDb2bCbPbmbdb#a0brbF.abKbF.a.abK.a.abKanbH.abKbFbF.abObobaaKaZblaQa5bF.abKbeb.bgbgbnbna0aAaAaAa5bga3aVadasb.bFbJb0b0bp", + "#UbK.cbF.c.cbK.cbF.cbF.cbK.cbF.cbK.cbF.cbKbFb8bFbFbF.cbF.cbK.cbF.cbF.cbK.cbK.cbFbzbF.cbFbF.c.c.cbKbLbFbFbF.cbFbF.c.c.cbKbBbFbFbFaObSbFbFaKbF.cbF.cbK.cbFbFbFbF.c.c.cbK.cbFbFa6bObFbFaIbFbFbFbFbFbcbFbFbF.c.c.cbKbsbFbFbDbFbFbF.cbFbSaCbK.cbFb2bFbFbFb1bFbFbF.c.c.cbKbFbSbFbSbFbqbObObFbFbFbPbQbFbFbFb4bFbFbFbAbFbF.cbFbF.cbK.cbK.cbFaSbF.cbFbF.c.c.cbFbFbFbhbFbFbFbF.cbFbObsbFbFbFbCbSbKbKbebFbKbAbFbObFbgbFbFbFb2bh", + "#DbF.ibF.ibKbF.ibF.ibF.i.i.ibF.i.i.ibF.i.i.ibF.i.ibF.ibF.i.i.ibF.i.i.ibF.i.i.ibFaRbF.i.i.ibK.ibK.ibF.i.ibF.i.i.ibK.ibK.ibF.i.i.ibH.i.i.ibFbF.ibFbKbF.ibF.i.i.ibK.ibKbF.i.i.ibF.i.i.ibF.i.i.i.i.ibK.i.i.ibK.ibK.ibF.i.ibF.i.ibF.i.i.ibKbF.ibFbF.i.i.ibF.i.i.ibK.ibK.i.ibF.ibF.ibF.i.i.i.i.ibFbF.i.i.ibF.i.i.ibF.i.i.ibFbF.ibFbKbF.ibFbcbF.i.i.ibK.ibK.i.i.ibF.i.i.ibF.i.i.ibF.i.i.ibF.i.i.ibF.i.ibF.i.i.ibF.i.i.ibFbt", + "#ObK.mbK.m.mbK.mbK.mbKbFbF.mbK.mbK.mbKbFbF.mbKbFbFbF.mbKbFbF.mbKbFbF.mbKbFbF.mbKasaqbObF.mbF.mbF.mbK.mbKbF.mbK.mbF.mbF.mbK.mbK.mbK.mbK.mbKbF.mbKa4bF.mbK.mbK.mbF.mbFbF.mbK.mbK.mbK.mbK.mbK.mbK.mbF.mbK.mbF.mbF.mbK.mbKbF.mbKbF.mbK.mbFbF.mbKbF.mbK.mbK.mbK.mbF.mbF.mbKbF.mbK.mbK.mbK.mbK.mbKbF.mbK.mbK.mbK.mbK.mbK.mbKbF.mbKbPbF.mbKbobHbFbF.mbF.mbF.mbK.mbK.mbK.mbK.mbK.mbK.mbK.mbK.mbK.mbK.mbKbF.mbK.mbK.mbK.mbKbw", + "#7bO.rbObKbFbF.rbO.rbFambO.rbO.rbO.rbObFbF.rbOb0b3bF.rbObSbF.rbObFbF.rbObSbF.rbOaQ#8bFbF.rbO.rbF.rbO.rbObF.rbO.rbO.rbO.rbO.rbO.rbO.rbF.rbObF.rbFbEbF.rbO.rbF.rbO.rbSbF.rbO.rbF.r.r.tbF.rbO.rbO.rbO.rbO.rbF.rbO.rbO.r.tbF.rbObF.rbO.rbObF.rbObF.r.t.rbO.rbO.rbF.rbS.rbObF.rbO.rbF.rbO.rbO.rbObF.rbO.rbF.rbO.rbO.rbF.rbObF.rbObFbF.rbObFbqbFbF.rbO.rbO.r.r.rbO.rbO.rbO.rbF.rbO.r.r.tbF.rbO.rbF.r.tbF.rbO.rbO.rbO.rbObt", + "#y#1bO.E.y.E.EbObF.EbF#7bF.EbF.E.E.EbF.E.y.EbFbtb2bF.EbFbvbF.EbFbHbF.EbFapbS.EbFbvbF.E.y.EbF.E.E.ybK.y.E.E.ybK.EbF.E.y.EbF.EbF.EbF.E.E.EbFbF.EbFbfbF.EbF.E.E.E.E.E.ybK.EbF.EbF.EbObFbF.EbF.EbF.EbF.E.E.y.E.E.E.EbFbO.EbF.E.E.E.ybK.ybKb8bF.E.E.EbFbObF.EbF.EbF.E.y.EbFbF.E.E.EbF.EbF.EbF.EbFbF.E.E.E.E.EbF.EbF.E.y.EbFbF.EbFbSbF.EbF.EbF.E.E.ybK.E.E.ybSbFbF.E.E.ybK.ybK.EbF.EbObFbF.EbF.EbFbO.EbF.E.E.ybK.ybK.ybKbt", + ".4.1#1bObFbFbFaaaabF#Z.Z#8bFambObFbFambFbKbFava4bVbrbFaCapbvbFa8a8bDbFbvataZbFaUa5bqbFbKbFbSbFbFbKa4bKbFbFbKaIbFaQbFbKbFaCbFakbFaEbHbF.9bFaQbFaMaCa3bFbsbFbFbFbFbFbKbqbFbsbFbF.9.9.9bFbFbUbFb2bFbPbFbFbKbFbFbFbFbF.9.9bFbFbFbFbKbPbKbYb0b3bFbF.9.9.9bFbFbSbFb4bFbKbFbBbAbFbFbFbjbFbwbFb2bFbPbPbFbFbFbFbFbPbFbAbFbKbFbXb1bFbSbFbmbFbibFbLbFbFbKa0bFbF.9.9.9bF.9bFbKbebSbrbFbF.9.9.9bFbFa0bFbF.9.9bFbFbFbKaVbFbAbKb2bh", + ".7.M.A#l#R#W#O.2#b#S.5.Z.M#S#b#E#S#F#b#F#S#8#SaLbtbm.D#1akboa5aq#9ambfbsbvaZaTbvbvbkaJaCa9bsbfbcblaSaKaKaFaKaFaDaeae#Z#F.s.5.QaebF#A#q#AbKananawaeaqaLawaIaIaIaIaSaSaSbibvbQbQbFbFbFbQbPbDbQbPbQbQbQb2bQbQbSbQbUb2bFbFbSbHbPbUbSbvbvbMb0b2b5b4bFbFbFbSbSbfbabDb2bJbwaIaFbfbiaFaNaLaDbkbIbPbFbAbLbAbPb0bSbPbsb.bnbdbebCbPbWbFbFbra7bfaSbfbib#aEaoazaObFbFbFbF#AbKb.aOaPa3bfbnbFbFbFaPaAahaPa0bFbFbdaHavadadajaHb2bLbh", + "##.Y.A.L#N#A.Z.5#k#c#a.6#a.M.Q.V.7.M.M###x#T#6aIaZb0.papbHbFbFbKas#5aqaKbqbwbwbvbvbwbvaJaJbvbfbBbMbQbMbEbzbGbzbqbqbkbca6a8bcbhbhbqbSbObKbLbobDbFbDbDbHbDbqbqbqbqbobsbvbHbHbDbHbPbPbPbPbDbQbPbHbQbQbUbFbFbFbUbPb2bFbHbrbvbFbDbUbHbia3bLbIb0b4bObHbFbHbKbSbibobhbpai#9#z#Q#0#0aiaiaTaLa8bwbXbFbPbFbAb0bFb2b2bFbmb.bmbFbCbSbFbSbFbCaVaVbmbma9aUaAao#7a.aOaG#QatbSbQaOaEaPaSa1a5a5a0aPagahahapaEa1bfaHazaj#6#6#6a7b4bGbG", + "##.M#v#j#H#A.M.V#a##.Z.T#..L#a#h#c.7#N#s#M#9adaLa4bQ#XbS........bSaybKaIbFbFbFbHbFbFbFbSbKbKbFbLbaa6bQbFb4bFbFbKbUbFbKbFb2bFbFbFb2b2bF..bFb2bF..bFbF..bFbLbDbBbzbDbvbDbHbHbHbPbHbHbUbFb2bQbPbQbQbQbF......bFb2bF..bFbZbF..bFbFbDapbibobob2b2bFbAbsbFbSbFbDbFbja4#3#P#z#z#Q#C#9#9aDaDaVbIbSbPbF..bFbF..bFbF..bFbmbF..bFbF..bFbPbCa1aLbdb.a3aGa#a#a#a#afaVaLbH..bFaQaOaPaQa1a5aUaPaPagaAakaAaPaOa7aLazad#6#4#6b.b4bMb0", + "#B.4#v#H#H.V.M.M.M#a#i#i#v.N#i#h.8.7#H#H#O#3acadasbLbF..bFbFbFbF..bF..bF......bF......bF......bFb0bQbF..bF......bF......bF......bFb2bF..bFb2bF....bF..bFbUbQbMbMbQbHbSbUbUbSbQbSbUbF..bFbUbQbQbLbPbF..bFbFbQbDbF....bF....bF..bFbo#XbibUb2bPbHbsbCbPbF..bF..bFbhax#9#P#C#C#3#9aqaqaK#0bVb2bXbF..bFbF....bF..bFbjbK..bFbF..bFbSbHbmaLb.bfbfaOaua#auauauafaQbF..bFa9aUaUa0a5a5aUaUaEagakafaEaJaOaVaHar#6#6#4#4aTb7b2bY", + "#j#j#W#l#B.Y.M.Y.V.V#a.Z#A.9.0###I#N#j.V#k#T#8adajbzbF.abK.a.abK.abK.abK.abK.abK.abK.abKbFbF.abKbFbFbF.abK.abK.abK.abK.abK.abK.abKb2bF.abKb2bF.abK.a.abKbFbQbFbQbFbFbFbFbFbHbFbFbF.a.a.bbFbFbFbAbobF.abKbFbDbsbF.abK.abK.abKbFb4bFapbHb2bFbFbFbPbFbFb4bF.a.a.bbFbFbSan#z#9bHbHbFaKbSbObFb7bFbF.abKbF.abK.a.abKbmbF.abKbF.abKbFbFbFbubFbFbFbFbFaObFbFbFaObFbF.abKbFbFbFbna1a5a5aPaEala#aoaEaOaOaLaLar#6#4#6#6aHb7b4b0", + ".0###B.5#h.V.M##.7.Q.V#.#i#i.M#O#I#N.7.Q.Y#S#S#7aqbGbF.cbF.cbKbF.cbF.cbF.c.c.cbF.c.c.cbF.c.c.cbF.c.cbK.cbF.c.c.cbF.c.c.cbF.c.c.cbFbBbF.cbFbDbF.cbFbK.cbF.cbK.cbK.c.c.c.c.cbK.c.c.cbK.cbF.c.c.cbKbDbF.c.c.cbKbibF.cbFbKbF.cbF.cbF.cbS.cbK.c.c.cbK.c.cbK.cbK.cbF.c.c.cbHaibH.c.c.cbS.c.c.cbF.c.c.cbFbF.cbFbK.cbFbubF.c.c.c.cbF.c.c.cbK.c.c.c.c.cbK.c.c.cbF.c.c.cbF.c.c.cbFbda5a5aPaAaoa#aoaEaOaUaLaLajacac#4#6asb4b8bM", + "#i#l.T.A.A.F.4.7.7#o#o.L#i.T.V#p#O#N#j.S.2#x#S#UasbGbF.ibF.i.ibF.ibF.ibFbKbF.ibFbKbF.ibFbKbF.ibFbKbFbF.ibFbKbF.ibFbKbF.ibFbKbF.ibFa3bF.ibFbobF.ibFbF.ibF.ibF.ibF.ibK.ibK.ibF.ibK.ibF.ibF.ibK.ibFa3bfbKbF.ibFbibF.ibFbUbF.ibF.ibF.ibF.ibF.ibK.ibF.ibKbF.ibF.ibF.ibK.ibFaibF.ibK.ibF.ibK.ibF.ibK.ibFbF.ibFbF.ibFbCbF.ibKbF.ibF.ibK.ibF.ibK.ibK.ibF.ibK.ibF.ibK.ibF.ibK.ibFbea1a5aJaoa#a#agaGaOa1aLaVadajaj#4#6asb7b4bw", + ".Z.H.H.Q.0.A.M.7.8#p#p.4.T#a#l#O#T#y.4.Q.S#S#E#5aDbIbF.mbKbFbFbF.mbK.mbKaGbH.mbKaSbF.mbKbFbF.mbKbUbjbF.mbKa9bF.mbKbfbF.mbKbLbF.mbKbjbF.mbKbFbF.mbKbF.mbK.mbK.mbK.mbF.mbF.mbK.mbF.mbK.mbK.mbF.mbKbfa6bFbF.mbKbFbF.mbKbDbF.mbK.mbK.mbK.mbK.mbF.mbK.m.mbK.mbK.mbK.mbF.mbKaFbF.mbF.mbK.mbF.mbK.mbF.mbKbF.mbKbF.mbKbFbF.mbFbF.mbK.mbF.mbK.mbF.mbF.mbK.mbF.mbK.mbF.mbK.mbF.mbKbra5a0aOakaoala.aEa0aUaLaLadazaj#6#6aHb1b2bj", + "#a.F.L#h.T.F.A.Q.8#b#b###a.0#q#F#I#j#c#w#q#D#Sa.aKbIbabK.r.r.r.tbFbF.rbO#8bF.rbOaTbF.rbO.r.t.rbObUbabF.rbOa3bF.rbOa6bK.rbObabF.rbObDbF.rbO.rbO.rbObF.rbO.r.r.tbF.rbO.rbF.rbO.r.r.t.r.r.t.r.r.r.tbFbK.r.r.rbO.rbO.rbObDbF.rbO.rbO.r.r.rbO.r.r.t.rbS.rbO.rbO.r.r.t.r.r.rbObF.r.t.r.r.tbF.rbO.r.t.rbObF.rbObF.rbO.rbO.rbObF.rbO.r.r.r.t.rbF.rbO.rbO.r.r.t.r.t.r.tbF.r.r.r.rbObea1aOauaoaoafaOaOaOaLaHadaz#7#6#7aVbLb0ba", + ".K.5.0.5#s#A.A.Q#x.8#b#c.5#q#w#x#J#c#m#r#1#Z#JafaZbIbaafbObFbObFapakbFaa#uaabFaDaFaLbPbibFbFbOaKbUa2bibObfaJbibFbcaVa6bObaaSbabFa3aQbabObsbObDbFbsbvbObHbObFbFbQbObDbFbDbFbDbObFbFbFbObFbFbObFbFbobobFbObFbvbFbHbObibsbrbFbLbFb2bFbO.EbFbFbObFbO.y.EbFbObPbFbObFbObFbOaFaLbPbFbObFbFa6bObcbObFbObUbLbObSbLbOb2bFbHbOb#bnbFbPbFbObFbFbFbCbObebPaObFbObFbObFbObFbebObFbObFbrbea5aLaoaoa.aoaJaYaLaLaHacajad#6#6a7bubQba", + ".S.C.F.5.4.N.1.M#b.X#M#t#l#l.V.8#J#k.8.X#r#J#Zata8bIbh#lbw#U#g#S.5#a#U#o#p.B#V#VaaaqayaC.h#iaeanbPa1a3bobfaYbfbAbubjbpblbhbaa6bia6bfbjbwbobsbfbobfa6a6a2a6babfbfbobibsbfbjbfbqbobobca6bfa6a3bibrbobobrbsbra9bra9bebibCa3bUbobQbF.9.9.9bFb0b4bSbSbFbFbPbHbCaFai#9aiaiaiaqaaayaqawaqaDavaLayaa#JabbnbAbLbPbPbBbPbCbma5a0a0bybAbCb2bObFbCbebfaJaEa#auasazazasapa1aEaAbnbnbnbda9a1aEa#a#a.alaLaXaLaHasacad#4#6#6bgbub0ba", + ".Q.X.M.1.N.y.1.V.7#w#r#l#w##.4#y#T#B#s.M.K#w#UataZbIbw#Wbc#c.7.X#b.S.z.z.P#b#b#g#M#8#Z#1.b.pamaSbUbxbvbQbDbmbobububjbhbbbjbmbibibia6a8bjbjbibibibfbfbmbfbaa6bsbFbFbFbFbLboboboboboboa6bfa6bfbebibmb#aCaJa9bKa6aQbibFbUbibFbBb2bFbFbFbF#1blb4bObCbSbQbvbCbAaKbHax#9#9aiaqaeaaanaaaaanavaIaIaa#J#rafbebLb0bCbPbQbrbrbdaOaOaObpbPbPbCbCbvbra3aOaua#a.adaoaraja.aEaAahaPa5bnbebda3aEa#a#alagaOaYaLaHasadaj#6#4adbmbAb0b.", + ".Y.L.L.Z.L.F.A.C.5#k###G#r.8#j#N#I#N#j#a#a#a#UaIaZbMbG#qbhab#V#x.2.2.X.w.w.S#J#Z#b#b###g.a.p#Ganb0a3aMa6a9aLaYa2a6a2aRaQa2a2a2a6a6aQaWaSa3babfa6a9a1aSaQaSa6bK........bFbBbFbAbFbFbFbobFbFbFbobFbFbFa9a5bF..bKbmbF..bFbF..bFbF..bFbFbs.6bDb2bSbCb2bvbCbCbDbF..bFaiaibHaFaNaaaaaeaqaeaqavay#8.R.R.2afbebQbAbPb1bDbrbra5aPaEblbobPbSbCbCbra3aUaEaoaoadaoaoada.alahahaPa1a9a5b#aYaza.aoaoaoaOaXaLaHarajadad#6arbmbGbPa2", + ".Q#j.Y.6.T.9.L.C#####D#r#M.S#..7#I#j#j#h#h#h#SaHaZbMbB#qbbaraRaw#J#r.B.z.s.s.S#b#L#S.V.H.b.p#GanbPa3a7bgbeaIaLa2aWaWaKaIaMa1aYaYaQaSaIaLaWaQb.bda1aMaQaMaQbK..bFbFbFbF..bF..bF......bF......bF......bFa5bK..bFbobF..bFbF..bFbF..bF..bFaka9b4b1b2bCbCbCbDbFbF..bFaFbH..bHaqas#uaaaeanaaaqaqaa.R#z.2.2akbUbQbLbUb7brbmbnaOapb.bfbPb2bCbCbrbda5aCaoaoadaua.#8a#ahahahaAbda9bea1aXaEaja#a#ajaOaYaBaHarasac#4#6aGbjbGbPaI", + ".Q.Y#g#B.F.6.Z.C#m.S#r#J#M.8.M.M#I#o#c.4#.#R#SaRaZbMbJ#Wa4#9aeawaLae#J.2.w.s.s.G.R.X.C.0.a.h#wasbDa6aYa3a9aQaQaSaSaLaWaWa3bfbja1a2aSaQaTaMaGaQa3a2aSaMaQa1bF.abK.a.abK.abK.abK.abK.abK.abK.abK.abK.abKa5bibF.abK.abKbQbF.abKbF.abKbFbUbFbFbFb5bFbPbFbSbFbFbF.abHbHaKbHaF#9aq#V.R#0amawamamae#Q#Q.2#QapbxbUb0b4b8bPbnbna0auaIbobmb4bPbCbybmaMaJapajavafa##8a#alahahaAa5bda5a9aYaGakala#ajaXaQaBasadas#6#6#6aObubLbDam", + ".M.S.X#y.M.y.L.C.2#D#E#m#u#x.Q.M#t#k.Q.V#a#O#SaRaZbGbA#XaL#8#V#8aaaIaTaa#9#V.w.s.q.X.K.2.h.h.0aabobfaYa3a9aQaQa3a1aKaDaIaQaWb#aQa3a8bjbjbibibibAbobobfbibrbF.cbF.cbKbF.cbF.cbF.c.c.cbF.c.c.cbF.c.c.cbFbsbsbDbF.cbKbDbSbF.c.c.c.cbF.cbF.c.c.cbK.cbK.cbF.c.cbK.c.c.cbS.cbHaiaiae.R.R#Jaaanamaa#Z#n#z.B#ZaaaSbsb0b8b4bCbnaUagafbub#b2b4bCbCbraYaJaEauafaoa.adalahahaAahbda3a1a5aQaEaga#a.afaYaYaBaradaz#6#6#6aLbub0bm#1", + ".Q.8.8#I.S.T.O.A#l#G#D#I#o.7.S.Y.7###.#..V#B#VaFaZbubna#ay#Z#E#E#E#Vaea4aD#Z#b.w.s.s.z#b.h.h.v#0bcbiaQa3a9a1aMaQaSaWaWaLaVb#b#a5aIaIaJaMaCayaBa2a2aQaQaJa1bF.ibF.i.ibF.ibF.ibFbKbF.ibFbKbF.ibFbKbF.ibFbfaSa3bF.ibFa6bUbF.ibKbF.ibF.ibF.ibK.ibF.ibF.ibF.ibKbF.ibK.ibF.ibFai#9an#0.u.R#Qamawaqaa#n.R.U#z.R#ZambLb2b8bFbFbeagaoaTbmbAb4bPbCbrbmaOa0aoaoa#a.adahahahahahbebda3a1aQauaga.a.auaYaYararadarac#4adaVbwb0aQ#w", + "#y#s#j#M.S.0.D.A.C#r#J#t#t#t.M.V.7.7#j#.#.#s#VaNa4bjbrakaMat#5#V#E.S.X#VaDaSab#x.z#F#J#p.i.p.v#0bcbiaSa6bia3aUaQaSaTaTaWb.a3a3a1aTaIaCaCatanayaQaSaIaQaJaMbF.mbKbFbFbF.mbK.mbKbmbF.mbKbubF.mbKbobF.mbKa3a9bibF.mbKbUbFbF.mbFbF.mbK.mbK.mbF.mbK.mbK.mbK.mbFbF.mbF.mbK.mbSai#0aqae#C.U#QamawaQaa#Z.R.U.U#u#J#zanbMb5bWbFbvaEa#ajbAbdb4b4bCbrbra5a0aoaoaoaoarahahahahahaUb.a1a1aOaua#a.a.aEa2aYaHacacacac#6ajaVbGbV#5.Y", + "#o#B.7#L#z.C.F.T.H.2#J#b#u#M#d.4.7#j.1.Y.Y#g#VaDbbbabyafaJataUaIaa.S.G.z.S#VaaaZaKam#u#p.n.p.vaaaSboa2a6bfbrbvbvbia8aMa2aWa2a3a3aTaIaMaMaCaIaMaQa3aQaYa1aSbfbK.r.t.r.rbSbF.rbObvbF.rbObDbF.rbObvbF.rbObCbCbSbF.rbObF.rbO.rbKbF.rbO.rbF.r.t.rbO.r.r.tbF.r.tbF.rbO.rbO.rbFai#0aian#0.U#Paeayawamae.R.U.U.U.3.3#zavbQb4bObFbnaoafa7bnbPb7bSbCbCbnaOauaoalaoa.ahahahahalaPb.a3a1aOaua.a.a#aLb#aYaracarad#7#6araTbVbI#U.C", + "#t#k#x#L#L.Y#i.6.T.V#r#J#u#S#s#j#y#y#H#v#l#k#SaNbkbabrakbaaIakamaIaZan#Z#w.K#b#9aiaSaH#8.s.p.v#ZaSbsbobDaJa9aJbHaSa3bibibobsbHbxblbobsbobsbAbCbDbsbAbsbAbAbobLbFbFbObFbsbrbFbraMbibOboa3bcbKbia1bnbOboaYaMa5bSbFa6a6bObibFbBa3bFaIbFbobFbF.EbFbFbObFbLbKbFbqbOaFbSaKbFax#C#0#9aeaa.3.U#0anawamay#V.U#f.U.3.R.R#na2b2bSbFbFa0aoazbJbsb4b2bCbCa1aEauagala#ahahahaAahahaEbga3b#aXaua.a.afaOb.b.aracaracac#4araWbVaV#c.V", + "#g#U#F#I#u#x#a.T.F#w#m#x.8.8#H#y#N#y#R#R#w#l#ZaqbabobuaWbbbka8aE#1#JaxaxaHayaBaNaxaqaxaZ#G.p.v#Za6bQa4#5.F.5#wa1a5aQaQaMaMaMaQaTaKaJaJaCaIaCaJaJaCaJaJaMaQa2baa3a9baa6aJaQa9aJaQaMa9aMaMaMaSa1aJaYa6aSaIaCbia6aMaeaeanaeaIay#Uaj#VaybF.9.9.9bFbPbsbCbobsboa6ai#Qae#0ai#0#P#P#3#9an#z#C#0aeawavayae.U.U.U.U.u.R.uasbDb2bObJbCaEadbAbrb2b4bCa1aOaEaEaoa#ahahahahalalagaAa9b.a7aOaja.a#a#aVb.aYacacad#6ac#6arbhb0am#k#c", + "#F#F#M#p#L.8#j#..V.5#D#O.8.7#y.1#s#O#o#.#t#O#Uasb.bmbtbtbtbtbtbsa9ayaa#3as#3#3aiaNaZbbaRam.D.v#ZaFaI#0#J#J#J#FaIbsa1aQaQaMaLaKaKaTaMaCayaIaJaJaCaCaJaQaCa2a2a2aQa2a3aMaQaQaLaQaQaQaMaSaQaIaMaOaJa3a2aHaKaJbraMaeaaaeaeamaI#1aIaNasaaaTbFbFbFbUbPbobobobobia6#0#C#0#3#9#9#0#P#P#Paq#0.3#Pavavayayay#C#z#C.3.U.u#e#eaGbBb0bCbFbOazaQbCbPb2bJa1aYaJaEaoa#a#afa#alahagafaAa5a1a1aGa#ada#aoaVa2b.ac#6#6adad#6asbjbL#U#c#M", + "#g#x#M#T#p#s#O#h.4.4.Y#D#g#l#a.K#t#F.8.Y.X#Ba.avaVaVbbbwbtbtbtbqbvbfb.aNaq#9#9#3#3#9#9axak.6.v#Zai#0#P#J#J#VaaaabsbraMa1aSaWaWaWaSaQaCaDaDaMaCaGaCaMaJaMa2a8aYa2a8aMaMa1aQaQaQaQaQaQaQaDaMa1aPa9aSaKaNaKaVbqa6aDaaayaMaCaMaUa5aQaNaqaBaIaDaFbvbUbobobibsbaa8#P#0aa#9#3#3#0ai#Q#9aaaq#u#zaaavaCanaw#P#Q#z.U.u#f#C#f#PaLbJbLbybUbPaBbJbObCb2bma1aJaEaoa#a.#6adahalaaagaAaUa1a5aOa.adala#aYa2aYacadadadadadaTbubo#U#F#T" + }; *** ./include/config.h.orig Mon Jan 17 13:30:05 2000 --- ./include/config.h Sun Jan 23 20:27:41 2000 *************** *** 50,55 **** --- 50,56 ---- /* #define X11_GRAPHICS /* X11 interface */ /* #define QT_GRAPHICS /* Qt Interface */ /* #define KDE /* KDE Interface */ + /* #define GTK_GRAPHICS /* GTK Interface */ /* *************** *** 86,97 **** #ifdef QT_GRAPHICS # define USE_XPM /* Use XPM format for images (required) */ ! # define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */ # ifndef DEFAULT_WINDOW_SYS # define DEFAULT_WINDOW_SYS "Qt" # endif #endif #ifndef DEFAULT_WINDOW_SYS # define DEFAULT_WINDOW_SYS "tty" #endif --- 87,108 ---- #ifdef QT_GRAPHICS # define USE_XPM /* Use XPM format for images (required) */ ! # define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.xpm) */ # ifndef DEFAULT_WINDOW_SYS # define DEFAULT_WINDOW_SYS "Qt" # endif #endif + #ifdef GTK_GRAPHICS + # define USE_XPM /* Use XPM format for images (required) */ + # define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.xpm) */ + # define RADAR /* Use radar map */ + /* # define BIGTILE */ /* Use 32x32 tiles (not supported) */ + # ifndef DEFAULT_WINDOW_SYS + # define DEFAULT_WINDOW_SYS "gtk" + # endif + #endif + #ifndef DEFAULT_WINDOW_SYS # define DEFAULT_WINDOW_SYS "tty" #endif *** ./include/flag.h.orig Mon Jan 17 13:29:44 2000 --- ./include/flag.h Fri Jan 21 19:27:06 2000 *************** *** 73,78 **** --- 73,81 ---- boolean pickup; /* whether you pickup or move and look */ boolean pushweapon; /* When wielding, push old weapon into second slot */ + #ifdef RADAR + boolean radar; /* radar map */ + #endif boolean rest_on_space; /* space means rest */ boolean safe_dog; /* give complete protection to the dog */ #ifdef EXP_ON_BOTL *** ./include/winGTK.h.orig Mon Jan 17 13:29:47 2000 --- ./include/winGTK.h Fri Jan 21 18:32:38 2000 *************** *** 7,12 **** --- 7,15 ---- #include #include + #include + #include + #include "hack.h" #include "wintty.h" *************** *** 109,114 **** --- 112,118 ---- extern void nh_map_check_visibility(void); extern void nh_map_pos(int *, int *); extern void nh_map_click(int); + extern void nh_map_flush(void); extern void nh_set_map_visual(int); extern int nh_get_map_visual(void); *************** *** 116,122 **** extern void main_hook(void); extern void quit_hook(void); ! extern GtkWidget *nh_radar_new(GtkWidget *); extern void nh_radar_update(void); extern GtkWidget *nh_message_new(void); --- 120,126 ---- extern void main_hook(void); extern void quit_hook(void); ! extern GtkWidget *nh_radar_new(void); extern void nh_radar_update(void); extern GtkWidget *nh_message_new(void); *************** *** 162,166 **** --- 166,195 ---- GtkWidget *button[20]; }NHWindow; + + typedef struct _TileTab{ + char *ident; + char *file; + int tilemap_width, tilemap_height; + int unit_width, unit_height; + + int ofsetx_3d; + int ofsety_3d; + + int transparent:1; + int spread:1; + } TileTab; + + extern void xshm_init(Display *dpy); + extern int xshm_map_init(int width, int height); + extern void xshm_map_destroy(); + extern void xshm_map_clear(); + extern void xshm_map_tile_draw(int dst_x, int dst_y); + extern void xshm_map_draw(Window, int src_x, int src_y, int dst_x, int dst_y, int width, int height); + extern void x_tmp_clear(); + extern void x_tile_init(XImage *, TileTab *t); + extern void x_tile_destroy(); + extern void x_tile_tmp_draw(int src_x, int src_y, int ofsx, int ofsy); + extern void x_tile_tmp_draw_rectangle(int ofsx, int ofsy, int c); #endif *** ./include/xshm.h.orig Thu Jan 1 01:00:00 1970 --- ./include/xshm.h Fri Jan 21 18:32:38 2000 *************** *** 0 **** --- 1,17 ---- + #include + #include + #include + #include + + typedef struct _XShmImage{ + int shmflg; /* if True image and pixmap are on shared memory */ + XShmSegmentInfo shminfo; + XImage *image; + Pixmap pixmap; + } XShmImage; + + extern void XShmDestroyXShmImage(Display *dpy, XShmImage *xshm); + extern XShmImage *XShmCreateXShmImage(Display *dpy, int width, int height); + extern void XShmClearXShmImage(Display *dpy, XShmImage *map); + extern void XShmSyncXShmImage(Display *dpy, XShmImage *map); + extern void XShmSyncXShmImageRegion(Display *dpy, XShmImage *xshm, int x, int y, int width, int height); *** ./src/allmain.c.orig Mon Jan 17 13:30:14 2000 --- ./src/allmain.c Sun Jan 23 20:11:35 2000 *************** *** 568,573 **** --- 568,578 ---- Hello(), plname, buf, urace.adj, (currentgend && urole.name.f) ? urole.name.f : urole.name.m, DEF_GAME_NAME); + + #ifdef GTK_GRAPHICS + if(!strcmp(windowprocs.name, "gtk")) + GTK_init_nhwindows2(); + #endif } #ifdef POSITIONBAR *** ./src/options.c.orig Mon Jan 17 13:29:49 2000 --- ./src/options.c Fri Jan 21 19:14:45 2000 *************** *** 150,155 **** --- 150,158 ---- {"preload_tiles", (boolean *)0, FALSE}, #endif {"pushweapon", &flags.pushweapon, FALSE}, + #ifdef RADAR + {"radar", &flags.radar, FALSE}, + #endif #if defined(MICRO) && !defined(AMIGA) {"rawio", &iflags.rawio, FALSE}, #else *** ./src/windows.c.orig Fri Jan 21 12:02:06 2000 --- ./src/windows.c Fri Jan 21 19:18:29 2000 *************** *** 18,23 **** --- 18,30 ---- #ifdef QT_GRAPHICS extern struct window_procs Qt_procs; #endif + #ifdef GTK_GRAPHICS + /* + * GTK interface (By issei@guru.gr.jp) + */ + extern struct window_procs GTK_procs; + extern void NDECL(win_GTK_init); + #endif #ifdef MAC extern struct window_procs mac_procs; #endif *************** *** 51,56 **** --- 58,66 ---- #endif #ifdef QT_GRAPHICS { &Qt_procs, 0 }, + #endif + #ifdef GTK_GRAPHICS + { >K_procs, win_GTK_init }, #endif #ifdef MAC { &mac_procs, 0 }, *** ./sys/unix/Makefile.src.orig Fri Jan 21 12:02:06 2000 --- ./sys/unix/Makefile.src Mon Jan 24 14:04:21 2000 *************** *** 159,164 **** --- 159,167 ---- #CXX=g++ #LD=g++ + # GTK windowing system + WINGTKCFLAGS=`gtk-config --cflags` + # Set the WINSRC, WINOBJ, and WINLIB lines to correspond to your desired # combination of windowing systems. Also set windowing systems in config.h. # *************** *** 181,186 **** --- 184,198 ---- WINQTSRC = ../win/Qt/qt_win.cpp ../win/Qt/qt_clust.cpp WINQTOBJ = qt_win.o qt_clust.o tile.o + # files for a GTK port + # (tile.c is included in the defn. for WINCSRC, below) + WINGTKSRC = ../win/gtk/gtk.c ../win/gtk/gtkgetlin.c ../win/gtk/gtkstatus.c \ + ../win/gtk/gtkmenu.c ../win/gtk/gtkyn.c ../win/gtk/gtkmap.c \ + ../win/gtk/gtkmessage.c ../win/gtk/gtkmisc.c ../win/gtk/xshmmap.c \ + ../win/gtk/xshm.c + WINGTKOBJ = gtk.o gtkgetlin.o gtkstatus.o gtkmenu.o gtkyn.o gtkmap.o \ + gtkmessage.o gtkmisc.o xshmmap.o xshm.o tile.o + # Use these declarations if you only want to support the TTY windowing system WINSRC = $(WINTTYSRC) WINOBJ = $(WINTTYOBJ) *************** *** 190,195 **** --- 202,210 ---- # Use these declarations if you want to support the Qt windowing system # WINSRC = $(WINTTYSRC) $(WINQTSRC) # WINOBJ = $(WINTTYOBJ) $(WINQTOBJ) + # Use these declarations if you want to support the GTK windowing system + # WINSRC = $(WINTTYSRC) $(WINGTKSRC) + # WINOBJ = $(WINTTYOBJ) $(WINGTKOBJ) # # You must also change the definition of WINLIB (below) to match these *************** *** 221,226 **** --- 236,244 ---- # # libraries for KDE (with Qt) WINKDELIB = -lkdecore -lkdeui -lXext + # + # libraries for GTK + WINGTKLIB = `gtk-config --libs` # Use this declaration if you only want to support the TTY windowing system WINLIB = $(WINTTYLIB) *************** *** 228,233 **** --- 246,253 ---- # WINLIB = $(WINTTYLIB) $(WINX11LIB) # Use this declaration if you want to support the Qt windowing system # WINLIB = $(WINTTYLIB) $(WINQTLIB) + # Use these declarations if you want to support the GTK windowing system + # WINLIB = $(WINTTYLIB) $(WINGTKLIB) # any other strange libraries your system needs (for Sysunix only -- the more # specialized targets should already be right) *************** *** 303,309 **** ../sys/unix/unixunix.c ../sys/be/bemain.c # all windowing-system-dependent .c (for dependencies and such) ! WINCSRC = $(WINTTYSRC) $(WINX11SRC) tile.c # all windowing-system-dependent .cpp (for dependencies and such) WINCXXSRC = $(WINQTSRC) --- 323,329 ---- ../sys/unix/unixunix.c ../sys/be/bemain.c # all windowing-system-dependent .c (for dependencies and such) ! WINCSRC = $(WINTTYSRC) $(WINX11SRC) $(WINGTKSRC) tile.c # all windowing-system-dependent .cpp (for dependencies and such) WINCXXSRC = $(WINQTSRC) *************** *** 585,590 **** --- 605,631 ---- $(CC) $(CFLAGS) -c ../win/X11/wintext.c winval.o: ../win/X11/winval.c $(HACK_H) ../include/winX.h $(CC) $(CFLAGS) -c ../win/X11/winval.c + gtk.o: ../win/gtk/gtk.c ../include/winGTK.h $(HACK_H) ../include/func_tab.h \ + ../include/dlb.h + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtk.c + gtkgetlin.o: ../win/gtk/gtkgetlin.c ../include/winGTK.h $(HACK_H) + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtkgetlin.c + gtkstatus.o: ../win/gtk/gtkstatus.c ../include/winGTK.h $(HACK_H) + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtkstatus.c + gtkmenu.o: ../win/gtk/gtkmenu.c ../include/winGTK.h $(HACK_H) + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtkmenu.c + gtkyn.o: ../win/gtk/gtkyn.c ../include/winGTK.h $(HACK_H) + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtkyn.c + gtkmap.o: ../win/gtk/gtkmap.c ../include/winGTK.h $(HACK_H) + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtkmap.c + gtkmessage.o: ../win/gtk/gtkmessage.c ../include/winGTK.h $(HACK_H) + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtkmessage.c + gtkmisc.o: ../win/gtk/gtkmisc.c ../include/winGTK.h $(HACK_H) + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/gtkmisc.c + xshmmap.o: ../win/gtk/xshmmap.c ../include/winGTK.h $(HACK_H) ../include/xshm.h + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/xshmmap.c + xshm.o: ../win/gtk/xshm.c ../include/xshm.h + $(CC) $(CFLAGS) $(WINGTKCFLAGS) -c ../win/gtk/xshm.c tile.o: tile.c $(HACK_H) qt_win.o: ../win/Qt/qt_win.cpp $(HACK_H) ../include/func_tab.h \ ../include/dlb.h ../include/patchlevel.h ../include/qt_win.h \ *** ./sys/unix/Makefile.top.orig Fri Jan 21 12:02:06 2000 --- ./sys/unix/Makefile.top Mon Jan 24 13:32:40 2000 *************** *** 71,84 **** # Shareable (architecture independent) data files which are not candidates # for inclusion in DLB libraries (ND) and which are (D). Port specific files ! # per discussions in Install.X11 and Install.Qt CNF_SHARE_QTND = x11tiles rip.xpm CNF_SHARE_X11ND = x11tiles pet_mark.xbm # CNF_SHARE_X11ND = x11tiles pet_mark.xbm rip.xpm # CNF_SHARE_DATND = $(CNF_SHARE_X11ND) # CNF_SHARE_DATND = $(CNF_SHARE_QTND) CNF_SHARE_DATND = CNF_SHARE_DATD = data oracles options quest.dat rumors --- 71,87 ---- # Shareable (architecture independent) data files which are not candidates # for inclusion in DLB libraries (ND) and which are (D). Port specific files ! # per discussions in Install.X11, Install.Qt and Install.GTK CNF_SHARE_QTND = x11tiles rip.xpm CNF_SHARE_X11ND = x11tiles pet_mark.xbm # CNF_SHARE_X11ND = x11tiles pet_mark.xbm rip.xpm + + CNF_SHARE_GTKND = x11tiles rip.xpm credit.xpm # CNF_SHARE_DATND = $(CNF_SHARE_X11ND) # CNF_SHARE_DATND = $(CNF_SHARE_QTND) + # CNF_SHARE_DATND = $(CNF_SHARE_GTKND) CNF_SHARE_DATND = CNF_SHARE_DATD = data oracles options quest.dat rumors *** ./sys/unix/depend.awk.orig Mon Jan 17 13:29:59 2000 --- ./sys/unix/depend.awk Fri Jan 21 19:00:50 2000 *************** *** 104,109 **** --- 104,111 ---- if (source ~ /\// && substr(source, 1, 11) != "../include/") if (source ~ /\.cpp$/ ) print "\t$(CXX) $(CXXFLAGS) -c " source + else if (source ~ /^..\/win\/gtk\// ) + print "\t$(CC) $(CFLAGS) $(WINGTKCFLAGS) -c " source else print "\t$(CC) $(CFLAGS) -c " source } *** ./win/Qt/Install.Qt.orig Fri Jan 21 12:02:06 2000 --- ./win/Qt/Install.Qt Mon Jan 24 13:43:27 2000 *************** *** 21,29 **** interfaces (in which case be sure you have the right curses libraries etc. required for that interface). ! You may define X11_GRAPHICS in addition to support both X11 and ! Qt windowing ports (and tty as well, if you want) in the same ! executable if you so desire. 3. ../../src/Makefile --- 21,29 ---- interfaces (in which case be sure you have the right curses libraries etc. required for that interface). ! You may define X11_GRAPHICS and/or GTK_GRAPHICS in addition to ! support multiple windowing ports (and tty as well, if you want) ! in the same executable if you so desire. 3. ../../src/Makefile *************** *** 39,56 **** the appropriate place. You can also change the definitions of QTLIBDIR etc. if your installation is particularly unusual. ! To support both Qt and X11 ports, change the definitions of WINSRC, ! WINOBJ and WINLIB to both the X11 and the Qt variables. Then ! remove tile.o from the definition of WINQTOBJ to prevent a ! duplication since WINX11OBJ also includes it. 4. ../../Makefile (the top-level makefile) change the CNF_SHARE_QTND setting to contain the files "x11tiles" and "rip.xpm" and the CNF_SHARE_DATND to include $(CNF_SHARE_QTND). ! If you want to support the X11 windowing port, include ! $(CNF_SHARE_X11ND) also. 5. Follow all the instructions in ../../sys/unix/Install.unx for the remainder of the installation process. --- 39,56 ---- the appropriate place. You can also change the definitions of QTLIBDIR etc. if your installation is particularly unusual. ! To support multiple windowing ports, change the definitions ! of WINSRC, WINOBJ and WINLIB to include all the relevant ! variables. Then remove tile.o from the definition of all but ! one WINXXXOBJ to prevent a duplication since they all include it. 4. ../../Makefile (the top-level makefile) change the CNF_SHARE_QTND setting to contain the files "x11tiles" and "rip.xpm" and the CNF_SHARE_DATND to include $(CNF_SHARE_QTND). ! If you want to support the other windowing ports, include ! their $(CNF_SHARE_XXXND) variables also. 5. Follow all the instructions in ../../sys/unix/Install.unx for the remainder of the installation process. *** ./win/gtk/GTKRC.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/GTKRC Fri Jan 21 18:32:38 2000 *************** *** 0 **** --- 1,10 ---- + # + # + # + style "text" + { + fontset = "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*" + } + + widget "fixed font*GtkText" style "text" + widget "fixed font*GtkCList" style "text" *** ./win/gtk/Install.GTK.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/Install.GTK Sun Jan 23 21:05:57 2000 *************** *** 0 **** --- 1,54 ---- + Installing Slash'EM with a GTK interface + ---------------------------------------- + + This document describes the installation of Slash'EM with a GTK interface + on X11. The GTK interface is another alternative to the Athena-widgets + interface found in ../win/X11. You can download GTK+ from http://www.gtk.org/. + You need GTK+ 1.2 or later to use this code. + + The GTK interface comes from JNetHack version 1.1.4 and was written by + Issei Numata (issei@guru.gr.jp). JNetHack can be downloaded from + http://www.jnethack.org/. + + Big tiles (and 3D tiles) are not yet supported in Slash'EM. + + To use this code: + + 1. follow the directions for the UNIX installation (in ../sys/unix) + to create the Makefiles. + + 2. ../../include/config.h + + define GTK_GRAPHICS (search for it). You can comment out + TTY_GRAPHICS if you want to, or leave it in to support both + interfaces (in which case be sure you have the right curses + libraries etc. required for that interface). + + You may define X11_GRAPHICS and/or QT_GRAPHICS in addition to + support multiple windowing ports (and tty as well, if you want) + in the same executable if you so desire. + + 3. ../../src/Makefile + + add $(WINGTKSRC), $(WINGTKOBJ), and $(WINGTKLIB) to WINSRC, WINOBJ, + and WINLIB respectively, and compile. This will give you an + executable supporting both GTK and tty windowing. + + To support multiple windowing ports, change the definitions + of WINSRC, WINOBJ and WINLIB to include all the relevant + variables. Then remove tile.o from the definition of all but + one WINXXXOBJ to prevent a duplication since they all include it. + + 4. ../../Makefile (the top-level makefile) + + change CNF_SHARE_DATND to include $(CNF_SHARE_GTKND). + + If you want to support the other windowing ports, include + their $(CNF_SHARE_XXXND) variables also. + + 5. Follow all the instructions in ../../sys/unix/Install.unx for + the remainder of the installation process. + + 6. Copy GTKRC to GAMEDIR/gtkrc after you've done "make install". + + J. Ali Harlow, ali@avrc.city.ac.uk *** ./win/gtk/gtk.c.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/gtk.c Mon Jan 24 13:35:06 2000 *************** *** 0 **** --- 1,1326 ---- + /* + $Id: gtk.c,v 1.3 1999/12/01 03:51:06 issei Exp issei $ + */ + + #include + #include + #include "winGTK.h" + #include "wintype.h" + #include "func_tab.h" + #include "dlb.h" + + static int initialized; + static int initialized2; + + static void select_player(GtkWidget *w, gpointer data); + static void key_command(GtkWidget *w, gpointer data); + static void game_option(GtkWidget *w, gpointer data); + static void game_topten(GtkWidget *w, gpointer data); + + static void help_help(GtkWidget *w, gpointer data); + static void help_shelp(GtkWidget *w, gpointer data); + static void help_option(GtkWidget *w, gpointer data); + static void help_je(GtkWidget *w, gpointer data); + static void help_history(GtkWidget *w, gpointer data); + static void help_license(GtkWidget *w, gpointer data); + + NHWindow gtkWindows[MAXWIN]; + + static GtkWidget *credit_window; + static GtkWidget *credit_vbox; + static GtkWidget *credit_credit; + + static GtkStyle *credit_style; + static GdkPixmap *credit_pixmap; + static GdkBitmap *credit_mask; + + GtkWidget *main_window; + static GtkWidget *main_vbox; + static GtkWidget *main_hbox; + + static GtkWidget *main_bar; + static GtkWidget *main_message; + #ifdef RADAR + static GtkWidget *main_radar; + #endif + + static GtkWidget *main_status; + static GtkWidget *main_map; + static GtkItemFactory *main_item_factory; + + int root_width; + int root_height; + + GdkColor nh_color[N_NH_COLORS] = { + {0, 0*257, 0*257, 0*257,}, /* black */ + {0, 255*257, 0*257, 0*257,}, /* red */ + {0, 152*257, 251*257, 152*257,}, /* pale green */ + {0, 165*257, 42*257, 42*257,}, /* brown */ + {0, 0*257, 0*257, 255*257,}, /* blue */ + {0, 255*257, 0*257, 255*257,}, /* magenta */ + {0, 224*257, 255*257, 255*257,}, /* light cyan */ + {0, 190*257, 190*257, 190*257,}, /* gray */ + {1, 0*257, 0*257, 0*257,}, /* default */ + {0, 255*257, 165*257, 0*257,}, /* orange */ + {0, 0*257, 255*257, 0*257,}, /* green */ + {0, 255*257, 255*257, 0*257,}, /* yellow */ + {0, 65*257, 105*257, 225*257,}, /* royal blue */ + {0, 238*257, 130*257, 238*257,}, /* violet */ + {0, 0*257, 255*257, 255*257,}, /* cyan */ + {0, 255*257, 255*257, 255*257,}, /* white */ + {0, 0*257, 100*257, 0*257,}, /* dark green */ + {0, 20*257, 60*257, 20*257,}, /* map background */ + }; + + void + hook() + { + ; + } + + struct window_procs GTK_procs = { + "gtk", + GTK_init_nhwindows, + GTK_player_selection, + hook, /* tty_askname,*/ + GTK_get_nh_event, + GTK_exit_nhwindows, + hook, /*tty_suspend_nhwindows,*/ + hook, /*tty_resume_nhwindows,*/ + GTK_create_nhwindow, + GTK_clear_nhwindow, + GTK_display_nhwindow, + GTK_destroy_nhwindow, + GTK_curs, + GTK_putstr, + GTK_display_file, + GTK_start_menu, + GTK_add_menu, + GTK_end_menu, + GTK_select_menu, + genl_message_menu, + hook, /*tty_update_inventory,*/ + GTK_mark_synch, + GTK_wait_synch, + #ifdef CLIPPING + GTK_cliparound, + #endif + #ifdef POSITIONBAR + hook, + #endif + GTK_print_glyph, + GTK_raw_print, + GTK_raw_print_bold, + GTK_nhgetch, + GTK_nh_poskey, + hook, /* tty_nhbell,*/ + GTK_doprev_message, + GTK_yn_function, + GTK_getlin, + GTK_get_ext_cmd, + hook, /*tty_number_pad,*/ + hook, /*tty_delay_output,*/ + #ifdef CHANGE_COLOR/* only a Mac option currently */ + hook, + hook, + #endif + /* other defs that really should go away (they're tty specific) */ + hook, /* tty_start_screen,*/ + hook, /* tty_end_screen,*/ + #ifdef GRAPHIC_TOMBSTONE + GTK_outrip, + #else + genl_outrip, + #endif + }; + + static GtkItemFactoryEntry menu_items[] = { + {"/Game", NULL, NULL, 0, ""}, + {"/Game/Play", NULL, NULL, 0, ""}, + {"/Game/Play/Archeologist", "F1", select_player, 'A', NULL}, + {"/Game/Play/Barbarian", "F2", select_player, 'B', NULL}, + {"/Game/Play/Caveman", "F3", select_player, 'C', NULL}, + {"/Game/Play/Elf", "F4", select_player, 'E', NULL}, + #ifdef FIGHTER + {"/Game/Play/Fighter", "F5", select_player, 'F', NULL}, + {"/Game/Play/Healer", "F6", select_player, 'H', NULL}, + {"/Game/Play/Knight", "F7", select_player, 'K', NULL}, + {"/Game/Play/Priest", "F8", select_player, 'P', NULL}, + {"/Game/Play/Rogue", "F9", select_player, 'R', NULL}, + {"/Game/Play/Samurai", "F10", select_player, 'S', NULL}, + {"/Game/Play/Tourist", "F11", select_player, 'T', NULL}, + {"/Game/Play/Valkyrie", "F12", select_player, 'V', NULL}, + {"/Game/Play/Wizard", "F1", select_player, 'W', NULL}, + #else + {"/Game/Play/Healer", "F5", select_player, 'H', NULL}, + {"/Game/Play/Knight", "F6", select_player, 'K', NULL}, + {"/Game/Play/Priest", "F7", select_player, 'P', NULL}, + {"/Game/Play/Rogue", "F8", select_player, 'R', NULL}, + {"/Game/Play/Samurai", "F9", select_player, 'S', NULL}, + {"/Game/Play/Tourist", "F10", select_player, 'T', NULL}, + {"/Game/Play/Valkyrie", "F11", select_player, 'V', NULL}, + {"/Game/Play/Wizard", "F12", select_player, 'W', NULL}, + #endif + {"/Game/Play/GPsep1", NULL, NULL, 0, ""}, + {"/Game/Play/Random", "F2", select_player, 'Y', NULL}, + {"/Game/Gsep1", NULL, NULL, 0, ""}, + {"/Game/Save", "S", key_command, 'S', NULL}, + {"/Game/Option", "O", game_option, 'O', NULL}, + {"/Game/Score", NULL, game_topten, 0, NULL}, + {"/Game/Gsep2", NULL, NULL, 0, ""}, + {"/Game/Quit", NULL, select_player, 'Q', NULL}, + }; + + static GtkItemFactoryEntry helpmenu_items[] = { + {"/Help", NULL, NULL, 0, ""}, + {"/Help/Command Help", NULL, help_help, 0, NULL}, + {"/Help/Key Help", NULL, help_shelp, 0, NULL}, + {"/Help/Option Help", NULL, help_option, 0, NULL}, + {"/Help/sep3", NULL, NULL, 0, ""}, + {"/Help/sep3", NULL, NULL, 0, ""}, + {"/Help/History", NULL, help_history, 0, NULL}, + {"/Help/License", NULL, help_license, 0, NULL}, + }; + + static GtkItemFactoryEntry playmenu_items[] = { + {"/Move", NULL, NULL, 0, ""}, + {"/Move/North", "k", key_command, 'k', NULL}, + {"/Move/East", "h", key_command, 'h', NULL}, + {"/Move/South", "j", key_command, 'j', NULL}, + {"/Move/West", "l", key_command, 'l', NULL}, + {"/Move/Northeast", "u", key_command, 'u', NULL}, + {"/Move/Northwest", "y", key_command, 'y', NULL}, + {"/Move/Southeast", "n", key_command, 'n', NULL}, + {"/Move/Southwest", "b", key_command, 'b', NULL}, + {"/Move/Down", "greater", key_command, '>', NULL}, + {"/Move/Up", "less", key_command, '<', NULL}, + {"/Check", NULL, NULL, 0, ""}, + {"/Check/Here", "colon", key_command, ':', NULL}, + {"/Check/There", "semicolon", key_command, ';', NULL}, + {"/Check/Trap", "asciicircum", key_command, '^', NULL}, + {"/Equip/Wield", "w", key_command, 'w', NULL}, + {"/Equip/Wear", "w", key_command, 'W', NULL}, + {"/Equip/Take off", "T", key_command, 'T', NULL}, + {"/Equip/Puton", "p", key_command, 'P', NULL}, + {"/Equip/Remove", "r", key_command, 'R', NULL}, + {"/You", NULL, NULL, 0, ""}, + {"/You/Inventory", "i", key_command, 'i', NULL}, + {"/You/Weapon", "parenright", key_command, ')', NULL}, + {"/You/Armor", "bracketleft", key_command, '[', NULL}, + {"/You/Ring", "equal", key_command, '=', NULL}, + {"/You/Amulet", "quotedbl", key_command, '"', NULL}, + {"/You/Item", "parenleft", key_command, '(', NULL}, + {"/You/Spells", "x", key_command, 'x', NULL}, + {"/You/Known Item", "backslash", key_command, '\\', NULL}, + {"/Adventure", NULL, NULL, 0, ""}, + {"/Adventure/Name", "n", key_command, 'n' | 0x80, NULL}, + {"/Adventure/Call", "C", key_command, 'C', NULL}, + {"/Adventure/Adjust", "a", key_command, 'a' | 0x80, NULL}, + {"/Action", NULL, NULL, 0, ""}, + {"/Action/Rest", "period", key_command, '.', NULL}, + {"/Action/Search", "s", key_command, 's', NULL}, + {"/Action/Eat", "e", key_command, 'e', NULL}, + {"/Action/Asep1", NULL, NULL, 0, ""}, + {"/Action/Open", "o", key_command, 'o', NULL}, + {"/Action/Close", "c", key_command, 'c', NULL}, + {"/Action/Asep2", NULL, NULL, 0, ""}, + {"/Action/Pickup", "comma", key_command, ',', NULL}, + {"/Action/Drop", "d", key_command, 'd', NULL}, + {"/Action/Loot", "l", key_command, 'l' | 0x80, NULL}, + {"/Action/Apply", "a", key_command, 'a', NULL}, + {"/Action/Kick", "D", key_command, '\04', NULL}, + {"/Action/Throw", "t", key_command, 't', NULL}, + {"/Action/Asep3", NULL, NULL, 0, ""}, + {"/Action/Drink", "q", key_command, 'q', NULL}, + {"/Action/Read", "r", key_command, 'r', NULL}, + {"/Action/Cast Spell", "Z", key_command, 'Z', NULL}, + {"/Action/Zap", "z", key_command, 'z', NULL}, + {"/Action/Dip", "d", key_command, 'd' | 0x80, NULL}, + {"/Action/Sit", "s", key_command, 's' | 0x80, NULL}, + {"/Religion", NULL, NULL, 0, ""}, + {"/Religion/Pray", "p", key_command, 'p' | 0x80, NULL}, + {"/Religion/Offer", "o", key_command, 'o' | 0x80, NULL}, + {"/Special", NULL, NULL, 0, ""}, + {"/Special/Engrave", "E", key_command, 'E', NULL}, + {"/Special/Pay", "p", key_command, 'p', NULL}, + {"/Special/Chat", "c", key_command, 'c' | 0x80, NULL}, + {"/Special/Enhance", "e", key_command, 'e' | 0x80, NULL}, + {"/Special/Force", "f", key_command, 'f' | 0x80, NULL}, + {"/Special/Invoke", "i", key_command, 'i' | 0x80, NULL}, + {"/Special/Monster", "m", key_command, 'm' | 0x80, NULL}, + {"/Special/Rub", "r", key_command, 'r' | 0x80, NULL}, + {"/Special/Wipe", "w", key_command, 'w' | 0x80, NULL}, + {"/Special/Teleport", "t", key_command, '', NULL}, + {"/Special/Turn", "t", key_command, 't' | 0x80, NULL}, + {"/Special/Untrap", "u", key_command, 'u' | 0x80, NULL}, + {"/Special/Jump", "j", key_command, 'j' | 0x80, NULL}, + }; + + static int keysym; + static int pl_selection; + + void + win_GTK_init() + { + ; + } + + GtkWidget * + nh_gtk_new(GtkWidget *w, GtkWidget *parent, gchar *lbl) + { + gtk_widget_ref(w); + gtk_object_set_data_full( + GTK_OBJECT(parent), lbl, w, + (GtkDestroyNotify)gtk_widget_unref); + gtk_widget_show(w); + + return w; + } + + GtkWidget * + nh_gtk_new_and_add(GtkWidget *w, GtkWidget *parent, gchar *lbl) + { + gtk_widget_ref(w); + gtk_object_set_data_full( + GTK_OBJECT(parent), lbl, w, + (GtkDestroyNotify)gtk_widget_unref); + gtk_widget_show(w); + + gtk_container_add(GTK_CONTAINER(parent), w); + + return w; + } + + GtkWidget * + nh_gtk_new_and_pack(GtkWidget *w, GtkWidget *parent, gchar *lbl, + gboolean a1, gboolean a2, guint a3) + { + gtk_widget_ref(w); + gtk_object_set_data_full( + GTK_OBJECT(parent), lbl, w, + (GtkDestroyNotify)gtk_widget_unref); + gtk_widget_show(w); + + gtk_box_pack_start(GTK_BOX(parent), w, a1, a2, a3); + + return w; + } + + GtkWidget * + nh_gtk_new_and_attach(GtkWidget *w, GtkWidget *parent, gchar *lbl, + guint a1, guint a2, guint a3, guint a4) + { + gtk_widget_ref(w); + gtk_object_set_data_full( + GTK_OBJECT(parent), lbl, w, + (GtkDestroyNotify)gtk_widget_unref); + gtk_widget_show(w); + + gtk_table_attach_defaults(GTK_TABLE(parent), w, a1, a2, a3, a4); + + return w; + } + + GtkWidget * + nh_gtk_new_and_attach2(GtkWidget *w, GtkWidget *parent, gchar *lbl, + guint a1, guint a2, guint a3, guint a4, + GtkAttachOptions a5, + GtkAttachOptions a6, + guint a7, guint a8) + { + gtk_widget_ref(w); + gtk_object_set_data_full( + GTK_OBJECT(parent), lbl, w, + (GtkDestroyNotify)gtk_widget_unref); + gtk_widget_show(w); + + gtk_table_attach(GTK_TABLE(parent), w, a1, a2, a3, a4, a5, a6, a7, a8); + + return w; + } + + int + nh_keysym(GdkEventKey *ev) + { + int ret; + int key; + + key = ev->keyval; + + ret = 0; + + if(key == GDK_KP_End) + ret = 'b'; + else if(key == GDK_KP_Down) + ret = 'j'; + else if(key == GDK_KP_Page_Down) + ret = 'n'; + else if(key == GDK_KP_Left) + ret = 'h'; + else if(key == GDK_KP_Begin) + ret = '.'; + else if(key == GDK_KP_Right) + ret = 'l'; + else if(key == GDK_KP_Home) + ret = 'y'; + else if(key == GDK_KP_Up) + ret = 'k'; + else if(key == GDK_KP_Page_Up) + ret = 'u'; + else if(key == GDK_KP_Enter || key == GDK_Return) + ret = '\n'; + else if(key == GDK_KP_Insert) + ret = 'i'; + + if(!ret) + ret = *ev->string; + + return ret; + } + + static void + nh_menu_sensitive(char *menu, boolean f) + { + GtkWidget *p; + + p = gtk_item_factory_get_widget( + main_item_factory, menu); + gtk_widget_set_sensitive(p, f); + } + + void + quit_hook() + { + gtk_main_quit(); + } + + void + main_hook() + { + nh_map_check_visibility(); + #ifdef RADAR + nh_radar_update(); + #endif + + gtk_main(); + } + + static void + game_option(GtkWidget *widget, gpointer data) + { + nh_option_new(); + keysym = '\0'; + } + + static void + game_topten(GtkWidget *widget, gpointer data) + { + winid id; + char *argv[] = { + "nethack", + "-sall", + }; + + id = create_nhwindow(NHW_TEXT); + prscore(2, argv); + GTK_display_nhwindow(id, TRUE); + GTK_destroy_nhwindow(id); + keysym = '\0'; + } + + static void + help_license(GtkWidget *widget, gpointer data) + { + GTK_display_file(LICENSE, TRUE); + keysym = '\0'; + } + + static void + help_history(GtkWidget *widget, gpointer data) + { + dohistory(); + keysym = '\0'; + } + + + static void + help_option(GtkWidget *widget, gpointer data) + { + GTK_display_file(OPTIONFILE, TRUE); + keysym = '\0'; + } + + static void + help_shelp(GtkWidget *widget, gpointer data) + { + GTK_display_file(SHELP, TRUE); + keysym = '\0'; + } + + static void + help_help(GtkWidget *widget, gpointer data) + { + GTK_display_file(HELP, TRUE); + keysym = '\0'; + } + + static void + key_command(GtkWidget *widget, gpointer data) + { + keysym = (int)data; + + if(iflags.num_pad){ + switch(keysym){ + case 'y': + keysym = '7'; + break; + case 'u': + keysym = '9'; + break; + case 'b': + keysym = '1'; + break; + case 'n': + keysym = '3'; + break; + case 'h': + keysym = '4'; + break; + case 'j': + keysym = '2'; + break; + case 'k': + keysym = '8'; + break; + case 'l': + keysym = '6'; + break; + } + } + + quit_hook(); + } + + static void + quit() + { + if(initialized2) + done2(); + else{ + clearlocks(); + GTK_exit_nhwindows(NULL); + terminate(0); + } + } + + static gint + main_window_destroy(GtkWidget *widget, gpointer data) + { + quit(); + + return TRUE; + } + + static gint + default_destroy(GtkWidget *widget, gpointer data) + { + guint *hid = (guint *)data; + *hid = 0; + keysym = '\033'; + + quit_hook(); + return FALSE; + } + + static gint + default_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) + { + keysym = nh_keysym(event); + + if(keysym) + quit_hook(); + + return FALSE; + } + + static gint + default_button_press(GtkWidget *widget, GdkEventButton *event, gpointer data) + { + if(data) + keysym = (int)data; + else + keysym = '\n'; + + quit_hook(); + + return FALSE; + } + + static void + select_player(GtkWidget *widget, gpointer data) + { + #ifdef FIGHTER + static char *class = "ABCEFHKPRSTVW"; + #else + static char *class = "ABCEHKPRSTVW"; + #endif + + pl_selection = 0; + + if((int)data == 'Y') + pl_selection = class[rn2(strlen(class))]; + else if((int)data == 'Q'){ + quit(); + } + else + pl_selection = (int)data; + + if(pl_selection) + quit_hook(); + } + + static gint + credit_expose_event(GtkWidget *widget, GdkEventExpose *event) + { + gtk_main_quit(); + + return FALSE; + } + + static void + nh_rc(void) + { + gtk_rc_parse("gtkrc"); + } + + void + GTK_init_nhwindows(int *argc, char **argv) + { + char *credit_file; + if(initialized2) + goto selection; + + gtk_set_locale(); + nh_rc(); + + gtk_init(argc, &argv); + /* + creat credit widget and show + */ + credit_window = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_window_set_position(GTK_WINDOW(credit_window), GTK_WIN_POS_CENTER); + + gtk_container_border_width(GTK_CONTAINER(credit_window), 2); + /* + gtk_signal_connect(GTK_OBJECT(credit_window), "check_resize", + GTK_SIGNAL_FUNC(credit_map_event), NULL); + */ + + gtk_signal_connect(GTK_OBJECT(credit_window), "expose_event", + GTK_SIGNAL_FUNC(credit_expose_event), NULL); + + gtk_widget_realize(credit_window); + root_width = gdk_screen_width(); + root_height = gdk_screen_height(); + + credit_vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), credit_window, ""); + + credit_style = gtk_widget_get_style(credit_window); + #ifndef FILE_AREAS + credit_file = "credit.xpm"; + #else + credit_file = make_file_name(FILE_AREA_SHARE, "credit.xpm"); + #endif + credit_pixmap = gdk_pixmap_create_from_xpm( + credit_window->window, + &credit_mask, + &credit_style->bg[GTK_STATE_NORMAL], + credit_file); + #ifdef FILE_AREAS + free(credit_file); + #endif + credit_credit = nh_gtk_new_and_pack( + gtk_pixmap_new(credit_pixmap, credit_mask), credit_vbox, "", + FALSE, FALSE, NH_PAD); + + gtk_widget_show_all(credit_window); + gtk_main(); + + /* + create main widget + */ + main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_policy(GTK_WINDOW(main_window), TRUE, TRUE, TRUE); + + gtk_signal_connect( + GTK_OBJECT(main_window), "delete_event", + GTK_SIGNAL_FUNC(main_window_destroy), 0); + + gtk_window_set_title(GTK_WINDOW(main_window), "NetHack"); + + gtk_widget_set_events(main_window, GDK_KEY_PRESS_MASK); + gtk_widget_realize(main_window); + + /* + allocate color + */ + { + int i; + GdkColormap *cmap; + + cmap = gdk_window_get_colormap(main_window->window); + + for(i=0 ; i < N_NH_COLORS ; ++i){ + if(0 && nh_color[i].pixel){ + nh_color[i] = *(main_window->style->fg); + } + else if(gdk_colormap_alloc_color(cmap, &nh_color[i], TRUE, TRUE) == TRUE){ + ; + } + else{ + fprintf(stderr, "cannot allocate color\n"); + } + } + } + + main_vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), main_window, ""); + + { + int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); + int nplaymenu_items = sizeof(playmenu_items) / sizeof(playmenu_items[0]); + int nhelpmenu_items = sizeof(helpmenu_items) / sizeof(helpmenu_items[0]); + + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new(); + + main_item_factory = gtk_item_factory_new( + GTK_TYPE_MENU_BAR, "
", + accel_group); + + gtk_item_factory_create_items( + main_item_factory, + nmenu_items, menu_items, + NULL); + + gtk_item_factory_create_items( + main_item_factory, + nplaymenu_items, playmenu_items, + NULL); + + gtk_item_factory_create_items( + main_item_factory, + nhelpmenu_items, helpmenu_items, + NULL); + + + gtk_accel_group_attach(accel_group, GTK_OBJECT(main_window)); + } + + main_bar = nh_gtk_new_and_pack( + gtk_item_factory_get_widget(main_item_factory, "
"), main_vbox, "", + FALSE, FALSE, 0); + nh_menu_sensitive("/Game/Save", FALSE); + /* + nh_menu_sensitive("/Game/Option", FALSE); + */ + nh_menu_sensitive("/Move", FALSE); + nh_menu_sensitive("/Check", FALSE); + nh_menu_sensitive("/Equip", FALSE); + nh_menu_sensitive("/You", FALSE); + nh_menu_sensitive("/Adventure", FALSE); + nh_menu_sensitive("/Action", FALSE); + nh_menu_sensitive("/Religion", FALSE); + nh_menu_sensitive("/Special", FALSE); + + main_hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), main_vbox, "", + FALSE, FALSE, 0); + + main_message = nh_gtk_new_and_pack( + nh_message_new(), main_hbox, "", + FALSE, FALSE, 0); + + main_status = nh_gtk_new_and_pack( + nh_status_new(), main_hbox, "", + FALSE, FALSE, 0); + #ifdef RADAR + main_radar = nh_radar_new(); + #endif + main_map = nh_gtk_new_and_pack( + nh_map_new(main_window), main_vbox, "", + FALSE, FALSE, 0); + + selection: + initialized = 1; + + gtk_widget_hide(credit_window); + gtk_widget_show_all(main_window); + + iflags.window_inited = 1; + } + + void + GTK_exit_nhwindows(const char *str) + { + int id; + + if(str && *str){ + id = GTK_create_nhwindow(NHW_MENU); + GTK_putstr(id, 0, str); + GTK_display_nhwindow(id, TRUE); + GTK_destroy_nhwindow(id); + } + } + + void + GTK_init_nhwindows2() + { + if(initialized2) + return; + nh_menu_sensitive("/Game/Play", FALSE); + nh_menu_sensitive("/Game/Save", TRUE); + nh_menu_sensitive("/Game/Option", TRUE); + + nh_menu_sensitive("/Game/Save", TRUE); + nh_menu_sensitive("/Game/Option", TRUE); + nh_menu_sensitive("/Move", TRUE); + nh_menu_sensitive("/Check", TRUE); + nh_menu_sensitive("/Equip", TRUE); + nh_menu_sensitive("/You", TRUE); + nh_menu_sensitive("/Adventure", TRUE); + nh_menu_sensitive("/Action", TRUE); + nh_menu_sensitive("/Religion", TRUE); + nh_menu_sensitive("/Special", TRUE); + + nh_option_lock(); + + gtk_signal_connect( + GTK_OBJECT(main_window), "key_press_event", + GTK_SIGNAL_FUNC(default_key_press), NULL); + + #ifdef RADAR + gtk_signal_connect( + GTK_OBJECT(main_radar), "key_press_event", + GTK_SIGNAL_FUNC(default_key_press), NULL); + #endif + + initialized2 = 1; + } + + winid + GTK_create_nhwindow(int type) + { + winid id; + NHWindow *w; + + switch(type){ + /* + these windows had already created + */ + case NHW_MESSAGE: + case NHW_STATUS: + case NHW_MAP: + w = >kWindows[type]; + w->w = main_window; + return type; + break; + /* + create new window + */ + case NHW_MENU: + case NHW_TEXT: + id = type; + while(id < MAXWIN){ + w = >kWindows[id]; + memset(w, 0, sizeof(NHWindow)); + + return id; + ++id; + } + } + return 0; + } + + void + GTK_destroy_nhwindow(winid id) + { + /* int i;*/ + NHWindow *w; + + if(id == NHW_MAP) + nh_map_destroy(); + + if(id == NHW_STATUS || id == NHW_MESSAGE || id == NHW_MAP) + return; + + w = >kWindows[id]; + + if(w->w){ + gtk_widget_hide_all(w->w); + if(w->hid > 0) + gtk_signal_disconnect(GTK_OBJECT(w->w), w->hid); + + gtk_widget_destroy(w->w); + + memset(w, 0, sizeof(NHWindow)); + } + } + + void + GTK_display_nhwindow(winid id, BOOLEAN_P blocking) + { + NHWindow *w; + + if(id == NHW_STATUS || id == NHW_MESSAGE){ + } + else if(id == NHW_MAP){ /* flush out */ + nh_map_flush(); + } + else{ + w = >kWindows[id]; + + gtk_grab_add(w->w); + gtk_widget_show_all(w->w); + } + + if((id != NHW_MESSAGE && blocking) || id == NHW_MENU) + main_hook(); + } + + void + GTK_clear_nhwindow(winid id) + { + if(id == NHW_MAP){ + nh_map_clear(); + } + return; + } + + /* + ATR_ULINE + ATR_BOLD + ATR_BLINK + ATR_INVERSE + */ + void + GTK_putstr(winid id, int attr, const char *str) + { + const gchar *text[1]; + NHWindow *w; + + w = >kWindows[id]; + + if(id == NHW_MESSAGE){ + nh_message_putstr(str); + return; + } + else if(id == NHW_STATUS){ + nh_status_update(); + return; + } + else if(id <= 3){ + panic("bad window"); + return; + } + + if(!w->w){ + w->w = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_widget_set_name(GTK_WIDGET(w->w), "fixed font"); + gtk_window_set_position(GTK_WINDOW(w->w), GTK_WIN_POS_MOUSE); + + gtk_signal_connect( + GTK_OBJECT(w->w), "key_press_event", + GTK_SIGNAL_FUNC(default_key_press), NULL); + w->hid = gtk_signal_connect( + GTK_OBJECT(w->w), "destroy", + GTK_SIGNAL_FUNC(default_destroy), &w->hid); + + w->frame = nh_gtk_new_and_add( + gtk_frame_new(NULL), w->w, ""); + + w->vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), w->frame, ""); + + w->clist = nh_gtk_new_and_pack( + gtk_clist_new(1), w->vbox, "", + FALSE, FALSE, NH_PAD); + gtk_clist_set_column_auto_resize(GTK_CLIST(w->clist), 0, TRUE); + + w->hbox2 = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), w->vbox, "", + FALSE, FALSE, NH_PAD); + + w->button[0] = nh_gtk_new_and_pack( + gtk_button_new_with_label("Close"), w->hbox2, "", + TRUE, FALSE, 0); + gtk_signal_connect( + GTK_OBJECT(w->button[0]), "clicked", + GTK_SIGNAL_FUNC(default_button_press), (gpointer)'\033'); + } + + text[0] = str; + gtk_clist_append(GTK_CLIST(w->clist), (gchar **)text); + + if(attr != 0){ + gtk_clist_set_foreground( + GTK_CLIST(w->clist), + GTK_CLIST(w->clist)->rows - 1, + GTK_WIDGET(w->clist)->style->bg); + gtk_clist_set_background( + GTK_CLIST(w->clist), + GTK_CLIST(w->clist)->rows - 1, + GTK_WIDGET(w->clist)->style->fg); + } + } + + void + GTK_get_nh_event() + { + return; + } + + int + GTK_nhgetch(void) + { + int key; + #ifdef RADAR + nh_radar_update(); + #endif + + keysym = 0; + if(!keysym) + main_hook(); + + key = keysym; + keysym = 0; + + return key; + } + + int + GTK_nh_poskey(int *x, int *y, int *mod) + { + int key; + + #ifdef RADAR + nh_radar_update(); + #endif + + nh_map_click(TRUE); + + keysym = 0; + main_hook(); + + if(!keysym) + nh_map_pos(x, y); + + nh_map_click(FALSE); + + key = keysym; + keysym = 0; + + return key; + } + + #ifdef FILE_AREAS + void + GTK_display_file(const char *farea, const char *fname, BOOLEAN_P complain) + #else + void + GTK_display_file(const char *fname, BOOLEAN_P complain) + #endif + { + guint hid; + GtkWidget *w; + GtkWidget *scrollbar; + GtkWidget *label; + GtkWidget *vbox; + GtkWidget *hbox, *hbox2; + GtkWidget *text; + GtkWidget *button; + + dlb *fp; + char buf[NH_BUFSIZ]; + + #ifdef FILE_AREAS + fp = dlb_fopen_area(farea, fname, RDTMODE); + #else + fp = dlb_fopen(fname, RDTMODE); + #endif + + if(!fp) { + if(complain) pline("Cannot open %s. Sorry.",fname); + + return; + } + + w = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_widget_set_name(GTK_WIDGET(w), "fixed font"); + + gtk_window_set_position(GTK_WINDOW(w), GTK_WIN_POS_CENTER); + gtk_signal_connect( + GTK_OBJECT(w), "key_press_event", + GTK_SIGNAL_FUNC(default_key_press), NULL); + hid = gtk_signal_connect( + GTK_OBJECT(w), "destroy", + GTK_SIGNAL_FUNC(default_destroy), &hid); + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), w, ""); + + label = nh_gtk_new_and_pack( + gtk_label_new("HELP"), vbox, "", + FALSE, FALSE, NH_PAD); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + text = nh_gtk_new_and_pack( + gtk_text_new(NULL, NULL), hbox, "", + FALSE, FALSE, NH_PAD); + + gtk_widget_set_usize( + GTK_WIDGET(text), 600, (root_height * 2)/3); + + scrollbar = nh_gtk_new_and_pack( + gtk_vscrollbar_new(GTK_TEXT(text)->vadj), hbox, "", + FALSE, FALSE, NH_PAD); + + hbox2 = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + button = nh_gtk_new_and_pack( + gtk_button_new_with_label("Close"), hbox2, "", + TRUE, FALSE, NH_PAD); + gtk_signal_connect( + GTK_OBJECT(button), "clicked", + GTK_SIGNAL_FUNC(default_button_press), (gpointer)'\033'); + + while(dlb_fgets(buf, NH_BUFSIZ, fp)){ + gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL, buf, strlen(buf)); + } + + gtk_widget_show_all(w); + main_hook(); + + (void) dlb_fclose(fp); + + if(hid > 0){ + gtk_signal_disconnect(GTK_OBJECT(w), hid); + + gtk_widget_destroy(button); + gtk_widget_destroy(hbox2); + gtk_widget_destroy(scrollbar); + gtk_widget_destroy(text); + gtk_widget_destroy(hbox); + gtk_widget_destroy(label); + gtk_widget_destroy(vbox); + gtk_widget_destroy(w); + } + } + + void + GTK_player_selection(void) + { + if(!pl_character[0]){ + gtk_main(); + pl_character[0] = pl_selection; + } + } + + void + GTK_wait_synch() + { + ; + } + + void + GTK_mark_synch() + { + ; + } + + int + GTK_get_ext_cmd() + { + extern struct ext_func_tab extcmdlist[]; + int i; + + GTK_putstr(NHW_MESSAGE, 7, "#"); + main_hook(); + + i = 0; + while(extcmdlist[i].ef_txt){ + if(extcmdlist[i].ef_txt[0] == keysym){ + GTK_putstr(NHW_MESSAGE, 7, extcmdlist[i].ef_txt); + return i; + } + ++i; + } + + return -1; + } + + #define NAME_LINE 0 /* line # for player name */ + #define GOLD_LINE 1 /* line # for amount of gold */ + #define DEATH_LINE 2 /* line # for death description */ + #define YEAR_LINE 6 /* line # for year */ + + static struct{ + GdkWChar str[NH_BUFSIZ]; + int len; + int width; + } rip_line[YEAR_LINE + 1]; + + void + GTK_outrip(winid id, int how) + { + int x, y; + int width; + int total_len, len, line; + GtkWidget *w; + GtkWidget *vbox; + GtkWidget *rip; + GdkPixmap *rip_pixmap; + char mstr[NH_BUFSIZ]; + GdkWChar *wc; + GdkWChar wstr[NH_BUFSIZ]; + extern const char *killed_by_prefix[]; + char *rip_file; + + w = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_window_set_position(GTK_WINDOW(w), GTK_WIN_POS_CENTER); + + gtk_widget_set_events( + w, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK); + + gtk_signal_connect( + GTK_OBJECT(w), "button_press_event", + GTK_SIGNAL_FUNC(default_button_press), NULL); + gtk_signal_connect( + GTK_OBJECT(w), "key_press_event", + GTK_SIGNAL_FUNC(default_key_press), NULL); + + gtk_widget_realize(w); + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), w, ""); + + #ifndef FILE_AREAS + rip_file = "rip.xpm"; + #else + rip_file = make_file_name(FILE_AREA_SHARE, "rip.xpm"); + #endif + rip_pixmap = gdk_pixmap_create_from_xpm( + w->window, 0, 0, rip_file); + #ifdef FILE_AREAS + free(rip_file); + #endif + + rip = nh_gtk_new_and_pack( + gtk_pixmap_new(rip_pixmap, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + Sprintf(mstr, "%s", plname); + rip_line[NAME_LINE].len = gdk_mbstowcs(rip_line[NAME_LINE].str, mstr, NH_BUFSIZ); + + Sprintf(mstr, "%ld Au", u.ugold); + rip_line[GOLD_LINE].len = gdk_mbstowcs(rip_line[GOLD_LINE].str, mstr, NH_BUFSIZ); + + Sprintf(mstr, "%4d", getyear()); + rip_line[YEAR_LINE].len = gdk_mbstowcs(rip_line[YEAR_LINE].str, mstr, NH_BUFSIZ); + + switch (killer_format) { + default: + impossible("bad killer format?"); + case KILLED_BY_AN: + Strcpy(mstr, killed_by_prefix[how]); + Strcat(mstr, an(killer)); + break; + case KILLED_BY: + Strcpy(mstr, killed_by_prefix[how]); + Strcat(mstr, killer); + break; + case NO_KILLER_PREFIX: + Strcpy(mstr, killer); + break; + } + + total_len = gdk_mbstowcs(wstr, mstr, NH_BUFSIZ); + line = DEATH_LINE; + wc = wstr; + + while(total_len > 0 && line < YEAR_LINE){ + len = total_len; + while(1){ + width = gdk_text_width_wc(rip->style->font, wc, len); + if(width < 96) + break; + --len; + } + memcpy(rip_line[line].str, wc, len * sizeof(GdkWChar)); + rip_line[line].len = len; + wc += len; + total_len -= len; + + ++line; + } + + x = 155; + y = 78; + + { + gint dummy; + gint height = 0, ascent, descent; + + for(line = 0 ; line <= YEAR_LINE ; ++line){ + gdk_text_extents_wc( + rip->style->font, + rip_line[line].str, rip_line[line].len, + &dummy, + &dummy, + &rip_line[line].width, + &ascent, + &descent); + if(height < (ascent + descent)) + height = ascent + descent; + } + + for(line = 0 ; line <= YEAR_LINE ; ++line){ + gdk_draw_text_wc( + rip_pixmap, + rip->style->font, + rip->style->black_gc, + x - rip_line[line].width / 2, y, + rip_line[line].str, rip_line[line].len); + y += height; + } + } + + gtk_widget_show_all(w); + gtk_main(); + } + + void + GTK_raw_print(const char *str) + { + /* + if(initialized) + GTK_putstr(NHW_MESSAGE, 0, str); + else + */ + tty_raw_print(str); + } + + void + GTK_raw_print_bold(const char *str) + { + /* + if(initialized) + GTK_putstr(NHW_MESSAGE, ATR_BOLD, str); + else + */ + tty_raw_print_bold(str); + } *** ./win/gtk/gtkgetlin.c.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/gtkgetlin.c Fri Jan 21 18:32:38 2000 *************** *** 0 **** --- 1,106 ---- + /* + $Id: gtkgetlin.c,v 1.3 1999/12/01 03:51:06 issei Exp issei $ + */ + + #include + #include + #include + #include + #include "winGTK.h" + + static int cancelled; + + static gint + entry_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) + { + if(event->keyval == GDK_Return) + gtk_main_quit(); + + if(event->keyval == GDK_Escape){ + cancelled = 1; + gtk_main_quit(); + } + + return FALSE; + } + + static gint + entry_ok(GtkWidget *widget, GdkEventButton *event, gpointer data) + { + gtk_main_quit(); + + return FALSE; + } + + static gint + entry_cancel(GtkWidget *widget, GdkEventButton *event, gpointer data) + { + cancelled = 1; + gtk_main_quit(); + + return FALSE; + } + + void + GTK_getlin(const char *query, char *ret) + { + GtkWidget *window; + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *entry; + GtkWidget *ok; + GtkWidget *cancel; + + cancelled = 0; + + window = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_MOUSE); + + frame = nh_gtk_new_and_add(gtk_frame_new(query), window, ""); + gtk_container_border_width(GTK_CONTAINER(frame), NH_PAD); + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), frame, ""); + + entry = nh_gtk_new_and_pack( + gtk_entry_new(), vbox, "", + FALSE, FALSE, NH_PAD); + + gtk_signal_connect_after( + GTK_OBJECT(entry), "key_press_event", + GTK_SIGNAL_FUNC(entry_key_press), NULL); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + ok = nh_gtk_new_and_pack( + gtk_button_new_with_label("OK"), hbox, "", + FALSE, FALSE, NH_PAD); + + gtk_signal_connect( + GTK_OBJECT(ok), "clicked", + GTK_SIGNAL_FUNC(entry_ok), NULL); + + cancel = nh_gtk_new_and_pack( + gtk_button_new_with_label("CANCEL"), hbox, "", + FALSE, FALSE, NH_PAD); + + gtk_signal_connect( + GTK_OBJECT(cancel), "clicked", + GTK_SIGNAL_FUNC(entry_cancel), NULL); + + gtk_widget_grab_focus(entry); + gtk_grab_add(window); + gtk_widget_show_all(window); + + gtk_main(); + + if(!cancelled) + Strcpy(ret, (char *)gtk_entry_get_text(GTK_ENTRY(entry))); + else + *ret = '\0'; + + gtk_widget_unmap(window); + gtk_widget_destroy(window); + } *** ./win/gtk/gtkmap.c.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/gtkmap.c Mon Jan 24 13:26:05 2000 *************** *** 0 **** --- 1,1190 ---- + /* + $Id: gtkmap.c,v 1.3 1999/12/01 03:51:06 issei Exp issei $ + */ + + #include + #include + #include + #include + #include + #include "winGTK.h" + + /* + if map_click is true, we do gtk_main_quit() when clicking map + */ + static int map_click; + static int map_update; + + static GtkWidget *map_scroll; + static GtkWidget *map; + static GdkPixmap *map_pixmap; + static GdkFont *map_font; + + static Display *display; + static int screen; + static int scr_depth; + + static GdkGC *map_color_gc[N_NH_COLORS]; + + #ifdef RADAR + static int radar_is_popuped; + static int radar_is_created; + + static GtkWidget *radar; + static GtkWidget *radar_darea; + /* + we use 2 pixmaps for radar. + + radar_pixmap keeps radar dot + radar_pixmap2 keeps radar dot and frame rectangle + */ + static GdkPixmap *radar_pixmap; + static GdkPixmap *radar_pixmap2; + + #define RADAR_MONSTER MAP_YELLOW + #define RADAR_HUMAN MAP_WHITE + #define RADAR_PET MAP_GREEN + #define RADAR_OBJECT MAP_BLUE + + #define RADAR_WALL MAP_GRAY + #define RADAR_FLOOR MAP_DARK_GREEN + #define RADAR_DOOR MAP_ORANGE + #define RADAR_LADDER MAP_MAGENTA + #define RADAR_WATER MAP_BLUE + #define RADAR_TRAP MAP_RED + #define RADAR_SWALLOW MAP_RED + #define RADAR_ICE MAP_GRAY + #define RADAR_LAVA MAP_ORANGE + #define RADAR_BRIDGE MAP_GRAY + #define RADAR_AIR MAP_CYAN + #define RADAR_CLOUD MAP_GRAY + #define RADAR_BEAM MAP_YELLOW + + #endif + + static GdkPixmap *tile_pixmap; + static GdkBitmap *tile_mask; + static GdkImage *tile_image; + static GdkGC *map_gc; + + #define NH_WIDTH 80 + #define NH_HEIGHT 21 + + /* + BIG3DTILE + + +----------+ + ^ / /| + | / / | + | / / | + | / / | + *6 / / | + | +----------+ + + | ^ | | / ^ + | | | | / | + | *2 | | / *4 + | | | | / | + v v | |/ v + +----------+ + <-- *1 --> <-*3-> + <-- *5 --> + + *1 = 3D_WIDTH = 32 + *2 = 3D_HEIGHT = 32 + *3 = 3D_OFSET = 16 + *4 = 3D_OFSETY = 32 + *5 = WIDTH = 48 + *6 = HEIGHT = 64 + */ + + #ifdef BIG3DTILE + static TileTab Big3DTile = { + "Big 3D tiles", + "floor.xpm", + 960, 2880, /* tile map width height */ + 48, 64, /* unit_width, unit_height */ + 16, 32, /* 3d_ofset, 3d_ofsety */ + True, + True, + }; + #endif + + #ifdef BIGTILE + static TileTab BigTile = { + "Big tiles", + "t32-1024.xpm", + 1024, 896, /* tile map width height */ + 32, 32, /* width, height */ + 0, 0, + True, + False, + }; + #endif + + static TileTab SmallTile = { + "Small tiles", + "x11tiles", + -1, -1, /* tile map width height */ + 16, 16, /* width, height */ + 0, 0, + False, + False, + }; + + static TileTab *tileTab[] = { + NULL, /* dummy */ + &SmallTile, + #ifdef BIGTILE + &BigTile, + #endif + #ifdef BIG3DTILE + &Big3DTile + #endif + }; + + #ifdef BIGTILE + static TileTab *Tile = &BigTile; + static int map_visual = 2; + #else + static TileTab *Tile = &SmallTile; + static int map_visual = 1; + #endif + + static char *NH_TILE_FILE; + static int NH_TILE_PER_COL; + static int NH_TILE_3D_WIDTH; + static int NH_TILE_3D_HEIGHT; + static int NH_TILE_3D_OFSET; + static int NH_TILE_3D_OFSETY; + static int NH_TILE_WIDTH; + static int NH_TILE_HEIGHT; + static int NH_TILE_CACHE_WIDTH; + static int NH_TILE_CACHE_HEIGHT; + static int NH_MAP_WIDTH; + static int NH_MAP_HEIGHT; + static gint NH_TILEMAP_WIDTH; + static gint NH_TILEMAP_HEIGHT; + + static int NH_MAP_MAX_WIDTH; + static int NH_MAP_MAX_HEIGHT; + + #define FLOOR_SRC_X (((345 + 394 + 12) % NH_TILE_PER_COL) * NH_TILE_WIDTH) + #define FLOOR_SRC_Y (((345 + 394 + 12) / NH_TILE_PER_COL) * NH_TILE_HEIGHT) + + #ifdef RADAR + #define NH_RADAR_UNIT 4 + #define NH_RADAR_WIDTH (NH_WIDTH * NH_RADAR_UNIT) + #define NH_RADAR_HEIGHT (NH_HEIGHT * NH_RADAR_UNIT) + #endif + + extern short glyph2tile[]; + extern int root_width; + extern int root_height; + + int cursx; + int cursy; + + static int c_width; + static int c_height; + + static int c_3dwidth; + static int c_3dheight; + static int c_3dofset; + + static int c_map_width; + static int c_map_height; + + static struct tilemap{ + int glyph; + int bgtile; + int tile; + int update; + } gtkmap[NH_HEIGHT][NH_WIDTH]; + + #define NH_FONT "nh10" + #define NH_FONT2 "-misc-fixed-medium-r-normal--20-*-*-*-*-*-iso8859-1" + #define NH_FONT3 "fixed" + + static void nh_map_init(); + + /* + 0: character + 1: small tile + 2: big tile (option) + 3: big 3d tile (option) + */ + void + nh_set_map_visual(int mode) + { + int saved_vis = map_visual; + + if(mode < 0 || mode >= sizeof(tileTab) / sizeof(tileTab[0])) + panic("Bad visual!\n"); + + if(saved_vis != mode){ + nh_map_clear(); + + if(saved_vis != 0) + gdk_image_destroy(tile_image); + if(mode == 0){ + if(map_font->type != GDK_FONT_FONT) + panic("Bad font"); + + c_width = ((XFontStruct *)GDK_FONT_XFONT(map_font))->max_bounds.width; + c_height = map_font->ascent + map_font->descent; + c_3dwidth = c_width; + c_3dheight = c_height; + c_3dofset = 0; + + c_map_width = NH_WIDTH * c_width; + c_map_height = NH_HEIGHT * c_height; + } + else{ + Tile = tileTab[mode]; + nh_map_init(); + + tile_pixmap = gdk_pixmap_create_from_xpm( + map->window, + &tile_mask, + &nh_color[MAP_MAGENTA], + NH_TILE_FILE + ); + + if (!tile_pixmap) + panic("Cannot open tile file %s!",NH_TILE_FILE); + + gdk_window_get_size((GdkWindow *)tile_pixmap, + &NH_TILEMAP_WIDTH, &NH_TILEMAP_HEIGHT); + NH_TILE_PER_COL = NH_TILEMAP_WIDTH / Tile->unit_width; + + tile_image = gdk_image_get( + (GdkWindow *)tile_pixmap, + 0, 0, + NH_TILEMAP_WIDTH, NH_TILEMAP_HEIGHT); + + x_tile_init(GDK_IMAGE_XIMAGE(tile_image), Tile); + + gdk_pixmap_unref(tile_pixmap); + gdk_bitmap_unref(tile_mask); + + c_width = NH_TILE_WIDTH; + c_height = NH_TILE_HEIGHT; + c_3dwidth = NH_TILE_3D_WIDTH; + c_3dheight = NH_TILE_3D_HEIGHT; + c_3dofset = NH_TILE_3D_OFSET; + + c_map_width = NH_MAP_WIDTH; + c_map_height = NH_MAP_HEIGHT; + } + + nh_map_check_visibility(); + #ifdef RADAR + nh_radar_update(); + #endif + doredraw(); + } + map_visual = mode; + } + + int + nh_get_map_visual(void) + { + return map_visual; + } + + /* + fix tile number + */ + static int + fix_tile(int tile) + { + int orgtile = tile; + + if(map_visual == 0 || map_visual == 1) + return tile; + + if(orgtile >= glyph2tile[PM_HEALER]) + ++tile; + if(orgtile >= glyph2tile[PM_HIPPOCRATES]) + ++tile; + if(orgtile >= glyph2tile[PM_CYCLOPS]) + ++tile; + if(orgtile >= glyph2tile[PM_ATTENDANT]) + ++tile; + if(orgtile >= glyph2tile[GLYPH_OBJ_OFF + HAWAIIAN_SHIRT]) + ++tile; + + return tile; + } + + #ifdef RADAR + static gint + radar_expose_event(GtkWidget *widget, GdkEventExpose *event) + { + gdk_draw_pixmap( + widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE(widget)], + radar_pixmap2, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + + return FALSE; + } + + static gint + radar_destroy_event(GtkWidget *widget, gpointer data) + { + + radar_is_popuped = 0; + gtk_widget_hide_all(radar); + flags.radar = 0; + + return TRUE; + } + + #endif + + static gint + map_button_event(GtkWidget *widget, GdkEventButton *event) + { + GTK_curs(NHW_MAP, event->x / 32, event->y / 32); + + if(map_click) + gtk_main_quit(); + return FALSE; + } + + static gint + map_expose_event(GtkWidget *widget, GdkEventExpose *event) + { + if(map_visual == 0){ + gdk_draw_pixmap( + widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE(widget)], + map_pixmap, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + } + else + xshm_map_draw( + GDK_WINDOW_XWINDOW(widget->window), + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + + return FALSE; + } + + void + nh_map_check_visibility() + { + GtkAdjustment *adj; + int width, height; + int x, y; + int adjx, adjy; + + x = cursx; + y = cursy; + + if(map_scroll){ + width = map_scroll->allocation.width; + height = map_scroll->allocation.height; + + adj = gtk_scrolled_window_get_vadjustment( + GTK_SCROLLED_WINDOW(map_scroll) + ); + if(map_visual == 0) + adjy = (y - 10) * c_3dheight; + else + adjy = y * c_3dheight - height/2; + + if(adjy > c_map_height - adj->page_size) + adjy = c_map_height - adj->page_size; + + gtk_adjustment_set_value(adj, adjy); + + adj = gtk_scrolled_window_get_hadjustment( + GTK_SCROLLED_WINDOW(map_scroll) + ); + if(map_visual == 0) + adjx = (x - 40) * c_3dwidth; + else + adjx = x * c_3dwidth - width/2 + (NH_HEIGHT - y) * c_3dofset; + + if(adjx > c_map_width - adj->page_size) + adjx = c_map_width - adj->page_size; + + gtk_adjustment_set_value(adj, adjx); + } + } + + void + nh_map_clear() + { + #ifdef RADAR + GdkRectangle update_rect; + #endif + + if(map_visual == 0){ + gdk_draw_rectangle( + map_pixmap, map->style->black_gc, + TRUE, 0, 0, c_map_width, c_map_height); + + gdk_draw_pixmap( + map->window, + map->style->fg_gc[GTK_WIDGET_STATE(map)], + map_pixmap, + 0, 0, + 0, 0, + c_map_width, c_map_height); + } + else{ + gdk_draw_rectangle( + map_pixmap, map->style->black_gc, + TRUE, 0, 0, c_map_width, c_map_height); + + gdk_draw_pixmap( + map->window, + map->style->fg_gc[GTK_WIDGET_STATE(map)], + map_pixmap, + 0, 0, + 0, 0, + c_map_width, c_map_height); + } + #ifdef RADAR + gdk_draw_rectangle( + radar_pixmap, map->style->black_gc, + TRUE, 0, 0, NH_RADAR_WIDTH, NH_RADAR_HEIGHT); + + update_rect.x = 0; + update_rect.y = 0; + update_rect.width = NH_RADAR_WIDTH; + update_rect.height = NH_RADAR_HEIGHT; + + gtk_widget_draw(radar, &update_rect); + if(radar_is_popuped) + gdk_window_raise(radar->window); + #endif + + { + int i, j; + + xshm_map_clear(); + + for(i=0 ; ifile); + #else + NH_TILE_FILE = make_file_name(FILE_AREA_SHARE, Tile->file); + #endif + NH_TILE_3D_WIDTH = (Tile->unit_width - Tile->ofsetx_3d); + NH_TILE_3D_HEIGHT = (Tile->unit_height - Tile->ofsety_3d); + NH_TILE_3D_OFSET = (Tile->ofsetx_3d); + NH_TILE_3D_OFSETY = (Tile->ofsety_3d); + NH_TILE_WIDTH = (Tile->unit_width); + NH_TILE_HEIGHT = (Tile->unit_height); + NH_TILE_CACHE_WIDTH = (Tile->unit_width); + NH_TILE_CACHE_HEIGHT = (Tile->unit_height); + NH_MAP_WIDTH = (Tile->unit_width * NH_WIDTH); + NH_MAP_HEIGHT = (Tile->unit_height * NH_HEIGHT); + } + + void + nh_map_destroy() + { + map_scroll = NULL; + } + + GtkWidget * + nh_map_new(GtkWidget *w) + { + int i/*, n*/; + int width, height; + int shmflg; + + nh_map_init(); + + NH_MAP_MAX_WIDTH = -1; + NH_MAP_MAX_HEIGHT = -1; + for(i=1 ; i < sizeof(tileTab) / sizeof(tileTab[0]) ; ++i){ + width = (NH_WIDTH + 1) * (tileTab[i]->unit_width - tileTab[i]->ofsetx_3d) + + (NH_HEIGHT + 1) * tileTab[i]->ofsetx_3d; + height = (NH_HEIGHT + 1) * (tileTab[i]->unit_height - tileTab[i]->ofsety_3d); + + if(NH_MAP_MAX_WIDTH < width) + NH_MAP_MAX_WIDTH = width; + if(NH_MAP_MAX_HEIGHT < height) + NH_MAP_MAX_HEIGHT = height; + } + + display = GDK_DISPLAY(); + screen = DefaultScreen(display); + scr_depth = DefaultDepth(display, screen); + + map_scroll = gtk_scrolled_window_new( + NULL, NULL); + + gtk_scrolled_window_set_policy( + GTK_SCROLLED_WINDOW(map_scroll), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + + map = gtk_drawing_area_new(); + gtk_signal_connect(GTK_OBJECT(map), "expose_event", + GTK_SIGNAL_FUNC(map_expose_event), NULL); + + gtk_signal_connect(GTK_OBJECT(map), "button_press_event", + GTK_SIGNAL_FUNC(map_button_event), NULL); + + gtk_widget_set_events(map, GDK_EXPOSURE_MASK + | GDK_BUTTON_PRESS_MASK); + + + xshm_init(display); + shmflg = xshm_map_init(NH_MAP_MAX_WIDTH, NH_MAP_MAX_HEIGHT); + + + map_font = gdk_font_load(NH_FONT); + if(!map_font){ + /* fprintf(stderr, "warning: cannot load %s. try to load %s", NH_FONT, NH_FONT2);*/ + map_font = gdk_font_load(NH_FONT2); + } + + if(!map_font){ + fprintf(stderr, "warning: cannot load %s. try to load %s", NH_FONT2, NH_FONT3); + map_font = gdk_font_load(NH_FONT3); + } + + if(!map_font) + panic("Cannot open fixed font!"); + + /* + load tile + + It seems there are no way to create XImage from xpm + directory in GTK+. So, we create Pixmap first and + get whole image from Pixmap. + */ + + tile_pixmap = gdk_pixmap_create_from_xpm( + w->window, + &tile_mask, + &nh_color[MAP_MAGENTA], + NH_TILE_FILE + ); + + if (!tile_pixmap) + panic("Cannot open tile file %s!",NH_TILE_FILE); + + gdk_window_get_size((GdkWindow *)tile_pixmap, + &NH_TILEMAP_WIDTH, &NH_TILEMAP_HEIGHT); + NH_TILE_PER_COL = NH_TILEMAP_WIDTH / Tile->unit_width; + + tile_image = gdk_image_get( + (GdkWindow *)tile_pixmap, + 0, 0, + NH_TILEMAP_WIDTH, NH_TILEMAP_HEIGHT); + + x_tile_init(GDK_IMAGE_XIMAGE(tile_image), Tile); + + gdk_pixmap_unref(tile_pixmap); + gdk_bitmap_unref(tile_mask); + + map_gc = gdk_gc_new(w->window); + + if(map_visual == 0){ + c_height = map_font->ascent + map_font->descent; + c_width = gdk_string_width(map_font, "W"); + } + else{ + c_width = NH_TILE_WIDTH; + c_height = NH_TILE_HEIGHT; + c_3dwidth = NH_TILE_3D_WIDTH; + c_3dheight = NH_TILE_3D_HEIGHT; + c_3dofset = NH_TILE_3D_OFSET; + + } + c_map_width = NH_MAP_MAX_WIDTH; + c_map_height = NH_MAP_MAX_HEIGHT; + + gtk_drawing_area_size( + GTK_DRAWING_AREA(map), + NH_MAP_MAX_WIDTH, NH_MAP_MAX_HEIGHT); + + map_pixmap = gdk_pixmap_new( + w->window, + NH_MAP_MAX_WIDTH, NH_MAP_MAX_HEIGHT, -1); + + gtk_scrolled_window_add_with_viewport( + GTK_SCROLLED_WINDOW(map_scroll), + map); + + /* + set map area size + */ + width = NH_MAP_MAX_WIDTH + 22; + height = NH_MAP_MAX_HEIGHT + 22; + + if(width >= root_width) + width = root_width - 50; + + if(height >= root_height * .67) + height = root_height * .67 - 50; + + gtk_widget_set_usize(GTK_WIDGET(map_scroll), width, height); + /* + set gc + */ + for(i=0 ; i < N_NH_COLORS ; ++i){ + map_color_gc[i] = gdk_gc_new(w->window); + gdk_gc_set_foreground(map_color_gc[i], &nh_color[i]); + gdk_gc_set_background(map_color_gc[i], &nh_color[MAP_BACKGROUND]); + } + + return map_scroll; + } + + /* + create radar + */ + + #ifdef RADAR + GtkWidget * + nh_radar_new() + { + radar = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_widget_realize(radar); + + radar_is_created = 1; + + gtk_window_set_title(GTK_WINDOW(radar), "NetHack Radar"); + + radar_darea = nh_gtk_new_and_add(gtk_drawing_area_new(), radar, ""); + gtk_drawing_area_size( + GTK_DRAWING_AREA(radar_darea), + NH_RADAR_WIDTH, NH_RADAR_HEIGHT); + + gtk_signal_connect( + GTK_OBJECT(radar_darea), "expose_event", + GTK_SIGNAL_FUNC(radar_expose_event), NULL); + + gtk_signal_connect( + GTK_OBJECT(radar), "delete_event", + GTK_SIGNAL_FUNC(radar_destroy_event), 0); + + radar_pixmap = gdk_pixmap_new( + radar->window, + NH_RADAR_WIDTH, NH_RADAR_HEIGHT, -1); + + radar_pixmap2 = gdk_pixmap_new( + radar->window, + NH_RADAR_WIDTH, NH_RADAR_HEIGHT, -1); + + return radar; + } + #endif + + #ifdef RADAR + void + nh_print_radar(int x, int y, int glyph) + { + int c; + /* + int tile = glyph2tile[glyph]; + */ + c = MAP_BLACK; + + if(glyph < PM_ARCHEOLOGIST) + c = RADAR_MONSTER; + else if(glyph_is_monster(glyph)) + c = RADAR_HUMAN; + else if(glyph_is_pet(glyph)) + c = RADAR_PET; + else if(glyph_is_object(glyph)) + c = RADAR_OBJECT; + else if(glyph_is_trap(glyph)) + c = RADAR_TRAP; + else if(glyph_is_swallow(glyph)) + c = RADAR_SWALLOW; + else if(glyph_is_cmap(glyph)){ + if(glyph == GLYPH_CMAP_OFF) + ; + else if(glyph <= GLYPH_CMAP_OFF + S_trwall) + c = RADAR_WALL; + else if(glyph <= GLYPH_CMAP_OFF + S_hcdoor) + c = RADAR_DOOR; + else if(glyph <= GLYPH_CMAP_OFF + S_litcorr) + c = RADAR_FLOOR; + else if(glyph <= GLYPH_CMAP_OFF + S_dnladder) + c = RADAR_LADDER; + else if(glyph <= GLYPH_CMAP_OFF + S_pool) + c = RADAR_WATER; + else if(glyph <= GLYPH_CMAP_OFF + S_ice) + c = RADAR_ICE; /* fountain sink ice */ + else if(glyph <= GLYPH_CMAP_OFF + S_lava) + c = RADAR_LAVA; /* lava */ + else if(glyph <= GLYPH_CMAP_OFF + S_hcdbridge) + c = RADAR_BRIDGE; /* bridge */ + else if(glyph <= GLYPH_CMAP_OFF + S_air) + c = RADAR_AIR; /* air */ + else if(glyph <= GLYPH_CMAP_OFF + S_cloud) + c = RADAR_CLOUD; /* cloud */ + else if(glyph <= GLYPH_CMAP_OFF + S_water) + c = RADAR_WATER; /* water */ + else if(glyph < GLYPH_CMAP_OFF + S_explode9) + c = RADAR_BEAM; /* beam */ + } + else + c = RADAR_WALL; + + gdk_draw_rectangle( + radar_pixmap, map_color_gc[c], + TRUE, + x * NH_RADAR_UNIT, y * NH_RADAR_UNIT, + NH_RADAR_UNIT, NH_RADAR_UNIT); + } + #endif + + #ifdef TEXTCOLOR + #define zap_color(n) (zapcolors[n]) + #define cmap_color(n) (defsyms[n].color) + #define obj_color(n) (objects[n].oc_color) + #define mon_color(n) (mons[n].mcolor) + #define pet_color(n) (mons[n].mcolor) + #else + #define zap_color(n) (n) + #define cmap_color(n) (n) + #define obj_color(n) (n) + #define mon_color(n) (n) + #define pet_color(n) (n) + #endif + + + static void + nh_map_print_glyph_traditional(XCHAR_P x, XCHAR_P y, struct tilemap *tmap, GdkRectangle *rect) + { + static GdkRectangle update_rect; + int color; + int glyph = tmap->glyph; + int offset; + char ch; + + color = 0; + + if ((offset = (glyph - GLYPH_SWALLOW_OFF)) >= 0) { /* swallow */ + ch = (uchar) showsyms[S_sw_tl + (offset & 0x7)]; + color = mon_color(offset>>3); + } + else if ((offset = (glyph - GLYPH_ZAP_OFF)) >= 0) { /* zap beam */ + ch = showsyms[S_vbeam + (offset & 0x3)]; + color = zap_color(offset>>2); + } + else if ((offset = (glyph - GLYPH_CMAP_OFF)) >= 0) {/* cmap */ + ch = showsyms[offset]; + color = cmap_color(offset); + } + else if ((offset = (glyph - GLYPH_OBJ_OFF)) >= 0) { /* object */ + ch = oc_syms[(int)objects[offset].oc_class]; + color = obj_color(offset); + } + else if ((offset = (glyph - GLYPH_BODY_OFF)) >= 0) {/* a corpse */ + ch = oc_syms[(int)objects[CORPSE].oc_class]; + color = mon_color(offset); + } + else if ((offset = (glyph - GLYPH_PET_OFF)) >= 0) { /* a pet */ + ch = monsyms[(int)mons[offset].mlet]; + color = pet_color(offset); + } + else{ /* a monster */ + ch = monsyms[(int)mons[glyph].mlet]; + color = mon_color(glyph); + } + + update_rect.x = x * c_width; + update_rect.y = y * c_height - map_font->ascent; + update_rect.width = c_width; + update_rect.height = c_height; + + #ifdef TEXTCOLOR + gdk_draw_rectangle( + map_pixmap, map_color_gc[MAP_BACKGROUND], + TRUE, x * c_width, y * c_height - map_font->ascent, c_width, c_height); + + gdk_draw_text( + map_pixmap, map_font, + map_color_gc[color], + x * c_width, y * c_height, &ch, 1); + + if(glyph_is_pet(glyph) + #ifdef TEXTCOLOR + && iflags.hilite_pet + #endif + ){ + gdk_draw_rectangle( + map_pixmap, + map_color_gc[MAP_RED], + FALSE, + x * c_width, y * c_height - map_font->ascent, + c_width - 1, c_height - 1 + ); + } + #else + gdk_draw_rectangle( + map_pixmap, map->style->bg_gc, + TRUE, x * c_width, y * c_height - map_font->ascent, c_width, c_height); + + gdk_draw_text( + map_pixmap, map_font, + map->style->black_gc, + x*c_width, y*c_height, &ch, 1); + #endif + if(rect) + *rect = update_rect; + } + + /* + flag False: draw tile + True: draw bgtile + */ + static void + nh_map_print_glyph_tmp(struct tilemap *tmap, int ofsx, int ofsy, int flag) + { + int glyph = tmap->glyph; + int tile = tmap->tile; + int bgtile = tmap->bgtile; + int src_x, src_y; + int bgsrc_x, bgsrc_y; + + src_x = (tile % NH_TILE_PER_COL) * c_width; + src_y = (tile / NH_TILE_PER_COL) * c_height; + + bgsrc_x = (bgtile % NH_TILE_PER_COL) * c_width; + bgsrc_y = (bgtile / NH_TILE_PER_COL) * c_height; + + if(!Tile->transparent){ + if(flag == False) + x_tile_tmp_draw(src_x, src_y, ofsx, ofsy); + } + else if(flag == False){ + if(bgtile != tile) + x_tile_tmp_draw(src_x, src_y, ofsx, ofsy); + } + else{ + x_tile_tmp_draw(FLOOR_SRC_X, FLOOR_SRC_Y, ofsx, ofsy); + x_tile_tmp_draw(bgsrc_x, bgsrc_y, ofsx, ofsy); + } + + if(glyph_is_pet(glyph) + #ifdef TEXTCOLOR + && iflags.hilite_pet + #endif + ){ + x_tile_tmp_draw_rectangle(ofsx, ofsy, nh_color[MAP_RED].pixel); + } + } + + static void + nh_map_print_glyph_tile(XCHAR_P x, XCHAR_P y, struct tilemap *tmap, GdkRectangle *rect) + { + static GdkRectangle update_rect; + + x_tmp_clear(); + + if(Tile->spread){ + /* + draw bgtiles + */ + if(x > 0 && y > 0){ + nh_map_print_glyph_tmp( + >kmap[y-1][x-1], + -c_3dwidth + c_3dofset, -c_3dheight, 1); + } + if(y > 0){ + nh_map_print_glyph_tmp( + >kmap[y-1][x], + c_3dofset, -c_3dheight, 1); + } + /* + draw tiles + */ + if(x > 0 && y > 0){ + nh_map_print_glyph_tmp( + >kmap[y-1][x-1], + -c_3dwidth + c_3dofset, -c_3dheight, 0); + } + if(y > 0){ + nh_map_print_glyph_tmp( + >kmap[y-1][x], + c_3dofset, -c_3dheight, 0); + } + } + /* + draw bgtiles + */ + if(Tile->spread){ + if(x > 0){ + nh_map_print_glyph_tmp( + >kmap[y][x-1], + -c_3dwidth, 0, 1); + } + } + + nh_map_print_glyph_tmp(>kmap[y][x], 0, 0, 1); + + if(Tile->spread){ + if(x < NH_WIDTH - 1){ + nh_map_print_glyph_tmp( + >kmap[y][x+1], + c_3dwidth, 0, 1); + } + } + /* + draw tiles + */ + if(Tile->spread){ + if(x > 0){ + nh_map_print_glyph_tmp( + >kmap[y][x-1], + -c_3dwidth, 0, 0); + } + } + + nh_map_print_glyph_tmp(>kmap[y][x], 0, 0, 0); + + if(Tile->spread){ + if(x < NH_WIDTH - 1){ + nh_map_print_glyph_tmp( + >kmap[y][x+1], + c_3dwidth, 0, 0); + } + } + /* + draw bgtiles + */ + if(Tile->spread){ + if(y < NH_HEIGHT - 1){ + nh_map_print_glyph_tmp( + >kmap[y+1][x], + -c_3dofset, c_3dheight, 1); + } + if(x < NH_WIDTH - 1 && y < NH_HEIGHT - 1){ + nh_map_print_glyph_tmp( + >kmap[y+1][x+1], + c_3dwidth - c_3dofset, c_3dheight, 1); + } + /* + draw tiles + */ + if(y < NH_HEIGHT - 1){ + nh_map_print_glyph_tmp( + >kmap[y+1][x], + -c_3dofset, c_3dheight, 0); + } + if(x < NH_WIDTH - 1 && y < NH_HEIGHT - 1){ + nh_map_print_glyph_tmp( + >kmap[y+1][x+1], + c_3dwidth - c_3dofset, c_3dheight, 0); + } + } + + xshm_map_tile_draw( + x * c_3dwidth + (NH_HEIGHT - y) * c_3dofset, + y * c_3dheight); + + update_rect.x = x * c_3dwidth + (NH_HEIGHT - y) * c_3dofset; + update_rect.y = y * c_3dheight; + update_rect.width = c_width; + update_rect.height = c_height; + + if(rect) + *rect = update_rect; + } + + static void + nh_map_print_glyph(XCHAR_P x, XCHAR_P y, struct tilemap *tmap, GdkRectangle *rect) + { + int glyph = tmap->glyph; + + #ifdef RADAR + nh_print_radar(x, y, glyph); + #endif + + if(map_visual == 0) + nh_map_print_glyph_traditional(x, y, tmap, rect); + else + nh_map_print_glyph_tile(x, y, tmap, rect); + } + + void + GTK_print_glyph(winid id, XCHAR_P x, XCHAR_P y, int glyph) + { + struct rm *lev = &levl[x][y]; + int tile; + int bgtile; + int bg = lev->glyph; + + tile = fix_tile(glyph2tile[glyph]); + if(Blind || (viz_array && !cansee(x, y))){ + + if(glyph_is_object(bg)){ + if(!lev->waslit) + bg = cmap_to_glyph(S_stone); + else + bg = back_to_glyph(x, y); + } + bgtile = fix_tile(glyph2tile[bg]); + } + else + bgtile = fix_tile(glyph2tile[back_to_glyph(x, y)]); + + gtkmap[y][x].glyph = glyph; + gtkmap[y][x].bgtile = bgtile; + gtkmap[y][x].tile = tile; + gtkmap[y][x].update = 1; + map_update++; + } + + void + GTK_curs(winid id, int x, int y) + { + GdkRectangle update_rect; + + if(id != NHW_MAP) + return; + + if(cursx == x && cursy == y) + ; + else{ + update_rect.x = cursx * c_3dwidth + (NH_HEIGHT - cursy) * c_3dofset; + update_rect.y = cursy * c_3dheight - (map_visual == 0 ? map_font->ascent : 0); + update_rect.width = c_width; + update_rect.height = c_height; + gtk_widget_draw(map, &update_rect); + + cursx = x; + cursy = y; + } + + update_rect.x = x * c_3dwidth + (NH_HEIGHT - y) * c_3dofset; + update_rect.y = y * c_3dheight - (map_visual == 0 ? map_font->ascent : 0); + update_rect.width = c_width; + update_rect.height = c_height; + + gdk_draw_rectangle( + map->window, map->style->white_gc, FALSE, + update_rect.x, update_rect.y, + c_width - 1, c_height - 1); + } + + #ifdef RADAR + void + nh_radar_update() + { + GdkRectangle update_rect; + GtkAdjustment *hadj, *vadj; + + if(flags.radar && !radar_is_popuped){ + if(radar_is_created == 0) + nh_radar_new(); + + gtk_widget_show_all(radar); + radar_is_popuped= 1; + } + if(!flags.radar && radar_is_popuped){ + gtk_widget_hide_all(radar); + radar_is_popuped= 0; + } + + if(radar_is_popuped){ + if(map_scroll){ + hadj = gtk_scrolled_window_get_hadjustment( + GTK_SCROLLED_WINDOW(map_scroll) + ); + + vadj = gtk_scrolled_window_get_vadjustment( + GTK_SCROLLED_WINDOW(map_scroll) + ); + /* + Anyone know the function which copy from pixmap to pixmap in GDK? + */ + gdk_window_copy_area( + radar_pixmap2, map->style->white_gc, + 0, 0, + radar_pixmap, + 0, 0, + NH_RADAR_WIDTH, NH_RADAR_HEIGHT); + + gdk_draw_rectangle( + radar_pixmap2, map->style->white_gc, + FALSE, + hadj->value / c_3dwidth * NH_RADAR_UNIT, + vadj->value / c_3dheight * NH_RADAR_UNIT, + hadj->page_size / c_3dwidth * NH_RADAR_UNIT, + vadj->page_size / c_3dheight * NH_RADAR_UNIT); + + update_rect.x = 0; + update_rect.y = 0; + update_rect.width = NH_RADAR_WIDTH; + update_rect.height = NH_RADAR_HEIGHT; + + gtk_widget_draw(radar, &update_rect); + if(radar_is_popuped) + gdk_window_raise(radar->window); + } + } + } + #endif + + void + GTK_cliparound(int x, int y) + { + ; + } + + void + nh_map_click(int f) + { + map_click = f; + } + + void + nh_map_pos(int *x, int *y) + { + *x = cursx; + *y = cursy; + } + + void + nh_map_flush() + { + int i, j; + GdkRectangle update_rect; + + if(map_update != 0){ + map_update = 0; + + for(i=0 ; i + #include + #include + #include + #include "winGTK.h" + + static int cancelled; + static int n_menuitem; + static int c_menuitem; + static int n_select; + + static int selmode; + + static int keysym; + + typedef struct _NHMenuItem{ + GtkWidget *clist; + int ch; + int gch; + int selected; + ANY_P id; + } NHMenuItem; + + static NHMenuItem nhMenuItem[100]; /* may be enough */ + extern NHWindow gtkWindows[]; + + static gint + menu_destroy(GtkWidget *widget, gpointer data) + { + NHWindow *w = (NHWindow *)data; + + keysym = '\033'; + cancelled = 1; + + gtk_main_quit(); + + w->w = NULL; + return FALSE; + } + + static gint + menu_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) + { + keysym = nh_keysym(event); + if(event->keyval == GDK_Escape){ + keysym = '\033'; + cancelled = 1; + } + + if(keysym) + gtk_main_quit(); + + return FALSE; + } + + static gint + menu_button_clicked(GtkWidget *widget, gpointer data) + { + keysym = (int)data; + + if(keysym == '\033') + cancelled = 1; + + if(keysym) + gtk_main_quit(); + + return FALSE; + } + + static gint + menu_selected(GtkWidget *clist, gint row, gint column, + GdkEventButton *event, gpointer data) + { + nhMenuItem[row].selected = 1; + ++n_select; + /* + if(selmode == PICK_ONE) + gtk_main_quit(); + */ + return FALSE; + } + + static gint + menu_unselected(GtkWidget *clist, gint row, gint column, + GdkEventButton *event, gpointer data) + { + nhMenuItem[row].selected = 0; + --n_select; + + return FALSE; + } + + void + GTK_start_menu(winid id) + { + NHWindow *w; + GtkWidget *b; + + w = >kWindows[id]; + + n_menuitem = 0; + c_menuitem = 'a'; + + w->w = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_widget_set_name(GTK_WIDGET(w->w), "fixed font"); + gtk_window_set_position(GTK_WINDOW(w->w), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(w->w), "key_press_event", + GTK_SIGNAL_FUNC(menu_key_press), NULL); + w->hid = gtk_signal_connect( + GTK_OBJECT(w->w), "destroy", + GTK_SIGNAL_FUNC(menu_destroy), w); + + w->frame = nh_gtk_new_and_add( + gtk_frame_new(NULL), w->w, ""); + + w->vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), w->frame, ""); + + w->hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), w->vbox, "", + FALSE, FALSE, NH_PAD); + + b = w->button[0] = nh_gtk_new_and_pack( + gtk_button_new_with_label("ok"), w->hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect(GTK_OBJECT(b), "clicked", + GTK_SIGNAL_FUNC(menu_button_clicked), (gpointer)'\n'); + + b = w->button[1] = nh_gtk_new_and_pack( + gtk_button_new_with_label("cancel"), w->hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect(GTK_OBJECT(b), "clicked", + GTK_SIGNAL_FUNC(menu_button_clicked), (gpointer)'\033'); + + b = w->button[2] = nh_gtk_new_and_pack( + gtk_button_new_with_label("all"), w->hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect(GTK_OBJECT(b), "clicked", + GTK_SIGNAL_FUNC(menu_button_clicked), (gpointer)'.'); + + b = w->button[3] = nh_gtk_new_and_pack( + gtk_button_new_with_label("none"), w->hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect(GTK_OBJECT(b), "clicked", + GTK_SIGNAL_FUNC(menu_button_clicked), (gpointer)'\\'); + + b = w->button[4] = nh_gtk_new_and_pack( + gtk_button_new_with_label("invert"), w->hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect(GTK_OBJECT(b), "clicked", + GTK_SIGNAL_FUNC(menu_button_clicked), (gpointer)'@'); + + w->hbox2 = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), w->vbox, "", + FALSE, FALSE, NH_PAD); + + w->adj = (GtkAdjustment *)gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + w->clist = nh_gtk_new_and_pack( + gtk_clist_new(3), w->hbox2, "", + FALSE, FALSE, NH_PAD); + + gtk_clist_set_vadjustment(GTK_CLIST(w->clist), w->adj); + gtk_clist_set_selection_mode(GTK_CLIST(w->clist), GTK_SELECTION_EXTENDED); + + gtk_clist_set_shadow_type(GTK_CLIST(w->clist), GTK_SHADOW_ETCHED_IN); + gtk_clist_set_column_auto_resize(GTK_CLIST(w->clist), 0, TRUE); + gtk_clist_set_column_auto_resize(GTK_CLIST(w->clist), 1, TRUE); + gtk_clist_set_column_auto_resize(GTK_CLIST(w->clist), 2, TRUE); + + w->scrolled = nh_gtk_new_and_pack( + gtk_vscrollbar_new(GTK_CLIST(w->clist)->vadjustment), w->hbox2, "", + FALSE, FALSE, NH_PAD); + + gtk_signal_connect(GTK_OBJECT(w->clist), "select_row", + GTK_SIGNAL_FUNC(menu_selected), (gpointer)w); + gtk_signal_connect(GTK_OBJECT(w->clist), "unselect_row", + GTK_SIGNAL_FUNC(menu_unselected), (gpointer)w); + + w->hbox3 = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), w->vbox, "", + FALSE, FALSE, NH_PAD); + + b = w->button[5] = nh_gtk_new_and_pack( + gtk_button_new_with_label("Close"), w->hbox3, "", + TRUE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(b), "clicked", + GTK_SIGNAL_FUNC(menu_button_clicked), (gpointer)'\n'); + + w->n_button = 6; + } + + void + GTK_add_menu(winid id, int glyph, const ANY_P *identifier, + CHAR_P ch,CHAR_P gch ,int attr ,const char *str, + BOOLEAN_P preselected) + { + GtkWidget *c; + NHWindow *w; + char buf[2], buf2[2]; + gchar *text[3]; + + if(!str || str[0] == '\0') + return; + + w = >kWindows[id]; + + c = w->clist; + + if(identifier->a_void && !ch){ + ch = c_menuitem++; + if(c_menuitem > 'z') + c_menuitem = 'A'; + } + + nhMenuItem[n_menuitem].clist = c; + nhMenuItem[n_menuitem].ch = ch; + nhMenuItem[n_menuitem].gch = gch; + nhMenuItem[n_menuitem].selected = FALSE; + nhMenuItem[n_menuitem].id = *identifier; + + sprintf(buf, "%c", ch); + text[0] = buf; + + if(gch){ + sprintf(buf2, "%c", gch); + text[1] = buf2; + } + else + text[1] = ""; + + text[2] = (gchar *)str; + + gtk_clist_append(GTK_CLIST(c), text); + if(!identifier->a_void){ + gtk_clist_set_selectable(GTK_CLIST(c), n_menuitem, FALSE); + if(attr != 0) + gtk_clist_set_background(GTK_CLIST(c), n_menuitem, c->style->dark); + } + + ++n_menuitem; + } + + void + GTK_end_menu(winid id, const char *prompt) + { + NHWindow *w; + + w = >kWindows[id]; + + if(prompt) + gtk_frame_set_label(GTK_FRAME(w->frame), prompt); + } + + int + GTK_select_menu(winid id, int how, MENU_ITEM_P **menu_list) + { + int i; + int n; + NHWindow *w; + NHMenuItem *item; + /* + GtkAdjustment *a, *aa; + */ + + n = 0; + n_select = 0; + selmode = how; + + w = >kWindows[id]; + *menu_list = 0; + + cancelled = 0; + + if(how != PICK_ANY){ + gtk_clist_set_selection_mode(GTK_CLIST(w->clist), GTK_SELECTION_SINGLE); + gtk_widget_set_sensitive(w->button[1], FALSE); + gtk_widget_set_sensitive(w->button[2], FALSE); + gtk_widget_set_sensitive(w->button[3], FALSE); + gtk_widget_set_sensitive(w->button[4], FALSE); + } + + { + extern int root_height; + int height = w->clist->requisition.height; + + if(height >= (2 * root_height) / 3) + gtk_widget_set_usize(w->clist, -1, (2 * root_height) / 3); + } + + gtk_grab_add(w->w); + gtk_widget_show_all(w->w); + + gtk_main(); + /* + a = GTK_CLIST(w->clist)->vadjustment; + aa = GTK_CLIST(w->clist)->hadjustment; + */ + while(1){ + if(keysym == '\033' || keysym == '\n' || keysym == ' ') + break; + + if(how == PICK_ONE && n_select == 1) + break; + + if(how != PICK_NONE){ + for(i=0 ; iid.a_void){ + if(item->selected){ + gtk_clist_unselect_row( + GTK_CLIST(item->clist), + i, 0); + } + else{ + gtk_clist_select_row( + GTK_CLIST(item->clist), + i, 0); + } + } + } + if(keysym == MENU_UNSELECT_PAGE || keysym == MENU_UNSELECT_ALL){ + if(item->id.a_void){ + gtk_clist_unselect_row( + GTK_CLIST(item->clist), + i, 0); + } + } + if(keysym == MENU_SELECT_PAGE || keysym == MENU_SELECT_ALL){ + if(item->id.a_void){ + gtk_clist_select_row( + GTK_CLIST(item->clist), + i, 0); + } + } + else if(item->gch == keysym){ + if(item->selected){ + gtk_clist_unselect_row( + GTK_CLIST(item->clist), + i, 0); + } + else{ + gtk_clist_select_row( + GTK_CLIST(item->clist), + i, 0); + } + } + } + if(item->ch == keysym){ + if(item->selected){ + gtk_clist_unselect_row( + GTK_CLIST(item->clist), + i, 0); + } + else{ + gtk_clist_select_row( + GTK_CLIST(item->clist), + i, 0); + } + if(how == PICK_ONE) + goto loopout; + } + } + } + + gtk_main(); + } + loopout: + + GTK_destroy_nhwindow(id); + + if(cancelled) + return 0; + + for(i=0 ; i 0){ + *menu_list = (menu_item *) alloc(n * sizeof(menu_item)); + + n = 0; + for(i=0 ; i + #include + #include + #include + #include "winGTK.h" + + static GtkWidget *message_h; + static GtkWidget *message_hbox; + static GtkWidget *message_text; + static GtkWidget *message_scrollbar; + + extern int root_width; + extern int root_height; + + GtkWidget * + nh_message_new() + { + message_h = gtk_handle_box_new(); + GTK_HANDLE_BOX(message_h)->shrink_on_detach = 1; + + message_hbox = nh_gtk_new_and_add(gtk_hbox_new(FALSE, 0), message_h, ""); + + message_text = nh_gtk_new_and_pack( + gtk_text_new(NULL, NULL), message_hbox, "", + FALSE, FALSE, NH_PAD); + GTK_WIDGET_UNSET_FLAGS(message_text, GTK_CAN_FOCUS); + + gtk_widget_set_usize(GTK_WIDGET(message_text), (root_width)/2, -1); + + message_scrollbar = nh_gtk_new_and_pack( + gtk_vscrollbar_new(GTK_TEXT(message_text)->vadj), message_hbox, "", + FALSE, FALSE, NH_PAD); + + return message_h; + } + + void + nh_message_putstr(const char *str) + { + int i; + int len; + char *buf; + GtkText *t; + + t = GTK_TEXT(message_text); + + buf = malloc(strlen(str) + 2); + + sprintf(buf, "\n%s", str); + + if(u.uhpmax > 0 && (((double)u.uhp) / u.uhpmax < 0.1 || u.uhp < 5)) + gtk_text_insert(t, NULL, &nh_color[MAP_RED], &nh_color[MAP_WHITE], buf, strlen(buf)); + else + gtk_text_insert(t, NULL, &nh_color[MAP_BLACK], &nh_color[MAP_WHITE], buf, strlen(buf)); + + len = gtk_text_get_length(t); + if(len > NH_TEXT_REMEMBER){ + for(i=0 ; i + #include + #include + #include + #include "winGTK.h" + + static gboolean option_lock; + static int keysym; + static GtkWidget *entry_url; + static GtkWidget *entry_plname; + static GtkWidget *entry_dogname; + static GtkWidget *entry_catname; + static GtkWidget *entry_fruit; + static GtkWidget *entry_proxy, *entry_proxy_port; + static GtkWidget *radio_m, *radio_f; + static GtkWidget *radio_k, *radio_d, *radio_r; + static GtkWidget *radio_menu_t, *radio_menu_p, *radio_menu_c, *radio_menu_f; + static GtkWidget *radio_visual_monji, *radio_visual_tile; + static GtkWidget *radio_visual_bigtile, *radio_visual_big3dtile; + + static struct GTK_Option{ + char *opt_name; + char *on; + char *off; + boolean *opt_p; + boolean not; + GSList *group; + GtkWidget *radio1; + GtkWidget *radio2; + } gtk_option[] = { + {"prevent you from attacking your pet", "Yes", "No", &flags.safe_dog}, + {"ask before hidding peaceful monsters", "Yes", "No", &flags.confirm}, + #ifdef TEXTCOLOR + {"display pets in a red square", "Yes", "No", &iflags.hilite_pet}, + #endif + #ifdef RADAR + {"display radar", "Yes", "No", &flags.radar}, + #endif + {NULL,}, + {"display experience points", "Yes", "No", &flags.showexp}, + #ifdef SCORE_ON_BOTL + {"display score points", "Yes", "No", &flags.showscore}, + #endif + {"display elapsed game time", "Yes", "No", &flags.time}, + {NULL,}, + {"automatically pick up objects", "Yes", "No", &flags.pickup}, + {NULL,}, + {"print introductory message", "Yes", "No", &flags.legacy}, + #ifdef NEWS + {"print any news", "Yes", "No", &iflags.news}, + #endif + #ifdef MAIL + {"enable the mail dameon", "Yes", "No", &flags.biff}, + #endif + {NULL,}, + {"space bar as a rest character", "Yes", "No", &flags.rest_on_space}, + {"print more commentary", "Yes", "No", &flags.verbose}, + {NULL,}, + {"print tombstone when die", "Yes", "No", &flags.tombstone}, + {NULL,}, + {"try to retain the same letter for the same objects", "Yes", "No", &flags.invlet_constant}, + {"group similar kinds of objects in inventory", "Yes", "No", &flags.sortpack}, + }; + + static void nh_option_set(void); + + static gint + default_destroy(GtkWidget *widget, gpointer data) + { + guint *hid = (guint *)data; + *hid = 0; + keysym = '\033'; + + gtk_main_quit(); + + return FALSE; + } + + static gint + default_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) + { + keysym = nh_keysym(event); + + if(keysym == '\n' || keysym == '\033') + gtk_main_quit(); + + return FALSE; + } + + static gint + default_clicked(GtkWidget *widget, gpointer data) + { + if(data) + keysym = (int)data; + else + keysym = '\n'; + + if(keysym == 'm'){ + doset(); + nh_option_set(); + } + else + gtk_main_quit(); + + return FALSE; + } + + static void + nh_option_set(void) + { + int i; + struct GTK_Option *p; + + if(flags.female) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_f), TRUE); + if(preferred_pet == 'c' || preferred_pet == 'k') + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_k), TRUE); + else if(preferred_pet == 'd') + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_d), TRUE); + else + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_r), TRUE); + + switch(flags.menu_style){ + case MENU_TRADITIONAL: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_menu_t), TRUE); + break; + case MENU_PARTIAL: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_menu_p), TRUE); + break; + case MENU_COMBINATION: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_menu_c), TRUE); + break; + case MENU_FULL: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_menu_f), TRUE); + break; + } + + for(i=0 ; igroup = NULL; + if(p->opt_name){ + if(p->opt_p && *p->opt_p){ + if(!p->not) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->radio1), TRUE); + else + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->radio2), TRUE); + } + else{ + if(!p->not) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->radio2), TRUE); + else + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->radio1), TRUE); + } + + } + } + } + + static GtkWidget* + nh_option_plname_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox, *hbox2; + GtkWidget *label; + GSList *female_group = NULL; + + frame = gtk_frame_new("Player"); + /* gtk_container_border_width(GTK_CONTAINER(frame), NH_PAD);*/ + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), frame, ""); + hbox = nh_gtk_new_and_pack(gtk_hbox_new(FALSE, 0), vbox, "", FALSE, FALSE, NH_PAD); + label = nh_gtk_new_and_pack(gtk_label_new("Name:"), hbox, "", FALSE, FALSE, NH_PAD); + + entry_plname = nh_gtk_new_and_pack(gtk_entry_new_with_max_length(PL_NSIZ), + hbox, "", FALSE, FALSE, NH_PAD); + gtk_entry_set_text(GTK_ENTRY(entry_plname), (const gchar *)plname); + + hbox2 = nh_gtk_new_and_pack(gtk_hbox_new(FALSE, 0), vbox, "", FALSE, FALSE, NH_PAD); + radio_m = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(female_group, "Male"), + hbox2, "", FALSE, FALSE, NH_PAD); + female_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_m)); + + radio_f = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(female_group, "Female"), + hbox2, "", FALSE, FALSE, NH_PAD); + female_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_f)); + + gtk_widget_set_sensitive(GTK_WIDGET(label), !option_lock); + gtk_widget_set_sensitive(GTK_WIDGET(radio_f), !option_lock); + gtk_widget_set_sensitive(GTK_WIDGET(radio_m), !option_lock); + + return frame; + } + + static GtkWidget * + nh_option_pet_kitten_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + + frame = gtk_frame_new("Kitten"); + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + label = nh_gtk_new_and_pack( + gtk_label_new("Name:"), + hbox, "", FALSE, FALSE, NH_PAD); + entry_catname = nh_gtk_new_and_pack( + gtk_entry_new_with_max_length(PL_NSIZ), + hbox, "", FALSE, FALSE, NH_PAD); + + gtk_entry_set_text(GTK_ENTRY(entry_catname), (const gchar *)catname); + + gtk_widget_set_sensitive(GTK_WIDGET(label), !option_lock); + + return frame; + } + + static GtkWidget * + nh_option_pet_dog_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + + frame = gtk_frame_new("Dog"); + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + label = nh_gtk_new_and_pack( + gtk_label_new("Name:"), + hbox, "", FALSE, FALSE, NH_PAD); + entry_dogname = nh_gtk_new_and_pack( + gtk_entry_new_with_max_length(PL_NSIZ), + hbox, "", FALSE, FALSE, NH_PAD); + + gtk_entry_set_text(GTK_ENTRY(entry_dogname), (const gchar *)dogname); + + gtk_widget_set_sensitive(GTK_WIDGET(label), !option_lock); + + return frame; + } + + static GtkWidget * + nh_option_pet_new() + { + GtkWidget *frame; + GtkWidget *label; + GtkWidget *vbox; + GtkWidget *hbox, *hbox2; + GtkWidget *kitten; + GtkWidget *dog; + GSList *pet_group = NULL; + + frame = gtk_frame_new("Pet"); + /* gtk_container_border_width(GTK_CONTAINER(w), NH_PAD);*/ + + + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + kitten = nh_gtk_new_and_pack( + nh_option_pet_kitten_new(), hbox, "", + FALSE, FALSE, NH_PAD); + + dog = nh_gtk_new_and_pack( + nh_option_pet_dog_new(), hbox, "", + FALSE, FALSE, NH_PAD); + + hbox2 = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + label = nh_gtk_new_and_pack( + gtk_label_new("Start with:"), hbox2, "", + FALSE, FALSE, NH_PAD); + + radio_k = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(pet_group, "Kitten"), hbox2, "", + FALSE, FALSE, NH_PAD); + pet_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_k)); + + radio_d = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(pet_group, "Dog"), hbox2, "", + FALSE, FALSE, NH_PAD); + pet_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_d)); + + radio_r = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(pet_group, "Random"), hbox2, "", + FALSE, FALSE, NH_PAD); + pet_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_r)); + + gtk_widget_set_sensitive(GTK_WIDGET(radio_k), !option_lock); + gtk_widget_set_sensitive(GTK_WIDGET(radio_d), !option_lock); + gtk_widget_set_sensitive(GTK_WIDGET(radio_r), !option_lock); + + return frame; + } + + static GtkWidget * + nh_option_fruit_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + + frame = gtk_frame_new("Fruit"); + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + label = nh_gtk_new_and_pack( + gtk_label_new("Name:"), + hbox, "", FALSE, FALSE, NH_PAD); + entry_fruit = nh_gtk_new_and_pack( + gtk_entry_new_with_max_length(PL_NSIZ), + hbox, "", FALSE, FALSE, NH_PAD); + + gtk_entry_set_text(GTK_ENTRY(entry_fruit), (const gchar *)pl_fruit); + + return frame; + } + + #ifdef NH_EXTENSION_REPORT + static GtkWidget * + nh_option_url_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + + frame = gtk_frame_new("スコア報告時のURL"); + + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + label = nh_gtk_new_and_pack( + gtk_label_new("URL:"), + hbox, "", FALSE, FALSE, NH_PAD); + + entry_url = nh_gtk_new_and_pack( + gtk_entry_new_with_max_length(128), + hbox, "", TRUE, TRUE, NH_PAD); + + gtk_entry_set_text(GTK_ENTRY(entry_url), (const gchar *)get_homeurl()); + + return frame; + } + + static GtkWidget * + nh_option_proxy_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + + frame = gtk_frame_new("プロキシ"); + + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + label = nh_gtk_new_and_pack( + gtk_label_new("サーバ:"), + hbox, "", FALSE, FALSE, NH_PAD); + + entry_proxy = nh_gtk_new_and_pack( + gtk_entry_new_with_max_length(128), + hbox, "", TRUE, TRUE, NH_PAD); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + label = nh_gtk_new_and_pack( + gtk_label_new("ポート:"), + hbox, "", FALSE, FALSE, NH_PAD); + + entry_proxy_port = nh_gtk_new_and_pack( + gtk_entry_new_with_max_length(6), + hbox, "", FALSE, FALSE, NH_PAD); + + { + char *proxy; + char port[16]; + sprintf(port, "%d", get_proxy_port()); + + proxy = get_proxy_host(); + + gtk_entry_set_text(GTK_ENTRY(entry_proxy), (const gchar *)proxy); + if(*proxy) + gtk_entry_set_text(GTK_ENTRY(entry_proxy_port), (const gchar *)port); + } + + return frame; + } + #endif + + static GtkWidget * + nh_option_menu_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GSList *menu_group = NULL; + + frame = gtk_frame_new("Menu style"); + + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + radio_menu_t = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Traditional"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_menu_t)); + + radio_menu_p = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Partial"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_menu_t)); + + radio_menu_c = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Combination"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_menu_t)); + + radio_menu_f = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Full"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_menu_t)); + + return frame; + } + + + static GtkWidget * + nh_option_player_new() + { + GtkWidget *vbox; + + vbox = gtk_vbox_new(FALSE, 0); + gtk_container_border_width(GTK_CONTAINER(vbox), NH_PAD); + + nh_gtk_new_and_pack( + nh_option_plname_new(), vbox, "", + FALSE, FALSE, NH_PAD); + + nh_gtk_new_and_pack( + nh_option_pet_new(), vbox, "", + FALSE, FALSE, NH_PAD); + + nh_gtk_new_and_pack( + nh_option_fruit_new(), vbox, "", + FALSE, FALSE, NH_PAD); + + #ifdef NH_EXTENSION_REPORT + nh_gtk_new_and_pack( + nh_option_url_new(), vbox, "", + FALSE, FALSE, NH_PAD); + #endif + + return vbox; + } + + static GtkWidget * + nh_option_game_new() + { + int i; + GtkWidget *htmp; + GtkWidget *ltmp; + GtkWidget *stmp; + GtkWidget *tbl; + struct GTK_Option *p; + + tbl = gtk_table_new(sizeof(gtk_option)/sizeof(struct GTK_Option)*2, 3, FALSE); + gtk_container_border_width(GTK_CONTAINER(tbl), NH_PAD); + + for(i=0 ; igroup = NULL; + if(p->opt_name){ + htmp = nh_gtk_new_and_attach( + gtk_hbox_new(FALSE, 0), tbl, "", + 0, 1, i*2, i*2 + 1); + ltmp = nh_gtk_new_and_pack( + gtk_label_new(p->opt_name), htmp, "", + FALSE, FALSE, NH_PAD); + + htmp = nh_gtk_new_and_attach( + gtk_hbox_new(FALSE, 0), tbl, "", + 1, 2, i*2, i*2 +1); + + p->radio1 = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(p->group, p->on), htmp, "", + FALSE, FALSE, 0); + p->group = gtk_radio_button_group(GTK_RADIO_BUTTON(p->radio1)); + + htmp = nh_gtk_new_and_attach( + gtk_hbox_new(FALSE, 0), tbl, "", + 2, 3, i*2, i*2 +1); + + p->radio2 = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(p->group, p->off), htmp, "", + FALSE, FALSE, 0); + p->group = gtk_radio_button_group(GTK_RADIO_BUTTON(p->radio2)); + } + else{ + stmp = nh_gtk_new_and_attach( + gtk_hseparator_new(), tbl, "", + 0, 3, i*2 +1, i*2 +2); + } + } + return tbl; + } + + static GtkWidget * + nh_option_visual_new() + { + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GSList *menu_group = NULL; + + frame = gtk_frame_new("Map visual"); + + vbox = nh_gtk_new_and_add( + gtk_vbox_new(FALSE, 0), frame, ""); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), + vbox, "", FALSE, FALSE, NH_PAD); + + radio_visual_monji = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Characters"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_visual_monji)); + + radio_visual_tile = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Tiles"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_visual_tile)); + + #ifdef BIGTILE + radio_visual_bigtile = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Big tiles"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_visual_tile)); + #endif + #ifdef BIG3DTILE + radio_visual_big3dtile = nh_gtk_new_and_pack( + gtk_radio_button_new_with_label(menu_group, "Big 3D tiles"), hbox, "", + FALSE, FALSE, NH_PAD); + menu_group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio_visual_tile)); + #endif + + switch(nh_get_map_visual()){ + case 0: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_visual_monji), TRUE); + break; + case 1: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_visual_tile), TRUE); + break; + case 2: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_visual_bigtile), TRUE); + break; + case 3: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_visual_big3dtile), TRUE); + break; + } + + return frame; + } + + static GtkWidget * + nh_option_display_new() + { + GtkWidget *vbox; + + vbox = gtk_vbox_new(FALSE, 0); + gtk_container_border_width(GTK_CONTAINER(vbox), NH_PAD); + + #ifdef NH_EXTENSION_REPORT + nh_gtk_new_and_pack( + nh_option_proxy_new(), vbox, "", + FALSE, FALSE, NH_PAD); + #endif + + nh_gtk_new_and_pack( + nh_option_menu_new(), vbox, "", + FALSE, FALSE, NH_PAD); + + nh_gtk_new_and_pack( + nh_option_visual_new(), vbox, "", + FALSE, FALSE, NH_PAD); + + return vbox; + + } + + + void + nh_option_new() + { + guint hid; + GtkWidget *w; + GtkWidget *note; + GtkWidget *vbox, *hbox; + GtkWidget *button1; + GtkWidget *button2; + GtkWidget *button3; + + w = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_container_border_width(GTK_CONTAINER(w), NH_PAD); + gtk_signal_connect( + GTK_OBJECT(w), "key_press_event", + GTK_SIGNAL_FUNC(default_key_press), NULL); + hid = gtk_signal_connect( + GTK_OBJECT(w), "destroy", + GTK_SIGNAL_FUNC(default_destroy), &hid); + gtk_window_set_position(GTK_WINDOW(w), GTK_WIN_POS_CENTER); + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), w, ""); + + note = nh_gtk_new_and_pack( + gtk_notebook_new(), vbox, "", + FALSE, FALSE, NH_PAD); + + nh_gtk_new_and_add(nh_option_player_new(), note, ""); + nh_gtk_new_and_add(nh_option_game_new(), note, ""); + nh_gtk_new_and_add(nh_option_display_new(), note, ""); + + gtk_notebook_set_tab_label_text( + GTK_NOTEBOOK(note), + gtk_notebook_get_nth_page(GTK_NOTEBOOK(note), 0), + "Player"); + + gtk_notebook_set_tab_label_text( + GTK_NOTEBOOK(note), + gtk_notebook_get_nth_page(GTK_NOTEBOOK(note), 1), + "Game"); + + gtk_notebook_set_tab_label_text( + GTK_NOTEBOOK(note), + gtk_notebook_get_nth_page(GTK_NOTEBOOK(note), 2), + "Misc"); + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + button1 = nh_gtk_new_and_pack( + gtk_button_new_with_label("OK"), hbox, "", + FALSE, FALSE, NH_PAD); + button3 = nh_gtk_new_and_pack( + gtk_button_new_with_label("More Options"), hbox, "", + FALSE, FALSE, NH_PAD); + button2 = nh_gtk_new_and_pack( + gtk_button_new_with_label("Cancel"), hbox, "", + FALSE, FALSE, NH_PAD); + + gtk_signal_connect( + GTK_OBJECT(button1), "clicked", + GTK_SIGNAL_FUNC(default_clicked), (gpointer)'\n'); + + gtk_signal_connect( + GTK_OBJECT(button2), "clicked", + GTK_SIGNAL_FUNC(default_clicked), (gpointer)'\033'); + + gtk_signal_connect( + GTK_OBJECT(button3), "clicked", + GTK_SIGNAL_FUNC(default_clicked), (gpointer)'m'); + + nh_option_set(); + + gtk_entry_set_editable(GTK_ENTRY(entry_plname), !option_lock); + gtk_entry_set_editable(GTK_ENTRY(entry_dogname), !option_lock); + gtk_entry_set_editable(GTK_ENTRY(entry_catname), !option_lock); + gtk_widget_set_sensitive(GTK_WIDGET(entry_plname), !option_lock); + gtk_widget_set_sensitive(GTK_WIDGET(entry_dogname), !option_lock); + gtk_widget_set_sensitive(GTK_WIDGET(entry_catname), !option_lock); + + gtk_widget_show_all(w); + + gtk_grab_add(w); + + main_hook(); + + if(keysym == '\n'){ + Strcpy(plname, gtk_entry_get_text(GTK_ENTRY(entry_plname))); + Strcpy(catname, gtk_entry_get_text(GTK_ENTRY(entry_catname))); + Strcpy(dogname, gtk_entry_get_text(GTK_ENTRY(entry_dogname))); + Strcpy(pl_fruit, gtk_entry_get_text(GTK_ENTRY(entry_fruit))); + #ifdef NH_EXTENSION + set_homeurl(gtk_entry_get_text(GTK_ENTRY(entry_url))); + { + char buf[BUFSIZ]; + char port[16]; + + sprintf(port, "%s", gtk_entry_get_text(GTK_ENTRY(entry_proxy_port))); + if(*port) + snprintf(buf, BUFSIZ, "%s:%s", + gtk_entry_get_text(GTK_ENTRY(entry_proxy)), port); + else + snprintf(buf, BUFSIZ, "%s", + gtk_entry_get_text(GTK_ENTRY(entry_proxy))); + + set_proxy(buf); + } + #endif + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_f))) + flags.female = 1; + else + flags.female = 0; + + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_k))) + preferred_pet = 'c'; + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_d))) + preferred_pet = 'd'; + else + preferred_pet = 0; + + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_menu_t))) + flags.menu_style = MENU_TRADITIONAL; + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_menu_p))) + flags.menu_style = MENU_COMBINATION; + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_menu_c))) + flags.menu_style = MENU_PARTIAL; + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_menu_f))) + flags.menu_style = MENU_FULL; + + { + int i; + struct GTK_Option *p; + + for(i=0 ; iopt_name){ + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p->radio1))) + *p->opt_p = !p->not; + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p->radio2))) + *p->opt_p = !!p->not; + } + } + } + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_visual_monji))) + nh_set_map_visual(0); + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_visual_tile))) + nh_set_map_visual(1); + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_visual_bigtile))) + nh_set_map_visual(2); + else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_visual_big3dtile))) + nh_set_map_visual(3); + } + nh_status_index_update(); + + if(hid > 0){ + gtk_signal_disconnect(GTK_OBJECT(w), hid); + + gtk_widget_destroy(w); + } + } + + void + nh_option_lock() + { + option_lock = TRUE; + } *** ./win/gtk/gtkstatus.c.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/gtkstatus.c Fri Jan 21 18:32:38 2000 *************** *** 0 **** --- 1,540 ---- + /* + $Id: gtkstatus.c,v 1.3 1999/12/01 03:51:06 issei Exp issei $ + */ + + #include + #include + #include + #include + #include + #include "winGTK.h" + + #define NH_BAR_WIDTH 150 + #define NH_BAR_HEIGHT 8 + + static GtkWidget *handle; + static GtkWidget *frame; + static GtkWidget *dlvl; + static GtkWidget *hbox; + static GtkWidget *hbox2; + static GtkWidget *vbox; + static GtkWidget *clist[3]; + + static GtkWidget *conf; + static GtkWidget *blin; + static GtkWidget *stun; + static GtkWidget *hall; + static GtkWidget *hung; + static GtkWidget *sick; + static GtkWidget *encu; + + static GtkWidget *bar_table; + static GtkWidget *hp_hbox; + static GtkWidget *mp_hbox; + static GtkWidget *hp_bar_vbox; + static GtkWidget *mp_bar_vbox; + static GtkWidget *hp_lbl; + static GtkWidget *mp_lbl; + static GtkWidget *hp_bar; + static GtkWidget *mp_bar; + + static GdkPixmap *hp_bar_pixmap; + static GdkPixmap *mp_bar_pixmap; + + static GdkGC *hp_gc; + static GdkGC *mp_gc; + + extern const char *hu_stat[]; /* eat.c */ + extern const char *enc_stat[]; /* botl.c */ + + static gint + hp_bar_expose_event(GtkWidget *widget, GdkEventExpose *event) + { + gdk_draw_pixmap( + widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE(widget)], + hp_bar_pixmap, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + + return FALSE; + } + + static gint + mp_bar_expose_event(GtkWidget *widget, GdkEventExpose *event) + { + gdk_draw_pixmap( + widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE(widget)], + mp_bar_pixmap, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + + return FALSE; + } + + static int + stat_mhp(void *data) + { + return u.mtimedone ? u.mhmax : u.uhpmax; + } + + static int + stat_hp(void *data) + { + return u.mtimedone ? (u.mh > 0 ? u.mh : 0) : (u.uhp > 0 ? u.uhp : 0); + } + + static int + stat_lvl(void *data) + { + return u.mtimedone ? mons[u.umonnum].mlevel : u.ulevel; + } + + /* + static int + stat_char(void *data) + { + return *((char *)data); + } + */ + + static int + stat_stat(void *data) + { + int d = (int)data; + + return (int)ACURR(d); + } + + #ifdef SCORE_ON_BOTL + static int + f_score() + { + return flags.showscore; + } + + static int + stat_score(void *data) + { + return flags.showscore ? botl_score() : 0L; + } + #endif + + #ifdef EXP_ON_BOTL + static int + f_exp() + { + return flags.showexp; + } + #endif + + static int + f_time() + { + return flags.time; + } + + static char * + stat_align(void *data) + { + switch(u.ualign.type){ + case A_CHAOTIC: + return "Chaotic"; + break; + case A_NEUTRAL: + return "Neutral"; + break; + case A_LAWFUL: + return "Lawful"; + break; + } + return ""; + } + + #define NOVALUE -999 + + enum { + STAT_TYPE_NULL, + STAT_TYPE_INT_P, + STAT_TYPE_CHAR_P, + STAT_TYPE_F_INT, + STAT_TYPE_F_CHAR_P + }; + + struct nh_stat_tab { + int oldvalue; + int typ; + int (*flg)(); + char *name; + void *v; /* pointer for value or function */ + void *arg; + } stat_tab[2][7] = { + { + {NOVALUE, STAT_TYPE_CHAR_P, NULL, "AC", (void *)&u.uac}, + {NOVALUE, STAT_TYPE_INT_P, NULL, "GOLD", (void *)&u.ugold}, + {NOVALUE, STAT_TYPE_F_INT, NULL, "LEVEL", stat_lvl}, + {NOVALUE, STAT_TYPE_F_CHAR_P, NULL, "ALIGN", stat_align}, + {NOVALUE, STAT_TYPE_INT_P, f_time, "TIME", (void *)&moves}, + #ifdef EXP_ON_BOTL + {NOVALUE, STAT_TYPE_INT_P, f_exp, "EXP", (void *)&u.uexp}, + #else + {NOVALUE, STAT_TYPE_NULL}, + #endif + #ifdef SCORE_ON_BOTL + {NOVALUE, STAT_TYPE_F_INT, f_score, "SCORE", stat_score}, + #else + {NOVALUE, STAT_TYPE_NULL}, + #endif + }, + { + {NOVALUE, STAT_TYPE_F_INT, NULL, "STR", stat_stat, (void *)A_STR}, + {NOVALUE, STAT_TYPE_F_INT, NULL, "DEX", stat_stat, (void *)A_DEX}, + {NOVALUE, STAT_TYPE_F_INT, NULL, "CON", stat_stat, (void *)A_CON}, + {NOVALUE, STAT_TYPE_F_INT, NULL, "INT", stat_stat, (void *)A_CON}, + {NOVALUE, STAT_TYPE_F_INT, NULL, "WIZ", stat_stat, (void *)A_WIS}, + {NOVALUE, STAT_TYPE_F_INT, NULL, "CHA", stat_stat, (void *)A_CHA}, + }, + }; + + void + nh_status_update() + { + char cval; + int i, j, val; + char buf[NH_BUFSIZ]; + char *Dummy = NULL; + + { + int hp; + int mp; + gchar *str; + GdkRectangle update_rect; + + update_rect.x = 0; + update_rect.y = 0; + update_rect.width = NH_BAR_WIDTH; + update_rect.height = NH_BAR_HEIGHT; + + hp = ((1.0 * stat_hp(Dummy)) / stat_mhp(Dummy)) * NH_BAR_WIDTH; + mp = ((1.0 * u.uen) / u.uenmax) * NH_BAR_WIDTH; + + gdk_draw_rectangle( + hp_bar_pixmap, hp_gc, TRUE, + 0, 0, hp, NH_BAR_HEIGHT); + gdk_draw_rectangle( + mp_bar_pixmap, mp_gc, TRUE, + 0, 0, mp, NH_BAR_HEIGHT); + + if(hp < NH_BAR_WIDTH) + gdk_draw_rectangle( + hp_bar_pixmap, hp_bar->style->black_gc, TRUE, + hp, 0, NH_BAR_WIDTH - hp, NH_BAR_HEIGHT); + + if(mp < NH_BAR_WIDTH) + gdk_draw_rectangle( + mp_bar_pixmap, mp_bar->style->black_gc, TRUE, + mp, 0, NH_BAR_WIDTH - mp, NH_BAR_HEIGHT); + + gtk_widget_draw(hp_bar, &update_rect); + gtk_widget_draw(mp_bar, &update_rect); + + str = g_strdup_printf("HP %d/%d", stat_hp(Dummy), stat_mhp(Dummy)); + gtk_label_set_text(GTK_LABEL(hp_lbl), str); + g_free(str); + + str = g_strdup_printf("MP %d/%d", u.uen , u.uenmax); + gtk_label_set_text(GTK_LABEL(mp_lbl), str); + g_free(str); + } + + Strcpy(buf, plname); + if ('a' <= buf[0] && buf[0] <= 'z') buf[0] += 'A'-'a'; + Strcat(buf, " "); + if (u.mtimedone) { + char mname[BUFSZ]; + Strcpy(mname, mons[u.umonnum].mname); + Strcat(buf, mname); + } else + Strcat(buf, rank_of(u.ulevel, pl_character[0], flags.female)); + + if(buf[0]) + gtk_frame_set_label(GTK_FRAME(frame), buf); + + if (In_endgame(&u.uz)) { + Strcpy(buf, (Is_astralevel(&u.uz) ? "Astral Plane":"End Game")); + } else { + Strcpy(buf, dungeons[u.uz.dnum].dname); + Sprintf(eos(buf), ", level %d", depth(&u.uz)); + } + if(buf[0]) + gtk_label_set_text(GTK_LABEL(dlvl), buf); + + for(i=0 ; i<7 ; ++i) + for(j=0 ; j<2 ; ++j){ + struct nh_stat_tab *t; + t = &stat_tab[j][i]; + + if(t->typ == STAT_TYPE_NULL) + continue; + else if(t->flg && !t->flg()){ + gtk_clist_set_text( + GTK_CLIST(clist[j]), + i, 1, ""); + } + else if(t->typ == STAT_TYPE_INT_P){ + val = *((int *)(t->v)); + if(val != t->oldvalue){ + sprintf(buf, "%d", val); + gtk_clist_set_text( + GTK_CLIST(clist[j]), + i, 1, buf); + t->oldvalue = val; + } + } + else if(t->typ == STAT_TYPE_CHAR_P){ + cval = *((char *)(t->v)); + if(cval != t->oldvalue){ + sprintf(buf, "%d", cval); + gtk_clist_set_text( + GTK_CLIST(clist[j]), + i, 1, buf); + t->oldvalue = cval; + } + } + else if(t->typ == STAT_TYPE_F_INT){ + int (*f)(); + + f = t->v; + val = (*f)(t->arg); + if(val != t->oldvalue){ + sprintf(buf, "%d", val); + gtk_clist_set_text( + GTK_CLIST(clist[j]), + i, 1, buf); + t->oldvalue = val; + } + } + else if(t->typ == STAT_TYPE_F_CHAR_P){ + char *(*f)(); + + f = t->v; + Strcpy(buf, (*f)(t->arg)); + gtk_clist_set_text( + GTK_CLIST(clist[j]), + i, 1, buf); + } + gtk_clist_set_text( + GTK_CLIST(clist[j]), + i, 0, t->name); + } + + + if(Blind) + gtk_label_set_text(GTK_LABEL(blin), "Blind"); + else + gtk_label_set_text(GTK_LABEL(blin), ""); + + if(Confusion) + gtk_label_set_text(GTK_LABEL(conf), "Confused"); + else + gtk_label_set_text(GTK_LABEL(conf), ""); + + if(Sick){ + if(u.usick_type & SICK_VOMITABLE) + gtk_label_set_text(GTK_LABEL(sick), "FoodPois"); + else + gtk_label_set_text(GTK_LABEL(sick), "Ill"); + } + else + gtk_label_set_text(GTK_LABEL(sick), ""); + + if(Stunned) + gtk_label_set_text(GTK_LABEL(stun), "Stunned"); + else + gtk_label_set_text(GTK_LABEL(stun), ""); + + if(Hallucination) + gtk_label_set_text(GTK_LABEL(hall), "Hallucinating"); + else + gtk_label_set_text(GTK_LABEL(hall), ""); + + if(u.uhs != 1) + gtk_label_set_text(GTK_LABEL(hung), hu_stat[u.uhs]); + else + gtk_label_set_text(GTK_LABEL(hung), ""); + + if(near_capacity()) + gtk_label_set_text(GTK_LABEL(encu), enc_stat[near_capacity()]); + else + gtk_label_set_text(GTK_LABEL(encu), ""); + } + + void + nh_status_index_update() + { + int i, j; + gchar *text[3]; + struct nh_stat_tab *t; + + for(j=0 ; j<2 ; ++j){ + for(i=0 ; i<7 ; ++i){ + t = &stat_tab[j][i]; + + text[0] = t->name; + } + } + } + + GtkWidget * + nh_status_new() + { + extern GtkWidget *main_window; + GtkWidget *w; + int i, j; + gchar *text[3]; + + handle = gtk_handle_box_new(); + GTK_HANDLE_BOX(handle)->shrink_on_detach = 1; + /* + gtk_widget_realize(handle); + */ + + frame = nh_gtk_new_and_add(gtk_frame_new(NULL), handle, ""); + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), frame, ""); + + dlvl = nh_gtk_new_and_pack( + gtk_label_new(""), vbox, "", + FALSE, FALSE, 0); + + bar_table = nh_gtk_new_and_add(gtk_table_new(2, 2, FALSE), vbox, ""); + + hp_hbox = nh_gtk_new_and_attach( + gtk_hbox_new(FALSE, 0), bar_table, "", + 0, 1, 0, 1); + + mp_hbox = nh_gtk_new_and_attach( + gtk_hbox_new(FALSE, 0), bar_table, "", + 0, 1, 1, 2); + + hp_lbl = nh_gtk_new_and_pack( + gtk_label_new("HP"), hp_hbox, "", + FALSE, FALSE, 0); + + mp_lbl = nh_gtk_new_and_pack( + gtk_label_new("MP"), mp_hbox, "", + FALSE, FALSE, 0); + + hp_bar_vbox = nh_gtk_new_and_attach( + gtk_vbox_new(TRUE, 0), bar_table, "", + 1, 2, 0, 1); + mp_bar_vbox = nh_gtk_new_and_attach( + gtk_vbox_new(TRUE, 0), bar_table, "", + 1, 2, 1, 2); + + hp_bar = nh_gtk_new_and_pack( + gtk_drawing_area_new(), hp_bar_vbox, "", + FALSE, FALSE, 0); + mp_bar = nh_gtk_new_and_pack( + gtk_drawing_area_new(), mp_bar_vbox, "", + FALSE, FALSE, 0); + + gtk_signal_connect( + GTK_OBJECT(hp_bar), "expose_event", + GTK_SIGNAL_FUNC(hp_bar_expose_event), NULL); + gtk_signal_connect( + GTK_OBJECT(mp_bar), "expose_event", + GTK_SIGNAL_FUNC(mp_bar_expose_event), NULL); + + hp_gc = gdk_gc_new(main_window->window); + mp_gc = gdk_gc_new(main_window->window); + gdk_gc_set_foreground(hp_gc, &nh_color[MAP_BLUE]); + gdk_gc_set_foreground(mp_gc, &nh_color[MAP_GREEN]); + + gtk_drawing_area_size( + GTK_DRAWING_AREA(hp_bar), + NH_BAR_WIDTH, NH_BAR_HEIGHT); + + gtk_drawing_area_size( + GTK_DRAWING_AREA(mp_bar), + NH_BAR_WIDTH, NH_BAR_HEIGHT); + + hp_bar_pixmap = gdk_pixmap_new( + main_window->window, + NH_BAR_WIDTH, NH_BAR_HEIGHT, -1); + + mp_bar_pixmap = gdk_pixmap_new( + main_window->window, + NH_BAR_WIDTH, NH_BAR_HEIGHT, -1); + + + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + TRUE, FALSE, 0); + + for(j=0 ; j<2 ; ++j){ + w = clist[j] = nh_gtk_new_and_pack( + gtk_clist_new(2), hbox, "", + FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS(w, GTK_CAN_FOCUS); + + gtk_clist_set_shadow_type(GTK_CLIST(w), GTK_SHADOW_ETCHED_IN); + gtk_clist_set_column_width(GTK_CLIST(w), 0, 50); + gtk_clist_set_column_width(GTK_CLIST(w), 1, 50); + gtk_clist_set_column_justification( + GTK_CLIST(w), 0, GTK_JUSTIFY_RIGHT + ); + gtk_clist_set_column_justification( + GTK_CLIST(w), 1, GTK_JUSTIFY_RIGHT + ); + + for(i=0 ; i<7 ; ++i){ + struct nh_stat_tab *t; + + t = &stat_tab[j][i]; + + /* text[0] = t->name;*/ + text[0] = ""; + + text[1] = ""; + gtk_clist_append(GTK_CLIST(w), text); + /* gtk_clist_set_selectable(GTK_CLIST(w), i, FALSE);*/ + } + } + hbox2 = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, 0); + + hung = nh_gtk_new_and_pack( + gtk_label_new(""), hbox2, "", + FALSE, FALSE, 0); + + conf = nh_gtk_new_and_pack( + gtk_label_new(""), hbox2, "", + FALSE, FALSE, 0); + + blin = nh_gtk_new_and_pack( + gtk_label_new(""), hbox2, "", + FALSE, FALSE, 0); + + stun = nh_gtk_new_and_pack( + gtk_label_new(""), hbox2, "", + FALSE, FALSE, 0); + + hall = nh_gtk_new_and_pack( + gtk_label_new(""), hbox2, "", + FALSE, FALSE, 0); + + sick = nh_gtk_new_and_pack( + gtk_label_new(""), hbox2, "", + FALSE, FALSE, 0); + + encu = nh_gtk_new_and_pack( + gtk_label_new(""), hbox2, "", + FALSE, FALSE, 0); + + return handle; + } *** ./win/gtk/gtkyn.c.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/gtkyn.c Fri Jan 21 18:32:38 2000 *************** *** 0 **** --- 1,225 ---- + /* + $Id: gtkyn.c,v 1.3 1999/12/01 03:51:06 issei Exp issei $ + */ + + #include + #include + #include + #include + #include "winGTK.h" + + static int keysym; + static const char *yn_resp; + static int yn_def; + + static void + yn_clicked(GtkWidget *widget, gpointer data) + { + keysym = (int)data; + gtk_main_quit(); + } + + static gint + yn_destroy(GtkWidget *widget, gpointer data) + { + guint *hid = (guint *)data; + *hid = 0; + keysym = yn_def; + + gtk_main_quit(); + + return FALSE; + } + + static gint + yn_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) + { + keysym = nh_keysym(event); + + if(keysym){ + if(yn_resp && index(yn_resp, keysym)) + gtk_main_quit(); + if(!yn_resp) + gtk_main_quit(); + if(keysym == '\n' || keysym == ' ' || keysym == '\033') + gtk_main_quit(); + } + + return FALSE; + } + + char + GTK_yn_function(const char *query, const char *resp, CHAR_P def) + { + guint hid; + + GtkWidget *window; + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *clist = NULL; + GtkWidget *table = NULL; + GtkWidget *y, *n, *q; + GtkWidget *d; + gchar buf[NH_BUFSIZ]; + gchar *text[1]; + + if(resp) + sprintf(buf, "%s [%s](%c)", query, resp, def); + else + sprintf(buf, "%s", query); + text[0] = (gchar *)buf; + + yn_def = def; + yn_resp = resp; + + window = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_MOUSE); + gtk_signal_connect_after( + GTK_OBJECT(window), "key_press_event", + GTK_SIGNAL_FUNC(yn_key_press), NULL); + hid = gtk_signal_connect( + GTK_OBJECT(window), "destroy", + GTK_SIGNAL_FUNC(yn_destroy), &hid); + + if(query){ + frame = nh_gtk_new_and_add(gtk_frame_new(query), window, ""); + gtk_container_border_width(GTK_CONTAINER(frame), NH_PAD); + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), frame, ""); + } + else{ + frame = nh_gtk_new_and_add(gtk_frame_new(NULL), window, ""); + + vbox = nh_gtk_new_and_add(gtk_vbox_new(FALSE, 0), frame, ""); + + clist = nh_gtk_new_and_pack( + gtk_clist_new(1), vbox, "", + FALSE, FALSE, NH_PAD); + gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE); + gtk_clist_append(GTK_CLIST(clist), text); + } + + if(resp){ + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + + if(!strcmp(resp, "yn") || !strcmp(resp, "ynq")){ + y = nh_gtk_new_and_pack( + gtk_button_new_with_label("Yes"), hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect( + GTK_OBJECT(y), "clicked", + GTK_SIGNAL_FUNC(yn_clicked), (gpointer)'y'); + } + if(!strcmp(resp, "yn") || + !strcmp(resp, "ynq") || + !strcmp(resp, "ynaq") || + !strcmp(resp, "yn#aq")){ + n = nh_gtk_new_and_pack( + gtk_button_new_with_label("No"), hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect( + GTK_OBJECT(n), "clicked", + GTK_SIGNAL_FUNC(yn_clicked), (gpointer)'n'); + } + if(!strcmp(resp, "ynaq") || + !strcmp(resp, "yn#aq")){ + q = nh_gtk_new_and_pack( + gtk_button_new_with_label("All"), hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect( + GTK_OBJECT(q), "clicked", + GTK_SIGNAL_FUNC(yn_clicked), (gpointer)'a'); + } + if(!strcmp(resp, "ynq") || + !strcmp(resp, "ynaq") || + !strcmp(resp, "yn#aq")){ + q = nh_gtk_new_and_pack( + gtk_button_new_with_label("Cancel"), hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect( + GTK_OBJECT(q), "clicked", + GTK_SIGNAL_FUNC(yn_clicked), (gpointer)'q'); + } + } + else{ + hbox = nh_gtk_new_and_pack( + gtk_hbox_new(FALSE, 0), vbox, "", + FALSE, FALSE, NH_PAD); + if(index(query, '*')){ + q = nh_gtk_new_and_pack( + gtk_button_new_with_label("List"), hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect( + GTK_OBJECT(q), "clicked", + GTK_SIGNAL_FUNC(yn_clicked), (gpointer)'?'); + q = nh_gtk_new_and_pack( + gtk_button_new_with_label("All List"), hbox, "", + FALSE, FALSE, NH_PAD); + gtk_signal_connect( + GTK_OBJECT(q), "clicked", + GTK_SIGNAL_FUNC(yn_clicked), (gpointer)'*'); + } + else{ /* maybe direction */ + int i, j; + struct { + char *str; + int key; + } dirstr[4][3] = { + { + {"Y", 'y'}, + {"K", 'k'}, + {"U", 'u'}, + }, + { + {"H", 'h'}, + {".", '.'}, + {"L", 'l'}, + }, + { + {"B", 'b'}, + {"J", 'j'}, + {"N", 'n'}, + }, + { + {"Up", '<'}, + {"", 0}, + {"Down", '>'}, + } + }; + table = nh_gtk_new_and_pack( + gtk_table_new(4, 3, TRUE), hbox, "", + FALSE, FALSE, NH_PAD); + for(i=0 ; i<4 ; ++i) + for(j=0 ; j<3 ; ++j){ + d = nh_gtk_new_and_attach( + gtk_button_new_with_label(dirstr[i][j].str), table, "", + j, j+1, + i, i+1); + gtk_signal_connect( + GTK_OBJECT(d), "clicked", + GTK_SIGNAL_FUNC(yn_clicked), (gpointer)dirstr[i][j].key); + } + } + } + + gtk_grab_add(window); + gtk_widget_show_all(window); + + gtk_main(); + + if(hid > 0){ + gtk_widget_unmap(window); + gtk_signal_disconnect(GTK_OBJECT(window), hid); + + gtk_widget_destroy(frame); + gtk_widget_destroy(vbox); + if(clist) + gtk_widget_destroy(clist); + gtk_widget_destroy(window); + } + + return keysym; + } *** ./win/gtk/xshm.c.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/xshm.c Fri Jan 21 18:32:38 2000 *************** *** 0 **** --- 1,200 ---- + /* + $Id: xshm.c,v 1.3 1999/12/01 03:51:06 issei Exp issei $ + */ + + /* + MIT-SHM library + */ + + #include + #include + #include + #include + + #ifdef __FreeBSD__ + #include + #endif + #include + #include + #include + + #include "xshm.h" + + static volatile int errflg; + + static int + ErrorHandler(Display *dpy, XErrorEvent *event) + { + errflg = 1; + + return 0; + } + + void + XShmDestroyXShmImage(Display *dpy, XShmImage *xshm) + { + if(xshm->shmflg){ + XShmDetach(dpy, &xshm->shminfo); + XDestroyImage(xshm->image); + XFreePixmap(dpy, xshm->pixmap); + shmdt(xshm->shminfo.shmaddr); + shmctl(xshm->shminfo.shmid, IPC_RMID, 0); + free(xshm); + } + } + + XShmImage * + XShmCreateXShmImage(Display *dpy, int width, int height) + { + int (*saved_handler)(Display *, XErrorEvent *); + int ret; + XShmImage *xshm; + int major, minor; + Bool pixmaps; + + int screen; + Window root; + int depth; + Visual *visual; + + screen = XDefaultScreen(dpy); + root = RootWindow(dpy, screen); + depth = DefaultDepth(dpy, screen); + visual = DefaultVisual(dpy, screen); + + xshm = (XShmImage *)malloc(sizeof(XShmImage)); + + if(XShmQueryExtension(dpy) != True) + goto no_xshm; + + if(xshm == NULL){ + fprintf(stderr, "warning: cannot allocate shared memory(size = %d)\n", + xshm->image->bytes_per_line * xshm->image->height); + + return NULL; + } + + xshm->image = NULL; + XShmQueryVersion(dpy, &major, &minor, &pixmaps); + xshm->shmflg = pixmaps; + + if(xshm->shmflg != True) + goto no_xshm; + /* + caliculate image size + */ + xshm->image = XShmCreateImage( + dpy, visual, depth, ZPixmap, 0, + &xshm->shminfo, width, height); + /* + Allocate shared memory + */ + ret = xshm->shminfo.shmid = shmget( + IPC_PRIVATE, + xshm->image->bytes_per_line * xshm->image->height, + IPC_CREAT | 0777); + + if(ret < 0) + goto no_xshm; + + ret = (int)xshm->shminfo.shmaddr = shmat(xshm->shminfo.shmid, 0, 0); + + if(ret < 0){ + shmctl(xshm->shminfo.shmid, IPC_RMID, 0); + goto no_xshm; + } + xshm->shminfo.readOnly = False; + + errflg = 0; + saved_handler = XSetErrorHandler(ErrorHandler); + + ret = XShmAttach(dpy, &xshm->shminfo); + if(ret != True){ + shmdt(xshm->shminfo.shmaddr); + shmctl(xshm->shminfo.shmid, IPC_RMID, 0); + goto no_xshm; + } + + XSync(dpy, False); + XSetErrorHandler(saved_handler); + if(errflg){ + shmdt(xshm->shminfo.shmaddr); + shmctl(xshm->shminfo.shmid, IPC_RMID, 0); + goto no_xshm; + } + + ret = shmctl(xshm->shminfo.shmid, IPC_RMID, 0); + if(ret < 0){ + XShmDetach(dpy, &xshm->shminfo); + shmdt(xshm->shminfo.shmaddr); + shmctl(xshm->shminfo.shmid, IPC_RMID, 0); + goto no_xshm; + } + + xshm->image->data = xshm->shminfo.shmaddr; + + xshm->pixmap = XShmCreatePixmap( + dpy, root, xshm->shminfo.shmaddr, + &xshm->shminfo, width, height, depth); + + return xshm; + + no_xshm: + fprintf(stderr, "warning: cannot use shared memory\n"); + + xshm->shmflg = 0; + xshm->pixmap = XCreatePixmap(dpy, root, width, height, depth); + xshm->image = XGetImage( + dpy, xshm->pixmap, 0, 0, width, height, + visual->red_mask | visual->green_mask | visual->blue_mask, + ZPixmap); + + return xshm; + } + + void + XShmClearXShmImage(Display *dpy, XShmImage *xshm) + { + memset(xshm->image->data, 0, xshm->image->bytes_per_line * xshm->image->height); + + if(xshm->shmflg == False){ + GC gc; + XGCValues gcval; + + gcval.foreground = BlackPixel(dpy, DefaultScreen(dpy)); + + gc = XCreateGC( + dpy, + RootWindow(dpy, DefaultScreen(dpy)), + GCForeground, + &gcval); + XFillRectangle( + dpy, xshm->pixmap, gc, + 0, 0, + xshm->image->width, xshm->image->height); + + XFreeGC(dpy, gc); + } + } + + void + XShmSyncXShmImage(Display *dpy, XShmImage *xshm) + { + if(xshm->shmflg == False){ + XPutImage( + dpy, xshm->pixmap, DefaultGC(dpy, DefaultScreen(dpy)), xshm->image, + 0, 0, 0, 0, + xshm->image->width, xshm->image->height); + } + } + + void + XShmSyncXShmImageRegion(Display *dpy, XShmImage *xshm, int x, int y, int width, int height) + { + if(xshm->shmflg == False){ + XPutImage( + dpy, xshm->pixmap, DefaultGC(dpy, DefaultScreen(dpy)), xshm->image, + x, y, x, y, + width, height); + } + } *** ./win/gtk/xshmmap.c.orig Thu Jan 1 01:00:00 1970 --- ./win/gtk/xshmmap.c Sun Jan 23 20:38:42 2000 *************** *** 0 **** --- 1,245 ---- + /* + $Id: xshmmap.c,v 1.3 1999/12/01 03:51:06 issei Exp issei $ + */ + + /* + fast X map library + */ + + #include + #include + #include + + #include "winGTK.h" + #include "xshm.h" + + #define PIXEL8(x) (*((CARD8 *)x)) + #define PIXEL16(x) (*((CARD16 *)x)) + #define PIXEL24(x) ((((CARD8 *)x)[0]) | ((((CARD8 *)x)[1])<<8) | ((((CARD8 *)x)[2])<<16)) + #define PIXEL32(x) (*((CARD32 *)x)) + + static XShmImage *map; + + static XImage *tile_img; + static XImage *tmp_img; + + static TileTab *Tile; + + static Display *dpy; + static GC gc; + + void + xshm_init(Display *d) + { + dpy = d; + } + + int + xshm_map_init(int width, int height) + { + gc = DefaultGC(dpy, DefaultScreen(dpy)); + + map = XShmCreateXShmImage(dpy, width, height); + + return map->shmflg; + } + + void + xshm_map_destroy() + { + XShmDestroyXShmImage(dpy, map); + } + + void + xshm_map_clear() + { + XShmClearXShmImage(dpy, map); + } + + void + xshm_map_draw(Window w, int srcx, int srcy, int dstx, int dsty, int width, int height) + { + XCopyArea( + dpy, map->pixmap, w, gc, + srcx, srcy, + width, height, + dstx, dsty); + } + + void + x_tmp_clear() + { + memset(tmp_img->data, 0, tmp_img->bytes_per_line * tmp_img->height); + } + + void + x_tile_init(XImage *img, TileTab *t) + { + tile_img = img; + Tile = t; + tmp_img = XSubImage(img, 0, 0, t->unit_width, t->unit_height); + } + + void + x_tile_destroy() + { + XDestroyImage(tile_img); + } + + void + x_tile_tmp_draw_rectangle(int ofsx, int ofsy, int c) + { + int i; + int width = tmp_img->width; + int height = tmp_img->height; + + if(ofsy >= 0 && ofsy < height) + for(i=0 ; i= 0 && ofsx + i < width) + XPutPixel(tmp_img, ofsx + i, ofsy, c); + + if(ofsy + height - 1 >= 0 && ofsy + height - 1 < height) + for(i=0 ; i= 0 && ofsx + i < width) + XPutPixel(tmp_img, ofsx + i, ofsy + height - 1, c); + + if(ofsx >= 0 && ofsx < width) + for(i=0 ; i= 0 && ofsy + i < height) + XPutPixel(tmp_img, ofsx, ofsy + i, c); + + if(ofsx + width - 1 >= 0 && ofsx + width - 1 < width) + for(i=0 ; i= 0 && ofsy + i < height) + XPutPixel(tmp_img, ofsx + width - 1, ofsy + i, c); + } + void + x_tile_tmp_draw(int srcx, int srcy, int ofsx, int ofsy) + { + int i, j; + char *src, *tmp; + CARD8 *src8, *tmp8; + CARD16 *src16, *tmp16; + CARD32 *src24, *tmp24; + CARD32 *src32, *tmp32; + CARD32 nul_pixel = 0; + + int bpp = tile_img->bytes_per_line / tile_img->width; + int width = tmp_img->width; + int height = tmp_img->height; + + if(tile_img->bits_per_pixel <= 8) + nul_pixel = PIXEL8(tile_img->data); + else if(tile_img->bits_per_pixel <= 16) + nul_pixel = PIXEL16(tile_img->data); + else if(tile_img->bits_per_pixel <= 24) + nul_pixel = PIXEL24(tile_img->data); + else if(tile_img->bits_per_pixel <= 32) + nul_pixel = PIXEL32(tile_img->data); + + if(ofsx < 0){ + srcx -= ofsx; + width += ofsx; + ofsx = 0; + } + if(ofsy < 0){ + srcy -= ofsy; + height += ofsy; + ofsy = 0; + } + if(ofsx > 0){ + width -= ofsx; + } + + if(ofsy > 0){ + height -= ofsy; + } + + if(width <= 0) + return; + + if(height <= 0) + return; + + src32 = (CARD32 *)src16 = (CARD16 *)src24 = src8 = src = + tile_img->data + + (tile_img->bytes_per_line * srcy) + + bpp * srcx; + + tmp32 = (CARD32 *)tmp16 = (CARD16 *)tmp24 = tmp8 = tmp = + tmp_img->data + + (tmp_img->bytes_per_line * ofsy) + + bpp * ofsx; + + if(!Tile->transparent){ + for(i=0 ; i < height ; ++i){ + memcpy(tmp8, src8, width * bpp); + src8 += tile_img->bytes_per_line; + tmp8 += tmp_img->bytes_per_line; + } + } + else if(tile_img->bits_per_pixel <= 8){ + for(i=0 ; i < height ; ++i){ + for(j=0 ; jbytes_per_line; + tmp8 += tmp_img->bytes_per_line; + } + } + else if(tile_img->bits_per_pixel <= 16){ + for(i=0 ; i < height ; ++i){ + for(j=0 ; jbytes_per_line / bpp); + tmp16 += (tmp_img->bytes_per_line / bpp); + } + } + else if(tile_img->bits_per_pixel <= 24){ + for(i=0 ; i < height ; ++i){ + for(j=0 ; jbytes_per_line; + tmp24 += tmp_img->bytes_per_line; + } + } + else if(tile_img->bits_per_pixel <= 32){ + for(i=0 ; i < height ; ++i){ + for(j=0 ; jbytes_per_line / bpp); + tmp32 += (tmp_img->bytes_per_line / bpp); + } + } + } + + void + xshm_map_tile_draw(int dstx, int dsty) + { + int i; + char *tmp, *dst; + + int bpp = tile_img->bytes_per_line / tile_img->width; + + tmp = tmp_img->data; + dst = map->image->data + + (map->image->bytes_per_line * dsty) + + bpp * dstx; + + for(i=0 ; i < tmp_img->height ; ++i){ + memcpy(dst, tmp, tmp_img->bytes_per_line); + tmp += tmp_img->bytes_per_line; + dst += map->image->bytes_per_line; + } + + XShmSyncXShmImageRegion(dpy, map, dstx, dsty, tmp_img->width, tmp_img->height); + } + + + + + +