."Creates an internal message body to be sent from any smart contract residing in the masterchain to the elections smart contract containing a signed request to vote for complaint <complaint-hash> (decimal; prefix with '0x' if needed) of past validator set <elect-id> on behalf of current validator with zero-based index <validator-idx> and (Base64) public key <validator-pubkey> in current validator set (as stored in configuration parameter 34)" cr
."<validator-signature> must be the base64 representation of Ed25519 signature of the previously generated unsigned request by means of <validator-pubkey>" cr
."The result is saved into <savefile> (" savefile type ." by default), to be embedded later into an internal message" cr 1 halt
} : usage
$# dup 5 < swap 6 > or ' usage if
6 :$1..n
$1 parse-int dup =: val-idx
16 ufits not abort"validator index out of range"
$2 parse-int dup =: elect-id
32 ufits not abort"invalid election id"
$3 parse-int dup =: compl-hash
256 ufits not abort"invalid complaint hash"
$4 base64>B dup Blen 36 <> abort"validator Ed25519 public key must be exactly 36 bytes long"