MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.28k stars 19.24k forks source link

Pausing at bilinear grid boundaries #8595

Closed thinkyhead closed 6 years ago

thinkyhead commented 6 years ago

Continuing from #8573 —

@tcm0116 : My issue is definitely unrelated to this one. Mine is occurring at the bilinear grid boundaries as the printer is coming to a complete stop as it crosses the boundary. It seems to be a function of the amount of change in Z over the grid and the speed of the movement.

AnHardt commented 6 years ago

Maybe a 'split' parameter of '_buffer_line()' defaulting to 'true' and called with 'false' in the few cases where it matters is the way with the least changes.

Roxy-3D commented 6 years ago

Maybe a 'split' parameter of '_buffer_line()' defaulting to 'true' and called with 'false' in the few cases where it matters is the way with the least changes.

I would vote in favor of this implementation. And just for testing... It would be easy to turn all splitting off if issues show up in the future.

tcm0116 commented 6 years ago

I'm just thinking out loud here, but what if instead if splitting the first move after a stop in half, we split it up a little more intelligently. Here's the trapezoid for a move:

| __ |
|/  \|

Within this trapezoid, there's the acceleration, constant velocity, and deceleration sections. The issue we're seeing is that if a second move is added after the first movement starts but before it finishes, the planner is unable to chain them together, resulting in the following:

| __ | __ |
|/  \|/  \|

Ideally, for a straight line, we would want these to be chained together to look like:

| ____ |
|/    \|

The issue with the proposed solution is that we're attempting to split up the first movement to allow the planner to chain them together. However, the planner still has the limitation of not being able to chain the first two movements together due to the way the recalculate() function is designed and implemented. In order to allow the planner to be able to chain the first two commanded movements together, we need to put three movements in the buffer. The trick here is that the "split" first movement has to already be optimized since recalculate() is not going to do it for us. In order to achieve this, I would like to propose the following.

When we look at the first movement after a stop, the acceleration and constant velocity (if applicable) sections of the movement can be safely executed without further processing. However, it's the deceleration section that is considered volatile since it could potentially be replaced with a constant velocity section in the event of two consecutive straight lines, or the deceleration curve reduced in the event of a change of direction less than 90 degrees. Therefore, I propose that we split the first movement into two sections, with the split being at the start of the deceleration section:

Original first move:
| __ |
|/  \|

Split first move:
| _ |  |
|/ \|/\|

Pre-optimized split first move:
| __| |
|/  |\|

Unoptimized (split) first and second movements:
| __| | __ |
|/  |\|/  \|

Optimized (split) first and second movements:
| __|_|___ |
|/  | |   \|

The trick here is that the first half of the first move wouldn't have any deceleration in its block, and the second half of the split move would start at the ending velocity of the first half. This is different than the current approaches since each segment ends up with an acceleration and deceleration section that need to be optimized by recalculate(), which can't be done without a complete overhaul of recalculate().

By pre-optimizing these first two segments, we eliminate the need to even run recalculate() until the third segment, which is how it already works. At that point, if the third segment (i.e. the second commanded movement) can be optimized with the end of the first commanded movement, then the optimization can take place as it currently does. Another benefit to this solution is that we don't have to play any games with the stepper ISR. So long as the second commanded movement is processed before the second segment starts (i.e. the deceleration portion of the first commanded movement), then the optimization can occur. Granted, if the second commanded movement arrives later than needed, there will be a stop between the two commanded movements, but I don't see how that can be solved since we can't really guess what the second commanded movement will be.

Unfortunately, I don't have to to attempt to implement this until next week, but I've been thinking about it all day, and wanted to get it out there for the smart folks in this group to chew on.

Roxy-3D commented 6 years ago

The trick here is that the first half of the first move wouldn't have any deceleration in its block, and the second half of the split move would start at the ending velocity of the first half. This is different than the current approaches since each segment ends up with an acceleration and deceleration section that need to be optimized by recalculate()

I agree. This path has a lot of merit. Let's all think about this. I don't think this will be very difficult to code up and debug.

AnHardt commented 6 years ago

Maybe a 'split' parameter of '_buffer_line()' defaulting to 'true' and called with 'false' in the few cases where it matters is the way with the least changes.

