From e39c86ebd42de500c47cc0072c6b40cf647ce911 Mon Sep 17 00:00:00 2001 From: Diwangshu Kakoty Date: Thu, 12 Dec 2024 17:25:18 +0530 Subject: [PATCH] Update --- coverage/clover.xml | 153 + coverage/coverage-final.json | 3 + coverage/lcov-report/base.css | 224 + coverage/lcov-report/block-navigation.js | 87 + coverage/lcov-report/favicon.png | Bin 0 -> 445 bytes coverage/lcov-report/index.html | 131 + coverage/lcov-report/mathutils.js.html | 1072 + coverage/lcov-report/munsell.js.html | 20740 +++++++++++++++++++ coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/lcov-report/sorter.js | 196 + coverage/lcov.info | 293 + package-lock.json | 164 +- 14 files changed, 23048 insertions(+), 18 deletions(-) create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/mathutils.js.html create mode 100644 coverage/lcov-report/munsell.js.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov.info diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000000..5b726a6156 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000000..7fba778488 --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,3 @@ +{"C:\\Users\\lenovo\\Desktop\\OS\\musicblocks\\js\\utils\\mathutils.js": {"path":"C:\\Users\\lenovo\\Desktop\\OS\\musicblocks\\js\\utils\\mathutils.js","statementMap":{"0":{"start":{"line":59,"column":26},"end":{"line":63,"column":9}},"1":{"start":{"line":61,"column":12},"end":{"line":61,"column":53}},"2":{"start":{"line":62,"column":12},"end":{"line":62,"column":90}},"3":{"start":{"line":73,"column":33},"end":{"line":93,"column":9}},"4":{"start":{"line":74,"column":12},"end":{"line":74,"column":55}},"5":{"start":{"line":76,"column":31},"end":{"line":76,"column":33}},"6":{"start":{"line":77,"column":12},"end":{"line":81,"column":13}},"7":{"start":{"line":78,"column":16},"end":{"line":80,"column":17}},"8":{"start":{"line":78,"column":29},"end":{"line":78,"column":30}},"9":{"start":{"line":79,"column":20},"end":{"line":79,"column":63}},"10":{"start":{"line":83,"column":23},"end":{"line":83,"column":47}},"11":{"start":{"line":84,"column":23},"end":{"line":84,"column":47}},"12":{"start":{"line":85,"column":23},"end":{"line":85,"column":29}},"13":{"start":{"line":86,"column":23},"end":{"line":86,"column":52}},"14":{"start":{"line":89,"column":12},"end":{"line":89,"column":52}},"15":{"start":{"line":90,"column":12},"end":{"line":90,"column":52}},"16":{"start":{"line":92,"column":12},"end":{"line":92,"column":62}},"17":{"start":{"line":95,"column":8},"end":{"line":106,"column":9}},"18":{"start":{"line":96,"column":12},"end":{"line":96,"column":35}},"19":{"start":{"line":97,"column":15},"end":{"line":106,"column":9}},"20":{"start":{"line":103,"column":12},"end":{"line":103,"column":45}},"21":{"start":{"line":105,"column":12},"end":{"line":105,"column":29}},"22":{"start":{"line":118,"column":8},"end":{"line":118,"column":43}},"23":{"start":{"line":131,"column":8},"end":{"line":135,"column":9}},"24":{"start":{"line":132,"column":12},"end":{"line":132,"column":41}},"25":{"start":{"line":134,"column":12},"end":{"line":134,"column":29}},"26":{"start":{"line":147,"column":8},"end":{"line":155,"column":9}},"27":{"start":{"line":148,"column":12},"end":{"line":150,"column":13}},"28":{"start":{"line":149,"column":16},"end":{"line":149,"column":36}},"29":{"start":{"line":152,"column":12},"end":{"line":152,"column":40}},"30":{"start":{"line":154,"column":12},"end":{"line":154,"column":29}},"31":{"start":{"line":167,"column":8},"end":{"line":174,"column":9}},"32":{"start":{"line":168,"column":28},"end":{"line":168,"column":68}},"33":{"start":{"line":169,"column":28},"end":{"line":169,"column":68}},"34":{"start":{"line":171,"column":12},"end":{"line":171,"column":37}},"35":{"start":{"line":173,"column":12},"end":{"line":173,"column":41}},"36":{"start":{"line":187,"column":8},"end":{"line":189,"column":9}},"37":{"start":{"line":188,"column":12},"end":{"line":188,"column":29}},"38":{"start":{"line":191,"column":8},"end":{"line":191,"column":37}},"39":{"start":{"line":204,"column":8},"end":{"line":206,"column":9}},"40":{"start":{"line":205,"column":12},"end":{"line":205,"column":29}},"41":{"start":{"line":208,"column":8},"end":{"line":208,"column":37}},"42":{"start":{"line":221,"column":8},"end":{"line":229,"column":9}},"43":{"start":{"line":222,"column":12},"end":{"line":224,"column":13}},"44":{"start":{"line":223,"column":16},"end":{"line":223,"column":39}},"45":{"start":{"line":226,"column":12},"end":{"line":226,"column":41}},"46":{"start":{"line":228,"column":12},"end":{"line":228,"column":29}},"47":{"start":{"line":244,"column":8},"end":{"line":257,"column":9}},"48":{"start":{"line":250,"column":12},"end":{"line":252,"column":13}},"49":{"start":{"line":251,"column":16},"end":{"line":251,"column":25}},"50":{"start":{"line":254,"column":12},"end":{"line":254,"column":74}},"51":{"start":{"line":256,"column":12},"end":{"line":256,"column":29}},"52":{"start":{"line":270,"column":8},"end":{"line":274,"column":9}},"53":{"start":{"line":271,"column":12},"end":{"line":271,"column":34}},"54":{"start":{"line":273,"column":12},"end":{"line":273,"column":29}},"55":{"start":{"line":286,"column":8},"end":{"line":290,"column":9}},"56":{"start":{"line":287,"column":12},"end":{"line":287,"column":31}},"57":{"start":{"line":289,"column":12},"end":{"line":289,"column":29}},"58":{"start":{"line":302,"column":8},"end":{"line":309,"column":9}},"59":{"start":{"line":303,"column":12},"end":{"line":303,"column":45}},"60":{"start":{"line":304,"column":15},"end":{"line":309,"column":9}},"61":{"start":{"line":305,"column":24},"end":{"line":305,"column":35}},"62":{"start":{"line":306,"column":12},"end":{"line":306,"column":42}},"63":{"start":{"line":308,"column":12},"end":{"line":308,"column":31}},"64":{"start":{"line":321,"column":8},"end":{"line":325,"column":9}},"65":{"start":{"line":322,"column":12},"end":{"line":322,"column":47}},"66":{"start":{"line":324,"column":12},"end":{"line":324,"column":29}},"67":{"start":{"line":329,"column":0},"end":{"line":329,"column":29}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":51,"column":4},"end":{"line":51,"column":5}},"loc":{"start":{"line":51,"column":29},"end":{"line":107,"column":5}},"line":51},"1":{"name":"(anonymous_1)","decl":{"start":{"line":59,"column":26},"end":{"line":59,"column":27}},"loc":{"start":{"line":59,"column":38},"end":{"line":63,"column":9}},"line":59},"2":{"name":"(anonymous_2)","decl":{"start":{"line":73,"column":33},"end":{"line":73,"column":34}},"loc":{"start":{"line":73,"column":53},"end":{"line":93,"column":9}},"line":73},"3":{"name":"(anonymous_3)","decl":{"start":{"line":117,"column":4},"end":{"line":117,"column":5}},"loc":{"start":{"line":117,"column":25},"end":{"line":119,"column":5}},"line":117},"4":{"name":"(anonymous_4)","decl":{"start":{"line":130,"column":4},"end":{"line":130,"column":5}},"loc":{"start":{"line":130,"column":23},"end":{"line":136,"column":5}},"line":130},"5":{"name":"(anonymous_5)","decl":{"start":{"line":146,"column":4},"end":{"line":146,"column":5}},"loc":{"start":{"line":146,"column":21},"end":{"line":156,"column":5}},"line":146},"6":{"name":"(anonymous_6)","decl":{"start":{"line":166,"column":4},"end":{"line":166,"column":5}},"loc":{"start":{"line":166,"column":24},"end":{"line":175,"column":5}},"line":166},"7":{"name":"(anonymous_7)","decl":{"start":{"line":186,"column":4},"end":{"line":186,"column":5}},"loc":{"start":{"line":186,"column":25},"end":{"line":192,"column":5}},"line":186},"8":{"name":"(anonymous_8)","decl":{"start":{"line":203,"column":4},"end":{"line":203,"column":5}},"loc":{"start":{"line":203,"column":28},"end":{"line":209,"column":5}},"line":203},"9":{"name":"(anonymous_9)","decl":{"start":{"line":220,"column":4},"end":{"line":220,"column":5}},"loc":{"start":{"line":220,"column":26},"end":{"line":230,"column":5}},"line":220},"10":{"name":"(anonymous_10)","decl":{"start":{"line":243,"column":4},"end":{"line":243,"column":5}},"loc":{"start":{"line":243,"column":47},"end":{"line":258,"column":5}},"line":243},"11":{"name":"(anonymous_11)","decl":{"start":{"line":269,"column":4},"end":{"line":269,"column":5}},"loc":{"start":{"line":269,"column":25},"end":{"line":275,"column":5}},"line":269},"12":{"name":"(anonymous_12)","decl":{"start":{"line":285,"column":4},"end":{"line":285,"column":5}},"loc":{"start":{"line":285,"column":20},"end":{"line":291,"column":5}},"line":285},"13":{"name":"(anonymous_13)","decl":{"start":{"line":301,"column":4},"end":{"line":301,"column":5}},"loc":{"start":{"line":301,"column":23},"end":{"line":310,"column":5}},"line":301},"14":{"name":"(anonymous_14)","decl":{"start":{"line":320,"column":4},"end":{"line":320,"column":5}},"loc":{"start":{"line":320,"column":20},"end":{"line":326,"column":5}},"line":320}},"branchMap":{"0":{"loc":{"start":{"line":61,"column":23},"end":{"line":61,"column":52}},"type":"cond-expr","locations":[{"start":{"line":61,"column":33},"end":{"line":61,"column":41}},{"start":{"line":61,"column":44},"end":{"line":61,"column":52}}],"line":61},"1":{"loc":{"start":{"line":74,"column":21},"end":{"line":74,"column":54}},"type":"cond-expr","locations":[{"start":{"line":74,"column":44},"end":{"line":74,"column":45}},{"start":{"line":74,"column":48},"end":{"line":74,"column":54}}],"line":74},"2":{"loc":{"start":{"line":86,"column":23},"end":{"line":86,"column":52}},"type":"cond-expr","locations":[{"start":{"line":86,"column":33},"end":{"line":86,"column":43}},{"start":{"line":86,"column":46},"end":{"line":86,"column":52}}],"line":86},"3":{"loc":{"start":{"line":95,"column":8},"end":{"line":106,"column":9}},"type":"if","locations":[{"start":{"line":95,"column":8},"end":{"line":106,"column":9}},{"start":{"line":97,"column":15},"end":{"line":106,"column":9}}],"line":95},"4":{"loc":{"start":{"line":95,"column":12},"end":{"line":95,"column":58}},"type":"binary-expr","locations":[{"start":{"line":95,"column":12},"end":{"line":95,"column":33}},{"start":{"line":95,"column":37},"end":{"line":95,"column":58}}],"line":95},"5":{"loc":{"start":{"line":97,"column":15},"end":{"line":106,"column":9}},"type":"if","locations":[{"start":{"line":97,"column":15},"end":{"line":106,"column":9}},{"start":{"line":104,"column":15},"end":{"line":106,"column":9}}],"line":97},"6":{"loc":{"start":{"line":98,"column":12},"end":{"line":101,"column":36}},"type":"binary-expr","locations":[{"start":{"line":98,"column":12},"end":{"line":98,"column":33}},{"start":{"line":99,"column":12},"end":{"line":99,"column":33}},{"start":{"line":100,"column":12},"end":{"line":100,"column":36}},{"start":{"line":101,"column":12},"end":{"line":101,"column":36}}],"line":98},"7":{"loc":{"start":{"line":118,"column":15},"end":{"line":118,"column":42}},"type":"cond-expr","locations":[{"start":{"line":118,"column":37},"end":{"line":118,"column":38}},{"start":{"line":118,"column":41},"end":{"line":118,"column":42}}],"line":118},"8":{"loc":{"start":{"line":131,"column":8},"end":{"line":135,"column":9}},"type":"if","locations":[{"start":{"line":131,"column":8},"end":{"line":135,"column":9}},{"start":{"line":133,"column":15},"end":{"line":135,"column":9}}],"line":131},"9":{"loc":{"start":{"line":131,"column":12},"end":{"line":131,"column":58}},"type":"binary-expr","locations":[{"start":{"line":131,"column":12},"end":{"line":131,"column":33}},{"start":{"line":131,"column":37},"end":{"line":131,"column":58}}],"line":131},"10":{"loc":{"start":{"line":147,"column":8},"end":{"line":155,"column":9}},"type":"if","locations":[{"start":{"line":147,"column":8},"end":{"line":155,"column":9}},{"start":{"line":153,"column":15},"end":{"line":155,"column":9}}],"line":147},"11":{"loc":{"start":{"line":148,"column":12},"end":{"line":150,"column":13}},"type":"if","locations":[{"start":{"line":148,"column":12},"end":{"line":150,"column":13}},{"start":{},"end":{}}],"line":148},"12":{"loc":{"start":{"line":167,"column":8},"end":{"line":174,"column":9}},"type":"if","locations":[{"start":{"line":167,"column":8},"end":{"line":174,"column":9}},{"start":{"line":172,"column":15},"end":{"line":174,"column":9}}],"line":167},"13":{"loc":{"start":{"line":167,"column":12},"end":{"line":167,"column":58}},"type":"binary-expr","locations":[{"start":{"line":167,"column":12},"end":{"line":167,"column":33}},{"start":{"line":167,"column":37},"end":{"line":167,"column":58}}],"line":167},"14":{"loc":{"start":{"line":168,"column":28},"end":{"line":168,"column":68}},"type":"cond-expr","locations":[{"start":{"line":168,"column":52},"end":{"line":168,"column":53}},{"start":{"line":168,"column":56},"end":{"line":168,"column":68}}],"line":168},"15":{"loc":{"start":{"line":169,"column":28},"end":{"line":169,"column":68}},"type":"cond-expr","locations":[{"start":{"line":169,"column":52},"end":{"line":169,"column":53}},{"start":{"line":169,"column":56},"end":{"line":169,"column":68}}],"line":169},"16":{"loc":{"start":{"line":187,"column":8},"end":{"line":189,"column":9}},"type":"if","locations":[{"start":{"line":187,"column":8},"end":{"line":189,"column":9}},{"start":{},"end":{}}],"line":187},"17":{"loc":{"start":{"line":187,"column":12},"end":{"line":187,"column":58}},"type":"binary-expr","locations":[{"start":{"line":187,"column":12},"end":{"line":187,"column":33}},{"start":{"line":187,"column":37},"end":{"line":187,"column":58}}],"line":187},"18":{"loc":{"start":{"line":204,"column":8},"end":{"line":206,"column":9}},"type":"if","locations":[{"start":{"line":204,"column":8},"end":{"line":206,"column":9}},{"start":{},"end":{}}],"line":204},"19":{"loc":{"start":{"line":204,"column":12},"end":{"line":204,"column":58}},"type":"binary-expr","locations":[{"start":{"line":204,"column":12},"end":{"line":204,"column":33}},{"start":{"line":204,"column":37},"end":{"line":204,"column":58}}],"line":204},"20":{"loc":{"start":{"line":221,"column":8},"end":{"line":229,"column":9}},"type":"if","locations":[{"start":{"line":221,"column":8},"end":{"line":229,"column":9}},{"start":{"line":227,"column":15},"end":{"line":229,"column":9}}],"line":221},"21":{"loc":{"start":{"line":221,"column":12},"end":{"line":221,"column":58}},"type":"binary-expr","locations":[{"start":{"line":221,"column":12},"end":{"line":221,"column":33}},{"start":{"line":221,"column":37},"end":{"line":221,"column":58}}],"line":221},"22":{"loc":{"start":{"line":222,"column":12},"end":{"line":224,"column":13}},"type":"if","locations":[{"start":{"line":222,"column":12},"end":{"line":224,"column":13}},{"start":{},"end":{}}],"line":222},"23":{"loc":{"start":{"line":244,"column":8},"end":{"line":257,"column":9}},"type":"if","locations":[{"start":{"line":244,"column":8},"end":{"line":257,"column":9}},{"start":{"line":255,"column":15},"end":{"line":257,"column":9}}],"line":244},"24":{"loc":{"start":{"line":245,"column":12},"end":{"line":248,"column":34}},"type":"binary-expr","locations":[{"start":{"line":245,"column":12},"end":{"line":245,"column":34}},{"start":{"line":246,"column":12},"end":{"line":246,"column":34}},{"start":{"line":247,"column":12},"end":{"line":247,"column":34}},{"start":{"line":248,"column":12},"end":{"line":248,"column":34}}],"line":245},"25":{"loc":{"start":{"line":250,"column":12},"end":{"line":252,"column":13}},"type":"if","locations":[{"start":{"line":250,"column":12},"end":{"line":252,"column":13}},{"start":{},"end":{}}],"line":250},"26":{"loc":{"start":{"line":250,"column":16},"end":{"line":250,"column":38}},"type":"binary-expr","locations":[{"start":{"line":250,"column":16},"end":{"line":250,"column":25}},{"start":{"line":250,"column":29},"end":{"line":250,"column":38}}],"line":250},"27":{"loc":{"start":{"line":270,"column":8},"end":{"line":274,"column":9}},"type":"if","locations":[{"start":{"line":270,"column":8},"end":{"line":274,"column":9}},{"start":{"line":272,"column":15},"end":{"line":274,"column":9}}],"line":270},"28":{"loc":{"start":{"line":270,"column":12},"end":{"line":270,"column":58}},"type":"binary-expr","locations":[{"start":{"line":270,"column":12},"end":{"line":270,"column":33}},{"start":{"line":270,"column":37},"end":{"line":270,"column":58}}],"line":270},"29":{"loc":{"start":{"line":286,"column":8},"end":{"line":290,"column":9}},"type":"if","locations":[{"start":{"line":286,"column":8},"end":{"line":290,"column":9}},{"start":{"line":288,"column":15},"end":{"line":290,"column":9}}],"line":286},"30":{"loc":{"start":{"line":302,"column":8},"end":{"line":309,"column":9}},"type":"if","locations":[{"start":{"line":302,"column":8},"end":{"line":309,"column":9}},{"start":{"line":304,"column":15},"end":{"line":309,"column":9}}],"line":302},"31":{"loc":{"start":{"line":304,"column":15},"end":{"line":309,"column":9}},"type":"if","locations":[{"start":{"line":304,"column":15},"end":{"line":309,"column":9}},{"start":{"line":307,"column":15},"end":{"line":309,"column":9}}],"line":304}},"s":{"0":3,"1":2,"2":2,"3":3,"4":1,"5":1,"6":1,"7":2,"8":2,"9":14,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":3,"18":1,"19":2,"20":1,"21":1,"22":1,"23":2,"24":1,"25":1,"26":2,"27":2,"28":1,"29":1,"30":0,"31":2,"32":1,"33":1,"34":1,"35":1,"36":3,"37":1,"38":2,"39":2,"40":1,"41":1,"42":2,"43":2,"44":1,"45":1,"46":0,"47":1,"48":1,"49":0,"50":1,"51":0,"52":1,"53":1,"54":0,"55":1,"56":1,"57":0,"58":2,"59":1,"60":1,"61":1,"62":1,"63":0,"64":1,"65":1,"66":0,"67":1},"f":{"0":3,"1":2,"2":1,"3":1,"4":2,"5":2,"6":2,"7":3,"8":2,"9":2,"10":1,"11":1,"12":1,"13":2,"14":1},"b":{"0":[0,2],"1":[0,1],"2":[0,1],"3":[1,2],"4":[3,1],"5":[1,1],"6":[2,2,1,1],"7":[1,0],"8":[1,1],"9":[2,1],"10":[2,0],"11":[1,1],"12":[1,1],"13":[2,1],"14":[1,0],"15":[1,0],"16":[1,2],"17":[3,2],"18":[1,1],"19":[2,1],"20":[2,0],"21":[2,2],"22":[1,1],"23":[1,0],"24":[1,1,1,1],"25":[0,1],"26":[1,0],"27":[1,0],"28":[1,1],"29":[1,0],"30":[1,1],"31":[1,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"534dcb67532f0946fdaad6938a5be078075c5537"} +,"C:\\Users\\lenovo\\Desktop\\OS\\musicblocks\\js\\utils\\munsell.js": {"path":"C:\\Users\\lenovo\\Desktop\\OS\\musicblocks\\js\\utils\\munsell.js","statementMap":{"0":{"start":{"line":31,"column":17},"end":{"line":72,"column":1}},"1":{"start":{"line":83,"column":16},"end":{"line":6724,"column":1}},"2":{"start":{"line":6734,"column":20},"end":{"line":6761,"column":1}},"3":{"start":{"line":6735,"column":4},"end":{"line":6741,"column":5}},"4":{"start":{"line":6736,"column":8},"end":{"line":6736,"column":13}},"5":{"start":{"line":6737,"column":11},"end":{"line":6741,"column":5}},"6":{"start":{"line":6738,"column":8},"end":{"line":6738,"column":20}},"7":{"start":{"line":6739,"column":11},"end":{"line":6741,"column":5}},"8":{"start":{"line":6740,"column":8},"end":{"line":6740,"column":20}},"9":{"start":{"line":6743,"column":4},"end":{"line":6760,"column":5}},"10":{"start":{"line":6744,"column":8},"end":{"line":6744,"column":20}},"11":{"start":{"line":6745,"column":11},"end":{"line":6760,"column":5}},"12":{"start":{"line":6746,"column":8},"end":{"line":6746,"column":20}},"13":{"start":{"line":6748,"column":19},"end":{"line":6748,"column":50}},"14":{"start":{"line":6749,"column":19},"end":{"line":6749,"column":50}},"15":{"start":{"line":6750,"column":19},"end":{"line":6750,"column":50}},"16":{"start":{"line":6751,"column":19},"end":{"line":6751,"column":50}},"17":{"start":{"line":6752,"column":19},"end":{"line":6752,"column":50}},"18":{"start":{"line":6753,"column":19},"end":{"line":6753,"column":50}},"19":{"start":{"line":6755,"column":19},"end":{"line":6755,"column":52}},"20":{"start":{"line":6756,"column":19},"end":{"line":6756,"column":52}},"21":{"start":{"line":6757,"column":19},"end":{"line":6757,"column":52}},"22":{"start":{"line":6759,"column":8},"end":{"line":6759,"column":57}},"23":{"start":{"line":6771,"column":22},"end":{"line":6808,"column":1}},"24":{"start":{"line":6776,"column":12},"end":{"line":6776,"column":33}},"25":{"start":{"line":6777,"column":4},"end":{"line":6779,"column":5}},"26":{"start":{"line":6778,"column":8},"end":{"line":6778,"column":16}},"27":{"start":{"line":6781,"column":4},"end":{"line":6781,"column":12}},"28":{"start":{"line":6783,"column":13},"end":{"line":6783,"column":35}},"29":{"start":{"line":6784,"column":13},"end":{"line":6784,"column":19}},"30":{"start":{"line":6785,"column":4},"end":{"line":6791,"column":5}},"31":{"start":{"line":6786,"column":8},"end":{"line":6786,"column":15}},"32":{"start":{"line":6787,"column":8},"end":{"line":6787,"column":15}},"33":{"start":{"line":6788,"column":11},"end":{"line":6791,"column":5}},"34":{"start":{"line":6789,"column":8},"end":{"line":6789,"column":16}},"35":{"start":{"line":6790,"column":8},"end":{"line":6790,"column":16}},"36":{"start":{"line":6793,"column":12},"end":{"line":6793,"column":34}},"37":{"start":{"line":6794,"column":4},"end":{"line":6798,"column":5}},"38":{"start":{"line":6795,"column":8},"end":{"line":6795,"column":14}},"39":{"start":{"line":6796,"column":11},"end":{"line":6798,"column":5}},"40":{"start":{"line":6797,"column":8},"end":{"line":6797,"column":14}},"41":{"start":{"line":6800,"column":12},"end":{"line":6800,"column":43}},"42":{"start":{"line":6801,"column":4},"end":{"line":6805,"column":5}},"43":{"start":{"line":6802,"column":8},"end":{"line":6802,"column":14}},"44":{"start":{"line":6803,"column":11},"end":{"line":6805,"column":5}},"45":{"start":{"line":6804,"column":8},"end":{"line":6804,"column":15}},"46":{"start":{"line":6807,"column":4},"end":{"line":6807,"column":90}},"47":{"start":{"line":6816,"column":15},"end":{"line":6834,"column":1}},"48":{"start":{"line":6817,"column":13},"end":{"line":6817,"column":36}},"49":{"start":{"line":6818,"column":13},"end":{"line":6818,"column":19}},"50":{"start":{"line":6819,"column":14},"end":{"line":6819,"column":30}},"51":{"start":{"line":6821,"column":4},"end":{"line":6821,"column":13}},"52":{"start":{"line":6822,"column":4},"end":{"line":6824,"column":5}},"53":{"start":{"line":6823,"column":8},"end":{"line":6823,"column":17}},"54":{"start":{"line":6826,"column":4},"end":{"line":6826,"column":16}},"55":{"start":{"line":6827,"column":4},"end":{"line":6829,"column":5}},"56":{"start":{"line":6828,"column":8},"end":{"line":6828,"column":15}},"57":{"start":{"line":6831,"column":14},"end":{"line":6831,"column":73}},"58":{"start":{"line":6832,"column":14},"end":{"line":6832,"column":73}},"59":{"start":{"line":6833,"column":4},"end":{"line":6833,"column":84}},"60":{"start":{"line":6844,"column":19},"end":{"line":6860,"column":1}},"61":{"start":{"line":6845,"column":23},"end":{"line":6845,"column":25}},"62":{"start":{"line":6846,"column":19},"end":{"line":6846,"column":27}},"63":{"start":{"line":6847,"column":4},"end":{"line":6857,"column":5}},"64":{"start":{"line":6847,"column":17},"end":{"line":6847,"column":18}},"65":{"start":{"line":6848,"column":22},"end":{"line":6848,"column":33}},"66":{"start":{"line":6849,"column":19},"end":{"line":6849,"column":54}},"67":{"start":{"line":6850,"column":19},"end":{"line":6850,"column":54}},"68":{"start":{"line":6851,"column":19},"end":{"line":6851,"column":54}},"69":{"start":{"line":6852,"column":28},"end":{"line":6852,"column":91}},"70":{"start":{"line":6853,"column":8},"end":{"line":6856,"column":9}},"71":{"start":{"line":6854,"column":12},"end":{"line":6854,"column":35}},"72":{"start":{"line":6855,"column":12},"end":{"line":6855,"column":29}},"73":{"start":{"line":6859,"column":4},"end":{"line":6859,"column":24}},"74":{"start":{"line":6862,"column":0},"end":{"line":6862,"column":72}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6734,"column":20},"end":{"line":6734,"column":21}},"loc":{"start":{"line":6734,"column":40},"end":{"line":6761,"column":1}},"line":6734},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6771,"column":22},"end":{"line":6771,"column":23}},"loc":{"start":{"line":6771,"column":46},"end":{"line":6808,"column":1}},"line":6771},"2":{"name":"(anonymous_2)","decl":{"start":{"line":6816,"column":15},"end":{"line":6816,"column":16}},"loc":{"start":{"line":6816,"column":26},"end":{"line":6834,"column":1}},"line":6816},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6844,"column":19},"end":{"line":6844,"column":20}},"loc":{"start":{"line":6844,"column":32},"end":{"line":6860,"column":1}},"line":6844}},"branchMap":{"0":{"loc":{"start":{"line":6735,"column":4},"end":{"line":6741,"column":5}},"type":"if","locations":[{"start":{"line":6735,"column":4},"end":{"line":6741,"column":5}},{"start":{"line":6737,"column":11},"end":{"line":6741,"column":5}}],"line":6735},"1":{"loc":{"start":{"line":6735,"column":8},"end":{"line":6735,"column":48}},"type":"binary-expr","locations":[{"start":{"line":6735,"column":8},"end":{"line":6735,"column":26}},{"start":{"line":6735,"column":30},"end":{"line":6735,"column":48}}],"line":6735},"2":{"loc":{"start":{"line":6737,"column":11},"end":{"line":6741,"column":5}},"type":"if","locations":[{"start":{"line":6737,"column":11},"end":{"line":6741,"column":5}},{"start":{"line":6739,"column":11},"end":{"line":6741,"column":5}}],"line":6737},"3":{"loc":{"start":{"line":6739,"column":11},"end":{"line":6741,"column":5}},"type":"if","locations":[{"start":{"line":6739,"column":11},"end":{"line":6741,"column":5}},{"start":{},"end":{}}],"line":6739},"4":{"loc":{"start":{"line":6743,"column":4},"end":{"line":6760,"column":5}},"type":"if","locations":[{"start":{"line":6743,"column":4},"end":{"line":6760,"column":5}},{"start":{"line":6745,"column":11},"end":{"line":6760,"column":5}}],"line":6743},"5":{"loc":{"start":{"line":6745,"column":11},"end":{"line":6760,"column":5}},"type":"if","locations":[{"start":{"line":6745,"column":11},"end":{"line":6760,"column":5}},{"start":{"line":6747,"column":11},"end":{"line":6760,"column":5}}],"line":6745},"6":{"loc":{"start":{"line":6785,"column":4},"end":{"line":6791,"column":5}},"type":"if","locations":[{"start":{"line":6785,"column":4},"end":{"line":6791,"column":5}},{"start":{"line":6788,"column":11},"end":{"line":6791,"column":5}}],"line":6785},"7":{"loc":{"start":{"line":6788,"column":11},"end":{"line":6791,"column":5}},"type":"if","locations":[{"start":{"line":6788,"column":11},"end":{"line":6791,"column":5}},{"start":{},"end":{}}],"line":6788},"8":{"loc":{"start":{"line":6794,"column":4},"end":{"line":6798,"column":5}},"type":"if","locations":[{"start":{"line":6794,"column":4},"end":{"line":6798,"column":5}},{"start":{"line":6796,"column":11},"end":{"line":6798,"column":5}}],"line":6794},"9":{"loc":{"start":{"line":6796,"column":11},"end":{"line":6798,"column":5}},"type":"if","locations":[{"start":{"line":6796,"column":11},"end":{"line":6798,"column":5}},{"start":{},"end":{}}],"line":6796},"10":{"loc":{"start":{"line":6801,"column":4},"end":{"line":6805,"column":5}},"type":"if","locations":[{"start":{"line":6801,"column":4},"end":{"line":6805,"column":5}},{"start":{"line":6803,"column":11},"end":{"line":6805,"column":5}}],"line":6801},"11":{"loc":{"start":{"line":6803,"column":11},"end":{"line":6805,"column":5}},"type":"if","locations":[{"start":{"line":6803,"column":11},"end":{"line":6805,"column":5}},{"start":{},"end":{}}],"line":6803},"12":{"loc":{"start":{"line":6827,"column":4},"end":{"line":6829,"column":5}},"type":"if","locations":[{"start":{"line":6827,"column":4},"end":{"line":6829,"column":5}},{"start":{},"end":{}}],"line":6827},"13":{"loc":{"start":{"line":6853,"column":8},"end":{"line":6856,"column":9}},"type":"if","locations":[{"start":{"line":6853,"column":8},"end":{"line":6856,"column":9}},{"start":{},"end":{}}],"line":6853}},"s":{"0":1,"1":1,"2":1,"3":317,"4":0,"5":317,"6":1,"7":316,"8":1,"9":317,"10":2,"11":315,"12":71,"13":244,"14":244,"15":244,"16":244,"17":244,"18":244,"19":244,"20":244,"21":244,"22":244,"23":1,"24":5,"25":5,"26":1,"27":5,"28":5,"29":5,"30":5,"31":1,"32":1,"33":4,"34":1,"35":1,"36":5,"37":5,"38":0,"39":5,"40":1,"41":5,"42":5,"43":1,"44":4,"45":1,"46":5,"47":1,"48":306,"49":306,"50":306,"51":306,"52":306,"53":1,"54":306,"55":306,"56":6,"57":306,"58":306,"59":306,"60":1,"61":3,"62":3,"63":3,"64":3,"65":300,"66":300,"67":300,"68":300,"69":300,"70":300,"71":12,"72":12,"73":3,"74":1},"f":{"0":317,"1":5,"2":306,"3":3},"b":{"0":[0,317],"1":[317,1],"2":[1,316],"3":[1,315],"4":[2,315],"5":[71,244],"6":[1,4],"7":[1,3],"8":[0,5],"9":[1,4],"10":[1,4],"11":[1,3],"12":[6,300],"13":[12,288]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"11a71b5ed9da0ed28d2c248a403e3781c041c6ea"} +} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000000..f418035b46 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000000..cc12130231 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 93% + Statements + 133/143 +
+ + +
+ 83.33% + Branches + 80/96 +
+ + +
+ 100% + Functions + 19/19 +
+ + +
+ 92.9% + Lines + 131/141 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
mathutils.js +
+
88.23%60/6879.41%54/68100%15/1588.05%59/67
munsell.js +
+
97.33%73/7592.85%26/28100%4/497.29%72/74
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/mathutils.js.html b/coverage/lcov-report/mathutils.js.html new file mode 100644 index 0000000000..10a374eacf --- /dev/null +++ b/coverage/lcov-report/mathutils.js.html @@ -0,0 +1,1072 @@ + + + + + + Code coverage report for mathutils.js + + + + + + + + + +
+
+

