mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
Some text alignement in ede-bug-report so it can be easily read in the source.
Rewriten ede-crasher. Now is able to call ede-bug-report, display png icon, do backtrace in random temporary files and etc.
This commit is contained in:
parent
cccaf1b72f
commit
dfd2355c18
@ -143,7 +143,10 @@ int main(int argc, char** argv) {
|
||||
title_box->labelsize(14);
|
||||
title_box->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
|
||||
Fl_Box *description_box = new Fl_Box(80, 45, 390, 95, _("To help us to improve the future EDE versions, please describe the problem with much details as possible.\n\nNote: valid email address is required, so developers could contact you for more informations if necessary."));
|
||||
Fl_Box *description_box = new Fl_Box(80, 45, 390, 95, _("To help us to improve the future EDE versions, "
|
||||
"please describe the problem with much details as possible.\n\nNote: valid email address is required, so "
|
||||
"developers could contact you for more informations if necessary."));
|
||||
|
||||
description_box->align(133|FL_ALIGN_INSIDE);
|
||||
|
||||
bug_title_input = new Fl_Input(10, 165, 225, 25, _("Short and descriptive title:"));
|
||||
|
374
ede-bug-tools/ede-crasher/CoreIcon.h
Normal file
374
ede-bug-tools/ede-crasher/CoreIcon.h
Normal file
@ -0,0 +1,374 @@
|
||||
#ifndef __COREICON_H__
|
||||
#define __COREICON_H__
|
||||
|
||||
#include <FL/Fl_Image.H>
|
||||
static unsigned char idata_core[] =
|
||||
{255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,146,148,150,0,147,149,152,0,
|
||||
149,152,154,0,154,157,159,0,158,160,162,0,160,162,164,0,163,165,167,0,166,169,
|
||||
171,0,168,170,172,0,169,171,173,0,170,172,174,0,171,173,175,0,170,172,174,0,172,
|
||||
174,176,0,170,172,174,0,172,174,176,0,183,185,187,0,207,208,210,0,57,58,59,0,0,
|
||||
0,0,0,41,36,26,0,255,221,158,0,255,224,164,0,255,241,216,0,255,240,215,0,255,
|
||||
238,209,0,255,238,209,0,255,238,193,32,255,235,85,160,255,222,8,205,255,212,27,
|
||||
9,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153,
|
||||
156,0,146,148,150,0,147,149,152,0,149,152,154,0,154,157,159,0,158,160,162,0,160,
|
||||
162,164,0,163,165,167,0,166,169,171,0,168,170,172,0,169,171,173,0,170,172,174,0,
|
||||
171,173,175,0,170,172,174,0,172,174,176,0,170,172,174,0,172,174,176,0,183,185,
|
||||
187,0,207,208,210,0,57,58,59,0,0,0,0,0,41,38,27,0,255,226,166,0,255,224,161,23,
|
||||
255,231,127,127,255,233,98,153,255,231,99,150,255,230,80,182,255,226,30,246,255,
|
||||
206,0,255,255,179,0,172,255,175,0,5,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,151,153,156,0,146,148,150,0,147,149,152,0,149,152,154,0,
|
||||
154,157,159,0,158,160,162,0,160,162,164,0,163,165,167,0,167,169,171,0,169,171,
|
||||
173,0,171,173,175,0,173,175,177,0,174,176,178,4,173,175,177,5,175,177,179,3,173,
|
||||
175,177,0,173,175,177,0,184,186,188,0,207,209,211,0,57,58,58,0,0,0,0,0,19,16,13,
|
||||
0,231,192,113,32,255,207,37,220,255,201,0,255,255,201,0,255,255,195,0,255,255,
|
||||
180,0,248,255,163,0,188,255,151,0,67,255,161,0,2,255,179,0,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,146,148,150,0,147,
|
||||
149,152,0,149,152,154,0,154,157,159,0,158,161,163,0,161,164,166,0,165,167,170,8,
|
||||
167,169,171,66,162,164,166,110,158,160,162,152,153,155,157,195,150,153,155,213,
|
||||
149,152,154,214,151,154,156,210,156,158,160,187,162,165,167,140,180,182,183,101,
|
||||
205,207,209,43,81,81,82,59,93,93,92,181,79,83,91,160,154,115,32,179,255,146,0,
|
||||
255,255,142,0,159,255,184,0,31,255,180,0,36,255,161,0,18,255,155,0,0,255,153,0,
|
||||
0,255,165,0,0,255,179,0,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,151,153,156,0,146,148,150,0,147,149,152,0,149,152,154,0,156,159,
|
||||
161,0,160,162,164,27,154,157,158,133,141,144,146,213,126,128,130,255,111,113,
|
||||
115,255,97,99,101,255,87,89,90,255,82,83,85,255,81,83,84,255,85,87,88,255,93,95,
|
||||
96,255,106,109,110,255,127,130,131,255,159,161,163,247,170,172,173,243,199,200,
|
||||
201,255,166,166,167,255,81,82,84,255,75,28,9,254,75,27,0,67,92,65,0,0,217,150,0,
|
||||
0,255,172,0,0,255,163,0,0,255,154,0,0,255,165,0,0,255,179,0,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,146,148,150,0,
|
||||
148,150,153,0,152,155,157,16,147,150,152,141,129,132,134,242,106,108,110,255,78,
|
||||
80,81,255,52,54,54,255,42,43,44,255,53,54,54,255,65,66,66,255,71,72,72,255,71,
|
||||
71,72,255,64,65,65,255,53,53,54,255,40,41,42,255,48,50,51,255,76,78,79,255,109,
|
||||
111,112,255,125,128,130,255,129,132,133,255,77,79,81,255,6,8,10,255,0,0,0,245,0,
|
||||
0,0,62,12,8,0,0,86,55,0,0,214,133,0,0,253,159,0,0,255,174,0,0,255,182,0,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,147,
|
||||
150,152,0,147,150,152,66,131,134,135,221,102,104,106,255,68,70,71,255,36,37,38,
|
||||
255,61,61,62,255,115,116,116,255,170,170,170,255,220,220,220,255,238,238,238,
|
||||
255,245,245,245,255,245,245,245,255,236,236,236,255,216,216,216,255,164,164,164,
|
||||
255,107,107,107,255,61,61,61,255,32,33,34,255,58,60,60,255,89,91,92,255,109,112,
|
||||
113,255,78,80,82,255,13,13,14,255,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,69,38,0,0,
|
||||
177,111,0,0,228,157,0,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,153,155,158,0,142,144,146,117,116,118,120,251,80,82,83,255,37,38,39,
|
||||
255,46,46,47,255,147,147,147,255,231,231,231,255,255,255,255,255,255,255,255,
|
||||
255,252,252,252,255,250,250,250,255,251,251,251,255,250,250,250,255,246,246,246,
|
||||
255,241,241,241,255,237,237,237,255,229,229,229,255,201,201,201,255,130,130,130,
|
||||
255,48,48,48,255,28,29,29,255,66,67,68,255,101,103,105,255,97,99,101,255,66,68,
|
||||
69,134,73,74,75,0,73,74,75,0,69,72,75,0,59,66,75,0,63,68,75,0,89,85,75,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,141,143,146,140,
|
||||
104,106,107,255,65,67,68,255,21,22,22,255,88,88,88,255,214,214,214,255,249,249,
|
||||
249,255,243,243,243,255,241,241,241,255,242,242,242,255,243,243,243,255,244,244,
|
||||
244,255,244,244,244,255,243,243,243,255,238,238,238,255,232,232,232,255,223,223,
|
||||
223,255,212,212,212,255,202,202,202,255,196,195,195,255,166,166,166,255,82,82,
|
||||
82,255,17,18,18,255,50,51,51,255,91,94,95,255,127,130,132,245,154,156,158,77,
|
||||
155,158,160,0,153,157,159,0,153,157,159,0,153,156,159,0,148,153,159,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,142,144,147,123,98,100,102,255,57,58,
|
||||
59,255,12,12,12,255,101,101,101,255,224,224,224,255,229,229,229,255,229,229,
|
||||
229,255,233,233,233,255,235,235,235,255,237,237,237,255,238,238,238,255,238,238,
|
||||
238,255,238,238,238,255,236,236,236,255,232,232,232,255,225,225,225,255,217,217,
|
||||
217,255,207,207,207,255,195,195,195,255,180,180,180,255,167,167,167,255,156,156,
|
||||
156,255,86,86,86,255,9,10,10,255,41,42,42,255,81,83,84,255,122,124,126,244,145,
|
||||
148,150,56,144,147,149,0,144,147,149,0,144,147,149,0,144,147,149,0,255,255,255,
|
||||
0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,149,151,154,76,102,104,106,255,56,57,58,255,5,5,5,
|
||||
255,77,77,77,255,208,208,208,255,211,211,211,255,216,216,216,255,222,222,222,
|
||||
255,227,227,227,255,230,230,230,255,231,231,231,255,232,232,232,255,232,232,232,
|
||||
255,231,231,231,255,229,229,229,255,224,224,224,255,218,218,218,255,210,210,210,
|
||||
255,200,200,200,255,188,188,188,255,173,173,173,255,158,158,158,255,141,141,141,
|
||||
255,129,129,129,255,62,62,62,255,2,2,2,255,38,38,39,255,82,83,85,255,126,129,
|
||||
131,216,144,147,149,17,142,145,147,0,142,145,147,0,142,145,147,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,156,158,161,19,114,116,118,222,62,63,64,255,12,12,12,255,30,30,30,255,
|
||||
176,176,176,255,193,193,193,255,200,200,200,255,208,208,208,255,214,214,214,255,
|
||||
219,219,219,255,222,222,222,255,224,224,224,255,225,225,225,255,225,225,225,255,
|
||||
223,223,223,255,221,221,221,255,216,216,216,255,210,210,210,255,201,201,201,255,
|
||||
191,191,191,255,179,179,179,255,166,166,166,255,150,150,150,255,133,133,133,255,
|
||||
114,114,114,255,96,96,96,255,26,26,26,255,1,1,2,255,42,43,43,255,90,92,93,255,
|
||||
132,135,137,156,140,144,146,0,139,142,144,0,139,142,144,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
133,135,137,159,74,76,77,255,24,25,25,255,0,0,0,255,126,126,126,255,176,176,176,
|
||||
255,180,180,180,255,191,191,191,255,199,199,199,255,205,205,205,255,210,210,210,
|
||||
255,214,214,214,255,215,215,215,255,216,216,216,255,216,216,216,255,214,214,214,
|
||||
255,211,211,211,255,207,207,207,255,201,201,201,255,192,192,192,255,182,182,182,
|
||||
255,170,170,170,255,157,157,157,255,141,141,141,255,124,124,124,255,104,104,104,
|
||||
255,85,85,85,255,52,52,52,255,0,0,0,255,9,9,9,255,54,55,56,255,104,107,108,255,
|
||||
135,138,140,75,135,138,140,0,135,138,140,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,152,155,158,46,95,97,98,247,
|
||||
41,42,42,255,0,0,0,255,15,15,15,255,143,143,143,255,161,161,161,255,170,170,
|
||||
170,255,181,181,181,255,189,189,189,255,195,195,195,255,200,200,200,255,204,204,
|
||||
204,255,205,205,205,255,207,207,207,255,207,207,207,255,206,206,206,255,202,202,
|
||||
202,255,197,197,197,255,190,190,190,255,182,182,182,255,172,172,172,255,160,160,
|
||||
160,255,147,147,147,255,131,131,131,255,113,113,113,255,94,94,94,255,73,73,73,
|
||||
255,50,50,50,255,10,10,10,255,0,0,0,255,21,21,22,255,72,74,75,255,119,121,123,
|
||||
188,133,136,138,0,131,134,136,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,129,131,134,150,62,63,64,255,15,15,15,
|
||||
255,0,0,0,255,5,5,5,255,72,72,72,255,151,151,151,255,160,160,160,255,169,169,
|
||||
169,255,177,177,177,255,183,183,183,255,190,190,190,255,197,197,197,255,199,199,
|
||||
199,255,195,195,195,255,189,189,189,255,186,186,186,255,185,185,185,255,186,186,
|
||||
186,255,182,182,182,255,172,172,172,255,161,161,161,255,149,149,149,255,135,135,
|
||||
135,255,119,119,119,255,102,102,102,255,82,82,82,255,61,61,61,255,39,39,39,255,
|
||||
13,13,13,255,0,0,0,255,2,2,2,255,42,42,43,255,94,96,97,255,128,131,132,66,127,
|
||||
130,132,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,157,159,162,16,100,102,103,226,35,35,36,255,0,0,0,255,13,13,13,255,22,22,
|
||||
22,255,13,13,13,255,83,83,83,255,153,153,153,255,158,158,158,255,167,167,167,
|
||||
255,177,177,177,255,171,171,171,255,152,152,152,255,139,139,139,255,124,124,124,
|
||||
255,119,119,119,255,120,120,120,255,121,121,121,255,128,128,128,255,139,139,139,
|
||||
255,145,145,145,255,148,148,148,255,138,138,138,255,122,122,122,255,105,105,105,
|
||||
255,89,89,89,255,70,70,70,255,48,48,48,255,26,26,26,255,8,8,8,255,0,0,0,255,0,0,
|
||||
0,255,17,17,18,255,68,70,71,255,116,119,120,140,123,127,127,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,145,147,150,77,69,
|
||||
71,71,255,14,14,15,255,0,0,0,255,32,32,32,255,72,72,72,255,11,11,11,255,19,19,
|
||||
19,255,85,85,85,255,148,148,148,255,142,142,142,255,109,109,109,255,87,87,87,
|
||||
255,81,81,81,255,87,87,87,255,94,94,94,255,99,99,99,255,101,101,101,255,101,101,
|
||||
101,255,98,98,98,255,94,94,94,255,91,91,91,255,96,96,96,255,104,104,104,255,107,
|
||||
107,107,255,93,93,93,255,75,75,75,255,55,55,55,255,34,34,34,255,15,15,15,255,3,
|
||||
3,3,255,0,0,0,255,0,0,0,255,3,3,3,255,44,45,46,255,101,103,104,222,121,124,
|
||||
126,10,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,130,131,134,119,46,47,48,255,3,3,3,255,0,0,0,255,31,31,31,255,87,87,87,
|
||||
255,45,45,45,255,10,10,10,255,23,23,23,255,58,58,58,255,55,55,55,255,51,51,51,
|
||||
255,63,63,63,255,72,72,72,255,78,78,78,255,82,82,82,255,86,86,86,255,87,87,87,
|
||||
255,87,87,87,255,86,86,86,255,83,83,83,255,78,78,78,255,71,71,71,255,64,64,64,
|
||||
255,63,63,63,255,66,66,66,255,59,59,59,255,40,40,40,255,19,19,19,255,5,5,5,255,
|
||||
0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,24,25,25,255,83,85,86,251,116,119,120,
|
||||
40,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
114,116,118,176,29,30,30,255,0,0,0,255,0,0,0,255,20,20,20,255,68,68,68,255,72,
|
||||
72,72,255,32,32,32,255,13,13,13,255,23,23,23,255,34,34,34,255,44,44,44,255,52,
|
||||
52,52,255,59,59,59,255,65,65,65,255,68,68,68,255,71,71,71,255,73,73,73,255,73,
|
||||
73,73,255,72,72,72,255,69,69,69,255,65,65,65,255,60,60,60,255,54,54,54,255,46,
|
||||
46,46,255,37,37,37,255,32,32,32,255,23,23,23,255,7,7,7,255,1,1,1,255,0,0,0,255,
|
||||
0,0,0,255,0,0,0,255,0,0,0,255,11,11,12,255,67,69,70,255,110,112,113,73,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,155,157,159,4,96,97,99,
|
||||
215,17,18,18,255,0,0,0,255,0,0,0,255,0,0,0,255,39,39,39,255,60,60,60,255,27,27,
|
||||
27,255,2,2,2,255,14,14,14,255,24,24,24,255,32,32,32,255,39,39,39,255,45,45,45,
|
||||
255,50,50,50,255,54,54,54,255,57,57,57,255,59,59,59,255,59,59,59,255,59,59,59,
|
||||
255,56,56,56,255,53,53,53,255,49,49,49,255,43,43,43,255,37,37,37,255,29,29,29,
|
||||
255,19,19,19,255,10,10,10,255,4,4,4,255,4,4,4,255,1,1,1,255,1,1,1,255,0,0,0,255,
|
||||
0,0,0,255,4,5,5,255,54,55,55,255,102,105,106,116,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,148,151,154,13,82,84,85,234,10,10,11,255,0,0,
|
||||
0,255,0,0,0,255,0,0,0,255,8,8,8,255,34,34,34,255,4,4,4,255,0,0,0,255,3,3,3,
|
||||
255,11,11,11,255,19,19,19,255,26,26,26,255,31,31,31,255,36,36,36,255,40,40,40,
|
||||
255,43,43,43,255,46,46,46,255,46,46,46,255,46,46,46,255,45,45,45,255,43,43,43,
|
||||
255,40,40,40,255,35,35,35,255,29,29,29,255,22,22,22,255,15,15,15,255,11,11,11,
|
||||
255,10,10,10,255,8,8,8,255,6,6,6,255,4,4,4,255,2,2,2,255,0,0,0,255,1,1,1,255,43,
|
||||
44,45,255,96,99,100,145,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,
|
||||
0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,158,160,163,18,75,77,78,237,6,6,6,255,0,0,0,255,0,0,0,255,0,0,0,255,0,
|
||||
0,0,255,3,3,3,255,1,1,1,255,1,1,1,255,1,1,1,255,1,1,1,255,5,5,5,255,12,12,12,
|
||||
255,17,17,17,255,23,23,23,255,28,28,28,255,31,31,31,255,34,34,34,255,36,36,36,
|
||||
255,38,38,38,255,38,38,38,255,36,36,36,255,33,33,33,255,29,29,29,255,24,24,24,
|
||||
255,20,20,20,255,18,18,18,255,18,18,18,255,17,17,17,255,14,14,14,255,12,12,12,
|
||||
255,9,9,9,255,5,5,5,255,2,2,2,255,0,0,0,255,37,37,38,255,90,92,94,149,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,147,149,152,14,74,75,76,234,
|
||||
4,4,4,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,
|
||||
255,1,1,1,255,1,1,1,255,0,0,0,255,1,1,1,255,5,5,5,255,10,10,10,255,16,16,16,255,
|
||||
21,21,21,255,25,25,25,255,28,28,28,255,30,30,30,255,30,30,30,255,29,29,29,255,
|
||||
28,28,28,255,27,27,27,255,26,26,26,255,27,27,27,255,27,27,27,255,26,26,26,255,
|
||||
23,23,23,255,22,22,22,255,19,19,19,255,15,15,15,255,10,10,10,255,5,5,5,255,0,0,
|
||||
0,255,33,34,35,255,88,90,91,145,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,154,156,159,3,81,83,84,213,3,3,3,255,0,0,0,255,0,0,0,255,1,1,1,
|
||||
255,1,1,1,255,1,1,1,255,1,1,1,255,0,0,0,255,1,1,1,255,1,1,1,255,1,1,1,255,2,2,2,
|
||||
255,4,4,4,255,7,7,7,255,11,11,11,255,16,16,16,255,20,20,20,255,24,24,24,255,26,
|
||||
26,26,255,29,29,29,255,31,31,31,255,32,32,32,255,34,34,34,255,35,35,35,255,35,
|
||||
35,35,255,34,34,34,255,33,33,33,255,31,31,31,255,29,29,29,255,26,26,26,255,21,
|
||||
21,21,255,15,15,15,255,8,8,8,255,1,1,1,255,34,35,35,255,85,87,88,118,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,98,100,101,
|
||||
172,4,5,4,255,0,0,0,255,0,0,0,255,2,2,2,255,5,5,5,255,6,6,6,255,5,5,5,255,2,2,2,
|
||||
255,0,0,0,255,1,1,1,255,3,3,3,255,5,5,5,255,9,9,9,255,13,13,13,255,17,17,17,255,
|
||||
22,22,22,255,26,26,26,255,30,30,30,255,34,34,34,255,36,36,36,255,39,39,39,255,
|
||||
41,41,41,255,43,43,43,255,43,43,43,255,42,42,42,255,41,41,41,255,40,40,40,255,
|
||||
38,38,38,255,36,36,36,255,32,32,32,255,28,28,28,255,20,20,20,255,10,10,10,255,
|
||||
3,3,3,255,38,39,40,255,84,86,87,76,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,114,116,117,116,9,9,9,255,0,0,0,255,1,1,1,255,
|
||||
6,6,6,255,16,16,16,255,24,24,24,255,22,22,22,255,11,11,11,255,3,3,3,255,2,2,2,
|
||||
255,4,4,4,255,9,9,9,255,14,14,14,255,18,18,18,255,24,24,24,255,29,29,29,255,33,
|
||||
33,33,255,38,38,38,255,41,41,41,255,44,44,44,255,47,47,47,255,49,49,49,255,50,
|
||||
50,50,255,50,50,50,255,50,50,50,255,49,49,49,255,48,48,48,255,45,45,45,255,42,
|
||||
42,42,255,39,39,39,255,33,33,33,255,24,24,24,255,13,13,13,255,5,5,5,255,46,47,
|
||||
48,252,83,84,86,42,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,134,135,138,72,21,21,21,255,0,0,0,255,1,1,1,255,11,11,11,255,31,
|
||||
31,31,255,49,49,49,255,49,49,49,255,31,31,31,255,12,12,12,255,5,5,5,255,7,7,7,
|
||||
255,13,13,13,255,18,18,18,255,24,24,24,255,29,29,29,255,34,34,34,255,40,40,40,
|
||||
255,44,44,44,255,48,48,48,255,51,51,51,255,54,54,54,255,56,56,56,255,58,58,58,
|
||||
255,58,58,58,255,58,58,58,255,56,56,56,255,55,55,55,255,52,52,52,255,48,48,48,
|
||||
255,45,45,45,255,38,38,38,255,27,27,27,255,12,12,12,255,10,10,10,255,55,56,57,
|
||||
226,79,79,80,12,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,163,166,169,11,56,57,58,221,0,0,0,255,2,2,2,255,13,13,13,255,38,38,38,
|
||||
255,67,67,67,255,72,72,72,255,51,51,51,255,23,23,23,255,11,11,11,255,12,12,12,
|
||||
255,18,18,18,255,24,24,24,255,29,29,29,255,35,35,35,255,40,40,40,255,46,46,46,
|
||||
255,50,50,50,255,55,55,55,255,59,59,59,255,62,62,62,255,64,64,64,255,65,65,65,
|
||||
255,66,66,66,255,65,65,65,255,64,64,64,255,61,61,61,255,58,58,58,255,54,54,54,
|
||||
255,49,49,49,255,41,41,41,255,28,28,28,255,11,11,11,255,16,17,17,255,69,69,70,
|
||||
145,87,87,87,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,82,83,85,144,2,2,2,255,0,0,0,255,9,9,9,255,32,32,32,255,
|
||||
61,61,61,255,73,73,73,255,58,58,58,255,30,30,30,255,15,15,15,255,16,16,16,255,
|
||||
22,22,22,255,29,29,29,255,34,34,34,255,40,40,40,255,46,46,46,255,52,52,52,255,
|
||||
57,57,57,255,62,62,62,255,66,66,66,255,69,69,69,255,72,72,72,255,74,74,74,255,
|
||||
74,74,74,255,73,73,73,255,71,71,71,255,68,68,68,255,64,64,64,255,59,59,59,255,
|
||||
53,53,53,255,42,42,42,255,25,25,25,255,9,9,9,255,30,31,31,255,91,92,92,70,95,
|
||||
95,95,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,255,255,255,0,31,31,32,39,27,28,28,243,0,0,0,255,4,4,4,255,18,18,18,255,
|
||||
38,38,38,255,52,52,52,255,45,45,45,255,27,27,27,255,17,17,17,255,20,20,20,255,
|
||||
26,26,26,255,33,33,33,255,39,39,39,255,45,45,45,255,51,51,51,255,58,58,58,255,
|
||||
63,63,63,255,68,68,68,255,72,72,72,255,77,77,77,255,80,80,80,255,81,81,81,255,
|
||||
81,81,81,255,80,80,80,255,78,78,78,255,74,74,74,255,69,69,69,255,63,63,63,255,
|
||||
53,53,53,255,38,38,38,255,20,20,20,255,12,12,12,255,50,51,51,193,36,36,36,0,11,
|
||||
11,11,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,
|
||||
255,0,0,0,0,1,255,255,255,0,35,36,37,149,6,6,6,255,0,0,0,255,6,6,6,255,15,15,15,
|
||||
255,24,24,24,255,24,24,24,255,18,18,18,255,17,17,17,255,22,22,22,255,30,30,30,
|
||||
255,37,37,37,255,43,43,43,255,49,49,49,255,56,56,56,255,62,62,62,255,68,68,68,
|
||||
255,73,73,73,255,79,79,79,255,84,84,84,255,87,87,87,255,89,89,89,255,89,89,89,
|
||||
255,87,87,87,255,83,83,83,255,79,79,79,255,72,72,72,255,63,63,63,255,49,49,49,
|
||||
255,31,31,31,255,12,12,12,255,29,29,30,255,39,39,40,83,0,0,0,0,0,0,0,1,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,3,255,255,255,0,12,
|
||||
12,13,17,20,20,21,218,0,0,0,255,1,1,1,254,4,4,4,254,7,7,7,255,9,9,9,254,12,12,
|
||||
12,255,17,17,17,254,25,25,25,254,32,32,32,255,39,39,39,254,46,46,46,255,52,52,
|
||||
52,254,59,59,59,254,66,66,66,255,72,72,72,254,78,78,78,255,84,84,84,254,90,90,
|
||||
90,254,94,94,94,255,96,96,96,254,95,95,95,255,92,92,92,255,87,87,87,255,81,81,
|
||||
81,255,71,71,71,254,56,56,56,255,38,38,38,255,18,18,18,255,14,14,14,255,35,36,
|
||||
37,165,7,7,7,0,0,0,0,2,0,0,0,1,0,0,0,1,255,255,255,0,255,255,255,0,255,255,255,
|
||||
0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,1,0,0,
|
||||
0,3,0,0,0,5,0,0,0,10,0,0,0,2,10,10,10,77,8,8,8,252,0,0,0,253,0,0,0,253,1,1,1,
|
||||
253,3,3,3,253,8,8,8,253,15,15,15,253,25,25,25,254,33,33,33,254,41,41,41,254,48,
|
||||
48,48,254,55,55,55,253,62,62,62,253,69,69,69,253,75,75,75,253,82,82,82,253,88,
|
||||
88,88,253,94,94,94,254,98,98,98,254,101,101,101,254,100,100,100,254,95,95,95,
|
||||
253,88,88,88,254,77,77,77,254,62,62,62,254,43,43,43,254,24,24,24,253,10,10,10,
|
||||
255,27,28,28,225,11,12,12,33,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,1,0,0,0,1,255,255,
|
||||
255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,
|
||||
0,1,0,0,0,3,0,0,0,5,0,0,0,10,0,0,0,16,0,0,0,23,0,0,0,20,10,10,10,135,4,4,4,
|
||||
252,0,0,0,252,0,0,0,252,2,2,2,253,5,5,5,253,12,12,12,253,21,21,21,253,31,31,31,
|
||||
253,41,41,41,252,49,49,49,253,56,56,56,252,63,63,63,252,70,70,70,252,76,76,76,
|
||||
253,83,83,83,253,89,89,89,253,95,95,95,253,99,99,99,253,100,100,100,253,98,98,
|
||||
98,254,90,90,90,252,79,79,79,252,63,63,63,252,43,43,43,253,24,24,24,253,9,9,9,
|
||||
253,20,20,20,247,15,15,15,86,0,0,0,13,0,0,0,17,0,0,0,11,0,0,0,6,0,0,0,3,0,0,0,1,
|
||||
0,0,0,1,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,
|
||||
2,0,0,0,5,0,0,0,9,0,0,0,16,0,0,0,24,0,0,0,36,0,0,0,47,1,1,1,55,8,8,8,169,2,2,
|
||||
2,251,0,0,0,252,0,0,0,251,2,2,2,251,7,7,7,251,14,14,14,252,24,24,24,251,35,35,
|
||||
35,250,45,45,45,250,53,53,53,250,61,61,61,251,68,68,68,252,74,74,74,251,81,81,
|
||||
81,252,87,87,87,252,91,91,91,252,92,92,92,252,91,91,91,251,85,85,85,251,72,72,
|
||||
72,251,57,57,57,252,40,40,40,253,22,22,22,252,9,9,9,253,15,15,15,252,14,14,14,
|
||||
127,0,0,0,39,0,0,0,38,0,0,0,27,0,0,0,17,0,0,0,10,0,0,0,6,0,0,0,3,0,0,0,1,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,8,0,0,
|
||||
0,14,0,0,0,23,0,0,0,35,0,0,0,50,0,0,0,67,0,0,0,84,1,1,1,96,6,6,6,183,2,2,3,
|
||||
250,0,0,0,250,0,0,0,249,3,3,3,249,7,7,7,249,14,14,14,249,23,23,23,250,34,34,34,
|
||||
250,43,43,43,250,52,52,52,249,58,58,58,249,64,64,64,249,69,69,69,249,73,73,73,
|
||||
250,75,75,75,250,73,73,73,250,68,68,68,249,58,58,58,250,44,44,44,250,30,30,30,
|
||||
249,17,17,17,250,8,8,8,250,12,13,13,242,11,11,11,148,0,0,0,76,0,0,0,68,0,0,0,52,
|
||||
0,0,0,38,0,0,0,26,0,0,0,16,0,0,0,9,0,0,0,4,0,0,0,1,0,0,0,1,255,255,255,0,255,
|
||||
255,255,0,0,0,0,1,0,0,0,2,0,0,0,6,0,0,0,11,0,0,0,19,0,0,0,32,0,0,0,47,0,0,0,64,
|
||||
0,0,0,84,0,0,0,105,0,0,0,122,4,4,4,139,6,7,7,195,2,2,2,241,0,0,0,247,0,0,0,
|
||||
246,2,2,2,247,5,5,5,246,11,11,11,247,18,18,18,248,25,25,25,246,33,33,33,248,39,
|
||||
39,39,247,43,43,43,246,46,46,46,247,48,48,48,246,47,47,47,248,43,43,43,247,37,
|
||||
37,37,248,27,27,27,248,18,18,18,247,10,10,10,249,7,7,7,248,11,11,11,229,5,5,5,
|
||||
153,0,0,0,113,0,0,0,105,0,0,0,86,0,0,0,67,0,0,0,50,0,0,0,35,0,0,0,22,0,0,0,12,0,
|
||||
0,0,7,0,0,0,3,0,0,0,1,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,3,0,0,0,8,0,0,
|
||||
0,14,0,0,0,24,0,0,0,39,0,0,0,56,0,0,0,75,0,0,0,96,0,0,0,115,4,4,4,139,6,6,6,
|
||||
166,1,1,1,176,3,3,3,193,3,3,3,224,1,1,1,236,0,0,0,236,1,1,1,236,3,3,3,238,6,6,6,
|
||||
238,9,9,9,235,13,13,13,237,17,17,17,237,19,19,19,236,20,20,20,236,21,21,21,237,
|
||||
19,19,19,236,16,16,16,236,12,12,12,238,8,8,8,239,5,5,5,238,6,6,6,235,6,6,6,210,
|
||||
4,4,4,172,1,1,1,146,0,0,0,131,0,0,0,116,0,0,0,98,0,0,0,78,0,0,0,60,0,0,0,43,0,
|
||||
0,0,27,0,0,0,16,0,0,0,9,0,0,0,4,0,0,0,1,255,255,255,0,255,255,255,0,0,0,0,1,0,
|
||||
0,0,4,0,0,0,8,0,0,0,15,0,0,0,27,0,0,0,43,0,0,0,62,0,0,0,82,0,0,0,99,4,4,4,121,
|
||||
8,8,8,148,1,1,1,163,2,2,2,173,3,3,3,184,4,4,4,191,4,4,4,204,2,2,2,214,1,1,1,
|
||||
219,0,0,0,221,0,0,0,222,1,1,1,220,3,3,3,221,4,4,4,221,4,4,4,219,5,5,5,221,5,5,5,
|
||||
222,4,4,4,221,3,3,3,221,3,3,3,223,3,3,3,218,4,4,4,207,2,2,2,191,0,0,0,176,0,0,0,
|
||||
168,4,4,4,157,2,2,2,135,0,0,0,118,0,0,0,102,0,0,0,85,0,0,0,65,0,0,0,47,0,0,0,31,
|
||||
0,0,0,17,0,0,0,10,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,9,0,0,
|
||||
0,16,0,0,0,28,0,0,0,44,0,0,0,63,0,0,0,81,2,2,2,98,10,10,10,126,3,3,3,142,2,2,
|
||||
2,152,4,4,4,159,5,5,5,169,5,5,5,177,4,4,4,183,3,3,3,188,3,3,3,193,2,2,2,197,1,
|
||||
1,1,198,1,1,1,200,1,1,1,200,1,1,1,199,1,1,1,200,1,1,1,201,1,1,1,201,1,1,1,200,
|
||||
2,2,2,199,1,1,2,193,0,0,0,187,0,0,0,178,0,0,0,172,0,0,0,164,0,0,0,156,0,0,0,
|
||||
148,4,4,5,136,1,1,1,115,0,0,0,100,0,0,0,83,0,0,0,65,0,0,0,47,0,0,0,31,0,0,0,18,
|
||||
0,0,0,9,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,8,0,0,0,15,0,0,
|
||||
0,26,0,0,0,41,0,0,0,57,0,0,0,74,9,9,9,98,6,7,7,116,2,2,2,128,5,5,5,135,6,6,6,
|
||||
145,6,6,6,150,6,6,6,156,5,5,5,161,4,4,4,166,3,3,3,170,2,2,2,173,2,2,2,173,2,2,2,
|
||||
174,2,2,2,175,1,1,1,175,1,1,1,175,1,1,1,176,1,1,1,175,1,1,1,172,1,1,1,171,0,0,0,
|
||||
168,1,1,1,164,1,1,1,158,1,1,1,152,1,1,1,146,1,1,1,140,0,0,0,132,2,2,2,127,5,5,5,
|
||||
110,0,0,0,91,0,0,0,77,0,0,0,61,0,0,0,43,0,0,0,28,0,0,0,17,0,0,0,9,0,0,0,5,0,0,0,
|
||||
2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,13,0,0,0,23,0,0,0,36,0,0,0,49,
|
||||
4,4,4,66,12,12,13,89,3,3,3,100,4,4,4,109,6,6,6,117,7,7,7,123,7,7,7,127,6,6,6,
|
||||
133,5,5,5,138,5,5,5,141,4,4,4,145,3,3,3,147,3,3,3,150,2,2,2,149,2,2,2,149,2,2,2,
|
||||
149,2,2,2,150,2,2,2,150,2,2,2,150,1,1,1,147,1,1,1,146,1,1,1,144,1,1,1,140,2,2,2,
|
||||
136,3,3,3,129,4,4,4,126,3,3,3,119,1,1,1,114,0,0,0,109,6,6,6,98,3,3,3,80,0,0,0,
|
||||
65,0,0,0,51,0,0,0,38,0,0,0,24,0,0,0,14,0,0,0,7,0,0,0,4,0,0,0,1,0,0,0,1,255,255,
|
||||
255,0,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,10,0,0,0,18,0,0,0,27,0,0,0,38,14,14,15,57,9,
|
||||
9,9,73,3,3,3,82,6,6,6,89,7,7,7,94,8,8,8,100,8,8,8,105,7,7,7,109,7,7,7,113,6,6,
|
||||
6,117,5,5,5,119,5,5,5,121,4,4,4,121,4,4,4,122,3,3,3,123,3,3,3,123,3,3,3,122,3,
|
||||
3,3,122,3,3,3,123,3,3,3,121,3,3,3,119,3,3,3,117,3,3,3,116,4,4,4,111,7,7,7,107,
|
||||
9,9,9,104,7,7,7,98,3,3,3,94,1,1,1,88,2,2,2,81,9,9,9,68,0,0,0,51,0,0,0,40,0,0,
|
||||
0,29,0,0,0,19,0,0,0,11,0,0,0,6,0,0,0,3,0,0,0,1,0,0,0,1,255,255,255,0,0,0,0,1,
|
||||
0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,12,0,0,0,19,3,3,3,29,19,19,19,45,4,4,4,54,5,5,5,
|
||||
62,7,7,7,69,8,8,8,74,8,8,8,78,8,8,8,82,8,8,8,85,8,8,8,88,7,7,7,90,7,7,7,92,6,6,
|
||||
6,95,6,6,6,95,5,5,5,97,5,5,5,96,5,5,5,97,4,4,4,96,4,4,4,96,4,4,4,96,4,4,4,96,
|
||||
3,3,3,94,3,3,3,91,3,3,3,88,6,6,6,87,10,10,10,84,13,13,13,80,11,11,11,76,6,6,6,
|
||||
72,2,2,2,67,0,0,0,61,10,10,10,53,2,2,2,37,0,0,0,28,0,0,0,20,0,0,0,13,0,0,0,7,0,
|
||||
0,0,4,0,0,0,2,0,0,0,1,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,
|
||||
3,0,0,0,4,0,0,0,8,0,0,0,12,13,13,13,20,20,20,21,33,3,3,3,38,6,6,6,44,8,8,8,49,
|
||||
8,8,8,53,9,9,9,57,9,9,9,60,9,9,9,63,8,8,8,65,8,8,8,67,8,8,8,69,7,7,7,70,7,7,7,
|
||||
71,6,6,6,72,6,6,6,72,6,6,6,73,5,5,5,72,5,5,5,72,5,5,5,70,4,4,4,70,4,4,4,70,4,4,
|
||||
4,68,4,4,4,66,5,5,5,65,9,9,9,62,12,12,12,59,11,11,11,56,6,6,6,52,2,2,2,48,0,0,
|
||||
0,43,9,9,9,38,10,10,10,27,0,0,0,18,0,0,0,13,0,0,0,9,0,0,0,5,0,0,0,2,0,0,0,1,
|
||||
255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,
|
||||
0,0,2,0,0,0,4,0,0,0,7,24,24,25,15,18,18,18,21,3,3,3,25,7,7,7,29,9,9,9,33,9,9,
|
||||
9,36,9,9,9,38,9,9,9,41,9,9,9,43,9,9,9,45,9,9,9,47,9,9,9,48,8,8,8,49,8,8,8,49,
|
||||
8,8,8,51,7,7,7,50,7,7,7,51,6,6,6,50,6,6,6,50,5,5,5,50,5,5,5,49,4,4,4,48,4,4,4,
|
||||
47,3,3,3,46,3,3,3,44,5,5,5,43,8,8,8,40,7,7,7,38,4,4,4,36,2,2,2,32,0,0,0,29,6,6,
|
||||
6,25,16,16,17,18,0,0,0,11,0,0,0,7,0,0,0,4,0,0,0,2,0,0,0,1,255,255,255,0,255,
|
||||
255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,
|
||||
1,0,0,0,2,0,0,0,3,33,34,34,9,16,16,16,13,4,4,4,15,8,8,8,17,9,9,9,20,10,10,10,
|
||||
22,9,9,9,23,9,9,9,25,10,10,10,27,10,10,10,29,10,10,10,29,10,10,10,30,9,9,9,31,
|
||||
9,9,9,32,9,9,9,32,8,8,8,33,8,8,8,33,7,7,7,33,7,7,7,33,6,6,6,32,6,6,6,32,5,5,5,
|
||||
31,4,4,4,31,3,3,3,29,3,3,3,28,3,3,3,27,3,3,3,25,3,3,3,23,2,2,2,22,1,1,1,19,0,0,
|
||||
0,16,4,4,4,14,21,21,22,11,0,0,0,5,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,1,255,255,255,
|
||||
0,255,255,255,0,255,255,255,0};
|
||||
|
||||
static Fl_RGB_Image image_core(idata_core, 48, 48, 4, 0);
|
||||
|
||||
#endif
|
@ -1,9 +1,9 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Ecrasher, a crash handler tool
|
||||
* ede-crasher, a crash handler tool
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2008 EDE Authors.
|
||||
* Copyright (c) 2008-2009 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
@ -14,261 +14,217 @@
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "icons/core.xpm"
|
||||
#include "CrashDialog.h"
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Pixmap.H>
|
||||
#include <FL/Fl_File_Chooser.H>
|
||||
|
||||
#include <sys/utsname.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Box.H>
|
||||
#include <FL/Fl_Button.H>
|
||||
#include <FL/Fl_Text_Display.H>
|
||||
#include <FL/Fl_Text_Buffer.H>
|
||||
#include <FL/Fl_File_Chooser.H>
|
||||
|
||||
#include <edelib/Nls.h>
|
||||
#include <edelib/File.h>
|
||||
#include <edelib/Window.h>
|
||||
#include <edelib/String.h>
|
||||
#include <edelib/Version.h>
|
||||
#include <edelib/MessageBox.h>
|
||||
#include <edelib/FileTest.h>
|
||||
#include <edelib/Run.h>
|
||||
#include <edelib/File.h>
|
||||
|
||||
#define DIALOG_W 380
|
||||
#define DIALOG_H 130
|
||||
#define DIALOG_W_EXPANDED 380
|
||||
#define DIALOG_H_EXPANDED 340
|
||||
#include "CrashDialog.h"
|
||||
#include "GdbOutput.h"
|
||||
#include "CoreIcon.h"
|
||||
#include "icons/core.xpm"
|
||||
|
||||
int spawn_backtrace(const char* gdb_path, const char* program, const char* core, const char* output, const char* script) {
|
||||
const char* gdb_script = "bt\nquit\n";
|
||||
const int gdb_script_len = 8;
|
||||
#define WIN_H_NORMAL 130
|
||||
#define WIN_H_EXPANDED 340
|
||||
|
||||
/* file with gdb commands */
|
||||
int sfd = open(script, O_WRONLY | O_TRUNC | O_CREAT, 0770);
|
||||
if(sfd == -1)
|
||||
return -1;
|
||||
write(sfd, gdb_script, gdb_script_len);
|
||||
close(sfd);
|
||||
EDELIB_NS_USING(String)
|
||||
EDELIB_NS_USING(alert)
|
||||
EDELIB_NS_USING(run_async)
|
||||
EDELIB_NS_USING(file_remove)
|
||||
EDELIB_NS_USING(file_path)
|
||||
|
||||
/* output file with gdb backtrace */
|
||||
int ofd = open(output, O_WRONLY | O_TRUNC | O_CREAT, 0770);
|
||||
if(ofd == -1)
|
||||
return -1;
|
||||
static edelib::Window *win;
|
||||
static Fl_Text_Display *txt_display;
|
||||
static Fl_Text_Buffer *txt_buf;
|
||||
static Fl_Button *save_as;
|
||||
static Fl_Button *show_details;
|
||||
static GdbOutput *gdb;
|
||||
static bool info_was_collected;
|
||||
static const ProgramDetails *pdetails;
|
||||
|
||||
pid_t pid = fork();
|
||||
|
||||
if(pid == -1) {
|
||||
close(ofd);
|
||||
return -1;
|
||||
} else if(pid == 0) {
|
||||
dup2(ofd, 1);
|
||||
close(ofd);
|
||||
|
||||
char* argv[8];
|
||||
argv[0] = (char*)gdb_path;
|
||||
argv[1] = "--quiet";
|
||||
argv[2] = "--batch";
|
||||
argv[3] = "-x";
|
||||
argv[4] = (char*)script;
|
||||
argv[5] = (char*)program;
|
||||
argv[6] = (char*)core;
|
||||
argv[7] = 0;
|
||||
|
||||
execvp(argv[0], argv);
|
||||
return -1;
|
||||
} else {
|
||||
int status;
|
||||
if(waitpid(pid, &status, 0) != pid)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
static void close_cb(Fl_Widget*, void*) {
|
||||
win->hide();
|
||||
}
|
||||
|
||||
edelib::String get_uname(void) {
|
||||
struct utsname ut;
|
||||
uname(&ut);
|
||||
|
||||
edelib::String ret;
|
||||
ret.printf("%s %s %s %s %s", ut.sysname, ut.nodename, ut.release, ut.version, ut.machine);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void show_details_cb(Fl_Widget*, void* cd) {
|
||||
CrashDialog* c = (CrashDialog*)cd;
|
||||
c->show_details();
|
||||
}
|
||||
|
||||
void close_cb(Fl_Widget*, void* cd) {
|
||||
CrashDialog* c = (CrashDialog*)cd;
|
||||
c->hide();
|
||||
}
|
||||
|
||||
void save_cb(Fl_Widget*, void* cd) {
|
||||
CrashDialog* c = (CrashDialog*)cd;
|
||||
c->save();
|
||||
}
|
||||
|
||||
CrashDialog::CrashDialog() : Fl_Window(DIALOG_W, DIALOG_H, _("EDE crash handler")),
|
||||
appname(NULL), apppath(NULL), bugaddress(NULL), pid(NULL), signal_num(NULL) {
|
||||
details_shown = false;
|
||||
|
||||
begin();
|
||||
pix = new Fl_Pixmap((const char**)core_xpm);
|
||||
|
||||
icon_box = new Fl_Box(10, 10, 70, 75);
|
||||
icon_box->image(pix);
|
||||
|
||||
txt_box = new Fl_Box(85, 10, 285, 75);
|
||||
txt_box->align(FL_ALIGN_WRAP | FL_ALIGN_LEFT | FL_ALIGN_INSIDE);
|
||||
|
||||
close = new Fl_Button(280, 95, 90, 25, _("&Close"));
|
||||
close->callback(close_cb, this);
|
||||
|
||||
details = new Fl_Button(10, 95, 265, 25, _("@> Show details"));
|
||||
details->box(FL_FLAT_BOX);
|
||||
details->align(FL_ALIGN_INSIDE | FL_ALIGN_LEFT);
|
||||
details->callback(show_details_cb, this);
|
||||
|
||||
/* widgets for expanded dialog */
|
||||
trace_log = new Fl_Text_Display(10, 130, 360, 165);
|
||||
trace_buff = new Fl_Text_Buffer();
|
||||
trace_log->buffer(trace_buff);
|
||||
trace_log->hide();
|
||||
save_as = new Fl_Button(280, 305, 90, 25, _("&Save As..."));
|
||||
save_as->callback(save_cb, this);
|
||||
save_as->hide();
|
||||
end();
|
||||
}
|
||||
|
||||
CrashDialog::~CrashDialog() {
|
||||
/* looks like fltk does not clean image() assigned data */
|
||||
delete pix;
|
||||
}
|
||||
|
||||
void CrashDialog::show_details(void) {
|
||||
if(trace_log->visible()) {
|
||||
trace_log->hide();
|
||||
save_as->hide();
|
||||
details->label(_("@> Show details"));
|
||||
size(DIALOG_W, DIALOG_H);
|
||||
} else {
|
||||
trace_log->show();
|
||||
save_as->show();
|
||||
details->label(_("@< Hide details"));
|
||||
size(DIALOG_W_EXPANDED, DIALOG_H_EXPANDED);
|
||||
|
||||
if(!details_shown) {
|
||||
trace_buff->remove(0, trace_buff->length());
|
||||
|
||||
edelib::String address = _("\nPlease report this at: ");
|
||||
if(bugaddress)
|
||||
address += bugaddress;
|
||||
else
|
||||
address += "http://bugs.equinox-project.org";
|
||||
|
||||
trace_buff->append(address.c_str());
|
||||
trace_buff->append("\n\n");
|
||||
|
||||
trace_buff->append("---------- short summary ----------\n");
|
||||
trace_buff->append("\nEDE version: " PACKAGE_VERSION);
|
||||
trace_buff->append("\nSystem info: ");
|
||||
trace_buff->append(get_uname().c_str());
|
||||
|
||||
trace_buff->append("\nProgram name: ");
|
||||
if(appname)
|
||||
trace_buff->append(appname);
|
||||
else
|
||||
trace_buff->append("(unknown)");
|
||||
|
||||
trace_buff->append("\nExecutable path: ");
|
||||
if(apppath)
|
||||
trace_buff->append(apppath);
|
||||
else
|
||||
trace_buff->append("(unknown)");
|
||||
|
||||
trace_buff->append("\nRunning PID: ");
|
||||
if(pid)
|
||||
trace_buff->append(pid);
|
||||
else
|
||||
trace_buff->append("(unknown)");
|
||||
|
||||
trace_buff->append("\nSignal received: ");
|
||||
if(signal_num)
|
||||
trace_buff->append(signal_num);
|
||||
else
|
||||
trace_buff->append("(unknown)");
|
||||
|
||||
/* try backtrace via gdb */
|
||||
trace_buff->append("\n\n---------- backtrace ----------\n");
|
||||
|
||||
const char* core_file = "core";
|
||||
const char* gdb_output = "/tmp/.gdb_output";
|
||||
const char* gdb_script = "/tmp/.gdb_script";
|
||||
|
||||
if(!edelib::file_test(core_file, edelib::FILE_TEST_IS_REGULAR)) {
|
||||
trace_buff->append("\nUnable to find 'core' file. Backtrace will not be done.");
|
||||
details_shown = false;
|
||||
return;
|
||||
}
|
||||
|
||||
edelib::String gdb_path = edelib::file_path("gdb");
|
||||
if(gdb_path.empty()) {
|
||||
trace_buff->append("\nUnable to find gdb. Please install it first.");
|
||||
/* set to false so next 'Show Details' click can try again with the debugger */
|
||||
details_shown = false;
|
||||
return;
|
||||
}
|
||||
|
||||
/* TODO: these files should be unique per session */
|
||||
if(spawn_backtrace(gdb_path.c_str(), cmd.c_str(), core_file, gdb_output, gdb_script) == -1) {
|
||||
trace_buff->append("\nUnable to properly execute gdb");
|
||||
details_shown = false;
|
||||
return;
|
||||
}
|
||||
|
||||
trace_buff->append("\n");
|
||||
if(trace_buff->appendfile(gdb_output) != 0) {
|
||||
trace_buff->append("Unable to read gdb output file");
|
||||
details_shown = false;
|
||||
return;
|
||||
}
|
||||
|
||||
edelib::file_remove(gdb_output);
|
||||
edelib::file_remove(gdb_script);
|
||||
edelib::file_remove(core_file);
|
||||
|
||||
details_shown = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CrashDialog::save(void) {
|
||||
const char* p = fl_file_chooser(_("Save details to..."), "Text Files (*.txt)\tAll Files(*)", "dump.txt");
|
||||
static void save_as_cb(Fl_Widget*, void*) {
|
||||
const char *p = fl_file_chooser(_("Save details to..."), "Text Files (*.txt)\tAll Files(*)", "dump.txt");
|
||||
if(!p)
|
||||
return;
|
||||
|
||||
// so we can have EOL in file
|
||||
trace_buff->append("\n");
|
||||
/* so we can have EOL */
|
||||
txt_buf->append("\n");
|
||||
|
||||
if(trace_buff->savefile(p) != 0)
|
||||
edelib::alert(_("Unable to save to %s. Please check permissions to write in this directory or file"), p);
|
||||
if(txt_buf->savefile(p) != 0)
|
||||
alert(_("Unable to save to %s. Please check permissions to write in this directory or file"), p);
|
||||
}
|
||||
|
||||
void CrashDialog::run(void) {
|
||||
edelib::String l;
|
||||
static void write_host_info(void) {
|
||||
txt_buf->append("---------- short summary ----------\n");
|
||||
txt_buf->append("\nEDE version: " PACKAGE_VERSION);
|
||||
txt_buf->append("\nedelib version: " EDELIB_VERSION);
|
||||
|
||||
if(appname || apppath) {
|
||||
const char* p = (appname ? appname : apppath);
|
||||
l.printf(_("Program '%s' just crashed!"), p);
|
||||
} else
|
||||
l += _("Program just crashed!");
|
||||
l += _("\n\nYou can inspect details about this crash by clicking on 'Show details' below");
|
||||
struct utsname ut;
|
||||
if(uname(&ut) == 0) {
|
||||
char buf[1024];
|
||||
snprintf(buf, sizeof(buf), "%s %s %s %s %s", ut.sysname, ut.nodename, ut.release, ut.version, ut.machine);
|
||||
|
||||
txt_box->copy_label(l.c_str());
|
||||
txt_buf->append("\nSystem info: ");
|
||||
txt_buf->append(buf);
|
||||
}
|
||||
|
||||
if(!shown())
|
||||
show();
|
||||
txt_buf->append("\nProgram name: ");
|
||||
if(pdetails->name)
|
||||
txt_buf->append(pdetails->name);
|
||||
else
|
||||
txt_buf->append("(unknown)");
|
||||
|
||||
while(shown())
|
||||
Fl::wait();
|
||||
txt_buf->append("\nProgram path: ");
|
||||
if(pdetails->path)
|
||||
txt_buf->append(pdetails->path);
|
||||
else
|
||||
txt_buf->append("(unknown)");
|
||||
|
||||
txt_buf->append("\nProgram PID: ");
|
||||
if(pdetails->pid)
|
||||
txt_buf->append(pdetails->pid);
|
||||
else
|
||||
txt_buf->append("(unknown)");
|
||||
|
||||
txt_buf->append("\nSignal received: ");
|
||||
if(pdetails->sig)
|
||||
txt_buf->append(pdetails->sig);
|
||||
else
|
||||
txt_buf->append("(unknown)");
|
||||
|
||||
txt_buf->append("\n\n---------- backtrace ----------\n\n");
|
||||
}
|
||||
|
||||
static void collect_info_once(void) {
|
||||
if(info_was_collected)
|
||||
return;
|
||||
|
||||
write_host_info();
|
||||
|
||||
if(gdb->fds_opened() && gdb->run())
|
||||
txt_buf->appendfile(gdb->output_path());
|
||||
|
||||
info_was_collected = true;
|
||||
}
|
||||
|
||||
static void show_details_cb(Fl_Widget*, void*) {
|
||||
if(save_as->visible()) {
|
||||
win->size(win->w(), WIN_H_NORMAL);
|
||||
txt_display->hide();
|
||||
save_as->hide();
|
||||
show_details->label(_("@> Show details"));
|
||||
return;
|
||||
}
|
||||
|
||||
win->size(win->w(), WIN_H_EXPANDED);
|
||||
txt_display->show();
|
||||
save_as->show();
|
||||
show_details->label(_("@< Hide details"));
|
||||
|
||||
collect_info_once();
|
||||
}
|
||||
|
||||
static void report_cb(Fl_Widget*, void*) {
|
||||
String bug_tool = file_path("ede-bug-report");
|
||||
if(bug_tool.empty()) {
|
||||
alert(_("Unable to find ede-bug-report tool."
|
||||
" Please check if PATH variable contains directory where this tool was installed"));
|
||||
return;
|
||||
}
|
||||
|
||||
collect_info_once();
|
||||
|
||||
errno = 0;
|
||||
int fd;
|
||||
char tmp[] = "/tmp/.ecrash-dump.XXXXXX";
|
||||
|
||||
if((fd = mkstemp(tmp)) == -1) {
|
||||
alert(_("Unable to create temporary file: (%i) %s"), errno, strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
txt_buf->savefile(tmp);
|
||||
|
||||
run_async("%s --gdb-dump %s", bug_tool.c_str(), tmp);
|
||||
|
||||
/* wait some time until the file was read; dumb, I know :( */
|
||||
sleep(1);
|
||||
file_remove(tmp);
|
||||
}
|
||||
|
||||
int crash_dialog_show(const ProgramDetails& p) {
|
||||
info_was_collected = false;
|
||||
pdetails = &p;
|
||||
|
||||
gdb = new GdbOutput();
|
||||
gdb->set_program_path(p.path);
|
||||
gdb->fds_open();
|
||||
|
||||
win = new edelib::Window(380, WIN_H_NORMAL, _("EDE Crash Handler"));
|
||||
win->begin();
|
||||
Fl_Box* image_box = new Fl_Box(10, 10, 65, 60);
|
||||
image_box->image(image_core);
|
||||
|
||||
String s;
|
||||
if(p.name)
|
||||
s.printf(_("Program '%s' quit unexpectedly."), p.name);
|
||||
else
|
||||
s = _("Program quit unexpectedly.");
|
||||
s += _("\n\nYou can inspect the details about this crash by clicking on \'Show details\' below");
|
||||
|
||||
Fl_Box* txt_box = new Fl_Box(85, 10, 285, 75, s.c_str());
|
||||
txt_box->align(132|FL_ALIGN_INSIDE);
|
||||
|
||||
/* only EDE applications can have 'Report' button for reporting issues on EDE bugzilla */
|
||||
if(p.ede_app) {
|
||||
Fl_Button* report = new Fl_Button(185, 95, 90, 25, _("&Report..."));
|
||||
report->callback(report_cb);
|
||||
}
|
||||
|
||||
Fl_Button* close = new Fl_Button(280, 95, 90, 25, _("&Close"));
|
||||
close->callback(close_cb);
|
||||
|
||||
show_details = new Fl_Button(10, 95, 165, 25, _("@> Show details"));
|
||||
show_details->box(FL_FLAT_BOX);
|
||||
show_details->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
show_details->callback(show_details_cb);
|
||||
|
||||
txt_display = new Fl_Text_Display(10, 130, 360, 165);
|
||||
txt_buf = new Fl_Text_Buffer();
|
||||
txt_display->buffer(txt_buf);
|
||||
|
||||
txt_display->hide();
|
||||
|
||||
save_as = new Fl_Button(280, 305, 90, 25, _("&Save As..."));
|
||||
save_as->hide();
|
||||
save_as->callback(save_as_cb);
|
||||
win->end();
|
||||
|
||||
win->window_icon(core_xpm);
|
||||
win->show();
|
||||
|
||||
int ret = Fl::run();
|
||||
delete gdb;
|
||||
return ret;
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Ecrasher, a crash handler tool
|
||||
* ede-crasher, a crash handler tool
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2008 EDE Authors.
|
||||
* Copyright (c) 2008-2009 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
@ -13,50 +13,15 @@
|
||||
#ifndef __CRASHDIALOG_H__
|
||||
#define __CRASHDIALOG_H__
|
||||
|
||||
#include <FL/Fl_Box.H>
|
||||
#include <FL/Fl_Button.H>
|
||||
#include <FL/Fl_Pixmap.H>
|
||||
#include <FL/Fl_Text_Display.H>
|
||||
#include <FL/Fl_Text_Buffer.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include <edelib/String.h>
|
||||
|
||||
class CrashDialog : public Fl_Window {
|
||||
private:
|
||||
const char* appname;
|
||||
const char* apppath;
|
||||
const char* bugaddress;
|
||||
const char* pid;
|
||||
const char* signal_num;
|
||||
|
||||
Fl_Pixmap* pix;
|
||||
Fl_Box* txt_box;
|
||||
Fl_Box* icon_box;
|
||||
Fl_Button* close;
|
||||
Fl_Button* details;
|
||||
|
||||
Fl_Text_Display* trace_log;
|
||||
Fl_Text_Buffer* trace_buff;
|
||||
Fl_Button* save_as;
|
||||
|
||||
edelib::String cmd;
|
||||
bool details_shown;
|
||||
|
||||
public:
|
||||
CrashDialog();
|
||||
~CrashDialog();
|
||||
void show_details(void);
|
||||
|
||||
void set_appname(const char* a) { appname = a; }
|
||||
void set_apppath(const char* p) { apppath = p; }
|
||||
void set_bugaddress(const char* a) { bugaddress = a; }
|
||||
void set_pid(const char* p) { pid = p; }
|
||||
void set_signal(const char* s) { signal_num = s; }
|
||||
|
||||
void save(void);
|
||||
|
||||
void run(void);
|
||||
struct ProgramDetails {
|
||||
bool ede_app;
|
||||
const char *name;
|
||||
const char *path;
|
||||
const char *pid;
|
||||
const char *sig;
|
||||
const char *bugaddress;
|
||||
};
|
||||
|
||||
int crash_dialog_show(const ProgramDetails& p);
|
||||
|
||||
#endif
|
||||
|
144
ede-bug-tools/ede-crasher/GdbOutput.cpp
Normal file
144
ede-bug-tools/ede-crasher/GdbOutput.cpp
Normal file
@ -0,0 +1,144 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* ede-crasher, a crash handler tool
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2008-2009 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
* See COPYING for details.
|
||||
*/
|
||||
|
||||
#include <sys/utsname.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <edelib/Missing.h>
|
||||
#include <edelib/File.h>
|
||||
#include <edelib/Debug.h>
|
||||
#include <edelib/File.h>
|
||||
#include <edelib/FileTest.h>
|
||||
|
||||
#include "GdbOutput.h"
|
||||
|
||||
/* assume core is placed in current directory */
|
||||
#define CORE_FILE "core"
|
||||
|
||||
EDELIB_NS_USING(String)
|
||||
EDELIB_NS_USING(file_path)
|
||||
EDELIB_NS_USING(file_test)
|
||||
EDELIB_NS_USING(file_remove)
|
||||
EDELIB_NS_USING(FILE_TEST_IS_REGULAR)
|
||||
|
||||
static void close_and_invalidate(int &fd) {
|
||||
if(fd != -1) {
|
||||
::close(fd);
|
||||
fd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static int write_str(int fd, const char *str) {
|
||||
int len = strlen(str);
|
||||
return ::write(fd, str, len);
|
||||
}
|
||||
|
||||
GdbOutput::~GdbOutput() {
|
||||
close_and_invalidate(sfd);
|
||||
close_and_invalidate(ofd);
|
||||
|
||||
if(!gdb_script_path.empty())
|
||||
file_remove(gdb_script_path.c_str());
|
||||
if(!gdb_output_path.empty())
|
||||
file_remove(gdb_output_path.c_str());
|
||||
|
||||
file_remove(CORE_FILE);
|
||||
}
|
||||
|
||||
bool GdbOutput::fds_open(void) {
|
||||
errno = 0;
|
||||
|
||||
char sp[] = "/tmp/.ecrash-script.XXXXXX";
|
||||
char op[] = "/tmp/.ecrash-output.XXXXXX";
|
||||
|
||||
sfd = mkstemp(sp);
|
||||
if(sfd == -1) {
|
||||
E_WARNING(E_STRLOC ": Unable to open script file: (%i), %s\n", errno, strerror(errno));
|
||||
return false;
|
||||
}
|
||||
|
||||
/* copy it as fast as possible */
|
||||
gdb_script_path = sp;
|
||||
|
||||
ofd = mkstemp(op);
|
||||
if(ofd == -1) {
|
||||
E_WARNING(E_STRLOC ": Unable to open output file: (%i), %s\n", errno, strerror(errno));
|
||||
return false;
|
||||
}
|
||||
|
||||
/* copy it as fast as possible */
|
||||
gdb_output_path = op;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GdbOutput::run(void) {
|
||||
E_RETURN_VAL_IF_FAIL(fds_opened(), false);
|
||||
|
||||
/* write script */
|
||||
::write(sfd, "bt\nquit\n", 8);
|
||||
close_and_invalidate(sfd);
|
||||
|
||||
String gdb_path = file_path("gdb");
|
||||
if(gdb_path.empty()) {
|
||||
/* write straight to the file, so dialog could show it */
|
||||
write_str(ofd, "Unable to find gdb. Please install it first");
|
||||
|
||||
/* see it as valid, so dialog could be shown */
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!file_test(CORE_FILE, FILE_TEST_IS_REGULAR)) {
|
||||
write_str(ofd, "Unable to find '"CORE_FILE"'. Backtrace will not be done.");
|
||||
/* see it as valid, so dialog could be shown */
|
||||
return true;
|
||||
}
|
||||
|
||||
pid_t pid = fork();
|
||||
|
||||
if(pid == -1) {
|
||||
close_and_invalidate(ofd);
|
||||
E_WARNING(E_STRLOC ": Unable to fork the process\n");
|
||||
return false;
|
||||
} else if(pid == 0) {
|
||||
dup2(ofd, 1);
|
||||
close_and_invalidate(ofd);
|
||||
|
||||
char* argv[8];
|
||||
argv[0] = (char*)gdb_path.c_str();
|
||||
argv[1] = "--quiet";
|
||||
argv[2] = "--batch";
|
||||
argv[3] = "-x";
|
||||
argv[4] = (char*)gdb_script_path.c_str();
|
||||
argv[5] = (char*)program_path;
|
||||
argv[6] = (char*)CORE_FILE;
|
||||
argv[7] = 0;
|
||||
|
||||
execvp(argv[0], argv);
|
||||
return false;
|
||||
} else {
|
||||
int status;
|
||||
|
||||
if(waitpid(pid, &status, 0) != pid) {
|
||||
E_WARNING(E_STRLOC ": Failed to execute waitpid() properly\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
42
ede-bug-tools/ede-crasher/GdbOutput.h
Normal file
42
ede-bug-tools/ede-crasher/GdbOutput.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* ede-crasher, a crash handler tool
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2008-2009 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
* See COPYING for details.
|
||||
*/
|
||||
|
||||
#ifndef __GDBOUTPUT_H__
|
||||
#define __GDBOUTPUT_H__
|
||||
|
||||
#ifndef PATH_MAX
|
||||
# define PATH_MAX 256
|
||||
#endif
|
||||
|
||||
#include <edelib/String.h>
|
||||
|
||||
class GdbOutput {
|
||||
private:
|
||||
int sfd, ofd;
|
||||
const char *program_path;
|
||||
edelib::String gdb_output_path;
|
||||
edelib::String gdb_script_path;
|
||||
|
||||
public:
|
||||
GdbOutput() : sfd(-1), ofd(-1), program_path(NULL) { }
|
||||
~GdbOutput();
|
||||
|
||||
void set_program_path(const char *p) { program_path = p; }
|
||||
|
||||
bool fds_open(void);
|
||||
bool fds_opened(void) { return (sfd != 1 && ofd != -1); }
|
||||
|
||||
bool run(void);
|
||||
const char *output_path(void) { return (gdb_output_path.empty() ? NULL : gdb_output_path.c_str()); }
|
||||
};
|
||||
|
||||
#endif
|
@ -10,7 +10,7 @@
|
||||
|
||||
SubDir TOP ede-bug-tools ede-crasher ;
|
||||
|
||||
SOURCE = ede-crasher.cpp CrashDialog.cpp ;
|
||||
SOURCE = ede-crasher.cpp GdbOutput.cpp CrashDialog.cpp ;
|
||||
|
||||
EdeProgram ede-crasher : $(SOURCE) ;
|
||||
TranslationStrings locale : $(SOURCE) ;
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* ede-crasher, a crash handler tool
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2008 EDE Authors.
|
||||
* Copyright (c) 2008-2009 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
@ -30,10 +30,11 @@ static void help(void) {
|
||||
puts("EDE crash handler\n");
|
||||
puts("Options:");
|
||||
puts(" -h, --help this help");
|
||||
puts(" -e, --edeapp use this flag for EDE applications");
|
||||
puts(" -b, --bugaddress [ADDRESS] bug address to use");
|
||||
puts(" -p, --pid [PID] the PID of the program");
|
||||
puts(" -a, --appname [NAME] name of the program");
|
||||
puts(" -e, --apppath [PATH] path to the executable");
|
||||
puts(" -t, --apppath [PATH] path to the executable");
|
||||
puts(" -s, --signal [SIGNAL] the signal number that was caught");
|
||||
}
|
||||
|
||||
@ -43,49 +44,54 @@ int main(int argc, char** argv) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char* a;
|
||||
const char* bugaddress = NULL;
|
||||
const char* appname = NULL;
|
||||
const char* apppath = NULL;
|
||||
const char* pid = 0;
|
||||
const char* signal_num = 0;
|
||||
const char* a;
|
||||
ProgramDetails p;
|
||||
|
||||
p.bugaddress = NULL;
|
||||
p.name = NULL;
|
||||
p.path = NULL;
|
||||
p.pid = NULL;
|
||||
p.sig = NULL;
|
||||
p.ede_app = false;
|
||||
|
||||
for(int i = 1; i < argc; i++) {
|
||||
a = argv[i];
|
||||
if(CHECK_ARGV(a, "-h", "--help")) {
|
||||
help();
|
||||
return 0;
|
||||
} else if(CHECK_ARGV(a, "-e", "--edeapp")) {
|
||||
p.ede_app = true;
|
||||
} else if(CHECK_ARGV(a, "-b", "--bugaddress")) {
|
||||
bugaddress = next_param(i, argv, argc);
|
||||
if(!bugaddress) {
|
||||
p.bugaddress = next_param(i, argv, argc);
|
||||
if(!p.bugaddress) {
|
||||
puts("Missing bug address parameter");
|
||||
return 1;
|
||||
}
|
||||
i++;
|
||||
} else if(CHECK_ARGV(a, "-p", "--pid")) {
|
||||
pid = next_param(i, argv, argc);
|
||||
if(!pid) {
|
||||
p.pid = next_param(i, argv, argc);
|
||||
if(!p.pid) {
|
||||
puts("Missing pid parameter");
|
||||
return 1;
|
||||
}
|
||||
i++;
|
||||
} else if(CHECK_ARGV(a, "-a", "--appname")) {
|
||||
appname = next_param(i, argv, argc);
|
||||
if(!appname) {
|
||||
p.name = next_param(i, argv, argc);
|
||||
if(!p.name) {
|
||||
puts("Missing application name");
|
||||
return 1;
|
||||
}
|
||||
i++;
|
||||
} else if(CHECK_ARGV(a, "-e", "--apppath")) {
|
||||
apppath = next_param(i, argv, argc);
|
||||
if(!apppath) {
|
||||
} else if(CHECK_ARGV(a, "-t", "--apppath")) {
|
||||
p.path = next_param(i, argv, argc);
|
||||
if(!p.path) {
|
||||
puts("Missing application path");
|
||||
return 1;
|
||||
}
|
||||
i++;
|
||||
} else if(CHECK_ARGV(a, "-s", "--signal")) {
|
||||
signal_num = next_param(i, argv, argc);
|
||||
if(!signal_num) {
|
||||
p.sig = next_param(i, argv, argc);
|
||||
if(!p.sig) {
|
||||
puts("Missing signal number");
|
||||
return 1;
|
||||
}
|
||||
@ -96,14 +102,5 @@ int main(int argc, char** argv) {
|
||||
}
|
||||
}
|
||||
|
||||
CrashDialog cd;
|
||||
cd.set_appname(appname);
|
||||
cd.set_apppath(apppath);
|
||||
cd.set_bugaddress(bugaddress);
|
||||
cd.set_pid(pid);
|
||||
cd.set_signal(signal_num);
|
||||
|
||||
cd.run();
|
||||
|
||||
return 0;
|
||||
return crash_dialog_show(p);
|
||||
}
|
||||
|
@ -5,24 +5,28 @@ code_name {.cxx}
|
||||
Function {} {open
|
||||
} {
|
||||
Fl_Window {} {open
|
||||
xywh {354 160 380 130} type Double visible
|
||||
xywh {424 427 380 130} type Double visible
|
||||
} {
|
||||
Fl_Box {} {
|
||||
image {../icons/core.xpm} xywh {10 10 70 75} labelsize 14
|
||||
image {../icons/core.png} xywh {10 10 65 60} labelsize 14
|
||||
}
|
||||
Fl_Box {} {
|
||||
label {Program foo just crashed !!!
|
||||
label {Program foo quit unexpectedly.
|
||||
|
||||
You can inspect details about this crash by clicking on 'Show details' below} selected
|
||||
You can inspect the details about this crash by clicking on 'Show details' below}
|
||||
xywh {85 10 285 75} align 148
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {@> Show details}
|
||||
xywh {10 95 165 25} box FLAT_BOX align 20
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {&Report...} selected
|
||||
xywh {185 95 90 25}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {&Close}
|
||||
xywh {280 95 90 25}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {@> Show details}
|
||||
xywh {10 95 265 25} box FLAT_BOX align 20
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,33 +2,37 @@
|
||||
version 1.0108
|
||||
header_name {.h}
|
||||
code_name {.cxx}
|
||||
Function {} {open selected
|
||||
Function {} {open
|
||||
} {
|
||||
Fl_Window {} {open
|
||||
xywh {354 160 380 340} type Double visible
|
||||
xywh {404 188 380 340} type Double visible
|
||||
} {
|
||||
Fl_Box {} {
|
||||
image {../icons/core.xpm} xywh {10 10 70 75} labelsize 14
|
||||
image {../icons/core.png} xywh {10 10 65 60} labelsize 14
|
||||
}
|
||||
Fl_Box {} {
|
||||
label {Program foo just crashed !!!
|
||||
label {Program foo quit unexpectedly.
|
||||
|
||||
You can inspect details about this crash by clicking on 'Show details' below}
|
||||
You can inspect the details about this crash by clicking on 'Show details' below}
|
||||
xywh {85 10 285 75} align 148
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {@< Hide details}
|
||||
xywh {10 95 165 25} box FLAT_BOX align 20
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {&Report...}
|
||||
xywh {185 95 90 25}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {&Close}
|
||||
xywh {280 95 90 25}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {@< Hide details}
|
||||
xywh {10 95 265 25} box FLAT_BOX align 20
|
||||
}
|
||||
Fl_Text_Display {} {
|
||||
xywh {10 130 360 165} labelsize 14 textsize 14
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {&Save As...}
|
||||
label {&Save As...} selected
|
||||
xywh {280 305 90 25}
|
||||
}
|
||||
}
|
||||
|
BIN
ede-bug-tools/ede-crasher/icons/core.png
Normal file
BIN
ede-bug-tools/ede-crasher/icons/core.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
@ -1,416 +1,122 @@
|
||||
/* XPM */
|
||||
static char * core_xpm[] = {
|
||||
"48 48 365 2",
|
||||
"16 16 103 2",
|
||||
" c None",
|
||||
". c #FAE601",
|
||||
"+ c #FCF001",
|
||||
"@ c #FEF800",
|
||||
"# c #F9E202",
|
||||
"$ c #F2BE04",
|
||||
"% c #F2BD04",
|
||||
"& c #F5CC03",
|
||||
"* c #FBE901",
|
||||
"= c #FBEC01",
|
||||
"- c #EB9A06",
|
||||
"; c #EEAA05",
|
||||
"> c #FEFC00",
|
||||
", c #F7D506",
|
||||
"' c #E78808",
|
||||
") c #E88D06",
|
||||
"! c #D1B46D",
|
||||
"~ c #C7AF75",
|
||||
"{ c #C2994A",
|
||||
"] c #F1BB04",
|
||||
"^ c #F5CF03",
|
||||
"/ c #FCEE01",
|
||||
"( c #EDD426",
|
||||
"_ c #DCBC76",
|
||||
": c #E3C06E",
|
||||
"< c #CCAB4F",
|
||||
"[ c #E7C16F",
|
||||
"} c #ECC36B",
|
||||
"| c #CCB34C",
|
||||
"1 c #FCFB04",
|
||||
"2 c #D1C652",
|
||||
"3 c #D0B76B",
|
||||
"4 c #DDBA6C",
|
||||
"5 c #DAB96E",
|
||||
"6 c #CFBB40",
|
||||
"7 c #A7A7A7",
|
||||
"8 c #A8A8A8",
|
||||
"9 c #A9A9A9",
|
||||
"0 c #A4A4A4",
|
||||
"a c #9F9F9F",
|
||||
"b c #999999",
|
||||
"c c #919191",
|
||||
"d c #A5B4BE",
|
||||
"e c #E7E7E1",
|
||||
"f c #C3C2C7",
|
||||
"g c #B3AB9B",
|
||||
"h c #B5A679",
|
||||
"i c #C5AF6A",
|
||||
"j c #D6B86A",
|
||||
"k c #CDB16B",
|
||||
"l c #C9B05B",
|
||||
"m c #B7A27C",
|
||||
"n c #EBDC19",
|
||||
"o c #AFAFAF",
|
||||
"p c #B8B8B8",
|
||||
"q c #BBBBBB",
|
||||
"r c #BCBCBC",
|
||||
"s c #BABABA",
|
||||
"t c #B4B4B4",
|
||||
"u c #888888",
|
||||
"v c #7B7B7B",
|
||||
"w c #102032",
|
||||
"x c #808285",
|
||||
"y c #FBF5F2",
|
||||
"z c #D9D0BF",
|
||||
"A c #C6AD71",
|
||||
"B c #DFBB69",
|
||||
"C c #D9B86B",
|
||||
"D c #C0AC7C",
|
||||
"E c #BBA785",
|
||||
"F c #AAAAAA",
|
||||
"G c #ADADAD",
|
||||
"H c #D6D6D6",
|
||||
"I c #EBEBEB",
|
||||
"J c #FCFCFC",
|
||||
"K c #FEFEFE",
|
||||
"L c #FFFFFF",
|
||||
"M c #FBFBFB",
|
||||
"N c #F5F5F5",
|
||||
"O c #E7E7E7",
|
||||
"P c #D2D2D2",
|
||||
"Q c #868686",
|
||||
"R c #636363",
|
||||
"S c #616161",
|
||||
"T c #6E6E6E",
|
||||
"U c #3E3E3D",
|
||||
"V c #3B3A3A",
|
||||
"W c #161311",
|
||||
"X c #65605D",
|
||||
"Y c #C3BCB7",
|
||||
"Z c #D8CFB0",
|
||||
"` c #D1B873",
|
||||
" . c #DFBD6A",
|
||||
".. c #C8B37E",
|
||||
"+. c #AAAEBF",
|
||||
"@. c #FFFD00",
|
||||
"#. c #B1B1B1",
|
||||
"$. c #CACACA",
|
||||
"%. c #E9E9E9",
|
||||
"&. c #F0F0F0",
|
||||
"*. c #E5E5E5",
|
||||
"=. c #E3E3E3",
|
||||
"-. c #E1E1E1",
|
||||
";. c #DFDFDF",
|
||||
">. c #898989",
|
||||
",. c #3C3C3C",
|
||||
"'. c #393939",
|
||||
"). c #262626",
|
||||
"!. c #1D1D1E",
|
||||
"~. c #0F0F0F",
|
||||
"{. c #5A5857",
|
||||
"]. c #5A5955",
|
||||
"^. c #4D4D45",
|
||||
"/. c #918E7A",
|
||||
"(. c #D3CBA7",
|
||||
"_. c #E5DCB3",
|
||||
":. c #E0DECD",
|
||||
"<. c #AEAEAE",
|
||||
"[. c #D3D3D3",
|
||||
"}. c #FAFAFA",
|
||||
"|. c #FDFDFD",
|
||||
"1. c #EFEFEF",
|
||||
"2. c #EAEAEA",
|
||||
"3. c #DDDDDD",
|
||||
"4. c #D7D7D7",
|
||||
"5. c #D0D0D0",
|
||||
"6. c #C9C9C9",
|
||||
"7. c #C1C1C1",
|
||||
"8. c #BDBDBD",
|
||||
"9. c #7D7D7D",
|
||||
"0. c #333333",
|
||||
"a. c #131313",
|
||||
"b. c #4F4F4F",
|
||||
"c. c #484848",
|
||||
"d. c #5F5F60",
|
||||
"e. c #393C3A",
|
||||
"f. c #080C09",
|
||||
"g. c #1F1F1B",
|
||||
"h. c #817F74",
|
||||
"i. c #D8D6C6",
|
||||
"j. c #F2F2E8",
|
||||
"k. c #DFE7F0",
|
||||
"l. c #F9F9F9",
|
||||
"m. c #F3F3F3",
|
||||
"n. c #EDEDED",
|
||||
"o. c #E8E8E8",
|
||||
"p. c #E4E4E4",
|
||||
"q. c #DEDEDE",
|
||||
"r. c #CCCCCC",
|
||||
"s. c #C3C3C3",
|
||||
"t. c #B9B9B9",
|
||||
"u. c #ABABAB",
|
||||
"v. c #A1A1A1",
|
||||
"w. c #151515",
|
||||
"x. c #4B4B4B",
|
||||
"y. c #6B6B6B",
|
||||
"z. c #3F3F3F",
|
||||
"A. c #1B1B1B",
|
||||
"B. c #121211",
|
||||
"C. c #050604",
|
||||
"D. c #000000",
|
||||
"E. c #0C0707",
|
||||
"F. c #433F37",
|
||||
"G. c #7E7F79",
|
||||
"H. c #F7F7F7",
|
||||
"I. c #ECECEC",
|
||||
"J. c #E2E2E2",
|
||||
"K. c #DCDCDC",
|
||||
"L. c #B0B0B0",
|
||||
"M. c #A5A5A5",
|
||||
"N. c #979797",
|
||||
"O. c #969696",
|
||||
"P. c #434343",
|
||||
"Q. c #191919",
|
||||
"R. c #010101",
|
||||
"S. c #060001",
|
||||
"T. c #0C0203",
|
||||
"U. c #050002",
|
||||
"V. c #0B0D14",
|
||||
"W. c #EEEEEE",
|
||||
"X. c #DADADA",
|
||||
"Y. c #C6C6C6",
|
||||
"Z. c #BEBEBE",
|
||||
"`. c #B6B6B6",
|
||||
" + c #9C9C9C",
|
||||
".+ c #909090",
|
||||
"++ c #848484",
|
||||
"@+ c #6C6C6C",
|
||||
"#+ c #1A1A1A",
|
||||
"$+ c #060606",
|
||||
"%+ c #020101",
|
||||
"&+ c #010403",
|
||||
"*+ c #020405",
|
||||
"=+ c #010202",
|
||||
"-+ c #D8D8D8",
|
||||
";+ c #CFCFCF",
|
||||
">+ c #C2C2C2",
|
||||
",+ c #A2A2A2",
|
||||
"'+ c #878787",
|
||||
")+ c #787878",
|
||||
"!+ c #656565",
|
||||
"~+ c #252525",
|
||||
"{+ c #080C0D",
|
||||
"]+ c #F4F4F4",
|
||||
"^+ c #D9D9D9",
|
||||
"/+ c #D4D4D4",
|
||||
"(+ c #CECECE",
|
||||
"_+ c #C5C5C5",
|
||||
":+ c #BFBFBF",
|
||||
"<+ c #B2B2B2",
|
||||
"[+ c #A0A0A0",
|
||||
"}+ c #989898",
|
||||
"|+ c #8E8E8E",
|
||||
"1+ c #737373",
|
||||
"2+ c #6D6D6D",
|
||||
"3+ c #585858",
|
||||
"4+ c #202020",
|
||||
"5+ c #070707",
|
||||
"6+ c #4B4C4C",
|
||||
"7+ c #767676",
|
||||
"8+ c #D1D1D1",
|
||||
"9+ c #A3A3A3",
|
||||
"0+ c #9B9B9B",
|
||||
"a+ c #949494",
|
||||
"b+ c #8C8C8C",
|
||||
"c+ c #838383",
|
||||
"d+ c #797979",
|
||||
"e+ c #6F6F6F",
|
||||
"f+ c #676767",
|
||||
"g+ c #4A4A4A",
|
||||
"h+ c #030303",
|
||||
"i+ c #181818",
|
||||
"j+ c #040404",
|
||||
"k+ c #565656",
|
||||
"l+ c #D5D5D5",
|
||||
"m+ c #C7C7C7",
|
||||
"n+ c #C4C4C4",
|
||||
"o+ c #ACACAC",
|
||||
"p+ c #9E9E9E",
|
||||
"q+ c #7E7E7E",
|
||||
"r+ c #666666",
|
||||
"s+ c #606060",
|
||||
"t+ c #575757",
|
||||
"u+ c #353535",
|
||||
"v+ c #383738",
|
||||
"w+ c #777677",
|
||||
"x+ c #494949",
|
||||
"y+ c #CBCBCB",
|
||||
"z+ c #B5B5B5",
|
||||
"A+ c #9A9A9A",
|
||||
"B+ c #939393",
|
||||
"C+ c #8B8B8B",
|
||||
"D+ c #7C7C7C",
|
||||
"E+ c #5E5E5E",
|
||||
"F+ c #595959",
|
||||
"G+ c #424242",
|
||||
"H+ c #171717",
|
||||
"I+ c #0C0C0C",
|
||||
"J+ c #5D5D5D",
|
||||
"K+ c #2F2F2F",
|
||||
"L+ c #8F8F8F",
|
||||
"M+ c #8A8A8A",
|
||||
"N+ c #858585",
|
||||
"O+ c #7F7F7F",
|
||||
"P+ c #757575",
|
||||
"Q+ c #686868",
|
||||
"R+ c #5B5B5B",
|
||||
"S+ c #4D4D4D",
|
||||
"T+ c #6F6D6E",
|
||||
"U+ c #3B3B3B",
|
||||
"V+ c #9D9D9D",
|
||||
"W+ c #959595",
|
||||
"X+ c #8D8D8D",
|
||||
"Y+ c #828282",
|
||||
"Z+ c #6A6A6A",
|
||||
"`+ c #646464",
|
||||
" @ c #555555",
|
||||
".@ c #2E2E2E",
|
||||
"+@ c #0B0B0B",
|
||||
"@@ c #020202",
|
||||
"#@ c #222222",
|
||||
"$@ c #1D1D1D",
|
||||
"%@ c #080808",
|
||||
"&@ c #808080",
|
||||
"*@ c #7A7A7A",
|
||||
"=@ c #707070",
|
||||
"-@ c #5F5F5F",
|
||||
";@ c #545454",
|
||||
">@ c #525252",
|
||||
",@ c #2B2B2B",
|
||||
"'@ c #0D0D0D",
|
||||
")@ c #050505",
|
||||
"!@ c #111111",
|
||||
"~@ c #5A5A5A",
|
||||
"{@ c #929292",
|
||||
"]@ c #717171",
|
||||
"^@ c #515151",
|
||||
"/@ c #3D3D3D",
|
||||
"(@ c #272727",
|
||||
"_@ c #323232",
|
||||
":@ c #6D6C6C",
|
||||
"<@ c #1C1C1C",
|
||||
"[@ c #535353",
|
||||
"}@ c #414141",
|
||||
"|@ c #0A0A0A",
|
||||
"1@ c #646363",
|
||||
"2@ c #161616",
|
||||
"3@ c #696969",
|
||||
"4@ c #313131",
|
||||
"5@ c #1F1F1F",
|
||||
"6@ c #0E0E0E",
|
||||
"7@ c #090909",
|
||||
"8@ c #121212",
|
||||
"9@ c #444444",
|
||||
"0@ c #464646",
|
||||
"a@ c #282828",
|
||||
"b@ c #5C5C5C",
|
||||
"c@ c #141414",
|
||||
"d@ c #212121",
|
||||
"e@ c #101010",
|
||||
"f@ c #616061",
|
||||
"g@ c #626262",
|
||||
"h@ c #232323",
|
||||
"i@ c #373737",
|
||||
"j@ c #5B5959",
|
||||
"k@ c #1E1E1E",
|
||||
"l@ c #2C2C2C",
|
||||
"m@ c #505050",
|
||||
"n@ c #494646",
|
||||
"o@ c #303030",
|
||||
"p@ c #626162",
|
||||
"q@ c #292929",
|
||||
"r@ c #2A2A2A",
|
||||
"s@ c #616060",
|
||||
"t@ c #2D2D2D",
|
||||
"u@ c #575656",
|
||||
"v@ c #363636",
|
||||
"w@ c #3E3E3E",
|
||||
"x@ c #5F5E5E",
|
||||
"y@ c #3A3A3A",
|
||||
"z@ c #242424",
|
||||
"A@ c #343434",
|
||||
"B@ c #383838",
|
||||
"C@ c #474747",
|
||||
"D@ c #4F4D4D",
|
||||
"E@ c #737272",
|
||||
"F@ c #404040",
|
||||
"G@ c #5B5A5A",
|
||||
"H@ c #696869",
|
||||
"I@ c #4E4E4E",
|
||||
"J@ c #3D3C3C",
|
||||
"K@ c #5D5B5C",
|
||||
"L@ c #6A696A",
|
||||
"M@ c #454545",
|
||||
"N@ c #5B595A",
|
||||
"O@ c #6A6969",
|
||||
"P@ c #515050",
|
||||
"Q@ c #595859",
|
||||
"R@ c #656464",
|
||||
"S@ c #413F3F",
|
||||
"T@ c #747373",
|
||||
"U@ c #5F5E5F",
|
||||
"V@ c #605F5F",
|
||||
"W@ c #595858",
|
||||
"X@ c #545252",
|
||||
" . + ",
|
||||
" @ # $ % & * ",
|
||||
" = - ; $ ",
|
||||
" > , ' ) ",
|
||||
" > ! ~ { ] ^ ",
|
||||
" / ( _ : < . ",
|
||||
" [ } | ",
|
||||
" 1 2 3 4 5 6 ",
|
||||
" 7 8 9 0 a b c d e f g h i j k l m n ",
|
||||
" 8 o p q r s t 8 b u v w x y z A B C D E ",
|
||||
" F G s H I J K L M N O P t Q R S T U V W X Y Z ` ...+. @. ",
|
||||
" 7 #.$.%.L L L M N &.%.*.=.-.;.$.>.,.'.).!.~.{.].^./.(._.:. ",
|
||||
" <.[.}.L L |.N 1.2.=.3.4.5.6.7.8.7.s 9.0.a.b.c.d.e.f.g.h.i.j.k. ",
|
||||
" #.I L L l.m.n.I o.p.q.4.[.r.s.t.u.v.G u w.x.y.z.A.B.C.D.E.F.G. ",
|
||||
" #.m.L H.1.I.I.o.*.J.K.H 5.6.7.t.L.M.N.O.u P.S P.Q.R.D.S.T.U.D.V. ",
|
||||
" 8 W.L &.%.o.O *.J.3.X.[.r.Y.Z.`.G 0 +.+Q ++@+0.#+$+D.R.%+&+*+=+ ",
|
||||
" c q.L I.-.=.-.;.3.-+[.;+$.>+r t u.,+b c '+9.)+!+~+R.D.R.R.D.D.{+ ",
|
||||
" )+L.]+o.^+X.^+H /+P (+6._+:+t.<+8 [+}+|+++v 1+2+3+4+D.D.D.D.D.5+6+ ",
|
||||
" 7+8+%.4.8+8+5.(+$.Y.s.Z.p <+u.9+0+a+b+c+d+e+f+R g+w.D.D.D.h+i+j+k+ ",
|
||||
" y.>.l+H 6.m+m+n+7.Z.q `.L.o+M.p+O..+u q+7+e+r+s+t+u+5+D.D.D.D.D.D.v+w+ ",
|
||||
" x+a+y+_+q r q p z+<+<.9 0 a A+B+C+c+D+1+2+!+E+F+G+H+R.D.D.D.D.D.D.I+r+ ",
|
||||
" J+K+L+Z.z+<.o G F 7 M.[+ +N.c M+N+O+P+e+Q+S R+F+S+~+h+D.D.D.D.D.D.D.D.c.T+ ",
|
||||
" U+i+2+t 9 a [+V+A+}+W+c X+>.Y+v )+1+Z+`+J+t+ @x..@+@@@h+@@@@D.D.D.D.D.#@P+ ",
|
||||
" $@%@U+O.0 B+X+|+b+M+'+c+&@*@P+=@@+`+-@F+;@>@c.,@'@j+j+j+j+j+@@D.D.D.D.)@t+ ",
|
||||
"@++@D.!@~@{@.+&@O+O+v d+7+]@@+Q+!+s+3+ @^@g+/@(@'@)@$+$+j+j+$+$+h+R.D.D.D._@:@ ",
|
||||
"J+@@D.D.<@~@D+D+7+1+=@T y.r+S -@R+3+[@x.}@K+#+|@)@$+$+$+)@$+5+%@%@h+D.D.D.$@1@ ",
|
||||
"3+@@D.D.D.2@G+s+3@Q+r+`+S J+F+[@S+g+}@4@5@6@)@$+)@5+5+5+5+%@7@|@+@5+@@D.D.8@E+ ",
|
||||
";@@@D.D.D.D.|@~+U+9@c.g+g+0@P.U+4@a@$@~.5+$+5+5+5+%@%@7@7@|@+@I+'@'@$+D.D.'@b@ ",
|
||||
"b.@@D.D.D.D.R.@@+@c@$@d@#@5@<@H+!@7@$+5+5+5+%@|@+@+@7@+@I+'@6@6@e@a.6@h+D.I+~@ ",
|
||||
"-@)@D.D.D.D.h+h+@@h+j+)@j+$+$+5+$+$+$+5+5+5+7@+@I+I+I+'@~.e@8@a.a.2@2@5+D.e@E+ ",
|
||||
"-@+@D.D.D.D.h+@@h+j+j+)@)@$+$+5+%@%@%@%@7@|@|@+@'@'@6@~.!@!@a.w.w.2@<@7@D.a.f@ ",
|
||||
"g@!@D.D.D.D.h+j+$+$+$+$+$+5+5+%@7@7@7@|@+@I+I+'@~.~.e@!@a.c@2@i+Q.#+h@I+D.#@!+ ",
|
||||
" 5@@@D.D.D.$+$+$+$+5+5+5+%@7@7@|@|@|@+@I+'@e@8@8@c@2@2@H+#+A.<@$@4+a@~.D.i@j@ ",
|
||||
" P.h+D.D.D.5+%@5+%@|@|@+@|@I+I+'@6@~.~.~.e@8@8@c@H+i+Q.#+<@k@4+d@).l@a.@@m@n@ ",
|
||||
" Q+I+D.D.D.$+%@7@|@|@+@I+I+'@'@~.e@e@e@e@8@c@2@H+Q.A.$@k@4+h@~+).l@o@c@6@p@ ",
|
||||
" ++q@@@D.D.%@|@+@I+I++@I+6@e@!@!@8@c@c@c@w.i+A.A.$@5@#@h@~+a@r@l@u+4@a._@s@ ",
|
||||
" k+5+D.D.%@I+~.6@6@6@~.8@8@a.c@w.H+i+H+Q.<@5@5@d@h@).a@l@t@o@0.,.t@6@u@ ",
|
||||
" =@).D.D.)@+@8@!@!@a.c@c@w.2@H+i+#+A.<@k@4+#@h@).q@,@.@_@0.v@z.w@<@4@x@ ",
|
||||
" 3+6@D.R.$+8@2@w.2@H+i+Q.#+#+A.$@5@d@h@~+).a@,@.@o@0.v@y@P.x+K+2@x@ ",
|
||||
" 9@j+D.@@6@Q.A.Q.Q.A.k@5@k@4+#@h@z@(@r@l@K+_@A@v@B@U+C@S+U+w.x.D@ ",
|
||||
" E@i@R.D.)@8@k@#@d@5@d@h@z@~+(@q@a@l@K+4@A@B@'.,.P.x.b./@Q.F@G@ ",
|
||||
" H@4@D.D.$+c@h@r@r@q@(@(@q@,@.@K+_@A@v@y@w@P.g+^@I@B@<@J@K@ ",
|
||||
" L@0.)@D.)@8@#@o@0.0._@_@_@A@v@i@y@F@M@g+m@^@M@l@k@P.N@ ",
|
||||
" O@z.6@D.@@|@A.r@i@w@/@w@F@}@P.0@x+x.x.P..@4+).P@Q@ ",
|
||||
" F+(@+@j+j++@c@#@t@'.}@9@0@G+'..@#@H+z@^@R@S@ ",
|
||||
" R@k+0.|@5+j+)@@@R.D.D.R.R.j+c@u+F+T@ ",
|
||||
" U@s@;@,.z@|@'@)@5+i+d@,.E@ ",
|
||||
" E+V@W@R+W@X@ "};
|
||||
". c #FF9F10",
|
||||
"+ c #FF9904",
|
||||
"@ c #FF9200",
|
||||
"# c #717374",
|
||||
"$ c #727475",
|
||||
"% c #707273",
|
||||
"& c #76787B",
|
||||
"* c #757877",
|
||||
"= c #6A491D",
|
||||
"- c #616364",
|
||||
"; c #777778",
|
||||
"> c #C7C7C7",
|
||||
", c #E7E7E7",
|
||||
"' c #E1E0E0",
|
||||
") c #AEADAD",
|
||||
"! c #646465",
|
||||
"~ c #313740",
|
||||
"{ c #585A5C",
|
||||
"] c #646565",
|
||||
"^ c #E0E0E0",
|
||||
"/ c #F0F0F0",
|
||||
"( c #EEEEEE",
|
||||
"_ c #E5E5E5",
|
||||
": c #CFCFCF",
|
||||
"< c #9F9F9F",
|
||||
"[ c #3C3C3C",
|
||||
"} c #585A5B",
|
||||
"| c #131314",
|
||||
"1 c #8F8F8F",
|
||||
"2 c #C8C8C8",
|
||||
"3 c #CDCDCD",
|
||||
"4 c #C9C9C9",
|
||||
"5 c #C2C2C2",
|
||||
"6 c #ADADAD",
|
||||
"7 c #848484",
|
||||
"8 c #414140",
|
||||
"9 c #0A0B0B",
|
||||
"0 c #6A6C6E",
|
||||
"a c #454748",
|
||||
"b c #101010",
|
||||
"c c #3F3E3E",
|
||||
"d c #737373",
|
||||
"e c #686868",
|
||||
"f c #6A6A6A",
|
||||
"g c #535353",
|
||||
"h c #1F1F1F",
|
||||
"i c #000000",
|
||||
"j c #353637",
|
||||
"k c #232424",
|
||||
"l c #0E0E0E",
|
||||
"m c #151515",
|
||||
"n c #292929",
|
||||
"o c #373737",
|
||||
"p c #383838",
|
||||
"q c #2D2D2D",
|
||||
"r c #1A1A1A",
|
||||
"s c #070707",
|
||||
"t c #19191A",
|
||||
"u c #1C1C1D",
|
||||
"v c #080808",
|
||||
"w c #161616",
|
||||
"x c #1E1E1E",
|
||||
"y c #1B1B1B",
|
||||
"z c #171717",
|
||||
"A c #0B0B0B",
|
||||
"B c #121313",
|
||||
"C c #2E2E2F",
|
||||
"D c #040404",
|
||||
"E c #191919",
|
||||
"F c #0C0C0C",
|
||||
"G c #1C1C1C",
|
||||
"H c #282828",
|
||||
"I c #303030",
|
||||
"J c #323232",
|
||||
"K c #2E2E2E",
|
||||
"L c #1B1C1C",
|
||||
"M c #2C2C2D",
|
||||
"N c #363636",
|
||||
"O c #141414",
|
||||
"P c #3F3F3F",
|
||||
"Q c #494949",
|
||||
"R c #4A4A4A",
|
||||
"S c #424242",
|
||||
"T c #232323",
|
||||
"U c #252526",
|
||||
"V c #060606",
|
||||
"W c #090909",
|
||||
"X c #131313",
|
||||
"Y c #3D3D3D",
|
||||
"Z c #515151",
|
||||
"` c #616161",
|
||||
" . c #5F5F5F",
|
||||
".. c #212121",
|
||||
"+. c #3B3B3B",
|
||||
"@. c #4F4F4F",
|
||||
"#. c #585858",
|
||||
"$. c #434343",
|
||||
"%. c #010101",
|
||||
"&. c #050505",
|
||||
"*. c #181818",
|
||||
"=. c #020202",
|
||||
"-. c #010102",
|
||||
" . + @ ",
|
||||
" # $ % & * = ",
|
||||
" - ; > , ' ) ! ~ ",
|
||||
" { ] ^ / ( _ : < [ } ",
|
||||
" | 1 2 3 4 5 6 7 8 9 0 ",
|
||||
" a b c d e e f e g h i j ",
|
||||
" k l m l n o p q r s i t ",
|
||||
" u i i i v w x h y z A B ",
|
||||
" C D E D F G H I J K G L ",
|
||||
" M l N O G I P Q R S T U ",
|
||||
" V W X n Y Z ` .S r ",
|
||||
" i s ..+.@.#.$.E V ",
|
||||
" D %.&.b *.O s %. ",
|
||||
" &.&.=.i i i %.-. ",
|
||||
" ",
|
||||
" "};
|
||||
|
Loading…
Reference in New Issue
Block a user