This app is a client for ISD.
See the official protocol, as well as the official system, dynasty, and login sub-protocols.
This app saves its state between runs. When using package:web, it uses local storage, but when using dart:io, it has to save it to a file. This file is called "cookies.save", and uses its own format, described here.
Each entry in the map is separated by a newline followed by a null byte. The entries themselves are encoded as key, colon, null, value.
Split the raw file data on newline-null, making a list of raw entries, and then split each entry on colon-null, making a list [key, value]. Now you have a List<List>, and can map each List to a MapEntry<String, String>, and then use Map.fromEntries to complete the decoding.
https://github.com/treeplate/isd_starnames is a tool for finding stars with specific names.