On http://::@c@d:2 pass should be :%40c not :c%40

The inversed order seems to be a typo. The proposed fix is how the WHATWG and W3C URL Standard specifies parsing.