A problem that already exists somewhere else can be copied into your space rather than rebuilt. The console imports from four sources:
Polygon — a problem package prepared at polygon.codeforces.com.
Basecamp — Eolymp's public problem archive.
Another space — any space you have access to.
A file — a problem archive you upload.
All four are started from the buttons above the problems list, and all four need permission to write problems.
Import from file takes a problem archive and creates a new problem from it. It accepts:
a Polygon package, a Kattis problem package or a CMS task in the Italian format, as a .zip uploaded as it is;
an Eolymp problem export, the .json file that Export problem produces.
The format is recognised from the archive's contents. A Kattis problem must be pass-fail or scoring; its output validator becomes a checker in the Kattis mode. Secret content in an Eolymp export stays secret in the imported problem.
Import from file in a problem's own header imports an archive into that problem instead of creating a new one. The problem's statements, tests, checker and other content are replaced by the archive's, and changes made to it in the console are lost. The problem keeps its origin, so a later Synchronize pulls from the original source again, not from the file.
Moving a problem between spaces this way is an export followed by an import: Export problem in one space, Import from file in the other.
The copy is complete: statement, tests, checker, interactor, templates and the rest come across, and the result is an ordinary problem of yours that you can edit, retest and extend.
It is also asynchronous. The problem is created immediately and appears in the list, but its content arrives some time later — seconds for a small problem, considerably longer for one with large test data. While the import runs, the problem's Overview tab shows Problem import is running with a link to its Activity tab, where the task's progress and logs are; the space-wide view is Background tasks.
An imported problem starts unpublished, like any other, so nothing appears in your catalog until you publish it.
An imported problem records where it came from. The Origin column of the problems list — hidden by default, switch it on from the column picker — shows it in short form: Polygon <path> for a Polygon package, Eolymp <space>/<id> for a problem copied from a space.
Origin is what makes Synchronize possible, and it is why Synchronize appears on some problems and not others.
Synchronize, in a problem's row menu or in its workspace header, pulls the problem from its origin again. It is offered only for problems that have an origin.
The pulled copy replaces the local one. Any edits you made to the problem in your space — a corrected statement, extra tests, a different checker — are overwritten, and cannot be recovered. Synchronize when you want the upstream version, not when you want to merge with it.
Imported problems often arrive with parts marked secret: tests, checkers, interactors, generators, templates. Secret content is never sent to the console, so it does not appear in the editors, and lists show a Secret badge in place of the runtime or the test input.
In the Studio a secret part opens as Secret data and cannot be read. A secret test, solution, generator or template can be deleted from its list and replaced with your own; once you have done that in your copy, the original is gone from your copy for good.