Too difficult. :-( During probing do_blocking_move_to_z() is used. That uses about any kind of move where the parameter had to be propagated thru. Now looking how a 'global' would work.

AnHardt commented 6 years ago

The global works surprisingly well because it can be set/reset in bracket_probe_move() (aka setup_for_endstop_or_probe_move() and clean_up_after_endstop_or_probe_move() )

planner.h

@@ -163,10 +163,11 @@ class Planner {
                  acceleration,         // Normal acceleration mm/s^2  DEFAULT ACCELERATION for all printing moves. M204 SXXXX
                  retract_acceleration, // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX
                  travel_acceleration,  // Travel acceleration mm/s^2  DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
                  max_jerk[XYZE],       // The largest speed change requiring no acceleration
                  min_travel_feedrate_mm_s;
+    static bool split_first_move;

     #if HAS_LEVELING
       static bool leveling_active;          // Flag that bed leveling is enabled
       #if ABL_PLANAR
         static matrix_3x3 bed_level_matrix; // Transform to compensate for bed level

planer.cpp

@@ -101,10 +101,12 @@ float Planner::max_feedrate_mm_s[XYZE_N], // Max speeds in mm per second

 #if ENABLED(DISTINCT_E_FACTORS)
   uint8_t Planner::last_extruder = 0;     // Respond to extruder change
 #endif

+bool Planner::split_first_move = true;
+
 int16_t Planner::flow_percentage[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(100); // Extrusion factor for each extruder

 float Planner::e_factor[EXTRUDERS],               // The flow percentage and volumetric multiplier combine to scale E movement
       Planner::filament_size[EXTRUDERS],          // diameter of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder
       Planner::volumetric_area_nominal = CIRCLE_AREA((DEFAULT_NOMINAL_FILAMENT_DIA) * 0.5), // Nominal cross-sectional area
@@ -1442,12 +1444,12 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const

   // DRYRUN ignores all temperature constraints and assures that the extruder is instantly satisfied
   if (DEBUGGING(DRYRUN))
     position[E_AXIS] = target[E_AXIS];

-  // Always split the first move into one longer and one shorter move
-  if (!blocks_queued()) {
+  // Always split the first move into two (if not homing or probing)
+  if (!blocks_queued() && split_first_move) {
     #define _BETWEEN(A) (position[A##_AXIS] + target[A##_AXIS]) >> 1
     const int32_t between[XYZE] = { _BETWEEN(X), _BETWEEN(Y), _BETWEEN(Z), _BETWEEN(E) };
     DISABLE_STEPPER_DRIVER_INTERRUPT();
     _buffer_steps(between, fr_mm_s, extruder);
     _buffer_steps(target, fr_mm_s, extruder);

motion.cpp

@@ -424,15 +424,17 @@ void bracket_probe_move(const bool before) {
   if (before) {
     saved_feedrate_mm_s = feedrate_mm_s;
     saved_feedrate_percentage = feedrate_percentage;
     feedrate_percentage = 100;
     gcode.refresh_cmd_timeout();
+    planner.split_first_move = false;
   }
   else {
     feedrate_mm_s = saved_feedrate_mm_s;
     feedrate_percentage = saved_feedrate_percentage;
     gcode.refresh_cmd_timeout();
+    planner.split_first_move = true;
   }
 }

 void setup_for_endstop_or_probe_move() { bracket_probe_move(true); }
 void clean_up_after_endstop_or_probe_move() { bracket_probe_move(false); }
thinkyhead commented 6 years ago

Another idea is to simply have the stepper ISR throw away the rest of the blocks when it triggers an endstop or probe (which it should do anyway). There's a stepper variable (cleaning_buffer_counter) that, when set, causes the stepper ISR to throw away blocks until it counts down to zero. This would cover all future endstop/probing situations.

 void Stepper::endstop_triggered(AxisEnum axis) {
   . . .
   kill_current_block();
+  cleaning_buffer_counter = BLOCK_BUFFER_SIZE - 1;
 }
AnHardt commented 6 years ago

@thinkyhead Ingenios. Compared to my attempt this is pointing directly to the target instead of "carpet bombing".

We'll see if the homing/probing issues come down to a normal level now. I hope they are just caused by the COPY() problem. But now we should be save here.

AnHardt commented 6 years ago

I'm just thinking out loud here, but what if instead if splitting the first move after a stop in half, we split it up a little more intelligently. Here's the trapezoid for a move:

| __ |
|/  \|

There is another case where the plateau is not reached because the move is too short or the wanted speed is too high or the acceleration too low. In these cases the speed just ramps up and down. Splitting in the mid. for this type of moves is close to ideal. (and the calculation is sooo cheap.)

However, the planner still has the limitation of not being able to chain the first two movements together due to the way the recalculate() function is designed and implemented. In order to allow the planner to be able to chain the first two commanded movements together, we need to put three movements in the buffer. The trick here is that the "split" first movement has to already be optimized since recalculate() is not going to do it for us. In order to achieve this, I would like to propose the following.

My tests tell another story, especially when the plateau is reached in the first step all seems to be well.

G-code Test ```gcode ; Unchanged Configuration.h ; Test g-code: G0 X10 F2000 G0 X20 G0 X30 G0 X40 G0 X50 G0 X60 G0 X70 G0 X80 G0 X90 G0 X80 G0 X70 G0 X60 G0 X50 G0 X40 G0 X30 G0 X20 G0 X10 G0 X0 ```
Results ``` "^" -> calculate_trapezoid_for_block( "<" -> reverse_pass_kernel( ">" -> forward_pass_kernel( "/" -> block with BLOCK_BIT_START_FROM_FULL_HALT "X" ->block with BLOCK_BIT_BUSY "-" -> BLOCK_BIT_NOMINAL_LENGTH (can reach wanted speed) Numbers are initial_rate,nominal_rate,final_rate testresult: 00:23:15.322 : ^^,^>^^ 00:23:15.322 : echo:0:2; /- 1601,2667,2667 00:23:15.322 : echo:1:2; - 2667,2667,120 00:23:15.338 : ^>>^^ 00:23:15.338 : echo:0:3;X/- 1601,2667,2667 00:23:15.338 : echo:1:3; - 2667,2667,2667 00:23:15.338 : echo:2:3; - 2667,2667,120 00:23:15.338 : ^>>>^^ 00:23:15.338 : echo:0:4;X/- 1601,2667,2667 00:23:15.338 : echo:1:4; - 2667,2667,2667 00:23:15.338 : echo:2:4; - 2667,2667,2667 00:23:15.338 : echo:3:4; - 2667,2667,120 00:23:15.353 : ^>>>>^^ 00:23:15.353 : echo:0:5;X/- 1601,2667,2667 00:23:15.353 : echo:1:5; - 2667,2667,2667 00:23:15.353 : echo:2:5; - 2667,2667,2667 00:23:15.353 : echo:3:5; - 2667,2667,2667 00:23:15.353 : echo:4:5; - 2667,2667,120 00:23:15.353 : ^<>>>>>^^ 00:23:15.353 : echo:0:6;X/- 1601,2667,2667 00:23:15.353 : echo:1:6; - 2667,2667,2667 00:23:15.353 : echo:2:6; - 2667,2667,2667 00:23:15.369 : echo:3:6; - 2667,2667,2667 00:23:15.369 : echo:4:6; - 2667,2667,2667 00:23:15.369 : echo:5:6; - 2667,2667,120 00:23:15.369 : ^<<>>>>>>^^ 00:23:15.369 : echo:0:7;X/- 1601,2667,2667 00:23:15.369 : echo:1:7; - 2667,2667,2667 00:23:15.369 : echo:2:7; - 2667,2667,2667 00:23:15.369 : echo:3:7; - 2667,2667,2667 00:23:15.369 : echo:4:7; - 2667,2667,2667 00:23:15.369 : echo:5:7; - 2667,2667,2667 00:23:15.385 : echo:6:7; - 2667,2667,120 00:23:15.385 : ^<<<>>>>>>>^^ 00:23:15.385 : echo:0:8;X/- 1601,2667,2667 00:23:15.385 : echo:1:8; - 2667,2667,2667 00:23:15.385 : echo:2:8; - 2667,2667,2667 00:23:15.385 : echo:3:8; - 2667,2667,2667 00:23:15.385 : echo:4:8; - 2667,2667,2667 00:23:15.385 : echo:5:8; - 2667,2667,2667 00:23:15.385 : echo:6:8; - 2667,2667,2667 00:23:15.400 : echo:7:8; - 2667,2667,120 00:23:15.400 : ^<<<<>>>>>>>>^^ 00:23:15.400 : echo:0:9;X/- 1601,2667,2667 00:23:15.400 : echo:1:9; - 2667,2667,2667 00:23:15.400 : echo:2:9; - 2667,2667,2667 00:23:15.400 : echo:3:9; - 2667,2667,2667 00:23:15.400 : echo:4:9; - 2667,2667,2667 00:23:15.400 : echo:5:9; - 2667,2667,2667 00:23:15.400 : echo:6:9; - 2667,2667,2667 00:23:15.400 : echo:7:9; - 2667,2667,2667 00:23:15.417 : echo:8:9; - 2667,2667,120 00:23:15.419 : ^<<<<<>>>>>>>>>^^ 00:23:15.420 : echo:0:10;X/- 1601,2667,2667 00:23:15.423 : echo:1:10; - 2667,2667,2667 00:23:15.424 : echo:2:10; - 2667,2667,2667 00:23:15.426 : echo:3:10; - 2667,2667,2667 00:23:15.428 : echo:4:10; - 2667,2667,2667 00:23:15.428 : echo:5:10; - 2667,2667,2667 00:23:15.429 : echo:6:10; - 2667,2667,2667 00:23:15.431 : echo:7:10; - 2667,2667,2667 00:23:15.432 : echo:8:10; - 2667,2667,2667 00:23:15.435 : echo:9:10; - 2667,2667,120 00:23:15.437 : ^<<<<<<>>>>>>>>>>^^ 00:23:15.439 : echo:0:11;X/- 1601,2667,2667 00:23:15.441 : echo:1:11; - 2667,2667,2667 00:23:15.442 : echo:2:11; - 2667,2667,2667 00:23:15.444 : echo:3:11; - 2667,2667,2667 00:23:15.446 : echo:4:11; - 2667,2667,2667 00:23:15.447 : echo:5:11; - 2667,2667,2667 00:23:15.447 : echo:6:11; - 2667,2667,2667 00:23:15.449 : echo:7:11; - 2667,2667,2667 00:23:15.450 : echo:8:11; - 2667,2667,2667 00:23:15.452 : echo:9:11; - 2667,2667,1601 00:23:15.454 : echo:10:11; /- 1601,2667,120 00:23:15.454 : ^<<<<<<<>>>>>>>>>>>^^ 00:23:15.454 : echo:0:12;X/- 1601,2667,2667 00:23:15.454 : echo:1:12; - 2667,2667,2667 00:23:15.454 : echo:2:12; - 2667,2667,2667 00:23:15.454 : echo:3:12; - 2667,2667,2667 00:23:15.454 : echo:4:12; - 2667,2667,2667 00:23:15.454 : echo:5:12; - 2667,2667,2667 00:23:15.454 : echo:6:12; - 2667,2667,2667 00:23:15.454 : echo:7:12; - 2667,2667,2667 00:23:15.470 : echo:8:12; - 2667,2667,2667 00:23:15.470 : echo:9:12; - 2667,2667,1601 00:23:15.470 : echo:10:12; /- 1601,2667,2667 00:23:15.470 : echo:11:12; - 2667,2667,120 00:23:15.470 : ^<<<<<<<<>>>>>>>>>>>>^^ 00:23:15.470 : echo:0:13;X/- 1601,2667,2667 00:23:15.470 : echo:1:13; - 2667,2667,2667 00:23:15.470 : echo:2:13; - 2667,2667,2667 00:23:15.470 : echo:3:13; - 2667,2667,2667 00:23:15.486 : echo:4:12; - 2667,2667,2667 00:23:15.486 : echo:5:12; - 2667,2667,2667 00:23:15.486 : echo:6:12; - 2667,2667,2667 00:23:15.486 : echo:7:12; - 2667,2667,2667 00:23:15.486 : echo:8:12; - 2667,2667,2667 00:23:15.486 : echo:9:12; - 2667,2667,1601 00:23:15.486 : echo:10:12; /- 1601,2667,2667 00:23:15.486 : echo:11:12; - 2667,2667,2667 00:23:15.486 : echo:12:12; - 2667,2667,120 00:23:15.501 : ^>>>>>>>>>>>>^^ 00:23:15.501 : echo:1:13;X - 2667,2667,2667 00:23:15.501 : echo:2:13; - 2667,2667,2667 00:23:15.501 : echo:3:13; - 2667,2667,2667 00:23:15.501 : echo:4:13; - 2667,2667,2667 00:23:15.501 : echo:5:13; - 2667,2667,2667 00:23:15.501 : echo:6:13; - 2667,2667,2667 00:23:15.501 : echo:7:13; - 2667,2667,2667 00:23:15.501 : echo:8:13; - 2667,2667,2667 00:23:15.501 : echo:9:13; - 2667,2667,1601 00:23:15.501 : echo:10:13; /- 1601,2667,2667 00:23:15.517 : echo:11:13; - 2667,2667,2667 00:23:15.517 : echo:12:13; - 2667,2667,2667 00:23:15.517 : echo:13:13; - 2667,2667,120 00:23:15.517 : ^>>>>>>>>>>>>>^^ 00:23:15.517 : echo:1:14;X - 2667,2667,2667 00:23:15.517 : echo:2:14; - 2667,2667,2667 00:23:15.517 : echo:3:14; - 2667,2667,2667 00:23:15.517 : echo:4:14; - 2667,2667,2667 00:23:15.533 : echo:5:14; - 2667,2667,2667 00:23:15.533 : echo:6:14; - 2667,2667,2667 00:23:15.533 : echo:7:14; - 2667,2667,2667 00:23:15.533 : echo:8:14; - 2667,2667,2667 00:23:15.533 : echo:9:14; - 2667,2667,1601 00:23:15.533 : echo:10:14; /- 1601,2667,2667 00:23:15.533 : echo:11:14; - 2667,2667,2667 00:23:15.533 : echo:12:14; - 2667,2667,2667 00:23:15.533 : echo:13:14; - 2667,2667,2667 00:23:15.533 : echo:14:14; - 2667,2667,120 00:23:15.548 : ^<>>>>>>>>>>>>>>^^ 00:23:15.548 : echo:1:15;X - 2667,2667,2667 00:23:15.548 : echo:2:15; - 2667,2667,2667 00:23:15.548 : echo:3:15; - 2667,2667,2667 00:23:15.548 : echo:4:15; - 2667,2667,2667 00:23:15.548 : echo:5:15; - 2667,2667,2667 00:23:15.548 : echo:6:15; - 2667,2667,2667 00:23:15.548 : echo:7:15; - 2667,2667,2667 00:23:15.548 : echo:8:15; - 2667,2667,2667 00:23:15.548 : echo:9:15; - 2667,2667,1601 00:23:15.548 : echo:10:15; /- 1601,2667,2667 00:23:15.564 : echo:11:15; - 2667,2667,2667 00:23:15.564 : echo:12:15; - 2667,2667,2667 00:23:15.564 : echo:13:15; - 2667,2667,2667 00:23:15.564 : echo:14:15; - 2667,2667,2667 00:23:15.564 : echo:15:15; - 2667,2667,120 00:23:15.626 : ^<<>>>>>>>>>>>>>>^^ 00:23:15.626 : echo:2:15;X - 2667,2667,2667 00:23:15.642 : echo:3:15; - 2667,2667,2667 00:23:15.642 : echo:4:15; - 2667,2667,2667 00:23:15.642 : echo:5:15; - 2667,2667,2667 00:23:15.642 : echo:6:15; - 2667,2667,2667 00:23:15.642 : echo:7:15; - 2667,2667,2667 00:23:15.642 : echo:8:15; - 2667,2667,2667 00:23:15.642 : echo:9:15; - 2667,2667,1601 00:23:15.642 : echo:10:15; /- 1601,2667,2667 00:23:15.642 : echo:11:15; - 2667,2667,2667 00:23:15.642 : echo:12:15; - 2667,2667,2667 00:23:15.642 : echo:13:15; - 2667,2667,2667 00:23:15.658 : echo:14:15; - 2667,2667,2667 00:23:15.658 : echo:15:15; - 2667,2667,2667 00:23:15.658 : echo:0:15; - 2667,2667,120 00:23:15.934 : ^<<<>>>>>>>>>>>>>>^^ 00:23:15.934 : echo:3:15;X - 2667,2667,2667 00:23:15.934 : echo:4:15; - 2667,2667,2667 00:23:15.934 : echo:5:15; - 2667,2667,2667 00:23:15.934 : echo:6:15; - 2667,2667,2667 00:23:15.934 : echo:7:15; - 2667,2667,2667 00:23:15.950 : echo:8:15; - 2667,2667,2667 00:23:15.950 : echo:9:15; - 2667,2667,1601 00:23:15.950 : echo:10:15; /- 1601,2667,2667 00:23:15.950 : echo:11:15; - 2667,2667,2667 00:23:15.950 : echo:12:15; - 2667,2667,2667 00:23:15.950 : echo:13:15; - 2667,2667,2667 00:23:15.950 : echo:14:15; - 2667,2667,2667 00:23:15.950 : echo:15:15; - 2667,2667,2667 00:23:15.950 : echo:0:15; - 2667,2667,2667 00:23:15.950 : echo:1:15; - 2667,2667,120 00:23:16.243 : ^<<<<>>>>>>>>>>>>>>^^ 00:23:16.244 : echo:4:15;X - 2667,2667,2667 00:23:16.246 : echo:5:15; - 2667,2667,2667 00:23:16.247 : echo:6:15; - 2667,2667,2667 00:23:16.249 : echo:7:15; - 2667,2667,2667 00:23:16.251 : echo:8:15; - 2667,2667,2667 00:23:16.252 : echo:9:15; - 2667,2667,1601 00:23:16.255 : echo:10:15; /- 1601,2667,2667 00:23:16.255 : echo:11:15; - 2667,2667,2667 00:23:16.255 : echo:12:15; - 2667,2667,2667 00:23:16.255 : echo:13:15; - 2667,2667,2667 00:23:16.255 : echo:14:15; - 2667,2667,2667 00:23:16.255 : echo:15:15; - 2667,2667,2667 00:23:16.255 : echo:0:15; - 2667,2667,2667 00:23:16.255 : echo:1:15; - 2667,2667,2667 00:23:16.255 : echo:2:15; - 2667,2667,120 ```

Backward scan ("<") begins a bit late but is not needed at all here

If the "nominal_rate" is not reached things currently look like:

Results 2 ``` Same config. Same g-code but F20000 00:50:59.697 : ^^,^>^^ 00:50:59.697 : echo:0:2; / 1601,24000,13857 00:50:59.697 : echo:1:2; 13857,24000,120 00:50:59.697 : ^>>^^ 00:50:59.697 : echo:0:3;X/ 1601,24000,13857 00:50:59.697 : echo:1:3; 13857,24000,19596 00:50:59.697 : echo:2:3; 19596,24000,120 00:50:59.713 : ^>>>^^ 00:50:59.713 : echo:0:4;X/ 1601,24000,13857 00:50:59.713 : echo:1:4; 13857,24000,19596 00:50:59.713 : echo:2:4; 19596,24000,19596 00:50:59.713 : echo:3:4; 19596,24000,120 00:50:59.713 : ^>>>>^^ 00:50:59.729 : echo:0:5;X/ 1601,24000,13857 00:50:59.729 : echo:1:5; 13857,24000,19596 00:50:59.729 : echo:2:5; 19596,24000,19596 00:50:59.729 : echo:3:5; 19596,24000,19596 00:50:59.729 : echo:4:5; 19596,24000,120 00:50:59.729 : ^<>>>>>^^^^ 00:50:59.744 : echo:0:6;X/ 1601,24000,13857 00:50:59.744 : echo:1:6; 13949,24000,19596 00:50:59.744 : echo:2:6; 19596,24000,19596 00:50:59.744 : echo:3:6; 19596,24000,19596 00:50:59.744 : echo:4:6; 19596,24000,19596 00:50:59.744 : echo:5:5; 19596,24000,120 00:50:59.760 : ^<>>>>>^^^^ 00:50:59.760 : echo:1:6;X 13949,24000,19596 00:50:59.760 : echo:2:6; 19662,24000,19596 00:50:59.775 : echo:3:6; 19596,24000,19596 00:50:59.775 : echo:4:6; 19596,24000,19596 00:50:59.775 : echo:5:5; 19596,24000,19596 00:50:59.775 : echo:6:5; 19596,24000,120 00:50:59.791 : ^<>>>>>^^^^ 00:50:59.791 : echo:2:6;X 19662,24000,19596 00:50:59.791 : echo:3:6; 24000,24000,19596 00:50:59.791 : echo:4:6; 19596,24000,19596 00:50:59.807 : echo:5:6; 19596,24000,19596 00:50:59.807 : echo:6:6; 19596,24000,19596 00:50:59.807 : echo:7:6; 19596,24000,120 00:50:59.807 : ^<>>>>>^^^^ 00:50:59.824 : echo:3:6;X 24000,24000,19596 00:50:59.827 : echo:4:6; 24000,24000,19596 00:50:59.830 : echo:5:6; 19596,24000,19596 00:50:59.834 : echo:6:6; 19596,24000,19596 00:50:59.837 : echo:7:6; 19596,24000,19596 00:50:59.839 : echo:8:6; 19596,24000,120 00:50:59.848 : ^<<>>>>>>^^^^ 00:50:59.851 : echo:3:7;X 24000,24000,19596 00:50:59.854 : echo:4:6;X 24000,24000,24000 00:50:59.858 : echo:5:6; 24000,24000,19596 00:50:59.861 : echo:6:6; 19596,24000,19596 00:50:59.862 : echo:7:6; 19596,24000,19596 00:50:59.862 : echo:8:6; 19596,24000,19596 00:50:59.862 : echo:9:6; 19596,24000,120 00:50:59.877 : ^<<>>>>>>^^^^ 00:50:59.877 : echo:4:7;X 24000,24000,24000 00:50:59.877 : echo:5:7; 24000,24000,24000 00:50:59.877 : echo:6:6; 24000,24000,19596 00:50:59.877 : echo:7:6; 19596,24000,19596 00:50:59.877 : echo:8:6; 19596,24000,19596 00:50:59.893 : echo:9:6; 19596,24000,1601 00:50:59.893 : echo:10:6; / 1601,24000,120 00:50:59.909 : ^<<>>>>>>^^^^ 00:50:59.909 : echo:5:7;X 24000,24000,24000 00:50:59.909 : echo:6:7; 24000,24000,24000 00:50:59.909 : echo:7:7; 24000,24000,19596 00:50:59.909 : echo:8:6; 19596,24000,19596 00:50:59.909 : echo:9:6; 19596,24000,1601 00:50:59.924 : echo:10:6; / 1601,24000,19596 00:50:59.924 : echo:11:6; 19596,24000,120 00:50:59.924 : ^<<>>>>>>^^^^ 00:50:59.940 : echo:6:7;X 24000,24000,24000 00:50:59.940 : echo:7:7; 24000,24000,24000 00:50:59.940 : echo:8:7; 24000,24000,19596 00:50:59.940 : echo:9:7; 19596,24000,1601 00:50:59.940 : echo:10:7; / 1601,24000,19596 00:50:59.956 : echo:11:6; 19596,24000,19596 00:50:59.956 : echo:12:6; 19596,24000,120 00:50:59.956 : ^>>>>>>^^ 00:50:59.956 : echo:7:7;X 24000,24000,24000 00:50:59.971 : echo:8:7; 24000,24000,19596 00:50:59.971 : echo:9:7; 19596,24000,1601 00:50:59.971 : echo:10:7; / 1601,24000,19596 00:50:59.971 : echo:11:7; 19596,24000,19596 00:50:59.971 : echo:12:7; 19596,24000,19596 00:50:59.971 : echo:13:6; 19596,24000,120 00:50:59.987 : ^>>>>>>^^ 00:50:59.987 : echo:8:7;X 24000,24000,19596 00:50:59.987 : echo:9:7; 19596,24000,1601 00:51:00.002 : echo:10:7; / 1601,24000,19596 00:51:00.002 : echo:11:7; 19596,24000,19596 00:51:00.002 : echo:12:7; 19596,24000,19596 00:51:00.002 : echo:13:7; 19596,24000,19596 00:51:00.002 : echo:14:7; 19596,24000,120 00:51:00.018 : ^<>>>>>>^^^^ 00:51:00.018 : echo:9:7;X 19596,24000,1601 00:51:00.034 : echo:10:7; / 1601,24000,19662 00:51:00.034 : echo:11:7; 19662,24000,19596 00:51:00.034 : echo:12:7; 19596,24000,19596 00:51:00.034 : echo:13:7; 19596,24000,19596 00:51:00.034 : echo:14:7; 19596,24000,19596 00:51:00.034 : echo:15:7; 19596,24000,120 00:51:00.049 : ^<<>>>>>>>^^^^^ 00:51:00.049 : echo:9:8;X 19596,24000,1601 00:51:00.049 : echo:10:8; / 1601,24000,19662 00:51:00.049 : echo:11:8; 19662,24000,24000 00:51:00.049 : echo:12:8; 24000,24000,19596 00:51:00.049 : echo:13:8; 19596,24000,19596 00:51:00.065 : echo:14:8; 19596,24000,19596 00:51:00.065 : echo:15:8; 19596,24000,19596 00:51:00.065 : echo:0:8; 19596,24000,120 00:51:00.065 : ^<<<>>>>>>>>^^^^^^ 00:51:00.065 : echo:9:9;X 19596,24000,1601 00:51:00.081 : echo:10:9; / 1601,24000,19662 00:51:00.081 : echo:11:9; 19662,24000,24000 00:51:00.081 : echo:12:9; 24000,24000,24000 00:51:00.081 : echo:13:9; 24000,24000,19596 00:51:00.081 : echo:14:9; 19596,24000,19596 00:51:00.081 : echo:15:9; 19596,24000,19596 00:51:00.081 : echo:0:9; 19596,24000,19596 00:51:00.081 : echo:1:9; 19596,24000,120 ```

Even here the backward scan starts late, but fast enough to get a acceleration up to "nominal_rate".

But there are other interesting things

00:50:59.824 : echo:3:6;X   24000,24000,19596
00:50:59.827 : echo:4:6;    24000,24000,19596
final_rate != initial_rate
00:50:59.877 : echo:4:7;X   24000,24000,24000
00:50:59.877 : echo:5:7;    24000,24000,24000
buffer lines with continuous speeds at "nominal_rate" not marked with  BLOCK_BIT_NOMINAL_LENGTH

Splitting in 3 parts makes no sense to me. Splitting at the start of the deceleration ramp makes no sense to me. Either nominal_rate is reached - and all is well with the current code, or the ideal split for a doubled move is about in the mid.

More interesting to me, is to match what the code does while recalculating with my expectations, or the other way around. I simply currently neither understand what's going on nor what should go on. :-(

Give me some days. A flu isn't helpful when wanting to think.

Testcode based on bugfix-2.0.x at https://github.com/AnHardt/Marlin/pull/80/commits/c4bdcd898709b9b3eb4a18055cab0f95683d6813 now https://github.com/AnHardt/Marlin/pull/80/commits/2a8d5c0f4af983ae624db3cd18f819416b93ab6b

AnHardt commented 6 years ago

I still don't completely understand but added some more debug code to recalculate(). The i tried to shift the index borders in reverse_pass() a bit back and forward, shaked them and got

 void Planner::reverse_pass() {

-  if (movesplanned() > 3) {
+  if (movesplanned() > 2) {

-    block_t* block[3] = { NULL, NULL, NULL };
+    block_t* block[2] = { NULL, NULL };

     // Make a local copy of block_buffer_tail, because the interrupt can alter it
     // Is a critical section REALLY needed for a single byte change?
     //CRITICAL_SECTION_START;
     uint8_t tail = block_buffer_tail;
     //CRITICAL_SECTION_END
+    tail = BLOCK_MOD(tail+2);

-    uint8_t b = BLOCK_MOD(block_buffer_head - 3);
+    uint8_t b = BLOCK_MOD(block_buffer_head);
     while (b != tail) {
       if (block[0] && TEST(block[0]->flag, BLOCK_BIT_START_FROM_FULL_HALT)) break;
       b = prev_block_index(b);
-      block[2] = block[1];
       block[1] = block[0];
       block[0] = &block_buffer[b];
-      reverse_pass_kernel(block[1], block[2]);
+      reverse_pass_kernel(block[0], block[1]); // current, next
     }
   }
 }

what matches my expectations. Perfect for series of moves where the single buffer lines reach nominal_rate

Slow ``` G0 X10 F1500 G0 X20 G0 X30 G0 X40 G0 X50 G0 X60 G0 X70 G0 X80 G0 X90 G0 X80 G0 X70 G0 X60 G0 X50 G0 X40 G0 X30 G0 X20 G0 X10 G0 X0 23:54:42.920 : ^0 23:54:42.920 : R 23:54:42.921 : echo:0:1; /-*T1600,2000,1600;S400,90,310 23:54:42.921 : F 23:54:42.922 : echo:0:1; /-*T1600,2000,1600;S400,90,310 23:54:42.922 : T 23:54:42.925 : echo:0:1; /-*T1600,2000,1600;S400,90,310 23:54:42.925 : ^0,^1 23:54:42.925 : R 23:54:42.926 : echo:0:2; /- T1600,2000,120;S400,90,151 23:54:42.928 : echo:1:2; -*T2000,2000,1600;S400,0,310 23:54:42.929 : F 23:54:42.930 : echo:0:2; /- T1600,2000,120;S400,90,151 23:54:42.931 : echo:1:2; -*T2000,2000,1600;S400,0,310 23:54:42.932 : >0-1 23:54:42.932 : T 23:54:42.933 : echo:0:2; /- T1600,2000,120;S400,90,151 23:54:42.935 : echo:1:2; -*T2000,2000,1600;S400,0,310 23:54:42.935 : ^0^1 23:54:42.937 : echo:0:2; /- T1600,2000,2000;S400,90,400 23:54:42.938 : echo:1:2; - T2000,2000,120;S400,0,151 23:54:42.939 : ^2 23:54:42.939 : R 23:54:42.941 : echo:0:3;X/- T1600,2000,2000;S400,90,400 23:54:42.942 : echo:1:3; - T2000,2000,120;S400,0,151 23:54:42.943 : echo:2:3; -*T2000,2000,1600;S800,0,710 23:54:42.943 : F 23:54:42.946 : echo:0:3;X/- T1600,2000,2000;S400,90,400 23:54:42.947 : echo:1:3; - T2000,2000,120;S400,0,151 23:54:42.948 : echo:2:3; -*T2000,2000,1600;S800,0,710 23:54:42.949 : >0-1>1-2 23:54:42.949 : T 23:54:42.951 : echo:0:3;X/- T1600,2000,2000;S400,90,400 23:54:42.952 : echo:1:3; - T2000,2000,120;S400,0,151 23:54:42.953 : echo:2:3; -*T2000,2000,1600;S800,0,710 23:54:42.953 : ^1^2 23:54:42.956 : echo:0:3;X/- T1600,2000,2000;S400,90,400 23:54:42.957 : echo:1:3; - T2000,2000,2000;S400,0,400 23:54:42.958 : echo:2:3; - T2000,2000,120;S800,0,551 23:54:42.959 : ^3 23:54:42.959 : R 23:54:42.961 : echo:0:4;X/- T1600,2000,2000;S400,90,400 23:54:42.962 : echo:1:4; - T2000,2000,2000;S400,0,400 23:54:42.963 : echo:2:4; - T2000,2000,120;S800,0,551 23:54:42.964 : echo:3:4; -*T2000,2000,1600;S800,0,710 23:54:42.966 : <2-3 23:54:42.966 : F 23:54:42.967 : echo:0:4;X/- T1600,2000,2000;S400,90,400 23:54:42.968 : echo:1:4; - T2000,2000,2000;S400,0,400 23:54:42.969 : echo:2:4; - T2000,2000,120;S800,0,551 23:54:42.973 : echo:3:4; -*T2000,2000,1600;S800,0,710 23:54:42.973 : >0-1>1-2>2-3 23:54:42.973 : T 23:54:42.974 : echo:0:4;X/- T1600,2000,2000;S400,90,400 23:54:42.977 : echo:1:4; - T2000,2000,2000;S400,0,400 23:54:42.978 : echo:2:4; - T2000,2000,120;S800,0,551 23:54:42.979 : echo:3:4; -*T2000,2000,1600;S800,0,710 23:54:42.979 : ^2^3 23:54:42.982 : echo:0:4;X/- T1600,2000,2000;S400,90,400 23:54:42.983 : echo:1:4; - T2000,2000,2000;S400,0,400 23:54:42.984 : echo:2:4; - T2000,2000,2000;S800,0,800 23:54:42.985 : echo:3:4; - T2000,2000,120;S800,0,551 23:54:42.987 : ^4 23:54:42.987 : R 23:54:42.988 : echo:0:5;X/- T1600,2000,2000;S400,90,400 23:54:42.989 : echo:1:5; - T2000,2000,2000;S400,0,400 23:54:42.990 : echo:2:5; - T2000,2000,2000;S800,0,800 23:54:42.993 : echo:3:5; - T2000,2000,120;S800,0,551 23:54:42.994 : echo:4:5; -*T2000,2000,1600;S800,0,710 23:54:42.994 : <3-4<2-3 23:54:42.994 : F 23:54:42.996 : echo:0:5;X/- T1600,2000,2000;S400,90,400 23:54:42.998 : echo:1:5; - T2000,2000,2000;S400,0,400 23:54:42.999 : echo:2:5; - T2000,2000,2000;S800,0,800 23:54:43.001 : echo:3:5; - T2000,2000,120;S800,0,551 23:54:43.002 : echo:4:5; -*T2000,2000,1600;S800,0,710 23:54:43.003 : >0-1>1-2>2-3>3-4 23:54:43.003 : T 23:54:43.005 : echo:0:5;X/- T1600,2000,2000;S400,90,400 23:54:43.007 : echo:1:5; - T2000,2000,2000;S400,0,400 23:54:43.008 : echo:2:5; - T2000,2000,2000;S800,0,800 23:54:43.010 : echo:3:5; - T2000,2000,120;S800,0,551 23:54:43.011 : echo:4:5; -*T2000,2000,1600;S800,0,710 23:54:43.011 : ^3^4 23:54:43.013 : echo:0:5;X/- T1600,2000,2000;S400,90,400 23:54:43.015 : echo:1:5; - T2000,2000,2000;S400,0,400 23:54:43.016 : echo:2:5; - T2000,2000,2000;S800,0,800 23:54:43.017 : echo:3:5; - T2000,2000,2000;S800,0,800 23:54:43.021 : echo:4:5; - T2000,2000,120;S800,0,551 23:54:43.021 : ^5 23:54:43.021 : R 23:54:43.022 : echo:0:6;X/- T1600,2000,2000;S400,90,400 23:54:43.023 : echo:1:6; - T2000,2000,2000;S400,0,400 23:54:43.026 : echo:2:6; - T2000,2000,2000;S800,0,800 23:54:43.027 : echo:3:6; - T2000,2000,2000;S800,0,800 23:54:43.028 : echo:4:6; - T2000,2000,120;S800,0,551 23:54:43.029 : echo:5:6; -*T2000,2000,1600;S800,0,710 23:54:43.031 : <4-5<3-4<2-3 23:54:43.031 : F 23:54:43.032 : echo:0:6;X/- T1600,2000,2000;S400,90,400 23:54:43.033 : echo:1:6; - T2000,2000,2000;S400,0,400 23:54:43.036 : echo:2:6; - T2000,2000,2000;S800,0,800 23:54:43.037 : echo:3:6; - T2000,2000,2000;S800,0,800 23:54:43.038 : echo:4:6; - T2000,2000,120;S800,0,551 23:54:43.040 : echo:5:6; -*T2000,2000,1600;S800,0,710 23:54:43.041 : >0-1>1-2>2-3>3-4>4-5 23:54:43.041 : T 23:54:43.042 : echo:0:6;X/- T1600,2000,2000;S400,90,400 23:54:43.045 : echo:1:6; - T2000,2000,2000;S400,0,400 23:54:43.046 : echo:2:6; - T2000,2000,2000;S800,0,800 23:54:43.047 : echo:3:6; - T2000,2000,2000;S800,0,800 23:54:43.049 : echo:4:6; - T2000,2000,120;S800,0,551 23:54:43.051 : echo:5:6; -*T2000,2000,1600;S800,0,710 23:54:43.051 : ^4^5 23:54:43.052 : echo:0:6;X/- T1600,2000,2000;S400,90,400 23:54:43.054 : echo:1:6; - T2000,2000,2000;S400,0,400 23:54:43.056 : echo:2:6; - T2000,2000,2000;S800,0,800 23:54:43.057 : echo:3:6; - T2000,2000,2000;S800,0,800 23:54:43.059 : echo:4:6; - T2000,2000,2000;S800,0,800 23:54:43.060 : echo:5:6; - T2000,2000,120;S800,0,551 23:54:43.060 : ^6 23:54:43.061 : R 23:54:43.062 : echo:0:7;X/- T1600,2000,2000;S400,90,400 23:54:43.064 : echo:1:7; - T2000,2000,2000;S400,0,400 23:54:43.065 : echo:2:7; - T2000,2000,2000;S800,0,800 23:54:43.067 : echo:3:7; - T2000,2000,2000;S800,0,800 23:54:43.069 : echo:4:7; - T2000,2000,2000;S800,0,800 23:54:43.070 : echo:5:7; - T2000,2000,120;S800,0,551 23:54:43.071 : echo:6:7; -*T2000,2000,1600;S800,0,710 23:54:43.073 : <5-6<4-5<3-4<2-3 23:54:43.073 : F 23:54:43.074 : echo:0:7;X/- T1600,2000,2000;S400,90,400 23:54:43.075 : echo:1:7; - T2000,2000,2000;S400,0,400 23:54:43.078 : echo:2:7; - T2000,2000,2000;S800,0,800 23:54:43.079 : echo:3:7; - T2000,2000,2000;S800,0,800 23:54:43.080 : echo:4:7; - T2000,2000,2000;S800,0,800 23:54:43.082 : echo:5:7; - T2000,2000,120;S800,0,551 23:54:43.085 : echo:6:7; -*T2000,2000,1600;S800,0,710 23:54:43.085 : >0-1>1-2>2-3>3-4>4-5>5-6 23:54:43.085 : T 23:54:43.087 : echo:0:7;X/- T1600,2000,2000;S400,90,400 23:54:43.089 : echo:1:7; - T2000,2000,2000;S400,0,400 23:54:43.090 : echo:2:7; - T2000,2000,2000;S800,0,800 23:54:43.091 : echo:3:7; - T2000,2000,2000;S800,0,800 23:54:43.094 : echo:4:7; - T2000,2000,2000;S800,0,800 23:54:43.095 : echo:5:7; - T2000,2000,120;S800,0,551 23:54:43.096 : echo:6:7; -*T2000,2000,1600;S800,0,710 23:54:43.096 : ^5^6 23:54:43.099 : echo:0:7;X/- T1600,2000,2000;S400,90,400 23:54:43.100 : echo:1:7; - T2000,2000,2000;S400,0,400 23:54:43.101 : echo:2:7; - T2000,2000,2000;S800,0,800 23:54:43.102 : echo:3:7; - T2000,2000,2000;S800,0,800 23:54:43.105 : echo:4:7; - T2000,2000,2000;S800,0,800 23:54:43.106 : echo:5:7; - T2000,2000,2000;S800,0,800 23:54:43.108 : echo:6:7; - T2000,2000,120;S800,0,551 23:54:43.108 : ^7 23:54:43.108 : R 23:54:43.110 : echo:0:8;X/- T1600,2000,2000;S400,90,400 23:54:43.111 : echo:1:8; - T2000,2000,2000;S400,0,400 23:54:43.113 : echo:2:8; - T2000,2000,2000;S800,0,800 23:54:43.114 : echo:3:8; - T2000,2000,2000;S800,0,800 23:54:43.116 : echo:4:8; - T2000,2000,2000;S800,0,800 23:54:43.118 : echo:5:8; - T2000,2000,2000;S800,0,800 23:54:43.119 : echo:6:8; - T2000,2000,120;S800,0,551 23:54:43.120 : echo:7:8; -*T2000,2000,1600;S800,0,710 23:54:43.122 : <6-7<5-6<4-5<3-4<2-3 23:54:43.122 : F 23:54:43.123 : echo:0:8;X/- T1600,2000,2000;S400,90,400 23:54:43.125 : echo:1:8; - T2000,2000,2000;S400,0,400 23:54:43.127 : echo:2:8; - T2000,2000,2000;S800,0,800 23:54:43.128 : echo:3:8; - T2000,2000,2000;S800,0,800 23:54:43.129 : echo:4:8; - T2000,2000,2000;S800,0,800 23:54:43.132 : echo:5:8; - T2000,2000,2000;S800,0,800 23:54:43.134 : echo:6:8; - T2000,2000,120;S800,0,551 23:54:43.135 : echo:7:8; -*T2000,2000,1600;S800,0,710 23:54:43.136 : >0-1>1-2>2-3>3-4>4-5>5-6>6-7 23:54:43.136 : T 23:54:43.138 : echo:0:8;X/- T1600,2000,2000;S400,90,400 23:54:43.140 : echo:1:8; - T2000,2000,2000;S400,0,400 23:54:43.141 : echo:2:8; - T2000,2000,2000;S800,0,800 23:54:43.143 : echo:3:8; - T2000,2000,2000;S800,0,800 23:54:43.144 : echo:4:8; - T2000,2000,2000;S800,0,800 23:54:43.146 : echo:5:8; - T2000,2000,2000;S800,0,800 23:54:43.148 : echo:6:8; - T2000,2000,120;S800,0,551 23:54:43.149 : echo:7:8; -*T2000,2000,1600;S800,0,710 23:54:43.149 : ^6^7 23:54:43.150 : echo:0:8;X/- T1600,2000,2000;S400,90,400 23:54:43.153 : echo:1:7;X - T2000,2000,2000;S400,0,400 23:54:43.154 : echo:2:7; - T2000,2000,2000;S800,0,800 23:54:43.155 : echo:3:7; - T2000,2000,2000;S800,0,800 23:54:43.157 : echo:4:7; - T2000,2000,2000;S800,0,800 23:54:43.159 : echo:5:7; - T2000,2000,2000;S800,0,800 23:54:43.161 : echo:6:7; - T2000,2000,2000;S800,0,800 23:54:43.162 : echo:7:7; - T2000,2000,120;S800,0,551 23:54:43.162 : ^8 23:54:43.163 : R 23:54:43.164 : echo:1:8;X - T2000,2000,2000;S400,0,400 23:54:43.166 : echo:2:8; - T2000,2000,2000;S800,0,800 23:54:43.167 : echo:3:8; - T2000,2000,2000;S800,0,800 23:54:43.169 : echo:4:8; - T2000,2000,2000;S800,0,800 23:54:43.171 : echo:5:8; - T2000,2000,2000;S800,0,800 23:54:43.172 : echo:6:8; - T2000,2000,2000;S800,0,800 23:54:43.173 : echo:7:8; - T2000,2000,120;S800,0,551 23:54:43.176 : echo:8:8; -*T2000,2000,1600;S800,0,710 23:54:43.176 : <7-8<6-7<5-6<4-5<3-4 23:54:43.176 : F 23:54:43.177 : echo:1:8;X - T2000,2000,2000;S400,0,400 23:54:43.180 : echo:2:8; - T2000,2000,2000;S800,0,800 23:54:43.181 : echo:3:8; - T2000,2000,2000;S800,0,800 23:54:43.182 : echo:4:8; - T2000,2000,2000;S800,0,800 23:54:43.183 : echo:5:8; - T2000,2000,2000;S800,0,800 23:54:43.186 : echo:6:8; - T2000,2000,2000;S800,0,800 23:54:43.187 : echo:7:8; - T2000,2000,120;S800,0,551 23:54:43.189 : echo:8:8; -*T2000,2000,1600;S800,0,710 23:54:43.190 : >1-2>2-3>3-4>4-5>5-6>6-7>7-8 23:54:43.190 : T 23:54:43.191 : echo:1:8;X - T2000,2000,2000;S400,0,400 23:54:43.193 : echo:2:8; - T2000,2000,2000;S800,0,800 23:54:43.195 : echo:3:8; - T2000,2000,2000;S800,0,800 23:54:43.196 : echo:4:8; - T2000,2000,2000;S800,0,800 23:54:43.197 : echo:5:8; - T2000,2000,2000;S800,0,800 23:54:43.200 : echo:6:8; - T2000,2000,2000;S800,0,800 23:54:43.201 : echo:7:8; - T2000,2000,120;S800,0,551 23:54:43.202 : echo:8:8; -*T2000,2000,1600;S800,0,710 23:54:43.202 : ^7^8 23:54:43.205 : echo:1:8;X - T2000,2000,2000;S400,0,400 23:54:43.206 : echo:2:8; - T2000,2000,2000;S800,0,800 23:54:43.208 : echo:3:8; - T2000,2000,2000;S800,0,800 23:54:43.209 : echo:4:8; - T2000,2000,2000;S800,0,800 23:54:43.213 : echo:5:8; - T2000,2000,2000;S800,0,800 23:54:43.214 : echo:6:8; - T2000,2000,2000;S800,0,800 23:54:43.215 : echo:7:8; - T2000,2000,2000;S800,0,800 23:54:43.216 : echo:8:8; - T2000,2000,120;S800,0,551 23:54:43.216 : ^9 23:54:43.217 : R 23:54:43.219 : echo:1:9;X - T2000,2000,2000;S400,0,400 23:54:43.220 : echo:2:9; - T2000,2000,2000;S800,0,800 23:54:43.221 : echo:3:9; - T2000,2000,2000;S800,0,800 23:54:43.224 : echo:4:9; - T2000,2000,2000;S800,0,800 23:54:43.225 : echo:5:9; - T2000,2000,2000;S800,0,800 23:54:43.226 : echo:6:9; - T2000,2000,2000;S800,0,800 23:54:43.228 : echo:7:9; - T2000,2000,2000;S800,0,800 23:54:43.229 : echo:8:9; - T2000,2000,120;S800,0,551 23:54:43.231 : echo:9:9; -*T2000,2000,1600;S800,0,710 23:54:43.233 : <8-9<7-8<6-7<5-6<4-5<3-4 23:54:43.233 : F 23:54:43.234 : echo:1:9;X - T2000,2000,2000;S400,0,400 23:54:43.235 : echo:2:9; - T2000,2000,2000;S800,0,800 23:54:43.236 : echo:3:9; - T2000,2000,2000;S800,0,800 23:54:43.239 : echo:4:9; - T2000,2000,2000;S800,0,800 23:54:43.240 : echo:5:9; - T2000,2000,2000;S800,0,800 23:54:43.241 : echo:6:9; - T2000,2000,2000;S800,0,800 23:54:43.243 : echo:7:9; - T2000,2000,2000;S800,0,800 23:54:43.245 : echo:8:9; - T2000,2000,120;S800,0,551 23:54:43.247 : echo:9:9; -*T2000,2000,1600;S800,0,710 23:54:43.248 : >1-2>2-3>3-4>4-5>5-6>6-7>7-8>8-9 23:54:43.248 : T 23:54:43.249 : echo:1:9;X - T2000,2000,2000;S400,0,400 23:54:43.250 : echo:2:9; - T2000,2000,2000;S800,0,800 23:54:43.253 : echo:3:9; - T2000,2000,2000;S800,0,800 23:54:43.254 : echo:4:9; - T2000,2000,2000;S800,0,800 23:54:43.255 : echo:5:9; - T2000,2000,2000;S800,0,800 23:54:43.257 : echo:6:9; - T2000,2000,2000;S800,0,800 23:54:43.259 : echo:7:9; - T2000,2000,2000;S800,0,800 23:54:43.261 : echo:8:9; - T2000,2000,120;S800,0,551 23:54:43.262 : echo:9:9; -*T2000,2000,1600;S800,0,710 23:54:43.262 : ^8^9 23:54:43.264 : echo:1:9;X - T2000,2000,2000;S400,0,400 23:54:43.266 : echo:2:9; - T2000,2000,2000;S800,0,800 23:54:43.267 : echo:3:9; - T2000,2000,2000;S800,0,800 23:54:43.268 : echo:4:9; - T2000,2000,2000;S800,0,800 23:54:43.271 : echo:5:9; - T2000,2000,2000;S800,0,800 23:54:43.272 : echo:6:9; - T2000,2000,2000;S800,0,800 23:54:43.273 : echo:7:9; - T2000,2000,2000;S800,0,800 23:54:43.274 : echo:8:9; - T2000,2000,2000;S800,0,800 23:54:43.276 : echo:9:9; - T2000,2000,120;S800,0,551 23:54:43.278 : ^10 23:54:43.278 : R 23:54:43.279 : echo:1:10;X - T2000,2000,2000;S400,0,400 23:54:43.280 : echo:2:10; - T2000,2000,2000;S800,0,800 23:54:43.283 : echo:3:10; - T2000,2000,2000;S800,0,800 23:54:43.284 : echo:4:10; - T2000,2000,2000;S800,0,800 23:54:43.286 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.287 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.289 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.291 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.292 : echo:9:10; - T2000,2000,120;S800,0,551 23:54:43.295 : echo:10:10; /-*T1600,2000,1600;S800,90,710 23:54:43.295 : F 23:54:43.296 : echo:1:10;X - T2000,2000,2000;S400,0,400 23:54:43.297 : echo:2:10; - T2000,2000,2000;S800,0,800 23:54:43.300 : echo:3:10; - T2000,2000,2000;S800,0,800 23:54:43.301 : echo:4:10; - T2000,2000,2000;S800,0,800 23:54:43.302 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.303 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.306 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.307 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.309 : echo:9:10; - T2000,2000,120;S800,0,551 23:54:43.311 : echo:10:10; /-*T1600,2000,1600;S800,90,710 23:54:43.312 : >1-2>2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10 23:54:43.312 : T 23:54:43.313 : echo:1:10;X - T2000,2000,2000;S400,0,400 23:54:43.315 : echo:2:10; - T2000,2000,2000;S800,0,800 23:54:43.317 : echo:3:10; - T2000,2000,2000;S800,0,800 23:54:43.318 : echo:4:10; - T2000,2000,2000;S800,0,800 23:54:43.320 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.321 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.324 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.325 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.326 : echo:9:10; - T2000,2000,120;S800,0,551 23:54:43.329 : echo:10:10; /-*T1600,2000,1600;S800,90,710 23:54:43.329 : ^9^10 23:54:43.330 : echo:1:10;X - T2000,2000,2000;S400,0,400 23:54:43.332 : echo:2:10; - T2000,2000,2000;S800,0,800 23:54:43.335 : echo:3:10; - T2000,2000,2000;S800,0,800 23:54:43.336 : echo:4:10; - T2000,2000,2000;S800,0,800 23:54:43.337 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.340 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.341 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.342 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.344 : echo:9:10; - T2000,2000,1600;S800,0,710 23:54:43.346 : echo:10:10; /- T1600,2000,120;S800,90,551 23:54:43.346 : ^11 23:54:43.346 : R 23:54:43.347 : echo:1:11;X - T2000,2000,2000;S400,0,400 23:54:43.349 : echo:2:11; - T2000,2000,2000;S800,0,800 23:54:43.351 : echo:3:11; - T2000,2000,2000;S800,0,800 23:54:43.352 : echo:4:11; - T2000,2000,2000;S800,0,800 23:54:43.353 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.356 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.357 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.358 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.359 : echo:9:10; - T2000,2000,1600;S800,0,710 23:54:43.362 : echo:10:10; /- T1600,2000,120;S800,90,551 23:54:43.363 : echo:11:10; -*T2000,2000,1600;S800,0,710 23:54:43.363 : <10-11 23:54:43.363 : F 23:54:43.366 : echo:2:10;X - T2000,2000,2000;S800,0,800 23:54:43.367 : echo:3:10; - T2000,2000,2000;S800,0,800 23:54:43.368 : echo:4:10; - T2000,2000,2000;S800,0,800 23:54:43.371 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.372 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.375 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.375 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.378 : echo:9:10; - T2000,2000,1600;S800,0,710 23:54:43.380 : echo:10:10; /- T1600,2000,120;S800,90,551 23:54:43.381 : echo:11:10; -*T2000,2000,1600;S800,0,710 23:54:43.383 : >2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11 23:54:43.383 : T 23:54:43.385 : echo:2:10;X - T2000,2000,2000;S800,0,800 23:54:43.386 : echo:3:10; - T2000,2000,2000;S800,0,800 23:54:43.387 : echo:4:10; - T2000,2000,2000;S800,0,800 23:54:43.390 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.391 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.392 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.395 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.396 : echo:9:10; - T2000,2000,1600;S800,0,710 23:54:43.397 : echo:10:10; /- T1600,2000,120;S800,90,551 23:54:43.399 : echo:11:10; -*T2000,2000,1600;S800,0,710 23:54:43.400 : ^10^11 23:54:43.401 : echo:2:10;X - T2000,2000,2000;S800,0,800 23:54:43.402 : echo:3:10; - T2000,2000,2000;S800,0,800 23:54:43.405 : echo:4:10; - T2000,2000,2000;S800,0,800 23:54:43.406 : echo:5:10; - T2000,2000,2000;S800,0,800 23:54:43.407 : echo:6:10; - T2000,2000,2000;S800,0,800 23:54:43.409 : echo:7:10; - T2000,2000,2000;S800,0,800 23:54:43.411 : echo:8:10; - T2000,2000,2000;S800,0,800 23:54:43.413 : echo:9:10; - T2000,2000,1600;S800,0,710 23:54:43.414 : echo:10:10; /- T1600,2000,2000;S800,90,800 23:54:43.416 : echo:11:10; - T2000,2000,120;S800,0,551 23:54:43.416 : ^12 23:54:43.416 : R 23:54:43.418 : echo:2:11;X - T2000,2000,2000;S800,0,800 23:54:43.419 : echo:3:11; - T2000,2000,2000;S800,0,800 23:54:43.421 : echo:4:11; - T2000,2000,2000;S800,0,800 23:54:43.423 : echo:5:11; - T2000,2000,2000;S800,0,800 23:54:43.424 : echo:6:11; - T2000,2000,2000;S800,0,800 23:54:43.426 : echo:7:11; - T2000,2000,2000;S800,0,800 23:54:43.428 : echo:8:11; - T2000,2000,2000;S800,0,800 23:54:43.429 : echo:9:11; - T2000,2000,1600;S800,0,710 23:54:43.430 : echo:10:11; /- T1600,2000,2000;S800,90,800 23:54:43.433 : echo:11:11; - T2000,2000,120;S800,0,551 23:54:43.434 : echo:12:11; -*T2000,2000,1600;S800,0,710 23:54:43.434 : <11-12<10-11 23:54:43.434 : F 23:54:43.437 : echo:2:11;X - T2000,2000,2000;S800,0,800 23:54:43.438 : echo:3:11; - T2000,2000,2000;S800,0,800 23:54:43.440 : echo:4:11; - T2000,2000,2000;S800,0,800 23:54:43.443 : echo:5:11; - T2000,2000,2000;S800,0,800 23:54:43.444 : echo:6:11; - T2000,2000,2000;S800,0,800 23:54:43.445 : echo:7:11; - T2000,2000,2000;S800,0,800 23:54:43.447 : echo:8:11; - T2000,2000,2000;S800,0,800 23:54:43.449 : echo:9:11; - T2000,2000,1600;S800,0,710 23:54:43.450 : echo:10:11; /- T1600,2000,2000;S800,90,800 23:54:43.452 : echo:11:11; - T2000,2000,120;S800,0,551 23:54:43.454 : echo:12:11; -*T2000,2000,1600;S800,0,710 23:54:43.456 : >2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12 23:54:43.456 : T 23:54:43.457 : echo:2:11;X - T2000,2000,2000;S800,0,800 23:54:43.459 : echo:3:11; - T2000,2000,2000;S800,0,800 23:54:43.461 : echo:4:11; - T2000,2000,2000;S800,0,800 23:54:43.462 : echo:5:11; - T2000,2000,2000;S800,0,800 23:54:43.464 : echo:6:11; - T2000,2000,2000;S800,0,800 23:54:43.466 : echo:7:11; - T2000,2000,2000;S800,0,800 23:54:43.467 : echo:8:11; - T2000,2000,2000;S800,0,800 23:54:43.468 : echo:9:11; - T2000,2000,1600;S800,0,710 23:54:43.471 : echo:10:11; /- T1600,2000,2000;S800,90,800 23:54:43.472 : echo:11:11; - T2000,2000,120;S800,0,551 23:54:43.473 : echo:12:11; -*T2000,2000,1600;S800,0,710 23:54:43.474 : ^11^12 23:54:43.476 : echo:2:11;X - T2000,2000,2000;S800,0,800 23:54:43.477 : echo:3:11; - T2000,2000,2000;S800,0,800 23:54:43.478 : echo:4:11; - T2000,2000,2000;S800,0,800 23:54:43.481 : echo:5:11; - T2000,2000,2000;S800,0,800 23:54:43.482 : echo:6:11; - T2000,2000,2000;S800,0,800 23:54:43.484 : echo:7:11; - T2000,2000,2000;S800,0,800 23:54:43.486 : echo:8:11; - T2000,2000,2000;S800,0,800 23:54:43.487 : echo:9:11; - T2000,2000,1600;S800,0,710 23:54:43.489 : echo:10:11; /- T1600,2000,2000;S800,90,800 23:54:43.490 : echo:11:11; - T2000,2000,2000;S800,0,800 23:54:43.492 : echo:12:11; - T2000,2000,120;S800,0,551 23:54:43.493 : ^13 23:54:43.493 : R 23:54:43.494 : echo:2:12;X - T2000,2000,2000;S800,0,800 23:54:43.496 : echo:3:12; - T2000,2000,2000;S800,0,800 23:54:43.497 : echo:4:12; - T2000,2000,2000;S800,0,800 23:54:43.499 : echo:5:12; - T2000,2000,2000;S800,0,800 23:54:43.500 : echo:6:12; - T2000,2000,2000;S800,0,800 23:54:43.502 : echo:7:12; - T2000,2000,2000;S800,0,800 23:54:43.504 : echo:8:12; - T2000,2000,2000;S800,0,800 23:54:43.505 : echo:9:12; - T2000,2000,1600;S800,0,710 23:54:43.507 : echo:10:12; /- T1600,2000,2000;S800,90,800 23:54:43.509 : echo:11:12; - T2000,2000,2000;S800,0,800 23:54:43.510 : echo:12:12; - T2000,2000,120;S800,0,551 23:54:43.513 : echo:13:12; -*T2000,2000,1600;S800,0,710 23:54:43.513 : <12-13<11-12<10-11 23:54:43.513 : F 23:54:43.515 : echo:2:12;X - T2000,2000,2000;S800,0,800 23:54:43.517 : echo:3:12; - T2000,2000,2000;S800,0,800 23:54:43.519 : echo:4:12; - T2000,2000,2000;S800,0,800 23:54:43.520 : echo:5:12; - T2000,2000,2000;S800,0,800 23:54:43.522 : echo:6:12; - T2000,2000,2000;S800,0,800 23:54:43.524 : echo:7:12; - T2000,2000,2000;S800,0,800 23:54:43.525 : echo:8:12; - T2000,2000,2000;S800,0,800 23:54:43.526 : echo:9:12; - T2000,2000,1600;S800,0,710 23:54:43.529 : echo:10:12; /- T1600,2000,2000;S800,90,800 23:54:43.530 : echo:11:12; - T2000,2000,2000;S800,0,800 23:54:43.531 : echo:12:12; - T2000,2000,120;S800,0,551 23:54:43.534 : echo:13:12; -*T2000,2000,1600;S800,0,710 23:54:43.535 : >2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13 23:54:43.535 : T 23:54:43.538 : echo:2:12;X - T2000,2000,2000;S800,0,800 23:54:43.539 : echo:3:12; - T2000,2000,2000;S800,0,800 23:54:43.540 : echo:4:12; - T2000,2000,2000;S800,0,800 23:54:43.543 : echo:5:12; - T2000,2000,2000;S800,0,800 23:54:43.544 : echo:6:12; - T2000,2000,2000;S800,0,800 23:54:43.545 : echo:7:12; - T2000,2000,2000;S800,0,800 23:54:43.547 : echo:8:12; - T2000,2000,2000;S800,0,800 23:54:43.549 : echo:9:12; - T2000,2000,1600;S800,0,710 23:54:43.550 : echo:10:12; /- T1600,2000,2000;S800,90,800 23:54:43.552 : echo:11:12; - T2000,2000,2000;S800,0,800 23:54:43.554 : echo:12:12; - T2000,2000,120;S800,0,551 23:54:43.555 : echo:13:12; -*T2000,2000,1600;S800,0,710 23:54:43.555 : ^12^13 23:54:43.557 : echo:2:12;X - T2000,2000,2000;S800,0,800 23:54:43.559 : echo:3:12; - T2000,2000,2000;S800,0,800 23:54:43.560 : echo:4:12; - T2000,2000,2000;S800,0,800 23:54:43.562 : echo:5:12; - T2000,2000,2000;S800,0,800 23:54:43.565 : echo:6:12; - T2000,2000,2000;S800,0,800 23:54:43.566 : echo:7:12; - T2000,2000,2000;S800,0,800 23:54:43.567 : echo:8:12; - T2000,2000,2000;S800,0,800 23:54:43.568 : echo:9:12; - T2000,2000,1600;S800,0,710 23:54:43.571 : echo:10:12; /- T1600,2000,2000;S800,90,800 23:54:43.572 : echo:11:12; - T2000,2000,2000;S800,0,800 23:54:43.573 : echo:12:12; - T2000,2000,2000;S800,0,800 23:54:43.576 : echo:13:12; - T2000,2000,120;S800,0,551 23:54:43.576 : ^14 23:54:43.577 : R 23:54:43.578 : echo:2:13;X - T2000,2000,2000;S800,0,800 23:54:43.580 : echo:3:13; - T2000,2000,2000;S800,0,800 23:54:43.581 : echo:4:13; - T2000,2000,2000;S800,0,800 23:54:43.584 : echo:5:13; - T2000,2000,2000;S800,0,800 23:54:43.585 : echo:6:13; - T2000,2000,2000;S800,0,800 23:54:43.586 : echo:7:13; - T2000,2000,2000;S800,0,800 23:54:43.587 : echo:8:13; - T2000,2000,2000;S800,0,800 23:54:43.590 : echo:9:13; - T2000,2000,1600;S800,0,710 23:54:43.591 : echo:10:13; /- T1600,2000,2000;S800,90,800 23:54:43.592 : echo:11:13; - T2000,2000,2000;S800,0,800 23:54:43.595 : echo:12:13; - T2000,2000,2000;S800,0,800 23:54:43.596 : echo:13:13; - T2000,2000,120;S800,0,551 23:54:43.598 : echo:14:13; -*T2000,2000,1600;S800,0,710 23:54:43.599 : <13-14<12-13<11-12<10-11 23:54:43.599 : F 23:54:43.601 : echo:2:13;X - T2000,2000,2000;S800,0,800 23:54:43.604 : echo:3:13; - T2000,2000,2000;S800,0,800 23:54:43.605 : echo:4:13; - T2000,2000,2000;S800,0,800 23:54:43.606 : echo:5:13; - T2000,2000,2000;S800,0,800 23:54:43.609 : echo:6:13; - T2000,2000,2000;S800,0,800 23:54:43.610 : echo:7:13; - T2000,2000,2000;S800,0,800 23:54:43.611 : echo:8:13; - T2000,2000,2000;S800,0,800 23:54:43.613 : echo:9:13; - T2000,2000,1600;S800,0,710 23:54:43.615 : echo:10:13; /- T1600,2000,2000;S800,90,800 23:54:43.616 : echo:11:13; - T2000,2000,2000;S800,0,800 23:54:43.618 : echo:12:13; - T2000,2000,2000;S800,0,800 23:54:43.620 : echo:13:13; - T2000,2000,120;S800,0,551 23:54:43.622 : echo:14:13; -*T2000,2000,1600;S800,0,710 23:54:43.624 : >2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14 23:54:43.624 : T 23:54:43.625 : echo:2:13;X - T2000,2000,2000;S800,0,800 23:54:43.627 : echo:3:13; - T2000,2000,2000;S800,0,800 23:54:43.629 : echo:4:13; - T2000,2000,2000;S800,0,800 23:54:43.630 : echo:5:13; - T2000,2000,2000;S800,0,800 23:54:43.632 : echo:6:13; - T2000,2000,2000;S800,0,800 23:54:43.634 : echo:7:13; - T2000,2000,2000;S800,0,800 23:54:43.635 : echo:8:13; - T2000,2000,2000;S800,0,800 23:54:43.637 : echo:9:13; - T2000,2000,1600;S800,0,710 23:54:43.638 : echo:10:13; /- T1600,2000,2000;S800,90,800 23:54:43.640 : echo:11:13; - T2000,2000,2000;S800,0,800 23:54:43.642 : echo:12:13; - T2000,2000,2000;S800,0,800 23:54:43.643 : echo:13:13; - T2000,2000,120;S800,0,551 23:54:43.645 : echo:14:13; -*T2000,2000,1600;S800,0,710 23:54:43.645 : ^13^14 23:54:43.647 : echo:2:13;X - T2000,2000,2000;S800,0,800 23:54:43.648 : echo:3:13; - T2000,2000,2000;S800,0,800 23:54:43.651 : echo:4:13; - T2000,2000,2000;S800,0,800 23:54:43.652 : echo:5:13; - T2000,2000,2000;S800,0,800 23:54:43.653 : echo:6:13; - T2000,2000,2000;S800,0,800 23:54:43.656 : echo:7:13; - T2000,2000,2000;S800,0,800 23:54:43.657 : echo:8:13; - T2000,2000,2000;S800,0,800 23:54:43.658 : echo:9:13; - T2000,2000,1600;S800,0,710 23:54:43.659 : echo:10:13; /- T1600,2000,2000;S800,90,800 23:54:43.662 : echo:11:13; - T2000,2000,2000;S800,0,800 23:54:43.663 : echo:12:13; - T2000,2000,2000;S800,0,800 23:54:43.666 : echo:13:13; - T2000,2000,2000;S800,0,800 23:54:43.668 : echo:14:13; - T2000,2000,120;S800,0,551 23:54:43.668 : ^15 23:54:43.668 : R 23:54:43.669 : echo:2:14;X - T2000,2000,2000;S800,0,800 23:54:43.672 : echo:3:14; - T2000,2000,2000;S800,0,800 23:54:43.673 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.674 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.676 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.678 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.679 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.681 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.683 : echo:10:14; /- T1600,2000,2000;S800,90,800 23:54:43.685 : echo:11:14; - T2000,2000,2000;S800,0,800 23:54:43.686 : echo:12:14; - T2000,2000,2000;S800,0,800 23:54:43.688 : echo:13:14; - T2000,2000,2000;S800,0,800 23:54:43.690 : echo:14:14; - T2000,2000,120;S800,0,551 23:54:43.691 : echo:15:14; -*T2000,2000,1600;S800,0,710 23:54:43.692 : <14-15<13-14<12-13<11-12<10-11 23:54:43.692 : F 23:54:43.693 : echo:2:14;X - T2000,2000,2000;S800,0,800 23:54:43.700 : echo:3:14; - T2000,2000,2000;S800,0,800 23:54:43.700 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.700 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.701 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.703 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.704 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.705 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.708 : echo:10:14; /- T1600,2000,2000;S800,90,800 23:54:43.709 : echo:11:14; - T2000,2000,2000;S800,0,800 23:54:43.710 : echo:12:14; - T2000,2000,2000;S800,0,800 23:54:43.713 : echo:13:14; - T2000,2000,2000;S800,0,800 23:54:43.714 : echo:14:14; - T2000,2000,120;S800,0,551 23:54:43.715 : echo:15:14; -*T2000,2000,1600;S800,0,710 23:54:43.718 : >2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15 23:54:43.718 : T 23:54:43.720 : echo:2:14;X - T2000,2000,2000;S800,0,800 23:54:43.722 : echo:3:14; - T2000,2000,2000;S800,0,800 23:54:43.723 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.724 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.727 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.728 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.729 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.732 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.733 : echo:10:14; /- T1600,2000,2000;S800,90,800 23:54:43.734 : echo:11:14; - T2000,2000,2000;S800,0,800 23:54:43.737 : echo:12:14; - T2000,2000,2000;S800,0,800 23:54:43.738 : echo:13:14; - T2000,2000,2000;S800,0,800 23:54:43.739 : echo:14:14; - T2000,2000,120;S800,0,551 23:54:43.741 : echo:15:14; -*T2000,2000,1600;S800,0,710 23:54:43.742 : ^14^15 23:54:43.743 : echo:2:14;X - T2000,2000,2000;S800,0,800 23:54:43.744 : echo:3:14; - T2000,2000,2000;S800,0,800 23:54:43.747 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.748 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.750 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.752 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.754 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.756 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.757 : echo:10:13; /- T1600,2000,2000;S800,90,800 23:54:43.759 : echo:11:13; - T2000,2000,2000;S800,0,800 23:54:43.761 : echo:12:13; - T2000,2000,2000;S800,0,800 23:54:43.762 : echo:13:13; - T2000,2000,2000;S800,0,800 23:54:43.764 : echo:14:13; - T2000,2000,2000;S800,0,800 23:54:43.766 : echo:15:13; - T2000,2000,120;S800,0,551 23:54:43.766 : ^0 23:54:43.766 : R 23:54:43.767 : echo:3:14;X - T2000,2000,2000;S800,0,800 23:54:43.769 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.771 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.772 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.773 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.776 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.777 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.778 : echo:10:14; /- T1600,2000,2000;S800,90,800 23:54:43.781 : echo:11:14; - T2000,2000,2000;S800,0,800 23:54:43.782 : echo:12:14; - T2000,2000,2000;S800,0,800 23:54:43.783 : echo:13:14; - T2000,2000,2000;S800,0,800 23:54:43.786 : echo:14:14; - T2000,2000,2000;S800,0,800 23:54:43.787 : echo:15:14; - T2000,2000,120;S800,0,551 23:54:43.789 : echo:0:14; -*T2000,2000,1600;S800,0,710 23:54:43.790 : <15-0<14-15<13-14<12-13<11-12<10-11 23:54:43.790 : F 23:54:43.792 : echo:3:14;X - T2000,2000,2000;S800,0,800 23:54:43.794 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.795 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.796 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.799 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.800 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.801 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.804 : echo:10:14; /- T1600,2000,2000;S800,90,800 23:54:43.805 : echo:11:14; - T2000,2000,2000;S800,0,800 23:54:43.807 : echo:12:14; - T2000,2000,2000;S800,0,800 23:54:43.809 : echo:13:14; - T2000,2000,2000;S800,0,800 23:54:43.810 : echo:14:14; - T2000,2000,2000;S800,0,800 23:54:43.812 : echo:15:14; - T2000,2000,120;S800,0,551 23:54:43.813 : echo:0:14; -*T2000,2000,1600;S800,0,710 23:54:43.817 : >3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15>15-0 23:54:43.817 : T 23:54:43.818 : echo:3:14;X - T2000,2000,2000;S800,0,800 23:54:43.819 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.821 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.823 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.824 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.825 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.829 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.830 : echo:10:14; /- T1600,2000,2000;S800,90,800 23:54:43.832 : echo:11:14; - T2000,2000,2000;S800,0,800 23:54:43.834 : echo:12:14; - T2000,2000,2000;S800,0,800 23:54:43.835 : echo:13:14; - T2000,2000,2000;S800,0,800 23:54:43.837 : echo:14:14; - T2000,2000,2000;S800,0,800 23:54:43.838 : echo:15:14; - T2000,2000,120;S800,0,551 23:54:43.840 : echo:0:14; -*T2000,2000,1600;S800,0,710 23:54:43.841 : ^15^0 23:54:43.842 : echo:3:14;X - T2000,2000,2000;S800,0,800 23:54:43.843 : echo:4:14; - T2000,2000,2000;S800,0,800 23:54:43.846 : echo:5:14; - T2000,2000,2000;S800,0,800 23:54:43.847 : echo:6:14; - T2000,2000,2000;S800,0,800 23:54:43.848 : echo:7:14; - T2000,2000,2000;S800,0,800 23:54:43.851 : echo:8:14; - T2000,2000,2000;S800,0,800 23:54:43.852 : echo:9:14; - T2000,2000,1600;S800,0,710 23:54:43.853 : echo:10:14; /- T1600,2000,2000;S800,90,800 23:54:43.856 : echo:11:14; - T2000,2000,2000;S800,0,800 23:54:43.857 : echo:12:14; - T2000,2000,2000;S800,0,800 23:54:43.858 : echo:13:14; - T2000,2000,2000;S800,0,800 23:54:43.860 : echo:14:14; - T2000,2000,2000;S800,0,800 23:54:43.862 : echo:15:14; - T2000,2000,2000;S800,0,800 23:54:43.863 : echo:0:14; - T2000,2000,120;S800,0,551 23:54:43.863 : ^1 23:54:43.863 : R 23:54:43.866 : echo:3:15;X - T2000,2000,2000;S800,0,800 23:54:43.867 : echo:4:15; - T2000,2000,2000;S800,0,800 23:54:43.868 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:43.870 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:43.872 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:43.874 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:43.875 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:43.877 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:43.879 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:43.880 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:43.882 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:43.884 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:43.885 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:43.886 : echo:0:15; - T2000,2000,120;S800,0,551 23:54:43.889 : echo:1:15; -*T2000,2000,1600;S800,0,710 23:54:43.890 : <0-1<15-0<14-15<13-14<12-13<11-12<10-11 23:54:43.890 : F 23:54:43.891 : echo:3:15;X - T2000,2000,2000;S800,0,800 23:54:43.894 : echo:4:15; - T2000,2000,2000;S800,0,800 23:54:43.895 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:43.896 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:43.898 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:43.900 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:43.902 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:43.903 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:43.906 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:43.908 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:43.909 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:43.911 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:43.913 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:43.914 : echo:0:15; - T2000,2000,120;S800,0,551 23:54:43.915 : echo:1:15; -*T2000,2000,1600;S800,0,710 23:54:43.919 : >3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15>15-0>0-1 23:54:43.919 : T 23:54:43.920 : echo:3:15;X - T2000,2000,2000;S800,0,800 23:54:43.922 : echo:4:15; - T2000,2000,2000;S800,0,800 23:54:43.923 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:43.925 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:43.927 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:43.928 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:43.931 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:43.932 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:43.933 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:43.936 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:43.937 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:43.938 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:43.939 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:43.942 : echo:0:15; - T2000,2000,120;S800,0,551 23:54:43.943 : echo:1:15; -*T2000,2000,1600;S800,0,710 23:54:43.943 : ^0^1 23:54:43.944 : echo:3:15;X - T2000,2000,2000;S800,0,800 23:54:43.947 : echo:4:15; - T2000,2000,2000;S800,0,800 23:54:43.948 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:43.949 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:43.952 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:43.953 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:43.955 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:43.956 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:43.959 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:43.960 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:43.961 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:43.964 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:43.965 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:43.966 : echo:0:15; - T2000,2000,2000;S800,0,800 23:54:43.969 : echo:1:15; - T2000,2000,120;S800,0,551 23:54:44.149 : ^2 23:54:44.149 : R 23:54:44.150 : echo:4:15;X - T2000,2000,2000;S800,0,800 23:54:44.151 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:44.153 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:44.155 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:44.156 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:44.158 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:44.160 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:44.161 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:44.163 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:44.165 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:44.166 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:44.168 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:44.170 : echo:0:15; - T2000,2000,2000;S800,0,800 23:54:44.172 : echo:1:15; - T2000,2000,120;S800,0,551 23:54:44.173 : echo:2:15; -*T2000,2000,1600;S800,0,710 23:54:44.174 : <1-2<0-1<15-0<14-15<13-14<12-13<11-12<10-11 23:54:44.174 : F 23:54:44.178 : echo:4:15;X - T2000,2000,2000;S800,0,800 23:54:44.179 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:44.180 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:44.183 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:44.184 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:44.185 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:44.188 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:44.189 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:44.190 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:44.191 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:44.194 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:44.195 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:44.197 : echo:0:15; - T2000,2000,2000;S800,0,800 23:54:44.199 : echo:1:15; - T2000,2000,120;S800,0,551 23:54:44.200 : echo:2:15; -*T2000,2000,1600;S800,0,710 23:54:44.203 : >4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15>15-0>0-1>1-2 23:54:44.203 : T 23:54:44.204 : echo:4:15;X - T2000,2000,2000;S800,0,800 23:54:44.207 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:44.208 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:44.209 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:44.212 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:44.213 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:44.214 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:44.216 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:44.218 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:44.219 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:44.221 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:44.223 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:44.224 : echo:0:15; - T2000,2000,2000;S800,0,800 23:54:44.226 : echo:1:15; - T2000,2000,120;S800,0,551 23:54:44.228 : echo:2:15; -*T2000,2000,1600;S800,0,710 23:54:44.228 : ^1^2 23:54:44.229 : echo:4:15;X - T2000,2000,2000;S800,0,800 23:54:44.231 : echo:5:15; - T2000,2000,2000;S800,0,800 23:54:44.234 : echo:6:15; - T2000,2000,2000;S800,0,800 23:54:44.235 : echo:7:15; - T2000,2000,2000;S800,0,800 23:54:44.237 : echo:8:15; - T2000,2000,2000;S800,0,800 23:54:44.238 : echo:9:15; - T2000,2000,1600;S800,0,710 23:54:44.240 : echo:10:15; /- T1600,2000,2000;S800,90,800 23:54:44.242 : echo:11:15; - T2000,2000,2000;S800,0,800 23:54:44.243 : echo:12:15; - T2000,2000,2000;S800,0,800 23:54:44.246 : echo:13:15; - T2000,2000,2000;S800,0,800 23:54:44.247 : echo:14:15; - T2000,2000,2000;S800,0,800 23:54:44.248 : echo:15:15; - T2000,2000,2000;S800,0,800 23:54:44.251 : echo:0:15; - T2000,2000,2000;S800,0,800 23:54:44.252 : echo:1:15; - T2000,2000,2000;S800,0,800 23:54:44.254 : echo:2:15; - T2000,2000,120;S800,0,551 ```

and even so when the reverse_pass() is really needed (nominal_rate faster than can be reached in one block )

Fast ``` G0 X10 F5000 G0 X20 G0 X30 G0 X40 G0 X50 G0 X60 G0 X70 G0 X80 G0 X90 G0 X80 G0 X70 G0 X60 G0 X50 G0 X40 G0 X30 G0 X20 G0 X10 G0 X0 23:51:51.666 : ^0 23:51:51.667 : R 23:51:51.668 : echo:0:1; / *T1601,6667,1601;S400,200,200 23:51:51.668 : F 23:51:51.669 : echo:0:1; / *T1601,6667,1601;S400,200,200 23:51:51.669 : T 23:51:51.672 : echo:0:1; / *T1601,6667,1601;S400,200,200 23:51:51.672 : ^0,^1 23:51:51.672 : R 23:51:51.673 : echo:0:2; / T1601,6667,120;S400,121,121 23:51:51.676 : echo:1:2; *T2530,6667,1601;S400,81,81 23:51:51.676 : F 23:51:51.677 : echo:0:2; / T1601,6667,120;S400,121,121 23:51:51.678 : echo:1:2; *T2530,6667,1601;S400,81,81 23:51:51.678 : >0-1 23:51:51.678 : T 23:51:51.682 : echo:0:2; / T1601,6667,120;S400,121,121 23:51:51.683 : echo:1:2; *T2530,6667,1601;S400,81,81 23:51:51.683 : ^0^1 23:51:51.684 : echo:0:2; / T1601,6667,2530;S400,320,320 23:51:51.687 : echo:1:2; T2530,6667,120;S400,1,1 23:51:51.687 : ^2 23:51:51.687 : R 23:51:51.688 : echo:0:3;X/ T1601,6667,2530;S400,320,320 23:51:51.689 : echo:1:3; T2530,6667,120;S400,1,1 23:51:51.692 : echo:2:3; *T3578,6667,1601;S800,81,81 23:51:51.692 : F 23:51:51.693 : echo:0:3;X/ T1601,6667,2530;S400,320,320 23:51:51.694 : echo:1:3; T2530,6667,120;S400,1,1 23:51:51.696 : echo:2:3; *T3578,6667,1601;S800,81,81 23:51:51.697 : >0-1>1-2 23:51:51.697 : T 23:51:51.698 : echo:0:3;X/ T1601,6667,2530;S400,320,320 23:51:51.700 : echo:1:3; T2530,6667,120;S400,1,1 23:51:51.701 : echo:2:3; *T3578,6667,1601;S800,81,81 23:51:51.702 : ^1^2 23:51:51.703 : echo:0:3;X/ T1601,6667,2530;S400,320,320 23:51:51.705 : echo:1:3; T2530,6667,3578;S400,400,400 23:51:51.706 : echo:2:3; T3578,6667,120;S800,1,1 23:51:51.707 : ^3 23:51:51.707 : R 23:51:51.708 : echo:0:4;X/ T1601,6667,2530;S400,320,320 23:51:51.710 : echo:1:4; T2530,6667,3578;S400,400,400 23:51:51.711 : echo:2:4; T3578,6667,120;S800,1,1 23:51:51.713 : echo:3:4; *T3578,6667,1601;S800,81,81 23:51:51.713 : <2-3 23:51:51.713 : F 23:51:51.715 : echo:0:4;X/ T1601,6667,2530;S400,320,320 23:51:51.716 : echo:1:4; T2530,6667,3578;S400,400,400 23:51:51.718 : echo:2:4; *T3578,6667,120;S800,1,1 23:51:51.720 : echo:3:4; *T3578,6667,1601;S800,81,81 23:51:51.720 : >0-1>1-2>2-3 23:51:51.720 : T 23:51:51.722 : echo:0:4;X/ T1601,6667,2530;S400,320,320 23:51:51.723 : echo:1:4; T2530,6667,3578;S400,400,400 23:51:51.725 : echo:2:4; *T3578,6667,120;S800,1,1 23:51:51.726 : echo:3:4; *T3578,6667,1601;S800,81,81 23:51:51.727 : ^1^2^3 23:51:51.729 : echo:0:4;X/ T1601,6667,2530;S400,320,320 23:51:51.730 : echo:1:4; T2530,6667,3578;S400,400,400 23:51:51.732 : echo:2:4; T3578,6667,3578;S800,400,400 23:51:51.735 : echo:3:4; T3578,6667,120;S800,1,1 23:51:51.735 : ^4 23:51:51.735 : R 23:51:51.736 : echo:0:5;X/ T1601,6667,2530;S400,320,320 23:51:51.738 : echo:1:5; T2530,6667,3578;S400,400,400 23:51:51.740 : echo:2:5; T3578,6667,3578;S800,400,400 23:51:51.741 : echo:3:5; T3578,6667,120;S800,1,1 23:51:51.742 : echo:4:5; *T3578,6667,1601;S800,81,81 23:51:51.744 : <3-4<2-3 23:51:51.744 : F 23:51:51.745 : echo:0:5;X/ T1601,6667,2530;S400,320,320 23:51:51.746 : echo:1:5; T2530,6667,3578;S400,400,400 23:51:51.749 : echo:2:5; *T3578,6667,3578;S800,400,400 23:51:51.750 : echo:3:5; *T3578,6667,120;S800,1,1 23:51:51.751 : echo:4:5; *T3578,6667,1601;S800,81,81 23:51:51.751 : >0-1>1-2>2-3>3-4 23:51:51.753 : T 23:51:51.754 : echo:0:5;X/ T1601,6667,2530;S400,320,320 23:51:51.755 : echo:1:5; T2530,6667,3578;S400,400,400 23:51:51.756 : echo:2:5; *T3578,6667,3578;S800,400,400 23:51:51.759 : echo:3:5; *T3578,6667,120;S800,1,1 23:51:51.760 : echo:4:5; *T3578,6667,1601;S800,81,81 23:51:51.760 : ^1^2^3^4 23:51:51.762 : echo:0:5;X/ T1601,6667,2530;S400,320,320 23:51:51.764 : echo:1:5; T2530,6667,3578;S400,400,400 23:51:51.765 : echo:2:5; T3578,6667,5060;S800,800,800 23:51:51.767 : echo:3:5; T5060,6667,3578;S800,0,0 23:51:51.768 : echo:4:5; T3578,6667,120;S800,1,1 23:51:51.769 : ^5 23:51:51.769 : R 23:51:51.770 : echo:0:6;X/ T1601,6667,2530;S400,320,320 23:51:51.772 : echo:1:6; T2530,6667,3578;S400,400,400 23:51:51.774 : echo:2:6; T3578,6667,5060;S800,800,800 23:51:51.775 : echo:3:6; T5060,6667,3578;S800,0,0 23:51:51.777 : echo:4:6; T3578,6667,120;S800,1,1 23:51:51.778 : echo:5:6; *T3578,6667,1601;S800,81,81 23:51:51.779 : <4-5<3-4<2-3 23:51:51.779 : F 23:51:51.781 : echo:0:6;X/ T1601,6667,2530;S400,320,320 23:51:51.782 : echo:1:6; T2530,6667,3578;S400,400,400 23:51:51.784 : echo:2:6; *T3578,6667,5060;S800,800,800 23:51:51.786 : echo:3:6; *T5060,6667,3578;S800,0,0 23:51:51.787 : echo:4:6; *T3578,6667,120;S800,1,1 23:51:51.788 : echo:5:6; *T3578,6667,1601;S800,81,81 23:51:51.789 : >0-1>1-2>2-3>3-4>4-5 23:51:51.789 : T 23:51:51.791 : echo:0:6;X/ T1601,6667,2530;S400,320,320 23:51:51.793 : echo:1:6; T2530,6667,3578;S400,400,400 23:51:51.795 : echo:2:6; *T3578,6667,5060;S800,800,800 23:51:51.796 : echo:3:6; *T5060,6667,3578;S800,0,0 23:51:51.797 : echo:4:6; *T3578,6667,120;S800,1,1 23:51:51.798 : echo:5:6; *T3578,6667,1601;S800,81,81 23:51:51.800 : ^1^2^3^4^5 23:51:51.801 : echo:0:6;X/ T1601,6667,2530;S400,320,320 23:51:51.802 : echo:1:6; T2530,6667,3578;S400,400,400 23:51:51.805 : echo:2:6; T3578,6667,5060;S800,800,800 23:51:51.806 : echo:3:6; T5060,6667,5060;S800,400,400 23:51:51.807 : echo:4:6; T5060,6667,3578;S800,0,0 23:51:51.808 : echo:5:6; T3578,6667,120;S800,1,1 23:51:51.810 : ^6 23:51:51.810 : R 23:51:51.811 : echo:0:7;X/ T1601,6667,2530;S400,320,320 23:51:51.812 : echo:1:7; T2530,6667,3578;S400,400,400 23:51:51.816 : echo:2:7; T3578,6667,5060;S800,800,800 23:51:51.817 : echo:3:7; T5060,6667,5060;S800,400,400 23:51:51.818 : echo:4:7; T5060,6667,3578;S800,0,0 23:51:51.819 : echo:5:7; T3578,6667,120;S800,1,1 23:51:51.822 : echo:6:7; *T3578,6667,1601;S800,81,81 23:51:51.822 : <5-6<4-5<3-4<2-3 23:51:51.822 : F 23:51:51.823 : echo:0:7;X/ T1601,6667,2530;S400,320,320 23:51:51.826 : echo:1:7; T2530,6667,3578;S400,400,400 23:51:51.827 : echo:2:7; *T3578,6667,5060;S800,800,800 23:51:51.828 : echo:3:7; *T5060,6667,5060;S800,400,400 23:51:51.831 : echo:4:7; *T5060,6667,3578;S800,0,0 23:51:51.832 : echo:5:7; *T3578,6667,120;S800,1,1 23:51:51.833 : echo:6:7; *T3578,6667,1601;S800,81,81 23:51:51.835 : >0-1>1-2>2-3>3-4>4-5>5-6 23:51:51.835 : T 23:51:51.836 : echo:0:7;X/ T1601,6667,2530;S400,320,320 23:51:51.837 : echo:1:7; T2530,6667,3578;S400,400,400 23:51:51.840 : echo:2:7; *T3578,6667,5060;S800,800,800 23:51:51.841 : echo:3:7; *T5060,6667,5060;S800,400,400 23:51:51.842 : echo:4:7; *T5060,6667,3578;S800,0,0 23:51:51.844 : echo:5:7; *T3578,6667,120;S800,1,1 23:51:51.846 : echo:6:7; *T3578,6667,1601;S800,81,81 23:51:51.846 : ^1^2^3^4^5^6 23:51:51.847 : echo:0:7;X/ T1601,6667,2530;S400,320,320 23:51:51.850 : echo:1:7; T2530,6667,3578;S400,400,400 23:51:51.851 : echo:2:7; T3578,6667,5060;S800,800,800 23:51:51.852 : echo:3:7; T5060,6667,6198;S800,800,800 23:51:51.854 : echo:4:7; T6198,6667,5060;S800,0,0 23:51:51.856 : echo:5:7; T5060,6667,3578;S800,0,0 23:51:51.857 : echo:6:7; T3578,6667,120;S800,1,1 23:51:51.859 : ^7 23:51:51.859 : R 23:51:51.860 : echo:0:8;X/ T1601,6667,2530;S400,320,320 23:51:51.861 : echo:1:8; T2530,6667,3578;S400,400,400 23:51:51.864 : echo:2:7; T3578,6667,5060;S800,800,800 23:51:51.865 : echo:3:7; T5060,6667,6198;S800,800,800 23:51:51.866 : echo:4:7; T6198,6667,5060;S800,0,0 23:51:51.868 : echo:5:7; T5060,6667,3578;S800,0,0 23:51:51.869 : echo:6:7; T3578,6667,120;S800,1,1 23:51:51.872 : echo:7:7; *T3578,6667,1601;S800,81,81 23:51:51.872 : <6-7<5-6<4-5<3-4 23:51:51.872 : F 23:51:51.874 : echo:1:7;X T2530,6667,3578;S400,400,400 23:51:51.876 : echo:2:7; T3578,6667,5060;S800,800,800 23:51:51.877 : echo:3:7; *T5060,6667,6198;S800,800,800 23:51:51.878 : echo:4:7; *T6198,6667,5060;S800,0,0 23:51:51.881 : echo:5:7; *T5060,6667,3578;S800,0,0 23:51:51.882 : echo:6:7; *T3578,6667,120;S800,1,1 23:51:51.883 : echo:7:7; *T3578,6667,1601;S800,81,81 23:51:51.884 : >1-2>2-3>3-4>4-5>5-6>6-7 23:51:51.884 : T 23:51:51.886 : echo:1:7;X T2530,6667,3578;S400,400,400 23:51:51.889 : echo:2:7; T3578,6667,5060;S800,800,800 23:51:51.890 : echo:3:7; *T5060,6667,6198;S800,800,800 23:51:51.892 : echo:4:7; *T6198,6667,5060;S800,0,0 23:51:51.893 : echo:5:7; *T5060,6667,3578;S800,0,0 23:51:51.894 : echo:6:7; *T3578,6667,120;S800,1,1 23:51:51.897 : echo:7:7; *T3578,6667,1601;S800,81,81 23:51:51.897 : ^2^3^4^5^6^7 23:51:51.898 : echo:1:7;X T2530,6667,3578;S400,400,400 23:51:51.900 : echo:2:7; T3578,6667,5060;S800,800,800 23:51:51.902 : echo:3:7; T5060,6667,6198;S800,800,800 23:51:51.903 : echo:4:7; T6198,6667,6198;S800,378,423 23:51:51.904 : echo:5:7; T6198,6667,5060;S800,0,0 23:51:51.907 : echo:6:7; T5060,6667,3578;S800,0,0 23:51:51.908 : echo:7:7; T3578,6667,120;S800,1,1 23:51:51.908 : ^8 23:51:51.908 : R 23:51:51.909 : echo:1:8;X T2530,6667,3578;S400,400,400 23:51:51.912 : echo:2:8; T3578,6667,5060;S800,800,800 23:51:51.913 : echo:3:8; T5060,6667,6198;S800,800,800 23:51:51.915 : echo:4:8; T6198,6667,6198;S800,378,423 23:51:51.916 : echo:5:8; T6198,6667,5060;S800,0,0 23:51:51.918 : echo:6:8; T5060,6667,3578;S800,0,0 23:51:51.920 : echo:7:8; T3578,6667,120;S800,1,1 23:51:51.921 : echo:8:8; *T3578,6667,1601;S800,81,81 23:51:51.922 : <7-8<6-7<5-6<4-5<3-4 23:51:51.922 : F 23:51:51.923 : echo:1:8;X T2530,6667,3578;S400,400,400 23:51:51.925 : echo:2:8; T3578,6667,5060;S800,800,800 23:51:51.927 : echo:3:8; *T5060,6667,6198;S800,800,800 23:51:51.929 : echo:4:8; *T6198,6667,6198;S800,378,423 23:51:51.930 : echo:5:8; *T6198,6667,5060;S800,0,0 23:51:51.931 : echo:6:8; *T5060,6667,3578;S800,0,0 23:51:51.933 : echo:7:8; *T3578,6667,120;S800,1,1 23:51:51.935 : echo:8:8; *T3578,6667,1601;S800,81,81 23:51:51.936 : >1-2>2-3>3-4>4-5>5-6>6-7>7-8 23:51:51.936 : T 23:51:51.937 : echo:1:8;X T2530,6667,3578;S400,400,400 23:51:51.939 : echo:2:8; T3578,6667,5060;S800,800,800 23:51:51.941 : echo:3:8; *T5060,6667,6198;S800,800,800 23:51:51.942 : echo:4:8; *T6198,6667,6198;S800,378,423 23:51:51.944 : echo:5:8; *T6198,6667,5060;S800,0,0 23:51:51.945 : echo:6:8; *T5060,6667,3578;S800,0,0 23:51:51.948 : echo:7:8; *T3578,6667,120;S800,1,1 23:51:51.950 : echo:8:8; *T3578,6667,1601;S800,81,81 23:51:51.950 : ^2^3^4^5^6^7^8 23:51:51.952 : echo:1:8;X T2530,6667,3578;S400,400,400 23:51:51.953 : echo:2:8; T3578,6667,5060;S800,800,800 23:51:51.955 : echo:3:8; T5060,6667,6198;S800,800,800 23:51:51.957 : echo:4:8; T6198,6667,6667;S800,378,800 23:51:51.959 : echo:5:8; T6667,6667,6198;S800,0,423 23:51:51.960 : echo:6:8; T6198,6667,5060;S800,0,0 23:51:51.961 : echo:7:8; T5060,6667,3578;S800,0,0 23:51:51.962 : echo:8:8; T3578,6667,120;S800,1,1 23:51:51.964 : ^9 23:51:51.964 : R 23:51:51.965 : echo:1:9;X T2530,6667,3578;S400,400,400 23:51:51.966 : echo:2:9; T3578,6667,5060;S800,800,800 23:51:51.969 : echo:3:9; T5060,6667,6198;S800,800,800 23:51:51.970 : echo:4:9; T6198,6667,6667;S800,378,800 23:51:51.971 : echo:5:9; T6667,6667,6198;S800,0,423 23:51:51.972 : echo:6:9; T6198,6667,5060;S800,0,0 23:51:51.974 : echo:7:9; T5060,6667,3578;S800,0,0 23:51:51.976 : echo:8:9; T3578,6667,120;S800,1,1 23:51:51.978 : echo:9:9; *T3578,6667,1601;S800,81,81 23:51:51.979 : <8-9<7-8<6-7<5-6<4-5<3-4 23:51:51.979 : F 23:51:51.980 : echo:1:9;X T2530,6667,3578;S400,400,400 23:51:51.981 : echo:2:9; T3578,6667,5060;S800,800,800 23:51:51.984 : echo:3:9; *T5060,6667,6198;S800,800,800 23:51:51.985 : echo:4:9; *T6198,6667,6667;S800,378,800 23:51:51.986 : echo:5:9; T6667,6667,6198;S800,0,423 23:51:51.988 : echo:6:9; *T6198,6667,5060;S800,0,0 23:51:51.990 : echo:7:9; *T5060,6667,3578;S800,0,0 23:51:51.992 : echo:8:9; *T3578,6667,120;S800,1,1 23:51:51.993 : echo:9:9; *T3578,6667,1601;S800,81,81 23:51:51.994 : >1-2>2-3>3-4>4-5>5-6>6-7>7-8>8-9 23:51:51.994 : T 23:51:51.995 : echo:2:8;X T3578,6667,5060;S800,800,800 23:51:51.998 : echo:3:8; *T5060,6667,6198;S800,800,800 23:51:51.999 : echo:4:8; *T6198,6667,6667;S800,378,800 23:51:52.000 : echo:5:8; T6667,6667,6198;S800,0,423 23:51:52.002 : echo:6:8; *T6198,6667,5060;S800,0,0 23:51:52.004 : echo:7:8; *T5060,6667,3578;S800,0,0 23:51:52.006 : echo:8:8; *T3578,6667,120;S800,1,1 23:51:52.007 : echo:9:8; *T3578,6667,1601;S800,81,81 23:51:52.009 : ^2^3^4^5^6^7^8^9 23:51:52.011 : echo:2:8;X T3578,6667,5060;S800,800,800 23:51:52.012 : echo:3:8; T5060,6667,6198;S800,800,800 23:51:52.014 : echo:4:8; T6198,6667,6667;S800,378,800 23:51:52.016 : echo:5:8; T6667,6667,6667;S800,0,800 23:51:52.018 : echo:6:8; T6667,6667,6198;S800,0,423 23:51:52.019 : echo:7:8; T6198,6667,5060;S800,0,0 23:51:52.020 : echo:8:8; T5060,6667,3578;S800,0,0 23:51:52.023 : echo:9:8; T3578,6667,120;S800,1,1 23:51:52.024 : ^10 23:51:52.025 : R 23:51:52.026 : echo:2:9;X T3578,6667,5060;S800,800,800 23:51:52.027 : echo:3:9; T5060,6667,6198;S800,800,800 23:51:52.030 : echo:4:9; T6198,6667,6667;S800,378,800 23:51:52.031 : echo:5:9; T6667,6667,6667;S800,0,800 23:51:52.032 : echo:6:9; T6667,6667,6198;S800,0,423 23:51:52.034 : echo:7:9; T6198,6667,5060;S800,0,0 23:51:52.035 : echo:8:9; T5060,6667,3578;S800,0,0 23:51:52.037 : echo:9:9; T3578,6667,120;S800,1,1 23:51:52.039 : echo:10:9; / *T1601,6667,1601;S800,400,400 23:51:52.039 : F 23:51:52.040 : echo:2:9;X T3578,6667,5060;S800,800,800 23:51:52.042 : echo:3:9; T5060,6667,6198;S800,800,800 23:51:52.044 : echo:4:9; T6198,6667,6667;S800,378,800 23:51:52.045 : echo:5:9; T6667,6667,6667;S800,0,800 23:51:52.047 : echo:6:9; T6667,6667,6198;S800,0,423 23:51:52.049 : echo:7:9; T6198,6667,5060;S800,0,0 23:51:52.050 : echo:8:9; T5060,6667,3578;S800,0,0 23:51:52.051 : echo:9:9; T3578,6667,120;S800,1,1 23:51:52.053 : echo:10:9; / *T1601,6667,1601;S800,400,400 23:51:52.054 : >2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10 23:51:52.055 : T 23:51:52.056 : echo:2:9;X T3578,6667,5060;S800,800,800 23:51:52.058 : echo:3:9; T5060,6667,6198;S800,800,800 23:51:52.059 : echo:4:9; T6198,6667,6667;S800,378,800 23:51:52.061 : echo:5:9; T6667,6667,6667;S800,0,800 23:51:52.063 : echo:6:9; T6667,6667,6198;S800,0,423 23:51:52.064 : echo:7:9; T6198,6667,5060;S800,0,0 23:51:52.065 : echo:8:9; T5060,6667,3578;S800,0,0 23:51:52.066 : echo:9:9; T3578,6667,120;S800,1,1 23:51:52.069 : echo:10:9; / *T1601,6667,1601;S800,400,400 23:51:52.069 : ^9^10 23:51:52.070 : echo:2:9;X T3578,6667,5060;S800,800,800 23:51:52.073 : echo:3:9; T5060,6667,6198;S800,800,800 23:51:52.074 : echo:4:9; T6198,6667,6667;S800,378,800 23:51:52.075 : echo:5:9; T6667,6667,6667;S800,0,800 23:51:52.077 : echo:6:9; T6667,6667,6198;S800,0,423 23:51:52.079 : echo:7:9; T6198,6667,5060;S800,0,0 23:51:52.080 : echo:8:9; T5060,6667,3578;S800,0,0 23:51:52.082 : echo:9:9; T3578,6667,1601;S800,81,81 23:51:52.083 : echo:10:9; / T1601,6667,120;S800,321,321 23:51:52.086 : ^11 23:51:52.086 : R 23:51:52.087 : echo:2:10;X T3578,6667,5060;S800,800,800 23:51:52.088 : echo:3:10; T5060,6667,6198;S800,800,800 23:51:52.092 : echo:4:10; T6198,6667,6667;S800,378,800 23:51:52.093 : echo:5:10; T6667,6667,6667;S800,0,800 23:51:52.094 : echo:6:10; T6667,6667,6198;S800,0,423 23:51:52.096 : echo:7:10; T6198,6667,5060;S800,0,0 23:51:52.098 : echo:8:10; T5060,6667,3578;S800,0,0 23:51:52.099 : echo:9:10; T3578,6667,1601;S800,81,81 23:51:52.101 : echo:10:10; / T1601,6667,120;S800,321,321 23:51:52.103 : echo:11:10; *T3578,6667,1601;S800,81,81 23:51:52.103 : <10-11 23:51:52.103 : F 23:51:52.105 : echo:2:10;X T3578,6667,5060;S800,800,800 23:51:52.107 : echo:3:10; T5060,6667,6198;S800,800,800 23:51:52.108 : echo:4:10; T6198,6667,6667;S800,378,800 23:51:52.110 : echo:5:10; T6667,6667,6667;S800,0,800 23:51:52.112 : echo:6:10; T6667,6667,6198;S800,0,423 23:51:52.113 : echo:7:10; T6198,6667,5060;S800,0,0 23:51:52.115 : echo:8:10; T5060,6667,3578;S800,0,0 23:51:52.116 : echo:9:10; T3578,6667,1601;S800,81,81 23:51:52.119 : echo:10:10; / T1601,6667,120;S800,321,321 23:51:52.120 : echo:11:10; *T3578,6667,1601;S800,81,81 23:51:52.121 : >2-3>3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11 23:51:52.122 : T 23:51:52.124 : echo:2:10;X T3578,6667,5060;S800,800,800 23:51:52.125 : echo:3:10; T5060,6667,6198;S800,800,800 23:51:52.127 : echo:4:10; T6198,6667,6667;S800,378,800 23:51:52.129 : echo:5:10; T6667,6667,6667;S800,0,800 23:51:52.131 : echo:6:10; T6667,6667,6198;S800,0,423 23:51:52.132 : echo:7:10; T6198,6667,5060;S800,0,0 23:51:52.133 : echo:8:10; T5060,6667,3578;S800,0,0 23:51:52.136 : echo:9:10; T3578,6667,1601;S800,81,81 23:51:52.137 : echo:10:10; / T1601,6667,120;S800,321,321 23:51:52.139 : echo:11:10; *T3578,6667,1601;S800,81,81 23:51:52.139 : ^10^11 23:51:52.142 : echo:2:10;X T3578,6667,5060;S800,800,800 23:51:52.143 : echo:3:10; T5060,6667,6198;S800,800,800 23:51:52.145 : echo:4:10; T6198,6667,6667;S800,378,800 23:51:52.147 : echo:5:10; T6667,6667,6667;S800,0,800 23:51:52.148 : echo:6:10; T6667,6667,6198;S800,0,423 23:51:52.150 : echo:7:10; T6198,6667,5060;S800,0,0 23:51:52.151 : echo:8:10; T5060,6667,3578;S800,0,0 23:51:52.153 : echo:9:10; T3578,6667,1601;S800,81,81 23:51:52.155 : echo:10:10; / T1601,6667,3578;S800,720,720 23:51:52.156 : echo:11:10; T3578,6667,120;S800,1,1 23:51:52.160 : ^12 23:51:52.160 : R 23:51:52.161 : echo:2:11;X T3578,6667,5060;S800,800,800 23:51:52.163 : echo:3:11; T5060,6667,6198;S800,800,800 23:51:52.165 : echo:4:11; T6198,6667,6667;S800,378,800 23:51:52.167 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.168 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.170 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.172 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.173 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.175 : echo:10:11; / T1601,6667,3578;S800,720,720 23:51:52.177 : echo:11:11; T3578,6667,120;S800,1,1 23:51:52.179 : echo:12:11; *T3578,6667,1601;S800,81,81 23:51:52.179 : <11-12<10-11 23:51:52.179 : F 23:51:52.182 : echo:3:10;X T5060,6667,6198;S800,800,800 23:51:52.183 : echo:4:10; T6198,6667,6667;S800,378,800 23:51:52.184 : echo:5:10; T6667,6667,6667;S800,0,800 23:51:52.187 : echo:6:10; T6667,6667,6198;S800,0,423 23:51:52.188 : echo:7:10; T6198,6667,5060;S800,0,0 23:51:52.189 : echo:8:10; T5060,6667,3578;S800,0,0 23:51:52.191 : echo:9:10; T3578,6667,1601;S800,81,81 23:51:52.193 : echo:10:10; / T1601,6667,3578;S800,720,720 23:51:52.195 : echo:11:10; *T3578,6667,120;S800,1,1 23:51:52.196 : echo:12:10; *T3578,6667,1601;S800,81,81 23:51:52.199 : >3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12 23:51:52.199 : T 23:51:52.201 : echo:3:10;X T5060,6667,6198;S800,800,800 23:51:52.202 : echo:4:10; T6198,6667,6667;S800,378,800 23:51:52.205 : echo:5:10; T6667,6667,6667;S800,0,800 23:51:52.206 : echo:6:10; T6667,6667,6198;S800,0,423 23:51:52.207 : echo:7:10; T6198,6667,5060;S800,0,0 23:51:52.209 : echo:8:10; T5060,6667,3578;S800,0,0 23:51:52.211 : echo:9:10; T3578,6667,1601;S800,81,81 23:51:52.213 : echo:10:10; / T1601,6667,3578;S800,720,720 23:51:52.215 : echo:11:10; *T3578,6667,120;S800,1,1 23:51:52.216 : echo:12:10; *T3578,6667,1601;S800,81,81 23:51:52.219 : ^10^11^12 23:51:52.220 : echo:3:10;X T5060,6667,6198;S800,800,800 23:51:52.222 : echo:4:10; T6198,6667,6667;S800,378,800 23:51:52.225 : echo:5:10; T6667,6667,6667;S800,0,800 23:51:52.226 : echo:6:10; T6667,6667,6198;S800,0,423 23:51:52.227 : echo:7:10; T6198,6667,5060;S800,0,0 23:51:52.229 : echo:8:10; T5060,6667,3578;S800,0,0 23:51:52.231 : echo:9:10; T3578,6667,1601;S800,81,81 23:51:52.233 : echo:10:10; / T1601,6667,3920;S800,800,800 23:51:52.235 : echo:11:10; T3920,6667,3578;S800,320,320 23:51:52.237 : echo:12:10; T3578,6667,120;S800,1,1 23:51:52.240 : ^13 23:51:52.240 : R 23:51:52.241 : echo:3:11;X T5060,6667,6198;S800,800,800 23:51:52.242 : echo:4:11; T6198,6667,6667;S800,378,800 23:51:52.245 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.246 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.248 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.249 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.252 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.253 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.254 : echo:11:11; T3920,6667,3578;S800,320,320 23:51:52.257 : echo:12:11; T3578,6667,120;S800,1,1 23:51:52.259 : echo:13:11; *T3578,6667,1601;S800,81,81 23:51:52.260 : <12-13<11-12<10-11 23:51:52.260 : F 23:51:52.261 : echo:3:11;X T5060,6667,6198;S800,800,800 23:51:52.263 : echo:4:11; T6198,6667,6667;S800,378,800 23:51:52.266 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.267 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.268 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.269 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.272 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.274 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.275 : echo:11:11; *T3920,6667,3578;S800,320,320 23:51:52.278 : echo:12:11; *T3578,6667,120;S800,1,1 23:51:52.279 : echo:13:11; *T3578,6667,1601;S800,81,81 23:51:52.282 : >3-4>4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13 23:51:52.282 : T 23:51:52.285 : echo:3:11;X T5060,6667,6198;S800,800,800 23:51:52.286 : echo:4:11; T6198,6667,6667;S800,378,800 23:51:52.288 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.290 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.292 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.293 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.294 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.297 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.299 : echo:11:11; *T3920,6667,3578;S800,320,320 23:51:52.300 : echo:12:11; *T3578,6667,120;S800,1,1 23:51:52.305 : echo:13:11; *T3578,6667,1601;S800,81,81 23:51:52.305 : ^10^11^12^13 23:51:52.307 : echo:3:11;X T5060,6667,6198;S800,800,800 23:51:52.310 : echo:4:11; T6198,6667,6667;S800,378,800 23:51:52.311 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.313 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.315 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.317 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.318 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.319 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.322 : echo:11:11; T3920,6667,5060;S800,720,720 23:51:52.324 : echo:12:11; T5060,6667,3578;S800,0,0 23:51:52.326 : echo:13:10; T3578,6667,120;S800,1,1 23:51:52.329 : ^14 23:51:52.329 : R 23:51:52.330 : echo:4:11;X T6198,6667,6667;S800,378,800 23:51:52.332 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.334 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.336 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.337 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.338 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.341 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.343 : echo:11:11; T3920,6667,5060;S800,720,720 23:51:52.344 : echo:12:11; T5060,6667,3578;S800,0,0 23:51:52.347 : echo:13:11; T3578,6667,120;S800,1,1 23:51:52.349 : echo:14:11; *T3578,6667,1601;S800,81,81 23:51:52.350 : <13-14<12-13<11-12<10-11 23:51:52.350 : F 23:51:52.353 : echo:4:11;X T6198,6667,6667;S800,378,800 23:51:52.354 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.357 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.358 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.360 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.361 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.364 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.365 : echo:11:11; *T3920,6667,5060;S800,720,720 23:51:52.367 : echo:12:11; *T5060,6667,3578;S800,0,0 23:51:52.370 : echo:13:11; *T3578,6667,120;S800,1,1 23:51:52.371 : echo:14:11; *T3578,6667,1601;S800,81,81 23:51:52.373 : >4-5>5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14 23:51:52.373 : T 23:51:52.376 : echo:4:11;X T6198,6667,6667;S800,378,800 23:51:52.378 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.379 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.382 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.383 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.384 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.386 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.388 : echo:11:11; *T3920,6667,5060;S800,720,720 23:51:52.390 : echo:12:11; *T5060,6667,3578;S800,0,0 23:51:52.391 : echo:13:11; *T3578,6667,120;S800,1,1 23:51:52.397 : echo:14:11; *T3578,6667,1601;S800,81,81 23:51:52.397 : ^10^11^12^13^14 23:51:52.398 : echo:4:11;X T6198,6667,6667;S800,378,800 23:51:52.401 : echo:5:11; T6667,6667,6667;S800,0,800 23:51:52.402 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.404 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.405 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.407 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.409 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.410 : echo:11:11; T3920,6667,5307;S800,800,800 23:51:52.413 : echo:12:11; T5307,6667,5060;S800,320,320 23:51:52.414 : echo:13:11; T5060,6667,3578;S800,0,0 23:51:52.417 : echo:14:11; T3578,6667,120;S800,1,1 23:51:52.419 : ^15 23:51:52.419 : R 23:51:52.421 : echo:4:12;X T6198,6667,6667;S800,378,800 23:51:52.422 : echo:5:12; T6667,6667,6667;S800,0,800 23:51:52.425 : echo:6:12; T6667,6667,6198;S800,0,423 23:51:52.426 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.427 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.429 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.432 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.434 : echo:11:12; T3920,6667,5307;S800,800,800 23:51:52.435 : echo:12:12; T5307,6667,5060;S800,320,320 23:51:52.438 : echo:13:12; T5060,6667,3578;S800,0,0 23:51:52.439 : echo:14:12; T3578,6667,120;S800,1,1 23:51:52.440 : echo:15:12; *T3578,6667,1601;S800,81,81 23:51:52.442 : <14-15<13-14<12-13<11-12<10-11 23:51:52.442 : F 23:51:52.445 : echo:4:12;X T6198,6667,6667;S800,378,800 23:51:52.446 : echo:5:12; T6667,6667,6667;S800,0,800 23:51:52.447 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.449 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.451 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.453 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.454 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.457 : echo:11:11; *T3920,6667,5307;S800,800,800 23:51:52.458 : echo:12:11; *T5307,6667,5060;S800,320,320 23:51:52.460 : echo:13:11; *T5060,6667,3578;S800,0,0 23:51:52.461 : echo:14:11; *T3578,6667,120;S800,1,1 23:51:52.464 : echo:15:11; *T3578,6667,1601;S800,81,81 23:51:52.466 : >5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15 23:51:52.466 : T 23:51:52.468 : echo:5:11;X T6667,6667,6667;S800,0,800 23:51:52.470 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.471 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.472 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.475 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.476 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.477 : echo:11:11; *T3920,6667,5307;S800,800,800 23:51:52.480 : echo:12:11; *T5307,6667,5060;S800,320,320 23:51:52.481 : echo:13:11; *T5060,6667,3578;S800,0,0 23:51:52.483 : echo:14:11; *T3578,6667,120;S800,1,1 23:51:52.489 : echo:15:11; *T3578,6667,1601;S800,81,81 23:51:52.489 : ^10^11^12^13^14^15 23:51:52.493 : echo:5:11;X T6667,6667,6667;S800,0,800 23:51:52.494 : echo:6:11; T6667,6667,6198;S800,0,423 23:51:52.495 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.496 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.499 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.500 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.502 : echo:11:11; T3920,6667,5307;S800,800,800 23:51:52.505 : echo:12:11; T5307,6667,6198;S800,721,721 23:51:52.506 : echo:13:11; T6198,6667,5060;S800,0,0 23:51:52.507 : echo:14:11; T5060,6667,3578;S800,0,0 23:51:52.510 : echo:15:11; T3578,6667,120;S800,1,1 23:51:52.512 : ^0 23:51:52.512 : R 23:51:52.514 : echo:5:12;X T6667,6667,6667;S800,0,800 23:51:52.515 : echo:6:12; T6667,6667,6198;S800,0,423 23:51:52.516 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.519 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.520 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.521 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.524 : echo:11:12; T3920,6667,5307;S800,800,800 23:51:52.526 : echo:12:12; T5307,6667,6198;S800,721,721 23:51:52.527 : echo:13:12; T6198,6667,5060;S800,0,0 23:51:52.530 : echo:14:12; T5060,6667,3578;S800,0,0 23:51:52.531 : echo:15:12; T3578,6667,120;S800,1,1 23:51:52.532 : echo:0:12; *T3578,6667,1601;S800,81,81 23:51:52.534 : <15-0<14-15<13-14<12-13<11-12<10-11 23:51:52.534 : F 23:51:52.537 : echo:5:12;X T6667,6667,6667;S800,0,800 23:51:52.538 : echo:6:12; T6667,6667,6198;S800,0,423 23:51:52.539 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.541 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.543 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.544 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.546 : echo:11:12; *T3920,6667,5307;S800,800,800 23:51:52.549 : echo:12:12; *T5307,6667,6198;S800,721,721 23:51:52.550 : echo:13:12; *T6198,6667,5060;S800,0,0 23:51:52.551 : echo:14:12; *T5060,6667,3578;S800,0,0 23:51:52.552 : echo:15:12; *T3578,6667,120;S800,1,1 23:51:52.555 : echo:0:12; *T3578,6667,1601;S800,81,81 23:51:52.557 : >5-6>6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15>15-0 23:51:52.557 : T 23:51:52.560 : echo:5:12;X T6667,6667,6667;S800,0,800 23:51:52.561 : echo:6:12; T6667,6667,6198;S800,0,423 23:51:52.562 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.564 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.567 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.569 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.571 : echo:11:11; *T3920,6667,5307;S800,800,800 23:51:52.573 : echo:12:11; *T5307,6667,6198;S800,721,721 23:51:52.574 : echo:13:11; *T6198,6667,5060;S800,0,0 23:51:52.575 : echo:14:11; *T5060,6667,3578;S800,0,0 23:51:52.578 : echo:15:11; *T3578,6667,120;S800,1,1 23:51:52.583 : echo:0:11; *T3578,6667,1601;S800,81,81 23:51:52.585 : ^10^11^12^13^14^15^0 23:51:52.586 : echo:6:11;X T6667,6667,6198;S800,0,423 23:51:52.587 : echo:7:11; T6198,6667,5060;S800,0,0 23:51:52.588 : echo:8:11; T5060,6667,3578;S800,0,0 23:51:52.591 : echo:9:11; T3578,6667,1601;S800,81,81 23:51:52.592 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.594 : echo:11:11; T3920,6667,5307;S800,800,800 23:51:52.597 : echo:12:11; T5307,6667,6401;S800,800,800 23:51:52.598 : echo:13:11; T6401,6667,6198;S800,218,423 23:51:52.599 : echo:14:11; T6198,6667,5060;S800,0,0 23:51:52.602 : echo:15:11; T5060,6667,3578;S800,0,0 23:51:52.603 : echo:0:11; T3578,6667,120;S800,1,1 23:51:52.606 : ^1 23:51:52.606 : R 23:51:52.607 : echo:6:12;X T6667,6667,6198;S800,0,423 23:51:52.608 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.610 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.612 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.614 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.615 : echo:11:12; T3920,6667,5307;S800,800,800 23:51:52.618 : echo:12:12; T5307,6667,6401;S800,800,800 23:51:52.619 : echo:13:12; T6401,6667,6198;S800,218,423 23:51:52.621 : echo:14:12; T6198,6667,5060;S800,0,0 23:51:52.623 : echo:15:12; T5060,6667,3578;S800,0,0 23:51:52.624 : echo:0:12; T3578,6667,120;S800,1,1 23:51:52.626 : echo:1:12; *T3578,6667,1601;S800,81,81 23:51:52.628 : <0-1<15-0<14-15<13-14<12-13<11-12<10-11 23:51:52.628 : F 23:51:52.630 : echo:6:12;X T6667,6667,6198;S800,0,423 23:51:52.632 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.633 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.635 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.638 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.640 : echo:11:12; *T3920,6667,5307;S800,800,800 23:51:52.643 : echo:12:12; *T5307,6667,6401;S800,800,800 23:51:52.645 : echo:13:12; *T6401,6667,6198;S800,218,423 23:51:52.646 : echo:14:12; *T6198,6667,5060;S800,0,0 23:51:52.648 : echo:15:12; *T5060,6667,3578;S800,0,0 23:51:52.650 : echo:0:12; *T3578,6667,120;S800,1,1 23:51:52.652 : echo:1:12; *T3578,6667,1601;S800,81,81 23:51:52.655 : >6-7>7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15>15-0>0-1 23:51:52.656 : T 23:51:52.657 : echo:6:12;X T6667,6667,6198;S800,0,423 23:51:52.658 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.660 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.663 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.664 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.666 : echo:11:12; *T3920,6667,5307;S800,800,800 23:51:52.669 : echo:12:12; *T5307,6667,6401;S800,800,800 23:51:52.670 : echo:13:12; *T6401,6667,6198;S800,218,423 23:51:52.672 : echo:14:12; *T6198,6667,5060;S800,0,0 23:51:52.674 : echo:15:12; *T5060,6667,3578;S800,0,0 23:51:52.675 : echo:0:12; *T3578,6667,120;S800,1,1 23:51:52.679 : echo:1:12; *T3578,6667,1601;S800,81,81 23:51:52.683 : ^10^11^12^13^14^15^0^1 23:51:52.685 : echo:6:12;X T6667,6667,6198;S800,0,423 23:51:52.686 : echo:7:12; T6198,6667,5060;S800,0,0 23:51:52.689 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.690 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.692 : echo:10:11; / T1601,6667,3920;S800,800,800 23:51:52.695 : echo:11:11; T3920,6667,5307;S800,800,800 23:51:52.696 : echo:12:11; T5307,6667,6401;S800,800,800 23:51:52.698 : echo:13:11; T6401,6667,6667;S800,218,800 23:51:52.700 : echo:14:11; T6667,6667,6198;S800,0,423 23:51:52.702 : echo:15:11; T6198,6667,5060;S800,0,0 23:51:52.703 : echo:0:11; T5060,6667,3578;S800,0,0 23:51:52.704 : echo:1:11; T3578,6667,120;S800,1,1 23:51:52.708 : ^2 23:51:52.708 : R 23:51:52.710 : echo:7:12;X T6198,6667,5060;S800,0,0 23:51:52.711 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.712 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.716 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.718 : echo:11:12; T3920,6667,5307;S800,800,800 23:51:52.719 : echo:12:12; T5307,6667,6401;S800,800,800 23:51:52.722 : echo:13:12; T6401,6667,6667;S800,218,800 23:51:52.723 : echo:14:12; T6667,6667,6198;S800,0,423 23:51:52.725 : echo:15:12; T6198,6667,5060;S800,0,0 23:51:52.727 : echo:0:12; T5060,6667,3578;S800,0,0 23:51:52.729 : echo:1:12; T3578,6667,120;S800,1,1 23:51:52.730 : echo:2:12; *T3578,6667,1601;S800,81,81 23:51:52.732 : <1-2<0-1<15-0<14-15<13-14<12-13<11-12<10-11 23:51:52.734 : F 23:51:52.735 : echo:7:12;X T6198,6667,5060;S800,0,0 23:51:52.736 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.737 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.740 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.742 : echo:11:12; *T3920,6667,5307;S800,800,800 23:51:52.743 : echo:12:12; *T5307,6667,6401;S800,800,800 23:51:52.746 : echo:13:12; *T6401,6667,6667;S800,218,800 23:51:52.747 : echo:14:12; T6667,6667,6198;S800,0,423 23:51:52.749 : echo:15:12; *T6198,6667,5060;S800,0,0 23:51:52.751 : echo:0:12; *T5060,6667,3578;S800,0,0 23:51:52.753 : echo:1:12; *T3578,6667,120;S800,1,1 23:51:52.754 : echo:2:12; *T3578,6667,1601;S800,81,81 23:51:52.758 : >7-8>8-9>9-10>10-11>11-12>12-13>13-14>14-15>15-0>0-1>1-2 23:51:52.758 : T 23:51:52.759 : echo:7:12;X T6198,6667,5060;S800,0,0 23:51:52.760 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.763 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.764 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.766 : echo:11:12; *T3920,6667,5307;S800,800,800 23:51:52.769 : echo:12:12; *T5307,6667,6401;S800,800,800 23:51:52.770 : echo:13:12; *T6401,6667,6667;S800,218,800 23:51:52.771 : echo:14:12; T6667,6667,6198;S800,0,423 23:51:52.774 : echo:15:12; *T6198,6667,5060;S800,0,0 23:51:52.775 : echo:0:12; *T5060,6667,3578;S800,0,0 23:51:52.776 : echo:1:12; *T3578,6667,120;S800,1,1 23:51:52.779 : echo:2:12; *T3578,6667,1601;S800,81,81 23:51:52.785 : ^10^11^12^13^14^15^0^1^2 23:51:52.786 : echo:7:12;X T6198,6667,5060;S800,0,0 23:51:52.789 : echo:8:12; T5060,6667,3578;S800,0,0 23:51:52.790 : echo:9:12; T3578,6667,1601;S800,81,81 23:51:52.791 : echo:10:12; / T1601,6667,3920;S800,800,800 23:51:52.794 : echo:11:12; T3920,6667,5307;S800,800,800 23:51:52.796 : echo:12:12; T5307,6667,6401;S800,800,800 23:51:52.797 : echo:13:12; T6401,6667,6667;S800,218,800 23:51:52.800 : echo:14:12; T6667,6667,6667;S800,0,800 23:51:52.801 : echo:15:12; T6667,6667,6198;S800,0,423 23:51:52.802 : echo:0:12; T6198,6667,5060;S800,0,0 23:51:52.804 : echo:1:12; T5060,6667,3578;S800,0,0 23:51:52.807 : echo:2:12; T3578,6667,120;S800,1,1 ```

You can find the complete test code in https://github.com/AnHardt/Marlin/pull/80

Roxy-3D commented 6 years ago

Slow and even so when the reverse_pass() is really needed (nominal_rate faster than can be reached in one block ) Fast You can find the complete test code in AnHardt#80

I don't understand what Slow and Fast refer to? Its not the speed of the algorithm, right?

AnHardt commented 6 years ago

It's the value of F, in the g-code, what here makes the difference if 'nominal_rate' can be reached in one block or not. Accelerations are low in this example to fill the buffer even with lots of output on the serial.

AnHardt commented 6 years ago

After finally understanding what should go on and what was going on, her my hopefully a bit more readable and working version:

/**
 * recalculate() needs to go over the current plan twice.
 * Once in reverse and once forward. This implements the reverse pass.
 */
void Planner::reverse_pass() {
  if (movesplanned() > 3) {
    uint8_t endnr = BLOCK_MOD(block_buffer_tail + 2); // tail is running. tail+1 should not be altered because it's connected to the running block.
                                                      // tail+2 because the index is not already advanced when checked
    uint8_t blocknr = prev_block_index(block_buffer_head);
    block_t* current = &block_buffer[blocknr];

    do {
      block_t* next = current;
      blocknr = prev_block_index(blocknr);
      current = &block_buffer[blocknr];
      if(TEST(current->flag, BLOCK_BIT_START_FROM_FULL_HALT)) //before of that every block is already optimized.
        break;
      reverse_pass_kernel(current, next);
    } while (blocknr != endnr);
  }
}
tcm0116 commented 6 years ago

@thinkyhead I think there's an issue in 1.1.7 with the changes that were made to resolve this issue. I'm attempting to perform a print with several different parts, and I've noticed that at the end of some travel movements, it appears that the movement suddenly stops, resulting in a noticeable thud. I've got my acceleration values set to 800 all around and X/Y jerk set to 12. The changes in direction for normal printing movements are very smooth.

The issue seems to be worse as a function of the amount of change in direction at the end of the travel movement, with a full 180 degree stop and continue being the worst. This seems very similar to what I was experiencing during my experimentation in https://github.com/MarlinFirmware/Marlin/issues/8595#issuecomment-348074555.

tcm0116 commented 6 years ago

Here's a video showing the issue. You can hear the thud just before three seconds in.

https://photos.app.goo.gl/sminpjsg7JPvhxvx2

tcm0116 commented 6 years ago

After a bunch of experimenting, I ended up reverting back to 1.1.6, and the issue is not there.

The major concern with this issue is that the immediate stop over-torques the stepper motor and was causing it to lose steps.

thinkyhead commented 6 years ago

I've noticed that at the end of some travel movements, it appears that the movement suddenly stops, resulting in a noticeable thud.

Thanks for the video! I've been trying to discover the cause in issue #8808. The problem will go away if you disable SEGMENT_LEVELED_MOVES.

tcm0116 commented 6 years ago

I had SEGMENT_LEVELED_MOVES disabled, but was using UBL.

hg42 commented 6 years ago

is there a relation to ubl issue #8684 on bugfix-2.0.x? could be introduced by incorporating some changes from 2.0.x to 1.1.7 if so the changes between the two versions in that issue might give a hint...

tcm0116 commented 6 years ago

I don't think UBL in itself can cause this type of motion issue. What I think is happening is that the segmented moves are exposing the issue, which is why the issue was seen when SEGMENT_LEVELED_MOVES or UBL are enabled. I suspect it would happen with bilinear leveling also.

In my case, I couldn't figure out why it wasn't happening during every travel movement, but my hypothesis above would explain it since movements with UBL (with SEGMENT_LEVELED_MOVES disabled) are only segmented if the movement crosses a grid boundary.

thinkyhead commented 6 years ago

@tcm0116 I'm trying to narrow down the cause of the issue now. I'm about to test some points in time and see where this starts.

It's due to some specific change after the end of November, or maybe some poison combination of changes. I hope to be able to find the one or two responsible and get this patched tonight!

tcm0116 commented 6 years ago

@thinkyhead sounds like a plan! I started does that path, but it was 3:30am and I needed to get to bed.

thinkyhead commented 6 years ago

Revert this commit and it also fixes the issue: ec028bf747ff7fe99c4fac29f0df62491db2528c

@Bob-the-Kuhn I guess we need to have another look at #8735 "Initial Step Correction."

@tcm0116 Please test the bf1_reverting_8735 branch and see if it solves the issue.

tcm0116 commented 6 years ago

@thinkyead it appears that reverting https://github.com/MarlinFirmware/Marlin/commit/ec028bf747ff7fe99c4fac29f0df62491db2528c resolves the issue for me.

thinkyhead commented 6 years ago

@tcm0116 Good news! The issue that #8735 addresses is subtle and maybe even esoteric, so I think we can take our time with it.

tcm0116 commented 6 years ago

It's just a shame that it made it into 1.1.7. Since it's pretty problematic, are we going to quickly release 1.1.8 or re-release 1.1.7 with that change reverted?

thinkyhead commented 6 years ago

…quickly release 1.1.8 or re-release 1.1.7…?

Got it covered! image

github-actions[bot] commented 3 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.