This commit lets the join geometry node transfer dynamic attributes to the result, the same way that point cloud and mesh attributes are joined. The implementation is different though, because of an optimization implemented for curves to avoid copying splines. The result attribute is added with the highest priority domain (points over splines), and the highest complexity data type. If one curve had the attribute on the spline domain but not others, the point domain values will be used. Generally this is a bit lower level than I would have liked this code to be, but should be efficient, and it's really not too complicated. Differential Revision: https://developer.blender.org/D11491