Skip to content

BIP324: Fix features bitmask for decoding-case selection#2016

Merged
jonatack merged 2 commits intobitcoin:masterfrom
real-or-random:202510-fix-gen-test-vectors
Oct 24, 2025
Merged

BIP324: Fix features bitmask for decoding-case selection#2016
jonatack merged 2 commits intobitcoin:masterfrom
real-or-random:202510-fix-gen-test-vectors

Conversation

@real-or-random
Copy link
Contributor

@real-or-random real-or-random commented Oct 23, 2025

Supersedes #1969.
On top of #1969.

I'm one of the authors of BIP324 but let's wait for an ACK from @sipa, please.

@real-or-random real-or-random force-pushed the 202510-fix-gen-test-vectors branch from 50a6e6a to 31f1e57 Compare October 23, 2025 12:16
@real-or-random real-or-random force-pushed the 202510-fix-gen-test-vectors branch from 31f1e57 to 713f000 Compare October 23, 2025 12:18
@jonatack jonatack added Proposed BIP modification Pending acceptance This BIP modification requires sign-off by the champion of the BIP being modified labels Oct 23, 2025
Copy link
Member

@jonatack jonatack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 713f000

The first commit is the same as the change I previously reviewed and ACKed in #1969, but I didn't previously verify by re-generating the test vectors, which generates the diff we see in the second commit. Re-verified the second commit by running gen_test_vectors.py on it and seeing no change, and ran run_test_vectors.py to sanity-check that the tests pass.

@sipa
Copy link
Member

sipa commented Oct 23, 2025

ACK code changes; I did not verify the generated output.

@jonatack jonatack removed the Pending acceptance This BIP modification requires sign-off by the champion of the BIP being modified label Oct 23, 2025
@real-or-random real-or-random marked this pull request as ready for review October 24, 2025 06:12
@real-or-random
Copy link
Contributor Author

Ready for merge then :)

@jonatack jonatack merged commit fd7fe26 into bitcoin:master Oct 24, 2025
4 checks passed
fanquake pushed a commit to bitcoin/bitcoin that referenced this pull request Oct 27, 2025
fanquake added a commit to bitcoin/bitcoin that referenced this pull request Oct 27, 2025
51877f2 test: Update BIP324 test vectors (Tim Ruffing)

