diff --git a/src/color/generate_spectra_rust.py b/src/color/generate_spectra_rust.py new file mode 100755 index 0000000..5df31b5 --- /dev/null +++ b/src/color/generate_spectra_rust.py @@ -0,0 +1,1233 @@ +#!/usr/bin/env python3 + +# This file is originally from the supplemental material of the paper +# "Physically Meaningful Rendering using Tristimulus Colours" by Meng et al. +# It has been adapted by Nathan Vegdahl to generate Rust instead of C. + +import numpy as np +import scipy +import math +import time +import os +import sys + +try: + import colour.plotting as clr + import colour.recovery as rec + import colour + have_colour_package = True +except: + print("Install colour-science using 'sudo pip install colour-science' to get xy grid plots.") + print("See http://www.colour-science.org for more information.") + have_colour_package = False + +# Looking at the code, it looks like "Path" is used unconditionally, so +# matplotlib is actually just required. Import unconditionally. +# --Nathan V +#try: +#print("Install matplotlib to get plots.") +import matplotlib.pyplot as plt +from matplotlib.path import Path +have_matplotlib = True +#except: +# have_matplotlib = False + +SPEC_FUNC = """// This file is auto-generated by generate_spectra_rust.py +#![allow(dead_code)] +#![cfg_attr(rustfmt, rustfmt_skip)] + + +use std::f32; + +/// Evaluate the spectrum for xyz at the given wavelength. +pub fn spectrum_xyz_to_p(lambda: f32, xyz: (f32, f32, f32)) -> f32 +{ + assert!(lambda >= SPECTRUM_SAMPLE_MIN); + assert!(lambda <= SPECTRUM_SAMPLE_MAX); + + let norm = { + let norm = 1.0 / (xyz.0 + xyz.1 + xyz.2); + if norm < f32::MAX { + norm + } else { + return 0.0; + } + }; + + let xyy = ( + xyz.0 * norm, + xyz.1 * norm, + xyz.1, + ); + + // rotate to align with grid + let uv = spectrum_xy_to_uv((xyy.0, xyy.1)); + if uv.0 < 0.0 || uv.0 >= SPECTRUM_GRID_WIDTH as f32 || uv.1 < 0.0 || uv.1 >= SPECTRUM_GRID_HEIGHT as f32 { + return 0.0; + } + + let uvi = (uv.0 as i32, uv.1 as i32); + assert!(uvi.0 < SPECTRUM_GRID_WIDTH); + assert!(uvi.1 < SPECTRUM_GRID_HEIGHT); + + let cell_idx: i32 = uvi.0 + SPECTRUM_GRID_WIDTH * uvi.1; + assert!(cell_idx < SPECTRUM_GRID_WIDTH * SPECTRUM_GRID_HEIGHT); + assert!(cell_idx >= 0); + + let cell = &SPECTRUM_GRID[cell_idx as usize]; + let inside: bool = cell.inside; + let idx = &cell.idx; + let num: i32 = cell.num_points; + + // get linearly interpolated spectral power for the corner vertices: + // this clamping is only necessary if lambda is not sure to be >= SPECTRUM_SAMPLE_MIN and <= SPECTRUM_SAMPLE_MAX: + let sb: f32 = /*(SPECTRUM_NUM_SAMPLES as f32 - 1e-4).min(0.0.max(*/ (lambda - SPECTRUM_SAMPLE_MIN) / (SPECTRUM_SAMPLE_MAX - SPECTRUM_SAMPLE_MIN) * (SPECTRUM_NUM_SAMPLES as f32 - 1.0)/*))*/; + assert!(sb >= 0.0); + assert!(sb <= SPECTRUM_NUM_SAMPLES as f32); + + let mut p = [0.0f32; 6]; + let sb0: i32 = sb as i32; + let sb1: i32 = if (sb + 1.0) < SPECTRUM_NUM_SAMPLES as f32 { sb as i32 + 1 } else { SPECTRUM_NUM_SAMPLES - 1 }; + let sbf: f32 = sb as f32 - sb0 as f32; + for i in 0..(num as usize) { + assert!(idx[i] >= 0); + assert!(sb0 < SPECTRUM_NUM_SAMPLES); + assert!(sb1 < SPECTRUM_NUM_SAMPLES); + let spectrum = &SPECTRUM_DATA_POINTS[idx[i] as usize].spectrum; + p[i] = spectrum[sb0 as usize] * (1.0 - sbf) + spectrum[sb1 as usize] * sbf; + } + + let mut interpolated_p: f32 = 0.0; + + if inside { // fast path for normal inner quads: + let uv2 = (uv.0 - uvi.0 as f32, uv.1 - uvi.1 as f32); + + assert!(uv2.0 >= 0.0 && uv2.0 <= 1.0); + assert!(uv2.1 >= 0.0 && uv2.1 <= 1.0); + + // the layout of the vertices in the quad is: + // 2 3 + // 0 1 + interpolated_p = p[0] * (1.0 - uv2.0) * (1.0 - uv2.1) + + p[2] * (1.0 - uv2.0) * uv2.1 + + p[3] * uv2.0 * uv2.1 + + p[1] * uv2.0 * (1.0 - uv2.1); + } else { // need to go through triangulation :( + // we get the indices in such an order that they form a triangle fan around idx[0]. + // compute barycentric coordinates of our xy* point for all triangles in the fan: + let ex: f32 = uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0; + let ey: f32 = uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1; + let mut e0x: f32 = SPECTRUM_DATA_POINTS[idx[1] as usize].uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0; + let mut e0y: f32 = SPECTRUM_DATA_POINTS[idx[1] as usize].uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1; + let mut uu: f32 = e0x * ey - ex * e0y; + + for i in 0..(num as usize - 1) { + let (e1x, e1y): (f32, f32) = if i as i32 == (num - 2) { // close the circle + (SPECTRUM_DATA_POINTS[idx[1] as usize].uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0, + SPECTRUM_DATA_POINTS[idx[1] as usize].uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1) + } else { + (SPECTRUM_DATA_POINTS[idx[i+2] as usize].uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0, + SPECTRUM_DATA_POINTS[idx[i+2] as usize].uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1) + }; + + let vv: f32 = ex * e1y - e1x * ey; + + // TODO: with some sign magic, this division could be deferred to the last iteration! + let area: f32 = e0x * e1y - e1x * e0y; + // normalise + let u: f32 = uu / area; + let v: f32 = vv / area; + let w: f32 = 1.0 - u - v; + // outside spectral locus (quantized version at least) or outside grid + if u < 0.0 || v < 0.0 || w < 0.0 { + uu = -vv; + e0x = e1x; + e0y = e1y; + continue; + } + + // This seems to be the triangle we've been looking for. + interpolated_p = p[0] * w + p[i + 1] * v + p[if i as i32 == (num - 2) { 1 } else { i + 2 }] * u; + break; + } + } + + // now we have a spectrum which corresponds to the xy chromaticities of the input. need to scale according to the + // input brightness X+Y+Z now: + return interpolated_p / norm; +} +""" + +# ------------------------------------------------------------------------------ +# Color matching functions. +# Note: The load function assumes a CSV input, where each row +# has wavelength, x, y, z (in that order). +# For our paper, we used the truncated set of CMF from 380nm to 780nm, CIE 1931 +# standard colorimetric observer, as recommended in CIE Technical Report +# Colorimetry, 2004 (ISBN 3901906339). The CMF values can be found n Table T.4. +# of the technical report. +# +# The same values can be obtained by downloading +# the CIE 1931 2-deg. XYZ CMFS here: http://www.cvrl.org/cmfs.htm. +# In the table, use values for wavelengths in [380, 780] and round to 6 +# decimal places. +# ------------------------------------------------------------------------------ +class Cmf: + cmf = [] + + @classmethod + def load(cls, filename): + cls.cmf = np.loadtxt(filename, delimiter=',') + assert(cls.cmf.shape[1] == 4) + + @classmethod + def num_bins(cls): + return cls.cmf.shape[0] + + @classmethod + def bin_size(cls): + return cls.cmf[1,0]-cls.cmf[0,0] + + @classmethod + def wavelength(cls): + return cls.cmf[:,0] + + @classmethod + def x_bar(cls): + return cls.cmf[:,1] + + @classmethod + def y_bar(cls): + return cls.cmf[:,2] + + @classmethod + def z_bar(cls): + return cls.cmf[:,3] + + @classmethod + def xyz_from_spectrum(cls, spectrum): + '''As CIE instructs, we integrate using simple summation.''' + assert(cls.cmf.shape[0] == len(spectrum)) + d_lambda = cls.wavelength()[1]-cls.wavelength()[0] + + xyz = [0, 0, 0] + for x_bar, y_bar, z_bar, s in zip(cls.x_bar(), cls.y_bar(), cls.z_bar(), spectrum): + xyz[0] += x_bar * s + xyz[1] += y_bar * s + xyz[2] += z_bar * s + + return [v * d_lambda for v in xyz] + + @classmethod + def xyz_ee_white(cls): + ee_white = [1] * cls.cmf.shape[0] + return cls.xyz_from_spectrum(ee_white) + +# ------------------------------------------------------------------------------ +# Transform between color spaces. +# ------------------------------------------------------------------------------ +class Transform: + # -------------------------------------------------------------------------- + # Homogenize/dehomogenize vectors. + # -------------------------------------------------------------------------- + @staticmethod + def hom(v2): + assert(len(v2) >= 2) + return np.matrix([[v2[0]], [v2[1]], [1]]) + + @staticmethod + def dehom(v3): + assert((v3.shape[0] == 3 and v3.shape[1] == 1) + or (v3.shape[0] == 1 and v3.shape[1] == 3)) + v = v3.flatten().tolist()[0] + return [v[0]/v[2], v[1]/v[2]] + + + # ------------------------------------------------------------------------------ + # Convert from xyy to xyz and back. + # ------------------------------------------------------------------------------ + @staticmethod + def xyz_from_xyy(xyy): + return (xyy[0] * xyy[2]/xyy[1], + xyy[2], + (1-xyy[0]-xyy[1]) * xyy[2]/xyy[1]) + + + @staticmethod + def xyy_from_xyz(xyz): + s = sum(xyz) + return (xyz[0] / s, xyz[1] / s, xyz[1]) + + # ------------------------------------------------------------------------------ + # Convert from srgb to xyz and back. + # ------------------------------------------------------------------------------ + def xyz_from_srgb(srgb): + # This matrix is computed by transforming the sRGB primaries into xyz. + # Primaries are + # red: xy = 0.64, Y = 0.2126 + # green: xy = 0.30, Y = 0.7152 + # blue: xy = 0.15, Y = 0.0722, + # where the luminance values are taken from HDTV Recommendation BT.709 + # http://www.itu.int/rec/R-REC-BT.709/en + M = np.matrix([[ 0.41231515, 0.3576, 0.1805 ] + [ 0.2126 , 0.7152, 0.0722 ] + [ 0.01932727, 0.1192, 0.95063333]]) + return np.dot(M, srgb) + + def srgb_from_xyz(xyz): + # This is the inverse of the above matrix. + M = np.matrix([[ 3.24156456, -1.53766524, -0.49870224], + [-0.96920119, 1.87588535, 0.04155324], + [ 0.05562416, -0.20395525, 1.05685902]]) + return np.dot(M, xyz) + + # EE-white adapted sRGB (Smits uses this). + def xyz_from_ergb(ergb): + M = np.matrix([ + [0.496859, 0.339094, 0.164047], + [0.256193, 0.678188, 0.065619], + [0.023290, 0.113031, 0.863978] + ]) + return np.dot(M, xyz) + + # ------------------------------------------------------------------------------ + # Convert from xy to xy* and back. + # ------------------------------------------------------------------------------ + mat_xystar_to_xy = None + mat_xy_to_xystar = None + + @classmethod + def init_xystar(cls): + '''xy* is a color space where the line between blue and red is horizontal. + Also, equal-energy white is the origin. + xy* depends only on the color matching functions used.''' + num_bins = len(Cmf.wavelength()) + + # Pure blue. + s = [0] * num_bins + s[0] = 1 + xy0 = cls.xyy_from_xyz(Cmf.xyz_from_spectrum(s)) + + # Pure red. + s = [0] * num_bins + s[-1] = 1 + xy1 = cls.xyy_from_xyz(Cmf.xyz_from_spectrum(s)) + + d = np.array(xy1[:2])-np.array(xy0[:2]) + d /= math.sqrt(np.vdot(d, d)) + + # Translation to make ee-white (in xy) the origin. + T = np.matrix([[ 1, 0, -1/3], + [ 0, 1, -1/3], + [ 0, 0, 1]]) + # Rotation to make purple line horizontal. + R = np.matrix([[ d[0], d[1], 0], + [-d[1], d[0], 0], + [ 0, 0, 1]]) + + cls.mat_xy_to_xystar = np.dot(R, T) + cls.mat_xystar_to_xy = cls.mat_xy_to_xystar.getI() + + @classmethod + def xystar_from_xy(cls, xy): + return cls.dehom(np.dot(cls.mat_xy_to_xystar, cls.hom(xy))) + + @classmethod + def xy_from_xystar(cls, xystar): + return cls.dehom(np.dot(cls.mat_xystar_to_xy, cls.hom(xystar))) + + # ------------------------------------------------------------------------------ + # Convert from xy to uv and back. + # ------------------------------------------------------------------------------ + mat_uv_to_xystar = None + mat_xystar_to_uv = None + mat_uv_to_xy = None + mat_xy_to_uv = None + + @classmethod + def init_uv(cls, xystar_bbox, grid_res): + '''uv is derived from xy* by transforming grid points to integer coordinates. + uv depends on xy* and the grid used.''' + + # Translate xystar bounding box min to origin. + T = np.matrix([[1, 0, -xystar_bbox[0][0]], + [0, 1, -xystar_bbox[0][1]], + [0, 0, 1]]) + + # Scale so that one grid cell has unit size. + w = xystar_bbox[1][0]-xystar_bbox[0][0] + h = xystar_bbox[1][1]-xystar_bbox[0][1] + S = np.matrix([[grid_res[0] / w, 0, 0], + [0, grid_res[1] / h, 0], + [0, 0, 1]]) + + cls.mat_xystar_to_uv = np.dot(S, T) + cls.mat_uv_to_xystar = cls.mat_xystar_to_uv.getI() + cls.mat_xy_to_uv = np.dot(cls.mat_xystar_to_uv, cls.mat_xy_to_xystar) + cls.mat_uv_to_xy = cls.mat_xy_to_uv.getI() + + @classmethod + def uv_from_xy(cls, xy): + return cls.dehom(np.dot(cls.mat_xy_to_uv, cls.hom(xy))) + + @classmethod + def xy_from_uv(cls, uv): + return cls.dehom(np.dot(cls.mat_uv_to_xy, cls.hom(uv))) + + @classmethod + def uv_from_xystar(cls, xystar): + return cls.dehom(np.dot(cls.mat_xystar_to_uv, cls.hom(xystar))) + + @classmethod + def xystar_from_uv(cls, uv): + return cls.dehom(np.dot(cls.mat_uv_to_xystar, cls.hom(uv))) + +# ------------------------------------------------------------------------------ +# Compute functor for all elements of data using a process pool, and call +# finished with (i, result) afterwards. +# ------------------------------------------------------------------------------ +def multiprocess_progress(data, functor, finished, data_size, early_clip=None): + from multiprocessing import Process, current_process, Queue + + num_procs = os.cpu_count()-1 + + def worker(wnum, input_queue, output_queue): + os.sched_setaffinity(0, [wnum]) + while True: + try: + idx, value = input_queue.get(block=False) + if value == 'STOP': + break + output_queue.put((idx, functor(value))) + except: + pass + os.sched_yield() + + task_queue = Queue(2*num_procs) + done_queue = Queue(2*num_procs) + + # Launch workers. + print('Running {} workers ...'.format(num_procs)) + processes = [] + for i in range(num_procs): + processes.append(Process(target = worker, + args = (i, task_queue, done_queue), + name = 'worker {}'.format(i), + daemon = True)) + processes[-1].start() + + # Push input data, and check for output data. + num_sent = 0 + num_done = 0 + num_clipped = 0 + iterator = iter(data) + perc = 0 + + def print_progress(msg=None): + msg_str = '' + if msg is not None: + msg_str = '['+msg+']' + print('\033[2K\r{} sent, {} done, {} clipped, {} total ({} %) {}'.format(num_sent, + num_done, num_clipped, data_size, perc, msg_str), end='') + + while num_done < data_size: + print_progress('sending work') + + while num_sent < data_size and not task_queue.full(): + nextval = next(iterator) + clipped = False + if early_clip is not None: + clipped, clip_result = early_clip(num_sent, nextval) + if clipped: + finished(num_sent, clip_result) + num_clipped += 1 + num_done += 1 + + if not clipped: + task_queue.put((num_sent, nextval)) + + num_sent += 1 + os.sched_yield() + + while True: + try: + i, result = done_queue.get(block=False) + finished(i, result) + num_done += 1 + perc = int(num_done / data_size * 100) + print_progress('collecting results') + except: + break; + time.sleep(0) + + print_progress() + time.sleep(0) + + # Terminate workers. + for i in range(num_procs): + task_queue.put((-1, 'STOP')) + + for p in processes: + p.join() + + print('\n ... done') + +# ------------------------------------------------------------------------------ +# Given a color in XYZ, determine a smooth spectrum that corresponds to that +# color. +# ------------------------------------------------------------------------------ +def find_spectrum(xyz): + from scipy.optimize import minimize + + # As an objective, we use a similar roughness term as Smits did. + def objective(S): + roughness = 0 + for i in range(len(S)-1): + roughness += (S[i]-S[i+1])**2 + # Note: We found much better convergence with the square term! + # roughness = math.sqrt(roughness) + return roughness + + num_bins = Cmf.num_bins() + x0 = [1] * num_bins + + # Constraint: Match XYZ values. + cnstr = { + 'type': 'eq', + 'fun': lambda s: (np.array(Cmf.xyz_from_spectrum(s))-xyz) + } + + # We want positive spectra. + bnds = [(0, 1000)] * num_bins + + res = minimize(objective, x0, method='SLSQP', constraints=cnstr, + bounds=bnds, options={"maxiter": 2000, "ftol": 1e-10}) + if not res.success: + err_message = 'Error for xyz={} after {} iterations: {}'.format(xyz, res.nit, res.message) + return ([0] * num_bins, True, err_message) + else: + # The result may contain some very tiny negative values due + # to numerical issues. Clamp those to 0. + return ([max(x, 0) for x in res.x], False, "") + + +# ------------------------------------------------------------------------------ +# Get the boundary of the horseshoe as a path in xy*. +# ------------------------------------------------------------------------------ +def horseshoe_path(): + verts = [] + codes = [] + + d_lambda = Cmf.wavelength()[1]-Cmf.wavelength()[0] + for x, y, z in zip(Cmf.x_bar(), Cmf.y_bar(), Cmf.z_bar()): + xyz = [x*d_lambda, y*d_lambda, z*d_lambda] + xyY = Transform.xyy_from_xyz(xyz) + xystar = Transform.xystar_from_xy(xyY[:2]) + verts.append(xystar) + codes.append(Path.LINETO) + + codes[0] = Path.MOVETO + codes.append(Path.CLOSEPOLY) + + vx = [x for (x, y) in verts] + vy = [y for (x, y) in verts] + bbox = [ (min(vx), min(vy)), (max(vx), max(vy)) ] + + verts.append((0,0)) + return (Path(verts, codes), bbox) + +# ------------------------------------------------------------------------------ +# Grid data structures. +# ------------------------------------------------------------------------------ + +class DataPoint: + def __init__(self): + self.xystar = (0, 0) + self.uv = (0, 0) + self.Y = 0 + self.spectrum = [0] + self.M = 0 + self.inside = False + self.equal_energy_white = False + self.broken = False + + def update_uv(self): + self.uv = Transform.uv_from_xystar(self.xystar) + +class GridCell: + def __init__(self): + self.indices = [] + self.triangles = [] + self.inside = True + +# binary search to find intersection +def find_intersection(p0, p1, i0, i1, clip_path): + delta = p1-p0 + if np.linalg.norm(delta) < 0.0001: + # Points are very close, terminate. + # Move new intersection slightly into the gamut. + delta *= 0.998 + if i0: + return p1 - delta + else: + return p0 + delta + + p01 = 0.5 * (p0 + p1) + i01 = clip_path.contains_point(p01) + if i0 != i01: + return find_intersection(p0, p01, i0, i01, clip_path) + elif i1 != i01: + return find_intersection(p01, p1, i01, i1, clip_path) + else: + print ("something wrong here") + return p01 + +def clip_edge(d0, d1, clip_path): + from operator import xor + if not xor(d0.inside, d1.inside): + return (False, None) + + p0 = np.array(d0.xystar) + p1 = np.array(d1.xystar) + p = find_intersection(p0, p1, d0.inside, d1.inside, clip_path) + + data_point = DataPoint() + data_point.xystar = p + data_point.inside = True + + return (True, data_point) + +def generate_xystar_grid(scale): + print("Generating clip path ...") + clip_path, bbox = horseshoe_path() + + # We know that xy(1/3, 1/3) = xystar(0, 0) must be a grid point. + # subdivide the rectangle between that and the purest red regularly with res. + # Note: This can be freely chosen, but we found 6,4 to be a reasonable value. + res = (6, 4) + white_xystar = [0, 0] + step_x = abs(white_xystar[0]-bbox[1][0]) / res[0] + step_y = abs(white_xystar[1]-bbox[0][1]) / res[1] + + # Find bbox top left corner so that the whole diagram is contained. + add_x = int(math.ceil(abs(white_xystar[0]-bbox[0][0]) / step_x)) + add_y = int(math.ceil(abs(bbox[1][1]-white_xystar[1]) / step_y)) + + # The index of white - we will set this spectrum to equal energy white. + white_idx = (add_x, res[1]) + + grid_res = (res[0] + add_x, res[1] + add_y) + bbox = [ + # min + (white_xystar[0]- step_x * add_x, bbox[0][1]), + # max + (bbox[1][0], white_xystar[1] + step_y * add_y) + ] + + grid = [GridCell() for i in range(grid_res[0] * grid_res[1])] + data_points = [] + + # Generate grid points. + print(" Generating grid points in xy* ...") + for (x,y) in [(x,y) for y in range(grid_res[1]+1) for x in range(grid_res[0]+1)]: + data_point = DataPoint() + data_point.xystar = (bbox[0][0] + step_x * x, bbox[0][1] + step_y * y) + + if (x, y) == white_idx: + # Numerically, we want the white point to be at xy = (1/3, 1/3). + delta = np.array(data_point.xystar) - np.array(white_xystar) + assert(np.dot(delta, delta) < 1e-7) + data_point.equal_energy_white = True + + # Clip on horseshoe. + if clip_path.contains_point(data_point.xystar) \ + or (x > 0 and y == 0): # Special case for purple line. + data_point.inside = True + + new_idx = len(data_points) + data_points.append(data_point) + + # Add new index to this all four adjacent cells. + for (cx, cy) in [(x-dx, y-dy) for dy in range(2) for dx in range(2)]: + if cx >= 0 and cx < grid_res[0] and cy >= 0 and cy < grid_res[1]: + cell = grid[cy * grid_res[0] + cx] + cell.indices.append(new_idx) + cell.inside = cell.inside and data_point.inside + + # Clip grid cells against horseshoe. + print(" Clipping cells to xy gamut ...") + for (x, y) in [(x, y) for x in range(grid_res[0]) for y in range(grid_res[1])]: + cell = grid[y * grid_res[0] + x] + + # No need to clip cells that are completely inside. + if cell.inside: + continue + + # We clip the two outgoing edges of each point: + # + # d2 + # . + # d0 . d1 + # Note: We assume here that data_points was generated as a regular + # grid in row major order. + d0 = data_points[(y+0)*(grid_res[0]+1)+(x+0)] + d1 = data_points[(y+0)*(grid_res[0]+1)+(x+1)] + d2 = data_points[(y+1)*(grid_res[0]+1)+(x+0)] + + (clipped_h, p_h) = clip_edge(d0, d1, clip_path) + if clipped_h: + new_idx = len(data_points) + data_points.append(p_h) + cell.indices.append(new_idx) + if y > 0: + grid[(y-1) * grid_res[0] + x].indices.append(new_idx) + + (clipped_v, p_v) = clip_edge(d0, d2, clip_path) + if clipped_v: + new_idx = len(data_points) + data_points.append(p_v) + cell.indices.append(new_idx) + if x > 0: + grid[y * grid_res[0] + x - 1].indices.append(new_idx) + + # Compact grid points (throw away points that are not inside). + print(" Compacting grid ...") + new_data_points = [] + new_indices = [] + prefix = 0 + for data_point in data_points: + if data_point.inside: + new_indices.append(prefix) + new_data_points.append(data_point) + prefix += 1 + else: + new_indices.append(-1) + data_points = new_data_points + + for gridcell in grid: + new_cell_indices = [] + for index in range(len(gridcell.indices)): + old_index = gridcell.indices[index] + if new_indices[old_index] >= 0: + new_cell_indices.append(new_indices[old_index]) + gridcell.indices = new_cell_indices[:] + + # Scale points down towards white point to avoid singular spectra. + for data_point in data_points: + data_point.xystar = [v * scale for v in data_point.xystar] + + bbox[0] = [v * scale for v in bbox[0]] + bbox[1] = [v * scale for v in bbox[1]] + + return data_points, grid, grid_res, bbox + +# Plot the grid. +def plot_grid(filename, data_points, grid, bbox_xystar, xystar=True): + if not have_matplotlib or not have_colour_package: + return + + print("Plotting the grid ...") + + plt.figure() + # Draw a nice chromaticity diagram. + clr.CIE_1931_chromaticity_diagram_plot(standalone=False) + clr.canvas(figure_size=(7,7)) + + # Show the sRGB gamut. + color_space = clr.get_RGB_colourspace('sRGB') + x = color_space.primaries[:,0].tolist() + y = color_space.primaries[:,1].tolist() + plt.fill(x, y, color='black', label='sRGB', fill=False) + + # Draw crosses into all internal grid cells. + # for gridcell in grid: + # if len(gridcell.indices) > 0 and gridcell.inside: + # if xystar: + # pointx = sum([data_points[i].xystar[0] for i in gridcell.indices]) + # pointy = sum([data_points[i].xystar[1] for i in gridcell.indices]) + # pointx /= len(gridcell.indices) + # pointy /= len(gridcell.indices) + # (pointx, pointy) = Transform.xy_from_xystar((pointx, pointy)) + # plt.plot(pointx, pointy, "x", color="black") + # else: + # pointx = sum([data_points[i].uv[0] for i in gridcell.indices]) + # pointy = sum([data_points[i].uv[1] for i in gridcell.indices]) + # pointx /= len(gridcell.indices) + # pointy /= len(gridcell.indices) + # (pointx, pointy) = Transform.xy_from_uv((pointx, pointy)) + # plt.plot(pointx, pointy, "x", color="black") + + # Draw data points. + for i, data_point in enumerate(data_points): + if xystar: + p = Transform.xy_from_xystar(data_point.xystar) + else: + p = Transform.xy_from_uv(data_point.uv) + + if data_point.equal_energy_white: + plt.plot(p[0], p[1], "o", color="white", ms=4) + elif data_point.broken: + plt.plot(p[0], p[1], "o", color="red", ms=4) + else: + plt.plot(p[0], p[1], "o", color="green", ms=4) + + # Show grid point indices, for debugging. + # plt.text(p[0]+0.01, p[1]-0.01, '{}'.format(i)) + + bp0 = Transform.xy_from_xystar([bbox_xystar[0][0], bbox_xystar[0][1]]) + bp1 = Transform.xy_from_xystar([bbox_xystar[0][0], bbox_xystar[1][1]]) + bp2 = Transform.xy_from_xystar([bbox_xystar[1][0], bbox_xystar[1][1]]) + bp3 = Transform.xy_from_xystar([bbox_xystar[1][0], bbox_xystar[0][1]]) + plt.plot([bp0[0], bp1[0], bp2[0], bp3[0], bp0[0]], + [bp0[1], bp1[1], bp2[1], bp3[1], bp0[1]], + label="Grid Bounding Box") + + plt.xlabel('$x$') + plt.ylabel('$y$') + + plt.legend() + plt.savefig(filename) + +# ------------------------------------------------------------------------------ +# Compute spectra for all data points. +# ------------------------------------------------------------------------------ +def compute_spectrum(data_point): + xy = Transform.xy_from_uv(data_point.uv) + + # Set luminance to y. This means that X+Y+Z = 1, + # since y = Y / (X+Y+Z) = y / (X+Y+Z). + xyY = [xy[0], xy[1], xy[1]] + xyz = Transform.xyz_from_xyy(xyY) + + spectrum = [] + broken = False + + if data_point.equal_energy_white: + # Since we want X=Y=Z=1/3 (so that X+Y+Z=1), the equal-energy white + # spectrum we want is 1/(3 int(x)) for x color matching function. + spectrum = [1 / (3 * Cmf.xyz_ee_white()[0])] * Cmf.num_bins() + else: + spectrum, broken, message = find_spectrum(xyz) + + if broken: + print("Couldn't find a spectrum for uv=({uv[0]},{uv[1]})".format(uv=data_point.uv)) + print(message) + + xyz = Cmf.xyz_from_spectrum(spectrum) + sum = xyz[0] + xyz[1] + xyz[2] + if sum > 1.01 or sum < 0.99: + print('Invalid brightness {} for uv=({uv[0]},{uv[1]})'.format(sum, uv=data_point.uv)) + + return (spectrum, broken) + + +# ------------------------------------------------------------------------------ + +def compute_spectra(data_points): + print('Computing spectra ...') + + def finished(i, result): + data_points[i].spectrum = result[0] + data_points[i].broken = result[1] + + multiprocess_progress(data_points, compute_spectrum, finished, len(data_points)) + + +# ------------------------------------------------------------------------------ +# Plot some of our fitted spectra. +# Plot to multiple output files, since there are so many spectra. +# ------------------------------------------------------------------------------ +def plot_spectra(data_points): + if not have_matplotlib or not have_colour_package: + return + + print('Plotting spectra ...') + plots_per_file = 15 + + #plt.figure(figsize=(12, 16)) + + cur_page = -1 + ax_shape = (17, 4) + axes = None + for i, data_point in enumerate(data_points): + page_size =(ax_shape[0]*ax_shape[1]) + page = i // page_size + if page > cur_page: + if cur_page >= 0: + plt.savefig('spectra_{}.svg'.format(cur_page)) + fig, axes = plt.subplots(ax_shape[0], ax_shape[1], figsize=(14, 18)) + cur_page = page + + j = i % page_size + row = j % axes.shape[0] + col = j // axes.shape[0] + print(row, col) + + if row >= axes.shape[0] or col >= axes.shape[1]: + print('cannot plot spectrum', i) + continue + + ax = axes[row,col] + + xy = Transform.xy_from_uv(data_point.uv) + # take a copy, we're going to normalise it + s = data_point.spectrum[:] + max_val = 0 + for j in range(len(s)): + if s[j] > max_val: + max_val = s[j]; + if max_val > 0: + for j in range(len(s)): + s[j] = s[j]/max_val + ax.plot(Cmf.wavelength(), s, color='black', lw=2) + ax.set_ylim(-0.01, 1.1) + ax.set_yticklabels([]) + ax.set_xticklabels([]) + + perc = int((i+1) / len(data_points) * 100) + print(' {} / {} ({} %) \r'.format((i+1), len(data_points), perc), end='') + plt.savefig('spectra_{}.svg'.format(cur_page)) + + print('\n... done') + +# ------------------------------------------------------------------------------ +# Write spectral data +# ------------------------------------------------------------------------------ +def write_output(data_points, grid, grid_res, filename): + print('Write output ...') + with open(filename, 'w') as f: + lambda_min = Cmf.wavelength()[0] + lambda_max = Cmf.wavelength()[-1] + num_spec_samples = Cmf.num_bins() + spec_bin_size = Cmf.bin_size() + + f.write(SPEC_FUNC) + f.write('\n\n') + f.write('/// This is 1 over the integral over either CMF.\n') + f.write('/// Spectra can be mapped so that xyz=(1,1,1) is converted to constant 1 by\n') + f.write('/// dividing by this value. This is important for valid reflectances.\n') + f.write('pub const EQUAL_ENERGY_REFLECTANCE: f32 = {};'.format(1/max(Cmf.xyz_ee_white()))); + + f.write('\n\n') + f.write('// Basic info on the spectrum grid.\n') + f.write('const SPECTRUM_GRID_WIDTH: i32 = {};\n'.format(grid_res[0])) + f.write('const SPECTRUM_GRID_HEIGHT: i32 = {};\n'.format(grid_res[1])) + f.write('\n') + + f.write('// The spectra here have these properties.\n') + f.write('pub const SPECTRUM_SAMPLE_MIN: f32 = {};\n'.format(lambda_min)) + f.write('pub const SPECTRUM_SAMPLE_MAX: f32 = {};\n'.format(lambda_max)) + f.write('const SPECTRUM_BIN_SIZE: f32 = {};\n'.format(spec_bin_size)) + f.write('const SPECTRUM_NUM_SAMPLES: i32 = {};\n'.format(num_spec_samples)) + f.write('\n') + + # Conversion routines xy->xystar and xy->uv and back. + f.write('// xy* color space.\n') + f.write('const SPECTRUM_MAT_XY_TO_XYSTAR: [f32; 6] = [\n') + f.write(' {m[0]}, {m[1]}, {m[2]},\n {m[3]}, {m[4]}, {m[5]}\n' + .format(m=Transform.mat_xy_to_xystar[:2,:].flatten().tolist()[0])) + f.write('];\n') + f.write('const SPECTRUM_MAT_XYSTAR_TO_XY: [f32; 6] = [\n') + f.write(' {m[0]}, {m[1]}, {m[2]},\n {m[3]}, {m[4]}, {m[5]}\n' + .format(m=Transform.mat_xystar_to_xy[:2,:].flatten().tolist()[0])) + f.write('];\n') + + f.write('// uv color space.\n') + f.write('const SPECTRUM_MAT_XY_TO_UV: [f32; 6] = [\n') + f.write(' {m[0]}, {m[1]}, {m[2]},\n {m[3]}, {m[4]}, {m[5]}\n' + .format(m=Transform.mat_xy_to_uv[:2,:].flatten().tolist()[0])) + f.write('];\n') + f.write('const SPECTRUM_MAT_UV_TO_XY: [f32; 6] = [\n') + f.write(' {m[0]}, {m[1]}, {m[2]},\n {m[3]}, {m[4]}, {m[5]}\n' + .format(m=Transform.mat_uv_to_xy[:2,:].flatten().tolist()[0])) + f.write('];\n') + + f.write('// apply a 3x2 matrix to a 2D color.\n') + f.write('fn spectrum_apply_3x2(matrix: &[f32; 6], src: (f32, f32)) -> (f32, f32) {\n') + f.write(' (matrix[0] * src.0 + matrix[1] * src.1 + matrix[2],\n') + f.write(' matrix[3] * src.0 + matrix[4] * src.1 + matrix[5])\n') + f.write('}\n') + + f.write('// Concrete conversion routines.\n') + f.write('fn spectrum_xy_to_xystar(xy: (f32, f32)) -> (f32, f32) {\n') + f.write(' spectrum_apply_3x2(&SPECTRUM_MAT_XY_TO_XYSTAR, xy)\n') + f.write('}\n') + f.write('fn spectrum_xystar_to_xy(xystar: (f32, f32)) -> (f32, f32) {\n') + f.write(' spectrum_apply_3x2(&SPECTRUM_MAT_XYSTAR_TO_XY, xystar)\n') + f.write('}\n') + f.write('fn spectrum_xy_to_uv(xy: (f32, f32)) -> (f32, f32) {\n') + f.write(' spectrum_apply_3x2(&SPECTRUM_MAT_XY_TO_UV, xy)\n') + f.write('}\n') + f.write('fn spectrum_uv_to_xy(uv: (f32, f32)) -> (f32, f32) {\n') + f.write(' spectrum_apply_3x2(&SPECTRUM_MAT_UV_TO_XY, uv)\n') + f.write('}\n') + + f.write('// Grid cells. Laid out in row-major format.\n') + f.write('// num_points = 0 for cells without data points.\n') + f.write('#[derive(Copy, Clone)]\n') + f.write('struct SpectrumGridCell {\n') + f.write(' inside: bool,\n') + f.write(' num_points: i32,\n') + max_num_idx = 0 + for c in grid: + if len(c.indices) > max_num_idx: + max_num_idx = len(c.indices) + f.write('\tidx: [i32; {}],\n'.format(max_num_idx)) + f.write('}\n\n') + + # Count grid cells + grid_cell_count = 0 + for (x, y) in [(x,y) for y in range(grid_res[1]) for x in range(grid_res[0])]: + grid_cell_count += 1 + + # Write grid cells + f.write('const SPECTRUM_GRID: [SpectrumGridCell; {}] = [\n'.format(grid_cell_count)) + cell_strings = [] + for (x, y) in [(x,y) for y in range(grid_res[1]) for x in range(grid_res[0])]: + cell = grid[y * grid_res[0] + x] + # pad cell indices with -1. + padded_indices = cell.indices[:] + [-1] * (max_num_idx-len(cell.indices)) + + num_inside = len(cell.indices) + if num_inside > 0: + idx_str = ', '.join(map(str, padded_indices)) + if cell.inside and num_inside == 4: + cell_strings.append(' SpectrumGridCell {{ inside: true, num_points: {}, idx: [{}] }}'.format(num_inside, idx_str)) + else: + cell_strings.append(' SpectrumGridCell {{ inside: false, num_points: {}, idx: [{}] }}'.format(num_inside, idx_str)) + else: + cell_strings.append(' SpectrumGridCell {{ inside: false, num_points: 0, idx: [{}] }}'.format(', '.join(['-1'] * max_num_idx))) + f.write(',\n'.join(cell_strings)) + f.write('\n];\n\n') + + f.write('// Grid data points.\n') + f.write('#[derive(Copy)]\n') + f.write('struct SpectrumDataPoint {\n') + f.write(' xystar: (f32, f32),\n') + f.write(' uv: (f32, f32),\n') + f.write(' spectrum: [f32; {}], // X+Y+Z = 1\n'.format(num_spec_samples)) + f.write('}\n\n') + f.write("impl Clone for SpectrumDataPoint {\n" + " fn clone(&self) -> SpectrumDataPoint {\n" + " *self\n" + " }\n" + "}\n\n" + ) + data_point_strings = [] + data_point_count = 0 + for p in data_points: + data_point_count += 1 + spec_str = ', '.join(["{:f}".format(v) for v in list(p.spectrum)]) + data_point_strings.append( + " SpectrumDataPoint {{\n" + " xystar: ({p.xystar[0]}, {p.xystar[1]}),\n" + " uv: ({p.uv[0]}, {p.uv[1]}),\n" + " spectrum: [{spec}],\n" + " }}".format(p=p, spec=spec_str) + ) + f.write('const SPECTRUM_DATA_POINTS: [SpectrumDataPoint; {}] = [\n'.format(data_point_count)) + f.write(',\n'.join(data_point_strings)) + f.write('\n];\n\n') + + + f.write('// Color matching functions.\n') + f.write('const CMF_WAVELENGTH: [f32; {}] = [\n'.format(len(Cmf.wavelength()))) + f.write(' {}\n'.format(', '.join(str(v) for v in Cmf.wavelength()))) + f.write('];\n') + f.write('const CMF_X: [f32; {}] = [\n'.format(len(Cmf.x_bar()))) + f.write(' {}\n'.format(', '.join(str(v) for v in Cmf.x_bar()))) + f.write('];\n') + f.write('const CMF_Y: [f32; {}] = [\n'.format(len(Cmf.y_bar()))) + f.write(' {}\n'.format(', '.join(str(v) for v in Cmf.y_bar()))) + f.write('];\n') + f.write('const CMF_Z: [f32; {}] = [\n'.format(len(Cmf.z_bar()))) + f.write(' {}\n'.format(', '.join(str(v) for v in Cmf.z_bar()))) + f.write('];\n\n') + f.write('fn xyz_from_spectrum(spectrum: &[f32]) -> (f32, f32, f32) {\n') + f.write(' let mut xyz = (0.0, 0.0, 0.0);\n') + f.write(' for i in 0..(SPECTRUM_NUM_SAMPLES as usize) {\n') + f.write(' xyz.0 += spectrum[i] * CMF_X[i];\n') + f.write(' xyz.1 += spectrum[i] * CMF_Y[i];\n') + f.write(' xyz.2 += spectrum[i] * CMF_Z[i];\n') + f.write(' }\n') + f.write(' xyz.0 *= SPECTRUM_BIN_SIZE;\n') + f.write(' xyz.1 *= SPECTRUM_BIN_SIZE;\n') + f.write(' xyz.2 *= SPECTRUM_BIN_SIZE;\n') + f.write(' return xyz;\n') + f.write('}\n\n') + + print(' ... done') + +# ------------------------------------------------------------------------------ +# We need to triangulate along the spectral locus, since our regular grid +# cannot properly capture this edge. +# ------------------------------------------------------------------------------ +def create_triangle_fans(grid): + print("generating triangle fans...") + for cell in grid: + num_points = len(cell.indices) + # skip trivial inner cells (full quad interpolation)\n", + if len(cell.indices) == 4 and cell.inside: + # these could be sorted here, too. but turns out we always get them in scanline order + # so we will know exactly how to treat them in the exported c code. + continue + + # triangulate hard cases (irregular quads + n-gons, 5-gons in practice) + if num_points > 0: + # used for delaunay or plotting:\n", + points = np.array([data_points[cell.indices[i]].xystar for i in range(num_points)]) + centroid = (sum(points[:,0])/num_points, sum(points[:,1])/num_points) + dp = DataPoint() + dp.xystar = centroid + dp.update_uv() + index = len(data_points) + data_points.append(dp) + + # create triangle fan: + pts = [(points[i], i, cell.indices[i], math.atan2((points[i]-centroid)[1], (points[i]-centroid)[0])) for i in range(num_points)] + pts = sorted(pts, key=lambda pt: pt[3]) + # print('sorted {}'.format([pts[i][2] for i in range(num_points)])) + cell.indices = [index] + [pts[i][2] for i in range(num_points)] + # print('indices: {}'.format(cell.indices)) + num_points = num_points + 1; + # do that again with the new sort order: + # points = np.array([data_points[cell.indices[i]].xystar for i in range(num_points)]) + # now try triangle fan again with right pivot + cell.triangles = [[0, i+1, i+2] for i in range(len(cell.indices)-2)] + +# ------------------------------------------------------------------------------ +# Compute a high-resolution reflectance map. This map contains, for all +# possible values of (xy), the largest value Y for which the corresponding +# spectrum is still a valid reflectance. +# ------------------------------------------------------------------------------ +def compute_max_brightness(point): + x = point[0] + y = point[1] + + try: + xyz = Transform.xyz_from_xyy((x, y, y)) # x+y+z = 1 + spec, broken, msg = find_spectrum(xyz) + if broken: + print('{},{}: {}'.format(x, y, msg)) + return -1 + + return 1.0/(106.8 * max(spec)) + except: + print('Exception - this is fatal.') + raise + +def compute_reflectance_map(res): + width = res + height = res + num_pixels = width * height + buffer = [0, 0, 0.1] * num_pixels + + def store_buffer(): + with open('reflectance_map.pfm', 'wb') as file: + import struct + header = 'PF\n{w} {h}\n{le}\n'.format( + w = width, + h = height, + le = -1 if sys.byteorder == 'little' else 1) + + s = struct.pack('f' * len(buffer), *buffer) + file.write(bytes(header, encoding='utf-8')) + file.write(s) + file.close() + + def coordinates(): + for y in range(height): + for x in range(width): + yield (x / width, y / height) + + def store_pixel(i, v): + global last_time_stored + + if v == 0: + pass + elif v < 0: + buffer[3*i] = -v + buffer[3*i+1] = 0 + buffer[3*i+2] = 0 + else: + buffer[3*i] = v + buffer[3*i+1] = v + buffer[3*i+2] = v + + now = time.time() + if (now-last_time_stored) > 60: + store_buffer() + last_time_stored = time.time() + + def early_clip(idx, v): + global clip_path + if clip_path.contains_point(Transform.xystar_from_xy(v)): + return (False, 0) + return (True, 0) + + multiprocess_progress(coordinates(), + compute_max_brightness, + store_pixel, + width*height, + early_clip) + + store_buffer() + +if __name__ == "__main__": + # Parse command line options. + import argparse + parser = argparse.ArgumentParser(description='Generate spectrum_grid.h') + parser.add_argument('-s', '--scale', metavar='SCALE', type=float, default=0.97, + dest='scale', + help='Scale grid points toward the EE white point using this factor. Defaults to 0.99.') + + parser.add_argument('-p', '--plot_spectra', default=False, action='store_const', + const=True, dest='plot', + help='Plot all spectra in a set of png files. Instructive, but takes quite a while.') + + parser.add_argument('-r', '--reflectance_map', metavar='RES', type=int, default=0, + dest='reflectance_map', + help='Generate a high-resolution reflectance map instead of the grid header.') + + parser.add_argument('cmf', metavar='CMF', type=str, help='The cmf file to be used.') + + args = parser.parse_args() + + # Init xystar. + Cmf.load(args.cmf) + Transform.init_xystar() + + last_time_stored = 0 + clip_path,_ = horseshoe_path() + + # plot spectral locus + # for i in range(0,Cmf.num_bins()): + # print('{} {} {}'.format(Cmf.wavelength()[i], + # Cmf.x_bar()[i]/(Cmf.x_bar()[i]+Cmf.y_bar()[i]+Cmf.z_bar()[i]), + # Cmf.y_bar()[i]/(Cmf.x_bar()[i]+Cmf.y_bar()[i]+Cmf.z_bar()[i]))) + + if args.reflectance_map > 0: + compute_reflectance_map(args.reflectance_map) + + else: + # Generate the grid. + data_points, grid, grid_res, xystar_bbox = generate_xystar_grid(args.scale) + + # Init uv. + Transform.init_uv(xystar_bbox, grid_res) + for dp in data_points: + dp.update_uv() + + create_triangle_fans(grid) + # plot_grid('grid.pdf', data_points, grid, xystar_bbox, False) + + # Compute spectra and store in spectrum_data.h + compute_spectra(data_points) + write_output(data_points, grid, grid_res, + #'spectra_{}_{}.rs'.format(os.path.splitext(args.cmf)[0], args.scale)) + 'spectra_xyz.rs') + + # Finally, plot all spectra. + if args.plot: + plot_spectra(data_points) + diff --git a/src/color/mod.rs b/src/color/mod.rs new file mode 100644 index 0000000..8c139dc --- /dev/null +++ b/src/color/mod.rs @@ -0,0 +1,7 @@ +mod spectra_xyz; + +use self::spectra_xyz::{spectrum_xyz_to_p, EQUAL_ENERGY_REFLECTANCE}; + +pub fn xyz_to_spectrum(xyz: (f32, f32, f32), wavelength: f32) -> f32 { + spectrum_xyz_to_p(wavelength, xyz) * (1.0 / EQUAL_ENERGY_REFLECTANCE) +} diff --git a/src/color/spectra_xyz.rs b/src/color/spectra_xyz.rs new file mode 100644 index 0000000..239592b --- /dev/null +++ b/src/color/spectra_xyz.rs @@ -0,0 +1,1331 @@ +// This file is auto-generated by generate_spectra_rust.py +#![allow(dead_code)] +#![cfg_attr(rustfmt, rustfmt_skip)] + + +use std::f32; + +/// Evaluate the spectrum for xyz at the given wavelength. +pub fn spectrum_xyz_to_p(lambda: f32, xyz: (f32, f32, f32)) -> f32 +{ + assert!(lambda >= SPECTRUM_SAMPLE_MIN); + assert!(lambda <= SPECTRUM_SAMPLE_MAX); + + let norm = { + let norm = 1.0 / (xyz.0 + xyz.1 + xyz.2); + if norm < f32::MAX { + norm + } else { + return 0.0; + } + }; + + let xyy = ( + xyz.0 * norm, + xyz.1 * norm, + xyz.1, + ); + + // rotate to align with grid + let uv = spectrum_xy_to_uv((xyy.0, xyy.1)); + if uv.0 < 0.0 || uv.0 >= SPECTRUM_GRID_WIDTH as f32 || uv.1 < 0.0 || uv.1 >= SPECTRUM_GRID_HEIGHT as f32 { + return 0.0; + } + + let uvi = (uv.0 as i32, uv.1 as i32); + assert!(uvi.0 < SPECTRUM_GRID_WIDTH); + assert!(uvi.1 < SPECTRUM_GRID_HEIGHT); + + let cell_idx: i32 = uvi.0 + SPECTRUM_GRID_WIDTH * uvi.1; + assert!(cell_idx < SPECTRUM_GRID_WIDTH * SPECTRUM_GRID_HEIGHT); + assert!(cell_idx >= 0); + + let cell = &SPECTRUM_GRID[cell_idx as usize]; + let inside: bool = cell.inside; + let idx = &cell.idx; + let num: i32 = cell.num_points; + + // get linearly interpolated spectral power for the corner vertices: + // this clamping is only necessary if lambda is not sure to be >= SPECTRUM_SAMPLE_MIN and <= SPECTRUM_SAMPLE_MAX: + let sb: f32 = /*(SPECTRUM_NUM_SAMPLES as f32 - 1e-4).min(0.0.max(*/ (lambda - SPECTRUM_SAMPLE_MIN) / (SPECTRUM_SAMPLE_MAX - SPECTRUM_SAMPLE_MIN) * (SPECTRUM_NUM_SAMPLES as f32 - 1.0)/*))*/; + assert!(sb >= 0.0); + assert!(sb <= SPECTRUM_NUM_SAMPLES as f32); + + let mut p = [0.0f32; 6]; + let sb0: i32 = sb as i32; + let sb1: i32 = if (sb + 1.0) < SPECTRUM_NUM_SAMPLES as f32 { sb as i32 + 1 } else { SPECTRUM_NUM_SAMPLES - 1 }; + let sbf: f32 = sb as f32 - sb0 as f32; + for i in 0..(num as usize) { + assert!(idx[i] >= 0); + assert!(sb0 < SPECTRUM_NUM_SAMPLES); + assert!(sb1 < SPECTRUM_NUM_SAMPLES); + let spectrum = &SPECTRUM_DATA_POINTS[idx[i] as usize].spectrum; + p[i] = spectrum[sb0 as usize] * (1.0 - sbf) + spectrum[sb1 as usize] * sbf; + } + + let mut interpolated_p: f32 = 0.0; + + if inside { // fast path for normal inner quads: + let uv2 = (uv.0 - uvi.0 as f32, uv.1 - uvi.1 as f32); + + assert!(uv2.0 >= 0.0 && uv2.0 <= 1.0); + assert!(uv2.1 >= 0.0 && uv2.1 <= 1.0); + + // the layout of the vertices in the quad is: + // 2 3 + // 0 1 + interpolated_p = p[0] * (1.0 - uv2.0) * (1.0 - uv2.1) + + p[2] * (1.0 - uv2.0) * uv2.1 + + p[3] * uv2.0 * uv2.1 + + p[1] * uv2.0 * (1.0 - uv2.1); + } else { // need to go through triangulation :( + // we get the indices in such an order that they form a triangle fan around idx[0]. + // compute barycentric coordinates of our xy* point for all triangles in the fan: + let ex: f32 = uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0; + let ey: f32 = uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1; + let mut e0x: f32 = SPECTRUM_DATA_POINTS[idx[1] as usize].uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0; + let mut e0y: f32 = SPECTRUM_DATA_POINTS[idx[1] as usize].uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1; + let mut uu: f32 = e0x * ey - ex * e0y; + + for i in 0..(num as usize - 1) { + let (e1x, e1y): (f32, f32) = if i as i32 == (num - 2) { // close the circle + (SPECTRUM_DATA_POINTS[idx[1] as usize].uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0, + SPECTRUM_DATA_POINTS[idx[1] as usize].uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1) + } else { + (SPECTRUM_DATA_POINTS[idx[i+2] as usize].uv.0 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.0, + SPECTRUM_DATA_POINTS[idx[i+2] as usize].uv.1 - SPECTRUM_DATA_POINTS[idx[0] as usize].uv.1) + }; + + let vv: f32 = ex * e1y - e1x * ey; + + // TODO: with some sign magic, this division could be deferred to the last iteration! + let area: f32 = e0x * e1y - e1x * e0y; + // normalise + let u: f32 = uu / area; + let v: f32 = vv / area; + let w: f32 = 1.0 - u - v; + // outside spectral locus (quantized version at least) or outside grid + if u < 0.0 || v < 0.0 || w < 0.0 { + uu = -vv; + e0x = e1x; + e0y = e1y; + continue; + } + + // This seems to be the triangle we've been looking for. + interpolated_p = p[0] * w + p[i + 1] * v + p[if i as i32 == (num - 2) { 1 } else { i + 2 }] * u; + break; + } + } + + // now we have a spectrum which corresponds to the xy chromaticities of the input. need to scale according to the + // input brightness X+Y+Z now: + return interpolated_p / norm; +} + + +/// This is 1 over the integral over either CMF. +/// Spectra can be mapped so that xyz=(1,1,1) is converted to constant 1 by +/// dividing by this value. This is important for valid reflectances. +pub const EQUAL_ENERGY_REFLECTANCE: f32 = 0.009355121400914532; + +// Basic info on the spectrum grid. +const SPECTRUM_GRID_WIDTH: i32 = 12; +const SPECTRUM_GRID_HEIGHT: i32 = 14; + +// The spectra here have these properties. +pub const SPECTRUM_SAMPLE_MIN: f32 = 360.0; +pub const SPECTRUM_SAMPLE_MAX: f32 = 830.0; +const SPECTRUM_BIN_SIZE: f32 = 5.0; +const SPECTRUM_NUM_SAMPLES: i32 = 95; + +// xy* color space. +const SPECTRUM_MAT_XY_TO_XYSTAR: [f32; 6] = [ + 0.9067484787957371, 0.4216719058718719, -0.44280679488920294, + -0.4216719058718719, 0.9067484787957371, -0.1616921909746217 +]; +const SPECTRUM_MAT_XYSTAR_TO_XY: [f32; 6] = [ + 0.9067484787957371, -0.4216719058718719, 0.3333333333333333, + 0.4216719058718719, 0.9067484787957371, 0.3333333333333333 +]; +// uv color space. +const SPECTRUM_MAT_XY_TO_UV: [f32; 6] = [ + 16.730260708356887, 7.7801960340706, -2.170152247475828, + -7.530081094743006, 16.192422314095225, 1.1125529268825942 +]; +const SPECTRUM_MAT_UV_TO_XY: [f32; 6] = [ + 0.0491440520940413, -0.02361291916573777, 0.13292069743203658, + 0.022853819546830627, 0.05077639329371236, -0.0068951571224999215 +]; +// apply a 3x2 matrix to a 2D color. +fn spectrum_apply_3x2(matrix: &[f32; 6], src: (f32, f32)) -> (f32, f32) { + (matrix[0] * src.0 + matrix[1] * src.1 + matrix[2], + matrix[3] * src.0 + matrix[4] * src.1 + matrix[5]) +} +// Concrete conversion routines. +fn spectrum_xy_to_xystar(xy: (f32, f32)) -> (f32, f32) { + spectrum_apply_3x2(&SPECTRUM_MAT_XY_TO_XYSTAR, xy) +} +fn spectrum_xystar_to_xy(xystar: (f32, f32)) -> (f32, f32) { + spectrum_apply_3x2(&SPECTRUM_MAT_XYSTAR_TO_XY, xystar) +} +fn spectrum_xy_to_uv(xy: (f32, f32)) -> (f32, f32) { + spectrum_apply_3x2(&SPECTRUM_MAT_XY_TO_UV, xy) +} +fn spectrum_uv_to_xy(uv: (f32, f32)) -> (f32, f32) { + spectrum_apply_3x2(&SPECTRUM_MAT_UV_TO_XY, uv) +} +// Grid cells. Laid out in row-major format. +// num_points = 0 for cells without data points. +#[derive(Copy, Clone)] +struct SpectrumGridCell { + inside: bool, + num_points: i32, + idx: [i32; 6], +} + +const SPECTRUM_GRID: [SpectrumGridCell; 168] = [ + SpectrumGridCell { inside: false, num_points: 5, idx: [148, 110, 0, 12, 111, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [0, 1, 12, 13, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [1, 2, 13, 14, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [2, 3, 14, 15, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [3, 4, 15, 16, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [4, 5, 16, 17, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [5, 6, 17, 18, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [6, 7, 18, 19, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [7, 8, 19, 20, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [8, 9, 20, 21, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [9, 10, 21, 22, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [149, 10, 11, 145, 22, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [150, 111, 12, 23, 112, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [12, 13, 23, 24, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [13, 14, 24, 25, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [14, 15, 25, 26, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [15, 16, 26, 27, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [16, 17, 27, 28, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [17, 18, 28, 29, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [18, 19, 29, 30, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [19, 20, 30, 31, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [20, 21, 31, 32, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [21, 22, 32, 33, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [151, 22, 145, 146, 33, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [152, 112, 23, 34, 113, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [23, 24, 34, 35, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [24, 25, 35, 36, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [25, 26, 36, 37, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [26, 27, 37, 38, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [27, 28, 38, 39, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [28, 29, 39, 40, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [29, 30, 40, 41, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [30, 31, 41, 42, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [31, 32, 42, 43, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [153, 32, 33, 147, 141, 43] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [154, 33, 146, 147, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [155, 113, 34, 44, 114, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [34, 35, 44, 45, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [35, 36, 45, 46, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [36, 37, 46, 47, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [37, 38, 47, 48, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [38, 39, 48, 49, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [39, 40, 49, 50, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [40, 41, 50, 51, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [41, 42, 51, 52, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [42, 43, 52, 53, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [156, 43, 141, 142, 53, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [157, 114, 44, 54, 115, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [44, 45, 54, 55, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [45, 46, 55, 56, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [46, 47, 56, 57, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [47, 48, 57, 58, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [48, 49, 58, 59, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [49, 50, 59, 60, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [50, 51, 60, 61, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [51, 52, 61, 62, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [52, 53, 62, 63, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [158, 53, 142, 143, 63, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [159, 115, 54, 116, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [160, 116, 54, 55, 64, 117] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [55, 56, 64, 65, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [56, 57, 65, 66, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [57, 58, 66, 67, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [58, 59, 67, 68, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [59, 60, 68, 69, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [60, 61, 69, 70, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [61, 62, 70, 71, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [161, 62, 63, 144, 138, 71] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [162, 63, 143, 144, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [163, 117, 64, 72, 118, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [64, 65, 72, 73, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [65, 66, 73, 74, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [66, 67, 74, 75, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [67, 68, 75, 76, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [68, 69, 76, 77, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [69, 70, 77, 78, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [70, 71, 78, 79, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [164, 71, 138, 139, 79, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [165, 118, 72, 80, 119, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [72, 73, 80, 81, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [73, 74, 81, 82, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [74, 75, 82, 83, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [75, 76, 83, 84, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [76, 77, 84, 85, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [77, 78, 85, 86, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [166, 78, 79, 140, 134, 86] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [167, 79, 139, 140, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [168, 119, 80, 120, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [169, 80, 81, 87, 121, 120] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [81, 82, 87, 88, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [82, 83, 88, 89, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [83, 84, 89, 90, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [84, 85, 90, 91, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [85, 86, 91, 92, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [170, 86, 134, 135, 92, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [171, 121, 87, 93, 122, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [87, 88, 93, 94, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [88, 89, 94, 95, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [89, 90, 95, 96, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [90, 91, 96, 97, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [91, 92, 97, 98, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [172, 92, 135, 136, 98, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [173, 122, 93, 99, 123, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [93, 94, 99, 100, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [94, 95, 100, 101, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [95, 96, 101, 102, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [96, 97, 102, 103, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [174, 97, 98, 137, 131, 103] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [175, 98, 136, 137, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [176, 123, 99, 124, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [177, 124, 99, 100, 104, 125] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [100, 101, 104, 105, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [101, 102, 105, 106, -1, -1] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [102, 103, 106, 107, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [178, 103, 131, 132, 107, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [179, 125, 104, 126, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [180, 104, 105, 108, 127, 126] }, + SpectrumGridCell { inside: true, num_points: 4, idx: [105, 106, 108, 109, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 6, idx: [181, 106, 107, 133, 129, 109] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [182, 107, 132, 133, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [183, 127, 108, 128, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 5, idx: [184, 108, 109, 130, 128, -1] }, + SpectrumGridCell { inside: false, num_points: 4, idx: [185, 109, 129, 130, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] }, + SpectrumGridCell { inside: false, num_points: 0, idx: [-1, -1, -1, -1, -1, -1] } +]; + +// Grid data points. +#[derive(Copy)] +struct SpectrumDataPoint { + xystar: (f32, f32), + uv: (f32, f32), + spectrum: [f32; 95], // X+Y+Z = 1 +} + +impl Clone for SpectrumDataPoint { + fn clone(&self) -> SpectrumDataPoint { + *self + } +} + +const SPECTRUM_DATA_POINTS: [SpectrumDataPoint; 186] = [ + SpectrumDataPoint { + xystar: (-0.27099054061447164, -0.22399328802249138), + uv: (0.9999999999999991, 0.0), + spectrum: [0.023575, 0.023575, 0.023574, 0.023571, 0.023565, 0.023554, 0.023534, 0.023498, 0.023433, 0.023312, 0.023102, 0.022727, 0.022062, 0.020919, 0.019066, 0.016400, 0.013015, 0.009187, 0.005332, 0.002029, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000067, 0.000577, 0.001244, 0.001906, 0.002492, 0.002971, 0.003344, 0.003630, 0.003844, 0.004001, 0.004113, 0.004195, 0.004253, 0.004292, 0.004320, 0.004341, 0.004355, 0.004364, 0.004372, 0.004377, 0.004380, 0.004382, 0.004384, 0.004384, 0.004385, 0.004386, 0.004386, 0.004386, 0.004386, 0.004386, 0.004386, 0.004387, 0.004386, 0.004386, 0.004386, 0.004386, 0.004386, 0.004385, 0.004385, 0.004385], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, -0.22399328802249138), + uv: (2.0, 0.0), + spectrum: [0.023280, 0.023278, 0.023276, 0.023274, 0.023269, 0.023257, 0.023234, 0.023192, 0.023117, 0.022980, 0.022742, 0.022316, 0.021562, 0.020267, 0.018190, 0.015247, 0.011585, 0.007577, 0.003781, 0.000946, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000849, 0.002453, 0.004291, 0.006055, 0.007590, 0.008848, 0.009834, 0.010583, 0.011142, 0.011555, 0.011858, 0.012073, 0.012225, 0.012334, 0.012411, 0.012465, 0.012504, 0.012530, 0.012548, 0.012561, 0.012570, 0.012578, 0.012582, 0.012584, 0.012584, 0.012585, 0.012587, 0.012588, 0.012587, 0.012585, 0.012584, 0.012585, 0.012586, 0.012586, 0.012586, 0.012587, 0.012587, 0.012588, 0.012589, 0.012590, 0.012589], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, -0.22399328802249138), + uv: (3.0, 0.0), + spectrum: [0.023405, 0.023403, 0.023400, 0.023396, 0.023388, 0.023374, 0.023346, 0.023297, 0.023208, 0.023044, 0.022762, 0.022258, 0.021368, 0.019846, 0.017428, 0.014056, 0.009975, 0.005715, 0.002048, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000048, 0.002031, 0.004876, 0.007897, 0.010699, 0.013091, 0.015029, 0.016537, 0.017676, 0.018522, 0.019145, 0.019599, 0.019922, 0.020152, 0.020314, 0.020429, 0.020510, 0.020567, 0.020608, 0.020637, 0.020657, 0.020671, 0.020680, 0.020685, 0.020690, 0.020694, 0.020697, 0.020700, 0.020701, 0.020701, 0.020702, 0.020702, 0.020702, 0.020703, 0.020702, 0.020702, 0.020701, 0.020702, 0.020702, 0.020703, 0.020704, 0.020704], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, -0.22399328802249138), + uv: (4.0, 0.0), + spectrum: [0.023957, 0.023957, 0.023954, 0.023950, 0.023940, 0.023922, 0.023888, 0.023825, 0.023711, 0.023506, 0.023153, 0.022523, 0.021414, 0.019529, 0.016578, 0.012563, 0.007906, 0.003431, 0.000288, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002783, 0.006879, 0.011267, 0.015355, 0.018852, 0.021687, 0.023894, 0.025564, 0.026807, 0.027722, 0.028387, 0.028862, 0.029198, 0.029436, 0.029606, 0.029726, 0.029811, 0.029872, 0.029914, 0.029943, 0.029963, 0.029977, 0.029987, 0.029994, 0.029999, 0.030002, 0.030004, 0.030004, 0.030005, 0.030007, 0.030008, 0.030009, 0.030009, 0.030009, 0.030010, 0.030010, 0.030010, 0.030010, 0.030009, 0.030009, 0.030009], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, -0.22399328802249138), + uv: (5.0, 0.0), + spectrum: [0.024728, 0.024726, 0.024723, 0.024715, 0.024702, 0.024677, 0.024633, 0.024552, 0.024405, 0.024135, 0.023669, 0.022845, 0.021408, 0.018992, 0.015295, 0.010469, 0.005302, 0.001183, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002776, 0.008050, 0.014104, 0.019921, 0.024986, 0.029137, 0.032391, 0.034861, 0.036705, 0.038067, 0.039062, 0.039773, 0.040276, 0.040634, 0.040888, 0.041069, 0.041197, 0.041286, 0.041348, 0.041392, 0.041422, 0.041442, 0.041457, 0.041467, 0.041474, 0.041480, 0.041483, 0.041485, 0.041487, 0.041489, 0.041491, 0.041491, 0.041491, 0.041491, 0.041491, 0.041491, 0.041491, 0.041490, 0.041490, 0.041490, 0.041490], + }, + SpectrumDataPoint { + xystar: (0.0, -0.22399328802249138), + uv: (6.0, 0.0), + spectrum: [0.025078, 0.025076, 0.025072, 0.025063, 0.025045, 0.025013, 0.024956, 0.024853, 0.024667, 0.024327, 0.023739, 0.022706, 0.020912, 0.017934, 0.013498, 0.008006, 0.002777, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002130, 0.008537, 0.016516, 0.024438, 0.031454, 0.037262, 0.041845, 0.045339, 0.047956, 0.049893, 0.051309, 0.052324, 0.053043, 0.053554, 0.053918, 0.054177, 0.054359, 0.054487, 0.054577, 0.054640, 0.054684, 0.054714, 0.054736, 0.054750, 0.054761, 0.054768, 0.054773, 0.054777, 0.054779, 0.054780, 0.054781, 0.054782, 0.054783, 0.054783, 0.054783, 0.054784, 0.054784, 0.054784, 0.054784, 0.054783, 0.054784], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, -0.22399328802249138), + uv: (7.000000000000001, 0.0), + spectrum: [0.024931, 0.024929, 0.024924, 0.024914, 0.024893, 0.024854, 0.024784, 0.024657, 0.024429, 0.024014, 0.023300, 0.022048, 0.019887, 0.016344, 0.011221, 0.005254, 0.000451, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000935, 0.008435, 0.018559, 0.028909, 0.038207, 0.045969, 0.052127, 0.056839, 0.060376, 0.062999, 0.064919, 0.066295, 0.067272, 0.067967, 0.068462, 0.068813, 0.069061, 0.069235, 0.069358, 0.069444, 0.069503, 0.069544, 0.069573, 0.069594, 0.069607, 0.069617, 0.069624, 0.069629, 0.069633, 0.069635, 0.069637, 0.069639, 0.069639, 0.069639, 0.069639, 0.069639, 0.069639, 0.069639, 0.069639, 0.069639, 0.069639], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, -0.22399328802249138), + uv: (8.0, 0.0), + spectrum: [0.023903, 0.023900, 0.023894, 0.023881, 0.023856, 0.023808, 0.023723, 0.023570, 0.023296, 0.022795, 0.021938, 0.020448, 0.017902, 0.013818, 0.008231, 0.002550, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.007273, 0.019410, 0.032632, 0.044862, 0.055243, 0.063561, 0.069970, 0.074804, 0.078402, 0.081043, 0.082941, 0.084288, 0.085247, 0.085931, 0.086416, 0.086758, 0.087000, 0.087169, 0.087288, 0.087370, 0.087428, 0.087467, 0.087495, 0.087514, 0.087528, 0.087538, 0.087545, 0.087550, 0.087553, 0.087555, 0.087556, 0.087556, 0.087556, 0.087556, 0.087556, 0.087557, 0.087557, 0.087557, 0.087556, 0.087557], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, -0.22399328802249138), + uv: (9.0, 0.0), + spectrum: [0.022866, 0.022863, 0.022855, 0.022839, 0.022807, 0.022748, 0.022645, 0.022458, 0.022124, 0.021516, 0.020478, 0.018688, 0.015669, 0.010948, 0.004930, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.005327, 0.019065, 0.035406, 0.051084, 0.064651, 0.075650, 0.084187, 0.090661, 0.095500, 0.099063, 0.101628, 0.103452, 0.104751, 0.105676, 0.106332, 0.106796, 0.107123, 0.107352, 0.107513, 0.107625, 0.107703, 0.107757, 0.107795, 0.107822, 0.107840, 0.107853, 0.107863, 0.107869, 0.107873, 0.107876, 0.107878, 0.107880, 0.107881, 0.107882, 0.107882, 0.107883, 0.107883, 0.107883, 0.107883, 0.107883], + }, + SpectrumDataPoint { + xystar: (0.21679243249157734, -0.22399328802249138), + uv: (10.0, 0.0), + spectrum: [0.019140, 0.019137, 0.019128, 0.019110, 0.019076, 0.019012, 0.018899, 0.018696, 0.018337, 0.017684, 0.016577, 0.014692, 0.011577, 0.006932, 0.001819, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002556, 0.017879, 0.037710, 0.057330, 0.074579, 0.088691, 0.099708, 0.108097, 0.114386, 0.119028, 0.122375, 0.124758, 0.126455, 0.127665, 0.128523, 0.129129, 0.129556, 0.129857, 0.130067, 0.130213, 0.130314, 0.130384, 0.130434, 0.130469, 0.130494, 0.130511, 0.130524, 0.130532, 0.130538, 0.130543, 0.130545, 0.130547, 0.130548, 0.130549, 0.130549, 0.130549, 0.130549, 0.130550, 0.130550, 0.130550], + }, + SpectrumDataPoint { + xystar: (0.27099054061447164, -0.22399328802249138), + uv: (11.0, 0.0), + spectrum: [0.013761, 0.013757, 0.013748, 0.013730, 0.013696, 0.013633, 0.013521, 0.013321, 0.012968, 0.012331, 0.011262, 0.009486, 0.006656, 0.002812, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.016185, 0.039428, 0.063213, 0.084465, 0.102012, 0.115790, 0.126325, 0.134246, 0.140107, 0.144339, 0.147353, 0.149500, 0.151032, 0.152117, 0.152885, 0.153427, 0.153806, 0.154071, 0.154256, 0.154384, 0.154473, 0.154536, 0.154581, 0.154614, 0.154636, 0.154651, 0.154662, 0.154669, 0.154674, 0.154678, 0.154681, 0.154683, 0.154684, 0.154685, 0.154684, 0.154685, 0.154685, 0.154686, 0.154687], + }, + SpectrumDataPoint { + xystar: (0.3251886487373659, -0.22399328802249138), + uv: (12.0, 0.0), + spectrum: [0.003893, 0.003891, 0.003884, 0.003870, 0.003846, 0.003800, 0.003722, 0.003585, 0.003356, 0.002951, 0.002309, 0.001377, 0.000247, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.012060, 0.037710, 0.066528, 0.093367, 0.116030, 0.134066, 0.147987, 0.158525, 0.166362, 0.172040, 0.176091, 0.178980, 0.181040, 0.182501, 0.183534, 0.184261, 0.184772, 0.185130, 0.185379, 0.185553, 0.185674, 0.185759, 0.185819, 0.185860, 0.185890, 0.185911, 0.185925, 0.185935, 0.185942, 0.185947, 0.185950, 0.185953, 0.185954, 0.185956, 0.185956, 0.185957, 0.185957, 0.185957, 0.185957], + }, + SpectrumDataPoint { + xystar: (-0.27099054061447164, -0.16799496601686853), + uv: (0.9999999999999991, 1.0), + spectrum: [0.009112, 0.009112, 0.009112, 0.009112, 0.009112, 0.009111, 0.009111, 0.009109, 0.009107, 0.009103, 0.009095, 0.009081, 0.009054, 0.009003, 0.008917, 0.008781, 0.008589, 0.008337, 0.008025, 0.007656, 0.007231, 0.006756, 0.006238, 0.005686, 0.005112, 0.004527, 0.003941, 0.003362, 0.002797, 0.002260, 0.001759, 0.001304, 0.000905, 0.000572, 0.000311, 0.000128, 0.000024, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000023, 0.000068, 0.000126, 0.000195, 0.000266, 0.000333, 0.000393, 0.000448, 0.000496, 0.000536, 0.000570, 0.000596, 0.000617, 0.000632, 0.000643, 0.000649, 0.000651, 0.000653, 0.000654, 0.000654, 0.000652, 0.000651, 0.000650, 0.000649, 0.000647, 0.000647, 0.000646, 0.000646, 0.000646, 0.000647, 0.000647, 0.000647, 0.000648, 0.000648, 0.000649, 0.000649, 0.000650, 0.000650, 0.000651, 0.000651, 0.000651, 0.000651, 0.000651, 0.000651, 0.000650, 0.000649, 0.000648, 0.000648, 0.000647], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, -0.16799496601686853), + uv: (2.0, 1.0), + spectrum: [0.008348, 0.008348, 0.008348, 0.008348, 0.008348, 0.008347, 0.008347, 0.008345, 0.008344, 0.008339, 0.008330, 0.008315, 0.008287, 0.008239, 0.008156, 0.008026, 0.007842, 0.007601, 0.007304, 0.006952, 0.006548, 0.006098, 0.005606, 0.005085, 0.004543, 0.003994, 0.003446, 0.002908, 0.002388, 0.001897, 0.001443, 0.001038, 0.000689, 0.000406, 0.000194, 0.000059, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000003, 0.000057, 0.000155, 0.000290, 0.000449, 0.000624, 0.000807, 0.000989, 0.001163, 0.001323, 0.001466, 0.001591, 0.001696, 0.001783, 0.001854, 0.001910, 0.001954, 0.001987, 0.002011, 0.002029, 0.002042, 0.002051, 0.002057, 0.002062, 0.002065, 0.002066, 0.002067, 0.002067, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002067, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002068, 0.002067, 0.002067, 0.002066, 0.002066, 0.002066, 0.002066, 0.002066, 0.002066], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, -0.16799496601686853), + uv: (3.0, 1.0), + spectrum: [0.007628, 0.007627, 0.007627, 0.007627, 0.007627, 0.007626, 0.007624, 0.007622, 0.007620, 0.007615, 0.007607, 0.007593, 0.007568, 0.007521, 0.007440, 0.007313, 0.007133, 0.006897, 0.006605, 0.006258, 0.005862, 0.005419, 0.004939, 0.004431, 0.003908, 0.003379, 0.002855, 0.002345, 0.001860, 0.001408, 0.001000, 0.000648, 0.000365, 0.000159, 0.000037, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000035, 0.000136, 0.000294, 0.000499, 0.000739, 0.001004, 0.001280, 0.001557, 0.001826, 0.002078, 0.002309, 0.002513, 0.002688, 0.002837, 0.002960, 0.003059, 0.003137, 0.003198, 0.003244, 0.003279, 0.003304, 0.003322, 0.003334, 0.003343, 0.003349, 0.003353, 0.003356, 0.003358, 0.003359, 0.003359, 0.003359, 0.003360, 0.003359, 0.003359, 0.003359, 0.003359, 0.003359, 0.003359, 0.003360, 0.003361, 0.003361, 0.003362, 0.003362, 0.003363, 0.003363, 0.003363, 0.003363, 0.003362, 0.003361, 0.003361, 0.003360, 0.003360, 0.003359, 0.003359, 0.003358], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, -0.16799496601686853), + uv: (4.0, 1.0), + spectrum: [0.006988, 0.006988, 0.006987, 0.006987, 0.006986, 0.006984, 0.006984, 0.006982, 0.006981, 0.006975, 0.006966, 0.006948, 0.006918, 0.006864, 0.006777, 0.006643, 0.006455, 0.006208, 0.005906, 0.005552, 0.005149, 0.004706, 0.004227, 0.003722, 0.003208, 0.002695, 0.002195, 0.001715, 0.001271, 0.000871, 0.000532, 0.000265, 0.000083, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000086, 0.000256, 0.000496, 0.000797, 0.001141, 0.001512, 0.001895, 0.002276, 0.002644, 0.002988, 0.003300, 0.003572, 0.003806, 0.004003, 0.004166, 0.004298, 0.004402, 0.004483, 0.004545, 0.004591, 0.004626, 0.004651, 0.004669, 0.004682, 0.004691, 0.004698, 0.004704, 0.004707, 0.004709, 0.004710, 0.004710, 0.004709, 0.004707, 0.004707, 0.004706, 0.004705, 0.004705, 0.004704, 0.004703, 0.004704, 0.004704, 0.004704, 0.004705, 0.004705, 0.004705, 0.004705, 0.004704, 0.004704, 0.004704, 0.004704, 0.004705, 0.004705, 0.004704, 0.004704, 0.004704], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, -0.16799496601686853), + uv: (5.0, 1.0), + spectrum: [0.006347, 0.006347, 0.006347, 0.006349, 0.006348, 0.006347, 0.006346, 0.006345, 0.006343, 0.006339, 0.006330, 0.006311, 0.006279, 0.006221, 0.006128, 0.005984, 0.005786, 0.005528, 0.005213, 0.004846, 0.004430, 0.003973, 0.003486, 0.002983, 0.002477, 0.001983, 0.001510, 0.001074, 0.000689, 0.000372, 0.000140, 0.000009, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000088, 0.000291, 0.000592, 0.000976, 0.001424, 0.001913, 0.002423, 0.002933, 0.003424, 0.003886, 0.004307, 0.004681, 0.005001, 0.005271, 0.005492, 0.005671, 0.005812, 0.005919, 0.006002, 0.006063, 0.006110, 0.006144, 0.006169, 0.006185, 0.006197, 0.006208, 0.006215, 0.006219, 0.006221, 0.006222, 0.006222, 0.006223, 0.006224, 0.006223, 0.006222, 0.006222, 0.006221, 0.006219, 0.006219, 0.006219, 0.006219, 0.006219, 0.006219, 0.006219, 0.006218, 0.006219, 0.006220, 0.006221, 0.006220, 0.006220, 0.006221, 0.006222, 0.006223, 0.006223, 0.006223], + }, + SpectrumDataPoint { + xystar: (0.0, -0.16799496601686853), + uv: (6.0, 1.0), + spectrum: [0.005678, 0.005678, 0.005678, 0.005677, 0.005677, 0.005676, 0.005675, 0.005673, 0.005670, 0.005665, 0.005657, 0.005639, 0.005608, 0.005552, 0.005456, 0.005307, 0.005100, 0.004833, 0.004505, 0.004126, 0.003700, 0.003237, 0.002750, 0.002255, 0.001769, 0.001308, 0.000889, 0.000529, 0.000245, 0.000060, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000012, 0.000199, 0.000537, 0.001000, 0.001560, 0.002186, 0.002850, 0.003522, 0.004177, 0.004796, 0.005361, 0.005864, 0.006297, 0.006663, 0.006964, 0.007207, 0.007399, 0.007548, 0.007660, 0.007744, 0.007805, 0.007849, 0.007881, 0.007904, 0.007921, 0.007932, 0.007940, 0.007945, 0.007949, 0.007951, 0.007952, 0.007953, 0.007953, 0.007953, 0.007954, 0.007954, 0.007955, 0.007956, 0.007956, 0.007956, 0.007957, 0.007956, 0.007956, 0.007956, 0.007954, 0.007953, 0.007952, 0.007952, 0.007952, 0.007952, 0.007952, 0.007952, 0.007952, 0.007953, 0.007953], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, -0.16799496601686853), + uv: (7.000000000000001, 1.0), + spectrum: [0.005026, 0.005026, 0.005026, 0.005026, 0.005025, 0.005024, 0.005023, 0.005021, 0.005017, 0.005011, 0.005000, 0.004981, 0.004946, 0.004884, 0.004780, 0.004620, 0.004399, 0.004115, 0.003773, 0.003378, 0.002943, 0.002478, 0.001999, 0.001526, 0.001079, 0.000681, 0.000353, 0.000118, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000078, 0.000389, 0.000894, 0.001553, 0.002323, 0.003160, 0.004024, 0.004877, 0.005688, 0.006434, 0.007100, 0.007677, 0.008166, 0.008568, 0.008894, 0.009153, 0.009353, 0.009505, 0.009619, 0.009702, 0.009762, 0.009805, 0.009835, 0.009857, 0.009872, 0.009882, 0.009890, 0.009895, 0.009898, 0.009900, 0.009902, 0.009903, 0.009904, 0.009904, 0.009905, 0.009905, 0.009906, 0.009906, 0.009906, 0.009906, 0.009906, 0.009906, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905, 0.009905], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, -0.16799496601686853), + uv: (8.0, 1.0), + spectrum: [0.004322, 0.004322, 0.004322, 0.004322, 0.004321, 0.004319, 0.004318, 0.004317, 0.004313, 0.004307, 0.004297, 0.004276, 0.004239, 0.004173, 0.004062, 0.003892, 0.003658, 0.003360, 0.003006, 0.002604, 0.002168, 0.001716, 0.001266, 0.000845, 0.000480, 0.000198, 0.000027, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000191, 0.000679, 0.001407, 0.002314, 0.003337, 0.004418, 0.005501, 0.006544, 0.007513, 0.008383, 0.009143, 0.009786, 0.010319, 0.010750, 0.011093, 0.011358, 0.011560, 0.011711, 0.011822, 0.011902, 0.011960, 0.012001, 0.012031, 0.012052, 0.012067, 0.012076, 0.012083, 0.012088, 0.012091, 0.012093, 0.012095, 0.012096, 0.012097, 0.012097, 0.012098, 0.012099, 0.012099, 0.012099, 0.012099, 0.012098, 0.012098, 0.012098, 0.012097, 0.012096, 0.012095, 0.012094, 0.012094, 0.012094, 0.012094, 0.012094, 0.012095, 0.012095, 0.012096], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, -0.16799496601686853), + uv: (9.0, 1.0), + spectrum: [0.003529, 0.003529, 0.003529, 0.003529, 0.003528, 0.003527, 0.003526, 0.003524, 0.003520, 0.003512, 0.003499, 0.003477, 0.003438, 0.003368, 0.003253, 0.003079, 0.002842, 0.002544, 0.002194, 0.001806, 0.001399, 0.000995, 0.000622, 0.000306, 0.000087, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000385, 0.001133, 0.002157, 0.003372, 0.004692, 0.006043, 0.007359, 0.008592, 0.009707, 0.010684, 0.011515, 0.012204, 0.012764, 0.013209, 0.013555, 0.013819, 0.014017, 0.014163, 0.014269, 0.014344, 0.014398, 0.014437, 0.014465, 0.014483, 0.014496, 0.014505, 0.014511, 0.014515, 0.014518, 0.014520, 0.014521, 0.014521, 0.014522, 0.014523, 0.014524, 0.014523, 0.014523, 0.014523, 0.014524, 0.014524, 0.014524, 0.014524, 0.014524, 0.014524, 0.014524, 0.014524, 0.014524, 0.014523, 0.014523, 0.014523, 0.014523, 0.014523], + }, + SpectrumDataPoint { + xystar: (0.21679243249157734, -0.16799496601686853), + uv: (10.0, 1.0), + spectrum: [0.002618, 0.002618, 0.002617, 0.002618, 0.002618, 0.002618, 0.002617, 0.002614, 0.002609, 0.002601, 0.002589, 0.002567, 0.002527, 0.002457, 0.002341, 0.002168, 0.001939, 0.001655, 0.001333, 0.000992, 0.000655, 0.000354, 0.000123, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000107, 0.000762, 0.001841, 0.003227, 0.004797, 0.006445, 0.008081, 0.009630, 0.011042, 0.012286, 0.013350, 0.014237, 0.014960, 0.015536, 0.015984, 0.016326, 0.016582, 0.016770, 0.016908, 0.017007, 0.017078, 0.017129, 0.017165, 0.017189, 0.017206, 0.017219, 0.017227, 0.017233, 0.017238, 0.017239, 0.017241, 0.017243, 0.017243, 0.017243, 0.017244, 0.017244, 0.017244, 0.017244, 0.017244, 0.017243, 0.017242, 0.017242, 0.017242, 0.017241, 0.017242, 0.017242, 0.017242, 0.017241, 0.017242, 0.017242, 0.017242, 0.017243], + }, + SpectrumDataPoint { + xystar: (0.27099054061447164, -0.16799496601686853), + uv: (11.0, 1.0), + spectrum: [0.001462, 0.001462, 0.001462, 0.001461, 0.001461, 0.001460, 0.001459, 0.001456, 0.001452, 0.001446, 0.001434, 0.001412, 0.001375, 0.001314, 0.001214, 0.001070, 0.000885, 0.000671, 0.000445, 0.000235, 0.000074, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000382, 0.001410, 0.002911, 0.004721, 0.006685, 0.008678, 0.010596, 0.012363, 0.013934, 0.015285, 0.016416, 0.017342, 0.018080, 0.018656, 0.019095, 0.019425, 0.019668, 0.019844, 0.019971, 0.020062, 0.020128, 0.020173, 0.020205, 0.020228, 0.020243, 0.020255, 0.020263, 0.020269, 0.020273, 0.020276, 0.020277, 0.020278, 0.020279, 0.020279, 0.020279, 0.020280, 0.020280, 0.020279, 0.020279, 0.020279, 0.020280, 0.020280, 0.020281, 0.020281, 0.020282, 0.020282, 0.020282, 0.020282, 0.020281, 0.020281, 0.020281], + }, + SpectrumDataPoint { + xystar: (-0.27099054061447164, -0.11199664401124569), + uv: (0.9999999999999991, 1.9999999999999998), + spectrum: [0.007120, 0.007121, 0.007121, 0.007121, 0.007121, 0.007122, 0.007122, 0.007121, 0.007123, 0.007125, 0.007127, 0.007131, 0.007140, 0.007155, 0.007176, 0.007204, 0.007238, 0.007274, 0.007306, 0.007324, 0.007315, 0.007274, 0.007186, 0.007042, 0.006837, 0.006572, 0.006243, 0.005850, 0.005391, 0.004869, 0.004287, 0.003647, 0.002966, 0.002273, 0.001599, 0.000985, 0.000478, 0.000131, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, -0.11199664401124569), + uv: (2.0, 1.9999999999999998), + spectrum: [0.007476, 0.007476, 0.007475, 0.007476, 0.007475, 0.007475, 0.007473, 0.007471, 0.007469, 0.007467, 0.007464, 0.007456, 0.007441, 0.007412, 0.007361, 0.007280, 0.007164, 0.007010, 0.006820, 0.006593, 0.006330, 0.006034, 0.005711, 0.005364, 0.005002, 0.004629, 0.004251, 0.003874, 0.003501, 0.003137, 0.002785, 0.002451, 0.002138, 0.001849, 0.001588, 0.001356, 0.001155, 0.000984, 0.000843, 0.000729, 0.000644, 0.000583, 0.000546, 0.000527, 0.000525, 0.000539, 0.000562, 0.000594, 0.000628, 0.000664, 0.000699, 0.000733, 0.000763, 0.000788, 0.000811, 0.000828, 0.000842, 0.000852, 0.000859, 0.000865, 0.000871, 0.000874, 0.000876, 0.000878, 0.000880, 0.000881, 0.000881, 0.000881, 0.000880, 0.000880, 0.000880, 0.000879, 0.000878, 0.000878, 0.000879, 0.000880, 0.000879, 0.000878, 0.000879, 0.000880, 0.000881, 0.000881, 0.000880, 0.000880, 0.000882, 0.000883, 0.000882, 0.000882, 0.000881, 0.000882, 0.000881, 0.000880, 0.000879, 0.000878, 0.000878], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, -0.11199664401124569), + uv: (3.0, 1.9999999999999998), + spectrum: [0.006771, 0.006771, 0.006770, 0.006769, 0.006769, 0.006768, 0.006767, 0.006766, 0.006765, 0.006763, 0.006759, 0.006750, 0.006734, 0.006703, 0.006651, 0.006568, 0.006453, 0.006302, 0.006116, 0.005894, 0.005639, 0.005354, 0.005044, 0.004715, 0.004373, 0.004022, 0.003670, 0.003321, 0.002978, 0.002648, 0.002332, 0.002036, 0.001764, 0.001524, 0.001316, 0.001145, 0.001010, 0.000910, 0.000847, 0.000817, 0.000819, 0.000849, 0.000903, 0.000976, 0.001064, 0.001163, 0.001267, 0.001372, 0.001473, 0.001568, 0.001656, 0.001733, 0.001799, 0.001855, 0.001900, 0.001937, 0.001965, 0.001989, 0.002007, 0.002021, 0.002032, 0.002041, 0.002047, 0.002050, 0.002053, 0.002055, 0.002057, 0.002058, 0.002058, 0.002059, 0.002058, 0.002058, 0.002057, 0.002057, 0.002056, 0.002055, 0.002054, 0.002054, 0.002054, 0.002054, 0.002054, 0.002054, 0.002054, 0.002053, 0.002052, 0.002051, 0.002049, 0.002048, 0.002047, 0.002047, 0.002047, 0.002048, 0.002048, 0.002049, 0.002048], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, -0.11199664401124569), + uv: (4.0, 1.9999999999999998), + spectrum: [0.006020, 0.006020, 0.006020, 0.006020, 0.006020, 0.006020, 0.006020, 0.006018, 0.006016, 0.006014, 0.006011, 0.006002, 0.005988, 0.005960, 0.005913, 0.005839, 0.005732, 0.005590, 0.005414, 0.005206, 0.004967, 0.004699, 0.004405, 0.004093, 0.003766, 0.003434, 0.003100, 0.002771, 0.002452, 0.002148, 0.001865, 0.001606, 0.001380, 0.001190, 0.001042, 0.000936, 0.000872, 0.000849, 0.000864, 0.000916, 0.001002, 0.001118, 0.001259, 0.001419, 0.001591, 0.001772, 0.001955, 0.002135, 0.002307, 0.002464, 0.002608, 0.002734, 0.002844, 0.002934, 0.003007, 0.003067, 0.003114, 0.003151, 0.003178, 0.003197, 0.003210, 0.003219, 0.003224, 0.003228, 0.003229, 0.003230, 0.003230, 0.003231, 0.003232, 0.003233, 0.003234, 0.003234, 0.003235, 0.003236, 0.003236, 0.003237, 0.003238, 0.003239, 0.003239, 0.003239, 0.003239, 0.003238, 0.003238, 0.003238, 0.003237, 0.003236, 0.003236, 0.003235, 0.003235, 0.003234, 0.003234, 0.003233, 0.003233, 0.003232, 0.003232], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, -0.11199664401124569), + uv: (5.0, 1.9999999999999998), + spectrum: [0.005330, 0.005330, 0.005330, 0.005330, 0.005329, 0.005330, 0.005330, 0.005330, 0.005329, 0.005325, 0.005319, 0.005309, 0.005293, 0.005262, 0.005212, 0.005135, 0.005026, 0.004886, 0.004714, 0.004511, 0.004278, 0.004016, 0.003732, 0.003432, 0.003121, 0.002808, 0.002495, 0.002191, 0.001901, 0.001629, 0.001384, 0.001170, 0.000995, 0.000861, 0.000773, 0.000732, 0.000739, 0.000791, 0.000886, 0.001021, 0.001192, 0.001396, 0.001625, 0.001872, 0.002131, 0.002394, 0.002655, 0.002908, 0.003145, 0.003364, 0.003557, 0.003727, 0.003873, 0.003994, 0.004093, 0.004172, 0.004234, 0.004283, 0.004319, 0.004346, 0.004364, 0.004378, 0.004387, 0.004394, 0.004398, 0.004401, 0.004404, 0.004405, 0.004406, 0.004407, 0.004408, 0.004408, 0.004407, 0.004407, 0.004407, 0.004407, 0.004407, 0.004406, 0.004407, 0.004406, 0.004405, 0.004406, 0.004406, 0.004405, 0.004405, 0.004405, 0.004405, 0.004405, 0.004406, 0.004406, 0.004406, 0.004406, 0.004405, 0.004405, 0.004405], + }, + SpectrumDataPoint { + xystar: (0.0, -0.11199664401124569), + uv: (6.0, 1.9999999999999998), + spectrum: [0.004609, 0.004609, 0.004609, 0.004609, 0.004608, 0.004607, 0.004607, 0.004606, 0.004605, 0.004603, 0.004599, 0.004591, 0.004575, 0.004546, 0.004498, 0.004425, 0.004321, 0.004186, 0.004018, 0.003818, 0.003592, 0.003339, 0.003066, 0.002780, 0.002486, 0.002190, 0.001901, 0.001623, 0.001362, 0.001123, 0.000915, 0.000743, 0.000614, 0.000531, 0.000501, 0.000525, 0.000601, 0.000729, 0.000904, 0.001122, 0.001380, 0.001670, 0.001987, 0.002322, 0.002666, 0.003012, 0.003351, 0.003678, 0.003982, 0.004259, 0.004508, 0.004723, 0.004908, 0.005061, 0.005186, 0.005286, 0.005367, 0.005427, 0.005472, 0.005506, 0.005530, 0.005547, 0.005558, 0.005567, 0.005574, 0.005579, 0.005582, 0.005585, 0.005586, 0.005586, 0.005586, 0.005586, 0.005586, 0.005586, 0.005586, 0.005586, 0.005586, 0.005586, 0.005587, 0.005587, 0.005586, 0.005586, 0.005586, 0.005585, 0.005585, 0.005584, 0.005585, 0.005586, 0.005586, 0.005586, 0.005586, 0.005585, 0.005585, 0.005585, 0.005585], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, -0.11199664401124569), + uv: (7.000000000000001, 1.9999999999999998), + spectrum: [0.003895, 0.003896, 0.003896, 0.003896, 0.003896, 0.003897, 0.003896, 0.003895, 0.003894, 0.003892, 0.003887, 0.003877, 0.003860, 0.003830, 0.003783, 0.003710, 0.003608, 0.003476, 0.003314, 0.003123, 0.002906, 0.002667, 0.002408, 0.002137, 0.001860, 0.001585, 0.001318, 0.001064, 0.000829, 0.000622, 0.000448, 0.000316, 0.000232, 0.000203, 0.000231, 0.000317, 0.000462, 0.000662, 0.000916, 0.001218, 0.001561, 0.001940, 0.002346, 0.002770, 0.003203, 0.003633, 0.004051, 0.004451, 0.004822, 0.005161, 0.005462, 0.005724, 0.005946, 0.006131, 0.006280, 0.006400, 0.006493, 0.006565, 0.006619, 0.006658, 0.006687, 0.006708, 0.006723, 0.006734, 0.006742, 0.006748, 0.006751, 0.006754, 0.006756, 0.006757, 0.006758, 0.006758, 0.006758, 0.006758, 0.006758, 0.006757, 0.006757, 0.006756, 0.006755, 0.006755, 0.006755, 0.006754, 0.006754, 0.006755, 0.006755, 0.006754, 0.006754, 0.006754, 0.006754, 0.006754, 0.006754, 0.006754, 0.006754, 0.006755, 0.006755], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, -0.11199664401124569), + uv: (8.0, 1.9999999999999998), + spectrum: [0.003179, 0.003179, 0.003180, 0.003180, 0.003180, 0.003180, 0.003179, 0.003178, 0.003176, 0.003172, 0.003166, 0.003156, 0.003139, 0.003109, 0.003061, 0.002990, 0.002891, 0.002762, 0.002605, 0.002422, 0.002215, 0.001988, 0.001743, 0.001490, 0.001237, 0.000987, 0.000750, 0.000531, 0.000339, 0.000181, 0.000066, 0.000002, 0.000000, 0.000000, 0.000030, 0.000135, 0.000310, 0.000556, 0.000867, 0.001237, 0.001660, 0.002124, 0.002623, 0.003143, 0.003674, 0.004202, 0.004716, 0.005207, 0.005663, 0.006078, 0.006447, 0.006766, 0.007037, 0.007261, 0.007445, 0.007591, 0.007706, 0.007795, 0.007863, 0.007914, 0.007952, 0.007979, 0.007999, 0.008013, 0.008023, 0.008029, 0.008032, 0.008035, 0.008037, 0.008038, 0.008039, 0.008039, 0.008039, 0.008038, 0.008037, 0.008036, 0.008035, 0.008034, 0.008034, 0.008034, 0.008034, 0.008034, 0.008035, 0.008036, 0.008036, 0.008035, 0.008035, 0.008034, 0.008034, 0.008033, 0.008033, 0.008033, 0.008033, 0.008034, 0.008034], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, -0.11199664401124569), + uv: (9.0, 1.9999999999999998), + spectrum: [0.002410, 0.002410, 0.002410, 0.002410, 0.002409, 0.002409, 0.002408, 0.002407, 0.002406, 0.002404, 0.002399, 0.002391, 0.002376, 0.002348, 0.002304, 0.002236, 0.002141, 0.002019, 0.001870, 0.001698, 0.001506, 0.001299, 0.001085, 0.000869, 0.000660, 0.000465, 0.000294, 0.000154, 0.000053, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000013, 0.000130, 0.000349, 0.000663, 0.001064, 0.001543, 0.002089, 0.002687, 0.003322, 0.003980, 0.004642, 0.005293, 0.005918, 0.006501, 0.007035, 0.007510, 0.007925, 0.008278, 0.008572, 0.008811, 0.009002, 0.009151, 0.009266, 0.009354, 0.009420, 0.009468, 0.009502, 0.009526, 0.009543, 0.009556, 0.009564, 0.009569, 0.009573, 0.009576, 0.009577, 0.009579, 0.009580, 0.009580, 0.009581, 0.009581, 0.009581, 0.009581, 0.009581, 0.009581, 0.009581, 0.009581, 0.009581, 0.009580, 0.009580, 0.009579, 0.009579, 0.009579, 0.009578, 0.009577, 0.009577, 0.009577, 0.009578, 0.009579, 0.009580, 0.009581], + }, + SpectrumDataPoint { + xystar: (0.21679243249157734, -0.11199664401124569), + uv: (10.0, 1.9999999999999998), + spectrum: [0.001571, 0.001571, 0.001571, 0.001572, 0.001572, 0.001571, 0.001571, 0.001571, 0.001570, 0.001567, 0.001563, 0.001555, 0.001541, 0.001518, 0.001478, 0.001417, 0.001334, 0.001229, 0.001102, 0.000958, 0.000801, 0.000639, 0.000477, 0.000324, 0.000191, 0.000086, 0.000019, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000130, 0.000400, 0.000800, 0.001318, 0.001937, 0.002637, 0.003399, 0.004200, 0.005016, 0.005824, 0.006605, 0.007338, 0.008012, 0.008617, 0.009145, 0.009595, 0.009971, 0.010278, 0.010524, 0.010718, 0.010868, 0.010981, 0.011064, 0.011125, 0.011169, 0.011201, 0.011224, 0.011240, 0.011251, 0.011259, 0.011265, 0.011269, 0.011272, 0.011274, 0.011275, 0.011276, 0.011275, 0.011276, 0.011275, 0.011275, 0.011274, 0.011274, 0.011274, 0.011273, 0.011274, 0.011274, 0.011274, 0.011274, 0.011274, 0.011274, 0.011274, 0.011274, 0.011274, 0.011274, 0.011273, 0.011273, 0.011273, 0.011273], + }, + SpectrumDataPoint { + xystar: (0.27099054061447164, -0.11199664401124569), + uv: (11.0, 1.9999999999999998), + spectrum: [0.000577, 0.000577, 0.000578, 0.000580, 0.000582, 0.000583, 0.000584, 0.000583, 0.000581, 0.000578, 0.000574, 0.000568, 0.000558, 0.000542, 0.000514, 0.000474, 0.000422, 0.000356, 0.000284, 0.000206, 0.000130, 0.000066, 0.000018, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000152, 0.000495, 0.001009, 0.001672, 0.002460, 0.003344, 0.004295, 0.005282, 0.006273, 0.007241, 0.008158, 0.009005, 0.009766, 0.010434, 0.011005, 0.011483, 0.011874, 0.012188, 0.012435, 0.012624, 0.012766, 0.012871, 0.012948, 0.013004, 0.013044, 0.013074, 0.013096, 0.013112, 0.013123, 0.013131, 0.013136, 0.013141, 0.013143, 0.013142, 0.013141, 0.013140, 0.013139, 0.013140, 0.013139, 0.013141, 0.013141, 0.013141, 0.013142, 0.013141, 0.013142, 0.013142, 0.013142, 0.013142, 0.013142, 0.013141, 0.013142, 0.013143, 0.013143, 0.013144, 0.013143, 0.013143, 0.013143], + }, + SpectrumDataPoint { + xystar: (-0.27099054061447164, -0.05599832200562286), + uv: (0.9999999999999991, 2.999999999999999), + spectrum: [0.000957, 0.000958, 0.000957, 0.000958, 0.000959, 0.000961, 0.000967, 0.000977, 0.000994, 0.001028, 0.001083, 0.001179, 0.001346, 0.001632, 0.002099, 0.002790, 0.003714, 0.004851, 0.006154, 0.007554, 0.008965, 0.010288, 0.011420, 0.012276, 0.012792, 0.012927, 0.012661, 0.011995, 0.010942, 0.009517, 0.007762, 0.005768, 0.003708, 0.001834, 0.000469, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, -0.05599832200562286), + uv: (2.0, 2.999999999999999), + spectrum: [0.006672, 0.006673, 0.006672, 0.006673, 0.006672, 0.006672, 0.006671, 0.006671, 0.006670, 0.006669, 0.006667, 0.006663, 0.006655, 0.006640, 0.006614, 0.006575, 0.006517, 0.006441, 0.006347, 0.006233, 0.006100, 0.005949, 0.005781, 0.005597, 0.005399, 0.005190, 0.004970, 0.004743, 0.004509, 0.004269, 0.004021, 0.003768, 0.003509, 0.003246, 0.002982, 0.002716, 0.002451, 0.002187, 0.001926, 0.001672, 0.001427, 0.001194, 0.000975, 0.000771, 0.000588, 0.000425, 0.000288, 0.000177, 0.000092, 0.000033, 0.000002, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, -0.05599832200562286), + uv: (3.0, 2.999999999999999), + spectrum: [0.006014, 0.006014, 0.006015, 0.006015, 0.006014, 0.006014, 0.006014, 0.006013, 0.006012, 0.006011, 0.006009, 0.006005, 0.005998, 0.005983, 0.005956, 0.005913, 0.005852, 0.005771, 0.005670, 0.005548, 0.005407, 0.005248, 0.005073, 0.004886, 0.004688, 0.004484, 0.004276, 0.004064, 0.003851, 0.003637, 0.003426, 0.003217, 0.003013, 0.002814, 0.002624, 0.002443, 0.002271, 0.002110, 0.001960, 0.001822, 0.001694, 0.001578, 0.001472, 0.001377, 0.001292, 0.001215, 0.001148, 0.001090, 0.001039, 0.000996, 0.000959, 0.000928, 0.000902, 0.000882, 0.000867, 0.000855, 0.000845, 0.000838, 0.000833, 0.000829, 0.000827, 0.000825, 0.000824, 0.000822, 0.000822, 0.000821, 0.000821, 0.000820, 0.000819, 0.000818, 0.000818, 0.000817, 0.000816, 0.000816, 0.000816, 0.000816, 0.000815, 0.000815, 0.000815, 0.000814, 0.000814, 0.000814, 0.000814, 0.000814, 0.000814, 0.000814, 0.000814, 0.000814, 0.000813, 0.000813, 0.000813, 0.000812, 0.000812, 0.000812, 0.000812], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, -0.05599832200562286), + uv: (4.0, 2.999999999999999), + spectrum: [0.005300, 0.005300, 0.005299, 0.005299, 0.005299, 0.005299, 0.005299, 0.005299, 0.005298, 0.005296, 0.005292, 0.005288, 0.005279, 0.005265, 0.005239, 0.005198, 0.005141, 0.005067, 0.004972, 0.004858, 0.004726, 0.004578, 0.004414, 0.004240, 0.004057, 0.003869, 0.003680, 0.003490, 0.003304, 0.003122, 0.002947, 0.002781, 0.002625, 0.002481, 0.002351, 0.002237, 0.002138, 0.002055, 0.001985, 0.001929, 0.001887, 0.001856, 0.001837, 0.001826, 0.001825, 0.001830, 0.001840, 0.001854, 0.001872, 0.001889, 0.001906, 0.001924, 0.001939, 0.001951, 0.001962, 0.001971, 0.001979, 0.001984, 0.001988, 0.001991, 0.001994, 0.001995, 0.001996, 0.001998, 0.001998, 0.001998, 0.001999, 0.001998, 0.001998, 0.001998, 0.001998, 0.001998, 0.001998, 0.001997, 0.001996, 0.001996, 0.001995, 0.001995, 0.001995, 0.001995, 0.001995, 0.001995, 0.001995, 0.001995, 0.001995, 0.001996, 0.001996, 0.001996, 0.001996, 0.001995, 0.001995, 0.001995, 0.001994, 0.001995, 0.001995], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, -0.05599832200562286), + uv: (5.0, 2.999999999999999), + spectrum: [0.004560, 0.004561, 0.004561, 0.004561, 0.004561, 0.004560, 0.004562, 0.004562, 0.004561, 0.004560, 0.004557, 0.004553, 0.004544, 0.004530, 0.004507, 0.004470, 0.004418, 0.004350, 0.004264, 0.004163, 0.004046, 0.003914, 0.003769, 0.003614, 0.003454, 0.003288, 0.003121, 0.002955, 0.002794, 0.002643, 0.002502, 0.002372, 0.002255, 0.002158, 0.002082, 0.002026, 0.001993, 0.001981, 0.001986, 0.002012, 0.002054, 0.002112, 0.002183, 0.002263, 0.002351, 0.002443, 0.002536, 0.002628, 0.002714, 0.002795, 0.002867, 0.002930, 0.002986, 0.003032, 0.003070, 0.003101, 0.003123, 0.003141, 0.003154, 0.003164, 0.003171, 0.003175, 0.003177, 0.003178, 0.003177, 0.003177, 0.003177, 0.003178, 0.003178, 0.003179, 0.003179, 0.003179, 0.003179, 0.003180, 0.003180, 0.003181, 0.003181, 0.003180, 0.003181, 0.003180, 0.003180, 0.003179, 0.003178, 0.003178, 0.003178, 0.003178, 0.003179, 0.003179, 0.003178, 0.003178, 0.003178, 0.003178, 0.003178, 0.003178, 0.003178], + }, + SpectrumDataPoint { + xystar: (0.0, -0.05599832200562286), + uv: (6.0, 2.999999999999999), + spectrum: [0.003867, 0.003867, 0.003867, 0.003867, 0.003867, 0.003868, 0.003868, 0.003868, 0.003867, 0.003865, 0.003862, 0.003857, 0.003849, 0.003833, 0.003809, 0.003771, 0.003719, 0.003651, 0.003568, 0.003469, 0.003354, 0.003228, 0.003092, 0.002949, 0.002802, 0.002654, 0.002510, 0.002372, 0.002241, 0.002121, 0.002017, 0.001930, 0.001866, 0.001825, 0.001810, 0.001822, 0.001859, 0.001923, 0.002011, 0.002121, 0.002251, 0.002396, 0.002553, 0.002721, 0.002894, 0.003067, 0.003237, 0.003400, 0.003552, 0.003691, 0.003814, 0.003921, 0.004012, 0.004089, 0.004152, 0.004202, 0.004240, 0.004269, 0.004292, 0.004309, 0.004321, 0.004330, 0.004336, 0.004340, 0.004343, 0.004345, 0.004346, 0.004347, 0.004348, 0.004348, 0.004348, 0.004348, 0.004348, 0.004348, 0.004347, 0.004347, 0.004346, 0.004346, 0.004346, 0.004345, 0.004345, 0.004345, 0.004345, 0.004345, 0.004344, 0.004344, 0.004344, 0.004344, 0.004344, 0.004344, 0.004344, 0.004344, 0.004343, 0.004343, 0.004343], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, -0.05599832200562286), + uv: (7.000000000000001, 2.999999999999999), + spectrum: [0.003146, 0.003146, 0.003147, 0.003147, 0.003147, 0.003148, 0.003148, 0.003148, 0.003149, 0.003150, 0.003147, 0.003144, 0.003137, 0.003124, 0.003101, 0.003065, 0.003016, 0.002951, 0.002870, 0.002774, 0.002667, 0.002549, 0.002423, 0.002292, 0.002160, 0.002031, 0.001910, 0.001799, 0.001700, 0.001616, 0.001550, 0.001506, 0.001490, 0.001502, 0.001547, 0.001622, 0.001726, 0.001863, 0.002027, 0.002218, 0.002432, 0.002664, 0.002911, 0.003166, 0.003424, 0.003681, 0.003930, 0.004168, 0.004388, 0.004589, 0.004767, 0.004921, 0.005053, 0.005162, 0.005250, 0.005320, 0.005374, 0.005415, 0.005445, 0.005467, 0.005484, 0.005496, 0.005505, 0.005512, 0.005517, 0.005520, 0.005524, 0.005525, 0.005526, 0.005527, 0.005527, 0.005528, 0.005528, 0.005527, 0.005527, 0.005527, 0.005527, 0.005526, 0.005525, 0.005525, 0.005523, 0.005523, 0.005522, 0.005522, 0.005523, 0.005522, 0.005522, 0.005522, 0.005522, 0.005522, 0.005523, 0.005522, 0.005522, 0.005522, 0.005522], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, -0.05599832200562286), + uv: (8.0, 2.999999999999999), + spectrum: [0.002426, 0.002428, 0.002429, 0.002430, 0.002427, 0.002430, 0.002432, 0.002431, 0.002427, 0.002426, 0.002424, 0.002418, 0.002410, 0.002396, 0.002373, 0.002341, 0.002299, 0.002239, 0.002164, 0.002078, 0.001986, 0.001884, 0.001772, 0.001661, 0.001549, 0.001443, 0.001343, 0.001252, 0.001176, 0.001117, 0.001083, 0.001073, 0.001099, 0.001163, 0.001260, 0.001401, 0.001578, 0.001792, 0.002042, 0.002319, 0.002621, 0.002943, 0.003279, 0.003622, 0.003966, 0.004306, 0.004633, 0.004943, 0.005230, 0.005487, 0.005716, 0.005917, 0.006084, 0.006225, 0.006341, 0.006430, 0.006499, 0.006555, 0.006594, 0.006624, 0.006649, 0.006661, 0.006668, 0.006677, 0.006681, 0.006683, 0.006686, 0.006688, 0.006687, 0.006690, 0.006694, 0.006695, 0.006696, 0.006695, 0.006693, 0.006692, 0.006691, 0.006691, 0.006691, 0.006689, 0.006688, 0.006690, 0.006691, 0.006692, 0.006694, 0.006692, 0.006692, 0.006694, 0.006693, 0.006692, 0.006692, 0.006692, 0.006691, 0.006692, 0.006692], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, -0.05599832200562286), + uv: (9.0, 2.999999999999999), + spectrum: [0.001712, 0.001712, 0.001712, 0.001712, 0.001712, 0.001711, 0.001711, 0.001711, 0.001711, 0.001711, 0.001710, 0.001707, 0.001701, 0.001691, 0.001670, 0.001636, 0.001591, 0.001533, 0.001465, 0.001386, 0.001296, 0.001202, 0.001103, 0.001004, 0.000910, 0.000824, 0.000746, 0.000683, 0.000637, 0.000614, 0.000617, 0.000654, 0.000727, 0.000842, 0.001000, 0.001201, 0.001446, 0.001732, 0.002055, 0.002412, 0.002798, 0.003207, 0.003630, 0.004063, 0.004495, 0.004919, 0.005327, 0.005712, 0.006068, 0.006390, 0.006674, 0.006920, 0.007128, 0.007300, 0.007438, 0.007548, 0.007634, 0.007698, 0.007746, 0.007782, 0.007806, 0.007824, 0.007837, 0.007846, 0.007852, 0.007857, 0.007860, 0.007862, 0.007864, 0.007865, 0.007866, 0.007867, 0.007868, 0.007868, 0.007869, 0.007869, 0.007869, 0.007870, 0.007870, 0.007870, 0.007870, 0.007869, 0.007869, 0.007869, 0.007868, 0.007868, 0.007868, 0.007867, 0.007867, 0.007868, 0.007868, 0.007868, 0.007868, 0.007869, 0.007869], + }, + SpectrumDataPoint { + xystar: (0.21679243249157734, -0.05599832200562286), + uv: (10.0, 2.999999999999999), + spectrum: [0.001022, 0.001024, 0.001025, 0.001025, 0.001027, 0.001024, 0.001024, 0.001023, 0.001021, 0.001013, 0.001012, 0.001003, 0.000991, 0.000972, 0.000948, 0.000920, 0.000877, 0.000822, 0.000756, 0.000687, 0.000610, 0.000531, 0.000449, 0.000363, 0.000286, 0.000219, 0.000164, 0.000127, 0.000108, 0.000116, 0.000155, 0.000230, 0.000351, 0.000517, 0.000732, 0.000997, 0.001312, 0.001672, 0.002072, 0.002511, 0.002983, 0.003478, 0.003990, 0.004506, 0.005021, 0.005522, 0.006006, 0.006466, 0.006887, 0.007275, 0.007609, 0.007907, 0.008161, 0.008372, 0.008548, 0.008686, 0.008800, 0.008885, 0.008953, 0.009000, 0.009038, 0.009066, 0.009087, 0.009099, 0.009106, 0.009110, 0.009116, 0.009119, 0.009119, 0.009119, 0.009119, 0.009119, 0.009115, 0.009115, 0.009112, 0.009112, 0.009111, 0.009111, 0.009110, 0.009108, 0.009109, 0.009108, 0.009106, 0.009107, 0.009106, 0.009105, 0.009105, 0.009103, 0.009103, 0.009102, 0.009102, 0.009102, 0.009102, 0.009101, 0.009102], + }, + SpectrumDataPoint { + xystar: (-0.27099054061447164, 0.0), + uv: (0.9999999999999991, 3.9999999999999996), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000071, 0.001598, 0.004288, 0.007769, 0.011604, 0.015331, 0.018511, 0.020803, 0.021982, 0.021926, 0.020638, 0.018184, 0.014704, 0.010461, 0.005968, 0.002079, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, 0.0), + uv: (2.0, 3.9999999999999996), + spectrum: [0.004842, 0.004842, 0.004843, 0.004843, 0.004843, 0.004844, 0.004845, 0.004846, 0.004849, 0.004852, 0.004859, 0.004872, 0.004893, 0.004933, 0.005000, 0.005100, 0.005236, 0.005408, 0.005613, 0.005842, 0.006084, 0.006328, 0.006566, 0.006782, 0.006964, 0.007102, 0.007186, 0.007210, 0.007163, 0.007035, 0.006815, 0.006496, 0.006070, 0.005541, 0.004920, 0.004228, 0.003491, 0.002736, 0.001995, 0.001306, 0.000715, 0.000268, 0.000013, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.0), + uv: (3.0, 3.9999999999999996), + spectrum: [0.005225, 0.005225, 0.005225, 0.005225, 0.005226, 0.005227, 0.005226, 0.005227, 0.005227, 0.005228, 0.005227, 0.005228, 0.005227, 0.005228, 0.005226, 0.005224, 0.005220, 0.005213, 0.005204, 0.005192, 0.005177, 0.005157, 0.005132, 0.005099, 0.005060, 0.005012, 0.004957, 0.004893, 0.004816, 0.004725, 0.004620, 0.004496, 0.004351, 0.004188, 0.004001, 0.003794, 0.003567, 0.003321, 0.003060, 0.002789, 0.002510, 0.002226, 0.001942, 0.001663, 0.001394, 0.001140, 0.000904, 0.000690, 0.000503, 0.000347, 0.000219, 0.000123, 0.000055, 0.000015, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.0), + uv: (4.0, 3.9999999999999996), + spectrum: [0.004583, 0.004582, 0.004582, 0.004582, 0.004582, 0.004582, 0.004582, 0.004582, 0.004582, 0.004581, 0.004578, 0.004574, 0.004571, 0.004565, 0.004558, 0.004550, 0.004541, 0.004530, 0.004517, 0.004500, 0.004481, 0.004460, 0.004436, 0.004407, 0.004372, 0.004331, 0.004286, 0.004235, 0.004178, 0.004115, 0.004043, 0.003963, 0.003873, 0.003770, 0.003657, 0.003534, 0.003397, 0.003251, 0.003094, 0.002929, 0.002759, 0.002584, 0.002408, 0.002232, 0.002059, 0.001892, 0.001732, 0.001582, 0.001445, 0.001321, 0.001212, 0.001117, 0.001038, 0.000973, 0.000920, 0.000877, 0.000844, 0.000818, 0.000798, 0.000783, 0.000773, 0.000765, 0.000760, 0.000757, 0.000755, 0.000754, 0.000752, 0.000751, 0.000750, 0.000749, 0.000748, 0.000747, 0.000746, 0.000745, 0.000745, 0.000744, 0.000743, 0.000742, 0.000741, 0.000740, 0.000739, 0.000739, 0.000739, 0.000739, 0.000739, 0.000741, 0.000741, 0.000741, 0.000742, 0.000742, 0.000741, 0.000741, 0.000740, 0.000740, 0.000740], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.0), + uv: (5.0, 3.9999999999999996), + spectrum: [0.003833, 0.003833, 0.003833, 0.003833, 0.003834, 0.003834, 0.003835, 0.003835, 0.003835, 0.003835, 0.003835, 0.003835, 0.003835, 0.003834, 0.003832, 0.003829, 0.003825, 0.003821, 0.003816, 0.003810, 0.003803, 0.003794, 0.003783, 0.003769, 0.003752, 0.003734, 0.003713, 0.003689, 0.003661, 0.003628, 0.003592, 0.003551, 0.003504, 0.003451, 0.003391, 0.003326, 0.003255, 0.003180, 0.003100, 0.003017, 0.002931, 0.002843, 0.002756, 0.002669, 0.002584, 0.002502, 0.002424, 0.002351, 0.002284, 0.002225, 0.002171, 0.002125, 0.002086, 0.002053, 0.002026, 0.002004, 0.001987, 0.001973, 0.001962, 0.001955, 0.001949, 0.001945, 0.001942, 0.001940, 0.001938, 0.001936, 0.001935, 0.001934, 0.001933, 0.001932, 0.001932, 0.001931, 0.001931, 0.001930, 0.001930, 0.001929, 0.001929, 0.001928, 0.001928, 0.001927, 0.001926, 0.001926, 0.001926, 0.001926, 0.001926, 0.001925, 0.001925, 0.001925, 0.001926, 0.001926, 0.001926, 0.001926, 0.001926, 0.001926, 0.001926], + }, + SpectrumDataPoint { + xystar: (0.0, 0.0), + uv: (6.0, 3.9999999999999996), + spectrum: [0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119, 0.003119], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.0), + uv: (7.000000000000001, 3.9999999999999996), + spectrum: [0.002415, 0.002415, 0.002415, 0.002415, 0.002414, 0.002413, 0.002413, 0.002413, 0.002413, 0.002413, 0.002413, 0.002414, 0.002413, 0.002411, 0.002410, 0.002408, 0.002410, 0.002411, 0.002414, 0.002420, 0.002428, 0.002438, 0.002451, 0.002468, 0.002487, 0.002508, 0.002531, 0.002558, 0.002587, 0.002620, 0.002657, 0.002696, 0.002740, 0.002790, 0.002847, 0.002910, 0.002979, 0.003053, 0.003133, 0.003217, 0.003303, 0.003392, 0.003480, 0.003569, 0.003656, 0.003739, 0.003818, 0.003891, 0.003958, 0.004020, 0.004073, 0.004119, 0.004157, 0.004189, 0.004213, 0.004232, 0.004247, 0.004259, 0.004267, 0.004273, 0.004277, 0.004279, 0.004281, 0.004282, 0.004282, 0.004283, 0.004283, 0.004283, 0.004284, 0.004284, 0.004284, 0.004284, 0.004285, 0.004284, 0.004284, 0.004284, 0.004283, 0.004283, 0.004282, 0.004282, 0.004281, 0.004280, 0.004280, 0.004279, 0.004279, 0.004279, 0.004278, 0.004278, 0.004278, 0.004278, 0.004277, 0.004277, 0.004277, 0.004277, 0.004277], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.0), + uv: (8.0, 3.9999999999999996), + spectrum: [0.001684, 0.001684, 0.001683, 0.001684, 0.001684, 0.001684, 0.001685, 0.001685, 0.001684, 0.001683, 0.001684, 0.001684, 0.001685, 0.001686, 0.001688, 0.001693, 0.001699, 0.001708, 0.001719, 0.001732, 0.001749, 0.001769, 0.001794, 0.001823, 0.001857, 0.001896, 0.001941, 0.001990, 0.002046, 0.002109, 0.002181, 0.002263, 0.002354, 0.002459, 0.002575, 0.002704, 0.002844, 0.002994, 0.003152, 0.003319, 0.003491, 0.003666, 0.003843, 0.004018, 0.004190, 0.004356, 0.004514, 0.004662, 0.004797, 0.004919, 0.005025, 0.005115, 0.005191, 0.005254, 0.005304, 0.005345, 0.005376, 0.005399, 0.005418, 0.005432, 0.005443, 0.005451, 0.005456, 0.005460, 0.005463, 0.005464, 0.005465, 0.005465, 0.005465, 0.005466, 0.005465, 0.005465, 0.005464, 0.005464, 0.005464, 0.005463, 0.005462, 0.005462, 0.005462, 0.005461, 0.005461, 0.005461, 0.005461, 0.005461, 0.005460, 0.005459, 0.005459, 0.005458, 0.005458, 0.005457, 0.005457, 0.005457, 0.005457, 0.005457, 0.005457], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, 0.0), + uv: (9.0, 3.9999999999999996), + spectrum: [0.000960, 0.000959, 0.000960, 0.000960, 0.000960, 0.000961, 0.000961, 0.000961, 0.000961, 0.000959, 0.000959, 0.000960, 0.000962, 0.000965, 0.000970, 0.000978, 0.000989, 0.001002, 0.001021, 0.001043, 0.001069, 0.001099, 0.001135, 0.001177, 0.001227, 0.001284, 0.001350, 0.001425, 0.001509, 0.001603, 0.001712, 0.001835, 0.001975, 0.002129, 0.002303, 0.002494, 0.002703, 0.002927, 0.003166, 0.003415, 0.003675, 0.003940, 0.004206, 0.004471, 0.004730, 0.004979, 0.005215, 0.005435, 0.005636, 0.005815, 0.005973, 0.006110, 0.006224, 0.006320, 0.006397, 0.006458, 0.006505, 0.006542, 0.006571, 0.006591, 0.006606, 0.006616, 0.006624, 0.006630, 0.006634, 0.006636, 0.006638, 0.006639, 0.006639, 0.006640, 0.006640, 0.006640, 0.006639, 0.006639, 0.006639, 0.006638, 0.006637, 0.006637, 0.006637, 0.006637, 0.006637, 0.006637, 0.006637, 0.006637, 0.006636, 0.006635, 0.006636, 0.006635, 0.006635, 0.006634, 0.006634, 0.006634, 0.006635, 0.006635, 0.006636], + }, + SpectrumDataPoint { + xystar: (0.21679243249157734, 0.0), + uv: (10.0, 3.9999999999999996), + spectrum: [0.000240, 0.000240, 0.000241, 0.000241, 0.000242, 0.000244, 0.000246, 0.000248, 0.000249, 0.000250, 0.000249, 0.000251, 0.000254, 0.000256, 0.000259, 0.000265, 0.000278, 0.000296, 0.000317, 0.000345, 0.000380, 0.000422, 0.000472, 0.000531, 0.000599, 0.000676, 0.000763, 0.000862, 0.000973, 0.001099, 0.001241, 0.001404, 0.001589, 0.001798, 0.002031, 0.002287, 0.002566, 0.002866, 0.003184, 0.003517, 0.003862, 0.004212, 0.004566, 0.004918, 0.005263, 0.005595, 0.005911, 0.006205, 0.006475, 0.006717, 0.006929, 0.007112, 0.007265, 0.007391, 0.007493, 0.007574, 0.007635, 0.007681, 0.007714, 0.007737, 0.007753, 0.007763, 0.007771, 0.007777, 0.007782, 0.007786, 0.007791, 0.007795, 0.007796, 0.007798, 0.007800, 0.007801, 0.007800, 0.007799, 0.007797, 0.007796, 0.007796, 0.007797, 0.007797, 0.007798, 0.007798, 0.007798, 0.007798, 0.007798, 0.007799, 0.007800, 0.007800, 0.007801, 0.007802, 0.007802, 0.007802, 0.007803, 0.007803, 0.007803, 0.007804], + }, + SpectrumDataPoint { + xystar: (-0.27099054061447164, 0.05599832200562286), + uv: (0.9999999999999991, 5.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001414, 0.010027, 0.021396, 0.031903, 0.038994, 0.041104, 0.037951, 0.030090, 0.018983, 0.007336, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, 0.05599832200562286), + uv: (2.0, 5.0), + spectrum: [0.001605, 0.001606, 0.001606, 0.001607, 0.001608, 0.001609, 0.001613, 0.001620, 0.001628, 0.001642, 0.001666, 0.001712, 0.001799, 0.001953, 0.002210, 0.002600, 0.003134, 0.003811, 0.004615, 0.005517, 0.006485, 0.007476, 0.008442, 0.009335, 0.010115, 0.010748, 0.011205, 0.011458, 0.011481, 0.011258, 0.010760, 0.009968, 0.008898, 0.007585, 0.006092, 0.004523, 0.002996, 0.001636, 0.000583, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000002, 0.000000, 0.000000, 0.000001, 0.000000, 0.000002, 0.000002, 0.000002, 0.000003, 0.000002, 0.000004, 0.000003], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.05599832200562286), + uv: (3.0, 5.0), + spectrum: [0.003983, 0.003984, 0.003984, 0.003985, 0.003986, 0.003987, 0.003987, 0.003988, 0.003989, 0.003994, 0.004001, 0.004010, 0.004027, 0.004058, 0.004111, 0.004191, 0.004301, 0.004443, 0.004613, 0.004807, 0.005022, 0.005251, 0.005489, 0.005724, 0.005948, 0.006154, 0.006332, 0.006478, 0.006582, 0.006637, 0.006630, 0.006552, 0.006395, 0.006157, 0.005836, 0.005438, 0.004971, 0.004446, 0.003877, 0.003279, 0.002672, 0.002074, 0.001508, 0.000999, 0.000572, 0.000249, 0.000052, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000002], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.05599832200562286), + uv: (4.0, 5.0), + spectrum: [0.003745, 0.003746, 0.003746, 0.003746, 0.003746, 0.003746, 0.003747, 0.003747, 0.003748, 0.003750, 0.003754, 0.003759, 0.003769, 0.003784, 0.003811, 0.003850, 0.003904, 0.003974, 0.004058, 0.004154, 0.004263, 0.004380, 0.004504, 0.004630, 0.004754, 0.004872, 0.004981, 0.005077, 0.005157, 0.005216, 0.005250, 0.005252, 0.005219, 0.005147, 0.005033, 0.004880, 0.004685, 0.004454, 0.004186, 0.003890, 0.003568, 0.003227, 0.002874, 0.002515, 0.002159, 0.001814, 0.001486, 0.001184, 0.000912, 0.000674, 0.000473, 0.000311, 0.000185, 0.000095, 0.000037, 0.000007, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.05599832200562286), + uv: (5.0, 5.0), + spectrum: [0.003086, 0.003086, 0.003086, 0.003086, 0.003085, 0.003085, 0.003085, 0.003086, 0.003087, 0.003088, 0.003091, 0.003096, 0.003103, 0.003118, 0.003141, 0.003176, 0.003226, 0.003290, 0.003368, 0.003461, 0.003566, 0.003682, 0.003807, 0.003937, 0.004068, 0.004197, 0.004321, 0.004437, 0.004541, 0.004630, 0.004699, 0.004743, 0.004760, 0.004749, 0.004702, 0.004625, 0.004515, 0.004374, 0.004206, 0.004012, 0.003797, 0.003565, 0.003320, 0.003066, 0.002809, 0.002555, 0.002308, 0.002074, 0.001856, 0.001657, 0.001480, 0.001325, 0.001194, 0.001085, 0.000993, 0.000920, 0.000863, 0.000819, 0.000785, 0.000760, 0.000741, 0.000728, 0.000718, 0.000710, 0.000704, 0.000700, 0.000696, 0.000694, 0.000693, 0.000690, 0.000689, 0.000688, 0.000688, 0.000688, 0.000688, 0.000688, 0.000687, 0.000686, 0.000686, 0.000686, 0.000686, 0.000686, 0.000686, 0.000686, 0.000685, 0.000685, 0.000685, 0.000685, 0.000684, 0.000684, 0.000684, 0.000684, 0.000684, 0.000684, 0.000684], + }, + SpectrumDataPoint { + xystar: (0.0, 0.05599832200562286), + uv: (6.0, 5.0), + spectrum: [0.002356, 0.002354, 0.002355, 0.002355, 0.002355, 0.002354, 0.002354, 0.002354, 0.002356, 0.002358, 0.002363, 0.002370, 0.002382, 0.002399, 0.002428, 0.002469, 0.002521, 0.002589, 0.002675, 0.002773, 0.002883, 0.003006, 0.003142, 0.003285, 0.003431, 0.003577, 0.003723, 0.003865, 0.003996, 0.004116, 0.004221, 0.004307, 0.004371, 0.004412, 0.004428, 0.004418, 0.004380, 0.004316, 0.004230, 0.004121, 0.003991, 0.003846, 0.003687, 0.003520, 0.003348, 0.003173, 0.003003, 0.002838, 0.002687, 0.002548, 0.002424, 0.002316, 0.002222, 0.002148, 0.002085, 0.002036, 0.001997, 0.001966, 0.001945, 0.001928, 0.001914, 0.001904, 0.001896, 0.001890, 0.001888, 0.001884, 0.001882, 0.001880, 0.001879, 0.001877, 0.001878, 0.001878, 0.001878, 0.001878, 0.001878, 0.001878, 0.001878, 0.001879, 0.001878, 0.001879, 0.001879, 0.001879, 0.001880, 0.001879, 0.001878, 0.001878, 0.001877, 0.001877, 0.001876, 0.001876, 0.001876, 0.001876, 0.001876, 0.001877, 0.001877], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.05599832200562286), + uv: (7.000000000000001, 5.0), + spectrum: [0.001660, 0.001659, 0.001659, 0.001659, 0.001659, 0.001659, 0.001659, 0.001658, 0.001658, 0.001659, 0.001660, 0.001665, 0.001672, 0.001686, 0.001712, 0.001751, 0.001806, 0.001880, 0.001969, 0.002075, 0.002196, 0.002334, 0.002483, 0.002642, 0.002808, 0.002975, 0.003142, 0.003305, 0.003463, 0.003613, 0.003753, 0.003879, 0.003988, 0.004081, 0.004155, 0.004209, 0.004242, 0.004255, 0.004247, 0.004219, 0.004175, 0.004117, 0.004045, 0.003965, 0.003878, 0.003788, 0.003698, 0.003610, 0.003527, 0.003448, 0.003379, 0.003316, 0.003262, 0.003217, 0.003180, 0.003150, 0.003127, 0.003110, 0.003098, 0.003088, 0.003081, 0.003076, 0.003071, 0.003067, 0.003064, 0.003061, 0.003059, 0.003057, 0.003056, 0.003054, 0.003054, 0.003053, 0.003052, 0.003052, 0.003051, 0.003050, 0.003051, 0.003050, 0.003051, 0.003051, 0.003051, 0.003053, 0.003054, 0.003054, 0.003054, 0.003054, 0.003054, 0.003053, 0.003054, 0.003053, 0.003054, 0.003054, 0.003054, 0.003054, 0.003054], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.05599832200562286), + uv: (8.0, 5.0), + spectrum: [0.000930, 0.000931, 0.000931, 0.000931, 0.000932, 0.000933, 0.000933, 0.000934, 0.000934, 0.000936, 0.000938, 0.000942, 0.000950, 0.000965, 0.000993, 0.001035, 0.001095, 0.001173, 0.001270, 0.001385, 0.001517, 0.001665, 0.001826, 0.001999, 0.002178, 0.002362, 0.002549, 0.002736, 0.002922, 0.003103, 0.003279, 0.003447, 0.003604, 0.003751, 0.003883, 0.004000, 0.004102, 0.004189, 0.004261, 0.004319, 0.004363, 0.004393, 0.004412, 0.004421, 0.004420, 0.004413, 0.004400, 0.004383, 0.004365, 0.004346, 0.004326, 0.004308, 0.004293, 0.004279, 0.004269, 0.004261, 0.004254, 0.004249, 0.004245, 0.004243, 0.004241, 0.004240, 0.004238, 0.004237, 0.004236, 0.004235, 0.004235, 0.004234, 0.004234, 0.004234, 0.004234, 0.004234, 0.004233, 0.004232, 0.004231, 0.004230, 0.004229, 0.004228, 0.004228, 0.004227, 0.004227, 0.004227, 0.004227, 0.004228, 0.004228, 0.004228, 0.004228, 0.004228, 0.004228, 0.004227, 0.004226, 0.004226, 0.004226, 0.004226, 0.004226], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, 0.05599832200562286), + uv: (9.0, 5.0), + spectrum: [0.000215, 0.000214, 0.000214, 0.000215, 0.000215, 0.000215, 0.000215, 0.000215, 0.000214, 0.000214, 0.000216, 0.000221, 0.000231, 0.000249, 0.000279, 0.000325, 0.000388, 0.000471, 0.000572, 0.000694, 0.000833, 0.000989, 0.001161, 0.001346, 0.001542, 0.001746, 0.001956, 0.002170, 0.002386, 0.002602, 0.002815, 0.003026, 0.003230, 0.003428, 0.003618, 0.003798, 0.003968, 0.004127, 0.004276, 0.004414, 0.004541, 0.004659, 0.004767, 0.004864, 0.004950, 0.005026, 0.005093, 0.005152, 0.005203, 0.005244, 0.005280, 0.005309, 0.005332, 0.005351, 0.005367, 0.005380, 0.005389, 0.005398, 0.005405, 0.005411, 0.005415, 0.005418, 0.005420, 0.005421, 0.005423, 0.005423, 0.005423, 0.005422, 0.005422, 0.005421, 0.005420, 0.005419, 0.005419, 0.005418, 0.005417, 0.005416, 0.005416, 0.005415, 0.005414, 0.005415, 0.005415, 0.005414, 0.005414, 0.005413, 0.005413, 0.005413, 0.005412, 0.005412, 0.005412, 0.005411, 0.005411, 0.005410, 0.005410, 0.005410, 0.005410], + }, + SpectrumDataPoint { + xystar: (0.21679243249157734, 0.05599832200562286), + uv: (10.0, 5.0), + spectrum: [0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000002, 0.000097, 0.000268, 0.000494, 0.000763, 0.001062, 0.001380, 0.001714, 0.002056, 0.002400, 0.002740, 0.003071, 0.003389, 0.003693, 0.003981, 0.004252, 0.004504, 0.004737, 0.004950, 0.005142, 0.005316, 0.005471, 0.005609, 0.005729, 0.005834, 0.005924, 0.006000, 0.006065, 0.006118, 0.006161, 0.006197, 0.006225, 0.006247, 0.006264, 0.006276, 0.006286, 0.006294, 0.006299, 0.006303, 0.006305, 0.006306, 0.006307, 0.006307, 0.006308, 0.006308, 0.006308, 0.006308, 0.006308, 0.006308, 0.006308, 0.006308, 0.006308, 0.006307, 0.006307, 0.006306, 0.006306, 0.006306, 0.006306, 0.006306, 0.006306, 0.006305, 0.006305, 0.006304, 0.006304, 0.006304, 0.006304, 0.006303, 0.006303, 0.006303, 0.006304, 0.006304, 0.006304, 0.006304], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, 0.11199664401124566), + uv: (2.0, 5.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000376, 0.001245, 0.002562, 0.004250, 0.006211, 0.008324, 0.010458, 0.012472, 0.014244, 0.015672, 0.016680, 0.017213, 0.017218, 0.016651, 0.015470, 0.013683, 0.011364, 0.008668, 0.005845, 0.003215, 0.001131, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001, 0.000001, 0.000002, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.11199664401124566), + uv: (3.0, 5.999999999999999), + spectrum: [0.002087, 0.002087, 0.002087, 0.002087, 0.002087, 0.002089, 0.002090, 0.002093, 0.002098, 0.002107, 0.002122, 0.002150, 0.002199, 0.002288, 0.002437, 0.002662, 0.002974, 0.003375, 0.003856, 0.004407, 0.005015, 0.005662, 0.006322, 0.006976, 0.007600, 0.008169, 0.008662, 0.009068, 0.009367, 0.009536, 0.009553, 0.009399, 0.009060, 0.008533, 0.007829, 0.006976, 0.006000, 0.004942, 0.003850, 0.002781, 0.001790, 0.000948, 0.000328, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000002, 0.000001, 0.000001, 0.000002, 0.000002, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.11199664401124566), + uv: (4.0, 5.999999999999999), + spectrum: [0.002692, 0.002692, 0.002692, 0.002692, 0.002693, 0.002695, 0.002697, 0.002698, 0.002700, 0.002701, 0.002707, 0.002719, 0.002742, 0.002780, 0.002848, 0.002952, 0.003093, 0.003280, 0.003507, 0.003772, 0.004070, 0.004394, 0.004739, 0.005093, 0.005443, 0.005781, 0.006100, 0.006391, 0.006644, 0.006845, 0.006987, 0.007058, 0.007048, 0.006947, 0.006754, 0.006474, 0.006110, 0.005671, 0.005161, 0.004598, 0.004000, 0.003378, 0.002751, 0.002144, 0.001578, 0.001069, 0.000641, 0.000310, 0.000095, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000002, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000002, 0.000002, 0.000000, 0.000000, 0.000001, 0.000001, 0.000002, 0.000003], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.11199664401124566), + uv: (5.0, 5.999999999999999), + spectrum: [0.002321, 0.002322, 0.002321, 0.002321, 0.002322, 0.002324, 0.002325, 0.002325, 0.002325, 0.002326, 0.002329, 0.002336, 0.002350, 0.002376, 0.002422, 0.002494, 0.002597, 0.002733, 0.002903, 0.003104, 0.003333, 0.003586, 0.003858, 0.004142, 0.004428, 0.004712, 0.004987, 0.005247, 0.005486, 0.005697, 0.005872, 0.006004, 0.006085, 0.006108, 0.006071, 0.005972, 0.005812, 0.005594, 0.005322, 0.004999, 0.004632, 0.004231, 0.003808, 0.003368, 0.002924, 0.002486, 0.002065, 0.001670, 0.001312, 0.000993, 0.000719, 0.000492, 0.000311, 0.000177, 0.000083, 0.000027, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.11199664401124566), + uv: (6.0, 5.999999999999999), + spectrum: [0.001610, 0.001610, 0.001610, 0.001610, 0.001610, 0.001610, 0.001611, 0.001612, 0.001614, 0.001617, 0.001624, 0.001635, 0.001653, 0.001685, 0.001736, 0.001813, 0.001919, 0.002057, 0.002227, 0.002425, 0.002651, 0.002900, 0.003170, 0.003453, 0.003744, 0.004036, 0.004325, 0.004603, 0.004866, 0.005106, 0.005316, 0.005490, 0.005621, 0.005705, 0.005738, 0.005717, 0.005642, 0.005516, 0.005342, 0.005125, 0.004868, 0.004576, 0.004257, 0.003920, 0.003573, 0.003223, 0.002883, 0.002557, 0.002252, 0.001973, 0.001727, 0.001512, 0.001329, 0.001177, 0.001053, 0.000955, 0.000876, 0.000815, 0.000769, 0.000735, 0.000710, 0.000692, 0.000678, 0.000668, 0.000660, 0.000654, 0.000650, 0.000647, 0.000645, 0.000643, 0.000642, 0.000640, 0.000639, 0.000639, 0.000639, 0.000638, 0.000638, 0.000638, 0.000638, 0.000638, 0.000637, 0.000636, 0.000636, 0.000635, 0.000634, 0.000634, 0.000633, 0.000633, 0.000632, 0.000632, 0.000631, 0.000631, 0.000631, 0.000631, 0.000631], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.11199664401124566), + uv: (7.000000000000001, 5.999999999999999), + spectrum: [0.000878, 0.000877, 0.000876, 0.000875, 0.000874, 0.000873, 0.000873, 0.000874, 0.000877, 0.000883, 0.000890, 0.000902, 0.000922, 0.000955, 0.001008, 0.001087, 0.001198, 0.001342, 0.001521, 0.001730, 0.001971, 0.002237, 0.002523, 0.002826, 0.003136, 0.003449, 0.003759, 0.004059, 0.004346, 0.004614, 0.004859, 0.005073, 0.005249, 0.005383, 0.005470, 0.005510, 0.005503, 0.005449, 0.005351, 0.005213, 0.005038, 0.004833, 0.004603, 0.004356, 0.004098, 0.003837, 0.003578, 0.003328, 0.003093, 0.002877, 0.002686, 0.002518, 0.002375, 0.002257, 0.002159, 0.002081, 0.002019, 0.001972, 0.001934, 0.001905, 0.001883, 0.001865, 0.001852, 0.001843, 0.001836, 0.001831, 0.001828, 0.001825, 0.001823, 0.001822, 0.001821, 0.001820, 0.001819, 0.001819, 0.001820, 0.001821, 0.001822, 0.001824, 0.001824, 0.001825, 0.001825, 0.001824, 0.001824, 0.001823, 0.001823, 0.001824, 0.001825, 0.001826, 0.001827, 0.001827, 0.001828, 0.001828, 0.001828, 0.001828, 0.001828], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.11199664401124566), + uv: (8.0, 5.999999999999999), + spectrum: [0.000179, 0.000179, 0.000179, 0.000178, 0.000179, 0.000180, 0.000180, 0.000180, 0.000182, 0.000185, 0.000191, 0.000201, 0.000219, 0.000249, 0.000302, 0.000382, 0.000495, 0.000644, 0.000823, 0.001036, 0.001281, 0.001555, 0.001852, 0.002166, 0.002491, 0.002823, 0.003155, 0.003482, 0.003800, 0.004101, 0.004382, 0.004636, 0.004858, 0.005044, 0.005190, 0.005295, 0.005360, 0.005384, 0.005370, 0.005319, 0.005235, 0.005121, 0.004981, 0.004822, 0.004648, 0.004466, 0.004282, 0.004102, 0.003931, 0.003773, 0.003631, 0.003507, 0.003400, 0.003312, 0.003238, 0.003179, 0.003133, 0.003096, 0.003067, 0.003045, 0.003030, 0.003018, 0.003010, 0.003004, 0.003000, 0.002996, 0.002993, 0.002992, 0.002990, 0.002988, 0.002987, 0.002986, 0.002986, 0.002985, 0.002986, 0.002985, 0.002985, 0.002985, 0.002985, 0.002985, 0.002985, 0.002984, 0.002984, 0.002984, 0.002984, 0.002984, 0.002985, 0.002985, 0.002984, 0.002984, 0.002984, 0.002984, 0.002985, 0.002985, 0.002985], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, 0.11199664401124566), + uv: (9.0, 5.999999999999999), + spectrum: [0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000052, 0.000168, 0.000346, 0.000577, 0.000862, 0.001185, 0.001538, 0.001913, 0.002298, 0.002686, 0.003071, 0.003447, 0.003805, 0.004142, 0.004450, 0.004722, 0.004957, 0.005149, 0.005300, 0.005409, 0.005482, 0.005514, 0.005511, 0.005477, 0.005414, 0.005330, 0.005227, 0.005113, 0.004993, 0.004871, 0.004750, 0.004636, 0.004532, 0.004439, 0.004359, 0.004292, 0.004236, 0.004190, 0.004153, 0.004126, 0.004106, 0.004089, 0.004076, 0.004068, 0.004062, 0.004058, 0.004054, 0.004051, 0.004049, 0.004048, 0.004047, 0.004046, 0.004045, 0.004045, 0.004045, 0.004044, 0.004044, 0.004044, 0.004044, 0.004044, 0.004044, 0.004043, 0.004043, 0.004043, 0.004043, 0.004043, 0.004043, 0.004043, 0.004042, 0.004042, 0.004042, 0.004042, 0.004042, 0.004042, 0.004042, 0.004041, 0.004042], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, 0.16799496601686853), + uv: (2.0, 6.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000219, 0.002207, 0.005534, 0.009696, 0.014123, 0.018315, 0.021870, 0.024468, 0.025906, 0.026029, 0.024730, 0.021964, 0.017858, 0.012795, 0.007451, 0.002788, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000002, 0.000001, 0.000002, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000002], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.16799496601686853), + uv: (3.0, 6.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000065, 0.000263, 0.000629, 0.001181, 0.001925, 0.002844, 0.003912, 0.005094, 0.006351, 0.007633, 0.008886, 0.010062, 0.011113, 0.012001, 0.012696, 0.013162, 0.013362, 0.013258, 0.012817, 0.012028, 0.010910, 0.009506, 0.007889, 0.006154, 0.004406, 0.002769, 0.001384, 0.000405, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.16799496601686853), + uv: (4.0, 6.999999999999999), + spectrum: [0.001212, 0.001213, 0.001213, 0.001214, 0.001213, 0.001214, 0.001215, 0.001218, 0.001224, 0.001233, 0.001248, 0.001274, 0.001321, 0.001403, 0.001541, 0.001744, 0.002034, 0.002407, 0.002856, 0.003381, 0.003960, 0.004592, 0.005255, 0.005929, 0.006594, 0.007229, 0.007815, 0.008337, 0.008783, 0.009129, 0.009355, 0.009441, 0.009366, 0.009127, 0.008722, 0.008159, 0.007458, 0.006641, 0.005729, 0.004761, 0.003770, 0.002808, 0.001916, 0.001135, 0.000525, 0.000130, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000002, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.16799496601686853), + uv: (5.0, 6.999999999999999), + spectrum: [0.001278, 0.001277, 0.001277, 0.001277, 0.001278, 0.001279, 0.001279, 0.001281, 0.001285, 0.001291, 0.001300, 0.001318, 0.001350, 0.001405, 0.001496, 0.001634, 0.001826, 0.002076, 0.002382, 0.002740, 0.003144, 0.003588, 0.004061, 0.004552, 0.005049, 0.005540, 0.006011, 0.006454, 0.006857, 0.007207, 0.007493, 0.007699, 0.007813, 0.007825, 0.007730, 0.007530, 0.007226, 0.006826, 0.006341, 0.005782, 0.005164, 0.004504, 0.003821, 0.003139, 0.002477, 0.001857, 0.001301, 0.000825, 0.000449, 0.000184, 0.000033, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.16799496601686853), + uv: (6.0, 6.999999999999999), + spectrum: [0.000820, 0.000820, 0.000820, 0.000820, 0.000820, 0.000820, 0.000820, 0.000822, 0.000826, 0.000831, 0.000841, 0.000855, 0.000881, 0.000928, 0.001006, 0.001124, 0.001288, 0.001501, 0.001763, 0.002070, 0.002421, 0.002809, 0.003228, 0.003666, 0.004114, 0.004563, 0.005004, 0.005429, 0.005826, 0.006190, 0.006507, 0.006767, 0.006960, 0.007078, 0.007115, 0.007067, 0.006938, 0.006729, 0.006447, 0.006096, 0.005686, 0.005227, 0.004730, 0.004210, 0.003678, 0.003149, 0.002636, 0.002152, 0.001709, 0.001313, 0.000971, 0.000685, 0.000456, 0.000279, 0.000152, 0.000067, 0.000018, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000003, 0.000002, 0.000003, 0.000003, 0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.16799496601686853), + uv: (7.000000000000001, 6.999999999999999), + spectrum: [0.000159, 0.000160, 0.000161, 0.000163, 0.000164, 0.000165, 0.000168, 0.000170, 0.000172, 0.000174, 0.000180, 0.000192, 0.000215, 0.000256, 0.000328, 0.000441, 0.000600, 0.000810, 0.001070, 0.001376, 0.001727, 0.002117, 0.002539, 0.002984, 0.003443, 0.003904, 0.004359, 0.004799, 0.005218, 0.005607, 0.005957, 0.006256, 0.006497, 0.006672, 0.006775, 0.006805, 0.006761, 0.006646, 0.006463, 0.006218, 0.005918, 0.005569, 0.005182, 0.004766, 0.004333, 0.003894, 0.003460, 0.003042, 0.002652, 0.002295, 0.001977, 0.001701, 0.001467, 0.001274, 0.001118, 0.000994, 0.000899, 0.000826, 0.000771, 0.000732, 0.000705, 0.000685, 0.000672, 0.000664, 0.000659, 0.000656, 0.000654, 0.000652, 0.000650, 0.000647, 0.000644, 0.000643, 0.000642, 0.000640, 0.000637, 0.000634, 0.000633, 0.000632, 0.000629, 0.000627, 0.000626, 0.000624, 0.000622, 0.000620, 0.000617, 0.000616, 0.000614, 0.000612, 0.000609, 0.000608, 0.000607, 0.000605, 0.000605, 0.000603, 0.000603], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.16799496601686853), + uv: (8.0, 6.999999999999999), + spectrum: [0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000024, 0.000118, 0.000284, 0.000519, 0.000821, 0.001184, 0.001600, 0.002057, 0.002541, 0.003040, 0.003543, 0.004039, 0.004522, 0.004979, 0.005400, 0.005776, 0.006094, 0.006349, 0.006533, 0.006646, 0.006686, 0.006655, 0.006557, 0.006396, 0.006177, 0.005911, 0.005603, 0.005266, 0.004908, 0.004540, 0.004173, 0.003818, 0.003482, 0.003173, 0.002896, 0.002653, 0.002445, 0.002271, 0.002128, 0.002014, 0.001923, 0.001853, 0.001800, 0.001759, 0.001729, 0.001708, 0.001693, 0.001681, 0.001673, 0.001668, 0.001663, 0.001660, 0.001657, 0.001656, 0.001654, 0.001653, 0.001652, 0.001652, 0.001651, 0.001650, 0.001650, 0.001650, 0.001649, 0.001649, 0.001649, 0.001648, 0.001648, 0.001648, 0.001648, 0.001647, 0.001647, 0.001647, 0.001647, 0.001647, 0.001647, 0.001647, 0.001647, 0.001647, 0.001647], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, 0.16799496601686853), + uv: (9.0, 6.999999999999999), + spectrum: [0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000161, 0.000512, 0.001001, 0.001585, 0.002230, 0.002905, 0.003587, 0.004252, 0.004879, 0.005447, 0.005940, 0.006348, 0.006664, 0.006886, 0.007013, 0.007048, 0.006996, 0.006863, 0.006659, 0.006393, 0.006079, 0.005728, 0.005354, 0.004972, 0.004594, 0.004231, 0.003895, 0.003590, 0.003322, 0.003092, 0.002899, 0.002742, 0.002617, 0.002517, 0.002439, 0.002379, 0.002334, 0.002301, 0.002277, 0.002260, 0.002247, 0.002237, 0.002231, 0.002227, 0.002224, 0.002222, 0.002221, 0.002219, 0.002218, 0.002216, 0.002215, 0.002214, 0.002214, 0.002214, 0.002214, 0.002213, 0.002213, 0.002213, 0.002213, 0.002213, 0.002212, 0.002212, 0.002212, 0.002212, 0.002213, 0.002213, 0.002213, 0.002214, 0.002214, 0.002214, 0.002214, 0.002215], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, 0.22399328802249138), + uv: (2.0, 7.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001663, 0.008895, 0.018646, 0.028404, 0.036236, 0.040926, 0.041705, 0.038211, 0.030549, 0.019783, 0.008306, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.22399328802249138), + uv: (3.0, 7.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000620, 0.001807, 0.003472, 0.005503, 0.007763, 0.010094, 0.012348, 0.014397, 0.016134, 0.017473, 0.018333, 0.018638, 0.018310, 0.017304, 0.015627, 0.013359, 0.010661, 0.007758, 0.004916, 0.002440, 0.000674, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.22399328802249138), + uv: (4.0, 7.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000092, 0.000326, 0.000716, 0.001264, 0.001969, 0.002808, 0.003762, 0.004814, 0.005914, 0.007033, 0.008130, 0.009166, 0.010113, 0.010936, 0.011610, 0.012100, 0.012371, 0.012388, 0.012135, 0.011595, 0.010787, 0.009742, 0.008499, 0.007113, 0.005650, 0.004182, 0.002795, 0.001581, 0.000640, 0.000078, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.22399328802249138), + uv: (5.0, 7.999999999999999), + spectrum: [0.000011, 0.000011, 0.000011, 0.000011, 0.000012, 0.000013, 0.000015, 0.000018, 0.000023, 0.000032, 0.000048, 0.000076, 0.000125, 0.000213, 0.000359, 0.000581, 0.000890, 0.001291, 0.001779, 0.002348, 0.002989, 0.003689, 0.004435, 0.005202, 0.005971, 0.006722, 0.007437, 0.008098, 0.008686, 0.009184, 0.009569, 0.009819, 0.009916, 0.009845, 0.009605, 0.009201, 0.008645, 0.007949, 0.007137, 0.006235, 0.005273, 0.004285, 0.003309, 0.002387, 0.001561, 0.000872, 0.000360, 0.000059, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.22399328802249138), + uv: (6.0, 7.999999999999999), + spectrum: [0.000000, 0.000002, 0.000000, 0.000002, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000016, 0.000064, 0.000159, 0.000318, 0.000546, 0.000851, 0.001228, 0.001674, 0.002190, 0.002757, 0.003370, 0.004011, 0.004665, 0.005316, 0.005950, 0.006556, 0.007119, 0.007621, 0.008052, 0.008390, 0.008624, 0.008739, 0.008733, 0.008600, 0.008347, 0.007976, 0.007502, 0.006933, 0.006286, 0.005581, 0.004833, 0.004074, 0.003320, 0.002599, 0.001931, 0.001339, 0.000845, 0.000459, 0.000189, 0.000037, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000000, 0.000002, 0.000000, 0.000001, 0.000002, 0.000000, 0.000002, 0.000001, 0.000000, 0.000001, 0.000001, 0.000001, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.22399328802249138), + uv: (7.000000000000001, 7.999999999999999), + spectrum: [0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000079, 0.000245, 0.000501, 0.000843, 0.001264, 0.001760, 0.002317, 0.002918, 0.003549, 0.004191, 0.004831, 0.005454, 0.006048, 0.006598, 0.007090, 0.007510, 0.007841, 0.008073, 0.008200, 0.008218, 0.008127, 0.007934, 0.007642, 0.007260, 0.006800, 0.006273, 0.005692, 0.005078, 0.004445, 0.003811, 0.003193, 0.002606, 0.002067, 0.001585, 0.001166, 0.000818, 0.000538, 0.000324, 0.000170, 0.000071, 0.000016, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000001, 0.000001, 0.000002, 0.000001, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.22399328802249138), + uv: (8.0, 7.999999999999999), + spectrum: [0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000129, 0.000421, 0.000855, 0.001404, 0.002036, 0.002724, 0.003441, 0.004166, 0.004880, 0.005562, 0.006197, 0.006764, 0.007247, 0.007631, 0.007909, 0.008076, 0.008130, 0.008073, 0.007912, 0.007653, 0.007303, 0.006878, 0.006388, 0.005847, 0.005274, 0.004686, 0.004101, 0.003532, 0.002996, 0.002503, 0.002059, 0.001672, 0.001342, 0.001066, 0.000841, 0.000660, 0.000518, 0.000409, 0.000325, 0.000263, 0.000217, 0.000184, 0.000161, 0.000145, 0.000133, 0.000124, 0.000118, 0.000113, 0.000110, 0.000108, 0.000106, 0.000104, 0.000104, 0.000103, 0.000102, 0.000102, 0.000102, 0.000102, 0.000102, 0.000102, 0.000101, 0.000100, 0.000099, 0.000099, 0.000099, 0.000099, 0.000099, 0.000098, 0.000099, 0.000098, 0.000098, 0.000098, 0.000098, 0.000098, 0.000098], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.27999161002811424), + uv: (3.0, 8.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000190, 0.002115, 0.005345, 0.009341, 0.013603, 0.017694, 0.021257, 0.024023, 0.025768, 0.026299, 0.025451, 0.023170, 0.019569, 0.014974, 0.009937, 0.005187, 0.001564, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000002, 0.000002, 0.000001, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000003, 0.000003, 0.000003], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.27999161002811424), + uv: (4.0, 8.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000403, 0.001222, 0.002407, 0.003898, 0.005611, 0.007442, 0.009292, 0.011069, 0.012696, 0.014107, 0.015237, 0.016023, 0.016395, 0.016298, 0.015698, 0.014601, 0.013057, 0.011152, 0.009001, 0.006737, 0.004517, 0.002524, 0.000959, 0.000038, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.27999161002811424), + uv: (5.0, 8.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000040, 0.000290, 0.000749, 0.001404, 0.002233, 0.003211, 0.004304, 0.005468, 0.006658, 0.007830, 0.008948, 0.009977, 0.010885, 0.011635, 0.012188, 0.012510, 0.012570, 0.012351, 0.011858, 0.011105, 0.010118, 0.008939, 0.007617, 0.006206, 0.004771, 0.003386, 0.002132, 0.001092, 0.000355, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.27999161002811424), + uv: (6.0, 8.999999999999998), + spectrum: [0.000001, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000126, 0.000417, 0.000868, 0.001464, 0.002193, 0.003028, 0.003939, 0.004892, 0.005855, 0.006801, 0.007706, 0.008544, 0.009289, 0.009915, 0.010392, 0.010698, 0.010810, 0.010727, 0.010448, 0.009980, 0.009340, 0.008548, 0.007633, 0.006625, 0.005558, 0.004474, 0.003416, 0.002430, 0.001558, 0.000844, 0.000327, 0.000038, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000003, 0.000004, 0.000004, 0.000004, 0.000005, 0.000006, 0.000006, 0.000006, 0.000006, 0.000006, 0.000006, 0.000006], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.27999161002811424), + uv: (7.000000000000001, 8.999999999999998), + spectrum: [0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000125, 0.000447, 0.000950, 0.001610, 0.002391, 0.003254, 0.004165, 0.005093, 0.006008, 0.006887, 0.007704, 0.008433, 0.009048, 0.009525, 0.009844, 0.009996, 0.009980, 0.009795, 0.009450, 0.008957, 0.008332, 0.007596, 0.006772, 0.005887, 0.004970, 0.004056, 0.003174, 0.002356, 0.001629, 0.001019, 0.000543, 0.000213, 0.000033, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.27999161002811424), + uv: (8.0, 8.999999999999998), + spectrum: [0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000139, 0.000650, 0.001426, 0.002377, 0.003433, 0.004542, 0.005650, 0.006710, 0.007679, 0.008516, 0.009187, 0.009675, 0.009969, 0.010064, 0.009969, 0.009693, 0.009245, 0.008648, 0.007923, 0.007105, 0.006218, 0.005292, 0.004367, 0.003476, 0.002649, 0.001905, 0.001272, 0.000762, 0.000384, 0.000134, 0.000010, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.3359899320337371), + uv: (3.0, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.003207, 0.010021, 0.018352, 0.026499, 0.033223, 0.037591, 0.038902, 0.036687, 0.030958, 0.022441, 0.012719, 0.004211, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.3359899320337371), + uv: (4.0, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000188, 0.001488, 0.003670, 0.006439, 0.009503, 0.012602, 0.015516, 0.018066, 0.020093, 0.021449, 0.021991, 0.021616, 0.020282, 0.018049, 0.015084, 0.011641, 0.008032, 0.004621, 0.001825, 0.000112, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.3359899320337371), + uv: (5.0, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000127, 0.000760, 0.001840, 0.003281, 0.004972, 0.006801, 0.008664, 0.010471, 0.012144, 0.013612, 0.014804, 0.015645, 0.016072, 0.016035, 0.015515, 0.014533, 0.013141, 0.011410, 0.009435, 0.007329, 0.005223, 0.003267, 0.001624, 0.000473, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.3359899320337371), + uv: (6.0, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000340, 0.001033, 0.002025, 0.003239, 0.004602, 0.006037, 0.007478, 0.008871, 0.010167, 0.011315, 0.012262, 0.012959, 0.013364, 0.013449, 0.013208, 0.012654, 0.011809, 0.010710, 0.009401, 0.007942, 0.006402, 0.004851, 0.003374, 0.002061, 0.001003, 0.000286, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.3359899320337371), + uv: (7.000000000000001, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000362, 0.001116, 0.002160, 0.003399, 0.004749, 0.006137, 0.007504, 0.008795, 0.009954, 0.010929, 0.011673, 0.012150, 0.012345, 0.012257, 0.011892, 0.011270, 0.010417, 0.009370, 0.008171, 0.006871, 0.005527, 0.004200, 0.002953, 0.001853, 0.000959, 0.000324, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.3359899320337371), + uv: (8.0, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000781, 0.002423, 0.004576, 0.006912, 0.009148, 0.011074, 0.012569, 0.013567, 0.014036, 0.013966, 0.013384, 0.012350, 0.010939, 0.009246, 0.007389, 0.005493, 0.003691, 0.002113, 0.000897, 0.000161, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.39198825403935994), + uv: (3.0, 10.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000774, 0.020476, 0.044616, 0.062955, 0.068902, 0.059372, 0.036659, 0.010641, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.39198825403935994), + uv: (4.0, 10.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002385, 0.006713, 0.012032, 0.017536, 0.022603, 0.026720, 0.029451, 0.030420, 0.029389, 0.026340, 0.021555, 0.015636, 0.009438, 0.003969, 0.000388, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.39198825403935994), + uv: (5.0, 10.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000985, 0.002940, 0.005535, 0.008470, 0.011484, 0.014360, 0.016916, 0.018981, 0.020393, 0.021014, 0.020758, 0.019611, 0.017654, 0.015041, 0.011974, 0.008702, 0.005513, 0.002746, 0.000771, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.39198825403935994), + uv: (6.0, 10.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000283, 0.001378, 0.003057, 0.005104, 0.007334, 0.009591, 0.011744, 0.013674, 0.015264, 0.016407, 0.017017, 0.017045, 0.016494, 0.015405, 0.013845, 0.011904, 0.009699, 0.007369, 0.005073, 0.002989, 0.001312, 0.000246, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.39198825403935994), + uv: (7.000000000000001, 10.999999999999998), + spectrum: [0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000867, 0.002473, 0.004533, 0.006818, 0.009136, 0.011318, 0.013202, 0.014652, 0.015575, 0.015933, 0.015725, 0.014981, 0.013753, 0.012120, 0.010181, 0.008060, 0.005895, 0.003839, 0.002058, 0.000722, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002, 0.000002], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.4479865760449827), + uv: (4.0, 11.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.003473, 0.012890, 0.024467, 0.035265, 0.043015, 0.045962, 0.043133, 0.034720, 0.022428, 0.009488, 0.000315, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.4479865760449827), + uv: (5.0, 11.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001267, 0.004901, 0.009826, 0.015193, 0.020312, 0.024607, 0.027567, 0.028789, 0.028045, 0.025373, 0.021104, 0.015791, 0.010131, 0.004951, 0.001213, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.4479865760449827), + uv: (6.0, 11.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001557, 0.004498, 0.008198, 0.012149, 0.015929, 0.019160, 0.021509, 0.022720, 0.022675, 0.021409, 0.019070, 0.015884, 0.012148, 0.008230, 0.004562, 0.001637, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.4479865760449827), + uv: (7.000000000000001, 11.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002626, 0.007837, 0.013870, 0.019250, 0.023008, 0.024733, 0.024362, 0.022048, 0.018145, 0.013206, 0.007968, 0.003318, 0.000286, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.5039848980506056), + uv: (5.0, 13.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.007297, 0.018940, 0.031009, 0.040349, 0.044554, 0.042370, 0.034184, 0.022108, 0.009515, 0.000531, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.5039848980506056), + uv: (6.0, 13.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.003623, 0.012173, 0.022215, 0.030785, 0.035662, 0.035813, 0.031493, 0.023829, 0.014490, 0.005653, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.2709906464701516, -0.22399328802249138), + uv: (0.9999980468749987, 0.0), + spectrum: [0.023575, 0.023575, 0.023573, 0.023571, 0.023565, 0.023554, 0.023534, 0.023498, 0.023433, 0.023312, 0.023102, 0.022727, 0.022062, 0.020919, 0.019066, 0.016400, 0.013015, 0.009187, 0.005332, 0.002029, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000067, 0.000577, 0.001244, 0.001906, 0.002492, 0.002971, 0.003344, 0.003630, 0.003844, 0.004001, 0.004113, 0.004195, 0.004253, 0.004292, 0.004320, 0.004342, 0.004355, 0.004365, 0.004372, 0.004377, 0.004380, 0.004382, 0.004384, 0.004384, 0.004385, 0.004386, 0.004386, 0.004386, 0.004387, 0.004386, 0.004386, 0.004387, 0.004387, 0.004386, 0.004386, 0.004386, 0.004386, 0.004385, 0.004385, 0.004385], + }, + SpectrumDataPoint { + xystar: (-0.2952315971735554, -0.16799496601686853), + uv: (0.5527324218750005, 1.0), + spectrum: [0.002755, 0.002755, 0.002756, 0.002757, 0.002759, 0.002763, 0.002770, 0.002784, 0.002809, 0.002852, 0.002925, 0.003051, 0.003269, 0.003636, 0.004222, 0.005062, 0.006140, 0.007403, 0.008747, 0.010037, 0.011103, 0.011761, 0.011858, 0.011318, 0.010148, 0.008438, 0.006340, 0.004093, 0.002002, 0.000458, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.29681943237246833, -0.11199664401124569), + uv: (0.5234355468750005, 1.9999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000644, 0.003307, 0.007382, 0.012106, 0.016609, 0.020063, 0.021845, 0.021638, 0.019453, 0.015563, 0.010596, 0.005450, 0.001342, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.29242642165547594, -0.05599832200562286), + uv: (0.6044902343749996, 2.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.004514, 0.012223, 0.020649, 0.027526, 0.031288, 0.031190, 0.027174, 0.020110, 0.011515, 0.003670, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.28533409110033164, 0.0), + uv: (0.7353496093749987, 3.9999999999999996), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002017, 0.013202, 0.026877, 0.037910, 0.043095, 0.040934, 0.032211, 0.019299, 0.006340, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.2743780282278324, 0.05599832200562286), + uv: (0.9374980468749996, 5.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.004900, 0.019327, 0.035095, 0.046403, 0.049670, 0.044252, 0.031492, 0.014845, 0.000659, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.27099054061447164, 0.07355259286543629), + uv: (0.9999999999999991, 5.3134785156249995), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001600, 0.016345, 0.034217, 0.047985, 0.053062, 0.048335, 0.035048, 0.016928, 0.001058, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.2617282744764928, 0.11199664401124566), + uv: (1.1708964843750005, 5.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.009734, 0.028769, 0.046634, 0.056239, 0.054914, 0.042978, 0.023819, 0.004833, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.24738482984631277, 0.16799496601686853), + uv: (1.4355449218750005, 6.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000277, 0.019442, 0.042522, 0.058819, 0.063242, 0.054463, 0.034926, 0.011788, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.23113598297743726, 0.22399328802249138), + uv: (1.7353496093749996, 7.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.006807, 0.031020, 0.054932, 0.068424, 0.066501, 0.049084, 0.021876, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.21679243249157729, 0.2681795733517758), + uv: (2.0, 8.789064453124999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.021923, 0.049140, 0.068549, 0.072642, 0.059125, 0.031591, 0.003161, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.2129288060299024, 0.27999161002811424), + uv: (2.0712871093750005, 8.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.017621, 0.045984, 0.068510, 0.075341, 0.062821, 0.034150, 0.003487, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.1925515876438533, 0.3359899320337371), + uv: (2.447263671875, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001791, 0.031646, 0.063609, 0.081019, 0.075572, 0.047743, 0.011608, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.16899869885997837, 0.39198825403935994), + uv: (2.881833984374999, 10.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.009856, 0.045649, 0.077287, 0.086458, 0.066290, 0.026512, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.16259432436868296, 0.40730040458449507), + uv: (3.0, 11.273439453124999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.003203, 0.040349, 0.076519, 0.089963, 0.071555, 0.030200, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.13999424255983572, 0.4479865760449827), + uv: (3.4169902343749987, 11.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.020613, 0.058369, 0.084682, 0.082562, 0.050245, 0.007521, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.10839621624578864, 0.49922733748630377), + uv: (4.0, 12.915041015625), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.023420, 0.071224, 0.096062, 0.075741, 0.024085, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.10331524946494723, 0.5039848980506056), + uv: (4.093748046875, 13.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.021532, 0.065142, 0.090615, 0.077320, 0.032759, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.05419810812289431, 0.542483853801194), + uv: (5.0, 13.687501953124999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.014494, 0.055320, 0.081441, 0.071778, 0.033095, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.02397641735926503, 0.5039848980506056), + uv: (6.442384765625, 13.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.005204, 0.020626, 0.035192, 0.042422, 0.040706, 0.031487, 0.018026, 0.005302, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.0, 0.5294686188037934), + uv: (6.0, 13.455080078124999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.010722, 0.035142, 0.053289, 0.055233, 0.041528, 0.019537, 0.000631, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.09077135139353519, 0.39198825403935994), + uv: (7.674806640625, 10.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000604, 0.004426, 0.009453, 0.014267, 0.018085, 0.020476, 0.021221, 0.020297, 0.017879, 0.014312, 0.010088, 0.005816, 0.002196, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.06181982293335631, 0.4479865760449827), + uv: (7.140626953125001, 11.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001255, 0.008284, 0.016733, 0.023695, 0.027786, 0.028524, 0.025969, 0.020688, 0.013747, 0.006665, 0.001339, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000002], + }, + SpectrumDataPoint { + xystar: (0.05419810812289436, 0.46050974766210345), + uv: (7.000000000000001, 12.223634765624999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001972, 0.010154, 0.019515, 0.026750, 0.030390, 0.030062, 0.026050, 0.019258, 0.011200, 0.003936, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.16000096606613853, 0.22399328802249138), + uv: (8.952150390625002, 7.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000381, 0.001385, 0.002759, 0.004279, 0.005778, 0.007149, 0.008320, 0.009241, 0.009883, 0.010233, 0.010293, 0.010076, 0.009613, 0.008941, 0.008102, 0.007142, 0.006113, 0.005065, 0.004044, 0.003092, 0.002242, 0.001519, 0.000937, 0.000500, 0.000205, 0.000043, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.13845933520088657, 0.27999161002811424), + uv: (8.554689453125, 8.999999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001012, 0.002836, 0.005008, 0.007185, 0.009158, 0.010791, 0.011986, 0.012686, 0.012879, 0.012580, 0.011833, 0.010710, 0.009297, 0.007691, 0.006001, 0.004346, 0.002835, 0.001568, 0.000630, 0.000090, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.1157532918564318, 0.3359899320337371), + uv: (8.135744140625, 10.0), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000632, 0.003065, 0.006282, 0.009544, 0.012415, 0.014622, 0.015992, 0.016441, 0.015975, 0.014677, 0.012696, 0.010232, 0.007530, 0.004863, 0.002525, 0.000809, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.10839621624578867, 0.35316140186421524), + uv: (8.0, 10.306642578125), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000571, 0.003318, 0.006986, 0.010670, 0.013840, 0.016178, 0.017488, 0.017686, 0.016806, 0.014979, 0.012419, 0.009407, 0.006277, 0.003401, 0.001175, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.2017081039575845, 0.11199664401124566), + uv: (9.721681640625, 5.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000121, 0.000506, 0.001076, 0.001767, 0.002517, 0.003271, 0.003991, 0.004651, 0.005234, 0.005724, 0.006115, 0.006403, 0.006593, 0.006686, 0.006690, 0.006615, 0.006473, 0.006278, 0.006045, 0.005787, 0.005517, 0.005248, 0.004990, 0.004753, 0.004542, 0.004357, 0.004200, 0.004070, 0.003966, 0.003883, 0.003819, 0.003770, 0.003733, 0.003706, 0.003687, 0.003671, 0.003661, 0.003654, 0.003648, 0.003643, 0.003640, 0.003637, 0.003636, 0.003635, 0.003634, 0.003633, 0.003633, 0.003632, 0.003632, 0.003632, 0.003632, 0.003632, 0.003631, 0.003631, 0.003631, 0.003630, 0.003630, 0.003630, 0.003630, 0.003630, 0.003629, 0.003629, 0.003629, 0.003629, 0.003629, 0.003629, 0.003629, 0.003629], + }, + SpectrumDataPoint { + xystar: (0.18101331853175281, 0.16799496601686853), + uv: (9.339845703125, 6.999999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000152, 0.000746, 0.001631, 0.002685, 0.003791, 0.004856, 0.005829, 0.006671, 0.007357, 0.007869, 0.008199, 0.008348, 0.008324, 0.008146, 0.007828, 0.007396, 0.006874, 0.006289, 0.005673, 0.005048, 0.004438, 0.003864, 0.003339, 0.002873, 0.002472, 0.002136, 0.001856, 0.001631, 0.001454, 0.001317, 0.001213, 0.001133, 0.001074, 0.001032, 0.001003, 0.000983, 0.000966, 0.000952, 0.000946, 0.000941, 0.000937, 0.000934, 0.000931, 0.000928, 0.000928, 0.000926, 0.000925, 0.000926, 0.000925, 0.000925, 0.000924, 0.000924, 0.000924, 0.000924, 0.000924, 0.000924, 0.000923, 0.000923, 0.000924, 0.000923, 0.000924, 0.000924, 0.000923, 0.000923, 0.000923, 0.000923, 0.000923], + }, + SpectrumDataPoint { + xystar: (0.162594324368683, 0.21715766472751205), + uv: (9.0, 7.877931640624999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000430, 0.001426, 0.002756, 0.004211, 0.005644, 0.006955, 0.008079, 0.008968, 0.009596, 0.009950, 0.010031, 0.009854, 0.009445, 0.008834, 0.008061, 0.007171, 0.006210, 0.005222, 0.004251, 0.003335, 0.002507, 0.001787, 0.001190, 0.000723, 0.000380, 0.000153, 0.000032, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.26342196535533324, -0.05599832200562286), + uv: (10.860353515625, 2.999999999999999), + spectrum: [0.000196, 0.000197, 0.000197, 0.000197, 0.000198, 0.000199, 0.000200, 0.000200, 0.000199, 0.000200, 0.000200, 0.000199, 0.000196, 0.000190, 0.000180, 0.000166, 0.000147, 0.000123, 0.000096, 0.000068, 0.000041, 0.000019, 0.000004, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000030, 0.000115, 0.000261, 0.000472, 0.000748, 0.001087, 0.001486, 0.001941, 0.002446, 0.002993, 0.003573, 0.004177, 0.004793, 0.005409, 0.006013, 0.006594, 0.007142, 0.007649, 0.008107, 0.008513, 0.008864, 0.009162, 0.009408, 0.009609, 0.009769, 0.009895, 0.009990, 0.010062, 0.010116, 0.010155, 0.010183, 0.010203, 0.010218, 0.010228, 0.010236, 0.010241, 0.010244, 0.010247, 0.010248, 0.010249, 0.010249, 0.010248, 0.010249, 0.010249, 0.010249, 0.010249, 0.010248, 0.010249, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010248, 0.010247, 0.010247], + }, + SpectrumDataPoint { + xystar: (0.24288596344939292, 0.0), + uv: (10.481447265625, 3.9999999999999996), + spectrum: [0.000000, 0.000001, 0.000000, 0.000001, 0.000002, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000018, 0.000056, 0.000116, 0.000195, 0.000285, 0.000387, 0.000513, 0.000652, 0.000808, 0.000985, 0.001176, 0.001396, 0.001642, 0.001910, 0.002206, 0.002525, 0.002863, 0.003221, 0.003595, 0.003977, 0.004370, 0.004765, 0.005153, 0.005536, 0.005903, 0.006250, 0.006572, 0.006867, 0.007133, 0.007368, 0.007568, 0.007736, 0.007876, 0.007990, 0.008079, 0.008151, 0.008206, 0.008245, 0.008276, 0.008297, 0.008312, 0.008325, 0.008333, 0.008338, 0.008341, 0.008346, 0.008346, 0.008346, 0.008348, 0.008348, 0.008349, 0.008350, 0.008350, 0.008350, 0.008350, 0.008349, 0.008348, 0.008348, 0.008348, 0.008349, 0.008349, 0.008349, 0.008348, 0.008347, 0.008348, 0.008349, 0.008349, 0.008348, 0.008348, 0.008347, 0.008348, 0.008348, 0.008348, 0.008348], + }, + SpectrumDataPoint { + xystar: (0.22224410586352497, 0.05599832200562286), + uv: (10.100587890625, 5.0), + spectrum: [0.000005, 0.000005, 0.000004, 0.000003, 0.000002, 0.000002, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000036, 0.000207, 0.000479, 0.000820, 0.001210, 0.001632, 0.002069, 0.002507, 0.002934, 0.003344, 0.003730, 0.004088, 0.004414, 0.004707, 0.004968, 0.005196, 0.005392, 0.005556, 0.005693, 0.005805, 0.005896, 0.005967, 0.006021, 0.006062, 0.006092, 0.006113, 0.006128, 0.006139, 0.006146, 0.006150, 0.006151, 0.006152, 0.006154, 0.006155, 0.006156, 0.006156, 0.006156, 0.006156, 0.006155, 0.006155, 0.006154, 0.006153, 0.006152, 0.006153, 0.006152, 0.006152, 0.006151, 0.006151, 0.006151, 0.006151, 0.006151, 0.006151, 0.006151, 0.006151, 0.006151, 0.006150, 0.006149, 0.006149, 0.006148, 0.006149, 0.006149, 0.006149, 0.006149, 0.006149, 0.006149, 0.006149, 0.006148, 0.006148, 0.006147, 0.006148], + }, + SpectrumDataPoint { + xystar: (0.21679243249157734, 0.07092767152142272), + uv: (10.0, 5.266603515625), + spectrum: [0.000002, 0.000002, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000117, 0.000384, 0.000759, 0.001208, 0.001704, 0.002222, 0.002739, 0.003237, 0.003705, 0.004134, 0.004520, 0.004858, 0.005147, 0.005385, 0.005575, 0.005719, 0.005821, 0.005886, 0.005919, 0.005925, 0.005910, 0.005882, 0.005844, 0.005801, 0.005756, 0.005714, 0.005676, 0.005642, 0.005613, 0.005589, 0.005570, 0.005554, 0.005542, 0.005533, 0.005526, 0.005520, 0.005517, 0.005514, 0.005512, 0.005510, 0.005509, 0.005508, 0.005507, 0.005507, 0.005506, 0.005506, 0.005505, 0.005505, 0.005504, 0.005504, 0.005503, 0.005503, 0.005503, 0.005503, 0.005503, 0.005502, 0.005502, 0.005502, 0.005502, 0.005502, 0.005501, 0.005501, 0.005501, 0.005501, 0.005501, 0.005501, 0.005501, 0.005501, 0.005501], + }, + SpectrumDataPoint { + xystar: (0.3045998248471417, -0.16799496601686853), + uv: (11.620119140625, 1.0), + spectrum: [0.000432, 0.000432, 0.000432, 0.000433, 0.000433, 0.000433, 0.000434, 0.000433, 0.000431, 0.000427, 0.000420, 0.000407, 0.000384, 0.000346, 0.000289, 0.000212, 0.000126, 0.000047, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000137, 0.001087, 0.002640, 0.004596, 0.006770, 0.009006, 0.011176, 0.013187, 0.014983, 0.016531, 0.017831, 0.018895, 0.019746, 0.020411, 0.020918, 0.021298, 0.021578, 0.021782, 0.021929, 0.022035, 0.022112, 0.022165, 0.022203, 0.022229, 0.022248, 0.022260, 0.022269, 0.022275, 0.022279, 0.022282, 0.022283, 0.022285, 0.022286, 0.022286, 0.022287, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022288, 0.022287, 0.022287, 0.022287, 0.022288], + }, + SpectrumDataPoint { + xystar: (0.28401089510123756, -0.11199664401124569), + uv: (11.240236328125002, 1.9999999999999998), + spectrum: [0.000269, 0.000269, 0.000270, 0.000270, 0.000271, 0.000272, 0.000274, 0.000275, 0.000277, 0.000277, 0.000276, 0.000271, 0.000263, 0.000249, 0.000228, 0.000199, 0.000162, 0.000120, 0.000074, 0.000035, 0.000008, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000106, 0.000420, 0.000922, 0.001589, 0.002395, 0.003309, 0.004298, 0.005328, 0.006368, 0.007384, 0.008349, 0.009242, 0.010046, 0.010753, 0.011357, 0.011864, 0.012279, 0.012613, 0.012874, 0.013077, 0.013230, 0.013342, 0.013425, 0.013485, 0.013529, 0.013560, 0.013582, 0.013598, 0.013609, 0.013617, 0.013623, 0.013626, 0.013629, 0.013630, 0.013630, 0.013630, 0.013630, 0.013631, 0.013630, 0.013631, 0.013631, 0.013631, 0.013631, 0.013631, 0.013632, 0.013631, 0.013632, 0.013631, 0.013631, 0.013631, 0.013631, 0.013631, 0.013631, 0.013631, 0.013631, 0.013630, 0.013630], + }, + SpectrumDataPoint { + xystar: (0.27099054061447164, -0.07661478235667343), + uv: (11.0, 2.6318378906249995), + spectrum: [0.000217, 0.000218, 0.000219, 0.000219, 0.000219, 0.000220, 0.000222, 0.000223, 0.000223, 0.000223, 0.000223, 0.000221, 0.000217, 0.000209, 0.000197, 0.000179, 0.000156, 0.000127, 0.000095, 0.000064, 0.000036, 0.000012, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000061, 0.000223, 0.000482, 0.000835, 0.001277, 0.001797, 0.002389, 0.003040, 0.003734, 0.004457, 0.005193, 0.005926, 0.006639, 0.007316, 0.007945, 0.008519, 0.009029, 0.009471, 0.009848, 0.010160, 0.010415, 0.010620, 0.010781, 0.010903, 0.010995, 0.011063, 0.011113, 0.011149, 0.011175, 0.011194, 0.011208, 0.011217, 0.011224, 0.011228, 0.011231, 0.011233, 0.011234, 0.011235, 0.011235, 0.011235, 0.011235, 0.011235, 0.011235, 0.011235, 0.011236, 0.011236, 0.011236, 0.011236, 0.011236, 0.011235, 0.011235, 0.011235, 0.011235, 0.011235, 0.011235, 0.011235, 0.011234, 0.011235, 0.011234, 0.011235, 0.011235], + }, + SpectrumDataPoint { + xystar: (-0.27705083121816254, -0.19599412701967994), + uv: (0.8881826171874998, 0.5000000000000004), + spectrum: [0.010364, 0.010365, 0.010364, 0.010364, 0.010364, 0.010363, 0.010362, 0.010360, 0.010355, 0.010347, 0.010332, 0.010304, 0.010254, 0.010166, 0.010018, 0.009790, 0.009470, 0.009054, 0.008545, 0.007947, 0.007269, 0.006521, 0.005719, 0.004886, 0.004046, 0.003221, 0.002435, 0.001712, 0.001075, 0.000554, 0.000183, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000010, 0.000072, 0.000164, 0.000270, 0.000377, 0.000477, 0.000566, 0.000644, 0.000708, 0.000758, 0.000798, 0.000828, 0.000851, 0.000867, 0.000879, 0.000887, 0.000893, 0.000895, 0.000898, 0.000900, 0.000902, 0.000903, 0.000904, 0.000904, 0.000904, 0.000904, 0.000904, 0.000904, 0.000903, 0.000903, 0.000903, 0.000903, 0.000904, 0.000904, 0.000903, 0.000903, 0.000903, 0.000903, 0.000902, 0.000903, 0.000903, 0.000903, 0.000903, 0.000902, 0.000903, 0.000903, 0.000903], + }, + SpectrumDataPoint { + xystar: (0.29294238870336275, -0.19599412701967994), + uv: (11.405029785156252, 0.5000000000000004), + spectrum: [0.001850, 0.001850, 0.001849, 0.001849, 0.001849, 0.001847, 0.001843, 0.001837, 0.001826, 0.001806, 0.001773, 0.001712, 0.001606, 0.001429, 0.001158, 0.000804, 0.000422, 0.000109, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000753, 0.003311, 0.006908, 0.010950, 0.015008, 0.018799, 0.022162, 0.025033, 0.027397, 0.029286, 0.030753, 0.031867, 0.032696, 0.033302, 0.033742, 0.034060, 0.034288, 0.034449, 0.034562, 0.034642, 0.034699, 0.034740, 0.034768, 0.034788, 0.034801, 0.034811, 0.034817, 0.034822, 0.034825, 0.034827, 0.034829, 0.034830, 0.034830, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831, 0.034831], + }, + SpectrumDataPoint { + xystar: (-0.2835080276937417, -0.13999580501405712), + uv: (0.7690419921874998, 1.5), + spectrum: [0.006873, 0.006873, 0.006873, 0.006873, 0.006874, 0.006875, 0.006877, 0.006880, 0.006882, 0.006887, 0.006895, 0.006915, 0.006949, 0.007001, 0.007082, 0.007199, 0.007349, 0.007518, 0.007697, 0.007860, 0.007985, 0.008034, 0.007989, 0.007829, 0.007538, 0.007119, 0.006569, 0.005900, 0.005122, 0.004258, 0.003321, 0.002359, 0.001441, 0.000665, 0.000138, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000002, 0.000001, 0.000002, 0.000001, 0.000000, 0.000003, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.28264795029433065, -0.13999580501405712), + uv: (11.2150888671875, 1.5), + spectrum: [0.000658, 0.000658, 0.000658, 0.000658, 0.000658, 0.000658, 0.000658, 0.000657, 0.000656, 0.000653, 0.000647, 0.000640, 0.000625, 0.000597, 0.000554, 0.000493, 0.000413, 0.000320, 0.000219, 0.000123, 0.000046, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000219, 0.000791, 0.001656, 0.002753, 0.004015, 0.005375, 0.006768, 0.008138, 0.009438, 0.010631, 0.011696, 0.012617, 0.013393, 0.014035, 0.014554, 0.014963, 0.015280, 0.015522, 0.015702, 0.015834, 0.015929, 0.015997, 0.016047, 0.016082, 0.016107, 0.016124, 0.016136, 0.016145, 0.016151, 0.016155, 0.016157, 0.016159, 0.016160, 0.016160, 0.016161, 0.016161, 0.016162, 0.016162, 0.016162, 0.016162, 0.016162, 0.016162, 0.016161, 0.016162, 0.016162, 0.016162, 0.016162, 0.016162, 0.016161, 0.016161, 0.016161, 0.016161, 0.016161, 0.016161], + }, + SpectrumDataPoint { + xystar: (-0.2828067338142219, -0.08399748300843428), + uv: (0.7819814453124998, 2.4999999999999996), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000034, 0.000173, 0.000488, 0.001070, 0.001979, 0.003225, 0.004773, 0.006546, 0.008433, 0.010292, 0.011964, 0.013297, 0.014166, 0.014492, 0.014239, 0.013408, 0.012042, 0.010207, 0.007997, 0.005554, 0.003125, 0.001099, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.24779758231348623, -0.08252094287808212), + uv: (10.572070703125, 2.5263675781249995), + spectrum: [0.000739, 0.000739, 0.000739, 0.000738, 0.000737, 0.000737, 0.000737, 0.000737, 0.000738, 0.000737, 0.000734, 0.000730, 0.000723, 0.000710, 0.000688, 0.000653, 0.000606, 0.000548, 0.000479, 0.000406, 0.000327, 0.000245, 0.000167, 0.000099, 0.000044, 0.000009, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000058, 0.000211, 0.000457, 0.000794, 0.001214, 0.001712, 0.002279, 0.002901, 0.003568, 0.004263, 0.004972, 0.005677, 0.006364, 0.007017, 0.007625, 0.008177, 0.008666, 0.009090, 0.009450, 0.009750, 0.009994, 0.010190, 0.010345, 0.010463, 0.010553, 0.010620, 0.010669, 0.010704, 0.010729, 0.010746, 0.010757, 0.010765, 0.010770, 0.010773, 0.010776, 0.010778, 0.010779, 0.010780, 0.010781, 0.010781, 0.010782, 0.010782, 0.010782, 0.010781, 0.010781, 0.010780, 0.010780, 0.010779, 0.010778, 0.010778, 0.010777, 0.010777, 0.010777, 0.010777, 0.010777, 0.010776, 0.010776, 0.010774, 0.010773, 0.010773, 0.010772], + }, + SpectrumDataPoint { + xystar: (0.27533065877672697, -0.10020269012638827), + uv: (11.080078776041669, 2.210612630208333), + spectrum: [0.000362, 0.000362, 0.000362, 0.000362, 0.000361, 0.000360, 0.000359, 0.000358, 0.000356, 0.000353, 0.000350, 0.000346, 0.000340, 0.000328, 0.000310, 0.000284, 0.000248, 0.000206, 0.000158, 0.000107, 0.000060, 0.000022, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000155, 0.000462, 0.000913, 0.001492, 0.002182, 0.002961, 0.003806, 0.004695, 0.005600, 0.006498, 0.007365, 0.008180, 0.008928, 0.009598, 0.010184, 0.010683, 0.011100, 0.011440, 0.011712, 0.011927, 0.012093, 0.012219, 0.012312, 0.012380, 0.012430, 0.012465, 0.012490, 0.012508, 0.012520, 0.012529, 0.012534, 0.012538, 0.012541, 0.012543, 0.012544, 0.012545, 0.012546, 0.012547, 0.012547, 0.012547, 0.012547, 0.012547, 0.012547, 0.012547, 0.012547, 0.012546, 0.012546, 0.012546, 0.012545, 0.012545, 0.012545, 0.012545, 0.012545, 0.012545, 0.012544, 0.012544, 0.012544, 0.012544], + }, + SpectrumDataPoint { + xystar: (-0.2799353984961877, -0.02799916100281143), + uv: (0.8349599609374989, 3.4999999999999996), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001439, 0.004357, 0.008262, 0.012568, 0.016679, 0.020035, 0.022223, 0.023000, 0.022257, 0.020070, 0.016618, 0.012202, 0.007311, 0.002797, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.23497319844697023, -0.02799916100281143), + uv: (10.3354501953125, 3.4999999999999996), + spectrum: [0.000379, 0.000379, 0.000379, 0.000379, 0.000380, 0.000381, 0.000381, 0.000381, 0.000380, 0.000379, 0.000377, 0.000375, 0.000373, 0.000369, 0.000362, 0.000352, 0.000339, 0.000324, 0.000306, 0.000287, 0.000268, 0.000252, 0.000240, 0.000232, 0.000231, 0.000242, 0.000266, 0.000304, 0.000361, 0.000437, 0.000539, 0.000673, 0.000841, 0.001047, 0.001290, 0.001573, 0.001892, 0.002247, 0.002633, 0.003046, 0.003482, 0.003934, 0.004396, 0.004861, 0.005321, 0.005770, 0.006198, 0.006600, 0.006971, 0.007304, 0.007598, 0.007852, 0.008065, 0.008241, 0.008383, 0.008496, 0.008583, 0.008649, 0.008698, 0.008735, 0.008762, 0.008781, 0.008795, 0.008806, 0.008814, 0.008820, 0.008823, 0.008826, 0.008828, 0.008829, 0.008829, 0.008829, 0.008829, 0.008828, 0.008828, 0.008827, 0.008827, 0.008827, 0.008827, 0.008827, 0.008827, 0.008826, 0.008826, 0.008826, 0.008826, 0.008826, 0.008826, 0.008827, 0.008827, 0.008828, 0.008828, 0.008829, 0.008829, 0.008830, 0.008830], + }, + SpectrumDataPoint { + xystar: (-0.27542330013927685, 0.02799916100281143), + uv: (0.9182119140624989, 4.5), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000232, 0.005811, 0.014294, 0.023164, 0.030417, 0.034696, 0.035224, 0.031977, 0.025412, 0.016514, 0.007021, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.22467873357401813, 0.02799916100281143), + uv: (10.1455087890625, 4.5), + spectrum: [0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000005, 0.000042, 0.000109, 0.000206, 0.000331, 0.000476, 0.000641, 0.000822, 0.001012, 0.001217, 0.001434, 0.001657, 0.001892, 0.002139, 0.002397, 0.002664, 0.002939, 0.003220, 0.003507, 0.003797, 0.004088, 0.004380, 0.004667, 0.004949, 0.005224, 0.005485, 0.005731, 0.005964, 0.006177, 0.006367, 0.006538, 0.006687, 0.006813, 0.006919, 0.007007, 0.007076, 0.007131, 0.007174, 0.007208, 0.007230, 0.007247, 0.007262, 0.007272, 0.007278, 0.007282, 0.007286, 0.007288, 0.007289, 0.007290, 0.007291, 0.007291, 0.007292, 0.007291, 0.007291, 0.007292, 0.007292, 0.007292, 0.007293, 0.007293, 0.007295, 0.007296, 0.007296, 0.007296, 0.007295, 0.007295, 0.007295, 0.007296, 0.007296, 0.007295, 0.007295, 0.007294, 0.007294, 0.007294, 0.007293, 0.007293, 0.007294], + }, + SpectrumDataPoint { + xystar: (-0.2721197031522586, 0.06184974562556067), + uv: (0.9791660156249993, 5.104492838541667), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.005774, 0.019422, 0.033963, 0.044428, 0.047728, 0.043253, 0.032054, 0.016954, 0.003193, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.24745884413771813, 0.08190850497983466), + uv: (1.4341792968749996, 5.462695703124999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000077, 0.001801, 0.004814, 0.008664, 0.012863, 0.016896, 0.020328, 0.022837, 0.024195, 0.024286, 0.023057, 0.020511, 0.016733, 0.012028, 0.007001, 0.002584, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.19209632353562106, 0.08138352071103196), + uv: (9.544336328125002, 5.453320703125), + spectrum: [0.000004, 0.000004, 0.000002, 0.000002, 0.000002, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000009, 0.000083, 0.000221, 0.000415, 0.000658, 0.000937, 0.001241, 0.001564, 0.001897, 0.002233, 0.002573, 0.002906, 0.003230, 0.003540, 0.003830, 0.004099, 0.004342, 0.004559, 0.004750, 0.004914, 0.005052, 0.005166, 0.005257, 0.005327, 0.005378, 0.005412, 0.005431, 0.005439, 0.005438, 0.005432, 0.005423, 0.005410, 0.005398, 0.005385, 0.005375, 0.005366, 0.005360, 0.005357, 0.005354, 0.005354, 0.005354, 0.005352, 0.005354, 0.005354, 0.005355, 0.005355, 0.005354, 0.005353, 0.005350, 0.005349, 0.005348, 0.005346, 0.005346, 0.005345, 0.005344, 0.005344, 0.005344, 0.005343, 0.005343, 0.005343, 0.005344, 0.005344, 0.005344, 0.005344, 0.005343, 0.005342, 0.005342, 0.005341, 0.005339, 0.005339, 0.005338, 0.005337, 0.005336, 0.005337, 0.005337, 0.005337], + }, + SpectrumDataPoint { + xystar: (0.21860965694889323, 0.060974771844222814), + uv: (10.033529296875003, 5.088867838541667), + spectrum: [0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000013, 0.000157, 0.000402, 0.000712, 0.001070, 0.001464, 0.001876, 0.002296, 0.002711, 0.003113, 0.003495, 0.003852, 0.004182, 0.004483, 0.004753, 0.004991, 0.005199, 0.005376, 0.005526, 0.005649, 0.005748, 0.005827, 0.005888, 0.005935, 0.005970, 0.005995, 0.006012, 0.006024, 0.006032, 0.006037, 0.006040, 0.006042, 0.006043, 0.006043, 0.006043, 0.006043, 0.006043, 0.006043, 0.006042, 0.006041, 0.006041, 0.006040, 0.006040, 0.006040, 0.006040, 0.006039, 0.006039, 0.006039, 0.006039, 0.006038, 0.006038, 0.006037, 0.006037, 0.006037, 0.006036, 0.006036, 0.006036, 0.006036, 0.006035, 0.006035, 0.006035, 0.006035, 0.006035, 0.006034, 0.006034, 0.006034, 0.006034, 0.006034, 0.006034, 0.006034, 0.006034], + }, + SpectrumDataPoint { + xystar: (-0.23567449232649001, 0.1399958050140571), + uv: (1.6516103515625007, 6.499999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000797, 0.004422, 0.009859, 0.015976, 0.021790, 0.026531, 0.029634, 0.030784, 0.029806, 0.026660, 0.021483, 0.014816, 0.007770, 0.002072, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.17697751780667584, 0.1399958050140571), + uv: (9.2653818359375, 6.499999999999998), + spectrum: [0.000002, 0.000002, 0.000002, 0.000002, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000111, 0.000395, 0.000807, 0.001310, 0.001869, 0.002460, 0.003063, 0.003657, 0.004226, 0.004748, 0.005211, 0.005607, 0.005930, 0.006175, 0.006343, 0.006436, 0.006456, 0.006411, 0.006305, 0.006148, 0.005947, 0.005715, 0.005463, 0.005200, 0.004937, 0.004684, 0.004446, 0.004229, 0.004038, 0.003872, 0.003733, 0.003618, 0.003524, 0.003450, 0.003392, 0.003346, 0.003312, 0.003287, 0.003268, 0.003255, 0.003245, 0.003238, 0.003233, 0.003231, 0.003229, 0.003227, 0.003227, 0.003225, 0.003225, 0.003224, 0.003223, 0.003222, 0.003222, 0.003222, 0.003222, 0.003221, 0.003221, 0.003221, 0.003221, 0.003221, 0.003221, 0.003221, 0.003221, 0.003221, 0.003221, 0.003221, 0.003222, 0.003222, 0.003222, 0.003223, 0.003223, 0.003223], + }, + SpectrumDataPoint { + xystar: (-0.22802641945172614, 0.19599412701967997), + uv: (1.7927236328124998, 7.499999999999999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002041, 0.010218, 0.020912, 0.031206, 0.038913, 0.042767, 0.042066, 0.036661, 0.027065, 0.015069, 0.004227, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.14039640945901638, 0.2002268345612464), + uv: (8.590430078125001, 7.5755863281249995), + spectrum: [0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000143, 0.000491, 0.000993, 0.001601, 0.002283, 0.003006, 0.003742, 0.004473, 0.005169, 0.005807, 0.006372, 0.006849, 0.007223, 0.007492, 0.007649, 0.007696, 0.007640, 0.007490, 0.007245, 0.006919, 0.006527, 0.006082, 0.005603, 0.005104, 0.004605, 0.004110, 0.003639, 0.003207, 0.002818, 0.002479, 0.002188, 0.001941, 0.001740, 0.001579, 0.001451, 0.001355, 0.001281, 0.001226, 0.001184, 0.001156, 0.001135, 0.001119, 0.001108, 0.001101, 0.001096, 0.001089, 0.001086, 0.001083, 0.001081, 0.001081, 0.001080, 0.001078, 0.001079, 0.001077, 0.001076, 0.001077, 0.001076, 0.001076, 0.001075, 0.001075, 0.001075, 0.001073, 0.001072, 0.001073, 0.001073, 0.001072, 0.001073, 0.001071, 0.001071, 0.001071, 0.001071, 0.001071, 0.001071], + }, + SpectrumDataPoint { + xystar: (0.16873398908970627, 0.1843825322537497), + uv: (9.113281901041667, 7.292643880208333), + spectrum: [0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000206, 0.000724, 0.001454, 0.002319, 0.003255, 0.004201, 0.005103, 0.005918, 0.006620, 0.007190, 0.007619, 0.007901, 0.008036, 0.008031, 0.007895, 0.007640, 0.007282, 0.006841, 0.006337, 0.005793, 0.005230, 0.004669, 0.004128, 0.003622, 0.003163, 0.002758, 0.002410, 0.002118, 0.001878, 0.001684, 0.001531, 0.001412, 0.001321, 0.001252, 0.001202, 0.001165, 0.001138, 0.001119, 0.001105, 0.001094, 0.001087, 0.001084, 0.001081, 0.001078, 0.001076, 0.001075, 0.001073, 0.001072, 0.001071, 0.001071, 0.001070, 0.001070, 0.001070, 0.001070, 0.001069, 0.001069, 0.001069, 0.001069, 0.001069, 0.001069, 0.001069, 0.001069, 0.001070, 0.001070, 0.001070, 0.001070, 0.001069, 0.001070, 0.001069], + }, + SpectrumDataPoint { + xystar: (-0.22157361598686395, 0.23872204979891953), + uv: (1.9117832031249993, 8.263021484374999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.012982, 0.030813, 0.046441, 0.055671, 0.056186, 0.047435, 0.030933, 0.011783, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.19434046395008459, 0.2552298738905974), + uv: (2.414257421875, 8.557812890625), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.003610, 0.009609, 0.016594, 0.023384, 0.029045, 0.032940, 0.034601, 0.033707, 0.030102, 0.024014, 0.016229, 0.008185, 0.001926, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.12881318343965062, 0.2519924490253028), + uv: (8.3767099609375, 8.5), + spectrum: [0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000223, 0.000771, 0.001548, 0.002474, 0.003482, 0.004523, 0.005548, 0.006511, 0.007370, 0.008094, 0.008660, 0.009056, 0.009280, 0.009329, 0.009211, 0.008936, 0.008519, 0.007977, 0.007332, 0.006610, 0.005837, 0.005042, 0.004250, 0.003487, 0.002776, 0.002133, 0.001574, 0.001103, 0.000725, 0.000436, 0.000227, 0.000092, 0.000019, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000002, 0.000001, 0.000001, 0.000002, 0.000002, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.1826672606027804, 0.30799077103092565), + uv: (2.6296376953125, 9.499999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002962, 0.011153, 0.021421, 0.031233, 0.038841, 0.042985, 0.042828, 0.037973, 0.028876, 0.017218, 0.006112, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.11775126488722393, 0.30799077103092565), + uv: (8.1726083984375, 9.499999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000475, 0.001595, 0.003128, 0.004882, 0.006678, 0.008357, 0.009801, 0.010941, 0.011735, 0.012161, 0.012216, 0.011913, 0.011282, 0.010366, 0.009216, 0.007898, 0.006484, 0.005049, 0.003670, 0.002426, 0.001386, 0.000607, 0.000135, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000001, 0.000000, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.17168473381029942, 0.36398909303654853), + uv: (2.8322744140624994, 10.5), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.009996, 0.028024, 0.045931, 0.057966, 0.060467, 0.051817, 0.033707, 0.012510, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.08319200002618024, 0.3618235548020819), + uv: (7.534961328125, 10.461328515625), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000791, 0.002248, 0.004114, 0.006181, 0.008270, 0.010216, 0.011870, 0.013125, 0.013927, 0.014253, 0.014106, 0.013510, 0.012508, 0.011164, 0.009558, 0.007783, 0.005948, 0.004167, 0.002563, 0.001259, 0.000370, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.1108485747826697, 0.34171375531056314), + uv: (8.045248046875, 10.102214192708333), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000363, 0.002276, 0.005030, 0.008008, 0.010757, 0.013016, 0.014633, 0.015515, 0.015626, 0.014996, 0.013707, 0.011880, 0.009672, 0.007274, 0.004894, 0.002759, 0.001090, 0.000105, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.16472911586578143, 0.39709230422107167), + uv: (2.9606113281249997, 11.091146484374999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.013110, 0.043196, 0.069841, 0.079880, 0.067008, 0.034892, 0.001225, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.13639506475775579, 0.41745001295063605), + uv: (3.4833980468749997, 11.454687890624998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.005873, 0.018390, 0.032485, 0.044329, 0.051106, 0.050858, 0.043004, 0.028959, 0.012614, 0.000245, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.06524684764317006, 0.4199874150421713), + uv: (7.203858398437501, 11.499999999999998), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.001350, 0.004395, 0.008317, 0.012364, 0.015896, 0.018472, 0.019892, 0.020103, 0.019145, 0.017144, 0.014311, 0.010938, 0.007382, 0.004059, 0.001434, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000000, 0.000001, 0.000002, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (-0.11892889168380434, 0.4650668298587564), + uv: (3.8056634114583328, 12.305013671874999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.002157, 0.021387, 0.044337, 0.061319, 0.065705, 0.054910, 0.032189, 0.008070, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.08570077964046263, 0.480634057135496), + uv: (4.418749609375, 12.583008203124997), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.005126, 0.016493, 0.029500, 0.040588, 0.046974, 0.046832, 0.039777, 0.027361, 0.013107, 0.002029, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001], + }, + SpectrumDataPoint { + xystar: (0.02647452672101075, 0.47289053917065604), + uv: (6.488476953125001, 12.444726953124999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.003506, 0.009139, 0.015455, 0.021171, 0.025254, 0.027108, 0.026619, 0.024002, 0.019671, 0.014239, 0.008506, 0.003444, 0.000186, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.056738679726381684, 0.45216096658402294), + uv: (7.046875651041668, 12.074544921874997), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.004328, 0.011605, 0.018940, 0.024427, 0.027217, 0.027102, 0.024261, 0.019237, 0.012936, 0.006584, 0.001689, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.07057048857024528, 0.5168178833008018), + uv: (4.697916015625, 13.229167317708333), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000195, 0.017901, 0.040081, 0.056786, 0.061148, 0.050847, 0.029751, 0.007922, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (-0.027099054061447154, 0.5199805671765496), + uv: (5.5, 13.285645507812498), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.005899, 0.019086, 0.033309, 0.043457, 0.046146, 0.040597, 0.028764, 0.014526, 0.002900, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + }, + SpectrumDataPoint { + xystar: (0.00799213911975501, 0.5124794716350015), + uv: (6.147461588541667, 13.151693359374999), + spectrum: [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.003433, 0.016112, 0.030274, 0.039955, 0.042108, 0.036770, 0.026016, 0.013147, 0.002607, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001, 0.000000, 0.000000, 0.000002, 0.000000], + } +]; + +// Color matching functions. +const CMF_WAVELENGTH: [f32; 95] = [ + 360.0, 365.0, 370.0, 375.0, 380.0, 385.0, 390.0, 395.0, 400.0, 405.0, 410.0, 415.0, 420.0, 425.0, 430.0, 435.0, 440.0, 445.0, 450.0, 455.0, 460.0, 465.0, 470.0, 475.0, 480.0, 485.0, 490.0, 495.0, 500.0, 505.0, 510.0, 515.0, 520.0, 525.0, 530.0, 535.0, 540.0, 545.0, 550.0, 555.0, 560.0, 565.0, 570.0, 575.0, 580.0, 585.0, 590.0, 595.0, 600.0, 605.0, 610.0, 615.0, 620.0, 625.0, 630.0, 635.0, 640.0, 645.0, 650.0, 655.0, 660.0, 665.0, 670.0, 675.0, 680.0, 685.0, 690.0, 695.0, 700.0, 705.0, 710.0, 715.0, 720.0, 725.0, 730.0, 735.0, 740.0, 745.0, 750.0, 755.0, 760.0, 765.0, 770.0, 775.0, 780.0, 785.0, 790.0, 795.0, 800.0, 805.0, 810.0, 815.0, 820.0, 825.0, 830.0 +]; +const CMF_X: [f32; 95] = [ + 0.0001299, 0.0002321, 0.0004149, 0.0007416, 0.001368, 0.002236, 0.004243, 0.00765, 0.01431, 0.02319, 0.04351, 0.07763, 0.13438, 0.21477, 0.2839, 0.3285, 0.34828, 0.34806, 0.3362, 0.3187, 0.2908, 0.2511, 0.19536, 0.1421, 0.09564, 0.05795001, 0.03201, 0.0147, 0.0049, 0.0024, 0.0093, 0.0291, 0.06327, 0.1096, 0.1655, 0.2257499, 0.2904, 0.3597, 0.4334499, 0.5120501, 0.5945, 0.6784, 0.7621, 0.8425, 0.9163, 0.9786, 1.0263, 1.0567, 1.0622, 1.0456, 1.0026, 0.9384, 0.8544499, 0.7514, 0.6424, 0.5419, 0.4479, 0.3608, 0.2835, 0.2187, 0.1649, 0.1212, 0.0874, 0.0636, 0.04677, 0.0329, 0.0227, 0.01584, 0.01135916, 0.008110916, 0.005790346, 0.004109457, 0.002899327, 0.00204919, 0.001439971, 0.0009999493, 0.0006900786, 0.0004760213, 0.0003323011, 0.0002348261, 0.0001661505, 0.000117413, 8.307527e-05, 5.870652e-05, 4.150994e-05, 2.935326e-05, 2.067383e-05, 1.455977e-05, 1.025398e-05, 7.221456e-06, 5.085868e-06, 3.581652e-06, 2.522525e-06, 1.776509e-06, 1.251141e-06 +]; +const CMF_Y: [f32; 95] = [ + 3.917e-06, 6.965e-06, 1.239e-05, 2.202e-05, 3.9e-05, 6.4e-05, 0.00012, 0.000217, 0.000396, 0.00064, 0.00121, 0.00218, 0.004, 0.0073, 0.0116, 0.01684, 0.023, 0.0298, 0.038, 0.048, 0.06, 0.0739, 0.09098, 0.1126, 0.13902, 0.1693, 0.20802, 0.2586, 0.323, 0.4073, 0.503, 0.6082, 0.71, 0.7932, 0.862, 0.9148501, 0.954, 0.9803, 0.9949501, 1.0, 0.995, 0.9786, 0.952, 0.9154, 0.87, 0.8163, 0.757, 0.6949, 0.631, 0.5668, 0.503, 0.4412, 0.381, 0.321, 0.265, 0.217, 0.175, 0.1382, 0.107, 0.0816, 0.061, 0.04458, 0.032, 0.0232, 0.017, 0.01192, 0.00821, 0.005723, 0.004102, 0.002929, 0.002091, 0.001484, 0.001047, 0.00074, 0.00052, 0.0003611, 0.0002492, 0.0001719, 0.00012, 8.48e-05, 6e-05, 4.24e-05, 3e-05, 2.12e-05, 1.499e-05, 1.06e-05, 7.4657e-06, 5.2578e-06, 3.7029e-06, 2.6078e-06, 1.8366e-06, 1.2934e-06, 9.1093e-07, 6.4153e-07, 4.5181e-07 +]; +const CMF_Z: [f32; 95] = [ + 0.0006061, 0.001086, 0.001946, 0.003486, 0.006450001, 0.01054999, 0.02005001, 0.03621, 0.06785001, 0.1102, 0.2074, 0.3713, 0.6456, 1.0390501, 1.3856, 1.62296, 1.74706, 1.7826, 1.77211, 1.7441, 1.6692, 1.5281, 1.28764, 1.0419, 0.8129501, 0.6162, 0.46518, 0.3533, 0.272, 0.2123, 0.1582, 0.1117, 0.07824999, 0.05725001, 0.04216, 0.02984, 0.0203, 0.0134, 0.008749999, 0.005749999, 0.0039, 0.002749999, 0.0021, 0.0018, 0.001650001, 0.0014, 0.0011, 0.001, 0.0008, 0.0006, 0.00034, 0.00024, 0.00019, 0.0001, 4.999999e-05, 3e-05, 2e-05, 1e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +]; + +fn xyz_from_spectrum(spectrum: &[f32]) -> (f32, f32, f32) { + let mut xyz = (0.0, 0.0, 0.0); + for i in 0..(SPECTRUM_NUM_SAMPLES as usize) { + xyz.0 += spectrum[i] * CMF_X[i]; + xyz.1 += spectrum[i] * CMF_Y[i]; + xyz.2 += spectrum[i] * CMF_Z[i]; + } + xyz.0 *= SPECTRUM_BIN_SIZE; + xyz.1 *= SPECTRUM_BIN_SIZE; + xyz.2 *= SPECTRUM_BIN_SIZE; + return xyz; +} + diff --git a/src/color/xyz_5nm_360_830.csv b/src/color/xyz_5nm_360_830.csv new file mode 100644 index 0000000..8247c1d --- /dev/null +++ b/src/color/xyz_5nm_360_830.csv @@ -0,0 +1,95 @@ +360,0.000129900000,0.000003917000,0.000606100000 +365,0.000232100000,0.000006965000,0.001086000000 +370,0.000414900000,0.000012390000,0.001946000000 +375,0.000741600000,0.000022020000,0.003486000000 +380,0.001368000000,0.000039000000,0.006450001000 +385,0.002236000000,0.000064000000,0.010549990000 +390,0.004243000000,0.000120000000,0.020050010000 +395,0.007650000000,0.000217000000,0.036210000000 +400,0.014310000000,0.000396000000,0.067850010000 +405,0.023190000000,0.000640000000,0.110200000000 +410,0.043510000000,0.001210000000,0.207400000000 +415,0.077630000000,0.002180000000,0.371300000000 +420,0.134380000000,0.004000000000,0.645600000000 +425,0.214770000000,0.007300000000,1.039050100000 +430,0.283900000000,0.011600000000,1.385600000000 +435,0.328500000000,0.016840000000,1.622960000000 +440,0.348280000000,0.023000000000,1.747060000000 +445,0.348060000000,0.029800000000,1.782600000000 +450,0.336200000000,0.038000000000,1.772110000000 +455,0.318700000000,0.048000000000,1.744100000000 +460,0.290800000000,0.060000000000,1.669200000000 +465,0.251100000000,0.073900000000,1.528100000000 +470,0.195360000000,0.090980000000,1.287640000000 +475,0.142100000000,0.112600000000,1.041900000000 +480,0.095640000000,0.139020000000,0.812950100000 +485,0.057950010000,0.169300000000,0.616200000000 +490,0.032010000000,0.208020000000,0.465180000000 +495,0.014700000000,0.258600000000,0.353300000000 +500,0.004900000000,0.323000000000,0.272000000000 +505,0.002400000000,0.407300000000,0.212300000000 +510,0.009300000000,0.503000000000,0.158200000000 +515,0.029100000000,0.608200000000,0.111700000000 +520,0.063270000000,0.710000000000,0.078249990000 +525,0.109600000000,0.793200000000,0.057250010000 +530,0.165500000000,0.862000000000,0.042160000000 +535,0.225749900000,0.914850100000,0.029840000000 +540,0.290400000000,0.954000000000,0.020300000000 +545,0.359700000000,0.980300000000,0.013400000000 +550,0.433449900000,0.994950100000,0.008749999000 +555,0.512050100000,1.000000000000,0.005749999000 +560,0.594500000000,0.995000000000,0.003900000000 +565,0.678400000000,0.978600000000,0.002749999000 +570,0.762100000000,0.952000000000,0.002100000000 +575,0.842500000000,0.915400000000,0.001800000000 +580,0.916300000000,0.870000000000,0.001650001000 +585,0.978600000000,0.816300000000,0.001400000000 +590,1.026300000000,0.757000000000,0.001100000000 +595,1.056700000000,0.694900000000,0.001000000000 +600,1.062200000000,0.631000000000,0.000800000000 +605,1.045600000000,0.566800000000,0.000600000000 +610,1.002600000000,0.503000000000,0.000340000000 +615,0.938400000000,0.441200000000,0.000240000000 +620,0.854449900000,0.381000000000,0.000190000000 +625,0.751400000000,0.321000000000,0.000100000000 +630,0.642400000000,0.265000000000,0.000049999990 +635,0.541900000000,0.217000000000,0.000030000000 +640,0.447900000000,0.175000000000,0.000020000000 +645,0.360800000000,0.138200000000,0.000010000000 +650,0.283500000000,0.107000000000,0.000000000000 +655,0.218700000000,0.081600000000,0.000000000000 +660,0.164900000000,0.061000000000,0.000000000000 +665,0.121200000000,0.044580000000,0.000000000000 +670,0.087400000000,0.032000000000,0.000000000000 +675,0.063600000000,0.023200000000,0.000000000000 +680,0.046770000000,0.017000000000,0.000000000000 +685,0.032900000000,0.011920000000,0.000000000000 +690,0.022700000000,0.008210000000,0.000000000000 +695,0.015840000000,0.005723000000,0.000000000000 +700,0.011359160000,0.004102000000,0.000000000000 +705,0.008110916000,0.002929000000,0.000000000000 +710,0.005790346000,0.002091000000,0.000000000000 +715,0.004109457000,0.001484000000,0.000000000000 +720,0.002899327000,0.001047000000,0.000000000000 +725,0.002049190000,0.000740000000,0.000000000000 +730,0.001439971000,0.000520000000,0.000000000000 +735,0.000999949300,0.000361100000,0.000000000000 +740,0.000690078600,0.000249200000,0.000000000000 +745,0.000476021300,0.000171900000,0.000000000000 +750,0.000332301100,0.000120000000,0.000000000000 +755,0.000234826100,0.000084800000,0.000000000000 +760,0.000166150500,0.000060000000,0.000000000000 +765,0.000117413000,0.000042400000,0.000000000000 +770,0.000083075270,0.000030000000,0.000000000000 +775,0.000058706520,0.000021200000,0.000000000000 +780,0.000041509940,0.000014990000,0.000000000000 +785,0.000029353260,0.000010600000,0.000000000000 +790,0.000020673830,0.000007465700,0.000000000000 +795,0.000014559770,0.000005257800,0.000000000000 +800,0.000010253980,0.000003702900,0.000000000000 +805,0.000007221456,0.000002607800,0.000000000000 +810,0.000005085868,0.000001836600,0.000000000000 +815,0.000003581652,0.000001293400,0.000000000000 +820,0.000002522525,0.000000910930,0.000000000000 +825,0.000001776509,0.000000641530,0.000000000000 +830,0.000001251141,0.000000451810,0.000000000000 \ No newline at end of file diff --git a/src/color/xyz_5nm_380_780.csv b/src/color/xyz_5nm_380_780.csv new file mode 100644 index 0000000..77c3d74 --- /dev/null +++ b/src/color/xyz_5nm_380_780.csv @@ -0,0 +1,81 @@ +380,0.001368,0.000039,0.006450 +385,0.002236,0.000064,0.010550 +390,0.004243,0.000120,0.020050 +395,0.007650,0.000217,0.036210 +400,0.014310,0.000396,0.067850 +405,0.023190,0.000640,0.110200 +410,0.043510,0.001210,0.207400 +415,0.077630,0.002180,0.371300 +420,0.134380,0.004000,0.645600 +425,0.214770,0.007300,1.039050 +430,0.283900,0.011600,1.385600 +435,0.328500,0.016840,1.622960 +440,0.348280,0.023000,1.747060 +445,0.348060,0.029800,1.782600 +450,0.336200,0.038000,1.772110 +455,0.318700,0.048000,1.744100 +460,0.290800,0.060000,1.669200 +465,0.251100,0.073900,1.528100 +470,0.195360,0.090980,1.287640 +475,0.142100,0.112600,1.041900 +480,0.095640,0.139020,0.812950 +485,0.057950,0.169300,0.616200 +490,0.032010,0.208020,0.465180 +495,0.014700,0.258600,0.353300 +500,0.004900,0.323000,0.272000 +505,0.002400,0.407300,0.212300 +510,0.009300,0.503000,0.158200 +515,0.029100,0.608200,0.111700 +520,0.063270,0.710000,0.078250 +525,0.109600,0.793200,0.057250 +530,0.165500,0.862000,0.042160 +535,0.225750,0.914850,0.029840 +540,0.290400,0.954000,0.020300 +545,0.359700,0.980300,0.013400 +550,0.433450,0.994950,0.008750 +555,0.512050,1.000000,0.005750 +560,0.594500,0.995000,0.003900 +565,0.678400,0.978600,0.002750 +570,0.762100,0.952000,0.002100 +575,0.842500,0.915400,0.001800 +580,0.916300,0.870000,0.001650 +585,0.978600,0.816300,0.001400 +590,1.026300,0.757000,0.001100 +595,1.056700,0.694900,0.001000 +600,1.062200,0.631000,0.000800 +605,1.045600,0.566800,0.000600 +610,1.002600,0.503000,0.000340 +615,0.938400,0.441200,0.000240 +620,0.854450,0.381000,0.000190 +625,0.751400,0.321000,0.000100 +630,0.642400,0.265000,0.000050 +635,0.541900,0.217000,0.000030 +640,0.447900,0.175000,0.000020 +645,0.360800,0.138200,0.000010 +650,0.283500,0.107000,0.000000 +655,0.218700,0.081600,0.000000 +660,0.164900,0.061000,0.000000 +665,0.121200,0.044580,0.000000 +670,0.087400,0.032000,0.000000 +675,0.063600,0.023200,0.000000 +680,0.046770,0.017000,0.000000 +685,0.032900,0.011920,0.000000 +690,0.022700,0.008210,0.000000 +695,0.015840,0.005723,0.000000 +700,0.011359,0.004102,0.000000 +705,0.008111,0.002929,0.000000 +710,0.005790,0.002091,0.000000 +715,0.004109,0.001484,0.000000 +720,0.002899,0.001047,0.000000 +725,0.002049,0.000740,0.000000 +730,0.001440,0.000520,0.000000 +735,0.001000,0.000361,0.000000 +740,0.000690,0.000249,0.000000 +745,0.000476,0.000172,0.000000 +750,0.000332,0.000120,0.000000 +755,0.000235,0.000085,0.000000 +760,0.000166,0.000060,0.000000 +765,0.000117,0.000042,0.000000 +770,0.000083,0.000030,0.000000 +775,0.000059,0.000021,0.000000 +780,0.000042,0.000015,0.000000 diff --git a/src/main.rs b/src/main.rs index f291773..96918c2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,6 +24,7 @@ mod bvh; mod scene; mod assembly; mod halton; +mod color; use std::mem; use std::io;