@magmacrunch/adenosine-spectrum 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API.md +236 -0
- package/CHANGELOG.md +33 -0
- package/LICENSE +75 -0
- package/NOTICE +18 -0
- package/README.md +59 -2
- package/dist/data.d.ts +15 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.global.js +1847 -0
- package/dist/index.global.js.map +1 -0
- package/dist/index.js +1822 -0
- package/dist/index.js.map +1 -0
- package/dist/spectrum.d.ts +134 -0
- package/package.json +51 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/data.ts","../src/spectrum.ts"],"sourcesContent":["export * from './spectrum.js';\n","// GENERATED by tools/generate.py from colour-science 0.4.7. Do not edit by hand.\n//\n// CIE 1931 2-degree standard observer colour-matching functions, 360-830 nm at\n// 1 nm, and CIE standard illuminant D65, 300-780 nm at 5 nm, both as published\n// by the CIE and distributed in colour-science. The XYZ to linear sRGB matrix\n// is the one IEC 61966-2-1 publishes, to four decimals, and its inverse. The\n// OKLab matrices are Ottosson's (2020), from XYZ, as colour-science carries them.\n\nexport type Matrix = readonly (readonly [number, number, number])[];\n\nexport const CMF_START = 360;\nexport const CMF_STEP = 1;\n\nexport const CMF_X: readonly number[] = [\n 0.0001299, 0.000145847, 0.0001638021, 0.0001840037, 0.0002066902, 0.0002321, 0.000260728, 0.000293075,\n 0.000329388, 0.000369914, 0.0004149, 0.0004641587, 0.000518986, 0.000581854, 0.0006552347, 0.0007416,\n 0.0008450296, 0.0009645268, 0.001094949, 0.001231154, 0.001368, 0.00150205, 0.001642328, 0.001802382,\n 0.001995757, 0.002236, 0.002535385, 0.002892603, 0.003300829, 0.003753236, 0.004243, 0.004762389,\n 0.005330048, 0.005978712, 0.006741117, 0.00765, 0.008751373, 0.01002888, 0.0114217, 0.01286901,\n 0.01431, 0.01570443, 0.01714744, 0.01878122, 0.02074801, 0.02319, 0.02620736, 0.02978248,\n 0.03388092, 0.03846824, 0.04351, 0.0489956, 0.0550226, 0.0617188, 0.069212, 0.07763,\n 0.08695811, 0.09717672, 0.1084063, 0.1207672, 0.13438, 0.1493582, 0.1653957, 0.1819831,\n 0.198611, 0.21477, 0.2301868, 0.2448797, 0.2587773, 0.2718079, 0.2839, 0.2949438,\n 0.3048965, 0.3137873, 0.3216454, 0.3285, 0.3343513, 0.3392101, 0.3431213, 0.3461296,\n 0.34828, 0.3495999, 0.3501474, 0.350013, 0.349287, 0.34806, 0.3463733, 0.3442624,\n 0.3418088, 0.3390941, 0.3362, 0.3331977, 0.3300411, 0.3266357, 0.3228868, 0.3187,\n 0.3140251, 0.308884, 0.3032904, 0.2972579, 0.2908, 0.2839701, 0.2767214, 0.2689178,\n 0.2604227, 0.2511, 0.2408475, 0.2298512, 0.2184072, 0.2068115, 0.19536, 0.1842136,\n 0.1733273, 0.1626881, 0.1522833, 0.1421, 0.1321786, 0.1225696, 0.1132752, 0.1042979,\n 0.09564, 0.08729955, 0.07930804, 0.07171776, 0.06458099, 0.05795001, 0.05186211, 0.04628152,\n 0.04115088, 0.03641283, 0.03201, 0.0279172, 0.0241444, 0.020687, 0.0175404, 0.0147,\n 0.01216179, 0.00991996, 0.00796724, 0.006296346, 0.0049, 0.003777173, 0.00294532, 0.00242488,\n 0.002236293, 0.0024, 0.00292552, 0.00383656, 0.00517484, 0.00698208, 0.0093, 0.01214949,\n 0.01553588, 0.01947752, 0.02399277, 0.0291, 0.03481485, 0.04112016, 0.04798504, 0.05537861,\n 0.06327, 0.07163501, 0.08046224, 0.08973996, 0.09945645, 0.1096, 0.1201674, 0.1311145,\n 0.1423679, 0.1538542, 0.1655, 0.1772571, 0.18914, 0.2011694, 0.2133658, 0.2257499,\n 0.2383209, 0.2510668, 0.2639922, 0.2771017, 0.2904, 0.3038912, 0.3175726, 0.3314384,\n 0.3454828, 0.3597, 0.3740839, 0.3886396, 0.4033784, 0.4183115, 0.4334499, 0.4487953,\n 0.464336, 0.480064, 0.4959713, 0.5120501, 0.5282959, 0.5446916, 0.5612094, 0.5778215,\n 0.5945, 0.6112209, 0.6279758, 0.6447602, 0.6615697, 0.6784, 0.6952392, 0.7120586,\n 0.7288284, 0.7455188, 0.7621, 0.7785432, 0.7948256, 0.8109264, 0.8268248, 0.8425,\n 0.8579325, 0.8730816, 0.8878944, 0.9023181, 0.9163, 0.9297995, 0.9427984, 0.9552776,\n 0.9672179, 0.9786, 0.9893856, 0.9995488, 1.0090892, 1.0180064, 1.0263, 1.0339827,\n 1.040986, 1.047188, 1.0524667, 1.0567, 1.0597944, 1.0617992, 1.0628068, 1.0629096,\n 1.0622, 1.0607352, 1.0584436, 1.0552244, 1.0509768, 1.0456, 1.0390369, 1.0313608,\n 1.0226662, 1.0130477, 1.0026, 0.9913675, 0.9793314, 0.9664916, 0.9528479, 0.9384,\n 0.923194, 0.907244, 0.890502, 0.87292, 0.8544499, 0.835084, 0.814946, 0.794186,\n 0.772954, 0.7514, 0.7295836, 0.7075888, 0.6856022, 0.6638104, 0.6424, 0.6215149,\n 0.6011138, 0.5811052, 0.5613977, 0.5419, 0.5225995, 0.5035464, 0.4847436, 0.4661939,\n 0.4479, 0.4298613, 0.412098, 0.394644, 0.3775333, 0.3608, 0.3444563, 0.3285168,\n 0.3130192, 0.2980011, 0.2835, 0.2695448, 0.2561184, 0.2431896, 0.2307272, 0.2187,\n 0.2070971, 0.1959232, 0.1851708, 0.1748323, 0.1649, 0.1553667, 0.14623, 0.13749,\n 0.1291467, 0.1212, 0.1136397, 0.106465, 0.09969044, 0.09333061, 0.0874, 0.08190096,\n 0.07680428, 0.07207712, 0.06768664, 0.0636, 0.05980685, 0.05628216, 0.05297104, 0.04981861,\n 0.04677, 0.04378405, 0.04087536, 0.03807264, 0.03540461, 0.0329, 0.03056419, 0.02838056,\n 0.02634484, 0.02445275, 0.0227, 0.02108429, 0.01959988, 0.01823732, 0.01698717, 0.01584,\n 0.01479064, 0.01383132, 0.01294868, 0.0121292, 0.01135916, 0.01062935, 0.009938846, 0.009288422,\n 0.008678854, 0.008110916, 0.007582388, 0.007088746, 0.006627313, 0.006195408, 0.005790346, 0.005409826,\n 0.005052583, 0.004717512, 0.004403507, 0.004109457, 0.003833913, 0.003575748, 0.003334342, 0.003109075,\n 0.002899327, 0.002704348, 0.00252302, 0.002354168, 0.002196616, 0.00204919, 0.00191096, 0.001781438,\n 0.00166011, 0.001546459, 0.001439971, 0.001340042, 0.001246275, 0.001158471, 0.00107643, 0.0009999493,\n 0.0009287358, 0.0008624332, 0.0008007503, 0.000743396, 0.0006900786, 0.0006405156, 0.0005945021, 0.0005518646,\n 0.000512429, 0.0004760213, 0.0004424536, 0.0004115117, 0.0003829814, 0.0003566491, 0.0003323011, 0.0003097586,\n 0.0002888871, 0.0002695394, 0.0002515682, 0.0002348261, 0.000219171, 0.0002045258, 0.0001908405, 0.0001780654,\n 0.0001661505, 0.0001550236, 0.0001446219, 0.0001349098, 0.000125852, 0.000117413, 0.0001095515, 0.0001022245,\n 9.539445e-05, 8.90239e-05, 8.307527e-05, 7.751269e-05, 7.231304e-05, 6.745778e-05, 6.292844e-05, 5.870652e-05,\n 5.477028e-05, 5.109918e-05, 4.767654e-05, 4.448567e-05, 4.150994e-05, 3.873324e-05, 3.614203e-05, 3.372352e-05,\n 3.146487e-05, 2.935326e-05, 2.737573e-05, 2.552433e-05, 2.379376e-05, 2.21787e-05, 2.067383e-05, 1.927226e-05,\n 1.79664e-05, 1.674991e-05, 1.561648e-05, 1.455977e-05, 1.357387e-05, 1.265436e-05, 1.179723e-05, 1.099844e-05,\n 1.025398e-05, 9.559646e-06, 8.912044e-06, 8.308358e-06, 7.745769e-06, 7.221456e-06, 6.732475e-06, 6.276423e-06,\n 5.851304e-06, 5.455118e-06, 5.085868e-06, 4.741466e-06, 4.420236e-06, 4.120783e-06, 3.841716e-06, 3.581652e-06,\n 3.339127e-06, 3.112949e-06, 2.902121e-06, 2.705645e-06, 2.522525e-06, 2.351726e-06, 2.192415e-06, 2.043902e-06,\n 1.905497e-06, 1.776509e-06, 1.656215e-06, 1.544022e-06, 1.43944e-06, 1.341977e-06, 1.251141e-06,\n];\n\nexport const CMF_Y: readonly number[] = [\n 3.917e-06, 4.393581e-06, 4.929604e-06, 5.532136e-06, 6.208245e-06, 6.965e-06, 7.813219e-06, 8.767336e-06,\n 9.839844e-06, 1.104323e-05, 1.239e-05, 1.388641e-05, 1.555728e-05, 1.744296e-05, 1.958375e-05, 2.202e-05,\n 2.483965e-05, 2.804126e-05, 3.153104e-05, 3.521521e-05, 3.9e-05, 4.28264e-05, 4.69146e-05, 5.15896e-05,\n 5.71764e-05, 6.4e-05, 7.234421e-05, 8.221224e-05, 9.350816e-05, 0.0001061361, 0.00012, 0.000134984,\n 0.000151492, 0.000170208, 0.000191816, 0.000217, 0.0002469067, 0.00028124, 0.00031852, 0.0003572667,\n 0.000396, 0.0004337147, 0.000473024, 0.000517876, 0.0005722187, 0.00064, 0.00072456, 0.0008255,\n 0.00094116, 0.00106988, 0.00121, 0.001362091, 0.001530752, 0.001720368, 0.001935323, 0.00218,\n 0.0024548, 0.002764, 0.0031178, 0.0035264, 0.004, 0.00454624, 0.00515932, 0.00582928,\n 0.00654616, 0.0073, 0.008086507, 0.00890872, 0.00976768, 0.01066443, 0.0116, 0.01257317,\n 0.01358272, 0.01462968, 0.01571509, 0.01684, 0.01800736, 0.01921448, 0.02045392, 0.02171824,\n 0.023, 0.02429461, 0.02561024, 0.02695857, 0.02835125, 0.0298, 0.03131083, 0.03288368,\n 0.03452112, 0.03622571, 0.038, 0.03984667, 0.041768, 0.043766, 0.04584267, 0.048,\n 0.05024368, 0.05257304, 0.05498056, 0.05745872, 0.06, 0.06260197, 0.06527752, 0.06804208,\n 0.07091109, 0.0739, 0.077016, 0.0802664, 0.0836668, 0.0872328, 0.09098, 0.09491755,\n 0.09904584, 0.1033674, 0.1078846, 0.1126, 0.117532, 0.1226744, 0.1279928, 0.1334528,\n 0.13902, 0.1446764, 0.1504693, 0.1564619, 0.1627177, 0.1693, 0.1762431, 0.1835581,\n 0.1912735, 0.199418, 0.20802, 0.2171199, 0.2267345, 0.2368571, 0.2474812, 0.2586,\n 0.2701849, 0.2822939, 0.2950505, 0.308578, 0.323, 0.3384021, 0.3546858, 0.3716986,\n 0.3892875, 0.4073, 0.4256299, 0.4443096, 0.4633944, 0.4829395, 0.503, 0.5235693,\n 0.544512, 0.56569, 0.5869653, 0.6082, 0.6293456, 0.6503068, 0.6708752, 0.6908424,\n 0.71, 0.7281852, 0.7454636, 0.7619694, 0.7778368, 0.7932, 0.8081104, 0.8224962,\n 0.8363068, 0.8494916, 0.862, 0.8738108, 0.8849624, 0.8954936, 0.9054432, 0.9148501,\n 0.9237348, 0.9320924, 0.9399226, 0.9472252, 0.954, 0.9602561, 0.9660074, 0.9712606,\n 0.9760225, 0.9803, 0.9840924, 0.9874182, 0.9903128, 0.9928116, 0.9949501, 0.9967108,\n 0.9980983, 0.999112, 0.9997482, 1.0, 0.9998567, 0.9993046, 0.9983255, 0.9968987,\n 0.995, 0.9926005, 0.9897426, 0.9864444, 0.9827241, 0.9786, 0.9740837, 0.9691712,\n 0.9638568, 0.9581349, 0.952, 0.9454504, 0.9384992, 0.9311628, 0.9234576, 0.9154,\n 0.9070064, 0.8982772, 0.8892048, 0.8797816, 0.87, 0.8598613, 0.849392, 0.838622,\n 0.8275813, 0.8163, 0.8047947, 0.793082, 0.781192, 0.7691547, 0.757, 0.7447541,\n 0.7324224, 0.7200036, 0.7074965, 0.6949, 0.6822192, 0.6694716, 0.6566744, 0.6438448,\n 0.631, 0.6181555, 0.6053144, 0.5924756, 0.5796379, 0.5668, 0.5539611, 0.5411372,\n 0.5283528, 0.5156323, 0.503, 0.4904688, 0.4780304, 0.4656776, 0.4534032, 0.4412,\n 0.42908, 0.417036, 0.405032, 0.393032, 0.381, 0.3689184, 0.3568272, 0.3447768,\n 0.3328176, 0.321, 0.3093381, 0.2978504, 0.2865936, 0.2756245, 0.265, 0.2547632,\n 0.2448896, 0.2353344, 0.2260528, 0.217, 0.2081616, 0.1995488, 0.1911552, 0.1829744,\n 0.175, 0.1672235, 0.1596464, 0.1522776, 0.1451259, 0.1382, 0.1315003, 0.1250248,\n 0.1187792, 0.1127691, 0.107, 0.1014762, 0.09618864, 0.09112296, 0.08626485, 0.0816,\n 0.07712064, 0.07282552, 0.06871008, 0.06476976, 0.061, 0.05739621, 0.05395504, 0.05067376,\n 0.04754965, 0.04458, 0.04175872, 0.03908496, 0.03656384, 0.03420048, 0.032, 0.02996261,\n 0.02807664, 0.02632936, 0.02470805, 0.0232, 0.02180077, 0.02050112, 0.01928108, 0.01812069,\n 0.017, 0.01590379, 0.01483718, 0.01381068, 0.01283478, 0.01192, 0.01106831, 0.01027339,\n 0.009533311, 0.008846157, 0.00821, 0.007623781, 0.007085424, 0.006591476, 0.006138485, 0.005723,\n 0.005343059, 0.004995796, 0.004676404, 0.004380075, 0.004102, 0.003838453, 0.003589099, 0.003354219,\n 0.003134093, 0.002929, 0.002738139, 0.002559876, 0.002393244, 0.002237275, 0.002091, 0.001953587,\n 0.00182458, 0.00170358, 0.001590187, 0.001484, 0.001384496, 0.001291268, 0.001204092, 0.001122744,\n 0.001047, 0.0009765896, 0.0009111088, 0.0008501332, 0.0007932384, 0.00074, 0.0006900827, 0.00064331,\n 0.000599496, 0.0005584547, 0.00052, 0.0004839136, 0.0004500528, 0.0004183452, 0.0003887184, 0.0003611,\n 0.0003353835, 0.0003114404, 0.0002891656, 0.0002684539, 0.0002492, 0.0002313019, 0.0002146856, 0.0001992884,\n 0.0001850475, 0.0001719, 0.0001597781, 0.0001486044, 0.0001383016, 0.0001287925, 0.00012, 0.0001118595,\n 0.0001043224, 9.73356e-05, 9.084587e-05, 8.48e-05, 7.914667e-05, 7.3858e-05, 6.8916e-05, 6.430267e-05,\n 6e-05, 5.598187e-05, 5.22256e-05, 4.87184e-05, 4.544747e-05, 4.24e-05, 3.956104e-05, 3.691512e-05,\n 3.444868e-05, 3.214816e-05, 3e-05, 2.799125e-05, 2.611356e-05, 2.436024e-05, 2.272461e-05, 2.12e-05,\n 1.977855e-05, 1.845285e-05, 1.721687e-05, 1.606459e-05, 1.499e-05, 1.398728e-05, 1.305155e-05, 1.217818e-05,\n 1.136254e-05, 1.06e-05, 9.885877e-06, 9.217304e-06, 8.592362e-06, 8.009133e-06, 7.4657e-06, 6.959567e-06,\n 6.487995e-06, 6.048699e-06, 5.639396e-06, 5.2578e-06, 4.901771e-06, 4.56972e-06, 4.260194e-06, 3.971739e-06,\n 3.7029e-06, 3.452163e-06, 3.218302e-06, 3.0003e-06, 2.797139e-06, 2.6078e-06, 2.43122e-06, 2.266531e-06,\n 2.113013e-06, 1.969943e-06, 1.8366e-06, 1.71223e-06, 1.596228e-06, 1.48809e-06, 1.387314e-06, 1.2934e-06,\n 1.20582e-06, 1.124143e-06, 1.048009e-06, 9.77058e-07, 9.1093e-07, 8.49251e-07, 7.91721e-07, 7.3809e-07,\n 6.8811e-07, 6.4153e-07, 5.9809e-07, 5.57575e-07, 5.19808e-07, 4.84612e-07, 4.5181e-07,\n];\n\nexport const CMF_Z: readonly number[] = [\n 0.0006061, 0.0006808792, 0.0007651456, 0.0008600124, 0.0009665928, 0.001086, 0.001220586, 0.001372729,\n 0.001543579, 0.001734286, 0.001946, 0.002177777, 0.002435809, 0.002731953, 0.003078064, 0.003486,\n 0.003975227, 0.00454088, 0.00515832, 0.005802907, 0.006450001, 0.007083216, 0.007745488, 0.008501152,\n 0.009414544, 0.01054999, 0.0119658, 0.01365587, 0.01558805, 0.01773015, 0.02005001, 0.02251136,\n 0.02520288, 0.02827972, 0.03189704, 0.03621, 0.04143771, 0.04750372, 0.05411988, 0.06099803,\n 0.06785001, 0.07448632, 0.08136156, 0.08915364, 0.09854048, 0.1102, 0.1246133, 0.1417017,\n 0.1613035, 0.1832568, 0.2074, 0.2336921, 0.2626114, 0.2947746, 0.3307985, 0.3713,\n 0.4162091, 0.4654642, 0.5196948, 0.5795303, 0.6456, 0.7184838, 0.7967133, 0.8778459,\n 0.959439, 1.0390501, 1.1153673, 1.1884971, 1.2581233, 1.3239296, 1.3856, 1.4426352,\n 1.4948035, 1.5421903, 1.5848807, 1.62296, 1.6564048, 1.6852959, 1.7098745, 1.7303821,\n 1.74706, 1.7600446, 1.7696233, 1.7762637, 1.7804334, 1.7826, 1.7829682, 1.7816998,\n 1.7791982, 1.7758671, 1.77211, 1.7682589, 1.764039, 1.7589438, 1.7524663, 1.7441,\n 1.7335595, 1.7208581, 1.7059369, 1.6887372, 1.6692, 1.6475287, 1.6234127, 1.5960223,\n 1.564528, 1.5281, 1.4861114, 1.4395215, 1.3898799, 1.3387362, 1.28764, 1.2374223,\n 1.1878243, 1.1387611, 1.090148, 1.0419, 0.9941976, 0.9473473, 0.9014531, 0.8566193,\n 0.8129501, 0.7705173, 0.7294448, 0.6899136, 0.6521049, 0.6162, 0.5823286, 0.5504162,\n 0.5203376, 0.4919673, 0.46518, 0.4399246, 0.4161836, 0.3938822, 0.3729459, 0.3533,\n 0.3348578, 0.3175521, 0.3013375, 0.2861686, 0.272, 0.2588171, 0.2464838, 0.2347718,\n 0.2234533, 0.2123, 0.2011692, 0.1901196, 0.1792254, 0.1685608, 0.1582, 0.1481383,\n 0.1383758, 0.1289942, 0.1200751, 0.1117, 0.1039048, 0.09666748, 0.08998272, 0.08384531,\n 0.07824999, 0.07320899, 0.06867816, 0.06456784, 0.06078835, 0.05725001, 0.05390435, 0.05074664,\n 0.04775276, 0.04489859, 0.04216, 0.03950728, 0.03693564, 0.03445836, 0.03208872, 0.02984,\n 0.02771181, 0.02569444, 0.02378716, 0.02198925, 0.0203, 0.01871805, 0.01724036, 0.01586364,\n 0.01458461, 0.0134, 0.01230723, 0.01130188, 0.01037792, 0.009529306, 0.008749999, 0.0080352,\n 0.0073816, 0.0067854, 0.0062428, 0.005749999, 0.0053036, 0.0048998, 0.0045342, 0.0042024,\n 0.0039, 0.0036232, 0.0033706, 0.0031414, 0.0029348, 0.002749999, 0.0025852, 0.0024386,\n 0.0023094, 0.0021968, 0.0021, 0.002017733, 0.0019482, 0.0018898, 0.001840933, 0.0018,\n 0.001766267, 0.0017378, 0.0017112, 0.001683067, 0.001650001, 0.001610133, 0.0015644, 0.0015136,\n 0.001458533, 0.0014, 0.001336667, 0.00127, 0.001205, 0.001146667, 0.0011, 0.0010688,\n 0.0010494, 0.0010356, 0.0010212, 0.001, 0.00096864, 0.00092992, 0.00088688, 0.00084256,\n 0.0008, 0.00076096, 0.00072368, 0.00068592, 0.00064544, 0.0006, 0.0005478667, 0.0004916,\n 0.0004354, 0.0003834667, 0.00034, 0.0003072533, 0.00028316, 0.00026544, 0.0002518133, 0.00024,\n 0.0002295467, 0.00022064, 0.00021196, 0.0002021867, 0.00019, 0.0001742133, 0.00015564, 0.00013596,\n 0.0001168533, 0.0001, 8.613333e-05, 7.46e-05, 6.5e-05, 5.693333e-05, 4.999999e-05, 4.416e-05,\n 3.948e-05, 3.572e-05, 3.264e-05, 3e-05, 2.765333e-05, 2.556e-05, 2.364e-05, 2.181333e-05,\n 2e-05, 1.813333e-05, 1.62e-05, 1.42e-05, 1.213333e-05, 1e-05, 7.733333e-06, 5.4e-06,\n 3.2e-06, 1.333333e-06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n];\n\nexport const D65_START = 300;\nexport const D65_STEP = 5;\n\nexport const D65_VALUES: readonly number[] = [\n 0.0341, 1.6643, 3.2945, 11.7652, 20.236, 28.6447, 37.0535, 38.5011,\n 39.9488, 42.4302, 44.9117, 45.775, 46.6383, 49.3637, 52.0891, 51.0323,\n 49.9755, 52.3118, 54.6482, 68.7015, 82.7549, 87.1204, 91.486, 92.4589,\n 93.4318, 90.057, 86.6823, 95.7736, 104.865, 110.936, 117.008, 117.41,\n 117.812, 116.336, 114.861, 115.392, 115.923, 112.367, 108.811, 109.082,\n 109.354, 108.578, 107.802, 106.296, 104.79, 106.239, 107.689, 106.047,\n 104.405, 104.225, 104.046, 102.023, 100.0, 98.1671, 96.3342, 96.0611,\n 95.788, 92.2368, 88.6856, 89.3459, 90.0062, 89.8026, 89.5991, 88.6489,\n 87.6987, 85.4936, 83.2886, 83.4939, 83.6992, 81.863, 80.0268, 80.1207,\n 80.2146, 81.2462, 82.2778, 80.281, 78.2842, 74.0027, 69.7213, 70.6652,\n 71.6091, 72.979, 74.349, 67.9765, 61.604, 65.7448, 69.8856, 72.4863,\n 75.087, 69.3398, 63.5927, 55.0054, 46.4182, 56.6118, 66.8054, 65.0941,\n 63.3828,\n];\n\nexport const XYZ_TO_LINEAR_SRGB: Matrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.204, 1.057],\n];\n\nexport const LINEAR_SRGB_TO_XYZ: Matrix = [\n [0.412395588967, 0.357583430764, 0.180492647382],\n [0.212586230786, 0.715170303703, 0.0722004986433],\n [0.0192972154917, 0.119183864581, 0.950497125132],\n];\n\nexport const OKLAB_M1: Matrix = [\n [0.8189330101, 0.3618667424, -0.1288597137],\n [0.0329845436, 0.9293118715, 0.0361456387],\n [0.0482003018, 0.2643662691, 0.633851707],\n];\n\nexport const OKLAB_M1_INV: Matrix = [\n [1.2270138511, -0.557799980652, 0.281256148966],\n [-0.0405801784233, 1.11225686962, -0.0716766786656],\n [-0.0763812845057, -0.421481978418, 1.58616322044],\n];\n\nexport const OKLAB_M2: Matrix = [\n [0.2104542553, 0.793617785, -0.0040720468],\n [1.977998495, -2.428592205, 0.4505937099],\n [0.0259040371, 0.7827717662, -0.808675766],\n];\n\nexport const OKLAB_M2_INV: Matrix = [\n [0.999999998451, 0.396337792174, 0.215803758061],\n [1.00000000888, -0.105561342324, -0.0638541747717],\n [1.00000005467, -0.089484182095, -1.29148553786],\n];\n","import {\n CMF_START, CMF_STEP, CMF_X, CMF_Y, CMF_Z,\n D65_START, D65_STEP, D65_VALUES,\n XYZ_TO_LINEAR_SRGB, LINEAR_SRGB_TO_XYZ,\n OKLAB_M1, OKLAB_M1_INV, OKLAB_M2, OKLAB_M2_INV,\n type Matrix,\n} from './data.js';\n\n// ── Types ─────────────────────────────────────────────\n\n/** CIE XYZ tristimulus values. */\nexport type XYZ = [number, number, number];\n\n/** Red, green, blue. Linear or sRGB-encoded depending on the function; 0..1 when in gamut. */\nexport type RGB = [number, number, number];\n\n/** OKLab `[L, a, b]`: perceptual lightness 0..1 and two opponent axes. */\nexport type Oklab = [number, number, number];\n\n/**\n * A spectrum sampled on a uniform wavelength grid, in nanometres.\n * `values[i]` is the value at `start + i * step`.\n */\nexport interface Spectrum {\n readonly start: number;\n readonly step: number;\n readonly values: readonly number[];\n}\n\n/** Anything that gives a value per wavelength: a sampled spectrum, or a function of nm. */\nexport type SpectrumLike = Spectrum | ((nm: number) => number);\n\n/**\n * How a colour outside the sRGB gamut is brought inside it.\n *\n * - `'perceptual'` (the default) reduces OKLab chroma at constant lightness\n * and hue until it fits, so the colour keeps the hue a person sees.\n * - `'desaturate'` mixes toward the grey of the same luminance until no\n * channel is negative, then scales down if any exceeds 1. Keeps the\n * dominant wavelength, which is not the same as perceived hue: a deep\n * spectral red lands on the red-blue edge of the gamut and reads pink.\n * - `'clip'` clamps each channel to 0..1 independently. Cheap, shifts hue.\n * - `'none'` returns the values as they are, negatives and all.\n */\nexport type Gamut = 'perceptual' | 'desaturate' | 'clip' | 'none';\n\n/** The wavelength range of the CIE 1931 matching functions, and the default for sampling. */\nexport const CMF_RANGE = { start: CMF_START, end: CMF_START + CMF_STEP * (CMF_X.length - 1) } as const;\n\n// Radiation constants (CODATA 2018, exact in SI)\nconst H = 6.62607015e-34;\nconst C = 299792458;\nconst K = 1.380649e-23;\n\n// ── Spectra ───────────────────────────────────────────\n\n/** Builds a sampled spectrum, checking that the grid is usable. */\nexport function spectrum(start: number, step: number, values: readonly number[]): Spectrum {\n if (!(step > 0)) throw new RangeError(`spectrum step must be positive, got ${step}`);\n if (values.length === 0) throw new RangeError('spectrum needs at least one value');\n return { start, step, values: values.slice() };\n}\n\n/** Samples a function of wavelength onto a uniform grid, `end` included. */\nexport function sample(\n fn: (nm: number) => number,\n start: number = CMF_RANGE.start,\n end: number = CMF_RANGE.end,\n step = 1,\n): Spectrum {\n if (!(step > 0)) throw new RangeError(`sample step must be positive, got ${step}`);\n const n = Math.floor((end - start) / step + 1e-9) + 1;\n const values = Array.from({ length: n }, (_, i) => fn(start + i * step));\n return { start, step, values };\n}\n\n/** The value at a wavelength: linear interpolation between samples, zero outside the range. */\nexport function valueAt(s: SpectrumLike, nm: number): number {\n if (typeof s === 'function') return s(nm);\n const pos = (nm - s.start) / s.step;\n const last = s.values.length - 1;\n if (pos < 0 || pos > last + 1e-9) return 0;\n const i = Math.min(Math.floor(pos), last);\n if (i === last) return s.values[last]!;\n const f = pos - i;\n return s.values[i]! * (1 - f) + s.values[i + 1]! * f;\n}\n\n/** Multiplies spectra together on the grid of the first. Filters, reflectances and illuminants all compose this way. */\nexport function multiply(a: Spectrum, ...others: SpectrumLike[]): Spectrum {\n const values = a.values.map((v, i) => {\n const nm = a.start + i * a.step;\n let out = v;\n for (const o of others) out *= valueAt(o, nm);\n return out;\n });\n return { start: a.start, step: a.step, values };\n}\n\n/** Multiplies every sample by a constant. */\nexport function scale(s: Spectrum, k: number): Spectrum {\n return { start: s.start, step: s.step, values: s.values.map((v) => v * k) };\n}\n\n/** Scales a spectrum so its largest sample is 1. An all-zero spectrum is returned unchanged. */\nexport function normalize(s: Spectrum): Spectrum {\n const max = Math.max(...s.values);\n return max > 0 ? scale(s, 1 / max) : s;\n}\n\n// ── Physics ───────────────────────────────────────────\n\n/** Planck's law: spectral radiance of a blackbody, in W sr⁻¹ m⁻² nm⁻¹. */\nexport function planck(nm: number, kelvin: number): number {\n const lam = nm * 1e-9;\n const perMetre = (2 * H * C * C) / (lam ** 5 * Math.expm1((H * C) / (lam * K * kelvin)));\n return perMetre * 1e-9;\n}\n\n/** Wien's displacement law: the wavelength, in nm, at which a blackbody's spectral radiance peaks. */\nexport function wienPeak(kelvin: number): number {\n return 2.897771955e6 / kelvin;\n}\n\n/** A blackbody's relative spectrum, scaled to 1 at 560 nm (the CIE convention for illuminant A). */\nexport function blackbody(\n kelvin: number,\n start: number = CMF_RANGE.start,\n end: number = CMF_RANGE.end,\n step = 1,\n): Spectrum {\n const ref = planck(560, kelvin);\n return sample((nm) => planck(nm, kelvin) / ref, start, end, step);\n}\n\nlet d65Cache: Spectrum | null = null;\nlet aCache: Spectrum | null = null;\n\n/** CIE standard illuminant D65, average daylight: 300-780 nm at 5 nm, 100 at 560 nm. */\nexport function illuminantD65(): Spectrum {\n return (d65Cache ??= { start: D65_START, step: D65_STEP, values: D65_VALUES });\n}\n\n/**\n * CIE standard illuminant A, tungsten light, from the CIE's defining formula\n * (CIE 015:2018): 300-830 nm at 1 nm, 100 at 560 nm.\n */\nexport function illuminantA(): Spectrum {\n const c = 1.435e7 / 2848;\n return (aCache ??= sample(\n (nm) => 100 * (560 / nm) ** 5 * (Math.expm1(c / 560) / Math.expm1(c / nm)),\n 300, 830, 1,\n ));\n}\n\n/**\n * Transmission through a Rayleigh-scattering layer: exp(-τ (λ₀/λ)⁴), where τ\n * is the optical depth at the reference wavelength λ₀ (550 nm by default).\n * The clear-sky atmosphere at zenith is about τ = 0.1 at 550 nm.\n */\nexport function rayleigh(opticalDepth: number, referenceNm = 550): (nm: number) => number {\n return (nm) => Math.exp(-opticalDepth * (referenceNm / nm) ** 4);\n}\n\n// ── Colorimetry ───────────────────────────────────────\n\n/** The CIE 1931 2° colour-matching functions x̄, ȳ, z̄ at a wavelength. Interpolated; zero outside 360-830 nm. */\nexport function cmf(nm: number): XYZ {\n const pos = (nm - CMF_START) / CMF_STEP;\n const last = CMF_X.length - 1;\n if (pos < 0 || pos > last) return [0, 0, 0];\n const i = Math.min(Math.floor(pos), last - 1);\n const f = pos - i;\n return [\n CMF_X[i]! * (1 - f) + CMF_X[i + 1]! * f,\n CMF_Y[i]! * (1 - f) + CMF_Y[i + 1]! * f,\n CMF_Z[i]! * (1 - f) + CMF_Z[i + 1]! * f,\n ];\n}\n\nfunction integrate(s: SpectrumLike): XYZ {\n let x = 0, y = 0, z = 0;\n for (let i = 0; i < CMF_X.length; i++) {\n const v = valueAt(s, CMF_START + i * CMF_STEP);\n if (v === 0) continue;\n x += v * CMF_X[i]!;\n y += v * CMF_Y[i]!;\n z += v * CMF_Z[i]!;\n }\n return [x * CMF_STEP, y * CMF_STEP, z * CMF_STEP];\n}\n\n/**\n * CIE XYZ of a spectrum, integrated against the 1931 2° observer at 1 nm.\n *\n * With no illuminant, `s` is a light and the result is the raw integral, in\n * whatever units `s` carries times nm. With an illuminant, `s` is a\n * reflectance or transmittance (0..1) and the result is normalised so a\n * perfect reflector has Y = 1.\n */\nexport function toXYZ(s: SpectrumLike, opts: { illuminant?: SpectrumLike } = {}): XYZ {\n const { illuminant } = opts;\n if (!illuminant) return integrate(s);\n const lit = integrate((nm) => valueAt(s, nm) * valueAt(illuminant, nm));\n const white = integrate(illuminant)[1];\n if (!(white > 0)) throw new RangeError('illuminant has no luminance');\n return [lit[0] / white, lit[1] / white, lit[2] / white];\n}\n\n/** CIE xy chromaticity. Black returns the D65 white point rather than dividing by zero. */\nexport function chromaticity(xyz: XYZ): [number, number] {\n const sum = xyz[0] + xyz[1] + xyz[2];\n if (!(sum > 0)) return [0.3127, 0.329];\n return [xyz[0] / sum, xyz[1] / sum];\n}\n\n// ── OKLab ─────────────────────────────────────────────\n\ntype M3 = readonly [readonly [number, number, number], readonly [number, number, number], readonly [number, number, number]];\n\nfunction apply(m: Matrix, v: readonly number[]): [number, number, number] {\n const [r0, r1, r2] = m as M3;\n const [x, y, z] = v as [number, number, number];\n return [\n r0[0] * x + r0[1] * y + r0[2] * z,\n r1[0] * x + r1[1] * y + r1[2] * z,\n r2[0] * x + r2[1] * y + r2[2] * z,\n ];\n}\n\n/** CIE XYZ (D65, Y = 1 for white) to OKLab `[L, a, b]`. L runs 0 (black) to 1 (white). */\nexport function xyzToOklab(xyz: XYZ): Oklab {\n return apply(OKLAB_M2, apply(OKLAB_M1, xyz).map(Math.cbrt));\n}\n\n/** OKLab back to CIE XYZ. */\nexport function oklabToXyz(lab: Oklab): XYZ {\n return apply(OKLAB_M1_INV, apply(OKLAB_M2_INV, lab).map((v) => v * v * v));\n}\n\n/** Linear sRGB to OKLab. Works for out-of-gamut values, negatives included. */\nexport function linearSrgbToOklab(rgb: RGB): Oklab {\n return xyzToOklab(linearSrgbToXyz(rgb));\n}\n\n/** OKLab to linear sRGB. Out-of-gamut colours give channels outside 0..1. */\nexport function oklabToLinearSrgb(lab: Oklab): RGB {\n return xyzToLinearSrgb(oklabToXyz(lab));\n}\n\n// ── sRGB ──────────────────────────────────────────────\n\n/** XYZ (D65, Y = 1 for white) to linear sRGB. Out-of-gamut colours give channels outside 0..1. */\nexport function xyzToLinearSrgb(xyz: XYZ): RGB {\n return apply(XYZ_TO_LINEAR_SRGB, xyz);\n}\n\n/** Linear sRGB to XYZ (D65, Y = 1 for white). */\nexport function linearSrgbToXyz(rgb: RGB): XYZ {\n return apply(LINEAR_SRGB_TO_XYZ, rgb);\n}\n\n/** The sRGB transfer function, linear to encoded. */\nexport function encodeSrgb(v: number): number {\n return v <= 0.0031308 ? 12.92 * v : 1.055 * v ** (1 / 2.4) - 0.055;\n}\n\n/** The inverse sRGB transfer function, encoded to linear. */\nexport function decodeSrgb(v: number): number {\n return v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\n}\n\nconst EPS = 1e-9;\nconst inGamut = (rgb: RGB) => rgb.every((v) => v >= -EPS && v <= 1 + EPS);\nconst clamp01 = (rgb: RGB) => rgb.map((v) => Math.min(1, Math.max(0, v))) as RGB;\n\n/**\n * Reduces OKLab chroma at constant lightness and hue until the colour fits,\n * by bisection. Lightness at or beyond white is white, at or below black is\n * black. This is the approach of CSS Color 4's gamut mapping, without its\n * final clip-and-compare refinement.\n */\nfunction chromaReduce(lin: RGB): RGB {\n if (inGamut(lin)) return clamp01(lin);\n const [L, a, b] = linearSrgbToOklab(lin);\n if (L >= 1) return [1, 1, 1];\n if (L <= 0) return [0, 0, 0];\n const c = Math.hypot(a, b);\n const ca = a / c, cb = b / c;\n let lo = 0, hi = c;\n for (let i = 0; i < 40; i++) {\n const mid = (lo + hi) / 2;\n if (inGamut(oklabToLinearSrgb([L, mid * ca, mid * cb]))) lo = mid;\n else hi = mid;\n }\n return clamp01(oklabToLinearSrgb([L, lo * ca, lo * cb]));\n}\n\n/** OKLab hue of a linear sRGB colour, in radians on [0, 2π). */\nfunction hueOf(lin: RGB): number {\n const [, a, b] = linearSrgbToOklab(lin);\n const h = Math.atan2(b, a);\n return h < 0 ? h + 2 * Math.PI : h;\n}\n\n// The sRGB cube's six fully saturated corners, in hue order. Every colour\n// with one channel at 0 and one at 1 lies on the edges between them, and for\n// each hue the most chromatic sRGB colour (the cusp) is on one of these edges.\nconst CORNERS: readonly RGB[] = [[1, 0, 0], [1, 1, 0], [0, 1, 0], [0, 1, 1], [0, 0, 1], [1, 0, 1]];\nlet cornerHues: number[] | null = null;\n\n/** The most chromatic sRGB colour with this OKLab hue: linear, one channel 0, one channel 1. */\nfunction cusp(hue: number): RGB {\n // Red has the lowest OKLab hue of the six (29 degrees) and the rest rise in\n // order, so a hue below red's belongs to the magenta-to-red edge.\n const unwrapped = (cornerHues ??= CORNERS.map(hueOf));\n const target = hue < unwrapped[0]! ? hue + 2 * Math.PI : hue;\n let i = unwrapped.length - 1;\n for (let k = 0; k < unwrapped.length - 1; k++) {\n if (target < unwrapped[k + 1]!) { i = k; break; }\n }\n const from = CORNERS[i]!, to = CORNERS[(i + 1) % CORNERS.length]!;\n const h0 = unwrapped[i]!;\n const along = (t: number) => from.map((v, j) => v + (to[j]! - v) * t) as RGB;\n const hueAlong = (t: number) => {\n const h = hueOf(along(t));\n return h < h0 - 1e-9 ? h + 2 * Math.PI : h;\n };\n let lo = 0, hi = 1;\n for (let k = 0; k < 40; k++) {\n const mid = (lo + hi) / 2;\n if (hueAlong(mid) < target) lo = mid;\n else hi = mid;\n }\n return along((lo + hi) / 2);\n}\n\nfunction intoGamut(rgb: RGB, luminance: number, gamut: Gamut): RGB {\n if (gamut === 'none') return rgb;\n if (gamut === 'clip') return clamp01(rgb);\n if (gamut === 'perceptual') return chromaReduce(rgb);\n let out = rgb;\n const min = Math.min(...out);\n if (min < 0) {\n if (!(luminance > 0)) return [0, 0, 0];\n const k = luminance / (luminance - min);\n out = out.map((v) => luminance + (v - luminance) * k) as RGB;\n }\n const max = Math.max(...out);\n if (max > 1) out = out.map((v) => v / max) as RGB;\n return out.map((v) => Math.max(0, v)) as RGB;\n}\n\n/**\n * A colour at full brightness: in gamut, scaled so its brightest channel is 1.\n * Out of gamut under 'perceptual', the most chromatic sRGB colour of the same\n * OKLab hue. That is the limit of the in-gamut case at the gamut's edge, so\n * the two meet without a step.\n */\nfunction fullBrightness(lin: RGB, gamut: Gamut): RGB {\n let out: RGB;\n if (gamut === 'perceptual') out = Math.min(...lin) < -EPS ? cusp(hueOf(lin)) : lin.map((v) => Math.max(0, v)) as RGB;\n else out = intoGamut(lin, 1, gamut);\n // Callers pass a colour with Y = 1, so some channel is always positive.\n const max = Math.max(...out);\n return out.map((v) => v / max) as RGB;\n}\n\n/** XYZ (D65, Y = 1 for white) to encoded sRGB, brought into gamut as asked. */\nexport function xyzToSrgb(xyz: XYZ, opts: { gamut?: Gamut } = {}): RGB {\n const lin = intoGamut(xyzToLinearSrgb(xyz), xyz[1], opts.gamut ?? 'perceptual');\n return lin.map(encodeSrgb) as RGB;\n}\n\n/**\n * The colour of a light, at full brightness: its spectrum's chromaticity,\n * scaled so the brightest channel is 1, encoded sRGB. Absolute intensity is\n * discarded, so a dim light and a bright one of the same spectrum match.\n * A light outside sRGB becomes, under the default 'perceptual' mapping, the\n * most chromatic displayable colour of the same OKLab hue.\n * Black (no luminance) returns [0, 0, 0].\n */\nexport function lightColor(s: SpectrumLike, opts: { gamut?: Gamut } = {}): RGB {\n const xyz = integrate(s);\n if (!(xyz[1] > 0)) return [0, 0, 0];\n const unit: XYZ = [xyz[0] / xyz[1], 1, xyz[2] / xyz[1]];\n return fullBrightness(xyzToLinearSrgb(unit), opts.gamut ?? 'perceptual').map(encodeSrgb) as RGB;\n}\n\n/**\n * The colour of monochromatic light at a wavelength, as displayable sRGB.\n * Every spectral colour lies outside sRGB; the default 'perceptual' mapping\n * gives the most chromatic sRGB colour of the same OKLab hue. So the ends of\n * the spectrum are flat at full brightness, because 380-420 nm and 640-700 nm\n * each share one hue to the eye, and the blue-cyan stretch changes fast,\n * because hue does there. OKLab puts deep spectral red a few degrees toward\n * blue of the sRGB red primary, so it carries a little blue.\n *\n * `brightness: 'full'` (the default) gives every wavelength at full\n * brightness; `'luminous'` dims each by the eye's sensitivity ȳ(λ), so the\n * ends of the spectrum fade to black the way they do to the eye.\n * Zero outside 360-830 nm.\n */\nexport function wavelengthColor(\n nm: number,\n opts: { gamut?: Gamut; brightness?: 'full' | 'luminous' } = {},\n): RGB {\n const [x, y, z] = cmf(nm);\n if (!(y > 0)) return [0, 0, 0];\n let lin = fullBrightness(xyzToLinearSrgb([x / y, 1, z / y]), opts.gamut ?? 'perceptual');\n if (opts.brightness === 'luminous') lin = lin.map((v) => v * y) as RGB;\n return lin.map(encodeSrgb) as RGB;\n}\n\n// ── Output ────────────────────────────────────────────\n\n/** Encoded 0..1 channels to 0..255 integers, clamped. */\nexport function to8bit(rgb: RGB): [number, number, number] {\n return rgb.map((v) => Math.round(Math.min(1, Math.max(0, v)) * 255)) as [number, number, number];\n}\n\n/** Encoded 0..1 channels to a CSS colour string, `rgb(r,g,b)` or `rgba(r,g,b,a)`. */\nexport function toCss(rgb: RGB, alpha?: number): string {\n const [r, g, b] = to8bit(rgb);\n return alpha === undefined ? `rgb(${r},${g},${b})` : `rgba(${r},${g},${b},${alpha})`;\n}\n"],"mappings":"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IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACnC;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;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","names":[]}
|