summaryrefslogtreecommitdiff
path: root/src/libaudgui
diff options
context:
space:
mode:
authorBilal Akhtar <bilalakhtar@ubuntu.com>2011-05-03 10:34:47 +0530
committerBilal Akhtar <bilalakhtar@ubuntu.com>2011-05-03 10:34:47 +0530
commit95ef69053691c5c731d0a6538de118ea52a3cd0a (patch)
tree60a79db75770323a8af7783831aad06f6aef0a01 /src/libaudgui
parent2debbc92898682dfe0c81f1ce4999175887ec922 (diff)
Imported Upstream version 2.5.0
Diffstat (limited to 'src/libaudgui')
-rw-r--r--src/libaudgui/Makefile7
-rw-r--r--src/libaudgui/audacious_logo.xpm454
-rw-r--r--src/libaudgui/confirm.c36
-rw-r--r--src/libaudgui/effects-menu.c21
-rw-r--r--src/libaudgui/icons-stock.c27
-rw-r--r--src/libaudgui/iface-menu.c8
-rw-r--r--src/libaudgui/infopopup.c15
-rw-r--r--src/libaudgui/infowin.c478
-rw-r--r--src/libaudgui/libaudgui-gtk.h14
-rw-r--r--src/libaudgui/libaudgui.h1
-rw-r--r--src/libaudgui/library-store.c367
-rwxr-xr-xsrc/libaudgui/list.c758
-rw-r--r--src/libaudgui/list.h61
-rw-r--r--src/libaudgui/ui_about.c160
-rw-r--r--src/libaudgui/ui_credits.c92
-rw-r--r--src/libaudgui/ui_credits.h9
-rwxr-xr-x[-rw-r--r--]src/libaudgui/ui_fileopener.c4
-rw-r--r--src/libaudgui/ui_gtk.c8
-rw-r--r--src/libaudgui/ui_jumptotrack.c21
-rw-r--r--src/libaudgui/ui_jumptotrack_cache.c9
-rw-r--r--src/libaudgui/ui_playlist_manager.c205
-rw-r--r--src/libaudgui/ui_regex.h39
-rw-r--r--src/libaudgui/ui_urlopener.c7
-rw-r--r--src/libaudgui/util.c117
24 files changed, 1275 insertions, 1643 deletions
diff --git a/src/libaudgui/Makefile b/src/libaudgui/Makefile
index 448c353..cbf6678 100644
--- a/src/libaudgui/Makefile
+++ b/src/libaudgui/Makefile
@@ -9,7 +9,7 @@ SRCS = confirm.c \
infopopup.c \
infowin.c \
init.c \
- library-store.c \
+ list.c \
ui_gtk.c \
ui_fileopener.c \
ui_urlopener.c \
@@ -23,14 +23,15 @@ SRCS = confirm.c \
util.c
INCLUDES = libaudgui.h \
- libaudgui-gtk.h
+ libaudgui-gtk.h \
+ list.h
include ../../buildsys.mk
include ../../extra.mk
includesubdir = libaudgui
-CPPFLAGS += -DHAVE_CONFIG_H ${LIB_CPPFLAGS} -I.. -I../.. ${GLIB_CFLASG} ${GTK_CFLAGS} ${DBUS_CFLAGS} ${LIBMCS_CFLAGS} ${AUDACIOUS_DEFINES} ${REGEX_CFLAGS}
+CPPFLAGS += -DHAVE_CONFIG_H -I.. -I../.. ${GLIB_CFLASG} ${GTK_CFLAGS} ${DBUS_CFLAGS} ${LIBMCS_CFLAGS} ${AUDACIOUS_DEFINES} ${REGEX_CFLAGS}
CFLAGS += -std=gnu99 ${LIB_CFLAGS}
LDFLAGS += $(AUDLDFLAGS)
LIBS += -lm ${GLIB_LIBS} ${MOWGLI_LIBS} ${GTK_LIBS} ${REGEX_LIBS} -L../libaudcore -laudcore
diff --git a/src/libaudgui/audacious_logo.xpm b/src/libaudgui/audacious_logo.xpm
deleted file mode 100644
index 4cacca2..0000000
--- a/src/libaudgui/audacious_logo.xpm
+++ /dev/null
@@ -1,454 +0,0 @@
-/* XPM */
-static char * audacious_logo_xpm[] = {
-"488 200 251 2",
-" c #FEFEFE",
-". c #FDFDFD",
-"+ c #FCFCFC",
-"@ c #FBFBFB",
-"# c #FAFAFA",
-"$ c #F9F9F9",
-"% c #F8F8F8",
-"& c #F7F7F7",
-"* c #F6F6F6",
-"= c #F5F5F5",
-"- c #F4F4F4",
-"; c #F3F3F3",
-"> c #F2F2F2",
-", c #F1F1F1",
-"' c #EFEFEF",
-") c #EEEEEE",
-"! c #EDEDED",
-"~ c #ECECEC",
-"{ c #EBEBEB",
-"] c #F0F0F0",
-"^ c #E9E9E9",
-"/ c #E7E7E7",
-"( c #E5E5E5",
-"_ c #E4E4E4",
-": c #E3E3E3",
-"< c #E2E2E2",
-"[ c #E1E1E1",
-"} c #E0E0E0",
-"| c #EAEAEA",
-"1 c #E6E6E6",
-"2 c #DFDFDF",
-"3 c #DCDCDC",
-"4 c #DADADA",
-"5 c #D8D8D8",
-"6 c #D6D6D6",
-"7 c #D5D5D5",
-"8 c #D4D4D4",
-"9 c #D3D3D3",
-"0 c #D7D7D7",
-"a c #CFCFCF",
-"b c #CCCCCC",
-"c c #CACACA",
-"d c #C8C8C8",
-"e c #C6C6C6",
-"f c #C5C5C5",
-"g c #C4C4C4",
-"h c #C3C3C3",
-"i c #C2C2C2",
-"j c #C7C7C7",
-"k c #D1D1D1",
-"l c #CBCBCB",
-"m c #BFBFBF",
-"n c #BCBCBC",
-"o c #B8B8B8",
-"p c #B5B5B5",
-"q c #B4B4B4",
-"r c #B1B1B1",
-"s c #B0B0B0",
-"t c #AFAFAF",
-"u c #CDCDCD",
-"v c #AEAEAE",
-"w c #A9A9A9",
-"x c #A4A4A4",
-"y c #A2A2A2",
-"z c #9F9F9F",
-"A c #9C9C9C",
-"B c #9B9B9B",
-"C c #9A9A9A",
-"D c #999999",
-"E c #CECECE",
-"F c #B7B7B7",
-"G c #ADADAD",
-"H c #A5A5A5",
-"I c #9D9D9D",
-"J c #969696",
-"K c #919191",
-"L c #8E8E8E",
-"M c #8A8A8A",
-"N c #888888",
-"O c #878787",
-"P c #868686",
-"Q c #858585",
-"R c #848484",
-"S c #838383",
-"T c #ABABAB",
-"U c #959595",
-"V c #8B8B8B",
-"W c #7D7D7D",
-"X c #797979",
-"Y c #767676",
-"Z c #727272",
-"` c #717171",
-" . c #707070",
-".. c #6F6F6F",
-"+. c #6D6D6D",
-"@. c #757575",
-"#. c #7C7C7C",
-"$. c #C9C9C9",
-"%. c #BBBBBB",
-"&. c #929292",
-"*. c #7B7B7B",
-"=. c #6C6C6C",
-"-. c #656565",
-";. c #616161",
-">. c #5E5E5E",
-",. c #5C5C5C",
-"'. c #5B5B5B",
-"). c #5A5A5A",
-"!. c #585858",
-"~. c #575757",
-"{. c #7A7A7A",
-"]. c #D2D2D2",
-"^. c #636363",
-"/. c #555555",
-"(. c #515151",
-"_. c #4D4D4D",
-":. c #4B4B4B",
-"<. c #4A4A4A",
-"[. c #494949",
-"}. c #484848",
-"|. c #474747",
-"1. c #464646",
-"2. c #505050",
-"3. c #5F5F5F",
-"4. c #545454",
-"5. c #4C4C4C",
-"6. c #454545",
-"7. c #404040",
-"8. c #3C3C3C",
-"9. c #3B3B3B",
-"0. c #3A3A3A",
-"a. c #393939",
-"b. c #383838",
-"c. c #363636",
-"d. c #353535",
-"e. c #444444",
-"f. c #BABABA",
-"g. c #333333",
-"h. c #2F2F2F",
-"i. c #2D2D2D",
-"j. c #2C2C2C",
-"k. c #2B2B2B",
-"l. c #2A2A2A",
-"m. c #282828",
-"n. c #7E7E7E",
-"o. c #6B6B6B",
-"p. c #262626",
-"q. c #242424",
-"r. c #222222",
-"s. c #212121",
-"t. c #202020",
-"u. c #1E1E1E",
-"v. c #1D1D1D",
-"w. c #292929",
-"x. c #373737",
-"y. c #A1A1A1",
-"z. c #8C8C8C",
-"A. c #787878",
-"B. c #666666",
-"C. c #535353",
-"D. c #303030",
-"E. c #1B1B1B",
-"F. c #191919",
-"G. c #181818",
-"H. c #171717",
-"I. c #161616",
-"J. c #151515",
-"K. c #B3B3B3",
-"L. c #898989",
-"M. c #4E4E4E",
-"N. c #3F3F3F",
-"O. c #131313",
-"P. c #121212",
-"Q. c #111111",
-"R. c #0F0F0F",
-"S. c #0E0E0E",
-"T. c #B2B2B2",
-"U. c #737373",
-"V. c #3D3D3D",
-"W. c #313131",
-"X. c #141414",
-"Y. c #101010",
-"Z. c #0C0C0C",
-"`. c #0B0B0B",
-" + c #272727",
-".+ c #2E2E2E",
-"++ c #1A1A1A",
-"@+ c #0A0A0A",
-"#+ c #080808",
-"$+ c #070707",
-"%+ c #090909",
-"&+ c #060606",
-"*+ c #050505",
-"=+ c #0D0D0D",
-"-+ c #040404",
-";+ c #020202",
-">+ c #010101",
-",+ c #000000",
-"'+ c #4F4F4F",
-")+ c #C1C1C1",
-"!+ c #A7A7A7",
-"~+ c #696969",
-"{+ c #D9D9D9",
-"]+ c #808080",
-"^+ c #979797",
-"/+ c #B6B6B6",
-"(+ c #A8A8A8",
-"_+ c #D0D0D0",
-":+ c #A3A3A3",
-"<+ c #7F7F7F",
-"[+ c #949494",
-"}+ c #686868",
-"|+ c #030303",
-"1+ c #AAAAAA",
-"2+ c #323232",
-"3+ c #909090",
-"4+ c #676767",
-"5+ c #9E9E9E",
-"6+ c #252525",
-"7+ c #1F1F1F",
-"8+ c #BDBDBD",
-"9+ c #6E6E6E",
-"0+ c #595959",
-"a+ c #ACACAC",
-"b+ c #818181",
-"c+ c #565656",
-"d+ c #8D8D8D",
-"e+ c #939393",
-"f+ c #A6A6A6",
-"g+ c #525252",
-"h+ c #232323",
-"i+ c #424242",
-"j+ c #B9B9B9",
-"k+ c #989898",
-"l+ c #343434",
-"m+ c #414141",
-"n+ c #1C1C1C",
-"o+ c #777777",
-"p+ c #BEBEBE",
-"q+ c #6A6A6A",
-"r+ c #8F8F8F",
-"s+ c #A0A0A0",
-"t+ c #C0C0C0",
-"u+ c #434343",
-"v+ c #747474",
-"w+ c #3E3E3E",
-"x+ c #646464",
-"y+ c #626262",
-"z+ c #606060",
-"A+ c #828282",
-"B+ c #5D5D5D",
-" . + @ # $ % & * = = - - - ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; - - - = = * & % $ # @ + . ",
-" . + # $ & = - > , ' ) ) ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ) ) ' , > - = & $ # + . ",
-" . @ # % = ; ] ! { ^ / ( _ : : < < [ [ [ [ [ [ [ } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } [ [ [ [ [ [ < < < : _ ( / ^ { ! ] ; = % # @ . ",
-". + # & - , ! | 1 < 2 3 4 5 6 7 7 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 7 7 6 5 4 3 2 < 1 | ! , - & # + . ",
-"+ # % - , ~ / [ 3 0 9 a b c d e f g g h h h h h h i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i h h h h h g g f e j c b a 9 0 3 [ / ~ ] - % # + ",
-"@ $ = , ~ 1 2 5 k l g m n o p q r r s s s t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t s s r r q p o n m g l k 5 2 ( { , = $ @ ",
-"# & ; ! / 2 6 u g n p v w x y z A A B B C C C C C D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D C C C C C B A A z y x w v p n g u 6 2 / ! ; & # ",
-"$ = ] ^ [ 5 E i F G H I J K L M N O P P Q R R R R S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S R R R R P P O N M L K J I x G F i E 5 [ ^ ] = $ ",
-"% - ) 1 3 k g F T z U V R W X Y Z ` . ...+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+. . .` Z @.X #.R V U z T F g k 3 1 ) - % ",
-"& > { < 0 $.%.G z &.Q *.Z =.-.;.>.,.'.'.).!.!.!.!.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.!.!.!.!.'.'.,.>.;.-.=.Z {.Q K z G %.$.0 < { > & ",
-"* , ^ 2 ].f q H U P X +.^.,./.(._.:.<.[.}.|.|.|.|.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.|.|.|.|.[.<.:._.2./.'.^.+.X P U H q f ].2 ^ ] * ",
-"= ' / 3 a m v B V {.=.3.4.5.6.7.8.9.0.a.b.c.c.c.c.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.c.c.c.c.a.0.9.8.7.e.5.4.3.=.{.V B v m a 3 / ' = ",
-"= ) ( 4 l f.w J S Z ;.4.[.7.a.g.h.i.j.k.l.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.k.j.i.h.g.a.7.[.4.;.` S J w f.l 4 ( ) = ",
-"- ! _ 5 $.F x K n.o.).5.7.b.h.l.p.q.r.s.t.u.u.u.u.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.u.u.u.u.s.r.q.p.w.h.x.7.5.).o.#.K x F $.5 _ ! - ",
-"- ! : 6 j p y.z.A.B.C.6.0.D.m.r.v.E.F.G.H.I.I.I.I.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.I.I.I.I.G.F.E.v.r.m.D.a.6.C.B.A.z.y.q j 6 : ! - ",
-"; ~ < 7 f K.z L.@.;.M.N.g.w.s.E.H.J.O.P.Q.R.R.R.R.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.R.R.R.R.P.O.J.H.E.s.w.g.N.M.;.@.L.z T.f 7 < ~ ; ",
-"; ~ < 7 g T.I O U.3._.V.W.m.u.G.X.P.Y.R.S.Z.Z.Z.Z.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.Z.Z.Z.Z.R.Y.P.X.G.u. +W.V._.3.U.O I r g 7 < ~ ; ",
-"; ~ [ 9 h s A O .,.[.9..+q.++J.Y.S.Z.`.@+#+#+#+#+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+#+#+#+#+`.Z.S.Y.J.++q.i.9.[.,. .Q A s h 9 [ ~ ; ",
-"; ~ [ 9 h s B P .'.}.a.j.r.G.O.S.Z.@+%+#+&+&+&+&+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+&+&+&+&+%+@+Z.S.O.G.r.j.a.}.'. .Q C s h 9 [ ~ ; ",
-"; ~ [ 9 i s C Q ..'.}.b.k.s.H.P.=+`.%+#+$+*+*+*+*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*+*+*+*+#+%+`.=+P.H.s.k.b.}.)...R C s i 9 [ ~ ; ",
-"; ~ [ 9 i s C Q ..'.}.b.k.s.H.P.=+`.%+#+$+*+*+*+*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*+*+*+*+#+%+`.=+P.H.s.k.b.}.)...R C s i 9 [ ~ ; ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+F.'+#.A f.d ].6 l )+!+P ;.l.;+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+E.~+F {+{+{+{+{+{+{+{+{+{+{+{+{+{+$.]+.+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+k.&.5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+v e.;+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+++&.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+v .+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>.k {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 n.#+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+R.^+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r t.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+++/+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l W.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+++C.P (+g _+0 E )+:+<+}.Y.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+t.g {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k 9.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+&+4.(+{+{+{+{+{+{+{+{+{+{+{+{+6 [+9.>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+-+W.}+K r d k 6 b m y.]+5.X.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+G.m {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+_+j.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+|+~.h {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+1+2+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+m.W d {+{+{+{+{+{+{+{+{+{+{+{+{+y 2.*+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+E.C.R x )+u 0 k j s 3+4+h.|+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+%+K.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 s n {+{+{+{+{+{+{+{+{+{+{+{+j F.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+E.C.R x )+u 0 k j s 3+4+h.|+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+s.G {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+Q @+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+k.C {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+)+'.-+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+=+>.v {+{+{+{+{+{+{+{+{+{+{+{+{+j *.p.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+N {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5+r.,+,+ +y {+{+{+{+{+{+{+{+{+{+{+!+|+,+,+,+,+,+,+,+,+,+,+,+,+,+=+>.v {+{+{+{+{+{+{+{+{+{+{+{+{+j *.p.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+6+>.3+s $.9 6 l F J }+h.;+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+[._+{+{+{+{+{+{+{+{+{+u S *.f.{+{+{+{+{+{+{+{+{+{+F s.,+,+,+,+,+,+,+,+,+,+,+,+S.S 5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+K.W.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+7+!.M T e k 0 u 8+I @.8.#+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+Z.9+b {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+^+l.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+[.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+A.>+,+,+,+,+|+K {+{+{+{+{+{+{+{+{+{+{+o.,+,+,+,+,+,+,+,+,+,+,+Z.9+b {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+^+l.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+@+3.q {+{+{+{+{+{+{+{+{+{+{+{+8+~+S.,+,+,+,+,+,+,+,+,+,+,+,+,+>.{+{+{+{+{+{+{+{+{+{+y X.,+,+|+;.{+{+{+{+{+{+{+{+{+{+$.h.,+,+,+,+,+,+,+,+,+,+W.m {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 4+;+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+$+0+a+{+{+{+{+{+{+{+{+{+{+{+{+u b+6+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+[.g {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 n.=+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+$+b. .^+o c 7 8 $./+U +.d.*+,+,+,+,+,+,+,+,+,+,+,+,+,+,+=+g {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+8+*+,+,+,+,+,+,+=+a {+{+{+{+{+{+{+{+{+{+9 v.,+,+,+,+,+,+,+,+,+[.g {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 n.=+,+,+,+,+,+,+,+,+,+,+,+,+,+-+>.c {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+u ~+&+,+,+,+,+,+,+,+,+,+,+c+{+{+{+{+{+{+{+{+{+{+)+@+,+,+,+,+,+{.{+{+{+{+{+{+{+{+{+{+b +,+,+,+,+,+,+,+,+_.7 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+d+*+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+$+b. .^+o c 7 8 $./+U +.d.*+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+|+0+f {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 L ++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+%+N {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+n j.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+j.S u {+{+{+{+{+{+{+{+{+{+{+{+c n.p.,+,+,+,+,+,+,+,+,+,+,+,+Y {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+^.,+,+,+,+,+,+,+,+!+{+{+{+{+{+{+{+{+{+{+{+e+,+,+,+,+,+,+,+%+N {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+n j.,+,+,+,+,+,+,+,+,+,+,+q.r {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+o l.,+,+,+,+,+,+,+,+x.0 {+{+{+{+{+{+{+{+{+{+U ,+,+,+,+,+,+5.{+{+{+{+{+{+{+{+{+{+{+h O.,+,+,+,+,+,+0+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+C -+,+,+,+,+,+,+,+,+,+,+,+,+,+j.S u {+{+{+{+{+{+{+{+{+{+{+{+c n.p.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+r.v {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+_+>.>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+X.s {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+8 }.,+,+,+,+,+,+,+,+,+,+,+,+,+k.A {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+J 6+,+,+,+,+,+,+,+,+,+O.k {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+e.,+,+,+,+,+,+,+,+f+{+{+{+{+{+{+{+{+{+{+{+{+6+,+,+,+,+,+X.s {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+8 }.,+,+,+,+,+,+,+,+,+|.k {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+9 M.,+,+,+,+,+,+P.f {+{+{+{+{+{+{+{+{+{+{+_+m.,+,+,+,+>+:+{+{+{+{+{+{+{+{+{+{+{+{+5+>+,+,+,+,+5.5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+M >+,+,+,+,+,+,+,+,+,+,+k.A {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+J 6+,+,+,+,+,+,+,+,+,+,+,+,+,+,+}._+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+[+@+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+F.8+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 c+,+,+,+,+,+,+,+,+,+,+%+W 0 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+6 @.&+,+,+,+,+,+,+,+U.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+e.,+,+,+,+,+,+,+,+K.{+{+{+{+{+{+{+{+{+{+{+{+z.,+,+,+,+F.8+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 c+,+,+,+,+,+,+,+c+5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+,.,+,+,+,+,+L.{+{+{+{+{+{+{+{+{+{+{+{+{+d +,+,+,+g+{+{+{+{+{+{+{+{+{+{+{+{+{+{+2.,+,+,+w.9 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+3.,+,+,+,+,+,+,+,+%+W 0 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+6 @.&+,+,+,+,+,+,+,+,+,+,+,+).5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+a+Q.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+Q.F {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 |.,+,+,+,+,+,+,+,+h+p {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+v u.,+,+,+,+,+|+f {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k.,+,+,+,+,+,+,+>+l {+{+{+{+{+{+{+{+{+{+{+{+8 S.,+,+Q.F {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 |.,+,+,+,+,+:.5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+_.,+,+,+j.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+f i+j.9+9 {+{+{+{+{+{+{+{+{+{+{+{+{+{+e %+,+%+f.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+7 l.,+,+,+,+,+,+h+p {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+v u.,+,+,+,+,+,+,+,+,+g+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+v `.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+|+y.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+9 m.,+,+,+,+,+,+2+l {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+d j.,+,+,+,+7.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+6 q m d j+).,+,+,+,+,+,+,+,+u.{+{+{+{+{+{+{+{+{+{+{+{+{+{+~.,+|+y.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+9 m.,+,+,+m.9 {+{+{+{+{+{+{+{+{+{+{+{+{+{+7 f.G &.-.}+S f.{+{+{+{+{+{+8 l.,+,+k+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+3.,+` {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+T ;+,+,+,+,+2+l {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+d j.,+,+,+,+,+,+,+l+6 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+B ;+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+=.{+{+{+{+{+{+{+{+{+{+{+c 1+^+V '+W.k..+V.>.L E {+{+{+{+{+{+{+{+{+{+{+{+f.@+,+,+,+,+W.k {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+a j.,+,+,+b+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l b+m+`.,+,+,+,+,+,+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+I ,+=.{+{+{+{+{+{+{+{+{+{+{+c 1+^+V '+W.k..+V.>.L E {+{+{+{+{+{+{+{+{+{+{+{+f.@+,+&+F {+{+{+{+{+{+{+{+{+{+{+{+{+y [.#+,+,+,+,+,+,+>+x.a+{+{+{+{+{+f.#+n+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+7 W !.:+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+n E.7 {+{+{+{+{+{+{+{+{+{+{+{+{+{+l A A.o+o+U l {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+(.,+,+,+W.k {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+a j.,+,+,+,+,+Y.i {+{+{+{+{+{+{+{+{+{+{+{+g C f.G I I I :+p+{+{+{+{+{+{+{+{+{+{+-.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+q.6 {+{+{+{+{+{+{+{+{+8 [.>+,+,+,+,+,+,+,+,+,+,+#+M.p {+{+{+{+{+{+{+{+{+{+{+@.,+,+,+s.l {+{+{+{+{+q k.Q.;.8 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+j u.,+,+f.{+{+{+{+{+{+{+{+{+{+{+{+{+{+6 .%+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+_+w.6 {+{+{+{+{+{+{+{+{+8 [.>+,+,+,+,+,+,+,+,+,+,+#+M.p {+{+{+{+{+{+{+{+{+{+{+@.,+q+{+{+{+{+{+{+{+{+{+{+{+{+e+7+,+,+,+,+,+,+,+,+,+,+,+-+r+{+{+{+{+{+o.o.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+b W.,+,+;+..{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+q {+{+{+{+{+{+{+{+{+{+{+{+K.;.u.>+,+,+,+,+,+;+m.>.T {+{+{+{+{+{+{+{+{+{+{+{+{+f.|+,+s.l {+{+{+{+{+q k.Q.;.8 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+j u.,+,+,+,+S {+{+{+{+{+{+{+{+{+u P }.J.,+,+,+,+,+,+,+,+,+j./+{+{+{+{+{+{+{+{+8 7+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+s+{+{+{+{+{+{+{+{+{+5 7.,+,+,+,+,+,+,+,+,+,+,+,+,+,+-+=.{+{+{+{+{+{+{+{+{+{+6 t.,+$+T.{+{+{+{+{+t+O.,+,+,+_.{+{+{+{+{+{+{+{+{+f.g.$+6+#.0 {+{+{+{+{+{+t $+O.{+{+{+{+{+{+{+{+{+{+{+{+{+{+f.i.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+_+{+{+{+{+{+{+{+{+{+5 7.,+,+,+,+,+,+,+,+,+,+,+,+,+,+-+=.{+{+{+{+{+{+{+{+{+{+6 D.a {+{+{+{+{+{+{+{+{+{+$.m+,+,+,+,+,+,+,+,+,+,+,+,+,+,+#+%.{+{+{+{+_+%.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+m+,+,+,+,+,+N {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+e |.;+,+,+,+,+,+,+,+,+,+,+,+>+'+E {+{+{+{+{+{+{+{+{+{+{+{+|.$+T.{+{+{+{+{+t+O.,+,+,+_.{+{+{+{+{+{+{+{+{+f.g.$+6+#.0 {+{+{+{+{+{+t $+,+,+l.5 {+{+{+{+{+{+{+{+o+=+,+,+,+,+,+,+,+,+,+,+,+,+,+S.t {+{+{+{+{+{+{+{+^+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+d.{+{+{+{+{+{+{+{+{+{+k+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+;.{+{+{+{+{+{+{+{+{+{+L.,+A.{+{+{+{+{+6 j.,+,+,+,+>+(+{+{+{+{+{+{+{+_+v.,+,+,+,+a.k {+{+{+{+{+{+@.d.{+{+{+{+{+{+{+{+{+{+{+{+{+w S.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+k.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+;.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+f.7+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+C.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+H ,+,+,+,+,+,+|.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+o J.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+r.o {+{+{+{+{+{+{+{+{+{+{+D A.{+{+{+{+{+6 j.,+,+,+,+>+(+{+{+{+{+{+{+{+_+v.,+,+,+,+a.k {+{+{+{+{+{+@.,+,+e+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+n+9 {+{+{+{+{+{+{+{+m.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+B {+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+x {+{+{+{+{+{+{+{+{+6 7.6 {+{+{+{+{+*.,+,+,+,+,+,+'.{+{+{+{+{+{+{+]+,+,+,+,+,+,+'.{+{+{+{+{+{+6 {.{+{+{+{+{+{+{+{+{+{+{+{+b I.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+h+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+x {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l n+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+s.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+@.,+,+,+,+,+,+h.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+E n+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+X.n {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+*.,+,+,+,+,+,+'.{+{+{+{+{+{+{+]+,+,+,+,+,+,+'.{+{+{+{+{+{+6 6+n+{+{+{+{+{+{+{+{+P ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+k+{+{+{+{+{+{+{+{+N ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+G.5 {+{+{+{+{+{+{+{+{+{+_+6+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+u+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k.,+,+,+,+,+,+s.{+{+{+{+{+{+{+_.,+,+,+,+,+,+Z.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+Z ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+p.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+_+6+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+u+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+N.,+,+,+,+,+,+,+,+-+X.X.X.S.,+,+,+,+>+Q {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+n+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+>.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+t.].{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k.,+,+,+,+,+,+s.{+{+{+{+{+{+{+_.,+,+,+,+,+,+Z.{+{+{+{+{+{+{+^+=.{+{+{+{+{+{+{+0 ++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+|+%.{+{+{+{+{+{+{+{+a %+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+^.{+{+{+{+{+{+{+{+{+{+{+{+k N A.I !+!+!+f+o+-+,+,+,+,+,+,+,+,+$+9 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+$+,+,+,+,+,+,+,+5+{+{+{+{+{+{+0+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+6+,+,+,+,+,+,+,+,+>+m+^.<.>+,+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k N A.I !+!+!+f+o+-+,+,+,+,+,+,+,+,+$+9 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+D ,+,+,+,+,+,+,+,+m+h {+{+{+{+:+2+,+Z.P {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+S.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+t+*+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+4+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+$+,+,+,+,+,+,+,+5+{+{+{+{+{+{+0+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+0 {+{+{+{+{+{+{+s+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+ .{+{+{+{+{+{+{+{+{+{+e.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+5+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+q.,+,+,+,+,+,+,+,+,+f+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+&+,+,+,+,+,+,+,+..{+{+{+{+{+{+Y ,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l >+,+,+,+,+,+,+,+>+o+{+{+{+W ,+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+q.,+,+,+,+,+,+,+,+,+f+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+e.,+,+,+,+,+,+,+q.7 {+{+{+{+{+{+{+t+_+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+P.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+-.,+,+,+,+,+,+,+,+i+U J J r+7+,+,+,+,+,+,+,+%+E {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+&+,+,+,+,+,+,+,+..{+{+{+{+{+{+Y ,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+q+,+,+,+,+,+,+,+,+,+,+h+:+<+h+,+,+&+v+{+{+{+{+{+{+{+{+{+{+{+*.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+|+_+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k M ^.d.,+,+,+,+,+,+,+,+,+,+b+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+G.,+,+,+,+,+,+,+A.{+{+{+{+{+{+'+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+(+,+,+,+,+,+,+,+>+o+{+{+{+{+{+%+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k M ^.d.,+,+,+,+,+,+,+,+,+,+b+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+X.,+,+,+,+,+,+,+M {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+=.,+,+,+,+,+,+s.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 H.,+,+,+,+,+,+,+4.{+{+{+{+{+g 7+,+,+,+,+,+,+,+O {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+G.,+,+,+,+,+,+,+A.{+{+{+{+{+{+'+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5.,+,+,+,+,+,+,+,+,+,+++z s )+T.s+f {+{+{+{+{+{+{+{+{+{+{+{+(+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+7+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 K ,.w+Z.,+,+,+,+,+,+,+,+,+,+,+,+,+>.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+d.,+,+,+,+,+,+,+U {+{+{+{+{+{+++,+,+,+,+,+,+%+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+L ,+,+,+,+,+,+,+|.{+{+{+{+{+{+E.,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 K ,.w+Z.,+,+,+,+,+,+,+,+,+,+,+,+,+>.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+|+,+,+,+,+,+,+>+l {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+'.,+,+,+,+,+,+q.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+a+,+,+,+,+,+,+,+%+b {+{+{+{+{+{+K ,+,+,+,+,+,+,+C.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+d.,+,+,+,+,+,+,+U {+{+{+{+{+{+++,+,+,+,+,+,+%+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+I.*.{+{+{+{+{+{+{+{+{+{+{+{+{+j ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+7.{+{+{+{+{+{+{+{+{+{+{+{+{+n h.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+N.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+C.,+,+,+,+,+,+,+(+{+{+{+{+{+{+|+,+,+,+,+,+,+0.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+<+,+,+,+,+,+,+,+ .{+{+{+{+{+{+d.,+,+,+,+,+,+,+ +{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+n h.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+N.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+&+,+,+,+,+,+,+G.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+..,+,+,+,+,+,+X.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+n.,+,+,+,+,+,+,+[.{+{+{+{+{+{+{+v ,+,+,+,+,+,+,+i+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+C.,+,+,+,+,+,+,+(+{+{+{+{+{+{+|+,+,+,+,+,+,+0.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+L ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+o.{+{+{+{+{+{+{+{+{+{+{+{+{+-+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+2.{+{+{+{+{+{+{+{+{+{+{+{+v P.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+C.,+,+,+,+,+,+,+:+{+{+{+{+{+)+,+,+,+,+,+,+,+e.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+Z ,+,+,+,+,+,+,+ .{+{+{+{+{+{+a.,+,+,+,+,+,+,+7+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+v P.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+X.,+,+,+,+,+,+ +{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+X.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+..,+,+,+,+,+,+,+/.{+{+{+{+{+{+{+(+,+,+,+,+,+,+,+k.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+C.,+,+,+,+,+,+,+:+{+{+{+{+{+)+,+,+,+,+,+,+,+e.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+6 v.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+4.].{+{+{+{+{+{+{+{+{+{+{+S.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+).{+{+{+{+{+{+{+{+{+{+{+p+O.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+g+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+1.,+,+,+,+,+,+,+P {+{+{+{+{+3+,+,+,+,+,+,+,+e.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+9+,+,+,+,+,+,+,++.{+{+{+{+{+{+0+,+,+,+,+,+,+,+i.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+p+O.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+g+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+p.,+,+,+,+,+,+v.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+++{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+#.,+,+,+,+,+,+,+W.{+{+{+{+{+{+{+d+,+,+,+,+,+,+,+&+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+1.,+,+,+,+,+,+,+P {+{+{+{+{+3+,+,+,+,+,+,+,+e.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+D >+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+_.{+{+{+{+{+{+{+{+{+{+{+Y.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+'.{+{+{+{+{+{+{+{+{+{+{+l+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+&.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+x+,+,+,+,+,+,+,+^.{+{+{+{+{+A.,+,+,+,+,+,+,+i+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+,+e.{+{+{+{+{+{++.,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+&.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0.,+,+,+,+,+,+,+e+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+v.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+U ,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+y+,+,+,+,+,+,+,+-+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+x+,+,+,+,+,+,+,+^.{+{+{+{+{+A.,+,+,+,+,+,+,+i+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+z+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+&+b {+{+{+{+{+{+{+{+{+{+*+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+(.{+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+P.1+o F c.,+,+,+,+,+,+,+,+z {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+A+,+,+,+,+,+,+,+|.{+{+{+{+{+~+,+,+,+,+,+,+,+q.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+<+,+,+,+,+,+,+,+*+t+{+{+{+{+{++.,+,+,+,+,+,+,+D.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+P.1+o F c.,+,+,+,+,+,+,+,+z {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+X ,+,+,+,+,+,+,+J.e {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+-+k {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+/+,+,+,+,+,+,+,+j.{+{+{+{+{+{+{+6+,+,+,+,+,+,+,+=+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+A+,+,+,+,+,+,+,+|.{+{+{+{+{+~+,+,+,+,+,+,+,+q.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 M.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+O {+{+{+{+{+{+{+{+{+u ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+m+{+{+{+{+{+{+{+{+{+{+o+,+,+,+,+,+,+,+,+'+{+{+{++.,+,+,+,+,+,+,+,+/+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+L.,+,+,+,+,+,+,+h+{+{+{+{+{+~.,+,+,+,+,+,+,+%+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+z ,+,+,+,+,+,+,+,+|.{+{+{+{+{+,.,+,+,+,+,+,+,+k.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+o+,+,+,+,+,+,+,+,+'+{+{+{++.,+,+,+,+,+,+,+,+/+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+)+|+,+,+,+,+,+,+,+j.E {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+,+r {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+I.,+,+,+,+,+,+*+d {+{+{+{+{+(+,+,+,+,+,+,+,+,+ +{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+L.,+,+,+,+,+,+,+h+{+{+{+{+{+~.,+,+,+,+,+,+,+%+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+<+F.,+,+,+,+,+,+,+,+,+,+,+,+,+,+'+{+{+{+{+{+{+{+{+{+a+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+t.{+{+{+{+{+{+{+{+{+{+o+,+,+,+,+,+,+,+,+w.6 {+7 9.,+,+,+,+,+,+,+;+8 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+^+{+{+{+)+P.,+,+,+,+,+,+,+S.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+a *+,+,+,+,+,+,+,+,+0+k {+{+t Z.,+,+,+,+,+,+,+7+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+o+,+,+,+,+,+,+,+,+w.6 {+7 9.,+,+,+,+,+,+,+;+8 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+_.,+,+,+,+,+,+,+,+k.A {+{+{+8 d+2.4.f {+{+{+{+{+{+{+` {+{+{+{+{+{+{+{+{+{+{+{+{+ .,+,+,+,+,+,+,+C {+{+{+{+{+{+{+{+{+{+{+{+c x {+{+{+{+{+{+{+{+_.,+,+,+,+,+,+,+x+{+{+{+{+5 l+,+,+,+,+,+,+,+,+x+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+^+{+{+{+)+P.,+,+,+,+,+,+,+S.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+6 U n.N.-+,+,+,+,+,+,+,+,+,+,+C.{+{+{+{+{+{+{+{+{+S ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+-+].{+{+{+{+{+{+{+{+{+*.,+,+,+,+,+,+,+,+,+r.C.2+,+,+,+,+,+,+,+,+#+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+$+}+r+#.P.,+,+,+,+,+,+,+,+@+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+i+,+,+,+,+,+,+,+,+,+H.}+(.*+,+,+,+,+,+,+,+,+R.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+*.,+,+,+,+,+,+,+,+,+r.C.2+,+,+,+,+,+,+,+,+#+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+%.*+,+,+,+,+,+,+,+,+,+`.S.S.#+,+,+,+h+k {+{+{+{+{+l $+z.{+{+{+{+{+{+{+{+{+{+{+{+C.,+,+,+,+,+,+,+@.{+{+{+{+{+{+{+{+{+{+{+{+~.g+{+{+{+{+{+{+{+{+X ,+,+,+,+,+,+,+>+Z 5 {+0 >.,+,+,+,+,+,+,+,+&+)+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r+,+,+,+,+,+,+,+,+$+}+r+#.P.,+,+,+,+,+,+,+,+@+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+7 [+e+T.5 {+{+{+z.,+,+,+,+,+,+,+,+,+,+@.{+{+{+{+{+{+{+{+{+<.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+y.{+{+{+{+{+{+{+{+{+v ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+f.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+^+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+f+a {+{+{+{+{+{+{+{+{+y >+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+i {+{+{+{+{+{+{+{+{+{+{+{+9 {+{+{+{+{+{+{+{+{+v ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+f.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+^.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+I {+{+{+{+{+#.,+X.d {+{+{+{+{+{+{+{+{+{+{+g.,+,+,+,+,+,+,+<.{+{+{+{+{+{+{+{+{+{+{+:+;+`._+{+{+{+{+{+{+{+m |+,+,+,+,+,+,+,+,+6+C.q.,+,+,+,+,+,+,+,+,+o.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+^+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k .+,+,+,+Y.N.m+m+r.,+,+,+,+,+,+,+,+,+*+m {+{+{+{+{+{+{+{+9 S.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+4+{+{+{+{+{+{+{+{+{+{+++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+Q {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l #+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+ .U.{+{+{+{+{+{+{+{+{+{+i+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+G {+{+{+{+{+{+{+{+{+{+{+s+4+{+{+{+{+{+{+{+{+{+{+++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+Q {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+E u.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+*+e {+{+{+{+8 F.,+,+V.{+{+{+{+{+{+{+{+{+{+{+c+,+,+,+,+,+,+,+e.{+{+{+{+{+{+{+{+{+{+f J.,+,+{.{+{+{+{+{+{+{+{+_.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+i.7 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l #+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+A+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+..{+{+{+{+{+{+{+{+{+L ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+++{+{+{+{+{+{+{+{+{+{+W ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+3+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+x+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+#+{+{+{+{+{+{+{+{+{+b.`.g {+{+{+{+{+{+{+{+{+f ++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+r.6 {+{+{+{+{+{+{+{+{+{+6 p.++{+{+{+{+{+{+{+{+{+{+W ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+3+{+{+{+{+{+{+{+{+{+_+{+{+{+{+{+{+{+{+{+{+F n+,+,+,+,+,+,+,+,+,+,+,+,+,+,+z+{+{+{+{+{+Y ,+,+,+,+>.{+{+{+{+{+{+{+{+{+{+p+%+,+,+,+,+,+,+b+{+{+{+{+{+{+{+{+{+a i.,+,+,+H.9 {+{+{+{+{+{+{+e G.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+J.m {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+x+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+#+{+{+{+{+{+{+{+{+{+b {+{+{+{+{+{+]+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+w+5 {+{+{+{+{+{+{+{+{+.+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+z {+{+{+{+{+{+{+{+{+{+c+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+++_+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+_+++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+d.{+{+{+{+{+{+{+{+u $+,+[.{+{+{+{+{+{+{+{+{+{+j+7+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+R.q {+{+{+{+{+{+{+{+{+{+{+@.,+,+z {+{+{+{+{+{+{+{+{+{+c+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+++_+{+{+{+{+{+{+{+{+0 s.q {+{+{+{+{+{+{+{+{+{+_+o.S.,+,+,+,+,+,+,+,+,+,+,+_.6 {+{+{+{+m %+,+,+,+,+,+4+{+{+{+{+{+{+{+{+{+{+z.|+,+,+,+,+8.6 {+{+{+{+{+{+{+{+b l+,+,+,+,+,++.{+{+{+{+{+{+{+{+p ++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+R.r {+{+{+{+{+{+{+{+{+f.9 {+{+{+{+{+{+{+{+_+++,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+d.{+{+{+{+{+{+{+{+u 2+{+{+{+{+{+{+l Y.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+h+u {+{+{+{+{+{+{+{+{+B ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+b.{+{+{+{+{+{+{+{+{+{+{+{.&+,+,+,+,+,+>+j.9+L 3+6.;+,+,+,+G.q {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+(+&+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+]+{+{+{+{+{+{+{+{+S ,+,+,+M {+{+{+{+{+{+{+{+{+{+E y+&+,+,+,+,+,+v.M l k F *.a.$+,+H.G {+{+{+{+{+{+{+{+{+{+{+t $+,+,+b.{+{+{+{+{+{+{+{+{+{+{+{.&+,+,+,+,+,+>+j.9+L 3+6.;+,+,+,+G.q {+{+{+{+{+{+{+{+{+z.,+p.9 {+{+{+{+{+{+{+{+{+{+{+_+&.b+b+]+'+7+%+|+X.6.I {+{+{+{+{+7 h.,+,+,+,+,+,+,+g+9 {+{+{+{+{+{+{+{+{+:+8.%+E.9+6 {+{+{+{+{+{+{+{+n 6+,+,+,+,+,+,+#+o {+{+{+{+{+{+{+{+c _.>+,+,+,+,+,+,+,+,+,+,+,+,+++q {+{+{+{+{+{+{+{+{+0 D.O {+{+{+{+{+{+{+{+{+(+&+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+]+{+{+{+{+{+{+{+{+S ,+P {+{+{+{+{+{+B $+,+,+,+,+,+,+,+,+,+,+,+,+,+w.8+{+{+{+{+{+{+{+{+{+7 s.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+:+{+{+{+{+{+{+{+{+{+{+{+r C.S.,+|+/.q {+{+{+{+{+o =.4.{.E {+{+{+{+{+{+{+{+{+6 C.{+{+{+{+{+{+{+{+{+{+J $+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.6 {+{+{+{+{+{+{+{+j.,+,+,+`.F {+{+{+{+{+{+{+{+{+{+{+t+9+u+x.N.A+7 {+{+{+{+{+{+{+b {+{+{+{+{+{+{+{+{+{+{+{+b u.,+,+,+>+:+{+{+{+{+{+{+{+{+{+{+{+r C.S.,+|+/.q {+{+{+{+{+o =.4.{.E {+{+{+{+{+{+{+{+{+6 h+,+,+5.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+C.,+,+,+,+,+,+,+,+,+m.q {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+L.Z.,+,+,+,+,+,+,+,+m.9 {+{+{+{+{+{+{+{+{+C 6+,+,+,+,+,+,+,+,+,+;+M.l {+{+{+{+{+{+{+{+{+{+x+,+D.{+{+{+{+{+{+{+{+{+{+J $+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.6 {+{+{+{+{+{+{+{+j.,+Q.g {+{+{+{+{+{+K.y+[.Y.,+,+,+,+,+,+,+,+6+A+6 {+{+{+{+{+{+{+{+{+{+q+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+p.6 {+{+{+{+{+{+{+{+{+{+{+{+7 q )+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+o+,+s+{+{+{+{+{+{+{+{+{+{+t l+,+,+,+,+|+b.L v v v v R e.0.@.].{+{+{+{+{+{+{+{+A ,+,+,+,+,+n+f {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+].l+,+,+,+,+,+p.6 {+{+{+{+{+{+{+{+{+{+{+{+7 q )+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+o+,+,+,+,+,.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+3.,+,+,+,+,+,+,+,+,+,+,+-+;.$.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+v c.,+,+,+,+,+,+,+,+,+,+,+_.{+{+{+{+{+{+{+{+{+{+5 z./.4.w+V.V.6.'.*.n {+{+{+{+{+{+{+{+{+{+{+d+;+,+,+s+{+{+{+{+{+{+{+{+{+{+t l+,+,+,+,+|+b.L v v v v R e.0.@.].{+{+{+{+{+{+{+{+A ,+,+,+x.6 {+{+{+{+{+{+{+{+0 a+z.x+w+V.|.]+f.{+{+{+{+{+{+{+{+{+{+{+{+5+|+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+..{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+%.`.,+i.5 {+{+{+{+{+{+{+{+{+{+{+f+z+0+M e {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 k.,+,+,+,+,+,+m.$.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+8 N.,+,+,+,+,+,+,+..{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+%.`.,+,+,+,+,+2.8 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+9 _.,+,+,+,+,+,+,+,+,+,+,+,+,+,+@+3.K.{+{+{+{+{+{+{+{+{+{+{+{+8 [+0.>+,+,+,+,+,+,+,+,+,+,+,+,+,+>.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+C *+,+,+,+i.5 {+{+{+{+{+{+{+{+{+{+{+f+z+0+M e {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 k.,+,+,+,+/.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+T.S.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+|+:+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+9 l.,+,+,+]+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+W ,+,+,+,+,+,+,+,+r.t+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l d.,+,+,+,+,+,+,+,+|+:+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+9 l.,+,+,+,+,+,+,+j.f.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+p m.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+q.,.z.v d ].0 E m y.*.1.S.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+4.0 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+z.*+,+,+,+,+,+]+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+W ,+,+,+,+,+,+>.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+r X.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+P.j+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 <.,+,+,+,+@+o {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+p %+,+,+,+,+,+,+,+,+,+I.x {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+q r.,+,+,+,+,+,+,+,+,+,+P.j+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 <.,+,+,+,+,+,+,+,+,+#+.._+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+b x+*+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+b.f {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+6 -.;+,+,+,+,+,+,+@+o {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+p %+,+,+,+,+,+,+,+5.k {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+A =+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+++m {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0+,+,+,+,+,+,+p.u {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l h+,+,+,+,+,+,+,+,+,+,+,+|+..6 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 W #+,+,+,+,+,+,+,+,+,+,+,+,+++m {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0+,+,+,+,+,+,+,+,+,+,+,+,+P...)+{+{+{+{+{+{+{+{+{+{+{+{+j+x+=+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+X.L {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+s .+,+,+,+,+,+,+,+,+,+p.u {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l h+,+,+,+,+,+,+,+,+,+6+s {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+].x+;+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+I.T.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+7 :.,+,+,+,+,+,+,+,+c.9 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k 2+,+,+,+,+,+,+,+,+,+,+,+,+,+,+6+H {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+w j.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+I.T.{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+7 :.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+|+g.q+^+j+b 6 8 c K.&.y+l.>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+x.!+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+m !.|+,+,+,+,+,+,+,+,+,+,+,+c.9 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k 2+,+,+,+,+,+,+,+,+,+,+,+|+3.d {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+e+n+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+`.V {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+p+.+,+,+,+,+,+,+,+,+,+,+c.E {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l W.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+V.(+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+f+N.>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+`.V {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+p+.+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+d.M _+{+{+{+{+{+{+{+{+{+{+{+{+0 I _.-+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.E {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+l W.,+,+,+,+,+,+,+,+,+,+,+,+,+,+@+3.q {+{+{+{+{+{+{+{+{+{+{+{+b A+6+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+<.g {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 ]+=+,+,+,+,+,+,+,+,+,+,+,+,+p.o {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+K.s.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+k.#.e {+{+{+{+{+{+{+{+{+{+{+{+{+{+i o+w.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+<.g {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+5 ]+=+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+%+9.` ^+F c 8 6 b 8+z *.|.P.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+p.o {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+K.s.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+6+>.r+s $.9 0 u n A U.8.$+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+Z...b {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k+k.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+@+]+5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 {.#+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+;+p.B+Q H t+l 6 7 l p+y b+!.s.>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+Z...b {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+k+k.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+@+]+5 {+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+0 {.#+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+=+>.t {+{+{+{+{+{+{+{+{+{+{+{+{+d #.p.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+i.s+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+A m.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+=+>.t {+{+{+{+{+{+{+{+{+{+{+{+{+d #.p.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+i.s+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+A m.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+n+4.R H i E 0 ].d T.K }+W.-+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+D.O a {+{+{+{+{+{+{+{+{+{+{+{+E Q j.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+n+4.R H i E 0 ].d T.K }+W.-+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+D.O a {+{+{+{+{+{+{+{+{+{+{+{+E Q j.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+%+9.` k+j+l 6 7 l o k+ .0.#+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+%+9.` k+j+l 6 7 l o k+ .0.#+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+E.,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+b +.+.+.+.+.:+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+b +.+.+.+.+.a+{+g+,+,+,+,+,+,+,+{+b +.+.+.J {+:++.+.+.m {+E.,+{+m ,+,+,+,+,++.{+g+,+{+b +.+.+.+.+.+.+.w.,+{+m ,+,+{+b +.+.+.+.+.+.+.w.,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+b +.+.+.+.+.:+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+b +.+.+.+.+.a+{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+b +.+.+.+.+.:+{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+b +.+.+.+.+.:+{+g+,+{+b +.+.+.+.+.:+{+g+,+,+,+,+,+,+,+{+b +.+.+.+.+.+.+.w.,+{+m ,+,+,+,+,++.{+g+,+{+b +.+.+.+.+.+.+.w.,+{+b +.+.+.+.+.+.+.w.,+{+b +.+.+.+.+.:+{+g+,++.+.+.N {+r +.+.+.w.,+{+m ,+,+{+b +.+.+.+.+.:+{+g+,+{+b +.+.+.+.+.:+{+g+,+{+b +.+.+.+.+.+.+.w.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,+n.{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,+,+,+,+,+{+m ,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,+n.{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+m ,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+_+N N N N N r {+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+_+N N N N N U.g+7+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+m ,+,+,+,+,++.{+g+,+{+_+N N N N N N N g.,+{+m ,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+_+N N N N N r {+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+_+N N N N N U.g+7+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+_+N N N N N r {+g+,+{+_+N N N N N r {+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+_+N N N N N e.,+,+,+g+0+N N N N N +.g+7+,+{+m ,+,+,+,+,+,+,+,+,+{+_+N N N N N e.,+,+,+{+_+N N N N N r {+g+,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+_+N N N N N N N g.,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{++.,+,+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{++.,+,+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+{+{+{+{+{+{++.,+,+,+,+E.{+{+{+{+{++.,+,+,+{+m ,+,+,+,+,+,+,+,+,+{+{+{+{+{+{+{++.,+,+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.c.c.3.{+I c.c.c.X.,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+f c.c.c.c.c.+.:+V.,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+m ,+,+,+,+,++.{+g+,+c.c.c.c.c.c.c.N {+g+,+{+m ,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.c.c.c.c.c.c.N {+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+f c.c.c.c.c.+.:+V.,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+f c.c.c.c.c.N {+g+,+c.c.c.c.c.c.c.N {+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+f c.c.c.c.c.E.,+,+,+:+J c.c.c.c.c.+.:+V.,+{+m ,+,+,+,+,+,+,+,+,+{+f c.c.c.c.c.E.,+,+,+{+f c.c.c.c.c.c.c.X.,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+c.c.c.c.c.c.c.N {+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,++.{+g+,+{+m ,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+m ,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+{+m ,+,+,+,+,++.{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,++.{+g+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.{+N ,+,+,+,+,+{+6 m m m m m b {+g+,+{+6 m m m m m b {+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+6 m m m m m b {+g+,+m m m m m m m b {+g+,+{+m ,+,+{+6 m m m m m m m |.,+{+m ,+,+,+,+,+,+,+,+m m m m m m m b {+g+,+{+6 m m m m m b {+g+,+{+6 m m m m m b {+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+6 m m m $.{+b m m m 9 {+E.,+{+m ,+,+,+,+,++.{+g+,+m m m m m m m b {+g+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+6 m m m m m b {+g+,+,+,+,+,+,+,+{+6 m m m m m m m |.,+{+m ,+,+,+,+,++.{+g+,+{+6 m m m m m m m |.,+{+6 m m m m m m m |.,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+{+6 m m m m m b {+g+,+{+m ,+,+,+,+,++.{+g+,+m m m m m m m b {+g+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+c.{+N ,+,+,+,+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+m ,+,+,+g+{++.,+,+,+:+{+E.,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+{+{+{+{+E.,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+,+,+,+,+,+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+c.{+N ,+,+,+,+,+{+m ,+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,++.{+g+,+{+{+{+{+{+{+{+{+{+g+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+{+m ,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; { } 9 i t D S +.~.1.d.m.v.J.S.`.$+*+-+-+>+>+>+>+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+,+>+>+>+>+-+*+$+%+S.X.v.m.d.e.~.+.S D v i 9 } { > ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; ~ [ 9 i t D S +.!.|.c.m.u.J.R.Z.#+&+*+-+;+;+;+;+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+;+;+;+;+*+&+#+@+R.J.u.m.d.6.!.+.S D t i 9 [ { > ",
-"; ~ [ 9 i s C Q ..'.}.b.k.s.H.P.=+`.%+#+$+*+*+*+*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*+*+*+*+#+%+`.=+P.H.s.k.b.}.)...R C s i 9 [ ~ ; ",
-"; ~ [ 9 h s B P .'.}.a.j.r.G.O.S.Z.@+%+#+&+&+&+&+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+&+&+&+&+%+@+Z.S.O.G.r.j.a.}.'. .Q C s h 9 [ ~ ; ",
-"; ~ [ 9 h s A O .,.[.9..+q.++J.Y.S.Z.`.@+#+#+#+#+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+#+#+#+#+`.Z.S.Y.J.++q.i.9.[.,. .Q A s h 9 [ ~ ; ",
-"; ~ [ 8 g r A O Z B+:.8.h.p.n+H.P.Y.S.=+Z.@+@+@+@+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+@+@+@+@+=+S.Y.P.H.n+6+h.8.:.B+Z P A r g 8 [ ~ ; ",
-"; ~ < 7 f K.z L.@.;.M.N.g.w.s.E.H.J.O.P.Q.R.R.R.R.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.R.R.R.R.P.O.J.H.E.s.w.g.N.M.;.@.L.z T.f 7 < ~ ; ",
-"- ! : 6 j q s+z.A.-.C.e.a.h. +s.n+++G.H.H.J.J.J.J.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.J.J.J.J.H.G.++n+s. +h.a.e.C.-.A.z.s+q j 6 : ! - ",
-"- ! _ 5 $.F x K n.o.).5.7.b.h.l.p.q.r.s.t.u.u.u.u.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.u.u.u.u.s.r.q.p.w.h.x.7.5.).o.#.K x F $.5 _ ! - ",
-"= ) ( 4 l f.w J S Z ;.4.[.7.a.g.h.i.j.k.l.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.k.j.i.h.g.a.7.[.4.;.` S J w f.l 4 ( ) = ",
-"= ' / 3 a m v B V {.=.3.4.5.6.7.8.9.0.a.b.c.c.c.c.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.c.c.c.c.a.0.9.8.7.e.5.4.3.=.{.V B v m a 3 / ' = ",
-"* ] ^ 2 ].g q x U Q A.o.;.'.C.'+:.[.}.}.|.6.6.6.6.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.6.6.6.6.}.}.[.:.M.C.).;.o.A.Q U x q g ].2 ^ ] * ",
-"& > { < 0 $.%.G z &.Q *.Z =.-.;.>.,.'.'.).!.!.!.!.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.!.!.!.!.'.'.,.>.;.-.=.Z {.Q K z G %.$.0 < { > & ",
-"% - ) 1 3 k g F T z U V R W X Y Z ` . ...+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+. . .` Z @.X #.R V U z T F g k 3 1 ) - % ",
-"$ = ] ^ [ 5 E i F G H I J K L M N O P P Q R R R R S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S R R R R P P O N M L K J I x G F i E 5 [ ^ ] = $ ",
-"# & ; ! / 2 6 u g n p v w x y z A A B B C C C C C D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D C C C C C B A A z y x w v p n g u 6 2 / ! ; & # ",
-"@ $ = , { ( 2 0 _+c g m %.F p K.r s s t t t t t t v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v t t t t t s s r K.p F %.m g c _+0 2 ( { , = $ @ ",
-"+ # % - , ~ 1 [ 3 0 9 a l $.j e g g h h h i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i h h g g e j $.l a 9 0 3 [ 1 ~ ] - % # + ",
-". + # & - , ! | 1 < 2 3 4 5 6 7 7 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 7 7 6 5 4 3 2 < 1 | ! , - & # + . ",
-" . @ # % = ; ] ! { ^ / ( _ : : < < [ [ [ [ [ [ [ } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } [ [ [ [ [ [ < < < : _ ( / ^ { ! ] ; = % # @ . ",
-" . @ # $ & = - > ] ' ) ! ! ~ ~ ~ ~ ~ ~ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ~ ~ ~ ~ ~ ! ! ) ' ] > - = & $ # @ . ",
-" . + @ # $ % & * = = - - ; ; ; ; ; ; ; ; ; ; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ; ; ; ; ; ; ; ; ; - - = = * & % $ # @ + . "};
diff --git a/src/libaudgui/confirm.c b/src/libaudgui/confirm.c
index 1b9c474..2330c07 100644
--- a/src/libaudgui/confirm.c
+++ b/src/libaudgui/confirm.c
@@ -1,6 +1,6 @@
/*
* libaudgui/confirm.c
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* This file is part of Audacious.
*
@@ -19,7 +19,10 @@
* using our public API to be a derived work.
*/
+#include <gtk/gtk.h>
+
#include <audacious/audconfig.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/playlist.h>
@@ -86,9 +89,7 @@ void audgui_confirm_playlist_delete (gint playlist)
button = gtk_button_new_from_stock (GTK_STOCK_YES);
gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0);
-#if GTK_CHECK_VERSION (2, 18, 0)
gtk_widget_set_can_default (button, TRUE);
-#endif
gtk_widget_grab_default (button);
gtk_widget_grab_focus (button);
g_signal_connect ((GObject *) button, "clicked", (GCallback)
@@ -98,3 +99,32 @@ void audgui_confirm_playlist_delete (gint playlist)
gtk_widget_show_all (window);
}
+
+static void rename_cb (GtkDialog * dialog, gint resp, void * list)
+{
+ if (resp == GTK_RESPONSE_ACCEPT && GPOINTER_TO_INT (list) <
+ aud_playlist_count ())
+ aud_playlist_set_title (GPOINTER_TO_INT (list), gtk_entry_get_text
+ ((GtkEntry *) g_object_get_data ((GObject *) dialog, "entry")));
+
+ gtk_widget_destroy ((GtkWidget *) dialog);
+}
+
+void audgui_show_playlist_rename (gint playlist)
+{
+ GtkWidget * dialog = gtk_dialog_new_with_buttons (_("Rename Playlist"),
+ NULL, 0, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT, NULL);
+ gtk_dialog_set_default_response ((GtkDialog *) dialog, GTK_RESPONSE_ACCEPT);
+
+ GtkWidget * entry = gtk_entry_new ();
+ gtk_entry_set_text ((GtkEntry *) entry, aud_playlist_get_title (playlist));
+ gtk_entry_set_activates_default ((GtkEntry *) entry, TRUE);
+ gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *)
+ dialog), entry, FALSE, FALSE, 0);
+ g_object_set_data ((GObject *) dialog, "entry", entry);
+
+ g_signal_connect (dialog, "response", (GCallback) rename_cb, GINT_TO_POINTER
+ (playlist));
+ gtk_widget_show_all (dialog);
+}
diff --git a/src/libaudgui/effects-menu.c b/src/libaudgui/effects-menu.c
index 93fc18f..67cc118 100644
--- a/src/libaudgui/effects-menu.c
+++ b/src/libaudgui/effects-menu.c
@@ -27,13 +27,26 @@
#include "libaudgui-gtk.h"
-static void enable_cb (GtkCheckMenuItem * item, PluginHandle * plugin)
+static gboolean watch_cb (PluginHandle * plugin, GtkCheckMenuItem * item)
{
- aud_effect_plugin_enable (plugin, gtk_check_menu_item_get_active (item));
+ gboolean enabled = aud_plugin_get_enabled (plugin);
+ gtk_check_menu_item_set_active (item, enabled);
GtkWidget * settings = g_object_get_data ((GObject *) item, "settings");
if (settings != NULL)
- gtk_widget_set_sensitive (settings, gtk_check_menu_item_get_active (item));
+ gtk_widget_set_sensitive (settings, enabled);
+
+ return TRUE;
+}
+
+static void enable_cb (GtkCheckMenuItem * item, PluginHandle * plugin)
+{
+ aud_plugin_enable (plugin, gtk_check_menu_item_get_active (item));
+}
+
+static void destroy_cb (GtkCheckMenuItem * item, PluginHandle * plugin)
+{
+ aud_plugin_remove_watch (plugin, (PluginForEachFunc) watch_cb, item);
}
static void settings_cb (GtkMenuItem * settings, PluginHandle * plugin)
@@ -53,7 +66,9 @@ static gboolean add_item_cb (PluginHandle * plugin, GtkWidget * menu)
gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item,
aud_plugin_get_enabled (plugin));
gtk_menu_shell_append ((GtkMenuShell *) menu, item);
+ aud_plugin_add_watch (plugin, (PluginForEachFunc) watch_cb, item);
g_signal_connect (item, "toggled", (GCallback) enable_cb, plugin);
+ g_signal_connect (item, "destroy", (GCallback) destroy_cb, plugin);
gtk_widget_show (item);
if (aud_plugin_has_configure (plugin))
diff --git a/src/libaudgui/icons-stock.c b/src/libaudgui/icons-stock.c
index c96daf3..fd25c94 100644
--- a/src/libaudgui/icons-stock.c
+++ b/src/libaudgui/icons-stock.c
@@ -23,21 +23,25 @@
#include <gdk/gdk.h>
#include <gtk/gtk.h>
+#include <audacious/misc.h>
-static void
-load_stock_icon(gchar *id, gchar *filename, GtkIconFactory *iconfactory)
+static void load_stock_icon (gchar * id, gchar * filename,
+ GtkIconFactory * iconfactory)
{
- GtkIconSet *iconset;
- GdkPixbuf *pixbuf;
+ gchar * path = g_strdup_printf ("%s/images/%s",
+ aud_get_path (AUD_PATH_DATA_DIR), filename);
- pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
+ GdkPixbuf * pixbuf = gdk_pixbuf_new_from_file (path, NULL);
if (pixbuf == NULL)
- return;
+ goto ERR;
- iconset = gtk_icon_set_new_from_pixbuf(pixbuf);
+ GtkIconSet * iconset = gtk_icon_set_new_from_pixbuf(pixbuf);
g_object_unref(pixbuf);
gtk_icon_factory_add(iconfactory, id, iconset);
+
+ERR:
+ g_free (path);
}
void
@@ -46,14 +50,13 @@ audgui_register_stock_icons(void)
GtkIconFactory *iconfactory = gtk_icon_factory_new();
load_stock_icon(AUD_STOCK_PLAYLIST,
- DATA_DIR "/images/menu_playlist.png", iconfactory);
+ "menu_playlist.png", iconfactory);
load_stock_icon(AUD_STOCK_PLUGIN,
- DATA_DIR "/images/menu_plugin.png", iconfactory);
+ "menu_plugin.png", iconfactory);
load_stock_icon(AUD_STOCK_QUEUETOGGLE,
- DATA_DIR "/images/menu_queue_toggle.png", iconfactory);
+ "menu_queue_toggle.png", iconfactory);
load_stock_icon(AUD_STOCK_RANDOMIZEPL,
- DATA_DIR "/images/menu_randomize_playlist.png", iconfactory);
-
+ "menu_randomize_playlist.png", iconfactory);
gtk_icon_factory_add_default( iconfactory );
g_object_unref( iconfactory );
diff --git a/src/libaudgui/iface-menu.c b/src/libaudgui/iface-menu.c
index 3a9b76d..24b2834 100644
--- a/src/libaudgui/iface-menu.c
+++ b/src/libaudgui/iface-menu.c
@@ -28,13 +28,12 @@
static void switch_cb (GtkMenuItem * item, PluginHandle * plugin)
{
if (gtk_check_menu_item_get_active ((GtkCheckMenuItem *) item))
- aud_iface_plugin_set_active (plugin);
+ aud_plugin_enable (plugin, TRUE);
}
typedef struct {
GtkWidget * menu;
GSList * group;
- PluginHandle * active_plugin;
} IfaceMenuAddState;
static gboolean add_item_cb (PluginHandle * plugin, IfaceMenuAddState * state)
@@ -42,7 +41,7 @@ static gboolean add_item_cb (PluginHandle * plugin, IfaceMenuAddState * state)
GtkWidget * item = gtk_radio_menu_item_new_with_label (state->group,
aud_plugin_get_name (plugin));
state->group = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *) item);
- if (plugin == state->active_plugin)
+ if (aud_plugin_get_enabled (plugin))
gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item, TRUE);
gtk_menu_shell_append ((GtkMenuShell *) state->menu, item);
g_signal_connect (item, "activate", (GCallback) switch_cb, plugin);
@@ -52,8 +51,7 @@ static gboolean add_item_cb (PluginHandle * plugin, IfaceMenuAddState * state)
GtkWidget * audgui_create_iface_menu (void)
{
- IfaceMenuAddState state = {gtk_menu_new (), NULL,
- aud_iface_plugin_get_active ()};
+ IfaceMenuAddState state = {gtk_menu_new (), NULL};
aud_plugin_for_each (PLUGIN_TYPE_IFACE, (PluginForEachFunc) add_item_cb,
& state);
return state.menu;
diff --git a/src/libaudgui/infopopup.c b/src/libaudgui/infopopup.c
index 55110af..f9c42eb 100644
--- a/src/libaudgui/infopopup.c
+++ b/src/libaudgui/infopopup.c
@@ -25,8 +25,8 @@
#include <string.h>
#include <audacious/audconfig.h>
-#include <audacious/compatibility.h>
#include <audacious/drct.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/misc.h>
#include <audacious/playlist.h>
@@ -35,7 +35,16 @@
#include "libaudgui.h"
#include "libaudgui-gtk.h"
-#define DEFAULT_ARTWORK DATA_DIR "/images/audio.png"
+static const gchar * get_default_artwork (void)
+{
+ static gchar * path = NULL;
+ if (! path)
+ path = g_strdup_printf ("%s/images/audio.png",
+ aud_get_path (AUD_PATH_DATA_DIR));
+ return path;
+}
+
+#define DEFAULT_ARTWORK (get_default_artwork ())
static GtkWidget * infopopup = NULL;
@@ -246,8 +255,6 @@ static void infopopup_create (void)
/* track progress */
infopopup_progress = gtk_progress_bar_new ();
- gtk_progress_bar_set_orientation ((GtkProgressBar *) infopopup_progress,
- GTK_PROGRESS_LEFT_TO_RIGHT);
gtk_progress_bar_set_text ((GtkProgressBar *) infopopup_progress, "");
gtk_table_attach ((GtkTable *) infopopup_data_table, infopopup_progress, 0,
2, 7, 8, GTK_FILL, 0, 0, 0);
diff --git a/src/libaudgui/infowin.c b/src/libaudgui/infowin.c
index c103aba..13d1c47 100644
--- a/src/libaudgui/infowin.c
+++ b/src/libaudgui/infowin.c
@@ -26,6 +26,7 @@
#include <stdarg.h>
#include <audacious/audconfig.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/misc.h>
#include <audacious/playlist.h>
@@ -36,7 +37,7 @@
#include "libaudgui.h"
#include "libaudgui-gtk.h"
-#define STATUS_TIMEOUT 3000
+#define AUDGUI_STATUS_TIMEOUT 3000
static GtkWidget * infowin = NULL;
@@ -51,14 +52,11 @@ static GtkWidget * entry_genre;
static GtkWidget * image_artwork;
-static GtkWidget * image_fileicon;
static GtkWidget * label_format_name;
static GtkWidget * label_quality;
static GtkWidget * label_bitrate;
static GtkWidget * btn_apply;
static GtkWidget * label_mini_status;
-static GtkWidget * arrow_rawdata;
-static GtkWidget * treeview_rawdata;
enum
{
@@ -68,55 +66,53 @@ enum
};
static gchar * current_file = NULL;
-static InputPlugin * current_decoder = NULL;
+static PluginHandle * current_decoder = NULL;
static gboolean can_write = FALSE, something_changed = FALSE;
-static const gchar * genre_table[] =
-{
- N_("Blues"), N_("Classic Rock"), N_("Country"), N_("Dance"),
- N_("Disco"), N_("Funk"), N_("Grunge"), N_("Hip-Hop"),
- N_("Jazz"), N_("Metal"), N_("New Age"), N_("Oldies"),
- N_("Other"), N_("Pop"), N_("R&B"), N_("Rap"), N_("Reggae"),
- N_("Rock"), N_("Techno"), N_("Industrial"), N_("Alternative"),
- N_("Ska"), N_("Death Metal"), N_("Pranks"), N_("Soundtrack"),
- N_("Euro-Techno"), N_("Ambient"), N_("Trip-Hop"), N_("Vocal"),
- N_("Jazz+Funk"), N_("Fusion"), N_("Trance"), N_("Classical"),
- N_("Instrumental"), N_("Acid"), N_("House"), N_("Game"),
- N_("Sound Clip"), N_("Gospel"), N_("Noise"), N_("AlternRock"),
- N_("Bass"), N_("Soul"), N_("Punk"), N_("Space"),
- N_("Meditative"), N_("Instrumental Pop"),
- N_("Instrumental Rock"), N_("Ethnic"), N_("Gothic"),
- N_("Darkwave"), N_("Techno-Industrial"), N_("Electronic"),
- N_("Pop-Folk"), N_("Eurodance"), N_("Dream"),
- N_("Southern Rock"), N_("Comedy"), N_("Cult"),
- N_("Gangsta Rap"), N_("Top 40"), N_("Christian Rap"),
- N_("Pop/Funk"), N_("Jungle"), N_("Native American"),
- N_("Cabaret"), N_("New Wave"), N_("Psychedelic"), N_("Rave"),
- N_("Showtunes"), N_("Trailer"), N_("Lo-Fi"), N_("Tribal"),
- N_("Acid Punk"), N_("Acid Jazz"), N_("Polka"), N_("Retro"),
- N_("Musical"), N_("Rock & Roll"), N_("Hard Rock"), N_("Folk"),
- N_("Folk/Rock"), N_("National Folk"), N_("Swing"),
- N_("Fast-Fusion"), N_("Bebob"), N_("Latin"), N_("Revival"),
- N_("Celtic"), N_("Bluegrass"), N_("Avantgarde"),
- N_("Gothic Rock"), N_("Progressive Rock"),
- N_("Psychedelic Rock"), N_("Symphonic Rock"), N_("Slow Rock"),
- N_("Big Band"), N_("Chorus"), N_("Easy Listening"),
- N_("Acoustic"), N_("Humour"), N_("Speech"), N_("Chanson"),
- N_("Opera"), N_("Chamber Music"), N_("Sonata"), N_("Symphony"),
- N_("Booty Bass"), N_("Primus"), N_("Porn Groove"),
- N_("Satire"), N_("Slow Jam"), N_("Club"), N_("Tango"),
- N_("Samba"), N_("Folklore"), N_("Ballad"), N_("Power Ballad"),
- N_("Rhythmic Soul"), N_("Freestyle"), N_("Duet"),
- N_("Punk Rock"), N_("Drum Solo"), N_("A Cappella"),
- N_("Euro-House"), N_("Dance Hall"), N_("Goa"),
- N_("Drum & Bass"), N_("Club-House"), N_("Hardcore"),
- N_("Terror"), N_("Indie"), N_("BritPop"), N_("Negerpunk"),
- N_("Polsk Punk"), N_("Beat"), N_("Christian Gangsta Rap"),
- N_("Heavy Metal"), N_("Black Metal"), N_("Crossover"),
- N_("Contemporary Christian"), N_("Christian Rock"),
- N_("Merengue"), N_("Salsa"), N_("Thrash Metal"),
- N_("Anime"), N_("JPop"), N_("Synthpop")
-};
+/* This is by no means intended to be a complete list. If it is not short, it
+ * is useless: scrolling through ten pages of dropdown list is more work than
+ * typing out the genre. */
+
+static const gchar * genre_table[] = {
+ N_("Acid Jazz"),
+ N_("Acid Rock"),
+ N_("Ambient"),
+ N_("Bebop"),
+ N_("Bluegrass"),
+ N_("Blues"),
+ N_("Chamber Music"),
+ N_("Classical"),
+ N_("Country"),
+ N_("Death Metal"),
+ N_("Disco"),
+ N_("Easy Listening"),
+ N_("Folk"),
+ N_("Funk"),
+ N_("Gangsta Rap"),
+ N_("Gospel"),
+ N_("Grunge"),
+ N_("Hard Rock"),
+ N_("Heavy Metal"),
+ N_("Hip-hop"),
+ N_("House"),
+ N_("Jazz"),
+ N_("Jungle"),
+ N_("Metal"),
+ N_("New Age"),
+ N_("New Wave"),
+ N_("Noise"),
+ N_("Pop"),
+ N_("Punk Rock"),
+ N_("Rap"),
+ N_("Reggae"),
+ N_("Rock"),
+ N_("Rock and Roll"),
+ N_("Rhythm and Blues"),
+ N_("Ska"),
+ N_("Soul"),
+ N_("Swing"),
+ N_("Techno"),
+ N_("Trip-hop")};
static void set_entry_str_from_field (GtkWidget * widget, const Tuple * tuple,
gint fieldn, gboolean editable)
@@ -181,18 +177,14 @@ static void infowin_label_set_text (GtkWidget * widget, const gchar * text)
gtk_label_set_use_markup ((GtkLabel *) widget, TRUE);
}
-static void infowin_entry_set_image (GtkWidget * widget, const char * text)
+static void infowin_entry_set_image (GtkWidget * widget, gint list, gint entry)
{
- GdkPixbuf * pixbuf;
-
- pixbuf = gdk_pixbuf_new_from_file (text, NULL);
- g_return_if_fail (pixbuf != NULL);
-
- if (strcmp (DATA_DIR "/images/audio.png", text))
- audgui_pixbuf_scale_within (& pixbuf, aud_cfg->filepopup_pixelsize);
+ GdkPixbuf * p = audgui_pixbuf_for_entry (list, entry);
+ g_return_if_fail (p);
- gtk_image_set_from_pixbuf ((GtkImage *) widget, pixbuf);
- g_object_unref (pixbuf);
+ audgui_pixbuf_scale_within (& p, aud_cfg->filepopup_pixelsize);
+ gtk_image_set_from_pixbuf ((GtkImage *) widget, p);
+ g_object_unref ((GObject *) p);
}
static void clear_infowin (void)
@@ -221,8 +213,7 @@ static void clear_infowin (void)
something_changed = FALSE;
can_write = FALSE;
gtk_widget_set_sensitive (btn_apply, FALSE);
-
- infowin_entry_set_image (image_artwork, DATA_DIR "/images/audio.png");
+ gtk_image_clear ((GtkImage *) image_artwork);
}
static void entry_changed (GtkEditable * editable, void * unused)
@@ -252,7 +243,7 @@ static void ministatus_display_message (const gchar * text)
gtk_label_set_use_markup ((GtkLabel *) label_mini_status, TRUE);
g_free (tmp);
- g_timeout_add (STATUS_TIMEOUT, (GSourceFunc) ministatus_timeout_proc,
+ g_timeout_add (AUDGUI_STATUS_TIMEOUT, (GSourceFunc) ministatus_timeout_proc,
label_mini_status);
}
@@ -281,80 +272,6 @@ static void infowin_update_tuple (void * unused)
mowgli_object_unref (tuple);
}
-/**
- * Looks up an icon from a NULL-terminated list of icon names.
- *
- * size: the requested size
- * name: the default name
- * ... : a NULL-terminated list of alternates
- */
-static GdkPixbuf * themed_icon_lookup (gint size, const gchar * name, ...)
-{
- GtkIconTheme * icon_theme;
- GdkPixbuf * pixbuf;
- const gchar * n;
- va_list par;
-
- icon_theme = gtk_icon_theme_get_default ();
- pixbuf = gtk_icon_theme_load_icon (icon_theme, name, size, 0, NULL);
-
- if (pixbuf != NULL)
- return pixbuf;
-
- /* fallback */
- va_start (par, name);
-
- while ((n = va_arg (par, const gchar *)) != NULL)
- {
- pixbuf = gtk_icon_theme_load_icon (icon_theme, n, size, 0, NULL);
-
- if (pixbuf)
- {
- va_end (par);
- return pixbuf;
- }
- }
-
- va_end (par);
- return NULL;
-}
-
-/**
- * Intelligently looks up an icon for a mimetype. Supports
- * HIDEOUSLY BROKEN gnome icon naming scheme too.
- *
- * size : the requested size
- * mime_type: the mime type.
- */
-static GdkPixbuf * mime_icon_lookup (gint size, const gchar * mime_type)
-{
- gchar * mime_as_is; /* audio-x-mp3 */
- gchar * mime_gnome; /* gnome-mime-audio-x-mp3 */
- gchar * mime_generic; /* audio-x-generic */
- gchar * mime_gnome_generic; /* gnome-mime-audio */
- GdkPixbuf * icon = NULL;
- gchar * * s = g_strsplit (mime_type, "/", 2);
-
- if (s[1] != NULL)
- {
- mime_as_is = g_strdup_printf ("%s-%s", s[0], s[1]);
- mime_gnome = g_strdup_printf ("gnome-mime-%s-%s", s[0], s[1]);
- mime_generic = g_strdup_printf ("%s-x-generic", s[0]);
- mime_gnome_generic = g_strdup_printf ("gnome-mime-%s", s[0]);
-
- icon = themed_icon_lookup (size, mime_as_is, mime_gnome, mime_generic,
- mime_gnome_generic, s[0], NULL); /* s[0] is category */
-
- g_free (mime_gnome_generic);
- g_free (mime_generic);
- g_free (mime_gnome);
- g_free (mime_as_is);
- }
-
- g_strfreev (s);
- return icon;
-}
-
gboolean genre_fill (GtkWidget * combo)
{
GList * list = NULL;
@@ -367,7 +284,7 @@ gboolean genre_fill (GtkWidget * combo)
list = g_list_sort (list, (GCompareFunc) strcmp);
for (node = list; node != NULL; node = node->next)
- gtk_combo_box_append_text ((GtkComboBox *) combo, node->data);
+ gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, node->data);
g_list_free (list);
return FALSE;
@@ -378,9 +295,7 @@ void create_infowin (void)
GtkWidget * hbox;
GtkWidget * hbox_status_and_bbox;
GtkWidget * vbox0;
- GtkWidget * vbox1;
GtkWidget * vbox2;
- GtkWidget * vbox3;
GtkWidget * label_title;
GtkWidget * label_artist;
GtkWidget * label_album;
@@ -388,8 +303,6 @@ void create_infowin (void)
GtkWidget * label_genre;
GtkWidget * label_year;
GtkWidget * label_track;
- GtkWidget * label_location;
- GtkWidget * label_general;
GtkWidget * label_format;
GtkWidget * label_quality_label;
GtkWidget * label_bitrate_label;
@@ -399,10 +312,6 @@ void create_infowin (void)
GtkWidget * bbox_close;
GtkWidget * btn_close;
GtkWidget * alignment;
- GtkWidget * separator;
- GtkWidget * scrolledwindow;
- GtkTreeViewColumn * column;
- GtkCellRenderer * renderer;
infowin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width ((GtkContainer *) infowin, 6);
@@ -416,47 +325,25 @@ void create_infowin (void)
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start ((GtkBox *) vbox0, hbox, TRUE, TRUE, 0);
- image_artwork = gtk_image_new ();
- gtk_box_pack_start ((GtkBox *) hbox, image_artwork, FALSE, FALSE, 0);
- gtk_misc_set_alignment ((GtkMisc *) image_artwork, 0.5, 0);
- gtk_image_set_from_file ((GtkImage *) image_artwork, DATA_DIR
- "/images/audio.png");
- separator = gtk_vseparator_new ();
- gtk_box_pack_start ((GtkBox *) hbox, separator, FALSE, FALSE, 0);
-
- vbox1 = gtk_vbox_new (FALSE, 0);
- gtk_box_pack_start ((GtkBox *) hbox, vbox1, TRUE, TRUE, 0);
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox1, alignment, TRUE, TRUE, 0);
+ vbox2 = gtk_vbox_new (FALSE, 6);
+ gtk_box_pack_start ((GtkBox *) hbox, vbox2, TRUE, TRUE, 0);
- vbox2 = gtk_vbox_new (FALSE, 0);
- gtk_container_add ((GtkContainer *) alignment, vbox2);
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox1, alignment, TRUE, TRUE, 0);
-
- vbox3 = gtk_vbox_new(FALSE, 0);
- gtk_container_add ((GtkContainer *) alignment, vbox3);
-
- label_general = gtk_label_new (_("<span size=\"small\">General</span>"));
- gtk_box_pack_start ((GtkBox *) vbox2, label_general, FALSE, FALSE, 0);
- gtk_label_set_use_markup ((GtkLabel *) label_general, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_general, 0, 0.5);
+ image_artwork = gtk_image_new ();
+ gtk_box_pack_start ((GtkBox *) vbox2, image_artwork, TRUE, TRUE, 0);
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 6, 6, 0, 0);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
+ location_text = gtk_label_new ("");
+ gtk_widget_set_size_request (location_text, 200, -1);
+ gtk_label_set_line_wrap ((GtkLabel *) location_text, TRUE);
+ gtk_label_set_line_wrap_mode ((GtkLabel *) location_text,
+ PANGO_WRAP_WORD_CHAR);
+ gtk_label_set_selectable ((GtkLabel *) location_text, TRUE);
+ gtk_box_pack_start ((GtkBox *) vbox2, location_text, FALSE, FALSE, 0);
codec_hbox = gtk_hbox_new (FALSE, 6);
- gtk_container_add ((GtkContainer *) alignment, codec_hbox);
-
- image_fileicon = gtk_image_new_from_stock (GTK_STOCK_MISSING_IMAGE,
- GTK_ICON_SIZE_DIALOG);
- gtk_box_pack_start ((GtkBox *) codec_hbox, image_fileicon, FALSE, FALSE, 0);
+ gtk_box_pack_start ((GtkBox *) vbox2, codec_hbox, FALSE, FALSE, 0);
codec_table = gtk_table_new(3, 2, FALSE);
- gtk_table_set_row_spacings ((GtkTable *) codec_table, 6);
+ gtk_table_set_row_spacings ((GtkTable *) codec_table, 3);
gtk_table_set_col_spacings ((GtkTable *) codec_table, 12);
gtk_box_pack_start ((GtkBox *) codec_hbox, codec_table, FALSE, FALSE, 0);
@@ -494,6 +381,9 @@ void create_infowin (void)
gtk_table_attach ((GtkTable *) codec_table, label_bitrate, 1, 2, 2, 3,
GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ vbox2 = gtk_vbox_new (FALSE, 0);
+ gtk_box_pack_start ((GtkBox *) hbox, vbox2, TRUE, TRUE, 0);
+
label_title = gtk_label_new (_("<span size=\"small\">Title</span>"));
gtk_box_pack_start ((GtkBox *) vbox2, label_title, FALSE, FALSE, 0);
gtk_label_set_use_markup ((GtkLabel *) label_title, TRUE);
@@ -550,8 +440,8 @@ void create_infowin (void)
alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0);
- entry_genre = gtk_combo_box_entry_new_text ();
+ entry_genre = gtk_combo_box_text_new_with_entry ();
gtk_container_add ((GtkContainer *) alignment, entry_genre);
g_signal_connect (entry_genre, "changed", (GCallback) entry_changed, NULL);
g_idle_add ((GSourceFunc) genre_fill, entry_genre);
@@ -585,77 +475,6 @@ void create_infowin (void)
GTK_FILL, 0, 0, 0);
g_signal_connect (entry_track, "changed", (GCallback) entry_changed, NULL);
- label_location = gtk_label_new (_("<span size=\"small\">Location</span>"));
- gtk_box_pack_start ((GtkBox *) vbox2, label_location, FALSE, FALSE, 0);
- gtk_label_set_use_markup ((GtkLabel *) label_location, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_location, 0, 0.5);
-
- alignment = gtk_alignment_new (0, 0, 0, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 3, 6, 25, 0);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
-
- location_text = gtk_label_new ("");
- gtk_widget_set_size_request (location_text, 375, -1);
- gtk_label_set_line_wrap ((GtkLabel *) location_text, TRUE);
-#if GTK_CHECK_VERSION (2, 10, 0)
- gtk_label_set_line_wrap_mode ((GtkLabel *) location_text,
- PANGO_WRAP_WORD_CHAR);
-#endif
- gtk_label_set_selectable ((GtkLabel *) location_text, TRUE);
- gtk_container_add ((GtkContainer *) alignment, location_text);
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_container_add ((GtkContainer *) alignment, hbox);
- gtk_box_pack_start ((GtkBox *) vbox3, alignment, TRUE, TRUE, 0);
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_alignment_set_padding ((GtkAlignment *) (alignment), 0, 6, 0, 0);
- arrow_rawdata = gtk_expander_new
- (_("<span size=\"small\">Raw Metadata</span>"));
- gtk_expander_set_use_markup ((GtkExpander *) arrow_rawdata, TRUE);
- gtk_container_add ((GtkContainer *) alignment, arrow_rawdata);
- gtk_box_pack_start ((GtkBox *) hbox, alignment, TRUE, TRUE, 0);
-
- scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scrolledwindow,
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scrolledwindow,
- GTK_SHADOW_IN);
- gtk_container_add ((GtkContainer *) arrow_rawdata, scrolledwindow);
-
- treeview_rawdata = gtk_tree_view_new ();
- gtk_container_add ((GtkContainer *) scrolledwindow, treeview_rawdata);
- gtk_tree_view_set_rules_hint ((GtkTreeView *) treeview_rawdata, TRUE);
- gtk_tree_view_set_reorderable ((GtkTreeView *) treeview_rawdata, TRUE);
- gtk_widget_set_size_request (treeview_rawdata, -1, 130);
-
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_title (column, _("Key"));
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_column_set_spacing (column, 4);
- gtk_tree_view_column_set_resizable (column, FALSE);
- gtk_tree_view_column_set_fixed_width (column, 50);
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes (column, renderer, "text", RAWDATA_KEY,
- NULL);
- gtk_tree_view_append_column ((GtkTreeView *) treeview_rawdata, column);
-
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_title (column, _("Value"));
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_column_set_spacing (column, 4);
- gtk_tree_view_column_set_resizable (column, FALSE);
- gtk_tree_view_column_set_fixed_width (column, 50);
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes (column, renderer, "text",
- RAWDATA_VALUE, NULL);
- gtk_tree_view_append_column ((GtkTreeView *) treeview_rawdata, column);
-
hbox_status_and_bbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start ((GtkBox *) vbox0, hbox_status_and_bbox, FALSE, FALSE, 0);
@@ -686,73 +505,13 @@ void create_infowin (void)
audgui_hide_on_escape (infowin);
gtk_widget_show_all (vbox0);
+ gtk_widget_grab_focus (entry_title);
}
-/* Converts filenames (in place) for easy reading, thus:
- *
- * file:///home/me/Music/My song.ogg -> Music
- * My song.ogg
- *
- * file:///media/disk/My song.ogg -> /
- * media
- * disk
- * My song.ogg
- */
-static gchar * easy_read_filename (gchar * file)
-{
- const gchar * home;
- gint len;
-
- if (strncmp (file, "file:///", 8))
- return file;
-
- home = getenv ("HOME");
- len = (home == NULL) ? 0 : strlen (home);
- len = (len > 0 && home[len - 1] == '/') ? len - 1 : len;
-
- if (len > 0 && ! strncmp (file + 7, home, len) && file[len + 7] == '/')
- {
- string_replace_char (file + len + 8, '/', '\n');
- return file + len + 8;
- }
-
- string_replace_char (file + 7, '/', '\n');
- return file + 6;
-}
-
-static gboolean set_image_from_album_art (const gchar * filename, InputPlugin *
- decoder)
+static void infowin_show (gint list, gint entry, const gchar * filename,
+ const Tuple * tuple, PluginHandle * decoder, gboolean updating_enabled)
{
- GdkPixbuf * pixbuf = NULL;
- void * data;
- gint size;
-
- if (aud_file_read_image (filename, decoder, & data, & size))
- {
- pixbuf = audgui_pixbuf_from_data (data, size);
- g_free (data);
- }
-
- if (pixbuf == NULL)
- return FALSE;
-
- audgui_pixbuf_scale_within (& pixbuf, aud_cfg->filepopup_pixelsize);
- gtk_image_set_from_pixbuf ((GtkImage *) image_artwork, pixbuf);
- g_object_unref (pixbuf);
- return TRUE;
-}
-
-static void infowin_show (const gchar * filename, const Tuple * tuple,
- InputPlugin * decoder, gboolean updating_enabled)
-{
- const gchar * string;
gchar * tmp;
- GdkPixbuf * icon;
- GtkTreeIter iter;
- GtkListStore * store;
- mowgli_dictionary_iteration_state_t state;
- TupleValue * tvalue;
- gint i;
if (infowin == NULL)
create_infowin ();
@@ -772,18 +531,8 @@ static void infowin_show (const gchar * filename, const Tuple * tuple,
set_entry_str_from_field (gtk_bin_get_child ((GtkBin *) entry_genre), tuple,
FIELD_GENRE, updating_enabled);
- tmp = g_strdup (filename);
- string_decode_percent (tmp);
-
- /* Convert invalid UTF-8 URI's quietly. */
- if (! g_utf8_validate (tmp, -1, NULL))
- {
- gchar * copy = str_to_utf8 (tmp);
- g_free (tmp);
- tmp = copy;
- }
-
- gtk_label_set_text ((GtkLabel *) location_text, easy_read_filename (tmp));
+ tmp = uri_to_display (filename);
+ gtk_label_set_text ((GtkLabel *) location_text, tmp);
g_free (tmp);
set_entry_int_from_field (entry_year, tuple, FIELD_YEAR, updating_enabled);
@@ -805,69 +554,7 @@ static void infowin_show (const gchar * filename, const Tuple * tuple,
else
infowin_label_set_text (label_bitrate, NULL);
- string = tuple_get_string (tuple, FIELD_MIMETYPE, NULL);
- icon = mime_icon_lookup (48, string != NULL ? string : "audio/x-generic");
-
- if (icon != NULL)
- {
- gtk_image_set_from_pixbuf ((GtkImage *) image_fileicon, icon);
- g_object_unref (icon);
- }
-
- if (! set_image_from_album_art (filename, decoder))
- {
- tmp = aud_get_associated_image_file (filename);
-
- if (tmp != NULL)
- {
- infowin_entry_set_image (image_artwork, tmp);
- g_free (tmp);
- }
- }
-
- store = gtk_list_store_new (RAWDATA_N_COLS, G_TYPE_STRING, G_TYPE_STRING);
-
- for (i = 0; i < FIELD_LAST; i ++)
- {
- gchar * value;
-
- if (tuple->values[i] == NULL)
- continue;
-
- if (tuple->values[i]->type == TUPLE_INT)
- value = g_strdup_printf ("%d", tuple->values[i]->value.integer);
- else if (tuple->values[i]->value.string != NULL)
- value = g_strdup (tuple->values[i]->value.string);
- else
- continue;
-
- gtk_list_store_append (store, & iter);
- gtk_list_store_set (store, & iter, RAWDATA_KEY, tuple_fields[i].name,
- RAWDATA_VALUE, value, -1);
- g_free (value);
- }
-
- /* non-standard values are stored in a dictionary. */
- MOWGLI_DICTIONARY_FOREACH (tvalue, & state, tuple->dict)
- {
- gchar * value;
-
- if (tvalue->type == TUPLE_INT)
- value = g_strdup_printf ("%d", tvalue->value.integer);
- else if (tvalue->value.string != NULL)
- value = g_strdup (tvalue->value.string);
- else
- continue;
-
- gtk_list_store_append (store, & iter);
- gtk_list_store_set (store, & iter, RAWDATA_KEY, state.cur->key,
- RAWDATA_VALUE, value, -1);
- g_free (value);
- }
-
- gtk_tree_view_set_model ((GtkTreeView *) treeview_rawdata, (GtkTreeModel *)
- store);
- g_object_unref (store);
+ infowin_entry_set_image (image_artwork, list, entry);
gtk_window_present ((GtkWindow *) infowin);
}
@@ -877,7 +564,8 @@ void audgui_infowin_show (gint playlist, gint entry)
const gchar * filename = aud_playlist_entry_get_filename (playlist, entry);
g_return_if_fail (filename != NULL);
- InputPlugin * decoder = aud_file_find_decoder (filename, FALSE);
+ PluginHandle * decoder = aud_playlist_entry_get_decoder (playlist, entry,
+ FALSE);
if (decoder == NULL)
return;
@@ -895,8 +583,8 @@ void audgui_infowin_show (gint playlist, gint entry)
return;
}
- infowin_show (filename, tuple, decoder, aud_file_can_write_tuple (filename,
- decoder));
+ infowin_show (playlist, entry, filename, tuple, decoder,
+ aud_file_can_write_tuple (filename, decoder));
}
void audgui_infowin_show_current (void)
diff --git a/src/libaudgui/libaudgui-gtk.h b/src/libaudgui/libaudgui-gtk.h
index f9316eb..f093851 100644
--- a/src/libaudgui/libaudgui-gtk.h
+++ b/src/libaudgui/libaudgui-gtk.h
@@ -34,17 +34,6 @@ void audgui_playlist_manager_update(void);
void audgui_playlist_manager_ui_show(GtkWidget *mainwin);
void audgui_playlist_manager_destroy(void);
-/* library-store.c */
-enum
-{
- AUDGUI_LIBRARY_STORE_TITLE, /* G_TYPE_STRING */
- AUDGUI_LIBRARY_STORE_FONT_WEIGHT, /* PANGO_TYPE_WEIGHT */
- AUDGUI_LIBRARY_STORE_ENTRY_COUNT, /* G_TYPE_INT */
- AUDGUI_LIBRARY_STORE_COLUMNS
-};
-
-GtkTreeModel * audgui_get_library_store (void);
-
/* util.c */
void audgui_hide_on_delete (GtkWidget * widget);
void audgui_hide_on_escape (GtkWidget * widget);
@@ -54,7 +43,8 @@ void audgui_simple_message (GtkWidget * * widget, GtkMessageType type,
void audgui_connect_check_box (GtkWidget * box, gboolean * setting);
GdkPixbuf * audgui_pixbuf_from_data (void * data, gint size);
-GdkPixbuf * audgui_pixbuf_for_file (const gchar * filename);
+GdkPixbuf * audgui_pixbuf_for_entry (gint playlist, gint entry);
+GdkPixbuf * audgui_pixbuf_for_current (void);
void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, gint size);
#endif
diff --git a/src/libaudgui/libaudgui.h b/src/libaudgui/libaudgui.h
index 7fc4b1c..d96c933 100644
--- a/src/libaudgui/libaudgui.h
+++ b/src/libaudgui/libaudgui.h
@@ -45,6 +45,7 @@ void audgui_hide_about_window(void);
/* confirm.c */
void audgui_confirm_playlist_delete (gint playlist);
+void audgui_show_playlist_rename (gint playlist);
/* equalizer.c */
void audgui_show_equalizer_window (void);
diff --git a/src/libaudgui/library-store.c b/src/libaudgui/library-store.c
deleted file mode 100644
index 4439e44..0000000
--- a/src/libaudgui/library-store.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * libaudgui/library-store.c
- * Copyright 2010 John Lindgren
- *
- * This file is part of Audacious.
- *
- * Audacious is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, version 2 or version 3 of the License.
- *
- * Audacious is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Audacious. If not, see <http://www.gnu.org/licenses/>.
- *
- * The Audacious team does not consider modular code linking to Audacious or
- * using our public API to be a derived work.
- */
-
-#include <audacious/playlist.h>
-#include <libaudcore/hook.h>
-
-#include "libaudgui-gtk.h"
-
-typedef GObjectClass LibraryStoreClass;
-
-typedef struct
-{
- GObject parent;
- gint rows, active;
-}
-LibraryStore;
-
-static void library_store_init (LibraryStore * store)
-{
- store->rows = aud_playlist_count ();
- store->active = aud_playlist_get_active ();
-}
-
-static GtkTreeModelFlags library_store_get_flags (GtkTreeModel * model)
-{
- return GTK_TREE_MODEL_LIST_ONLY;
-}
-
-static gint library_store_get_n_columns (GtkTreeModel * model)
-{
- return AUDGUI_LIBRARY_STORE_COLUMNS;
-}
-
-static GType library_store_get_column_type (GtkTreeModel * model, gint column)
-{
- switch (column)
- {
- case AUDGUI_LIBRARY_STORE_TITLE:
- return G_TYPE_STRING;
- case AUDGUI_LIBRARY_STORE_FONT_WEIGHT:
- return PANGO_TYPE_WEIGHT;
- case AUDGUI_LIBRARY_STORE_ENTRY_COUNT:
- return G_TYPE_INT;
- default:
- return G_TYPE_INVALID;
- }
-}
-
-static gboolean library_store_get_iter (GtkTreeModel * model, GtkTreeIter *
- iter, GtkTreePath * path)
-{
- LibraryStore * store = (LibraryStore *) model;
- gint playlist = gtk_tree_path_get_indices (path)[0];
-
- if (playlist < 0 || playlist >= store->rows)
- return FALSE;
-
- iter->user_data = GINT_TO_POINTER (playlist);
- return TRUE;
-}
-
-static GtkTreePath * library_store_get_path (GtkTreeModel * model, GtkTreeIter *
- iter)
-{
- return gtk_tree_path_new_from_indices (GPOINTER_TO_INT (iter->user_data), -1);
-}
-
-static void library_store_get_value (GtkTreeModel * model, GtkTreeIter * iter,
- gint column, GValue * value)
-{
- LibraryStore * store = (LibraryStore *) model;
- gint playlist = GPOINTER_TO_INT (iter->user_data);
-
- switch (column)
- {
- case AUDGUI_LIBRARY_STORE_TITLE:
- g_value_init (value, G_TYPE_STRING);
- g_value_set_string (value, aud_playlist_get_title (playlist));
- break;
- case AUDGUI_LIBRARY_STORE_FONT_WEIGHT:
- g_value_init (value, PANGO_TYPE_WEIGHT);
- g_value_set_enum (value, (playlist == store->active) ? PANGO_WEIGHT_BOLD
- : PANGO_WEIGHT_NORMAL);
- break;
- case AUDGUI_LIBRARY_STORE_ENTRY_COUNT:
- g_value_init (value, G_TYPE_INT);
- g_value_set_int (value, aud_playlist_entry_count (playlist));
- break;
- }
-}
-
-static gboolean library_store_iter_next (GtkTreeModel * model, GtkTreeIter *
- iter)
-{
- if (GPOINTER_TO_INT (iter->user_data) + 1 < aud_playlist_count ())
- {
- iter->user_data = GINT_TO_POINTER (GPOINTER_TO_INT (iter->user_data) + 1);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean library_store_iter_children (GtkTreeModel * model, GtkTreeIter *
- iter, GtkTreeIter * parent)
-{
- if (parent == NULL) /* top level */
- {
- /* there is always at least one playlist */
- iter->user_data = GINT_TO_POINTER (0);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean library_store_iter_has_child (GtkTreeModel * model,
- GtkTreeIter * iter)
-{
- return FALSE;
-}
-
-static gint library_store_iter_n_children (GtkTreeModel * model, GtkTreeIter *
- iter)
-{
- LibraryStore * store = (LibraryStore *) model;
-
- if (iter == NULL) /* top level */
- return store->rows;
-
- return 0;
-}
-
-static gboolean library_store_iter_nth_child (GtkTreeModel * model,
- GtkTreeIter * iter, GtkTreeIter * parent, gint n)
-{
- LibraryStore * store = (LibraryStore *) model;
-
- if (parent != NULL) /* not top level */
- return FALSE;
-
- if (n < 0 || n >= store->rows)
- return FALSE;
-
- iter->user_data = GINT_TO_POINTER (n);
- return TRUE;
-}
-
-static gboolean library_store_iter_parent (GtkTreeModel * model, GtkTreeIter *
- iter, GtkTreeIter * child)
-{
- return FALSE;
-}
-
-static void interface_init (GtkTreeModelIface * interface)
-{
- interface->get_flags = library_store_get_flags;
- interface->get_n_columns = library_store_get_n_columns;
- interface->get_column_type = library_store_get_column_type;
- interface->get_iter = library_store_get_iter;
- interface->get_path = library_store_get_path;
- interface->get_value = library_store_get_value;
- interface->iter_next = library_store_iter_next;
- interface->iter_children = library_store_iter_children;
- interface->iter_has_child = library_store_iter_has_child;
- interface->iter_n_children = library_store_iter_n_children;
- interface->iter_nth_child = library_store_iter_nth_child;
- interface->iter_parent = library_store_iter_parent;
-}
-
-static const GInterfaceInfo interface_info =
-{
- .interface_init = (GInterfaceInitFunc) interface_init,
- .interface_finalize = NULL,
- .interface_data = NULL,
-};
-
-static gboolean library_store_drag_data_get (GtkTreeDragSource * source,
- GtkTreePath * path, GtkSelectionData * data)
-{
- return gtk_tree_set_row_drag_data (data, (GtkTreeModel *) source, path);
-}
-
-static gboolean library_store_drag_data_delete (GtkTreeDragSource * source,
- GtkTreePath * path)
-{
- return TRUE;
-}
-
-static void source_init (GtkTreeDragSourceIface * interface)
-{
- interface->drag_data_get = library_store_drag_data_get;
- interface->drag_data_delete = library_store_drag_data_delete;
-}
-
-static const GInterfaceInfo source_info =
-{
- .interface_init = (GInterfaceInitFunc) source_init,
- .interface_finalize = NULL,
- .interface_data = NULL,
-};
-
-static gboolean library_store_drag_data_received (GtkTreeDragDest * dest,
- GtkTreePath * dest_path, GtkSelectionData * data)
-{
- LibraryStore * store = (LibraryStore *) dest;
- GtkTreeModel * model;
- GtkTreePath * source_path, * top;
- gint from, to, count;
- gint order[store->rows];
-
- if (! gtk_tree_get_row_drag_data (data, & model, & source_path))
- return FALSE;
-
- from = gtk_tree_path_get_indices (source_path)[0];
- to = gtk_tree_path_get_indices (dest_path)[0];
-
- /* GTK gives us the number of the row before which we are to put the row.
- * We want the number of the row where the row will end up. */
- if (to > from)
- to --;
-
- if (from < 0 || from >= store->rows || to < 0 || to >= store->rows)
- return FALSE;
-
- aud_playlist_reorder (from, to, 1);
-
- for (count = 0; count < from; count ++)
- order[count] = count;
-
- if (from < to)
- {
- for (count = from; count < to; count ++)
- order[count] = count + 1;
- }
- else
- {
- for (count = to; count < from; count ++)
- order[count + 1] = count;
- }
-
- order[to] = from;
-
- top = gtk_tree_path_new ();
- gtk_tree_model_rows_reordered (model, top, NULL, order);
- gtk_tree_path_free (top);
-
- return TRUE;
-}
-
-gboolean library_store_row_drop_possible (GtkTreeDragDest * dest,
- GtkTreePath * path, GtkSelectionData * selection_data)
-{
- LibraryStore * store = (LibraryStore *) dest;
- gint before = gtk_tree_path_get_indices (path)[0];
-
- return (before >= 0 && before <= store->rows);
-}
-
-static void dest_init (GtkTreeDragDestIface * interface)
-{
- interface->drag_data_received = library_store_drag_data_received;
- interface->row_drop_possible = library_store_row_drop_possible;
-}
-
-static const GInterfaceInfo dest_info =
-{
- .interface_init = (GInterfaceInitFunc) dest_init,
- .interface_finalize = NULL,
- .interface_data = NULL,
-};
-
-static GType library_store_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- type = g_type_register_static_simple (G_TYPE_OBJECT, "LibraryStore",
- sizeof (LibraryStoreClass), NULL, sizeof (LibraryStore),
- (GInstanceInitFunc) library_store_init, 0);
- g_type_add_interface_static (type, GTK_TYPE_TREE_MODEL, & interface_info);
- g_type_add_interface_static (type, GTK_TYPE_TREE_DRAG_SOURCE,
- & source_info);
- g_type_add_interface_static (type, GTK_TYPE_TREE_DRAG_DEST, & dest_info);
- }
-
- return type;
-}
-
-static void library_store_update (GtkTreeModel * model)
-{
- LibraryStore * store = (LibraryStore *) model;
- gint old_rows = store->rows;
- GtkTreePath * path;
- GtkTreeIter iter;
- gint row;
-
- store->rows = aud_playlist_count ();
- store->active = aud_playlist_get_active ();
-
- if (store->rows < old_rows)
- {
- path = gtk_tree_path_new_from_indices (store->rows, -1);
-
- for (row = store->rows; row < old_rows; row ++)
- gtk_tree_model_row_deleted (model, path);
-
- gtk_tree_path_free (path);
- old_rows = store->rows;
- }
-
- path = gtk_tree_path_new_first ();
-
- for (row = 0; row < old_rows; row ++)
- {
- iter.user_data = GINT_TO_POINTER (row);
- gtk_tree_model_row_changed (model, path, & iter);
- gtk_tree_path_next (path);
- }
-
- for (; row < store->rows; row ++)
- {
- iter.user_data = GINT_TO_POINTER (row);
- gtk_tree_model_row_inserted (model, path, & iter);
- gtk_tree_path_next (path);
- }
-
- gtk_tree_path_free (path);
-}
-
-static void update_cb (void * data, void * user_data)
-{
- if (GPOINTER_TO_INT (data) >= PLAYLIST_UPDATE_STRUCTURE)
- library_store_update ((GtkTreeModel *) user_data);
-}
-
-GtkTreeModel * audgui_get_library_store (void)
-{
- static GtkTreeModel * store = NULL;
-
- if (store == NULL)
- {
- store = (GtkTreeModel *) g_object_new (library_store_get_type (), NULL);
- hook_associate ("playlist update", update_cb, store);
- }
-
- return store;
-}
diff --git a/src/libaudgui/list.c b/src/libaudgui/list.c
new file mode 100755
index 0000000..7a39cde
--- /dev/null
+++ b/src/libaudgui/list.c
@@ -0,0 +1,758 @@
+/*
+ * list.c
+ * Copyright 2011 John Lindgren
+ *
+ * This file is part of Audacious.
+ *
+ * Audacious is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, version 2 or version 3 of the License.
+ *
+ * Audacious is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * Audacious. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The Audacious team does not consider modular code linking to Audacious or
+ * using our public API to be a derived work.
+ */
+
+#include "list.h"
+
+#include <audacious/gtk-compat.h>
+
+enum {HIGHLIGHT_COLUMN, RESERVED_COLUMNS};
+
+#define PATH_IS_SELECTED(w, p) (gtk_tree_selection_path_is_selected \
+ (gtk_tree_view_get_selection ((GtkTreeView *) (w)), (p)))
+
+typedef struct {
+ GObject parent;
+ const AudguiListCallbacks * cbs;
+ void * user;
+ gint rows, highlight;
+ gint columns;
+ GList * column_types;
+ gboolean frozen, blocked;
+ gboolean dragging;
+ gboolean clicked_row, receive_row;
+ gint scroll_source, scroll_speed;
+} ListModel;
+
+/* ==== MODEL ==== */
+
+static GtkTreeModelFlags list_model_get_flags (GtkTreeModel * model)
+{
+ return GTK_TREE_MODEL_LIST_ONLY;
+}
+
+static gint list_model_get_n_columns (GtkTreeModel * model)
+{
+ return ((ListModel *) model)->columns;
+}
+
+static GType list_model_get_column_type (GtkTreeModel * _model, gint column)
+{
+ ListModel * model = (ListModel *) _model;
+ g_return_val_if_fail (column >= 0 && column < model->columns, G_TYPE_INVALID);
+
+ if (column == HIGHLIGHT_COLUMN)
+ return PANGO_TYPE_WEIGHT;
+
+ return GPOINTER_TO_INT (g_list_nth_data (model->column_types, column -
+ RESERVED_COLUMNS));
+}
+
+static gboolean list_model_get_iter (GtkTreeModel * model, GtkTreeIter * iter,
+ GtkTreePath * path)
+{
+ gint row = gtk_tree_path_get_indices (path)[0];
+ if (row < 0 || row >= ((ListModel *) model)->rows)
+ return FALSE;
+ iter->user_data = GINT_TO_POINTER (row);
+ return TRUE;
+}
+
+static GtkTreePath * list_model_get_path (GtkTreeModel * model,
+ GtkTreeIter * iter)
+{
+ gint row = GPOINTER_TO_INT (iter->user_data);
+ g_return_val_if_fail (row >= 0 && row < ((ListModel *) model)->rows, NULL);
+ return gtk_tree_path_new_from_indices (row, -1);
+}
+
+static void list_model_get_value (GtkTreeModel * _model, GtkTreeIter * iter,
+ gint column, GValue * value)
+{
+ ListModel * model = (ListModel *) _model;
+ gint row = GPOINTER_TO_INT (iter->user_data);
+ g_return_if_fail (column >= 0 && column < model->columns);
+ g_return_if_fail (row >= 0 && row < model->rows);
+
+ if (column == HIGHLIGHT_COLUMN)
+ {
+ g_value_init (value, PANGO_TYPE_WEIGHT);
+ g_value_set_enum (value, row == model->highlight ? PANGO_WEIGHT_BOLD :
+ PANGO_WEIGHT_NORMAL);
+ return;
+ }
+
+ g_value_init (value, GPOINTER_TO_INT (g_list_nth_data (model->column_types,
+ column - RESERVED_COLUMNS)));
+ model->cbs->get_value (model->user, row, column - RESERVED_COLUMNS, value);
+}
+
+static gboolean list_model_iter_next (GtkTreeModel * _model, GtkTreeIter * iter)
+{
+ ListModel * model = (ListModel *) _model;
+ gint row = GPOINTER_TO_INT (iter->user_data);
+ g_return_val_if_fail (row >= 0 && row < model->rows, FALSE);
+ if (row + 1 >= model->rows)
+ return FALSE;
+ iter->user_data = GINT_TO_POINTER (row + 1);
+ return TRUE;
+}
+
+static gboolean list_model_iter_children (GtkTreeModel * model,
+ GtkTreeIter * iter, GtkTreeIter * parent)
+{
+ if (parent || ((ListModel *) model)->rows < 1)
+ return FALSE;
+ iter->user_data = GINT_TO_POINTER (0);
+ return TRUE;
+}
+
+static gboolean list_model_iter_has_child (GtkTreeModel * model,
+ GtkTreeIter * iter)
+{
+ return FALSE;
+}
+
+static gint list_model_iter_n_children (GtkTreeModel * model, GtkTreeIter * iter)
+{
+ return iter ? 0 : ((ListModel *) model)->rows;
+}
+
+static gboolean list_model_iter_nth_child (GtkTreeModel * model,
+ GtkTreeIter * iter, GtkTreeIter * parent, gint n)
+{
+ if (parent || n < 0 || n >= ((ListModel *) model)->rows)
+ return FALSE;
+ iter->user_data = GINT_TO_POINTER (n);
+ return TRUE;
+}
+
+static gboolean list_model_iter_parent (GtkTreeModel * model,
+ GtkTreeIter * iter, GtkTreeIter * child)
+{
+ return FALSE;
+}
+
+static void iface_init (GtkTreeModelIface * iface)
+{
+ iface->get_flags = list_model_get_flags;
+ iface->get_n_columns = list_model_get_n_columns;
+ iface->get_column_type = list_model_get_column_type;
+ iface->get_iter = list_model_get_iter;
+ iface->get_path = list_model_get_path;
+ iface->get_value = list_model_get_value;
+ iface->iter_next = list_model_iter_next;
+ iface->iter_children = list_model_iter_children;
+ iface->iter_has_child = list_model_iter_has_child;
+ iface->iter_n_children = list_model_iter_n_children;
+ iface->iter_nth_child = list_model_iter_nth_child;
+ iface->iter_parent = list_model_iter_parent;
+}
+
+static const GInterfaceInfo iface_info =
+{
+ .interface_init = (GInterfaceInitFunc) iface_init,
+ .interface_finalize = NULL,
+ .interface_data = NULL,
+};
+
+static GType list_model_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+ if (type == G_TYPE_INVALID)
+ {
+ type = g_type_register_static_simple (G_TYPE_OBJECT, "AudguiListModel",
+ sizeof (GObjectClass), NULL, sizeof (ListModel), NULL, 0);
+ g_type_add_interface_static (type, GTK_TYPE_TREE_MODEL, & iface_info);
+ }
+ return type;
+}
+
+/* ==== CALLBACKS ==== */
+
+static gboolean select_allow_cb (GtkTreeSelection * sel, GtkTreeModel * model,
+ GtkTreePath * path, gboolean was, void * user)
+{
+ return ! ((ListModel *) model)->frozen;
+}
+
+static void select_row_cb (GtkTreeModel * _model, GtkTreePath * path,
+ GtkTreeIter * iter, void * user)
+{
+ ListModel * model = (ListModel *) _model;
+ gint row = gtk_tree_path_get_indices (path)[0];
+ g_return_if_fail (row >= 0 && row < model->rows);
+ model->cbs->set_selected (model->user, row, TRUE);
+}
+
+static void select_cb (GtkTreeSelection * sel, ListModel * model)
+{
+ if (model->blocked)
+ return;
+ model->cbs->select_all (model->user, FALSE);
+ gtk_tree_selection_selected_foreach (sel, select_row_cb, NULL);
+}
+
+static void activate_cb (GtkTreeView * tree, GtkTreePath * path,
+ GtkTreeViewColumn * col, ListModel * model)
+{
+ gint row = gtk_tree_path_get_indices (path)[0];
+ g_return_if_fail (row >= 0 && row < model->rows);
+ model->cbs->activate_row (model->user, row);
+}
+
+static gboolean button_press_cb (GtkWidget * widget, GdkEventButton * event,
+ ListModel * model)
+{
+ GtkTreePath * path = NULL;
+ gtk_tree_view_get_path_at_pos ((GtkTreeView *) widget, event->x, event->y,
+ & path, NULL, NULL, NULL);
+
+ if (event->type == GDK_BUTTON_PRESS && event->button == 3 &&
+ model->cbs->right_click)
+ {
+ /* Only allow GTK to select this row if it is not already selected. We
+ * don't want to clear a multiple selection. */
+ if (path)
+ {
+ if (PATH_IS_SELECTED (widget, path))
+ model->frozen = TRUE;
+ gtk_tree_view_set_cursor ((GtkTreeView *) widget, path, NULL, FALSE);
+ model->frozen = FALSE;
+ }
+
+ model->cbs->right_click (model->user, event);
+
+ if (path)
+ gtk_tree_path_free (path);
+ return TRUE;
+ }
+
+ /* Only allow GTK to select this row if it is not already selected. If we
+ * are going to be dragging, we don't want to clear a multiple selection.
+ * If this is just a simple click, we will clear the multiple selection in
+ * button_release_cb. */
+ if (event->type == GDK_BUTTON_PRESS && event->button == 1 && ! (event->state
+ & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && path && PATH_IS_SELECTED (widget,
+ path))
+ model->frozen = TRUE;
+
+ if (path)
+ model->clicked_row = gtk_tree_path_get_indices (path)[0];
+ else
+ model->clicked_row = -1;
+
+ if (path)
+ gtk_tree_path_free (path);
+ return FALSE;
+}
+
+static gboolean button_release_cb (GtkWidget * widget, GdkEventButton * event,
+ ListModel * model)
+{
+ /* If button_press_cb set "frozen", and we were not dragging, we need to
+ * clear a multiple selection. */
+ if (model->frozen && model->clicked_row >= 0 && model->clicked_row <
+ model->rows)
+ {
+ model->frozen = FALSE;
+ GtkTreePath * path = gtk_tree_path_new_from_indices (model->clicked_row,
+ -1);
+ gtk_tree_view_set_cursor ((GtkTreeView *) widget, path, NULL, FALSE);
+ gtk_tree_path_free (path);
+ }
+
+ return FALSE;
+}
+
+/* ==== DRAG AND DROP ==== */
+
+static void drag_begin (GtkWidget * widget, GdkDragContext * context,
+ ListModel * model)
+{
+ g_signal_stop_emission_by_name (widget, "drag-begin");
+
+ model->dragging = TRUE;
+}
+
+static void drag_end (GtkWidget * widget, GdkDragContext * context,
+ ListModel * model)
+{
+ g_signal_stop_emission_by_name (widget, "drag-end");
+
+ model->dragging = FALSE;
+ model->clicked_row = -1;
+}
+
+static void drag_data_get (GtkWidget * widget, GdkDragContext * context,
+ GtkSelectionData * sel, guint info, guint time, ListModel * model)
+{
+ g_signal_stop_emission_by_name (widget, "drag-data-get");
+
+ void * data = NULL;
+ gint length = 0;
+ model->cbs->get_data (model->user, & data, & length);
+ gtk_selection_data_set (sel, gdk_atom_intern (model->cbs->data_type, FALSE),
+ 8, data, length);
+ g_free (data);
+}
+
+static gint calc_drop_row (ListModel * model, GtkWidget * widget, gint x, gint y)
+{
+ gint row = audgui_list_row_at_point (widget, x, y);
+ if (row < 0)
+ row = model->rows;
+ return row;
+}
+
+static void stop_autoscroll (ListModel * model)
+{
+ if (! model->scroll_source)
+ return;
+
+ g_source_remove (model->scroll_source);
+ model->scroll_source = 0;
+ model->scroll_speed = 0;
+}
+
+static gboolean autoscroll (GtkWidget * widget)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) widget);
+
+ GtkAdjustment * adj = gtk_tree_view_get_vadjustment ((GtkTreeView *) widget);
+ if (! adj)
+ return FALSE;
+
+ gint new = gtk_adjustment_get_value (adj) + model->scroll_speed;
+ gint clamped = CLAMP (new, 0, gtk_adjustment_get_upper (adj) -
+ gtk_adjustment_get_page_size (adj));
+ gtk_adjustment_set_value (adj, clamped);
+
+ if (clamped != new) /* reached top or bottom? */
+ return FALSE;
+
+ if (model->scroll_speed > 0)
+ model->scroll_speed = MIN (model->scroll_speed + 2, 100);
+ else
+ model->scroll_speed = MAX (model->scroll_speed - 2, -100);
+
+ return TRUE;
+}
+
+static void start_autoscroll (ListModel * model, GtkWidget * widget, gint speed)
+{
+ if (model->scroll_source)
+ return;
+
+ model->scroll_source = g_timeout_add (50, (GSourceFunc) autoscroll, widget);
+ model->scroll_speed = speed;
+}
+
+static gboolean drag_motion (GtkWidget * widget, GdkDragContext * context,
+ gint x, gint y, guint time, ListModel * model)
+{
+ g_signal_stop_emission_by_name (widget, "drag-motion");
+
+ /* If button_press_cb preserved a multiple selection, tell button_release_cb
+ * not to clear it. */
+ model->frozen = FALSE;
+
+ if (model->dragging && model->cbs->shift_rows) /* dragging within same list */
+ gdk_drag_status (context, GDK_ACTION_MOVE, time);
+ else if (model->cbs->data_type) /* cross-widget dragging */
+ gdk_drag_status (context, GDK_ACTION_COPY, time);
+ else
+ return FALSE;
+
+ if (model->rows > 0)
+ {
+ gint row = calc_drop_row (model, widget, x, y);
+ if (row == model->rows)
+ {
+ GtkTreePath * path = gtk_tree_path_new_from_indices (row - 1, -1);
+ gtk_tree_view_set_drag_dest_row ((GtkTreeView *) widget, path,
+ GTK_TREE_VIEW_DROP_AFTER);
+ gtk_tree_path_free (path);
+ }
+ else
+ {
+ GtkTreePath * path = gtk_tree_path_new_from_indices (row, -1);
+ gtk_tree_view_set_drag_dest_row ((GtkTreeView *) widget, path,
+ GTK_TREE_VIEW_DROP_BEFORE);
+ gtk_tree_path_free (path);
+ }
+ }
+
+ gint height;
+ gdk_window_get_geometry (gtk_tree_view_get_bin_window ((GtkTreeView *)
+ widget), NULL, NULL, NULL, & height);
+ gtk_tree_view_convert_widget_to_bin_window_coords ((GtkTreeView *) widget,
+ x, y, & x, & y);
+
+ if (y >= 0 && y < 48)
+ start_autoscroll (model, widget, -2);
+ else if (y >= height - 48 && y < height)
+ start_autoscroll (model, widget, 2);
+ else
+ stop_autoscroll (model);
+
+ return TRUE;
+}
+
+static void drag_leave (GtkWidget * widget, GdkDragContext * context,
+ guint time, ListModel * model)
+{
+ g_signal_stop_emission_by_name (widget, "drag-leave");
+
+ gtk_tree_view_set_drag_dest_row ((GtkTreeView *) widget, NULL, 0);
+ stop_autoscroll (model);
+}
+
+static gboolean drag_drop (GtkWidget * widget, GdkDragContext * context, gint x,
+ gint y, guint time, ListModel * model)
+{
+ g_signal_stop_emission_by_name (widget, "drag-drop");
+
+ gboolean success = TRUE;
+ gint row = calc_drop_row (model, widget, x, y);
+
+ if (model->dragging && model->cbs->shift_rows) /* dragging within same list */
+ {
+ if (model->clicked_row >= 0 && model->clicked_row < model->rows)
+ model->cbs->shift_rows (model->user, model->clicked_row, row);
+ else
+ success = FALSE;
+ }
+ else if (model->cbs->data_type) /* cross-widget dragging */
+ {
+ model->receive_row = row;
+ gtk_drag_get_data (widget, context, gdk_atom_intern
+ (model->cbs->data_type, FALSE), time);
+ }
+ else
+ success = FALSE;
+
+ gtk_drag_finish (context, success, FALSE, time);
+ gtk_tree_view_set_drag_dest_row ((GtkTreeView *) widget, NULL, 0);
+ stop_autoscroll (model);
+ return TRUE;
+}
+
+static void drag_data_received (GtkWidget * widget, GdkDragContext * context, gint x,
+ gint y, GtkSelectionData * sel, guint info, guint time, ListModel * model)
+{
+ g_signal_stop_emission_by_name (widget, "drag-data-received");
+
+ g_return_if_fail (model->receive_row >= 0 && model->receive_row <=
+ model->rows);
+
+ const guchar * data = gtk_selection_data_get_data (sel);
+ gint length = gtk_selection_data_get_length (sel);
+
+ if (data && length)
+ model->cbs->receive_data (model->user, model->receive_row, data, length);
+
+ model->receive_row = -1;
+}
+
+/* ==== PUBLIC FUNCS ==== */
+
+static void destroy_cb (ListModel * model)
+{
+ stop_autoscroll (model);
+ g_object_unref (model);
+}
+
+static void update_selection (GtkWidget * list, ListModel * model, gint at,
+ gint rows)
+{
+ model->blocked = TRUE;
+ GtkTreeSelection * sel = gtk_tree_view_get_selection ((GtkTreeView *) list);
+
+ for (gint i = at; i < at + rows; i ++)
+ {
+ GtkTreeIter iter = {.user_data = GINT_TO_POINTER (i)};
+ if (model->cbs->get_selected (model->user, i))
+ gtk_tree_selection_select_iter (sel, & iter);
+ else
+ gtk_tree_selection_unselect_iter (sel, & iter);
+ }
+
+ model->blocked = FALSE;
+}
+
+GtkWidget * audgui_list_new (const AudguiListCallbacks * cbs, void * user,
+ gint rows)
+{
+ g_return_val_if_fail (cbs->get_value, NULL);
+ if (cbs->get_selected)
+ g_return_val_if_fail (cbs->set_selected && cbs->select_all, NULL);
+ if (cbs->data_type)
+ g_return_val_if_fail (cbs->get_data && cbs->receive_data, NULL);
+
+ ListModel * model = (ListModel *) g_object_new (list_model_get_type (), NULL);
+ model->cbs = cbs;
+ model->user = user;
+ model->rows = rows;
+ model->highlight = -1;
+ model->columns = RESERVED_COLUMNS;
+ model->column_types = NULL;
+ model->frozen = FALSE;
+ model->blocked = FALSE;
+ model->dragging = FALSE;
+ model->clicked_row = -1;
+ model->receive_row = -1;
+ model->scroll_source = 0;
+ model->scroll_speed = 0;
+
+ GtkWidget * list = gtk_tree_view_new_with_model ((GtkTreeModel *) model);
+ g_signal_connect_swapped (list, "destroy", (GCallback) destroy_cb, model);
+
+ if (cbs->get_selected)
+ {
+ GtkTreeSelection * sel = gtk_tree_view_get_selection
+ ((GtkTreeView *) list);
+ gtk_tree_selection_set_mode (sel, GTK_SELECTION_MULTIPLE);
+ gtk_tree_selection_set_select_function (sel, select_allow_cb, NULL, NULL);
+ g_signal_connect (sel, "changed", (GCallback) select_cb, model);
+
+ update_selection (list, model, 0, rows);
+ }
+
+ if (cbs->activate_row)
+ g_signal_connect (list, "row-activated", (GCallback) activate_cb, model);
+
+ g_signal_connect (list, "button-press-event", (GCallback) button_press_cb,
+ model);
+ g_signal_connect (list, "button-release-event", (GCallback)
+ button_release_cb, model);
+
+ if (cbs->data_type)
+ {
+ const GtkTargetEntry target = {(gchar *) cbs->data_type, 0, 0};
+
+ gtk_drag_source_set (list, GDK_BUTTON1_MASK, & target, 1,
+ GDK_ACTION_COPY);
+ gtk_drag_dest_set (list, 0, & target, 1, GDK_ACTION_COPY);
+
+ g_signal_connect (list, "drag-data-get", (GCallback) drag_data_get,
+ model);
+ g_signal_connect (list, "drag-data-received", (GCallback)
+ drag_data_received, model);
+ }
+ else if (cbs->shift_rows)
+ {
+ gtk_drag_source_set (list, GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_COPY);
+ gtk_drag_dest_set (list, 0, NULL, 0, GDK_ACTION_COPY);
+ }
+
+ if (cbs->data_type || cbs->shift_rows)
+ {
+ g_signal_connect (list, "drag-begin", (GCallback) drag_begin, model);
+ g_signal_connect (list, "drag-end", (GCallback) drag_end, model);
+ g_signal_connect (list, "drag-motion", (GCallback) drag_motion, model);
+ g_signal_connect (list, "drag-leave", (GCallback) drag_leave, model);
+ g_signal_connect (list, "drag-drop", (GCallback) drag_drop, model);
+ }
+
+ return list;
+}
+
+void * audgui_list_get_user (GtkWidget * list)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ return model->user;
+}
+
+void audgui_list_add_column (GtkWidget * list, const gchar * title,
+ gint column, GType type, gboolean expand)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ g_return_if_fail (RESERVED_COLUMNS + column == model->columns);
+
+ model->columns ++;
+ model->column_types = g_list_append (model->column_types, GINT_TO_POINTER
+ (type));
+
+ GtkCellRenderer * renderer = gtk_cell_renderer_text_new ();
+ GtkTreeViewColumn * tree_column = gtk_tree_view_column_new_with_attributes
+ (title, renderer, "text", RESERVED_COLUMNS + column, "weight",
+ HIGHLIGHT_COLUMN, NULL);
+
+ if (expand)
+ {
+ gtk_tree_view_column_set_resizable (tree_column, TRUE);
+ gtk_tree_view_column_set_expand (tree_column, TRUE);
+ g_object_set ((GObject *) renderer, "ellipsize-set", TRUE, "ellipsize",
+ PANGO_ELLIPSIZE_END, NULL);
+ }
+ else
+ {
+ gtk_tree_view_column_set_sizing (tree_column,
+ GTK_TREE_VIEW_COLUMN_GROW_ONLY);
+ g_object_set ((GObject *) renderer, "xalign", (gfloat) 1, NULL);
+ }
+
+ gtk_tree_view_append_column ((GtkTreeView *) list, tree_column);
+}
+
+gint audgui_list_row_count (GtkWidget * list)
+{
+ return ((ListModel *) gtk_tree_view_get_model ((GtkTreeView *) list))->rows;
+}
+
+void audgui_list_insert_rows (GtkWidget * list, gint at, gint rows)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ g_return_if_fail (at >= 0 && at <= model->rows && rows >= 0);
+
+ model->rows += rows;
+ if (model->highlight >= at)
+ model->highlight += rows;
+
+ GtkTreeIter iter = {.user_data = GINT_TO_POINTER (at)};
+ GtkTreePath * path = gtk_tree_path_new_from_indices (at, -1);
+
+ for (gint i = rows; i --; )
+ gtk_tree_model_row_inserted ((GtkTreeModel *) model, path, & iter);
+
+ gtk_tree_path_free (path);
+
+ update_selection (list, model, at, rows);
+}
+
+void audgui_list_update_rows (GtkWidget * list, gint at, gint rows)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ g_return_if_fail (at >= 0 && rows >= 0 && at + rows <= model->rows);
+
+ GtkTreeIter iter = {.user_data = GINT_TO_POINTER (at)};
+ GtkTreePath * path = gtk_tree_path_new_from_indices (at, -1);
+
+ while (rows --)
+ {
+ gtk_tree_model_row_changed ((GtkTreeModel *) model, path, & iter);
+ iter.user_data = GINT_TO_POINTER (GPOINTER_TO_INT (iter.user_data) + 1);
+ gtk_tree_path_next (path);
+ }
+
+ gtk_tree_path_free (path);
+}
+
+void audgui_list_delete_rows (GtkWidget * list, gint at, gint rows)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ g_return_if_fail (at >= 0 && rows >= 0 && at + rows <= model->rows);
+
+ model->rows -= rows;
+ if (model->highlight >= at + rows)
+ model->highlight -= rows;
+ else if (model->highlight >= at)
+ model->highlight = -1;
+
+ model->blocked = TRUE;
+ GtkTreePath * path = gtk_tree_path_new_from_indices (at, -1);
+
+ while (rows --)
+ gtk_tree_model_row_deleted ((GtkTreeModel *) model, path);
+
+ gtk_tree_path_free (path);
+ model->blocked = FALSE;
+}
+
+void audgui_list_update_selection (GtkWidget * list, gint at, gint rows)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ g_return_if_fail (model->cbs->get_selected);
+ g_return_if_fail (at >= 0 && rows >= 0 && at + rows <= model->rows);
+ update_selection (list, model, at, rows);
+}
+
+void audgui_list_set_highlight (GtkWidget * list, gint row)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ g_return_if_fail (row >= -1 && row < model->rows);
+
+ gint old = model->highlight;
+ if (row == old)
+ return;
+ model->highlight = row;
+
+ if (old >= 0)
+ audgui_list_update_rows (list, old, 1);
+ if (row >= 0)
+ audgui_list_update_rows (list, row, 1);
+}
+
+void audgui_list_set_focus (GtkWidget * list, gint row)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model
+ ((GtkTreeView *) list);
+ g_return_if_fail (row >= -1 && row < model->rows);
+
+ if (row < 0)
+ {
+ if (model->rows < 1)
+ return;
+ row = 0;
+ }
+
+ model->frozen = TRUE;
+ GtkTreePath * path = gtk_tree_path_new_from_indices (row, -1);
+ gtk_tree_view_set_cursor ((GtkTreeView *) list, path, NULL, FALSE);
+ gtk_tree_view_scroll_to_cell ((GtkTreeView *) list, path, NULL, FALSE, 0, 0);
+ gtk_tree_path_free (path);
+ model->frozen = FALSE;
+}
+
+gint audgui_list_row_at_point (GtkWidget * list, gint x, gint y)
+{
+ ListModel * model = (ListModel *) gtk_tree_view_get_model ((GtkTreeView *)
+ list);
+
+ GtkTreePath * path = NULL;
+ gtk_tree_view_convert_widget_to_bin_window_coords ((GtkTreeView *) list, x,
+ y, & x, & y);
+ gtk_tree_view_get_path_at_pos ((GtkTreeView *) list, x, y, & path, NULL,
+ NULL, NULL);
+
+ if (! path)
+ return -1;
+
+ gint row = gtk_tree_path_get_indices (path)[0];
+ g_return_val_if_fail (row >= 0 && row < model->rows, -1);
+
+ GdkRectangle rect;
+ gtk_tree_view_get_background_area ((GtkTreeView *) list, path, NULL,
+ & rect);
+ if (y > rect.y + rect.height / 2)
+ row ++;
+
+ gtk_tree_path_free (path);
+ return row;
+}
diff --git a/src/libaudgui/list.h b/src/libaudgui/list.h
new file mode 100644
index 0000000..0eb1cef
--- /dev/null
+++ b/src/libaudgui/list.h
@@ -0,0 +1,61 @@
+/*
+ * list.h
+ * Copyright 2011 John Lindgren
+ *
+ * This file is part of Audacious.
+ *
+ * Audacious is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, version 2 or version 3 of the License.
+ *
+ * Audacious is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * Audacious. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The Audacious team does not consider modular code linking to Audacious or
+ * using our public API to be a derived work.
+ */
+
+#ifndef AUDGUI_LIST_H
+#define AUDGUI_LIST_H
+
+#include <gtk/gtk.h>
+
+typedef struct {
+ void (* get_value) (void * user, gint row, gint column, GValue * value);
+
+ /* selection (optional) */
+ gboolean (* get_selected) (void * user, gint row);
+ void (* set_selected) (void * user, gint row, gboolean selected);
+ void (* select_all) (void * user, gboolean selected);
+
+ void (* activate_row) (void * user, gint row); /* optional */
+ void (* right_click) (void * user, GdkEventButton * event); /* optional */
+ void (* shift_rows) (void * user, gint row, gint before); /* optional */
+
+ /* cross-widget drag and drop (optional) */
+ const gchar * data_type;
+ void (* get_data) (void * user, void * * data, gint * length); /* data will
+ be freed */
+ void (* receive_data) (void * user, gint row, const void * data, gint length);
+} AudguiListCallbacks;
+
+GtkWidget * audgui_list_new (const AudguiListCallbacks * cbs, void * user,
+ gint rows);
+void * audgui_list_get_user (GtkWidget * list);
+void audgui_list_add_column (GtkWidget * list, const gchar * title,
+ gint column, GType type, gboolean expand);
+
+gint audgui_list_row_count (GtkWidget * list);
+void audgui_list_insert_rows (GtkWidget * list, gint at, gint rows);
+void audgui_list_update_rows (GtkWidget * list, gint at, gint rows);
+void audgui_list_delete_rows (GtkWidget * list, gint at, gint rows);
+void audgui_list_update_selection (GtkWidget * list, gint at, gint rows);
+void audgui_list_set_highlight (GtkWidget * list, gint row);
+void audgui_list_set_focus (GtkWidget * list, gint row);
+gint audgui_list_row_at_point (GtkWidget * list, gint x, gint y);
+
+#endif
diff --git a/src/libaudgui/ui_about.c b/src/libaudgui/ui_about.c
index 29a2a3d..caeac03 100644
--- a/src/libaudgui/ui_about.c
+++ b/src/libaudgui/ui_about.c
@@ -24,6 +24,8 @@
* Audacious or using our public API to be a derived work.
*/
+#include <limits.h>
+
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
@@ -34,79 +36,22 @@
#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/misc.h>
-#include "audacious/compatibility.h"
+#include "libaudgui-gtk.h"
-#include "ui_credits.h"
+/* ui_credits.c */
+GtkWidget * audgui_get_credits_widget (void);
static GtkWidget *about_window = NULL;
-static GdkPixbuf *about_pixbuf = NULL;
-static GdkPixmap *mask_pixmap_window1 = NULL,
- *mask_pixmap_window2 = NULL;
-static GdkBitmap *mask_bitmap_window1 = NULL,
- *mask_bitmap_window2 = NULL;
-
-static gboolean
-on_about_window_expose(GtkWidget *widget, GdkEventExpose *expose, gpointer data)
-{
- GdkWindow *window;
-
- g_return_val_if_fail(widget != NULL, FALSE);
- g_return_val_if_fail(GTK_IS_WIDGET (widget), FALSE);
-
- window = gtk_widget_get_window(widget);
- gdk_window_set_back_pixmap(window, mask_pixmap_window2, 0);
- gdk_window_clear(window);
-
- return FALSE;
-}
-
-static gboolean
-on_about_window_key_press (GtkWidget *widget, GdkEventKey *event, gpointer data)
-{
- g_return_val_if_fail(GTK_IS_WIDGET (widget), FALSE);
-
- if (event->keyval == GDK_Escape)
- {
- gtk_widget_hide(widget);
- }
-
- return FALSE;
-}
-
-static gboolean
-on_close_button_clicked (GtkWidget *widget, gpointer data)
-{
- g_return_val_if_fail(GTK_IS_WIDGET (widget), FALSE);
-
- gtk_widget_hide(about_window);
-
- return FALSE;
-}
-
-static gboolean
-on_credits_button_clicked (GtkWidget *widget, gpointer data)
-{
- g_return_val_if_fail(GTK_IS_WIDGET (widget), FALSE);
-
- audgui_show_credits_window();
-
- return FALSE;
-}
void
audgui_show_about_window(void)
{
- GtkWidget *about_fixedbox;
- GtkWidget *close_button;
- GtkWidget *credits_button , *credits_button_hbox, *credits_button_image, *credits_button_label;
GtkWidget *brief_label;
- gchar *filename = DATA_DIR G_DIR_SEPARATOR_S "images" G_DIR_SEPARATOR_S "about-logo.png";
gchar *text;
- PangoAttrList *brief_label_attrs;
- PangoAttribute *brief_label_foreground;
static const gchar *audacious_brief;
if (about_window != NULL)
@@ -118,99 +63,38 @@ audgui_show_about_window(void)
aud_get_audacious_credits(&audacious_brief, NULL, NULL);
about_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_container_set_border_width ((GtkContainer *) about_window, 3);
g_signal_connect(about_window, "destroy",
G_CALLBACK(gtk_widget_destroyed), &about_window);
- gtk_widget_realize(about_window);
-
- about_pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
-
- gtk_widget_set_size_request(GTK_WIDGET (about_window),
- gdk_pixbuf_get_width (about_pixbuf),
- gdk_pixbuf_get_height (about_pixbuf));
-
- gtk_widget_set_app_paintable(about_window, TRUE);
gtk_window_set_title(GTK_WINDOW(about_window), _("About Audacious"));
- gtk_window_set_position(GTK_WINDOW(about_window), GTK_WIN_POS_CENTER);
gtk_window_set_resizable(GTK_WINDOW(about_window), FALSE);
- gtk_window_set_decorated(GTK_WINDOW(about_window), FALSE);
-
- gdk_pixbuf_render_pixmap_and_mask(about_pixbuf,
- &mask_pixmap_window1,
- &mask_bitmap_window1,
- 0);
-
- gdk_pixbuf_render_pixmap_and_mask(about_pixbuf,
- &mask_pixmap_window2,
- &mask_bitmap_window2,
- 128);
-
- gtk_widget_add_events(about_window, GDK_ALL_EVENTS_MASK);
-
- g_signal_connect(about_window, "expose-event",
- G_CALLBACK(on_about_window_expose), &about_window);
-
- g_signal_connect(about_window, "key-press-event",
- G_CALLBACK(on_about_window_key_press), &about_window);
-
- gtk_widget_shape_combine_mask(GTK_WIDGET(about_window), mask_bitmap_window2, 0, 0);
-
- /* GtkFixed hasn't got its GdkWindow, this means that it can be used to
- display widgets while the logo below will be displayed anyway;
- however fixed positions are not that great, cause the button sizes may (will)
- vary depending on the gtk style used, so it's not possible to center
- them unless a fixed width and heigth is forced (and this may bring to cutted
- text if someone, i.e., uses a big font for gtk widgets);
- other types of container most likely have their GdkWindow, this simply
- means that the logo must be drawn on the container widget, instead of the
- window; otherwise, it won't be displayed correctly */
- about_fixedbox = gtk_fixed_new();
- gtk_container_add( GTK_CONTAINER(about_window) , about_fixedbox );
-
- close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
-
- g_signal_connect(close_button, "clicked",
- G_CALLBACK(on_close_button_clicked), NULL);
-
- gtk_fixed_put( GTK_FIXED(about_fixedbox) , close_button , 375 , 220 );
- gtk_widget_set_size_request( close_button , 100 , -1 );
-
- credits_button = gtk_button_new();
- credits_button_hbox = gtk_hbox_new( FALSE , 0 );
- credits_button_image = gtk_image_new_from_stock( GTK_STOCK_DIALOG_INFO , GTK_ICON_SIZE_BUTTON );
- gtk_misc_set_alignment( GTK_MISC(credits_button_image) , 1 , 0.5 );
- credits_button_label = gtk_label_new( _("Credits") );
- gtk_misc_set_alignment( GTK_MISC(credits_button_label) , 0 , 0.5 );
- gtk_box_pack_start( GTK_BOX(credits_button_hbox) , credits_button_image ,
- TRUE , TRUE , 2 );
- gtk_box_pack_start( GTK_BOX(credits_button_hbox) , credits_button_label ,
- TRUE , TRUE , 2 );
- gtk_container_add( GTK_CONTAINER(credits_button) , credits_button_hbox );
-
- g_signal_connect(credits_button, "clicked",
- G_CALLBACK(on_credits_button_clicked), NULL);
-
- gtk_fixed_put( GTK_FIXED(about_fixedbox) , credits_button , 25 , 220 );
- gtk_widget_set_size_request( credits_button , 100 , -1 );
+ audgui_destroy_on_escape (about_window);
+
+ GtkWidget * vbox = gtk_vbox_new (FALSE, 6);
+ gtk_container_add ((GtkContainer *) about_window, vbox);
+
+ gchar name[PATH_MAX];
+ snprintf (name, sizeof name, "%s/images/about-logo.png", aud_get_path
+ (AUD_PATH_DATA_DIR));
+ GtkWidget * image = gtk_image_new_from_file (name);
+ gtk_box_pack_start ((GtkBox *) vbox, image, FALSE, FALSE, 0);
brief_label = gtk_label_new(NULL);
text = g_strdup_printf(_(audacious_brief), VERSION);
- brief_label_foreground = pango_attr_foreground_new(0, 0, 0);
- brief_label_attrs = pango_attr_list_new();
- pango_attr_list_insert(brief_label_attrs, brief_label_foreground);
-
gtk_label_set_markup(GTK_LABEL(brief_label), text);
gtk_label_set_justify(GTK_LABEL(brief_label), GTK_JUSTIFY_CENTER);
- gtk_label_set_attributes(GTK_LABEL(brief_label), brief_label_attrs);
g_free(text);
+
+ gtk_box_pack_start ((GtkBox *) vbox, brief_label, FALSE, FALSE, 0);
- gtk_fixed_put(GTK_FIXED(about_fixedbox), brief_label, 20, 145);
- gtk_widget_set_size_request( brief_label , 460 , -1 );
+ GtkWidget * exp = gtk_expander_new (_("Credits"));
+ gtk_container_add ((GtkContainer *) exp, audgui_get_credits_widget ());
+ gtk_box_pack_start ((GtkBox *) vbox, exp, TRUE, TRUE, 0);
gtk_widget_show_all(about_window);
- gtk_window_present(GTK_WINDOW(about_window));
}
void
diff --git a/src/libaudgui/ui_credits.c b/src/libaudgui/ui_credits.c
index 4f3732f..ec7f0f6 100644
--- a/src/libaudgui/ui_credits.c
+++ b/src/libaudgui/ui_credits.c
@@ -30,14 +30,10 @@
#include <glib.h>
#include <gtk/gtk.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/misc.h>
-#include "audacious/compatibility.h"
-
-#include "ui_credits.h"
-#include "audacious_logo.xpm"
-
enum {
COL_LEFT,
COL_RIGHT,
@@ -104,81 +100,22 @@ generate_credit_list(const gchar * text[], gboolean sec_space)
GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollwin), GTK_SHADOW_IN);
gtk_container_add(GTK_CONTAINER(scrollwin), treeview);
- gtk_container_set_border_width(GTK_CONTAINER(scrollwin), 10);
-
- gtk_widget_show_all(scrollwin);
+ gtk_container_set_border_width ((GtkContainer *) scrollwin, 4);
return scrollwin;
}
-void
-audgui_show_credits_window(void)
+GtkWidget * audgui_get_credits_widget (void)
{
- static GtkWidget *about_window = NULL;
-
- GdkPixbuf *logo_pixbuf;
- GtkWidget *about_vbox;
- GtkWidget *about_credits_logo_box, *about_credits_logo_frame;
- GtkWidget *about_credits_logo;
GtkWidget *about_notebook;
GtkWidget *list;
- GtkWidget *bbox, *close_btn;
- GtkWidget *label;
- gchar *text;
- static const gchar *audacious_brief;
- static const gchar **credit_text;
- static const gchar **translators;
-
- if (about_window)
- return;
-
- aud_get_audacious_credits(&audacious_brief, &credit_text, &translators);
-
- about_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_type_hint(GTK_WINDOW(about_window),
- GDK_WINDOW_TYPE_HINT_DIALOG);
-
- gtk_window_set_default_size(GTK_WINDOW(about_window), -1, 512);
- gtk_window_set_title(GTK_WINDOW(about_window), _("About Audacious"));
- gtk_window_set_position(GTK_WINDOW(about_window), GTK_WIN_POS_CENTER);
- gtk_window_set_resizable(GTK_WINDOW(about_window), TRUE);
- gtk_container_set_border_width(GTK_CONTAINER(about_window), 10);
-
- g_signal_connect(about_window, "destroy",
- G_CALLBACK(gtk_widget_destroyed), &about_window);
-
- gtk_widget_realize(about_window);
+ const gchar **credit_text;
+ const gchar **translators;
- about_vbox = gtk_vbox_new(FALSE, 5);
- gtk_container_add(GTK_CONTAINER(about_window), about_vbox);
-
- logo_pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)audacious_logo_xpm);
-
- about_credits_logo_box = gtk_hbox_new(TRUE, 0);
- gtk_box_pack_start(GTK_BOX(about_vbox), about_credits_logo_box,
- FALSE, FALSE, 0);
-
- about_credits_logo_frame = gtk_frame_new(NULL);
- gtk_frame_set_shadow_type(GTK_FRAME(about_credits_logo_frame),
- GTK_SHADOW_ETCHED_OUT);
- gtk_box_pack_start(GTK_BOX(about_credits_logo_box),
- about_credits_logo_frame, FALSE, FALSE, 0);
-
- about_credits_logo = gtk_image_new_from_pixbuf(logo_pixbuf);
- gtk_container_add(GTK_CONTAINER(about_credits_logo_frame),
- about_credits_logo);
- g_object_unref(logo_pixbuf);
-
- label = gtk_label_new(NULL);
- text = g_strdup_printf(_(audacious_brief), VERSION);
- gtk_label_set_markup(GTK_LABEL(label), text);
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER);
- g_free(text);
-
- gtk_box_pack_start(GTK_BOX(about_vbox), label, FALSE, FALSE, 0);
+ aud_get_audacious_credits (NULL, &credit_text, &translators);
about_notebook = gtk_notebook_new();
- gtk_box_pack_start(GTK_BOX(about_vbox), about_notebook, TRUE, TRUE, 0);
+ gtk_widget_set_size_request (about_notebook, -1, 250);
list = generate_credit_list(credit_text, TRUE);
gtk_notebook_append_page(GTK_NOTEBOOK(about_notebook), list,
@@ -188,18 +125,5 @@ audgui_show_credits_window(void)
gtk_notebook_append_page(GTK_NOTEBOOK(about_notebook), list,
gtk_label_new(_("Translators")));
- bbox = gtk_hbutton_box_new();
- gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
- gtk_box_set_spacing(GTK_BOX(bbox), 5);
- gtk_box_pack_start(GTK_BOX(about_vbox), bbox, FALSE, FALSE, 0);
-
- close_btn = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
- g_signal_connect_swapped(close_btn, "clicked",
- G_CALLBACK(gtk_widget_destroy), about_window);
-
- gtk_widget_set_can_default(close_btn, TRUE);
- gtk_box_pack_start(GTK_BOX(bbox), close_btn, TRUE, TRUE, 0);
- gtk_widget_grab_default(close_btn);
-
- gtk_widget_show_all(about_window);
+ return about_notebook;
}
diff --git a/src/libaudgui/ui_credits.h b/src/libaudgui/ui_credits.h
deleted file mode 100644
index fe30775..0000000
--- a/src/libaudgui/ui_credits.h
+++ /dev/null
@@ -1,9 +0,0 @@
-
-#ifndef AUDACIOUS_UI_CREDITS_H
-#define AUDACIOUS_UI_CREDITS_H
-
-void audgui_show_about_window(void);
-void audgui_hide_about_window(void);
-void audgui_show_credits_window(void);
-
-#endif /* AUDACIOUS_UI_CREDITS_H */
diff --git a/src/libaudgui/ui_fileopener.c b/src/libaudgui/ui_fileopener.c
index a0eb83b..b7d6794 100644..100755
--- a/src/libaudgui/ui_fileopener.c
+++ b/src/libaudgui/ui_fileopener.c
@@ -22,6 +22,7 @@
#include <audacious/audconfig.h>
#include <audacious/i18n.h>
#include <audacious/drct.h>
+#include <audacious/gtk-compat.h>
#include "config.h"
#include "libaudgui.h"
@@ -144,6 +145,9 @@ run_filebrowser_gtk2style(gboolean play_button, gboolean show)
gtk_container_add(GTK_CONTAINER(bbox), close_button);
gtk_container_add(GTK_CONTAINER(bbox), action_button);
+ gtk_widget_set_can_default (action_button, TRUE);
+ gtk_widget_grab_default (action_button);
+
/* this storage object holds several other objects which are used in the
* callback functions
*/
diff --git a/src/libaudgui/ui_gtk.c b/src/libaudgui/ui_gtk.c
index fa8d4e8..24d2fe5 100644
--- a/src/libaudgui/ui_gtk.c
+++ b/src/libaudgui/ui_gtk.c
@@ -19,8 +19,14 @@
#include <gtk/gtk.h>
+#include <audacious/misc.h>
+
void audgui_set_default_icon (void)
{
+#ifdef _WIN32
+ gtk_window_set_default_icon_from_file (aud_get_path (AUD_PATH_ICON_FILE),
+ NULL);
+#else
gtk_window_set_default_icon_name ("audacious");
+#endif
}
-
diff --git a/src/libaudgui/ui_jumptotrack.c b/src/libaudgui/ui_jumptotrack.c
index a97d30e..52f3f24 100644
--- a/src/libaudgui/ui_jumptotrack.c
+++ b/src/libaudgui/ui_jumptotrack.c
@@ -27,38 +27,25 @@
# include "config.h"
#endif
-
-#include <glib.h>
-#include <glib/gprintf.h>
-#include <gtk/gtk.h>
-
-#include <gdk/gdk.h>
-#include <gdk/gdkkeysyms.h>
-
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
-#if defined(USE_REGEX_ONIGURUMA)
- #include <onigposix.h>
-#elif defined(USE_REGEX_PCRE)
- #include <pcreposix.h>
-#else
- #include <regex.h>
-#endif
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
#include <audacious/audconfig.h>
#include <audacious/drct.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/playlist.h>
#include <libaudcore/hook.h>
-#include "audacious/compatibility.h"
-
#include "icons-stock.h"
#include "ui_jumptotrack_cache.h"
+#include "ui_regex.h"
static void watchdog (void * hook_data, void * user_data);
diff --git a/src/libaudgui/ui_jumptotrack_cache.c b/src/libaudgui/ui_jumptotrack_cache.c
index 9d4fd8a..97202d0 100644
--- a/src/libaudgui/ui_jumptotrack_cache.c
+++ b/src/libaudgui/ui_jumptotrack_cache.c
@@ -28,18 +28,11 @@
# include "sys/types.h"
#endif
-#if defined(USE_REGEX_ONIGURUMA)
- #include <onigposix.h>
-#elif defined(USE_REGEX_PCRE)
- #include <pcreposix.h>
-#else
- #include <regex.h>
-#endif
-
#include <audacious/debug.h>
#include <audacious/playlist.h>
#include "ui_jumptotrack_cache.h"
+#include "ui_regex.h"
// Struct to keep information about matches from searches.
typedef struct
diff --git a/src/libaudgui/ui_playlist_manager.c b/src/libaudgui/ui_playlist_manager.c
index e554812..09ec102 100644
--- a/src/libaudgui/ui_playlist_manager.c
+++ b/src/libaudgui/ui_playlist_manager.c
@@ -1,5 +1,5 @@
/* Audacious - Cross-platform multimedia player
- * Copyright (C) 2005-2010 Audacious development team.
+ * Copyright (C) 2005-2011 Audacious development team.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,7 +17,10 @@
* Audacious or using our public API to be a derived work.
*/
+#include <gtk/gtk.h>
+
#include <audacious/audconfig.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/playlist.h>
#include <libaudcore/hook.h>
@@ -25,38 +28,9 @@
#include "config.h"
#include "libaudgui.h"
#include "libaudgui-gtk.h"
+#include "list.h"
-static gint iter_to_row (GtkTreeModel * model, GtkTreeIter * iter)
-{
- GtkTreePath * path = gtk_tree_model_get_path (model, iter);
- gint row = gtk_tree_path_get_indices (path)[0];
-
- gtk_tree_path_free (path);
- return row;
-}
-
-static gint get_selected_row (GtkWidget * list)
-{
- GtkTreeSelection * selection = gtk_tree_view_get_selection ((GtkTreeView *)
- list);
- GtkTreeModel * model;
- GtkTreeIter iter;
-
- if (! gtk_tree_selection_get_selected (selection, & model, & iter))
- return -1;
-
- return iter_to_row (model, & iter);
-}
-
-static void set_selected_row (GtkWidget * list, gint row)
-{
- GtkTreeSelection * selection = gtk_tree_view_get_selection ((GtkTreeView *)
- list);
- GtkTreePath * path = gtk_tree_path_new_from_indices (row, -1);
-
- gtk_tree_selection_select_path (selection, path);
- gtk_tree_path_free (path);
-}
+static GtkWidget * playman_win = NULL;
static void save_position (GtkWidget * window)
{
@@ -73,13 +47,9 @@ static gboolean hide_cb (GtkWidget * window)
return TRUE;
}
-static void activate_cb (GtkTreeView * list, GtkTreePath * path,
- GtkTreeViewColumn * column, GtkWidget * window)
+static void rename_cb (void)
{
- aud_playlist_set_active (gtk_tree_path_get_indices (path)[0]);
-
- if (aud_cfg->playlist_manager_close_on_activate)
- hide_cb (window);
+ audgui_show_playlist_rename (aud_playlist_get_active ());
}
static void new_cb (GtkButton * button, void * unused)
@@ -89,65 +59,115 @@ static void new_cb (GtkButton * button, void * unused)
static void delete_cb (GtkButton * button, GtkWidget * list)
{
- gint playlist = get_selected_row (list);
-
- if (playlist != -1)
- audgui_confirm_playlist_delete (playlist);
+ audgui_confirm_playlist_delete (aud_playlist_get_active ());
}
-static void rename_cb (GtkButton * button, GtkWidget * lv)
+static void save_config_cb (void * hook_data, void * user_data)
{
- GtkTreeSelection *listsel = gtk_tree_view_get_selection( GTK_TREE_VIEW(lv) );
- GtkTreeModel *store;
- GtkTreeIter iter;
+ if (gtk_widget_get_visible ((GtkWidget *) user_data))
+ save_position ((GtkWidget *) user_data);
+}
- if ( gtk_tree_selection_get_selected( listsel , &store , &iter ) == TRUE )
+static void get_value (void * user, gint row, gint column, GValue * value)
+{
+ switch (column)
{
- GtkTreePath *path = gtk_tree_model_get_path( GTK_TREE_MODEL(store) , &iter );
- GtkCellRenderer *rndrname = g_object_get_data( G_OBJECT(lv) , "rn" );
- /* set the name renderer to editable and start editing */
- g_object_set( G_OBJECT(rndrname) , "editable" , TRUE , NULL );
- gtk_tree_view_set_cursor_on_cell ((GtkTreeView *) lv, path,
- gtk_tree_view_get_column ((GtkTreeView *) lv,
- AUDGUI_LIBRARY_STORE_TITLE), rndrname, TRUE);
- gtk_tree_path_free( path );
+ case 0:
+ g_value_set_string (value, aud_playlist_get_title (row));
+ break;
+ case 1:
+ g_value_set_int (value, aud_playlist_entry_count (row));
+ break;
}
}
-static void
-playlist_manager_cb_lv_name_edited ( GtkCellRendererText *cell , gchar *path_string ,
- gchar *new_text , gpointer listview )
+static gboolean get_selected (void * user, gint row)
+{
+ return (row == aud_playlist_get_active ());
+}
+
+static void set_selected (void * user, gint row, gboolean selected)
{
- /* this is currently used to change playlist names */
- GtkTreeModel *store = gtk_tree_view_get_model( GTK_TREE_VIEW(listview) );
- GtkTreeIter iter;
+ if (selected)
+ aud_playlist_set_active (row);
+}
- if ( gtk_tree_model_get_iter_from_string( store , &iter , path_string ) == TRUE )
- aud_playlist_set_title (iter_to_row (store, & iter), new_text);
+static void select_all (void * user, gboolean selected)
+{
+}
- /* set the renderer uneditable again */
- g_object_set( G_OBJECT(cell) , "editable" , FALSE , NULL );
+static void activate_row (void * user, gint row)
+{
+ aud_playlist_set_active (row);
+
+ if (aud_cfg->playlist_manager_close_on_activate)
+ hide_cb (playman_win);
}
-static void save_config_cb (void * hook_data, void * user_data)
+static void shift_rows (void * user, gint row, gint before)
{
-#if GTK_CHECK_VERSION (2, 18, 0)
- if (gtk_widget_get_visible ((GtkWidget *) user_data))
-#else
- if (GTK_WIDGET_VISIBLE ((GtkWidget *) user_data))
-#endif
- save_position ((GtkWidget *) user_data);
+ if (before < row)
+ aud_playlist_reorder (row, before, 1);
+ else if (before - 1 > row)
+ aud_playlist_reorder (row, before - 1, 1);
}
-static GtkWidget * playman_win = NULL;
+static const AudguiListCallbacks callbacks = {
+ .get_value = get_value,
+ .get_selected = get_selected,
+ .set_selected = set_selected,
+ .select_all = select_all,
+ .activate_row = activate_row,
+ .right_click = NULL,
+ .shift_rows = shift_rows,
+ .data_type = NULL,
+ .get_data = NULL,
+ .receive_data = NULL};
+
+static gboolean position_changed = FALSE;
+
+static void update_hook (void * data, void * list)
+{
+ if (GPOINTER_TO_INT (data) >= PLAYLIST_UPDATE_STRUCTURE)
+ {
+ gint old_rows = audgui_list_row_count (list);
+ gint rows = aud_playlist_count ();
+
+ if (rows < old_rows)
+ {
+ audgui_list_delete_rows (list, rows, old_rows - rows);
+ old_rows = rows;
+ }
+
+ audgui_list_update_rows (list, 0, old_rows);
+ audgui_list_update_selection (list, 0, old_rows);
+
+ if (rows > old_rows)
+ audgui_list_insert_rows (list, old_rows, rows - old_rows);
+
+ audgui_list_set_focus (list, aud_playlist_get_active ());
+ }
+
+ if (GPOINTER_TO_INT (data) >= PLAYLIST_UPDATE_STRUCTURE || position_changed)
+ {
+ audgui_list_set_highlight (list, aud_playlist_get_playing ());
+ position_changed = FALSE;
+ }
+}
+
+static void position_hook (void * data, void * list)
+{
+ if (aud_playlist_update_pending ())
+ position_changed = TRUE;
+ else
+ audgui_list_set_highlight (list, aud_playlist_get_playing ());
+}
void
audgui_playlist_manager_ui_show (GtkWidget *mainwin)
{
GtkWidget *playman_vbox;
GtkWidget * playman_pl_lv, * playman_pl_lv_sw;
- GtkCellRenderer *playman_pl_lv_textrndr_name, *playman_pl_lv_textrndr_entriesnum;
- GtkTreeViewColumn *playman_pl_lv_col_name, *playman_pl_lv_col_entriesnum;
GtkWidget *playman_bbar_hbbox;
GtkWidget * rename_button, * new_button, * delete_button;
GtkWidget * hbox, * button;
@@ -179,34 +199,17 @@ audgui_playlist_manager_ui_show (GtkWidget *mainwin)
g_signal_connect ((GObject *) playman_win, "delete-event", (GCallback)
hide_cb, NULL);
+ audgui_hide_on_escape (playman_win);
playman_vbox = gtk_vbox_new (FALSE, 6);
gtk_container_add( GTK_CONTAINER(playman_win) , playman_vbox );
- playman_pl_lv = gtk_tree_view_new_with_model (audgui_get_library_store ());
- gtk_tree_view_set_reorderable ((GtkTreeView *) playman_pl_lv, TRUE);
-
- playman_pl_lv_textrndr_entriesnum = gtk_cell_renderer_text_new(); /* uneditable */
- playman_pl_lv_textrndr_name = gtk_cell_renderer_text_new(); /* can become editable */
- g_object_set( G_OBJECT(playman_pl_lv_textrndr_entriesnum) , "weight-set" , TRUE , NULL );
- g_object_set( G_OBJECT(playman_pl_lv_textrndr_name) , "weight-set" , TRUE , NULL );
- g_signal_connect( G_OBJECT(playman_pl_lv_textrndr_name) , "edited" ,
- G_CALLBACK(playlist_manager_cb_lv_name_edited) , playman_pl_lv );
- g_object_set_data( G_OBJECT(playman_pl_lv) , "rn" , playman_pl_lv_textrndr_name );
-
- playman_pl_lv_col_name = gtk_tree_view_column_new_with_attributes
- (_("Playlist"), playman_pl_lv_textrndr_name, "text",
- AUDGUI_LIBRARY_STORE_TITLE, "weight", AUDGUI_LIBRARY_STORE_FONT_WEIGHT,
- NULL);
- gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(playman_pl_lv_col_name) , TRUE );
- gtk_tree_view_append_column( GTK_TREE_VIEW(playman_pl_lv), playman_pl_lv_col_name );
-
- playman_pl_lv_col_entriesnum = gtk_tree_view_column_new_with_attributes
- (_("Entries"), playman_pl_lv_textrndr_entriesnum, "text",
- AUDGUI_LIBRARY_STORE_ENTRY_COUNT, "weight",
- AUDGUI_LIBRARY_STORE_FONT_WEIGHT, NULL);
- gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(playman_pl_lv_col_entriesnum) , FALSE );
- gtk_tree_view_append_column( GTK_TREE_VIEW(playman_pl_lv), playman_pl_lv_col_entriesnum );
+ playman_pl_lv = audgui_list_new (& callbacks, NULL, aud_playlist_count ());
+ audgui_list_add_column (playman_pl_lv, _("Title"), 0, G_TYPE_STRING, TRUE);
+ audgui_list_add_column (playman_pl_lv, _("Entries"), 1, G_TYPE_INT, FALSE);
+ audgui_list_set_highlight (playman_pl_lv, aud_playlist_get_playing ());
+ hook_associate ("playlist update", update_hook, playman_pl_lv);
+ hook_associate ("playlist position", position_hook, playman_pl_lv);
playman_pl_lv_sw = gtk_scrolled_window_new( NULL , NULL );
gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) playman_pl_lv_sw,
@@ -235,8 +238,6 @@ audgui_playlist_manager_ui_show (GtkWidget *mainwin)
gtk_box_pack_start( GTK_BOX(playman_vbox) , playman_bbar_hbbox , FALSE , FALSE , 0 );
- g_signal_connect ((GObject *) playman_pl_lv, "row-activated", (GCallback)
- activate_cb, playman_win);
g_signal_connect ((GObject *) rename_button, "clicked", (GCallback)
rename_cb, playman_pl_lv);
g_signal_connect ((GObject *) new_button, "clicked", (GCallback) new_cb,
@@ -244,8 +245,6 @@ audgui_playlist_manager_ui_show (GtkWidget *mainwin)
g_signal_connect ((GObject *) delete_button, "clicked", (GCallback)
delete_cb, playman_pl_lv);
- set_selected_row (playman_pl_lv, aud_playlist_get_active ());
-
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start ((GtkBox *) playman_vbox, hbox, FALSE, FALSE, 0);
button = gtk_check_button_new_with_mnemonic
diff --git a/src/libaudgui/ui_regex.h b/src/libaudgui/ui_regex.h
new file mode 100644
index 0000000..587f8d3
--- /dev/null
+++ b/src/libaudgui/ui_regex.h
@@ -0,0 +1,39 @@
+/* Audacious - Cross-platform multimedia player
+ * Copyright (C) 2005-2006 Audacious development team.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; under version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses>.
+ *
+ * The Audacious team does not consider modular code linking to
+ * Audacious or using our public API to be a derived work.
+ */
+
+#ifndef __UI_REGEX_H__
+#define __UI_REGEX_H__
+
+#if defined USE_REGEX_ONIGURUMA
+ #include <onigposix.h>
+
+#elif defined USE_REGEX_PCRE
+ #include <pcreposix.h>
+
+#elif defined HAVE_REGEX_H
+ #include <regex.h>
+
+#elif defined HAVE_RXPOSIX_H
+ #include <rxposix.h>
+
+#elif defined HAVE_RX_RXPOSIX_H
+ #include <rx/rxposix.h>
+#endif
+
+#endif
diff --git a/src/libaudgui/ui_urlopener.c b/src/libaudgui/ui_urlopener.c
index c6f9ca5..45e39c0 100644
--- a/src/libaudgui/ui_urlopener.c
+++ b/src/libaudgui/ui_urlopener.c
@@ -31,6 +31,7 @@
#include <gtk/gtk.h>
#include <audacious/audconfig.h>
+#include <audacious/gtk-compat.h>
#include <audacious/i18n.h>
#include <audacious/drct.h>
#include <audacious/misc.h>
@@ -63,7 +64,7 @@ GtkWidget * urlopener_add_url_dialog_new (GCallback func, gboolean open)
vbox = gtk_vbox_new(FALSE, 10);
gtk_container_add(GTK_CONTAINER(win), vbox);
- combo = gtk_combo_box_entry_new_text();
+ combo = gtk_combo_box_text_new_with_entry ();
gtk_box_pack_start(GTK_BOX(vbox), combo, FALSE, FALSE, 0);
entry = gtk_bin_get_child(GTK_BIN(combo));
@@ -71,8 +72,8 @@ GtkWidget * urlopener_add_url_dialog_new (GCallback func, gboolean open)
gtk_entry_set_text(GTK_ENTRY(entry), "");
for (url = aud_cfg->url_history; url; url = g_list_next(url))
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo),
- (const gchar *) url->data);
+ gtk_combo_box_text_append_text ((GtkComboBoxText *) combo,
+ (const gchar *) url->data);
g_signal_connect(entry, "activate",
G_CALLBACK(urlopener_add_url_callback),
diff --git a/src/libaudgui/util.c b/src/libaudgui/util.c
index fe2f141..ac3667a 100644
--- a/src/libaudgui/util.c
+++ b/src/libaudgui/util.c
@@ -24,8 +24,12 @@
#include <gtk/gtk.h>
#include <audacious/debug.h>
+#include <audacious/gtk-compat.h>
+#include <audacious/playlist.h>
#include <audacious/plugin.h>
#include <audacious/misc.h>
+#include <libaudcore/audstrings.h>
+#include <libaudcore/hook.h>
#include "libaudgui.h"
#include "libaudgui-gtk.h"
@@ -74,19 +78,34 @@ void audgui_connect_check_box (GtkWidget * box, gboolean * setting)
void audgui_simple_message (GtkWidget * * widget, GtkMessageType type,
const gchar * title, const gchar * text)
{
- if (* widget == NULL)
+ AUDDBG ("%s\n", text);
+
+ if (* widget != NULL)
{
- * widget = gtk_message_dialog_new (NULL, 0, type, GTK_BUTTONS_OK, "%s",
- text);
- gtk_window_set_title ((GtkWindow *) * widget, title);
-
- g_signal_connect (* widget, "response", (GCallback) gtk_widget_destroy,
- NULL);
- audgui_destroy_on_escape (* widget);
- g_signal_connect (* widget, "destroy", (GCallback) gtk_widget_destroyed,
- widget);
+#if GTK_CHECK_VERSION (2, 10, 0)
+ const gchar * old = NULL;
+ g_object_get ((GObject *) * widget, "text", & old, NULL);
+ g_return_if_fail (old);
+
+ if (! strcmp (old, text))
+ goto CREATED;
+
+ gchar both[strlen (old) + strlen (text) + 2];
+ snprintf (both, sizeof both, "%s\n%s", old, text);
+ g_object_set ((GObject *) * widget, "text", both, NULL);
+#endif
+ goto CREATED;
}
+ * widget = gtk_message_dialog_new (NULL, 0, type, GTK_BUTTONS_OK, "%s", text);
+ gtk_window_set_title ((GtkWindow *) * widget, title);
+
+ g_signal_connect (* widget, "response", (GCallback) gtk_widget_destroy, NULL);
+ audgui_destroy_on_escape (* widget);
+ g_signal_connect (* widget, "destroy", (GCallback) gtk_widget_destroyed,
+ widget);
+
+CREATED:
gtk_window_present ((GtkWindow *) * widget);
}
@@ -105,16 +124,20 @@ GdkPixbuf * audgui_pixbuf_from_data (void * data, gint size)
return pixbuf;
}
-GdkPixbuf * audgui_pixbuf_for_file (const gchar * name)
+GdkPixbuf * audgui_pixbuf_for_entry (gint list, gint entry)
{
- /* MMS is slow. Skip it. */
- if (! strncmp (name, "mms://", 6))
- return NULL;
+ const gchar * name = aud_playlist_entry_get_filename (list, entry);
+ g_return_val_if_fail (name, NULL);
- InputPlugin * decoder = aud_file_find_decoder (name, FALSE);
+ /* Don't get album art for network files -- too slow. */
+ if (! strncmp (name, "http://", 7) || ! strncmp (name, "https://", 8) ||
+ ! strncmp (name, "mms://", 6))
+ goto FALLBACK;
+ AUDDBG ("Trying to load pixbuf for %s.\n", name);
+ PluginHandle * decoder = aud_playlist_entry_get_decoder (list, entry, FALSE);
if (! decoder)
- return NULL;
+ goto FALLBACK;
void * data;
gint size;
@@ -123,17 +146,67 @@ GdkPixbuf * audgui_pixbuf_for_file (const gchar * name)
{
GdkPixbuf * p = audgui_pixbuf_from_data (data, size);
g_free (data);
- return p;
+ if (p)
+ return p;
}
gchar * assoc = aud_get_associated_image_file (name);
- if (! assoc)
- return NULL;
+ if (assoc)
+ {
+ GdkPixbuf * p = gdk_pixbuf_new_from_file (assoc, NULL);
+ g_free (assoc);
+ if (p)
+ return p;
+ }
+
+FALLBACK:;
+ AUDDBG ("Using fallback pixbuf.\n");
+ static GdkPixbuf * fallback = NULL;
+ if (! fallback)
+ {
+ gchar * path = g_strdup_printf ("%s/images/album.png",
+ aud_get_path (AUD_PATH_DATA_DIR));
+ fallback = gdk_pixbuf_new_from_file (path, NULL);
+ g_free (path);
+ }
+ if (fallback)
+ g_object_ref ((GObject *) fallback);
+ return fallback;
+}
+
+
+static void clear_cached_pixbuf (void * list, GdkPixbuf * * pixbuf)
+{
+ if (GPOINTER_TO_INT (list) != aud_playlist_get_playing () || ! * pixbuf)
+ return;
- GdkPixbuf * p = gdk_pixbuf_new_from_file (assoc, NULL);
- g_free (assoc);
- return p;
+ AUDDBG ("Clearing cached pixbuf.\n");
+ g_object_unref ((GObject *) * pixbuf);
+ * pixbuf = NULL;
+}
+
+GdkPixbuf * audgui_pixbuf_for_current (void)
+{
+ static GdkPixbuf * pixbuf = NULL;
+ static gboolean hooked = FALSE;
+
+ if (! hooked)
+ {
+ hook_associate ("playlist position", (HookFunction) clear_cached_pixbuf,
+ & pixbuf);
+ hooked = TRUE;
+ }
+
+ if (! pixbuf)
+ {
+ gint list = aud_playlist_get_playing ();
+ pixbuf = audgui_pixbuf_for_entry (list, aud_playlist_get_position (list));
+ }
+
+ if (pixbuf)
+ g_object_ref ((GObject *) pixbuf);
+ return pixbuf;
}
void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, gint size)