All files mathutils.js

+
+ +
+ 88.23% + Statements + 60/68 +
+ + +
+ 79.41% + Branches + 54/68 +
+ + +
+ 100% + Functions + 15/15 +
+ + +
+ 88.05% + Lines + 59/67 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +2x +2x +  +  +  +  +  +  +  +  +  +  +3x +1x +  +1x +1x +2x +14x +  +  +  +1x +1x +1x +1x +  +  +1x +1x +  +1x +  +  +3x +1x +2x +  +  +  +  +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +1x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +1x +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +1x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +1x + 
/**
+ * @file This contains the encapsulation related to math operations.
+ * @author Walter Bender
+ *
+ * @copyright 2014-2020 Walter Bender
+ * @copyright 2020 Anindya Kundu
+ *
+ * @license
+ * This program is free software; you can redistribute it and/or modify it under the terms of
+ * the The GNU Affero General Public License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * You should have received a copy of the GNU Affero General Public License along with this
+ * library; if not, write to the Free Software Foundation, 51 Franklin Street, Suite 500 Boston,
+ * MA 02110-1335 USA.
+ */
+ 
+/*
+   global SOLFEGENAMES
+ */
+ 
+/*
+   Global location
+    js/utils/musicutils.js
+        SOLFEGENAMES
+ */
+ 
+/* exported MathUtility */
+ 
+/**
+ * Utility class for managing math operations.
+ *
+ * @class
+ * @classdesc This is the prototype that encapsulates the ten math operations: random, one-of,
+ * modulus, square root, add, subtract, multiply, divide, eucleidean distance, and exponent.
+ * The methods verify the input/s and return the operations' results or throws an exception if
+ * the arguments are invalid, which is then handled by their callers, i.e. `arg` methods in
+ * NumberBlocks.js
+ */
+class MathUtility {
+   /**
+     * Returns a random integer in a range.
+     *
+     * @static
+     * @param {number|string} a - Preferably the minimum. If a string, it should be a valid solfege name.
+     * @param {number|string} b - Preferably the maximum. If a string, it should be a valid solfege name.
+     * @param {number} [c] - Octave (for cases when a and b are solfeges).
+     * @returns {number|array} - A random number between a and b (both inclusive) or a random solfege array.
+     * @throws {string} NAN error if the arguments are not valid.
+     */
+    static doRandom(a, b, c) {
+        /**
+         * Returns a random number between n1 and n2 (both inclusive).
+         *
+         * @param {number} n1
+         * @param {number} n2
+         * @returns {number}
+         */
+        const GetRandom = (n1, n2) => {
+            // n1 should be <= n2
+            [n1, n2] = n1 > n2 ? [n2, n1] : [n1, n2];
+            return Math.floor(Math.random() * (Number(n2) - Number(n1) + 1) + Number(n1));
+        };
+ 
+        /**
+         * Returns a random solfege array between a1 and a2 with the given octave.
+         *
+         * @param {string} a1
+         * @param {string} a2
+         * @param {number} [octave=4]
+         * @returns {array} - A random solfege array.
+         */
+        const GetRandomSolfege = (a1, a2, octave) => {
+            octave = octave === undefined ? 4 : octave;
+ 
+            const broadScale = [];
+            for (const i of [octave, octave + 1]) {
+                for (let j = 0; j < SOLFEGENAMES.length; j++) {
+                    broadScale.push(SOLFEGENAMES[j] + " " + i);
+                }
+            }
+ 
+            const n1 = SOLFEGENAMES.indexOf(a1);
+            const n2 = SOLFEGENAMES.indexOf(a2);
+            const o1 = octave;
+            const o2 = n1 > n2 ? octave + 1 : octave;
+ 
+            let n11, n22;
+            n11 = broadScale.indexOf(a1 + " " + o1);
+            n22 = broadScale.indexOf(a2 + " " + o2);
+ 
+            return broadScale[GetRandom(n11, n22)].split(" ");
+        };
+ 
+        if (typeof a === "number" && typeof b === "number") {
+            return GetRandom(a, b);
+        } else if (
+            typeof a === "string" &&
+            typeof b === "string" &&
+            SOLFEGENAMES.includes(a) &&
+            SOLFEGENAMES.includes(b)
+        ) {
+            return GetRandomSolfege(a, b, c);
+        } else {
+            throw "NanError";
+        }
+    }
+ 
+    /**
+     * Randomly returns either a or b.
+     *
+     * @static
+     * @param {*} a
+     * @param {*} b
+     * @returns {*} - Either a or b.
+     */
+    static doOneOf(a, b) {
+        return Math.random() < 0.5 ? a : b;
+    }
+ 
+    /**
+     * Returns a modulo b.
+     *
+     * @static
+     * @param {number} a
+     * @param {number} b
+     * @returns {number} - Result of a modulo b.
+     * @throws {string} NAN error if the arguments are not valid.
+     */
+    static doMod(a, b) {
+        if (typeof a === "number" && typeof b === "number") {
+            return Number(a) % Number(b);
+        } else {
+            throw "NanError";
+        }
+    }
+ 
+    /**
+     * Square-roots a number.
+     *
+     * @static
+     * @param {number} a
+     * @returns {number} - Square root of a.
+     * @throws {string} No square root error, NAN error if the arguments are not valid.
+     */
+    static doSqrt(a) {
+        if (typeof a === "number") {
+            if (a < 0) {
+                throw "NoSqrtError";
+            }
+ 
+            return Math.sqrt(Number(a));
+        } else E{
+            throw "NanError";
+        }
+    }
+ 
+    /**
+     * Adds a and b.
+     *
+     * @static
+     * @param {*} a
+     * @param {*} b
+     * @returns {number|string} - Sum of a and b. If either a or b is a string, it concatenates them.
+     */
+    static doPlus(a, b) {
+        if (typeof a === "string" || typeof b === "string") {
+            const aString = typeof a === "string" ? a : a.toString();
+            const bString = typeof b === "string" ? b : b.toString();
+ 
+            return aString + bString;
+        } else {
+            return Number(a) + Number(b);
+        }
+    }
+ 
+    /**
+     * Subtracts b from a.
+     *
+     * @static
+     * @param {number} a
+     * @param {number} b
+     * @returns {number} - Result of a minus b.
+     * @throws {string} NAN error if the arguments are not valid.
+     */
+    static doMinus(a, b) {
+        if (typeof a === "string" || typeof b === "string") {
+            throw "NanError";
+        }
+ 
+        return Number(a) - Number(b);
+    }
+ 
+    /**
+     * Multiplies a by b.
+     *
+     * @static
+     * @param {*} a
+     * @param {*} b
+     * @returns {number} - Result of a multiplied by b.
+     * @throws {string} NAN error if the arguments are not valid.
+     */
+    static doMultiply(a, b) {
+        if (typeof a === "string" || typeof b === "string") {
+            throw "NanError";
+        }
+ 
+        return Number(a) * Number(b);
+    }
+ 
+    /**
+     * Divides a by b.
+     *
+     * @static
+     * @param {number} a
+     * @param {number} b
+     * @returns {number} - Result of a divided by b.
+     * @throws {string} Divide by Zero error, NAN error if the arguments are not valid.
+     */
+    static doDivide(a, b) {
+        if (typeof a === "number" && typeof b === "number") {
+            if (Number(b) === 0) {
+                throw "DivByZeroError";
+            }
+ 
+            return Number(a) / Number(b);
+        } else E{
+            throw "NanError";
+        }
+    }
+ 
+     /**
+     * Calculates Euclidean distance between (cursor x, cursor y) and (mouse 'x' and mouse 'y').
+     *
+     * @static
+     * @param {number} x1
+     * @param {number} y1
+     * @param {number} x2
+     * @param {number} y2
+     * @returns {number} - Euclidean distance between two points.
+     * @throws {string} NAN error if the arguments are not valid.
+     */
+    static doCalculateDistance(x1, y1, x2, y2) {
+        if (
+            typeof x1 === "number" &&
+            typeof y1 === "number" &&
+            typeof x2 === "number" &&
+            typeof y2 === "number"
+        ) {
+            Iif (x1 === x2 && y1 === y2) {
+                return 0;
+            }
+ 
+            return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
+        } else E{
+            throw "NanError";
+        }
+    }
+ 
+   /**
+     * Returns a to the power of b.
+     *
+     * @static
+     * @param {number} a
+     * @param {number} b
+     * @returns {number} - Result of a raised to the power of b.
+     * @throws {string} NAN error if the arguments are not valid.
+     */
+    static doPower(a, b) {
+        if (typeof a === "number" && typeof b === "number") {
+            return Math.pow(a, b);
+        } else E{
+            throw "NanError";
+        }
+    }
+ 
+    /**
+     * Returns absolute value.
+     *
+     * @static
+     * @param {number} a
+     * @returns {number} - Absolute value of a.
+     * @throws {string} NAN error if the argument is not valid.
+     */
+    static doAbs(a) {
+        if (typeof a === "number") {
+            return Math.abs(a);
+        } else E{
+            throw "NanError";
+        }
+    }
+ 
+   /**
+     * Returns negative value (if number) or string in reverse (if string).
+     *
+     * @static
+     * @param {*} a
+     * @returns {number|string} - Negative value of a (if number) or string in reverse (if string).
+     * @throws {string} No Negation error if the argument is not valid.
+     */
+    static doNegate(a) {
+        if (typeof a === "number") {
+            return MathUtility.doMinus(0, a);
+        } else if (typeof a === "string") {
+            const obj = a.split("");
+            return obj.reverse().join("");
+        } else E{
+            throw "NoNegError";
+        }
+    }
+ 
+    /**
+     * Returns integer value.
+     *
+     * @static
+     * @param {*} a
+     * @returns {number} - Integer value of a.
+     * @throws {string} NAN error if the argument is not valid.
+     */
+    static doInt(a) {
+        try {
+            return Math.floor(Number(a) + 0.5);
+        } catch (e) {
+            throw "NanError";
+        }
+    }
+}
+// Ensure mathutils.js exports the MathUtility class
+module.exports = MathUtility;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/munsell.js.html b/coverage/lcov-report/munsell.js.html new file mode 100644 index 0000000000..d7faa7859c --- /dev/null +++ b/coverage/lcov-report/munsell.js.html @@ -0,0 +1,20740 @@ + + + + + + Code coverage report for munsell.js + + + + + + + + + +
+
+

All files munsell.js

