Console Output
Skipping 12,408 KB..
Full LogTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTest
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT060/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT060/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT061压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT061_2026-09-22_19-54-27/
+ mv params/ params_orin_master_HNYP_JLX7E_AT061_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT061_2026-09-22_19-54-27.zip params_orin_master_HNYP_JLX7E_AT061_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params_orin_master_HNYP_JLX7E_AT061_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params_orin_master_HNYP_JLX7E_AT061_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
1 132M 0 0 1 2112k 0 4641k 0:00:29 --:--:-- 0:00:29 4631k
13 132M 0 0 13 17.7M 0 12.5M 0:00:10 0:00:01 0:00:09 12.5M
25 132M 0 0 25 33.1M 0 13.7M 0:00:09 0:00:02 0:00:07 13.7M
37 132M 0 0 37 48.9M 0 14.3M 0:00:09 0:00:03 0:00:06 14.3M
49 132M 0 0 49 64.7M 0 14.6M 0:00:08 0:00:04 0:00:04 14.6M
61 132M 0 0 61 80.5M 0 14.8M 0:00:08 0:00:05 0:00:03 15.8M
73 132M 0 0 73 96.3M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
84 132M 0 0 84 112M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
96 132M 0 0 96 128M 0 15.2M 0:00:08 0:00:08 --:--:-- 15.8M
100 132M 0 0 100 132M 0 13.5M 0:00:09 0:00:09 --:--:-- 12.6M
100 132M 0 0 100 132M 0 12.2M 0:00:10 0:00:10 --:--:-- 9899k
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 6855k
100 132M 0 0 100 132M 0 10.3M 0:00:12 0:00:12 --:--:-- 3823k
100 132M 0 0 100 132M 0 9839k 0:00:13 0:00:13 --:--:-- 771k
100 132M 0 0 100 132M 0 9171k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8587k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8074k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7618k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7212k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6846k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6516k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6216k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5942k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5692k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5461k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5249k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5060k 0:00:26 0:00:26 --:--:-- 8
100 132M 0 43 100 132M 1 5060k 0:00:26 0:00:26 --:--:-- 10
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT061压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT061_2026-09-22_19-54-27/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT061_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT061_2026-09-22_19-54-27.zip params_orin_slave_HNYP_JLX7E_AT061_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params_orin_slave_HNYP_JLX7E_AT061_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params_orin_slave_HNYP_JLX7E_AT061_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
5 122M 0 0 5 6336k 0 9358k 0:00:13 --:--:-- 0:00:13 9345k
17 122M 0 0 17 22.0M 0 13.0M 0:00:09 0:00:01 0:00:08 13.0M
30 122M 0 0 30 37.2M 0 13.9M 0:00:08 0:00:02 0:00:06 13.9M
43 122M 0 0 43 53.0M 0 14.4M 0:00:08 0:00:03 0:00:05 14.4M
56 122M 0 0 56 68.8M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
69 122M 0 0 69 84.6M 0 14.9M 0:00:08 0:00:05 0:00:03 15.6M
82 122M 0 0 82 100M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
94 122M 0 0 94 116M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 12.8M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 9.9M
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 7168k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 4166k
100 122M 0 0 100 122M 0 9589k 0:00:13 0:00:13 --:--:-- 1166k
100 122M 0 0 100 122M 0 8907k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8316k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7798k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7341k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6935k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6571k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6243k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5947k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5677k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5431k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5205k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4998k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4927k 0:00:25 0:00:25 --:--:-- 9
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT061/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT062压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT062_2026-09-22_19-54-27/
+ mv params/ params_orin_master_HNYP_JLX7E_AT062_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT062_2026-09-22_19-54-27.zip params_orin_master_HNYP_JLX7E_AT062_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params_orin_master_HNYP_JLX7E_AT062_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params_orin_master_HNYP_JLX7E_AT062_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 132M 0 0 0 192k 0 793k 0:02:50 --:--:-- 0:02:50 790k
10 132M 0 0 10 14.1M 0 11.6M 0:00:11 0:00:01 0:00:10 11.6M
21 132M 0 0 21 28.1M 0 12.5M 0:00:10 0:00:02 0:00:08 12.5M
34 132M 0 0 34 45.2M 0 14.0M 0:00:09 0:00:03 0:00:06 14.0M
46 132M 0 0 46 61.0M 0 14.4M 0:00:09 0:00:04 0:00:05 14.4M
58 132M 0 0 58 76.8M 0 14.7M 0:00:08 0:00:05 0:00:03 15.4M
70 132M 0 0 70 92.6M 0 14.9M 0:00:08 0:00:06 0:00:02 15.7M
82 132M 0 0 82 108M 0 15.0M 0:00:08 0:00:07 0:00:01 16.1M
94 132M 0 0 94 124M 0 15.1M 0:00:08 0:00:08 --:--:-- 15.8M
100 132M 0 0 100 132M 0 13.6M 0:00:09 0:00:09 --:--:-- 12.9M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 10.0M
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 7331k
100 132M 0 0 100 132M 0 10.3M 0:00:12 0:00:12 --:--:-- 4384k
100 132M 0 0 100 132M 0 9860k 0:00:13 0:00:13 --:--:-- 1435k
100 132M 0 0 100 132M 0 9189k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8603k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8088k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7631k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7223k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6856k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6525k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6224k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5950k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5699k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5468k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5255k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5122k 0:00:26 0:00:26 --:--:-- 9
100 132M 0 43 100 132M 1 5122k 0:00:26 0:00:26 --:--:-- 11
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT062压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT062_2026-09-22_19-54-27/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT062_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT062_2026-09-22_19-54-27.zip params_orin_slave_HNYP_JLX7E_AT062_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params_orin_slave_HNYP_JLX7E_AT062_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params_orin_slave_HNYP_JLX7E_AT062_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
7 122M 0 0 7 9088k 0 10.6M 0:00:11 --:--:-- 0:00:11 10.6M
19 122M 0 0 19 24.1M 0 13.0M 0:00:09 0:00:01 0:00:08 13.0M
32 122M 0 0 32 40.0M 0 14.1M 0:00:08 0:00:02 0:00:06 14.1M
45 122M 0 0 45 55.7M 0 14.5M 0:00:08 0:00:03 0:00:05 14.5M
58 122M 0 0 58 71.6M 0 14.8M 0:00:08 0:00:04 0:00:04 14.8M
71 122M 0 0 71 87.3M 0 14.9M 0:00:08 0:00:05 0:00:03 15.7M
84 122M 0 0 84 103M 0 15.1M 0:00:08 0:00:06 0:00:02 15.8M
96 122M 0 0 96 117M 0 15.0M 0:00:08 0:00:07 0:00:01 15.5M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 12.5M
100 122M 0 0 100 122M 0 12.0M 0:00:10 0:00:10 --:--:-- 9828k
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 6776k
100 122M 0 0 100 122M 0 10.0M 0:00:12 0:00:12 --:--:-- 3722k
100 122M 0 0 100 122M 0 9548k 0:00:13 0:00:13 --:--:-- 933k
100 122M 0 0 100 122M 0 8871k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8285k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7771k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7317k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6913k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6551k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6226k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 43 100 122M 2 5950k 0:00:21 0:00:21 --:--:-- 8
100 122M 0 43 100 122M 2 5950k 0:00:21 0:00:21 --:--:-- 10
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT062/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT063压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT063_2026-09-22_19-54-27/
+ mv params/ params_orin_master_HNYP_JLX7E_AT063_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT063_2026-09-22_19-54-27.zip params_orin_master_HNYP_JLX7E_AT063_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params_orin_master_HNYP_JLX7E_AT063_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params_orin_master_HNYP_JLX7E_AT063_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
7 132M 0 0 7 10.0M 0 11.0M 0:00:11 --:--:-- 0:00:11 11.0M
19 132M 0 0 19 25.8M 0 13.5M 0:00:09 0:00:01 0:00:08 13.5M
31 132M 0 0 31 41.7M 0 14.3M 0:00:09 0:00:02 0:00:07 14.3M
43 132M 0 0 43 57.5M 0 14.7M 0:00:08 0:00:03 0:00:05 14.7M
55 132M 0 0 55 73.3M 0 14.9M 0:00:08 0:00:04 0:00:04 14.9M
67 132M 0 0 67 89.1M 0 15.0M 0:00:08 0:00:05 0:00:03 15.8M
79 132M 0 0 79 105M 0 15.1M 0:00:08 0:00:06 0:00:02 15.8M
91 132M 0 0 91 120M 0 15.2M 0:00:08 0:00:07 0:00:01 15.8M
100 132M 0 0 100 132M 0 13.7M 0:00:09 0:00:09 --:--:-- 13.0M
100 132M 0 0 100 132M 0 12.4M 0:00:10 0:00:10 --:--:-- 10.2M
100 132M 0 0 100 132M 0 11.3M 0:00:11 0:00:11 --:--:-- 7674k
100 132M 0 0 100 132M 0 10.4M 0:00:12 0:00:12 --:--:-- 4840k
100 132M 0 0 100 132M 0 9919k 0:00:13 0:00:13 --:--:-- 2006k
100 132M 0 0 100 132M 0 9240k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8648k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8128k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7666k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7254k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6884k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6551k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6248k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5971k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5718k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5486k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5272k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5178k 0:00:26 0:00:26 --:--:-- 9
100 132M 0 43 100 132M 1 5178k 0:00:26 0:00:26 --:--:-- 12
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT063压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT063_2026-09-22_19-54-27/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT063_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT063_2026-09-22_19-54-27.zip params_orin_slave_HNYP_JLX7E_AT063_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params_orin_slave_HNYP_JLX7E_AT063_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params_orin_slave_HNYP_JLX7E_AT063_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
5 122M 0 0 5 7040k 0 9.7M 0:00:12 --:--:-- 0:00:12 9985k
18 122M 0 0 18 22.6M 0 13.2M 0:00:09 0:00:01 0:00:08 13.2M
31 122M 0 0 31 38.0M 0 14.0M 0:00:08 0:00:02 0:00:06 14.0M
43 122M 0 0 43 53.8M 0 14.5M 0:00:08 0:00:03 0:00:05 14.5M
56 122M 0 0 56 69.6M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
69 122M 0 0 69 85.4M 0 14.9M 0:00:08 0:00:05 0:00:03 15.7M
82 122M 0 0 82 101M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
95 122M 0 0 95 117M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 12.7M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 9.8M
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 7052k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 4040k
100 122M 0 0 100 122M 0 9585k 0:00:13 0:00:13 --:--:-- 1027k
100 122M 0 0 100 122M 0 8904k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8312k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7795k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7338k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6932k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6569k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6241k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 43 100 122M 2 5993k 0:00:20 0:00:20 --:--:-- 8
100 122M 0 43 100 122M 2 5993k 0:00:20 0:00:20 --:--:-- 11
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT063/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT064压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT064_2026-09-22_19-54-27/
+ mv params/ params_orin_master_HNYP_JLX7E_AT064_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT064_2026-09-22_19-54-27.zip params_orin_master_HNYP_JLX7E_AT064_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params_orin_master_HNYP_JLX7E_AT064_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params_orin_master_HNYP_JLX7E_AT064_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
4 132M 0 0 4 6528k 0 9656k 0:00:13 --:--:-- 0:00:13 9642k
16 132M 0 0 16 22.1M 0 13.2M 0:00:09 0:00:01 0:00:08 13.2M
28 132M 0 0 28 38.0M 0 14.1M 0:00:09 0:00:02 0:00:07 14.1M
40 132M 0 0 40 53.8M 0 14.6M 0:00:09 0:00:03 0:00:06 14.6M
52 132M 0 0 52 69.6M 0 14.8M 0:00:08 0:00:04 0:00:04 14.8M
64 132M 0 0 64 85.4M 0 15.0M 0:00:08 0:00:05 0:00:03 15.8M
76 132M 0 0 76 101M 0 15.1M 0:00:08 0:00:06 0:00:02 15.8M
88 132M 0 0 88 117M 0 15.2M 0:00:08 0:00:07 0:00:01 15.8M
100 132M 0 0 100 132M 0 13.7M 0:00:09 0:00:09 --:--:-- 13.1M
100 132M 0 0 100 132M 0 12.4M 0:00:10 0:00:10 --:--:-- 10.4M
100 132M 0 0 100 132M 0 11.3M 0:00:11 0:00:11 --:--:-- 8014k
100 132M 0 0 100 132M 0 10.4M 0:00:12 0:00:12 --:--:-- 5292k
100 132M 0 0 100 132M 0 9918k 0:00:13 0:00:13 --:--:-- 2571k
100 132M 0 0 100 132M 0 9240k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8648k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8127k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7665k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7254k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6884k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6550k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6247k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5971k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5718k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5486k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5271k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5083k 0:00:26 0:00:26 --:--:-- 8
100 132M 0 43 100 132M 1 5083k 0:00:26 0:00:26 --:--:-- 10
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT064压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT064_2026-09-22_19-54-27/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT064_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT064_2026-09-22_19-54-27.zip params_orin_slave_HNYP_JLX7E_AT064_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params_orin_slave_HNYP_JLX7E_AT064_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params_orin_slave_HNYP_JLX7E_AT064_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
9 122M 0 0 9 11.3M 0 10.9M 0:00:11 0:00:01 0:00:10 10.9M
21 122M 0 0 21 26.2M 0 12.8M 0:00:09 0:00:02 0:00:07 12.8M
34 122M 0 0 34 42.4M 0 13.9M 0:00:08 0:00:03 0:00:05 13.9M
47 122M 0 0 47 58.2M 0 14.4M 0:00:08 0:00:04 0:00:04 14.4M
60 122M 0 0 60 74.0M 0 14.7M 0:00:08 0:00:05 0:00:03 14.8M
73 122M 0 0 73 89.8M 0 14.8M 0:00:08 0:00:06 0:00:02 15.7M
86 122M 0 0 86 105M 0 15.0M 0:00:08 0:00:07 0:00:01 15.9M
99 122M 0 0 99 121M 0 15.1M 0:00:08 0:00:08 --:--:-- 15.8M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 12.6M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 9786k
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 6585k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 3400k
100 122M 0 0 100 122M 0 9572k 0:00:13 0:00:13 --:--:-- 193k
100 122M 0 0 100 122M 0 8892k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8302k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7786k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7330k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6925k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6562k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6236k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5940k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5671k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5425k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5200k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4993k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4945k 0:00:25 0:00:25 --:--:-- 10
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT064/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT065压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT065_2026-09-22_19-54-27/
+ mv params/ params_orin_master_HNYP_JLX7E_AT065_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT065_2026-09-22_19-54-27.zip params_orin_master_HNYP_JLX7E_AT065_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params_orin_master_HNYP_JLX7E_AT065_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params_orin_master_HNYP_JLX7E_AT065_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
5 132M 0 0 5 7808k 0 10.1M 0:00:13 --:--:-- 0:00:13 10.1M
17 132M 0 0 17 23.4M 0 13.3M 0:00:09 0:00:01 0:00:08 13.3M
29 132M 0 0 29 38.7M 0 14.0M 0:00:09 0:00:02 0:00:07 14.0M
41 132M 0 0 41 54.5M 0 14.5M 0:00:09 0:00:03 0:00:06 14.5M
53 132M 0 0 53 70.3M 0 14.8M 0:00:08 0:00:04 0:00:04 14.8M
65 132M 0 0 65 86.1M 0 14.9M 0:00:08 0:00:05 0:00:03 15.7M
77 132M 0 0 77 102M 0 15.1M 0:00:08 0:00:06 0:00:02 15.7M
88 132M 0 0 88 117M 0 15.1M 0:00:08 0:00:07 0:00:01 15.7M
100 132M 0 0 100 132M 0 13.6M 0:00:09 0:00:09 --:--:-- 13.0M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 10.3M
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 7911k
100 132M 0 0 100 132M 0 10.4M 0:00:12 0:00:12 --:--:-- 5181k
100 132M 0 0 100 132M 0 9876k 0:00:13 0:00:13 --:--:-- 2516k
100 132M 0 0 100 132M 0 9203k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8616k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8100k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7641k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7232k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6864k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6532k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6231k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5956k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5704k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5473k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5259k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5124k 0:00:26 0:00:26 --:--:-- 9
100 132M 0 43 100 132M 1 5124k 0:00:26 0:00:26 --:--:-- 11
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT065压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT065_2026-09-22_19-54-27/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT065_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT065_2026-09-22_19-54-27.zip params_orin_slave_HNYP_JLX7E_AT065_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params_orin_slave_HNYP_JLX7E_AT065_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params_orin_slave_HNYP_JLX7E_AT065_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 122M 0 0 0 128k 0 739k 0:02:49 --:--:-- 0:02:49 735k
10 122M 0 0 10 13.3M 0 11.7M 0:00:10 0:00:01 0:00:09 11.6M
23 122M 0 0 23 28.6M 0 13.4M 0:00:09 0:00:02 0:00:07 13.4M
36 122M 0 0 36 44.4M 0 14.1M 0:00:08 0:00:03 0:00:05 14.1M
49 122M 0 0 49 60.2M 0 14.5M 0:00:08 0:00:04 0:00:04 14.5M
62 122M 0 0 62 76.0M 0 14.8M 0:00:08 0:00:05 0:00:03 15.2M
75 122M 0 0 75 91.8M 0 14.9M 0:00:08 0:00:06 0:00:02 15.7M
87 122M 0 0 87 107M 0 15.0M 0:00:08 0:00:07 0:00:01 15.8M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 13.0M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 10.4M
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 7964k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 5249k
100 122M 0 0 100 122M 0 9568k 0:00:13 0:00:13 --:--:-- 2534k
100 122M 0 0 100 122M 0 8889k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8300k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7784k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7329k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6924k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6561k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6234k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5939k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5670k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5424k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5199k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4992k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4943k 0:00:25 0:00:25 --:--:-- 10
100 122M 0 43 100 122M 1 4943k 0:00:25 0:00:25 --:--:-- 13
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT065/slave/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT066压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params/master/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params/master/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params/master/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_HNYP_JLX7E_AT066_2026-09-22_19-54-27/
+ mv params/ params_orin_master_HNYP_JLX7E_AT066_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_master_HNYP_JLX7E_AT066_2026-09-22_19-54-27.zip params_orin_master_HNYP_JLX7E_AT066_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params_orin_master_HNYP_JLX7E_AT066_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params_orin_master_HNYP_JLX7E_AT066_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
7 132M 0 0 7 9792k 0 10.8M 0:00:12 --:--:-- 0:00:12 10.8M
19 132M 0 0 19 25.2M 0 13.0M 0:00:10 0:00:01 0:00:09 12.9M
30 132M 0 0 30 40.6M 0 14.1M 0:00:09 0:00:02 0:00:07 14.1M
42 132M 0 0 42 56.5M 0 14.5M 0:00:09 0:00:03 0:00:06 14.5M
54 132M 0 0 54 72.3M 0 14.8M 0:00:08 0:00:04 0:00:04 14.8M
66 132M 0 0 66 88.1M 0 14.9M 0:00:08 0:00:05 0:00:03 15.7M
78 132M 0 0 78 103M 0 15.1M 0:00:08 0:00:06 0:00:02 15.9M
90 132M 0 0 90 119M 0 15.1M 0:00:08 0:00:07 0:00:01 15.7M
100 132M 0 0 100 132M 0 13.6M 0:00:09 0:00:09 --:--:-- 13.0M
100 132M 0 0 100 132M 0 12.3M 0:00:10 0:00:10 --:--:-- 10.2M
100 132M 0 0 100 132M 0 11.2M 0:00:11 0:00:11 --:--:-- 7735k
100 132M 0 0 100 132M 0 10.4M 0:00:12 0:00:12 --:--:-- 4948k
100 132M 0 0 100 132M 0 9872k 0:00:13 0:00:13 --:--:-- 2237k
100 132M 0 0 100 132M 0 9199k 0:00:14 0:00:14 --:--:-- 0
100 132M 0 0 100 132M 0 8613k 0:00:15 0:00:15 --:--:-- 0
100 132M 0 0 100 132M 0 8096k 0:00:16 0:00:16 --:--:-- 0
100 132M 0 0 100 132M 0 7638k 0:00:17 0:00:17 --:--:-- 0
100 132M 0 0 100 132M 0 7229k 0:00:18 0:00:18 --:--:-- 0
100 132M 0 0 100 132M 0 6862k 0:00:19 0:00:19 --:--:-- 0
100 132M 0 0 100 132M 0 6530k 0:00:20 0:00:20 --:--:-- 0
100 132M 0 0 100 132M 0 6229k 0:00:21 0:00:21 --:--:-- 0
100 132M 0 0 100 132M 0 5954k 0:00:22 0:00:22 --:--:-- 0
100 132M 0 0 100 132M 0 5702k 0:00:23 0:00:23 --:--:-- 0
100 132M 0 0 100 132M 0 5471k 0:00:24 0:00:24 --:--:-- 0
100 132M 0 0 100 132M 0 5258k 0:00:25 0:00:25 --:--:-- 0
100 132M 0 43 100 132M 1 5136k 0:00:26 0:00:26 --:--:-- 9
100 132M 0 43 100 132M 1 5136k 0:00:26 0:00:26 --:--:-- 11
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/master/params_submodule/
[Pipeline] echo
------------------------------------- HNYP_JLX7E_AT066压缩并上传,slave -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params/
+ ls -d crane_align/ data_collection/ extrinsics/ hardware/ hdmap/ hdmap_interface/ hesai_lidar/ imv_spreader_detection/ lane_detection/ lidar_correction_files/ lidar_loc_v2/ master/ new_truck_spreader_detection/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
hardware/
hdmap/
hdmap_interface/
hesai_lidar/
imv_spreader_detection/
lane_detection/
lidar_correction_files/
lidar_loc_v2/
master/
new_truck_spreader_detection/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含slave目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params/slave/camera_driver /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params/slave/recorder.toml /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params/slave/system-ros /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params/
[Pipeline] sh
+ mkdir -p params_orin_slave_HNYP_JLX7E_AT066_2026-09-22_19-54-27/
+ mv params/ params_orin_slave_HNYP_JLX7E_AT066_2026-09-22_19-54-27/
[Pipeline] sh
+ zip -rq params_orin_slave_HNYP_JLX7E_AT066_2026-09-22_19-54-27.zip params_orin_slave_HNYP_JLX7E_AT066_2026-09-22_19-54-27 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params_orin_slave_HNYP_JLX7E_AT066_2026-09-22_19-54-27.zip,/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/version.json
[Pipeline] sh
+ curl -X POST http://183.255.70.81:50080/ota-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params_orin_slave_HNYP_JLX7E_AT066_2026-09-22_19-54-27.zip"' --form 'version=@"/root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 122M 0 0 0 576k 0 1761k 0:01:11 --:--:-- 0:01:11 1756k
13 122M 0 0 13 16.2M 0 12.5M 0:00:09 0:00:01 0:00:08 12.5M
25 122M 0 0 25 31.5M 0 13.7M 0:00:08 0:00:02 0:00:06 13.7M
38 122M 0 0 38 47.3M 0 14.3M 0:00:08 0:00:03 0:00:05 14.3M
51 122M 0 0 51 63.1M 0 14.7M 0:00:08 0:00:04 0:00:04 14.7M
64 122M 0 0 64 79.0M 0 14.9M 0:00:08 0:00:05 0:00:03 15.7M
77 122M 0 0 77 94.8M 0 15.0M 0:00:08 0:00:06 0:00:02 15.7M
90 122M 0 0 90 110M 0 15.1M 0:00:08 0:00:07 0:00:01 15.8M
100 122M 0 0 100 122M 0 13.4M 0:00:09 0:00:09 --:--:-- 12.9M
100 122M 0 0 100 122M 0 12.1M 0:00:10 0:00:10 --:--:-- 10.2M
100 122M 0 0 100 122M 0 11.0M 0:00:11 0:00:11 --:--:-- 7693k
100 122M 0 0 100 122M 0 10.1M 0:00:12 0:00:12 --:--:-- 4893k
100 122M 0 0 100 122M 0 9586k 0:00:13 0:00:13 --:--:-- 2094k
100 122M 0 0 100 122M 0 8905k 0:00:14 0:00:14 --:--:-- 0
100 122M 0 0 100 122M 0 8314k 0:00:15 0:00:15 --:--:-- 0
100 122M 0 0 100 122M 0 7796k 0:00:16 0:00:16 --:--:-- 0
100 122M 0 0 100 122M 0 7339k 0:00:17 0:00:17 --:--:-- 0
100 122M 0 0 100 122M 0 6933k 0:00:18 0:00:18 --:--:-- 0
100 122M 0 0 100 122M 0 6570k 0:00:19 0:00:19 --:--:-- 0
100 122M 0 0 100 122M 0 6242k 0:00:20 0:00:20 --:--:-- 0
100 122M 0 0 100 122M 0 5946k 0:00:21 0:00:21 --:--:-- 0
100 122M 0 0 100 122M 0 5676k 0:00:22 0:00:22 --:--:-- 0
100 122M 0 0 100 122M 0 5430k 0:00:23 0:00:23 --:--:-- 0
100 122M 0 0 100 122M 0 5204k 0:00:24 0:00:24 --:--:-- 0
100 122M 0 0 100 122M 0 4997k 0:00:25 0:00:25 --:--:-- 0
100 122M 0 43 100 122M 1 4911k 0:00:25 0:00:25 --:--:-- 9
100 122M 0 43 100 122M 1 4911k 0:00:25 0:00:25 --:--:-- 12
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/hainan-yangpu-submodule/HNYP_JLX7E_AT066/slave/params_submodule/
[Pipeline] fileExists
[Pipeline] readFile
[Pipeline] writeFile
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
always
[Pipeline] }
[Pipeline] // script
[Pipeline] script
[Pipeline] {
[Pipeline] echo
success
[Pipeline] publishHTML
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at BUILD level /root/workspace/params-submodule/hainan-yangpu-submodule to /var/lib/jenkins/jobs/hainan-yangpu-submodule/builds/379/htmlreports/update_20message
[Pipeline] wrap
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] echo
user: , telphone:
[Pipeline] }
[Pipeline] // script
[Pipeline] sh
+ curl -X POST 'https://oapi.dingtalk.com/robot/send?access_token=c4e318472bbd19d0449efb4060de213f730dc32b4bf44819381a8fa7adf61983' -H 'Content-Type: application/json' -d '{"msgtype": "markdown","markdown": {"title":"jenkins通知","text": "# 参数发布通知
### [海南洋浦车辆参数-新车57-66]
---
- 状态:<font color=#01B468> 编译成功 </font>
- 执行人:liwenqian
- 更新车辆:
[HNYP_JLX7E_AT057master][HNYP_JLX7E_AT057slave][HNYP_JLX7E_AT058master][HNYP_JLX7E_AT058slave][HNYP_JLX7E_AT059master][HNYP_JLX7E_AT059slave][HNYP_JLX7E_AT060master][HNYP_JLX7E_AT060slave][HNYP_JLX7E_AT061master][HNYP_JLX7E_AT061slave][HNYP_JLX7E_AT062master][HNYP_JLX7E_AT062slave][HNYP_JLX7E_AT063master][HNYP_JLX7E_AT063slave][HNYP_JLX7E_AT064master][HNYP_JLX7E_AT064slave][HNYP_JLX7E_AT065master][HNYP_JLX7E_AT065slave][HNYP_JLX7E_AT066master][HNYP_JLX7E_AT066slave]
- 分支名:main
- 具体模块分支:[点此链接](http://jenkins.vehicle.senior.auto:8080/jenkins/job/hainan-yangpu-submodule/379/update_20message/index.html)
---
> 请ota发布同学尽快发布验证,并在群里同步发布信息~@"},"at": {"atMobiles": [""],"isAtAll": "false"} }'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1065 100 27 100 1038 341 13139 --:--:-- --:--:-- --:--:-- 13481
[Pipeline] echo
{"errcode":0,"errmsg":"ok"}
[Pipeline] }
[Pipeline] // wrap
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
Lock released on resource [Label: built-in, Quantity: 1]
[Pipeline] // lock
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS