rainbow codes explained