Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: replacing redundant genv() #3327

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions synfig-core/src/modules/mod_magickpp/trgt_magickpp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ magickpp_trgt::~magickpp_trgt()
synfig::info("clearing old image list");
images.clear();

if (!getenv("SYNFIG_DISABLE_REMOVE_DUPS"))
if (!DEBUG_GETENV("SYNFIG_DISABLE_REMOVE_DUPS"))
{
synfig::info("removing duplicate frames");
try
Expand All @@ -141,7 +141,7 @@ magickpp_trgt::~magickpp_trgt()
}
}

if (!getenv("SYNFIG_DISABLE_OPTIMIZE"))
if (!DEBUG_GETENV("SYNFIG_DISABLE_OPTIMIZE"))
{
synfig::info("optimizing layers");
try
Expand All @@ -153,7 +153,7 @@ magickpp_trgt::~magickpp_trgt()
}
}

if (!getenv("SYNFIG_DISABLE_OPTIMIZE_TRANS"))
if (!DEBUG_GETENV("SYNFIG_DISABLE_OPTIMIZE_TRANS"))
{
synfig::info("optimizing layer transparency");
try
Expand Down
6 changes: 3 additions & 3 deletions synfig-core/src/synfig/layers/layer_skeleton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
#endif

#include "layer_skeleton.h"
#ifdef _DEBUG

#include "synfig/general.h"
#endif


#include <synfig/localization.h>

Expand Down Expand Up @@ -73,7 +73,7 @@ Layer_Skeleton::Layer_Skeleton():
{
std::vector<synfig::Bone> bones;
int bone_count = 1;
if (getenv("SYNFIG_NUMBER_OF_BONES_IN_SKELETON"))
if (DEBUG_GETENV("SYNFIG_NUMBER_OF_BONES_IN_SKELETON"))
bone_count = atoi(getenv("SYNFIG_NUMBER_OF_BONES_IN_SKELETON"));
if (bone_count < 1) bone_count = 1;
else if (bone_count > 10) bone_count = 10;
Expand Down
4 changes: 2 additions & 2 deletions synfig-core/src/synfig/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ synfig::Main::Main(const synfig::String& rootpath,ProgressCallback *cb):
std::list<String> modules_to_load;
std::vector<String> locations;

if(getenv("SYNFIG_MODULE_LIST"))
if(DEBUG_GETENV("SYNFIG_MODULE_LIST"))
locations.push_back(getenv("SYNFIG_MODULE_LIST"));
else
{
Expand All @@ -362,7 +362,7 @@ synfig::Main::Main(const synfig::String& rootpath,ProgressCallback *cb):
#ifdef __APPLE__
locations.push_back("/Library/Frameworks/synfig.framework/Resources/" MODULE_LIST_FILENAME);
locations.push_back("/Library/Synfig/" MODULE_LIST_FILENAME);
if(getenv("HOME"))
if(DEBUG_GETENV("HOME"))
locations.push_back(strprintf("%s/Library/Synfig/%s", getenv("HOME"), MODULE_LIST_FILENAME));
#endif
}
Expand Down
2 changes: 1 addition & 1 deletion synfig-core/src/synfig/os.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,7 @@ OS::get_current_working_directory()
#else

struct stat st;
if (char* pwd = getenv("PWD")) {
if (char* pwd = getenv("PWD")) {
if (stat(pwd, &st) == 0 && S_ISDIR(st.st_mode)) {
return filesystem::Path::from_native(pwd).lexically_normal();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ ValueNode_BoneInfluence::operator()(Time t)const
Point vt(transform.get_transformed(v));
link.set_vertex(vt);

if (!getenv("SYNFIG_COMPLEX_TANGENT_BONE_INFLUENCE"))
if (!DEBUG_GETENV("SYNFIG_COMPLEX_TANGENT_BONE_INFLUENCE"))
{
link.set_tangent1(transform.get_transformed(link.get_tangent1() + v) - vt);
if (link.get_split_tangent_both())
Expand Down
4 changes: 2 additions & 2 deletions synfig-core/src/synfig/valuenodes/valuenode_exp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ ValueNode_Exp::~ValueNode_Exp()
ValueBase
ValueNode_Exp::operator()(Time t)const
{
if (DEBUG_GETENV("SYNFIG_DEBUG_VALUENODE_OPERATORS"))
printf("%s:%d operator()\n", __FILE__, __LINE__);
DEBUG_LOG("SYNFIG_DEBUG_VALUENODE_OPERATORS", "%s:%d operator()\n", __FILE__, __LINE__);


return (exp((*exp_)(t).get(Real())) *
(*scale_)(t).get(Real()));
Expand Down
2 changes: 1 addition & 1 deletion synfig-osx/launcher/X11Application.m
Original file line number Diff line number Diff line change
Expand Up @@ -847,7 +847,7 @@ - (BOOL) x_active
if ([X11App prefs_get_boolean:@PREFS_DONE_XINIT_CHECK default:NO])
return;

tem = getenv ("HOME");
tem = getenv("HOME");
if (tem == NULL)
goto done;

Expand Down
2 changes: 1 addition & 1 deletion synfig-osx/launcher/bundle-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -537,7 +537,7 @@ start_client (void)
#else
/* First look for .xinitrc in user's home directory. */

tem = getenv ("HOME");
tem = getenv("HOME");
if (tem != NULL)
{
snprintf (buf, sizeof (buf), "%s/.xinitrc", tem);
Expand Down
16 changes: 8 additions & 8 deletions synfig-studio/src/gui/app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1436,7 +1436,7 @@ int App::on_handle_local_options(const Glib::RefPtr<Glib::VariantDict> &options)

void App::on_activate()
{
if (!getenv("SYNFIG_DISABLE_AUTOMATIC_DOCUMENT_CREATION") && !get_selected_instance())
if (!DEBUG_GETENV("SYNFIG_DISABLE_AUTOMATIC_DOCUMENT_CREATION") && !get_selected_instance())
new_instance();

if (get_windows().size() == 0) {
Expand Down Expand Up @@ -1706,14 +1706,14 @@ void App::init(const synfig::String& rootpath)
state_manager->add_state(&state_circle);
state_manager->add_state(&state_rectangle);
state_manager->add_state(&state_star);
if(!getenv("SYNFIG_DISABLE_POLYGON")) state_manager->add_state(&state_polygon); // Enabled - for working without ducks
if(!DEBUG_GETENV("SYNFIG_DISABLE_POLYGON")) state_manager->add_state(&state_polygon); // Enabled - for working without ducks
state_manager->add_state(&state_gradient);

/* bline tools */
state_manager->add_state(&state_bline);
if(!getenv("SYNFIG_DISABLE_DRAW" )) state_manager->add_state(&state_draw ); // Enabled for now. Let's see whether they're good enough yet.
if(!DEBUG_GETENV("SYNFIG_DISABLE_DRAW" )) state_manager->add_state(&state_draw ); // Enabled for now. Let's see whether they're good enough yet.
state_manager->add_state(&state_lasso);
if(!getenv("SYNFIG_DISABLE_WIDTH" )) state_manager->add_state(&state_width); // Enabled since 0.61.09
if(!DEBUG_GETENV("SYNFIG_DISABLE_WIDTH" )) state_manager->add_state(&state_width); // Enabled since 0.61.09
state_manager->add_state(&state_fill);
state_manager->add_state(&state_eyedrop);

Expand All @@ -1722,8 +1722,8 @@ void App::init(const synfig::String& rootpath)

/* other */
state_manager->add_state(&state_text);
if(!getenv("SYNFIG_DISABLE_SKETCH" )) state_manager->add_state(&state_sketch);
if(!getenv("SYNFIG_DISABLE_BRUSH" ) && App::enable_experimental_features) state_manager->add_state(&state_brush);
if(!DEBUG_GETENV("SYNFIG_DISABLE_SKETCH" )) state_manager->add_state(&state_sketch);
if(!DEBUG_GETENV("SYNFIG_DISABLE_BRUSH" ) && App::enable_experimental_features) state_manager->add_state(&state_brush);
state_manager->add_state(&state_zoom);


Expand All @@ -1740,7 +1740,7 @@ void App::init(const synfig::String& rootpath)

studio_init_cb.amount_complete(9900,10000);

if (!getenv("SYNFIG_DISABLE_AUTO_RECOVERY") && auto_recover->recovery_needed())
if (!DEBUG_GETENV("SYNFIG_DISABLE_AUTO_RECOVERY") && auto_recover->recovery_needed())
{
splash_screen.hide();
if (get_ui_interface()->confirmation(
Expand Down Expand Up @@ -3841,7 +3841,7 @@ App::new_instance()
_("Close"));
}

if (getenv("SYNFIG_ENABLE_NEW_CANVAS_EDIT_PROPERTIES"))
if (DEBUG_GETENV("SYNFIG_ENABLE_NEW_CANVAS_EDIT_PROPERTIES"))
instance->find_canvas_view(canvas)->canvas_properties.present();
}

Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/asyncrenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ class AsyncTarget_Tile : public synfig::Target_Tile
{
tile_t& tile(tile_queue.front());

if (getenv("SYNFIG_SHOW_TILE_OUTLINES"))
if (DEBUG_GETENV("SYNFIG_SHOW_TILE_OUTLINES"))
{
Color red(1,0,0);
tile.surface.fill(red, 0, 0, 1, tile.surface.get_h());
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/autorecover.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ AutoRecover::set_timer(bool enabled, int timeout_ms)
if (timeout_ms < 0) timeout_ms = 0;
if (this->enabled != enabled || this->timeout_ms != timeout_ms)
{
bool env_enabled = !getenv("SYNFIG_DISABLE_AUTO_SAVE");
bool env_enabled = !DEBUG_GETENV("SYNFIG_DISABLE_AUTO_SAVE");
// if the timer was enabled then disconnect it
if (this->enabled && this->timeout_ms > 0 && env_enabled)
connection.disconnect();
Expand Down
6 changes: 4 additions & 2 deletions synfig-studio/src/gui/canvasview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
#include <sstream>
#include <string>



#include <synfig/rendering/renderer.h>
#include <synfig/valuenodes/valuenode_animated.h>

Expand Down Expand Up @@ -927,7 +929,7 @@ CanvasView::create_time_bar()

//Adjust both widgets to be the same as the
int header_height = 0;
if(getenv("SYNFIG_TIMETRACK_HEADER_HEIGHT"))
if(DEBUG_GETENV("SYNFIG_TIMETRACK_HEADER_HEIGHT"))
header_height = atoi(getenv("SYNFIG_TIMETRACK_HEADER_HEIGHT"));
if (header_height < 3)
header_height = 24;
Expand All @@ -941,7 +943,7 @@ CanvasView::create_time_bar()
jackdial->signal_offset_changed().connect(sigc::mem_fun(*this, &CanvasView::on_jack_offset_changed));
jackdial->set_fps(get_canvas()->rend_desc().get_frame_rate());
jackdial->set_offset(get_jack_offset());
if ( !getenv("SYNFIG_DISABLE_JACK") )
if ( !DEBUG_GETENV("SYNFIG_DISABLE_JACK") )
jackdial->show();
#endif

Expand Down
13 changes: 7 additions & 6 deletions synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#include <synfig/layers/layer_pastecanvas.h>
#include <synfig/valuenodes/valuenode_animated.h>
#include <synfig/valuenodes/valuenode_dynamiclist.h>
#include <synfig/general.h>

#include <gui/exception_guard.h>
#include <gui/instance.h>
Expand Down Expand Up @@ -74,7 +75,7 @@ static Time
get_time_offset_from_vdesc(const ValueDesc &v)
{
#ifdef ADJUST_WAYPOINTS_FOR_TIME_OFFSET
if (v.get_value_type() != type_canvas || getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if (v.get_value_type() != type_canvas || DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
return Time::zero();

if (!v.get_value().get(Canvas::Handle()))
Expand All @@ -98,7 +99,7 @@ static Time
get_time_dilation_from_vdesc(const ValueDesc &v)
{
#ifdef ADJUST_WAYPOINTS_FOR_TIME_OFFSET
if (v.get_value_type() != type_canvas || getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if (v.get_value_type() != type_canvas || DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
return Time(1.0);

if (!v.get_value().get(Canvas::Handle()))
Expand All @@ -122,7 +123,7 @@ get_time_dilation_from_vdesc(const ValueDesc &v)
static const Node::time_set*
get_times_from_vdesc(const ValueDesc &v)
{
if (v.get_value_type() == type_canvas && !getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if (v.get_value_type() == type_canvas && !DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if(Canvas::Handle canvasparam = v.get_value().get(Canvas::Handle()))
return &canvasparam->get_times();

Expand Down Expand Up @@ -533,7 +534,7 @@ CellRenderer_TimeTrack::activate_vfunc(
sel_times.insert(stime);
if (sel_times.size() == 1 && event->type == GDK_2BUTTON_PRESS) {
ValueBase v = value_desc.get_value(stime);
etl::handle<Node> node = v.get_type() == type_canvas && !getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS")
etl::handle<Node> node = v.get_type() == type_canvas && !DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS")
? etl::handle<Node>(v.get(Canvas::Handle()))
: etl::handle<Node>(value_desc.get_value_node());
if (node)
Expand All @@ -549,7 +550,7 @@ CellRenderer_TimeTrack::activate_vfunc(
} else
if (event->button.button == 3) {
ValueBase v = value_desc.get_value(stime);
etl::handle<Node> node = v.get_type() == type_canvas && !getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS")
etl::handle<Node> node = v.get_type() == type_canvas && !DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS")
? etl::handle<Node>(v.get(Canvas::Handle()))
: etl::handle<Node>(value_desc.get_value_node());
if (clickfound && node)
Expand All @@ -569,7 +570,7 @@ CellRenderer_TimeTrack::activate_vfunc(
Action::ParamList param_list;
param_list.add("canvas", canvas_interface->get_canvas());
param_list.add("canvas_interface", canvas_interface);
if (sel_value.get_value_type() == type_canvas && !getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS")) {
if (sel_value.get_value_type() == type_canvas && !DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS")) {
param_list.add("addcanvas", sel_value.get_value().get(Canvas::Handle()));
} else {
param_list.add("addvaluedesc", sel_value);
Expand Down
1 change: 0 additions & 1 deletion synfig-studio/src/gui/dialogs/about.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
#include <gui/resourcehelper.h>

#include <synfig/version.h>

#include <vector>

#endif
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/docks/dockdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ DockDialog::DockDialog():
//! \todo can we set dialog windows transient for all normal windows, not just the toolbox?
//! paragraph 3 of http://standards.freedesktop.org/wm-spec/1.3/ar01s07.html suggests we can
// this seems to have bad effects on KDE, so leave it disabled by default
if(getenv("SYNFIG_TRANSIENT_DIALOGS"))
if(DEBUG_GETENV("SYNFIG_TRANSIENT_DIALOGS"))
set_transient_for(*App::main_window);

// Set up the window
Expand Down
3 changes: 2 additions & 1 deletion synfig-studio/src/gui/preview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
#include <synfig/string.h>
#include <synfig/surface.h>
#include <synfig/target_scanline.h>
#include <synfig/general.h>

#endif

Expand Down Expand Up @@ -459,7 +460,7 @@ Widget_Preview::Widget_Preview():
//FIXME: Hardcoded FPS!
jackdial->set_fps(24.f);
jackdial->set_offset(jack_offset);
if ( !getenv("SYNFIG_DISABLE_JACK") )
if ( !DEBUG_GETENV("SYNFIG_DISABLE_JACK") )
jackdial->show();
toolbar->pack_start(*jackdial, false, true);

Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/states/state_draw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1052,7 +1052,7 @@ StateDraw_Context::process_stroke(StrokeData stroke_data, WidthData width_data,
{
// hide the 'stroke' line we were drawing, unless the user
// explicitly requests that they are kept
if (!getenv("SYNFIG_KEEP_ABORTED_DRAW_LINES"))
if (!DEBUG_GETENV("SYNFIG_KEEP_ABORTED_DRAW_LINES"))
refresh_ducks();

return Smach::RESULT_OK;
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/states/state_lasso.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -979,7 +979,7 @@ StateLasso_Context::process_stroke(StrokeData stroke_data, WidthData width_data,
{
// hide the 'stroke' line we were drawing, unless the user
// explicitly requests that they are kept
if (!getenv("SYNFIG_KEEP_ABORTED_DRAW_LINES"))
if (!DEBUG_GETENV("SYNFIG_KEEP_ABORTED_DRAW_LINES"))
refresh_ducks();

return Smach::RESULT_OK;
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/trees/canvastreestore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ CanvasTreeStore::~CanvasTreeStore()
ValueNode::Handle
CanvasTreeStore::expandable_bone_parent(ValueNode::Handle node)
{
if ((!getenv("SYNFIG_DISABLE_EXPANDABLE_BONE_PARENTS")) &&
if ((!DEBUG_GETENV("SYNFIG_DISABLE_EXPANDABLE_BONE_PARENTS")) &&
node->get_type() == type_bone_valuenode &&
(node->get_name() == "constant" || node->get_name() == "animated"))
if (ValueNode::Handle bone_node = (*node)(canvas_interface()->get_time()).get(ValueNode_Bone::Handle()))
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/trees/layertree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ LayerTree::create_param_tree()
column->set_min_width(100);
column->set_resizable();

if (!getenv("SYNFIG_DISABLE_PARAMS_PANEL_TIMETRACK"))
if (!DEBUG_GETENV("SYNFIG_DISABLE_PARAMS_PANEL_TIMETRACK"))
param_tree_view().append_column(*column);
}
#endif // TIMETRACK_IN_PARAMS_PANEL
Expand Down
7 changes: 4 additions & 3 deletions synfig-studio/src/gui/waypointrenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include <gdkmm/rgba.h>

#include <synfig/interpolation.h>
#include <synfig/general.h>
#include <synfig/layers/layer_pastecanvas.h>
#include <synfig/valuenodes/valuenode_dynamiclist.h>
#endif
Expand Down Expand Up @@ -402,7 +403,7 @@ static Time
get_time_offset_from_vdesc(const ValueDesc &v)
{
#ifdef ADJUST_WAYPOINTS_FOR_TIME_OFFSET
if (v.get_value_type() != type_canvas || getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if (v.get_value_type() != type_canvas || DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
return Time::zero();

if (!v.get_value().get(Canvas::Handle()))
Expand All @@ -426,7 +427,7 @@ static Time
get_time_dilation_from_vdesc(const ValueDesc &v)
{
#ifdef ADJUST_WAYPOINTS_FOR_TIME_OFFSET
if (v.get_value_type() != type_canvas || getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if (v.get_value_type() != type_canvas || DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
return Time(1.0);

if (!v.get_value().get(Canvas::Handle()))
Expand All @@ -451,7 +452,7 @@ static const Node::time_set empty_time_set {};
const Node::time_set&
WaypointRenderer::get_times_from_valuedesc(const ValueDesc &v)
{
if (v.get_value_type() == type_canvas && !getenv("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if (v.get_value_type() == type_canvas && !DEBUG_GETENV("SYNFIG_SHOW_CANVAS_PARAM_WAYPOINTS"))
if(Canvas::Handle canvasparam = v.get_value().get(Canvas::Handle()))
return canvasparam->get_times();

Expand Down
1 change: 1 addition & 0 deletions synfig-studio/src/gui/widgets/widget_fontfamily.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

#include <gui/widgets/widget_fontfamily.h>


#ifdef WITH_FONTCONFIG
#include <fontconfig/fontconfig.h>
#include <mutex>
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/widgets/widget_time.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ Widget_Time::on_focus_in_event(GdkEventFocus* event)
{
SYNFIG_EXCEPTION_GUARD_BEGIN()
// if defined, show the full time format "0h 0m 5s 0f" when the time widget gets focus
if (getenv("SYNFIG_SHOW_FULL_TIME_ON_FOCUS"))
if (DEBUG_GETENV("SYNFIG_SHOW_FULL_TIME_ON_FOCUS"))
set_text(time_.get_string(fps_,App::get_time_format()|Time::FORMAT_FULL));

return Gtk::Entry::on_focus_in_event(event);
Expand Down
Loading