Pull request description:

  This updates the hardcoded test vectors from BIP324. The test vectors had to be regenerated (in the aux files of the BIP) because there was a bug in the script used for generating them (bitcoin/bips#2016).

ACKs for top commit:
  jonatack:
    ACK 51877f2
  theStack:
    ACK 51877f2

Tree-SHA512: 59f4075e286067b11fce98667c860f3083b6cca8a2e49da8783ccdce8e32c34fd3e1943191d24dcf5bb68d8a2540726d99f7c29e8b0f104032ccb82423ca8d82
0xB10C added a commit to 0xB10C/bip324 that referenced this pull request Jan 9, 2026
As noted in rust-bitcoin#158, the BIP-324 test vectors were updated in
bitcoin/bips#2016. The previous test vectors
were not incorrect, but they didn't cover all the cases that they
were intended to.

To make this less error prone, make these changes verifyable, and
automate it, I generated the following Python script with an LLM:

```python
import csv

def read_csv(path):
    with open(path, newline="", encoding="utf-8") as f:
        reader = csv.reader(f)
        header = next(reader)
        rows = list(reader)
    return header, rows

old_header, old_rows = read_csv("old.csv")
new_header, new_rows = read_csv("new.csv")

if old_header != new_header:
    raise ValueError("CSV headers differ")

if len(old_rows) != len(new_rows):
    raise ValueError("CSV row counts differ")

for row_idx, (old_row, new_row) in enumerate(zip(old_rows, new_rows), start=1):
    changes = []
    seds = []

    for col_idx, (old_val, new_val) in enumerate(zip(old_row, new_row)):
        if old_val != new_val:
            col_name = old_header[col_idx]
            changes.append(
                f"{col_name}: '{old_val}' → '{new_val}'"
            )
            seds.append(
                f"sed -i 's/{old_val}/{new_val}/g' protocol/src/lib.rs"
            )

    if changes:
        print(f"Row {row_idx}:")
        for change in changes:
            print(f"  {change}")
        print()
        print()
        for sed in seds:
            print(f"{sed}")
        print()
        print()
```

and downloaded the new and old test-vectors into the same dir:

- new: d51f2dcaeb69473f0199ad8daf36eee3b1ceb1b5
- old: 713f000a20421a54b29cd8ab89e711eef1fbccb9

```bash
wget https://raw.githubusercontent.com/bitcoin/bips/d51f2dcaeb69473f0199ad8daf36eee3b1ceb1b5/bip-0324/packet_encoding_test_vectors.csv -O old.csv
wget https://raw.githubusercontent.com/bitcoin/bips/713f000a20421a54b29cd8ab89e711eef1fbccb9/bip-0324/packet_encoding_test_vectors.csv -O new.csv
```

I then ran the `sed` statements to replace the old vectors with the
changed ones. Output on my side:

```
Row 2:
  in_priv_ours: '1f9c581b35231838f0f17cf0c979835baccb7f3abbbb96ffcc318ab71e6e126f' → '6f312890ec83bbb26798abaadd574684a53e74ccef7953b790fcc29409080246'
  in_ellswift_ours: 'a1855e10e94e00baa23041d916e259f7044e491da6171269694763f018c7e63693d29575dcb464ac816baa1be353ba12e3876cba7628bd0bd8e755e721eb0140' → 'a8785af31c029efc82fa9fc677d7118031358d7c6a25b5779a9b900e5ccd94aac97eb36a3c5dbcdb2ca5843cc4c2fe0aaa46d10eb3d233a81c3dde476da00eef'
  mid_x_ours: '45b6f1f684fd9f2b16e2651ddc47156c0695c8c5cd2c0c9df6d79a1056c61120' → 'd4b65faa965b31fe2d9faaeb806c6449a50fe3679555c3518f7a0885f572457f'
  mid_x_shared: 'c40eb6190caf399c9007254ad5e5fa20d64af2b41696599c59b2191d16992955' → '13c1bf6a3ca37da9ffc7f45ec1810fa935c45454c03dc0144c1a9755bb52f81f'
  mid_shared_secret: 'a0138f564f74d0ad70bc337dacc9d0bf1d2349364caf1188a1e6e8ddb3b7b184' → 'a6f79eb08243b6f65dbe42bfe4a6cf3f131d6963fa5d06c770a18f7b9c489b78'
  mid_initiator_l: 'b82a0a7ce7219777f914d2ab873c5c487c56bd7b68622594d67fe029a8fa7def' → 'efc938c88c925459a9c837238716cfadfb1c3016f60d12923933710b5fcc9b55'
  mid_initiator_p: 'd760ba8f62dd3d29d7d5584e310caf2540285edc6b51c640f9497e99c3536fd2' → '91702f3cbd33b3c4a0b29b40548aea1ab01e43582db194afee70637d247aa036'
  mid_responder_l: '9db0c6f9a903cbab5d7b3c58273a3421eec0001814ec53236bd405131a0d8e90' → '7f457572e4260c611a6858acc8f325d87a3c8af8a59ce1da26ef6041f35715e8'
  mid_responder_p: '23d2b5e653e6a3a8db160a2ca03d11cb5a79983babba861fcb57c38413323c0c' → '1fe4d56334f5b0a5bd3c71ce4e338f40fc7e194925daa7ee6ce98aecf1766d7c'
  mid_send_garbage_terminator: 'efb64fd80acd3825ac9bc2a67216535a' → '44737108aec5f8b6c1c277b31bbce9c1'
  mid_recv_garbage_terminator: 'b3cb553453bceb002897e751ff7588bf' → 'ca29b3a35237f8212bd13ed187a1da2e'
  out_session_id: '9267c54560607de73f18c563b76a2442718879c52dd39852885d4a3c9912c9ea' → 'b0490e26111cb2d55bbff2ace00f7f644f64006539abb4e7513f05107bb10608'
  out_ciphertext: '1da1bcf589f9b61872f45b7fa5371dd3f8bdf5d515b0c5f9fe9f0044afb8dc0aa1cd39a8c4' → 'd78adbcba0eebfb15cfbd8142c84dc729d233d0dc11b1d851e46a114122b8d5b96b7d59317'

sed -i 's/1f9c581b35231838f0f17cf0c979835baccb7f3abbbb96ffcc318ab71e6e126f/6f312890ec83bbb26798abaadd574684a53e74ccef7953b790fcc29409080246/g' protocol/src/lib.rs
sed -i 's/a1855e10e94e00baa23041d916e259f7044e491da6171269694763f018c7e63693d29575dcb464ac816baa1be353ba12e3876cba7628bd0bd8e755e721eb0140/a8785af31c029efc82fa9fc677d7118031358d7c6a25b5779a9b900e5ccd94aac97eb36a3c5dbcdb2ca5843cc4c2fe0aaa46d10eb3d233a81c3dde476da00eef/g' protocol/src/lib.rs
sed -i 's/45b6f1f684fd9f2b16e2651ddc47156c0695c8c5cd2c0c9df6d79a1056c61120/d4b65faa965b31fe2d9faaeb806c6449a50fe3679555c3518f7a0885f572457f/g' protocol/src/lib.rs
sed -i 's/c40eb6190caf399c9007254ad5e5fa20d64af2b41696599c59b2191d16992955/13c1bf6a3ca37da9ffc7f45ec1810fa935c45454c03dc0144c1a9755bb52f81f/g' protocol/src/lib.rs
sed -i 's/a0138f564f74d0ad70bc337dacc9d0bf1d2349364caf1188a1e6e8ddb3b7b184/a6f79eb08243b6f65dbe42bfe4a6cf3f131d6963fa5d06c770a18f7b9c489b78/g' protocol/src/lib.rs
sed -i 's/b82a0a7ce7219777f914d2ab873c5c487c56bd7b68622594d67fe029a8fa7def/efc938c88c925459a9c837238716cfadfb1c3016f60d12923933710b5fcc9b55/g' protocol/src/lib.rs
sed -i 's/d760ba8f62dd3d29d7d5584e310caf2540285edc6b51c640f9497e99c3536fd2/91702f3cbd33b3c4a0b29b40548aea1ab01e43582db194afee70637d247aa036/g' protocol/src/lib.rs
sed -i 's/9db0c6f9a903cbab5d7b3c58273a3421eec0001814ec53236bd405131a0d8e90/7f457572e4260c611a6858acc8f325d87a3c8af8a59ce1da26ef6041f35715e8/g' protocol/src/lib.rs
sed -i 's/23d2b5e653e6a3a8db160a2ca03d11cb5a79983babba861fcb57c38413323c0c/1fe4d56334f5b0a5bd3c71ce4e338f40fc7e194925daa7ee6ce98aecf1766d7c/g' protocol/src/lib.rs
sed -i 's/efb64fd80acd3825ac9bc2a67216535a/44737108aec5f8b6c1c277b31bbce9c1/g' protocol/src/lib.rs
sed -i 's/b3cb553453bceb002897e751ff7588bf/ca29b3a35237f8212bd13ed187a1da2e/g' protocol/src/lib.rs
sed -i 's/9267c54560607de73f18c563b76a2442718879c52dd39852885d4a3c9912c9ea/b0490e26111cb2d55bbff2ace00f7f644f64006539abb4e7513f05107bb10608/g' protocol/src/lib.rs
sed -i 's/1da1bcf589f9b61872f45b7fa5371dd3f8bdf5d515b0c5f9fe9f0044afb8dc0aa1cd39a8c4/d78adbcba0eebfb15cfbd8142c84dc729d233d0dc11b1d851e46a114122b8d5b96b7d59317/g' protocol/src/lib.rs

Row 3:
  in_priv_ours: '0286c41cd30913db0fdff7a64ebda5c8e3e7cef10f2aebc00a7650443cf4c60d' → '846a784f1a03dea59cc679754a60a7145542fa130e3efbd815c81e909ce32933'
  in_ellswift_ours: 'd1ee8a93a01130cbf299249a258f94feb5f469e7d0f2f28f69ee5e9aa8f9b54a60f2c3ff2d023634ec7f4127a96cc11662e402894cf1f694fb9a7eaa5f1d9244' → '480eacf1536b52257bf8ce78d8f4ce09395d744767c6c129e7838947ee625af3245592c111275e877d5baae22584cb5f1153e67c16bcd7da767726cd0d0c846a'
  mid_x_ours: '33a32d10066fa3963a9518a14d1bd1cb5ccaceaeaaeddb4d7aead90c08395bfd' → '014e5bdbb1d7eb34a88a016ab3dd45e343dc703fafa8266907ab67a76c5eb2d6'
  mid_x_shared: 'a1017beaa8784f283dee185cd847ae3a327a981e62ae21e8c5face175fc97e9b' → '10578110283044630bc13a9f12b00eb0af7cba9f53506add2b57ae07b3987ced'
  mid_shared_secret: '250b93570d411149105ab8cb0bc5079914906306368c23e9d77c2a33265b994c' → 'e500c670f1b32f60e05009bddcdbfa7153afb19c20479583a54b43d85b3433a8'
  mid_initiator_l: '4ec7daf7294a4a2c717442dd21cf2f052a3bfe9d535b55da0f66fecf87a27534' → '67b155367abf65d45a60412e16bd5ef5e862aa0a4a7a56366cfcc602072176b8'
  mid_initiator_p: '52ab4db9c4b06621f8ded3405691eb32465b1360d15a6b127ded4d15f9cde466' → '93f5b4c59038c16c3f09793976c75e522bf994635e3f1ef9f04e628281e0d5f7'
  mid_responder_l: 'ba9906da802407ddedf6733e29f3996c62425e79d3cbfeebbd6ec4cdc7c976a8' → '08fe46857ab4e62d7463c00ac510e041d28dbfc21853e8f4db971890c7330098'
  mid_responder_p: 'ee661e18c97319ad071106bf35fe1085034832f70718d92f887932128b6100c7' → '2271d5f5351a91ca768a83c5aa7f45fb2b2742e89351d93a680f51a030f9255c'
  mid_send_garbage_terminator: 'd4e3f18ac2e2095edb5c3b94236118ad' → '3ba1f51de6272aa28fd21059b91d3893'
  mid_recv_garbage_terminator: '4faa6c4233d9fd53d170ede4172142a8' → 'faf3b317340de00e29f2181db270ff81'
  out_session_id: '23f154ac43cfc59c4243e9fc68aeec8f19ad3942d74108e833b36f0dd3dcd357' → 'd083d09c1bdf71795b39a9534601cf7c7a7e767e578c44a17dfaf43a3c18f98c'
  out_ciphertext: '8da7de6ea7bf2a81a396a42880ba1f5756734c4821309ac9aeffa2a26ce86873b9dc4935a772de6ec5162c6d075b14536800fb174841153511bfb597e992e2fe8a450c4bce102cc550bb37fd564c4d60bf884e' → '6aa28bc4b6719eca144ac33a3f17859317d5450e4978db9365ce61e7085a617dd386ec18eb436c9056aa1d2d4736c9bffd25803d967fcae916ce1647ccae3d5258b17dfa1cdc7eb99581c48ff2898ef92d3aa1'

sed -i 's/0286c41cd30913db0fdff7a64ebda5c8e3e7cef10f2aebc00a7650443cf4c60d/846a784f1a03dea59cc679754a60a7145542fa130e3efbd815c81e909ce32933/g' protocol/src/lib.rs
sed -i 's/d1ee8a93a01130cbf299249a258f94feb5f469e7d0f2f28f69ee5e9aa8f9b54a60f2c3ff2d023634ec7f4127a96cc11662e402894cf1f694fb9a7eaa5f1d9244/480eacf1536b52257bf8ce78d8f4ce09395d744767c6c129e7838947ee625af3245592c111275e877d5baae22584cb5f1153e67c16bcd7da767726cd0d0c846a/g' protocol/src/lib.rs
sed -i 's/33a32d10066fa3963a9518a14d1bd1cb5ccaceaeaaeddb4d7aead90c08395bfd/014e5bdbb1d7eb34a88a016ab3dd45e343dc703fafa8266907ab67a76c5eb2d6/g' protocol/src/lib.rs
sed -i 's/a1017beaa8784f283dee185cd847ae3a327a981e62ae21e8c5face175fc97e9b/10578110283044630bc13a9f12b00eb0af7cba9f53506add2b57ae07b3987ced/g' protocol/src/lib.rs
sed -i 's/250b93570d411149105ab8cb0bc5079914906306368c23e9d77c2a33265b994c/e500c670f1b32f60e05009bddcdbfa7153afb19c20479583a54b43d85b3433a8/g' protocol/src/lib.rs
sed -i 's/4ec7daf7294a4a2c717442dd21cf2f052a3bfe9d535b55da0f66fecf87a27534/67b155367abf65d45a60412e16bd5ef5e862aa0a4a7a56366cfcc602072176b8/g' protocol/src/lib.rs
sed -i 's/52ab4db9c4b06621f8ded3405691eb32465b1360d15a6b127ded4d15f9cde466/93f5b4c59038c16c3f09793976c75e522bf994635e3f1ef9f04e628281e0d5f7/g' protocol/src/lib.rs
sed -i 's/ba9906da802407ddedf6733e29f3996c62425e79d3cbfeebbd6ec4cdc7c976a8/08fe46857ab4e62d7463c00ac510e041d28dbfc21853e8f4db971890c7330098/g' protocol/src/lib.rs
sed -i 's/ee661e18c97319ad071106bf35fe1085034832f70718d92f887932128b6100c7/2271d5f5351a91ca768a83c5aa7f45fb2b2742e89351d93a680f51a030f9255c/g' protocol/src/lib.rs
sed -i 's/d4e3f18ac2e2095edb5c3b94236118ad/3ba1f51de6272aa28fd21059b91d3893/g' protocol/src/lib.rs
sed -i 's/4faa6c4233d9fd53d170ede4172142a8/faf3b317340de00e29f2181db270ff81/g' protocol/src/lib.rs
sed -i 's/23f154ac43cfc59c4243e9fc68aeec8f19ad3942d74108e833b36f0dd3dcd357/d083d09c1bdf71795b39a9534601cf7c7a7e767e578c44a17dfaf43a3c18f98c/g' protocol/src/lib.rs
sed -i 's/8da7de6ea7bf2a81a396a42880ba1f5756734c4821309ac9aeffa2a26ce86873b9dc4935a772de6ec5162c6d075b14536800fb174841153511bfb597e992e2fe8a450c4bce102cc550bb37fd564c4d60bf884e/6aa28bc4b6719eca144ac33a3f17859317d5450e4978db9365ce61e7085a617dd386ec18eb436c9056aa1d2d4736c9bffd25803d967fcae916ce1647ccae3d5258b17dfa1cdc7eb99581c48ff2898ef92d3aa1/g' protocol/src/lib.rs

Row 4:
  in_priv_ours: '6c77432d1fda31e9f942f8af44607e10f3ad38a65f8a4bddae823e5eff90dc38' → 'c0f15820459f64d98e5c48681d13340572c574533dd9f7161b85fcc8224fdf30'
  in_ellswift_ours: 'd2685070c1e6376e633e825296634fd461fa9e5bdf2109bcebd735e5a91f3e587c5cb782abb797fbf6bb5074fd1542a474f2a45b673763ec2db7fb99b737bbb9' → '682871104d694baca8b9c7990ae6288f49e1ff4feb21dd5cffad67db7752fdfb6c3608d6996c54be04b35feef037da09ee4d9dca2363b343bc2d4f6d0ea609da'
  mid_x_ours: '193d019db571162e52567e0cfdf9dd6964394f32769ae2edc4933b03b502d771' → '5d673dd0a75ccacf4e1310e9402ecdacdd474d8bbfa6eeefdde2e1b216d41dbe'
  mid_x_shared: '5e35f94adfd57976833bffec48ef6dde983d18a55501154191ea352ef06732ee' → '1c229ba46fadced7217df782d410961c1399375135e4aa718fa3424ec36539cc'
  mid_shared_secret: '1918b741ef5f9d1d7670b050c152b4a4ead2c31be9aecb0681c0cd4324150853' → 'b764f617cf8c8dcf6018e4f5e8ee603a086498a3732621c9b0fc0a485ea0d2f0'
  mid_initiator_l: '97124c56236425d792b1ec85e34b846e8d88c9b9f1d4f23ac6cdcc4c177055a0' → 'e25747c749e78c7a0102352378f7c15566145b57f082f7e10b10a0606b323996'
  mid_initiator_p: '8c71b468c61119415e3c1dfdd184134211951e2f623199629a46bff9673611f2' → 'c0547fbf3082c7a0377b4e709b982ecb4710012dcf3b0c073ed3811a2b7c1309'
  mid_responder_l: 'b43b8791b51ed682f56d64351601be28e478264411dcf963b14ee60b9ae427fa' → '5bb291885bf5b08a4218c2bf3498d3591be93a47412c770b60299c8e740ac560'
  mid_responder_p: '794dde4b38ef04250c534a7fa638f2e8cc8b6d2c6110ec290ab0171fdf277d51' → 'fdf5a3e3e75afc15a924373e58af505052731efa75c76a1fa3546954d60b50b1'
  mid_send_garbage_terminator: 'cf2e25f23501399f30738d7eee652b90' → '8461c1dc173be7e6a2316d09710ebd8d'
  mid_recv_garbage_terminator: '225a477a28a54ea7671d2b217a9c29db' → 'dfa2d33623fe80e2347999e6de0f96fd'
  out_session_id: '7ec02fea8c1484e3d0875f978c5f36d63545e2e4acf56311394422f4b66af612' → '279a96e6ce08e5074608fcad77d6a78f90c8b618a4520575435b1a37b1c56df9'
  out_ciphertext_endswith: '729847a3e9eba7a5bff454b5de3b393431ee360736b6c030d7a5bd01d1203d2e98f528543fd2bf886ccaa1ada5e215a730a36b3f4abfc4e252c89eb01d9512f94916dae8a76bf16e4da28986ffe159090fe5267ee3394300b7ccf4dfad389a26321b3a3423e4594a82ccfbad16d6561ecb8772b0cb040280ff999a29e3d9d4fd' → '5afbd61f6e989833df2f12ff70c98f1a20ebe84acba2a05429cc6a57238dba87cdc432474f378889b2d0e95ade9f892eb1a1f6b03b73f903682476537f653f738f7a9f1cc9856ed75f3d69122bdeb00af48e66a64872f639a67fc109ee5ca124d0ee183da3c2b8f2da828850b50976b491f1add78d7f01e07565570621266852'

sed -i 's/6c77432d1fda31e9f942f8af44607e10f3ad38a65f8a4bddae823e5eff90dc38/c0f15820459f64d98e5c48681d13340572c574533dd9f7161b85fcc8224fdf30/g' protocol/src/lib.rs
sed -i 's/d2685070c1e6376e633e825296634fd461fa9e5bdf2109bcebd735e5a91f3e587c5cb782abb797fbf6bb5074fd1542a474f2a45b673763ec2db7fb99b737bbb9/682871104d694baca8b9c7990ae6288f49e1ff4feb21dd5cffad67db7752fdfb6c3608d6996c54be04b35feef037da09ee4d9dca2363b343bc2d4f6d0ea609da/g' protocol/src/lib.rs
sed -i 's/193d019db571162e52567e0cfdf9dd6964394f32769ae2edc4933b03b502d771/5d673dd0a75ccacf4e1310e9402ecdacdd474d8bbfa6eeefdde2e1b216d41dbe/g' protocol/src/lib.rs
sed -i 's/5e35f94adfd57976833bffec48ef6dde983d18a55501154191ea352ef06732ee/1c229ba46fadced7217df782d410961c1399375135e4aa718fa3424ec36539cc/g' protocol/src/lib.rs
sed -i 's/1918b741ef5f9d1d7670b050c152b4a4ead2c31be9aecb0681c0cd4324150853/b764f617cf8c8dcf6018e4f5e8ee603a086498a3732621c9b0fc0a485ea0d2f0/g' protocol/src/lib.rs
sed -i 's/97124c56236425d792b1ec85e34b846e8d88c9b9f1d4f23ac6cdcc4c177055a0/e25747c749e78c7a0102352378f7c15566145b57f082f7e10b10a0606b323996/g' protocol/src/lib.rs
sed -i 's/8c71b468c61119415e3c1dfdd184134211951e2f623199629a46bff9673611f2/c0547fbf3082c7a0377b4e709b982ecb4710012dcf3b0c073ed3811a2b7c1309/g' protocol/src/lib.rs
sed -i 's/b43b8791b51ed682f56d64351601be28e478264411dcf963b14ee60b9ae427fa/5bb291885bf5b08a4218c2bf3498d3591be93a47412c770b60299c8e740ac560/g' protocol/src/lib.rs
sed -i 's/794dde4b38ef04250c534a7fa638f2e8cc8b6d2c6110ec290ab0171fdf277d51/fdf5a3e3e75afc15a924373e58af505052731efa75c76a1fa3546954d60b50b1/g' protocol/src/lib.rs
sed -i 's/cf2e25f23501399f30738d7eee652b90/8461c1dc173be7e6a2316d09710ebd8d/g' protocol/src/lib.rs
sed -i 's/225a477a28a54ea7671d2b217a9c29db/dfa2d33623fe80e2347999e6de0f96fd/g' protocol/src/lib.rs
sed -i 's/7ec02fea8c1484e3d0875f978c5f36d63545e2e4acf56311394422f4b66af612/279a96e6ce08e5074608fcad77d6a78f90c8b618a4520575435b1a37b1c56df9/g' protocol/src/lib.rs
sed -i 's/729847a3e9eba7a5bff454b5de3b393431ee360736b6c030d7a5bd01d1203d2e98f528543fd2bf886ccaa1ada5e215a730a36b3f4abfc4e252c89eb01d9512f94916dae8a76bf16e4da28986ffe159090fe5267ee3394300b7ccf4dfad389a26321b3a3423e4594a82ccfbad16d6561ecb8772b0cb040280ff999a29e3d9d4fd/5afbd61f6e989833df2f12ff70c98f1a20ebe84acba2a05429cc6a57238dba87cdc432474f378889b2d0e95ade9f892eb1a1f6b03b73f903682476537f653f738f7a9f1cc9856ed75f3d69122bdeb00af48e66a64872f639a67fc109ee5ca124d0ee183da3c2b8f2da828850b50976b491f1add78d7f01e07565570621266852/g' protocol/src/lib.rs

Row 5:
  in_priv_ours: 'a6ec25127ca1aa4cf16b20084ba1e6516baae4d32422288e9b36d8bddd2de35a' → '96cb391886681d1d3e23948e51987771a8ec3001b640c18fb994a855cea66b6e'
  in_ellswift_ours: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff053d7ecca53e33e185a8b9be4e7699a97c6ff4c795522e5918ab7cd6b6884f67e683f3dc' → 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdde3a077a6fd73711a27250c439ba78ef63d89cd0918c0a0a75f301ed96aa2a43ecf3f61'
  mid_x_ours: '02b225089255f7b02b20276cfe9779144df8fb1957b477bff3239d802d1256e9' → 'f7561c791f6f4aa73dcef3cac32f2433b4cfa4ab0666e93552b7cbc7249fb2de'
  mid_x_shared: '379223d2f1ea7f8a22043c4ce4122623098309e15b1ce58286ebe3d3bf40f4e1' → '2651a46a622f79e2ab18819587e7f897e3f8351b1e1b66d8ed4543a1e40bc569'
  mid_shared_secret: 'dd210aa6629f20bb328e5d89daa6eb2ac3d1c658a725536ff154f31b536c23b2' → '779a18107756169a6b369d043f3ef9a90178c7ab8c8c37b4edcd9b5397e41eca'
  mid_initiator_l: '393472f85a5cc6b0f02c4bd466db7a2dc5b91fc9dcb15c0dd6dc21116ece8bca' → '368c7283e088e40b79e6214046beab64cbac30a89940acbc30d430f941fe7d35'
  mid_initiator_p: 'c80b87b793db47320b2795db66d331bd3021cc24e360d59d0fa8974f54687e0c' → '224065c728d5cdabbe209cd52621324471ce8dc229907c018cec05781a9c770d'
  mid_responder_l: 'ef16a43d77e2b270b0a145ee1618d35f3c943cc7877d6cfcff2287d41692be39' → '9ce33c019a081e5f8b62e1f12d652f0b036ed65f5de195d931dfcd92043b5eb2'
  mid_responder_p: '20d4b62e2d982c61bb0cc39a93283d98af36530ef12331d44b2477b0e521b490' → '001e576d8828a6d84913b01cb88e8f5532207f34275017b61650ba1383646cbc'
  mid_send_garbage_terminator: 'fead69be77825a23daec377c362aa560' → '7bf55f6b58f73cdff19ee3292607239f'
  mid_recv_garbage_terminator: '511d4980526c5e64aa7187462faeafdd' → 'd121874372c61a48fd87da6d01d89da4'
  out_session_id: 'acb8f084ea763ddd1b92ac4ed23bf44de20b84ab677d4e4e6666a6090d40353d' → 'e9515794acced50e0550a3ebd95c170d2abd48b5f23fccca73bc597f00c88cf2'
  out_ciphertext_endswith: '77b4656934a82de1a593d8481f020194ddafd8cac441f9d72aeb8721e6a14f49698ca6d9b2b6d59d07a01aa552fd4d5b68d0d1617574c77dea10bfadbaa31b83885b7ceac2fd45e3e4a331c51a74e7b1698d81b64c87c73c5b9258b4d83297f9debc2e9aa07f8572ff434dc792b83ecf07b3197de8dc9cf7be56acb59c66cff5' → '33953941be2682da1c6d1b167cbf180d7cb8159c94c6ea1c52356716f1057af4df53321f18894c285f7b2fd85b2edc44a13c9295f310962fdfc8d944bd77c5500b10ca68ca5d0977d19d183a7def742c41cfeee763dc09ef985c96ab6e74e464f66992f752c9368e42082ad338705062ddfcad4ca1c9c54004b9345d8df25953'

sed -i 's/a6ec25127ca1aa4cf16b20084ba1e6516baae4d32422288e9b36d8bddd2de35a/96cb391886681d1d3e23948e51987771a8ec3001b640c18fb994a855cea66b6e/g' protocol/src/lib.rs
sed -i 's/ffffffffffffffffffffffffffffffffffffffffffffffffffffffff053d7ecca53e33e185a8b9be4e7699a97c6ff4c795522e5918ab7cd6b6884f67e683f3dc/ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdde3a077a6fd73711a27250c439ba78ef63d89cd0918c0a0a75f301ed96aa2a43ecf3f61/g' protocol/src/lib.rs
sed -i 's/02b225089255f7b02b20276cfe9779144df8fb1957b477bff3239d802d1256e9/f7561c791f6f4aa73dcef3cac32f2433b4cfa4ab0666e93552b7cbc7249fb2de/g' protocol/src/lib.rs
sed -i 's/379223d2f1ea7f8a22043c4ce4122623098309e15b1ce58286ebe3d3bf40f4e1/2651a46a622f79e2ab18819587e7f897e3f8351b1e1b66d8ed4543a1e40bc569/g' protocol/src/lib.rs
sed -i 's/dd210aa6629f20bb328e5d89daa6eb2ac3d1c658a725536ff154f31b536c23b2/779a18107756169a6b369d043f3ef9a90178c7ab8c8c37b4edcd9b5397e41eca/g' protocol/src/lib.rs
sed -i 's/393472f85a5cc6b0f02c4bd466db7a2dc5b91fc9dcb15c0dd6dc21116ece8bca/368c7283e088e40b79e6214046beab64cbac30a89940acbc30d430f941fe7d35/g' protocol/src/lib.rs
sed -i 's/c80b87b793db47320b2795db66d331bd3021cc24e360d59d0fa8974f54687e0c/224065c728d5cdabbe209cd52621324471ce8dc229907c018cec05781a9c770d/g' protocol/src/lib.rs
sed -i 's/ef16a43d77e2b270b0a145ee1618d35f3c943cc7877d6cfcff2287d41692be39/9ce33c019a081e5f8b62e1f12d652f0b036ed65f5de195d931dfcd92043b5eb2/g' protocol/src/lib.rs
sed -i 's/20d4b62e2d982c61bb0cc39a93283d98af36530ef12331d44b2477b0e521b490/001e576d8828a6d84913b01cb88e8f5532207f34275017b61650ba1383646cbc/g' protocol/src/lib.rs
sed -i 's/fead69be77825a23daec377c362aa560/7bf55f6b58f73cdff19ee3292607239f/g' protocol/src/lib.rs
sed -i 's/511d4980526c5e64aa7187462faeafdd/d121874372c61a48fd87da6d01d89da4/g' protocol/src/lib.rs
sed -i 's/acb8f084ea763ddd1b92ac4ed23bf44de20b84ab677d4e4e6666a6090d40353d/e9515794acced50e0550a3ebd95c170d2abd48b5f23fccca73bc597f00c88cf2/g' protocol/src/lib.rs
sed -i 's/77b4656934a82de1a593d8481f020194ddafd8cac441f9d72aeb8721e6a14f49698ca6d9b2b6d59d07a01aa552fd4d5b68d0d1617574c77dea10bfadbaa31b83885b7ceac2fd45e3e4a331c51a74e7b1698d81b64c87c73c5b9258b4d83297f9debc2e9aa07f8572ff434dc792b83ecf07b3197de8dc9cf7be56acb59c66cff5/33953941be2682da1c6d1b167cbf180d7cb8159c94c6ea1c52356716f1057af4df53321f18894c285f7b2fd85b2edc44a13c9295f310962fdfc8d944bd77c5500b10ca68ca5d0977d19d183a7def742c41cfeee763dc09ef985c96ab6e74e464f66992f752c9368e42082ad338705062ddfcad4ca1c9c54004b9345d8df25953/g' protocol/src/lib.rs

Row 6:
  in_priv_ours: '0af952659ed76f80f585966b95ab6e6fd68654672827878684c8b547b1b94f5a' → '4a7065c3ddbf84e29b8e20da0da3aaae1f708eae8ad1af4c4c00f46a7cda7b6b'
  in_ellswift_ours: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc81017fd92fd31637c26c906b42092e11cc0d3afae8d9019d2578af22735ce7bc469c72d' → 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff450012ec3aeecf516f4b374af2e7fbb040e92dc3c0f12eafd00c729a137f4e892e5293c3'
  mid_x_ours: '4b1767466fe2fb8deddf2dc52cc19c7e2032007e19bfb420b30a80152d0f22d6' → 'a0ff3dd41ca11036eea75ea08993c938894c7eebca99354ac2e0daa8a1a6b2ca'
  mid_x_shared: '5bcfeac98d87e87e158bf839f1269705429f7af2a25b566a25811b5f9aef9560' → 'ca3f58a228c530be63eec8a427d16496776aefb22e693152a3a9394b9a87d097'
  mid_shared_secret: '3568f2aea2e14ef4ee4a3c2a8b8d31bc5e3187ba86db10739b4ff8ec92ff6655' → 'a993062a328371beecae7e2b05a34355c1cefbad7f855ad48331dcf002972999'
  mid_initiator_l: 'c7df866a62b7d404eb530b2be245a7aece0fb4791402a1de8f33530cbf777cc1' → '24cdf9d8533696a5795cadcf5b94826ddbe5f047ba02c832b3495ac7c1110e31'
  mid_initiator_p: '8f732e4aae2ba9314e0982492fa47954de9c189d92fbc549763b27b1b47642ce' → '7b5d1c66668d20d57a4e0a6ba4d9aa3e3ba0f704697aa7edb9ce9471d46647da'
  mid_responder_l: '992085edfecb92c62a3a7f96ea416f853f34d0dfe065b966b6968b8b87a83081' → 'e6a808d35ee403b3f4bbcd8fd49fa005a40dfaaf36f9f504318bb94637067060'
  mid_responder_p: 'c5ba5eaf9e1c807154ebab3ea472499e815a7be56dfaf0c201cf6e91ffeca8e6' → 'd6ae42117344fb71cb1817a1dc192a4b5bb35d885005093c3e9bd4576069b217'
  mid_send_garbage_terminator: '5e2375ac629b8df1e4ff3617c6255a70' → '1fec304dcaacf1f5b088325306272d78'
  mid_recv_garbage_terminator: '70bcbffcb62e4d29d2605d30bceef137' → 'd2d16a8452807baa4f63b059b5804624'
  out_session_id: '7332e92a3f9d2792c4d444fac5ed888c39a073043a65eefb626318fd649328f8' → 'dccb606c4f2a0f64bc164dbc00eb0f6cf1474575e89d7928be6346720bb53610'
  out_ciphertext_endswith: '657a4a19711ce593c3844cb391b224f60124aba7e04266233bc50cafb971e26c7716b76e98376448f7d214dd11e629ef9a974d60e3770a695810a61c4ba66d78b936ee7892b98f0b48ddae9fcd8b599dca1c9b43e9b95e0226cf8d4459b8a7c2c4e6db80f1d58c7b20dd7208fa5c1057fb78734223ee801dbd851db601fee61e' → '58daef966f33c036740aeb3f6a4b31c0f0a070b25fd6a1abf82ef56fc2cb3ca8da8c434f23790c69349dd0cb4058f88a7bd0e333c8ceba3c80f21e951b9fdb1c84e2e7f49f43c21087566d58f1bcc42b041e0b462e37e927c0071caa9a2b650dccf448c9f88d73b62e80a3e5d5e4e46992e34b416ceb9590a7c8b7bfaccf37ab'

sed -i 's/0af952659ed76f80f585966b95ab6e6fd68654672827878684c8b547b1b94f5a/4a7065c3ddbf84e29b8e20da0da3aaae1f708eae8ad1af4c4c00f46a7cda7b6b/g' protocol/src/lib.rs
sed -i 's/ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc81017fd92fd31637c26c906b42092e11cc0d3afae8d9019d2578af22735ce7bc469c72d/ffffffffffffffffffffffffffffffffffffffffffffffffffffffff450012ec3aeecf516f4b374af2e7fbb040e92dc3c0f12eafd00c729a137f4e892e5293c3/g' protocol/src/lib.rs
sed -i 's/4b1767466fe2fb8deddf2dc52cc19c7e2032007e19bfb420b30a80152d0f22d6/a0ff3dd41ca11036eea75ea08993c938894c7eebca99354ac2e0daa8a1a6b2ca/g' protocol/src/lib.rs
sed -i 's/5bcfeac98d87e87e158bf839f1269705429f7af2a25b566a25811b5f9aef9560/ca3f58a228c530be63eec8a427d16496776aefb22e693152a3a9394b9a87d097/g' protocol/src/lib.rs
sed -i 's/3568f2aea2e14ef4ee4a3c2a8b8d31bc5e3187ba86db10739b4ff8ec92ff6655/a993062a328371beecae7e2b05a34355c1cefbad7f855ad48331dcf002972999/g' protocol/src/lib.rs
sed -i 's/c7df866a62b7d404eb530b2be245a7aece0fb4791402a1de8f33530cbf777cc1/24cdf9d8533696a5795cadcf5b94826ddbe5f047ba02c832b3495ac7c1110e31/g' protocol/src/lib.rs
sed -i 's/8f732e4aae2ba9314e0982492fa47954de9c189d92fbc549763b27b1b47642ce/7b5d1c66668d20d57a4e0a6ba4d9aa3e3ba0f704697aa7edb9ce9471d46647da/g' protocol/src/lib.rs
sed -i 's/992085edfecb92c62a3a7f96ea416f853f34d0dfe065b966b6968b8b87a83081/e6a808d35ee403b3f4bbcd8fd49fa005a40dfaaf36f9f504318bb94637067060/g' protocol/src/lib.rs
sed -i 's/c5ba5eaf9e1c807154ebab3ea472499e815a7be56dfaf0c201cf6e91ffeca8e6/d6ae42117344fb71cb1817a1dc192a4b5bb35d885005093c3e9bd4576069b217/g' protocol/src/lib.rs
sed -i 's/5e2375ac629b8df1e4ff3617c6255a70/1fec304dcaacf1f5b088325306272d78/g' protocol/src/lib.rs
sed -i 's/70bcbffcb62e4d29d2605d30bceef137/d2d16a8452807baa4f63b059b5804624/g' protocol/src/lib.rs
sed -i 's/7332e92a3f9d2792c4d444fac5ed888c39a073043a65eefb626318fd649328f8/dccb606c4f2a0f64bc164dbc00eb0f6cf1474575e89d7928be6346720bb53610/g' protocol/src/lib.rs
sed -i 's/657a4a19711ce593c3844cb391b224f60124aba7e04266233bc50cafb971e26c7716b76e98376448f7d214dd11e629ef9a974d60e3770a695810a61c4ba66d78b936ee7892b98f0b48ddae9fcd8b599dca1c9b43e9b95e0226cf8d4459b8a7c2c4e6db80f1d58c7b20dd7208fa5c1057fb78734223ee801dbd851db601fee61e/58daef966f33c036740aeb3f6a4b31c0f0a070b25fd6a1abf82ef56fc2cb3ca8da8c434f23790c69349dd0cb4058f88a7bd0e333c8ceba3c80f21e951b9fdb1c84e2e7f49f43c21087566d58f1bcc42b041e0b462e37e927c0071caa9a2b650dccf448c9f88d73b62e80a3e5d5e4e46992e34b416ceb9590a7c8b7bfaccf37ab/g' protocol/src/lib.rs

Row 7:
  in_priv_ours: 'f90e080c64b05824c5a24b2501d5aeaf08af3872ee860aa80bdcd430f7b63494' → '0f69aeffeff6172647ee5aa80bfb418ee742f4e9f1a51b463ac7c120d620e37d'
  in_ellswift_ours: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff115173765dc202cf029ad3f15479735d57697af12b0131dd21430d5772e4ef11474d58b9' → 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff04df0e67f9753e2cdb066b3b588a0069fde936a312e0d3f31acb335026b7072d8f2ad24c'
  mid_x_ours: '8b8de966150bf872b4b695c9983df519c909811954d5d76e99ed0d5f1860247b' → '115b298a52a9362706ddd1e493de09443dd8ac2b0c3e4e5e8b6bb295598db05d'
  mid_x_shared: '0a402d812314646ccc2565c315d1429ec1ed130ff92ff3f48d948f29c3762cf1' → '32e15c20a09591b6600c778752a582fed444444fd0d3317613555c6509ff4b8d'
  mid_shared_secret: 'e25461fb0e4c162e18123ecde88342d54d449631e9b75a266fd9260c2bb2f41d' → '1756deace376ece25da9825fe49f76a9272a89a7b746c83ca2c4016f5a30ead4'
  mid_initiator_l: '97771ce2ce17a25c3d65bf9f8e4acb830dce8d41392be3e4b8ed902a3106681a' → '15e26b12238d66ebc4cb72d16a62a8bb404c94d31bbe3b1d22a01b851e935010'
  mid_initiator_p: '2e7022b4eae9152942f68160a93e25d3e197a557385594aa587cb5e431bb470d' → 'c135367f39b24a9cc9b73ad628fba1887737f5686062c4c36146e76849828a50'
  mid_responder_l: '613f85a82d783ce450cfd7e91a027fcc4ad5610872f83e4dbe9e2202184c6d6e' → 'ffa25ddf7cd4cd10a47f6c3b32a54ee882837058e31677d3958539f4f23e4616'
  mid_responder_p: 'cb5de4ed1083222e381401cf88e3167796bc9ab5b8aa1f27b718f39d1e6c0e87' → '12f9b3ebbf743f6b93c7d0f4f20259fac2a27ea6735fd9ef2e2699049af60fcc'
  mid_send_garbage_terminator: 'b709dea25e0be287c50e3603482c2e98' → '4dfac3b0a99401f6aad1a8df3cd7dd05'
  mid_recv_garbage_terminator: '1f677e9d7392ebe3633fd82c9efb0f16' → 'e5d4905a8b6a5d18ec6cebbdecd703d3'
  out_session_id: '889f339285564fd868401fac8380bb9887925122ec8f31c8ae51ce067def103b' → 'fc2431beb9a666bf888df0662276a4b6a1af5061072992ef408f2b686c86a2ac'
  out_ciphertext_endswith: '7c4b9e1e6c1ce69da7b01513cdc4588fd93b04dafefaf87f31561763d906c672bac3dfceb751ebd126728ac017d4d580e931b8e5c7d5dfe0123be4dc9b2d2238b655c8a7fadaf8082c31e310909b5b731efc12f0a56e849eae6bfeedcc86dd27ef9b91d159256aa8e8d2b71a311f73350863d70f18d0d7302cf551e4303c7733' → '1a7f3fb83ad2b050b663b8df6b7c2cc2d8e169a869a58bf7ef5ab5db97a505c84a812e100d9445da4fc39a1176d6aed3995f6868631224b86f10603217c8d13270e0c6d054ad9e0d0b7dc0c8e59a37cd05a0a45faa14b4ffc8d12b641f62e6f1b71c1f72b737e9ce3fe74be779b25e70bf11d98766b3876d0fa28d3c669087fc'

sed -i 's/f90e080c64b05824c5a24b2501d5aeaf08af3872ee860aa80bdcd430f7b63494/0f69aeffeff6172647ee5aa80bfb418ee742f4e9f1a51b463ac7c120d620e37d/g' protocol/src/lib.rs
sed -i 's/ffffffffffffffffffffffffffffffffffffffffffffffffffffffff115173765dc202cf029ad3f15479735d57697af12b0131dd21430d5772e4ef11474d58b9/ffffffffffffffffffffffffffffffffffffffffffffffffffffffff04df0e67f9753e2cdb066b3b588a0069fde936a312e0d3f31acb335026b7072d8f2ad24c/g' protocol/src/lib.rs
sed -i 's/8b8de966150bf872b4b695c9983df519c909811954d5d76e99ed0d5f1860247b/115b298a52a9362706ddd1e493de09443dd8ac2b0c3e4e5e8b6bb295598db05d/g' protocol/src/lib.rs
sed -i 's/0a402d812314646ccc2565c315d1429ec1ed130ff92ff3f48d948f29c3762cf1/32e15c20a09591b6600c778752a582fed444444fd0d3317613555c6509ff4b8d/g' protocol/src/lib.rs
sed -i 's/e25461fb0e4c162e18123ecde88342d54d449631e9b75a266fd9260c2bb2f41d/1756deace376ece25da9825fe49f76a9272a89a7b746c83ca2c4016f5a30ead4/g' protocol/src/lib.rs
sed -i 's/97771ce2ce17a25c3d65bf9f8e4acb830dce8d41392be3e4b8ed902a3106681a/15e26b12238d66ebc4cb72d16a62a8bb404c94d31bbe3b1d22a01b851e935010/g' protocol/src/lib.rs
sed -i 's/2e7022b4eae9152942f68160a93e25d3e197a557385594aa587cb5e431bb470d/c135367f39b24a9cc9b73ad628fba1887737f5686062c4c36146e76849828a50/g' protocol/src/lib.rs
sed -i 's/613f85a82d783ce450cfd7e91a027fcc4ad5610872f83e4dbe9e2202184c6d6e/ffa25ddf7cd4cd10a47f6c3b32a54ee882837058e31677d3958539f4f23e4616/g' protocol/src/lib.rs
sed -i 's/cb5de4ed1083222e381401cf88e3167796bc9ab5b8aa1f27b718f39d1e6c0e87/12f9b3ebbf743f6b93c7d0f4f20259fac2a27ea6735fd9ef2e2699049af60fcc/g' protocol/src/lib.rs
sed -i 's/b709dea25e0be287c50e3603482c2e98/4dfac3b0a99401f6aad1a8df3cd7dd05/g' protocol/src/lib.rs
sed -i 's/1f677e9d7392ebe3633fd82c9efb0f16/e5d4905a8b6a5d18ec6cebbdecd703d3/g' protocol/src/lib.rs
sed -i 's/889f339285564fd868401fac8380bb9887925122ec8f31c8ae51ce067def103b/fc2431beb9a666bf888df0662276a4b6a1af5061072992ef408f2b686c86a2ac/g' protocol/src/lib.rs
sed -i 's/7c4b9e1e6c1ce69da7b01513cdc4588fd93b04dafefaf87f31561763d906c672bac3dfceb751ebd126728ac017d4d580e931b8e5c7d5dfe0123be4dc9b2d2238b655c8a7fadaf8082c31e310909b5b731efc12f0a56e849eae6bfeedcc86dd27ef9b91d159256aa8e8d2b71a311f73350863d70f18d0d7302cf551e4303c7733/1a7f3fb83ad2b050b663b8df6b7c2cc2d8e169a869a58bf7ef5ab5db97a505c84a812e100d9445da4fc39a1176d6aed3995f6868631224b86f10603217c8d13270e0c6d054ad9e0d0b7dc0c8e59a37cd05a0a45faa14b4ffc8d12b641f62e6f1b71c1f72b737e9ce3fe74be779b25e70bf11d98766b3876d0fa28d3c669087fc/g' protocol/src/lib.rs
```

Closes rust-bitcoin#158
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants