<|start_filename|>data/LEGACY/LUT-GseriesJan20-2022.js<|end_filename|>
//APCA CONTRAST LOOKUP TABLE
// Copyright © 2022 by Myndex Research and <NAME>. All Rights Reserved


//Public Beta 0.1.2 (G) • January 20 2022
//                         Reference Font Weight
//Font
//Size	100	200	300	400	500	600	700	800	900
//pt	px	              APCA Contrast Value (Lc)



// For the following arrays, the Y axis is contrastArrayLen
// The two x axis are weightArrayLen and scoreArrayLen
// const contrastArrayD = [200,110,100,90,80,70,60,55,50,45,40,35,30,25,20,15,12,11,7,0,];

// Jan 16
const contrastArrayD = [200,105,100,95,90,85,80,75,70,65,60,55,50,45,40,38,36,34,32,30,25,20,15,0];
const contrastArrayLenG = contrastArrayD.length;

const weightArray = [0,100,200,300,400,500,600,700,800,900];
const weightArrayLen = weightArray.length;

const scoreArray = [0,1,2,3,4,5];
const scoreArrayLen = 6;


/*



/////  Font Table — FLUENT text and body text. Indexed by SIZE.

// Body text under 70 should have Lc 15 ADDED.
// 200-300: subtract 200. This indicates fluent text that should NOT be body text.
// 444 - this is for spot text, not fluent. Things like copyright or placeholder.
// 888 and 999: prohibited text

'px'	

//  */



