What algorithm does CVS use when merging two branches (using the -j)?

* Is the CVS tag, branch, or date aware?
* Does it just do a plain text diff (for example, using the unix diff tool)?
* Does it use a 2 way or 3 way diff?
* If it uses a 3 way diff, what is the base version it uses?

Thanks