/* remote_panel.c generated by valac 0.56.17, the Vala compiler
 * generated from remote_panel.vala, do not modify */

/* -*- Mode: Vala; indent-tabs-mode: nil; tab-width: 4 -*-
 * -*- coding: utf-8 -*-
 *
 * Copyright (C) 2011 ~ 2018 Deepin, Inc.
 *               2011 ~ 2018 Wang Yong
 *
 * Author:     Wang Yong <wangyong@deepin.com>
 * Maintainer: Wang Yong <wangyong@deepin.com>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <gtk/gtk.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gdk/gdk.h>
#include <glib/gi18n-lib.h>
#include <float.h>
#include <math.h>
#include <gee.h>
#include <cairo-gobject.h>
#include <gio/gio.h>
#include <glib/gstdio.h>

#define GETTEXT_PACKAGE "deepin-terminal-gtk"
#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define WIDGETS_TYPE_BASE_PANEL (widgets_base_panel_get_type ())
#define WIDGETS_BASE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_BASE_PANEL, WidgetsBasePanel))
#define WIDGETS_BASE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_BASE_PANEL, WidgetsBasePanelClass))
#define WIDGETS_IS_BASE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_BASE_PANEL))
#define WIDGETS_IS_BASE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_BASE_PANEL))
#define WIDGETS_BASE_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_BASE_PANEL, WidgetsBasePanelClass))

typedef struct _WidgetsBasePanel WidgetsBasePanel;
typedef struct _WidgetsBasePanelClass WidgetsBasePanelClass;
typedef struct _WidgetsBasePanelPrivate WidgetsBasePanelPrivate;

#define WIDGETS_TYPE_CONFIG_WINDOW (widgets_config_window_get_type ())
#define WIDGETS_CONFIG_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_CONFIG_WINDOW, WidgetsConfigWindow))
#define WIDGETS_CONFIG_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_CONFIG_WINDOW, WidgetsConfigWindowClass))
#define WIDGETS_IS_CONFIG_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_CONFIG_WINDOW))
#define WIDGETS_IS_CONFIG_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_CONFIG_WINDOW))
#define WIDGETS_CONFIG_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_CONFIG_WINDOW, WidgetsConfigWindowClass))

typedef struct _WidgetsConfigWindow WidgetsConfigWindow;
typedef struct _WidgetsConfigWindowClass WidgetsConfigWindowClass;

#define WIDGETS_TYPE_WORKSPACE_MANAGER (widgets_workspace_manager_get_type ())
#define WIDGETS_WORKSPACE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_WORKSPACE_MANAGER, WidgetsWorkspaceManager))
#define WIDGETS_WORKSPACE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_WORKSPACE_MANAGER, WidgetsWorkspaceManagerClass))
#define WIDGETS_IS_WORKSPACE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_WORKSPACE_MANAGER))
#define WIDGETS_IS_WORKSPACE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_WORKSPACE_MANAGER))
#define WIDGETS_WORKSPACE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_WORKSPACE_MANAGER, WidgetsWorkspaceManagerClass))

typedef struct _WidgetsWorkspaceManager WidgetsWorkspaceManager;
typedef struct _WidgetsWorkspaceManagerClass WidgetsWorkspaceManagerClass;

#define WIDGETS_TYPE_SWITCHER (widgets_switcher_get_type ())
#define WIDGETS_SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_SWITCHER, WidgetsSwitcher))
#define WIDGETS_SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_SWITCHER, WidgetsSwitcherClass))
#define WIDGETS_IS_SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_SWITCHER))
#define WIDGETS_IS_SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_SWITCHER))
#define WIDGETS_SWITCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_SWITCHER, WidgetsSwitcherClass))

typedef struct _WidgetsSwitcher WidgetsSwitcher;
typedef struct _WidgetsSwitcherClass WidgetsSwitcherClass;

#define WIDGETS_TYPE_WORKSPACE (widgets_workspace_get_type ())
#define WIDGETS_WORKSPACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_WORKSPACE, WidgetsWorkspace))
#define WIDGETS_WORKSPACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_WORKSPACE, WidgetsWorkspaceClass))
#define WIDGETS_IS_WORKSPACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_WORKSPACE))
#define WIDGETS_IS_WORKSPACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_WORKSPACE))
#define WIDGETS_WORKSPACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_WORKSPACE, WidgetsWorkspaceClass))

typedef struct _WidgetsWorkspace WidgetsWorkspace;
typedef struct _WidgetsWorkspaceClass WidgetsWorkspaceClass;

#define WIDGETS_TYPE_REMOTE_PANEL (widgets_remote_panel_get_type ())
#define WIDGETS_REMOTE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_REMOTE_PANEL, WidgetsRemotePanel))
#define WIDGETS_REMOTE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_REMOTE_PANEL, WidgetsRemotePanelClass))
#define WIDGETS_IS_REMOTE_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_REMOTE_PANEL))
#define WIDGETS_IS_REMOTE_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_REMOTE_PANEL))
#define WIDGETS_REMOTE_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_REMOTE_PANEL, WidgetsRemotePanelClass))

typedef struct _WidgetsRemotePanel WidgetsRemotePanel;
typedef struct _WidgetsRemotePanelClass WidgetsRemotePanelClass;
typedef struct _WidgetsRemotePanelPrivate WidgetsRemotePanelPrivate;
enum  {
	WIDGETS_REMOTE_PANEL_0_PROPERTY,
	WIDGETS_REMOTE_PANEL_NUM_PROPERTIES
};
static GParamSpec* widgets_remote_panel_properties[WIDGETS_REMOTE_PANEL_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_key_file_unref0(var) ((var == NULL) ? NULL : (var = (g_key_file_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
typedef struct _WidgetsConfigWindowPrivate WidgetsConfigWindowPrivate;

#define CONFIG_TYPE_CONFIG (config_config_get_type ())
#define CONFIG_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONFIG_TYPE_CONFIG, ConfigConfig))
#define CONFIG_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONFIG_TYPE_CONFIG, ConfigConfigClass))
#define CONFIG_IS_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONFIG_TYPE_CONFIG))
#define CONFIG_IS_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONFIG_TYPE_CONFIG))
#define CONFIG_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONFIG_TYPE_CONFIG, ConfigConfigClass))

typedef struct _ConfigConfig ConfigConfig;
typedef struct _ConfigConfigClass ConfigConfigClass;
typedef struct _ConfigConfigPrivate ConfigConfigPrivate;
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))

#define WIDGETS_TYPE_SEARCH_ENTRY (widgets_search_entry_get_type ())
#define WIDGETS_SEARCH_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_SEARCH_ENTRY, WidgetsSearchEntry))
#define WIDGETS_SEARCH_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_SEARCH_ENTRY, WidgetsSearchEntryClass))
#define WIDGETS_IS_SEARCH_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_SEARCH_ENTRY))
#define WIDGETS_IS_SEARCH_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_SEARCH_ENTRY))
#define WIDGETS_SEARCH_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_SEARCH_ENTRY, WidgetsSearchEntryClass))

typedef struct _WidgetsSearchEntry WidgetsSearchEntry;
typedef struct _WidgetsSearchEntryClass WidgetsSearchEntryClass;
typedef struct _WidgetsSearchEntryPrivate WidgetsSearchEntryPrivate;

#define ANIMATION_TYPE_ANIMATE_TIMER (animation_animate_timer_get_type ())
#define ANIMATION_ANIMATE_TIMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ANIMATION_TYPE_ANIMATE_TIMER, AnimationAnimateTimer))
#define ANIMATION_ANIMATE_TIMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ANIMATION_TYPE_ANIMATE_TIMER, AnimationAnimateTimerClass))
#define ANIMATION_IS_ANIMATE_TIMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ANIMATION_TYPE_ANIMATE_TIMER))
#define ANIMATION_IS_ANIMATE_TIMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ANIMATION_TYPE_ANIMATE_TIMER))
#define ANIMATION_ANIMATE_TIMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ANIMATION_TYPE_ANIMATE_TIMER, AnimationAnimateTimerClass))

typedef struct _AnimationAnimateTimer AnimationAnimateTimer;
typedef struct _AnimationAnimateTimerClass AnimationAnimateTimerClass;

#define WIDGETS_TYPE_CLICK_EVENT_BOX (widgets_click_event_box_get_type ())
#define WIDGETS_CLICK_EVENT_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_CLICK_EVENT_BOX, WidgetsClickEventBox))
#define WIDGETS_CLICK_EVENT_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_CLICK_EVENT_BOX, WidgetsClickEventBoxClass))
#define WIDGETS_IS_CLICK_EVENT_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_CLICK_EVENT_BOX))
#define WIDGETS_IS_CLICK_EVENT_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_CLICK_EVENT_BOX))
#define WIDGETS_CLICK_EVENT_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_CLICK_EVENT_BOX, WidgetsClickEventBoxClass))

typedef struct _WidgetsClickEventBox WidgetsClickEventBox;
typedef struct _WidgetsClickEventBoxClass WidgetsClickEventBoxClass;

#define WIDGETS_TYPE_IMAGE_BUTTON (widgets_image_button_get_type ())
#define WIDGETS_IMAGE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_IMAGE_BUTTON, WidgetsImageButton))
#define WIDGETS_IMAGE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_IMAGE_BUTTON, WidgetsImageButtonClass))
#define WIDGETS_IS_IMAGE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_IMAGE_BUTTON))
#define WIDGETS_IS_IMAGE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_IMAGE_BUTTON))
#define WIDGETS_IMAGE_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_IMAGE_BUTTON, WidgetsImageButtonClass))

typedef struct _WidgetsImageButton WidgetsImageButton;
typedef struct _WidgetsImageButtonClass WidgetsImageButtonClass;

#define WIDGETS_TYPE_ENTRY (widgets_entry_get_type ())
#define WIDGETS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_ENTRY, WidgetsEntry))
#define WIDGETS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_ENTRY, WidgetsEntryClass))
#define WIDGETS_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_ENTRY))
#define WIDGETS_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_ENTRY))
#define WIDGETS_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_ENTRY, WidgetsEntryClass))

typedef struct _WidgetsEntry WidgetsEntry;
typedef struct _WidgetsEntryClass WidgetsEntryClass;

#define WIDGETS_TYPE_SPLIT_LINE (widgets_split_line_get_type ())
#define WIDGETS_SPLIT_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_SPLIT_LINE, WidgetsSplitLine))
#define WIDGETS_SPLIT_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_SPLIT_LINE, WidgetsSplitLineClass))
#define WIDGETS_IS_SPLIT_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_SPLIT_LINE))
#define WIDGETS_IS_SPLIT_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_SPLIT_LINE))
#define WIDGETS_SPLIT_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_SPLIT_LINE, WidgetsSplitLineClass))

typedef struct _WidgetsSplitLine WidgetsSplitLine;
typedef struct _WidgetsSplitLineClass WidgetsSplitLineClass;

#define WIDGETS_TYPE_SERVER_GROUP_BUTTON (widgets_server_group_button_get_type ())
#define WIDGETS_SERVER_GROUP_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_SERVER_GROUP_BUTTON, WidgetsServerGroupButton))
#define WIDGETS_SERVER_GROUP_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_SERVER_GROUP_BUTTON, WidgetsServerGroupButtonClass))
#define WIDGETS_IS_SERVER_GROUP_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_SERVER_GROUP_BUTTON))
#define WIDGETS_IS_SERVER_GROUP_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_SERVER_GROUP_BUTTON))
#define WIDGETS_SERVER_GROUP_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_SERVER_GROUP_BUTTON, WidgetsServerGroupButtonClass))

typedef struct _WidgetsServerGroupButton WidgetsServerGroupButton;
typedef struct _WidgetsServerGroupButtonClass WidgetsServerGroupButtonClass;

#define WIDGETS_TYPE_PANEL_BUTTON (widgets_panel_button_get_type ())
#define WIDGETS_PANEL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_PANEL_BUTTON, WidgetsPanelButton))
#define WIDGETS_PANEL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_PANEL_BUTTON, WidgetsPanelButtonClass))
#define WIDGETS_IS_PANEL_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_PANEL_BUTTON))
#define WIDGETS_IS_PANEL_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_PANEL_BUTTON))
#define WIDGETS_PANEL_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_PANEL_BUTTON, WidgetsPanelButtonClass))

typedef struct _WidgetsPanelButton WidgetsPanelButton;
typedef struct _WidgetsPanelButtonClass WidgetsPanelButtonClass;

#define WIDGETS_TYPE_SERVER_BUTTON (widgets_server_button_get_type ())
#define WIDGETS_SERVER_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_SERVER_BUTTON, WidgetsServerButton))
#define WIDGETS_SERVER_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_SERVER_BUTTON, WidgetsServerButtonClass))
#define WIDGETS_IS_SERVER_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_SERVER_BUTTON))
#define WIDGETS_IS_SERVER_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_SERVER_BUTTON))
#define WIDGETS_SERVER_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_SERVER_BUTTON, WidgetsServerButtonClass))

typedef struct _WidgetsServerButton WidgetsServerButton;
typedef struct _WidgetsServerButtonClass WidgetsServerButtonClass;
typedef void (*WidgetsRemotePanelUpdatePageAfterEdit) (gpointer user_data);

#define WIDGETS_TYPE_ADD_BUTTON (widgets_add_button_get_type ())
#define WIDGETS_ADD_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_ADD_BUTTON, WidgetsAddButton))
#define WIDGETS_ADD_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_ADD_BUTTON, WidgetsAddButtonClass))
#define WIDGETS_IS_ADD_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_ADD_BUTTON))
#define WIDGETS_IS_ADD_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_ADD_BUTTON))
#define WIDGETS_ADD_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_ADD_BUTTON, WidgetsAddButtonClass))

typedef struct _WidgetsAddButton WidgetsAddButton;
typedef struct _WidgetsAddButtonClass WidgetsAddButtonClass;
typedef struct _Block29Data Block29Data;

#define WIDGETS_TYPE_TERM (widgets_term_get_type ())
#define WIDGETS_TERM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_TERM, WidgetsTerm))
#define WIDGETS_TERM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_TERM, WidgetsTermClass))
#define WIDGETS_IS_TERM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_TERM))
#define WIDGETS_IS_TERM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_TERM))
#define WIDGETS_TERM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_TERM, WidgetsTermClass))

typedef struct _WidgetsTerm WidgetsTerm;
typedef struct _WidgetsTermClass WidgetsTermClass;
typedef struct _WidgetsWorkspaceManagerPrivate WidgetsWorkspaceManagerPrivate;

#define WIDGETS_TYPE_TABBAR (widgets_tabbar_get_type ())
#define WIDGETS_TABBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_TABBAR, WidgetsTabbar))
#define WIDGETS_TABBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_TABBAR, WidgetsTabbarClass))
#define WIDGETS_IS_TABBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_TABBAR))
#define WIDGETS_IS_TABBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_TABBAR))
#define WIDGETS_TABBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_TABBAR, WidgetsTabbarClass))

typedef struct _WidgetsTabbar WidgetsTabbar;
typedef struct _WidgetsTabbarClass WidgetsTabbarClass;
typedef struct _Block30Data Block30Data;
typedef struct _Block31Data Block31Data;
typedef struct _Block32Data Block32Data;

#define WIDGETS_TYPE_DIALOG (widgets_dialog_get_type ())
#define WIDGETS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_DIALOG, WidgetsDialog))
#define WIDGETS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_DIALOG, WidgetsDialogClass))
#define WIDGETS_IS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_DIALOG))
#define WIDGETS_IS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_DIALOG))
#define WIDGETS_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_DIALOG, WidgetsDialogClass))

typedef struct _WidgetsDialog WidgetsDialog;
typedef struct _WidgetsDialogClass WidgetsDialogClass;

#define WIDGETS_TYPE_REMOTE_SERVER_DIALOG (widgets_remote_server_dialog_get_type ())
#define WIDGETS_REMOTE_SERVER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIDGETS_TYPE_REMOTE_SERVER_DIALOG, WidgetsRemoteServerDialog))
#define WIDGETS_REMOTE_SERVER_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIDGETS_TYPE_REMOTE_SERVER_DIALOG, WidgetsRemoteServerDialogClass))
#define WIDGETS_IS_REMOTE_SERVER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIDGETS_TYPE_REMOTE_SERVER_DIALOG))
#define WIDGETS_IS_REMOTE_SERVER_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIDGETS_TYPE_REMOTE_SERVER_DIALOG))
#define WIDGETS_REMOTE_SERVER_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIDGETS_TYPE_REMOTE_SERVER_DIALOG, WidgetsRemoteServerDialogClass))

typedef struct _WidgetsRemoteServerDialog WidgetsRemoteServerDialog;
typedef struct _WidgetsRemoteServerDialogClass WidgetsRemoteServerDialogClass;
typedef struct _Block33Data Block33Data;
typedef struct _Block34Data Block34Data;

struct _WidgetsBasePanel {
	GtkHBox parent_instance;
	WidgetsBasePanelPrivate * priv;
	WidgetsConfigWindow* parent_window;
	WidgetsWorkspaceManager* workspace_manager;
	GdkRGBA background_color;
	GdkRGBA line_dark_color;
	GdkRGBA line_light_color;
	GtkBox* home_page_box;
	GtkBox* search_page_box;
	GtkScrolledWindow* home_page_scrolledwindow;
	GtkScrolledWindow* search_page_scrolledwindow;
	GtkWidget* focus_widget;
	WidgetsSwitcher* switcher;
	WidgetsWorkspace* workspace;
	gint back_button_margin_left;
	gint back_button_margin_top;
};

struct _WidgetsBasePanelClass {
	GtkHBoxClass parent_class;
	void (*create_search_page) (WidgetsBasePanel* self, const gchar* search_text, const gchar* group_name);
	void (*create_home_page) (WidgetsBasePanel* self);
};

struct _WidgetsRemotePanel {
	WidgetsBasePanel parent_instance;
	WidgetsRemotePanelPrivate * priv;
	GtkBox* group_page_box;
	GtkScrolledWindow* group_page_scrolledwindow;
	GKeyFile* config_file;
	gint width;
	gchar* config_file_path;
};

struct _WidgetsRemotePanelClass {
	WidgetsBasePanelClass parent_class;
};

struct _WidgetsConfigWindow {
	GtkWindow parent_instance;
	WidgetsConfigWindowPrivate * priv;
	ConfigConfig* config;
	GdkRGBA title_line_dark_color;
	GdkRGBA title_line_light_color;
	GdkScreen* screen_monitor;
	GtkBox* box;
	GtkBox* top_box;
	GtkBox* window_frame_box;
	GtkBox* window_widget_box;
	WidgetsWorkspaceManager* workspace_manager;
	gboolean quake_mode;
	gboolean show_quake_menu;
	gboolean* config_theme_is_light;
	gint active_tab_underline_width;
	gint active_tab_underline_x;
	gint cache_height;
	gint cache_width;
	gint reset_timeout_delay;
	gint resize_cache_x;
	gint resize_cache_y;
	gint resize_cache_width;
	gint resize_cache_height;
	gint resize_timeout_delay;
	guint* reset_timeout_source_id;
	guint* resize_timeout_source_id;
};

struct _WidgetsConfigWindowClass {
	GtkWindowClass parent_class;
	void (*toggle_fullscreen) (WidgetsConfigWindow* self);
	void (*window_save_before_quit) (WidgetsConfigWindow* self);
	GdkCursorType* (*get_frame_cursor_type) (WidgetsConfigWindow* self, gdouble x, gdouble y);
	void (*update_frame) (WidgetsConfigWindow* self);
	GdkCursorType* (*get_cursor_type) (WidgetsConfigWindow* self, gdouble x, gdouble y);
};

struct _ConfigConfig {
	GObject parent_instance;
	ConfigConfigPrivate * priv;
	GeeArrayList* backspace_key_erase_names;
	GeeArrayList* del_key_erase_names;
	GeeArrayList* encoding_names;
	GeeHashMap* erase_map;
	gdouble default_opacity;
	gint default_size;
	gchar* default_mono_font;
	GKeyFile* config_file;
	gchar* config_file_path;
	gchar* temp_theme;
};

struct _ConfigConfigClass {
	GObjectClass parent_class;
};

struct _WidgetsSearchEntry {
	GtkEventBox parent_instance;
	WidgetsSearchEntryPrivate * priv;
	AnimationAnimateTimer* timer;
	GtkBox* box;
	GtkBox* display_box;
	GtkLabel* search_label;
	WidgetsImageButton* clear_button;
	WidgetsEntry* search_entry;
	WidgetsImageButton* search_image;
	gint animation_time;
	gint clear_button_margin_right;
	gint height;
	gint search_image_animate_start_x;
	gint search_image_margin_right;
	gint search_image_margin_x;
};

struct _WidgetsSearchEntryClass {
	GtkEventBoxClass parent_class;
};

struct _Block29Data {
	int _ref_count_;
	WidgetsRemotePanel* self;
	gchar* server_info;
};

struct _WidgetsWorkspaceManager {
	GtkBox parent_instance;
	WidgetsWorkspaceManagerPrivate * priv;
	GeeHashMap* workspace_map;
	WidgetsTabbar* tabbar;
	WidgetsWorkspace* focus_workspace;
	gint workspace_index;
};

struct _WidgetsWorkspaceManagerClass {
	GtkBoxClass parent_class;
};

struct _Block30Data {
	int _ref_count_;
	WidgetsRemotePanel* self;
	gchar* group_name;
};

struct _Block31Data {
	int _ref_count_;
	WidgetsRemotePanel* self;
	gchar* search_text;
	gchar* group_name;
};

struct _Block32Data {
	int _ref_count_;
	Block31Data * _data31_;
	GtkLabel* search_label;
};

struct _Block33Data {
	int _ref_count_;
	WidgetsRemotePanel* self;
	WidgetsRemoteServerDialog* remote_server_dialog;
	gchar* server_info;
	WidgetsRemotePanelUpdatePageAfterEdit func;
	gpointer func_target;
};

struct _Block34Data {
	int _ref_count_;
	WidgetsRemotePanel* self;
	WidgetsRemoteServerDialog* remote_server_dialog;
};

static gpointer widgets_remote_panel_parent_class = NULL;
VALA_EXTERN gint constant_SLIDER_WIDTH;
VALA_EXTERN gint constant_REMOTE_PANEL_SEARCHBAR_HEIGHT;

VALA_EXTERN GType widgets_base_panel_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsBasePanel, g_object_unref)
VALA_EXTERN GType widgets_config_window_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsConfigWindow, g_object_unref)
VALA_EXTERN GType widgets_workspace_manager_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsWorkspaceManager, g_object_unref)
VALA_EXTERN GType widgets_switcher_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsSwitcher, g_object_unref)
VALA_EXTERN GType widgets_workspace_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsWorkspace, g_object_unref)
VALA_EXTERN GType widgets_remote_panel_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsRemotePanel, g_object_unref)
VALA_EXTERN void widgets_base_panel_create_home_page (WidgetsBasePanel* self);
VALA_EXTERN void widgets_base_panel_create_search_page (WidgetsBasePanel* self,
                                            const gchar* search_text,
                                            const gchar* group_name);
VALA_EXTERN gchar* utils_get_config_file_path (const gchar* config_name);
VALA_EXTERN WidgetsRemotePanel* widgets_remote_panel_new (WidgetsWorkspace* space,
                                              WidgetsWorkspaceManager* manager);
VALA_EXTERN WidgetsRemotePanel* widgets_remote_panel_construct (GType object_type,
                                                    WidgetsWorkspace* space,
                                                    WidgetsWorkspaceManager* manager);
VALA_EXTERN WidgetsBasePanel* widgets_base_panel_new (void);
VALA_EXTERN WidgetsBasePanel* widgets_base_panel_construct (GType object_type);
VALA_EXTERN GType config_config_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ConfigConfig, g_object_unref)
VALA_EXTERN void utils_hex_to_rgba (const gchar* hex_color,
                        gdouble alpha,
                        GdkRGBA* result);
VALA_EXTERN WidgetsSwitcher* widgets_switcher_new (gint w);
VALA_EXTERN WidgetsSwitcher* widgets_switcher_construct (GType object_type,
                                             gint w);
VALA_EXTERN void widgets_base_panel_show_home_page (WidgetsBasePanel* self,
                                        GtkWidget* start_widget);
VALA_EXTERN gboolean widgets_base_panel_on_draw (WidgetsBasePanel* self,
                                     GtkWidget* widget,
                                     cairo_t* cr);
static gboolean _widgets_base_panel_on_draw_gtk_widget_draw (GtkWidget* _sender,
                                                      cairo_t* cr,
                                                      gpointer self);
VALA_EXTERN void widgets_remote_panel_load_config (WidgetsRemotePanel* self);
VALA_EXTERN void utils_touch_dir (const gchar* dir);
VALA_EXTERN gchar* utils_get_config_dir (void);
VALA_EXTERN void utils_create_file (const gchar* file_path);
static void widgets_remote_panel_real_create_home_page (WidgetsBasePanel* base);
VALA_EXTERN void utils_destroy_all_children (GtkContainer* container);
VALA_EXTERN void widgets_remote_panel_add_group_item (WidgetsRemotePanel* self,
                                          const gchar* option,
                                          GeeArrayList* lists,
                                          GKeyFile* config_file);
VALA_EXTERN GType widgets_search_entry_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsSearchEntry, g_object_unref)
VALA_EXTERN WidgetsSearchEntry* widgets_search_entry_new (void);
VALA_EXTERN WidgetsSearchEntry* widgets_search_entry_construct (GType object_type);
VALA_EXTERN GType animation_animate_timer_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AnimationAnimateTimer, g_object_unref)
VALA_EXTERN GType widgets_click_event_box_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsClickEventBox, g_object_unref)
VALA_EXTERN GType widgets_image_button_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsImageButton, g_object_unref)
VALA_EXTERN GType widgets_entry_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsEntry, g_object_unref)
static void ___lambda115_ (WidgetsRemotePanel* self,
                    GtkEntry* entry);
VALA_EXTERN void widgets_base_panel_show_search_page (WidgetsBasePanel* self,
                                          const gchar* search_text,
                                          const gchar* group_name,
                                          GtkWidget* start_widget);
static void ____lambda115__gtk_entry_activate (GtkEntry* _sender,
                                        gpointer self);
VALA_EXTERN GType widgets_split_line_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsSplitLine, g_object_unref)
VALA_EXTERN WidgetsSplitLine* widgets_split_line_new (void);
VALA_EXTERN WidgetsSplitLine* widgets_split_line_construct (GType object_type);
VALA_EXTERN GtkScrolledWindow* widgets_base_panel_create_scrolled_window (WidgetsBasePanel* self);
VALA_EXTERN GType widgets_server_group_button_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsServerGroupButton, g_object_unref)
VALA_EXTERN WidgetsServerGroupButton* widgets_remote_panel_create_server_group_button (WidgetsRemotePanel* self,
                                                                           const gchar* group_name,
                                                                           gint server_number);
VALA_EXTERN GType widgets_panel_button_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsPanelButton, g_object_unref)
VALA_EXTERN GType widgets_server_button_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsServerButton, g_object_unref)
VALA_EXTERN WidgetsServerButton* widgets_remote_panel_create_server_button (WidgetsRemotePanel* self,
                                                                const gchar* name,
                                                                const gchar* info);
static void _____lambda143_ (WidgetsRemotePanel* self,
                      WidgetsServerButton* w,
                      const gchar* server_info);
VALA_EXTERN void widgets_remote_panel_edit_server (WidgetsRemotePanel* self,
                                       const gchar* server_info,
                                       WidgetsRemotePanelUpdatePageAfterEdit func,
                                       gpointer func_target);
static void __lambda144_ (WidgetsRemotePanel* self);
VALA_EXTERN void widgets_base_panel_update_home_page (WidgetsBasePanel* self);
static void ___lambda144__widgets_remote_panel_update_page_after_edit (gpointer self);
static void ______lambda143__widgets_server_button_edit_server (WidgetsServerButton* _sender,
                                                         const gchar* server_info,
                                                         gpointer self);
VALA_EXTERN GType widgets_add_button_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsAddButton, g_object_unref)
VALA_EXTERN WidgetsAddButton* widgets_remote_panel_create_add_server_button (WidgetsRemotePanel* self);
VALA_EXTERN void widgets_remote_panel_login_server (WidgetsRemotePanel* self,
                                        const gchar* server_info);
static Block29Data* block29_data_ref (Block29Data* _data29_);
static void block29_data_unref (void * _userdata_);
VALA_EXTERN void widgets_workspace_hide_remote_panel (WidgetsWorkspace* self);
VALA_EXTERN GType widgets_term_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsTerm, g_object_unref)
VALA_EXTERN GType widgets_tabbar_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsTabbar, g_object_unref)
VALA_EXTERN WidgetsTerm* widgets_workspace_get_focus_term (WidgetsWorkspace* self,
                                               GtkContainer* container);
VALA_EXTERN gboolean widgets_term_has_foreground_process (WidgetsTerm* self);
VALA_EXTERN void widgets_workspace_manager_new_workspace_with_current_directory (WidgetsWorkspaceManager* self,
                                                                     gboolean remote_serve_action);
static gboolean __lambda127_ (Block29Data* _data29_);
VALA_EXTERN void widgets_term_login_server (WidgetsTerm* self,
                                const gchar* info);
static gboolean ___lambda127__gsource_func (gpointer self);
VALA_EXTERN void widgets_remote_panel_show_group_page (WidgetsRemotePanel* self,
                                           const gchar* group_name,
                                           GtkWidget* start_widget,
                                           const gchar* directoin);
VALA_EXTERN void widgets_remote_panel_create_group_page (WidgetsRemotePanel* self,
                                             const gchar* group_name);
VALA_EXTERN void widgets_switcher_scroll_to_right (WidgetsSwitcher* self,
                                       GtkWidget* start_widget,
                                       GtkWidget* end_widget);
VALA_EXTERN void widgets_switcher_scroll_to_left (WidgetsSwitcher* self,
                                      GtkWidget* start_widget,
                                      GtkWidget* end_widget);
static Block30Data* block30_data_ref (Block30Data* _data30_);
static void block30_data_unref (void * _userdata_);
VALA_EXTERN WidgetsImageButton* widgets_image_button_new (const gchar* image_path,
                                              gboolean theme_button,
                                              const gchar* text,
                                              gint text_size);
VALA_EXTERN WidgetsImageButton* widgets_image_button_construct (GType object_type,
                                                    const gchar* image_path,
                                                    gboolean theme_button,
                                                    const gchar* text,
                                                    gint text_size);
static void __lambda122_ (WidgetsRemotePanel* self,
                   GdkEventButton* w);
static void ___lambda122__widgets_click_event_box_clicked (WidgetsClickEventBox* _sender,
                                                    GdkEventButton* event,
                                                    gpointer self);
static void ___lambda123_ (Block30Data* _data30_,
                    GtkEntry* entry);
static void ____lambda123__gtk_entry_activate (GtkEntry* _sender,
                                        gpointer self);
static void _____lambda128_ (Block30Data* _data30_,
                      WidgetsServerButton* w,
                      const gchar* server_info);
static void __lambda142_ (Block30Data* _data30_);
VALA_EXTERN void widgets_remote_panel_update_group_page (WidgetsRemotePanel* self,
                                             const gchar* group_name);
static void ___lambda142__widgets_remote_panel_update_page_after_edit (gpointer self);
static void ______lambda128__widgets_server_button_edit_server (WidgetsServerButton* _sender,
                                                         const gchar* server_info,
                                                         gpointer self);
VALA_EXTERN void widgets_remote_panel_add_server (WidgetsRemotePanel* self,
                                      const gchar* server_address,
                                      const gchar* user,
                                      const gchar* password,
                                      const gchar* private_key,
                                      gint port,
                                      const gchar* encode,
                                      const gchar* path,
                                      const gchar* command,
                                      const gchar* name,
                                      const gchar* group_name,
                                      const gchar* backspace,
                                      const gchar* delete);
VALA_EXTERN void utils_store_password (const gchar* user,
                           const gchar* server_address,
                           gint port,
                           const gchar* password);
static void widgets_remote_panel_real_create_search_page (WidgetsBasePanel* base,
                                                   const gchar* search_text,
                                                   const gchar* group_name);
static Block31Data* block31_data_ref (Block31Data* _data31_);
static void block31_data_unref (void * _userdata_);
static Block32Data* block32_data_ref (Block32Data* _data32_);
static void block32_data_unref (void * _userdata_);
static void ___lambda148_ (Block32Data* _data32_,
                    GdkEventButton* w);
static void ____lambda148__widgets_click_event_box_clicked (WidgetsClickEventBox* _sender,
                                                     GdkEventButton* event,
                                                     gpointer self);
static void _____lambda149_ (Block32Data* _data32_,
                      WidgetsServerButton* w,
                      const gchar* server_info);
static void __lambda150_ (Block32Data* _data32_);
VALA_EXTERN void widgets_base_panel_update_search_page (WidgetsBasePanel* self,
                                            const gchar* search_text,
                                            const gchar* group_name);
static void ___lambda150__widgets_remote_panel_update_page_after_edit (gpointer self);
static void ______lambda149__widgets_server_button_edit_server (WidgetsServerButton* _sender,
                                                         const gchar* server_info,
                                                         gpointer self);
static void ___lambda151_ (Block32Data* _data32_,
                    GtkWidget* w);
VALA_EXTERN gboolean widgets_config_window_is_light_theme (WidgetsConfigWindow* self);
static void ____lambda151__gtk_widget_realize (GtkWidget* _sender,
                                        gpointer self);
VALA_EXTERN GType widgets_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsDialog, g_object_unref)
VALA_EXTERN GType widgets_remote_server_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WidgetsRemoteServerDialog, g_object_unref)
static Block33Data* block33_data_ref (Block33Data* _data33_);
static void block33_data_unref (void * _userdata_);
VALA_EXTERN WidgetsRemoteServerDialog* widgets_remote_server_dialog_new (WidgetsConfigWindow* window,
                                                             GtkWidget* widget,
                                                             const gchar* info,
                                                             GKeyFile* config_file);
VALA_EXTERN WidgetsRemoteServerDialog* widgets_remote_server_dialog_construct (GType object_type,
                                                                   WidgetsConfigWindow* window,
                                                                   GtkWidget* widget,
                                                                   const gchar* info,
                                                                   GKeyFile* config_file);
VALA_EXTERN void widgets_dialog_transient_for_window (WidgetsDialog* self,
                                          WidgetsConfigWindow* window);
static void __lambda139_ (Block33Data* _data33_,
                   WidgetsRemoteServerDialog* server,
                   const gchar* address,
                   const gchar* username);
static void ___lambda139__widgets_remote_server_dialog_delete_server (WidgetsRemoteServerDialog* _sender,
                                                               const gchar* address,
                                                               const gchar* username,
                                                               gpointer self);
static void __lambda140_ (Block33Data* _data33_,
                   WidgetsRemoteServerDialog* server,
                   const gchar* address,
                   const gchar* username,
                   const gchar* password,
                   const gchar* private_key,
                   gint port,
                   const gchar* encode,
                   const gchar* path,
                   const gchar* command,
                   const gchar* nickname,
                   const gchar* groupname,
                   const gchar* backspace_key,
                   const gchar* delete_key);
static void ___lambda140__widgets_remote_server_dialog_edit_server (WidgetsRemoteServerDialog* _sender,
                                                             const gchar* address,
                                                             const gchar* username,
                                                             const gchar* password,
                                                             const gchar* private_key,
                                                             gint port,
                                                             const gchar* encode,
                                                             const gchar* path,
                                                             const gchar* command,
                                                             const gchar* nickname,
                                                             const gchar* groupname,
                                                             const gchar* backspace_key,
                                                             const gchar* delete_key,
                                                             gpointer self);
VALA_EXTERN WidgetsServerButton* widgets_server_button_new (const gchar* server_title,
                                                const gchar* server_content);
VALA_EXTERN WidgetsServerButton* widgets_server_button_construct (GType object_type,
                                                      const gchar* server_title,
                                                      const gchar* server_content);
static void __lambda126_ (WidgetsRemotePanel* self,
                   WidgetsServerButton* w,
                   const gchar* server_info);
static void ___lambda126__widgets_server_button_login_server (WidgetsServerButton* _sender,
                                                       const gchar* server_info,
                                                       gpointer self);
VALA_EXTERN WidgetsServerGroupButton* widgets_server_group_button_new (const gchar* server_title,
                                                           gint number);
VALA_EXTERN WidgetsServerGroupButton* widgets_server_group_button_construct (GType object_type,
                                                                 const gchar* server_title,
                                                                 gint number);
static void __lambda121_ (WidgetsRemotePanel* self,
                   WidgetsServerGroupButton* w,
                   const gchar* group_name);
static void ___lambda121__widgets_server_group_button_show_group_servers (WidgetsServerGroupButton* _sender,
                                                                   const gchar* group_name,
                                                                   gpointer self);
VALA_EXTERN WidgetsAddButton* widgets_add_button_new (const gchar* button_name);
VALA_EXTERN WidgetsAddButton* widgets_add_button_construct (GType object_type,
                                                const gchar* button_name);
static void __lambda146_ (WidgetsRemotePanel* self,
                   GtkButton* w);
static Block34Data* block34_data_ref (Block34Data* _data34_);
static void block34_data_unref (void * _userdata_);
static void __lambda147_ (Block34Data* _data34_,
                   WidgetsRemoteServerDialog* server,
                   const gchar* address,
                   const gchar* username,
                   const gchar* password,
                   const gchar* private_key,
                   gint port,
                   const gchar* encode,
                   const gchar* path,
                   const gchar* command,
                   const gchar* nickname,
                   const gchar* groupname,
                   const gchar* backspace_key,
                   const gchar* delete_key);
static void ___lambda147__widgets_remote_server_dialog_add_server (WidgetsRemoteServerDialog* _sender,
                                                            const gchar* address,
                                                            const gchar* username,
                                                            const gchar* password,
                                                            const gchar* private_key,
                                                            gint port,
                                                            const gchar* encode,
                                                            const gchar* path,
                                                            const gchar* command,
                                                            const gchar* nickname,
                                                            const gchar* groupname,
                                                            const gchar* backspace_key,
                                                            const gchar* delete_key,
                                                            gpointer self);
static void ___lambda146__gtk_button_clicked (GtkButton* _sender,
                                       gpointer self);
VALA_EXTERN void widgets_switcher_add_to_left_box (WidgetsSwitcher* self,
                                       GtkWidget* start_widget);
static void widgets_remote_panel_finalize (GObject * obj);
static GType widgets_remote_panel_get_type_once (void);
static void _vala_array_destroy (gpointer array,
                          gssize array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gssize array_length,
                       GDestroyNotify destroy_func);
static inline gpointer _vala_memdup2 (gconstpointer mem,
                        gsize byte_size);

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static gboolean
_widgets_base_panel_on_draw_gtk_widget_draw (GtkWidget* _sender,
                                             cairo_t* cr,
                                             gpointer self)
{
	gboolean result;
	result = widgets_base_panel_on_draw ((WidgetsBasePanel*) self, _sender, cr);
	return result;
}

WidgetsRemotePanel*
widgets_remote_panel_construct (GType object_type,
                                WidgetsWorkspace* space,
                                WidgetsWorkspaceManager* manager)
{
	WidgetsRemotePanel * self = NULL;
	WidgetsWorkspace* _tmp0_;
	WidgetsWorkspaceManager* _tmp1_;
	GKeyFile* _tmp2_;
	WidgetsWorkspace* _tmp3_;
	GtkWidget* _tmp4_;
	GtkWidget* _tmp5_;
	GtkWidget* _tmp6_;
	WidgetsWorkspace* _tmp7_;
	GtkWidget* _tmp8_;
	WidgetsConfigWindow* _tmp9_;
	WidgetsSwitcher* _tmp18_;
	GtkBox* _tmp19_;
	GtkBox* _tmp20_;
	GtkBox* _tmp21_;
	GtkBox* _tmp22_;
	WidgetsSwitcher* _tmp23_;
	GError* _inner_error0_ = NULL;
	g_return_val_if_fail (space != NULL, NULL);
	g_return_val_if_fail (manager != NULL, NULL);
	self = (WidgetsRemotePanel*) widgets_base_panel_construct (object_type);
	bindtextdomain (GETTEXT_PACKAGE, "/usr/share/locale");
	_tmp0_ = _g_object_ref0 (space);
	_g_object_unref0 (((WidgetsBasePanel*) self)->workspace);
	((WidgetsBasePanel*) self)->workspace = _tmp0_;
	_tmp1_ = _g_object_ref0 (manager);
	_g_object_unref0 (((WidgetsBasePanel*) self)->workspace_manager);
	((WidgetsBasePanel*) self)->workspace_manager = _tmp1_;
	_tmp2_ = g_key_file_new ();
	_g_key_file_unref0 (self->config_file);
	self->config_file = _tmp2_;
	_tmp3_ = ((WidgetsBasePanel*) self)->workspace;
	_tmp4_ = gtk_widget_get_toplevel ((GtkWidget*) _tmp3_);
	_tmp5_ = gtk_window_get_focus (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_window_get_type (), GtkWindow));
	_tmp6_ = _g_object_ref0 (_tmp5_);
	_g_object_unref0 (((WidgetsBasePanel*) self)->focus_widget);
	((WidgetsBasePanel*) self)->focus_widget = _tmp6_;
	_tmp7_ = ((WidgetsBasePanel*) self)->workspace;
	_tmp8_ = gtk_widget_get_toplevel ((GtkWidget*) _tmp7_);
	_tmp9_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, WIDGETS_TYPE_CONFIG_WINDOW, WidgetsConfigWindow));
	_g_object_unref0 (((WidgetsBasePanel*) self)->parent_window);
	((WidgetsBasePanel*) self)->parent_window = _tmp9_;
	{
		gchar* _tmp10_ = NULL;
		WidgetsConfigWindow* _tmp11_;
		ConfigConfig* _tmp12_;
		GKeyFile* _tmp13_;
		gchar* _tmp14_;
		GdkRGBA _tmp15_ = {0};
		_tmp11_ = ((WidgetsBasePanel*) self)->parent_window;
		_tmp12_ = _tmp11_->config;
		_tmp13_ = _tmp12_->config_file;
		_tmp14_ = g_key_file_get_string (_tmp13_, "theme", "background", &_inner_error0_);
		_tmp10_ = _tmp14_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		utils_hex_to_rgba (_tmp10_, 1.0, &_tmp15_);
		((WidgetsBasePanel*) self)->background_color = _tmp15_;
		_g_free0 (_tmp10_);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		GError* _tmp16_;
		const gchar* _tmp17_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp16_ = e;
		_tmp17_ = _tmp16_->message;
		g_print ("RemotePanel init: %s\n", _tmp17_);
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return NULL;
	}
	_tmp18_ = widgets_switcher_new (self->width);
	g_object_ref_sink (_tmp18_);
	_g_object_unref0 (((WidgetsBasePanel*) self)->switcher);
	((WidgetsBasePanel*) self)->switcher = _tmp18_;
	_tmp19_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	g_object_ref_sink (_tmp19_);
	_g_object_unref0 (self->group_page_box);
	self->group_page_box = _tmp19_;
	gtk_widget_set_size_request ((GtkWidget*) self, self->width, -1);
	_tmp20_ = ((WidgetsBasePanel*) self)->home_page_box;
	gtk_widget_set_size_request ((GtkWidget*) _tmp20_, self->width, -1);
	_tmp21_ = self->group_page_box;
	gtk_widget_set_size_request ((GtkWidget*) _tmp21_, self->width, -1);
	_tmp22_ = ((WidgetsBasePanel*) self)->search_page_box;
	gtk_widget_set_size_request ((GtkWidget*) _tmp22_, self->width, -1);
	_tmp23_ = ((WidgetsBasePanel*) self)->switcher;
	gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp23_, TRUE, TRUE, (guint) 0);
	widgets_base_panel_show_home_page ((WidgetsBasePanel*) self, NULL);
	g_signal_connect_object ((GtkWidget*) self, "draw", (GCallback) _widgets_base_panel_on_draw_gtk_widget_draw, (WidgetsBasePanel*) self, 0);
	return self;
}

WidgetsRemotePanel*
widgets_remote_panel_new (WidgetsWorkspace* space,
                          WidgetsWorkspaceManager* manager)
{
	return widgets_remote_panel_construct (WIDGETS_TYPE_REMOTE_PANEL, space, manager);
}

void
widgets_remote_panel_load_config (WidgetsRemotePanel* self)
{
	GFile* file = NULL;
	const gchar* _tmp0_;
	GFile* _tmp1_;
	GFile* _tmp2_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->config_file_path;
	_tmp1_ = g_file_new_for_path (_tmp0_);
	file = _tmp1_;
	_tmp2_ = file;
	if (!g_file_query_exists (_tmp2_, NULL)) {
		gchar* _tmp3_;
		gchar* _tmp4_;
		const gchar* _tmp5_;
		_tmp3_ = utils_get_config_dir ();
		_tmp4_ = _tmp3_;
		utils_touch_dir (_tmp4_);
		_g_free0 (_tmp4_);
		_tmp5_ = self->config_file_path;
		utils_create_file (_tmp5_);
	} else {
		{
			GKeyFile* _tmp6_;
			const gchar* _tmp7_;
			_tmp6_ = self->config_file;
			_tmp7_ = self->config_file_path;
			g_key_file_load_from_file (_tmp6_, _tmp7_, G_KEY_FILE_NONE, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
		}
		goto __finally0;
		__catch0_g_error:
		{
			GError* e = NULL;
			const gchar* _tmp8_;
			e = _inner_error0_;
			_inner_error0_ = NULL;
			_tmp8_ = self->config_file_path;
			if (!g_file_test (_tmp8_, G_FILE_TEST_EXISTS)) {
				GError* _tmp9_;
				const gchar* _tmp10_;
				_tmp9_ = e;
				_tmp10_ = _tmp9_->message;
				g_print ("Config: %s\n", _tmp10_);
			}
			_g_error_free0 (e);
		}
		__finally0:
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_object_unref0 (file);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
			g_clear_error (&_inner_error0_);
			return;
		}
	}
	_g_object_unref0 (file);
}

static gchar*
string_strip (const gchar* self)
{
	gchar* _result_ = NULL;
	gchar* _tmp0_;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_strdup (self);
	_result_ = _tmp0_;
	g_strstrip (_result_);
	result = _result_;
	return result;
}

static void
___lambda115_ (WidgetsRemotePanel* self,
               GtkEntry* entry)
{
	const gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gboolean _tmp3_;
	g_return_if_fail (entry != NULL);
	_tmp0_ = gtk_entry_get_text (entry);
	_tmp1_ = string_strip (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strcmp0 (_tmp2_, "") != 0;
	_g_free0 (_tmp2_);
	if (_tmp3_) {
		const gchar* _tmp4_;
		GtkBox* _tmp5_;
		_tmp4_ = gtk_entry_get_text (entry);
		_tmp5_ = ((WidgetsBasePanel*) self)->home_page_box;
		widgets_base_panel_show_search_page ((WidgetsBasePanel*) self, _tmp4_, "", (GtkWidget*) _tmp5_);
	}
}

static void
____lambda115__gtk_entry_activate (GtkEntry* _sender,
                                   gpointer self)
{
	___lambda115_ ((WidgetsRemotePanel*) self, _sender);
}

static void
__lambda144_ (WidgetsRemotePanel* self)
{
	widgets_base_panel_update_home_page ((WidgetsBasePanel*) self);
}

static void
___lambda144__widgets_remote_panel_update_page_after_edit (gpointer self)
{
	__lambda144_ ((WidgetsRemotePanel*) self);
}

static void
_____lambda143_ (WidgetsRemotePanel* self,
                 WidgetsServerButton* w,
                 const gchar* server_info)
{
	g_return_if_fail (w != NULL);
	g_return_if_fail (server_info != NULL);
	widgets_remote_panel_edit_server (self, server_info, ___lambda144__widgets_remote_panel_update_page_after_edit, self);
}

static void
______lambda143__widgets_server_button_edit_server (WidgetsServerButton* _sender,
                                                    const gchar* server_info,
                                                    gpointer self)
{
	_____lambda143_ ((WidgetsRemotePanel*) self, _sender, server_info);
}

static void
widgets_remote_panel_real_create_home_page (WidgetsBasePanel* base)
{
	WidgetsRemotePanel * self;
	GtkBox* _tmp0_;
	GeeHashMap* groups = NULL;
	GeeHashMap* _tmp1_;
	GeeArrayList* ungroups = NULL;
	GeeArrayList* _tmp2_;
	gboolean _tmp26_ = FALSE;
	GeeHashMap* _tmp27_;
	gint _tmp28_;
	gint _tmp29_;
	GtkScrolledWindow* _tmp41_;
	GtkBox* _tmp42_;
	GtkScrolledWindow* _tmp43_;
	GtkBox* server_box = NULL;
	GtkBox* _tmp44_;
	GtkScrolledWindow* _tmp45_;
	GtkBox* _tmp46_;
	GeeArrayList* _tmp47_;
	gint _tmp48_;
	gint _tmp49_;
	GeeHashMap* _tmp50_;
	gint _tmp51_;
	gint _tmp52_;
	WidgetsSplitLine* split_line = NULL;
	WidgetsSplitLine* _tmp90_;
	GtkBox* _tmp91_;
	WidgetsAddButton* add_server_button = NULL;
	WidgetsAddButton* _tmp92_;
	GtkBox* _tmp93_;
	GError* _inner_error0_ = NULL;
	self = (WidgetsRemotePanel*) base;
	_tmp0_ = ((WidgetsBasePanel*) self)->home_page_box;
	utils_destroy_all_children ((GtkContainer*) _tmp0_);
	_g_object_unref0 (((WidgetsBasePanel*) self)->home_page_scrolledwindow);
	((WidgetsBasePanel*) self)->home_page_scrolledwindow = NULL;
	_tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, G_TYPE_INT, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	groups = _tmp1_;
	_tmp2_ = gee_array_list_new (GEE_TYPE_ARRAY_LIST, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
	ungroups = _tmp2_;
	{
		GKeyFile* _tmp3_;
		gsize _tmp4_ = 0;
		gchar** _tmp5_;
		widgets_remote_panel_load_config (self);
		_tmp3_ = self->config_file;
		_tmp5_ = g_key_file_get_groups (_tmp3_, &_tmp4_);
		{
			gchar** option_collection = NULL;
			gint option_collection_length1 = 0;
			gint _option_collection_size_ = 0;
			gint option_it = 0;
			option_collection = _tmp5_;
			option_collection_length1 = _tmp4_;
			for (option_it = 0; option_it < option_collection_length1; option_it = option_it + 1) {
				const gchar* option = NULL;
				option = option_collection[option_it];
				{
					gchar* group_name = NULL;
					GKeyFile* _tmp6_;
					const gchar* _tmp7_;
					gchar* _tmp8_;
					const gchar* _tmp9_;
					_tmp6_ = self->config_file;
					_tmp7_ = option;
					_tmp8_ = g_key_file_get_value (_tmp6_, _tmp7_, "GroupName", &_inner_error0_);
					group_name = _tmp8_;
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
						goto __catch0_g_error;
					}
					_tmp9_ = group_name;
					if (g_strcmp0 (_tmp9_, "") == 0) {
						const gchar* _tmp10_;
						GeeArrayList* _tmp11_;
						GKeyFile* _tmp12_;
						_tmp10_ = option;
						_tmp11_ = ungroups;
						_tmp12_ = self->config_file;
						widgets_remote_panel_add_group_item (self, _tmp10_, _tmp11_, _tmp12_);
					} else {
						GeeHashMap* _tmp13_;
						const gchar* _tmp14_;
						_tmp13_ = groups;
						_tmp14_ = group_name;
						if (gee_abstract_map_has_key ((GeeAbstractMap*) _tmp13_, _tmp14_)) {
							gint group_item_number = 0;
							GeeHashMap* _tmp15_;
							const gchar* _tmp16_;
							gpointer _tmp17_;
							GeeHashMap* _tmp18_;
							const gchar* _tmp19_;
							_tmp15_ = groups;
							_tmp16_ = group_name;
							_tmp17_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp15_, _tmp16_);
							group_item_number = (gint) ((gintptr) _tmp17_);
							_tmp18_ = groups;
							_tmp19_ = group_name;
							gee_abstract_map_set ((GeeAbstractMap*) _tmp18_, _tmp19_, (gpointer) ((gintptr) (group_item_number + 1)));
						} else {
							GeeHashMap* _tmp20_;
							const gchar* _tmp21_;
							_tmp20_ = groups;
							_tmp21_ = group_name;
							gee_abstract_map_set ((GeeAbstractMap*) _tmp20_, _tmp21_, (gpointer) ((gintptr) 1));
						}
					}
					_g_free0 (group_name);
				}
			}
			option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
		}
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		const gchar* _tmp22_;
		const gchar* _tmp23_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp22_ = self->config_file_path;
		g_print ("RemotePanel config path: %s\n", _tmp22_);
		_tmp23_ = self->config_file_path;
		if (!g_file_test (_tmp23_, G_FILE_TEST_EXISTS)) {
			GError* _tmp24_;
			const gchar* _tmp25_;
			_tmp24_ = e;
			_tmp25_ = _tmp24_->message;
			g_print ("RemotePanel create_home_page: %s\n", _tmp25_);
		}
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		_g_object_unref0 (ungroups);
		_g_object_unref0 (groups);
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
	_tmp27_ = groups;
	_tmp28_ = gee_abstract_map_get_size ((GeeAbstractMap*) _tmp27_);
	_tmp29_ = _tmp28_;
	if (_tmp29_ > 0) {
		_tmp26_ = TRUE;
	} else {
		GeeArrayList* _tmp30_;
		gint _tmp31_;
		gint _tmp32_;
		_tmp30_ = ungroups;
		_tmp31_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp30_);
		_tmp32_ = _tmp31_;
		_tmp26_ = _tmp32_ > 1;
	}
	if (_tmp26_) {
		WidgetsSearchEntry* search_entry = NULL;
		WidgetsSearchEntry* _tmp33_;
		GtkBox* _tmp34_;
		WidgetsSearchEntry* _tmp35_;
		WidgetsSearchEntry* _tmp36_;
		WidgetsEntry* _tmp37_;
		WidgetsSplitLine* split_line = NULL;
		WidgetsSplitLine* _tmp38_;
		GtkBox* _tmp39_;
		WidgetsSplitLine* _tmp40_;
		_tmp33_ = widgets_search_entry_new ();
		g_object_ref_sink (_tmp33_);
		search_entry = _tmp33_;
		_tmp34_ = ((WidgetsBasePanel*) self)->home_page_box;
		_tmp35_ = search_entry;
		gtk_box_pack_start (_tmp34_, (GtkWidget*) _tmp35_, FALSE, FALSE, (guint) 0);
		_tmp36_ = search_entry;
		_tmp37_ = _tmp36_->search_entry;
		g_signal_connect_object ((GtkEntry*) _tmp37_, "activate", (GCallback) ____lambda115__gtk_entry_activate, self, 0);
		_tmp38_ = widgets_split_line_new ();
		g_object_ref_sink (_tmp38_);
		split_line = _tmp38_;
		_tmp39_ = ((WidgetsBasePanel*) self)->home_page_box;
		_tmp40_ = split_line;
		gtk_box_pack_start (_tmp39_, (GtkWidget*) _tmp40_, FALSE, FALSE, (guint) 0);
		_g_object_unref0 (split_line);
		_g_object_unref0 (search_entry);
	}
	_tmp41_ = widgets_base_panel_create_scrolled_window ((WidgetsBasePanel*) self);
	_g_object_unref0 (((WidgetsBasePanel*) self)->home_page_scrolledwindow);
	((WidgetsBasePanel*) self)->home_page_scrolledwindow = _tmp41_;
	_tmp42_ = ((WidgetsBasePanel*) self)->home_page_box;
	_tmp43_ = ((WidgetsBasePanel*) self)->home_page_scrolledwindow;
	gtk_box_pack_start (_tmp42_, (GtkWidget*) _tmp43_, TRUE, TRUE, (guint) 0);
	_tmp44_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	g_object_ref_sink (_tmp44_);
	server_box = _tmp44_;
	_tmp45_ = ((WidgetsBasePanel*) self)->home_page_scrolledwindow;
	_tmp46_ = server_box;
	gtk_container_add ((GtkContainer*) _tmp45_, (GtkWidget*) _tmp46_);
	_tmp47_ = ungroups;
	_tmp48_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp47_);
	_tmp49_ = _tmp48_;
	_tmp50_ = groups;
	_tmp51_ = gee_abstract_map_get_size ((GeeAbstractMap*) _tmp50_);
	_tmp52_ = _tmp51_;
	if ((_tmp49_ + _tmp52_) > 0) {
		{
			GeeIterator* _group_entry_it = NULL;
			GeeHashMap* _tmp53_;
			GeeSet* _tmp54_;
			GeeSet* _tmp55_;
			GeeSet* _tmp56_;
			GeeIterator* _tmp57_;
			GeeIterator* _tmp58_;
			_tmp53_ = groups;
			_tmp54_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp53_);
			_tmp55_ = _tmp54_;
			_tmp56_ = _tmp55_;
			_tmp57_ = gee_iterable_iterator ((GeeIterable*) _tmp56_);
			_tmp58_ = _tmp57_;
			_g_object_unref0 (_tmp56_);
			_group_entry_it = _tmp58_;
			while (TRUE) {
				GeeIterator* _tmp59_;
				GeeMapEntry* group_entry = NULL;
				GeeIterator* _tmp60_;
				gpointer _tmp61_;
				WidgetsServerGroupButton* server_group_button = NULL;
				GeeMapEntry* _tmp62_;
				gconstpointer _tmp63_;
				gconstpointer _tmp64_;
				GeeMapEntry* _tmp65_;
				gconstpointer _tmp66_;
				gconstpointer _tmp67_;
				WidgetsServerGroupButton* _tmp68_;
				GtkBox* _tmp69_;
				WidgetsServerGroupButton* _tmp70_;
				_tmp59_ = _group_entry_it;
				if (!gee_iterator_next (_tmp59_)) {
					break;
				}
				_tmp60_ = _group_entry_it;
				_tmp61_ = gee_iterator_get (_tmp60_);
				group_entry = (GeeMapEntry*) _tmp61_;
				_tmp62_ = group_entry;
				_tmp63_ = gee_map_entry_get_key (_tmp62_);
				_tmp64_ = _tmp63_;
				_tmp65_ = group_entry;
				_tmp66_ = gee_map_entry_get_value (_tmp65_);
				_tmp67_ = _tmp66_;
				_tmp68_ = widgets_remote_panel_create_server_group_button (self, (const gchar*) _tmp64_, (gint) ((gintptr) _tmp67_));
				server_group_button = _tmp68_;
				_tmp69_ = server_box;
				_tmp70_ = server_group_button;
				gtk_box_pack_start (_tmp69_, (GtkWidget*) _tmp70_, FALSE, FALSE, (guint) 0);
				_g_object_unref0 (server_group_button);
				_g_object_unref0 (group_entry);
			}
			_g_object_unref0 (_group_entry_it);
		}
		{
			GeeArrayList* _ungroup_list_list = NULL;
			GeeArrayList* _tmp71_;
			gint _ungroup_list_size = 0;
			GeeArrayList* _tmp72_;
			gint _tmp73_;
			gint _tmp74_;
			gint _ungroup_list_index = 0;
			_tmp71_ = ungroups;
			_ungroup_list_list = _tmp71_;
			_tmp72_ = _ungroup_list_list;
			_tmp73_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp72_);
			_tmp74_ = _tmp73_;
			_ungroup_list_size = _tmp74_;
			_ungroup_list_index = -1;
			while (TRUE) {
				gint _tmp75_;
				gint _tmp76_;
				GeeArrayList* ungroup_list = NULL;
				GeeArrayList* _tmp77_;
				gpointer _tmp78_;
				WidgetsServerButton* server_button = NULL;
				GeeArrayList* _tmp79_;
				gpointer _tmp80_;
				gchar* _tmp81_;
				GeeArrayList* _tmp82_;
				gpointer _tmp83_;
				gchar* _tmp84_;
				WidgetsServerButton* _tmp85_;
				WidgetsServerButton* _tmp86_;
				WidgetsServerButton* _tmp87_;
				GtkBox* _tmp88_;
				WidgetsServerButton* _tmp89_;
				_ungroup_list_index = _ungroup_list_index + 1;
				_tmp75_ = _ungroup_list_index;
				_tmp76_ = _ungroup_list_size;
				if (!(_tmp75_ < _tmp76_)) {
					break;
				}
				_tmp77_ = _ungroup_list_list;
				_tmp78_ = gee_abstract_list_get ((GeeAbstractList*) _tmp77_, _ungroup_list_index);
				ungroup_list = (GeeArrayList*) _tmp78_;
				_tmp79_ = ungroup_list;
				_tmp80_ = gee_abstract_list_get ((GeeAbstractList*) _tmp79_, 0);
				_tmp81_ = (gchar*) _tmp80_;
				_tmp82_ = ungroup_list;
				_tmp83_ = gee_abstract_list_get ((GeeAbstractList*) _tmp82_, 1);
				_tmp84_ = (gchar*) _tmp83_;
				_tmp85_ = widgets_remote_panel_create_server_button (self, _tmp81_, _tmp84_);
				_tmp86_ = _tmp85_;
				_g_free0 (_tmp84_);
				_g_free0 (_tmp81_);
				server_button = _tmp86_;
				_tmp87_ = server_button;
				g_signal_connect_object (_tmp87_, "edit-server", (GCallback) ______lambda143__widgets_server_button_edit_server, self, 0);
				_tmp88_ = server_box;
				_tmp89_ = server_button;
				gtk_box_pack_start (_tmp88_, (GtkWidget*) _tmp89_, FALSE, FALSE, (guint) 0);
				_g_object_unref0 (server_button);
				_g_object_unref0 (ungroup_list);
			}
		}
	}
	_tmp90_ = widgets_split_line_new ();
	g_object_ref_sink (_tmp90_);
	split_line = _tmp90_;
	_tmp91_ = ((WidgetsBasePanel*) self)->home_page_box;
	gtk_box_pack_start (_tmp91_, (GtkWidget*) split_line, FALSE, FALSE, (guint) 0);
	_tmp92_ = widgets_remote_panel_create_add_server_button (self);
	add_server_button = _tmp92_;
	gtk_widget_set_margin_left ((GtkWidget*) add_server_button, 16);
	gtk_widget_set_margin_right ((GtkWidget*) add_server_button, 16);
	gtk_widget_set_margin_top ((GtkWidget*) add_server_button, 16);
	gtk_widget_set_margin_bottom ((GtkWidget*) add_server_button, 16);
	_tmp93_ = ((WidgetsBasePanel*) self)->home_page_box;
	gtk_box_pack_start (_tmp93_, (GtkWidget*) add_server_button, FALSE, FALSE, (guint) 0);
	_g_object_unref0 (add_server_button);
	_g_object_unref0 (split_line);
	_g_object_unref0 (server_box);
	_g_object_unref0 (ungroups);
	_g_object_unref0 (groups);
}

static Block29Data*
block29_data_ref (Block29Data* _data29_)
{
	g_atomic_int_inc (&_data29_->_ref_count_);
	return _data29_;
}

static void
block29_data_unref (void * _userdata_)
{
	Block29Data* _data29_;
	_data29_ = (Block29Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data29_->_ref_count_)) {
		WidgetsRemotePanel* self;
		self = _data29_->self;
		_g_free0 (_data29_->server_info);
		_g_object_unref0 (self);
		g_slice_free (Block29Data, _data29_);
	}
}

static gboolean
__lambda127_ (Block29Data* _data29_)
{
	WidgetsRemotePanel* self;
	WidgetsTerm* term = NULL;
	WidgetsWorkspaceManager* _tmp0_;
	WidgetsWorkspace* _tmp1_;
	WidgetsWorkspaceManager* _tmp2_;
	WidgetsWorkspace* _tmp3_;
	WidgetsTerm* _tmp4_;
	gboolean result;
	self = _data29_->self;
	_tmp0_ = ((WidgetsBasePanel*) self)->workspace_manager;
	_tmp1_ = _tmp0_->focus_workspace;
	_tmp2_ = ((WidgetsBasePanel*) self)->workspace_manager;
	_tmp3_ = _tmp2_->focus_workspace;
	_tmp4_ = widgets_workspace_get_focus_term (_tmp1_, (GtkContainer*) _tmp3_);
	term = _tmp4_;
	widgets_term_login_server (term, _data29_->server_info);
	result = FALSE;
	_g_object_unref0 (term);
	return result;
}

static gboolean
___lambda127__gsource_func (gpointer self)
{
	gboolean result;
	result = __lambda127_ (self);
	return result;
}

void
widgets_remote_panel_login_server (WidgetsRemotePanel* self,
                                   const gchar* server_info)
{
	Block29Data* _data29_;
	gchar* _tmp0_;
	WidgetsWorkspace* _tmp1_;
	GtkWidget* _tmp2_;
	WidgetsTerm* focus_term = NULL;
	WidgetsWorkspaceManager* _tmp4_;
	WidgetsWorkspace* _tmp5_;
	WidgetsWorkspaceManager* _tmp6_;
	WidgetsWorkspace* _tmp7_;
	WidgetsTerm* _tmp8_;
	WidgetsTerm* _tmp9_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (server_info != NULL);
	_data29_ = g_slice_new0 (Block29Data);
	_data29_->_ref_count_ = 1;
	_data29_->self = g_object_ref (self);
	_tmp0_ = g_strdup (server_info);
	_g_free0 (_data29_->server_info);
	_data29_->server_info = _tmp0_;
	_tmp1_ = ((WidgetsBasePanel*) self)->workspace;
	widgets_workspace_hide_remote_panel (_tmp1_);
	_tmp2_ = ((WidgetsBasePanel*) self)->focus_widget;
	if (_tmp2_ != NULL) {
		GtkWidget* _tmp3_;
		_tmp3_ = ((WidgetsBasePanel*) self)->focus_widget;
		gtk_widget_grab_focus (_tmp3_);
	}
	_tmp4_ = ((WidgetsBasePanel*) self)->workspace_manager;
	_tmp5_ = _tmp4_->focus_workspace;
	_tmp6_ = ((WidgetsBasePanel*) self)->workspace_manager;
	_tmp7_ = _tmp6_->focus_workspace;
	_tmp8_ = widgets_workspace_get_focus_term (_tmp5_, (GtkContainer*) _tmp7_);
	focus_term = _tmp8_;
	_tmp9_ = focus_term;
	if (widgets_term_has_foreground_process (_tmp9_)) {
		WidgetsWorkspaceManager* _tmp10_;
		_tmp10_ = ((WidgetsBasePanel*) self)->workspace_manager;
		widgets_workspace_manager_new_workspace_with_current_directory (_tmp10_, TRUE);
	}
	g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 10, ___lambda127__gsource_func, block29_data_ref (_data29_), block29_data_unref);
	_g_object_unref0 (focus_term);
	block29_data_unref (_data29_);
	_data29_ = NULL;
}

void
widgets_remote_panel_show_group_page (WidgetsRemotePanel* self,
                                      const gchar* group_name,
                                      GtkWidget* start_widget,
                                      const gchar* directoin)
{
	g_return_if_fail (self != NULL);
	g_return_if_fail (group_name != NULL);
	g_return_if_fail (start_widget != NULL);
	g_return_if_fail (directoin != NULL);
	widgets_remote_panel_create_group_page (self, group_name);
	if (g_strcmp0 (directoin, "scroll_to_right") == 0) {
		WidgetsSwitcher* _tmp0_;
		GtkBox* _tmp1_;
		_tmp0_ = ((WidgetsBasePanel*) self)->switcher;
		_tmp1_ = self->group_page_box;
		widgets_switcher_scroll_to_right (_tmp0_, start_widget, (GtkWidget*) _tmp1_);
	} else {
		if (g_strcmp0 (directoin, "scroll_to_left") == 0) {
			WidgetsSwitcher* _tmp2_;
			GtkBox* _tmp3_;
			_tmp2_ = ((WidgetsBasePanel*) self)->switcher;
			_tmp3_ = self->group_page_box;
			widgets_switcher_scroll_to_left (_tmp2_, start_widget, (GtkWidget*) _tmp3_);
		}
	}
	gtk_widget_show_all ((GtkWidget*) self);
}

static Block30Data*
block30_data_ref (Block30Data* _data30_)
{
	g_atomic_int_inc (&_data30_->_ref_count_);
	return _data30_;
}

static void
block30_data_unref (void * _userdata_)
{
	Block30Data* _data30_;
	_data30_ = (Block30Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data30_->_ref_count_)) {
		WidgetsRemotePanel* self;
		self = _data30_->self;
		_g_free0 (_data30_->group_name);
		_g_object_unref0 (self);
		g_slice_free (Block30Data, _data30_);
	}
}

static void
__lambda122_ (WidgetsRemotePanel* self,
              GdkEventButton* w)
{
	GtkBox* _tmp0_;
	g_return_if_fail (w != NULL);
	_tmp0_ = self->group_page_box;
	widgets_base_panel_show_home_page ((WidgetsBasePanel*) self, (GtkWidget*) _tmp0_);
}

static void
___lambda122__widgets_click_event_box_clicked (WidgetsClickEventBox* _sender,
                                               GdkEventButton* event,
                                               gpointer self)
{
	__lambda122_ ((WidgetsRemotePanel*) self, event);
}

static void
___lambda123_ (Block30Data* _data30_,
               GtkEntry* entry)
{
	WidgetsRemotePanel* self;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gboolean _tmp3_;
	self = _data30_->self;
	g_return_if_fail (entry != NULL);
	_tmp0_ = gtk_entry_get_text (entry);
	_tmp1_ = string_strip (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strcmp0 (_tmp2_, "") != 0;
	_g_free0 (_tmp2_);
	if (_tmp3_) {
		const gchar* _tmp4_;
		GtkBox* _tmp5_;
		_tmp4_ = gtk_entry_get_text (entry);
		_tmp5_ = self->group_page_box;
		widgets_base_panel_show_search_page ((WidgetsBasePanel*) self, _tmp4_, _data30_->group_name, (GtkWidget*) _tmp5_);
	}
}

static void
____lambda123__gtk_entry_activate (GtkEntry* _sender,
                                   gpointer self)
{
	___lambda123_ (self, _sender);
}

static void
__lambda142_ (Block30Data* _data30_)
{
	WidgetsRemotePanel* self;
	self = _data30_->self;
	widgets_remote_panel_update_group_page (self, _data30_->group_name);
}

static void
___lambda142__widgets_remote_panel_update_page_after_edit (gpointer self)
{
	__lambda142_ (self);
}

static void
_____lambda128_ (Block30Data* _data30_,
                 WidgetsServerButton* w,
                 const gchar* server_info)
{
	WidgetsRemotePanel* self;
	self = _data30_->self;
	g_return_if_fail (w != NULL);
	g_return_if_fail (server_info != NULL);
	widgets_remote_panel_edit_server (self, server_info, ___lambda142__widgets_remote_panel_update_page_after_edit, _data30_);
}

static void
______lambda128__widgets_server_button_edit_server (WidgetsServerButton* _sender,
                                                    const gchar* server_info,
                                                    gpointer self)
{
	_____lambda128_ (self, _sender, server_info);
}

void
widgets_remote_panel_create_group_page (WidgetsRemotePanel* self,
                                        const gchar* group_name)
{
	Block30Data* _data30_;
	gchar* _tmp0_;
	GtkBox* _tmp1_;
	GeeArrayList* ungroups = NULL;
	GeeArrayList* _tmp2_;
	GtkBox* top_box = NULL;
	GtkBox* _tmp16_;
	GtkBox* _tmp17_;
	GtkBox* _tmp18_;
	GtkBox* _tmp19_;
	WidgetsImageButton* back_button = NULL;
	WidgetsImageButton* _tmp20_;
	WidgetsImageButton* _tmp21_;
	WidgetsImageButton* _tmp22_;
	WidgetsImageButton* _tmp23_;
	GtkBox* _tmp24_;
	WidgetsImageButton* _tmp25_;
	WidgetsSplitLine* split_line = NULL;
	WidgetsSplitLine* _tmp26_;
	GtkBox* _tmp27_;
	WidgetsSplitLine* _tmp28_;
	GeeArrayList* _tmp29_;
	gint _tmp30_;
	gint _tmp31_;
	GtkScrolledWindow* _tmp37_;
	GtkBox* _tmp38_;
	GtkScrolledWindow* _tmp39_;
	GtkBox* server_box = NULL;
	GtkBox* _tmp40_;
	GtkScrolledWindow* _tmp41_;
	GtkBox* _tmp42_;
	GeeArrayList* _tmp43_;
	gint _tmp44_;
	gint _tmp45_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (group_name != NULL);
	_data30_ = g_slice_new0 (Block30Data);
	_data30_->_ref_count_ = 1;
	_data30_->self = g_object_ref (self);
	_tmp0_ = g_strdup (group_name);
	_g_free0 (_data30_->group_name);
	_data30_->group_name = _tmp0_;
	_tmp1_ = self->group_page_box;
	utils_destroy_all_children ((GtkContainer*) _tmp1_);
	_g_object_unref0 (self->group_page_scrolledwindow);
	self->group_page_scrolledwindow = NULL;
	_tmp2_ = gee_array_list_new (GEE_TYPE_ARRAY_LIST, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
	ungroups = _tmp2_;
	{
		GKeyFile* _tmp3_;
		gsize _tmp4_ = 0;
		gchar** _tmp5_;
		widgets_remote_panel_load_config (self);
		_tmp3_ = self->config_file;
		_tmp5_ = g_key_file_get_groups (_tmp3_, &_tmp4_);
		{
			gchar** option_collection = NULL;
			gint option_collection_length1 = 0;
			gint _option_collection_size_ = 0;
			gint option_it = 0;
			option_collection = _tmp5_;
			option_collection_length1 = _tmp4_;
			for (option_it = 0; option_it < option_collection_length1; option_it = option_it + 1) {
				const gchar* option = NULL;
				option = option_collection[option_it];
				{
					gchar* gname = NULL;
					GKeyFile* _tmp6_;
					const gchar* _tmp7_;
					gchar* _tmp8_;
					const gchar* _tmp9_;
					_tmp6_ = self->config_file;
					_tmp7_ = option;
					_tmp8_ = g_key_file_get_value (_tmp6_, _tmp7_, "GroupName", &_inner_error0_);
					gname = _tmp8_;
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
						goto __catch0_g_error;
					}
					_tmp9_ = gname;
					if (g_strcmp0 (_tmp9_, _data30_->group_name) == 0) {
						const gchar* _tmp10_;
						GeeArrayList* _tmp11_;
						GKeyFile* _tmp12_;
						_tmp10_ = option;
						_tmp11_ = ungroups;
						_tmp12_ = self->config_file;
						widgets_remote_panel_add_group_item (self, _tmp10_, _tmp11_, _tmp12_);
					}
					_g_free0 (gname);
				}
			}
			option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
		}
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		const gchar* _tmp13_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp13_ = self->config_file_path;
		if (!g_file_test (_tmp13_, G_FILE_TEST_EXISTS)) {
			GError* _tmp14_;
			const gchar* _tmp15_;
			_tmp14_ = e;
			_tmp15_ = _tmp14_->message;
			g_print ("login_server error: %s\n", _tmp15_);
		}
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		_g_object_unref0 (ungroups);
		block30_data_unref (_data30_);
		_data30_ = NULL;
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
	_tmp16_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
	g_object_ref_sink (_tmp16_);
	top_box = _tmp16_;
	_tmp17_ = top_box;
	gtk_widget_set_size_request ((GtkWidget*) _tmp17_, -1, constant_REMOTE_PANEL_SEARCHBAR_HEIGHT);
	_tmp18_ = self->group_page_box;
	_tmp19_ = top_box;
	gtk_box_pack_start (_tmp18_, (GtkWidget*) _tmp19_, FALSE, FALSE, (guint) 0);
	_tmp20_ = widgets_image_button_new ("back", TRUE, NULL, 12);
	g_object_ref_sink (_tmp20_);
	back_button = _tmp20_;
	_tmp21_ = back_button;
	gtk_widget_set_margin_left ((GtkWidget*) _tmp21_, ((WidgetsBasePanel*) self)->back_button_margin_left);
	_tmp22_ = back_button;
	gtk_widget_set_margin_top ((GtkWidget*) _tmp22_, ((WidgetsBasePanel*) self)->back_button_margin_top);
	_tmp23_ = back_button;
	g_signal_connect_object ((WidgetsClickEventBox*) _tmp23_, "clicked", (GCallback) ___lambda122__widgets_click_event_box_clicked, self, 0);
	_tmp24_ = top_box;
	_tmp25_ = back_button;
	gtk_box_pack_start (_tmp24_, (GtkWidget*) _tmp25_, FALSE, FALSE, (guint) 0);
	_tmp26_ = widgets_split_line_new ();
	g_object_ref_sink (_tmp26_);
	split_line = _tmp26_;
	_tmp27_ = self->group_page_box;
	_tmp28_ = split_line;
	gtk_box_pack_start (_tmp27_, (GtkWidget*) _tmp28_, FALSE, FALSE, (guint) 0);
	_tmp29_ = ungroups;
	_tmp30_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp29_);
	_tmp31_ = _tmp30_;
	if (_tmp31_ > 1) {
		WidgetsSearchEntry* search_entry = NULL;
		WidgetsSearchEntry* _tmp32_;
		GtkBox* _tmp33_;
		WidgetsSearchEntry* _tmp34_;
		WidgetsSearchEntry* _tmp35_;
		WidgetsEntry* _tmp36_;
		_tmp32_ = widgets_search_entry_new ();
		g_object_ref_sink (_tmp32_);
		search_entry = _tmp32_;
		_tmp33_ = top_box;
		_tmp34_ = search_entry;
		gtk_box_pack_start (_tmp33_, (GtkWidget*) _tmp34_, TRUE, TRUE, (guint) 0);
		_tmp35_ = search_entry;
		_tmp36_ = _tmp35_->search_entry;
		g_signal_connect_data ((GtkEntry*) _tmp36_, "activate", (GCallback) ____lambda123__gtk_entry_activate, block30_data_ref (_data30_), (GClosureNotify) block30_data_unref, 0);
		_g_object_unref0 (search_entry);
	}
	_tmp37_ = widgets_base_panel_create_scrolled_window ((WidgetsBasePanel*) self);
	_g_object_unref0 (self->group_page_scrolledwindow);
	self->group_page_scrolledwindow = _tmp37_;
	_tmp38_ = self->group_page_box;
	_tmp39_ = self->group_page_scrolledwindow;
	gtk_box_pack_start (_tmp38_, (GtkWidget*) _tmp39_, TRUE, TRUE, (guint) 0);
	_tmp40_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	g_object_ref_sink (_tmp40_);
	server_box = _tmp40_;
	_tmp41_ = self->group_page_scrolledwindow;
	_tmp42_ = server_box;
	gtk_container_add ((GtkContainer*) _tmp41_, (GtkWidget*) _tmp42_);
	_tmp43_ = ungroups;
	_tmp44_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp43_);
	_tmp45_ = _tmp44_;
	if (_tmp45_ > 0) {
		{
			GeeArrayList* _ungroup_list_list = NULL;
			GeeArrayList* _tmp46_;
			gint _ungroup_list_size = 0;
			GeeArrayList* _tmp47_;
			gint _tmp48_;
			gint _tmp49_;
			gint _ungroup_list_index = 0;
			_tmp46_ = ungroups;
			_ungroup_list_list = _tmp46_;
			_tmp47_ = _ungroup_list_list;
			_tmp48_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp47_);
			_tmp49_ = _tmp48_;
			_ungroup_list_size = _tmp49_;
			_ungroup_list_index = -1;
			while (TRUE) {
				gint _tmp50_;
				gint _tmp51_;
				GeeArrayList* ungroup_list = NULL;
				GeeArrayList* _tmp52_;
				gpointer _tmp53_;
				WidgetsServerButton* server_button = NULL;
				GeeArrayList* _tmp54_;
				gpointer _tmp55_;
				gchar* _tmp56_;
				GeeArrayList* _tmp57_;
				gpointer _tmp58_;
				gchar* _tmp59_;
				WidgetsServerButton* _tmp60_;
				WidgetsServerButton* _tmp61_;
				WidgetsServerButton* _tmp62_;
				GtkBox* _tmp63_;
				WidgetsServerButton* _tmp64_;
				_ungroup_list_index = _ungroup_list_index + 1;
				_tmp50_ = _ungroup_list_index;
				_tmp51_ = _ungroup_list_size;
				if (!(_tmp50_ < _tmp51_)) {
					break;
				}
				_tmp52_ = _ungroup_list_list;
				_tmp53_ = gee_abstract_list_get ((GeeAbstractList*) _tmp52_, _ungroup_list_index);
				ungroup_list = (GeeArrayList*) _tmp53_;
				_tmp54_ = ungroup_list;
				_tmp55_ = gee_abstract_list_get ((GeeAbstractList*) _tmp54_, 0);
				_tmp56_ = (gchar*) _tmp55_;
				_tmp57_ = ungroup_list;
				_tmp58_ = gee_abstract_list_get ((GeeAbstractList*) _tmp57_, 1);
				_tmp59_ = (gchar*) _tmp58_;
				_tmp60_ = widgets_remote_panel_create_server_button (self, _tmp56_, _tmp59_);
				_tmp61_ = _tmp60_;
				_g_free0 (_tmp59_);
				_g_free0 (_tmp56_);
				server_button = _tmp61_;
				_tmp62_ = server_button;
				g_signal_connect_data (_tmp62_, "edit-server", (GCallback) ______lambda128__widgets_server_button_edit_server, block30_data_ref (_data30_), (GClosureNotify) block30_data_unref, 0);
				_tmp63_ = server_box;
				_tmp64_ = server_button;
				gtk_box_pack_start (_tmp63_, (GtkWidget*) _tmp64_, FALSE, FALSE, (guint) 0);
				_g_object_unref0 (server_button);
				_g_object_unref0 (ungroup_list);
			}
		}
	}
	_g_object_unref0 (server_box);
	_g_object_unref0 (split_line);
	_g_object_unref0 (back_button);
	_g_object_unref0 (top_box);
	_g_object_unref0 (ungroups);
	block30_data_unref (_data30_);
	_data30_ = NULL;
}

void
widgets_remote_panel_add_server (WidgetsRemotePanel* self,
                                 const gchar* server_address,
                                 const gchar* user,
                                 const gchar* password,
                                 const gchar* private_key,
                                 gint port,
                                 const gchar* encode,
                                 const gchar* path,
                                 const gchar* command,
                                 const gchar* name,
                                 const gchar* group_name,
                                 const gchar* backspace,
                                 const gchar* delete)
{
	gboolean _tmp0_ = FALSE;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (server_address != NULL);
	g_return_if_fail (user != NULL);
	g_return_if_fail (password != NULL);
	g_return_if_fail (private_key != NULL);
	g_return_if_fail (encode != NULL);
	g_return_if_fail (path != NULL);
	g_return_if_fail (command != NULL);
	g_return_if_fail (name != NULL);
	g_return_if_fail (group_name != NULL);
	g_return_if_fail (backspace != NULL);
	g_return_if_fail (delete != NULL);
	if (g_strcmp0 (user, "") != 0) {
		_tmp0_ = g_strcmp0 (server_address, "") != 0;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		gchar* _tmp1_;
		gchar* _tmp2_;
		GKeyFile* _tmp3_;
		gchar* gname = NULL;
		gchar* _tmp4_;
		GKeyFile* _tmp5_;
		const gchar* _tmp6_;
		GKeyFile* _tmp7_;
		const gchar* _tmp8_;
		GKeyFile* _tmp9_;
		const gchar* _tmp10_;
		GKeyFile* _tmp11_;
		const gchar* _tmp12_;
		GKeyFile* _tmp13_;
		const gchar* _tmp14_;
		GKeyFile* _tmp15_;
		const gchar* _tmp16_;
		GKeyFile* _tmp17_;
		const gchar* _tmp18_;
		GKeyFile* _tmp19_;
		const gchar* _tmp20_;
		_tmp1_ = utils_get_config_dir ();
		_tmp2_ = _tmp1_;
		utils_touch_dir (_tmp2_);
		_g_free0 (_tmp2_);
		widgets_remote_panel_load_config (self);
		_tmp3_ = self->config_file;
		g_key_file_set_list_separator (_tmp3_, ',');
		_tmp4_ = g_strdup_printf ("%s@%s@%i", user, server_address, port);
		gname = _tmp4_;
		_tmp5_ = self->config_file;
		_tmp6_ = gname;
		g_key_file_set_string (_tmp5_, _tmp6_, "Name", name);
		_tmp7_ = self->config_file;
		_tmp8_ = gname;
		g_key_file_set_string (_tmp7_, _tmp8_, "GroupName", group_name);
		_tmp9_ = self->config_file;
		_tmp10_ = gname;
		g_key_file_set_string (_tmp9_, _tmp10_, "Command", command);
		_tmp11_ = self->config_file;
		_tmp12_ = gname;
		g_key_file_set_string (_tmp11_, _tmp12_, "Path", path);
		_tmp13_ = self->config_file;
		_tmp14_ = gname;
		g_key_file_set_string (_tmp13_, _tmp14_, "Encode", encode);
		_tmp15_ = self->config_file;
		_tmp16_ = gname;
		g_key_file_set_string (_tmp15_, _tmp16_, "Backspace", backspace);
		_tmp17_ = self->config_file;
		_tmp18_ = gname;
		g_key_file_set_string (_tmp17_, _tmp18_, "Del", delete);
		_tmp19_ = self->config_file;
		_tmp20_ = gname;
		g_key_file_set_string (_tmp19_, _tmp20_, "PrivateKey", private_key);
		utils_store_password (user, server_address, port, password);
		{
			GKeyFile* _tmp21_;
			const gchar* _tmp22_;
			_tmp21_ = self->config_file;
			_tmp22_ = self->config_file_path;
			g_key_file_save_to_file (_tmp21_, _tmp22_, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
		}
		goto __finally0;
		__catch0_g_error:
		{
			GError* e = NULL;
			const gchar* _tmp23_;
			GError* _tmp24_;
			const gchar* _tmp25_;
			e = _inner_error0_;
			_inner_error0_ = NULL;
			_tmp23_ = self->config_file_path;
			_tmp24_ = e;
			_tmp25_ = _tmp24_->message;
			g_print ("add_server error occur when config_file.save_to_file %s: %s\n", _tmp23_, _tmp25_);
			_g_error_free0 (e);
		}
		__finally0:
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_free0 (gname);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
			g_clear_error (&_inner_error0_);
			return;
		}
		_g_free0 (gname);
	}
}

static Block31Data*
block31_data_ref (Block31Data* _data31_)
{
	g_atomic_int_inc (&_data31_->_ref_count_);
	return _data31_;
}

static void
block31_data_unref (void * _userdata_)
{
	Block31Data* _data31_;
	_data31_ = (Block31Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data31_->_ref_count_)) {
		WidgetsRemotePanel* self;
		self = _data31_->self;
		_g_free0 (_data31_->search_text);
		_g_free0 (_data31_->group_name);
		_g_object_unref0 (self);
		g_slice_free (Block31Data, _data31_);
	}
}

static Block32Data*
block32_data_ref (Block32Data* _data32_)
{
	g_atomic_int_inc (&_data32_->_ref_count_);
	return _data32_;
}

static void
block32_data_unref (void * _userdata_)
{
	Block32Data* _data32_;
	_data32_ = (Block32Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data32_->_ref_count_)) {
		WidgetsRemotePanel* self;
		self = _data32_->_data31_->self;
		_g_object_unref0 (_data32_->search_label);
		block31_data_unref (_data32_->_data31_);
		_data32_->_data31_ = NULL;
		g_slice_free (Block32Data, _data32_);
	}
}

static gboolean
string_contains (const gchar* self,
                 const gchar* needle)
{
	gchar* _tmp0_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (needle != NULL, FALSE);
	_tmp0_ = strstr ((gchar*) self, (gchar*) needle);
	result = _tmp0_ != NULL;
	return result;
}

static void
___lambda148_ (Block32Data* _data32_,
               GdkEventButton* w)
{
	Block31Data* _data31_;
	WidgetsRemotePanel* self;
	_data31_ = _data32_->_data31_;
	self = _data31_->self;
	g_return_if_fail (w != NULL);
	if (g_strcmp0 (_data31_->group_name, "") == 0) {
		GtkBox* _tmp0_;
		_tmp0_ = ((WidgetsBasePanel*) self)->search_page_box;
		widgets_base_panel_show_home_page ((WidgetsBasePanel*) self, (GtkWidget*) _tmp0_);
	} else {
		GtkBox* _tmp1_;
		_tmp1_ = ((WidgetsBasePanel*) self)->search_page_box;
		widgets_remote_panel_show_group_page (self, _data31_->group_name, (GtkWidget*) _tmp1_, "scroll_to_left");
	}
}

static void
____lambda148__widgets_click_event_box_clicked (WidgetsClickEventBox* _sender,
                                                GdkEventButton* event,
                                                gpointer self)
{
	___lambda148_ (self, event);
}

static void
__lambda150_ (Block32Data* _data32_)
{
	Block31Data* _data31_;
	WidgetsRemotePanel* self;
	_data31_ = _data32_->_data31_;
	self = _data31_->self;
	widgets_base_panel_update_search_page ((WidgetsBasePanel*) self, _data31_->search_text, _data31_->group_name);
}

static void
___lambda150__widgets_remote_panel_update_page_after_edit (gpointer self)
{
	__lambda150_ (self);
}

static void
_____lambda149_ (Block32Data* _data32_,
                 WidgetsServerButton* w,
                 const gchar* server_info)
{
	Block31Data* _data31_;
	WidgetsRemotePanel* self;
	_data31_ = _data32_->_data31_;
	self = _data31_->self;
	g_return_if_fail (w != NULL);
	g_return_if_fail (server_info != NULL);
	widgets_remote_panel_edit_server (self, server_info, ___lambda150__widgets_remote_panel_update_page_after_edit, _data32_);
}

static void
______lambda149__widgets_server_button_edit_server (WidgetsServerButton* _sender,
                                                    const gchar* server_info,
                                                    gpointer self)
{
	_____lambda149_ (self, _sender, server_info);
}

static void
___lambda151_ (Block32Data* _data32_,
               GtkWidget* w)
{
	Block31Data* _data31_;
	WidgetsRemotePanel* self;
	gboolean is_light_theme = FALSE;
	GtkWidget* _tmp0_;
	_data31_ = _data32_->_data31_;
	self = _data31_->self;
	g_return_if_fail (w != NULL);
	_tmp0_ = gtk_widget_get_toplevel ((GtkWidget*) self);
	is_light_theme = widgets_config_window_is_light_theme (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, WIDGETS_TYPE_CONFIG_WINDOW, WidgetsConfigWindow));
	if (is_light_theme) {
		GtkLabel* _tmp1_;
		GtkStyleContext* _tmp2_;
		_tmp1_ = _data32_->search_label;
		_tmp2_ = gtk_widget_get_style_context ((GtkWidget*) _tmp1_);
		gtk_style_context_add_class (_tmp2_, "remote_search_label_light");
	} else {
		GtkLabel* _tmp3_;
		GtkStyleContext* _tmp4_;
		_tmp3_ = _data32_->search_label;
		_tmp4_ = gtk_widget_get_style_context ((GtkWidget*) _tmp3_);
		gtk_style_context_add_class (_tmp4_, "remote_search_label_dark");
	}
}

static void
____lambda151__gtk_widget_realize (GtkWidget* _sender,
                                   gpointer self)
{
	___lambda151_ (self, _sender);
}

static void
widgets_remote_panel_real_create_search_page (WidgetsBasePanel* base,
                                              const gchar* search_text,
                                              const gchar* group_name)
{
	WidgetsRemotePanel * self;
	Block31Data* _data31_;
	gchar* _tmp0_;
	gchar* _tmp1_;
	GtkBox* _tmp2_;
	GError* _inner_error0_ = NULL;
	self = (WidgetsRemotePanel*) base;
	g_return_if_fail (search_text != NULL);
	g_return_if_fail (group_name != NULL);
	_data31_ = g_slice_new0 (Block31Data);
	_data31_->_ref_count_ = 1;
	_data31_->self = g_object_ref (self);
	_tmp0_ = g_strdup (search_text);
	_g_free0 (_data31_->search_text);
	_data31_->search_text = _tmp0_;
	_tmp1_ = g_strdup (group_name);
	_g_free0 (_data31_->group_name);
	_data31_->group_name = _tmp1_;
	_tmp2_ = ((WidgetsBasePanel*) self)->search_page_box;
	utils_destroy_all_children ((GtkContainer*) _tmp2_);
	_g_object_unref0 (((WidgetsBasePanel*) self)->search_page_scrolledwindow);
	((WidgetsBasePanel*) self)->search_page_scrolledwindow = NULL;
	{
		Block32Data* _data32_;
		GeeArrayList* ungroups = NULL;
		GeeArrayList* _tmp3_;
		GKeyFile* _tmp4_;
		gsize _tmp5_ = 0;
		gchar** _tmp6_;
		GtkBox* top_box = NULL;
		GtkBox* _tmp51_;
		GtkBox* _tmp52_;
		GtkBox* _tmp53_;
		GtkBox* _tmp54_;
		WidgetsImageButton* back_button = NULL;
		WidgetsImageButton* _tmp55_;
		WidgetsImageButton* _tmp56_;
		WidgetsImageButton* _tmp57_;
		WidgetsImageButton* _tmp58_;
		GtkBox* _tmp59_;
		WidgetsImageButton* _tmp60_;
		GtkLabel* _tmp61_;
		GtkLabel* _tmp62_;
		gchar* _tmp63_;
		gchar* _tmp64_;
		GtkBox* _tmp65_;
		GtkLabel* _tmp66_;
		WidgetsSplitLine* split_line = NULL;
		WidgetsSplitLine* _tmp67_;
		GtkBox* _tmp68_;
		WidgetsSplitLine* _tmp69_;
		GtkScrolledWindow* _tmp70_;
		GtkBox* _tmp71_;
		GtkScrolledWindow* _tmp72_;
		GtkBox* server_box = NULL;
		GtkBox* _tmp73_;
		GtkScrolledWindow* _tmp74_;
		GtkBox* _tmp75_;
		_data32_ = g_slice_new0 (Block32Data);
		_data32_->_ref_count_ = 1;
		_data32_->_data31_ = block31_data_ref (_data31_);
		widgets_remote_panel_load_config (self);
		_tmp3_ = gee_array_list_new (GEE_TYPE_ARRAY_LIST, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
		ungroups = _tmp3_;
		_tmp4_ = self->config_file;
		_tmp6_ = g_key_file_get_groups (_tmp4_, &_tmp5_);
		{
			gchar** option_collection = NULL;
			gint option_collection_length1 = 0;
			gint _option_collection_size_ = 0;
			gint option_it = 0;
			option_collection = _tmp6_;
			option_collection_length1 = _tmp5_;
			for (option_it = 0; option_it < option_collection_length1; option_it = option_it + 1) {
				const gchar* option = NULL;
				option = option_collection[option_it];
				{
					gboolean _tmp7_ = FALSE;
					if (g_strcmp0 (_data31_->group_name, "") == 0) {
						_tmp7_ = TRUE;
					} else {
						gchar* _tmp8_ = NULL;
						GKeyFile* _tmp9_;
						const gchar* _tmp10_;
						gchar* _tmp11_;
						_tmp9_ = self->config_file;
						_tmp10_ = option;
						_tmp11_ = g_key_file_get_value (_tmp9_, _tmp10_, "GroupName", &_inner_error0_);
						_tmp8_ = _tmp11_;
						if (G_UNLIKELY (_inner_error0_ != NULL)) {
							option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
							_g_object_unref0 (ungroups);
							block32_data_unref (_data32_);
							_data32_ = NULL;
							goto __catch0_g_error;
						}
						_tmp7_ = g_strcmp0 (_data31_->group_name, _tmp8_) == 0;
						_g_free0 (_tmp8_);
					}
					if (_tmp7_) {
						GeeArrayList* match_list = NULL;
						GeeArrayList* _tmp12_;
						GeeArrayList* _tmp13_;
						const gchar* _tmp14_;
						gchar** _tmp15_ = NULL;
						GKeyFile* _tmp16_;
						const gchar* _tmp17_;
						gsize _tmp18_ = 0;
						gchar** _tmp19_;
						gint _tmp15__length1;
						gint __tmp15__size_;
						_tmp12_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
						match_list = _tmp12_;
						_tmp13_ = match_list;
						_tmp14_ = option;
						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp13_, _tmp14_);
						_tmp16_ = self->config_file;
						_tmp17_ = option;
						_tmp19_ = g_key_file_get_keys (_tmp16_, _tmp17_, &_tmp18_, &_inner_error0_);
						_tmp15_ = _tmp19_;
						_tmp15__length1 = _tmp18_;
						__tmp15__size_ = _tmp15__length1;
						if (G_UNLIKELY (_inner_error0_ != NULL)) {
							_g_object_unref0 (match_list);
							option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
							_g_object_unref0 (ungroups);
							block32_data_unref (_data32_);
							_data32_ = NULL;
							goto __catch0_g_error;
						}
						{
							gchar** key_collection = NULL;
							gint key_collection_length1 = 0;
							gint _key_collection_size_ = 0;
							gint key_it = 0;
							key_collection = _tmp15_;
							key_collection_length1 = _tmp15__length1;
							for (key_it = 0; key_it < key_collection_length1; key_it = key_it + 1) {
								gchar* _tmp20_;
								gchar* key = NULL;
								_tmp20_ = g_strdup (key_collection[key_it]);
								key = _tmp20_;
								{
									gboolean _tmp21_ = FALSE;
									gboolean _tmp22_ = FALSE;
									gboolean _tmp23_ = FALSE;
									const gchar* _tmp24_;
									_tmp24_ = key;
									if (g_strcmp0 (_tmp24_, "Name") == 0) {
										_tmp23_ = TRUE;
									} else {
										const gchar* _tmp25_;
										_tmp25_ = key;
										_tmp23_ = g_strcmp0 (_tmp25_, "GroupName") == 0;
									}
									if (_tmp23_) {
										_tmp22_ = TRUE;
									} else {
										const gchar* _tmp26_;
										_tmp26_ = key;
										_tmp22_ = g_strcmp0 (_tmp26_, "Command") == 0;
									}
									if (_tmp22_) {
										_tmp21_ = TRUE;
									} else {
										const gchar* _tmp27_;
										_tmp27_ = key;
										_tmp21_ = g_strcmp0 (_tmp27_, "Path") == 0;
									}
									if (_tmp21_) {
										gchar* _tmp28_ = NULL;
										GKeyFile* _tmp29_;
										const gchar* _tmp30_;
										const gchar* _tmp31_;
										gchar* _tmp32_;
										GeeArrayList* _tmp33_;
										_tmp29_ = self->config_file;
										_tmp30_ = option;
										_tmp31_ = key;
										_tmp32_ = g_key_file_get_value (_tmp29_, _tmp30_, _tmp31_, &_inner_error0_);
										_tmp28_ = _tmp32_;
										if (G_UNLIKELY (_inner_error0_ != NULL)) {
											_g_free0 (key);
											_tmp15_ = (_vala_array_free (_tmp15_, _tmp15__length1, (GDestroyNotify) g_free), NULL);
											_g_object_unref0 (match_list);
											option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
											_g_object_unref0 (ungroups);
											block32_data_unref (_data32_);
											_data32_ = NULL;
											goto __catch0_g_error;
										}
										_tmp33_ = match_list;
										gee_abstract_collection_add ((GeeAbstractCollection*) _tmp33_, _tmp28_);
										_g_free0 (_tmp28_);
									}
									_g_free0 (key);
								}
							}
						}
						{
							GeeArrayList* _match_text_list = NULL;
							GeeArrayList* _tmp34_;
							gint _match_text_size = 0;
							GeeArrayList* _tmp35_;
							gint _tmp36_;
							gint _tmp37_;
							gint _match_text_index = 0;
							_tmp34_ = match_list;
							_match_text_list = _tmp34_;
							_tmp35_ = _match_text_list;
							_tmp36_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp35_);
							_tmp37_ = _tmp36_;
							_match_text_size = _tmp37_;
							_match_text_index = -1;
							while (TRUE) {
								gint _tmp38_;
								gint _tmp39_;
								gchar* match_text = NULL;
								GeeArrayList* _tmp40_;
								gpointer _tmp41_;
								const gchar* _tmp42_;
								gchar* _tmp43_;
								gchar* _tmp44_;
								gchar* _tmp45_;
								gchar* _tmp46_;
								gboolean _tmp47_;
								_match_text_index = _match_text_index + 1;
								_tmp38_ = _match_text_index;
								_tmp39_ = _match_text_size;
								if (!(_tmp38_ < _tmp39_)) {
									break;
								}
								_tmp40_ = _match_text_list;
								_tmp41_ = gee_abstract_list_get ((GeeAbstractList*) _tmp40_, _match_text_index);
								match_text = (gchar*) _tmp41_;
								_tmp42_ = match_text;
								_tmp43_ = g_utf8_strdown (_tmp42_, (gssize) -1);
								_tmp44_ = _tmp43_;
								_tmp45_ = g_utf8_strdown (_data31_->search_text, (gssize) -1);
								_tmp46_ = _tmp45_;
								_tmp47_ = string_contains (_tmp44_, _tmp46_);
								_g_free0 (_tmp46_);
								_g_free0 (_tmp44_);
								if (_tmp47_) {
									const gchar* _tmp48_;
									GeeArrayList* _tmp49_;
									GKeyFile* _tmp50_;
									_tmp48_ = option;
									_tmp49_ = ungroups;
									_tmp50_ = self->config_file;
									widgets_remote_panel_add_group_item (self, _tmp48_, _tmp49_, _tmp50_);
									_g_free0 (match_text);
									break;
								}
								_g_free0 (match_text);
							}
						}
						_tmp15_ = (_vala_array_free (_tmp15_, _tmp15__length1, (GDestroyNotify) g_free), NULL);
						_g_object_unref0 (match_list);
					}
				}
			}
			option_collection = (_vala_array_free (option_collection, option_collection_length1, (GDestroyNotify) g_free), NULL);
		}
		_tmp51_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
		g_object_ref_sink (_tmp51_);
		top_box = _tmp51_;
		_tmp52_ = top_box;
		gtk_widget_set_size_request ((GtkWidget*) _tmp52_, -1, constant_REMOTE_PANEL_SEARCHBAR_HEIGHT);
		_tmp53_ = ((WidgetsBasePanel*) self)->search_page_box;
		_tmp54_ = top_box;
		gtk_box_pack_start (_tmp53_, (GtkWidget*) _tmp54_, FALSE, FALSE, (guint) 0);
		_tmp55_ = widgets_image_button_new ("back", TRUE, NULL, 12);
		g_object_ref_sink (_tmp55_);
		back_button = _tmp55_;
		_tmp56_ = back_button;
		gtk_widget_set_margin_left ((GtkWidget*) _tmp56_, ((WidgetsBasePanel*) self)->back_button_margin_left);
		_tmp57_ = back_button;
		gtk_widget_set_margin_top ((GtkWidget*) _tmp57_, ((WidgetsBasePanel*) self)->back_button_margin_top);
		_tmp58_ = back_button;
		g_signal_connect_data ((WidgetsClickEventBox*) _tmp58_, "clicked", (GCallback) ____lambda148__widgets_click_event_box_clicked, block32_data_ref (_data32_), (GClosureNotify) block32_data_unref, 0);
		_tmp59_ = top_box;
		_tmp60_ = back_button;
		gtk_box_pack_start (_tmp59_, (GtkWidget*) _tmp60_, FALSE, FALSE, (guint) 0);
		_tmp61_ = (GtkLabel*) gtk_label_new (NULL);
		g_object_ref_sink (_tmp61_);
		_data32_->search_label = _tmp61_;
		_tmp62_ = _data32_->search_label;
		_tmp63_ = g_strdup_printf ("%s %s", _ ("Search:"), _data31_->search_text);
		_tmp64_ = _tmp63_;
		gtk_label_set_text (_tmp62_, _tmp64_);
		_g_free0 (_tmp64_);
		_tmp65_ = top_box;
		_tmp66_ = _data32_->search_label;
		gtk_box_pack_start (_tmp65_, (GtkWidget*) _tmp66_, TRUE, TRUE, (guint) 0);
		_tmp67_ = widgets_split_line_new ();
		g_object_ref_sink (_tmp67_);
		split_line = _tmp67_;
		_tmp68_ = ((WidgetsBasePanel*) self)->search_page_box;
		_tmp69_ = split_line;
		gtk_box_pack_start (_tmp68_, (GtkWidget*) _tmp69_, FALSE, FALSE, (guint) 0);
		_tmp70_ = widgets_base_panel_create_scrolled_window ((WidgetsBasePanel*) self);
		_g_object_unref0 (((WidgetsBasePanel*) self)->search_page_scrolledwindow);
		((WidgetsBasePanel*) self)->search_page_scrolledwindow = _tmp70_;
		_tmp71_ = ((WidgetsBasePanel*) self)->search_page_box;
		_tmp72_ = ((WidgetsBasePanel*) self)->search_page_scrolledwindow;
		gtk_box_pack_start (_tmp71_, (GtkWidget*) _tmp72_, TRUE, TRUE, (guint) 0);
		_tmp73_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
		g_object_ref_sink (_tmp73_);
		server_box = _tmp73_;
		_tmp74_ = ((WidgetsBasePanel*) self)->search_page_scrolledwindow;
		_tmp75_ = server_box;
		gtk_container_add ((GtkContainer*) _tmp74_, (GtkWidget*) _tmp75_);
		{
			GeeArrayList* _ungroup_list_list = NULL;
			GeeArrayList* _tmp76_;
			gint _ungroup_list_size = 0;
			GeeArrayList* _tmp77_;
			gint _tmp78_;
			gint _tmp79_;
			gint _ungroup_list_index = 0;
			_tmp76_ = ungroups;
			_ungroup_list_list = _tmp76_;
			_tmp77_ = _ungroup_list_list;
			_tmp78_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp77_);
			_tmp79_ = _tmp78_;
			_ungroup_list_size = _tmp79_;
			_ungroup_list_index = -1;
			while (TRUE) {
				gint _tmp80_;
				gint _tmp81_;
				GeeArrayList* ungroup_list = NULL;
				GeeArrayList* _tmp82_;
				gpointer _tmp83_;
				WidgetsServerButton* server_button = NULL;
				GeeArrayList* _tmp84_;
				gpointer _tmp85_;
				gchar* _tmp86_;
				GeeArrayList* _tmp87_;
				gpointer _tmp88_;
				gchar* _tmp89_;
				WidgetsServerButton* _tmp90_;
				WidgetsServerButton* _tmp91_;
				WidgetsServerButton* _tmp92_;
				GtkBox* _tmp93_;
				WidgetsServerButton* _tmp94_;
				_ungroup_list_index = _ungroup_list_index + 1;
				_tmp80_ = _ungroup_list_index;
				_tmp81_ = _ungroup_list_size;
				if (!(_tmp80_ < _tmp81_)) {
					break;
				}
				_tmp82_ = _ungroup_list_list;
				_tmp83_ = gee_abstract_list_get ((GeeAbstractList*) _tmp82_, _ungroup_list_index);
				ungroup_list = (GeeArrayList*) _tmp83_;
				_tmp84_ = ungroup_list;
				_tmp85_ = gee_abstract_list_get ((GeeAbstractList*) _tmp84_, 0);
				_tmp86_ = (gchar*) _tmp85_;
				_tmp87_ = ungroup_list;
				_tmp88_ = gee_abstract_list_get ((GeeAbstractList*) _tmp87_, 1);
				_tmp89_ = (gchar*) _tmp88_;
				_tmp90_ = widgets_remote_panel_create_server_button (self, _tmp86_, _tmp89_);
				_tmp91_ = _tmp90_;
				_g_free0 (_tmp89_);
				_g_free0 (_tmp86_);
				server_button = _tmp91_;
				_tmp92_ = server_button;
				g_signal_connect_data (_tmp92_, "edit-server", (GCallback) ______lambda149__widgets_server_button_edit_server, block32_data_ref (_data32_), (GClosureNotify) block32_data_unref, 0);
				_tmp93_ = server_box;
				_tmp94_ = server_button;
				gtk_box_pack_start (_tmp93_, (GtkWidget*) _tmp94_, FALSE, FALSE, (guint) 0);
				_g_object_unref0 (server_button);
				_g_object_unref0 (ungroup_list);
			}
		}
		g_signal_connect_data ((GtkWidget*) self, "realize", (GCallback) ____lambda151__gtk_widget_realize, block32_data_ref (_data32_), (GClosureNotify) block32_data_unref, 0);
		_g_object_unref0 (server_box);
		_g_object_unref0 (split_line);
		_g_object_unref0 (back_button);
		_g_object_unref0 (top_box);
		_g_object_unref0 (ungroups);
		block32_data_unref (_data32_);
		_data32_ = NULL;
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		const gchar* _tmp95_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp95_ = self->config_file_path;
		if (!g_file_test (_tmp95_, G_FILE_TEST_EXISTS)) {
			GError* _tmp96_;
			const gchar* _tmp97_;
			_tmp96_ = e;
			_tmp97_ = _tmp96_->message;
			g_print ("RemotePanel create_search_page: %s\n", _tmp97_);
		}
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		block31_data_unref (_data31_);
		_data31_ = NULL;
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
	block31_data_unref (_data31_);
	_data31_ = NULL;
}

void
widgets_remote_panel_add_group_item (WidgetsRemotePanel* self,
                                     const gchar* option,
                                     GeeArrayList* lists,
                                     GKeyFile* config_file)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (option != NULL);
	g_return_if_fail (lists != NULL);
	g_return_if_fail (config_file != NULL);
	{
		GeeArrayList* list = NULL;
		GeeArrayList* _tmp0_;
		gchar* _tmp1_ = NULL;
		gchar* _tmp2_;
		_tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
		list = _tmp0_;
		_tmp2_ = g_key_file_get_value (config_file, option, "Name", &_inner_error0_);
		_tmp1_ = _tmp2_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_object_unref0 (list);
			goto __catch0_g_error;
		}
		gee_abstract_collection_add ((GeeAbstractCollection*) list, _tmp1_);
		gee_abstract_collection_add ((GeeAbstractCollection*) list, option);
		gee_abstract_collection_add ((GeeAbstractCollection*) lists, list);
		_g_free0 (_tmp1_);
		_g_object_unref0 (list);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		GError* _tmp3_;
		const gchar* _tmp4_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp3_ = e;
		_tmp4_ = _tmp3_->message;
		g_print ("add_group_item error: %s\n", _tmp4_);
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
}

static Block33Data*
block33_data_ref (Block33Data* _data33_)
{
	g_atomic_int_inc (&_data33_->_ref_count_);
	return _data33_;
}

static void
block33_data_unref (void * _userdata_)
{
	Block33Data* _data33_;
	_data33_ = (Block33Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data33_->_ref_count_)) {
		WidgetsRemotePanel* self;
		self = _data33_->self;
		_g_object_unref0 (_data33_->remote_server_dialog);
		_g_free0 (_data33_->server_info);
		_g_object_unref0 (self);
		g_slice_free (Block33Data, _data33_);
	}
}

static void
__lambda139_ (Block33Data* _data33_,
              WidgetsRemoteServerDialog* server,
              const gchar* address,
              const gchar* username)
{
	WidgetsRemotePanel* self;
	GError* _inner_error0_ = NULL;
	self = _data33_->self;
	g_return_if_fail (server != NULL);
	g_return_if_fail (address != NULL);
	g_return_if_fail (username != NULL);
	{
		GKeyFile* _tmp0_;
		_tmp0_ = self->config_file;
		if (g_key_file_has_group (_tmp0_, _data33_->server_info)) {
			GKeyFile* _tmp1_;
			GKeyFile* _tmp2_;
			const gchar* _tmp3_;
			_tmp1_ = self->config_file;
			g_key_file_remove_group (_tmp1_, _data33_->server_info, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
			_tmp2_ = self->config_file;
			_tmp3_ = self->config_file_path;
			g_key_file_save_to_file (_tmp2_, _tmp3_, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
		}
		_data33_->func (_data33_->func_target);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		const gchar* _tmp4_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp4_ = e->message;
		g_error ("remote_panel.vala:421: %s", _tmp4_);
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
}

static void
___lambda139__widgets_remote_server_dialog_delete_server (WidgetsRemoteServerDialog* _sender,
                                                          const gchar* address,
                                                          const gchar* username,
                                                          gpointer self)
{
	__lambda139_ (self, _sender, address, username);
}

static void
__lambda140_ (Block33Data* _data33_,
              WidgetsRemoteServerDialog* server,
              const gchar* address,
              const gchar* username,
              const gchar* password,
              const gchar* private_key,
              gint port,
              const gchar* encode,
              const gchar* path,
              const gchar* command,
              const gchar* nickname,
              const gchar* groupname,
              const gchar* backspace_key,
              const gchar* delete_key)
{
	WidgetsRemotePanel* self;
	GError* _inner_error0_ = NULL;
	self = _data33_->self;
	g_return_if_fail (server != NULL);
	g_return_if_fail (address != NULL);
	g_return_if_fail (username != NULL);
	g_return_if_fail (password != NULL);
	g_return_if_fail (private_key != NULL);
	g_return_if_fail (encode != NULL);
	g_return_if_fail (path != NULL);
	g_return_if_fail (command != NULL);
	g_return_if_fail (nickname != NULL);
	g_return_if_fail (groupname != NULL);
	g_return_if_fail (backspace_key != NULL);
	g_return_if_fail (delete_key != NULL);
	{
		GKeyFile* _tmp0_;
		_tmp0_ = self->config_file;
		if (g_key_file_has_group (_tmp0_, _data33_->server_info)) {
			GKeyFile* _tmp1_;
			GKeyFile* _tmp2_;
			const gchar* _tmp3_;
			_tmp1_ = self->config_file;
			g_key_file_remove_group (_tmp1_, _data33_->server_info, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
			_tmp2_ = self->config_file;
			_tmp3_ = self->config_file_path;
			g_key_file_save_to_file (_tmp2_, _tmp3_, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
		}
		widgets_remote_panel_add_server (self, address, username, password, private_key, port, encode, path, command, nickname, groupname, backspace_key, delete_key);
		_data33_->func (_data33_->func_target);
		gtk_widget_destroy ((GtkWidget*) _data33_->remote_server_dialog);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		const gchar* _tmp4_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp4_ = e->message;
		g_error ("remote_panel.vala:443: %s", _tmp4_);
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
}

static void
___lambda140__widgets_remote_server_dialog_edit_server (WidgetsRemoteServerDialog* _sender,
                                                        const gchar* address,
                                                        const gchar* username,
                                                        const gchar* password,
                                                        const gchar* private_key,
                                                        gint port,
                                                        const gchar* encode,
                                                        const gchar* path,
                                                        const gchar* command,
                                                        const gchar* nickname,
                                                        const gchar* groupname,
                                                        const gchar* backspace_key,
                                                        const gchar* delete_key,
                                                        gpointer self)
{
	__lambda140_ (self, _sender, address, username, password, private_key, port, encode, path, command, nickname, groupname, backspace_key, delete_key);
}

void
widgets_remote_panel_edit_server (WidgetsRemotePanel* self,
                                  const gchar* server_info,
                                  WidgetsRemotePanelUpdatePageAfterEdit func,
                                  gpointer func_target)
{
	Block33Data* _data33_;
	gchar* _tmp0_;
	WidgetsConfigWindow* _tmp1_;
	GKeyFile* _tmp2_;
	WidgetsRemoteServerDialog* _tmp3_;
	WidgetsConfigWindow* _tmp4_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (server_info != NULL);
	_data33_ = g_slice_new0 (Block33Data);
	_data33_->_ref_count_ = 1;
	_data33_->self = g_object_ref (self);
	_tmp0_ = g_strdup (server_info);
	_g_free0 (_data33_->server_info);
	_data33_->server_info = _tmp0_;
	_data33_->func = func;
	_data33_->func_target = func_target;
	widgets_remote_panel_load_config (self);
	_tmp1_ = ((WidgetsBasePanel*) self)->parent_window;
	_tmp2_ = self->config_file;
	_tmp3_ = widgets_remote_server_dialog_new (_tmp1_, (GtkWidget*) self, _data33_->server_info, _tmp2_);
	g_object_ref_sink (_tmp3_);
	_data33_->remote_server_dialog = _tmp3_;
	_tmp4_ = ((WidgetsBasePanel*) self)->parent_window;
	widgets_dialog_transient_for_window ((WidgetsDialog*) _data33_->remote_server_dialog, _tmp4_);
	g_signal_connect_data (_data33_->remote_server_dialog, "delete-server", (GCallback) ___lambda139__widgets_remote_server_dialog_delete_server, block33_data_ref (_data33_), (GClosureNotify) block33_data_unref, 0);
	g_signal_connect_data (_data33_->remote_server_dialog, "edit-server", (GCallback) ___lambda140__widgets_remote_server_dialog_edit_server, block33_data_ref (_data33_), (GClosureNotify) block33_data_unref, 0);
	gtk_widget_show_all ((GtkWidget*) _data33_->remote_server_dialog);
	block33_data_unref (_data33_);
	_data33_ = NULL;
}

static void
__lambda126_ (WidgetsRemotePanel* self,
              WidgetsServerButton* w,
              const gchar* server_info)
{
	g_return_if_fail (w != NULL);
	g_return_if_fail (server_info != NULL);
	widgets_remote_panel_login_server (self, server_info);
}

static void
___lambda126__widgets_server_button_login_server (WidgetsServerButton* _sender,
                                                  const gchar* server_info,
                                                  gpointer self)
{
	__lambda126_ ((WidgetsRemotePanel*) self, _sender, server_info);
}

WidgetsServerButton*
widgets_remote_panel_create_server_button (WidgetsRemotePanel* self,
                                           const gchar* name,
                                           const gchar* info)
{
	WidgetsServerButton* server_button = NULL;
	WidgetsServerButton* _tmp0_;
	WidgetsServerButton* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	g_return_val_if_fail (info != NULL, NULL);
	_tmp0_ = widgets_server_button_new (name, info);
	g_object_ref_sink (_tmp0_);
	server_button = _tmp0_;
	g_signal_connect_object (server_button, "login-server", (GCallback) ___lambda126__widgets_server_button_login_server, self, 0);
	result = server_button;
	return result;
}

static void
__lambda121_ (WidgetsRemotePanel* self,
              WidgetsServerGroupButton* w,
              const gchar* group_name)
{
	GtkBox* _tmp0_;
	g_return_if_fail (w != NULL);
	g_return_if_fail (group_name != NULL);
	_tmp0_ = ((WidgetsBasePanel*) self)->home_page_box;
	widgets_remote_panel_show_group_page (self, group_name, (GtkWidget*) _tmp0_, "scroll_to_right");
}

static void
___lambda121__widgets_server_group_button_show_group_servers (WidgetsServerGroupButton* _sender,
                                                              const gchar* group_name,
                                                              gpointer self)
{
	__lambda121_ ((WidgetsRemotePanel*) self, _sender, group_name);
}

WidgetsServerGroupButton*
widgets_remote_panel_create_server_group_button (WidgetsRemotePanel* self,
                                                 const gchar* group_name,
                                                 gint server_number)
{
	WidgetsServerGroupButton* server_group_button = NULL;
	WidgetsServerGroupButton* _tmp0_;
	WidgetsServerGroupButton* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (group_name != NULL, NULL);
	_tmp0_ = widgets_server_group_button_new (group_name, server_number);
	g_object_ref_sink (_tmp0_);
	server_group_button = _tmp0_;
	g_signal_connect_object (server_group_button, "show-group-servers", (GCallback) ___lambda121__widgets_server_group_button_show_group_servers, self, 0);
	result = server_group_button;
	return result;
}

static Block34Data*
block34_data_ref (Block34Data* _data34_)
{
	g_atomic_int_inc (&_data34_->_ref_count_);
	return _data34_;
}

static void
block34_data_unref (void * _userdata_)
{
	Block34Data* _data34_;
	_data34_ = (Block34Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data34_->_ref_count_)) {
		WidgetsRemotePanel* self;
		self = _data34_->self;
		_g_object_unref0 (_data34_->remote_server_dialog);
		_g_object_unref0 (self);
		g_slice_free (Block34Data, _data34_);
	}
}

static void
__lambda147_ (Block34Data* _data34_,
              WidgetsRemoteServerDialog* server,
              const gchar* address,
              const gchar* username,
              const gchar* password,
              const gchar* private_key,
              gint port,
              const gchar* encode,
              const gchar* path,
              const gchar* command,
              const gchar* nickname,
              const gchar* groupname,
              const gchar* backspace_key,
              const gchar* delete_key)
{
	WidgetsRemotePanel* self;
	self = _data34_->self;
	g_return_if_fail (server != NULL);
	g_return_if_fail (address != NULL);
	g_return_if_fail (username != NULL);
	g_return_if_fail (password != NULL);
	g_return_if_fail (private_key != NULL);
	g_return_if_fail (encode != NULL);
	g_return_if_fail (path != NULL);
	g_return_if_fail (command != NULL);
	g_return_if_fail (nickname != NULL);
	g_return_if_fail (groupname != NULL);
	g_return_if_fail (backspace_key != NULL);
	g_return_if_fail (delete_key != NULL);
	widgets_remote_panel_add_server (self, address, username, password, private_key, port, encode, path, command, nickname, groupname, backspace_key, delete_key);
	widgets_base_panel_update_home_page ((WidgetsBasePanel*) self);
	gtk_widget_destroy ((GtkWidget*) _data34_->remote_server_dialog);
}

static void
___lambda147__widgets_remote_server_dialog_add_server (WidgetsRemoteServerDialog* _sender,
                                                       const gchar* address,
                                                       const gchar* username,
                                                       const gchar* password,
                                                       const gchar* private_key,
                                                       gint port,
                                                       const gchar* encode,
                                                       const gchar* path,
                                                       const gchar* command,
                                                       const gchar* nickname,
                                                       const gchar* groupname,
                                                       const gchar* backspace_key,
                                                       const gchar* delete_key,
                                                       gpointer self)
{
	__lambda147_ (self, _sender, address, username, password, private_key, port, encode, path, command, nickname, groupname, backspace_key, delete_key);
}

static void
__lambda146_ (WidgetsRemotePanel* self,
              GtkButton* w)
{
	Block34Data* _data34_;
	WidgetsConfigWindow* _tmp0_;
	WidgetsRemoteServerDialog* _tmp1_;
	WidgetsConfigWindow* _tmp2_;
	g_return_if_fail (w != NULL);
	_data34_ = g_slice_new0 (Block34Data);
	_data34_->_ref_count_ = 1;
	_data34_->self = g_object_ref (self);
	_tmp0_ = ((WidgetsBasePanel*) self)->parent_window;
	_tmp1_ = widgets_remote_server_dialog_new (_tmp0_, (GtkWidget*) self, NULL, NULL);
	g_object_ref_sink (_tmp1_);
	_data34_->remote_server_dialog = _tmp1_;
	_tmp2_ = ((WidgetsBasePanel*) self)->parent_window;
	widgets_dialog_transient_for_window ((WidgetsDialog*) _data34_->remote_server_dialog, _tmp2_);
	g_signal_connect_data (_data34_->remote_server_dialog, "add-server", (GCallback) ___lambda147__widgets_remote_server_dialog_add_server, block34_data_ref (_data34_), (GClosureNotify) block34_data_unref, 0);
	gtk_widget_show_all ((GtkWidget*) _data34_->remote_server_dialog);
	block34_data_unref (_data34_);
	_data34_ = NULL;
}

static void
___lambda146__gtk_button_clicked (GtkButton* _sender,
                                  gpointer self)
{
	__lambda146_ ((WidgetsRemotePanel*) self, _sender);
}

WidgetsAddButton*
widgets_remote_panel_create_add_server_button (WidgetsRemotePanel* self)
{
	WidgetsAddButton* add_server_button = NULL;
	WidgetsAddButton* _tmp0_;
	WidgetsAddButton* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = widgets_add_button_new (_ ("Add server"));
	g_object_ref_sink (_tmp0_);
	add_server_button = _tmp0_;
	g_signal_connect_object ((GtkButton*) add_server_button, "clicked", (GCallback) ___lambda146__gtk_button_clicked, self, 0);
	result = add_server_button;
	return result;
}

void
widgets_remote_panel_update_group_page (WidgetsRemotePanel* self,
                                        const gchar* group_name)
{
	gdouble scroll_value = 0.0;
	GtkScrolledWindow* _tmp0_;
	WidgetsSwitcher* _tmp3_;
	GtkBox* _tmp4_;
	GtkScrolledWindow* _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (group_name != NULL);
	scroll_value = (gdouble) 0;
	_tmp0_ = self->group_page_scrolledwindow;
	if (_tmp0_ != NULL) {
		GtkScrolledWindow* _tmp1_;
		GtkAdjustment* _tmp2_;
		_tmp1_ = self->group_page_scrolledwindow;
		_tmp2_ = gtk_scrolled_window_get_vadjustment (_tmp1_);
		scroll_value = gtk_adjustment_get_value (_tmp2_);
	}
	widgets_remote_panel_create_group_page (self, group_name);
	_tmp3_ = ((WidgetsBasePanel*) self)->switcher;
	_tmp4_ = self->group_page_box;
	widgets_switcher_add_to_left_box (_tmp3_, (GtkWidget*) _tmp4_);
	_tmp5_ = self->group_page_scrolledwindow;
	if (_tmp5_ != NULL) {
		GtkScrolledWindow* _tmp6_;
		GtkAdjustment* _tmp7_;
		_tmp6_ = self->group_page_scrolledwindow;
		_tmp7_ = gtk_scrolled_window_get_vadjustment (_tmp6_);
		gtk_adjustment_set_value (_tmp7_, scroll_value);
	}
	gtk_widget_show_all ((GtkWidget*) self);
}

static void
widgets_remote_panel_class_init (WidgetsRemotePanelClass * klass,
                                 gpointer klass_data)
{
	widgets_remote_panel_parent_class = g_type_class_peek_parent (klass);
	((WidgetsBasePanelClass *) klass)->create_home_page = (void (*) (WidgetsBasePanel*)) widgets_remote_panel_real_create_home_page;
	((WidgetsBasePanelClass *) klass)->create_search_page = (void (*) (WidgetsBasePanel*, const gchar*, const gchar*)) widgets_remote_panel_real_create_search_page;
	G_OBJECT_CLASS (klass)->finalize = widgets_remote_panel_finalize;
}

static void
widgets_remote_panel_instance_init (WidgetsRemotePanel * self,
                                    gpointer klass)
{
	gchar* _tmp0_;
	self->width = constant_SLIDER_WIDTH;
	_tmp0_ = utils_get_config_file_path ("server-config.conf");
	self->config_file_path = _tmp0_;
}

static void
widgets_remote_panel_finalize (GObject * obj)
{
	WidgetsRemotePanel * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIDGETS_TYPE_REMOTE_PANEL, WidgetsRemotePanel);
	_g_object_unref0 (self->group_page_box);
	_g_object_unref0 (self->group_page_scrolledwindow);
	_g_key_file_unref0 (self->config_file);
	_g_free0 (self->config_file_path);
	G_OBJECT_CLASS (widgets_remote_panel_parent_class)->finalize (obj);
}

static GType
widgets_remote_panel_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WidgetsRemotePanelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) widgets_remote_panel_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WidgetsRemotePanel), 0, (GInstanceInitFunc) widgets_remote_panel_instance_init, NULL };
	GType widgets_remote_panel_type_id;
	widgets_remote_panel_type_id = g_type_register_static (WIDGETS_TYPE_BASE_PANEL, "WidgetsRemotePanel", &g_define_type_info, 0);
	return widgets_remote_panel_type_id;
}

GType
widgets_remote_panel_get_type (void)
{
	static volatile gsize widgets_remote_panel_type_id__once = 0;
	if (g_once_init_enter (&widgets_remote_panel_type_id__once)) {
		GType widgets_remote_panel_type_id;
		widgets_remote_panel_type_id = widgets_remote_panel_get_type_once ();
		g_once_init_leave (&widgets_remote_panel_type_id__once, widgets_remote_panel_type_id);
	}
	return widgets_remote_panel_type_id__once;
}

static void
_vala_array_destroy (gpointer array,
                     gssize array_length,
                     GDestroyNotify destroy_func)
{
	if ((array != NULL) && (destroy_func != NULL)) {
		gssize i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}

static void
_vala_array_free (gpointer array,
                  gssize array_length,
                  GDestroyNotify destroy_func)
{
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}

static inline gpointer
_vala_memdup2 (gconstpointer mem,
               gsize byte_size)
{
	gpointer new_mem;
	if (mem && byte_size != 0) {
		new_mem = g_malloc (byte_size);
		memcpy (new_mem, mem, byte_size);
	} else {
		new_mem = NULL;
	}
	return new_mem;
}