+
+ +
+ 97.33% + Statements + 73/75 +
+ + +
+ 92.85% + Branches + 26/28 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 97.29% + Lines + 72/74 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +1406 +1407 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1416 +1417 +1418 +1419 +1420 +1421 +1422 +1423 +1424 +1425 +1426 +1427 +1428 +1429 +1430 +1431 +1432 +1433 +1434 +1435 +1436 +1437 +1438 +1439 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1448 +1449 +1450 +1451 +1452 +1453 +1454 +1455 +1456 +1457 +1458 +1459 +1460 +1461 +1462 +1463 +1464 +1465 +1466 +1467 +1468 +1469 +1470 +1471 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1480 +1481 +1482 +1483 +1484 +1485 +1486 +1487 +1488 +1489 +1490 +1491 +1492 +1493 +1494 +1495 +1496 +1497 +1498 +1499 +1500 +1501 +1502 +1503 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1512 +1513 +1514 +1515 +1516 +1517 +1518 +1519 +1520 +1521 +1522 +1523 +1524 +1525 +1526 +1527 +1528 +1529 +1530 +1531 +1532 +1533 +1534 +1535 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1544 +1545 +1546 +1547 +1548 +1549 +1550 +1551 +1552 +1553 +1554 +1555 +1556 +1557 +1558 +1559 +1560 +1561 +1562 +1563 +1564 +1565 +1566 +1567 +1568 +1569 +1570 +1571 +1572 +1573 +1574 +1575 +1576 +1577 +1578 +1579 +1580 +1581 +1582 +1583 +1584 +1585 +1586 +1587 +1588 +1589 +1590 +1591 +1592 +1593 +1594 +1595 +1596 +1597 +1598 +1599 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1608 +1609 +1610 +1611 +1612 +1613 +1614 +1615 +1616 +1617 +1618 +1619 +1620 +1621 +1622 +1623 +1624 +1625 +1626 +1627 +1628 +1629 +1630 +1631 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1640 +1641 +1642 +1643 +1644 +1645 +1646 +1647 +1648 +1649 +1650 +1651 +1652 +1653 +1654 +1655 +1656 +1657 +1658 +1659 +1660 +1661 +1662 +1663 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1672 +1673 +1674 +1675 +1676 +1677 +1678 +1679 +1680 +1681 +1682 +1683 +1684 +1685 +1686 +1687 +1688 +1689 +1690 +1691 +1692 +1693 +1694 +1695 +1696 +1697 +1698 +1699 +1700 +1701 +1702 +1703 +1704 +1705 +1706 +1707 +1708 +1709 +1710 +1711 +1712 +1713 +1714 +1715 +1716 +1717 +1718 +1719 +1720 +1721 +1722 +1723 +1724 +1725 +1726 +1727 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1736 +1737 +1738 +1739 +1740 +1741 +1742 +1743 +1744 +1745 +1746 +1747 +1748 +1749 +1750 +1751 +1752 +1753 +1754 +1755 +1756 +1757 +1758 +1759 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1768 +1769 +1770 +1771 +1772 +1773 +1774 +1775 +1776 +1777 +1778 +1779 +1780 +1781 +1782 +1783 +1784 +1785 +1786 +1787 +1788 +1789 +1790 +1791 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1800 +1801 +1802 +1803 +1804 +1805 +1806 +1807 +1808 +1809 +1810 +1811 +1812 +1813 +1814 +1815 +1816 +1817 +1818 +1819 +1820 +1821 +1822 +1823 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1832 +1833 +1834 +1835 +1836 +1837 +1838 +1839 +1840 +1841 +1842 +1843 +1844 +1845 +1846 +1847 +1848 +1849 +1850 +1851 +1852 +1853 +1854 +1855 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +1881 +1882 +1883 +1884 +1885 +1886 +1887 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1896 +1897 +1898 +1899 +1900 +1901 +1902 +1903 +1904 +1905 +1906 +1907 +1908 +1909 +1910 +1911 +1912 +1913 +1914 +1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1928 +1929 +1930 +1931 +1932 +1933 +1934 +1935 +1936 +1937 +1938 +1939 +1940 +1941 +1942 +1943 +1944 +1945 +1946 +1947 +1948 +1949 +1950 +1951 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1960 +1961 +1962 +1963 +1964 +1965 +1966 +1967 +1968 +1969 +1970 +1971 +1972 +1973 +1974 +1975 +1976 +1977 +1978 +1979 +1980 +1981 +1982 +1983 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +1992 +1993 +1994 +1995 +1996 +1997 +1998 +1999 +2000 +2001 +2002 +2003 +2004 +2005 +2006 +2007 +2008 +2009 +2010 +2011 +2012 +2013 +2014 +2015 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2024 +2025 +2026 +2027 +2028 +2029 +2030 +2031 +2032 +2033 +2034 +2035 +2036 +2037 +2038 +2039 +2040 +2041 +2042 +2043 +2044 +2045 +2046 +2047 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2056 +2057 +2058 +2059 +2060 +2061 +2062 +2063 +2064 +2065 +2066 +2067 +2068 +2069 +2070 +2071 +2072 +2073 +2074 +2075 +2076 +2077 +2078 +2079 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2088 +2089 +2090 +2091 +2092 +2093 +2094 +2095 +2096 +2097 +2098 +2099 +2100 +2101 +2102 +2103 +2104 +2105 +2106 +2107 +2108 +2109 +2110 +2111 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2120 +2121 +2122 +2123 +2124 +2125 +2126 +2127 +2128 +2129 +2130 +2131 +2132 +2133 +2134 +2135 +2136 +2137 +2138 +2139 +2140 +2141 +2142 +2143 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2152 +2153 +2154 +2155 +2156 +2157 +2158 +2159 +2160 +2161 +2162 +2163 +2164 +2165 +2166 +2167 +2168 +2169 +2170 +2171 +2172 +2173 +2174 +2175 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2184 +2185 +2186 +2187 +2188 +2189 +2190 +2191 +2192 +2193 +2194 +2195 +2196 +2197 +2198 +2199 +2200 +2201 +2202 +2203 +2204 +2205 +2206 +2207 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2216 +2217 +2218 +2219 +2220 +2221 +2222 +2223 +2224 +2225 +2226 +2227 +2228 +2229 +2230 +2231 +2232 +2233 +2234 +2235 +2236 +2237 +2238 +2239 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2248 +2249 +2250 +2251 +2252 +2253 +2254 +2255 +2256 +2257 +2258 +2259 +2260 +2261 +2262 +2263 +2264 +2265 +2266 +2267 +2268 +2269 +2270 +2271 +2272 +2273 +2274 +2275 +2276 +2277 +2278 +2279 +2280 +2281 +2282 +2283 +2284 +2285 +2286 +2287 +2288 +2289 +2290 +2291 +2292 +2293 +2294 +2295 +2296 +2297 +2298 +2299 +2300 +2301 +2302 +2303 +2304 +2305 +2306 +2307 +2308 +2309 +2310 +2311 +2312 +2313 +2314 +2315 +2316 +2317 +2318 +2319 +2320 +2321 +2322 +2323 +2324 +2325 +2326 +2327 +2328 +2329 +2330 +2331 +2332 +2333 +2334 +2335 +2336 +2337 +2338 +2339 +2340 +2341 +2342 +2343 +2344 +2345 +2346 +2347 +2348 +2349 +2350 +2351 +2352 +2353 +2354 +2355 +2356 +2357 +2358 +2359 +2360 +2361 +2362 +2363 +2364 +2365 +2366 +2367 +2368 +2369 +2370 +2371 +2372 +2373 +2374 +2375 +2376 +2377 +2378 +2379 +2380 +2381 +2382 +2383 +2384 +2385 +2386 +2387 +2388 +2389 +2390 +2391 +2392 +2393 +2394 +2395 +2396 +2397 +2398 +2399 +2400 +2401 +2402 +2403 +2404 +2405 +2406 +2407 +2408 +2409 +2410 +2411 +2412 +2413 +2414 +2415 +2416 +2417 +2418 +2419 +2420 +2421 +2422 +2423 +2424 +2425 +2426 +2427 +2428 +2429 +2430 +2431 +2432 +2433 +2434 +2435 +2436 +2437 +2438 +2439 +2440 +2441 +2442 +2443 +2444 +2445 +2446 +2447 +2448 +2449 +2450 +2451 +2452 +2453 +2454 +2455 +2456 +2457 +2458 +2459 +2460 +2461 +2462 +2463 +2464 +2465 +2466 +2467 +2468 +2469 +2470 +2471 +2472 +2473 +2474 +2475 +2476 +2477 +2478 +2479 +2480 +2481 +2482 +2483 +2484 +2485 +2486 +2487 +2488 +2489 +2490 +2491 +2492 +2493 +2494 +2495 +2496 +2497 +2498 +2499 +2500 +2501 +2502 +2503 +2504 +2505 +2506 +2507 +2508 +2509 +2510 +2511 +2512 +2513 +2514 +2515 +2516 +2517 +2518 +2519 +2520 +2521 +2522 +2523 +2524 +2525 +2526 +2527 +2528 +2529 +2530 +2531 +2532 +2533 +2534 +2535 +2536 +2537 +2538 +2539 +2540 +2541 +2542 +2543 +2544 +2545 +2546 +2547 +2548 +2549 +2550 +2551 +2552 +2553 +2554 +2555 +2556 +2557 +2558 +2559 +2560 +2561 +2562 +2563 +2564 +2565 +2566 +2567 +2568 +2569 +2570 +2571 +2572 +2573 +2574 +2575 +2576 +2577 +2578 +2579 +2580 +2581 +2582 +2583 +2584 +2585 +2586 +2587 +2588 +2589 +2590 +2591 +2592 +2593 +2594 +2595 +2596 +2597 +2598 +2599 +2600 +2601 +2602 +2603 +2604 +2605 +2606 +2607 +2608 +2609 +2610 +2611 +2612 +2613 +2614 +2615 +2616 +2617 +2618 +2619 +2620 +2621 +2622 +2623 +2624 +2625 +2626 +2627 +2628 +2629 +2630 +2631 +2632 +2633 +2634 +2635 +2636 +2637 +2638 +2639 +2640 +2641 +2642 +2643 +2644 +2645 +2646 +2647 +2648 +2649 +2650 +2651 +2652 +2653 +2654 +2655 +2656 +2657 +2658 +2659 +2660 +2661 +2662 +2663 +2664 +2665 +2666 +2667 +2668 +2669 +2670 +2671 +2672 +2673 +2674 +2675 +2676 +2677 +2678 +2679 +2680 +2681 +2682 +2683 +2684 +2685 +2686 +2687 +2688 +2689 +2690 +2691 +2692 +2693 +2694 +2695 +2696 +2697 +2698 +2699 +2700 +2701 +2702 +2703 +2704 +2705 +2706 +2707 +2708 +2709 +2710 +2711 +2712 +2713 +2714 +2715 +2716 +2717 +2718 +2719 +2720 +2721 +2722 +2723 +2724 +2725 +2726 +2727 +2728 +2729 +2730 +2731 +2732 +2733 +2734 +2735 +2736 +2737 +2738 +2739 +2740 +2741 +2742 +2743 +2744 +2745 +2746 +2747 +2748 +2749 +2750 +2751 +2752 +2753 +2754 +2755 +2756 +2757 +2758 +2759 +2760 +2761 +2762 +2763 +2764 +2765 +2766 +2767 +2768 +2769 +2770 +2771 +2772 +2773 +2774 +2775 +2776 +2777 +2778 +2779 +2780 +2781 +2782 +2783 +2784 +2785 +2786 +2787 +2788 +2789 +2790 +2791 +2792 +2793 +2794 +2795 +2796 +2797 +2798 +2799 +2800 +2801 +2802 +2803 +2804 +2805 +2806 +2807 +2808 +2809 +2810 +2811 +2812 +2813 +2814 +2815 +2816 +2817 +2818 +2819 +2820 +2821 +2822 +2823 +2824 +2825 +2826 +2827 +2828 +2829 +2830 +2831 +2832 +2833 +2834 +2835 +2836 +2837 +2838 +2839 +2840 +2841 +2842 +2843 +2844 +2845 +2846 +2847 +2848 +2849 +2850 +2851 +2852 +2853 +2854 +2855 +2856 +2857 +2858 +2859 +2860 +2861 +2862 +2863 +2864 +2865 +2866 +2867 +2868 +2869 +2870 +2871 +2872 +2873 +2874 +2875 +2876 +2877 +2878 +2879 +2880 +2881 +2882 +2883 +2884 +2885 +2886 +2887 +2888 +2889 +2890 +2891 +2892 +2893 +2894 +2895 +2896 +2897 +2898 +2899 +2900 +2901 +2902 +2903 +2904 +2905 +2906 +2907 +2908 +2909 +2910 +2911 +2912 +2913 +2914 +2915 +2916 +2917 +2918 +2919 +2920 +2921 +2922 +2923 +2924 +2925 +2926 +2927 +2928 +2929 +2930 +2931 +2932 +2933 +2934 +2935 +2936 +2937 +2938 +2939 +2940 +2941 +2942 +2943 +2944 +2945 +2946 +2947 +2948 +2949 +2950 +2951 +2952 +2953 +2954 +2955 +2956 +2957 +2958 +2959 +2960 +2961 +2962 +2963 +2964 +2965 +2966 +2967 +2968 +2969 +2970 +2971 +2972 +2973 +2974 +2975 +2976 +2977 +2978 +2979 +2980 +2981 +2982 +2983 +2984 +2985 +2986 +2987 +2988 +2989 +2990 +2991 +2992 +2993 +2994 +2995 +2996 +2997 +2998 +2999 +3000 +3001 +3002 +3003 +3004 +3005 +3006 +3007 +3008 +3009 +3010 +3011 +3012 +3013 +3014 +3015 +3016 +3017 +3018 +3019 +3020 +3021 +3022 +3023 +3024 +3025 +3026 +3027 +3028 +3029 +3030 +3031 +3032 +3033 +3034 +3035 +3036 +3037 +3038 +3039 +3040 +3041 +3042 +3043 +3044 +3045 +3046 +3047 +3048 +3049 +3050 +3051 +3052 +3053 +3054 +3055 +3056 +3057 +3058 +3059 +3060 +3061 +3062 +3063 +3064 +3065 +3066 +3067 +3068 +3069 +3070 +3071 +3072 +3073 +3074 +3075 +3076 +3077 +3078 +3079 +3080 +3081 +3082 +3083 +3084 +3085 +3086 +3087 +3088 +3089 +3090 +3091 +3092 +3093 +3094 +3095 +3096 +3097 +3098 +3099 +3100 +3101 +3102 +3103 +3104 +3105 +3106 +3107 +3108 +3109 +3110 +3111 +3112 +3113 +3114 +3115 +3116 +3117 +3118 +3119 +3120 +3121 +3122 +3123 +3124 +3125 +3126 +3127 +3128 +3129 +3130 +3131 +3132 +3133 +3134 +3135 +3136 +3137 +3138 +3139 +3140 +3141 +3142 +3143 +3144 +3145 +3146 +3147 +3148 +3149 +3150 +3151 +3152 +3153 +3154 +3155 +3156 +3157 +3158 +3159 +3160 +3161 +3162 +3163 +3164 +3165 +3166 +3167 +3168 +3169 +3170 +3171 +3172 +3173 +3174 +3175 +3176 +3177 +3178 +3179 +3180 +3181 +3182 +3183 +3184 +3185 +3186 +3187 +3188 +3189 +3190 +3191 +3192 +3193 +3194 +3195 +3196 +3197 +3198 +3199 +3200 +3201 +3202 +3203 +3204 +3205 +3206 +3207 +3208 +3209 +3210 +3211 +3212 +3213 +3214 +3215 +3216 +3217 +3218 +3219 +3220 +3221 +3222 +3223 +3224 +3225 +3226 +3227 +3228 +3229 +3230 +3231 +3232 +3233 +3234 +3235 +3236 +3237 +3238 +3239 +3240 +3241 +3242 +3243 +3244 +3245 +3246 +3247 +3248 +3249 +3250 +3251 +3252 +3253 +3254 +3255 +3256 +3257 +3258 +3259 +3260 +3261 +3262 +3263 +3264 +3265 +3266 +3267 +3268 +3269 +3270 +3271 +3272 +3273 +3274 +3275 +3276 +3277 +3278 +3279 +3280 +3281 +3282 +3283 +3284 +3285 +3286 +3287 +3288 +3289 +3290 +3291 +3292 +3293 +3294 +3295 +3296 +3297 +3298 +3299 +3300 +3301 +3302 +3303 +3304 +3305 +3306 +3307 +3308 +3309 +3310 +3311 +3312 +3313 +3314 +3315 +3316 +3317 +3318 +3319 +3320 +3321 +3322 +3323 +3324 +3325 +3326 +3327 +3328 +3329 +3330 +3331 +3332 +3333 +3334 +3335 +3336 +3337 +3338 +3339 +3340 +3341 +3342 +3343 +3344 +3345 +3346 +3347 +3348 +3349 +3350 +3351 +3352 +3353 +3354 +3355 +3356 +3357 +3358 +3359 +3360 +3361 +3362 +3363 +3364 +3365 +3366 +3367 +3368 +3369 +3370 +3371 +3372 +3373 +3374 +3375 +3376 +3377 +3378 +3379 +3380 +3381 +3382 +3383 +3384 +3385 +3386 +3387 +3388 +3389 +3390 +3391 +3392 +3393 +3394 +3395 +3396 +3397 +3398 +3399 +3400 +3401 +3402 +3403 +3404 +3405 +3406 +3407 +3408 +3409 +3410 +3411 +3412 +3413 +3414 +3415 +3416 +3417 +3418 +3419 +3420 +3421 +3422 +3423 +3424 +3425 +3426 +3427 +3428 +3429 +3430 +3431 +3432 +3433 +3434 +3435 +3436 +3437 +3438 +3439 +3440 +3441 +3442 +3443 +3444 +3445 +3446 +3447 +3448 +3449 +3450 +3451 +3452 +3453 +3454 +3455 +3456 +3457 +3458 +3459 +3460 +3461 +3462 +3463 +3464 +3465 +3466 +3467 +3468 +3469 +3470 +3471 +3472 +3473 +3474 +3475 +3476 +3477 +3478 +3479 +3480 +3481 +3482 +3483 +3484 +3485 +3486 +3487 +3488 +3489 +3490 +3491 +3492 +3493 +3494 +3495 +3496 +3497 +3498 +3499 +3500 +3501 +3502 +3503 +3504 +3505 +3506 +3507 +3508 +3509 +3510 +3511 +3512 +3513 +3514 +3515 +3516 +3517 +3518 +3519 +3520 +3521 +3522 +3523 +3524 +3525 +3526 +3527 +3528 +3529 +3530 +3531 +3532 +3533 +3534 +3535 +3536 +3537 +3538 +3539 +3540 +3541 +3542 +3543 +3544 +3545 +3546 +3547 +3548 +3549 +3550 +3551 +3552 +3553 +3554 +3555 +3556 +3557 +3558 +3559 +3560 +3561 +3562 +3563 +3564 +3565 +3566 +3567 +3568 +3569 +3570 +3571 +3572 +3573 +3574 +3575 +3576 +3577 +3578 +3579 +3580 +3581 +3582 +3583 +3584 +3585 +3586 +3587 +3588 +3589 +3590 +3591 +3592 +3593 +3594 +3595 +3596 +3597 +3598 +3599 +3600 +3601 +3602 +3603 +3604 +3605 +3606 +3607 +3608 +3609 +3610 +3611 +3612 +3613 +3614 +3615 +3616 +3617 +3618 +3619 +3620 +3621 +3622 +3623 +3624 +3625 +3626 +3627 +3628 +3629 +3630 +3631 +3632 +3633 +3634 +3635 +3636 +3637 +3638 +3639 +3640 +3641 +3642 +3643 +3644 +3645 +3646 +3647 +3648 +3649 +3650 +3651 +3652 +3653 +3654 +3655 +3656 +3657 +3658 +3659 +3660 +3661 +3662 +3663 +3664 +3665 +3666 +3667 +3668 +3669 +3670 +3671 +3672 +3673 +3674 +3675 +3676 +3677 +3678 +3679 +3680 +3681 +3682 +3683 +3684 +3685 +3686 +3687 +3688 +3689 +3690 +3691 +3692 +3693 +3694 +3695 +3696 +3697 +3698 +3699 +3700 +3701 +3702 +3703 +3704 +3705 +3706 +3707 +3708 +3709 +3710 +3711 +3712 +3713 +3714 +3715 +3716 +3717 +3718 +3719 +3720 +3721 +3722 +3723 +3724 +3725 +3726 +3727 +3728 +3729 +3730 +3731 +3732 +3733 +3734 +3735 +3736 +3737 +3738 +3739 +3740 +3741 +3742 +3743 +3744 +3745 +3746 +3747 +3748 +3749 +3750 +3751 +3752 +3753 +3754 +3755 +3756 +3757 +3758 +3759 +3760 +3761 +3762 +3763 +3764 +3765 +3766 +3767 +3768 +3769 +3770 +3771 +3772 +3773 +3774 +3775 +3776 +3777 +3778 +3779 +3780 +3781 +3782 +3783 +3784 +3785 +3786 +3787 +3788 +3789 +3790 +3791 +3792 +3793 +3794 +3795 +3796 +3797 +3798 +3799 +3800 +3801 +3802 +3803 +3804 +3805 +3806 +3807 +3808 +3809 +3810 +3811 +3812 +3813 +3814 +3815 +3816 +3817 +3818 +3819 +3820 +3821 +3822 +3823 +3824 +3825 +3826 +3827 +3828 +3829 +3830 +3831 +3832 +3833 +3834 +3835 +3836 +3837 +3838 +3839 +3840 +3841 +3842 +3843 +3844 +3845 +3846 +3847 +3848 +3849 +3850 +3851 +3852 +3853 +3854 +3855 +3856 +3857 +3858 +3859 +3860 +3861 +3862 +3863 +3864 +3865 +3866 +3867 +3868 +3869 +3870 +3871 +3872 +3873 +3874 +3875 +3876 +3877 +3878 +3879 +3880 +3881 +3882 +3883 +3884 +3885 +3886 +3887 +3888 +3889 +3890 +3891 +3892 +3893 +3894 +3895 +3896 +3897 +3898 +3899 +3900 +3901 +3902 +3903 +3904 +3905 +3906 +3907 +3908 +3909 +3910 +3911 +3912 +3913 +3914 +3915 +3916 +3917 +3918 +3919 +3920 +3921 +3922 +3923 +3924 +3925 +3926 +3927 +3928 +3929 +3930 +3931 +3932 +3933 +3934 +3935 +3936 +3937 +3938 +3939 +3940 +3941 +3942 +3943 +3944 +3945 +3946 +3947 +3948 +3949 +3950 +3951 +3952 +3953 +3954 +3955 +3956 +3957 +3958 +3959 +3960 +3961 +3962 +3963 +3964 +3965 +3966 +3967 +3968 +3969 +3970 +3971 +3972 +3973 +3974 +3975 +3976 +3977 +3978 +3979 +3980 +3981 +3982 +3983 +3984 +3985 +3986 +3987 +3988 +3989 +3990 +3991 +3992 +3993 +3994 +3995 +3996 +3997 +3998 +3999 +4000 +4001 +4002 +4003 +4004 +4005 +4006 +4007 +4008 +4009 +4010 +4011 +4012 +4013 +4014 +4015 +4016 +4017 +4018 +4019 +4020 +4021 +4022 +4023 +4024 +4025 +4026 +4027 +4028 +4029 +4030 +4031 +4032 +4033 +4034 +4035 +4036 +4037 +4038 +4039 +4040 +4041 +4042 +4043 +4044 +4045 +4046 +4047 +4048 +4049 +4050 +4051 +4052 +4053 +4054 +4055 +4056 +4057 +4058 +4059 +4060 +4061 +4062 +4063 +4064 +4065 +4066 +4067 +4068 +4069 +4070 +4071 +4072 +4073 +4074 +4075 +4076 +4077 +4078 +4079 +4080 +4081 +4082 +4083 +4084 +4085 +4086 +4087 +4088 +4089 +4090 +4091 +4092 +4093 +4094 +4095 +4096 +4097 +4098 +4099 +4100 +4101 +4102 +4103 +4104 +4105 +4106 +4107 +4108 +4109 +4110 +4111 +4112 +4113 +4114 +4115 +4116 +4117 +4118 +4119 +4120 +4121 +4122 +4123 +4124 +4125 +4126 +4127 +4128 +4129 +4130 +4131 +4132 +4133 +4134 +4135 +4136 +4137 +4138 +4139 +4140 +4141 +4142 +4143 +4144 +4145 +4146 +4147 +4148 +4149 +4150 +4151 +4152 +4153 +4154 +4155 +4156 +4157 +4158 +4159 +4160 +4161 +4162 +4163 +4164 +4165 +4166 +4167 +4168 +4169 +4170 +4171 +4172 +4173 +4174 +4175 +4176 +4177 +4178 +4179 +4180 +4181 +4182 +4183 +4184 +4185 +4186 +4187 +4188 +4189 +4190 +4191 +4192 +4193 +4194 +4195 +4196 +4197 +4198 +4199 +4200 +4201 +4202 +4203 +4204 +4205 +4206 +4207 +4208 +4209 +4210 +4211 +4212 +4213 +4214 +4215 +4216 +4217 +4218 +4219 +4220 +4221 +4222 +4223 +4224 +4225 +4226 +4227 +4228 +4229 +4230 +4231 +4232 +4233 +4234 +4235 +4236 +4237 +4238 +4239 +4240 +4241 +4242 +4243 +4244 +4245 +4246 +4247 +4248 +4249 +4250 +4251 +4252 +4253 +4254 +4255 +4256 +4257 +4258 +4259 +4260 +4261 +4262 +4263 +4264 +4265 +4266 +4267 +4268 +4269 +4270 +4271 +4272 +4273 +4274 +4275 +4276 +4277 +4278 +4279 +4280 +4281 +4282 +4283 +4284 +4285 +4286 +4287 +4288 +4289 +4290 +4291 +4292 +4293 +4294 +4295 +4296 +4297 +4298 +4299 +4300 +4301 +4302 +4303 +4304 +4305 +4306 +4307 +4308 +4309 +4310 +4311 +4312 +4313 +4314 +4315 +4316 +4317 +4318 +4319 +4320 +4321 +4322 +4323 +4324 +4325 +4326 +4327 +4328 +4329 +4330 +4331 +4332 +4333 +4334 +4335 +4336 +4337 +4338 +4339 +4340 +4341 +4342 +4343 +4344 +4345 +4346 +4347 +4348 +4349 +4350 +4351 +4352 +4353 +4354 +4355 +4356 +4357 +4358 +4359 +4360 +4361 +4362 +4363 +4364 +4365 +4366 +4367 +4368 +4369 +4370 +4371 +4372 +4373 +4374 +4375 +4376 +4377 +4378 +4379 +4380 +4381 +4382 +4383 +4384 +4385 +4386 +4387 +4388 +4389 +4390 +4391 +4392 +4393 +4394 +4395 +4396 +4397 +4398 +4399 +4400 +4401 +4402 +4403 +4404 +4405 +4406 +4407 +4408 +4409 +4410 +4411 +4412 +4413 +4414 +4415 +4416 +4417 +4418 +4419 +4420 +4421 +4422 +4423 +4424 +4425 +4426 +4427 +4428 +4429 +4430 +4431 +4432 +4433 +4434 +4435 +4436 +4437 +4438 +4439 +4440 +4441 +4442 +4443 +4444 +4445 +4446 +4447 +4448 +4449 +4450 +4451 +4452 +4453 +4454 +4455 +4456 +4457 +4458 +4459 +4460 +4461 +4462 +4463 +4464 +4465 +4466 +4467 +4468 +4469 +4470 +4471 +4472 +4473 +4474 +4475 +4476 +4477 +4478 +4479 +4480 +4481 +4482 +4483 +4484 +4485 +4486 +4487 +4488 +4489 +4490 +4491 +4492 +4493 +4494 +4495 +4496 +4497 +4498 +4499 +4500 +4501 +4502 +4503 +4504 +4505 +4506 +4507 +4508 +4509 +4510 +4511 +4512 +4513 +4514 +4515 +4516 +4517 +4518 +4519 +4520 +4521 +4522 +4523 +4524 +4525 +4526 +4527 +4528 +4529 +4530 +4531 +4532 +4533 +4534 +4535 +4536 +4537 +4538 +4539 +4540 +4541 +4542 +4543 +4544 +4545 +4546 +4547 +4548 +4549 +4550 +4551 +4552 +4553 +4554 +4555 +4556 +4557 +4558 +4559 +4560 +4561 +4562 +4563 +4564 +4565 +4566 +4567 +4568 +4569 +4570 +4571 +4572 +4573 +4574 +4575 +4576 +4577 +4578 +4579 +4580 +4581 +4582 +4583 +4584 +4585 +4586 +4587 +4588 +4589 +4590 +4591 +4592 +4593 +4594 +4595 +4596 +4597 +4598 +4599 +4600 +4601 +4602 +4603 +4604 +4605 +4606 +4607 +4608 +4609 +4610 +4611 +4612 +4613 +4614 +4615 +4616 +4617 +4618 +4619 +4620 +4621 +4622 +4623 +4624 +4625 +4626 +4627 +4628 +4629 +4630 +4631 +4632 +4633 +4634 +4635 +4636 +4637 +4638 +4639 +4640 +4641 +4642 +4643 +4644 +4645 +4646 +4647 +4648 +4649 +4650 +4651 +4652 +4653 +4654 +4655 +4656 +4657 +4658 +4659 +4660 +4661 +4662 +4663 +4664 +4665 +4666 +4667 +4668 +4669 +4670 +4671 +4672 +4673 +4674 +4675 +4676 +4677 +4678 +4679 +4680 +4681 +4682 +4683 +4684 +4685 +4686 +4687 +4688 +4689 +4690 +4691 +4692 +4693 +4694 +4695 +4696 +4697 +4698 +4699 +4700 +4701 +4702 +4703 +4704 +4705 +4706 +4707 +4708 +4709 +4710 +4711 +4712 +4713 +4714 +4715 +4716 +4717 +4718 +4719 +4720 +4721 +4722 +4723 +4724 +4725 +4726 +4727 +4728 +4729 +4730 +4731 +4732 +4733 +4734 +4735 +4736 +4737 +4738 +4739 +4740 +4741 +4742 +4743 +4744 +4745 +4746 +4747 +4748 +4749 +4750 +4751 +4752 +4753 +4754 +4755 +4756 +4757 +4758 +4759 +4760 +4761 +4762 +4763 +4764 +4765 +4766 +4767 +4768 +4769 +4770 +4771 +4772 +4773 +4774 +4775 +4776 +4777 +4778 +4779 +4780 +4781 +4782 +4783 +4784 +4785 +4786 +4787 +4788 +4789 +4790 +4791 +4792 +4793 +4794 +4795 +4796 +4797 +4798 +4799 +4800 +4801 +4802 +4803 +4804 +4805 +4806 +4807 +4808 +4809 +4810 +4811 +4812 +4813 +4814 +4815 +4816 +4817 +4818 +4819 +4820 +4821 +4822 +4823 +4824 +4825 +4826 +4827 +4828 +4829 +4830 +4831 +4832 +4833 +4834 +4835 +4836 +4837 +4838 +4839 +4840 +4841 +4842 +4843 +4844 +4845 +4846 +4847 +4848 +4849 +4850 +4851 +4852 +4853 +4854 +4855 +4856 +4857 +4858 +4859 +4860 +4861 +4862 +4863 +4864 +4865 +4866 +4867 +4868 +4869 +4870 +4871 +4872 +4873 +4874 +4875 +4876 +4877 +4878 +4879 +4880 +4881 +4882 +4883 +4884 +4885 +4886 +4887 +4888 +4889 +4890 +4891 +4892 +4893 +4894 +4895 +4896 +4897 +4898 +4899 +4900 +4901 +4902 +4903 +4904 +4905 +4906 +4907 +4908 +4909 +4910 +4911 +4912 +4913 +4914 +4915 +4916 +4917 +4918 +4919 +4920 +4921 +4922 +4923 +4924 +4925 +4926 +4927 +4928 +4929 +4930 +4931 +4932 +4933 +4934 +4935 +4936 +4937 +4938 +4939 +4940 +4941 +4942 +4943 +4944 +4945 +4946 +4947 +4948 +4949 +4950 +4951 +4952 +4953 +4954 +4955 +4956 +4957 +4958 +4959 +4960 +4961 +4962 +4963 +4964 +4965 +4966 +4967 +4968 +4969 +4970 +4971 +4972 +4973 +4974 +4975 +4976 +4977 +4978 +4979 +4980 +4981 +4982 +4983 +4984 +4985 +4986 +4987 +4988 +4989 +4990 +4991 +4992 +4993 +4994 +4995 +4996 +4997 +4998 +4999 +5000 +5001 +5002 +5003 +5004 +5005 +5006 +5007 +5008 +5009 +5010 +5011 +5012 +5013 +5014 +5015 +5016 +5017 +5018 +5019 +5020 +5021 +5022 +5023 +5024 +5025 +5026 +5027 +5028 +5029 +5030 +5031 +5032 +5033 +5034 +5035 +5036 +5037 +5038 +5039 +5040 +5041 +5042 +5043 +5044 +5045 +5046 +5047 +5048 +5049 +5050 +5051 +5052 +5053 +5054 +5055 +5056 +5057 +5058 +5059 +5060 +5061 +5062 +5063 +5064 +5065 +5066 +5067 +5068 +5069 +5070 +5071 +5072 +5073 +5074 +5075 +5076 +5077 +5078 +5079 +5080 +5081 +5082 +5083 +5084 +5085 +5086 +5087 +5088 +5089 +5090 +5091 +5092 +5093 +5094 +5095 +5096 +5097 +5098 +5099 +5100 +5101 +5102 +5103 +5104 +5105 +5106 +5107 +5108 +5109 +5110 +5111 +5112 +5113 +5114 +5115 +5116 +5117 +5118 +5119 +5120 +5121 +5122 +5123 +5124 +5125 +5126 +5127 +5128 +5129 +5130 +5131 +5132 +5133 +5134 +5135 +5136 +5137 +5138 +5139 +5140 +5141 +5142 +5143 +5144 +5145 +5146 +5147 +5148 +5149 +5150 +5151 +5152 +5153 +5154 +5155 +5156 +5157 +5158 +5159 +5160 +5161 +5162 +5163 +5164 +5165 +5166 +5167 +5168 +5169 +5170 +5171 +5172 +5173 +5174 +5175 +5176 +5177 +5178 +5179 +5180 +5181 +5182 +5183 +5184 +5185 +5186 +5187 +5188 +5189 +5190 +5191 +5192 +5193 +5194 +5195 +5196 +5197 +5198 +5199 +5200 +5201 +5202 +5203 +5204 +5205 +5206 +5207 +5208 +5209 +5210 +5211 +5212 +5213 +5214 +5215 +5216 +5217 +5218 +5219 +5220 +5221 +5222 +5223 +5224 +5225 +5226 +5227 +5228 +5229 +5230 +5231 +5232 +5233 +5234 +5235 +5236 +5237 +5238 +5239 +5240 +5241 +5242 +5243 +5244 +5245 +5246 +5247 +5248 +5249 +5250 +5251 +5252 +5253 +5254 +5255 +5256 +5257 +5258 +5259 +5260 +5261 +5262 +5263 +5264 +5265 +5266 +5267 +5268 +5269 +5270 +5271 +5272 +5273 +5274 +5275 +5276 +5277 +5278 +5279 +5280 +5281 +5282 +5283 +5284 +5285 +5286 +5287 +5288 +5289 +5290 +5291 +5292 +5293 +5294 +5295 +5296 +5297 +5298 +5299 +5300 +5301 +5302 +5303 +5304 +5305 +5306 +5307 +5308 +5309 +5310 +5311 +5312 +5313 +5314 +5315 +5316 +5317 +5318 +5319 +5320 +5321 +5322 +5323 +5324 +5325 +5326 +5327 +5328 +5329 +5330 +5331 +5332 +5333 +5334 +5335 +5336 +5337 +5338 +5339 +5340 +5341 +5342 +5343 +5344 +5345 +5346 +5347 +5348 +5349 +5350 +5351 +5352 +5353 +5354 +5355 +5356 +5357 +5358 +5359 +5360 +5361 +5362 +5363 +5364 +5365 +5366 +5367 +5368 +5369 +5370 +5371 +5372 +5373 +5374 +5375 +5376 +5377 +5378 +5379 +5380 +5381 +5382 +5383 +5384 +5385 +5386 +5387 +5388 +5389 +5390 +5391 +5392 +5393 +5394 +5395 +5396 +5397 +5398 +5399 +5400 +5401 +5402 +5403 +5404 +5405 +5406 +5407 +5408 +5409 +5410 +5411 +5412 +5413 +5414 +5415 +5416 +5417 +5418 +5419 +5420 +5421 +5422 +5423 +5424 +5425 +5426 +5427 +5428 +5429 +5430 +5431 +5432 +5433 +5434 +5435 +5436 +5437 +5438 +5439 +5440 +5441 +5442 +5443 +5444 +5445 +5446 +5447 +5448 +5449 +5450 +5451 +5452 +5453 +5454 +5455 +5456 +5457 +5458 +5459 +5460 +5461 +5462 +5463 +5464 +5465 +5466 +5467 +5468 +5469 +5470 +5471 +5472 +5473 +5474 +5475 +5476 +5477 +5478 +5479 +5480 +5481 +5482 +5483 +5484 +5485 +5486 +5487 +5488 +5489 +5490 +5491 +5492 +5493 +5494 +5495 +5496 +5497 +5498 +5499 +5500 +5501 +5502 +5503 +5504 +5505 +5506 +5507 +5508 +5509 +5510 +5511 +5512 +5513 +5514 +5515 +5516 +5517 +5518 +5519 +5520 +5521 +5522 +5523 +5524 +5525 +5526 +5527 +5528 +5529 +5530 +5531 +5532 +5533 +5534 +5535 +5536 +5537 +5538 +5539 +5540 +5541 +5542 +5543 +5544 +5545 +5546 +5547 +5548 +5549 +5550 +5551 +5552 +5553 +5554 +5555 +5556 +5557 +5558 +5559 +5560 +5561 +5562 +5563 +5564 +5565 +5566 +5567 +5568 +5569 +5570 +5571 +5572 +5573 +5574 +5575 +5576 +5577 +5578 +5579 +5580 +5581 +5582 +5583 +5584 +5585 +5586 +5587 +5588 +5589 +5590 +5591 +5592 +5593 +5594 +5595 +5596 +5597 +5598 +5599 +5600 +5601 +5602 +5603 +5604 +5605 +5606 +5607 +5608 +5609 +5610 +5611 +5612 +5613 +5614 +5615 +5616 +5617 +5618 +5619 +5620 +5621 +5622 +5623 +5624 +5625 +5626 +5627 +5628 +5629 +5630 +5631 +5632 +5633 +5634 +5635 +5636 +5637 +5638 +5639 +5640 +5641 +5642 +5643 +5644 +5645 +5646 +5647 +5648 +5649 +5650 +5651 +5652 +5653 +5654 +5655 +5656 +5657 +5658 +5659 +5660 +5661 +5662 +5663 +5664 +5665 +5666 +5667 +5668 +5669 +5670 +5671 +5672 +5673 +5674 +5675 +5676 +5677 +5678 +5679 +5680 +5681 +5682 +5683 +5684 +5685 +5686 +5687 +5688 +5689 +5690 +5691 +5692 +5693 +5694 +5695 +5696 +5697 +5698 +5699 +5700 +5701 +5702 +5703 +5704 +5705 +5706 +5707 +5708 +5709 +5710 +5711 +5712 +5713 +5714 +5715 +5716 +5717 +5718 +5719 +5720 +5721 +5722 +5723 +5724 +5725 +5726 +5727 +5728 +5729 +5730 +5731 +5732 +5733 +5734 +5735 +5736 +5737 +5738 +5739 +5740 +5741 +5742 +5743 +5744 +5745 +5746 +5747 +5748 +5749 +5750 +5751 +5752 +5753 +5754 +5755 +5756 +5757 +5758 +5759 +5760 +5761 +5762 +5763 +5764 +5765 +5766 +5767 +5768 +5769 +5770 +5771 +5772 +5773 +5774 +5775 +5776 +5777 +5778 +5779 +5780 +5781 +5782 +5783 +5784 +5785 +5786 +5787 +5788 +5789 +5790 +5791 +5792 +5793 +5794 +5795 +5796 +5797 +5798 +5799 +5800 +5801 +5802 +5803 +5804 +5805 +5806 +5807 +5808 +5809 +5810 +5811 +5812 +5813 +5814 +5815 +5816 +5817 +5818 +5819 +5820 +5821 +5822 +5823 +5824 +5825 +5826 +5827 +5828 +5829 +5830 +5831 +5832 +5833 +5834 +5835 +5836 +5837 +5838 +5839 +5840 +5841 +5842 +5843 +5844 +5845 +5846 +5847 +5848 +5849 +5850 +5851 +5852 +5853 +5854 +5855 +5856 +5857 +5858 +5859 +5860 +5861 +5862 +5863 +5864 +5865 +5866 +5867 +5868 +5869 +5870 +5871 +5872 +5873 +5874 +5875 +5876 +5877 +5878 +5879 +5880 +5881 +5882 +5883 +5884 +5885 +5886 +5887 +5888 +5889 +5890 +5891 +5892 +5893 +5894 +5895 +5896 +5897 +5898 +5899 +5900 +5901 +5902 +5903 +5904 +5905 +5906 +5907 +5908 +5909 +5910 +5911 +5912 +5913 +5914 +5915 +5916 +5917 +5918 +5919 +5920 +5921 +5922 +5923 +5924 +5925 +5926 +5927 +5928 +5929 +5930 +5931 +5932 +5933 +5934 +5935 +5936 +5937 +5938 +5939 +5940 +5941 +5942 +5943 +5944 +5945 +5946 +5947 +5948 +5949 +5950 +5951 +5952 +5953 +5954 +5955 +5956 +5957 +5958 +5959 +5960 +5961 +5962 +5963 +5964 +5965 +5966 +5967 +5968 +5969 +5970 +5971 +5972 +5973 +5974 +5975 +5976 +5977 +5978 +5979 +5980 +5981 +5982 +5983 +5984 +5985 +5986 +5987 +5988 +5989 +5990 +5991 +5992 +5993 +5994 +5995 +5996 +5997 +5998 +5999 +6000 +6001 +6002 +6003 +6004 +6005 +6006 +6007 +6008 +6009 +6010 +6011 +6012 +6013 +6014 +6015 +6016 +6017 +6018 +6019 +6020 +6021 +6022 +6023 +6024 +6025 +6026 +6027 +6028 +6029 +6030 +6031 +6032 +6033 +6034 +6035 +6036 +6037 +6038 +6039 +6040 +6041 +6042 +6043 +6044 +6045 +6046 +6047 +6048 +6049 +6050 +6051 +6052 +6053 +6054 +6055 +6056 +6057 +6058 +6059 +6060 +6061 +6062 +6063 +6064 +6065 +6066 +6067 +6068 +6069 +6070 +6071 +6072 +6073 +6074 +6075 +6076 +6077 +6078 +6079 +6080 +6081 +6082 +6083 +6084 +6085 +6086 +6087 +6088 +6089 +6090 +6091 +6092 +6093 +6094 +6095 +6096 +6097 +6098 +6099 +6100 +6101 +6102 +6103 +6104 +6105 +6106 +6107 +6108 +6109 +6110 +6111 +6112 +6113 +6114 +6115 +6116 +6117 +6118 +6119 +6120 +6121 +6122 +6123 +6124 +6125 +6126 +6127 +6128 +6129 +6130 +6131 +6132 +6133 +6134 +6135 +6136 +6137 +6138 +6139 +6140 +6141 +6142 +6143 +6144 +6145 +6146 +6147 +6148 +6149 +6150 +6151 +6152 +6153 +6154 +6155 +6156 +6157 +6158 +6159 +6160 +6161 +6162 +6163 +6164 +6165 +6166 +6167 +6168 +6169 +6170 +6171 +6172 +6173 +6174 +6175 +6176 +6177 +6178 +6179 +6180 +6181 +6182 +6183 +6184 +6185 +6186 +6187 +6188 +6189 +6190 +6191 +6192 +6193 +6194 +6195 +6196 +6197 +6198 +6199 +6200 +6201 +6202 +6203 +6204 +6205 +6206 +6207 +6208 +6209 +6210 +6211 +6212 +6213 +6214 +6215 +6216 +6217 +6218 +6219 +6220 +6221 +6222 +6223 +6224 +6225 +6226 +6227 +6228 +6229 +6230 +6231 +6232 +6233 +6234 +6235 +6236 +6237 +6238 +6239 +6240 +6241 +6242 +6243 +6244 +6245 +6246 +6247 +6248 +6249 +6250 +6251 +6252 +6253 +6254 +6255 +6256 +6257 +6258 +6259 +6260 +6261 +6262 +6263 +6264 +6265 +6266 +6267 +6268 +6269 +6270 +6271 +6272 +6273 +6274 +6275 +6276 +6277 +6278 +6279 +6280 +6281 +6282 +6283 +6284 +6285 +6286 +6287 +6288 +6289 +6290 +6291 +6292 +6293 +6294 +6295 +6296 +6297 +6298 +6299 +6300 +6301 +6302 +6303 +6304 +6305 +6306 +6307 +6308 +6309 +6310 +6311 +6312 +6313 +6314 +6315 +6316 +6317 +6318 +6319 +6320 +6321 +6322 +6323 +6324 +6325 +6326 +6327 +6328 +6329 +6330 +6331 +6332 +6333 +6334 +6335 +6336 +6337 +6338 +6339 +6340 +6341 +6342 +6343 +6344 +6345 +6346 +6347 +6348 +6349 +6350 +6351 +6352 +6353 +6354 +6355 +6356 +6357 +6358 +6359 +6360 +6361 +6362 +6363 +6364 +6365 +6366 +6367 +6368 +6369 +6370 +6371 +6372 +6373 +6374 +6375 +6376 +6377 +6378 +6379 +6380 +6381 +6382 +6383 +6384 +6385 +6386 +6387 +6388 +6389 +6390 +6391 +6392 +6393 +6394 +6395 +6396 +6397 +6398 +6399 +6400 +6401 +6402 +6403 +6404 +6405 +6406 +6407 +6408 +6409 +6410 +6411 +6412 +6413 +6414 +6415 +6416 +6417 +6418 +6419 +6420 +6421 +6422 +6423 +6424 +6425 +6426 +6427 +6428 +6429 +6430 +6431 +6432 +6433 +6434 +6435 +6436 +6437 +6438 +6439 +6440 +6441 +6442 +6443 +6444 +6445 +6446 +6447 +6448 +6449 +6450 +6451 +6452 +6453 +6454 +6455 +6456 +6457 +6458 +6459 +6460 +6461 +6462 +6463 +6464 +6465 +6466 +6467 +6468 +6469 +6470 +6471 +6472 +6473 +6474 +6475 +6476 +6477 +6478 +6479 +6480 +6481 +6482 +6483 +6484 +6485 +6486 +6487 +6488 +6489 +6490 +6491 +6492 +6493 +6494 +6495 +6496 +6497 +6498 +6499 +6500 +6501 +6502 +6503 +6504 +6505 +6506 +6507 +6508 +6509 +6510 +6511 +6512 +6513 +6514 +6515 +6516 +6517 +6518 +6519 +6520 +6521 +6522 +6523 +6524 +6525 +6526 +6527 +6528 +6529 +6530 +6531 +6532 +6533 +6534 +6535 +6536 +6537 +6538 +6539 +6540 +6541 +6542 +6543 +6544 +6545 +6546 +6547 +6548 +6549 +6550 +6551 +6552 +6553 +6554 +6555 +6556 +6557 +6558 +6559 +6560 +6561 +6562 +6563 +6564 +6565 +6566 +6567 +6568 +6569 +6570 +6571 +6572 +6573 +6574 +6575 +6576 +6577 +6578 +6579 +6580 +6581 +6582 +6583 +6584 +6585 +6586 +6587 +6588 +6589 +6590 +6591 +6592 +6593 +6594 +6595 +6596 +6597 +6598 +6599 +6600 +6601 +6602 +6603 +6604 +6605 +6606 +6607 +6608 +6609 +6610 +6611 +6612 +6613 +6614 +6615 +6616 +6617 +6618 +6619 +6620 +6621 +6622 +6623 +6624 +6625 +6626 +6627 +6628 +6629 +6630 +6631 +6632 +6633 +6634 +6635 +6636 +6637 +6638 +6639 +6640 +6641 +6642 +6643 +6644 +6645 +6646 +6647 +6648 +6649 +6650 +6651 +6652 +6653 +6654 +6655 +6656 +6657 +6658 +6659 +6660 +6661 +6662 +6663 +6664 +6665 +6666 +6667 +6668 +6669 +6670 +6671 +6672 +6673 +6674 +6675 +6676 +6677 +6678 +6679 +6680 +6681 +6682 +6683 +6684 +6685 +6686 +6687 +6688 +6689 +6690 +6691 +6692 +6693 +6694 +6695 +6696 +6697 +6698 +6699 +6700 +6701 +6702 +6703 +6704 +6705 +6706 +6707 +6708 +6709 +6710 +6711 +6712 +6713 +6714 +6715 +6716 +6717 +6718 +6719 +6720 +6721 +6722 +6723 +6724 +6725 +6726 +6727 +6728 +6729 +6730 +6731 +6732 +6733 +6734 +6735 +6736 +6737 +6738 +6739 +6740 +6741 +6742 +6743 +6744 +6745 +6746 +6747 +6748 +6749 +6750 +6751 +6752 +6753 +6754 +6755 +6756 +6757 +6758 +6759 +6760 +6761 +6762 +6763 +6764 +6765 +6766 +6767 +6768 +6769 +6770 +6771 +6772 +6773 +6774 +6775 +6776 +6777 +6778 +6779 +6780 +6781 +6782 +6783 +6784 +6785 +6786 +6787 +6788 +6789 +6790 +6791 +6792 +6793 +6794 +6795 +6796 +6797 +6798 +6799 +6800 +6801 +6802 +6803 +6804 +6805 +6806 +6807 +6808 +6809 +6810 +6811 +6812 +6813 +6814 +6815 +6816 +6817 +6818 +6819 +6820 +6821 +6822 +6823 +6824 +6825 +6826 +6827 +6828 +6829 +6830 +6831 +6832 +6833 +6834 +6835 +6836 +6837 +6838 +6839 +6840 +6841 +6842 +6843 +6844 +6845 +6846 +6847 +6848 +6849 +6850 +6851 +6852 +6853 +6854 +6855 +6856 +6857 +6858 +6859 +6860 +6861 +6862 +6863 +6864 +6865 +6866 +6867 +6868 +6869 +6870 +6871 +6872 +6873 +6874 +6875 +6876 +6877 +6878 +6879 +6880 +6881 +6882 +6883 +6884 +6885 +6886  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +317x +  +317x +1x +316x +1x +  +  +317x +2x +315x +71x +  +244x +244x +244x +244x +244x +244x +  +244x +244x +244x +  +244x +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +5x +5x +1x +  +  +5x +  +5x +5x +5x +1x +1x +4x +1x +1x +  +  +5x +5x +  +5x +1x +  +  +5x +5x +1x +4x +1x +  +  +5x +  +  +  +  +  +  +  +  +1x +306x +306x +306x +  +306x +306x +1x +  +  +306x +306x +6x +  +  +306x +306x +306x +  +  +  +  +  +  +  +  +  +  +1x +3x +3x +3x +300x +300x +300x +300x +300x +300x +12x +12x +  +  +  +3x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// Copyright (c) 2014-2019 Walter Bender
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the The GNU Affero General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// You should have received a copy of the GNU Affero General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
+//
+// Munsell data derived from CPAN Color::Model::Munsell
+// http://search.cpan.org/~tonodera/Color-Model-Munsell-0.02/
+// which is a vast improvement over the Munsell Perl module
+// written by Walter Bender and Jon Orwant back in the day.
+ 
+/* global createjs */
+ 
+/*
+   Global locations
+    js/loader.js
+        createjs
+ */
+ 
+/* exported getMunsellColor, getcolor, searchColors, COLORS40 */
+ 
+/** 
+ * Array containing 40 high-chroma colors, each represented as [value, chroma, RGB].
+ * @type {Array}
+ */
+const COLORS40 = [
+    [6, 24, "#ff007e"],
+    [6, 24, "#ff0066"],
+    [6, 24, "#ff0048"],
+    [6, 26, "#ff0000"],
+    [6, 26, "#ff3000"],
+    [6, 20, "#fd6600"],
+    [8, 24, "#ffa300"],
+    [8, 22, "#ffb000"],
+    [8, 22, "#ffb900"],
+    [8, 22, "#ffc000"],
+    [9, 22, "#ffe400"],
+    [9, 22, "#ffe800"],
+    [9, 22, "#f6ee00"],
+    [9, 22, "#e1f400"],
+    [9, 22, "#c4fb00"],
+    [8, 28, "#4eeb00"],
+    [8, 22, "#00f200"],
+    [8, 28, "#00fd3c"],
+    [6, 28, "#00c260"],
+    [6, 28, "#00c273"],
+    [6, 28, "#00c286"],
+    [6, 28, "#00c29d"],
+    [6, 26, "#00c1b6"],
+    [6, 24, "#00c0ca"],
+    [6, 24, "#00c0e7"],
+    [6, 20, "#00b9f1"],
+    [6, 20, "#00b5ff"],
+    [6, 20, "#00b0ff"],
+    [6, 20, "#00abff"],
+    [6, 18, "#00a1ff"],
+    [4, 28, "#005dff"],
+    [4, 28, "#4231ff"],
+    [4, 28, "#8000fe"],
+    [4, 28, "#a000ef"],
+    [6, 28, "#f009ff"],
+    [6, 28, "#ff00ff"],
+    [6, 28, "#ff00f9"],
+    [6, 28, "#ff00d9"],
+    [6, 26, "#ff00b2"],
+    [6, 24, "#ff0098"]
+];
+ 
+/**
+ * Munsell color representation array.
+ * The array is organized in a sequence of Munsell colors ranging from 10RP to 7.5RP,
+ * with variations in value (V0 to V10) and chroma (C0 to C28 by 2).
+ *
+ * Each element in the array represents a specific Munsell color in RGB format.
+ *
+ * @type {Array<string>}
+ */
+const MUNSELL = [
+    // 10RP (0R)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2c1620",
+    "#350f23",
+    "#3d0526",
+    "#450029",
+    "#4c002c",
+    "#530030",
+    "#5a0034",
+    "#600037",
+    "#600037",
+    "#600037",
+    "#600037",
+    "#600037",
+    "#600037",
+    "#600037",
+    "#313131",
+    "#412c32",
+    "#4c2633",
+    "#561e34",
+    "#601136",
+    "#690038",
+    "#73003b",
+    "#7c003d",
+    "#850040",
+    "#8d0043",
+    "#8d0043",
+    "#8d0043",
+    "#8d0043",
+    "#8d0043",
+    "#8d0043",
+    "#484848",
+    "#5b4247",
+    "#693c45",
+    "#753444",
+    "#802843",
+    "#8b1843",
+    "#960043",
+    "#9f0043",
+    "#aa0044",
+    "#b30044",
+    "#bc0046",
+    "#bc0046",
+    "#bc0046",
+    "#bc0046",
+    "#bc0046",
+    "#616161",
+    "#735c5f",
+    "#82565d",
+    "#8f4e5b",
+    "#9b4659",
+    "#a63c58",
+    "#b12e57",
+    "#bc1756",
+    "#c60056",
+    "#d10056",
+    "#db0056",
+    "#e30057",
+    "#ed0058",
+    "#ed0058",
+    "#ed0058",
+    "#7a7a7a",
+    "#8b7679",
+    "#9b7076",
+    "#a96973",
+    "#b76171",
+    "#c3596f",
+    "#d04d6d",
+    "#da416c",
+    "#e62d6b",
+    "#f0036a",
+    "#fc0069",
+    "#ff0069",
+    "#ff0068",
+    "#ff0068",
+    "#ff0068",
+    "#949494",
+    "#a59193",
+    "#b58b8f",
+    "#c4848c",
+    "#d17e8a",
+    "#de7587",
+    "#eb6c85",
+    "#f76183",
+    "#ff5281",
+    "#ff417f",
+    "#ff277f",
+    "#ff007e",
+    "#ff007e",
+    "#ff007e",
+    "#ff007e",
+    "#aeaeae",
+    "#beabad",
+    "#cfa6aa",
+    "#df9fa6",
+    "#ee98a3",
+    "#fc90a0",
+    "#ff869d",
+    "#ff7b9a",
+    "#ff6e98",
+    "#ff6095",
+    "#ff5293",
+    "#ff5293",
+    "#ff5293",
+    "#ff5293",
+    "#ff5293",
+    "#c8c8c8",
+    "#d7c7c8",
+    "#eac0c4",
+    "#fbbac0",
+    "#ffb2bc",
+    "#ffa9b9",
+    "#ff9db5",
+    "#ff94b1",
+    "#ff94b1",
+    "#ff94b1",
+    "#ff94b1",
+    "#ff94b1",
+    "#ff94b1",
+    "#ff94b1",
+    "#ff94b1",
+    "#e3e3e3",
+    "#f2e2e3",
+    "#ffdbde",
+    "#ffd3da",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffccd6",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5R
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2d161e",
+    "#360f1f",
+    "#3f0321",
+    "#470023",
+    "#4e0025",
+    "#570028",
+    "#570028",
+    "#570028",
+    "#570028",
+    "#570028",
+    "#570028",
+    "#570028",
+    "#570028",
+    "#570028",
+    "#313131",
+    "#422c30",
+    "#4d262f",
+    "#571e2f",
+    "#620f2f",
+    "#6c002f",
+    "#760030",
+    "#800031",
+    "#890032",
+    "#890032",
+    "#890032",
+    "#890032",
+    "#890032",
+    "#890032",
+    "#890032",
+    "#484848",
+    "#5c4244",
+    "#6a3c41",
+    "#76343d",
+    "#82283a",
+    "#8d1738",
+    "#980036",
+    "#a10034",
+    "#ab0033",
+    "#b50032",
+    "#c10032",
+    "#c10032",
+    "#c10032",
+    "#c10032",
+    "#c10032",
+    "#616161",
+    "#745c5d",
+    "#835659",
+    "#904e55",
+    "#9d4651",
+    "#a83c4e",
+    "#b32e4b",
+    "#be1548",
+    "#c80046",
+    "#d30044",
+    "#dd0041",
+    "#e60041",
+    "#ef003e",
+    "#ef003e",
+    "#ef003e",
+    "#7a7a7a",
+    "#8c7677",
+    "#9c7072",
+    "#ab696d",
+    "#b86169",
+    "#c55864",
+    "#d24c60",
+    "#dc415d",
+    "#e82d5a",
+    "#f30057",
+    "#ff0055",
+    "#ff0054",
+    "#ff0053",
+    "#ff0052",
+    "#ff0051",
+    "#949494",
+    "#a59191",
+    "#b68b8c",
+    "#c68486",
+    "#d37d81",
+    "#e1757d",
+    "#ee6b78",
+    "#f96174",
+    "#ff5270",
+    "#ff416c",
+    "#ff2a69",
+    "#ff0067",
+    "#ff0066",
+    "#ff0066",
+    "#ff0066",
+    "#aeaeae",
+    "#bfabab",
+    "#d0a5a6",
+    "#e09fa0",
+    "#f0989b",
+    "#fe9095",
+    "#ff868f",
+    "#ff7b8b",
+    "#ff6e86",
+    "#ff6282",
+    "#ff6282",
+    "#ff6282",
+    "#ff6282",
+    "#ff6282",
+    "#ff6282",
+    "#c8c8c8",
+    "#d8c7c7",
+    "#ecc0c0",
+    "#fdb9ba",
+    "#ffb1b3",
+    "#ffa9ad",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#ff9ea6",
+    "#e3e3e3",
+    "#f3e2e2",
+    "#ffdbda",
+    "#ffd3d3",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffcccd",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5R
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2e161c",
+    "#370f1b",
+    "#40021c",
+    "#48001c",
+    "#50001d",
+    "#59001f",
+    "#59001f",
+    "#59001f",
+    "#59001f",
+    "#59001f",
+    "#59001f",
+    "#59001f",
+    "#59001f",
+    "#59001f",
+    "#313131",
+    "#422c2e",
+    "#4e262b",
+    "#581d29",
+    "#630e26",
+    "#6e0025",
+    "#770024",
+    "#810024",
+    "#8b0024",
+    "#8b0024",
+    "#8b0024",
+    "#8b0024",
+    "#8b0024",
+    "#8b0024",
+    "#8b0024",
+    "#484848",
+    "#5c4342",
+    "#6b3c3c",
+    "#763437",
+    "#822a31",
+    "#8d192c",
+    "#980028",
+    "#a10025",
+    "#ab0021",
+    "#b6001f",
+    "#c1001e",
+    "#c1001e",
+    "#c1001e",
+    "#c1001e",
+    "#c1001e",
+    "#616161",
+    "#745c5b",
+    "#845554",
+    "#914f4d",
+    "#9e4647",
+    "#a93c41",
+    "#b3303b",
+    "#be1a34",
+    "#c8002f",
+    "#d30029",
+    "#dc0025",
+    "#e40021",
+    "#ed001d",
+    "#ed001d",
+    "#ed001d",
+    "#7a7a7a",
+    "#8c7675",
+    "#9d706e",
+    "#ac6966",
+    "#ba625f",
+    "#c65858",
+    "#d34d51",
+    "#dd424b",
+    "#e92f44",
+    "#f4083e",
+    "#fd0039",
+    "#ff0034",
+    "#ff0031",
+    "#ff0031",
+    "#ff0031",
+    "#949494",
+    "#a6918f",
+    "#b78b88",
+    "#c78480",
+    "#d47d79",
+    "#e27572",
+    "#ef6c6b",
+    "#fb6264",
+    "#ff545c",
+    "#ff4455",
+    "#ff3150",
+    "#ff0a4b",
+    "#ff0048",
+    "#ff0048",
+    "#ff0048",
+    "#aeaeae",
+    "#c0abaa",
+    "#d2a5a2",
+    "#e29f9a",
+    "#f29892",
+    "#ff908b",
+    "#ff8682",
+    "#ff7c7b",
+    "#ff7073",
+    "#ff646d",
+    "#ff646d",
+    "#ff646d",
+    "#ff646d",
+    "#ff646d",
+    "#ff646d",
+    "#c8c8c8",
+    "#d9c7c5",
+    "#edc0bc",
+    "#ffb9b3",
+    "#ffb1aa",
+    "#ffa9a2",
+    "#ff9e98",
+    "#ff9e98",
+    "#ff9e98",
+    "#ff9e98",
+    "#ff9e98",
+    "#ff9e98",
+    "#ff9e98",
+    "#ff9e98",
+    "#ff9e98",
+    "#e3e3e3",
+    "#f4e2e0",
+    "#ffdbd5",
+    "#ffd3cb",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffcbc4",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5R
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2e161a",
+    "#380f18",
+    "#410216",
+    "#490016",
+    "#510016",
+    "#5a0016",
+    "#5a0016",
+    "#5a0016",
+    "#5a0016",
+    "#5a0016",
+    "#5a0016",
+    "#5a0016",
+    "#5a0016",
+    "#5a0016",
+    "#313131",
+    "#432c2c",
+    "#4f2627",
+    "#591e22",
+    "#63111d",
+    "#6e0019",
+    "#770016",
+    "#810014",
+    "#8b0012",
+    "#8b0012",
+    "#8b0012",
+    "#8b0012",
+    "#8b0012",
+    "#8b0012",
+    "#8b0012",
+    "#484848",
+    "#5c4340",
+    "#6a3c38",
+    "#763530",
+    "#812b28",
+    "#8c1d1f",
+    "#970017",
+    "#a00010",
+    "#a90008",
+    "#b40000",
+    "#c00000",
+    "#c00000",
+    "#c00000",
+    "#c00000",
+    "#c00000",
+    "#616161",
+    "#745c59",
+    "#845650",
+    "#914f47",
+    "#9e473e",
+    "#a83e35",
+    "#b2332c",
+    "#bc2222",
+    "#c60018",
+    "#cf000b",
+    "#d90000",
+    "#e00000",
+    "#ea0000",
+    "#ea0000",
+    "#ea0000",
+    "#7a7a7a",
+    "#8d7673",
+    "#9e706a",
+    "#ac6a60",
+    "#ba6256",
+    "#c65a4b",
+    "#d25041",
+    "#dc4537",
+    "#e7362b",
+    "#f0201f",
+    "#f90010",
+    "#ff0000",
+    "#ff0000",
+    "#ff0000",
+    "#ff0000",
+    "#949494",
+    "#a7908d",
+    "#b88b83",
+    "#c7857a",
+    "#d57e6f",
+    "#e37664",
+    "#ef6e5a",
+    "#fa644e",
+    "#ff5942",
+    "#ff4c34",
+    "#ff3e29",
+    "#ff2914",
+    "#ff0d00",
+    "#ff0000",
+    "#ff0000",
+    "#aeaeae",
+    "#c1aba7",
+    "#d3a59d",
+    "#e39f93",
+    "#f39887",
+    "#ff917d",
+    "#ff8871",
+    "#ff7f65",
+    "#ff7558",
+    "#ff6b4f",
+    "#ff6045",
+    "#ff6045",
+    "#ff6045",
+    "#ff6045",
+    "#ff6045",
+    "#c8c8c8",
+    "#d9c7c3",
+    "#efc0b7",
+    "#ffb9ab",
+    "#ffb29f",
+    "#ffaa93",
+    "#ffa185",
+    "#ff987c",
+    "#ff987c",
+    "#ff987c",
+    "#ff987c",
+    "#ff987c",
+    "#ff987c",
+    "#ff987c",
+    "#ff987c",
+    "#e3e3e3",
+    "#f5e2de",
+    "#ffdad0",
+    "#ffd4c2",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffccb7",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10R (0YR)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2e1717",
+    "#390e13",
+    "#410310",
+    "#4a000d",
+    "#52000b",
+    "#5a000a",
+    "#5a000a",
+    "#5a000a",
+    "#5a000a",
+    "#5a000a",
+    "#5a000a",
+    "#5a000a",
+    "#5a000a",
+    "#5a000a",
+    "#313131",
+    "#422d2a",
+    "#4e2622",
+    "#581f1b",
+    "#631313",
+    "#6c000b",
+    "#760004",
+    "#800000",
+    "#890000",
+    "#890000",
+    "#890000",
+    "#890000",
+    "#890000",
+    "#890000",
+    "#890000",
+    "#484848",
+    "#5c433e",
+    "#6a3d34",
+    "#75362a",
+    "#802e1f",
+    "#8a2212",
+    "#930e00",
+    "#9c0000",
+    "#a50000",
+    "#ae0000",
+    "#b80000",
+    "#b80000",
+    "#b80000",
+    "#b80000",
+    "#b80000",
+    "#616161",
+    "#755c57",
+    "#84564b",
+    "#905040",
+    "#9c4933",
+    "#a64125",
+    "#af3913",
+    "#b72e00",
+    "#be2200",
+    "#c60600",
+    "#cc0000",
+    "#d40000",
+    "#db0000",
+    "#db0000",
+    "#db0000",
+    "#7a7a7a",
+    "#8d7771",
+    "#9e7164",
+    "#ac6b57",
+    "#b96449",
+    "#c55d3a",
+    "#cf5529",
+    "#d74d14",
+    "#df4500",
+    "#e63a00",
+    "#ee2c00",
+    "#f51400",
+    "#fc0000",
+    "#ff0000",
+    "#ff0000",
+    "#949494",
+    "#a8918a",
+    "#b98b7d",
+    "#c78671",
+    "#d47f63",
+    "#e17854",
+    "#ec7144",
+    "#f76931",
+    "#ff6216",
+    "#ff5900",
+    "#ff4f00",
+    "#ff4500",
+    "#ff3b00",
+    "#ff3000",
+    "#ff3000",
+    "#aeaeae",
+    "#c1aba5",
+    "#d3a697",
+    "#e3a08a",
+    "#f29a7b",
+    "#fe936e",
+    "#ff8c5c",
+    "#ff844a",
+    "#ff7c33",
+    "#ff761d",
+    "#ff6e00",
+    "#ff6e00",
+    "#ff6e00",
+    "#ff6e00",
+    "#ff6e00",
+    "#c8c8c8",
+    "#dac7c1",
+    "#f0c0b1",
+    "#ffbaa2",
+    "#ffb493",
+    "#ffad84",
+    "#ffa572",
+    "#ff9e61",
+    "#ff9e61",
+    "#ff9e61",
+    "#ff9e61",
+    "#ff9e61",
+    "#ff9e61",
+    "#ff9e61",
+    "#ff9e61",
+    "#e3e3e3",
+    "#f6e2db",
+    "#ffdbc9",
+    "#ffd5ba",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffcdab",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5 YR
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2e1714",
+    "#390f0b",
+    "#410505",
+    "#490000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#520000",
+    "#313131",
+    "#422d28",
+    "#4e271e",
+    "#572112",
+    "#611801",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#690700",
+    "#484848",
+    "#5b443c",
+    "#683e2f",
+    "#723921",
+    "#7b330f",
+    "#822d00",
+    "#8a2400",
+    "#8a2400",
+    "#8a2400",
+    "#8a2400",
+    "#8a2400",
+    "#8a2400",
+    "#8a2400",
+    "#8a2400",
+    "#8a2400",
+    "#616161",
+    "#745d54",
+    "#835746",
+    "#8e5238",
+    "#984d27",
+    "#a04711",
+    "#a64300",
+    "#ac3d00",
+    "#ac3d00",
+    "#ac3d00",
+    "#ac3d00",
+    "#ac3d00",
+    "#ac3d00",
+    "#ac3d00",
+    "#ac3d00",
+    "#7a7a7a",
+    "#8d776e",
+    "#9c725f",
+    "#aa6c50",
+    "#b6673e",
+    "#c0612b",
+    "#c75c11",
+    "#cd5800",
+    "#d15500",
+    "#d65000",
+    "#d65000",
+    "#d65000",
+    "#d65000",
+    "#d65000",
+    "#d65000",
+    "#949494",
+    "#a89187",
+    "#b78c78",
+    "#c68768",
+    "#d28259",
+    "#dd7c46",
+    "#e67730",
+    "#ee720d",
+    "#f46e00",
+    "#f86a00",
+    "#fd6600",
+    "#fd6600",
+    "#fd6600",
+    "#fd6600",
+    "#fd6600",
+    "#aeaeae",
+    "#c2aba2",
+    "#d2a792",
+    "#e2a181",
+    "#ef9c71",
+    "#fa9760",
+    "#ff914a",
+    "#ff8b2d",
+    "#ff8700",
+    "#ff8300",
+    "#ff8000",
+    "#ff8000",
+    "#ff8000",
+    "#ff8000",
+    "#ff8000",
+    "#c8c8c8",
+    "#dbc7bd",
+    "#efc1aa",
+    "#febc9a",
+    "#ffb687",
+    "#ffb175",
+    "#ffab60",
+    "#ffa548",
+    "#ffa548",
+    "#ffa548",
+    "#ffa548",
+    "#ffa548",
+    "#ffa548",
+    "#ffa548",
+    "#ffa548",
+    "#e3e3e3",
+    "#f7e2d8",
+    "#ffdcc3",
+    "#ffd7b0",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffd09d",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5YR
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2d1810",
+    "#381101",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#3f0a00",
+    "#313131",
+    "#412e26",
+    "#4b2918",
+    "#542404",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#5c1e00",
+    "#484848",
+    "#5a443a",
+    "#65402b",
+    "#6e3c19",
+    "#753800",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#7b3400",
+    "#616161",
+    "#735d51",
+    "#815940",
+    "#8a5530",
+    "#93511c",
+    "#994d00",
+    "#9e4a00",
+    "#a34600",
+    "#a34600",
+    "#a34600",
+    "#a34600",
+    "#a34600",
+    "#a34600",
+    "#a34600",
+    "#a34600",
+    "#7a7a7a",
+    "#8c776b",
+    "#9a735a",
+    "#a76f47",
+    "#b16a33",
+    "#b8661b",
+    "#be6300",
+    "#c36100",
+    "#c75e00",
+    "#c75e00",
+    "#c75e00",
+    "#c75e00",
+    "#c75e00",
+    "#c75e00",
+    "#c75e00",
+    "#949494",
+    "#a79184",
+    "#b58d73",
+    "#c28960",
+    "#cd854c",
+    "#d68136",
+    "#de7d17",
+    "#e37a00",
+    "#e77800",
+    "#ea7600",
+    "#ed7400",
+    "#ed7400",
+    "#ed7400",
+    "#ed7400",
+    "#ed7400",
+    "#aeaeae",
+    "#c2ac9e",
+    "#d1a88c",
+    "#dea479",
+    "#e9a066",
+    "#f39b50",
+    "#fd9735",
+    "#ff9404",
+    "#ff9100",
+    "#ff8f00",
+    "#ff8e00",
+    "#ff8c00",
+    "#ff8c00",
+    "#ff8c00",
+    "#ff8c00",
+    "#c8c8c8",
+    "#dbc7b9",
+    "#ecc3a5",
+    "#fabe92",
+    "#ffba7c",
+    "#ffb667",
+    "#ffb24e",
+    "#ffae2e",
+    "#ffaa00",
+    "#ffa800",
+    "#ffa600",
+    "#ffa500",
+    "#ffa300",
+    "#ffa300",
+    "#ffa300",
+    "#e3e3e3",
+    "#f7e2d3",
+    "#ffdebc",
+    "#ffd9a8",
+    "#ffd593",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffd07e",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5YR
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2b190d",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#351400",
+    "#313131",
+    "#3f2f24",
+    "#482b12",
+    "#502800",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#552500",
+    "#484848",
+    "#584538",
+    "#624227",
+    "#6a3f12",
+    "#6f3c00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#743a00",
+    "#616161",
+    "#725e4f",
+    "#7e5a3b",
+    "#865729",
+    "#8d550f",
+    "#925200",
+    "#955100",
+    "#955100",
+    "#955100",
+    "#955100",
+    "#955100",
+    "#955100",
+    "#955100",
+    "#955100",
+    "#955100",
+    "#7a7a7a",
+    "#8b7869",
+    "#987455",
+    "#a37140",
+    "#ab6e28",
+    "#b16c03",
+    "#b56a00",
+    "#b86800",
+    "#bb6700",
+    "#bb6700",
+    "#bb6700",
+    "#bb6700",
+    "#bb6700",
+    "#bb6700",
+    "#bb6700",
+    "#949494",
+    "#a69282",
+    "#b38f6e",
+    "#be8b59",
+    "#c88842",
+    "#cf8526",
+    "#d48300",
+    "#d88100",
+    "#db8000",
+    "#dd7f00",
+    "#dd7f00",
+    "#dd7f00",
+    "#dd7f00",
+    "#dd7f00",
+    "#dd7f00",
+    "#aeaeae",
+    "#c0ad9b",
+    "#cea987",
+    "#daa672",
+    "#e4a35c",
+    "#eca043",
+    "#f39d1f",
+    "#f89b00",
+    "#fc9900",
+    "#fe9800",
+    "#ff9800",
+    "#ff9800",
+    "#ff9800",
+    "#ff9800",
+    "#ff9800",
+    "#c8c8c8",
+    "#dbc8b5",
+    "#e9c4a0",
+    "#f6c18b",
+    "#ffbd73",
+    "#ffbb5b",
+    "#ffb83e",
+    "#ffb509",
+    "#ffb300",
+    "#ffb200",
+    "#ffb100",
+    "#ffb000",
+    "#ffb000",
+    "#ffb000",
+    "#ffb000",
+    "#e3e3e3",
+    "#f7e3cf",
+    "#ffdfb7",
+    "#ffdca0",
+    "#ffd989",
+    "#ffd671",
+    "#ffd359",
+    "#ffd359",
+    "#ffd359",
+    "#ffd359",
+    "#ffd359",
+    "#ffd359",
+    "#ffd359",
+    "#ffd359",
+    "#ffd359",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10YR (0Y)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#291a0a",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#321600",
+    "#313131",
+    "#3d2f22",
+    "#452d0e",
+    "#4c2b00",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#502900",
+    "#484848",
+    "#564636",
+    "#5e4423",
+    "#654209",
+    "#694000",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#6e3e00",
+    "#616161",
+    "#705f4c",
+    "#7a5c37",
+    "#815a22",
+    "#865800",
+    "#8a5700",
+    "#8d5600",
+    "#8d5600",
+    "#8d5600",
+    "#8d5600",
+    "#8d5600",
+    "#8d5600",
+    "#8d5600",
+    "#8d5600",
+    "#8d5600",
+    "#7a7a7a",
+    "#897966",
+    "#947650",
+    "#9e7438",
+    "#a4721c",
+    "#a87000",
+    "#ab6f00",
+    "#ae6e00",
+    "#b06d00",
+    "#b06d00",
+    "#b06d00",
+    "#b06d00",
+    "#b06d00",
+    "#b06d00",
+    "#b06d00",
+    "#949494",
+    "#a4937f",
+    "#af9169",
+    "#b98e51",
+    "#c08c38",
+    "#c68a13",
+    "#ca8900",
+    "#cd8800",
+    "#cf8700",
+    "#d18600",
+    "#d18600",
+    "#d18600",
+    "#d18600",
+    "#d18600",
+    "#d18600",
+    "#aeaeae",
+    "#beae98",
+    "#caab81",
+    "#d4a96a",
+    "#dca752",
+    "#e3a535",
+    "#e9a300",
+    "#eda100",
+    "#efa100",
+    "#f1a000",
+    "#f2a000",
+    "#f2a000",
+    "#f2a000",
+    "#f2a000",
+    "#f2a000",
+    "#c8c8c8",
+    "#d9c8b2",
+    "#e5c69b",
+    "#efc483",
+    "#f9c269",
+    "#ffc04f",
+    "#ffbe2b",
+    "#ffbc00",
+    "#ffbb00",
+    "#ffba00",
+    "#ffb900",
+    "#ffb900",
+    "#ffb900",
+    "#ffb900",
+    "#ffb900",
+    "#e3e3e3",
+    "#f5e4cb",
+    "#ffe2b1",
+    "#ffdf99",
+    "#ffdd7f",
+    "#ffdb63",
+    "#ffd948",
+    "#ffd948",
+    "#ffd948",
+    "#ffd948",
+    "#ffd948",
+    "#ffd948",
+    "#ffd948",
+    "#ffd948",
+    "#ffd948",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5Y
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#271b08",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#2e1900",
+    "#313131",
+    "#3b3121",
+    "#422f08",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#472d00",
+    "#484848",
+    "#534735",
+    "#5a4620",
+    "#604401",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#644300",
+    "#616161",
+    "#6d604b",
+    "#755f34",
+    "#7b5d1b",
+    "#7f5c00",
+    "#825b00",
+    "#845b00",
+    "#845b00",
+    "#845b00",
+    "#845b00",
+    "#845b00",
+    "#845b00",
+    "#845b00",
+    "#845b00",
+    "#845b00",
+    "#7a7a7a",
+    "#877a64",
+    "#90784c",
+    "#977731",
+    "#9c7610",
+    "#9f7500",
+    "#a27400",
+    "#a47300",
+    "#a47300",
+    "#a47300",
+    "#a47300",
+    "#a47300",
+    "#a47300",
+    "#a47300",
+    "#a47300",
+    "#949494",
+    "#a1947c",
+    "#aa9365",
+    "#b2914b",
+    "#b8902e",
+    "#bd8f00",
+    "#c08e00",
+    "#c28d00",
+    "#c48d00",
+    "#c48d00",
+    "#c48d00",
+    "#c48d00",
+    "#c48d00",
+    "#c48d00",
+    "#c48d00",
+    "#aeaeae",
+    "#bbaf96",
+    "#c5ad7d",
+    "#ceac64",
+    "#d4aa49",
+    "#daa926",
+    "#dea800",
+    "#e1a700",
+    "#e3a700",
+    "#e4a600",
+    "#e5a600",
+    "#e5a600",
+    "#e5a600",
+    "#e5a600",
+    "#e5a600",
+    "#c8c8c8",
+    "#d6caaf",
+    "#e0c897",
+    "#e8c77d",
+    "#f0c662",
+    "#f6c444",
+    "#fbc312",
+    "#ffc200",
+    "#ffc100",
+    "#ffc000",
+    "#ffc000",
+    "#ffc000",
+    "#ffc000",
+    "#ffc000",
+    "#ffc000",
+    "#e3e3e3",
+    "#f2e5c8",
+    "#fce4ad",
+    "#ffe393",
+    "#ffe178",
+    "#ffe05c",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffdf37",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5Y
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#241c08",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#2a1b00",
+    "#313131",
+    "#393120",
+    "#3e3005",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#423000",
+    "#484848",
+    "#504835",
+    "#56481e",
+    "#5a4700",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#5d4600",
+    "#616161",
+    "#6a614a",
+    "#706131",
+    "#756016",
+    "#785f00",
+    "#7a5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7b5f00",
+    "#7a7a7a",
+    "#837b63",
+    "#8a7b49",
+    "#907a2d",
+    "#947902",
+    "#967900",
+    "#987800",
+    "#9a7800",
+    "#9a7800",
+    "#9a7800",
+    "#9a7800",
+    "#9a7800",
+    "#9a7800",
+    "#9a7800",
+    "#9a7800",
+    "#949494",
+    "#9e957b",
+    "#a49562",
+    "#ab9446",
+    "#af9425",
+    "#b29300",
+    "#b59300",
+    "#b69200",
+    "#b89200",
+    "#b89200",
+    "#b89200",
+    "#b89200",
+    "#b89200",
+    "#b89200",
+    "#b89200",
+    "#aeaeae",
+    "#b8b094",
+    "#bfb07a",
+    "#c5af5f",
+    "#caaf43",
+    "#ceae14",
+    "#d1ad00",
+    "#d3ad00",
+    "#d4ad00",
+    "#d5ad00",
+    "#d5ad00",
+    "#d5ad00",
+    "#d5ad00",
+    "#d5ad00",
+    "#d5ad00",
+    "#c8c8c8",
+    "#d3cbad",
+    "#d9cb93",
+    "#dfca78",
+    "#e5ca5b",
+    "#e9c938",
+    "#edc900",
+    "#efc800",
+    "#f1c800",
+    "#f2c800",
+    "#f3c800",
+    "#f3c800",
+    "#f3c800",
+    "#f3c800",
+    "#f3c800",
+    "#e3e3e3",
+    "#efe6c6",
+    "#f5e6aa",
+    "#fbe68f",
+    "#ffe672",
+    "#ffe552",
+    "#ffe522",
+    "#ffe500",
+    "#ffe400",
+    "#ffe400",
+    "#ffe400",
+    "#ffe400",
+    "#ffe400",
+    "#ffe400",
+    "#ffe400",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5Y
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#221d0a",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#261d00",
+    "#313131",
+    "#363221",
+    "#3a3204",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#3d3200",
+    "#484848",
+    "#4e4935",
+    "#51491e",
+    "#544900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#564900",
+    "#616161",
+    "#67624a",
+    "#6b6231",
+    "#6e6213",
+    "#706200",
+    "#726200",
+    "#736200",
+    "#736200",
+    "#736200",
+    "#736200",
+    "#736200",
+    "#736200",
+    "#736200",
+    "#736200",
+    "#736200",
+    "#7a7a7a",
+    "#817c63",
+    "#867c49",
+    "#897c2a",
+    "#8b7c00",
+    "#8d7c00",
+    "#8e7c00",
+    "#8f7c00",
+    "#8f7c00",
+    "#8f7c00",
+    "#8f7c00",
+    "#8f7c00",
+    "#8f7c00",
+    "#8f7c00",
+    "#8f7c00",
+    "#949494",
+    "#9b967b",
+    "#a09761",
+    "#a49744",
+    "#a79720",
+    "#a99700",
+    "#aa9700",
+    "#ab9700",
+    "#ac9600",
+    "#ac9600",
+    "#ac9600",
+    "#ac9600",
+    "#ac9600",
+    "#ac9600",
+    "#ac9600",
+    "#aeaeae",
+    "#b6b194",
+    "#bab179",
+    "#beb25e",
+    "#c1b23f",
+    "#c4b205",
+    "#c6b200",
+    "#c7b200",
+    "#c8b200",
+    "#c8b200",
+    "#c8b200",
+    "#c8b200",
+    "#c8b200",
+    "#c8b200",
+    "#c8b200",
+    "#c8c8c8",
+    "#d1ccac",
+    "#d5cc92",
+    "#d9cd76",
+    "#dccd58",
+    "#dfcd33",
+    "#e2cd00",
+    "#e3cd00",
+    "#e4cd00",
+    "#e5cd00",
+    "#e6cd00",
+    "#e6cd00",
+    "#e6cd00",
+    "#e6cd00",
+    "#e6cd00",
+    "#e3e3e3",
+    "#ece7c5",
+    "#f1e8a9",
+    "#f5e88d",
+    "#f8e96f",
+    "#fbe94e",
+    "#fee915",
+    "#ffe900",
+    "#ffe800",
+    "#ffe800",
+    "#ffe800",
+    "#ffe800",
+    "#ffe800",
+    "#ffe800",
+    "#ffe800",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10Y (0GY)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#1f1e0d",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#201f00",
+    "#313131",
+    "#343322",
+    "#353406",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#363400",
+    "#484848",
+    "#4b4a35",
+    "#4d4b1e",
+    "#4e4b00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#4f4c00",
+    "#616161",
+    "#64634b",
+    "#666431",
+    "#686513",
+    "#686500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#696500",
+    "#7a7a7a",
+    "#7e7d63",
+    "#807e49",
+    "#827f2b",
+    "#837f00",
+    "#847f00",
+    "#848000",
+    "#858000",
+    "#858000",
+    "#858000",
+    "#858000",
+    "#858000",
+    "#858000",
+    "#858000",
+    "#858000",
+    "#949494",
+    "#98977b",
+    "#9b9862",
+    "#9d9945",
+    "#9e9a20",
+    "#9f9a00",
+    "#a09a00",
+    "#a19a00",
+    "#a19a00",
+    "#a19a00",
+    "#a19a00",
+    "#a19a00",
+    "#a19a00",
+    "#a19a00",
+    "#a19a00",
+    "#aeaeae",
+    "#b3b294",
+    "#b6b37a",
+    "#b8b45f",
+    "#b9b43f",
+    "#bbb500",
+    "#bcb500",
+    "#bcb600",
+    "#bcb600",
+    "#bcb600",
+    "#bcb600",
+    "#bcb600",
+    "#bcb600",
+    "#bcb600",
+    "#bcb600",
+    "#c8c8c8",
+    "#ceccac",
+    "#d1ce92",
+    "#d3cf76",
+    "#d5cf58",
+    "#d6d032",
+    "#d7d100",
+    "#d8d100",
+    "#d9d100",
+    "#d9d100",
+    "#d9d100",
+    "#d9d100",
+    "#d9d100",
+    "#d9d100",
+    "#d9d100",
+    "#e3e3e3",
+    "#eae8c5",
+    "#ece9a9",
+    "#efea8d",
+    "#f1eb6e",
+    "#f2ec4d",
+    "#f3ec0f",
+    "#f4ed00",
+    "#f5ed00",
+    "#f5ee00",
+    "#f6ee00",
+    "#f6ee00",
+    "#f6ee00",
+    "#f6ee00",
+    "#f6ee00",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5GY
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#1c1f10",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#192100",
+    "#313131",
+    "#313424",
+    "#2f350d",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#2d3700",
+    "#484848",
+    "#484b37",
+    "#474c21",
+    "#454e00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#434f00",
+    "#616161",
+    "#60644d",
+    "#606634",
+    "#5e6719",
+    "#5d6800",
+    "#5c6900",
+    "#5a6900",
+    "#5a6900",
+    "#5a6900",
+    "#5a6900",
+    "#5a6900",
+    "#5a6900",
+    "#5a6900",
+    "#5a6900",
+    "#5a6900",
+    "#7a7a7a",
+    "#7a7e65",
+    "#7a804d",
+    "#798131",
+    "#788204",
+    "#778300",
+    "#768400",
+    "#748400",
+    "#748400",
+    "#748400",
+    "#748400",
+    "#748400",
+    "#748400",
+    "#748400",
+    "#748400",
+    "#949494",
+    "#95987c",
+    "#949a64",
+    "#939c49",
+    "#929d26",
+    "#919e00",
+    "#919f00",
+    "#909f00",
+    "#909f00",
+    "#909f00",
+    "#909f00",
+    "#909f00",
+    "#909f00",
+    "#909f00",
+    "#909f00",
+    "#aeaeae",
+    "#b0b295",
+    "#afb57c",
+    "#aeb663",
+    "#adb844",
+    "#acb911",
+    "#acba00",
+    "#abba00",
+    "#abbb00",
+    "#aabb00",
+    "#aabb00",
+    "#aabb00",
+    "#aabb00",
+    "#aabb00",
+    "#aabb00",
+    "#c8c8c8",
+    "#cbcdad",
+    "#cacf94",
+    "#cad17a",
+    "#c9d35d",
+    "#c8d438",
+    "#c7d500",
+    "#c6d600",
+    "#c6d700",
+    "#c5d700",
+    "#c5d700",
+    "#c5d700",
+    "#c5d700",
+    "#c5d700",
+    "#c5d700",
+    "#e3e3e3",
+    "#e7e9c6",
+    "#e6ebaa",
+    "#e6ed8f",
+    "#e5ef71",
+    "#e4f051",
+    "#e3f117",
+    "#e2f200",
+    "#e1f300",
+    "#e1f400",
+    "#e1f400",
+    "#e1f400",
+    "#e1f400",
+    "#e1f400",
+    "#e1f400",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5GY
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#1a1f12",
+    "#112200",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#0a2300",
+    "#313131",
+    "#2f3426",
+    "#2a3614",
+    "#233800",
+    "#1c3a00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#133c00",
+    "#484848",
+    "#454b39",
+    "#404e26",
+    "#3c500c",
+    "#375100",
+    "#315300",
+    "#2b5400",
+    "#2b5400",
+    "#2b5400",
+    "#2b5400",
+    "#2b5400",
+    "#2b5400",
+    "#2b5400",
+    "#2b5400",
+    "#2b5400",
+    "#616161",
+    "#5e654f",
+    "#596739",
+    "#556922",
+    "#506b00",
+    "#4c6c00",
+    "#4a6d00",
+    "#466e00",
+    "#466e00",
+    "#466e00",
+    "#466e00",
+    "#466e00",
+    "#466e00",
+    "#466e00",
+    "#466e00",
+    "#7a7a7a",
+    "#777e67",
+    "#748152",
+    "#6f8439",
+    "#6a8519",
+    "#678700",
+    "#638800",
+    "#618900",
+    "#5e8a00",
+    "#5e8a00",
+    "#5e8a00",
+    "#5e8a00",
+    "#5e8a00",
+    "#5e8a00",
+    "#5e8a00",
+    "#949494",
+    "#91997e",
+    "#8e9b68",
+    "#8a9e51",
+    "#85a033",
+    "#81a200",
+    "#7da300",
+    "#7ba400",
+    "#7aa400",
+    "#79a500",
+    "#79a500",
+    "#79a500",
+    "#79a500",
+    "#79a500",
+    "#79a500",
+    "#aeaeae",
+    "#acb397",
+    "#a8b680",
+    "#a5b969",
+    "#a1bb4f",
+    "#9cbd29",
+    "#98be00",
+    "#95c000",
+    "#93c000",
+    "#92c100",
+    "#90c100",
+    "#90c100",
+    "#90c100",
+    "#90c100",
+    "#90c100",
+    "#c8c8c8",
+    "#c8ceaf",
+    "#c5d197",
+    "#c1d37f",
+    "#bcd665",
+    "#b8d846",
+    "#b4da08",
+    "#b1db00",
+    "#aedc00",
+    "#acdd00",
+    "#abdd00",
+    "#aade00",
+    "#aade00",
+    "#aade00",
+    "#aade00",
+    "#e3e3e3",
+    "#e3eac7",
+    "#e0edad",
+    "#dcef93",
+    "#d8f277",
+    "#d5f459",
+    "#d0f62d",
+    "#cdf700",
+    "#c9f900",
+    "#c7fa00",
+    "#c6fa00",
+    "#c4fb00",
+    "#c4fb00",
+    "#c4fb00",
+    "#c4fb00",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5GY
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#172015",
+    "#072304",
+    "#002500",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#002700",
+    "#313131",
+    "#2c3429",
+    "#23371b",
+    "#163a09",
+    "#003c00",
+    "#003e00",
+    "#004000",
+    "#004100",
+    "#004100",
+    "#004100",
+    "#004100",
+    "#004100",
+    "#004100",
+    "#004100",
+    "#004100",
+    "#484848",
+    "#414c3d",
+    "#384f2d",
+    "#2e521c",
+    "#215400",
+    "#065600",
+    "#005800",
+    "#005a00",
+    "#005a00",
+    "#005a00",
+    "#005a00",
+    "#005a00",
+    "#005a00",
+    "#005a00",
+    "#005a00",
+    "#616161",
+    "#596553",
+    "#506941",
+    "#466c2f",
+    "#3a6e15",
+    "#2c7100",
+    "#177300",
+    "#007400",
+    "#007600",
+    "#007800",
+    "#007800",
+    "#007800",
+    "#007800",
+    "#007800",
+    "#007800",
+    "#7a7a7a",
+    "#737f6b",
+    "#6a835a",
+    "#618646",
+    "#568931",
+    "#4b8b0e",
+    "#3d8d00",
+    "#2f8f00",
+    "#209000",
+    "#069100",
+    "#009300",
+    "#009300",
+    "#009300",
+    "#009300",
+    "#009300",
+    "#949494",
+    "#8c9a82",
+    "#849d70",
+    "#7ba15d",
+    "#71a447",
+    "#66a62d",
+    "#5ba900",
+    "#4fab00",
+    "#45ac00",
+    "#3cad00",
+    "#33ae00",
+    "#27af00",
+    "#27af00",
+    "#27af00",
+    "#27af00",
+    "#aeaeae",
+    "#a6b59b",
+    "#9eb889",
+    "#96bc76",
+    "#8cbf61",
+    "#82c248",
+    "#77c428",
+    "#6cc600",
+    "#63c800",
+    "#5ac900",
+    "#54ca00",
+    "#4ccb00",
+    "#45cc00",
+    "#45cc00",
+    "#45cc00",
+    "#c8c8c8",
+    "#c1d0b4",
+    "#b8d4a0",
+    "#afd78c",
+    "#a7da77",
+    "#9ddd5f",
+    "#93e042",
+    "#88e20a",
+    "#7ee400",
+    "#74e600",
+    "#6ee700",
+    "#65e800",
+    "#5ee900",
+    "#57ea00",
+    "#4eeb00",
+    "#e3e3e3",
+    "#dcebcc",
+    "#d3f0b7",
+    "#c9f3a0",
+    "#c0f78a",
+    "#b6fa71",
+    "#adfd55",
+    "#a2ff30",
+    "#97ff00",
+    "#8dff00",
+    "#84ff00",
+    "#7aff00",
+    "#7aff00",
+    "#7aff00",
+    "#7aff00",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10GY (0G)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#152017",
+    "#00230c",
+    "#002602",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#002900",
+    "#313131",
+    "#2a352b",
+    "#1c3821",
+    "#063b16",
+    "#003d09",
+    "#003f00",
+    "#004100",
+    "#004300",
+    "#004300",
+    "#004300",
+    "#004300",
+    "#004300",
+    "#004300",
+    "#004300",
+    "#004300",
+    "#484848",
+    "#3f4d3f",
+    "#315033",
+    "#215327",
+    "#005619",
+    "#005806",
+    "#005a00",
+    "#005c00",
+    "#005c00",
+    "#005c00",
+    "#005c00",
+    "#005c00",
+    "#005c00",
+    "#005c00",
+    "#005c00",
+    "#616161",
+    "#576656",
+    "#496a48",
+    "#396d3a",
+    "#23702a",
+    "#007317",
+    "#007600",
+    "#007800",
+    "#007900",
+    "#007b00",
+    "#007b00",
+    "#007b00",
+    "#007b00",
+    "#007b00",
+    "#007b00",
+    "#7a7a7a",
+    "#6f806e",
+    "#638461",
+    "#558852",
+    "#438b42",
+    "#2b8e31",
+    "#009119",
+    "#009300",
+    "#009500",
+    "#009700",
+    "#009900",
+    "#009900",
+    "#009900",
+    "#009900",
+    "#009900",
+    "#949494",
+    "#889b86",
+    "#7c9f78",
+    "#6ea369",
+    "#5ea659",
+    "#4ba949",
+    "#30ac36",
+    "#00af1a",
+    "#00b100",
+    "#00b400",
+    "#00b600",
+    "#00b700",
+    "#00b700",
+    "#00b700",
+    "#00b700",
+    "#aeaeae",
+    "#a2b59f",
+    "#95ba90",
+    "#89bd82",
+    "#7ac172",
+    "#69c561",
+    "#53c84f",
+    "#35cb3a",
+    "#00ce1b",
+    "#00d000",
+    "#00d200",
+    "#00d400",
+    "#00d600",
+    "#00d600",
+    "#00d600",
+    "#c8c8c8",
+    "#bcd1b8",
+    "#afd5a8",
+    "#a1d998",
+    "#93dd89",
+    "#82e178",
+    "#6fe465",
+    "#57e751",
+    "#32ea39",
+    "#00ed0c",
+    "#00ef00",
+    "#00f200",
+    "#00f200",
+    "#00f200",
+    "#00f200",
+    "#e3e3e3",
+    "#d6edd1",
+    "#c8f1c0",
+    "#b8f6ad",
+    "#aafa9d",
+    "#99fe8b",
+    "#87ff79",
+    "#71ff65",
+    "#52ff4d",
+    "#19ff2e",
+    "#00ff00",
+    "#00ff00",
+    "#00ff00",
+    "#00ff00",
+    "#00ff00",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5G
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#132019",
+    "#002412",
+    "#00270c",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#002a07",
+    "#313131",
+    "#28352d",
+    "#163927",
+    "#003c21",
+    "#003e1c",
+    "#004016",
+    "#004211",
+    "#00440e",
+    "#00440e",
+    "#00440e",
+    "#00440e",
+    "#00440e",
+    "#00440e",
+    "#00440e",
+    "#00440e",
+    "#484848",
+    "#3c4d42",
+    "#2a513a",
+    "#085434",
+    "#00572e",
+    "#005928",
+    "#005c22",
+    "#005d1d",
+    "#005d1d",
+    "#005d1d",
+    "#005d1d",
+    "#005d1d",
+    "#005d1d",
+    "#005d1d",
+    "#005d1d",
+    "#616161",
+    "#536659",
+    "#416b51",
+    "#256f48",
+    "#007241",
+    "#007539",
+    "#007832",
+    "#007a2c",
+    "#007c27",
+    "#007d22",
+    "#007d22",
+    "#007d22",
+    "#007d22",
+    "#007d22",
+    "#007d22",
+    "#7a7a7a",
+    "#6c8172",
+    "#5b8569",
+    "#468960",
+    "#238d57",
+    "#00904f",
+    "#009347",
+    "#00963f",
+    "#009838",
+    "#009b31",
+    "#009d2b",
+    "#009d2b",
+    "#009d2b",
+    "#009d2b",
+    "#009d2b",
+    "#949494",
+    "#849b8a",
+    "#73a081",
+    "#5fa477",
+    "#46a86e",
+    "#18ab65",
+    "#00af5c",
+    "#00b253",
+    "#00b44b",
+    "#00b743",
+    "#00b93b",
+    "#00bc34",
+    "#00bc34",
+    "#00bc34",
+    "#00bc34",
+    "#aeaeae",
+    "#9eb6a4",
+    "#8dbb9a",
+    "#7bbf90",
+    "#64c385",
+    "#45c77b",
+    "#00cb72",
+    "#00ce68",
+    "#00d15f",
+    "#00d356",
+    "#00d64d",
+    "#00d944",
+    "#00db3c",
+    "#00db3c",
+    "#00db3c",
+    "#c8c8c8",
+    "#b7d1bd",
+    "#a6d6b2",
+    "#92dba7",
+    "#7ddf9d",
+    "#63e392",
+    "#38e787",
+    "#00ea7e",
+    "#00ee73",
+    "#00f168",
+    "#00f35e",
+    "#00f655",
+    "#00f84c",
+    "#00fa45",
+    "#00fd3c",
+    "#e3e3e3",
+    "#d1edd7",
+    "#bff3cb",
+    "#a8f8bd",
+    "#92fdb2",
+    "#78ffa7",
+    "#57ff9c",
+    "#00ff91",
+    "#00ff85",
+    "#00ff78",
+    "#00ff78",
+    "#00ff78",
+    "#00ff78",
+    "#00ff78",
+    "#00ff78",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5G
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#12201a",
+    "#002416",
+    "#002713",
+    "#002a11",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#002b10",
+    "#313131",
+    "#27352e",
+    "#12392a",
+    "#003c27",
+    "#003e24",
+    "#004022",
+    "#004220",
+    "#00441f",
+    "#00451e",
+    "#00471e",
+    "#00471e",
+    "#00471e",
+    "#00471e",
+    "#00471e",
+    "#00471e",
+    "#484848",
+    "#3b4d44",
+    "#25513f",
+    "#00553a",
+    "#005737",
+    "#005a34",
+    "#005c32",
+    "#005e31",
+    "#005f2f",
+    "#00602e",
+    "#00622e",
+    "#00632d",
+    "#00642c",
+    "#00642c",
+    "#00642c",
+    "#616161",
+    "#52675c",
+    "#3c6b56",
+    "#196f50",
+    "#00734c",
+    "#007649",
+    "#007946",
+    "#007b43",
+    "#007c42",
+    "#007e40",
+    "#007f3f",
+    "#00803e",
+    "#00823e",
+    "#00833d",
+    "#00843c",
+    "#7a7a7a",
+    "#6a8175",
+    "#56856e",
+    "#3c8a69",
+    "#008e64",
+    "#00915f",
+    "#00945b",
+    "#009759",
+    "#009956",
+    "#009b54",
+    "#009d52",
+    "#009f51",
+    "#00a050",
+    "#00a24f",
+    "#00a34e",
+    "#949494",
+    "#829b8e",
+    "#6da187",
+    "#56a581",
+    "#33a97c",
+    "#00ac77",
+    "#00b073",
+    "#00b36f",
+    "#00b56c",
+    "#00b869",
+    "#00ba67",
+    "#00bc65",
+    "#00be63",
+    "#00c061",
+    "#00c260",
+    "#aeaeae",
+    "#9cb6a7",
+    "#88bba0",
+    "#72c09a",
+    "#55c494",
+    "#1dc88f",
+    "#00cc8a",
+    "#00cf85",
+    "#00d282",
+    "#00d57f",
+    "#00d87c",
+    "#00da79",
+    "#00dc77",
+    "#00de76",
+    "#00e074",
+    "#c8c8c8",
+    "#b5d2c1",
+    "#a1d7ba",
+    "#88dcb2",
+    "#6de0ac",
+    "#45e4a6",
+    "#00e8a1",
+    "#00ec9c",
+    "#00ef98",
+    "#00f294",
+    "#00f591",
+    "#00f88e",
+    "#00fa8c",
+    "#00fa8c",
+    "#00fa8c",
+    "#e3e3e3",
+    "#cfeddb",
+    "#b9f3d3",
+    "#9df9cb",
+    "#80fec4",
+    "#5bffbe",
+    "#00ffb8",
+    "#00ffb3",
+    "#00ffae",
+    "#00ffae",
+    "#00ffae",
+    "#00ffae",
+    "#00ffae",
+    "#00ffae",
+    "#00ffae",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5G
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#11201b",
+    "#002419",
+    "#002718",
+    "#002a17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#002b17",
+    "#313131",
+    "#263530",
+    "#0e392d",
+    "#003c2b",
+    "#003e2a",
+    "#004029",
+    "#004228",
+    "#004428",
+    "#004528",
+    "#004728",
+    "#004728",
+    "#004728",
+    "#004728",
+    "#004728",
+    "#004728",
+    "#484848",
+    "#3a4d46",
+    "#215142",
+    "#005540",
+    "#00573e",
+    "#005a3d",
+    "#005c3c",
+    "#005e3b",
+    "#005f3b",
+    "#00613a",
+    "#00623a",
+    "#00633a",
+    "#00643a",
+    "#00643a",
+    "#00643a",
+    "#616161",
+    "#51675e",
+    "#396b5a",
+    "#096f57",
+    "#007354",
+    "#007652",
+    "#007951",
+    "#007b50",
+    "#007c4f",
+    "#007e4e",
+    "#007f4e",
+    "#00804d",
+    "#00824d",
+    "#00834d",
+    "#00844d",
+    "#7a7a7a",
+    "#698177",
+    "#538672",
+    "#368a6f",
+    "#008e6c",
+    "#009169",
+    "#009567",
+    "#009766",
+    "#009964",
+    "#009c63",
+    "#009d62",
+    "#009f61",
+    "#00a061",
+    "#00a260",
+    "#00a360",
+    "#949494",
+    "#819b90",
+    "#6aa18b",
+    "#50a588",
+    "#25a984",
+    "#00ac81",
+    "#00b07e",
+    "#00b37c",
+    "#00b67a",
+    "#00b879",
+    "#00bb77",
+    "#00bd76",
+    "#00bf75",
+    "#00c074",
+    "#00c273",
+    "#aeaeae",
+    "#9ab6aa",
+    "#85bba5",
+    "#6dc0a1",
+    "#4cc49d",
+    "#00c899",
+    "#00cc96",
+    "#00d093",
+    "#00d391",
+    "#00d58f",
+    "#00d88d",
+    "#00da8c",
+    "#00dc8a",
+    "#00de8a",
+    "#00e088",
+    "#c8c8c8",
+    "#b3d2c4",
+    "#9ed7be",
+    "#83dcb9",
+    "#65e0b5",
+    "#32e5b1",
+    "#00e9ae",
+    "#00ecab",
+    "#00efa8",
+    "#00f3a5",
+    "#00f5a3",
+    "#00f8a2",
+    "#00fba0",
+    "#00fba0",
+    "#00fba0",
+    "#e3e3e3",
+    "#cdeede",
+    "#b5f4d8",
+    "#97f9d2",
+    "#76fecd",
+    "#4affc9",
+    "#00ffc5",
+    "#00ffc2",
+    "#00ffc2",
+    "#00ffc2",
+    "#00ffc2",
+    "#00ffc2",
+    "#00ffc2",
+    "#00ffc2",
+    "#00ffc2",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10G (0BG)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#10201c",
+    "#00241c",
+    "#00271c",
+    "#002a1e",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#002c20",
+    "#313131",
+    "#253531",
+    "#083930",
+    "#003c30",
+    "#003e30",
+    "#004130",
+    "#004330",
+    "#004431",
+    "#004532",
+    "#004733",
+    "#004733",
+    "#004733",
+    "#004733",
+    "#004733",
+    "#004733",
+    "#484848",
+    "#384d47",
+    "#1c5246",
+    "#005545",
+    "#005845",
+    "#005a44",
+    "#005c45",
+    "#005e45",
+    "#006045",
+    "#006146",
+    "#006246",
+    "#006347",
+    "#006548",
+    "#006548",
+    "#006548",
+    "#616161",
+    "#4f675f",
+    "#356b5e",
+    "#006f5c",
+    "#00735b",
+    "#00765b",
+    "#00795b",
+    "#007b5a",
+    "#007c5b",
+    "#007e5b",
+    "#00805b",
+    "#00815b",
+    "#00825c",
+    "#00835c",
+    "#00845d",
+    "#7a7a7a",
+    "#688179",
+    "#508677",
+    "#308a75",
+    "#008e73",
+    "#009172",
+    "#009571",
+    "#009771",
+    "#009a71",
+    "#009c71",
+    "#009d71",
+    "#009f71",
+    "#00a171",
+    "#00a271",
+    "#00a371",
+    "#949494",
+    "#809b92",
+    "#67a190",
+    "#4ba58e",
+    "#10a98c",
+    "#00ad8a",
+    "#00b089",
+    "#00b388",
+    "#00b687",
+    "#00b887",
+    "#00bb86",
+    "#00bd86",
+    "#00bf86",
+    "#00c086",
+    "#00c286",
+    "#aeaeae",
+    "#99b6ac",
+    "#83bba9",
+    "#68c0a7",
+    "#42c4a5",
+    "#00c8a3",
+    "#00cca1",
+    "#00d0a0",
+    "#00d39f",
+    "#00d59e",
+    "#00d89e",
+    "#00db9d",
+    "#00dc9d",
+    "#00de9c",
+    "#00e09c",
+    "#c8c8c8",
+    "#b3d2c6",
+    "#9bd7c3",
+    "#7fdcc0",
+    "#5ee0be",
+    "#1ae5bc",
+    "#00e9ba",
+    "#00ecb9",
+    "#00f0b7",
+    "#00f3b6",
+    "#00f6b5",
+    "#00f8b5",
+    "#00fcb4",
+    "#00fcb4",
+    "#00fcb4",
+    "#e3e3e3",
+    "#cceee1",
+    "#b3f4dd",
+    "#93f9da",
+    "#6dfed7",
+    "#37ffd5",
+    "#00ffd3",
+    "#00ffd2",
+    "#00ffd2",
+    "#00ffd2",
+    "#00ffd2",
+    "#00ffd2",
+    "#00ffd2",
+    "#00ffd2",
+    "#00ffd2",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5BG
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#0e201e",
+    "#002420",
+    "#002723",
+    "#002a25",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#002c28",
+    "#313131",
+    "#243533",
+    "#043934",
+    "#003c35",
+    "#003e37",
+    "#004138",
+    "#00433a",
+    "#00443b",
+    "#00463d",
+    "#00463d",
+    "#00463d",
+    "#00463d",
+    "#00463d",
+    "#00463d",
+    "#00463d",
+    "#484848",
+    "#384d49",
+    "#18524a",
+    "#00554b",
+    "#00584c",
+    "#005a4e",
+    "#005c4f",
+    "#005e51",
+    "#006052",
+    "#006153",
+    "#006254",
+    "#006355",
+    "#006355",
+    "#006355",
+    "#006355",
+    "#616161",
+    "#4e6762",
+    "#326b62",
+    "#006f63",
+    "#007364",
+    "#007665",
+    "#007967",
+    "#007b68",
+    "#007d69",
+    "#007e6a",
+    "#00806b",
+    "#00816c",
+    "#00826d",
+    "#00836e",
+    "#00836e",
+    "#7a7a7a",
+    "#67817b",
+    "#4e867b",
+    "#2b8a7b",
+    "#008e7b",
+    "#00917c",
+    "#00957e",
+    "#00977f",
+    "#009a80",
+    "#009c82",
+    "#009e83",
+    "#009f84",
+    "#00a185",
+    "#00a286",
+    "#00a386",
+    "#949494",
+    "#7f9b94",
+    "#65a194",
+    "#47a594",
+    "#00a994",
+    "#00ad95",
+    "#00b095",
+    "#00b396",
+    "#00b697",
+    "#00b998",
+    "#00bb99",
+    "#00bd9b",
+    "#00bf9c",
+    "#00c19d",
+    "#00c29d",
+    "#aeaeae",
+    "#99b6ae",
+    "#81bbad",
+    "#65c0ad",
+    "#38c4ad",
+    "#00c8ad",
+    "#00ccad",
+    "#00d0ae",
+    "#00d2af",
+    "#00d5b0",
+    "#00d8b1",
+    "#00dab1",
+    "#00dcb2",
+    "#00deb3",
+    "#00deb3",
+    "#c8c8c8",
+    "#b2d1c8",
+    "#99d7c7",
+    "#7ddcc6",
+    "#57e0c6",
+    "#00e5c6",
+    "#00e9c6",
+    "#00ecc6",
+    "#00efc7",
+    "#00f3c8",
+    "#00f6c8",
+    "#00f6c8",
+    "#00f6c8",
+    "#00f6c8",
+    "#00f6c8",
+    "#e3e3e3",
+    "#cbede3",
+    "#b1f3e2",
+    "#8ff9e1",
+    "#66fee0",
+    "#19ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#00ffdf",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5BG
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#0c2020",
+    "#002425",
+    "#00272a",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#002a2f",
+    "#313131",
+    "#233535",
+    "#003938",
+    "#003c3c",
+    "#003e40",
+    "#004143",
+    "#004346",
+    "#004449",
+    "#00464c",
+    "#00464c",
+    "#00464c",
+    "#00464c",
+    "#00464c",
+    "#00464c",
+    "#00464c",
+    "#484848",
+    "#364d4c",
+    "#13514f",
+    "#005553",
+    "#005756",
+    "#005a5a",
+    "#005c5d",
+    "#005e60",
+    "#006062",
+    "#006165",
+    "#006367",
+    "#006367",
+    "#006367",
+    "#006367",
+    "#006367",
+    "#616161",
+    "#4e6764",
+    "#306b67",
+    "#006f6b",
+    "#00736e",
+    "#007672",
+    "#007875",
+    "#007b78",
+    "#007d7b",
+    "#007e7d",
+    "#008080",
+    "#008182",
+    "#008283",
+    "#008283",
+    "#008283",
+    "#7a7a7a",
+    "#66817e",
+    "#4c8580",
+    "#248983",
+    "#008d86",
+    "#00918a",
+    "#00948d",
+    "#00978f",
+    "#009a93",
+    "#009c96",
+    "#009e98",
+    "#00a09a",
+    "#00a19c",
+    "#00a29e",
+    "#00a29e",
+    "#949494",
+    "#7f9b97",
+    "#64a099",
+    "#41a59c",
+    "#00a99f",
+    "#00aca1",
+    "#00b0a4",
+    "#00b3a7",
+    "#00b6aa",
+    "#00b8ac",
+    "#00bbaf",
+    "#00bdb2",
+    "#00bfb4",
+    "#00c1b6",
+    "#00c1b6",
+    "#aeaeae",
+    "#98b6b1",
+    "#7fbbb3",
+    "#62c0b5",
+    "#2cc4b7",
+    "#00c8ba",
+    "#00ccbc",
+    "#00cfbe",
+    "#00d2c1",
+    "#00d5c4",
+    "#00d8c6",
+    "#00dbc9",
+    "#00ddcc",
+    "#00ddcc",
+    "#00ddcc",
+    "#c8c8c8",
+    "#b2d1cb",
+    "#98d7cc",
+    "#7adcce",
+    "#4de0d0",
+    "#00e4d2",
+    "#00e8d4",
+    "#00ecd6",
+    "#00efd8",
+    "#00f3db",
+    "#00f3db",
+    "#00f3db",
+    "#00f3db",
+    "#00f3db",
+    "#00f3db",
+    "#e3e3e3",
+    "#cbede6",
+    "#aff3e7",
+    "#8cf9e8",
+    "#5cfeea",
+    "#00ffec",
+    "#00ffee",
+    "#00ffee",
+    "#00ffee",
+    "#00ffee",
+    "#00ffee",
+    "#00ffee",
+    "#00ffee",
+    "#00ffee",
+    "#00ffee",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5BG
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#0b2022",
+    "#002429",
+    "#00272f",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#002a37",
+    "#313131",
+    "#223536",
+    "#00393c",
+    "#003b41",
+    "#003e47",
+    "#00414b",
+    "#00434f",
+    "#004453",
+    "#004453",
+    "#004453",
+    "#004453",
+    "#004453",
+    "#004453",
+    "#004453",
+    "#004453",
+    "#484848",
+    "#364d4e",
+    "#0f5154",
+    "#005459",
+    "#00575e",
+    "#005a63",
+    "#005c67",
+    "#005e6b",
+    "#00606e",
+    "#006272",
+    "#006272",
+    "#006272",
+    "#006272",
+    "#006272",
+    "#006272",
+    "#616161",
+    "#4d6667",
+    "#2f6b6c",
+    "#006f71",
+    "#007277",
+    "#00757c",
+    "#007881",
+    "#007b86",
+    "#007d8a",
+    "#007e8d",
+    "#008090",
+    "#008193",
+    "#008193",
+    "#008193",
+    "#008193",
+    "#7a7a7a",
+    "#668180",
+    "#4c8585",
+    "#1d8989",
+    "#008d8f",
+    "#009194",
+    "#00949a",
+    "#00969e",
+    "#0099a3",
+    "#009ca7",
+    "#009eab",
+    "#00a0ae",
+    "#00a1b1",
+    "#00a1b1",
+    "#00a1b1",
+    "#949494",
+    "#7f9b9a",
+    "#63a09e",
+    "#3ea4a3",
+    "#00a8a8",
+    "#00acac",
+    "#00afb1",
+    "#00b2b5",
+    "#00b5ba",
+    "#00b8be",
+    "#00bbc2",
+    "#00bdc7",
+    "#00c0ca",
+    "#00c0ca",
+    "#00c0ca",
+    "#aeaeae",
+    "#98b6b4",
+    "#7ebbb8",
+    "#60bfbc",
+    "#25c3c0",
+    "#00c8c5",
+    "#00cbc9",
+    "#00cfce",
+    "#00d2d2",
+    "#00d5d6",
+    "#00d7da",
+    "#00dadf",
+    "#00dadf",
+    "#00dadf",
+    "#00dadf",
+    "#c8c8c8",
+    "#b2d1ce",
+    "#98d6d2",
+    "#76dbd7",
+    "#47e0db",
+    "#00e4df",
+    "#00e8e3",
+    "#00ebe7",
+    "#00efeb",
+    "#00f2f0",
+    "#00f2f0",
+    "#00f2f0",
+    "#00f2f0",
+    "#00f2f0",
+    "#00f2f0",
+    "#e3e3e3",
+    "#ccedea",
+    "#aef3ed",
+    "#89f9f2",
+    "#52fef6",
+    "#00fffa",
+    "#00fffe",
+    "#00fffe",
+    "#00fffe",
+    "#00fffe",
+    "#00fffe",
+    "#00fffe",
+    "#00fffe",
+    "#00fffe",
+    "#00fffe",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10BG (0B)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#0a2024",
+    "#00232d",
+    "#002635",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#00293e",
+    "#313131",
+    "#223538",
+    "#003840",
+    "#003b47",
+    "#003e4f",
+    "#004057",
+    "#00425e",
+    "#004463",
+    "#004463",
+    "#004463",
+    "#004463",
+    "#004463",
+    "#004463",
+    "#004463",
+    "#004463",
+    "#484848",
+    "#354d50",
+    "#0e5158",
+    "#005460",
+    "#005667",
+    "#00596e",
+    "#005c75",
+    "#005e7b",
+    "#006080",
+    "#006183",
+    "#006183",
+    "#006183",
+    "#006183",
+    "#006183",
+    "#006183",
+    "#616161",
+    "#4d6669",
+    "#2f6a70",
+    "#006e78",
+    "#007180",
+    "#007488",
+    "#00778f",
+    "#007a96",
+    "#007c9b",
+    "#007ea0",
+    "#0080a5",
+    "#0081a9",
+    "#0081a9",
+    "#0081a9",
+    "#0081a9",
+    "#7a7a7a",
+    "#668082",
+    "#4c8489",
+    "#1c8891",
+    "#008c99",
+    "#008fa0",
+    "#0093a8",
+    "#0095ae",
+    "#0098b5",
+    "#009bbc",
+    "#009ec2",
+    "#00a0c6",
+    "#00a1ca",
+    "#00a1ca",
+    "#00a1ca",
+    "#949494",
+    "#7f9b9c",
+    "#659fa3",
+    "#3ea3aa",
+    "#00a7b1",
+    "#00abb8",
+    "#00aec0",
+    "#00b1c6",
+    "#00b4cd",
+    "#00b7d4",
+    "#00bada",
+    "#00bde1",
+    "#00c0e7",
+    "#00c0e7",
+    "#00c0e7",
+    "#aeaeae",
+    "#99b5b6",
+    "#7fbabd",
+    "#61bec3",
+    "#21c2ca",
+    "#00c6d2",
+    "#00cad9",
+    "#00cde0",
+    "#00d1e7",
+    "#00d4ed",
+    "#00d7f2",
+    "#00d9f9",
+    "#00d9f9",
+    "#00d9f9",
+    "#00d9f9",
+    "#c8c8c8",
+    "#b3d0d0",
+    "#98d6d7",
+    "#77dade",
+    "#44dfe4",
+    "#00e3eb",
+    "#00e7f2",
+    "#00ebf8",
+    "#00efff",
+    "#00f2ff",
+    "#00f2ff",
+    "#00f2ff",
+    "#00f2ff",
+    "#00f2ff",
+    "#00f2ff",
+    "#e3e3e3",
+    "#cdecec",
+    "#aff2f3",
+    "#89f8fa",
+    "#51fdff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#00ffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5B
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#0a2026",
+    "#002330",
+    "#002539",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#002844",
+    "#313131",
+    "#22353a",
+    "#003843",
+    "#003a4d",
+    "#003d56",
+    "#004060",
+    "#004268",
+    "#004268",
+    "#004268",
+    "#004268",
+    "#004268",
+    "#004268",
+    "#004268",
+    "#004268",
+    "#004268",
+    "#484848",
+    "#364d52",
+    "#10505c",
+    "#005366",
+    "#00566f",
+    "#005878",
+    "#005b81",
+    "#005d89",
+    "#005f8f",
+    "#005f8f",
+    "#005f8f",
+    "#005f8f",
+    "#005f8f",
+    "#005f8f",
+    "#005f8f",
+    "#616161",
+    "#4e666a",
+    "#316a74",
+    "#006d7e",
+    "#007088",
+    "#007392",
+    "#00769b",
+    "#0079a4",
+    "#007baa",
+    "#007db3",
+    "#007db3",
+    "#007db3",
+    "#007db3",
+    "#007db3",
+    "#007db3",
+    "#7a7a7a",
+    "#688084",
+    "#4e848d",
+    "#228797",
+    "#008ba0",
+    "#008eaa",
+    "#0091b4",
+    "#0094bd",
+    "#0097c6",
+    "#009acf",
+    "#009dd8",
+    "#009dd8",
+    "#009dd8",
+    "#009dd8",
+    "#009dd8",
+    "#949494",
+    "#819a9e",
+    "#689ea7",
+    "#42a2b1",
+    "#00a6ba",
+    "#00a9c3",
+    "#00adcd",
+    "#00b0d6",
+    "#00b3e0",
+    "#00b6e8",
+    "#00b9f1",
+    "#00b9f1",
+    "#00b9f1",
+    "#00b9f1",
+    "#00b9f1",
+    "#aeaeae",
+    "#9bb5b8",
+    "#81b9c1",
+    "#63bdca",
+    "#2bc1d3",
+    "#00c5dd",
+    "#00c9e7",
+    "#00ccf0",
+    "#00d0fb",
+    "#00d2ff",
+    "#00d2ff",
+    "#00d2ff",
+    "#00d2ff",
+    "#00d2ff",
+    "#00d2ff",
+    "#c8c8c8",
+    "#b6d0d2",
+    "#9ad5db",
+    "#79d9e4",
+    "#47ddee",
+    "#00e2f8",
+    "#00e6ff",
+    "#00e9ff",
+    "#00edff",
+    "#00edff",
+    "#00edff",
+    "#00edff",
+    "#00edff",
+    "#00edff",
+    "#00edff",
+    "#e3e3e3",
+    "#d0ebee",
+    "#b0f1f8",
+    "#8af7ff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#54fbff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5B
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#0b2027",
+    "#002232",
+    "#00243d",
+    "#002648",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#002857",
+    "#313131",
+    "#22353b",
+    "#003746",
+    "#003952",
+    "#003c5e",
+    "#003e69",
+    "#004073",
+    "#004073",
+    "#004073",
+    "#004073",
+    "#004073",
+    "#004073",
+    "#004073",
+    "#004073",
+    "#004073",
+    "#484848",
+    "#364c54",
+    "#164f60",
+    "#00526b",
+    "#005476",
+    "#005682",
+    "#00598d",
+    "#005b98",
+    "#005da1",
+    "#005da1",
+    "#005da1",
+    "#005da1",
+    "#005da1",
+    "#005da1",
+    "#005da1",
+    "#616161",
+    "#4f656c",
+    "#366978",
+    "#006b83",
+    "#006e8f",
+    "#00709b",
+    "#0073a6",
+    "#0076b2",
+    "#0078be",
+    "#007ac9",
+    "#007ac9",
+    "#007ac9",
+    "#007ac9",
+    "#007ac9",
+    "#007ac9",
+    "#7a7a7a",
+    "#697f85",
+    "#528390",
+    "#2e869c",
+    "#0088a8",
+    "#008bb4",
+    "#008ec0",
+    "#0091cc",
+    "#0094d9",
+    "#0096e5",
+    "#0099f0",
+    "#0099f0",
+    "#0099f0",
+    "#0099f0",
+    "#0099f0",
+    "#949494",
+    "#83999f",
+    "#6c9daa",
+    "#4ca1b6",
+    "#00a4c2",
+    "#00a6ce",
+    "#00a9da",
+    "#00ace6",
+    "#00aff3",
+    "#00b2ff",
+    "#00b5ff",
+    "#00b5ff",
+    "#00b5ff",
+    "#00b5ff",
+    "#00b5ff",
+    "#aeaeae",
+    "#9eb4b9",
+    "#86b8c5",
+    "#69bcd0",
+    "#3ebfdc",
+    "#00c2e9",
+    "#00c6f7",
+    "#00c8ff",
+    "#00ccff",
+    "#00ccff",
+    "#00ccff",
+    "#00ccff",
+    "#00ccff",
+    "#00ccff",
+    "#00ccff",
+    "#c8c8c8",
+    "#b9cfd4",
+    "#9fd3e0",
+    "#81d7ec",
+    "#52dbf9",
+    "#00dfff",
+    "#00e3ff",
+    "#00e3ff",
+    "#00e3ff",
+    "#00e3ff",
+    "#00e3ff",
+    "#00e3ff",
+    "#00e3ff",
+    "#00e3ff",
+    "#00e3ff",
+    "#e3e3e3",
+    "#d3eaef",
+    "#b5f0fd",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#93f4ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5B
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#0d1f29",
+    "#002134",
+    "#00223f",
+    "#00244b",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#002659",
+    "#313131",
+    "#23343d",
+    "#063649",
+    "#003855",
+    "#003a62",
+    "#003c6e",
+    "#003e78",
+    "#004084",
+    "#004084",
+    "#004084",
+    "#004084",
+    "#004084",
+    "#004084",
+    "#004084",
+    "#004084",
+    "#484848",
+    "#384c56",
+    "#1e4e62",
+    "#00506e",
+    "#00527b",
+    "#005487",
+    "#005693",
+    "#0058a0",
+    "#005aaa",
+    "#005aaa",
+    "#005aaa",
+    "#005aaa",
+    "#005aaa",
+    "#005aaa",
+    "#005aaa",
+    "#616161",
+    "#52656d",
+    "#3c677a",
+    "#1a6986",
+    "#006c93",
+    "#006da0",
+    "#0070ac",
+    "#0072b9",
+    "#0075c7",
+    "#0076d1",
+    "#0076d1",
+    "#0076d1",
+    "#0076d1",
+    "#0076d1",
+    "#0076d1",
+    "#7a7a7a",
+    "#6c7e87",
+    "#588193",
+    "#3c84a0",
+    "#0086ac",
+    "#0088b9",
+    "#008bc7",
+    "#008dd4",
+    "#008fe2",
+    "#0092f0",
+    "#0094fb",
+    "#0094fb",
+    "#0094fb",
+    "#0094fb",
+    "#0094fb",
+    "#949494",
+    "#8699a0",
+    "#729cac",
+    "#589eba",
+    "#30a1c7",
+    "#00a3d4",
+    "#00a6e2",
+    "#00a8f0",
+    "#00abff",
+    "#00aeff",
+    "#00b0ff",
+    "#00b0ff",
+    "#00b0ff",
+    "#00b0ff",
+    "#00b0ff",
+    "#aeaeae",
+    "#a0b3ba",
+    "#8bb7c7",
+    "#73bad3",
+    "#50bce1",
+    "#00bff0",
+    "#00c2ff",
+    "#00c5ff",
+    "#00c5ff",
+    "#00c5ff",
+    "#00c5ff",
+    "#00c5ff",
+    "#00c5ff",
+    "#00c5ff",
+    "#00c5ff",
+    "#c8c8c8",
+    "#bcced4",
+    "#a4d2e2",
+    "#8ad5f0",
+    "#62d9ff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#00dcff",
+    "#e3e3e3",
+    "#d6e9f0",
+    "#baeeff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#9af3ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10B (0PB)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#1d1d1d",
+    "#0f1f2a",
+    "#002035",
+    "#002140",
+    "#00224d",
+    "#00245a",
+    "#00245a",
+    "#00245a",
+    "#00245a",
+    "#00245a",
+    "#00245a",
+    "#00245a",
+    "#00245a",
+    "#00245a",
+    "#313131",
+    "#26343e",
+    "#10354b",
+    "#003757",
+    "#003865",
+    "#003a71",
+    "#003b7d",
+    "#003c8a",
+    "#003c8a",
+    "#003c8a",
+    "#003c8a",
+    "#003c8a",
+    "#003c8a",
+    "#003c8a",
+    "#003c8a",
+    "#484848",
+    "#3b4b57",
+    "#274d64",
+    "#004e71",
+    "#00507d",
+    "#00518a",
+    "#005397",
+    "#0055a4",
+    "#0056af",
+    "#0056af",
+    "#0056af",
+    "#0056af",
+    "#0056af",
+    "#0056af",
+    "#0056af",
+    "#616161",
+    "#54646e",
+    "#43667c",
+    "#2b6888",
+    "#006996",
+    "#006ba2",
+    "#006daf",
+    "#006ebd",
+    "#0070cb",
+    "#0072d8",
+    "#0072d8",
+    "#0072d8",
+    "#0072d8",
+    "#0072d8",
+    "#0072d8",
+    "#7a7a7a",
+    "#6e7e88",
+    "#5e8095",
+    "#4982a2",
+    "#2584af",
+    "#0085bd",
+    "#0087cb",
+    "#0089d8",
+    "#008be7",
+    "#008df4",
+    "#008fff",
+    "#008fff",
+    "#008fff",
+    "#008fff",
+    "#008fff",
+    "#949494",
+    "#8998a1",
+    "#799aae",
+    "#649cbc",
+    "#489eca",
+    "#06a0d7",
+    "#00a2e7",
+    "#00a4f6",
+    "#00a7ff",
+    "#00a9ff",
+    "#00abff",
+    "#00abff",
+    "#00abff",
+    "#00abff",
+    "#00abff",
+    "#aeaeae",
+    "#a3b2bb",
+    "#92b5c8",
+    "#7eb7d6",
+    "#65b9e5",
+    "#37bcf5",
+    "#00beff",
+    "#00c0ff",
+    "#00c0ff",
+    "#00c0ff",
+    "#00c0ff",
+    "#00c0ff",
+    "#00c0ff",
+    "#00c0ff",
+    "#00c0ff",
+    "#c8c8c8",
+    "#becdd5",
+    "#acd0e4",
+    "#96d3f3",
+    "#76d6ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#47d8ff",
+    "#e3e3e3",
+    "#d9e9f0",
+    "#c1ecff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#a6f0ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5PB
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#131e2b",
+    "#011f36",
+    "#001f42",
+    "#001f4e",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#00205b",
+    "#313131",
+    "#28333f",
+    "#1a344c",
+    "#003459",
+    "#003566",
+    "#003673",
+    "#003680",
+    "#00378f",
+    "#00378f",
+    "#00378f",
+    "#00378f",
+    "#00378f",
+    "#00378f",
+    "#00378f",
+    "#00378f",
+    "#484848",
+    "#3e4a58",
+    "#304b65",
+    "#194c72",
+    "#004d7f",
+    "#004d8c",
+    "#004e9a",
+    "#004fa7",
+    "#0050b4",
+    "#0050b4",
+    "#0050b4",
+    "#0050b4",
+    "#0050b4",
+    "#0050b4",
+    "#0050b4",
+    "#616161",
+    "#58636f",
+    "#4b647d",
+    "#3b658a",
+    "#1e6698",
+    "#0067a4",
+    "#0068b1",
+    "#0069c0",
+    "#0069ce",
+    "#006adc",
+    "#006adc",
+    "#006adc",
+    "#006adc",
+    "#006adc",
+    "#006adc",
+    "#7a7a7a",
+    "#727d88",
+    "#657e96",
+    "#567fa4",
+    "#4280b1",
+    "#1e81bf",
+    "#0082cd",
+    "#0083db",
+    "#0084eb",
+    "#0086fa",
+    "#0087ff",
+    "#0087ff",
+    "#0087ff",
+    "#0087ff",
+    "#0087ff",
+    "#949494",
+    "#8c97a1",
+    "#8098af",
+    "#719abd",
+    "#5f9bcc",
+    "#469cda",
+    "#009dea",
+    "#009ffa",
+    "#00a0ff",
+    "#00a1ff",
+    "#00a1ff",
+    "#00a1ff",
+    "#00a1ff",
+    "#00a1ff",
+    "#00a1ff",
+    "#aeaeae",
+    "#a7b1bb",
+    "#9ab3ca",
+    "#8bb4d8",
+    "#79b6e7",
+    "#5fb7f8",
+    "#33b9ff",
+    "#00baff",
+    "#00baff",
+    "#00baff",
+    "#00baff",
+    "#00baff",
+    "#00baff",
+    "#00baff",
+    "#00baff",
+    "#c8c8c8",
+    "#c2ccd5",
+    "#b4cee5",
+    "#a2d0f5",
+    "#8dd2ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#6fd4ff",
+    "#e3e3e3",
+    "#dde7f0",
+    "#cbeaff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#b7ecff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5PB
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#161d2b",
+    "#0c1d36",
+    "#001d42",
+    "#001c4e",
+    "#001b5b",
+    "#001967",
+    "#001770",
+    "#00147b",
+    "#001183",
+    "#000d8d",
+    "#000895",
+    "#00029e",
+    "#0000a7",
+    "#0000b0",
+    "#313131",
+    "#2c3240",
+    "#22324c",
+    "#12325a",
+    "#003267",
+    "#003174",
+    "#003180",
+    "#002f8e",
+    "#002d9c",
+    "#002ca8",
+    "#002ab0",
+    "#0028ba",
+    "#0025c6",
+    "#0023cf",
+    "#0021d4",
+    "#484848",
+    "#414958",
+    "#384966",
+    "#2b4a73",
+    "#164a80",
+    "#004a8d",
+    "#00499b",
+    "#0049a8",
+    "#0048b6",
+    "#0047c4",
+    "#0046d0",
+    "#0044dc",
+    "#0043ea",
+    "#0041f3",
+    "#003ffe",
+    "#616161",
+    "#5b6270",
+    "#53627d",
+    "#48638b",
+    "#386399",
+    "#2163a6",
+    "#0063b2",
+    "#0063c0",
+    "#0063cf",
+    "#0063de",
+    "#0062ef",
+    "#0061fd",
+    "#005fff",
+    "#005eff",
+    "#005dff",
+    "#7a7a7a",
+    "#757c89",
+    "#6d7c96",
+    "#627da4",
+    "#557db2",
+    "#447dc0",
+    "#277ece",
+    "#007edc",
+    "#007eec",
+    "#007efc",
+    "#007eff",
+    "#007eff",
+    "#007dff",
+    "#007dff",
+    "#007dff",
+    "#949494",
+    "#8f96a2",
+    "#8797af",
+    "#7c97bf",
+    "#7197cd",
+    "#6198db",
+    "#4999eb",
+    "#1a99fc",
+    "#009aff",
+    "#009aff",
+    "#009aff",
+    "#009aff",
+    "#009aff",
+    "#009aff",
+    "#009aff",
+    "#aeaeae",
+    "#a9b0bb",
+    "#a0b1ca",
+    "#96b2d9",
+    "#89b2e8",
+    "#79b3f9",
+    "#5fb4ff",
+    "#3fb4ff",
+    "#3fb4ff",
+    "#3fb4ff",
+    "#3fb4ff",
+    "#3fb4ff",
+    "#3fb4ff",
+    "#3fb4ff",
+    "#3fb4ff",
+    "#c8c8c8",
+    "#c4cbd5",
+    "#bacce5",
+    "#aecdf7",
+    "#9eceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#8dceff",
+    "#e3e3e3",
+    "#e0e7f0",
+    "#d4e7ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#c5e9ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5PB
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#1b1c2c",
+    "#191a36",
+    "#171841",
+    "#17144c",
+    "#190f54",
+    "#1c075d",
+    "#200065",
+    "#25006e",
+    "#280075",
+    "#2c007d",
+    "#300085",
+    "#34008d",
+    "#390097",
+    "#3e00a1",
+    "#313131",
+    "#303140",
+    "#2d304d",
+    "#2a2e59",
+    "#262c65",
+    "#252970",
+    "#25257a",
+    "#271f84",
+    "#2a188d",
+    "#2d0b97",
+    "#31009f",
+    "#3500a9",
+    "#3800b1",
+    "#3c00b9",
+    "#4000c1",
+    "#484848",
+    "#464859",
+    "#424766",
+    "#3f4573",
+    "#3b447f",
+    "#37428c",
+    "#343f97",
+    "#323ba4",
+    "#3236b0",
+    "#3431b9",
+    "#362bc2",
+    "#3921cd",
+    "#3c12d7",
+    "#3f00e0",
+    "#4200e8",
+    "#616161",
+    "#5f6170",
+    "#5c607d",
+    "#585f8a",
+    "#535e98",
+    "#4e5ca5",
+    "#495bb1",
+    "#4458bd",
+    "#4155ca",
+    "#3f51d7",
+    "#3e4ce5",
+    "#3e47ef",
+    "#3f41fa",
+    "#4139ff",
+    "#4231ff",
+    "#7a7a7a",
+    "#787b89",
+    "#757a96",
+    "#7079a4",
+    "#6c78b2",
+    "#6777be",
+    "#6275cc",
+    "#5b74da",
+    "#5472e8",
+    "#4e6ff7",
+    "#496bff",
+    "#4667ff",
+    "#4361ff",
+    "#3a5cff",
+    "#3a5cff",
+    "#949494",
+    "#9395a2",
+    "#8f94af",
+    "#8a93be",
+    "#8693cb",
+    "#8192d9",
+    "#7a90e9",
+    "#728ff9",
+    "#668dff",
+    "#608bff",
+    "#5888ff",
+    "#5888ff",
+    "#5888ff",
+    "#5888ff",
+    "#5888ff",
+    "#aeaeae",
+    "#adafbb",
+    "#a8afca",
+    "#a4aed9",
+    "#9eade9",
+    "#98acf9",
+    "#91abff",
+    "#89aaff",
+    "#89aaff",
+    "#89aaff",
+    "#89aaff",
+    "#89aaff",
+    "#89aaff",
+    "#89aaff",
+    "#89aaff",
+    "#c8c8c8",
+    "#c8cad5",
+    "#c2cae5",
+    "#bcc9f6",
+    "#b5c8ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#aec7ff",
+    "#e3e3e3",
+    "#e3e6f0",
+    "#dde5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#d6e5ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10PB (0P)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#1f1b2c",
+    "#211835",
+    "#23143f",
+    "#260f47",
+    "#29084f",
+    "#2d0057",
+    "#31005f",
+    "#350067",
+    "#39006e",
+    "#3e0076",
+    "#42007e",
+    "#470086",
+    "#4d0091",
+    "#53009b",
+    "#313131",
+    "#333040",
+    "#352d4b",
+    "#362b55",
+    "#382760",
+    "#3b226a",
+    "#3e1c73",
+    "#41137c",
+    "#450485",
+    "#4a008e",
+    "#4e0097",
+    "#5300a0",
+    "#5700a8",
+    "#5c00b1",
+    "#6100ba",
+    "#484848",
+    "#4a4758",
+    "#4b4465",
+    "#4c4271",
+    "#4d3f7c",
+    "#4f3b87",
+    "#513791",
+    "#54319c",
+    "#582aa6",
+    "#5c21af",
+    "#6013b8",
+    "#6400c1",
+    "#6800cb",
+    "#6c00d4",
+    "#7100dd",
+    "#616161",
+    "#626070",
+    "#635e7c",
+    "#635c89",
+    "#645995",
+    "#6556a0",
+    "#6653ac",
+    "#684fb7",
+    "#6b4ac2",
+    "#6e45cc",
+    "#713dd8",
+    "#7436e0",
+    "#782cea",
+    "#7d1bf5",
+    "#8000fe",
+    "#7a7a7a",
+    "#7c7a88",
+    "#7c7895",
+    "#7c76a3",
+    "#7c74af",
+    "#7d71bb",
+    "#7d6ec7",
+    "#7e6bd4",
+    "#7f67e0",
+    "#8163eb",
+    "#845ef7",
+    "#8757ff",
+    "#8a50ff",
+    "#8e45ff",
+    "#8e45ff",
+    "#949494",
+    "#9594a1",
+    "#9593ae",
+    "#9591bc",
+    "#958fc9",
+    "#958cd6",
+    "#958ae4",
+    "#9586f2",
+    "#9682ff",
+    "#977fff",
+    "#987aff",
+    "#987aff",
+    "#987aff",
+    "#987aff",
+    "#987aff",
+    "#aeaeae",
+    "#afafbb",
+    "#afadc9",
+    "#aeabd7",
+    "#aea9e6",
+    "#ada7f5",
+    "#aea4ff",
+    "#afa0ff",
+    "#afa0ff",
+    "#afa0ff",
+    "#afa0ff",
+    "#afa0ff",
+    "#afa0ff",
+    "#afa0ff",
+    "#afa0ff",
+    "#c8c8c8",
+    "#cacad4",
+    "#c9c8e4",
+    "#c8c6f4",
+    "#c8c3ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#c8c0ff",
+    "#e3e3e3",
+    "#e6e5ef",
+    "#e4e3ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#e0e2ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5P
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#221a2b",
+    "#261633",
+    "#2a113b",
+    "#2f0a43",
+    "#33014a",
+    "#380052",
+    "#3c0059",
+    "#410061",
+    "#450067",
+    "#4a006e",
+    "#4f0076",
+    "#55007e",
+    "#5c0089",
+    "#620092",
+    "#313131",
+    "#362f3f",
+    "#3a2c49",
+    "#3e2851",
+    "#43235b",
+    "#471c64",
+    "#4c136d",
+    "#510375",
+    "#55007d",
+    "#5b0085",
+    "#60008e",
+    "#650096",
+    "#6b00a0",
+    "#7100a9",
+    "#7800b3",
+    "#484848",
+    "#4d4657",
+    "#514263",
+    "#553f6d",
+    "#593b77",
+    "#5e3581",
+    "#632f8a",
+    "#682794",
+    "#6d1c9d",
+    "#7108a5",
+    "#7600ad",
+    "#7c00b6",
+    "#8100c0",
+    "#8600c8",
+    "#8c00d2",
+    "#616161",
+    "#655f6f",
+    "#695c7b",
+    "#6c5985",
+    "#705690",
+    "#74519a",
+    "#794da4",
+    "#7d47ae",
+    "#8240b8",
+    "#8738c1",
+    "#8c2dcc",
+    "#9121d3",
+    "#9605dc",
+    "#9b00e6",
+    "#a000ef",
+    "#7a7a7a",
+    "#7e7987",
+    "#817793",
+    "#84749f",
+    "#8870ab",
+    "#8c6db5",
+    "#9068c0",
+    "#9564ca",
+    "#995ed5",
+    "#9e59de",
+    "#a351e9",
+    "#a848f4",
+    "#ad3dfe",
+    "#b32eff",
+    "#b32eff",
+    "#949494",
+    "#9893a1",
+    "#9b91ac",
+    "#9e8eb9",
+    "#a18bc5",
+    "#a588d1",
+    "#a984dc",
+    "#ad7fe8",
+    "#b379f4",
+    "#b775fe",
+    "#bd6dff",
+    "#bd6dff",
+    "#bd6dff",
+    "#bd6dff",
+    "#bd6dff",
+    "#aeaeae",
+    "#b2aeba",
+    "#b5acc7",
+    "#b7a9d4",
+    "#bba6e1",
+    "#bea2ee",
+    "#c39efc",
+    "#c899ff",
+    "#c899ff",
+    "#c899ff",
+    "#c899ff",
+    "#c899ff",
+    "#c899ff",
+    "#c899ff",
+    "#c899ff",
+    "#c8c8c8",
+    "#ccc9d4",
+    "#cfc6e2",
+    "#d2c4f0",
+    "#d5c0ff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#dbbbff",
+    "#e3e3e3",
+    "#e7e4ef",
+    "#eae2ff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#eddeff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5P
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#25192a",
+    "#2a1431",
+    "#2f0f38",
+    "#34063f",
+    "#390046",
+    "#3e004d",
+    "#430054",
+    "#49005b",
+    "#4d0061",
+    "#530068",
+    "#590070",
+    "#5e0076",
+    "#660080",
+    "#660080",
+    "#313131",
+    "#392e3e",
+    "#3e2b46",
+    "#43264e",
+    "#492057",
+    "#4f185f",
+    "#540a67",
+    "#5a006f",
+    "#5f0076",
+    "#65007e",
+    "#6b0086",
+    "#71008e",
+    "#780097",
+    "#7f00a0",
+    "#8700aa",
+    "#484848",
+    "#504556",
+    "#564160",
+    "#5c3d69",
+    "#623772",
+    "#67317c",
+    "#6e2984",
+    "#731e8c",
+    "#790b95",
+    "#7e009d",
+    "#8400a4",
+    "#8a00ac",
+    "#9100b5",
+    "#9700bd",
+    "#9e00c6",
+    "#616161",
+    "#685e6e",
+    "#6e5b78",
+    "#735782",
+    "#78538b",
+    "#7e4e94",
+    "#84489d",
+    "#8a41a6",
+    "#9138b0",
+    "#962db8",
+    "#9c1cc1",
+    "#a200c8",
+    "#a800d1",
+    "#ae00d9",
+    "#b500e3",
+    "#7a7a7a",
+    "#817986",
+    "#867591",
+    "#8c719b",
+    "#926da6",
+    "#9769af",
+    "#9d64b9",
+    "#a35ec2",
+    "#a958cb",
+    "#af50d4",
+    "#b547dd",
+    "#bb3be7",
+    "#c22af1",
+    "#c80bf9",
+    "#d000ff",
+    "#949494",
+    "#9a93a0",
+    "#a090aa",
+    "#a58cb5",
+    "#ab88c0",
+    "#b084ca",
+    "#b67fd4",
+    "#bd7adf",
+    "#c374e9",
+    "#c96df3",
+    "#cf65fe",
+    "#d858ff",
+    "#df4cff",
+    "#e738ff",
+    "#f009ff",
+    "#aeaeae",
+    "#b4aeb9",
+    "#b9aac5",
+    "#bfa7d0",
+    "#c4a3db",
+    "#ca9fe7",
+    "#d19af3",
+    "#d795fd",
+    "#de8eff",
+    "#e588ff",
+    "#ec7fff",
+    "#f574ff",
+    "#f574ff",
+    "#f574ff",
+    "#f574ff",
+    "#c8c8c8",
+    "#cec9d3",
+    "#d3c5e0",
+    "#d9c2ec",
+    "#dfbdfa",
+    "#e6b9ff",
+    "#ecb4ff",
+    "#f3aeff",
+    "#f3aeff",
+    "#f3aeff",
+    "#f3aeff",
+    "#f3aeff",
+    "#f3aeff",
+    "#f3aeff",
+    "#f3aeff",
+    "#e3e3e3",
+    "#e9e4ee",
+    "#eee0fe",
+    "#f5dcff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#fed7ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5P
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#261829",
+    "#2c1330",
+    "#310d36",
+    "#37033d",
+    "#3c0043",
+    "#420049",
+    "#480051",
+    "#4d0057",
+    "#52005d",
+    "#580063",
+    "#5e006a",
+    "#630070",
+    "#630070",
+    "#630070",
+    "#313131",
+    "#3b2e3c",
+    "#412944",
+    "#47254b",
+    "#4e1d53",
+    "#55135b",
+    "#5b0162",
+    "#610069",
+    "#670070",
+    "#6d0077",
+    "#73007e",
+    "#7a0087",
+    "#81008f",
+    "#890097",
+    "#9300a3",
+    "#484848",
+    "#534454",
+    "#5b3f5d",
+    "#623a65",
+    "#69346d",
+    "#702c75",
+    "#77227d",
+    "#7d1185",
+    "#83008c",
+    "#8a0094",
+    "#90009a",
+    "#9600a2",
+    "#9e00aa",
+    "#a400b1",
+    "#ac00ba",
+    "#616161",
+    "#6b5d6c",
+    "#735974",
+    "#7a557c",
+    "#815085",
+    "#884a8c",
+    "#8f4394",
+    "#963a9d",
+    "#9e2ea5",
+    "#a51cad",
+    "#ac00b5",
+    "#b200bc",
+    "#b800c3",
+    "#c000cb",
+    "#c700d3",
+    "#7a7a7a",
+    "#837883",
+    "#8c748c",
+    "#946f95",
+    "#9c6a9e",
+    "#a365a6",
+    "#ab5eaf",
+    "#b257b6",
+    "#b94fbe",
+    "#c145c7",
+    "#c838cf",
+    "#d022d8",
+    "#d600df",
+    "#de00e7",
+    "#e500f0",
+    "#949494",
+    "#9e929d",
+    "#a68ea5",
+    "#ae89af",
+    "#b685b7",
+    "#be7fc0",
+    "#c67ac8",
+    "#ce73d1",
+    "#d66cda",
+    "#dd63e2",
+    "#e657ec",
+    "#ef49f6",
+    "#f736fe",
+    "#ff00ff",
+    "#ff00ff",
+    "#aeaeae",
+    "#b7adb7",
+    "#c0a9bf",
+    "#c9a4c8",
+    "#d19fd2",
+    "#db9adb",
+    "#e294e4",
+    "#eb8ded",
+    "#f486f6",
+    "#fd7dff",
+    "#ff73ff",
+    "#ff66ff",
+    "#ff56ff",
+    "#ff3fff",
+    "#ff3fff",
+    "#c8c8c8",
+    "#d1c8d0",
+    "#dbc3da",
+    "#e4bfe3",
+    "#efb9ee",
+    "#f8b3f7",
+    "#ffadff",
+    "#ffa6ff",
+    "#ff9fff",
+    "#ff9fff",
+    "#ff9fff",
+    "#ff9fff",
+    "#ff9fff",
+    "#ff9fff",
+    "#ff9fff",
+    "#e3e3e3",
+    "#ece3eb",
+    "#f8def6",
+    "#ffd9ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffd2ff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 10P (0RP)
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#281827",
+    "#2e132e",
+    "#340b34",
+    "#3a013a",
+    "#3f0040",
+    "#450046",
+    "#4b004d",
+    "#510053",
+    "#560058",
+    "#5c005f",
+    "#620065",
+    "#69006c",
+    "#69006c",
+    "#69006c",
+    "#313131",
+    "#3d2d3b",
+    "#442941",
+    "#4b2347",
+    "#531a4f",
+    "#590e55",
+    "#60005c",
+    "#670063",
+    "#6e006a",
+    "#750070",
+    "#7b0077",
+    "#83007e",
+    "#8b0087",
+    "#93008f",
+    "#a0009b",
+    "#484848",
+    "#554452",
+    "#5e3e59",
+    "#663960",
+    "#6f3167",
+    "#77286e",
+    "#7f1976",
+    "#86007c",
+    "#8d0082",
+    "#94008a",
+    "#9b008f",
+    "#a20096",
+    "#a9009d",
+    "#b000a4",
+    "#ba00ad",
+    "#616161",
+    "#6d5d69",
+    "#775870",
+    "#805377",
+    "#884d7e",
+    "#904684",
+    "#993d8b",
+    "#a13392",
+    "#a82598",
+    "#b100a0",
+    "#ba00a8",
+    "#c000ad",
+    "#c700b3",
+    "#cf00ba",
+    "#d700c1",
+    "#7a7a7a",
+    "#857782",
+    "#907388",
+    "#9a6d8f",
+    "#a46797",
+    "#ac619d",
+    "#b559a4",
+    "#be51ab",
+    "#c647b1",
+    "#ce3ab8",
+    "#d726bf",
+    "#df00c5",
+    "#e600cc",
+    "#f000d4",
+    "#f700da",
+    "#949494",
+    "#a0929b",
+    "#a98da2",
+    "#b488a9",
+    "#be82b0",
+    "#c77cb7",
+    "#d175bd",
+    "#da6dc5",
+    "#e365cb",
+    "#eb5bd2",
+    "#f54dda",
+    "#fe3be1",
+    "#ff1fe9",
+    "#ff00f1",
+    "#ff00f9",
+    "#aeaeae",
+    "#b9acb5",
+    "#c4a8bc",
+    "#cfa2c3",
+    "#da9dca",
+    "#e496d1",
+    "#ee90d8",
+    "#f889df",
+    "#ff7fe7",
+    "#ff75ef",
+    "#ff69f6",
+    "#ff59ff",
+    "#ff46ff",
+    "#ff28ff",
+    "#ff28ff",
+    "#c8c8c8",
+    "#d2c8cf",
+    "#dfc3d6",
+    "#ebbddd",
+    "#f7b7e5",
+    "#ffb0ed",
+    "#ffa9f4",
+    "#ffa0fd",
+    "#ff98ff",
+    "#ff98ff",
+    "#ff98ff",
+    "#ff98ff",
+    "#ff98ff",
+    "#ff98ff",
+    "#ff98ff",
+    "#e3e3e3",
+    "#eee3ea",
+    "#fcddf2",
+    "#ffd7f9",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffcfff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 2.5RP
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#291726",
+    "#30122c",
+    "#360a31",
+    "#3d0037",
+    "#43003d",
+    "#480042",
+    "#4f0048",
+    "#55004e",
+    "#5a0053",
+    "#61005a",
+    "#61005a",
+    "#61005a",
+    "#61005a",
+    "#61005a",
+    "#313131",
+    "#3f2c38",
+    "#47283d",
+    "#4f2142",
+    "#581748",
+    "#5f054e",
+    "#670053",
+    "#6f0059",
+    "#77005f",
+    "#7e0065",
+    "#85006a",
+    "#8e0071",
+    "#8e0071",
+    "#8e0071",
+    "#8e0071",
+    "#484848",
+    "#57434f",
+    "#623d54",
+    "#6c3759",
+    "#752e5e",
+    "#7e2264",
+    "#870f69",
+    "#8f006e",
+    "#980073",
+    "#a00079",
+    "#a7007d",
+    "#b00083",
+    "#b80088",
+    "#bf008d",
+    "#bf008d",
+    "#616161",
+    "#6f5d67",
+    "#7a576c",
+    "#855171",
+    "#8f4a75",
+    "#98427a",
+    "#a2387f",
+    "#aa2b84",
+    "#b31689",
+    "#bc008e",
+    "#c60094",
+    "#ce0099",
+    "#d6009e",
+    "#dd00a3",
+    "#e700a9",
+    "#7a7a7a",
+    "#87777f",
+    "#937284",
+    "#9f6c89",
+    "#ab648e",
+    "#b45e93",
+    "#bf5598",
+    "#c84b9d",
+    "#d13ea1",
+    "#da2da6",
+    "#e30aab",
+    "#ed00b1",
+    "#f400b5",
+    "#fd00ba",
+    "#ff00c0",
+    "#949494",
+    "#a19199",
+    "#ad8c9d",
+    "#ba86a2",
+    "#c480a6",
+    "#cf7aab",
+    "#da72b0",
+    "#e569b5",
+    "#ef5eba",
+    "#f952bf",
+    "#ff40c5",
+    "#ff2ac9",
+    "#ff00cf",
+    "#ff00d4",
+    "#ff00d9",
+    "#aeaeae",
+    "#bbacb3",
+    "#c8a7b7",
+    "#d5a1bc",
+    "#e19ac0",
+    "#ed94c5",
+    "#f88cca",
+    "#ff84cf",
+    "#ff79d5",
+    "#ff6cda",
+    "#ff5ce0",
+    "#ff4be6",
+    "#ff38ea",
+    "#ff38ea",
+    "#ff38ea",
+    "#c8c8c8",
+    "#d4c7cd",
+    "#e2c2d1",
+    "#f1bbd5",
+    "#ffb5da",
+    "#ffaedf",
+    "#ffa5e5",
+    "#ff9bea",
+    "#ff91f0",
+    "#ff91f0",
+    "#ff91f0",
+    "#ff91f0",
+    "#ff91f0",
+    "#ff91f0",
+    "#ff91f0",
+    "#e3e3e3",
+    "#efe3e8",
+    "#ffdded",
+    "#ffd6f1",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffcef7",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 5RP
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2b1724",
+    "#321129",
+    "#39082e",
+    "#400033",
+    "#460037",
+    "#4d003c",
+    "#530041",
+    "#590045",
+    "#590045",
+    "#590045",
+    "#590045",
+    "#590045",
+    "#590045",
+    "#590045",
+    "#313131",
+    "#402c36",
+    "#49273a",
+    "#52203d",
+    "#5b1442",
+    "#640046",
+    "#6c004b",
+    "#740050",
+    "#7d0054",
+    "#840058",
+    "#8d005e",
+    "#8d005e",
+    "#8d005e",
+    "#8d005e",
+    "#8d005e",
+    "#484848",
+    "#59434c",
+    "#653c4f",
+    "#703552",
+    "#7a2b55",
+    "#841e59",
+    "#8d045c",
+    "#960061",
+    "#9f0065",
+    "#a70069",
+    "#af006c",
+    "#bb0073",
+    "#bb0073",
+    "#bb0073",
+    "#bb0073",
+    "#616161",
+    "#715c64",
+    "#7e5666",
+    "#8a4f68",
+    "#95476b",
+    "#9f3f6d",
+    "#a93370",
+    "#b32373",
+    "#bc0076",
+    "#c6007a",
+    "#d0007e",
+    "#d80081",
+    "#e20085",
+    "#ec008a",
+    "#ec008a",
+    "#7a7a7a",
+    "#89777d",
+    "#97717e",
+    "#a46a80",
+    "#b16382",
+    "#bc5b84",
+    "#c85087",
+    "#d24589",
+    "#dc358c",
+    "#e61d8f",
+    "#f00091",
+    "#f90094",
+    "#ff0098",
+    "#ff009b",
+    "#ff009e",
+    "#949494",
+    "#a39196",
+    "#b18c98",
+    "#bf8599",
+    "#cb7f9b",
+    "#d6789d",
+    "#e36f9f",
+    "#ee64a2",
+    "#f958a4",
+    "#ff4aa7",
+    "#ff30aa",
+    "#ff07ac",
+    "#ff00af",
+    "#ff00b2",
+    "#ff00b2",
+    "#aeaeae",
+    "#bcacb1",
+    "#cba6b2",
+    "#daa0b3",
+    "#e899b5",
+    "#f492b6",
+    "#ff89b8",
+    "#ff7fbb",
+    "#ff73bd",
+    "#ff65c0",
+    "#ff57c3",
+    "#ff43c5",
+    "#ff43c5",
+    "#ff43c5",
+    "#ff43c5",
+    "#c8c8c8",
+    "#d5c7cb",
+    "#e6c1cc",
+    "#f6bacd",
+    "#ffb3cf",
+    "#ffabd0",
+    "#ffa1d3",
+    "#ff97d5",
+    "#ff97d5",
+    "#ff97d5",
+    "#ff97d5",
+    "#ff97d5",
+    "#ff97d5",
+    "#ff97d5",
+    "#ff97d5",
+    "#e3e3e3",
+    "#f1e2e6",
+    "#ffdce7",
+    "#ffd4e8",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffcdea",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    // 7.5RP
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#000000",
+    "#1d1d1d",
+    "#2c1722",
+    "#341026",
+    "#3b062a",
+    "#42002e",
+    "#4a0032",
+    "#510036",
+    "#57003a",
+    "#5e003d",
+    "#5e003d",
+    "#5e003d",
+    "#5e003d",
+    "#5e003d",
+    "#5e003d",
+    "#5e003d",
+    "#313131",
+    "#412c34",
+    "#4b2637",
+    "#541f39",
+    "#5e133c",
+    "#67003f",
+    "#700043",
+    "#780047",
+    "#80004a",
+    "#89004e",
+    "#89004e",
+    "#89004e",
+    "#89004e",
+    "#89004e",
+    "#89004e",
+    "#484848",
+    "#5a4349",
+    "#673c4a",
+    "#73344b",
+    "#7e2a4d",
+    "#881b4e",
+    "#920050",
+    "#9c0053",
+    "#a50055",
+    "#ae0058",
+    "#b7005b",
+    "#b7005b",
+    "#b7005b",
+    "#b7005b",
+    "#b7005b",
+    "#616161",
+    "#725c61",
+    "#805661",
+    "#8d4f61",
+    "#994662",
+    "#a33d62",
+    "#ae3064",
+    "#b81d65",
+    "#c20067",
+    "#cc0069",
+    "#d7006b",
+    "#df006d",
+    "#e90070",
+    "#e90070",
+    "#e90070",
+    "#7a7a7a",
+    "#8a777b",
+    "#99717a",
+    "#a76a7a",
+    "#b5627a",
+    "#c0597a",
+    "#cc4e7a",
+    "#d6427b",
+    "#e1317c",
+    "#eb127d",
+    "#f6007f",
+    "#ff0080",
+    "#ff0082",
+    "#ff0084",
+    "#ff0085",
+    "#949494",
+    "#a49195",
+    "#b38b94",
+    "#c28493",
+    "#ce7e92",
+    "#db7692",
+    "#e76d92",
+    "#f36293",
+    "#ff5494",
+    "#ff4595",
+    "#ff2996",
+    "#ff0097",
+    "#ff0098",
+    "#ff0098",
+    "#ff0098",
+    "#aeaeae",
+    "#bdacaf",
+    "#cda6ae",
+    "#dd9fad",
+    "#eb98ac",
+    "#f891ac",
+    "#ff87ac",
+    "#ff7cac",
+    "#ff70ac",
+    "#ff61ae",
+    "#ff51ae",
+    "#ff51ae",
+    "#ff51ae",
+    "#ff51ae",
+    "#ff51ae",
+    "#c8c8c8",
+    "#d6c7ca",
+    "#e8c1c8",
+    "#f9bac7",
+    "#ffb2c6",
+    "#ffaac5",
+    "#ff9fc5",
+    "#ff95c5",
+    "#ff95c5",
+    "#ff95c5",
+    "#ff95c5",
+    "#ff95c5",
+    "#ff95c5",
+    "#ff95c5",
+    "#ff95c5",
+    "#e3e3e3",
+    "#f2e2e5",
+    "#ffdbe3",
+    "#ffd4e1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffcde1",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff",
+    "#ffffff"
+];
+ 
+/**
+ * Interpolates between two hex color values.
+ *
+ * @param {string} hex1 - The first hex color value.
+ * @param {string} hex2 - The second hex color value.
+ * @param {number} p - The interpolation parameter (between 0 and 1).
+ * @returns {string} The interpolated hex color value.
+ */
+const interpColor = (hex1, hex2, p)  => {
+    Iif (hex1 === undefined && hex2 === undefined) {
+        null;
+    } else if (hex1 === undefined) {
+        hex1 = hex2;
+    } else if (hex2 === undefined) {
+        hex2 = hex1;
+    }
+ 
+    if (p === 0) {
+        return hex2;
+    } else if (p === 1) {
+        return hex1;
+    } else {
+        const r1 = parseInt(hex1.substr(1, 2), 16);
+        const g1 = parseInt(hex1.substr(3, 2), 16);
+        const b1 = parseInt(hex1.substr(5, 2), 16);
+        const r2 = parseInt(hex2.substr(1, 2), 16);
+        const g2 = parseInt(hex2.substr(3, 2), 16);
+        const b2 = parseInt(hex2.substr(5, 2), 16);
+ 
+        const nr = Math.floor(r1 * p + r2 * (1 - p));
+        const ng = Math.floor(g1 * p + g2 * (1 - p));
+        const nb = Math.floor(b1 * p + b2 * (1 - p));
+ 
+        return createjs.Graphics.getRGB(nr, ng, nb, 1.0);
+    }
+};
+ 
+/**
+ * Retrieves a Munsell color based on the specified hue, value, and chroma.
+ *
+ * @param {number} hue - The hue (color) value ranging from 0 to 100.
+ * @param {number} value - The value (shade) value ranging from 0 to 100.
+ * @param {number} chroma - The chroma (grey) value ranging from 0 to 100.
+ * @returns {string} The RGB representation of the Munsell color.
+ */
+let getMunsellColor = (hue, value, chroma) => {
+    // hue (aka color) 0-100 -> 0-39
+    // value (aka shade) 0-100 -> 0-10
+    // chroma (aka grey) 0-100 -> 0-14
+    // We linear-interpret value.
+    let h = Math.round(hue / 2.5);
+    while (h < 0) {
+        h += 40;
+    }
+ 
+    h %= 40; // doesn't guarentee it will be positive.
+ 
+    let v1 = Math.floor(value / 10);
+    let v2 = v1 + 1;
+    if (v1 < 0) {
+        v1 = 0;
+        v2 = 0;
+    } else if (v1 > 10) {
+        v1 = 10;
+        v2 = 10;
+    }
+ 
+    let p = (v2 * 10 - value) / 10;
+    Iif (p > 1) {
+        p = 1;
+    } else if (p < 0) {
+        p = 0;
+    }
+ 
+    let c = Math.round((chroma * 14) / 100);
+    if (c < 0) {
+        c = 0;
+    } else if (c > 14) {
+        c = 14;
+    }
+ 
+    return interpColor(MUNSELL[h * 165 + v1 * 15 + c], MUNSELL[h * 165 + v2 * 15 + c], p);
+};
+ 
+/**
+ * Retrieves a color based on the specified color value.
+ *
+ * @param {number} color - The color value ranging from 0 to 100.
+ * @returns {Array} An array containing value, chroma, and RGB components of the color.
+ */
+let getcolor = (color) => {
+    let h1 = Math.floor(color / 2.5);
+    let h2 = h1 + 1;
+    const p = h2 - color / 2.5;
+ 
+    h1 %= 40; // doesn't guarentee it will be positive.
+    while (h1 < 0) {
+        h1 += 40;
+    }
+ 
+    h2 = h1 + 1;
+    if (h2 === 40) {
+        h2 = 0;
+    }
+ 
+    const v = Math.floor(COLORS40[h1][0] * p + COLORS40[h2][0] * (1 - p));
+    const c = Math.floor(COLORS40[h1][1] * p + COLORS40[h2][1] * (1 - p));
+    return [v * 10, c * 100 / 28, interpColor(COLORS40[h1][2], COLORS40[h2][2], p)];
+};
+ 
+/**
+ * Searches for the nearest match to high chroma colors, scaled from 0 to 100.
+ *
+ * @param {number} r - Intensity of red.
+ * @param {number} g - Intensity of green.
+ * @param {number} b - Intensity of blue.
+ * @returns {number} The color value of the nearest match.
+ */
+let searchColors = (r, g, b) => {
+    let nearestColor = -1;
+    let distance = 10000000;
+    for (let i = 0; i < 100; i++) {
+        const color = getcolor(i);
+        const r1 = parseInt(color[2].substr(1, 2), 16);
+        const g1 = parseInt(color[2].substr(3, 2), 16);
+        const b1 = parseInt(color[2].substr(5, 2), 16);
+        const distSquared = (r1 - r) * (r1 - r) + (g1 - g) * (g1 - g) + (b1 - b) * (b1 - b);
+        if (distSquared < distance) {
+            distance = distSquared;
+            nearestColor = i;
+        }
+    }
+ 
+    return nearestColor;
+};
+ 
+module.exports = {interpColor, getMunsellColor, getcolor, searchColors};
+// /**
+//  * @deprecated
+//  * @param {number} r - intensity of red
+//  * @param {number} g - intensity of green
+//  * @param {number} b - intensity of blue
+//  */
+// function searchAllColors(r, g, b) {
+//     let nearestColor = -1;
+//     let distance = 10000000;
+//     for (let i = 0; i < MUNSELL.length; i++) {
+//         const color = MUNSELL[i];
+//         const r1 = parseInt(color.substr(1, 2), 16);
+//         const g1 = parseInt(color.substr(3, 2), 16);
+//         const b1 = parseInt(color.substr(5, 2), 16);
+//         const distSquared = (r1 - r) * (r1 - r) + (g1 - g) * (g1 - g) + (b1 - b) * (b1 - b);
+//         if (distSquared < distance) {
+//             distance = distSquared;
+//             nearestColor = i;
+//         }
+//     }
+ 
+//     return nearestColor;
+// }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000000..b317a7cda3 --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000000..b3225238f2 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 0000000000..2bb296a8ca --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000000..d67c5aa2a6 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,293 @@ +TN: +SF:js\utils\mathutils.js +FN:51,(anonymous_0) +FN:59,(anonymous_1) +FN:73,(anonymous_2) +FN:117,(anonymous_3) +FN:130,(anonymous_4) +FN:146,(anonymous_5) +FN:166,(anonymous_6) +FN:186,(anonymous_7) +FN:203,(anonymous_8) +FN:220,(anonymous_9) +FN:243,(anonymous_10) +FN:269,(anonymous_11) +FN:285,(anonymous_12) +FN:301,(anonymous_13) +FN:320,(anonymous_14) +FNF:15 +FNH:15 +FNDA:3,(anonymous_0) +FNDA:2,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:2,(anonymous_4) +FNDA:2,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:3,(anonymous_7) +FNDA:2,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:1,(anonymous_11) +FNDA:1,(anonymous_12) +FNDA:2,(anonymous_13) +FNDA:1,(anonymous_14) +DA:59,3 +DA:61,2 +DA:62,2 +DA:73,3 +DA:74,1 +DA:76,1 +DA:77,1 +DA:78,2 +DA:79,14 +DA:83,1 +DA:84,1 +DA:85,1 +DA:86,1 +DA:89,1 +DA:90,1 +DA:92,1 +DA:95,3 +DA:96,1 +DA:97,2 +DA:103,1 +DA:105,1 +DA:118,1 +DA:131,2 +DA:132,1 +DA:134,1 +DA:147,2 +DA:148,2 +DA:149,1 +DA:152,1 +DA:154,0 +DA:167,2 +DA:168,1 +DA:169,1 +DA:171,1 +DA:173,1 +DA:187,3 +DA:188,1 +DA:191,2 +DA:204,2 +DA:205,1 +DA:208,1 +DA:221,2 +DA:222,2 +DA:223,1 +DA:226,1 +DA:228,0 +DA:244,1 +DA:250,1 +DA:251,0 +DA:254,1 +DA:256,0 +DA:270,1 +DA:271,1 +DA:273,0 +DA:286,1 +DA:287,1 +DA:289,0 +DA:302,2 +DA:303,1 +DA:304,1 +DA:305,1 +DA:306,1 +DA:308,0 +DA:321,1 +DA:322,1 +DA:324,0 +DA:329,1 +LF:67 +LH:59 +BRDA:61,0,0,0 +BRDA:61,0,1,2 +BRDA:74,1,0,0 +BRDA:74,1,1,1 +BRDA:86,2,0,0 +BRDA:86,2,1,1 +BRDA:95,3,0,1 +BRDA:95,3,1,2 +BRDA:95,4,0,3 +BRDA:95,4,1,1 +BRDA:97,5,0,1 +BRDA:97,5,1,1 +BRDA:98,6,0,2 +BRDA:98,6,1,2 +BRDA:98,6,2,1 +BRDA:98,6,3,1 +BRDA:118,7,0,1 +BRDA:118,7,1,0 +BRDA:131,8,0,1 +BRDA:131,8,1,1 +BRDA:131,9,0,2 +BRDA:131,9,1,1 +BRDA:147,10,0,2 +BRDA:147,10,1,0 +BRDA:148,11,0,1 +BRDA:148,11,1,1 +BRDA:167,12,0,1 +BRDA:167,12,1,1 +BRDA:167,13,0,2 +BRDA:167,13,1,1 +BRDA:168,14,0,1 +BRDA:168,14,1,0 +BRDA:169,15,0,1 +BRDA:169,15,1,0 +BRDA:187,16,0,1 +BRDA:187,16,1,2 +BRDA:187,17,0,3 +BRDA:187,17,1,2 +BRDA:204,18,0,1 +BRDA:204,18,1,1 +BRDA:204,19,0,2 +BRDA:204,19,1,1 +BRDA:221,20,0,2 +BRDA:221,20,1,0 +BRDA:221,21,0,2 +BRDA:221,21,1,2 +BRDA:222,22,0,1 +BRDA:222,22,1,1 +BRDA:244,23,0,1 +BRDA:244,23,1,0 +BRDA:245,24,0,1 +BRDA:245,24,1,1 +BRDA:245,24,2,1 +BRDA:245,24,3,1 +BRDA:250,25,0,0 +BRDA:250,25,1,1 +BRDA:250,26,0,1 +BRDA:250,26,1,0 +BRDA:270,27,0,1 +BRDA:270,27,1,0 +BRDA:270,28,0,1 +BRDA:270,28,1,1 +BRDA:286,29,0,1 +BRDA:286,29,1,0 +BRDA:302,30,0,1 +BRDA:302,30,1,1 +BRDA:304,31,0,1 +BRDA:304,31,1,0 +BRF:68 +BRH:54 +end_of_record +TN: +SF:js\utils\munsell.js +FN:6734,(anonymous_0) +FN:6771,(anonymous_1) +FN:6816,(anonymous_2) +FN:6844,(anonymous_3) +FNF:4 +FNH:4 +FNDA:317,(anonymous_0) +FNDA:5,(anonymous_1) +FNDA:306,(anonymous_2) +FNDA:3,(anonymous_3) +DA:31,1 +DA:83,1 +DA:6734,1 +DA:6735,317 +DA:6736,0 +DA:6737,317 +DA:6738,1 +DA:6739,316 +DA:6740,1 +DA:6743,317 +DA:6744,2 +DA:6745,315 +DA:6746,71 +DA:6748,244 +DA:6749,244 +DA:6750,244 +DA:6751,244 +DA:6752,244 +DA:6753,244 +DA:6755,244 +DA:6756,244 +DA:6757,244 +DA:6759,244 +DA:6771,1 +DA:6776,5 +DA:6777,5 +DA:6778,1 +DA:6781,5 +DA:6783,5 +DA:6784,5 +DA:6785,5 +DA:6786,1 +DA:6787,1 +DA:6788,4 +DA:6789,1 +DA:6790,1 +DA:6793,5 +DA:6794,5 +DA:6795,0 +DA:6796,5 +DA:6797,1 +DA:6800,5 +DA:6801,5 +DA:6802,1 +DA:6803,4 +DA:6804,1 +DA:6807,5 +DA:6816,1 +DA:6817,306 +DA:6818,306 +DA:6819,306 +DA:6821,306 +DA:6822,306 +DA:6823,1 +DA:6826,306 +DA:6827,306 +DA:6828,6 +DA:6831,306 +DA:6832,306 +DA:6833,306 +DA:6844,1 +DA:6845,3 +DA:6846,3 +DA:6847,3 +DA:6848,300 +DA:6849,300 +DA:6850,300 +DA:6851,300 +DA:6852,300 +DA:6853,300 +DA:6854,12 +DA:6855,12 +DA:6859,3 +DA:6862,1 +LF:74 +LH:72 +BRDA:6735,0,0,0 +BRDA:6735,0,1,317 +BRDA:6735,1,0,317 +BRDA:6735,1,1,1 +BRDA:6737,2,0,1 +BRDA:6737,2,1,316 +BRDA:6739,3,0,1 +BRDA:6739,3,1,315 +BRDA:6743,4,0,2 +BRDA:6743,4,1,315 +BRDA:6745,5,0,71 +BRDA:6745,5,1,244 +BRDA:6785,6,0,1 +BRDA:6785,6,1,4 +BRDA:6788,7,0,1 +BRDA:6788,7,1,3 +BRDA:6794,8,0,0 +BRDA:6794,8,1,5 +BRDA:6796,9,0,1 +BRDA:6796,9,1,4 +BRDA:6801,10,0,1 +BRDA:6801,10,1,4 +BRDA:6803,11,0,1 +BRDA:6803,11,1,3 +BRDA:6827,12,0,6 +BRDA:6827,12,1,300 +BRDA:6853,13,0,12 +BRDA:6853,13,1,288 +BRF:28 +BRH:26 +end_of_record diff --git a/package-lock.json b/package-lock.json index 5245f3491c..40af57fb45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1521,6 +1521,18 @@ "node": ">= 0.10" } }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@gulp-sourcemaps/map-sources": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", @@ -2089,9 +2101,11 @@ "license": "MIT" }, "node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4022,6 +4036,27 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, "node_modules/eslint-plugin-import": { "version": "2.22.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", @@ -4219,6 +4254,50 @@ "node": ">=4" } }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-promise": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", @@ -4387,18 +4466,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -5303,6 +5370,18 @@ "node": ">=4" } }, + "node_modules/gulp-sourcemaps/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/gulp-uglify": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", @@ -7395,6 +7474,25 @@ "node": ">= 10.13.0" } }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -7986,6 +8084,35 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/postcss-calc": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", @@ -8940,9 +9067,10 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" }