|
|
@ -5,7 +5,7 @@ |
|
|
|
* |
|
|
|
* |
|
|
|
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
|
|
|
|
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
static char *font = "Fira Code:pixelsize=18:antialias=true:autohint=true"; |
|
|
|
static char *font = "Comic Code Ligatures:pixelsize=18:antialias=true:autohint=true"; |
|
|
|
#if FONT2_PATCH |
|
|
|
#if FONT2_PATCH |
|
|
|
/* Spare fonts */ |
|
|
|
/* Spare fonts */ |
|
|
|
static char *font2[] = { |
|
|
|
static char *font2[] = { |
|
|
@ -152,32 +152,31 @@ float alphaUnfocused = 0.6; |
|
|
|
/* Terminal colors (16 first used in escape sequence) */ |
|
|
|
/* Terminal colors (16 first used in escape sequence) */ |
|
|
|
static const char *colorname[] = { |
|
|
|
static const char *colorname[] = { |
|
|
|
/* 8 normal colors */ |
|
|
|
/* 8 normal colors */ |
|
|
|
"black", |
|
|
|
"#3b4252", /* 0: nord1 */ |
|
|
|
"red3", |
|
|
|
"#bf616a", /* 1: nord11 */ |
|
|
|
"green3", |
|
|
|
"#a3be8c", /* 2: nord14 */ |
|
|
|
"yellow3", |
|
|
|
"#ebcb8b", /* 3: nord13 */ |
|
|
|
"blue2", |
|
|
|
"#81a1c1", /* 4: nord9 */ |
|
|
|
"magenta3", |
|
|
|
"#b48ead", /* 5: nord15 */ |
|
|
|
"cyan3", |
|
|
|
"#88c0d0", /* 6: nord8 */ |
|
|
|
"gray90", |
|
|
|
"#e5e9f0", /* 7: nord5 */ |
|
|
|
|
|
|
|
|
|
|
|
/* 8 bright colors */ |
|
|
|
/* 8 bright colors */ |
|
|
|
"gray50", |
|
|
|
"#4c566a", /* 8: nord3 */ |
|
|
|
"red", |
|
|
|
"#bf616a", /* 9: nord11 */ |
|
|
|
"green", |
|
|
|
"#a3be8c", /* 10: nord14 */ |
|
|
|
"yellow", |
|
|
|
"#ebcb8b", /* 11: nord3 */ |
|
|
|
"#5c5cff", |
|
|
|
"#81a1c1", /* 12: nord9 */ |
|
|
|
"magenta", |
|
|
|
"#b48ead", /* 13: nord15 */ |
|
|
|
"cyan", |
|
|
|
"#8fbcbb", /* 14: nord7 */ |
|
|
|
"white", |
|
|
|
"#eceff4", /* 15: nord6 */ |
|
|
|
|
|
|
|
|
|
|
|
[255] = 0, |
|
|
|
[255] = 0, |
|
|
|
|
|
|
|
|
|
|
|
/* more colors can be added after 255 to use with DefaultXX */ |
|
|
|
/* more colors can be added after 255 to use with DefaultXX */ |
|
|
|
"#add8e6", /* 256 -> cursor */ |
|
|
|
"#d8dee9", /* 256 -> cursor */ |
|
|
|
"#555555", /* 257 -> rev cursor*/ |
|
|
|
"#2e3440", /* 257 -> rev cursor*/ |
|
|
|
"#000000", /* 258 -> bg */ |
|
|
|
"#000000", /* 256 -> bg */ /* 258 */ |
|
|
|
"#e5e5e5", /* 259 -> fg */ |
|
|
|
"#e5e5e5", /* 8 -> fg */ /* 259 */ |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -189,11 +188,11 @@ static const char *colorname[] = { |
|
|
|
unsigned int defaultbg = 0; |
|
|
|
unsigned int defaultbg = 0; |
|
|
|
unsigned int bg = 17, bgUnfocused = 16; |
|
|
|
unsigned int bg = 17, bgUnfocused = 16; |
|
|
|
#else |
|
|
|
#else |
|
|
|
unsigned int defaultbg = 258; |
|
|
|
unsigned int defaultbg = 257; |
|
|
|
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
|
|
|
|
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
|
|
|
|
unsigned int defaultfg = 259; |
|
|
|
unsigned int defaultfg = 256; |
|
|
|
unsigned int defaultcs = 256; |
|
|
|
unsigned int defaultcs = 256; |
|
|
|
unsigned int defaultrcs = 257; |
|
|
|
unsigned int defaultrcs = 8; |
|
|
|
|
|
|
|
|
|
|
|
#if VIM_BROWSE_PATCH |
|
|
|
#if VIM_BROWSE_PATCH |
|
|
|
unsigned int const currentBg = 6, buffSize = 2048; |
|
|
|
unsigned int const currentBg = 6, buffSize = 2048; |
|
|
@ -299,19 +298,19 @@ ResourcePref resources[] = { |
|
|
|
{ "blinktimeout", INTEGER, &blinktimeout }, |
|
|
|
{ "blinktimeout", INTEGER, &blinktimeout }, |
|
|
|
{ "bellvolume", INTEGER, &bellvolume }, |
|
|
|
{ "bellvolume", INTEGER, &bellvolume }, |
|
|
|
{ "tabspaces", INTEGER, &tabspaces }, |
|
|
|
{ "tabspaces", INTEGER, &tabspaces }, |
|
|
|
#if RELATIVEBORDER_PATCH |
|
|
|
#if RELATIVEBORDER_PATCH |
|
|
|
{ "borderperc", INTEGER, &borderperc }, |
|
|
|
{ "borderperc", INTEGER, &borderperc }, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ "borderpx", INTEGER, &borderpx }, |
|
|
|
{ "borderpx", INTEGER, &borderpx }, |
|
|
|
#endif // RELATIVEBORDER_PATCH
|
|
|
|
#endif // RELATIVEBORDER_PATCH
|
|
|
|
{ "cwscale", FLOAT, &cwscale }, |
|
|
|
{ "cwscale", FLOAT, &cwscale }, |
|
|
|
{ "chscale", FLOAT, &chscale }, |
|
|
|
{ "chscale", FLOAT, &chscale }, |
|
|
|
#if ALPHA_PATCH |
|
|
|
#if ALPHA_PATCH |
|
|
|
{ "alpha", FLOAT, &alpha }, |
|
|
|
{ "alpha", FLOAT, &alpha }, |
|
|
|
#endif // ALPHA_PATCH
|
|
|
|
#endif // ALPHA_PATCH
|
|
|
|
#if ALPHA_FOCUS_HIGHLIGHT_PATCH |
|
|
|
#if ALPHA_FOCUS_HIGHLIGHT_PATCH |
|
|
|
{ "alphaUnfocused",FLOAT, &alphaUnfocused }, |
|
|
|
{ "alphaUnfocused",FLOAT, &alphaUnfocused }, |
|
|
|
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
|
|
|
|
#endif // ALPHA_FOCUS_HIGHLIGHT_PATCH
|
|
|
|
}; |
|
|
|
}; |
|
|
|
#endif // XRESOURCES_PATCH
|
|
|
|
#endif // XRESOURCES_PATCH
|
|
|
|
|
|
|
|
|
|
|
@ -327,43 +326,43 @@ static uint forcemousemod = ShiftMask; |
|
|
|
* Beware that overloading Button1 will disable the selection. |
|
|
|
* Beware that overloading Button1 will disable the selection. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
static MouseShortcut mshortcuts[] = { |
|
|
|
static MouseShortcut mshortcuts[] = { |
|
|
|
#if UNIVERSCROLL_PATCH |
|
|
|
#if UNIVERSCROLL_PATCH |
|
|
|
/* mask button function argument release alt */ |
|
|
|
/* mask button function argument release alt */ |
|
|
|
#else |
|
|
|
#else |
|
|
|
/* mask button function argument release */ |
|
|
|
/* mask button function argument release */ |
|
|
|
#endif // UNIVERSCROLL_PATCH
|
|
|
|
#endif // UNIVERSCROLL_PATCH
|
|
|
|
#if CLIPBOARD_PATCH |
|
|
|
#if CLIPBOARD_PATCH |
|
|
|
{ XK_ANY_MOD, Button2, clippaste, {.i = 0}, 1 }, |
|
|
|
{ XK_ANY_MOD, Button2, clippaste, {.i = 0}, 1 }, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, |
|
|
|
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, |
|
|
|
#endif // CLIPBOARD_PATCH
|
|
|
|
#endif // CLIPBOARD_PATCH
|
|
|
|
#if SCROLLBACK_MOUSE_PATCH |
|
|
|
#if SCROLLBACK_MOUSE_PATCH |
|
|
|
{ ShiftMask, Button4, kscrollup, {.i = 1} }, |
|
|
|
{ ShiftMask, Button4, kscrollup, {.i = 1} }, |
|
|
|
{ ShiftMask, Button5, kscrolldown, {.i = 1} }, |
|
|
|
{ ShiftMask, Button5, kscrolldown, {.i = 1} }, |
|
|
|
#elif UNIVERSCROLL_PATCH |
|
|
|
#elif UNIVERSCROLL_PATCH |
|
|
|
{ XK_ANY_MOD, Button4, ttysend, {.s = "\033[5;2~"}, 0, -1 }, |
|
|
|
{ XK_ANY_MOD, Button4, ttysend, {.s = "\033[5;2~"}, 0, -1 }, |
|
|
|
{ XK_ANY_MOD, Button5, ttysend, {.s = "\033[6;2~"}, 0, -1 }, |
|
|
|
{ XK_ANY_MOD, Button5, ttysend, {.s = "\033[6;2~"}, 0, -1 }, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, |
|
|
|
{ ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, |
|
|
|
{ ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, |
|
|
|
{ ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, |
|
|
|
#endif // SCROLLBACK_MOUSE_PATCH
|
|
|
|
#endif // SCROLLBACK_MOUSE_PATCH
|
|
|
|
#if SCROLLBACK_MOUSE_ALTSCREEN_PATCH |
|
|
|
#if SCROLLBACK_MOUSE_ALTSCREEN_PATCH |
|
|
|
{ XK_NO_MOD, Button4, kscrollup, {.i = 1} }, |
|
|
|
{ XK_NO_MOD, Button4, kscrollup, {.i = 1} }, |
|
|
|
{ XK_NO_MOD, Button5, kscrolldown, {.i = 1} }, |
|
|
|
{ XK_NO_MOD, Button5, kscrolldown, {.i = 1} }, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, |
|
|
|
{ XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, |
|
|
|
{ XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, |
|
|
|
{ XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, |
|
|
|
#endif // SCROLLBACK_MOUSE_ALTSCREEN_PATCH
|
|
|
|
#endif // SCROLLBACK_MOUSE_ALTSCREEN_PATCH
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#if SCROLLBACK_MOUSE_ALTSCREEN_PATCH |
|
|
|
#if SCROLLBACK_MOUSE_ALTSCREEN_PATCH |
|
|
|
static MouseShortcut maltshortcuts[] = { |
|
|
|
static MouseShortcut maltshortcuts[] = { |
|
|
|
/* mask button function argument release */ |
|
|
|
/* mask button function argument release */ |
|
|
|
#if CLIPBOARD_PATCH |
|
|
|
#if CLIPBOARD_PATCH |
|
|
|
{ XK_ANY_MOD, Button2, clippaste, {.i = 0}, 1 }, |
|
|
|
{ XK_ANY_MOD, Button2, clippaste, {.i = 0}, 1 }, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, |
|
|
|
{ XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, |
|
|
|
#endif // CLIPBOARD_PATCH
|
|
|
|
#endif // CLIPBOARD_PATCH
|
|
|
|
{ XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, |
|
|
|
{ XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, |
|
|
|
{ XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, |
|
|
|
{ XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, |
|
|
|
}; |
|
|
|
}; |
|
|
@ -390,42 +389,42 @@ static Shortcut shortcuts[] = { |
|
|
|
{ TERMMOD, XK_Home, zoomreset, {.f = 0} }, |
|
|
|
{ TERMMOD, XK_Home, zoomreset, {.f = 0} }, |
|
|
|
{ TERMMOD, XK_C, clipcopy, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_C, clipcopy, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_V, clippaste, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_V, clippaste, {.i = 0} }, |
|
|
|
#if SCROLLBACK_PATCH |
|
|
|
#if SCROLLBACK_PATCH |
|
|
|
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} }, |
|
|
|
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} }, |
|
|
|
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} }, |
|
|
|
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} }, |
|
|
|
#endif // SCROLLBACK_PATCH
|
|
|
|
#endif // SCROLLBACK_PATCH
|
|
|
|
#if CLIPBOARD_PATCH |
|
|
|
#if CLIPBOARD_PATCH |
|
|
|
{ TERMMOD, XK_Y, clippaste, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_Y, clippaste, {.i = 0} }, |
|
|
|
{ ShiftMask, XK_Insert, clippaste, {.i = 0} }, |
|
|
|
{ ShiftMask, XK_Insert, clippaste, {.i = 0} }, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ TERMMOD, XK_Y, selpaste, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_Y, selpaste, {.i = 0} }, |
|
|
|
{ ShiftMask, XK_Insert, selpaste, {.i = 0} }, |
|
|
|
{ ShiftMask, XK_Insert, selpaste, {.i = 0} }, |
|
|
|
#endif // CLIPBOARD_PATCH
|
|
|
|
#endif // CLIPBOARD_PATCH
|
|
|
|
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, |
|
|
|
#if COPYURL_PATCH || COPYURL_HIGHLIGHT_SELECTED_URLS_PATCH |
|
|
|
#if COPYURL_PATCH || COPYURL_HIGHLIGHT_SELECTED_URLS_PATCH |
|
|
|
{ MODKEY, XK_l, copyurl, {.i = 0} }, |
|
|
|
{ MODKEY, XK_l, copyurl, {.i = 0} }, |
|
|
|
#endif // COPYURL_PATCH
|
|
|
|
#endif // COPYURL_PATCH
|
|
|
|
#if OPENCOPIED_PATCH |
|
|
|
#if OPENCOPIED_PATCH |
|
|
|
{ MODKEY, XK_o, opencopied, {.v = "xdg-open"} }, |
|
|
|
{ MODKEY, XK_o, opencopied, {.v = "xdg-open"} }, |
|
|
|
#endif // OPENCOPIED_PATCH
|
|
|
|
#endif // OPENCOPIED_PATCH
|
|
|
|
#if NEWTERM_PATCH |
|
|
|
#if NEWTERM_PATCH |
|
|
|
{ TERMMOD, XK_Return, newterm, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_Return, newterm, {.i = 0} }, |
|
|
|
#endif // NEWTERM_PATCH
|
|
|
|
#endif // NEWTERM_PATCH
|
|
|
|
#if EXTERNALPIPE_PATCH |
|
|
|
#if EXTERNALPIPE_PATCH |
|
|
|
{ TERMMOD, XK_U, externalpipe, { .v = openurlcmd } }, |
|
|
|
{ TERMMOD, XK_U, externalpipe, { .v = openurlcmd } }, |
|
|
|
#endif // EXTERNALPIPE_PATCH
|
|
|
|
#endif // EXTERNALPIPE_PATCH
|
|
|
|
#if KEYBOARDSELECT_PATCH |
|
|
|
#if KEYBOARDSELECT_PATCH |
|
|
|
{ TERMMOD, XK_Escape, keyboard_select, { 0 } }, |
|
|
|
{ TERMMOD, XK_Escape, keyboard_select, { 0 } }, |
|
|
|
#endif // KEYBOARDSELECT_PATCH
|
|
|
|
#endif // KEYBOARDSELECT_PATCH
|
|
|
|
#if ISO14755_PATCH |
|
|
|
#if ISO14755_PATCH |
|
|
|
{ TERMMOD, XK_I, iso14755, {.i = 0} }, |
|
|
|
{ TERMMOD, XK_I, iso14755, {.i = 0} }, |
|
|
|
#endif // ISO14755_PATCH
|
|
|
|
#endif // ISO14755_PATCH
|
|
|
|
#if INVERT_PATCH |
|
|
|
#if INVERT_PATCH |
|
|
|
{ TERMMOD, XK_X, invert, { 0 } }, |
|
|
|
{ TERMMOD, XK_X, invert, { 0 } }, |
|
|
|
#endif // INVERT_PATCH
|
|
|
|
#endif // INVERT_PATCH
|
|
|
|
#if VIM_BROWSE_PATCH |
|
|
|
#if VIM_BROWSE_PATCH |
|
|
|
{ MODKEY, XK_c, normalMode, {.i = 0} }, |
|
|
|
{ MODKEY, XK_c, normalMode, {.i = 0} }, |
|
|
|
#endif // VIM_BROWSE_PATCH
|
|
|
|
#endif // VIM_BROWSE_PATCH
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -506,11 +505,11 @@ static Key key[] = { |
|
|
|
{ XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, |
|
|
|
{ XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, |
|
|
|
{ XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, |
|
|
|
{ XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, |
|
|
|
{ XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, |
|
|
|
{ XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, |
|
|
|
#if DELKEY_PATCH |
|
|
|
#if DELKEY_PATCH |
|
|
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", -1, 0}, |
|
|
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", -1, 0}, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, |
|
|
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, |
|
|
|
#endif // DELKEY_PATCH
|
|
|
|
#endif // DELKEY_PATCH
|
|
|
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, |
|
|
|
{ XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, |
|
|
|
{ XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, |
|
|
|
{ XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, |
|
|
|
{ XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, |
|
|
|
{ XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, |
|
|
@ -578,11 +577,11 @@ static Key key[] = { |
|
|
|
{ XK_Delete, ControlMask, "\033[3;5~", +1, 0}, |
|
|
|
{ XK_Delete, ControlMask, "\033[3;5~", +1, 0}, |
|
|
|
{ XK_Delete, ShiftMask, "\033[2K", -1, 0}, |
|
|
|
{ XK_Delete, ShiftMask, "\033[2K", -1, 0}, |
|
|
|
{ XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, |
|
|
|
{ XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, |
|
|
|
#if DELKEY_PATCH |
|
|
|
#if DELKEY_PATCH |
|
|
|
{ XK_Delete, XK_ANY_MOD, "\033[3~", -1, 0}, |
|
|
|
{ XK_Delete, XK_ANY_MOD, "\033[3~", -1, 0}, |
|
|
|
#else |
|
|
|
#else |
|
|
|
{ XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, |
|
|
|
{ XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, |
|
|
|
#endif // DELKEY_PATCH
|
|
|
|
#endif // DELKEY_PATCH
|
|
|
|
{ XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, |
|
|
|
{ XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, |
|
|
|
{ XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, |
|
|
|
{ XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, |
|
|
|
{ XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, |
|
|
|
{ XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, |
|
|
@ -706,9 +705,9 @@ static uint selmasks[] = { |
|
|
|
* of single wide characters. |
|
|
|
* of single wide characters. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
static char ascii_printable[] = |
|
|
|
static char ascii_printable[] = |
|
|
|
" !\"#$%&'()*+,-./0123456789:;<=>?" |
|
|
|
" !\"#$%&'()*+,-./0123456789:;<=>?" |
|
|
|
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" |
|
|
|
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" |
|
|
|
"`abcdefghijklmnopqrstuvwxyz{|}~"; |
|
|
|
"`abcdefghijklmnopqrstuvwxyz{|}~"; |
|
|
|
|
|
|
|
|
|
|
|
#if RIGHTCLICKTOPLUMB_PATCH |
|
|
|
#if RIGHTCLICKTOPLUMB_PATCH |
|
|
|
/*
|
|
|
|
/*
|
|
|
|