рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдлреНрд▓реЛрдЯ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд╛рд░реНрдЯ рдХреЗ рдкреНрд░рджрд░реНрд╢рди, рдЦрд┐рдВрдЪрд╛рд╡, рд╕реНрдХреНрд░реЙрд▓ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рддрд╛ рд╣реИредрд▓реЗрдЦрди рд╢реИрд▓реА рд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реИ (gtkmm рдХреЗ рдмрд┐рдирд╛)ред рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рдирд┐рдХрд▓рд╛, рдмрд╣рддреЗ рдЧрд░реНрднрдкрд╛рдд рдХреЗ рд╕рд╛рдеред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рдЪрд░ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИредрдореВрд▓ рд░реВрдк рд╕реЗ, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рдХреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЧреНрд░рд╛рдлрд╝рд┐рдХ_рдкреИрд░реЗрдЯрд░реНрд╕ рдХрд╣рд╛ рд╣реИред GTK рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЕрдкрдиреЗ рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GtkEventBox рдореЗрдВ рдПрдХ "рдмрдЯрди-рдкреНрд░реЗрд╕-рдИрд╡реЗрдВрдЯ" рд╕рд┐рдЧреНрдирд▓ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдЬреЗрдЯ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░-рдИрд╡реЗрдВрдЯ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ GtkEventBox рд╣рдореЗрд╢рд╛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЖрдХрд╛рд░ рд▓реЗрддрд╛ рд╣реИред рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЖрдХрд╛рд░ рд╣рд╛рде рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЖрдк GtkFrame рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредcairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
cairo_t *cr = cairo_create(surface);
Cairo_t рдореЗрдВ, рд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ cairo_stroke рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ cairo_stroke рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░
cairo_move_to, cairo_line_to рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реИред Cairo_stroke рдХреЗ рдмрд╛рдж, cairo_t рдХреА рд╕рд╛рдордЧреНрд░реА рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ cairo_stroke (cr) рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЖрдк
рд╕рд╛рдордЧреНрд░реА рдФрд░ cairo_save / cairo_restore рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП cairo_stroke_preserve рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдпрджрд┐ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрдХрд░, config_event_cb рд╕рд┐рдЧреНрдирд▓), рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП cairo_surface_t рдФрд░ cairo_t рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдкреБрди: рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдЖрдк рд╢реЗрдбреНрдпреВрд▓ рдХреЛ рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ
cairo_set_source_rgb(cr,0.8,0.8,0.8);
cairo_paint(cr);
рдЕрдЧрд▓рд╛, cairo_surface_t рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИvoid gtk_image_set_from_surface (GtkImage *image, cairo_surface_t *surface);
рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рддрдм рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИeventbox=gtk_event_box_new();
g_signal_connect(eventbox,"button-press-event", G_CALLBACK(eventbox_press_cb), this);
GtkAdjustment *adj_h=gtk_adjustment_new(0,0,100,1,5,10);
GtkAdjustment *adj_v=gtk_adjustment_new(0,0,100,1,5,10);
GtkWidget *viewport=gtk_viewport_new(adj_h, adj_v);
scrolledwindow=gtk_scrolled_window_new(adj_h, adj_v);
g_object_set(scrolledwindow, "hscrollbar-policy", GTK_POLICY_EXTERNAL, "vscrollbar-policy", GTK_POLICY_EXTERNAL, NULL);
gtk_container_add(GTK_CONTAINER(viewport), scrolledwindow);
gtk_widget_set_events(scrolledwindow, GDK_SCROLL_MASK);
g_signal_connect(scrolledwindow,"scroll-event",G_CALLBACK(eventbox_scroll_cb), this);
GtkWidget *box=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
adj=gtk_adjustment_new(0,0,110,1,5,10);
g_signal_connect(adj,"value-changed", G_CALLBACK(adj_changed_cb), this);
scrollbar=gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL,adj);
gtk_box_pack_end(GTK_BOX(box),scrollbar, FALSE,FALSE,0);
image_from_surface=gtk_image_new_from_surface(surface);
gtk_container_add(GTK_CONTAINER(scrolledwindow),image_from_surface);
gtk_box_pack_start(GTK_BOX(box),viewport, TRUE,TRUE,0);
gtk_container_add(GTK_CONTAINER(eventbox),box);
рдореИрдВрдиреЗ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреН, рд╕реНрдХреНрд░реЙрд▓рдбрд╡рд┐рдВрдбреЛ GtkScrolledWindow рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИредрдЕрдЯреИрдЪрдореЗрдВрдЯ рдСрд░реНрдбрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЫрд╡рд┐-> рд╕реНрдХреНрд░реЙрд▓рдбрд╡рд┐рдВрдбреЛ-> рд╡реНрдпреВрдкреЛрд░реНрдЯ-> рдмреЙрдХреНрд╕-> рдИрд╡реЗрдВрдЯрдмреЙрдХреНрд╕ -> (рдлреНрд░реЗрдо)рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░реЙрд▓рдбрд╡рд┐рдВрдбреЛ-> рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЧреНрд░рд╛рдл рдХреЗрд╡рд▓ рдмрдврд╝реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдмреЙрдХреНрд╕ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ 3 рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рд╡рд┐рдЬреЗрдЯреНрд╕ рдореЗрдВ рдЬрд╣рд╛рдВ 1 рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдЬреЗрдЯ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП gtk_container_add рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред g_object_set рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реЙрд▓рдбрд╡рд┐рдВрдбреЛ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ред рдЖрдк GValue рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ GValue val = G_VALUE_INIT;
g_value_init(&val, G_TYPE_BOOLEAN);
g_value_set_boolean(&val, TRUE);
gtk_container_child_set_property(GTK_CONTAINER(data->notebook), gr, "tab-expand", &val);
рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рддрдВрддреНрд░: рдкреВрд░реЗ рдЦрдВрдб рдХреЛ 100 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред 100 рдирдВрдмрд░ gtk_adjustment_new (0,0,110,1,5,10) рд╕реЗ 100 = 110-10 рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЖрдЧреЗ, рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдкрд╛рда рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓реЗрдмрд▓ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рджрд┐рдП рдЧрдП рдлрд╝реЙрдиреНрдЯ рдФрд░ рдЙрд╕рдХреЗ рд╕реНрдерд▓рд╛рдХреГрддрд┐рдХ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдкрд╛рда рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдФрд░ рдХреИрд░реЛ рдкрд░рдд рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
PangoLayout* get_width_height_of_text(char *text, char *font, float size, float *w, float *h)
{
GdkScreen *screen = gdk_screen_get_default();
PangoContext *context = gdk_pango_context_get_for_screen (screen);
PangoLayout *layout = pango_layout_new (context);
if(g_utf8_validate(text,-1,0))
{
pango_layout_set_text(layout,text,-1);
PangoFontDescription *desc=pango_font_description_new();
pango_font_description_set_family(desc,font);
pango_font_description_set_size(desc,size*1024);
pango_layout_set_font_description (layout, desc);
int width=0,height=0;
pango_layout_get_size(layout, &width, &height);
*w=(float) width/1024;
*h=(float) height/1024;
pango_font_description_free(desc);
}
else
{
printf(" UTF8\n");
}
return layout;
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрдВрдЧреЛ рдЕрдкрдиреА рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдЖрдХрд╛рд░ рдЧрд┐рдирддрд╛ рд╣реИред рдореИрдВрдиреЗрдкрд╛рда рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ редclass text_layout
{
private:
int fontsize;
public:
GString *text;
GString *font;
PangoLayout *layout;
int width;
int height;
text_layout(char *text, char *font, int fontsize);
void change_text_font_fontsize(char *new_text, char *new_font, int new_fontsize);
~text_layout();
text_layout(float num, char *font, int fontsize);
};
рдЪрд╛рд░реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ:class graphic_parameters
{
private:
text_layout y_text=text_layout(" y","Liberation Serif", 14);
text_layout x_text=text_layout(" x","Liberation Serif", 14);
text_layout *number=0;
float max=0;
float min=0;
text_layout *max_=0;
text_layout *min_=0;
GtkAdjustment *adj;
GtkWidget *scrollbar;
float gap_x=25;
float gap_y=5;
void create_axes_and_xy_labels(void);
public:
cairo_t *cr;
float *massiv=0;
int len=0;
int count_in_display=0;
float multiplier_x=6;
int offset=0;
float x_null=0;
float y_null=0;
int pos=0;
float margin=16;
int callback_width;
int callback_height;
int widget_width;
int widget_height;
int scroll_height=0;
GtkWidget *eventbox;
GtkWidget *scrolledwindow;
GtkWidget *image_from_surface;
cairo_surface_t *surface;
graphic_parameters(int width, int height);
~graphic_parameters();
void resize_graphic(int new_width, int new_height);
void create_one_dimensional_graphic(float *massiv, int size);
void update_graphic(int offset);
void change_graphic_adj(void);
void create_vertical_line(void);
};
рдпрд╣ рд╡рд░реНрдЧ рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИредclass externals
{
public:
graphic_parameters *param;
externals();
};
class appdata : public externals
{
public:
char *glade_name=(char*)"window.glade";
GtkApplication *app;
GtkWidget *win;
GtkNotebook *notebook;
GtkMenuBar *menubar;
appdata();
};
рдпрд╣реА рд╣реИ, рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЧреНрд░рд╛рдлрд┐рдХ_рдкреИрд░рдореАрдЯрд░ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ NULL, 0 рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдерд╛ред Segfaults 3 рдмрд╛рд░ рд╣реБрдЖ: рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ 2 рдмрд╛рд░ FALSE рдЫреВрдЯ рдЧрдпрд╛ рдФрд░ redraw рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рд░рдгреА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХреНрдпреВрдЯреА рдореЗрдВ рдкреНрд▓реЙрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░ рдХреНрдпреВрд╕реАрдореЛрдЯрдкреНрд▓реЙрдЯ рдХреНрд▓рд╛рд╕ рд╣реИ, рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред
рдЬреАрдердм рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