ADDED: `RouterDescUnverified::verify()
ADDED: `Copy` for `Ed25519Public`
BREAKING: Remove `Eq` on `RouterDesc` and `RouterDescSignatures`
BREAKING: Remove `Eq` on `EmbeddedCert` and `NtorOnionKeyCrossCert`
ADDED: `NetdocEncodable` for `RouterDesc`
ADDED: `NetdocEncodable` for `RouterDescSignatures`
ADDED: `ItemValueEncodable` for `RouterSignature`
ADDED: `types::policy::IpPattern`
ADDED: `types::policy::AddrPortPattern`: `addrs` and `ports` fields exposed
ADDED: `types::policy::AddrPortPattern`: impl `Hash`, provide `new`
ADDED: `types::policy::AddrPolicy::rules` accessor
ADDED: `types::policy::PortRange::from_range`, `to_range`
ADDED: `types::policy::PortRange` is `Copy`
ADDED: `types::policy::AddrPolicy::rules` returns a `DoubleEndedIterator`
ADDED: `rangemap_mutate_range`
ADDED: votes: `doc::netstatus::vote`, `NetworkStatusVote`
ADDED: parts of votes: `VoteAuthoritySection`, `RouterStatusMdDigestsVote`
ADDED: encoding for votes: `doc::nettstatus::consensus_methods_comma_separated::write_arg_onto`
ADDED: `AuthCert`: `encode_sign`, `EncodedAuthCert`
ADDED: `types::policy::AddrPolicy::summarise_precise` (and `PortPolicies`, `PortSummaryThresholds`
ADDED: `ConsensusMethod`'s field is now `pub`
BREAKING: `NetdocParseableFields::Accumulator` must be `Default`
ADDED: `types::policy::PortPolicy::from_ordered_allowed_ranges`
BREAKING: `HsDesc::parse_decrypt_validate` no longer takes a `SystemTime` and **no longer checks validity time**
ADDED: `encode::encode_netdoc_unsigned` and `encode_netdoc_fields`
ADDED: impl `Hash` for `netstatus::ConsensusMethods`
BREAKING: `RouterStatus.port_policy` is `Intern`, not `Arc`
