let content_type = remove_field(&mut fields, &CONTENT_TYPE_TAG); let metadata = remove_and_concatenate_field(&mut fields, &METADATA_TAG); let metaprotocol = remove_field(&mut fields, &METAPROTOCOL_TAG); let parent = remove_field(&mut fields, &PARENT_TAG); let pointer = remove_field(&mut fields, &POINTER_TAG); let unrecognized_even_field = fields .keys() .any(|tag| tag.first().map(|lsb| lsb % 2 == 0).unwrap_or_default()); Self { payload: Inscription { body: body.map(|i| { envelope.payload[i + 1..] .iter() .flatten() .cloned() .collect() }), content_encoding, content_type, duplicate_field, incomplete_field, metadata, metaprotocol, parent, pointer, unrecognized_even_field, }, input: envelope.input, offset: envelope.offset, pushnum: envelope.pushnum, } } } impl ParsedEnvelope { pub(crate) fn from_transaction(transaction: &Transaction) -> Vec {