lutG14xFontSize = [
['px'


///////////////////////////////////////////////////////////////////////////////

/////  Font Table — FLUENT text and body text. Indexed by Lc VALUE.

// Body text under 70 should have Lc 15 ADDED.
// 200-300: subtract 200. This indicates fluent text that should NOT be body text.
// 444 - this is for spot text, not fluent. Things like copyright or placeholder.
// 888 and 999: prohibited text

/*

'Lc’	
//  */


///////////////////////////////////////////////////////////////////////////////
///  By <NAME>

/*

'Lc∆’	


//  */


///////////////////////////////////////////////////////////////////////////////



// lutG14xLcValue = ['Lc',100,200,300,400,500,600,700,800,900],

// 999: prohibited too low contrast
// 888: replaced with 400s  Ok at previous minimum 
// 777: NON TEXT at this minimum weight stroke
// 5xx - minimum font at this weight for content, 5xx % 500 for font-size
// 4xx - minimum font at this weight for any purpose], 4xx % 400 for font-size


lutG14xLcValue = [
['Lc',


const fontMatrixG = [  ///   Jan 19 2022
[200,	436,	416,	412,	410,	410,	410,	410,	416,	418],
[105,	436,	416,	412,	410,	410,	410,	410,	416,	418],
[100,	436,	419,	415,	413,	412,	411,	410,	416,	418],
[95,	436,	421,	416,	414,	413,	412,	411,	416,	418],
[90,	36,	24,	18,	15,	14,	13,	12,	416,	418],
[85,	40,	27,	20,	16,	15,	13.5,	12.5,	416,	418],
[80,	48,	31,	22,	17,	16,	14.5,	13,	416,	418],
[75,	57,	36,	24,	18,	17,	15,	13.5,	416,	418],
[70,	66,	40,	27,	20,	18,	16,	14.5,	416,	418],
[65,	80,	50,	31,	22,	19.5,	17,	15.5,	416,	418],
[60,	96,	60,	36,	24,	21,	18,	16,	16,	18],
[55,	112,	72,	42,	28,	24,	20,	17,	18,	18],
[50,	777,	82,	49,	31,	26,	22,	19,	19,	19],
[45,	777,	92,	56,	34,	29,	24,	21,	20,	20],
[40,	777,	100,	62,	38,	32,	27,	24,	21,	21],
[38,	777,	112,	70,	42,	36,	30,	27,	24,	24],
[36,	777,	777,	78,	47,	40,	33,	31,	24,	24],
[34,	999,	777,	86,	52,	44,	37,	34,	24,	24],
[32,	999,	777,	96,	58,	49,	41,	38,	27,	27],
[30,	999,	777,	112,	68,	58,	48,	42,	40,	40],
[25,	999,	999,	777,	86,	70,	64,	60,	58,	58],
[20,	999,	999,	777,	108,	96,	90,	76,	76,	76],
[15,	999,	999,	777,	777,	777,	777,	96,	96,	96],
[10,	999,	999,	999,	999,	999,	999,	999,	999,	999],
[0,	999,	999,	999,	999,	999,	999,	999,	999,	999],
];




// lutG14xLcDelta = ['Lc∆',100,200,300,400,500,600,700,800,900],


lutG14xLcDelta = [
['Lc∆',

// Each delta row is the delta of that row to the next lower Lc value row.
// so row 100  3  is a delta of 3 between row 100 and row 95

const fontDeltaG = [ ///Jan 19 2022
[200,	0,	0,	0,	0,	0,	0,	0,	0,	0],
[105,	0,	0,	0,	0,	0,	0,	0,	0,	0],
[100,	0,	3,	3,	3,	2,	1,	0,	0,	0],
[95,	0,	2,	1,	1,	1,	1,	1,	0,	0],
[90,	0,	3,	2,	1,	1,	1,	1,	0,	0],
[85,	4,	3,	2,	1,	1,	0.5,	0.5,	0,	0],
[80,	8,	4,	2,	1,	1,	1,	0.5,	0,	0],
[75,	9,	5,	2,	1,	1,	0.5,	0.5,	0,	0],
[70,	9,	4,	3,	2,	1,	1,	1,	0,	0],
[65,	14,	10,	4,	2,	1.5,	1,	1,	0,	0],
[60,	16,	10,	5,	2,	1.5,	1,	0.5,	0,	0],
[55,	16,	12,	6,	4,	3,	2,	1,	2,	0],
[50,	0,	10,	7,	3,	2,	2,	2,	1,	1],
[45,	0,	10,	7,	3,	3,	2,	2,	1,	1],
[40,	0,	8,	6,	4,	3,	3,	3,	1,	1],
[38,	0,	12,	8,	4,	4,	3,	3,	3,	3],
[36,	0,	0,	8,	5,	4,	3,	4,	0,	0],
[34,	0,	0,	8,	5,	4,	4,	3,	0,	0],
[32,	0,	0,	10,	6,	5,	4,	4,	3,	3],
[30,	0,	0,	16,	10,	9,	7,	4,	13,	13],
[25,	0,	0,	0,	18,	12,	16,	18,	18,	18],
[20,	0,	0,	0,	22,	26,	26,	16,	18,	18],
[15,	0,	0,	0,	0,	0,	0,	20,	20,	20],
[10,	0,	0,	0,	0,	0,	0,	0,	0,	0],
[0,	0,	0,	0,	0,	0,	0,	0,	0,	0],
];




/////  MINIMUMS ARRAYS  ///////////////////////////////////////////////////

    // Minimum font size per score level and weight
    // Weight S 1 2 3 4 5 6 7 8 9
const fontMatrixGmin = [
    ['sc0',32,16,12,10,9,8,8,10,12,],  // score: hard fail level
    ['sc1',36,16,12,10,10,10,10,12,14,], // score 1
    ['sc2',36,16,12,10,10,10,10,16,18,], // score 2
    ['sc3',36,16,12,10,10,10,10,16,18,], // score 3
    ['sc4',36,16,12,10,10,10,10,16,18,], // score 4
    ['sc5',48,28,24,20,18,16,14,16,18,], // score 5
  ];

    // Minimum font size per use case and score level
    // Score M 1 2 3 4 5
const fontSizeGtype = [
    ['maxBody',24,24,24,24,24,],    // MAX body text (not zoomed)
    ['minBody',12,12,14,14,18,],    // Min body text 
    ['maxContent',120,108,96,96,72,], // MAX content text
    ['minContent',10,11,12,13,14,],   // Min content text
    ['maxAny',144,120,120,108,88,],    // MAX anytext
    ['minAny',9,10,11,12,13,],      // Min anytext (copyright etc)
  ];
  
    // Contrast minimums per master level and score level
    // score M 1 2 3 4 5
const fontScoreGmin = [         // CONTRAST LEVELS
    [90,95,95,95,95,90,],   // 0 MAX Large Headlines (> 48px & 500)
    [75,67.4,72.8,76.4,74.6,85.0,], // 1 Min Cols of Body Text (manually set)
    [60,47.4,52.8,56.4,59.6,75.0,], // 2 Min Content Text 
    [45,34.4,36.8,38.4,44.8,55.0,], // 3 Min Large content text
    [30,18.0,19.0,20.0,30.0,45.0,], // 4 Min Any text, large icons (manual)
    [15,15,15,15.0,15.0,22.0,], // 5 Min for all (manually set)
  ];

const minScoreG = fontScoreGmin[5][1]; // Hard minimum contrast, all levels.
const nonTextScoreG = fontScoreGmin[4][4];

let scoreLevel = 0;

let scoreIndex = [0,1,2,3,4,5]; // holds score position

  // holds the calculated minimum font sizes per level
let interpolatedFonts = [ 
    [0,0,0,0,0,0,0,0,0,0,],
    [1,0,0,0,0,0,0,0,0,0,],
    [2,0,0,0,0,0,0,0,0,0,],
    [3,0,0,0,0,0,0,0,0,0,],
    [4,0,0,0,0,0,0,0,0,0,],
    [5,0,0,0,0,0,0,0,0,0,],
  ];
  



<|start_filename|>src/JS/SAPC_0_98G_4g_minimal.js<|end_filename|>
///////////////////////////////////////////////////////////////////////////////
/////
/////    SAPC APCA - Accessible Perceptual Contrast Algorithm
/////           Beta 0.0.98G-4g • contrast function only
/////           DIST: GH SE Revision date: Oct 1, 2021
/////    Function to parse color values and determine Lc contrast
/////    Copyright © 2019-2021 by <NAME>. All Rights Reserved.
/////    LICENSE: Non-Commercial, Limited Use, beta versions are revocable
/////    CONTACT: For SAPC/APCA Please use the ISSUES tab at:
/////    https://github.com/Myndex/SAPC-APCA/
/////
///////////////////////////////////////////////////////////////////////////////
/////
/////    USAGE:
/////        Use sRGBtoY(color) to convert sRGB to Luminance (Y)
/////        Then send Y-text and Y-background to APCAcontrast(Text, BG)
/////
/////    Lc = APCAcontrast( sRGBtoY(TEXTcolor) , sRGBtoY(BACKGNDcolor) );
/////
/////    Live Demonstrator at https://www.myndex.com/APCA/
/////
///////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
/////
/////                      SAPC Method and APCA Algorithm
/////
/////   GITHUB: https://github.com/Myndex/SAPC-APCA
/////   DEVELOPER SITE: https://www.myndex.com/WEB/Perception
/////
/////   Acknowledgments and Thanks To:
/////   • This project references the research and work of Dr.Lovie-Kitchin, 
/////     Dr.Legge, Dr.Arditi, M.Fairchild, R.Hunt, M.Stone, Dr.Poynton, 
/////     L.Arend, M.Luo, E.Burns, R.Blackwell, P.Barton, M.Brettel, and many 
/////     others — see refs at https://www.myndex.com/WEB/WCAG_CE17polarity
/////   • <NAME> of USAccessBoard for his encouragement, ideas, & feedback
/////   • <NAME> of W3 for his early and continued comments & feedback.
/////   • <NAME>iselle of Oracle for getting us back on track in a pandemic
/////   • The many volunteer test subjects for participating in the studies.
/////   • Principal research conducted at Myndex by A.Somers.
/////
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
/////
/////   *****  SAPC BLOCK  *****
/////
/////   For Evaluations, refer to this as: SAPC-8, v0.0.98 G-series constant 4g
/////            SAPC • S-LUV Advanced Predictive Color
/////
/////   SIMPLE VERSION — Only the basic APCA contrast predictor.
/////
/////   Included Extensions & Model Features in this file:
/////       • SAPC-8 Core Contrast (Base APCA) 
/////       • G series constants, group "G-4g" using a 2.4 monitor exponent
/////       • sRGB to Y, parses numeric sRGB color to luminance
/////       • SmoothScale™ scaling technique (non-clinical use only)
/////       • SoftToe black level soft clamp and flare compensation.
/////
/////
////////////////////////////////////////////////////////////////////////////////
/////
/////               DISCLAIMER AND LIMITATIONS OF USE
/////     APCA is an embodiment of certain suprathreshold contrast
/////     prediction technologies and it is licensed to the W3 on a
/////     limited basis for use in certain specific accessibility
/////     guidelines for web content only. APCA may be used for 
/////     predicting colors for web content use without royalty.
/////
/////     However, Any such license excludes other use cases
/////     not related to web content. Prohibited uses include
/////     medical, clinical evaluation, human safety related,
/////     aerospace, transportation, military applications, 
/////     and uses which are not specific to web based content
/////     presented on self-illuminated displays or devices.
/////
////////////////////////////////////////////////////////////////////////////////

//////////   APCA 0.0.98 G USAGE  //////////////////////////////////////////////
///
///  The API for "APCA_0_0_98G_4g_minimal" is trivially simple.
///  Send text and background sRGB numeric values to the sRGBtoY() function,
///  and send the resulting text-Y and background-Y to the APCAcontrast function,
///  it returns a signed float with the numeric Lc contrast result.
///  
///  The two inputs are TEXT color and BACKGROUND color in that order.
///  Each must be a numeric NOT a string, as this simple version has
///  no string parsing utilities. EXAMPLE:
///  ________________________________________________________________________
///
///     txtColor = 0x123456; // color of the text, as will be rendered
///     bgColor  = 0xabcdef; // color for the background, as will be rendered
///
///     contrastLc = APCAcontrast( sRGBtoY(txtColor) , sRGBtoY(bgColor) );
///  ________________________________________________________________________
///
///                  **********   QUICK START   **********
///
///  Each color must be a 24bit color (8 bit per channel) as a single integer
///  (or 0x) sRGB encoded color, i.e. White is either the integer 16777216 or
///  the hex 0xffffff. A float is returned with a positive or negative value.
///  Negative values mean light text and a dark background, positive values
///  mean dark text and a light background. 60.0, or -60.0 is a contrast
///  "sort of like" the old WCAG 2's 4.5:1. NOTE: the total range is now less
///  than ± 110, so output can be rounded to a signed INT but DO NOT output
///  an absolute value - light text on dark BG should return a negative number.
///
///     *****  IMPORTANT: Do Not Mix Up Text and Background inputs.  *****
///     ****************   APCA is polarity dependent!   *****************
///  
//////////   APCA 0.0.98 G - 4g Constants   ////////////////////////////////////

const mainTRC = 2.4; // 2.4 exponent emulates actual monitor perception
    
const sRco = 0.2126729, 
      sGco = 0.7151522, 
      sBco = 0.0721750; // sRGB coefficients

const normBG = 0.56, 
      normTXT = 0.57,
      revTXT = 0.62,
      revBG = 0.65;  // G-4g constants for use with 2.4 exponent

const blkThrs = 0.022,
      blkClmp = 1.414, 
      scaleBoW = 1.14,
      scaleWoB = 1.14,
      loBoWthresh = loWoBthresh = 0.035991,
      loBoWfactor = loWoBfactor = 27.7847239587675,
      loBoWoffset = loWoBoffset = 0.027,
      loClip = 0.001,
      deltaYmin = 0.0005;

//////////  ƒ sRGBtoY()  ///////////////////////////////////////////////////////

function sRGBtoY (sRGBcolor) {
                  // send 8 bit-per-channel integer sRGB (0xFFFFFF)

  let r = (sRGBcolor & 0xFF0000) >> 16,
      g = (sRGBcolor & 0x00FF00) >> 8,
      b = (sRGBcolor & 0x0000FF);
    
  function simpleExp (chan) { return Math.pow(chan/255.0, mainTRC); }
 
		 // linearize r, g, or b then apply coefficients
		// and sum then return the resulting luminance
    
   return sRco * simpleExp(r) + sGco * simpleExp(g) + sBco * simpleExp(b);
}


//////////  ƒ APCAcontrast()  //////////////////////////////////////////////////

function APCAcontrast (txtY,bgY) {
                         // send linear Y (luminance) for text and background.
                        // IMPORTANT: Do not swap, polarity is important.
        
  var SAPC = 0.0;            // For raw SAPC values
  var outputContrast = 0.0; // For weighted final values
  
  // TUTORIAL
  
  // Use Y for text and BG, and soft clamp black,
  // return 0 for very close luminances, determine
  // polarity, and calculate SAPC raw contrast
  // Then scale for easy to remember levels.

  // Note that reverse contrast (white text on black)
  // intentionally returns a negative number
  // Proper polarity is important!

//////////   BLACK SOFT CLAMP   /////////////////////////////////////////

          // Soft clamps Y for either color if it is near black.
  txtY = (txtY > blkThrs) ? txtY :
                            txtY + Math.pow(blkThrs - txtY, blkClmp);
  bgY = (bgY > blkThrs) ? bgY :
                          bgY + Math.pow(blkThrs - bgY, blkClmp);

       ///// Return 0 Early for extremely low ∆Y
  if ( Math.abs(bgY - txtY) < deltaYmin ) { return 0.0; }


//////////   APCA/SAPC CONTRAST   ///////////////////////////////////////

  if ( bgY > txtY ) {  // For normal polarity, black text on white (BoW)

           // Calculate the SAPC contrast value and scale
      
    SAPC = ( Math.pow(bgY, normBG) - Math.pow(txtY, normTXT) ) * scaleBoW;

            // Low Contrast smooth rollout to prevent polarity reversal
           // and also a low-clip for very low contrasts
    outputContrast = (SAPC < loClip) ? 0.0 :
                     (SAPC < loBoWthresh) ?
                      SAPC - SAPC * loBoWfactor * loBoWoffset :
                      SAPC - loBoWoffset;

  } else {  // For reverse polarity, light text on dark (WoB)
           // WoB should always return negative value.

    SAPC = ( Math.pow(bgY, revBG) - Math.pow(txtY, revTXT) ) * scaleWoB;

    outputContrast = (SAPC > -loClip) ? 0.0 :
                     (SAPC > -loWoBthresh) ?
                      SAPC - SAPC * loWoBfactor * loWoBoffset :
                      SAPC + loWoBoffset;
  }

         // return Lc (lightness contrast) as a signed numeric value 
        // It is permissible to round to the nearest whole number.
       
  return  outputContrast * 100.0;
  
} // End APCAcontrast()

////\                             //////////////////////////////////////////////
/////\  END 0.98G4g APCA BLOCK   //////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////


<|start_filename|>data/LEGACY/LUT-GseriesJan31-2022.js<|end_filename|>
// APCA CONTRAST FONT LOOKUP TABLES
// Copyright © 2022 by Myndex Research and <NAME>. All Rights Reserved


// Public Beta 0.1.5 (G) • January 31 2022


// Reference Font Weight
// Font
// Size	100	200	300	400	500	600	700	800	900
// pt	px		APCA Contrast Value (Lc)

// Jan 31
const contrastArrayG = [200,120,105,100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,0,];
const contrastArrayLenG = contrastArrayG.length;

const weightArray = [0,100,200,300,400,500,600,700,800,900];
const weightArrayLen = weightArray.length;

const scoreArray = [0,1,2,3,4,5];
const scoreArrayLen = 6;


/*
/////  Font Table — FLUENT text and body text. Indexed by SIZE.

// Lc values under 70 should have Lc 15 ADDED if used for body text
// All font sizes are in px and reference font is Barlow
// Special font size values:
// 200-300: subtract 200. This indicates fluent text that should NOT be body text.
// 444 - this is for spot text, not fluent. Things like copyright or placeholder.
// 888 and 999: prohibited text


'px'	


MAIN FONT LOOKUP Jan 27 2022 Sorted by Font Size									
									
									
px	100	200	300	400	500	600	700	800	900
10	⊘	⊘	⊘	⊘	⊘	⊘	⊘	⊘	⊘
12	⊘	⊘	⊘	©§™	©§™	©§™	©§™	⊘	⊘
14	⊘	⊘	©§™	95	90	85	75	⊘	⊘
15	⊘	⊘	©§™	90	85	75	70	⊘	⊘
16	⊘	⊘	©§™	85	80	70	60	55	⊘
17	⊘	⊘	©§™	80	75	65	55	50	45
18	⊘	©§™	95	75	70	60	50	45	40
21	⊘	©§™	90	70	60	50	45	40	35
24	⊘	©§™	75	60	55	45	40	40	35
28	⊘	95	70	55	50	40	40	35	35
32	⊘	85	65	50	45	40	35	35	30
36	⊘	75	60	45	40	35	35	30	30
48	95	60	50	40	35	35	30	30	30
60	75	50	45	40	35	30	30	30	30
72	65	45	40	35	30	30	30	30	30
96	50	40	35	30	30	30	30	30	30


MAIN FONT DELTA PRECALC Jan 27 2022 Sorted by Font Size


px	100	200	300	400	500	600	700	800	900
10	0	0	0	0	0	0	0	0	0
12	0	0	0	0	0	0	0	0	0
14	0	0	0	5	5	10	5	0	0
15	0	0	0	5	5	5	10	0	0
16	0	0	0	5	5	5	5	5	0
17	0	0	0	5	5	5	5	5	5
18	0	0	5	5	10	10	5	5	5
21	0	0	15	10	5	5	5	0	0
24	0	0	5	5	5	5	0	5	0
28	0	10	5	5	5	0	5	0	5
32	0	10	5	5	5	5	0	5	0
36	0	15	10	5	5	0	5	0	0
48	20	10	5	0	0	5	0	0	0
60	10	5	5	5	5	0	0	0	0
72	15	5	5	5	0	0	0	0	0
96	0	0	0	0	0	0	0	0	0
									



//  */



///////////////////////////////////////////////////////////////////////////////

/////  Font Table — FLUENT text and body text. Indexed by Lc VALUE.

// Lc values under 70 should have Lc 15 ADDED if used for body text
// All font sizes are in px and reference font is Barlow
// Special font size values:
// 200-300: subtract 200. This indicates fluent text that should NOT be body text.
// 444 - this is for spot text, not fluent. Things like copyright or placeholder.
// 888 and 999: prohibited text


/*

// MAIN FONT LOOKUP Jan 31 2022  Sorted by Lc Value
									
'Lc'	100	200	300	400	500	600	700	800	900
105	45	27	17	13.5	13.5	13.5	13.5	416	418
100	46.5	28	18	14	414	414	414	416	418
95	48.5	29	20.5	14.5	14	414	414	416	418
90	50	30	21	15	14.5	414	414	416	418
85	53.5	32	22	16	15	14	414	416	418
80	56.5	34	23	17	16	14.5	414	416	418
75	60	36	24	18	17	15	14	416	418
70	65	39	27.5	19.5	18	16	14.5	416	418
65	71.5	43	30.5	21.5	19.5	17	15	416	418
60	80	48	34	24	21	18	16	416	418
55	86.5	52	37	26	22	19.5	17	16	418
50	96.5	58	41	29	25	20	18	17	418
45	120	72	51	36	28	24	20	18	418
40	777	96	68	48	34	29	24	20	18
35	777	120	93.5	66	46.5	40	33	26.5	20
30	999	777	120	96	68	58	48	38.5	29
25	999	777	777	120	102	87	72	57.5	43
20	999	777	777	777	120	120	110	88	66
15	999	999	777	777	777	777	120	120	120
10	999	999	999	999	999	999	777	777	777
0	999	999	999	999	999	999	999	999	999



//  */


///////////////////////////////////////////////////////////////////////////////
///  By Lc <NAME>

/*
// Each delta row is the delta of that row to the next HIGHER Lc value row.
// so row 100  3  is a delta of 3 between row 100 and row 105

// MAIN FONT DELTA PRECALC Jan 31 2022 Sorted by Lc  rows higher

									
'∆'	100	200	300	400	500	600	700	800	900
105	0	0	0	0	0	0	0	0	0
100	1.5	1	1	0.5	0	0	0	0	0
95	2	1	2.5	0.5	0	0	0	0	0
90	1.5	1	0.5	0.5	0	0	0	0	0
85	3.5	2	1	1	0.5	0	0	0	0
80	3	2	1	1	1	0.5	0	0	0
75	3.5	2	1	1	1	0.5	0	0	0
70	5	3	3.5	1.5	1	1	0.5	0	0
65	6.5	4	3	2	1.5	1	0.5	0	0
60	8.5	5	3.5	2.5	1.5	1	1	0	0
55	6.5	4	3	2	1	1.5	1	0	0
50	10	6	4	3	3	0.5	1	1	0
45	23.5	14	10	7	3	4	2	1	0
40	0	24	17	12	6	5	4	2	0
35	0	24	25.5	18	12.5	11	9	6.5	2
30	0	0	26.5	30	21.5	18	15	12	9
25	0	0	0	24	34	29	24	19	14
20	0	0	0	0	18	33	38	30.5	23
15	0	0	0	0	0	0	10	32	54
10	0	0	0	0	0	0	0	0	0
0	0	0	0	0	0	0	0	0	0

// */
///////////////////////////////////////////////////////////////////////////////

// lutG18xLcValue = ['Lc',100,200,300,400,500,600,700,800,900],


// Lc values under 70 should have Lc 15 ADDED if used for body text
// All font sizes are in px and reference font is Barlow
// Special font size values:
// 4xx - minimum font at this weight for any purpose], 4xx % 400 for font-size
// 5xx - minimum font at this weight for content, 5xx % 500 for font-size
// 666 - this is for spot text, not fluent. Things like copyright or placeholder.
// 777: NON TEXT ONLY at this minimum weight stroke
// 888 and 999: prohibited text



// MAIN FONT LOOKUP Jan 31 2022  Sorted by Lc Value

const fontMatrixG = [  //  Jan 31 2022
['Lc',100,200,300,400,500,600,700,800,900],
[120,445,427,417,413.5,413.5,413.5,413.5,416,418],
[105,445,427,417,413.5,413.5,413.5,413.5,416,418],
[100,46.5,28,18,14,414,414,414,416,418],
[95,48.5,29,20.5,14.5,14,414,414,416,418],
[90,50,30,21,15,14.5,414,414,416,418],
[85,53.5,32,22,16,15,14,414,416,418],
[80,56.5,34,23,17,16,14.5,414,416,418],
[75,60,36,24,18,17,15,14,416,418],
[70,65,39,27.5,19.5,18,16,14.5,416,418],
[65,71.5,43,30.5,21.5,19.5,17,15,416,418],
[60,80,48,34,24,21,18,16,416,418],
[55,86.5,52,37,26,22,19.5,17,16,418],
[50,96.5,58,41,29,25,20,18,17,418],
[45,120,72,51,36,28,24,20,18,418],
[40,777,96,68,48,34,29,24,20,18],
[35,777,120,93.5,66,46.5,40,33,26.5,20],
[30,999,777,120,96,68,58,48,38.5,29],
[25,999,777,777,120,102,87,72,57.5,43],
[20,999,777,777,777,120,120,110,88,66],
[15,999,999,777,777,777,777,120,120,120],
[10,999,999,999,999,999,999,777,777,777],
[0,999,999,999,999,999,999,999,999,999],
];




// G G G G G G UPDATED JAN 31 2022 
// interpolation G  
// FW 100 200 300 400 500 600 700 800 900
  
// lutG14xLcDelta = ['Lc∆',100,200,300,400,500,600,700,800,900],

// MAIN FONT DELTA PRECALC Jan 31 2022 Sorted by Lc  rows higher  Jan 31 2022

const fontDeltaG = [ // rows ABOVE Jan 31 2022
['Lc∆h',100,200,300,400,500,600,700,800,900,],
[120,0,0,0,0,0,0,0,0,0,],
[105,0,0,0,0,0,0,0,0,0,],
[100,1.5,1,1,0.5,0.5,0.5,0.5,0,0,],
[95,2,1,2.5,0.5,0,0,0,0,0,],
[90,1.5,1,0.5,0.5,0,0,0,0,0,],
[85,3.5,2,1,1,0.5,0,0,0,0,],
[80,3,2,1,1,1,0.5,0,0,0,],
[75,3.5,2,1,1,1,0.5,0,0,0,],
[70,5,3,3.5,1.5,1,1,0.5,0,0,],
[65,6.5,4,3,2,1.5,1,0.5,0,0,],
[60,8.5,5,3.5,2.5,1.5,1,1,0,0,],
[55,6.5,4,3,2,1,1.5,1,0,0,],
[50,10,6,4,3,3,0.5,1,1,0,],
[45,23.5,14,10,7,3,4,2,1,0,],
[40,0,24,17,12,6,5,4,2,0,],
[35,0,24,25.5,18,12.5,11,9,6.5,2,],
[30,0,0,26.5,30,21.5,18,15,12,9,],
[25,0,0,0,24,34,29,24,19,14,],
[20,0,0,0,0,18,33,38,30.5,23,],
[15,0,0,0,0,0,0,10,32,54,],
[10,0,0,0,0,0,0,0,0,0,],
[0,0,0,0,0,0,0,0,0,0,],
];



////////////////////////////////////////////////////////////////////////////
/////  MINIMUMS ARRAYS  ///////////////////////////////////////////////////

    // Minimum font size per score level and weight
    // Weight S 1 2 3 4 5 6 7 8 9
const fontMatrixGmin = [
    ['sc0',32,16,12,10,9,8,8,10,12,],  // score: hard fail level
    ['sc1',36,16,12,10,10,10,10,12,14,], // score 1
    ['sc2',36,16,12,10,10,10,10,16,18,], // score 2
    ['sc3',36,16,12,11,11,11,11,16,18,], // score 3
    ['sc4',36,16,12,12,12,12,12,16,18,], // score 4
    ['sc5',48,28,24,20,18,16,15,16,18,], // score 5
  ];

    // Minimum font size per use case and score level
    // Score M 1 2 3 4 5
const fontSizeGtype = [
    ['maxBody',24,24,24,24,24,],    // MAX body text (not zoomed)
    ['minBody',12,12,14,14,18,],    // Min body text 
    ['maxContent',120,108,96,92,72,], // MAX content text
    ['minContent',10,11,12,13,14,],   // Min content text
    ['maxAny',144,120,120,108,96,],    // MAX anytext
    ['minAny',9,10,11,12,13,],      // Min anytext (copyright etc)
  ];
  
    // Contrast minimums per master level and score level
    // score M 1 2 3 4 5
const fontScoreGmin = [         // CONTRAST LEVELS
    [90,95,95,92,90,85,],   // 0 MAX Large Headlines (> 48px & 500)
    [75,68.4,71.8,73.4,74.6,90.0,], // 1 Min Cols of Body Text (manually set)
    [60,47.4,52.8,56.4,59.6,75.0,], // 2 Min Content Text 
    [45,33.4,34.8,37.4,44.8,50.0,], // 3 Min Large content text
    [30,22.0,24.0,27.0,30.0,45.0,], // 4 Min Any text, large icons (manual)
    [15,15,15,16.0,16.0,22.0,], // 5 Min for all (manually set)
  ];

const minScoreG = fontScoreGmin[5][1]; // Hard minimum contrast, all levels.
const nonTextScoreG = fontScoreGmin[4][4];

let scoreLevel = 0;

let scoreIndex = [0,1,2,3,4,5]; // holds score position

  // holds the calculated minimum font sizes per level
let interpolatedFonts = [ 
    [0,0,0,0,0,0,0,0,0,0,],
    [1,0,0,0,0,0,0,0,0,0,],
    [2,0,0,0,0,0,0,0,0,0,],
    [3,0,0,0,0,0,0,0,0,0,],
    [4,0,0,0,0,0,0,0,0,0,],
    [5,0,0,0,0,0,0,0,0,0,],
  ];
  



<|start_filename|>data/LEGACY/LUT-GseriesApr23-2022.js<|end_filename|>
// APCA CONTRAST FONT LOOKUP TABLES
// Copyright © 2022 by Myndex Research and <NAME>. All Rights Reserved

// Public Beta 0.1.5b (G) • APRIL 23 2022 (minor cleanup)

// For the following arrays, the Y axis is contrastArrayLen
// The two x axis are weightArrayLen and scoreArrayLen

// Jan 31 2022
const contrastArrayG = [200,120,105,100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,0,];
const contrastArrayLenG = contrastArrayG.length; // Y azis

    // APRIL 23  2022
    const contrastArrayAscend = ['lc',0,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,120,];
    const contrastArrayLenAsc = contrastArrayAscend.length; // Y azis


const weightArray = [0,100,200,300,400,500,600,700,800,900];
const weightArrayLen = weightArray.length; // X axis



///////////////////////////////////////////////////////////////////////////////

/////  CONTRAST * FONT WEIGHT & SIZE  //////////////////////////////////////

// Font size interpolations. Here the chart was re-ordered to put
// the main contrast levels each on one line, instead of font size per line.
// First column is LC value, then each following column is font size by weight

// G G G G G G  UPDATED JAN 31 2022 
// ADJUSTED FOR G Interpolation 

// Lc values under 70 should have Lc 15 ADDED if used for body text
// All font sizes are in px and reference font is Barlow

// 999: prohibited - too low contrast
// 777: NON TEXT at this minimum weight stroke
// 666 - this is for spot text, not fluent. Things like copyright or placeholder.
// 5xx - minimum font at this weight for content, 5xx % 500 for font-size
// 4xx - minimum font at this weight for any purpose], 4xx % 400 for font-size

// MAIN FONT SIZE LOOKUP Jan 31 2022  Sorted by Lc Value

const fontMatrixG = [  //  Jan 31 2022
['Lc',100,200,300,400,500,600,700,800,900],
[120,445,427,417,413.5,413.5,413.5,413.5,416,418],
[105,445,427,417,413.5,413.5,413.5,413.5,416,418],
[100,46.5,28,18,14,414,414,414,416,418],
[95,48.5,29,20.5,14.5,14,414,414,416,418],
[90,50,30,21,15,14.5,414,414,416,418],
[85,53.5,32,22,16,15,14,414,416,418],
[80,56.5,34,23,17,16,14.5,414,416,418],
[75,60,36,24,18,17,15,14,416,418],
[70,65,39,27.5,19.5,18,16,14.5,416,418],
[65,71.5,43,30.5,21.5,19.5,17,15,416,418],
[60,80,48,34,24,21,18,16,416,418],
[55,86.5,52,37,26,22,19.5,17,16,418],
[50,96.5,58,41,29,25,20,18,17,418],
[45,120,72,51,36,28,24,20,18,418],
[40,777,96,68,48,34,29,24,20,18],
[35,777,120,93.5,66,46.5,40,33,26.5,20],
[30,999,777,120,96,68,58,48,38.5,29],
[25,999,777,777,120,102,87,72,57.5,43],
[20,999,777,777,777,120,120,110,88,66],
[15,999,999,777,777,777,777,120,120,120],
[10,999,999,999,999,999,999,777,777,777],
[0,999,999,999,999,999,999,999,999,999],
];


// G G G G G G UPDATED JAN 31 2022 
// interpolation G  
  
// MAIN FONT SIZE DELTA PRECALC Jan 31 2022 Sorted by Lc rows higher Jan 31 2022

const fontDeltaG = [ // rows ABOVE Jan 31 2022
['Lc∆h',100,200,300,400,500,600,700,800,900,],
[120,0,0,0,0,0,0,0,0,0,],
[105,0,0,0,0,0,0,0,0,0,],
[100,1.5,1,1,0.5,0.5,0.5,0.5,0,0,],
[95,2,1,2.5,0.5,0,0,0,0,0,],
[90,1.5,1,0.5,0.5,0,0,0,0,0,],
[85,3.5,2,1,1,0.5,0,0,0,0,],
[80,3,2,1,1,1,0.5,0,0,0,],
[75,3.5,2,1,1,1,0.5,0,0,0,],
[70,5,3,3.5,1.5,1,1,0.5,0,0,],
[65,6.5,4,3,2,1.5,1,0.5,0,0,],
[60,8.5,5,3.5,2.5,1.5,1,1,0,0,],
[55,6.5,4,3,2,1,1.5,1,0,0,],
[50,10,6,4,3,3,0.5,1,1,0,],
[45,23.5,14,10,7,3,4,2,1,0,],
[40,0,24,17,12,6,5,4,2,0,],
[35,0,24,25.5,18,12.5,11,9,6.5,2,],
[30,0,0,26.5,30,21.5,18,15,12,9,],
[25,0,0,0,24,34,29,24,19,14,],
[20,0,0,0,0,18,33,38,30.5,23,],
[15,0,0,0,0,0,0,10,32,54,],
[10,0,0,0,0,0,0,0,0,0,],
[0,0,0,0,0,0,0,0,0,0,],
];




    // MAIN FONT SIZE LOOKUP Jan 31 2022  Sorted by Lc Value

//// ASCENDING SORTED  APRIL 23 2022 ////

    const fontMatrixAscend = [  //  Jan 31 2022
    ['Lc',100,200,300,400,500,600,700,800,900],
    [0,999,999,999,999,999,999,999,999,999],
    [10,999,999,999,999,999,999,777,777,777],
    [15,999,999,777,777,777,777,120,120,120],
    [20,999,777,777,777,120,120,110,88,66],
    [25,999,777,777,120,102,87,72,57.5,43],
    [30,999,777,120,96,68,58,48,38.5,29],
    [35,777,120,93.5,66,46.5,40,33,26.5,20],
    [40,777,96,68,48,34,29,24,20,18],
    [45,120,72,51,36,28,24,20,18,418],
    [50,96.5,58,41,29,25,20,18,17,418],
    [55,86.5,52,37,26,22,19.5,17,16,418],
    [60,80,48,34,24,21,18,16,416,418],
    [65,71.5,43,30.5,21.5,19.5,17,15,416,418],
    [70,65,39,27.5,19.5,18,16,14.5,416,418],
    [75,60,36,24,18,17,15,14,416,418],
    [80,56.5,34,23,17,16,14.5,414,416,418],
    [85,53.5,32,22,16,15,14,414,416,418],
    [90,50,30,21,15,14.5,414,414,416,418],
    [95,48.5,29,20.5,14.5,14,414,414,416,418],
    [100,46.5,28,18,14,414,414,414,416,418],
    [105,445,427,417,413.5,413.5,413.5,413.5,416,418],
    [120,445,427,417,413.5,413.5,413.5,413.5,416,418],
    ];


    // G G G G G G UPDATED JAN 31 2022 
    // interpolation G  
  
    // MAIN FONT SIZE DELTA PRECALC Jan 31 2022 Sorted by Lc rows higher Jan 31 2022

//// ASCENDING SORTED  APRIL 23 2022 ////

    const fontDeltaAscend = [ // rows ABOVE Jan 31 2022
    ['Lc∆h',100,200,300,400,500,600,700,800,900,],
    [0,0,0,0,0,0,0,0,0,0,],
    [10,0,0,0,0,0,0,0,0,0,],
    [15,0,0,0,0,0,0,10,32,54,],
    [20,0,0,0,0,18,33,38,30.5,23,],
    [25,0,0,0,24,34,29,24,19,14,],
    [30,0,0,26.5,30,21.5,18,15,12,9,],
    [35,0,24,25.5,18,12.5,11,9,6.5,2,],
    [40,0,24,17,12,6,5,4,2,0,],
    [45,23.5,14,10,7,3,4,2,1,0,],
    [50,10,6,4,3,3,0.5,1,1,0,],
    [55,6.5,4,3,2,1,1.5,1,0,0,],
    [60,8.5,5,3.5,2.5,1.5,1,1,0,0,],
    [65,6.5,4,3,2,1.5,1,0.5,0,0,],
    [70,5,3,3.5,1.5,1,1,0.5,0,0,],
    [75,3.5,2,1,1,1,0.5,0,0,0,],
    [80,3,2,1,1,1,0.5,0,0,0,],
    [85,3.5,2,1,1,0.5,0,0,0,0,],
    [90,1.5,1,0.5,0.5,0,0,0,0,0,],
    [95,2,1,2.5,0.5,0,0,0,0,0,],
    [100,1.5,1,1,0.5,0.5,0.5,0.5,0,0,],
    [105,0,0,0,0,0,0,0,0,0,],
    [120,0,0,0,0,0,0,0,0,0,],
    ];



/////  MINIMUMS ARRAYS  ////////////////////////////////////////////////////
////  Updated Apr 23 2022 ////

////  NOTICE: Score levels will be replaced with use case levels ////
///   SCORE LEVELS ARE DEPRECATED                               ////

    // Minimum font size per score level and weight
    // Weight S 1 2 3 4 5 6 7 8 9
const fontMatrixGmin = [
    ['sc0',32,16,12,10,9,8,8,10,12,],  // score: hard fail level
    ['sc1',36,16,12,10,10,10,10,12,14,], // score 1
    ['sc2',36,16,12,10,10,10,10,16,18,], // score 2
    ['sc3',36,16,12,11,11,11,11,16,18,], // score 3
    ['sc4',42,24,18,14,14,14,14,16,18,], // score 4
    ['sc5',48,28,24,20,18,16,15,16,18,], // score 5
  ];

    // Min/Max font size per use case and score level
    // Score M 1 2 3 4 5
const fontSizeGtype = [
    ['maxBody',36,36,36,36,36,],       // MAX body text (not zoomed)
    ['minBody',12,12,14,16,21,],       // Min body text 
    ['maxContent',140,120,108,96,72,], // MAX content text
    ['minContent',10,11,12,14,18,],    // Min content text
    ['maxAny',144,120,120,108,96,],    // MAX anytext
    ['minAny',8,10,11,12,14,],         // Min spot text (copyright etc)
  ];
  
    // Lc contrast minimums per master level and score level
    // score M 1 2 3 4 5
const fontScoreGmin = [             // CONTRAST LEVELS in Lc
    [90,105.0,99.0,94.0,90.0,85.0,],// 0 MAX Large Headlines (> 36px & 700)
    [75,68.4,71.8,73.4,74.8,90.0,], // 1 Min Cols of Body Text (manually set)
    [60,47.4,52.8,56.4,59.8,75.0,], // 2 Min Content Text 
    [45,33.4,34.8,37.4,44.8,55.0,], // 3 Min Large content text
    [30,22.0,24.0,27.0,29.8,45.0,], // 4 Min non-content text, min large icons
    [15,14.0,15.0,16.0,18.0,22.0,], // 5 Min for all (invisibility level)
  ];

const minScoreG = fontScoreGmin[5][1]; // Hard minimum contrast, all levels.
const nonTextScoreG = fontScoreGmin[4][4];  // level for non text only

/////  END MINIMUMS ARRAYS  ////////////////////////////////////////////////




<|start_filename|>data/LEGACY/Jan022022 LUT-GseriesJan11-2022.js<|end_filename|>
//APCA CONTRAST LOOKUP TABLE
// Copyright © 2022 by Myndex Research and <NAME>. All Rights Reserved


//Public Beta 0.1.1 (G) • January 11 2022
//                         Reference Font Weight
//Font
//Size	100	200	300	400	500	600	700	800	900
//pt	px	              APCA Contrast Value (Lc)

/*

7.5	10	⊘	⊘	⊘	©§™	©§™	©§™	©§™	⊘	⊘
9	12	⊘	⊘	©§™	95ƒ	90ƒ	80ƒ	75ƒ	⊘	⊘
10.5	14	⊘	⊘	©§™	90	85	80	75	⊘	⊘
12	16	⊘	©§™	95ƒ	80	75	70	60	60ƒ	⊘
13.5	18	⊘	©§™	90	75	70	60	55	55ƒ	55ƒ
15.8	21	⊘	95ƒ	85	70	60	55	50	50ƒ	50ƒ
18	24	⊘	90ƒ	75	60	55	50	45	45ƒ	45ƒ
21	28	⊘	85ƒ	70	55	50	45	45	40ƒ	40ƒ
24	32	95	80ƒ	65	50	45	40	40	40ƒ	40ƒ
27	36	90	75	60	45	45	40	40	35	35
36	48	75	60	45	45	45	40	40	35	35
72	96	60	45	45	45	45	40	35	30	30





/////  Font Table — FLUENT text and body text. Indexed by SIZE.

// Body text under 70 should have Lc 15 ADDED.
// 200-300: subtract 200. This indicates fluent text that should NOT be body text.
// 444 - this is for spot text, not fluent. Things like copyright or placeholder.
// 888 and 999: prohibited text

'px'	100	200	300	400	500	600	700	800	900
10	888	888	888	444	444	444	444	888	888
12	888	888	444	295	290	280	275	888	888
14	888	888	444	90	85	80	75	888	888
16	888	444	295	80	75	70	60	260	888
18	888	444	90	75	70	60	55	255	255
21	888	295	85	70	60	55	50	250	250
24	888	290	75	60	55	50	45	245	245
28	888	285	70	55	50	45	45	240	240
32	95	280	65	50	45	40	40	240	240
36	90	75	60	45	45	40	40	35	35
48	75	60	45	45	45	40	40	35	35
96	60	45	45	45	45	40	35	30	30
120	60	45	45	45	40	35	30	30	30



//  */



lutG14xFontSize = [
['px',100,200,300,400,500,600,700,800,900],
[10,888,888,888,444,444,444,444,888,888],
[12,888,888,444,295,290,280,275,888,888],
[14,888,888,444,90,85,80,75,888,888],
[16,888,444,295,80,75,70,60,260,888],
[18,888,444,90,75,70,60,55,255,255],
[21,888,295,85,70,60,55,50,250,250],
[24,888,290,75,60,55,50,45,245,245],
[28,888,285,70,55,50,45,45,240,240],
[32,95,280,65,50,45,40,40,240,240],
[36,90,75,60,45,45,40,40,35,35],
[48,75,60,55,45,45,40,40,35,35],
[96,60,55,50,45,45,40,35,30,30],
[120,60,55,50,45,40,35,30,30,30],
];



///////////////////////////////////////////////////////////////////////////////

/////  Font Table — FLUENT text and body text. Indexed by Lc VALUE.

// Body text under 70 should have Lc 15 ADDED.
// 200-300: subtract 200. This indicates fluent text that should NOT be body text.
// 444 - this is for spot text, not fluent. Things like copyright or placeholder.
// 888 and 999: prohibited text

/*

'Lc’	100	200	300	400	500	600	700	800	900
200	888	888	888	888	888	888	888	888	888
105	888	416	412	888	888	888	888	888	888
100	888	418	414	410	888	888	888	888	888
95	32	21	16	12	410	888	888	888	888
90	36	24	18	14	12	410	888	888	888
85	40	28	21	15	14	12	410	888	888
80	44	32	22.5	16	15	14	12	888	888
75	48	36	24	18	16	15	14	888	888
70	64	40	28	21	18	16	14.67	888	888
65	80	44	32	22.5	19.5	17	15.33	15.5	888
60	96	48	36	24	21	18	16	16	888
55	120	64	40	28	24	21	18	18	18
50	777	80	44	32	28	24	21	21	21
45	777	96	48	36	32	28	24	24	24
44	777	120	96	48	36	32	28	28	28
43	777	777	120	96	48	36	32	32	32
40	777	777	777	120	96	48	36	33.33	33.33
37	777	777	777	777	120	96	48	34.67	34.67
35	777	777	777	777	777	120	96	36	36
30	777	777	777	777	777	777	120	96	96
25	777	777	777	777	777	777	777	120	120
20	777	777	777	777	777	777	777	777	777
0	0	0	0	0	0	0	0	0	0

//  */


lutG14xLcValue = [
['Lc',100,200,300,400,500,600,700,800,900],
[200,888,888,888,888,888,888,888,888,888],
[105,888,416,412,888,888,888,888,888,888],
[100,888,418,414,410,888,888,888,888,888],
[95,32,21,16,12,410,888,888,888,888],
[90,36,24,18,14,12,410,888,888,888],
[85,40,28,21,15,14,12,410,888,888],
[80,44,32,22.5,16,15,14,12,888,888],
[75,48,36,24,18,16,15,14,888,888],
[70,64,40,28,21,18,16,14.67,888,888],
[65,80,44,32,22.5,19.5,17,15.33,15.5,888],
[60,96,48,36,24,21,18,16,16,888],
[55,120,64,40,28,24,21,18,18,18],
[50,777,80,44,32,28,24,21,21,21],
[45,777,96,48,36,32,28,24,24,24],
[44,777,120,96,48,36,32,28,28,28],
[43,777,777,120,96,48,36,32,32,32],
[40,777,777,777,120,96,48,36,33.33,33.33],
[37,777,777,777,777,120,96,48,34.67,34.67],
[35,777,777,777,777,777,120,96,36,36],
[30,777,777,777,777,777,777,120,96,96],
[25,777,777,777,777,777,777,777,120,120],
[20,777,777,777,777,777,777,777,777,777],
[0,0,0,0,0,0,0,0,0,0],
];


///////////////////////////////////////////////////////////////////////////////
///  By Lc DELTA PRE CALC

/*

'Lc∆’	100	200	300	400	500	600	700	800	900
200	0	0	0	0	0	0	0	0	0
105	0	0	0	0	0	0	0	0	0
100	0	0	0	0	0	0	0	0	0
95	0	0	0	0	0	0	0	0	0
90	4	3	2	2	0	0	0	0	0
85	4	4	3	1	2	0	0	0	0
80	4	4	1.5	1	1	2	0	0	0
75	4	4	1.5	2	1	1	2	0	0
70	16	4	4	3	2	1	0.67	0	0
65	16	4	4	1.5	1.5	1	0.67	0	0
60	16	4	4	1.5	1.5	1	0.67	0.5	0
55	24	16	4	4	3	3	2	2	0
50	0	16	4	4	4	3	3	3	3
45	0	16	4	4	4	4	3	3	3
44	0	24	48	12	4	4	4	4	4
43	0	0	24	48	12	4	4	4	4
40	0	0	0	24	48	12	4	1.33	1.33
37	0	0	0	0	24	48	12	1.33	1.33
35	0	0	0	0	0	24	48	1.33	1.33
30	0	0	0	0	0	0	24	60	60
25	0	0	0	0	0	0	0	24	24
20	0	0	0	0	0	0	0	0	0
0	0	0	0	0	0	0	0	0	0

//  */


lutG14xLcDelta = [
['Lc∆',100,200,300,400,500,600,700,800,900],
[200,0,0,0,0,0,0,0,0,0],
[105,0,0,0,0,0,0,0,0,0],
[100,0,0,0,0,0,0,0,0,0],
[95,0,0,0,0,0,0,0,0,0],
[90,4,3,2,2,0,0,0,0,0],
[85,4,4,3,1,2,0,0,0,0],
[80,4,4,1.5,1,1,2,0,0,0],
[75,4,4,1.5,2,1,1,2,0,0],
[70,16,4,4,3,2,1,0.67,0,0],
[65,16,4,4,1.5,1.5,1,0.67,0,0],
[60,16,4,4,1.5,1.5,1,0.67,0.5,0],
[55,24,16,4,4,3,3,2,2,0],
[50,0,16,4,4,4,3,3,3,3],
[45,0,16,4,4,4,4,3,3,3],
[44,0,24,48,12,4,4,4,4,4],
[43,0,0,24,48,12,4,4,4,4],
[40,0,0,0,24,48,12,4,1.33,1.33],
[37,0,0,0,0,24,48,12,1.33,1.33],
[35,0,0,0,0,0,24,48,1.33,1.33],
[30,0,0,0,0,0,0,24,60,60],
[25,0,0,0,0,0,0,0,24,24],
[20,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
];


///////////////////////////////////////////////////////////////////////////////



