Skip to content

Conversation

@lidel
Copy link
Member

@lidel lidel commented Sep 12, 2025

Shows the AgentVersion from libp2p identify protocol below successful connections. The agent string is sanitized to ASCII-only and limited to 64 characters for clean terminal output.

The goal is to bring visibility into software versions that successfully host the data.

Demo

2025-09-12_08-30

Shows the AgentVersion from libp2p identify protocol below successful
connections. The agent string is sanitized to ASCII-only and limited
to 64 characters for clean terminal output.

- sanitizes non-printable chars to underscore
- relies on Go's json.Marshal for proper JSON escaping
- displays agent version with green checkmark when available
@lidel lidel requested a review from 2color September 12, 2025 06:37
@lidel lidel marked this pull request as ready for review September 12, 2025 06:38
daemon.go Outdated

// sanitizeAgentVersion removes non-printable characters and limits length.
// The Go json.Marshal will handle proper escaping of quotes, backslashes, etc.
func sanitizeAgentVersion(version string) string {
Copy link
Member

Choose a reason for hiding this comment

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

What are we protecting against here?

If it's JS injection, we can simplify with html escape (html.EscapeString)

Copy link
Member Author

@lidel lidel Sep 12, 2025

Choose a reason for hiding this comment

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

mostly easthetic reasons, avoid absurdly long strings, but also unicode that looks scary (ṳ̵̡̨̡͓͉̫̣͖̟͉̟̰̠̲̝̜͔̦͎̮͒͋̊͌̇͛̃̋̾̉̐͂́̈́̂̈́͋̑́̈́̌̎͆̃́̐͊͊̔̐͗́̔̈́͛͐̿̓͘͝͝͝n̵̡̨̢̡̡̡̨̧̡̢̨̧̡̨̨̢̡̡̛̛̛̖͇̗͇̱̣̙̖̤͎͚̹̱̳͍͙̩͇̣̱͕͔̮̱͇̱̻̫̮͚̻̳̹̬̖̞͖̯̮̰͎̖̠̳̯͙̙̺͎̝͔̞͓̩̫̣͚̻̺̲͙̞̭̱̭̯̻͓͚̬̣̟͓̪̲̙̦͕̹̻̺̝͕̙͓̖̟̙̗̰̟̼̮̳̳̞̳̬̦̙̬̫̱͇͉̹͉͖̺̟̳̥͕̘̮̠̙̪̗̠̮̹̥̫̜̱̞̉̾̋͐͑͗̍͂̃̓̓͌̈́̋̃́̈́͂̌͋̇͌̏͛͑͌̈́̋̑̈͌͒̽̈̾͗͂̌̊̓̀̓͑͊̇̌͋̑͗͋̆̿̋̓͐̀̀̿̌̄̓̎̾̔͊͗̾̿̍͋̏̓̆̎́͑̆̍̿̏̇̔̈́͒̊͒̈́̃̇̈́͛̔͋̀͑̋͛́̆̐͋̄͆͑̈́̀̀͗̌͐̂̂̐̃͗̔͑͗̿̃̽̔̓̎̇̓̀̽̈́͂̋̿͐̿̂͒̍̒͒͛͌̾̄̐̏̿͘͘͘̚̕̚̚͘͘̕͘̕̕͘͘̕̕͜͜͜͜͜͝͠͝͝͠͝ͅͅͅͅͅį̶̡̢̨̡̡̢̨̧̨̢̧̢̛̛̛̛̛̛̱̣̘͈̬͙̤̬̙̪̪͉̜͎͙̲̰̰̹̙̩̗̼̯̺̟̫͖͎̞̪̳̜̯̜̮͉̗̭͉͎͙̯͔͇̻̳͚͓̬͙̟̱̜̺̻̳̮̤̳̝̳̞̹̳̤̟͎̪̱̤̗̫̹̩̣͕̪̩̣̩̫̲͕͈̩͖̭̹͎̲͈̞͚̝̐̀͐́̈͆̇̔̑̊̀͗̀̉͒͗̃̏̏́̅̾̏̋̃̃́̉̈͐̅̀͌̓̒̾͋̍͐̇͋̂̽̓͗̋̈̓͂͑̉͌̋̒́̋̍̾̐̎͂̀̏͆̋̂̽͂͐̒̍̊̑̍̐͗̔̄̓͐̈́̽̔͂̍͑̌̽̌̒̽̽̈̃̋̾͗̏̓͌̒̌̇̓͋̾̾͛̔̔̇̓̈́̄͒̇̈͒̃̽͌̃̌͒̓͐̀̈́͌̀͗̌͆͋̎̇͋͆́̏̔̉̿̈́̃̈́̿͗́̓́̉͋̅͑̄̒́͗͊͗͐̔̇̊̇̓̅͂̂͒̾͋́͋͑͊̅̉̆͋̊̅̒̇̇̾̈̇̇̾͛̀͒̏̔̍͐͊̍̂͋̈́̊̋̃̑͘̚͘̚͘̚̕̚̚͘̕͘̕͘̕̚̚̚̕̚̕̚͘͘̚͘̕̕͜͜͝͠͝͝͝͠͠͝͝͝͠͝͝͠͠͝͝͝͠͠͝͝ͅͅͅͅc̷̢̢̧̧͖̪͙̟͚̺̞͈̰̼͓̟̯̼̑̾̑͑́̓̽͗̓̋͑̉̋͜͠͝ơ̴̡̡̨̨̧̧̧̢̡̧̨̡̢̡̡̡̡̧̧̢̢̡̧̧̧̢̛̛̛̹̪̩̲̙͖͙̺̝̱̻̝̗̼̻̫̹͎̙͚̭͙̲͎͕̟̰̬̥̭̯̜͙̹̫͉̗͖̣̣͉̝̺͕̭̟͇̹̭̻̞͇͙̲͓̭̤̟͓̳̻͉͚͚̱̖̗̠̳̦͚͇͍̭̠̫͉̲͕̦̙̪̺̫̙̩͉̯̥̠̜̣͔͔͚͉̹͚̥̰̳͓͚̜͖̖̗͇̹͔̫͖̩̹̰̰̭̫͉͓̮͔̞̰̭͈̜̞̼̫̼̖̭͕̹̯̲̞͍̫̩͍̠̳̜͕̮͇͈͎̞̫͍̙̻̙͇͈̺͇̣̼̗̰̥̝͉͉͕̦̙̘̱̞̼͉͇̥̗͖̫̮̘͈̼̠̻̜̖̝̜͈̦̮̥͉̩͇̰͎̤̰̟̩̰̻̮̜̖̭̹͎̠͇̮̹̟͕̺̯͍̦̝̲̗̭̖̤̮̭͍̝̳͍̞̱͚̮͕̖̅̽͐̈͆͒̿̇̎̽͆̑͗͊̃̊̈́̆͌̑͆̓̌̌͐̂̄͆̅́́̂̓̒̈́͆͒͌̓͂̈́͒̏̂̈̀́͆̐̄̐̈́̊̑͌̽̌̄̋͐́̊̽̀̽͛̅͛̀̾͒͒̅͐͋̑́͂͋̀̀̒̌̿̅͗͂̅̋̀̔̾̋̀́̌͛̇̾͋͊͑̑̄͋͊̔̃̋̒̓́̊̿̎͌͗̓̌̊͛̐͌̓͛́͌̉͌̉̍̉̅͒́́̇̓̓̊̉͑̍͊̂͛̇͊̃̉̒̉̏̏͛̃̎̐̿̓̌͐͂̇̇͂͌̓́́̓́͒̊̉̍̿̀̎́̂͂̀͗͑͒̾̽̓̽̐͐͑̽͋̃͒̈́͑̄̆͆̈́́̈́͑͛̉͌̅̃̋̔̾̈́͆̆̂̃̔̿̋͐̽̀̌͗̈́̌͗̏̄͗̐̚̚͘̚̕̕̚̕̚͘͘̚̚͘͘̕͘̕͜͜͜͝͝͝͝͝͝͝͝͝͝͠͝͝͝͠͝ͅͅͅͅͅḑ̵̧̡̨̨̨̧̛̛̛̛̛̛̼̺̣̣̭̟̜̣̦̣̥͖̰̻̱̩͖̪͙̠̣̖̜̜̝̙̥͈̥̣͚͈̣͉͙̩̦̗̩̠̝̤̱͍̹̣̟̙̪͕̙̰̟̣̩̦̣͙̦̦̥͖̟͈̩̙͔̠͈̹̬̥̯̼̺͚̥̮̦̩̦̜̳̟͎͉̱̼̝̣̘̮̙̗͙̼̳̻͒͛̉͂̈̽̆̃̇̾̽̈̋͂̽̾̀̾̌͋͐̑́̆͌̋̈́̽̆͒̔̃͊͋̌̒̏͆̂̆̔̈́͛̍́̍̋̓̒͌̆͗̑̔̆̀̈́̈́͛͑̐̀͋͊͌̿̋͂͐̃̀͊̉̀̈́̎͊̃̒́͒͌͌̈́̈͂̽̑͊̽̋͑́͋͊̇̂̃͌͗͊͋̾͂͋̆̎̄̅̑̎̆͆͑͑̇̋͂̾̀͋͌̄́̎̿͊̀͒̓͊͋̋͊̽͛̊̀̏̎͊̎̎͗̉͗͆̒̒̌̆̏̍͑̂͑̂̒̍̐̃͑̈́͐̉̃͗̊̍̊͂̀̌̈̏͛̍̇̉̀̈͑̀̊́̂̕͘̕̚̚̚͘̚͘̚͜͜͜͜͝͝͝͝͝͠͠͠͠͝͝͠͠͠͝͝ͅͅͅe̷̡̧̧̨̛̛̛̛͔̘̗̠̹̟͙̥̦͔͖͈͉̩̪̜͈̣͚̙̟̬̻͈̰̠̼̭͕̫̱͈̹̩̫̫̙͙̭̼͖͕̥̭̙̠͇̯̯̜̗͚̼͔̤̟̤͓̯̹̅̐̄̈́͗͑́̍́̉͊̀̂͊̈́̑̍̈́̐͒͐̃̈́͂̄̈́͋̍̍̔̅͋͛̅̾͂͗͆̈́̿̓͆̓̓͑͑̉̈̏̀͛̓̽͊͆̈́̈́́̆̒͂̓̋̓̊̀̎̈̔̏̅͌̀͌̿̾̄̽̌́̓̌̓̿̀̀͂͌̌͒̈́́́̈́͛̈́̄̆́̒́̊̇̊̀̈́͗͐͌̉̇́̊̔̓̈́̽̉͑̈̓́̔̓̂̓̌͑͂̐͂̈́́̓̆̒̓̋̐̄͑̓̃́̾̌̇̓̆́̀̒̏͒̿̆͊̎́͌̇̌̌͌͋̓̿́̐̋͊̆̚̕̕͘̕̕̚͘̚͘̚͜͜͝͝͝͝͠͝ͅͅ ̵̡̡̧̢̢̨̨̧̢̗̖̹̻̞͉̺̤͕͇͖͖̜̝̘͚̠̺͙̥̟̺̳̩͍̭͙̯̙̭̠̱̞̳̤̺̺̦͎̠͇̟͕̹̙̬̬̣͔͈̞̫͇͕̘̻̞̰̮͉̗̩͎̗̜̖͓̳͍͕̻̭̝̣͔͚̺̩̣̘̤̬̜̖̞̙̼̹̝́̌́̏̍̕͜͜͜͜ͅͅc̵̡̛̟̩̫̓͐̈́͗̾͆͛̿̆̄̓͝͝à̸̡̧̢̮̩̲͔͎̲̯̦̟͖̱̩̠͕͚̙̗̟̙̱̥̮̙͇͍̦̜̭̬̤̮͍̫͕̹͖̦̗̖͙͎̳̭̰̳͓͙̳̙̣͇̻̙̻͔̖̻͕͚̮̗̤̻̥̫̱̼̤̻͓̦̩͈̤̥̎̎̐́̃̃́̀̌͗̋̀̾͋̂̓͆̈́̅̏̅̍͊̄̇̎̊̓̕͘̚͜͜͠͝ͅͅͅṉ̵̨̢̨̨̡̢̢̛̛̛̛̛̗͈̠͈̻̩͚̘͔̣̺̜̜̠̹̠̺̫̻͓̤̲̞͇̳̝̹͔̲̤̬͔͇͙̜̼̮̹͇̥͎̩̘͍̗͕͇̩͇̦͎͎̞̣͉̣̳̲̣̼̩͍̟̗͓̺͈͔͇̦̭̗̤̅̆͌͆́̃̐̋̎̏̀͒̋̿͂̄̃̉̑̓̏̀̂̾̅̿̉̿̈͋͆̐̑̍͒̉̐͐̈͋̊̉̋̔̐̋̑̐̆͒̂͒͑̇̈́͛̏͂͋̒͊̍̔̄̊̇̎̔̈́͐̄̌͋̑̐́̂̔̾̊̏̿͐͋̃̑͋̄̈́̓̌̉͊̑̊̏̌̈̀̂̏͗̏̋̒̂̌̉̄̈́̑̾̐̂̈́͗̑̔̃͛̓̂̾̅̂̅̍̏̈́̀̄̾̓͌̐̍͊̏̇̎̀͒̂̉̊̂̍̎͐̈̋̐̍̒͌͂̊̐́͆̇̿͗̋̿̓̽̀̊̽͛͗̈́̓̊̍̆͛̉́͛̐͋̚̚̕͘͘̚͘̕͘̕̚͘͜͠͝͝͠͝͝͝͝͝͠ͅͅ ̴̨̨̢̡̡̡̧̡̢̡̢̛̛̛̛̛̙͎͉̝̤̬̣̟̪̞̹͍͕̭͉͈̺̺͓̻̺͔̙̙̱̰̖̟̩͖͙͙̜̞̙̤̣̩̮̲̲̮̱̮͍̬͕͈̰̳̹̰͕̝͈̩̰̮͖̪̼̮̞͚̻̥͓͖̮̮̱̪̲̬̞̺̜͎̦͙͓͓̮͈̰̻̩̜̥͍͈͔̣̺̬͈̺̣̦̥̦̤͚̻̹̍̽̏̑̊͑̾̂́́̽̈́͊͗̔́̑͋̓͆̀̏̔̓̈́͆̒̏̊̽̿̔̀̂͑̔͒̀̑̊̇̍͋̂͊̊̾̒̅͋̈́͆̈͂̓̂͐̋̇͋̓̽͆̈͆̂̋͒̐̇͒̽̒̈́̑͑̈́͂͌̀̇̏̎͑͗͂͒̈́̅͌͆́̄̋̌̅̾̾̍̄̍̽̔̌̎̓̎̀̾̾̈͗̋̐̄̀̋́̿̾̉͆͛̈́͑̆͑̇́͐̄̇̈́̄̎͗͐̔̓̆̇͘͘͘͘̕̕̚͘̚̕͘̚͜͜͜͜͜͠͝͝͝͝͠͠͠͝͝͠͠ͅǎ̷̢̢̡̡̨̬̠͍̹͖̰͙̝̪̭̲̘̘̟̟̹̙̼͔͈͕̳̩̱̙̥͎̙̱͖̙̬̳̝̠̺̣̯̝̥̲̳͍̱̠̮͎̰̗̪̖̜̬̺̰͖̥̗̞̝̝͖̥̭̼͔̯̤̦̙̟̜̺̤͙̗̝̜̥͎̳̮̲̥͔̘̞̟͕̱͈͖̺̠̓̋͗̒͛̈̇̏̉̓̈́̔͂̽̉͒̒͌͊̉́͐̉̅̐͗͛̿̾̽͊̅̒͛̔̓̓̅̂̐̆̌̌̇͆̾̉̓͌̓͋̿̔͌̒̂̅̍̄͌̏̏̒͂͐́́͛̌͒̒̃̊͐̓̐̆͘̚̕̚̕͘̚͜͜͝͝͝͝͝͠͝͝͝͝l̵̢̧̨̡̧̡̧̧̧̨̡̨̡̨̡̨̡̡̧̨̛̛͎̯͍͍̥͔̱̘̭̯̗͙̬̳̮̖̯͎̜̻͕̳͎̣̻͓̟͖̘͓͎̱̩̦͇͎̺͇̗̬̻̝̲̘̳̩̭͈̪̗̳̜̹̯̬̺̫͖̟͈̤͔̙̖͍͙̹̰͖͙̞͉̳̺͇͖͇͕̦̞͍͖̜̼̤͙̱̩̠͕̳̥͈̫̪̬͈͎̜̭̦͉͖̺̝̝̻̮̪͈̰̮̻͕͕̩̠̟̖̱̜̜̱͎̺̤̣̤̦̹̜̩̮̙̱̰̫̭͈̯̬̱͇̰̰̤͉̟̥͔͚̝̞̦̽̅͒̈̒̈́̉̅̿̏̿̋̽͌̈́̽̒̂͆̽̏̄̀̍́͐̅͛̐̀͗͌̒̋͒̌̀͛̀̉̽̀͑͂̀̈́͌̃̈̀̊̎͘̕̚͘͘̕͜͜͠͝͝͠͝͝͝͝͝ͅͅͅͅş̸̡̢̧̨̨̧̨̧̡̨̡̨̨̧̧̢̧̧̡̧̡̡̛̛̛̛̬̝͎̺̫̩͕̰̘̝̻̜̥̝̘̖͕͙͙̟̗̗̫̝̺̬̙̤͙͍̣͔̠͖̩͈͖͎̺̪̜̺̺͉͙̜͇͔͙̮̣̩̩̮̗̥͉̠̳̹̪̟͇͖͙͕̝̘̯͔̩͙̦̰͖̞͉͍̺͚̥͍̖̼͈͔̞͉͚͖̰̪̳̣̼͙̳̫̪̪̲̠̜̹̟̺̥̞̳̟͔̻̠̜̥̙̭̩̻͎̘͉̬̲̺͔̱̲̣̮͙͎͎̞̗̙͙̪̮̋̏̔̓͐̾̐͑̀͑̈́̊͌̀̑̿̏͌͛́̊̔͗̔̌̐́͑͛̊̎̀̐̐̾̈́̐͌̋́̈̂̂͌̂̈̉͗͗̈́͐͛̑̅̔̄̄̐̒͂̃͐̇̒̌͂̏̊̏̊̏͊̈́̾͑͊̋́̓͂͛̅̿̔̆̀̃̾͂̾̾̈͂̃̽͋̈́̌̽͋́̅͊̽̎̽̏̓̄͌̃͊͊̋̇̌̓̈́́̊͛͋̉̍͒͊̾̈́̂̇͊͐͂̃́̌͌̔͌̑̑̃͆̊͒̈́̋̌̂̇̀̂̀̔̽̾͛̉͊̆̿́͂̋̊̾̾͊̅̂̉͗̕͘͘̕̕̕̚̕̚̕̚̕͘̕̕̕̚͜͜͜͜͜͜͝͝͝͝͝͝͝͠͝͠͝͝͝͠͝͝͠͝ͅͅͅͅo̷̡̨̢̡̧̧̨̨̧̨̨̡̧̨̧̨̧̧̢̢̨̨̨̢̢̡̧̧̧̧̩̫̜̰̞̠̫̪̦͔͉̭̖͈̺̥̖̪̫͎̰͓͉̥̻̫̮̥̫̰͚̞̠̬̟̟̩̯̲̲͔̜̬͈͇̩̟̣͔̺͎̜̻͚̰̟͉̪̯͍̱̩̻͍̙̙̬͙͍̘̖̳̻̺͍͓͙̺͎͖̠͎̭͕̬̠̯͇̗̫̱̱̺͕̖̝͖̮̟̮̻̠͖̠͍̳̮̠̗̮̝̫̥̦͙̯͚̣̞̩̬͓̻̬͈͔͎͈͉̠̜̞̬̫̘͕͍͕̳̙̙̰̠͚̥̟̟̹̤̝͙͕̫̦̪̘̠̜̣̝̯̘̝̘̫͇̮̺͕͎̟͖͍͎̩̠͉̞̱͙̥͈͎̻͕͎̳̠̭̖͍͇̜̳̮͈̥͓͚͍̙̭̜͚̪͈̦̟̼̮̭̖̫̩̱̭̞̙̻̻̦̘̱̬̬̤͔̬̱̜̜̹̖͙̼͚͇̹̰̻͕̖̹̤͖͉̘̰̬̞͇̽̐̃͂͆̄́̉̌͊́̊͆́̽̓̊̆́̑̉͆̌́̾̆̀́̐͋̒͗̋͘̚͘͜͜͜͜͜͜͝͝͝ͅͅͅͅͅͅͅͅ ̶̨̧̢̡̡̨̡̢̢̧̢̡̧̢̢̢̧̧̢̢̡̨̧̢̨̨̧̧̨̛̛̛̛̛͔̥̰̟̩̯̺̯͔̹͍̜̖̗̘͖̬͉̩͔̟͔͇̟̱͚͔̗̹̻͍͉͚͔̫̲̱̜̹̯̭̳͍̮͕̼̥̤̘̞̯̲̺̖̬̖͇͚̻̣͙͓͙̣̩̠̹̫̱͇̬͍̘͓̱͇̖̲̞̦͈͎̯̞̠̹̮̰̺̻̝̞̩̩̱̱̺̞͎̹̠͈̠͙͇̘̺̬̤͎̜͚̱̤͚͔͈̜̜̭͚͖͓̜͇͕͕̬̣̭͇̝̹͚͙̜͔͉͇̞̝̮̲̝̠̥̖͇̠͓̫̥̟̳̤͚͎̣͇͖̯̱̠̗̖̤̣͇̥̳̬̜̟͓̰͇̣̤̯̖̘̼̹̱̗̻̼̫̖͇̬̳̥̗͓̻̝̯̺̺̪̫͎͖̲͇͕̬̯͎̟͕̜̖̣͓̞̬͙̫͓̙͚̠̖͇̹̜͓͖̦̬̥̖͚͉̱͕̜̙͚̬͗́̆͂̄̽̈́͌́͗͐͐͋̔̋̈̓̉̆̽͛͐̉͂̽͒̏̐͋̓̽͑̀͗̄̎̔̀̑̏̌́͊̈́͐́̽̾̿͂̊̃̑̔̃̈́͐̍̌͋͊́̓̅̓̈́̎͋͛͌̀͐̌̍́́͘̕͘̕̕͜͜͜͜͜͜͜͜͜͜͜͜͜͝͝͝͝͠ͅͅͅͅͅͅb̸̢̨̢̨̢̧̡̡̨̨̛̛̛̛̛̛̛̛̛̦̯̱̲͚̫̭̦͉̖͖̗̫͎͔̙̺̟̼͙͉̟͇̞̭̤̝̯̳̭̘̺̲͕̭̥͇̮̠̪̮̯̞̲̫̲̖̬̥̳̥͚͇̳̞̪͇̹̱̻͈̼͔̮̞͇̣͖̗͙̼̗̱͕͎̜̘̫͇̭̜̣͉͚̥͓̮̘̻͓̻̜̪̟̪͍̞̱̣̦̝͉̼̼͓͕̙͈̯̲̩̼̙̒͌̀̓̏̾͐͂̋̉͋͌͊̓̂̿̀͌́̃̇̈́̇̀̿̇̈̾̄̄̀̆̌̐̋̾̓̂̀͂͌̈̿̅̊̏͊͒̑̊̇͌̇̇͆̅̆̇̑͛̐̈́̇̍̂̒̇͊͒̀̊̏̆̊͑̈́̄͐̐͒͊͆̽̎̈́̂̏̾͛͌͆͂̎̂̎́͋̂͑̓͒̎̿̌̓̓̉͆̆͒̇̒̔̍͗̐͛͗̂̓̀͑̊̊̀̋̌͒͂͛͌͂̎̋̅͋̇̋̈̂͗̉̈́͊̓̃̇̆̔̃̈́͛͒̊́̀̏͗̉̃̎̀̂͑͐̃̑́͐̋̑̎̀̊͒͒̓̄̈́͆͆̔̓̋̓̋̒͛̾̆̆̀̑͌̉̓̔́̌̈́̓͊̔̈́̋̿̆̂̏͑͒͑̈́̈́̚͘̕̕̚̚͘̕̚̚̕͘̚͘͘̚͘͜͜͝͝͝͝͠͝͝͝͝͝͝͝͝͝͝͝͠͝ͅͅͅṛ̴̢̡̡̡̡̧̧̨̧̨̡̡̨̢̡̡̨̛̛̛̛̛̛̛͚͔͙͓͓̙̭̥̣̟͍̘͉̭̜͖̝̣͔̲̦̺͉̖̱̟̗̼̬̝͕͔͉͇̫̟̲͖̝̣̰̦͖͕̺̹͇͚̬̰͓̮͖͇̯̣̞̥̗̜̭͔̙͉̝̬̹͇̝͎̱͇̻̺̝͙̤̬͎̤̩͙̬̦̦̤͖̞͕̼͍̼̞̹͉̮̱̹̗̬̗͕̣̰̳̩͕͓͔͇̫̦͕̼͍̙͕̙̭̞̘̲͙̰̩͉͚̝͊́̎̏͆̓̉͒͂̅̅̒̉̍̑͆̆͗̍̈̎̈͐͒̓͑̔̀͊͑̽̈̀̾̌̇̃̉̑͌̊͋̄͛͌͆́̄̒̍̉̋͆̈̀̉̊̋͆͂͂̎̃͐̓̌̋̊̉̉̀̇̓́͒̈́̆͂̾͑̔̑̀̄́̒͆̄̃̔͑̔̽͆̌̏̾̃̈́͊̽̒̈́͑̍̈̂́͆̈́̏͛͒́̊͋̈͋̄͊͂̋͊̽̅̏̂̓̐̿͊̽̀̃͋̈̐̄̓̀͑̂̇͋̊̾̑̈́̐̽̎̀̑̆͋̈́̒̆̓̃̉̓̉̈́̾̈́͗͊͛̉͊͗̒̾̈́̀͗̽͒̀́̍͒̍̈́̈́͛͛̌̊͊͗̒̆̄̓̽̀̀͑͒͋̓́͂͗̎̄̓̽͂̎̊̈́͘͘̕̕̕̕͘̕̚͘͘͜͜͜͜͜͝͝͠͝͝͠͠͝͝͝͝͝͠͝͠͝͝͝ͅi̸̡̨̢̨̢̛̛̛̛̛̠̗͍̜̜̪̯̣̫̦̞͇̙͔̤̱͍̝͖̭̰̤̰̳̻͇͎̠̱͕͖̞̰̩̼͔̞̺̼̻͇̩͓͕̱̭͎͙͒͂̈́̓̏̋̌͊̈́̍̌̈́̈́̋̀͒̓͋̆͐̊͗͒̎̇̆͒͗͌̀̿̓̅̑̔́͂̏̍̿̄̎̎͒̈́̔͛̉͗̑̋̓́͂͌͋͊͗̂́̾̾̍̏̌̋̇̿̈́͗̈́̓̈́̆̓̈́̄̌̑̐͂͐̒̔͑̈́̍̿̈́͌̔̈́̂̉̆̀͊͊̄̾̃̈̍̈͋̋̌̅͑̉͗̓̒̐́̉́̅̐͌͋̽̉̈́́͒͌̋̈́̓͂̀̆̋͗́̂͗̀̇͂̐͆́̐̎̾̒̋͐͆̅̔͛̈́͐̐͊́̌͗̿͌̑̾̓͒̒̌̏̇̀̒̈́̐̊̉̏̋̾̅̈́̂̕͘̚͘̚̚͘̕̚̕͘͜͠͝͝͝͝͝͠͝͠͝͝͝͝͠͝ͅͅņ̵̛̱̪̙̺̻͚͎͚̤͙̠̹̜́͆̊̽̈́̋̾͑͊́͐̂̿͑̀̍̾̋͌̔̀͛̂̌́͌͐͑̓͂͑̃̂̋̋̉̽̏̊͛̈͐̓͑͒̚̚̕͜͜͝͝͝͝ͅġ̶̨̨̢̨̧̡̛̛̛͕̟͔͉͖̤͔̯̖̺̰̖̭͇̦͇̬̲͖̪̻̗̟̥̺̼̬̲̾̌͊̽̌́̒̈́̋̿̈́̆̍̃̓͐̄̑̂̆͌̂̑̐͆͐̍̈́́̇͊͗͊̋͑̐̊̔̾͂̃̌̓̆̊͌̏̋̒̈́̾̐͛͌̓́͋̔̾̽̍͑̐̑̒̌͛͊̾͂͐͑͊̅̀͊̀̀͑̊̇̿̌͆̾͋͐̄͒͊̏̉͗͋̿̏̃̂̓́́̅̌̄̇̀̈́̄́̌̀͋̓̉̓́̏͊̄͑͂̃̔̈́̃̋̉̏̐̃́͋͐̂͛̀̀̂̉́͊̆͂̄̏̽̐̒̐̉̏͛͛̇͒͋̊̀̃̆́̽̊̈́̂̊͛̇͗̈́͂̐͐̂͐̅̑͂́̋͂̃͒̑̂͊̋̀͒̿̒̈́́́͑̏̄̌̚̚̚͘̚̕̕̕̚̚̕͘͘̕̚̕̚̕͘͘͜͠͝͠͝͠͝͠͝͠͠͠͝͝͠ͅ ̵̡̡̧̨̨̡̢̨̧̧̡̧̧̨̡̧̨̢̢̢̨̡̧̡̧̛̛͎͇̹͕̺̙͎̖̲̘̫͚̰̝̘̪͖̻̦̘̠͔̮̯̭͍̤͚̠̩̥̣̞͙̬͇̩̤͉͈̙̝̣͕̞̻̮̳̘̹̲̻̼̬͖͕̻͉͍̙̥͙̦̖̜̠͖̬̼͔̤͎͈̘̦̰̪̘̜̟̣͚̘̖̣̠̩̗̳͚̤̭̜̟̺̝̗͕̰̫̖̞̥͓̫̠͈̩͈̯̱̩̖͔̟̰̫̥̟̘̙̦̺͓̞͖͕̹̲̱͓̯̺̝͇̮̥͚̗̗̯͇̙̗̭̲̬̼͇̭̱̺̩͔͉̣͙̳͔̤͈̥̺̻͔̤̯͚̻̯͎̳͔̻̹͖̩͍̙̜̲̙̫͉̰̹̠̙̬̣̟̭̞̮̩͓͉͈̲̲̼̠͕͍͙͖̲̱͔̯̦̯̳͚̜͎͔̠̣̙̬̺̬̺͎̮̯̩͔̘̬̰̲̝̫̻̮͇̠̙̞͉̣͔͓͓̞̫̄̎̎̓̑͛̀̃̓̊̉̇̔͑́̈́̐͊̔̎̄̀̓̏́̂̿̇̅̽͒́̅̌̂̒̄̐̏͗̂́̏̃̒͋̈́̓̾̍̍̊́͂͋̈́̓́͒̎̌̈́̃̋̓͛̌͒̅̔̋̈͛̋̄̉̅̀̏͌̊͂̌͆́͗̊̀͗̂͆͑̚̚̕̕̕̚͜͜͜͜͜͜͜͜͜͝͝͝ͅͅͅͅư̴̡̨̧̧̨̨̛̛̲̦͖̱͉̝̩̥̭̖̯̼̺̻̟͈̞̲̪̙͈̠̩̱̟̪̭̙̝̜̹̲̰̠̹͎̙̫̖̣̗̭̮̟͊͛̋̇̇͒̉̓͛̅͐̎͛͆̊͋͑̀̄̓̆̾̈́̀͂͗̒̔̅̐͆͂͌̅̈́̍̏͑͒́̈́͋̽͊̎̍͗́̅͌͒̇͒̾͂͐̎͛͗́̉̉͒̈́̍͛͑̊̽̓̐̋̈́̋̅́̆̽͑̓̊̿̈́̏̒̎͂̚͘̕̕̕̕͘̕̕͜͝͠͝͝͝͠͝ͅͅͅņ̸̡̢̛̛̛͎̘̥̗̯̭̮̱͎͙̲̰̤̗̥̳̗̟̟̮̫̦͚̝͙̥̟̤͍͓̲͇͇͍̲̯̭̝̲̮̤̗̖͖̫̟͚̜̗̗̪̩͈͎̫͇͉͚̍̆͋̓̽͂̓͂͗͊̊̈̃̎̃̑̓́͂̔̈͛͊͑͒̆͂̀̒́̈́̌̓͋̀͊͛̎̈́͗̃̌̽͗̉͒͐̓̔͆̓͂̃͒͌̅̈́̽̽̓̑͂̎͆̒̉̀͂͐̋́͊̋͐̃̄͋̓̆̈́̀͌̊̊̈̓̾̓̄̇̌̓̈̊̓̀̑̅̐͊̀̿͒͌̀̀̔̌͊̏̋̂̐͋͊́͌̓͛͗̈̿͒̈́͊̐́́̌̀͑̇̾́̌̍̿̋͊͋̀͌̓̇͆̽̈́̋͒̾͘̕̕̚̚̕̕̚͘̚̚̚͜͜͠͝͝͝͠͝͝͝͝͠n̴̢̨̡̨̧̡̡̨̡̧̧̧̡̢̡̧̧̡̥̗̩̭̳̱̜̩͈̰̮̹̹̼̲̻̱̝̲̱͙̜̤̖͍̼̱̗̗̤̤̰͔͖̰̩̮̹̺̩̬̥̟͓̜̘͓̜͇͇͎̦̩̯͇̲̩̗̳̞͕̭̣͚͍͎͙̲͍̮͇̣̩̖̲̤̻͓͎̺̱̪̪̱̺̙̮̲̭͎̥̰͇̺͇̖̝̪̻̙͍͖͕̮͔̟̼̲͚͕̻̤̱͕͖̯͖̤͙̠̪̣̦͚͔̭̟͚̜͎̬̪̩͚̙̳̘̣̝͙͙̲̰̭͕̝̯̣̞̙̲̬̪̥̪͇̺̫̟̥̟̬̺͕̝͈̖̩̹̗͕̰͉̣͕͎̯̞͎̍̃̽́̀̀̈͌̄̇̉̐͗̔͐̀̆̇̇̎̅̍̿̚̕͜͝ͅͅͅͅȩ̸̡̨̛̙͍̼͉͇̘̩̮̤̘̻̭̹̭͖̱͔͔͎̠̖̯̰͚͚͚̫͍̖͙͓̼͓̞̠̻͍̯͚̼̠̯͈̜͑́͒͌̊̀́̀͋̔̿̈́̎́̀͆͗́͋̈̓́̾̅̀̋͌̈́̍̇̋͒͗͊͗̑́́͌̒͌͑͘͜͜͝͝͝͝ͅç̴̡̧̡̡̧̡̨̧̢̨̡̧̧̢̢̡̛̲͙͕͖̠͚̭̗̫̠̤̜̲̰̤͇̺͓̣͇̮̱̳͇̯͖͉̺̞͕͎̞̹̲̖̝̗͎͇̮̝͇͎̫̣̯̹̘͎̹͔̝͓̹̘̗͖̺͕̮̭̤̪̯̲̲̺̤̫̪͇̙̗̘̰͖͖͈̼͓͓̹̠̗͍̤̫͔͙͔̯͉̹̟̱̥͇͎̻̺͚̞̳̣̩̲̹̜̭̜̹̞̩̯̤̖͈̗͈̦̗̗̰͉͇͖͇͖̲̻̰͈̜̲̙̮̘̫͕̰͓̠̮̜̩̪͈͖̬̰̘͎͓̘̪͉̯̙̬͍̖̱̪͉̖̰̖̥̞̩̹̪̻̰̘̲̰̜̳̘̹̈́̐͗͂͋̆͂̾͒̉́̑̑̎́̊͐̉̀͒̌͐̃̃͛̅͂̋̀͌̈́͆̿̚͜͜͠ͅͅͅę̴̨̧̡̨̛̛̛͍̹̗͉̭̜̻̗͔̯̦̜͎̣̝͚̠͔̤̣̹̪̲͎͕̣̹̹͔̖͚̘̫͚͚͙̙̻͓̣̺̪̗̘̺̠̭͕͎̦͓̦̫͙̙͚̦͖̪̙̘̱͎̯̤͖̝͍͓͍̰̣̈̐̉̈̽̔̈́̿͋͌͛̈̍̔̓̅̎͌͑̓͌͋͆̋͒̾́̇́̎̀̐̑̿̀͛̽̆́͗̋̈́̿͆͒̂̒͊́̈́̂̇̃̏̐̿̿̄͌́̈́̌̾̈́͑̈́̋̄̿̍͗͒̔͌̓̍̽̈̈̽̾̌͆̈́͐̓̈́̌͑̉̾͘̕̚̕̕̚̚͜͜͜͜͜͜͝͝͠͝͝͝ş̶̨̧̧̨̡̧̢̧̨̡̢̢̢̢̧̡̧̨̧̛̛̛̛̣̦̘̣͚̩͇̜͎̬͕͓̙̣͔̖̯̥̳̩̤̙͉̼̜̩͇̩̤̼̰̰̬͎͉͓̘̰͕͔̠͈̭̖̜̘̪̝̞̯͙̱̬͇̳͕͉͍͉̖͙̥̙͚͖͚̜̪͇̗̥̦̳̟͎͖̙̪͔̝̣̣̹̺͙͎̝͈̦̜̝͙͖̣̙͎̣̮̥͕͈̦͔̖͓̮͍͙͕̻͈͔͚̟̻͈͕̲̳͈̞̜̗̝̲̩͍̩̜̟̫̮̙̘̯̝͔͈̱̹̘̜͙̗̠̜̖̥̭̟̖̤̣͎̯̗̭͎̰̥̭̰̣̺͖̲̻͉̳̙͙͎̹̟̤̘͔̲̭̺̠̞̘̠̈́̾̅̔͋̎̓̌̾͒͋̔͌͋̊͊̂́̿̆̄̄̊̈͒̎͊̀́̅̎̃͋͐̔̒̈́̅̋̈́̇͊͂̈́̈́̊̀́̓̈͆͛̽̽̑̈̈́̊͐͐͑̀̋̈́͑́̌̓͆̀̎͋̈́͗̍̿̈́̀́̓͆͒̍͋̽̂̄̓̆̈́̎͂͆̄̽̈́̏͗̇̈́̿̎̀̃̒̈́͌̃̀̐̏́͗̔̉̆̀̀̾̿̀̒̃̉̅̐̈̂̐̐͗̓̎̑̃̀͋̓̽̄͗͒̈́̉̔͑̉̄͌̅̑͌̏́̅̉̊̓́̀͑̏̅̄͗̏̌̇̿̌̈͐̓̒̀͂̀̍̑̑͛̑̊̉̅͑̀̃͂̆̓̀̈́͛͑̎̆̍͑͌͊͒͂͛͛͑͊̈̄͘̚̕̚̕̕̚̕̚̕̚͘̕͘͘̚̕̕̚̚̚̕̚̕͘̕̚͜͜͜͠͝͠͝͠͠͝͝͝͠͝͝͝ͅͅͅͅͅs̶̡̢̨̧̢̨̨̡̧̧̧̢̨̢̛͔̯̟͚͔͙̬̦̝̠̯̹̝̝̜̥̣͕̺͇͓̥̲̞̰̮̤̪̳͖͍̬͉̩̬̜͙̻̫̻͉͙̝̘͕̗̣̤̳͉͔̝̜̯͔̲͍̜̣̘̪͚̩͇̭͙̦̼͙͎̲͖̠̩̜̣̰̞͚̭̹͔̝͇͉̱͔̭̫͍̟̭̪̫̙̲̳̘̻͙̰̪̩̼̞̳̞̭̲͍̥̫͚̝̰̠͚̣̪͇̫̲̬̭̦̪͎̰̝̗̠̲̻̤̘͇̼͔͈̻̟̮͕̖͉̯̩̙̖͙̞͍̜̱͍̣̦̤͉͍͙̟͇̩͎͎̯̙̦̥̥̦̬͎̪̯̰̗̜̮̟͚̣̠̺̦̼̟͙̪̝̲̫̝̺̗̖̗͓̹͉̩̪̼̳͕͖̱̮̖̠̹̠̩̗̱̠̘̞͎̘͚̮͙̤͓̦̪͚̥̠̹͍̙̦͇̲̾̽̅̇̍͗̃̌͐̀̉͑̌̂̈́͛̑̎̉̆͋̎̽͑̐̆͊̏͗͑͆͊͐͊̈̋̋̍̇͒̇̂̾͂̀̀̿̓̕̕̚̕͘̕͘͜͜͜͜͜͜͝͝ͅͅͅa̴̢̢̡̢̨̨̡̛̛̛̛̛̛͚̼̲̳͍̻̟̱̙̦̩̰̩̱̗͕̮͚̪͎͓̭͔̩̘̟̣͍̺͍̞̦̩̲̮̰̺̝̹̪̻̝̳̜̘̤͖̦̗̩͔̠͌͋̉͊̏̀͌̒̓͌̀͂̅̓̄̽̌͑̊̐̈́̿̉̋́̄̇̾̀̾̅͆͊̄̓͒͗̋͑̀̌͑̆̈́̀̌͂̅̿̋̆̉̓̌̓́̃̄͐̅̊̒͆̾̌͒̀̊̔̀͆́̋͂͒͂̎̾̀̀͑̑̌̊̽͆̔͛͑̐͐̌̎̇̑̍̋̅̒̐͌͂̓̀͑̋͊̉̅̅͌͋̂́͛̀̔̈͆͒̔́́̒̒̓͌̈̔̅̆̆̇̅͐͛̍͒͆̽̐̽̾͂̒͋͊͂́͂̓͐̂̍̔̏̈͆̀̑̅̿̿̒̒̊̈͒̈̃̃̉́̆͗̃̈́͐̈́̓͋̿̉̓̈́̊̀̎̃̎̃͑͒̀̄̏̔͒̅̆̉͐̿͋̑̄͗̇͊̀̑̆̎͛͑̐̉̍͗͑̂̓̎̓̋͒̈́́̓̅̄͘̚̕̚̕̚̚̕̕̕͘͜͜͝͝͝͝͝͝͝͠͠͝͝͝͠͝͠͠ͅͅṙ̵̡̢̡̡̧̛̛̛̛̛̛̠̻̘̠̦͔̣͙̲̜̥͙͚̳̮͖͎̯͖̦̰̣̘̖͍͓͚̝̬̟̬̱̥͙̘͙͎͚̭͚͈̙̬̹̳̟̲̯̞̖̬͈̠̮͎̩͕̥̜͖͍͍͔̱̜̭͛͊̅̽̇̾͊̉̏̄͗͒́͊̓̂́̃̊̐̀͆̓̍́͛͋͂͌̈́̈́͂̃̇̐̓̀̔̆̑̀͂̅͒͒͛̊͂́̓͋̇́̉͐̾̓̃͑̄̉̏̒̾̉͛̆̀̆͂͐͂́̎͆͌̇̂̾̀͑̓͒̀͒̄̍̂̏̿̈́͗͆̈́͐͂̃̓̀͌͛̀̽͛́̓̏͐̒̎͂̎̈́̈́̋͐̄͆͑͋̉̊͐̆̀̈́͊̓́̊̔̋͋́̂̈̏̃̌̾͌̄̋͆̀̽̎̑̏̋͊͋̿̅̽͊̿̽̔̐͑̐͐͛͆̑͋̅̋͛͑̆̒̄͑̋̒͑̀̕̕̚͘̚͘̚̚̚͘͘̚̚͜͝͠͝͝͠͝͠͝͠͠͝͠ͅͅͅͅy̸̨̡̢̢̨̨̡̢̡̧̛͙̺̼̗̪̘͔̣͓̯̲̭̜̙͙̲̩͈͖͎͚̣͈̩̻̦̲̤͍̹̯̝̱͍͉̩͇̪͙̼͚͚͓̗̰̱̟͈̗͇̙͈̫̟͍̬͉̬͈̥͕̥͉̞͈̤͎͓̮̪͙̱̹̼̤̮̗̮̮͚̯̹̯͎͔͍̤̠̥̼̣̺͖̳̞̩̜̞̥̻͚͕̯̥̗̥͇̖̩̺̤͎͔̱̤͙̩̪̘͔̭͍͉̻̦̖̹̪̞̣̼̗͕̰̰̹̣̲̗̬̠̻͔̠͍̗̗̭̫͓͔̩͔̜͖̮̮̜̳̘͓̤͇̾̍̽̄̿͑͌̒̿͌̍͊̃̒́̀͛̈͛̒̔̉͒̔͑̐͊̈́̉̿̈́́̿̆̈́̔̒̅́̐̃̐̌͂̇̓̄̇̂̋̉͌̆̋̋̿͑̀̓̂̔̏͛͊̅͂͑̈̈́̆͐̆̑̅̍̈́͋̽̏̒̇́̒̊̔̒̉͊̈́͊̾̓̍̐̄͌̐̌͑̐̀͋̋̒̊̃͌́́̅̌̌̉͛͐̉̋̀͐̓̆͗̋̉̌̓̃̂̍̚̚͘̕̚͘̕͘̚͘͘̕̕̚͘̕͘͜͜͜͠͠͝͠͠͠͠͠͠͝͠͝͠͝ͅͅ ̷̧̧̧̢̧̡̡̨̡̧̨̨̧̨̨̧̛̛̝̱͓̪̥̱̯͕̩̘̘̻͉̘̗͎͉̟̫̞͓̬͉͚̼̟̰̖̪̜̞̹̣̫͍̻̼̭̬̣̦͉͚̤̱̯̤̯͎̖͕̱͔͓̻̞͕̭̖̻̫̮̮̼̪̗̘̲͉̰̞̲̣̣̘̗̻̰̯̫̘͙̫͓̰̬̺͚̻̳̫̦͙̤̩̳̩̟̬̞͖̥͙̱̦̖͚̬̙̘̞͖̙̫̪̻̪̭͖̰̝̰̲͉̰̱̝͚̟̺̭̻̣̲̖̥̣̯̻̗̱͉̥̙̦̥̺̘̠̹̖̘̟͔̰̘̮̥̱͇͚͓͔̤̫̫̞̖̺̩̏͋́̓́̈́̈̈́̅̌̀̏̉̑͂̓͌̉̃̊̂̂̑̉́̇́̒̒̓̔̑̎̔̄̃̏̈́̈̈́͊̌͂̂́͑̇̿́͑̎̐̋͊͐̍̊̋̃͐͑͌́̊̒͆͑̓̏̆͆̐̈́̑͐̃̔̅́̑̃̆̎̓̽̎̄͑͒̌́͋͒̎̃͊̄́͑̑̀̓̓͗̄̓̓͗̐͌̑͒̇́̓͑̈́̀͌̓̑̈́̀́̄̎̈́͒̌͒̅̇̐̃̋̔̑͒̾̄̈́̈́̄̾̆̃́̈́̑̋̈͂̓̊͒̏͛̌̎̽̈́̏͋̎̑̐̉̎͛̎͛̎́̌̓̑̓̈́̇̓̈̉̿̀͐͒͑̌̐̑͂̃̉̅̀̓́̈́͒̾̀̃̀̇̒͗͗̈̉͑̏̈́͛͆̅̾̒̇̀̐̓͊̀̌̉̓͒͒̿͑̊͆̃̊̎́̎̈̽̊̿́͐͒͒̍̕̕͘̚͘͘̕̕̚͘̚͘͘͘͘̚͘̕͜͜͠͝͝͝͝͝͝͝͠͝͝͠͝͠͠͝͝͝ͅͅͅͅń̵̨̨̨̧̡̨̡̧̧̧̢̧̢̛̛̛̛̛͉̥͎̱͍̞͖͓͖̞̞̥̞͇͕͔̜̟̜̪̩͈͕̼̩͈̤̤͕̥͇̮̜̺͍̺̤̞̝͎̬͕͚̲̠͎̤̺̯͙̰̯̞͎̙̦̲͍͚̠̥͉̫͓̟̝̥̣̦̱͈͚̭̻̜̮͍̜͈͈͖̙̣͍̪̠͔̗̥͙͕͕̝̤͈̟͔͔͔͚̩̭̙͇̼̤̮͈̯̗͙̟̤̩̩͇̗̪̠̤̥̜̥̜͎͖̳̼̜̹̘̝̰̗͚͍̙͈̪̤̲̞̮͕͚̲̗̬̰̗͔̟͈̝̟̗͓̙̙͇̘̘̩̗͚̰̦͖͈̘̙̬͓̮͖̳̤̪͓͔̻̳̘͎͈̭̣̫̙̙̙̫̫͙̗͉̒̆̎̍̓͋̀̃̽̐̒̍̋̾̽̎̎͑̐̾́̾̃̌̌̇̔́̈́̾̄̈̏͗͐̈́͐́̑̀̓̀́̇͂̈́̀̇̉̈́͂̍̈́̌͑̽̓͑̽͂̍̄̀̑͛̃́̊̍́̓́́̈́͗͐͐̀̈́̄̎͑̊̀̃́̑͌̀͑̃̎̅̂͐͛̎̃̅͗̌̆̑͋̍̓̌̆̍̓̓̔͂͂̒̅͊͆̆̀̅̃̆̃̋̆͆̋̀͑͊͌̅̈́̅̆̿͂̐͊̐̈́̊̅̈́̿̀͌̏̂͛̊̔̓̌͒̐̈́͑̇̍͂̌̌͑̆̓͊͗͒͒̂̄̽̐̐̋̓͐̑̚̕̚̚̕̚̚̕͘̚̕̕͘̚͜͜͜͜͜͜͝͝͠͠͝͝͝͝͠ͅͅͅͅơ̸̡̢̧̛̛̛̛̜̱̼̟͚͉̣̩͈͚̪̺̲̖̤̜̞̺̺͙͓̮̙̰͍̹͖͔̐̊̿͑̈́̃͌̑͐̾̉̓̒̅͊͒͌͆̍̈́̆̾̔̇̓̒͒̄̎͂̀̈́͑̌̆̊̿̄̋̌͊̾̂̀̔̈́͋̈́̎̌̃̀̈́̑́̾̓̃͊̈̎́̈́̽́̀̿̈́̏̈́̈́̉́̒̆̄̒̾̽̊͂̓̀̀̀͑͑̌̅͂͗̾̽̓̊̾͑̿͌̇̅͒̉͑̓̂̍̐̽̃̂̏̆̾́̊̄̇̃̈́̒̋͆͗͆̾͊͒̿̂͘̚̚̚̕̕̕͜͜͝͝͝͝͠͠͝͝͝͝s̸̨̢̨̢̛̛̛̺̰̹͉̜̝̗̱̹̰̤̼̝̜̺̤̘̱̻̪̠̩̙̮͔̻̰̞͖̩̦̟̹̪̪͎̮̻̬̫͔̙̩͕̮̜͖͗͋͒̓̐͆̌́͂̎̇̋͂͛͊͛̈́̋̋̽̉͒̃͊̃̐͆̍́͊̒̆̉͆́̾̔̒̿͗̈͛͑̀̒͂͂̈̄̉̑͆͛͌͋̔̌̄́̌̇̅͋͋̊̀͑̿̅͊̆̂̊̿̃͊͋̈́́̀̃͛͒̒̈́͋̉̑͆͗͒̔̅̈́̿̂̏̑̽̅̍̅̑͊̾̈̔̐̍̀̽̉̇̒́̓̔̍̽̈́̿̈̎̀͌͛̏̍̍̌̂̔̉̕̕̕̚̚̕͘̕͜͝͝͠͠͝͝͠͠͠͝͝͠͝͝͝ͅȩ̴̛̛̛̛̛̛̛̛̪̭̘̥̤͙̖͍̍̅̀́̔̂͋̈́̈͛̓̍̓̐̊̂͐͂̃̊͆͂̀̇͊͐̔͛̏̏͗́̿̿̏͑̈́́̄̑͒͆͋̿́̊̇͋́̈́̀̾̇̽̀͒͋͒̔̒̏͂́̑͌̽̇̂̈̇̀͌̒̀̒̅̊̌̉͒͌̐͛́͆͗̄͆̃̈́͛̓̽͗͊̐̀͑͊̇́̌͒̌̀̿̽̀́̈̈̓͑̒̓̓͂͂̈̔͂̋̐̇͛̒̏̐̾̒͒͒͆̓̆͐̎̿̍̑̂̀̀̽͛͌̏͂̔̉̎͑͆͊̈́́̐́̇͌͆͂͌͗͛̒̉͊̆̒̊̓̒̇́̂̀̌͐͌͑̊̂̂̋͌͌̽͗͊̀̒̂̈́͊͐͛̀̓̓͊́͛̈́͑̓̾͒̉͋̏̔̎̈́͐͂͊̂͗̈́͒̈́̉͆͌̏͗̇͘͘̚͘͘͘̕̕̕͘̕̚̕͘̚̚̚̚͝͝͝͝͠͝͠͠͠͠͝͝͠͠ ̸̢̡̨̢̡̨̡̧̨̡̧̡̡̡̧̨̛̛̛̛̛̛̙̮̣͚̦̞̗̹̪̪̲̜̟̱̼̻̝͍̬͙̻̣͇̤̺̳̮̟͍̪͉̻̠͉̣͍̤͍̮̭͔̪̖̪̜̗͚̩̹̤͍̻̰̜̘̭̙͎̖̞̖͙͉͙̗͍̰̜͖̥̭̞͙̮̪̫͉̺̟̲̮̲͓̜̪̬̬͎͕̩̦̘͓͎̠̱͍̖͍̝͉̯͎̟̝̳͕̪͚̖̤͎͈̥͇̱̘̲̼̮̮͔̗̟͇̲͓͇͉̪̗̬̖̰̩͙́̏̎̄̃͒̋̓͌̂͒̑̒̑͌̀͊̓͐͊̈́̿͆́̌̐́̇̃̂̇̓̆͗̇͊̐̄̀̏̐̿̂̅̉̈̑͆̓̾̀́̂͐̄̈́̀̒̃̍͒͌̇̀̋̈́́̆́́̅͑̒̿͐͂̎̐̈̽̔̉̀̀͑̌̂̿̊͑̊̓̑̏́̈̾̈̒̓̀͐̀̋̀̒͋́́̌̃̈̎̅̆͗̏̀̀́̈́̒̈͆͆̈́̅͌̓̽̃̍͑̆̊̎̓̀̄͋̐̂̊̑̀̃͌̄̊͊̀̾̌̀̇̆̉͒̅̉̑̉̊͗͐̌̃̑͒̓̇́͊͘̚̕͘̚̕͘̚͘̕̚̚͜͜͜͜͠͝͠͝͝͝͠͝͠͝͝t̵̢̢̨̡̧̡̢̨̡̧̢̧̡̨̨̡̨̨̢̢̨̡̢̢̨̢̨̛̛̛̛̛͈͓͔͔͈̤͚̞̫̻̰̯̻̮̖̮̣̙͙̭̲͓̹͉̮͔̲͙̺͚̹͓͈̺̥̹̰͙̰̥̳̻͓̝͇̗̳̱͇͚̘̼̦̰͇̳̤̳̯̹̬͖̫̱̮̤̺̼̠͇̞̝̞̯̖̲͖̘̫̭͔̝̜̝͈̭͔̜̥͙̼͕̭̖̮̪̮̘͖̦̟͔͕͍̟̳͎̥̮̮̬̗͖̳̤̯̙̘͖͍͙̫̳͕̯̥̰͍̞̺͓̲̲͕̩̘͈͇͍̪̤͔̠͓̩̦̥͕̟̻̘̘̞͈͚̝͔̜͔̲͓̮̯͚͓͎̪̯̹͇̪̞͓̻͔͇̩̲̙̩̜̰̲͎͎͓̬̳̣̦̟̲̙̬̺̠̻͉̼̹͍̥͓͎̖̪̼͕̥͇̬̣̦͓̙̰̲̝̜̜̖̫͓̬̮̹͍̘̱̭̲̲͎̱͙̙͒̂̐̃̎̉̀͊̄́͌̈́̄̿̈͋͗̌̈́͛̊͆̂͑̑͐͛̍͗͂͒̆̒̒͂̔̏̎̿͛̒͐̄͑́̾̊͆̃̐̓̈́̈̃̀̒̿̓̈̊̌͋̃̑̈́̓̈́̑̉̌̓́̀͗̃̓͛̐̽̈́̊̂̎̄̋̈͋̒͆̅͌̓̅͊͊̿̑͒͑̈́̌̔̀͑̾̍̽͌̀̌̆͊̄̓̂͗͑͐̿͛͂̈́̔̑̋̀́̀̔́̈̎͒͒̎͐̎̓̈̒̔̆̓͆̿̐̉͛͛̀́̅͆̌̈̏̃̉͆̃̃͒̑̋̈́̍̿̿͊̆͑̅̓̎̂̓̑͗̊̓̂̈̂̈́̇̓̉̌̆̽̍̀̒̽̎̈̎̽̽͆̔̓͐̃͌̉̅͌̌̚͘͘͘̚͘̚̕̕͘̚͘͘̕̚͘͘̚̕̕͜͜͜͜͝͝͝͠͝͝͝͠͠͝͠͠͝͝͝͝ͅͅͅͅͅͅơ̸̢̡̡̧̢̧̨̡̢̧̨̡̡̡̧̡̨̧̨̡̡̢̛̛̛̛̝̗̗̱̹̮͓͇̯̘͙̪̹̼͔̻̤̫̟̻͉͉̩͓̲̩͓͕͓̟̱̟̣̺̩̻̝̘̠̟̙̘̝̤̬̙͕̫͉̘̱̠̖̱͔̺̮̮͍̙̰̥̥̲̼̼̞̞̦̲̹̤̮̹͙̭͙̣̭̝̠͉̟͉̝̹̭̪̫͚̣̭̹̟͇͓͎̜̙̪͕͔͍̲̲̬̥͙͉̠̣̪̳̹̙̳͎̰͎̮̰͕͓̯̹͓̱͇̣̳̪̹͈̪̞͇͕̦̲̘͙̠̬̪̭̰̖͈̭̝̬̻̗̮̬̼͙͙̗̰̣͉̙̗͔̥̻̙͖̟͚͎̭̝̮̘̪̥̪̘͉͎̯̹̮͍̝̣̻͈͍̦̏̀̈́͊͗͌̃̿͊͌́̑̈́̿̽̈́̃̅͂̏̌̃̓͒͌̏͆̇͌̆͗̈́̒̈́̈́͆̈́͒͋̾̄̐̈́̌̅̋͑͛̇̅̎̓̔͒̍̔̆̀̓͌͒̽̏͑͆̈́̍̈́͆̈́͋̓̈́̋̄͋͌̔̂̽̀͊͗̍͛͛̈́̈́̍̈́̆̋͆͗̅̀̓͛̿̏́̅̑̑̈̏̑͊̿̈̑͋̋̀̏̽̃͒̋̀̀̍̂̈̿̽̾̒͒̊̑̒͐́͒͊͆̍͌̓͆̓͛̓̕͘͘̕͘̚͘̚͜͜͜͜͜͝͝͝͝͠͝͝͠͝͠͝͠͝͝͠͠͝ͅͅͅͅͅ)

Copy link
Member Author

Choose a reason for hiding this comment

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

I think limiting unicode to printable characters is a good compromise, i'll relax it to allow unicode in addition to ascii

Copy link
Member Author

Choose a reason for hiding this comment

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

Ok, i've spent some time to cleanup/standardize this, see

replace problematic unicode characters with U+FFFD instead of deleting
them, following RFC 9839 guidance that deletion is a security risk.
moves sanitization to version.go and adds comprehensive tests.

refs: https://www.rfc-editor.org/rfc/rfc9839.html
refs: libp2p/specs#491
@lidel lidel merged commit 0f85a42 into main Sep 13, 2025
10 checks passed
@lidel lidel deleted the feat-show-agent-version branch September 13, 2025 00:24
@lidel lidel mentioned this pull request Sep 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants