v0.10.1
## Added
- An FTP check. It logs in with a username and password, or anonymously when auth is left
empty, retrieves one file in passive mode, and passes when the file exists, equals some text,
contains it, matches a regex, or has a given SHA-256, MD5 or SHA-1 digest. The file contents
are kept as result data even when the match fails
- The FTP check fails a file over 16 MiB or a control conversation over 64 KiB, and times out
after 30 seconds when the round gives it no deadline. A malformed passive reply fails the
check instead of crashing the minion
## Changed
- N/A
## Fixed
- Closing the "Report graded." message after grading an IR report went to
`/admin-panel/ir-reports/{team_id}/submissions`, which does not exist. It now goes back to the
submissions list
- A check's saved settings showed a nested group, auth credentials or each repeated item with
its own numbered section headings. They now render as plain rows under their parent
- A check's saved settings show an enum's label, such as "File contains", instead of its raw
value `substringMatch`
- A field marked hidden in a check schema lost the flag when the schema was built, so it still
showed